教學課程:使用 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 中。 Screenshot that shows an example of Try It for Azure Cloud Shell.
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 Button to launch Azure Cloud Shell.
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 Screenshot that shows the Cloud Shell button in the Azure portal

若要使用 Azure Cloud Shell:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。

  3. 透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。

  4. 選取 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 上建立、連結和初始化數據磁碟。

建立數據磁碟

本節會引導您建立數據磁碟。

  1. 您必須先建立磁碟物件,才能建立數據磁碟。 下列程式代碼範例會使用 New-AzDiskConfig Cmdlet 來設定磁碟物件。

    $diskConfig = New-AzDiskConfig `
        -Location $azRegion `
        -CreateOption Empty `
        -DiskSizeGB 128 `
        -SkuName "Standard_LRS"
    
  2. 建立磁碟對象之後,請使用 New-AzDisk Cmdlet 來布建數據磁碟。

    $dataDisk = New-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -DiskName $azDataDiskName `
        -Disk $diskConfig
    

    您可以使用 Get-AzDisk Cmdlet 來確認已建立磁碟。

    Get-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -DiskName $azDataDiskName
    

    在此範例中,輸出會確認已建立磁碟。 DiskStateManagedBy 屬性值會確認磁碟尚未連結。

    ResourceGroupName            : myDemoResourceGroup
    ManagedBy                    :
    ManagedByExtended            : {}
    OsType                       :
    DiskSizeGB                   : 128
    DiskSizeBytes                : 137438953472
    ProvisioningState            : Succeeded
    DiskIOPSReadWrite            : 500
    DiskMBpsReadWrite            : 60
    DiskState                    : Unattached
    Name                         : myDemoDataDisk
    

連接資料磁碟

數據磁碟必須先連結至 VM,VM 才能存取它。 完成本節中的步驟,以建立 VM 的參考、連線磁碟,以及更新 VM 的組態。

  1. 取得您要連結資料磁碟的 VM。 下列範例程式代碼會使用 Get-AzVM Cmdlet 來建立 VM 的參考。

    $vm = Get-AzVM `
        -ResourceGroupName $azResourceGroup `
        -Name $azVMName
    
  2. 接下來,使用 Add-AzVMDataDisk Cmdlet 將數據磁碟連結至 VM 的設定。

    $vm = Add-AzVMDataDisk `
        -VM $vm `
        -Name $azDataDiskName `
        -CreateOption Attach `
        -ManagedDiskId $dataDisk.Id `
        -Lun 1
    
  3. 最後,使用 Update-AzVM Cmdlet 更新 VM 的組態。

    Update-AzVM `
        -ResourceGroupName $azResourceGroup `
        -VM $vm
    

    短暫暫停之後,輸出會確認成功的附件。

    RequestId IsSuccessStatusCode StatusCode ReasonPhrase
    --------- ------------------- ---------- ------------
                             True         OK OK
    

初始化數據磁碟

將數據磁碟連結至 VM 之後,OS 必須設定為使用磁碟。 下一節提供如何連線到遠端 VM 並設定新增第一個磁碟的指引。

  1. 登入 Azure 入口網站

  2. 找出您已連結數據磁碟的 VM。 建立遠端桌面通訊協定 (RDP) 連線,並以本機系統管理員身分登入。

  3. 建立遠端 VM 的 RDP 連線之後,請選取 [Windows 開始 ] 選單。 在搜尋方塊中輸入PowerShell,然後選取 [Windows PowerShell] 以開啟 PowerShell 視窗。

    Image of a remote desktop connection window.

  4. 在開啟的 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 磁碟或數據磁碟的大小。

  1. 選取包含您將使用 Cmdlet 重設大小的磁碟的 Get-AzVM VM。

     $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. 您必須先停止 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       :
    
  3. 停止 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
    
  4. 既然您已參考磁碟,請將磁碟的大小設定為 250 GiB。

    重要

    新的大小應該大於現有的磁碟大小。 允許的上限是 OS 磁碟的 4,095 GiB。

    $disk.DiskSizeGB = 250
    
  5. 接下來,使用 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
    
    
  6. 最後,使用 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 內的磁碟區,才能利用新的磁碟大小。 請遵循下列步驟來擴充磁碟區,並利用新的磁碟大小。

  1. 登入 Azure 入口網站

  2. 找出您已連結數據磁碟的 VM。 建立遠端桌面通訊協定 (RDP) 連線並登入。 如果您不再具有系統管理帳戶的存取權,請使用 Get-Credential Cmdlet,為指定的使用者名稱和密碼建立認證物件。

  3. 建立遠端 VM 的 RDP 連線之後,請選取 [Windows 開始 ] 選單。 在搜尋方塊中輸入PowerShell,然後選取 [Windows PowerShell] 以開啟 PowerShell 視窗。

    Image of a remote desktop connection window.

  4. 開啟 PowerShell 並執行下列腳本。 視需要變更變數的值 -DriveLetter 。 例如,若要調整 F: 磁碟驅動器上的分割區大小,請使用 $driveLetter = "F"

    $driveLetter = "[Drive Letter]" 
    $size = (Get-PartitionSupportedSize -DriveLetter $driveLetter) 
    Resize-Partition `
        -DriveLetter $driveLetter `
        -Size $size.SizeMax
    
  5. 將 RDP 視窗最小化,並切換回 Azure Cloud Shell。 Get-AzDisk使用 Cmdlet 來確認磁碟已成功重設大小。

    Get-AzDisk `
        -ResourceGroupName $azResourceGroup | Out-Host -Paging
    

升級磁碟

有數種方式可以回應您組織工作負載中的變更。 例如,您可以選擇將標準 HDD 升級至進階 SSD,以處理增加的需求。

請遵循本節中的步驟,將受控磁碟從標準升級為進階。

  1. 選取 VM,其中包含您將使用 Cmdlet 升級的 Get-AzVM 磁碟。

     $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. 您必須先停止 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       :
    
  3. 停止 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
    
  4. 既然您已參考磁碟,請將磁碟的SKU設定為 進階版_LRS

    $disk.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku]::new('Premium_LRS')
    
  5. 接下來,使用 Update-AzDisk Cmdlet 更新磁碟映像。

    Update-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -Disk $disk -DiskName $disk.Name
    

    磁碟映像已更新。 使用下列範例程式代碼來驗證磁碟的 SKU 是否已升級。

    $disk.Sku.Name
    

    輸出會確認磁碟的新 SKU。

    Premium_LRS
    
  6. 最後,使用 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 中斷連結。 根據預設,不會刪除中斷連結的磁碟,以避免意外的數據遺失。 卸離的磁碟會繼續產生記憶體費用,直到刪除為止。

  1. 首先,選取與 Cmdlet 連結 Get-AzVM 磁碟的 VM。

    $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. 接下來,使用 Remove-AzVMDataDisk Cmdlet 從 VM 中斷連結磁碟。

    Remove-AzVMDataDisk `
        -VM $vm `
        -Name $azDataDiskName
    
  3. 使用 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 設定自動化。