共用方式為


在加密裝置上設定 LVM 和 RAID

這很重要

Azure 磁碟加密預定於 2028 年 9 月 15 日退休。 在此之前,您可以繼續使用 Azure 磁碟加密,不會中斷。 2028 年 9 月 15 日,啟用 ADE 的工作負載仍可繼續運行,但加密磁碟在虛擬機重啟後將無法解鎖,導致服務中斷。

為新的虛擬機器使用主機端加密。 所有啟用 ADE 的虛擬機(包括備份)必須在退休日前遷移至主機加密,以避免服務中斷。 詳情請參見「 從 Azure 磁碟加密遷移到主機加密 」。

適用於:✔️ Linux VM ✔️ 彈性擴展集

本文是加密裝置上執行邏輯卷管理(LVM)和 RAID 的逐步過程。 此程序適用於下列環境:

  • Linux 發行版
    • RHEL 7.6+
    • Ubuntu 18.04+
    • 蘇斯 12+
  • Azure 磁碟加密單一傳遞延伸模組
  • Azure 磁碟加密雙通道延伸模組

Scenarios

本文中的程式支援下列案例:

  • 在加密裝置之上設定 LVM (LVM-on-crypt)
  • 在加密裝置之上設定 RAID (RAID-on-crypt)

加密基礎裝置或裝置之後,您可以在該加密層之上建立 LVM 或 RAID 結構。

實體磁碟區 (PV) 會在加密層上建立。 實體磁碟區可用來建立磁碟區群組。 您建立磁碟區,並在 /etc/fstab 中新增必要的項目。

LVM 結構層圖

以類似的方式,RAID 裝置是在磁碟上的加密層之上建立的。 檔案系統會在 RAID 裝置之上建立,並作為一般裝置新增至 /etc/fstab。

考慮事項

我們建議您使用 LVM-on-crypt。 當 LVM 因特定應用程式或環境限制而無法使用時,RAID 是一個選項。

您將使用 EncryptFormatAll 選項。 如需此選項的詳細資訊,請參閱 針對 Linux VM 上的資料磁碟使用 EncryptFormatAll 功能

雖然您也可以在加密作業系統時使用此方法,但我們在這裡只是加密資料磁碟機。

這些程序假設您已檢閱 Linux VM 上的 Azure 磁碟加密案例快速入門:使用 Azure CLI 建立和加密 Linux VM 中的必要條件。

Azure 磁碟加密雙重傳遞版本位於淘汰路徑上,不應再用於新的加密。

一般步驟

當您使用「開啟加密」組態時,請使用下列程序中概述的步驟。

備註

我們在整篇文章中使用了變數。 相應地替換值。

部署 VM

下列命令是選擇性的,但建議您在新部署的虛擬機器 (VM) 上套用它們。

PowerShell:

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

Azure CLI:

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

將磁碟連接至 VM

針對您想要連結至 VM 的新磁碟數目 $N,重複下列命令。

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}

Azure CLI:

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

確認磁碟已連結至 VM

PowerShell:

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

PowerShell 中連結的磁碟清單

Azure CLI:

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

Azure CLI 中連結的磁碟清單

入口:

入口網站中連結的磁碟清單

作業系統:

lsblk

OS 中連結的磁碟清單

設定要加密的磁碟

此設定是在作業系統層級完成。 對應的磁碟會透過 Azure 磁碟加密設定為傳統加密:

  • 檔案系統是在磁碟之上建立的。
  • 建立暫存掛載點來掛載檔案系統。
  • 檔案系統在 /etc/fstab 上配置為在開機時掛載。

檢查指派給新磁碟的裝置代號。 在此範例中,我們使用四個資料磁碟。

lsblk

連結至作業系統的資料磁碟

在每個磁碟上建立檔案系統

此命令在“for”迴圈的“in”部分所定義的每個磁碟上迭代地建立一個ext4檔案系統。

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

建立 ext4 檔案系統

尋找您最近建立之檔案系統的通用唯一識別碼 (UUID)、建立暫存資料夾、在 /etc/fstab 上新增對應的項目,然後掛載所有檔案系統。

此命令也會在「for」循環中的「in」部分定義的每個磁碟上重複執行:

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

確認磁碟已正確掛載

lsblk

掛載的暫存檔案系統清單

此外,請確認磁碟已設定:

cat /etc/fstab

透過 fstab 的設定資訊

加密資料磁碟

使用金鑰加密金鑰 (KEK) 的 PowerShell:

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

使用 KEK 的 Azure CLI:

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

驗證加密狀態

只有在所有磁碟都加密時,才繼續執行下一個步驟。

PowerShell:

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

PowerShell 中的加密狀態

Azure CLI:

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

Azure CLI 中的加密狀態

入口:

入口網站中的加密狀態

作業系統層級:

lsblk

作業系統中的加密狀態

擴充功能會將檔案系統新增至 /var/lib/azure_disk_encryption_config/azure_crypt_mount (舊加密) 或 /etc/crypttab (新加密)。

備註

請勿修改任何這些檔案。

此檔案將負責在啟動過程中啟動這些磁碟,以便 LVM 或 RAID 稍後可以使用它們。

不用擔心這個檔案的掛載點。 在我們在這些加密裝置上建立實體磁碟區或 RAID 裝置之後,Azure 磁碟加密將失去將磁碟掛接為一般檔案系統的能力。 (這將刪除我們在準備過程中使用的檔案系統格式。

刪除臨時文件夾和臨時 fstab 條目

您可以在將作為 LVM 一部分使用的磁碟上卸載檔案系統。

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

並刪除 /etc/fstab 條目:

vi /etc/fstab

確認磁碟未掛載,且已移除 /etc/fstab 上的項目

lsblk

驗證暫存檔案系統是否已卸載

並確認磁碟已設定:

cat /etc/fstab

驗證是否已移除暫時 fstab 項目

LVM-on-crypt 的步驟

現在基礎磁碟已加密,您可以建立 LVM 結構。

不要使用裝置名稱,而是使用每個磁碟的 /dev/mapper 路徑來建立實體磁碟區 (在磁碟頂端的加密層上,而不是在磁碟本身上)。

在加密層之上設定 LVM

建立實體磁碟區

您會收到警告,詢問是否可以清除檔案系統簽章。 輸入 y 繼續,或使用 迴聲 “y”, 如下所示:

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

驗證實體磁區已建立

備註

此處的 /dev/mapper/裝置名稱必須根據 lsblk 的輸出取代為實際值。

確認實體磁碟區的資訊

pvs

實體磁碟區的資訊

建立磁碟區群組

使用已初始化的相同裝置建立磁碟區群組:

vgcreate vgdata /dev/mapper/

檢查磁碟區群組的資訊

vgdisplay -v vgdata
pvs

磁區群組的資訊

建立邏輯磁碟區

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

檢查已建立的邏輯磁碟區

lvdisplay
lvdisplay vgdata/lvdata1
lvdisplay vgdata/lvdata2

邏輯磁碟區的資訊

在邏輯磁區的結構之上建立檔案系統

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

建立新檔案系統的掛載點

mkdir /data0
mkdir /data1

將新檔案系統新增至 /etc/fstab 並掛載它們

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

確認已掛載新的檔案系統

lsblk -fs
df -h

螢幕擷取畫面顯示主控台視窗,其中檔案系統掛載為 data0 和 data1。

lsblk 的這種變體中,我們列出了以相反順序顯示依賴關係的設備。 此選項有助於識別依邏輯磁區分組的裝置,而不是原始的 /dev/sd[disk] 裝置名稱。

請務必確定 nofail 選項已新增至 LVM 磁碟區 (建立在透過 Azure 磁碟加密所加密的裝置上方) 的掛接點選項。 它可以防止操作系統在啟動過程(或維護模式)期間卡住。

如果您未使用 nofail 選項:

  • OS 永遠不會進入啟動 Azure 磁碟加密,以及解除鎖定和掛接資料磁碟的階段。
  • 加密磁碟將在啟動過程結束時解鎖。 LVM 磁碟區和檔案系統會自動掛接,直到 Azure 磁碟加密解除鎖定為止。

您可以測試重新啟動 VM,並驗證檔案系統是否在開機時間後自動掛載。 此程序可能需要幾分鐘的時間,視檔案系統的數目和大小而定。

重新啟動虛擬機器並在重新啟動後進行驗證

shutdown -r now
lsblk
df -h

RAID-on-crypt 的步驟

現在基礎磁碟已加密,您可以繼續建立 RAID 結構。 此程序與 LVM 的程序相同,但不要使用裝置名稱,而是使用每個磁碟的 /dev/mapper 路徑。

在磁碟的加密層上設定RAID

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

透過 mdadm 指令配置 RAID 的資訊

備註

此處的 /dev/mapper/裝置名稱必須根據 lsblk 的輸出取代為實際值。

檢查/監控 RAID 建立

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

RAID 狀態

在新的 RAID 裝置上建立檔案系統

mkfs.ext4 /dev/md10

為檔案系統建立新的掛載點,將新檔案系統新增至 /etc/fstab,然後掛載:

備註

此循環僅在此特定示例的一個設備上迭代,以這種方式構建以在需要時用於多個 md 設備。

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

確認已掛載新的檔案系統:

lsblk -fs
df -h

螢幕截圖顯示了一個控制台窗口,其中包含作為 raiddata 掛載的檔案系統。

請務必確定已將 nofail 選項新增至透過 Azure 磁碟加密在裝置上建立的 RAID 磁碟區的掛載點選項。 它可以防止操作系統在啟動過程(或維護模式)期間卡住。

如果您未使用 nofail 選項:

  • OS 永遠不會進入啟動 Azure 磁碟加密,以及解除鎖定和掛接資料磁碟的階段。
  • 加密磁碟將在啟動過程結束時解鎖。 RAID 磁碟區和檔案系統會自動掛接,直到 Azure 磁碟加密解除鎖定為止。

您可以測試重新啟動 VM,並驗證檔案系統是否在開機時間後自動掛載。 此程序可能需要幾分鐘的時間,視檔案系統的數目和大小而定。

shutdown -r now

當您可以登入時:

lsblk
df -h

後續步驟