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.
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
CLI do Azure:
az vm show -g ${RGNAME} -n ${VMNAME} --query storageProfile.dataDisks -o table
Portal:
SO:
lsblk
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
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
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
Verifique também se os discos estão configurados:
cat /etc/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}
CLI do Azure:
az vm encryption show -n ${VMNAME} -g ${RGNAME} -o table
Portal:
Nível do SO:
lsblk
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
Verifique também se os discos estão configurados:
cat /etc/fstab
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
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
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
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
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
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
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
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
É 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