適用於:✔️ 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 設定自動化。