教學課程:使用 Azure PowerShell 管理磁碟
Azure 虛擬機器 (VM) 會使用磁碟來儲存作業系統 (OS)、應用程式和數據。 當您建立 VM 時,請務必為預期的工作負載選擇適當的磁碟大小和組態。
本教學課程涵蓋 VM 磁碟的部署和管理。 在本教學課程中,您會了解如何:
- 建立、連結及初始化數據磁碟
- 確認磁碟的狀態
- 初始化磁碟
- 展開和升級磁碟
- 卸離和刪除磁碟
必要條件
您必須擁有具有作用中訂用帳戶的 Azure 帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
Azure Cloud Shell
Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。
要啟動 Azure Cloud Shell:
選項 | 範例/連結 |
---|---|
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 | |
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 | |
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 |
若要使用 Azure Cloud Shell:
啟動 Cloud Shell。
選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。
透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。
選取 Enter 鍵執行程式碼或命令。
建立 VM
本教學課程中的練習需要 VM。 請遵循本節中的步驟來建立一個。
開始之前,請先尋找 $azRegion
位於範例程式代碼第一行的變數,並更新值以反映您想要的區域。 例如,若要指定 美國 中部區域,請使用 $azRegion = "Central US"
。 接下來,使用程式代碼在新的資源群組內部署 VM。 系統會提示您輸入 VM 本機系統管理員帳戶的使用者名稱和密碼值。
$azRegion = "[Your Region]"
$azResourceGroup = "myDemoResourceGroup"
$azVMName = "myDemoVM"
$azDataDiskName = "myDemoDataDisk"
New-AzVm `
-Location $azRegion `
-ResourceGroupName $azResourceGroup `
-Name $azVMName `
-Size "Standard_D2s_v3" `
-VirtualNetworkName "myDemoVnet" `
-SubnetName "myDemoSubnet" `
-SecurityGroupName "myDemoNetworkSecurityGroup" `
-PublicIpAddressName "myDemoPublicIpAddress"
輸出會確認 VM 已成功建立。
ResourceGroupName : myDemoResourceGroup
Id : /subscriptions/{GUID}/resourceGroups/myDemoResourceGroup/providers/Microsoft.Compute/virtualMachines/myDemoTestVM
VmId : [{GUID}]
Name : myDemoVM
Type : Microsoft.Compute/virtualMachines
Location : centralus
Tags : {}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, WindowsConfiguration, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
FullyQualifiedDomainName : mydemovm-abc123.Central US.cloudapp.azure.com
VM 已布建,並會自動建立和連結兩個磁碟。
- 裝載虛擬機器作業系統的作業系統磁碟。
- 暫存磁碟,主要用於臨時數據處理等作業。
新增資料磁碟
建議您盡可能將應用程式和用戶數據與 OS 相關資料分開。 如果您需要將使用者或應用程式資料儲存在 VM 上,您通常會建立並連結其他數據磁碟。
請遵循本節中的步驟,在 VM 上建立、連結和初始化數據磁碟。
建立數據磁碟
本節會引導您建立數據磁碟。
您必須先建立磁碟物件,才能建立數據磁碟。 下列程式代碼範例會使用 New-AzDiskConfig Cmdlet 來設定磁碟物件。
$diskConfig = New-AzDiskConfig ` -Location $azRegion ` -CreateOption Empty ` -DiskSizeGB 128 ` -SkuName "Standard_LRS"
建立磁碟對象之後,請使用 New-AzDisk Cmdlet 來布建數據磁碟。
$dataDisk = New-AzDisk ` -ResourceGroupName $azResourceGroup ` -DiskName $azDataDiskName ` -Disk $diskConfig
您可以使用 Get-AzDisk Cmdlet 來確認已建立磁碟。
Get-AzDisk ` -ResourceGroupName $azResourceGroup ` -DiskName $azDataDiskName
在此範例中,輸出會確認已建立磁碟。
DiskState
和ManagedBy
屬性值會確認磁碟尚未連結。ResourceGroupName : myDemoResourceGroup ManagedBy : ManagedByExtended : {} OsType : DiskSizeGB : 128 DiskSizeBytes : 137438953472 ProvisioningState : Succeeded DiskIOPSReadWrite : 500 DiskMBpsReadWrite : 60 DiskState : Unattached Name : myDemoDataDisk
連接資料磁碟
數據磁碟必須先連結至 VM,VM 才能存取它。 完成本節中的步驟,以建立 VM 的參考、連線磁碟,以及更新 VM 的組態。
取得您要連結資料磁碟的 VM。 下列範例程式代碼會使用 Get-AzVM Cmdlet 來建立 VM 的參考。
$vm = Get-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
接下來,使用 Add-AzVMDataDisk Cmdlet 將數據磁碟連結至 VM 的設定。
$vm = Add-AzVMDataDisk ` -VM $vm ` -Name $azDataDiskName ` -CreateOption Attach ` -ManagedDiskId $dataDisk.Id ` -Lun 1
最後,使用 Update-AzVM Cmdlet 更新 VM 的組態。
Update-AzVM ` -ResourceGroupName $azResourceGroup ` -VM $vm
短暫暫停之後,輸出會確認成功的附件。
RequestId IsSuccessStatusCode StatusCode ReasonPhrase --------- ------------------- ---------- ------------ True OK OK
初始化數據磁碟
將數據磁碟連結至 VM 之後,OS 必須設定為使用磁碟。 下一節提供如何連線到遠端 VM 並設定新增第一個磁碟的指引。
登入 Azure 入口網站。
找出您已連結數據磁碟的 VM。 建立遠端桌面通訊協定 (RDP) 連線,並以本機系統管理員身分登入。
建立遠端 VM 的 RDP 連線之後,請選取 [Windows 開始 ] 選單。 在搜尋方塊中輸入PowerShell,然後選取 [Windows PowerShell] 以開啟 PowerShell 視窗。
在開啟的 PowerShell 視窗中,執行下列腳本。
Get-Disk | Where PartitionStyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "myDemoDataDisk" -Confirm:$false
輸出會確認成功初始化。
DriveLetter FileSystemLabel FileSystem DriveType HealthStatus OperationalStatus SizeRemaining Size ----------- --------------- ---------- --------- ------------ ----------------- ------------- ---- F myDemoDataDisk NTFS Fixed Healthy OK 127.89 GB 128 GB
展開磁碟
您可以擴充 Azure 磁碟,以在 VM 的可用磁碟空間不足時提供額外的記憶體容量。
某些案例需要將數據儲存在 OS 磁碟上。 例如,您可能需要支援在 OS 磁碟驅動器上安裝元件的舊版應用程式。 您可能也需要移轉具有較大 OS 磁碟驅動器的內部部署實體電腦或 VM。 在這種情況下,可能需要擴充 VM 的 OS 磁碟。
不支援壓縮現有的磁碟,而且可能會導致數據遺失。
更新磁碟的大小
請遵循下列步驟來調整 OS 磁碟或數據磁碟的大小。
選取包含您將使用 Cmdlet 重設大小的磁碟的
Get-AzVM
VM。$vm = Get-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
您必須先停止 VM,才能調整 VM 的磁碟大小。
Stop-AzVM
使用 Cmdlet 來停止 VM。 系統會提示您確認。重要
在起始 VM 關機之前,請一律確認沒有可能遺失的重要資源或數據。
Stop-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
短暫暫停之後,輸出會確認機器已成功停止。
OperationId : abcd1234-ab12-cd34-123456abcdef Status : Succeeded StartTime : 9/13/2021 7:10:23 PM EndTime : 9/13/2021 7:11:12 PM Error :
停止 VM 之後,取得與 Cmdlet 連結至 VM 之 OS 或數據磁碟的
Get-AzDisk
參考。下列範例會選取 VM 的 OS 磁碟。
$disk= Get-AzDisk ` -ResourceGroupName $azResourceGroup ` -DiskName $vm.StorageProfile.OsDisk.Name
下列範例會選取 VM 的第一個數據磁碟。
$disk= Get-AzDisk ` -ResourceGroupName $azResourceGroup ` -DiskName $vm.StorageProfile.DataDisks[0].Name
既然您已參考磁碟,請將磁碟的大小設定為 250 GiB。
重要
新的大小應該大於現有的磁碟大小。 允許的上限是 OS 磁碟的 4,095 GiB。
$disk.DiskSizeGB = 250
接下來,使用
Update-AzDisk
Cmdlet 更新磁碟映像。Update-AzDisk ` -ResourceGroupName $azResourceGroup ` -Disk $disk -DiskName $disk.Name
磁碟映像已更新,輸出會確認磁碟的新大小。
ResourceGroupName : myDemoResourceGroup ManagedBy : /subscriptions/{GUID}/resourceGroups/myDemoResourceGroup/providers/Microsoft.Compute/virtualMachines/myDemoVM Sku : Microsoft.Azure.Management.Compute.Models.DiskSku TimeCreated : 9/135/2021 6:41:10 PM CreationData : Microsoft.Azure.Management.Compute.Models.CreationData DiskSizeGB : 250 DiskSizeBytes : 268435456000 UniqueId : {GUID} ProvisioningState : Succeeded DiskIOPSReadWrite : 500 DiskMBpsReadWrite : 60 DiskState : Reserved Encryption : Microsoft.Azure.Management.Compute.Models.Encryption Id : /subscriptions/{GUID}/resourceGroups/myDemoResourceGroup/providers/Microsoft.Compute/disks/myDemoDataDisk Name : myDemoDataDisk Type : Microsoft.Compute/disks Location : centralus
最後,使用
Start-AzVM
Cmdlet 重新啟動 VM。Start-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
短暫暫停之後,輸出會確認機器已成功啟動。
OperationId : abcd1234-ab12-cd34-123456abcdef Status : Succeeded StartTime : 9/13/2021 7:44:54 PM EndTime : 9/13/2021 7:45:15 PM Error :
展開OS中的磁碟區
您必須先擴充 OS 內的磁碟區,才能利用新的磁碟大小。 請遵循下列步驟來擴充磁碟區,並利用新的磁碟大小。
登入 Azure 入口網站。
找出您已連結數據磁碟的 VM。 建立遠端桌面通訊協定 (RDP) 連線並登入。 如果您不再具有系統管理帳戶的存取權,請使用 Get-Credential Cmdlet,為指定的使用者名稱和密碼建立認證物件。
建立遠端 VM 的 RDP 連線之後,請選取 [Windows 開始 ] 選單。 在搜尋方塊中輸入PowerShell,然後選取 [Windows PowerShell] 以開啟 PowerShell 視窗。
開啟 PowerShell 並執行下列腳本。 視需要變更變數的值
-DriveLetter
。 例如,若要調整 F: 磁碟驅動器上的分割區大小,請使用$driveLetter = "F"
。$driveLetter = "[Drive Letter]" $size = (Get-PartitionSupportedSize -DriveLetter $driveLetter) Resize-Partition ` -DriveLetter $driveLetter ` -Size $size.SizeMax
將 RDP 視窗最小化,並切換回 Azure Cloud Shell。
Get-AzDisk
使用 Cmdlet 來確認磁碟已成功重設大小。Get-AzDisk ` -ResourceGroupName $azResourceGroup | Out-Host -Paging
升級磁碟
有數種方式可以回應您組織工作負載中的變更。 例如,您可以選擇將標準 HDD 升級至進階 SSD,以處理增加的需求。
請遵循本節中的步驟,將受控磁碟從標準升級為進階。
選取 VM,其中包含您將使用 Cmdlet 升級的
Get-AzVM
磁碟。$vm = Get-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
您必須先停止 VM,才能升級 VM 的磁碟。
Stop-AzVM
使用 Cmdlet 來停止 VM。 系統會提示您確認。重要
在起始 VM 關機之前,請一律確認沒有可能遺失的重要資源或數據。
Stop-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
短暫暫停之後,輸出會確認機器已成功停止。
OperationId : abcd1234-ab12-cd34-123456abcdef Status : Succeeded StartTime : 9/13/2021 7:10:23 PM EndTime : 9/13/2021 7:11:12 PM Error :
停止 VM 之後,取得與 Cmdlet 連結至 VM 之 OS 或數據磁碟的
Get-AzDisk
參考。下列範例會選取 VM 的 OS 磁碟。
$disk= Get-AzDisk ` -ResourceGroupName $azResourceGroup ` -DiskName $vm.StorageProfile.OsDisk.Name
下列範例會選取 VM 的第一個數據磁碟。
$disk= Get-AzDisk ` -ResourceGroupName $azResourceGroup ` -DiskName $vm.StorageProfile.DataDisks[0].Name
既然您已參考磁碟,請將磁碟的SKU設定為 進階版_LRS。
$disk.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku]::new('Premium_LRS')
接下來,使用
Update-AzDisk
Cmdlet 更新磁碟映像。Update-AzDisk ` -ResourceGroupName $azResourceGroup ` -Disk $disk -DiskName $disk.Name
磁碟映像已更新。 使用下列範例程式代碼來驗證磁碟的 SKU 是否已升級。
$disk.Sku.Name
輸出會確認磁碟的新 SKU。
Premium_LRS
最後,使用
Start-AzVM
Cmdlet 重新啟動 VM。Start-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
短暫暫停之後,輸出會確認機器已成功啟動。
OperationId : abcd1234-ab12-cd34-123456abcdef Status : Succeeded StartTime : 9/13/2021 7:44:54 PM EndTime : 9/13/2021 7:45:15 PM Error :
卸離資料磁碟
當您想要將數據磁碟連結至不同的 VM,或不再需要資料磁碟時,您可以從 VM 中斷連結。 根據預設,不會刪除中斷連結的磁碟,以避免意外的數據遺失。 卸離的磁碟會繼續產生記憶體費用,直到刪除為止。
首先,選取與 Cmdlet 連結
Get-AzVM
磁碟的 VM。$vm = Get-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName
接下來,使用
Remove-AzVMDataDisk
Cmdlet 從 VM 中斷連結磁碟。Remove-AzVMDataDisk ` -VM $vm ` -Name $azDataDiskName
使用
Update-AzVM
Cmdlet 更新 VM 的狀態,以移除數據磁碟。Update-AzVM ` -ResourceGroupName $azResourceGroup ` -VM $vm
短暫暫停之後,輸出會確認 VM 已成功更新。
RequestId IsSuccessStatusCode StatusCode ReasonPhrase --------- ------------------- ---------- ------------ True OK OK
刪除資料磁碟
當您刪除 VM 時,連結至 VM 的數據磁碟會維持布建狀態,並繼續產生費用,直到刪除它們為止。 此預設行為有助於防止意外刪除所造成的數據遺失。
您可以使用下列範例 PowerShell 腳本來刪除未連結的磁碟。 磁碟的擷取僅限於 myDemoResourceGroup , -ResourceGroupName
因為參數會與 Cmdlet 搭配 Get-AzDisk
使用。
# Get all disks in resource group $azResourceGroup
$allDisks = Get-AzDisk -ResourceGroupName $azResourceGroup
# Determine the number of disks in the collection
if($allDisks.Count -ne 0) {
Write-Host "Found $($allDisks.Count) disks."
# Iterate through the collection
foreach ($disk in $allDisks) {
# Use the disk's "ManagedBy" property to determine if it is unattached
if($disk.ManagedBy -eq $null) {
# Confirm that the disk can be deleted
Write-Host "Deleting unattached disk $($disk.Name)."
$confirm = Read-Host "Continue? (Y/N)"
if ($confirm.ToUpper() -ne 'Y') { break }
else {
# Delete the disk
$disk | Remove-AzDisk -Force
Write-Host "Unattached disk $($disk.Name) deleted."
}
}
}
}
未鏈接的數據磁碟會刪除,如輸出所示。
Name : abcd1234-ab12-cd34-ef56-abcdef123456
StartTime : 9/13/2021 10:14:05 AM
EndTime : 9/13/2021 10:14:35 AM
Status : Succeeded
Error :
清除資源
若不再需要,請刪除資源群組、VM 和所有相關資源。 您可以使用下列範例 PowerShell 腳本來刪除本教學課程稍早建立的資源群組。
警告
刪除資源群組時請謹慎。 若要避免遺失重要數據,請一律確認資源群組內未包含重要資源或數據,再刪除。
Remove-AzResourceGroup -Name $azResourceGroup
系統會提示您確認。 短暫暫停之後, True
回應會 確認已成功刪除 myDemoResourceGroup 。
Confirm
Are you sure you want to remove resource group 'myDemoResourceGroup'
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
True
下一步
在本教學課程中,您已了解如何:
- 建立、連結及初始化數據磁碟
- 確認磁碟的狀態
- 初始化磁碟
- 展開和升級磁碟
- 卸離和刪除磁碟
前進到下一個教學課程,以瞭解如何將 VM 設定自動化。