教學課程 - 使用 Azure CLI 管理 Azure 磁碟

適用於:✔️ Linux 虛擬機 ✔️ 彈性規模設定

Azure 虛擬機器 (VM) 會使用磁碟來儲存作系統、應用程式和數據。 當您建立 VM 時,請務必選擇適合預期工作負載的磁碟大小和組態。 本教學課程說明如何部署和管理 VM 磁碟。 您瞭解:

  • OS 磁碟和暫存磁碟
  • 數據磁碟
  • 磁碟類型與效能選項
  • 磁碟效能
  • 連結及準備資料磁碟
  • 磁碟快照

預設 Azure 磁碟

建立 Azure 虛擬機時,會自動將兩個磁碟連結至虛擬機。

作業系統磁碟 - 作業系統(OS)磁碟承載 VM 作業系統,容量可達 4,095 Gibibytes(GiB),但許多作業系統預設以 主開機記錄(MBR) 分割。 MBR 將可用大小限制為 2 TiB。 如果需要超過 2 TiB,請建立和連結資料磁碟,並作為資料儲存體。 裝置名稱會依虛擬機世代和磁碟控制器類型而異,所以不要依賴固定路徑,例如 /dev/sda。 作業系統磁碟快取是針對作業系統效能優化的,所以不要把應用程式資料儲存在作業系統磁碟上。 使用資料磁碟作為應用程式和資料儲存。

暫存磁碟 - 暫存儲存使用與虛擬機相同的Azure主機上的本地儲存。 根據虛擬機的大小與世代,此儲存裝置可能呈現為暫存磁碟或本地 NVMe 磁碟。 它效能高,但不持久。 如果虛擬機被移到新主機,暫時儲存上的資料會被移除。 可用的容量取決於虛擬機的大小。

數據磁碟

若要安裝應用程式和儲存數據,可以新增其他數據磁碟。 資料磁碟應使用於任何需要持久且有回應之資料儲存體的情況。 虛擬機的大小會決定可以連結至 VM 的數據磁碟數目。

VM 磁碟類型

Azure 管理磁碟提供五種磁碟類型:

一般來說,生產負載使用高級 SSD v2 或高級 SSD,開發/測試及效能敏感度較低的工作負載使用標準 SSD,IO 密集型資料負載則使用超強硬碟。 Ultra Disks 和 Premium SSD v2 是僅支援資料磁碟的選項,不能當作作業系統磁碟使用。 關於詳細限制、區域可用性及尺寸調整指引,請參見Azure管理磁碟類型。

啟動 Azure Cloud Shell

Azure Cloud Shell 是免費的互動式 Shell,可讓您用來執行本文中的步驟。 它具有預先安裝和設定的共用 Azure 工具,可與您的帳戶搭配使用。

要開啟Cloud Shell,請從程式碼區塊右上角選擇 Try it。 你也可以在https://shell.azure.com的另一個瀏覽器分頁啟動Cloud Shell。 選擇 Copy 來複製程式碼區塊,貼上到 Cloud Shell,然後按下 Enter 執行。

建立和連結磁碟

數據磁碟可以在 VM 建立期間建立和連結至現有的 VM。

在建立 VM 時連結磁碟

使用 az group create 命令來建立資源群組。

az group create --name myResourceGroupDisk --location eastus

使用 az vm create 指令建立虛擬機。 以下範例建立一個名為 myVM 的虛擬機,新增一個名為 azureuser 的使用者帳號,並產生 SSH 金鑰(如果還不存在的話)。 該 --data-disk-sizes-gb 參數指定了額外的資料磁碟來建立並附加。 若要建立並附加多個磁碟,請使用有空間分隔的磁碟大小清單。 以下範例中,你建立一個包含兩顆資料磁碟的虛擬機,兩者皆為 128 GiB。 因為硬碟容量是 128 GiB,所以你把它們都設定成 P10 硬碟,每顆硬碟最多可提供 500 IOPS。

az vm create \
  --resource-group myResourceGroupDisk \
  --name myVM \
  --image Ubuntu2204 \
  --size Standard_DS2_v2 \
  --admin-username azureuser \
  --generate-ssh-keys \
  --data-disk-sizes-gb 128 128

將磁碟連結至現有的 VM

若要建立新的磁碟並將其連結至現有的虛擬機,請使用 az vm disk attach 命令。 以下範例建立一個 128 GiB 的高級磁碟,並將其附加到最後一步建立的虛擬機上。

az vm disk attach \
    --resource-group myResourceGroupDisk \
    --vm-name myVM \
    --name myDataDisk \
    --size-gb 128 \
    --sku Premium_LRS \
    --new

在 Linux 中準備資料磁碟

當你將磁碟連接到虛擬機器後,設定作業系統使用該磁碟。 以下範例是手動設定建立虛擬機時連接的第一個 128 GiB 資料磁碟。 虛擬機的磁碟控制器決定 Linux 如何公開磁碟。 你也可以用 cloud-init 自動化這個流程,這部分會在 後面的教學中介紹。

使用虛擬機建立 SSH 連線。 將範例IP位址取代為虛擬機的公用IP。

ssh azureuser@10.101.10.10

格式化前請確認你找到正確的資料磁碟。 格式化錯誤磁碟會導致資料遺失。

在有 SCSI 控制器的虛擬機上,用來 lsblk 識別資料磁碟。 以下範例使用 /dev/sdc。 請替換 sdc 成你資料磁碟的裝置名稱。

lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"

將磁碟分割為 parted,然後用 partprobe 讓作業系統知道新的分割表。

sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
sudo partprobe /dev/sdc

使用 mkfs 命令將檔案系統寫入資料分割區。

sudo mkfs.xfs /dev/sdc1

掛接新的磁碟,使其可在作系統中存取。

sudo mkdir /datadrive && sudo mount /dev/sdc1 /datadrive

磁碟現在可以透過 /datadrive 裝入點來存取,您可以藉由執行 df -h 命令來驗證。

df -h | grep -i "sd"

輸出結果顯示新的磁碟驅動器已掛接在/datadrive上。

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        29G  2.0G   27G   7% /
/dev/sda15      105M  3.6M  101M   4% /boot/efi
/dev/sdb1        14G   41M   13G   1% /mnt
/dev/sdc1       128G   52M  128G   1% /datadrive

若要確保磁碟驅動器在重新啟動后重新掛接,必須將磁碟驅動器新增至 /etc/fstab 檔案。 若要這樣做,請使用 blkid 公用程式取得磁碟的 UUID。

sudo -i blkid

輸出端會顯示硬碟的 UUID。 在帶有 SCSI 控制器的虛擬機上,分割區可能顯示為 /dev/sdc1。 在帶有 NVMe 控制器的虛擬機上,可能會顯示為 /dev/nvme0n2p1。

/dev/sdc1: UUID="33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e" TYPE="xfs"

備註

不當編輯 /etc/fstab 檔案會導致系統無法開機。 如果不確定,請參閱散發套件的文件,以取得如何適當編輯此檔案的相關資訊。 在編輯之前,也建議先備份 /etc/fstab 檔案。

/etc/fstab在文本編輯器中開啟檔案,如下所示:

sudo nano /etc/fstab

將類似下列這一行新增至 /etc/fstab 檔案,並將 UUID 值取代為您自己的值。

UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive  xfs    defaults,nofail   1  2

當您完成編輯檔案時,請使用 Ctrl+O 來寫入檔案並 Ctrl+X 結束編輯器。

現在磁碟已設定完成,請關閉 SSH 連線。

exit

擷取磁碟快照

當你擷取磁碟快照時,Azure 會建立一個唯讀、即時點的磁碟副本。 在進行設定變更之前,Azure VM 快照集有助於快速儲存 VM 的狀態。 若發生問題或錯誤,您可以透過快照還原虛擬機。 當虛擬機擁有多個磁碟時,會獨立對每個磁碟進行快照。 為了進行應用程式一致的備份,建議在進行磁碟快照前先停止虛擬機。 或者,可以使用 Azure 備份,它支援虛擬機運行時的自動備份。

建立快照

建立快照集之前,您需要磁碟的標識碼或名稱。 使用 az vm show 來顯示磁碟標識碼。 在此範例中,磁碟標識符會儲存在變數中,以便在稍後的步驟中使用。

osdiskid=$(az vm show \
   -g myResourceGroupDisk \
   -n myVM \
   --query "storageProfile.osDisk.managedDisk.id" \
   -o tsv)

現在您已擁有標識符,請使用 az snapshot create 來建立磁碟的快照集。

az snapshot create \
    --resource-group myResourceGroupDisk \
    --source "$osdiskid" \
    --name osDisk-backup

從快照建立磁碟

接著,您可以使用 az disk create 將此快照集轉換成磁碟,以用來重新建立虛擬機。

az disk create \
   --resource-group myResourceGroupDisk \
   --name mySnapshotDisk \
   --source osDisk-backup

從快照集還原虛擬機器

在刪除虛擬機之前,請用 az vm show 把所有資料磁碟的資源 ID 存進變 dataDiskIds 數裡。

dataDiskIds=$(az vm show \
   --resource-group myResourceGroupDisk \
   --name myVM \
   --query "storageProfile.dataDisks[].managedDisk.id" \
   --output tsv)

若要示範虛擬機復原,請使用 az vm delete 刪除現有的虛擬機。

az vm delete \
--resource-group myResourceGroupDisk \
--name myVM

從快照集磁碟建立新的虛擬機。

az vm create \
    --resource-group myResourceGroupDisk \
    --name myVM \
    --attach-os-disk mySnapshotDisk \
    --os-type linux

重新連接資料磁碟

所有數據磁碟都必須重新附加至虛擬機。

針對每個資源 ID,使用 az vm disk attach 重新附加所有資料磁碟。

for dataDiskId in $dataDiskIds; do
   az vm disk attach \
      --resource-group myResourceGroupDisk \
      --vm-name myVM \
      --name "$dataDiskId"
done

後續步驟

在本教學課程中,您已瞭解 VM 磁碟主題,例如:

  • OS 磁碟和暫存磁碟
  • 數據磁碟
  • 磁碟類型與效能選項
  • 磁碟效能
  • 連結及準備資料磁碟
  • 磁碟快照

前進到下一個教學課程,以瞭解將 VM 設定自動化。