教學課程:使用 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 磁碟或資料磁碟的大小。
選取 VM,其中包含您將使用
Get-AzVM
Cmdlet 調整大小的磁碟。$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 之後,使用
Get-AzDisk
Cmdlet 取得連結至 VM 的 OS 或資料磁碟參考。下列範例會選取 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 GB。
$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,其中包含您將使用
Get-AzVM
Cmdlet 升級的磁碟。$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 之後,使用
Get-AzDisk
Cmdlet 取得連結至 VM 的 OS 或資料磁碟參考。下列範例會選取 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 設定為 250 GiB。
$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 中斷連結。 依預設,不會刪除中斷連結的磁片,以防止意外的資料遺失。 中斷連結的磁碟會繼續產生儲存體費用,直到刪除為止。
首先,使用
Get-AzVM
Cmdlet 選取磁碟連結至其中的 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
參數會搭配 Get-AzDisk
Cmdlet 使用。
# 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。