Azure Virtual MachineのManaged Disksサイズを変更する(FIOでIOPSを測定もする)

 

Virtual Machine のデータディスクの拡張を試してみました。
また、Managed DiskはサイズによってもIOPSが違います。今回は併せてManaged Diskのサイズ拡張による、IOPSの変化をFIOで測定してみました。

今回は下記条件で実施しています。

    • OSはCent OS 7.7
    • Managed DISKはPremium SSDを利用
    • 32GB→512GBに拡張
    • データディスクは/dev/sdc
    • データディスクは/mnt/diskにマウント済みである。
    • IOPSはFIOで測定

※念のため、必ずバックアップを取得したうえで作業を実施して下さい。

1 .Virtual Machineのデータディスクサイズ変更

データディスクのサイズ変更を、Azure Portal上で実施します。
作業はVirtual Machine 停止させて実施します。
データディスクのアタッチ、デタッチはオンラインでも可能ですが、アタッチ済みのディスクの構成変更は、仮想マシンを停止する必要があります。(一度デタッチ後に構成変更して再アタッチという手も。。。)
対象のVirtual Machineを選択後、SettingsにあるDisksをクリックします。以下の画面が表示されますので、拡張するデータディスクをクリックします。

Disksの画面に移動するので、構成をクリックします。以下の画面が表示されますので、アカウントの種類やサイズの項目を変更します。今回はアカウントの種類をPremium SSDサイズを512GBとし保存をクリックします。

保存が完了したら、Virtual Machineを起動します。

2. OS側での、ボリューム拡張設定

サーバを起動した段階では、Azure側で実施したディスクの拡張はデバイスとしては認識されていますが、ボリュームとしては拡張されていない状態です。

[ユーザー名@ホスト名 tmp]$ fdisk -l /dev/sdc[

Disk /dev/sdc: 549.8 GB, 549755813888 bytes, 1073741824 sectors

[ユーザー名@ホスト名 tmp]$ df -h | grep /dev/sdc

/dev/sdc1 32G 6.1G 24G 21% /mnt/disk

fdiskコマンドでボリュームのサイズを変更します。

[ユーザー名@ホスト名 tmp]$ fdisk /dev/sdc

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

コマンド (m でヘルプ): p

Disk /dev/sdc: 549.8 GB, 549755813888 bytes, 1073741824 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk label type: dos
ディスク識別子: 0x00140f2e

デバイス ブート 始点 終点 ブロック Id システム
/dev/sdc1 2048 67108863 33553408 83 Linux

コマンド (m でヘルプ): d
Selected partition 1
Partition 1 is deleted

コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-1073741823, 初期値 2048):”入力せずにEnter”
初期値 2048 を使います
Last sector, +sectors or +size{K,M,G} (2048-1073741823, 初期値 1073741823):”入力せずにEnter”
初期値 1073741823 を使います
Partition 1 of type Linux and of size 512 GiB is set

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。

WARNING: Re-reading the partition table failed with error 16: デバイスもしくはリソースがビジー状態です.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
ディスクを同期しています。

以上の操作が完了したら、パーティションを拡張します。これで作業完了です。

[ユーザー名@ホスト名 tmp]$ resize2fs /dev/sdc1

確認してみると、サイズが変わっているのがわかります。

[ユーザー名@ホスト名 tmp]$ df -h | grep /dev/sdc 

/dev/sdc1 504G 6.1G 477G 2% /mnt/disk

3.FIOでManaged DiskのIOPSを測定

FIOのセットアップはyumコマンド(epelは有効)でOKです。関連パッケージを含めてインストールされます。

[ユーザー名@ホスト名 tmp]$ yum -y install fio

FIOのコマンドは以下のサイトを参考にしています。

https://qiita.com/toshihirock/items/fa4d310115e6921ab0ac

実行してみると以下のような結果になりました。ランダムreadでもスペック通りのIOPSが出ています。シーケンシャルでもおおむね同じ数値が出ています。Writeが遅い原因は不明です。

#シーケンシャルwriteの場合
 write: IOPS=402, BW=1610KiB/s (1649kB/s)(15.0MiB/10154msec)
#シーケンシャルreadの場合
 read: IOPS=2347, BW=9391KiB/s (9617kB/s)(92.3MiB/10069msec)

#ランダムwriteの場合
 write: IOPS=395, BW=6332KiB/s (6484kB/s)(69.8MiB/11295msec)
#ランダムreadの場合
 read: IOPS=2337, BW=36.5MiB/s (38.3MB/s)(383MiB/10490msec)

なお、いくつかのパターンで試すと、”ほぼ”Managed Diskの指標通りになっている事がわかります。

#Standard HDD(32GB)の場合(シーケンシャルread)
 read: IOPS=562, BW=2251KiB/s (2305kB/s)(22.3MiB/10131msec)

#Standard HDD(32GB)の場合(シーケンシャルwrite)
  write: IOPS=152, BW=610KiB/s (625kB/s)(6296KiB/10316msec)

#Premium SSD(32GB)の場合(シーケンシャルread)
  read: IOPS=122, BW=488KiB/s (500kB/s)(5148KiB/10544msec)

#Premium SSD(32GB)の場合(シーケンシャルwrite)
  write: IOPS=122, BW=489KiB/s (500kB/s)(5388KiB/11028msec)

 

 

Azure Virtual Machineを別テナントに移してみた

 

Azureのテナント間での仮想マシンを移行を試してみました。

仮想マシンのManaged DisksをいったんBLOBストレージにVHDファイルとして保管する必要があるようでした。VHDファイルをManaged Disksに戻し仮想マシンを作成することで実現出来ました。

Power Shellを利用して仮想マシンのテナント間の移行を実施してみました。

主な実施手順は以下の通りになります。

    • Managed Disksを別テナントのBlobストレージにコピーする
    • コピーしたファイルをManaged Disksに戻す
    • Managed DisksからVMを作成する(今回は割愛しています。)

※なお、同じテナントの別サブスクリプションへは、Managed Disksのまま移行が可能です。

1 .Managed Disksを別テナントのBlobストレージにコピーする

以下のサイトを参考に、Managed Disksをダウンロードせずに、直接Blobストレージにコピーしています。なお、サイト記載のサンプルをAz化しています。

https://docs.microsoft.com/ja-jp/archive/blogs/jpaztech/export-managed-disks-to-vhd

事前にコピー先のテナントには、ストレージアカウントとBlobストレージのコンテナを準備しておきます。
また、各テナントにログインが必要になりますので、適時ログインして下さい。

※本コマンドを発行前には、対象の仮想マシンは停止しておいてください。

#Managed Disk Copy PowerShell

# コピー元へのログイン
Login-AzAccount
Select-AzSubscription -SubscriptionId  “コピー元のサブスクリプション ID”

# コピー元のディスクパラメータ
$sourcergname = “コピー元リソースグループ名”
$diskname = “コピー対象のManagedDisk名”

# SAS URL の作成
$mdiskURL = Grant-AzDiskAccess -ResourceGroupName $sourcergname -DiskName $diskname -Access Read -DurationInSecond 3600

# コピー先の情報
# コピー先テナントにログイン

Login-AzAccount
Select-AzSubscription -SubscriptionId  “コピー先のサブスクリプション ID”

# コピー先の各種パラメーター
$targetrgname = “コピー先リソースグループ名”
$storageacccountname = “コピー先ストレージアカウント名”
$countainername = “コピー先コンテナ名”

$storageacccountkey = Get-AzStorageAccountKey -ResourceGroupName $targetrgname -Name $storageacccountname
$storagectx = New-AzStorageContext -StorageAccountName $storageacccountname -StorageAccountKey $storageacccountkey[0].Value
$targetcontainer = Get-AzStorageContainer -Name $countainername -Context $storagectx

$destdiskname = “コピー後のファイル名”
$sourceSASurl = $mdiskURL.AccessSAS

# コピー
$ops = Start-AzStorageBlobCopy -AbsoluteUri $sourceSASurl -DestBlob $destdiskname -DestContainer $targetcontainer.Name -DestContext $storagectx
Get-AzStorageBlobCopyState -Container $targetcontainer.Name -Blob $destdiskname -Context $storagectx -WaitForComplete

 

.コピーしたファイルをManaged Disksに戻す

コピーしたファイルをコピー先のテナントでManaged Disksに戻します。以下のサイトを参考に戻すPower Shellを作ってみました。

https://docs.microsoft.com/ja-jp/archive/blogs/jpaztech/convertvhdtomanageddiskdeployvm

複数のサブスクリプションにログインした状態での作業となるため、作業ミス防止用に明示的にサブスクリプションを指定を追加しています。

vhdのURLは、以下の方法で確認が可能です。
Azure Portal上で、ストレージ アカウントを選択→Blobを選択→ファイルが保管された コンテナーを選択→対象のディスクファイルを選択。プロパティが表示されますが、この中のURLがVHDのURLとなります。

なお、OS Typeを指定しないと、後の作業で仮想マシン作成ボタンが押せない状態となります。

# VHD→ManagedDisk PowerShell

#Select Subscription
$SubscriptionId =“コピー先のサブスクリプションID”
Select-AzSubscription -SubscriptionId $SubscriptionId

#Parameter
$ResourceGroupName = “ManagedDiskのRG名”
$location = “ManagedDiskのロケーション”
$DiskName = “作成するManagedDisk名”
$vhdUri = “コピーしたファイルのURL”
$AccountType =“ストレージアカウントのType (ex; Standard_LRS)”<
$OsType = ”ManagedDiskのOS Type (ex; Linux)”

#Disk Config
$DiskConfig = New-AzDiskConfig `
-AccountType $AccountType `
-Location $Location `
-CreateOption Import `
-SourceUri $vhdUri `
-OsType $OsType

#VHD → Managed Disk
New-AzDisk `
-DiskName $DiskName `
-Disk $DiskConfig `
-ResourceGroupName $ResourceGroupName

完了すると、新たにManaged Disksができています。

作成したManaged Disksを選択すると、仮想マシンの作成というボタンが表示されてますのでクリックします。そうすると仮想マシンが作成されます。

 

ARMテンプレートを使ってSQL Serverをデプロイしてみた(ディスクサイズを指定)

 

Azure環境にVirtual Machine(Windows SQL Server)をデプロイすると、デフォルトでデータディスクが1TBで作成されてしまいます。後で修正も可能なのですが、面倒なのでデプロイ時からディスクサイズを制限するようにARMテンプレートを作成してみました。

1 .Windows SQL Serverをデプロイする為のJsonファイルを作成する。

基本的な仮想マシンの設定で作っています。適時値を入れてください。

今回は簡易的なものなので、OSのUserとパスワードは平文で記載しています。大体の設定値をvariablesで定義するように構成しています。NICとOSディスク名は仮想マシンの値を変数として取得する形で作成しています。 

データディスクのサイズは、diskSizeGBの値で指定が可能です。(今回は128GBで設定しています。)

まず、以下のPowerShellで、Windows SQL ServerのVMイメージを確認します。

#Image List get

$location=“japaneast”

#pubName Get
#Get-AzVMImagePublisher -Location $location

$pubName=“MicrosoftSQLServer”

#offer Name Get
#Get-AzVMImageOffer -Location $location -Publisher $pubName

$offerName=“SQL2008R2SP3-WS2008R2SP1”
Get-AzVMImageSku -Location $location -Publisher $pubName -Offer $offerName

JSONテンプレートサンプルになります。(今回はSQL Server 2008を選択しています。)

{
“$schema”: “https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#”,
“contentVersion”: “1.0.0.0”,
“variables”: {
  “location”: “japaneast”,

  “vmName”: “VM名”,
  “vmSize”: “Standard_B2s”,

  “adminUsername”: “User Name”,
  “adminPassword”: “Password”,

  “publisher”: “MicrosoftSQLServer”,
  “offer”: “SQL2008R2SP3-WS2008R2SP1”,
  “sku”: “Standard”,

  “nicName”: “[concat(variables(‘vmName’),’_nic’)]”,
  “addressPrefix”: “XXX.XXX.XXX.XXX/XX”,
  “subnetName”: “Subnet Name”,
  “subnetPrefix”: “XXX.XXX.XXX.XXX/XX”,
  “virtualNetworkName”: “VNET Name”,
  “subnetRef”: “[resourceId(‘Microsoft.Network/virtualNetworks/subnets’, variables(‘virtualNetworkName’), variables(‘subnetName’))]”,

  “diskName”: “[concat(variables(‘vmName’),’_os_disk’)]”,
  “DatadiskName”: “[concat(variables(‘vmName’),’_Data_disk’)]”,
  “storageAccountType”: “Standard_LRS”,

  “storageAccountName”: “Storage Account Name”

},
 “resources”: [
 {
  “type”: “Microsoft.Network/virtualNetworks”,
  “apiVersion”: “2018-11-01”,
  “name”: “[variables(‘virtualNetworkName’)]”,
  “location”: “[variables(‘location’)]”,
  “properties”: {
  “addressSpace”: {
  “addressPrefixes”: [
  “[variables(‘addressPrefix’)]”
  ]
},
 “subnets”: [
 {
  ”name”: “[variables(‘subnetName’)]”,
  ”properties”: {
  ”addressPrefix”: “[variables(‘subnetPrefix’)]”
    }
   }
  ]
 }
},
{
 ”type”: “Microsoft.Network/networkInterfaces”,
 ”apiVersion”: “2018-11-01”,
 ”name”: “[variables(‘nicName’)]”,
 ”location”: “[variables(‘location’)]”,
 ”dependsOn”: [
 ”[resourceId(‘Microsoft.Network/virtualNetworks/’, variables(‘virtualNetworkName’))]”
],
“properties”: {
 ”ipConfigurations”: [
 {
 ”name”: “ipconfig1”,
 ”properties”: {
 ”privateIPAllocationMethod”: “Dynamic”,
 ”subnet”: {
 ”id”: “[variables(‘subnetRef’)]”
     }
    }
   }
  ]
 }
},
{
 ”type”: “Microsoft.Compute/virtualMachines”,
 ”apiVersion”: “2018-10-01”,
 ”name”: “[variables(‘vmName’)]”,
 ”location”: “[variables(‘location’)]”,
 ”dependsOn”: [
 ”[resourceId(‘Microsoft.Network/networkInterfaces/’, variables(‘nicName’))]”
 ],
 ”properties”: {
 ”hardwareProfile”: {
 ”vmSize”: “[variables(‘vmSize’)]”
 },
 ”osProfile”: {
 ”computerName”: “[variables(‘vmName’)]”,
 ”adminUsername”: “[variables(‘adminUsername’)]”,
 ”adminPassword”: “[variables(‘adminPassword’)]”
 },
 ”storageProfile”: {
 ”imageReference”: {
 ”publisher”: “[variables(‘publisher’)]”,
 ”offer”: “[variables(‘offer’)]”,
 ”sku”: “[variables(‘sku’)]”,
 ”version”: “latest”
 },
 ”osDisk”: {
 ”createOption”: “FromImage”,
 ”name”: “[variables(‘diskname’)]”,
 ”managedDisk”: {
 ”storageAccountType”: “[variables(‘storageAccountType’)]”
 }
  },
 ”dataDisks”: [
 {
 ”lun”: 0,
 ”name”: “[variables(‘datadiskname’)]”,

 ”createOption”: “Empty”,
 ”managedDisk”: {
  ”storageAccountType”: “[variables(‘storageAccountType’)]”
  },
  ”diskSizeGB”: 128

  }
 ]
},
 ”networkProfile”: {
 ”networkInterfaces”: [
 {
 ”id”: “[resourceId(‘Microsoft.Network/networkInterfaces’,variables(‘nicName’))]”
 }
 ]
},
 ”diagnosticsProfile”: {
 ”bootDiagnostics”: {
 ”enabled”: true,
 ”storageUri”: “[concat(‘https://’, variables(‘storageAccountName’), ‘.blob.core.windows.net’)]”
       }
     }
   }
  }
 ]

}

2.デプロイする

テンプレート機能にJSONテンプレートを登録します。以下の内容が表示されますので、名前と説明を入力しOKを表示します。

そうすると、テンプレート画面が表示されますので、デフォルト表示されている内容を削除し、1)で作成したテンプレートをペーストしOKボタンをクリックします。 保存が完了したテンプレートを選択すると以下の画面が表示されますので、リソースグループ名を登録、使用条件に同意し、購入ボタンをクリックします。

デプロイが完了したら、リソースに移動して確認します。無事完成しているかと思います。

3.残念ながら、登録されているテンプレートを直接呼び出す方法はないそうです。(2019年12月現在)

現時点では、Azure Portalからのデプロイしかできません。

PowerShell等からのデプロイは、JSONファイルをローカルやGitHubを指定してのデプロイになります。

Azure Virtual Machine起動/停止時にManaged DisksのAccount Typeを変更して使用料金を削減する

 

Azure Managed Disksは利用するAccount Typeにより料金が異なります。この利用料金はVirtual Machine停止時にも料金が発生します。
Virtual Machine停止時にPremiumSSD等からStandard HDDに戻す事でランニングコストを抑えることができます。
今回は、Virtual Machine起動時や停止時に、Managed DiskのAccount Typeを変更するPowerShellを作って、試してみました。

作成にあたっては、以下のサイトを参考にしています。

https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/convert-disk-storage

1 .Virtual Machine起動時のPowerShell

以下のサンプルでは、Virtual Machine起動時に、接続されているManaged Diskが、すべてStandard SSDとなります。
なお、PowerShell実行時に、Virtual Machine名を変数として指定し、実行するようにしています。(VM IDを2回指定してますが、気にしないでください。)

#Vm Start (Changed Disk Type)

#VM名を固定にする場合は、下記の通り指定します。(param部分はコメントアウト)
#$vmName =”VM Name”

param (
            [string] [Parameter(Mandatory=$true)] $vmName
            )

$resourceGroupName =“RG Name”
$storageType =“StandardSSD_LRS”

$VM = Get-AzVM -Name $vmName -resourceGroupName $resourceGroupName
$vmDisks = Get-AzDisk | Where { $_.ResourceGroupName -eq $resourceGroupName } | Where { $_.ManagedBy -eq $VM.id }

foreach ($disk in $vmDisks)
 {
  if ($disk.ManagedBy -eq $vm.Id)
  {
  $diskUpdateConfig = New-AzDiskUpdateConfig –AccountType $storageType
  Update-AzDisk -DiskUpdate $diskUpdateConfig -ResourceGroupName $resourceGroupName `
  -DiskName $disk.Name
  }
}

Start-AzVM -ResourceGroupName $resourceGroupName -Name $vmName

起動対象のVirtual Machine 名を指定し、PowerShell実行します。(今回はPowerShell名を、VM_Start_SelectDiskType.ps1としています。)

c:\VM_Start_SelectDiskType.ps1 -vmName VM Name

.Virtual Machine停止時のPowerShell

以下のサンプルでは、Virtual Machine停止時に、接続されているManaged Diskが、すべてStandard HDDとなります。

#Vm Stop (Changed Disk Type)

#VM名を固定にする場合は、下記の通り指定します。(param部分はコメントアウト)
#$vmName =”VM Name”

param (
[string] [Parameter(Mandatory=$true)] $vmName
   )

  $resourceGroupName =“RG Name”
  $storageType =“Standard_LRS”

 Stop-AzVM -ResourceGroupName $resourceGroupName -Name $vmName -Force

 $VM = Get-AzVM -Name $vmName -resourceGroupName $resourceGroupName
 $vmDisks = Get-AzDisk | Where { $_.ResourceGroupName -eq $resourceGroupName } | Where { $_.ManagedBy -eq $VM.id }

foreach ($disk in $vmDisks)
{
 if ($disk.ManagedBy -eq $vm.Id)
  {
  $diskUpdateConfig = New-AzDiskUpdateConfig –AccountType $storageType
  Update-AzDisk -DiskUpdate $diskUpdateConfig -ResourceGroupName $resourceGroupName `
  -DiskName $disk.Name

 }
}

停止対象のVirtual Machine 名を指定し、PowerShell実行します。(今回はPowerShell名を、VM_Stop_SelectDiskType.ps1としています。)

c:\VM_Stop_SelectDiskType.ps1 -vmName VM Name

3 .各Managed DiskのAccount Typeについて

以下のPowerShellで、各Managed DiskのAccount Typeを表示する事ができます。変更後の確認に使えます。

Get-AzDisk -resourceGroupName  RG Name |ft Name,@{Name=”Name”; Expression={$_.Sku.Name}}

 

Azure Virtual Machine(CnetOS 7)にデータディスクを追加する

 

今回はAzure Virtual Machine (CentOS 7) へのデータディスク(Managed Disks(Standard SSD))追加を試してみました。

マイクロソフト様のサイトを参考に検証を進めてみました。

1.Power ShellでデータDISKを追加

以下のサイトを参考に仮想マシンにデータディスクを追加するPower Shellを作ってみました。

https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/attach-disk-portal

$rgName = ‘RG名’
$vmName = ‘DISK追加するVM名’
$location = ‘japaneast’
#今回は、Standard SSDなので下記を指定。

$storageType = ‘StandardSSD_LRS’
$dataDiskName = ‘VM名_CashDisk_1(追加するDISK名)’
#今回は、最低の4GBを指定。
$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $location -CreateOption Empty -DiskSizeGB 4
$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 1Update-AzVM -VM $vm -ResourceGroupName $rgName

2.Linux上でマウントする。

以下のマイクロソフト様のサイトに記載の通りの手順になります。

https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/attach-disk-portal

まず、仮想マシンにディスクが追加された状況をOS上で確認します。

[root@test-01]# dmesg | grep SCSI

[ 0.342149] SCSI subsystem initialized
[ 0.987188] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 248)
[ 2.867663] sd 2:0:0:0: [sda] Attached SCSI disk
[ 2.873137] sd 3:0:1:0: [sdb] Attached SCSI disk
[3965178.687477] sd 5:0:0:1: [sdc] Attached SCSI disk

今回の場合、sdcが追加されているので、fdsikでパーティションを作成します。

今回は新しいパーティションを作成するので、コマンドはnで実施します。

[root@akbwg-web-01 httpd]# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x07ecc989.The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-8388607, 初期値 2048):
初期値 2048 を使います
Last sector, +sectors or +size{K,M,G} (2048-8388607, 初期値 8388607):
初期値 8388607 を使います
Partition 1 of type Linux and of size 4 GiB is setコマンド (m でヘルプ): w
パーティションテーブルは変更されました!ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

最後にmkfsコマンドでディスクをフォーマット後、マウントします。
今回はマウントポイントを/mnt/ramdiskとしてます。
UUIDを指定したマウントを行う為、/dev/sdc1のUUIDをコピーしてfstabを作成します。

[root@test-01]# mkfs -t ext4 /dev/sdc1
[root@test-01]# blkid

/dev/sda1: UUID=”fa2f8157-XXXXX-XXXXXX” TYPE=”xfs”
/dev/sda2: UUID=”12907c8a-XXXXX-XXXXXX” TYPE=”xfs”
/dev/sdb1: UUID=”bb32dd89-XXXXX-XXXXXX” TYPE=”ext4″
/dev/sdc1: UUID=”66891613-XXXXX-XXXXXX” TYPE=”ext4″

[root@test-01]# mkdir /mnt/ramdisk
[root@test-01]# vi /etc/fstab

##fstabに以下を追記します。
UID=66891613-XXXXX-XXXXXX /mnt/ramdisk ext4 defaults,nofail 0 0

OS再起動してマウントされていることを確認します。

使ってないAzure Managed Disksやネットワークインターフェースをまとめて削除する

 

Virtual Machineを削除した場合でも、Azure Managed Disksやネットワークインターフェースは削除されません。
特に、Managed Disksは課金が継続されるため、不必要な場合は削除しておいた方がお得です。

Virtual Machineを削除した場合に、都度個別に削除する作業も結構面倒ですし忘れがちです。

今回はリソースグループ内で利用されていないManaged Disksやネットワークインターフェースをまとめて削除するPowerShellを作ってみました。

1.Managed Disksをまとめて削除するPowerShell

以下のPowerShellを実行すると、使用されていない、Managed Disks一覧の取得、削除が出来ます。

#対象のRG名を指定
$rgName =”RG名”
$deleteUnattachedDisks=0$managedDisks = Get-AzureRmDisk foreach ($md in $managedDisks) {
#リソースグループを指定しない場合は、これに置き換える。
#if$md.ManagedBy -eq $null)if($md.ManagedBy -eq $null| Where { $md.ResourceGroupName -eq $rgName }){

#削除の場合は1、確認だけの場合は0を指定

if($deleteUnattachedDisks -eq 1){

Write-Host “Deleting unattached Managed Disk with Id: $($md.Id)

#確認メッセージを表示する場合は、-Forceを削除すること

$md | Remove-AzureRmDisk -Force

Write-Host “Deleted unattached Managed Disk with Id: $($md.Id)

}else{

$md.Id

} } }

削除された場合は、以下のようなメッセージが表示されます。

Deleted unattached Managed Disk with Id: /subscriptions/”SubscriptionID”/resourceGroups/”RG名”/providers/Microsoft.Compute/disks/”Disk名”

2.ネットワークインターフェースをまとめて削除するPowerShell

Managed Disksと同様に、使用されていないネットワークインターフェースも、一覧の取得、削除が出来ます。

#対象のRG名を指定
$rgName =”RG名”

$deleteNetworkIF=1$NetworkIF = Get-AzureRmNetworkInterface foreach ($nic in $NetworkIF) {

#リソースグループを指定しない場合は、これに置き換える。
#if$nic.VirtualMachine -eq $null)

if($nic.VirtualMachine -eq $null| Where { $nic.ResourceGroupName -eq $rgName }){

#削除の場合は1、確認だけの場合は0を指定

if($deleteNetworkIF -eq 1){

Write-Host “Deleting unattached Network Interface with Name: $($nic.name)

#確認メッセージを表示する場合は、-Forceを削除すること

$md | Remove-AzureRmNetworkInterface -Force

Write-Host “Deleting unattached Network Interface with Name: $($nic.Name)

}else{

$nic.Id

} } }

削除された場合は、以下のようなメッセージが表示されます。

Deleted unattached Managed Disk with Id: /subscriptions/”SubscriptionID”/resourceGroups/”RG名”/providers/Microsoft.Network/networkInterfaces/”ネットワークインターフェース名”