PowerShell を使用して Windows VM にデータ ディスクを接続する

適用対象: ✔️ Windows VM ✔️ フレキシブル スケール セット

この記事では、PowerShell を使用して新しいディスクおよび既存のディスクを Windows 仮想マシンに接続する方法について説明します。

最初に、以下のヒントを確認してください。

  • 仮想マシンのサイズによって、接続できるデータ ディスク数は変わります。 詳細については、 仮想マシンのサイズに関するページをご覧ください。
  • Premium SSD を使用するには、DS シリーズや GS シリーズの仮想マシンなど、 Premium Storage 対応の VM の種類が必要です。

この記事では、Azure Cloud Shell で Azure PowerShell を使用します。これは常に最新のバージョンに更新されています。 Cloud Shell を開くには、コード ブロックの上部にある [使ってみる] を選択します。

データ ディスク接続の待機時間を短縮する

一部のリージョンでは、ディスク接続の待機時間が短縮されるため、最大 15%の改善が見られます。 この改善は、VM 間の計画されたフェールオーバーまたは計画外のフェールオーバー、ワークロードのスケーリング、または Azure Kubernetes Service などの大規模なステートフル ワークロードの実行に役立ちます。 ただし、この機能強化は、明示的なディスクアタッチ コマンド である Add-AzVMDataDisk に限定されます。 Update-AzVM などのアタッチを暗黙的に実行する可能性のあるコマンドを呼び出すと、パフォーマンスが向上することはありません。 この改善を行うには明示的なアタッチ コマンドを呼び出せばよく、それ以外のアクションは不要です。

現在、以下を除くすべてのパブリック リージョンで待機時間の短縮が可能です。

  • カナダ中部
  • 米国中部
  • 米国東部
  • 米国東部 2
  • 米国中南部
  • 米国西部 2
  • ドイツ北部
  • インド西部
  • 北ヨーロッパ
  • 西ヨーロッパ

空のデータ ディスクを仮想マシンに追加する

この例では、既存の仮想マシンに空のデータ ディスクを追加する方法を示します。

マネージド ディスクを作成して接続する

リソース グループ、VM、場所、ストレージの種類、データ ディスク名の値を設定します。 New-AzDiskConfig コマンドレットは、空の 128 GiB マネージド ディスクの構成を作成し、New-AzDisk によってディスクが作成されます。 次に、Get-AzVM は VM の構成を取得し、Add-AzVMDataDisk はそれにディスクを追加し、Update-AzVM は更新された構成を VM に適用します。

$rgName = 'myResourceGroup'
$vmName = 'myVM'
$location = 'East US'
$storageType = 'Premium_LRS'
$dataDiskName = $vmName + '_datadisk1'

$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $location -CreateOption Empty -DiskSizeGB 128
$dataDisk1 = New-AzDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName $rgName

$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1

Update-AzVM -VM $vm -ResourceGroupName $rgName

可用性ゾーンにマネージド ディスクを作成してアタッチする

リソース グループ、VM、場所、ストレージの種類、データ ディスク名の値を設定します。 可用性ゾーンにマネージド ディスクを作成するには、-Zone パラメーターでNew-AzDiskConfigを使用します。 次の例では、ゾーン 1 に空の 128 GiB マネージド ディスクを作成し、それを VM 構成に追加し、更新された構成を VM に適用します。

$rgName = 'myResourceGroup'
$vmName = 'myVM'
$location = 'East US 2'
$storageType = 'Premium_LRS'
$dataDiskName = $vmName + '_datadisk1'

$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $location -CreateOption Empty -DiskSizeGB 128 -Zone 1
$dataDisk1 = New-AzDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName $rgName

$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1

Update-AzVM -VM $vm -ResourceGroupName $rgName

ディスクの初期化

空のディスクを追加したら、それを初期化する必要があります。 ディスクを初期化するには、VM にサインインし、ディスク管理を使用します。 VM の作成時に WinRM と証明書を有効にした場合は、リモート PowerShell を使用してディスクを初期化できます。

Set-AzVMCustomScriptExtension コマンドレットを使用して、カスタム スクリプト拡張機能を VM に追加することもできます。 次の例では、添付ファイル プロシージャのリソース グループと VM 名を、VM の場所、拡張機能名、初期化スクリプト ファイル、ストレージ アカウント名、ストレージ アカウント キー、コンテナー名の値と共に使用します。 コマンドを実行する前に、指定したAzure Storage コンテナーにスクリプトを格納します。

    $location = "location-name"
    $scriptName = "script-name"
    $fileName = "script-file-name"
    Set-AzVMCustomScriptExtension -ResourceGroupName $rgName -Location $location -VMName $vmName -Name $scriptName -TypeHandlerVersion "1.4" -StorageAccountName "mystore1" -StorageAccountKey "primary-key" -FileName $fileName -ContainerName "scripts"

スクリプト ファイルには、たとえば、ディスクを初期化するためのコードを含めることができます。

注記

このスクリプトの例では、MBR パーティション スタイルを使います。 ディスクが 2 テビバイト (TiB) 以上の場合は、GPT パーティション分割を使用する必要があります。 2 TiB 未満の場合は、MBR または GPT を使用できます。

    $disks = Get-Disk | Where partitionstyle -eq 'raw' | sort number

    $letters = 70..89 | ForEach-Object { [char]$_ }
    $count = 0
    $labels = "data1","data2"

    foreach ($disk in $disks) {
        $driveLetter = $letters[$count].ToString()
        $disk |
        Initialize-Disk -PartitionStyle MBR -PassThru |
        New-Partition -UseMaximumSize -DriveLetter $driveLetter |
        Format-Volume -FileSystem NTFS -NewFileSystemLabel $labels[$count] -Confirm:$false -Force
	$count++
    }

VM に既存のデータ ディスクを接続する

リソース グループ、VM、および既存のマネージド ディスク名の値を設定します。 Get-AzDisk を使用してマネージド ディスクを取得し、Get-AzVMして VM 構成を取得します。 次に、 Add-AzVMDataDisk を使用して既存のディスクを VM 構成に追加し、 Update-AzVM して更新された構成を VM に適用します。

$rgName = "myResourceGroup"
$vmName = "myVM"
$dataDiskName = "myDisk"
$disk = Get-AzDisk -ResourceGroupName $rgName -DiskName $dataDiskName

$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName

$vm = Add-AzVMDataDisk -CreateOption Attach -Lun 0 -VM $vm -ManagedDiskId $disk.Id

Update-AzVM -VM $vm -ResourceGroupName $rgName

次のステップ

テンプレートを使用してマネージド ディスクをデプロイすることもできます。 詳細については、「 Azure Resource Manager テンプレートでのマネージド ディスクの使用 」または複数のデータ ディスクをデプロイするための クイック スタート テンプレート を参照してください。