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 に自動的にはコピーされません。 |
|
| https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 |
|
| Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 |
|
Azure Cloud Shell を使用するには、以下のようにします。
Cloud Shell を開始します。
コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。
Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。
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 変数を使用して、マネージド データ ディスク を作成します。
データ ディスクを作成する前に、まずディスク オブジェクトを作成する必要があります。 次のコード サンプルでは、New-AzDiskConfig コマンドレットを使用して、ディスク オブジェクトを構成します。
$diskConfig = New-AzDiskConfig ` -Location $azRegion ` -CreateOption Empty ` -DiskSizeGB 128 ` -SkuName "Standard_LRS"ディスク オブジェクトが作成されたら、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 によって参照される接続されていないマネージド ディスクを使用します。
データ ディスクをアタッチする VM を取得します。 次のサンプル コードでは、Get-AzVM コマンドレットを使用して、VM への参照を作成します。
$vm = Get-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName次に、Add-AzVMDataDisk コマンドレットを使用して、データ ディスクを VM の構成にアタッチします。
$vm = Add-AzVMDataDisk ` -VM $vm ` -Name $azDataDiskName ` -CreateOption Attach ` -ManagedDiskId $dataDisk.Id ` -Lun 1最後に、Update-AzVM コマンドレットを使用して、VM の構成を更新します。
Update-AzVM ` -ResourceGroupName $azResourceGroup ` -VM $vmしばらくすると、正常にアタッチされたことが出力で確認できます。
RequestId IsSuccessStatusCode StatusCode ReasonPhrase --------- ------------------- ---------- ------------ True OK OK
データ ディスクの初期化
データ ディスクが VM にアタッチされたら、そのディスクを使用するように OS を構成する必要があります。 次のセクションでは、リモート VM に接続して、追加された最初のディスクを構成する方法に関するガイダンスを提供します。
このセクションでは、$azVMName で指定された VM と、データディスクの接続で接続した未初期化のデータディスクへのローカル管理者アクセスが必要です。
Azure portal にサインインします。
データ ディスクをアタッチした VM を見つけます。 リモート デスクトップ プロトコル (RDP) 接続を作成し、ローカル管理者としてサインインします。
リモート VM への RDP 接続を確立したら、Windows の [スタート] メニューを選択します。 検索ボックスに「PowerShell」と入力し、 [Windows PowerShell] を選択して PowerShell ウィンドウを開きます。
開いた 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 をスキップできます。
既存のディスクの縮小はサポートされておらず、データが失われる場合があります。
ディスクを拡張した後、大きいディスクを利用するには、オペレーティング システム内のボリュームを拡張する必要があります。
Get-AzVMコマンドレットを使用してサイズを変更するディスクを含む VM を選択します。$vm = Get-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMNameVM ディスクのサイズを変更する前に、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 :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ディスクへの参照が得られたので、ディスクのサイズを 250 GiB に設定します。
重要
新しいサイズには、既存のディスク サイズより大きい値を指定する必要があります。 OS ディスクで許可される最大値は、4,095 GiB です。
$disk.DiskSizeGB = 250次に、 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最後に、 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 内のボリュームを拡張する必要があります。 次の手順に従って、ディスク ボリュームを拡張し、新しいディスク サイズを利用します。
Azure portal にサインインします。
展開された OS ディスクまたはデータ ディスクを持つ VM を見つけます。 リモート デスクトップ プロトコル (RDP) 接続を作成してサインインします。 管理者アカウントにアクセスできなくなった場合は、 Get-Credential コマンドレットを使用して、指定したユーザー名とパスワードの資格情報オブジェクトを作成します。
リモート VM への RDP 接続を確立したら、Windows の [スタート] メニューを選択します。 検索ボックスに「PowerShell」と入力し、 [Windows PowerShell] を選択して PowerShell ウィンドウを開きます。
PowerShell を開き、次のスクリプトを実行します。 必要に応じて、
-DriveLetter変数の値を変更します。 たとえば、F: ドライブのパーティションのサイズを変更するには、$driveLetter = "F"を使用します。$driveLetter = "[Drive Letter]" $size = (Get-PartitionSupportedSize -DriveLetter $driveLetter) Resize-Partition ` -DriveLetter $driveLetter ` -Size $size.SizeMaxリモート VM の PowerShell ウィンドウで、 Get-Volume コマンドレットを使用して、ボリュームが正常に展開されたことを確認します。
Get-Volume -DriveLetter $driveLetterSize値に展開されたボリューム サイズが反映されていることを確認します。
ディスクをアップグレードする
組織のワークロードの変化に対応するには、いくつかの方法があります。 たとえば、需要の増加に対応するために、Standard HDD を Premium SSD にアップグレードすることを選択できます。
この手順では、Standard HDD または Standard SSD が接続されている既存の VM が必要です。
VM の作成で定義した$azResourceGroup変数と$azVMName変数が使用されます。
このセクションの手順に従って、マネージド ディスクを Standard から Premium にアップグレードします。
Get-AzVMコマンドレットを使用してアップグレードするディスクを含む VM を選択します。$vm = Get-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMNameVM のディスクをアップグレードするには、先にその 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 :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ディスクへの参照が得られたので、ディスクの SKU を Premium_LRS に設定します。
$disk.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku]::new('Premium_LRS')次に、
Update-AzDiskコマンドレットを使用してマネージド ディスクを更新します。Update-AzDisk ` -ResourceGroupName $azResourceGroup ` -Disk $disk -DiskName $disk.Nameマネージド ディスクが更新されます。 次のコード例を使用して、ディスクの SKU がアップグレードされたことを検証します。
$disk.Sku.Nameディスクの新しい SKU を出力で確認することができます。
Premium_LRS最後に、
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 変数 を使用します。
まず、
Get-AzVMコマンドレットを使用してディスクがアタッチされている VM を選択します。$vm = Get-AzVM ` -ResourceGroupName $azResourceGroup ` -Name $azVMName次に、 Remove-AzVMDataDisk コマンドレットを使用して、VM からディスクをデタッチします。
Remove-AzVMDataDisk ` -VM $vm ` -Name $azDataDiskNameUpdate-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 構成を自動化する方法について学習してください。