教學課程:使用 Azure PowerShell 管理磁碟

Azure 虛擬機器 (VM) 使用磁碟來儲存作業系統 (OS)、應用程式和資料。 建立 VM 時,請務必選擇適合於所預期工作負載的磁碟大小和設定。

本教學課程涵蓋 VM 磁碟的部署和管理。 在本教學課程中,您會了解如何:

  • 建立、連結和初始化資料磁碟
  • 驗證磁碟的狀態
  • 擴充和升級磁碟
  • 卸載和刪除磁碟

必要條件

您必須具備含有效訂閱的 Azure 帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。

Azure Cloud Shell

Azure Cloud Shell 是托管在 Azure 中的互動式 Shell 環境,可在瀏覽器中使用。 您可以使用 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

本教學課程中的練習需要一台虛擬機。 請遵循本節中的步驟來建立一個。

開始之前,請尋找位於範例程式碼第一行的 $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 上儲存使用者或應用程式資料,您通常會建立並連結其他資料磁碟。

此程序需要現有的虛擬機,並使用$azRegion「建立虛擬機」中定義的 、 $azResourceGroup、 $azVMName、 及$azDataDiskName變數。

請遵循本節中的步驟,在 VM 上建立、連結和初始化資料磁碟。

建立資料磁碟

在本節中,你將使用 $azRegion、 、 $azResourceGroup$azDataDiskName 以及在建立虛擬機中定義的變數來建立一個受管理的資料磁碟。

  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
    

    在此範例中,輸出會確認已建立磁碟。 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 的設定。

本節會使用 $azResourceGroup、$azVMName 和 $azDataDiskName 變數,以及在 $dataDisk 中由 參考的未連結受控磁碟。

  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 並設定第一個新增的磁碟。

本節需要以本機系統管理員身分存取由 $azVMName 指定名稱的 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 管理作業系統的磁碟或資料磁碟。

此程序需使用已存在的虛擬機,並附接管理作業系統磁碟或資料磁碟,並使用$azResourceGroup建立虛擬機中定義的 與 $azVMName 變數。

某些案例需要將資料儲存在 OS 磁碟上。 例如,你可能需要支援在作業系統磁碟上安裝元件的舊有應用程式。 你可能還需要遷移一台本地實體電腦或虛擬機,搭配較大的作業系統硬碟。 在這種情況下,你可能需要擴充虛擬機的作業系統磁碟。

更新磁碟的大小

請遵循下列步驟來調整 OS 磁碟或資料磁碟的大小。

重要

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

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

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

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

     $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. 在你調整虛擬機磁碟大小之前,必須先停止該虛擬機。 使用 Stop-AzVM 指令檔來停止虛擬機。 系統會提示您進行確認。

    重要

    在起始 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 指令檔來更新受管理磁碟。

    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 指令碼重新啟動虛擬機。

    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. 找到擁有擴充作業系統磁碟或資料磁碟的虛擬機。 建立遠端桌面通訊協定 (RDP) 連線並登入。 如果你已經無法存取管理員帳號,請使用 Get-Credential 指令檔為指定的使用者名稱和密碼建立憑證物件。

  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. 在遠端虛擬機的 PowerShell 視窗中,使用 Get-Volume 指令小程式確認磁碟區是否成功擴充。

    Get-Volume -DriveLetter $driveLetter
    

    確認該 Size 數值是否反映擴展後的體積大小。

升級磁碟

有數種方式可以回應貴組織工作負載中的變更。 例如,你可以選擇將標準硬碟升級為高級 SSD,以應付增加的需求。

此程序需現有虛擬機並附加標準硬碟或標準固態硬碟。 它會使用您在$azVMName中定義的 $azResourceGroup 和 變數。

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

  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 設定為 Premium_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 中斷連結。 依預設,不會刪除未連結的磁碟,以防止意外的資料遺失。 卸載的磁碟會繼續產生儲存費用,直到刪除為止。

此程序需要已有的虛擬機並附帶資料磁碟,並使用$azResourceGroup建立虛擬機中定義的 、 $azVMName及$azDataDiskName變數。

  1. 首先,使用 Get-AzVM Cmdlet 選取磁碟連結至其中的 VM。

    $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. 接著,使用 Remove-AzVMDataDisk 指令檔將磁碟從虛擬機中分離。

    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 的資料磁碟仍會維持已佈建狀態,並繼續產生費用,直到將其刪除為止。 此預設行為有助於防止意外刪除所造成的資料遺失。

此程序需要一個未掛接的資料磁碟,並使用$azResourceGroup建立虛擬機中定義的 和 $azDataDiskName 變數。

以下 PowerShell 指令碼使用 Get-AzDisk 指令程式來擷取名稱為 $azDataDiskName 的資料磁碟。 腳本在使用 Remove-AzDisk 指令刪除前,會確認磁碟已卸載。

$dataDisk = Get-AzDisk `
    -ResourceGroupName $azResourceGroup `
    -DiskName $azDataDiskName `
    -ErrorAction Stop

if ($null -ne $dataDisk.ManagedBy) {
    throw "Disk $($dataDisk.Name) is still attached. Detach it before deletion."
}

$confirm = Read-Host "Delete unattached disk $($dataDisk.Name)? (Y/N)"
if ($confirm.ToUpperInvariant() -eq 'Y') {
    Remove-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -DiskName $dataDisk.Name `
        -Force
    Write-Host "Unattached disk $($dataDisk.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     :

清除資源

當你不再需要資源時,刪除資源群組、虛擬機及所有相關資源。 請使用 Remove-AzResourceGroup 指令檔刪除你之前在教學中建立的資源群組。

警告

刪除資源群組時請謹慎。 若要避免遺失重要資料,請一律在刪除資源群組之前,先確認資源群組內沒有包含任何重要的資源或資料。

    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。