Cuando se utilizan varios sistemas de virtualización de almacenamiento juntos, comprender la estructura de las diversas relaciones involucradas puede resultar complicado y llevar mucho tiempo. ¿Qué herramientas están disponibles para diagramar y resumir estas relaciones?
El caso que me interesa particularmente es el de Linux.LVMy LUKS. Tengo un sistema en el que se colocan en capas una encima de la otra. Mi objetivo era dibujar undiagrama de bloques, con capas de la siguiente manera (simplificando un poco para evitar complicaciones irrelevantes):
- Volumen lógico LVM (LV)
- Grupo de volúmenes LVM (VG)
- Partición LUKS == volumen físico LVM (PV)
- partición física
- Disco físico
Tenga en cuenta que, aunque en general los VG forman una relación de muchos a muchos entre LV y PV, mi caso fue más simple porque cada VG estaba asociado solo con un único PV.
El diagrama de bloques debía etiquetarse con información como nombres de archivos de dispositivos de disco físico, nombres PV, VG y LV, nombres de dispositivos asignadores de dispositivos y UUID de disco, cuando estuvieran disponibles.
Acabo de dibujar ese diagrama de bloques. Descubrí que usé 12 fuentes de información, junto con conocimiento previo del sistema y observé cómo el sistema cambiaba con el tiempo mientras ejecutaba los comandos cryptsetup
y mount
. Dibujarlo fue un proceso iterativo doloroso y que llevó mucho tiempo para adquirir conocimientos, lo que me recordócierto tipo de problema lógico. Éstos son algunos de los comandos que utilicé:
ls -l /dev/mapper/*
ls -l /dev/disk/by-uuid/*
dmsetup info
lvdisplay
ls -l /dev/mapper/<LV name>
pvs
vgs
lvs
cat /etc/fstab
cat /etc/crypttab
fdisk -l /dev/<physical disk device name>
mount
¿Qué herramientas están disponibles para producir resúmenes de este tipo de sistema de virtualización de almacenamiento y de sistemas específicos de Linux como LVM y LUKS en particular? Con mucho gusto me conformaría con listados relacionales de texto plano en lugar de diagramas de bloques.
En mi caso, hubo algunas complicaciones adicionales. Los describiré solo para ilustrar cómo puede volverse más complicado, pero tenga en cuenta que la situación anterior fue lo suficientemente complicada como para que llevara mucho tiempo dibujar el diagrama de bloques solo para la parte de mi sistema que se describe anteriormente. Soy consciente de que el problema podría simplificarse eliminando estas complicaciones, así que no desperdiciemos espacio en eso.
Una complicación fue que también tengo varias particiones antiguas en las que las capas LUKS/LVM son opuestas a las descritas anteriormente, es decir:
(partición física == LVM PV) -> VG -> LV -> dispositivo cifrado LUKS -> dispositivo de texto plano LUKS
en lugar de:
partición física -> dispositivo cifrado LUKS -> (dispositivo de texto plano LUKS == LVM PV) -> VG -> LV
Además, un dispositivo cifrado LUKS estaba mal etiquetado, lo que sugiere que estaba en un disco físico diferente al que estaba en realidad.
Obviamente, también podría haber otras complicaciones, la más obvia cuando un único grupo de volúmenes está asociado con múltiples volúmenes físicos. En ese caso, querría múltiples diagramas de bloques (dos en el caso simple, más si las capas son más complicadas).