Saltar al contenido

RAID con LVM vs MDRAID: ¿pros y contras?

Solución:

¿Qué tan maduro y funcional es LVM RAID?

LVM-RAID es realmente mdraid bajo las sábanas. Básicamente, funciona creando dos volúmenes lógicos por dispositivo RAID (uno para datos, llamado “rimage”; otro para metadatos, llamado “rmeta”). Luego los pasa a los controladores mdraid existentes. Por lo tanto, cosas como el manejo de errores de lectura del disco, el equilibrio de carga de E / S, etc. deberían ser bastante maduros.

Esa es la buena noticia.

Instrumentos

No puedes usar mdadm en él (al menos, no de una manera fácil¹) y las herramientas LVM RAID no son tan maduras. Por ejemplo, en Debian Wheezy, lvs no puedo decirle el estado de sincronización de RAID5. Dudo mucho que la reparación y la recuperación (especialmente de situaciones de “¡eso nunca debería suceder!”) Sea tan buena como mdadm (y accidentalmente me encontré con una de esas en mis pruebas, y finalmente me di por vencido en la recuperación: 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 la reducción (lvreduce) un volumen lógico RAID. Tampoco admiten cambiar la cantidad de discos o el nivel de RAID (lvconvert da un mensaje de error que dice no admitido todavía). lvextend funciona, e incluso puede aumentar los niveles de RAID para los que mdraid ganó soporte recientemente, como RAID10. En mi experiencia, extender los LV es mucho más común que reducirlos, por lo que eso es realmente razonable.

Algunas otras características de mdraid no están presentes y, especialmente, no puede personalizar todas las opciones que puede con mdadm.

En versiones anteriores (como las que se encuentran, por ejemplo, en Debian Wheezy), LVM RAID tampoco admite el crecimiento. Por ejemplo, en Wheezy:

[email protected]:~# 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 instale. Ese tampoco es un proceso trivial.

Problemas de herramientas

Jugando con mi Jessie VM, desconecté (virtualmente) un disco. Eso funcionó, la máquina siguió funcionando. lvs, sin embargo, no dio ninguna indicación de que las matrices estuvieran degradadas. Volví a conectar el disco y quité un segundo. Seguí corriendo (esto es raid6). Re-adjunto, todavía no hay indicios de lvs. Yo corrí lvconvert --repair en el volumen, me dijo que estaba bien. Luego saqué un tercer disco … y la máquina murió. Lo reinserté, reinicié y ahora no estoy seguro de cómo solucionarlo. mdadm --force --assemble arreglaría esto; ninguno vgchange ni lvchange parece tener esa opción (lvchange acepta --force, pero no parece hacer nada). Incluso intentando dmsetup para alimentar directamente la tabla de mapeo al kernel, no pude averiguar cómo recuperarlo.

También, mdadm es una herramienta dedicada solo para administrar RAID. LVM hace mucho más, pero se siente (y admito que esto es bastante subjetivo) como que la funcionalidad RAID se ha introducido allí; no encaja del todo.

¿Cómo se instala realmente un sistema con LVM RAID?

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 …

  1. Utilice una imagen de CD completa para instalar, no una imagen netinst.

  2. Proceda con normalidad, acceda a la partición del disco, configure sus volúmenes físicos LVM. usted pueden poner /boot en LVM-RAID (en Jessie y en Wheezy con algunos trabajos detallados a continuación).

  3. Crea tu (s) grupo (s) de volumen. Déjelo en el menú LVM.

  4. Primera diversión: el instalador no tiene la dm-raid.ko módulo cargado, o incluso disponible! Entonces puedes tomarlo del paquete linux-image que se instalará. Cambiar a una consola (p. Ej., AltF2) 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
    
  5. El instalador no sabe cómo crear LVM-RAID LV, por lo que debe usar la línea de comando para hacerlo. Tenga en cuenta que no hice ninguna evaluación comparativa; el tamaño de la raya-I) a continuación es una suposición para la configuración de mi VM:

    lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
    
  6. En Jessie, puede usar RAID10 para el intercambio. En Wheezy, RAID10 no es compatible. Entonces, en su lugar, puede usar dos particiones de intercambio, cada una de ellas RAID1. Pero tu debe dígale exactamente en qué volúmenes físicos colocarlos o pone ambas mitades del espejo en el mismo disco. Si. Seriamente. De todos modos, eso se parece a:

    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
    
  7. Finalmente, vuelva al instalador y presione ‘Finalizar’ en el menú LVM. Ahora se le presentará un lote de volúmenes lógicos que se muestran. Ese es el instalador que no comprende lo que está pasando; ignora todo con rimage o rmeta en su nombre (vea el primer párrafo arriba para una explicación de cuáles son).

  8. Continúe y cree sistemas de archivos, intercambie particiones, etc. como de costumbre. Instale el sistema base, etc., hasta que llegue al indicador de grub.

  9. En Jessie, grub2 funcionará si se instala 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 de grub2 de Jessie. Eso es bastante fácil, se compila limpiamente en Wheezy. De alguna manera, consiga sus paquetes grub backportados en /target (o hágalo en un segundo, después del chroot) 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
    
  10. De hecho, en mi instalación de grub de 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 obtuve 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, asegurado /proc y /sys fueron montados, e hizo un update-grub. Esa vez, se completó. Entonces hice un dpkg-reconfigure grub-pc para seleccionar la instalación de grub en todos los MBR de los discos virtuales.

  11. En Wheezy, después de hacer lo anterior, seleccione ‘continuar sin un cargador de arranque’.

  12. Termina la instalación. Arrancará. Probablemente.

Conocimiento de la comunidad

Hay un buen número de personas que conocen mdadmy tiene mucha experiencia en implementación con él. Es probable que Google responda a la mayoría de las preguntas que tenga al respecto. Por lo 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 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, parecía 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 que es una pesadilla administrativa con mdadm).

Si sus necesidades se satisfacen adecuadamente con unas pocas matrices RAID mdadm grandes, divididas en particiones utilizando LVM, le sugiero que continúe utilizándola. Si, en cambio, termina teniendo que crear muchas matrices (o incluso matrices de volúmenes lógicos), considere cambiar a LVM-RAID en su lugar. Pero mantén buenas copias de seguridad.

Muchos de los usos de LVM RAID (e incluso mdadm RAID) están siendo asumidos por cosas como sistemas de objetos / almacenamiento en clúster, ZFS y btrfs. También recomiendo investigarlos, ya que pueden satisfacer mejor sus necesidades.


Agradecimientos

Me gustaría agradecer a psusi por hacerme revisar el estado de LVM-RAID y actualizar esta publicación.

Notas al pie

  1. Sospecho que podría usar el mapeador de dispositivos para unir los metadatos y los datos de tal manera que mdadm --assemble lo tomará. Por supuesto, podrías simplemente correr mdadm en volúmenes lógicos muy bien … y eso sería más sensato.

  2. Al hacer la instalación de Wheezy, no pude hacerlo la primera vez y terminé sin configuración de grub. Tuve que iniciar el sistema ingresando toda la información en el indicador de grub. Una vez iniciado, 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 otros más recientes, cubiertos en esta respuesta, y no en esas notas.

Tampoco sabía que LVM podía hacer RAID. Personalmente, me quedaría con mdadm ya que es un software mucho más maduro que hace lo mismo. Si algo se rompe con LVM RAID, probablemente no podrá obtener tanto soporte como si hubiera optado por mdadm. Además, no confiaría en LVM RAID ya que históricamente LVM ha demostrado no ser el software más robusto.

ZFS y BTRFS son el futuro. Los beneficios que brindan van más allá de lo que es posible en la capa de bloques. A menos que mi objetivo sea la compatibilidad, ya no usaré LVM / mdadm. ZFS y BTRFS tienen muchas características como compresión, deduplicación y copia en escritura, pero no entraré en eso aquí, ya que estaría un poco fuera de alcance.

Al final, investigue y use lo que se adapte a sus necesidades / deseos.

Si crees que ha resultado de utilidad nuestro artículo, agradeceríamos que lo compartas con el resto desarrolladores de este modo nos ayudas a dar difusión a esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *