気まぐれで、Azure VM に大容量ディスクをアタッチしたくなったので、どこまで出来るのか試してみました。
1.概要
まず、前提として Azure VM にアタッチできるディスク (VHD) は 1 本 1 TB が上限です。これは Azure Storage の Page BLOB の上限です。
- Understanding Block Blobs, Append Blobs, and Page Blobs – About Page Blobs
https://docs.microsoft.com/ja-jp/rest/api/storageservices/fileservices/understanding-block-blobs–append-blobs–and-page-blobs#about-page-blobs
このため、1 TB の VHD を複数アタッチして、OS の中でソフトウェア RAID 等を構成する必要があります。
また、Azure VM のサイズによってアタッチできる本数の上限が決まっています。G5 / GS5 のサイズで最大 64 本 (64 TB) になりますが、G シリーズはお高いので、一般的に使うサイズだと 32 本 (32 TB) が上限と思ったほうがよいでしょう。
- Azure の仮想マシンのサイズ
https://docs.microsoft.com/ja-jp/azure/virtual-machines/virtual-machines-windows-sizes
2. 手順
データ ディスクの追加はポータルからもできますが、64 本もアタッチするのは面倒なので Azure PowerShell でサクっとやります。
# 既存の VM 情報を取得 $VM = Get-AzureRmVM -Name "&lt;VM 名&gt;" -ResourceGroupName "<リソース グループ名>" # 新規で 1023 GB のディスクを 64 本アタッチ for($i = 0; $i -lt 64; $i++){ if($i -gt 32){ Add-AzureRmVMDataDisk -VM $VM -Name "datadisk$($i)" -VhdUri "https://<ストレージ アカウント名 1>.blob.core.windows.net/vhds/datadisk$($i).vhd" -DiskSizeInGB 1023 -Lun $i -CreateOption Empty }else{ Add-AzureRmVMDataDisk -VM $VM -Name "datadisk$($i)" -VhdUri "https://<ストレージ アカウント名 2>.blob.core.windows.net/vhds/datadisk$($i).vhd" -DiskSizeInGB 1023 -Lun $i -CreateOption Empty } } # 設定を反映 Update-AzureRmVM -VM $VM -ResourceGroupName $VM.ResourceGroupName
これで、VM に 64 本のデータ ディスク (および OS ディスクと一時ディスク) がアタッチされた状態になります。
注意事項:
- Standard ストレージの場合、1 つのストレージに 20000 IOPS 制限があります。1 BLOB (VHD) あたり 500 IOPS が上限なので、パフォーマンスの観点からは 40 本以上のディスクはストレージを分散させます。
- Premium ストレージの場合、1 つのストレージに 35 TB 上限があります。課金も恐ろしい額になるので注意しましょう。
あとは Windows Server の記憶域スペース・記憶域プールを使って、64 TB の大きなプールを作ってから、ディスクを切り出しましょう。
以下、スクショでお楽しみください。