RAID por software FreeBSD
De BSD Chile
El objetivo de RAID, es tener redundancia o mejorar el performance para procesar (leer/escribir) de los datos almacenados en discos duros.
Existen variaciones de RAID, cada una con su ventaja y desventaja.
En caso de que se quiera hacer RAID0 o RAID1 en un computador que no tiene controlador RAID (hardware) integrado, existe la posibilidad de realizarlo por software. Esto implica sobrecarcar los CPUs del sistema con los procesos necesarios para realizar RAID.
A partir de la version 6.0, FreeBSD cuenta con un subsistema para control de discos llamado geom.
geom cuenta con 2 utilidades para realizar RAID0 y RAID1.
gmirror para RAID1 y gstripe para RAID0. (mas informacion en sus respectivos manuales)
RAID1
A continuacion se describe la metodologia para transformar un sistema de archivos normal a RAID1 utilizando gmirror:
Notas:
- Requisitos: 2 o mas discos.
- El proceso de sincronizacion de los discos de redundancia es demoroso.
- Es posible iniciar el sistema (butearlo) directamente en un disco gmirror. (gm)
- El proceso se describe en forma simplificada. Para mas informacion leer los manuales.
- RAID1 es notablemente mas lento en operaciones de escritura
0.- Limpiar el disco nuevo que se usa para crear el mirror:
dd if=/dev/zero of=/dev/ad6 bs=512 count=79
1.- Cargar el soporte para gmirror
kldload geom_mirror echo 'geom_mirror_load="YES"' >> /boot/loader.conf
2.- Crear el disco con reduncancia, utilizando un disco vacio (/dev/ad6)
gmirror label -v -b split raid1 /dev/ad6
3.- Cargar el nuevo disco (habilita raid1)
gmirror load
4.- Iniciar el MBR en el nuevo disco y dividiro en 1 solo slice, que abarque todo el disco, 100%.
fdisk -v -B -I /dev/mirror/raid1
5.- Particionar el slice creado en N particiones (por defecto es solo una)
bsdlabel -w -B /dev/mirror/raid1s1 bsdlabel -e /dev/mirror/raid1s1
6.- Formatear la(s) nueva(s) particion(es)
newfs -U /dev/mirror/raid1s1a
7.- Migrar la informacion del disco que se quiere reemplazar
mount /dev/mirror/raid1s1a /mnt dump -L -0 -f- / | (cd /mnt; restore -r -v -f-) dump -L -0 -f- /XXX | (cd /mnt/XXX; restore -r -v -f-) #Repetir el proceso para cada particion XXX original. # por ejemplo: /, /var y /usr
8.- Actualizar fstab para que se vea parecido a:
/dev/mirror/raid1s1a / ufs rw 1 1
9.- Reiniciar y butear desde el disco nuevo.
10.- Agregar el disco original al raid, y de esta manera hacer gm0 redundante.
gmirror insert raid1 /dev/ad0 gmirror insert raid1 /dev/XXXX <--- se puede agregar mas discos al raid!
Con el comando "gmirror list", es posible vizualizar como va el proceso de sincronizacion.
Cuando este termine, gmirror list no debiese mostrar mas la palabra SYNCHRONIZING
RAID0
GStripe, es el hermano de gmirror. Ambos comandos son parecidos, ya que los dos utilizan geom...
Notas:
- Requisitos: 2 o mas discos.
- No se puede iniciar un sistema con su raiz en un disco stripeado
- El proceso se describe en forma simplificada. Para mas informacion leer los manuales.
- RAID0 no provee redundancia alguna. Si falla algun disco, falla el strip completo. Las posiblidades de fallas son las mismas que un disco multiplicado por la cantidad de discos que componen strip.
- Una vez realizado el strip, no se pueden agregar discos nuevos.
1.- Cargar el soporte para gstripe
kldload geom_gstripe echo 'geom_gstripe_load="YES"' >> /boot/loader.conf
2.- Crear el disco raid0, utilizando 2 discos:
gstripe label -v raid0 /dev/ad8 /dev/ad10
3.- Particionar el slice creado, con 2 particiones: una para datos y otra para swap
bsdlabel -wB /dev/stripe/raid1 bsdlabel -e /dev/stripe/raid1
4.- Formatear la(s) nueva(s) particion(es)
newfs -U /dev/stripe/raid0a newfs -U /dev/stripe/raid0b
5.- Actualizar fstab para que se vea parecido a:
/dev/mirror/raid0a /mnt ufs rw 1 1 /dev/mirror/raid0b none swap sw 0 0
6.- Reiniciar
TIP: con gstat, se puede monitorear que es lo que esta pasando con los discos...
