HowTo:gentoo:InstallHWHD

De Luispa

Discos duros

Es muy importante tener claro cómo vas a utilizar los discos desde el principio para evitar posteriores reconfiguraciones. En mi caso coloqué inicialmente 3 discos duros de la siguiente forma:

Disco 0: Motherboard SATA2_0 (master):  Disco de 500GB (WDC D5000KS-60MNB0_WCANU1955567)  /boot  (swap)  /
Disco 1: Motherboard SATA2_1 (slave):   Disco de 1500GB (Seagate ST31500341AS_9VS0W4NJ)   /home
Disco 2: Motherboard SATA2_2 (master):  Disco de 1500GB (Seagate ST31500341AS_9VS0X54S)   /data

Más adelante añadí tres discos de igual tamaño para la automatización de los backups.

Disco 3: Motherboard SATA2_3 (slave):   Disco de 500GB (Seagate ST3500320AS_9QMA72ZP)     /boot.bak /root.bak BACKUP
Disco 4: Motherboard SATA2_4 (master):  Disco de 1500GB (Seagate ST31500341AS_9VS0QAZX)   /home.bak           BACKUP
Disco 5: Motherboard SATA2_5 (slave):   Disco de 1500GB (Seagate ST31500341AS_9VS0QLZ6)   /data.bak           BACKUP

ATENCIÓN!: He verificado en la página de Seagate que no estoy afectado por el problema de firmware allí documentado. Menos mal... :-/


Instalación inicial:

Conectores SATA                Bahías de discos
de motherboard                 de mi chassis
                             +--------------------+
                             | sda  /boot swap /  | 500GB 
                             +--------------------+
+-------+-------+-------+    |                    |
|sata2_5|sata2_3|sata2_1|    +--------------------+
| (sdf) | (sdd) | (sdb) |    | sdb  /home         | 1500GB
+-------+-------+-------+    +--------------------+
|sata2_4|sata2_2|sata2_0|    | sdf  /data.bak     | 1500GB BACKUP
| (sde) | (sdc) | (sda) |    +--------------------+
+-------+-------+-------+    | sdc  /data         | 1500GB
                             +--------------------+
                             | sde  /home.bak     | 1500GB BACKUP
                             +--------------------+
                             | sdd  (root bak)    | 500GB BACKUP
                             +--------------------+


Instalación Actual (Nov/10):

Conectores SATA                Bahías de discos
de motherboard                 de mi chassis
                             +--------------------+
                             |                    |  
                             +--------------------+
+-------+-------+-------+    |                    |
|sata2_5|sata2_3|sata2_1|    +--------------------+
| (sdf) | (sdd) | (sdb) |    | sdb  /home         | 1500GB
+-------+-------+-------+    +--------------------+
|sata2_4|sata2_2|sata2_0|    |                    |
| (sde) | (sdc) | (sda) |    +--------------------+
+-------+-------+-------+    | sdc  /data         | 1500GB
                             +--------------------+
                             | sdd  /guarda       | 2000GB BACKUPs
                             +--------------------+
                             | sda  / boot swap   | 128GB Root
                             +--------------------+


Disco SDD como disco 0

En Abril 2010 compré un disco SDD que he puesto como disco 0, por lo que la instalación actual es la siguiente:

Disco 0: Motherboard SATA2_0 (master):  Disco de 128GB  (G.SKILL FALCON 128GB)            /boot  (swap)  /
Disco 1: Motherboard SATA2_1 (slave):   Disco de 1500GB (Seagate ST31500341AS_9VS0W4NJ)   /home
Disco 2: Motherboard SATA2_2 (master):  Disco de 1500GB (Seagate ST31500341AS_9VS0X54S)   /data
Disco 0: Motherboard SATA2_3 (master):  Disco de 500GB  (WDC D5000KS-60MNB0_WCANU1955567) /boot.bak (swap) /root.bak BACKUP
Disco 4: Motherboard SATA2_4 (master):  Disco de 1500GB (Seagate ST31500341AS_9VS0QAZX)   /home.bak           BACKUP
Disco 5: Motherboard SATA2_5 (slave):   Disco de 1500GB (Seagate ST31500341AS_9VS0QLZ6)   /data.bak           BACKUP


Tras instalar el disco SDD como disco 0:

Conectores SATA                Bahías de discos
de motherboard                 de mi chassis
                             +--------------------+
                             | sda  /boot swap /  | 128GB               <== Nuevo
                             +--------------------+
+-------+-------+-------+    |                    |
|sata2_5|sata2_3|sata2_1|    +--------------------+
| (sdf) | (sdd) | (sdb) |    | sdb  /home         | 1500GB
+-------+-------+-------+    +--------------------+
|sata2_4|sata2_2|sata2_0|    | sdf  /data.bak     | 1500GB BACKUP
| (sde) | (sdc) | (sda) |    +--------------------+
+-------+-------+-------+    | sdc  /data         | 1500GB
                             +--------------------+
                             | sde  /home.bak     | 1500GB BACKUP
                             +--------------------+
                             | sdd  (root bak)    | 500GB BACKUP
                             +--------------------+



Plan de Particiones

He configurado las particiones de la siguiente forma

  • Disco 0: SISTEMA OPERATIVO
Disposit.  Inicio     Fin      Bloques  Id  Sistema   Montado  Tipo   Tamaño
/dev/sda1       1      13      104391   83    Linux   /boot    Ext2    100MB
/dev/sda2      14     138     1004062+  82     Swap   swap     Swap   1000MB
/dev/sda3     139   60801   487275547+  83    Linux   /        Ext4    458GB


  • Nuevo Disco 0: SISTEMA OPERATIVO con SDD:
Disco /dev/sda: 128.0 GB, 128035676160 bytes
255 heads, 63 sectors/track, 15566 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0x2096f9de

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sda1   *           1          14      112423+  83  Linux
/dev/sda2              15         142     1028160   82  Linux swap / Solaris
/dev/sda3             143       15566   123893280   83  Linux


  • Disco 1: DATOS /home
Disposit.  Inicio     Fin      Bloques  Id  Sistema   Montado  Tipo   Tamaño
/dev/sdb1       1  182401   1465136001  83    Linux   /home    Ext4   1500GB

            /home
                +-> luis
                +-> user2
                +-> :
                +-> userN
                +-> arte
                    +-> fotos        <= Toda mi fotografía
                    +-> wallpapers   <= Wall Papers para escritorio
                    +-> arte digital <= Dibujo, Pintura y Retoque digital

  • Disco 2: DATOS /data
Disposit.  Inicio     Fin      Bloques  Id  Sistema   Montado  Tipo   Tamaño
/dev/sdc1       1  182401   1465136001  83    Linux   /data    Ext4   1500GB

            /data
                +-> multimedia         
                      +-> musica       <= Mis discos, música
                      +-> videos       <= Peliculas familiares
                      +-> podcast      <= Grabaciones familiares
                +-> servicios          <= Datos de los servidores Web, BDs, vHosts, Correo, etc...
                      +-> vhosts       <= Debajo varios servidores Web
                      +-> mysql        <= Debajo las bases de datos
                      +-> :
                +-> vmware             <= Máquinas virtuales
                      +-> Vista        <= Equipo con Windows 
                      +-> :


Estrategia de Backups

La estrategia de backups que voy a seguir es muy sencilla. Requiere quizá demasiados discos, pero merece la pena, ya que no puedo consentir el perder mis datos importantes.

Primer Backup - ONLINE

Duplico e instalo el número de discos, es decir, si tengo 1x500 + 2x1500GB, voy a añadir exáctamente lo mismo al equipo y usaré estos 3 nuevos discos para una mezcla de "duplicación física" y rsync periódicos en hitos de estabilidad.

Disco 3: Motherboard SATA2_3 (slave):   Duplicación manual de Disco 0 + rsync periódicos.
Disco 4: Motherboard SATA2_4 (master):  Rsync de Disco 1, automático diario sin borrar + rsync --delete trimestral.
Disco 5: Motherboard SATA2_5 (slave):   Rsync de Disco 2, automático diario sin borrar + rsync --delete trimestral.


La política de backups que seguiré será la siguiente:

  • SISTEMA OPERATIVO
* Disco 0:       Lo duplicaré manualmente cada vez que considere que el sistema alcanza un hito de estabilidad 
                 adecuado. Usaré el comando "dd", haciendo boot desde un Live CD. Entre hitos realizaré rsyncs
                 periódicos manuales de vez en cuando. Ante la pérdida del disco 0 podré hacer boot desde el 
                 Disco 3. Notar que las BD's, etc... residen en disco 1 y 2.


  • DATOS
* Disco 1 y 2:   Todos los días se realizará un "rsync" automáticamente por la noche (cron), que actualizará en 
                 los datos en los discos 4 y 5, se irá añadiendo lo nuevo pero no se borrará nada. 
                 Una vez al trimestre y de forma manual realizaré una sincronización completa usando la opción 
                 de borrado (que elimina en el disco de backup lo que no existe en el original).


Segundo Backup - Bajo demanda en Discos USB

Hay datos que para mi son muy valiosos, como la Fotografía, Dibujos, Videos familiares. Voy a usar discos que ya tenía externos USB de 500GB. Ire alternando, haré copia con "rsync" de los datos más importantes.


Tercer Backup - BlueRay

Otra vez sólo para los directorios más valiosos, aquello que no tiene precio :-). Cuando el precio de las grabadoras y discos vírgenes BlueRay sea lo suficientemente atractivo.

Backups

Una vez que tengo los 3 discos adicionales ya instalados (en mi caso dentro del equipo) voy a proceder a prepararlos y a hacer un primer backup completo.


El primer backup

Aviso: Tengo pendiente estudiar un método para que los filesystems se monten siempre en el mismo sitio. Así evitaré que se monte el backup en el directorio del no-backup o viceversa. Esto ocurriría si se desordenase (por cualquier motivo) los nombres de los devices (un futuro cambio en el kernel por ejemplo?)... No se, es peligroso y hay que estar 100% seguro que se controla siempre que los file systems están montados en su sitio


  • Para auto-ayudarme en la identificación correcta de qué disco es qué disco... voy a usar dos trucos. El primer truco es crear un "directorio de apoyo" con un nombre especial en la raiz de cada file-system. Este directorio me va a indicar qué file-system es. El segundo truco consiste en ponerle ETIQUETA a cada file system. Esto lo haré más adelante, aprovechando el primer backup de root que lo haré con el System Rescue CD.
  • Creo el "directorio de apoyo"
# mkdir /.root.original

# mount /boot
# mkdir /boot/.boot.original

# mkdir /data/.data.original
# mkdir /home/.home.original

Primer backup de "/boot, swap, /"

Empiezo por lo "técnicamente" parece más complicado, que no difícil, se trata de hacer backup del disco 0, el disco con el que arranco y que contiene los file systems más importantes /boot y / (root). Ten en cuenta que el file system Swap no hace falta que lo copies.

El método que uso para hacer backup de este disco es crearme otro disco con la misma estructura de file systems, copiar /boot con el sistema funcionando y copiara / (root) con el sistema arrancado desde System Rescue CD.

  • Preparo el disco 3, el que será el Backup del disco 0 (/, swap y /boot). Creo las mismas particiones.
# fdisk /dev/sdd   
  n, p, 1, 1, +100M     <== Nueva partición: /boot
  a, 1                  <== Marco /boot como bootable.
  n, p, 2, 15, +1000M   <== Nueva partición: swap
  t, 2, 82              <== Marco Swap como particion tipo 82 (swap)
  n, p, 3, 143, 60801   <== Nueva partición: / (root)
 
  p (mostrar como queda)

  Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
  /dev/sdd1   *           1          14      112423+  83  Linux
  /dev/sdd2              15         142     1028160   82  Linux swap / Solaris
  /dev/sdd3             143       60801   487243417+  83  Linux
  • Creo los filesystems y directorios de referencia
# mke2fs /dev/sdd1         <== /boot.bak
# mkfs.ext4 /dev/sdd3      <== /root.bak
# mkswap /dev/sdd2         <== Swap.bak
# mkdir /root.bak          <== De momento no lo uso, pero lo dejo creado
# mkdir /boot.bak
 
# nano /etc/fstab
/dev/sdd1               /boot.bak       ext2            noatime  0 0 
/dev/sdd3               /root.bak       ext4            noatime  0 0

# mount /root.bak          <== Sólo para crear el directorio siguiente
# mount /boot.bak
 
# mkdir /root.bak/.root.backup
# chmod 700 /root.bak/.root.backup
# mkdir /boot.bak/.boot.backup
# chmod 700 /boot.bak/.boot.backup


  • Ejecuto el primer backup de /boot --> /boot.bak
IMPORTANTE: (Notar el "/" que pongo detrás, en "/boot/", es importante) 
# mount /boot   (si no está ya montado...)
# time rsync -av --delete --exclude '.boot.original' /boot/ /boot.bak    (17M, tardó: 0.5seg )


  • El primer backup de / (root) hay que hacerlo haciendo boot con el System Rescue CD. Apago y rearranco con SystemRescue CD. Por cierto!, he seguido las instrucciones sobre cómo instalar System Rescue CD en un stick USB y me ha funcionado perfectamente. He modificado mi BIOS para que intente hacer boot primero del USB. Cada vez que necesito arrancar con System Rescue uso mi USB.
boot: rescue64 <intro>
Load keymap: 13 
# wizard 
  Selecciona la primera opción Xorg Optimal. 

# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/root.bak
# mount /dev/sdd3 /mnt/root.bak

VERIFICO que los montajes son los que tienen que ser. Busco los ficheros .root.original y 
.root.backup  

# ls -al /mnt/gentoo/.root.original    <= Debería estar
# ls -al /mnt/root.bak/.root.backup    <= Debería estar

# cd /mnt/gentoo

# time rsync -av --exclude '.root.original' /mnt/gentoo/ /mnt/root.bak    (17G, tardó: ??? ) 

# umount /mnt/root.bak
# umount /mnt/gentoo


Etiquetar todos los File Systems

Ya que estoy con el System Rescue CD y todos mis file systems accesibles, voy a aprovechar para ETIQUETARLOS, de modo que me sea más sencillo y natural trabajar con ellos.

e2label /dev/sda1 Boot
e2label /dev/sda3 Root

e2label /dev/sdb1 Home
e2label /dev/sdc1 Data

e2label /dev/sde1 Home.bak
e2label /dev/sdf1 Data.bak
e2label /dev/sdd3 Root.bak
e2label /dev/sdd1 Boot.bak


  • Rearranco con el sistema de forma normal.
# reboot

Primer backup de /home y /data

Empiezo con el backup más sencillo (y obviamente más largo). Se trata de los dos discos de 1500GB que tengo montados en /

  • Disco 4 y 5 (backups de disco 1 y 2 /home y /data). Creo tabla de particiones, particiones, directorios...
# fdisk /dev/sde    n, p, 1, 1, 182401, w
# fdisk /dev/sdf    n, p, 1, 1, 182401, w

# mkfs.ext4 /dev/sde1
# mkfs.ext4 /dev/sdf1 
 
# mkdir /home.bak
# mkdir /data.bak
 
# nano /etc/fstab
/dev/sde1		/home.bak       ext4		noatime		0 0
/dev/sdf1		/data.bak	ext4		noatime		0 0

# mount /home.bak
# mount /data.bak
 
# mkdir /home.bak/.home.backup
# chmod 700 /home.bak/.home.backup
# mkdir /data.bak/.data.backup
# chmod 700 /data.bak/.data.backup


Ejecuto el primer backup. Lo lanzo desde dos ventanas a la vez y por curiosidad
lo hago con el comando "time" para ver cuanto tardan cada uno de los dos procesos. 

IMPORTANTE: (Notar el "/" que pongo detrás, en "/home/" y "/data/", es importante) 
# time rsync -av --exclude '.home.original' /home/ /home.bak    (288GB)
# time rsync -av --exclude '.data.original' /data/ /data.bak    (343GB)

Los dos se ejecutaban en paralelo (subóptimo probablemente): En total /home temrinó a
los 146min y /data a los 159min.



Aviso: Probado hasta aquí. El resto es work in progress...

Backups sucesivos

A partir de aquí ya es rutina, pero muy importante, consiste en usar el crontab para hacer backups periódicos incrementales (rsync) y de vez en cuando hacer backups completos (rsync --delete)

Backup incremental de "/boot y /"

Con /boot no habrá problema, pero una vez más, parece "técnicamente" complicado hacer un backup incremental de root. La realidad es que al tener ya un backup estable de root realmente no necesitamos copiar (incrementalmente) más que ciertos directorios y evito precisamente los directorios conflictivos (/dev, /tmp, /proc, etc.).

Si no se copia todo y ocurre un desastre, ¿cuales son las consecuencias?. Pues la respuesta va a ser que no demasiado malas, calculo que lo peor que podría pasarme es que necesite reinstalar algún paquete en el peor de los casos (pérdida del disco 0 principal y arranque desde backup).


  • Backup incremental de /boot
# mount /boot
# mount /boot.bak
# time rsync -av --exclude '.boot.original' /boot/ /boot.bak    (17M, tardó: 0.5seg )
# umount /boot.bak
# umount /boot

NOTA: Lo normal es que sólo copie lo que se ha modificado
  • Backup incremental de / (Root)
# mount /root.bak
# time rsync -av --include '/bin' --include '/etc' --include 'lib*' --include '/opt' 
                 --include '/root' --include '/sbin' --include '/usr' --include '/var' --exclude '*/' / /root.bak
# umount /root.bak

Backup incremental /home y /data

Para realizar los backups incrementales ejecuto los comandos siguientes:

  • (PDTE de estudio) Paro servicios


  • Ejecuto los backups
# mount /home.bak
# mount /data.bak
 
# time rsync -av --exclude '.home.original' /home/ /home.bak
# time rsync -av --exclude '.data.original' /data/ /data.bak

Restaurar un Backup

Esta es la parte más importante :-). Lo primero que hay que tener en cuenta es que existen diferente tipos de fallos, por lo que NO voy a documentar las ordenes exactas, ya que dependiendo de qué haya pasado tendré que actuar de una forma u otra.


<Pendiente de documentar>



Cambio del disco 0

Como dije al principio, en abril de 2010 he cambiado el disco 0 y he puesto un G.Skill Falcon 128GB (review). Estos son los pasos que he realizado:

Conectar el nuevo disco

He conectado el nuevo disco SDD en el conector sata2_3, es decir donde estaba el antiguo disco de 500GB para backup de /, /boot y swap. El disco SDD se reconoce como /dev/sdd:

Disco 0: --> Sigue siendo el Disco de 500GB del root original.
Disco 3: --> Nuevo disco SDD.


Boot con SystemRescue CD

boot: rescue64 <intro>
Load keymap: 13 
# wizard 
  Selecciona la primera opción de System Rescue CD 64 bits.

Duplicar el disco 0

Disco Origen:  Disco WD HD de 500GB        En /dev/sda
Disco Destino: Disco Falcon SDD de 128GB   En /dev/sdd
  • Preparo el disco SDD para copiarle /, swap y /boot. Creo las mismas particiones (notar que la partición de / será menor que la del origen, el tamaño del disco origen son 500GB y el de destino son 128GB). No es problema, ya que actualmente sólo se están usando 40GB en la partición /.
# fdisk /dev/sdd   
  n, p, 1, 1, +100M     <== Nueva partición: /boot
  a, 1                  <== Marco /boot como bootable.
  n, p, 2, 15, +1000M   <== Nueva partición: swap
  t, 2, 82              <== Marco Swap como particion tipo 82 (swap)
  n, p, 3, 143, <resto> <== Nueva partición: / (root)
 
  p (mostrar como queda)
 
Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sda1   *           1          14      112423+  83  Linux
/dev/sda2              15         142     1028160   82  Linux swap / Solaris
/dev/sda3             143       15566   123893280   83  Linux
  • Creo los nuevos filesystems
# mke2fs /dev/sdd1         <== /boot.bak
# mkfs.ext4 /dev/sdd3      <== /root.bak
# mkswap /dev/sdd2         <== Swap.bak
  • Creo los directorios de trabajo y monto los FS.
# mkdir /mnt/root
# mkdir /mnt/root.bak 
# mkdir /mnt/boot
# mkdir /mnt/boot.bak
# mount /dev/sda1 /mnt/boot
# mount /dev/sdd1 /mnt/boot.bak
# mount /dev/sda3 /mnt/root
# mount /dev/sdd3 /mnt/root.bak

  • Duplico boot
IMPORTANTE: (Notar el "/" que pongo detrás, en "/boot/", es importante) 

# rsync -av --progress /boot/ /boot.bak
  • Duplico root
IMPORTANTE: (Notar el "/" que pongo detrás, en "/root/", es importante) 
 
# rsync -av --progress /root/ /root.bak


  • Creo/modifico directorios de referencia

Para no "equivocarme" utilizo un directorio, que se autoexplica, en la raiz de cada "root", y le asigno nombres que me indican qué disco estoy usando.

# rmdir /mnt/root/.root.original
# rmdir /mnt/root.bak/.root.original

# mkdir /mnt/root/.root.backup.HD
# mkdir /mnt/root.bak/.root.nuevo.SDD
  • Desmonto y "apago"
# umount /dev/sda1
# umount /dev/sda3
# umount /dev/sdd1
# umount /dev/sdd3

# halt


Cambiar las conexiones de los discos

Ahora intercambio el disco SDD de modo que el SDD se reconozca como /dev/sda y el antiguo root como /dev/sdd (nuevo root.bak). Básicamente cambio los cables

Disco 0: --> Nuevo disco SDD
Disco 3: --> Antiguo root, disco de 500GB que a partir de ahora me servirá de backup.


Boot con SystemRescue CD para crear MBR

Este paso es muy importante, no te olvides o se quedará en "Booting..." eternamente.

boot: rescue64 <intro>
Load keymap: 13 
# wizard 
  Selecciona la primera opción de System Rescue CD 64 bits.
# grub --no-floppy
grub> root (hd0,0)          (Especifica donde tiene su partición /boot)
grub> setup (hd0)           (Instalamos GRUB en el MBR)
grub> quit                  (Salimos del intérprete de comandos de GRUB)


Boot con SDD

# reboot, quitar el CD y arrancar con el SDD




Enlaces y Créditos

[1] http://wiki.luispa.com/ Página principal de LuisPa.
[2] http://www.mikerubel.org/computers/rsync_snapshots/ Más sobre lo mismo


Volver a HowTo Servidor Gentoo Linux

--Luis 22:25 6 abr 2009 (CEST)