Partilhar via


Configurar o LVM e o RAID em dispositivos encriptados

Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível

Este artigo é um processo passo a passo sobre como executar LVM (Logical Volume Management) e RAID em dispositivos criptografados. O processo aplica-se aos seguintes ambientes:

  • Distribuições 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 criptografados (LVM-on-crypt)
  • Configurar RAID sobre dispositivos criptografados (RAID-on-crypt)

Depois que o dispositivo ou dispositivos subjacentes forem criptografados, você poderá criar as estruturas LVM ou RAID sobre essa camada criptografada.

Os volumes físicos (PVs) são criados sobre a camada criptografada. Os volumes físicos são usados para criar o grupo de volumes. Você cria os volumes e adiciona as entradas necessárias em /etc/fstab.

Diagrama das camadas de estruturas LVM

Da mesma forma, o dispositivo RAID é criado sobre a camada criptografada nos discos. Um sistema de arquivos é criado sobre o dispositivo RAID e adicionado ao /etc/fstab como um dispositivo normal.

Considerações

Recomendamos que você use LVM-on-crypt. RAID é uma opção quando o LVM não pode ser usado devido a limitações específicas de aplicativos ou ambientes.

Você usará a opção EncryptFormatAll . Para obter mais informações sobre essa opção, consulte Usar o recurso EncryptFormatAll para discos de dados em VMs Linux.

Embora você possa usar esse método quando também estiver criptografando o sistema operacional, estamos apenas criptografando unidades de dados aqui.

Os procedimentos pressupõem que você já revisou os pré-requisitos em cenários de Criptografia de Disco do Azure em VMs Linux e em Guia de início rápido: criar e criptografar uma VM Linux com a CLI do Azure.

A versão dual-pass do Azure Disk Encryption está em um caminho de substituição e não deve mais ser usada em novas criptografias.

Passos gerais

Quando estiver usando as configurações "on-crypt", use o processo descrito nos procedimentos a seguir.

Nota

Estamos usando variáveis ao longo do artigo. Substitua os valores de acordo.

Implementar uma VM

Os comandos a seguir são opcionais, mas recomendamos que você os aplique em uma máquina virtual (VM) recém-implantada.

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 comandos a seguir para $N o número de novos discos que você deseja 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 conectados à 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 serem criptografados

Essa configuração é feita no nível do sistema operacional. Os discos correspondentes são configurados para uma criptografia tradicional por meio do Azure Disk Encryption:

  • Os sistemas de arquivos são criados sobre os discos.
  • Pontos de montagem temporários são criados para montar os sistemas de arquivos.
  • Os sistemas de arquivos são configurados em /etc/fstab para serem montados no momento da inicialização.

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

lsblk

Discos de dados conectados ao sistema operacional

Crie um sistema de arquivos sobre cada disco

Este comando itera a criação de um sistema de arquivos 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 arquivos ext4

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

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 arquivos temporários montados

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

cat /etc/fstab

Informações de configuração via fstab

Criptografar os discos de dados

PowerShell usando uma chave de criptografia de chave (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 usando um 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 da encriptação

Continue para a próxima etapa somente quando todos os discos estiverem criptografados.

PowerShell:

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

Status da criptografia no PowerShell

CLI do Azure:

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

Status da criptografia na CLI do Azure

Portal:

Estado da encriptação no portal

Nível OS:

lsblk

Estado da encriptação no SO

A extensão 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.

Esse arquivo cuidará da ativação desses discos durante o processo de inicialização para que LVM ou RAID possam usá-los mais tarde.

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

Remova as pastas temporárias e as entradas fstab temporárias

Desmonte os sistemas de arquivos nos discos que serão usados 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 arquivos temporários estão desmontados

E verifique se os discos estão configurados:

cat /etc/fstab

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

Passos para LVM-on-crypt

Agora que os discos subjacentes estão criptografados, você pode criar as estruturas LVM.

Em vez de usar o nome do dispositivo, use os caminhos /dev/mapper para cada um dos discos para criar um volume físico (na camada de criptografia na parte superior do disco, não no próprio disco).

Configurar o LVM sobre as camadas criptografadas

Criar os volumes físicos

Você receberá um aviso perguntando se não há problema em apagar a assinatura do sistema de arquivos. Continue digitando y ou use o eco "y" como 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 um volume físico foi criado

Nota

Os nomes /dev/mapper/device aqui precisam ser substituídos para seus valores reais com base na saída do lsblk.

Verificar as informações para volumes físicos

pvs

Informações para volumes físicos

Criar o grupo de volumes

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

vgcreate vgdata /dev/mapper/

Verifique as informações para o 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

Verifique os volumes lógicos criados

lvdisplay
lvdisplay vgdata/lvdata1
lvdisplay vgdata/lvdata2

Informações para volumes lógicos

Crie sistemas de arquivos 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 arquivos

mkdir /data0
mkdir /data1

Adicione os novos sistemas de arquivos ao /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 arquivos estão montados

lsblk -fs
df -h

A captura de tela mostra uma janela de console com sistemas de arquivos montados como data0 e data1.

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

É importante certificar-se de que a opção nofail é adicionada às opções de ponto de montagem dos volumes LVM criados sobre um dispositivo encriptado através da Encriptação de Disco do Azure. Ele evita que o sistema operacional fique preso durante o processo de inicialização (ou no modo de manutenção).

Se você não usar a opção nofail :

  • O sistema operacional nunca entrará no estágio 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 arquivos serão montados automaticamente até que o Azure Disk Encryption os desbloqueie.

Você pode testar a reinicialização da VM e validar se os sistemas de arquivos também estão sendo montados automaticamente após o tempo de inicialização. Esse processo pode levar vários minutos, dependendo do número e dos tamanhos dos sistemas de arquivos.

Reinicialize a VM e verifique após a reinicialização

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 é o mesmo do LVM, mas em vez de usar o nome do dispositivo, use os caminhos /dev/mapper para cada disco.

Configurar RAID sobre a camada criptografada 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 precisam ser substituídos por seus valores reais, com base na saída do lsblk.

Verificar/monitorar a criação de RAID

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

Status do RAID

Crie um sistema de arquivos sobre o novo dispositivo RAID

mkfs.ext4 /dev/md10

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

Nota

Este ciclo itera apenas em um dispositivo para este exemplo específico, é construído desta forma para ser usado 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 arquivos está montado:

lsblk -fs
df -h

A captura de tela mostra uma janela do console com um sistema de arquivos montado como raiddata.

É importante certificar-se de que a opção nofail é adicionada às opções de ponto de montagem dos volumes RAID criados sobre um dispositivo criptografado por meio da Criptografia de Disco do Azure. Ele evita que o sistema operacional fique preso durante o processo de inicialização (ou no modo de manutenção).

Se você não usar a opção nofail :

  • O sistema operacional nunca entrará no estágio 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 arquivos serão montados automaticamente até que a Criptografia de Disco do Azure os desbloqueie.

Você pode testar a reinicialização da VM e validar se os sistemas de arquivos também estão sendo montados automaticamente após o tempo de inicialização. Esse processo pode levar vários minutos, dependendo do número e dos tamanhos dos sistemas de arquivos.

shutdown -r now

E quando pode iniciar sessão:

lsblk
df -h

Próximos passos