如何調整使用 Azure 磁碟加密的邏輯磁碟區管理裝置大小
適用於:✔️ Linux VM ✔️ 彈性擴展集
在本文中,您將了解如何調整使用 Azure 磁碟加密的資料磁碟大小。 若要調整磁碟大小,您將會在 Linux 上使用邏輯磁碟區管理 (LVM)。 這些步驟適用於多個案例。
您可以在下列環境中使用此調整大小程序:
- Linux 散發套件:
- Red Hat Enterprise Linux (RHEL) 7 或更新版本
- Ubuntu 18.04 或更新版本
- SUSE 12 或更新版本
- Azure 磁碟加密版本:
- 單一傳遞延伸模組
- 雙重傳遞延伸模組
必要條件
本文假設您已經:
現有 LVM 設定。 如需詳細資訊,請參閱在 Linux VM 上設定 LVM。
已由 Azure 磁碟加密所加密的磁碟。 如需詳細資訊,請參閱在加密裝置上設定 LVM 和 RAID。
使用 Linux 和 LVM 的體驗。
使用 Azure 上資料磁碟 /dev/disk/scsi1/ 路徑的體驗。 如需詳細資訊,請參閱針對 Linux VM 裝置名稱問題進行疑難排解。
案例
本文中的程序適用於下列案例:
- 傳統 LVM 和 LVM-on-crypt 設定
- 傳統 LVM 加密
- LVM-on-crypt
- 僅限數據磁碟。 不支援OS磁碟重設大小。
傳統 LVM 和 LVM-on-crypt 設定
磁碟區群組 (VG) 具有可用空間時,傳統 LVM 和 LVM-on-crypt 設定會擴充邏輯磁碟區 (LV)。
傳統 LVM 加密
在傳統 LVM 加密中,會加密 LV。 整個磁碟未予以加密。
使用傳統 LVM 加密,您可以:
- 在新增實體磁碟區 (PV) 時擴充 LV。
- 在調整現有 PV 的大小時擴充 LV。
LVM-on-crypt
建議的磁碟加密方法是 LVM-on-encrypt。 此方法會加密整個磁碟,而不只是 LV。
使用 LVM-on-crypt,您可以:
- 在新增 PV 時擴充 LV。
- 在調整現有 PV 的大小時擴充 LV。
注意
不建議在相同的 VM 上混合使用傳統 LVM 加密與 LVM-on-crypt。
下列各節提供如何使用 LVM 和 LVM-on-crypt 的範例。 這些範例使用磁碟、PV、VG、LV、檔案系統、通用唯一識別碼 (UUID) 和掛接點的現有值。 將這些值取代為您自己的值,以符合您的環境。
在 VG 有可用空間時擴充 LV
調整 LV 大小的傳統方式是在 VG 有可用空間時擴充 LV。 您可以將此方法用於非加密磁碟、傳統 LVM 加密磁碟區和 LVM on-crypt 設定。
確認您想要增加的檔案系統目前大小:
df -h /mountpoint
確認 VG 有足夠的空間可增加 LV:
sudo vgs
您也可以使用
vgdisplay
:sudo vgdisplay vgname
識別需要調整大小的 LV:
sudo lsblk
針對 LVM-on-crypt,差異在於此輸出顯示已加密層位於磁碟層級。
檢查 LV 大小:
sudo lvdisplay lvname
使用
-r
來線上調整檔案系統大小,以增加 LV 大小:sudo lvextend -r -L +2G /dev/vgname/lvname
確認 LV 和檔案系統的新大小:
df -h /mountpoint
大小輸出指出已成功調整 LV 和檔案系統的大小。
您可以再次檢查 LV 資訊,以確認 LV 層級的變更:
sudo lvdisplay lvname
新增 PV 來擴充傳統 LVM 磁碟區
當您需要新增磁碟以增加 VG 大小時,請新增 PV 來擴充傳統 LVM 磁碟區。
確認您想要增加的檔案系統目前大小:
df -h /mountpoint
確認目前 PV 設定:
sudo pvs
檢查目前 VG 資訊:
sudo vgs
檢查目前磁碟清單。 檢查 /dev/disk/azure/scsi1/ 中的裝置來識別資料磁碟。
sudo ls -l /dev/disk/azure/scsi1/
檢查
lsblk
的輸出:sudo lsbk
遵循將資料磁碟連結至 Linux VM 中的指示,將新磁碟連結至 VM。
檢查磁碟清單,並注意新磁碟。
sudo ls -l /dev/disk/azure/scsi1/
sudo lsblk
在新的資料磁碟上建立新的 PV:
sudo pvcreate /dev/newdisk
此方法會使用整個磁碟作為不含分割區的 PV。 或者,您可以使用
fdisk
來建立資料分割,然後針對pvcreate
使用該分割區。確認 PV 已新增至 PV 清單:
sudo pvs
將新的 PV 新增至 VG 以對其進行擴充:
sudo vgextend vgname /dev/newdisk
檢查新的 VG 大小:
sudo vgs
使用
lsblk
來識別需要調整大小的 LV:sudo lsblk
使用
-r
來線上增加檔案系統,以擴充 LV 大小:sudo lvextend -r -L +2G /dev/vgname/lvname
確認 LV 和檔案系統的新大小:
df -h /mountpoint
重要
在傳統 LVM 設定上使用 Azure 資料加密時,會於 LV 層級建立加密層,而不是磁碟層級。
此時,已加密層會擴充至新磁碟。 實際資料磁碟在平台層級沒有加密設定,因此不會更新其加密狀態。
以下是 LVM on-crypt 為建議方法的一些原因。
從入口網站檢查加密資訊:
若要更新磁碟上的加密設定,請新增 LV,並在 VM 上啟用此延伸模組。
新增 LV、在其上建立檔案系統,並將其新增至
/etc/fstab
。重新設定加密延伸模組。 這次您會在平台層級的新資料磁碟上戳記加密設定。 以下是 CLI 範例:
az vm encryption enable -g ${RGNAME} --name ${VMNAME} --disk-encryption-keyvault "<your-unique-keyvault-name>"
從入口網站檢查加密資訊:
更新加密設定之後,您可以刪除新的 LV。 同時從您建立的 /etc/fstab
和 /etc/crypttab
中刪除項目。
遵循下列步驟,以完成清除:
卸載 LV:
sudo umount /mountpoint
關閉磁碟區的已加密層:
sudo cryptsetup luksClose /dev/vgname/lvname
刪除 LV:
sudo lvremove /dev/vgname/lvname
調整現有 PV 的大小,以擴充傳統 LVM 磁碟區
在某些情況下,您的限制可能需要調整現有磁碟的大小。 方法如下:
識別已加密的磁碟:
sudo ls -l /dev/disk/azure/scsi1/
sudo lsblk -fs
檢查 PV 資訊:
sudo pvs
影像中的結果顯示目前使用所有 PV 上的所有空間。
檢查 VG 資訊:
sudo vgs sudo vgdisplay -v vgname
檢查磁碟大小。 您可以使用
fdisk
或lsblk
來列出磁碟機大小。for disk in `sudo ls -l /dev/disk/azure/scsi1/* | awk -F/ '{print $NF}'` ; do echo "sudo fdisk -l /dev/${disk} | grep ^Disk "; done | bash sudo lsblk -o "NAME,SIZE"
在這裡,我們已使用
lsblk -fs
來識別出哪些 PV 與哪些 LV 相關聯。 您可以執行lvdisplay
來識別關聯。sudo lvdisplay --maps VG/LV sudo lvdisplay --maps datavg/datalv1
在此情況下,這四個資料磁碟機都是相同 VG 和單一 LV 的一部分。 您的設定可能會不同。
檢查目前檔案系統使用率:
df -h /datalvm*
遵循展開 Azure 受控磁碟中的指示調整資料磁碟大小。 您可以使用入口網站、CLI 或 PowerShell。
重要
Linux VM 上的某些數據磁碟可以重設大小,而不需解除分配 VM,請檢查 [在 Linux VM 上展開虛擬硬碟](/azure/virtual-machines/linux/expand-disks?tabs=ubuntu#expand-an-azure-managed-disk),以確認您的磁碟符合需求。
啟動 VM,並使用
fdisk
來檢查新的大小。for disk in `sudo ls -l /dev/disk/azure/scsi1/* | awk -F/ '{print $NF}'` ; do echo "sudo fdisk -l /dev/${disk} | grep ^Disk "; done | bash sudo lsblk -o "NAME,SIZE"
在此情況下,
/dev/sdd
的大小已從 5 G 調整為 20 G。檢查目前 PV 大小:
sudo pvdisplay /dev/resizeddisk
即使已調整磁碟大小,PV 仍然具有先前的大小。
調整 PV 大小:
sudo pvresize /dev/resizeddisk
檢查 PV 大小:
sudo pvdisplay /dev/resizeddisk
針對您想要調整大小的所有磁碟,套用相同的程序。
檢查 VG 資訊。
sudo vgdisplay vgname
VG 現在有足夠的空間可配置給 LV。
調整 LV 大小:
sudo lvresize -r -L +5G vgname/lvname sudo lvresize -r -l +100%FREE /dev/datavg/datalv01
檢查檔案系統的大小:
df -h /datalvm2
新增 PV 以擴充 LVM-on-crypt 磁碟區
您也可以新增 PV 來擴充 LVM-on-crypt 磁碟區。 此方法會密切遵循在已加密裝置上設定 LVM 和 RAID 中的步驟。 請參閱說明如何新增磁碟以及在 LVM-on-crypt 設定中進行設定的各小節。
您可以使用此方法,將空間新增至現有 LV。 或者,您可以建立新的 VG 或 LV。
確認 VG 的目前大小:
sudo vgdisplay vgname
確認您想要擴充的檔案系統和 LV 大小:
sudo lvdisplay /dev/vgname/lvname
df -h mountpoint
將新的資料磁碟新增至 VM 並加以識別。
新增磁碟之前,請檢查磁碟:
sudo fdisk -l | egrep ^"Disk /"
以下是新增磁碟之前檢查磁碟的另一種方式:
sudo lsblk
若要新增磁碟,您可以使用 PowerShell、Azure CLI 或 Azure 入口網站。 如需詳細資訊,請參閱將資料磁碟連結至 Linux VM。
核心名稱配置適用於剛新增的裝置。 新的磁碟機通常會獲指派下一個可用的字母。 在此情況下,已新增的磁碟為
sdd
。檢查磁碟,以確定已新增磁碟:
sudo fdisk -l | egrep ^"Disk /"
sudo lsblk
在最近新增的磁碟上建立檔案系統。 將磁碟與
/dev/disk/azure/scsi1/
上的已連結裝置進行比對。sudo ls -la /dev/disk/azure/scsi1/
sudo mkfs.ext4 /dev/disk/azure/scsi1/${disk}
為已新增的磁碟建立暫存掛接點:
newmount=/data4 sudo mkdir ${newmount}
將最近建立的檔案系統新增至
/etc/fstab
。sudo blkid /dev/disk/azure/scsi1/lun4| awk -F\" '{print "UUID="$2" '${newmount}' "$4" defaults,nofail 0 0"}' >> /etc/fstab
掛接新建立的檔案系統:
sudo mount -a
確認已掛接新的檔案系統:
df -h
sudo lsblk
重新啟動您先前針對資料磁碟機所啟動的加密。
以下是範例:
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
加密完成時,您會在剛新增的磁碟上看到一個加密層:
sudo lsblk
卸載新磁碟的已加密層:
sudo umount ${newmount}
檢查目前 PV 資訊:
sudo pvs
在磁碟的已加密層上建立 PV。 從上一個
lsblk
命令中取得裝置名稱。 在裝置名稱前面新增/dev/
對應程式以建立 PV:sudo pvcreate /dev/mapper/mapperdevicename
您會看到有關抹除目前
ext4 fs
簽章的警告。 這是預期的警告。 使用y
回答此問題。確認已將新的 PV 新增至 LVM 設定:
sudo pvs
將新的 PV 新增至您需要增加的 VG。
sudo vgextend vgname /dev/mapper/nameofhenewpv
確認 VG 的新大小和可用空間:
sudo vgdisplay vgname
請注意
Total PE
計數和Free PE / Size
的增加。增加 LV 和檔案系統的大小。 在
lvextend
上,使用-r
選項。 在此範例中,我們會將 VG 中的可用空間總計新增至指定的 LV。sudo lvextend -r -l +100%FREE /dev/vgname/lvname
請遵循後續步驟來確認您的變更。
確認 LV 的大小:
sudo lvdisplay /dev/vgname/lvname
確認檔案系統的新大小:
df -h /mountpoint
確認 LVM 層位於已加密層上方:
sudo lsblk
如果您使用未含選項的
lsblk
,則會看到掛接點多次。 此命令會依裝置和 LV 進行排序。建議您使用
lsblk -fs
。 在此命令中,-fs
會反轉排序順序,只讓掛接點顯示一次。 磁碟會顯示多次。sudo lsblk -fs
調整現有 PV 的大小,以在加密磁碟區上擴充 LVM
識別已加密的磁碟:
sudo lsblk
sudo lsblk -s
檢查 PV 資訊:
sudo pvs
檢查 VG 資訊:
sudo vgs
檢查 LV 資訊:
sudo lvs
檢查檔案系統使用率:
df -h /mountpoint(s)
檢查磁碟的大小:
sudo fdisk sudo fdisk -l | egrep ^"Disk /" sudo lsblk
調整資料磁碟大小。 您可以使用入口網站、CLI 或 PowerShell。 如需詳細資訊,請參閱在 Linux VM 上擴充虛擬硬碟中的調整磁碟大小一節。
重要
VM 正在執行時,您無法調整虛擬磁碟大小。 針對此步驟,解除配置 VM。
檢查磁碟大小:
sudo fdisk sudo fdisk -l | egrep ^"Disk /" sudo lsblk
在此情況下,這兩個磁碟的大小都會從 2 GB 調整為 4 GB。 但是,檔案系統、LV 和 PV 的大小維持不變。
檢查目前 PV 大小。 請記住,在 LVM-on-crypt 上,PV 是
/dev/mapper/
裝置,而不是/dev/sd*
裝置。sudo pvdisplay /dev/mapper/devicemappername
調整 PV 大小:
sudo pvresize /dev/mapper/devicemappername
檢查新的 PV 大小:
sudo pvdisplay /dev/mapper/devicemappername
調整 PV 上的已加密層大小:
sudo cryptsetup resize /dev/mapper/devicemappername
針對您想要調整大小的所有磁碟,套用相同的程序。
檢查 VG 資訊:
sudo vgdisplay vgname
VG 現在有足夠的空間可配置給 LV。
檢查 LV 資訊:
sudo lvdisplay vgname/lvname
檢查檔案系統使用率:
df -h /mountpoint
調整 LV 大小:
sudo lvresize -r -L +2G /dev/vgname/lvname
在這裡,我們使用
-r
選項同時調整檔案系統的大小。檢查 LV 資訊:
sudo lvdisplay vgname/lvname
檢查檔案系統使用率:
df -h /mountpoint
將相同的調整大小程序套用至任何其他需要該程序的 LV。