チュートリアル: Azure PowerShell を使用してディスクを管理する

Azure Virtual Machines (VM) では、オペレーティング システム (OS)、アプリケーション、およびデータを格納するためにディスクを使用します。 VM を作成するときは、予測されるワークロードに適したディスクのサイズと構成を選択することが重要です。

このチュートリアルでは、VM ディスクのデプロイと管理について説明します。 このチュートリアルでは、以下の内容を学習します。

  • データ ディスクの作成、アタッチ、および初期化
  • ディスクの状態の確認
  • ディスクの拡張とアップグレード
  • ディスクのデタッチと削除

前提条件

アクティブなサブスクリプションを含む Azure アカウントが必要です。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Azure Cloud Shell の [使ってみる] の例を示すスクリーンショット。
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Azure Cloud Shell を起動するボタン。
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Azure portal の [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 がプロビジョニングされ、2 つのディスクが自動的に作成されてアタッチされます。

  • オペレーティング システム ディスク。仮想マシンのオペレーティング システムをホストします。
  • 一時ディスク。主に、一時的なデータ処理などの操作に使用されます。

データ ディスクの追加

可能な場合は、OS 関連データからアプリケーションとユーザーのデータを分離することをお勧めします。 ユーザーまたはアプリケーションのデータを VM に保存する必要がある場合は、通常、追加のデータ ディスクを作成してアタッチします。

この手順では、既存の VM が必要であり、「VM の作成」で定義されている $azRegion$azResourceGroup$azVMName、および $azDataDiskName 変数 を使用します

このセクションの手順に従って、VM 上にデータ ディスクを作成し、アタッチして初期化します。

データ ディスクの作成

このセクションでは、「VM の作成」で定義されている $azRegion$azResourceGroup、および $azDataDiskName 変数を使用して、マネージド データ ディスク を作成します

  1. データ ディスクを作成する前に、まずディスク オブジェクトを作成する必要があります。 次のコード サンプルでは、New-AzDiskConfig コマンドレットを使用して、ディスク オブジェクトを構成します。

    $diskConfig = New-AzDiskConfig `
        -Location $azRegion `
        -CreateOption Empty `
        -DiskSizeGB 128 `
        -SkuName "Standard_LRS"
    
  2. ディスク オブジェクトが作成されたら、New-AzDisk コマンドレットを使用してデータ ディスクをプロビジョニングします。

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

    ディスクが作成されたことを確認するには、Get-AzDisk コマンドレットを使用します。

    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 コマンドレットを使用して、VM への参照を作成します。

    $vm = Get-AzVM `
        -ResourceGroupName $azResourceGroup `
        -Name $azVMName
    
  2. 次に、Add-AzVMDataDisk コマンドレットを使用して、データ ディスクを VM の構成にアタッチします。

    $vm = Add-AzVMDataDisk `
        -VM $vm `
        -Name $azDataDiskName `
        -CreateOption Attach `
        -ManagedDiskId $dataDisk.Id `
        -Lun 1
    
  3. 最後に、Update-AzVM コマンドレットを使用して、VM の構成を更新します。

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

    しばらくすると、正常にアタッチされたことが出力で確認できます。

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

データ ディスクの初期化

データ ディスクが VM にアタッチされたら、そのディスクを使用するように OS を構成する必要があります。 次のセクションでは、リモート VM に接続して、追加された最初のディスクを構成する方法に関するガイダンスを提供します。

このセクションでは、$azVMName で指定された VM と、データディスクの接続で接続した未初期化のデータディスクへのローカル管理者アクセスが必要です。

  1. Azure portal にサインインします。

  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
    

ディスクを拡張する

VM でより多くのストレージ容量が必要な場合は、Azureマネージド OS ディスクまたはデータ ディスクを拡張できます。

この手順では、マネージド OS ディスクまたはデータ ディスクが接続されている既存の VM が必要であり、「VM の作成」で定義されている $azResourceGroup 変数と $azVMName 変数 を使用します

一部のシナリオでは、データを OS ディスクに格納する必要があります。 たとえば、OS ドライブにコンポーネントをインストールするレガシ アプリケーションをサポートする必要がある場合があります。 また、大規模な OS ドライブを備えたオンプレミスの物理 PC または VM の移行が必要になる場合もあります。 このような場合は、VM の OS ディスクを拡張することが必要になる場合があります。

ディスクのサイズの更新

OS ディスクまたはデータ ディスクのサイズを変更するには、次の手順に従います。

重要

ディスクが「ダウンタイムなしで拡張する」の要件を満たしている場合は、手順 2 と 6 をスキップできます。

既存のディスクの縮小はサポートされておらず、データが失われる場合があります。

ディスクを拡張した後、大きいディスクを利用するには、オペレーティング システム内のボリュームを拡張する必要があります。

  1. Get-AzVM コマンドレットを使用してサイズを変更するディスクを含む VM を選択します。

     $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. VM ディスクのサイズを変更する前に、VM を停止する必要があります。 Stop-AzVM コマンドレットを使用して 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 コマンドレットを使用して、その 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 GiB です。

    $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 コマンドレットを使用して 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 portal にサインインします。

  2. 展開された OS ディスクまたはデータ ディスクを持つ VM を見つけます。 リモート デスクトップ プロトコル (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. リモート VM の PowerShell ウィンドウで、 Get-Volume コマンドレットを使用して、ボリュームが正常に展開されたことを確認します。

    Get-Volume -DriveLetter $driveLetter
    

    Size値に展開されたボリューム サイズが反映されていることを確認します。

ディスクをアップグレードする

組織のワークロードの変化に対応するには、いくつかの方法があります。 たとえば、需要の増加に対応するために、Standard HDD を Premium SSD にアップグレードすることを選択できます。

この手順では、Standard HDD または Standard SSD が接続されている既存の VM が必要です。 VM の作成で定義した$azResourceGroup変数と$azVMName変数が使用されます。

このセクションの手順に従って、マネージド ディスクを Standard から Premium にアップグレードします。

  1. Get-AzVM コマンドレットを使用してアップグレードするディスクを含む VM を選択します。

     $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. VM のディスクをアップグレードするには、先にその VM を停止する必要があります。 Stop-AzVM コマンドレットを使用して 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 コマンドレットを使用して、その 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 コマンドレットを使用してマネージド ディスクを更新します。

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

    マネージド ディスクが更新されます。 次のコード例を使用して、ディスクの SKU がアップグレードされたことを検証します。

    $disk.Sku.Name
    

    ディスクの新しい SKU を出力で確認することができます。

    Premium_LRS
    
  6. 最後に、Start-AzVM コマンドレットを使用して 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 からデタッチできます。 既定では、意図しないデータ損失を防ぐために、デタッチされたディスクは削除されません。 デタッチされたディスクは、削除されるまで引き続きストレージ料金が発生します。

この手順では、接続されたデータ ディスクを持つ既存の VM が必要であり、「VM の作成」で定義されている $azResourceGroup$azVMName、および $azDataDiskName 変数 を使用します

  1. まず、Get-AzVM コマンドレットを使用してディスクがアタッチされている VM を選択します。

    $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. 次に、 Remove-AzVMDataDisk コマンドレットを使用して、VM からディスクをデタッチします。

    Remove-AzVMDataDisk `
        -VM $vm `
        -Name $azDataDiskName
    
  3. Update-AzVM コマンドレットを使用して VM の状態を更新し、データ ディスクを除去します。

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

    しばらくすると、VM が正常に更新されたことを出力で確認することができます。

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

データ ディスクの削除

VM を削除しても、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     :

リソースをクリーンアップする

リソースが不要になったら、リソース グループ、VM、およびすべての関連リソースを削除します。 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 構成を自動化する方法について学習してください。