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

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

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

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

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

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

より短い待機時間

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

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

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

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

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

マネージド ディスクを使用する場合

$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

可用性ゾーンでマネージド ディスクを使用する場合

可用性ゾーンにディスクを作成するには、-Zone パラメーターを指定して New-AzDiskConfig を使用します。 次の例では、ゾーン 1 にディスクを作成します。

$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 を使用してディスクを初期化できます。 また、カスタム スクリプト拡張機能を使用することができます。

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

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

    $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 にアタッチできます。

$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 テンプレートでの管理ディスクの使用」または複数のデータ ディスクをデプロイするクイックスタート テンプレートを参照してください。