sábado, 23 de abril de 2011

lvm sobre raid

Me solicitaron que implementara un servidor que pudiera almacenar la información de mis usuarios creando copias(backups) y ante el peligro de perdida de disco por falla física el remplazo sea de inmediato sin apagar el sistema, he pensado diferentes formas de hacerlo pero una que me pareció interesante es lvm+raid5


Descripción del Equipo:
servidor PIV
discos: 4 de 1GB (sd[bcde]1)
disco_raiz: 5GB ( sda1)
swap: 512MB(sda2)
distro:centos 5.0


primero debemos crear los discos de tipo raid5, en un servidor sin X, no podremos usar alguna herramienta gráfica como gparted
1) root@localhost# fdisk /dev/sdb
2) digitar n: para crear una nueva partición
3) elegimos la partición primaria (p) 
4) digitamos 1 y presionamos enter varias veces para considerar todo el disco
5) digitamos t para seleccionar el tipo de partición que será seleccionada 
6) escribimos fd ( linux raid autodetect) 
7) colocamos w para guardar los cambios 
root@localhost# partprobe
El comando partprobe nos permite actualizar en caliente las particiones creadas. El mismo procedimiento se repetira para los discos sdc,sdd, sde

Te puedes guiar de este manual para entender como funciona fdisk.

Creamos el array de disco tipo 5
root@localhost# mdadm -C /dev/md0 -l 5 -n 3 /dev/sd[bcd]1 -x 1 /dev/sde1 
DONDE: 
-C :crea array 
-l : tipo de raid, 0 1 5 10 
-n : discos activos en el arreglo 
-x : discos desactivados en el arreglo

Creamos el dispositivo lvm para /dev/md0
root@localhost# pvcreate /dev/md0
Ahora creamos el volumengroup contenedor de nuestros discos y/o particiones
root@localhost# vgcreate vg1 /dev/md0 
Ahora definimos nuestro logicalvolumen que sera el disco o partición creada que almacenara nuestra data
root@localhost# lvcreate -n archivos -l 100%FREE vg1 /dev/md0 
donde:
-n : nombre del dispositivo logico a crear
-l : tamaño PE, phisical extend 

Formateamos la particion creada en /dev/md0/vg1-archivos
mkfs -t ext3 -L archivos /dev/md0/vg1-archivos
donde: 
-t: tipo de partición
-L: Etiqueta de la partición, util a la hora del montaje, reconocimiento a través de LABEL

Para notar el cambio podemos montarlo manualmente mediante el comando mount o escribir en fstab
root@localhost# grep archivos /etc/fstab 
LABEL=archivos /dev/mapper/vg1-archivos ext3 defaults 0 0

Llega un momento en que tu disco se lleno, entonces tendremos que hacer crecer el raid ya que definimos un disco de 3 para eso...
mdadm -G /dev/md0 -n 4 --backup-file=/root/grow_md.bak 
donde:
-G: dispositivo a crecer... 
-n: debe ser mayor al valor asignado al inicio, nosotros solo asignamos 3 discos con un disco de respaldo caso falle uno de los 3 anteriores. 
El resultado sera de 3 GB considerando que el tamaño de un raid5 siempre es (n-1) 

Asignamos 2 discos duros, de 1 GB, en mi caso sera de 1GB ustedes tendrán discos de 250 para arriba preferible que tengan discos de la misma cantidad sino el raid 5 tomara el menor valor de ellos:

Creamos la partición con fdisk para los discos sd[fg], asegurarse que sea del tipo linux raid detect.Añadimos el disco o los discos al dispositivo raid md0
root@localhost# mdadm /dev/md0 -a /dev/sd[fg]1
a: Añado los dispositivos /dev/sd[fg]1 

Lo que he hecho en es solo añadir un disco al array pero no esta aún operativo, esta como square, lo que te permitirá remplazar un disco en caso de fallo de hardware de los 4 anteriores colocados, para activarlo debere hacer crecer el array de la siguiente manera
root@localhost# mdadm -G /dev/md0 -n 6 --backup-file=/root/grow_md.bak
--backup-file: te permite regenerar el array si por casualidad ha sido cortado de manera
intempestiva

Para comprobar como los discos se están integrando ejecutan el siguiente comando
root@localhost# watch -n 1 cat /proc/mdstat 

Para hacer crecer el volume group
root@localhost# pvresize /dev/md0

Para hacer crecer el volume group llamado vg1
root@localhost# vgextend vg1 /dev/md0 
root@localhost# vgs 

Observamos que ha crecido:

para redimencionar el logical volumen:
root@localhost# lvresize vg1/archivos /dev/md0
root@localhost# lvs 

Ahora solo queda expandir el disco.
root@localhost# e2fsck -f /dev/mapper/vg1-archivos 
root@localhost# resize2fs /dev/mapper/vg1-archivos
root@localhost# df -h

No hay comentarios:

 
;