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)

