Fácil de expandir el software de Linux RAID 5 con XFS. ¿Mejores prácticas?

13

Uso mi máquina Ubuntu como un servidor de archivos para clientes Windows / Linux / Mac que usan un recurso compartido Samba. Necesito que sea fácilmente expandible simplemente agregando más discos duros sin tener que mover ningún dato de un lado a otro.

Así es como lo he hecho hasta ahora. He agregado con éxito un cuarto disco duro. Ahora sería bueno saber si es así como se debe hacer. ¿Qué estoy haciendo mal o qué podría hacer mejor?

Crear la matriz inicial de 3 unidades

Comencé con tres unidades vacías: / dev / sdb, / dev / sdc y / dev / sdd.

Primero creé particiones vacías en todas las unidades:

$ fdisk /dev/sdX
n # Create a new partition
p # Primary
1 # First partition
[enter] # Starting point to first sector (default)
[enter] # Ending point to last sector (default)
t # Change partition type
fd # Type: Linux raid autodetect
w # Write changes to disc

Cuando se crearon particiones RAID vacías en los tres discos, creé una matriz RAID5:

$ mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

Ahora se crea la matriz RAID5 y ya se está construyendo. Lleva tiempo, pero puede continuar con la creación de un nuevo volumen físico LVM2:

$ pvcreate /dev/md0

Ahora creemos un nuevo grupo de volúmenes:

$ vgcreate vd_raid /dev/md0

Luego, necesitamos crear un nuevo volumen lógico dentro de ese grupo de volúmenes. Primero tenemos que averiguar el tamaño exacto del grupo de volúmenes creado:

$ vgdisplay vg_raid

El tamaño se puede ver desde la fila que indica el "PE total" en extensiones físicas. Imaginemos que es 509. Ahora cree un nuevo volumen lógico que tome todo el espacio disponible:

$ lvcreate -l 509 vg_raid -n lv_raid

Finalmente, podemos crear un sistema de archivos sobre ese volumen lógico:

$ mkfs.xfs /dev/mapper/vg_raid-lv_raid

Para poder usar nuestra matriz RAID recién creada, necesitamos crear un directorio y montarlo:

$ mkdir /raid
$ mount /dev/mapper/vg_raid-lv_raid /raid

Ahora está listo para usar. Pero para que se monte automáticamente después de reiniciar, necesitamos guardar la geometría RAID en el archivo de configuración de mdadm:

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Luego agregue la siguiente línea a / etc / fstab que monta la matriz RAID automáticamente:

/dev/mapper/vg_raid-lv_raid /raid auto auto,noatime,nodiratime,logbufs=8 0 1

Ahora la matriz RAID está lista para usar y se monta automáticamente en el directorio / raid después de cada arranque.

Agregar una nueva unidad a la matriz

Imaginemos que ahora tiene una nueva unidad, / dev / sde, que desea agregar a la matriz creada anteriormente sin perder ningún dato.

Primero, la nueva unidad debe dividirse como todas las demás unidades:

$ fdisk /dev/sde
n # Create a new partition
p # Primary
1 # First partition
[enter] # Starting point to first sector (default)
[enter] # Ending point to last sector (default)
t # Change partition type
fd # Type: Linux raid autodetect
w # Write changes to disc

Luego debe agregarse a la matriz RAID:

$ mdadm --add /dev/md0 /dev/sde1

Ahora la matriz RAID5 incluye cuatro unidades, que solo tres están en uso actualmente. La matriz debe ampliarse para incluir las cuatro unidades:

$ mdadm --grow /dev/md0 --raid-devices=4

Luego, el volumen físico LVM2 debe expandirse:

$ pvresize /dev/md0

Ahora el volumen físico cambia de tamaño de manera predeterminada para cubrir todo el espacio disponible en la matriz RAID. Necesitamos descubrir el nuevo tamaño en extensión física:

$ vgdisplay vg_raid

Imaginemos que el nuevo tamaño es ahora 764 (se puede ver en "PE total"). Ahora expanda el volumen lógico para cubrir esto:

$ lvextend /dev/mapper/vg_raid-lv_raid -l 764

Luego expanda el sistema de archivos XFS. Esto debe hacerse mientras el sistema de archivos está en línea y montado:

$ xfs_grow /raid

Por defecto se expande para cubrir todo el espacio disponible. Finalmente, la geometría de la matriz RAID debe actualizarse porque la matriz ahora incluye un nuevo disco. Primero elimine la línea agregada de /etc/mdadm/mdadm.conf y luego agregue una nueva:

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Taskinen
fuente
3
No coloque particiones en sus discos. No es necesario: la autodetección RAID en el núcleo (tipo de partición fd) está en desuso.
James
Entonces, en lugar de crear particiones tipo 'fd' con fdisk, ¿debería crear directamente la matriz / dev / md0 en los dispositivos / dev / sdb, / dev / sdc y / dev / sdd?
Taskinen
1
He oído que no todos los discos tienen el mismo tamaño, por lo que si compro un nuevo disco de terabytes, es posible que no tenga exactamente el mismo tamaño. ¿Eso introduciría algunos problemas?
Taskinen

Respuestas:

5

Creo que lo has entendido bien. Asegúrese de comprender y prestar atención a las advertencias sobre el crecimiento de RAID 5 en man 8 mdadm.

Personalmente, si estuviera creciendo un volumen LVM, no estaría creciendo una matriz RAID existente para hacerlo. Crearía otra matriz RAID, crearía un nuevo physvol a partir de ella y la agregaría al mismo grupo de volúmenes. Esta es una operación mucho más segura (no implica reescribir toda la matriz RAID5 en el nuevo conjunto de discos) y mantiene el tamaño de sus matrices bajo.

Kamil Kisiel
fuente
Totalmente de acuerdo. vgextend es tu amigo aquí.
Dan Andreatta
1
En general, entiendo, pero ¿qué pasa con la situación en la que quiero hacer crecer la matriz de tres discos mencionada anteriormente en una matriz de cuatro discos? No puedo crear una nueva matriz RAID desde el cuarto disco solo.
Taskinen
1
No estaría expandiendo la matriz de discos de un servidor de almacenamiento un disco a la vez. Pasar de una matriz de tres discos a una matriz de cuatro discos le dará solo un 50% más de almacenamiento, ya que tiene que usar discos del mismo tamaño.
Kamil Kisiel
1
Convenido. Para cuando se quede sin espacio, las unidades de disco más grandes habrán bajado de precio. Construya una segunda matriz RAID en un nuevo conjunto de unidades más grandes, luego mueva sus datos antiguos a eso y desmantele el conjunto anterior una vez que haya terminado. Todo esto se puede hacer mientras los sistemas de archivos en los volúmenes lógicos afectados por pvmove están en uso activo.
flabdablet