¿Qué nivel de madurez y funcionalidad tiene LVM RAID?
LVM-RAID es realmente mdraid debajo de las cubiertas. Básicamente funciona creando dos volúmenes lógicos por dispositivo RAID (uno para datos, llamado "rimage"; uno para metadatos, llamado "rmeta"). Luego los pasa a los controladores mdraid existentes. Por lo tanto, cosas como el manejo de errores de lectura de disco, el equilibrio de carga de E / S, etc. deben ser bastante maduros.
Esa es la buena noticia.
Herramientas
No puede usarlo mdadm
(al menos, no de una manera fácil¹) y las herramientas RAID LVM no son tan maduras. Por ejemplo, en Debian Wheezy, lvs
no puedo decirte el estado de sincronización de RAID5. Dudo mucho que la reparación y la recuperación (especialmente de las situaciones "¡eso nunca debería suceder!") Sea tan buena como mdadm (y accidentalmente me topé con uno de esos en mis pruebas, y finalmente me di por vencido en recuperarlo: recuperación con mdadm hubiera sido fácil).
Especialmente si no está utilizando las versiones más recientes de todas las herramientas, empeora.
Funciones faltantes
Las versiones actuales de LVM-RAID no admiten reducir ( lvreduce
) un volumen lógico RAID. Tampoco admiten cambiar el número de discos o el nivel RAID ( lvconvert
muestra un mensaje de error que dice que aún no es compatible). lvextend
funciona, e incluso puede aumentar los niveles de RAID para los que mdraid solo obtuvo soporte recientemente, como RAID10. En mi experiencia, extender los LV es mucho más común que reducirlos, por lo que en realidad es razonable.
Algunas otras características de mdraid no están presentes, y especialmente no puedes personalizar todas las opciones que puedes usar con mdadm.
En versiones anteriores (como se encuentra, por ejemplo, en Debian Wheezy), LVM RAID tampoco admite el crecimiento. Por ejemplo, en Wheezy:
root@LVM-RAID:~# lvextend -L+1g vg0/root
Extending logical volume root to 11.00 GiB
Internal error: _alloc_init called for non-virtual segment with no disk space.
En general, no desea ejecutar las versiones de Wheezy.
Lo anterior es una vez que lo tienes instalado. Ese tampoco es un proceso trivial.
Problemas de herramientas
Jugando con mi VM Jessie, desconecté (virtualmente) un disco. Eso funcionó, la máquina siguió funcionando. lvs
, sin embargo, no dio ninguna indicación de que las matrices estaban degradadas. Volví a conectar el disco y eliminé un segundo. Permaneció corriendo (esto es raid6). Vuelva a adjuntar, todavía no hay indicación de lvs
. Corrí lvconvert --repair
en el volumen, me dijo que estaba bien. Luego saqué un tercer disco ... y la máquina murió. Vuelva a insertarlo, reinicié, y ahora no estoy seguro de cómo solucionarlo. mdadm --force --assemble
solucionaría esto; ni vgchange
tampoco lvchange
parece tener esa opción (lvchange acepta --force
, pero no parece hacer nada). Incluso tratando dmsetup
de alimentar directamente la tabla de mapeo al kernel, no pude descubrir cómo recuperarla.
Además, mdadm
es una herramienta dedicada solo para administrar RAID. LVM hace mucho más, pero se siente (y admito que esto es bastante subjetivo) que la funcionalidad RAID se ha introducido allí; No encaja del todo.
¿Cómo se instala realmente un sistema con RAID LVM?
Aquí hay un breve resumen de cómo instalarlo en Debian Jessie o Wheezy. Jessie es mucho más fácil; tenga en cuenta que si va a probar esto en Wheezy, lea todo primero ...
Utilice una imagen de CD completa para instalar, no una imagen netinst.
Proceda normalmente, acceda al particionamiento del disco, configure sus volúmenes físicos LVM. Usted puede poner /boot
en LVM-RAID (en Jessie, y en Wheezy con algo de trabajo se detalla a continuación).
Crea tus grupos de volúmenes. Déjalo en el menú LVM.
Primero divertido: el instalador no tiene el dm-raid.ko
módulo cargado, ¡ni siquiera está disponible! Entonces puedes obtenerlo del paquete linux-image que se instalará. Cambie a una consola (por ejemplo, Alt- F2) y:
cd /tmp
dpkg-deb --fsys-tarfile /cdrom/pool/main/l/linux/linux-image-*.deb | tar x
depmod -a -b /tmp
modprobe -d /tmp dm-raid
El instalador no sabe cómo crear LVM-RAID LV, por lo que debe usar la línea de comandos para hacerlo. Tenga en cuenta que no hice ninguna evaluación comparativa; el tamaño de la franja ( -I
) a continuación es una conjetura para mi configuración de VM:
lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
En Jessie, puede usar RAID10 para el intercambio. En Wheezy, RAID10 no es compatible. Por lo tanto, puede usar dos particiones de intercambio, cada RAID1. Pero debe decirle exactamente en qué volúmenes físicos colocarlos o coloca ambas mitades del espejo en el mismo disco . Si. Seriamente. De todos modos, eso se ve así:
lvcreate --type raid1 -m1 -L 1G -n swap0 vg0 /dev/vda1 /dev/vdb1
lvcreate --type raid1 -m1 -L 1G -n swap1 vg0 /dev/vdc1 /dev/vdd1
Finalmente, vuelva al instalador y presione 'Finalizar' en el menú LVM. Ahora se le presentarán muchos volúmenes lógicos que se muestran. Ese es el instalador que no comprende lo que está sucediendo; ignore todo con rimage
o rmeta
en su nombre (vea el primer párrafo arriba para obtener una explicación de cuáles son).
Continúe y cree sistemas de archivos, intercambie particiones, etc., como de costumbre. Instale el sistema base, etc., hasta llegar al indicador de grub.
En Jessie, grub2 funcionará si está instalado en el MBR (o probablemente con EFI, pero no lo he probado). En Wheezy, la instalación fallará, y la única solución es hacer backport a grub2 de Jessie. Eso es bastante fácil, se compila limpiamente en Wheezy. De alguna manera, obtenga sus paquetes de grub con respaldo /target
(o hágalo en un segundo, después del chroot) y luego:
chroot /target /bin/bash
mount /sys
dpkg -i grub-pc_*.deb grub-pc-bin_*.deb grub-common_*.deb grub2-common_*.deb
grub-install /dev/vda … grub-install /dev/vdd # for each disk
echo 'dm_raid' >> /etc/initramfs-tools/modules
update-initramfs -kall -u
update-grub # should work, technically not quite tested²
umount /sys
exit
En realidad, en mi instalación de grub Jessie VM más reciente se colgó. Cambiando a F2 y haciendo while kill $(pidof vgs); do sleep 0.25; done
, seguido de lo mismo para lvs
, lo consiguió a través de grub-install. Parecía generar una configuración válida a pesar de eso, pero por si acaso hice una chroot /target /bin/bash
, me aseguré /proc
y fui /sys
montada, e hice una update-grub
. Esa vez, se completó. Luego hice una dpkg-reconfigure grub-pc
selección de instalación de grub en todos los MBR de los discos virtuales.
En Wheezy, después de hacer lo anterior, seleccione 'continuar sin un gestor de arranque'.
Termina la instalación. Arrancará. Probablemente.
Conocimiento de la comunidad
Hay un buen número de personas que conocen mdadm
y tienen mucha experiencia en la implementación. Es probable que Google responda a la mayoría de las preguntas que tiene. En general, puede esperar una pregunta al respecto aquí para obtener respuestas, probablemente dentro de un día.
No se puede decir lo mismo de LVM RAID. Es difícil encontrar guías. La mayoría de las búsquedas de Google que he realizado en cambio me encuentran cosas sobre el uso de matrices mdadm como PV. Para ser honesto, esto probablemente se deba en gran parte a que es más nuevo y se usa con menos frecuencia. De alguna manera, se siente injusto sostener esto en su contra, pero si algo sale mal, la comunidad existente mucho más grande alrededor de mdadm hace que sea más probable recuperar mis datos.
Conclusión
LVM-RAID avanza con bastante rapidez. En Wheezy, no es realmente utilizable (al menos, sin hacer backports de LVM y el kernel). Anteriormente, en 2014, en las pruebas de Debian, se sintió como una idea interesante, pero inacabada. Las pruebas actuales, básicamente lo que se convertirá en Jessie, se sienten como algo que realmente podría usar, si con frecuencia necesita crear pequeñas porciones con diferentes configuraciones RAID (algo con lo que es una pesadilla administrativa mdadm
).
Si sus necesidades son atendidas adecuadamente por unos pocos arreglos RAID mdadm grandes, divididos en particiones usando LVM, sugeriría continuar usándolo. Si, en cambio, termina creando muchas matrices (o incluso matrices de volúmenes lógicos), considere cambiar a LVM-RAID. Pero mantenga buenas copias de seguridad.
Muchos de los usos de LVM RAID (e incluso mdadm RAID) están siendo asumidos por cosas como el almacenamiento de clúster / sistemas de objetos, ZFS y btrfs. Recomiendo también investigarlos, pueden satisfacer mejor sus necesidades.
Agradecimientos
Me gustaría agradecer a psusi por hacerme volver a visitar el estado de LVM-RAID y actualizar esta publicación.
Notas al pie
Sospecho que podría usar el mapeador de dispositivos para pegar los metadatos y los datos de una manera que mdadm --assemble
lo tome en cuenta. Por supuesto, podrías ejecutar mdadm
en volúmenes lógicos bien ... y eso sería más sensato.
Cuando hice la instalación de Wheezy, no pude hacerlo por primera vez, y terminé sin configuración de grub. Tuve que arrancar el sistema ingresando toda la información en el indicador de grub. Una vez arrancado, funcionó, así que creo que funcionará bien desde el instalador. Si termina en el indicador de grub, aquí están las líneas mágicas para escribir:
linux /boot/vmlinuz-3.2.0-4-amd64 root=/dev/mapper/vg0-root
initrd /boot/initrd.image-3.2.0-4-amd64
boot
PD: Ha pasado un tiempo desde que hice los experimentos originales. He puesto a disposición mis notas originales . Tenga en cuenta que ahora he hecho más recientes, cubiertos en esta respuesta, y no en esas notas.