Hoy voy a explicar cómo mantener una segunda copia del SO linux en otro disco duro (o par de ellos).
¿ para qué puede servir? por si se te rompe uno de los discos duros.
¿ qué recuperas ? como estaba el servidor/desktop en el momento que se hizo la copia.
Yo lo tengo en un script que se lanza a una hora determinada. Para que la base de datos no quede incoherente, antes la paro, y la relanzo cuando acaba el proceso, no tendría que hacerlo puesto que igualmente en el script hago una copia de la BD en caliente, pero bueno, no tengo ningún servicio crítico.
¿ cómo manejamos los discos de respaldo? bueno, antes de nada los llamo discos porque son dos y los tengo en RAID 1, doble seguridad ante fallos de disco. Los mantengo apagados (standby) con la orden:
así que cuando voy a hacer la copia se activan, y al acabar la copia vuelven a estar en reposo (hay que usar el comando cada vez que queramos que entren en reposo), no se cascan, no hacen ruido, no dan calor y no consumen electricidad. No olvidéis desmontar los discos porque si no, el standby no surtirá efecto ya que con operaciones del SO se volverán a activar y en ese caso dependería de las opciones de reposo que tengáis configuradas en el hdparm o propias del disco.
Tengo que aclarar que la orden de standby se hace sobre las unidades físicas no sobre las lógicas, esto es, aunque con el RAID montéis el /dev/mapper/xxxxxxxx1, el standby se ejecuta sobre las unidades físicas que formen el RAID.
Para mantener los HDDs sincronizados, lo mejor es usar rsync. A continuación pongo la línea que yo utilizo en mi script y la comento:
rsync -aHv --delete --exclude /dev --exclude /usr/portage --exclude /tmp --exclude /media --exclude /proc --exclude /sys --exclude /mnt/bak / /mnt/bak
la opción -a viene de archive, que a fin de cuentas es lo que estamos haciendo, el -H es para mantener los enlaces duros (siempre es bueno a mi parecer) y -v para que vaya contando los cambios que hay. Con –delete borra los archivos que ya no estén en el original y con –exclude excluimos directorios de la sincronización. Los directorios más usuales para excluir son los que tienen montados interfaces del sistema a modo de fs como el sys o el proc, los temporales (/tmp), el directorio donde está montado el directorio a sincronizar (/mnt/xxxxxx), y otros volúmenes y en gentoo, por ejemplo, el /usr/portage.Para más información:
Si se quiere probar antes de pasarlo definitivamente se le añade la opción -n:
rsync -avHn --delete --exclude /proc --exclude /sys --exclude /mnt/gentoo / /mnt/gentoo
y ¿cómo hacemos que esto funcione en el arranque? pues se instala el GRUB en los dos discos (entendiendo el RAID ahora como un disco) haciendo referencia a que está instalado en la primera partición (/boot o / si no tenemos una partición para boot). Como mantenemos la misma configuración del /boot, sólo hay que dar una ruta alternativa si no encuentra uno de los discos, esto se hace con las opciones del GRUB:
default 0
fallback 1
timeout 6
title=Linux1
root (hd1,0)
kernel /boot/kernel-genkernel-x86-2.6.39 root=/dev/ram0 init=/linuxrc real_root=/dev/sdX1 dodmraid vga=791 panic=5
initrd /boot/initramfs-genkernel-x86-2.6.39
title=Linux2
root (hd0,0)
kernel /boot/kernel-genkernel-x86-2.6.39 root=/dev/ram0 init=/linuxrc real_root=/dev/sdY1 dodmraid vga=791 panic=5
initrd /boot/initramfs-genkernel-x86-2.6.39
Con default decimos qué opción se intenta arrancar primero, con fallback, decimos qué opción intentamos arrancar si la otra falla y con timeout, el tiempo de espera antes de arrancar. En las opciones del kernel, el parámetro panic=5 indica que si hay un kernel panic se reinicie, así entraría en la siguiente opción.
En esta ocasión, de manera predeterminada, arranca el segundo disco y deja en standby el primero, si se rompe alguno de los discos, entonces el otro será el primero y arrancará de igual manera, si el disco jodido hace que la placa no arranque, entonces toca aguantarse.
Bueno, aquí os he dejado algo con lo que entreteneros un buen rato. Con esta base y afinando vuestro propio script os puede salir algo muy bonico, yo por ejemplo, el resultado de estas acciones me las mando por correo de manera diaria, así como el backup de la bd y un backup incremental que también hago que ya contaré en otro momento.