2010-05-11

Crear un Raid1

Instale OSSIM pero el instalador no me dejo crear el arreglo que tenia listo para cuadrar entre los dos discos, por lo que me toco ponerme a buscar como hacerlo y me encontré un procedimiento en ingles muy bien explicado acá, entonces pues obviamente después de mirar otros me puse en la labor de hacerlo, lo primero que se tiene que verificar es que los dos discos tengan la misma geometría, en pocas palabras que sean iguales, esto lo logras así

root@localhost:~# sfdisk -l

lo que importa de esta salida es 

Disk /dev/hda: 9726 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Disk /dev/hdb: 9726 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

Una vez tenemos la certeza de esto bajamos el paquete que necesitamos para hacer los arreglos, acá voy a hacer un Raid1 que es una copia exacta de un disco al otro, debido a esto es conocido como Mirror. El paquete que necesitamos es

root@localhost:~# apt-get install mdadm

Bueno ya tenemos el software que necesitamos ahora toca tener en cuenta unos detalles para que sea fácil entender este procedimiento, el disco donde esta la instalación es el hda el disco con el que haremos el arreglo y que esta sin información en este momento es el hdb. Hecha esta aclaración veremos como están las particiones del disco hda

root@localhost:~#fdisk -l /dev/hda
 Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x006b006b

Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        9399    75497436   83  Linux
/dev/hda2            9400        9729     2650725    5  Extended
/dev/hda5            9400        9729     2650693+  82  Linux swap / Solaris

Como se puede ver la partición 1 tiene el Id 83 y el System Linux, esto lo debemos modificar a que sea Linux para raid, esto se hace con el siguiente sencillo comando

root@localhost:~# sfdisk --change-id /dev/hda 1 fd

Esto tiene su razón de ser, el numero 1 es el numero de la partición y el fd es el tipo de partición que necesitamos, el cual sale de una tabla bastante larga, que obtienen con la opción l del fdisk y que acá la pueden visualizar. Listo ahora duplicar las particiones del disco hda en el hdb, lo cual se hace así

root@localhost:~# sfdisk -d /dev/hda | sfdisk /dev/hdb

Con esto las particiones deben quedar iguales en ambos discos. Ahora vamos a empezar con la creación de arreglo, pero debemos proteger los datos para que no se nos dañen, por lo que ejecutaremos el siguiente comando

root@localhost:~#mdadm --create /dev/md0 --level 1 --raid-devices=2 missing /dev/hdb1

Este proceso lo debes hacer con cada partición que tengas, como yo solo tengo esa solo debo hacerlo una vez, NUNCA lo hagas sobre la partición que este marcada como Swap

Bueno ahora formatearemos en EXT3 las particiones creadas, esto lo hacemos con el siguiente comando

root@localhost:~# mkfs.ext3 /dev/md0

Ya con la partición formateada, entonces simplemente la montamos y hacemos una copia especial de todos los datos de la partición en dicho directorio, de la siguiente forma

root@localhost:~# mount /dev/md0 /mnt
root@localhost:~# cp -dpRx / /mnt

esto lo debes hacer con cada una de las particiones a montar, luego entonces formatearemos la partición de swap, de la siguiente forma

root@localhost:~# mkswap -v1 /dev/hdb5

Bueno ahora toca editar el fstab para darle prioridad a la partición swap, colocandole pri=1, como se ve a continuación

root@localhost:~# vi /mnt/etc/fstab
# /etc/fstab: static file system information.
#
#              
proc            /proc           proc    defaults        0       0
/dev/hda1       /               ext3    errors=remount-ro 0       1
/dev/hda5       none            swap    sw,pri=1              0       0
/dev/hdd        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0
Ahora toca cuadrar el GRUB para que al iniciar el servidor este cargue correctamente, esto se hace editando el archivo que esta en /mnt/boot/grub/menu.lst,  para las instalaciones con grub1, quedando la parte que se modifica así

## ## End Default Options ##

title           Debian GNU/Linux, kernel 2.6.31.6
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.31.6 root=/dev/md0 md=0,/dev/hda1,/dev/hdb1 ro vga=788
initrd          /boot/initrd.img-2.6.31.6

title           Debian GNU/Linux, kernel 2.6.31.6 (single-user mode)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.31.6 root=/dev/md0 md=0,/dev/hdb1 ro vga=788 single
initrd          /boot/initrd.img-2.6.31.6


Ahora instalamos el grub del otro disco así

root@localhost:~# grub-install /dev/hda
Searching for GRUB installation directory ... found: /boot/grub
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(hd0)    /dev/hda
(hd1)    /dev/hdb

Bueno  ya con este instalado y sin errores entonces procedemos a configurar el grub, con el comando grub el sistema ingresa a la linea de comando del grub y configura así:

grub> device (hd0) /dev/hdb

grub> root (hd0,0)
 Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  17 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+17 p (hd0,0)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded
Done.

grub> quit
Listo ya tenemos cuadrados los del disco nuevo ahora copiamos estas configuraciones en el disco inicial de la siguiente forma

root@localhost:~# cd -dp /mnt/etc/fstab /etc/fstab
root@localhost:~# cd -dp /mnt/boot/grub/menu.lst /boot/grub/menu.lst

Bueno es la hora de la verdad, toca reiniciar y esperar que se pueda ingresar, ya adentro agregamos las particiones del disco inicial de la siguiente forma

root@localhost:~# mdadm --add /dev/md0 /dev/hda1

Así con todas las que tengas, una vez echo eso pueden ver que se estén sincronizando bien revisando el mdstat de la siguiente forma

root@localhost:~# more /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 hda1[2] hdb1[1]
      75489280 blocks [2/1] [_U]
      [>....................]  recovery =  0.1% (98048/75489280) finish=153.7min speed=8170K/sec
     
unused devices:

root@localhost:~# more /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 hda1[2] hdb1[1]
      75489280 blocks [2/1] [_U]
      [>....................]  recovery =  0.2% (211648/75489280) finish=165.9min speed=7558K/sec
     
unused devices:

root@localhost:~# more /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 hda1[2] hdb1[1]
      75489280 blocks [2/1] [_U]
      [>....................]  recovery =  3.0% (2338112/75489280) finish=155.3min speed=7846K/sec
Es un proceso supremamente lento y entre más grande sea el disco más lento será entonces paciencia y ha estar tranquilo que si se te daña un disco ya lo puedes recuperar sin tanto misterio.