Compartir a través de


Configuración de LVM y RAID en dispositivos cifrados

Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles

En este artículo encontrará un proceso paso a paso para la Administración de volúmenes lógicos (LVM) y RAID en dispositivos cifrados. El proceso se aplica a los entornos siguientes:

  • Distribuciones de Linux
    • RHEL 7.6 y versiones posteriores
    • Ubuntu 18.04 y versiones posteriores
    • SUSE 12 y versiones posteriores
  • Extensión de pase único de Azure Disk Encryption
  • Extensión de pase doble de Azure Disk Encryption

Escenarios

Los procedimientos descritos en este artículo admiten los escenarios siguientes:

  • Configuración de LVM sobre dispositivos cifrados (LVM-on-crypt)
  • Configuración de RAID sobre dispositivos cifrados (RAID-on-crypt)

Después de que se han cifrado los dispositivos subyacentes, puede crear las estructuras LVM o RAID sobre esa capa cifrada.

Los volúmenes físicos (PV) se crean sobre la capa cifrada. Los volúmenes físicos se usan para crear el grupo de volúmenes. Cree los volúmenes y agregue las entradas necesarias en /etc/fstab.

Diagrama de las capas de las estructuras de LVM

De forma similar, el dispositivo RAID se crea sobre la capa cifrada en los discos. Se crea un sistema de archivos sobre el dispositivo RAID y se agrega a /etc/fstab como dispositivo normal.

Consideraciones

Se recomienda utilizar LVM-on-crypt. RAID es una opción cuando LVM no se puede utilizar debido a limitaciones específicas del entorno o de la aplicación.

Usará la opción EncryptFormatAll. Para obtener más información acerca de esta opción, consulte Uso de la característica EncryptFormatAll para discos de datos en máquinas virtuales Linux.

Si bien puede usar este método también al cifrar el sistema operativo, aquí solo se van a cifrar unidades de datos.

En los procedimientos se supone que ya ha revisado los requisitos previos en Escenarios de Azure Disk Encryption en máquinas virtuales Linux y en Inicio rápido: Creación y cifrado de una máquina virtual Linux con la CLI de Azure.

La versión de pase doble de Azure Disk Encryption quedará en desuso próximamente y ya no se debe usar en los nuevos cifrados.

Pasos generales

Cuando use las configuraciones "on-crypt", siga el proceso que se describe en los procedimientos a continuación.

Nota

Vamos a usar variables a lo largo de todo el artículo. Reemplace los valores en consecuencia.

Implementación de una máquina virtual

Los siguientes comandos son opcionales, pero se recomienda aplicarlos en una máquina virtual (VM) recién implementada.

PowerShell:

New-AzVm -ResourceGroupName ${RGNAME} `
-Name ${VMNAME} `
-Location ${LOCATION} `
-Size ${VMSIZE} `
-Image ${OSIMAGE} `
-Credential ${creds} `
-Verbose

CLI de Azure:

az vm create \
-n ${VMNAME} \
-g ${RGNAME} \
--image ${OSIMAGE} \
--admin-username ${username} \
--admin-password ${password} \
-l ${LOCATION} \
--size ${VMSIZE} \
-o table

Conexión de discos a la VM

Repita los siguientes comandos para $N número de discos nuevos que desee conectar a la VM.

PowerShell:

$storageType = 'Standard_LRS'
$dataDiskName = ${VMNAME} + '_datadisk0'
$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $LOCATION -CreateOption Empty -DiskSizeGB 5
$dataDisk1 = New-AzDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName ${RGNAME}
$vm = Get-AzVM -Name ${VMNAME} -ResourceGroupName ${RGNAME}
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 0
Update-AzVM -VM ${VM} -ResourceGroupName ${RGNAME}

CLI de Azure:

az vm disk attach \
-g ${RGNAME} \
--vm-name ${VMNAME} \
--name ${VMNAME}datadisk1 \
--size-gb 5 \
--new \
-o table

Verificación de que los discos están conectados a la VM

PowerShell:

$VM = Get-AzVM -ResourceGroupName ${RGNAME} -Name ${VMNAME}
$VM.StorageProfile.DataDisks | Select-Object Lun,Name,DiskSizeGB

Lista de discos conectados en PowerShell

CLI de Azure:

az vm show -g ${RGNAME} -n ${VMNAME} --query storageProfile.dataDisks -o table

Lista de discos conectados en la CLI de Azure

Portal:

Lista de discos conectados en el portal

Sistema operativo:

lsblk

Lista de discos conectados en el sistema operativo

Configuración de los discos que se van a cifrar

Esta configuración se realiza a nivel del sistema operativo. Los discos correspondientes se configuran para un cifrado tradicional a través de Azure Disk Encryption:

  • Los sistemas de archivos se crean sobre los discos.
  • Se crean puntos de montaje temporales para montar los sistemas de archivos.
  • Los sistemas de archivos se configuran en /etc/fstab para montarse durante el arranque.

Compruebe la letra del dispositivo asignada a los nuevos discos. En este ejemplo, se van a usar cuatro discos de datos.

lsblk

Discos de datos conectados al sistema operativo

Creación de un sistema de archivos sobre cada disco

Este comando itera la creación de un sistema de archivos ext4 en cada disco, definido en la parte "in" del ciclo "for".

for disk in c d e f; do echo mkfs.ext4 -F /dev/sd${disk}; done |bash

Creación de un sistema de archivos ext4

Busque el identificador único universal (UUID) de los sistemas de archivos recién creados, cree una carpeta temporal, agregue las entradas correspondientes en /etc/fstab y monte todos los sistemas de archivos.

Este comando también recorre en iteración cada disco definido en la parte "in" del ciclo "for":

for disk in c d e f; do diskuuid="$(blkid -s UUID -o value /dev/sd${disk})"; \
mkdir /tempdata${disk}; \
echo "UUID=${diskuuid} /tempdata${disk} ext4 defaults,nofail 0 0" >> /etc/fstab; \
mount -a; \
done

Verificación de que los discos se han montado correctamente

lsblk

Lista de sistemas de archivos temporales montados

Verifique también que los discos se han configurado:

cat /etc/fstab

Información de configuración a través de fstab

Cifrado de los discos de datos

PowerShell con una clave de cifrado de claves (KEK):

$sequenceVersion = [Guid]::NewGuid()
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RGNAME `
-VMName ${VMNAME} `
-DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl `
-DiskEncryptionKeyVaultId $KeyVaultResourceId `
-KeyEncryptionKeyUrl $keyEncryptionKeyUrl `
-KeyEncryptionKeyVaultId $KeyVaultResourceId `
-VolumeType 'DATA' `
-EncryptFormatAll `
-SequenceVersion $sequenceVersion `
-skipVmBackup;

CLI de Azure mediante una KEK:

az vm encryption enable \
--resource-group ${RGNAME} \
--name ${VMNAME} \
--disk-encryption-keyvault ${KEYVAULTNAME} \
--key-encryption-key ${KEYNAME} \
--key-encryption-keyvault ${KEYVAULTNAME} \
--volume-type "DATA" \
--encrypt-format-all \
-o table

Comprobación del estado de cifrado

Continúe con el paso siguiente solo cuando todos los discos estén cifrados.

PowerShell:

Get-AzVmDiskEncryptionStatus -ResourceGroupName ${RGNAME} -VMName ${VMNAME}

Estado de cifrado en PowerShell

CLI de Azure:

az vm encryption show -n ${VMNAME} -g ${RGNAME} -o table

Estado de cifrado en la CLI de Azure

Portal:

Estado de cifrado en el portal

Nivel del sistema operativo:

lsblk

Estado de cifrado en el sistema operativo

La extensión agregará los sistemas de archivos a /var/lib/azure_disk_encryption_config/azure_crypt_mount (un cifrado anterior), o bien a /etc/crypttab (cifrados nuevos).

Nota

No modifique ninguno de estos archivos.

Este archivo se encargará de activar estos discos durante el proceso de arranque para que LVM o RAID pueda usarlos más adelante.

No se preocupe por los puntos de montaje de este archivo. Azure Disk Encryption perderá la capacidad de montar los discos como sistema de archivos normal después de crear un volumen físico o un dispositivo RAID sobre esos dispositivos cifrados. (Esto quitará el formato del sistema de archivos que usamos durante el proceso de preparación).

Eliminación de las carpetas temporales y las entradas fstab temporales

Desmonte los sistemas de archivos en los discos que se usarán como parte de LVM.

for disk in c d e f; do umount /tempdata${disk}; done

Y quite las entradas /etc/fstab:

vi /etc/fstab

Compruebe que los discos no están montados y que se han quitado las entradas de /etc/fstab

lsblk

Verificación de que los sistemas de archivos temporales se han desmontado

Y verifique que los discos se han configurado:

cat /etc/fstab

Verificación de que se han quitado las entradas fstab temporales

Pasos para LVM-on-crypt

Ahora que los discos subyacentes están cifrados, puede crear las estructuras de LVM.

En lugar de usar el nombre del dispositivo, use las rutas de acceso /dev/mapper para cada uno de los discos a fin de crear un volumen físico (en la capa de cifrado sobre el disco, no en el propio disco).

Configuración de LVM sobre las capas cifradas

Creación de los volúmenes físicos

Recibirá una advertencia que le pregunta si es correcto borrar la firma del sistema de archivos. Para continuar, escriba y o use echo "y" como se muestra a continuación:

echo "y" | pvcreate /dev/mapper/c49ff535-1df9-45ad-9dad-f0846509f052
echo "y" | pvcreate /dev/mapper/6712ad6f-65ce-487b-aa52-462f381611a1
echo "y" | pvcreate /dev/mapper/ea607dfd-c396-48d6-bc54-603cf741bc2a
echo "y" | pvcreate /dev/mapper/4159c60a-a546-455b-985f-92865d51158c

Verificación de que se ha creado un volumen físico

Nota

Aquí, los nombres de /dev/mapper/device se deben reemplazar por los valores reales en función de la salida de lsblk.

Verificación de la información de los volúmenes físicos

pvs

Información de los volúmenes físicos

Creación del grupo de volúmenes

Cree el grupo de volúmenes con los mismos dispositivos ya inicializados:

vgcreate vgdata /dev/mapper/

Comprobación de la información del grupo de volúmenes

vgdisplay -v vgdata
pvs

Información del grupo de volúmenes

Cree los volúmenes lógicos.

lvcreate -L 10G -n lvdata1 vgdata
lvcreate -L 7G -n lvdata2 vgdata

Comprobación de los volúmenes lógicos creados

lvdisplay
lvdisplay vgdata/lvdata1
lvdisplay vgdata/lvdata2

Información de los volúmenes lógicos

Cree sistemas de archivos sobre las estructuras de los volúmenes lógicos

echo "yes" | mkfs.ext4 /dev/vgdata/lvdata1
echo "yes" | mkfs.ext4 /dev/vgdata/lvdata2

Cree los puntos de montaje para los nuevos sistemas de archivos

mkdir /data0
mkdir /data1

Agregue los nuevos sistemas de archivos a /etc/fstab y móntelos

echo "/dev/mapper/vgdata-lvdata1 /data0 ext4 defaults,nofail 0 0" >>/etc/fstab
echo "/dev/mapper/vgdata-lvdata2 /data1 ext4 defaults,nofail 0 0" >>/etc/fstab
mount -a

Verificación de que los nuevos sistemas de archivos se han montado

lsblk -fs
df -h

Captura de pantalla que muestra una ventana de consola con sistemas de archivos montados como data0 y data1.

En esta variación de lsblk, se enumeran los dispositivos que muestran las dependencias en orden inverso. Esta opción ayuda a identificar los dispositivos agrupados por el volumen lógico, en lugar de los nombres de dispositivo de /dev/sd[disk] originales.

Es importante asegurarse de que se agrega la opción nofail a las opciones de punto de montaje de los volúmenes LVM creados sobre un dispositivo cifrado mediante Azure Disk Encryption. Esto evita que el sistema operativo se bloquee durante el proceso de arranque (o en modo de mantenimiento).

Si no utiliza la opción nofail:

  • El sistema operativo nunca llegará a la fase en la que se inicia Azure Disk Encryption y los discos de datos se desbloquean y se montan.
  • Los discos cifrados se desbloquearán al final del proceso de arranque. Los volúmenes de LVM y los sistemas de archivos estarán montados automáticamente hasta que Azure Disk Encryption los desbloquee.

Puede probar reiniciar la VM y validar que los sistemas de archivos también se monten de forma automática después del tiempo de arranque. Este proceso puede tardar varios minutos, según el número y el tamaño de los sistemas de archivos.

Reinicio de la máquina virtual y comprobación después del reinicio

shutdown -r now
lsblk
df -h

Pasos para RAID-on-crypt

Ahora que los discos subyacentes están cifrados, puede continuar para crear las estructuras de RAID. El proceso es el mismo que el de LVM, pero, en lugar de usar el nombre del dispositivo, use las rutas de acceso de /dev/mapper para cada disco.

Configuración de RAID sobre la capa cifrada de los discos

mdadm --create /dev/md10 \
--level 0 \
--raid-devices=4 \
/dev/mapper/c49ff535-1df9-45ad-9dad-f0846509f052 \
/dev/mapper/6712ad6f-65ce-487b-aa52-462f381611a1 \
/dev/mapper/ea607dfd-c396-48d6-bc54-603cf741bc2a \
/dev/mapper/4159c60a-a546-455b-985f-92865d51158c

Información para RAID configurado mediante el comando mdadm

Nota

Aquí, los nombres de /dev/mapper/device se deben reemplazar por los valores reales en función de la salida de lsblk.

Comprobación/supervisión de la creación de RAID

watch -n1 cat /proc/mdstat
mdadm --examine /dev/mapper/[]
mdadm --detail /dev/md10

Estado de RAID

Creación de un sistema de archivos sobre el nuevo dispositivo RAID

mkfs.ext4 /dev/md10

Cree un punto de montaje para el sistema de archivos, agregue el nuevo sistema de archivos a /etc/fstab y móntelo:

Nota

Este ciclo se itera en un solo dispositivo en este ejemplo concreto y se ha creado de esta manera para usarse para varios dispositivos MD si fuera necesario.

for device in md10; do diskuuid="$(blkid -s UUID -o value /dev/${device})"; \
mkdir /raiddata; \
echo "UUID=${diskuuid} /raiddata ext4 defaults,nofail 0 0" >> /etc/fstab; \
mount -a; \
done

Verifique que el nuevo sistema de archivos se ha montado:

lsblk -fs
df -h

Captura de pantalla que muestra una ventana de consola con un sistema de archivos montado como raiddata.

Es importante asegurarse de que se agrega la opción nofail a las opciones de punto de montaje de los volúmenes RAID creados sobre un dispositivo cifrado mediante Azure Disk Encryption. Esto evita que el sistema operativo se bloquee durante el proceso de arranque (o en modo de mantenimiento).

Si no utiliza la opción nofail:

  • El sistema operativo nunca llegará a la fase en la que se inicia Azure Disk Encryption y los discos de datos se desbloquean y se montan.
  • Los discos cifrados se desbloquearán al final del proceso de arranque. Los volúmenes de RAID y los sistemas de archivos estarán montados automáticamente hasta que Azure Disk Encryption los desbloquee.

Puede probar reiniciar la VM y validar que los sistemas de archivos también se monten de forma automática después del tiempo de arranque. Este proceso puede tardar varios minutos, según el número y el tamaño de los sistemas de archivos.

shutdown -r now

Y cuando pueda iniciar sesión:

lsblk
df -h

Pasos siguientes