Share via


Configurar o LVM e o RAID em dispositivos encriptados

Aplica-se a: ✔️ Conjuntos de dimensionamento flexíveis de VMs ✔️ do Linux

Este artigo é um processo passo a passo para saber como executar a Gestão de Volumes Lógicos (LVM) e o RAID em dispositivos encriptados. O processo aplica-se aos seguintes ambientes:

  • Distribuições do Linux
    • RHEL 7.6+
    • Ubuntu 18.04+
    • SUSE 12+
  • Extensão de passagem única do Azure Disk Encryption
  • Extensão de passagem dupla do Azure Disk Encryption

Cenários

Os procedimentos neste artigo suportam os seguintes cenários:

  • Configurar o LVM sobre dispositivos encriptados (LVM-on-crypt)
  • Configurar o RAID em cima de dispositivos encriptados (RAID-on-crypt)

Depois de encriptar o dispositivo ou dispositivos subjacentes, pode criar as estruturas LVM ou RAID sobre essa camada encriptada.

Os volumes físicos (PVs) são criados sobre a camada encriptada. Os volumes físicos são utilizados para criar o grupo de volumes. Crie os volumes e adicione as entradas necessárias em /etc/fstab.

Diagrama das camadas das estruturas LVM

Da mesma forma, o dispositivo RAID é criado sobre a camada encriptada nos discos. É criado um sistema de ficheiros sobre o dispositivo RAID e adicionado a /etc/fstab como um dispositivo normal.

Considerações

Recomendamos que utilize LVM-on-crypt. RAID é uma opção quando o LVM não pode ser utilizado devido a limitações específicas da aplicação ou do ambiente.

Irá utilizar a opção EncryptFormatAll . Para obter mais informações sobre esta opção, veja Utilizar a funcionalidade EncryptFormatAll para discos de dados em VMs do Linux.

Embora possa utilizar este método quando também está a encriptar o SO, estamos apenas a encriptar unidades de dados aqui.

Os procedimentos partem do princípio de que já reviu os pré-requisitos nos cenários do Azure Disk Encryption em VMs do Linux e no Início Rápido: Criar e encriptar uma VM do Linux com a CLI do Azure.

A versão dual-pass do Azure Disk Encryption está num caminho de preterição e já não deve ser utilizada em novas encriptações.

Passos gerais

Quando estiver a utilizar as configurações "na cripta", utilize o processo descrito nos seguintes procedimentos.

Nota

Estamos a utilizar variáveis ao longo do artigo. Substitua os valores em conformidade.

Implementar uma VM

Os seguintes comandos são opcionais, mas recomendamos que os aplique numa máquina virtual (VM) recentemente implementada.

PowerShell:

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

CLI do Azure:

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

Anexar discos à VM

Repita os seguintes comandos para $N o número de discos novos que pretende anexar à 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 do Azure:

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

Verifique se os discos estão anexados à VM

PowerShell:

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

Lista de discos anexados no PowerShell

CLI do Azure:

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

Lista de discos anexados na CLI do Azure

Portal:

Lista de discos anexados no portal

SO:

lsblk

Lista de discos anexados no SO

Configurar os discos a encriptar

Esta configuração é efetuada ao nível do sistema operativo. Os discos correspondentes estão configurados para uma encriptação tradicional através do Azure Disk Encryption:

  • Os sistemas de ficheiros são criados por cima dos discos.
  • Os pontos de montagem temporários são criados para montar os sistemas de ficheiros.
  • Os sistemas de ficheiros são configurados em /etc/fstab para serem montados no momento do arranque.

Verifique a letra do dispositivo atribuída aos novos discos. Neste exemplo, estamos a utilizar quatro discos de dados.

lsblk

Discos de dados anexados ao SO

Criar um sistema de ficheiros sobre cada disco

Este comando itera a criação de um sistema de ficheiros ext4 em cada disco definido na parte "in" do ciclo "for".

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

Criação de um sistema de ficheiros ext4

Localize o identificador universalmente exclusivo (UUID) dos sistemas de ficheiros que criou recentemente, crie uma pasta temporária, adicione as entradas correspondentes em /etc/fstab e monte todos os sistemas de ficheiros.

Este comando também itera em cada disco definido na parte "in" do 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

Verifique se os discos estão montados corretamente

lsblk

Lista de sistemas de ficheiros temporários montados

Verifique também se os discos estão configurados:

cat /etc/fstab

Informações de configuração através de fstab

Encriptar os discos de dados

PowerShell com uma chave de encriptação de chaves (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 do Azure com uma 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

Verificar o estado de encriptação

Continue para o passo seguinte apenas quando todos os discos estiverem encriptados.

PowerShell:

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

Estado de encriptação no PowerShell

CLI do Azure:

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

Estado de encriptação na CLI do Azure

Portal:

Estado de encriptação no portal

Nível do SO:

lsblk

Estado de encriptação no SO

A extensão irá adicionar os sistemas de ficheiros a /var/lib/azure_disk_encryption_config/azure_crypt_mount (uma encriptação antiga) ou a /etc/crypttab (novas encriptações).

Nota

Não modifique nenhum destes ficheiros.

Este ficheiro tratará da ativação destes discos durante o processo de arranque para que o LVM ou o RAID os possam utilizar mais tarde.

Não se preocupe com os pontos de montagem neste ficheiro. O Azure Disk Encryption perderá a capacidade de montar os discos como um sistema de ficheiros normal depois de criarmos um volume físico ou um dispositivo RAID sobre esses dispositivos encriptados. (Esta ação removerá o formato do sistema de ficheiros que utilizámos durante o processo de preparação.)

Remover as pastas temporárias e as entradas de fstab temporárias

Desmonta os sistemas de ficheiros nos discos que serão utilizados como parte do LVM.

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

E remova as entradas /etc/fstab:

vi /etc/fstab

Verifique se os discos não estão montados e se as entradas em /etc/fstab foram removidas

lsblk

Verificação de que os sistemas de ficheiros temporários estão desmontados

Verifique também se os discos estão configurados:

cat /etc/fstab

Verificação de que as entradas de fstab temporárias são removidas

Passos para LVM-on-crypt

Agora que os discos subjacentes estão encriptados, pode criar as estruturas LVM.

Em vez de utilizar o nome do dispositivo, utilize os caminhos /dev/mapper para cada um dos discos para criar um volume físico (na camada cripta por cima do disco e não no próprio disco).

Configurar o LVM na parte superior das camadas encriptadas

Criar os volumes físicos

Receberá um aviso a perguntar se não há problema em eliminar a assinatura do sistema de ficheiros. Continue ao introduzir y ou utilize o eco "y", conforme mostrado:

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

Verificação de que foi criado um volume físico

Nota

Os nomes /dev/mapper/device aqui têm de ser substituídos pelos seus valores reais com base na saída de lsblk.

Verificar as informações dos volumes físicos

pvs

Informações para volumes físicos

Criar o grupo de volumes

Crie o grupo de volumes com os mesmos dispositivos já inicializados:

vgcreate vgdata /dev/mapper/

Verificar as informações do grupo de volumes

vgdisplay -v vgdata
pvs

Informações para o grupo de volumes

Criar volumes lógicos

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

Verificar os volumes lógicos criados

lvdisplay
lvdisplay vgdata/lvdata1
lvdisplay vgdata/lvdata2

Informações para volumes lógicos

Criar sistemas de ficheiros sobre as estruturas para volumes lógicos

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

Criar os pontos de montagem para os novos sistemas de ficheiros

mkdir /data0
mkdir /data1

Adicione os novos sistemas de ficheiros a /etc/fstab e monte-os

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

Verifique se os novos sistemas de ficheiros estão montados

lsblk -fs
df -h

Captura de ecrã a mostrar uma janela da consola com sistemas de ficheiros montados como dados0 e dados1.

Nesta variação de lsblk, estamos a listar os dispositivos que mostram as dependências por ordem inversa. Esta opção ajuda a identificar os dispositivos agrupados pelo volume lógico em vez dos nomes originais do dispositivo /dev/sd[disco].

É importante garantir que a opção nofail é adicionada às opções de ponto de montagem dos volumes LVM criados em cima de um dispositivo encriptado através do Azure Disk Encryption. Impede que o SO fique bloqueado durante o processo de arranque (ou no modo de manutenção).

Se não utilizar a opção nofail :

  • O SO nunca entrará na fase em que o Azure Disk Encryption é iniciado e os discos de dados são desbloqueados e montados.
  • Os discos encriptados serão desbloqueados no final do processo de arranque. Os volumes LVM e os sistemas de ficheiros serão montados automaticamente até que o Azure Disk Encryption os desbloqueie.

Pode testar o reinício da VM e validar que os sistemas de ficheiros também estão a ser montados automaticamente após a hora de arranque. Este processo pode demorar vários minutos, consoante o número e os tamanhos dos sistemas de ficheiros.

Reiniciar a VM e verificar após o reinício

shutdown -r now
lsblk
df -h

Passos para RAID-on-crypt

Agora que os discos subjacentes estão encriptados, pode continuar a criar as estruturas RAID. O processo é igual ao do LVM, mas em vez de utilizar o nome do dispositivo, utilize os caminhos /dev/mapper para cada disco.

Configurar o RAID na parte superior da camada encriptada dos 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

Informações para RAID configurado através do comando mdadm

Nota

Os nomes /dev/mapper/device aqui têm de ser substituídos pelos seus valores reais, com base na saída de lsblk.

Verificar/monitorizar a criação do RAID

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

Estado do RAID

Criar um sistema de ficheiros sobre o novo dispositivo RAID

mkfs.ext4 /dev/md10

Crie um novo ponto de montagem para o sistema de ficheiros, adicione o novo sistema de ficheiros a /etc/fstab e monte-o:

Nota

Este ciclo itera apenas num dispositivo para este exemplo específico, sendo criado desta forma para ser utilizado para vários dispositivos md, se necessário.

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 se o novo sistema de ficheiros está montado:

lsblk -fs
df -h

Captura de ecrã a mostrar uma janela da consola com um sistema de ficheiros montado como raiddata.

É importante garantir que a opção nofail é adicionada às opções de ponto de montagem dos volumes RAID criados em cima de um dispositivo encriptado através do Azure Disk Encryption. Impede que o SO fique bloqueado durante o processo de arranque (ou no modo de manutenção).

Se não utilizar a opção nofail :

  • O SO nunca entrará na fase em que o Azure Disk Encryption é iniciado e os discos de dados são desbloqueados e montados.
  • Os discos encriptados serão desbloqueados no final do processo de arranque. Os volumes RAID e os sistemas de ficheiros serão montados automaticamente até que o Azure Disk Encryption os desbloqueie.

Pode testar o reinício da VM e validar que os sistemas de ficheiros também estão a ser montados automaticamente após a hora de arranque. Este processo pode demorar vários minutos, consoante o número e os tamanhos dos sistemas de ficheiros.

shutdown -r now

E quando pode iniciar sessão:

lsblk
df -h

Passos seguintes