共用方式為


教學課程:使用 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 中。 Azure Cloud Shell 的「試試看」範例螢幕擷取畫面。
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 啟動 Azure Cloud Shell 的按鈕。
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 顯示 Azure 入口網站中 Cloud Shell 按鈕的螢幕擷取畫面

若要使用 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 視窗。

    遠端桌面連線視窗的影像。

  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 磁碟或資料磁碟的大小。

重要

如果您的磁碟符合 Expand 中 不需要停機的需求,您可以略過步驟 2 和 6。

不支援壓縮現有的磁碟,這可能會導致資料遺失。

在擴充磁碟之後,您必須擴充作業系統內的磁碟區以使用較大的磁碟。

  1. 選取 VM,其中包含您將使用 Get-AzVM Cmdlet 調整大小的磁碟。

     $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 之後,使用 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
    
  4. 既然您具有磁碟的參考,請將磁碟的大小設定為 250 GiB。

    重要

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

    $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 視窗。

    遠端桌面連線視窗的影像。

  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,其中包含您將使用 Get-AzVM Cmdlet 升級的磁碟。

     $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 之後,使用 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
    
  4. 既然您具有磁碟的參考,請將磁碟的 SKU 設定為 250 GiB

    $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. 首先,使用 Get-AzVM Cmdlet 選取磁碟連結至其中的 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 參數會搭配 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。