Rocky LinuxのAzure VMにデータディスクを追加する手順

2019-10-14Azure,Managed Disks,PowerShell/Azure CLI,Rocky Linux/CentOS,Virtual Machines

Rocky Linuxの仮想マシン(Azure VM)へディスク(Azure Managed Disks)を追加する手順です。
Azure PowerShellとAzure CLIを使用した、ディスクの作成から仮想マシンへの追加(アタッチ)までの手順を確認しています。
Rocky Linux上でのパーティション作成(parted)、XFSファイルシステムの作成、マウントまでの手順についても紹介しています。

※本記事内では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※本記事内では、Azure Managed Disksをディスクとして表記しています。
※Rocky Linux release 8.7 (Green Obsidian)の仮想マシンを利用しています。
※パーティションテーブルには、GPT(GUID Partition Table)を利用しています。

スポンサーリンク

Azure PowerShellを使用したデータディスクの作成から仮想マシンへの追加までの手順

公式サイトの手順を参考に進めます。

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

今回は、ディスクの作成と仮想マシンへの追加(アタッチ)を分けて実施しています。

データディスクの設定値

新規作成するデータディスクの設定値です。
test-vm-03という仮想マシンにデータディスクを追加します。

項目 設定値
リソースグループ test-rg-01
地域 東日本
ストレージの種類 Standard SSD(StandardSSD_LRS) 
サイズ test-vm-03
可用性ゾーン 3
仮想マシン名 test-vm-03
Lun 0

※可用性ゾーンは、仮想マシンと同じゾーンを指定する必要があります。
※LUNはデータディスクの論理ユニット番号であり、仮想マシン内で一意である必要があります。

データディスクを新規作成

New-AzDiskConfigとNew-AzDiskのコマンドレットを組み合わせて使用します。

New-AzDiskConfigでディスクを設定します。
New-AzDiskのコマンドレットでは-Diskでディスクの設定値を指定します。
この設定値には$DiskConfig(New-AzDiskConfigで設定した内容)を指定します。

#リソースの設定値
$RgName = 'test-rg-01’ #リソースグループ名

$Location = 'japaneast’ #地域
$StorageType = 'StandardSSD_LRS’ #SKU
$DataDiskName = 'test-vm-03-datadisk-01’ #ディスク名
$DataDiskSize = 4 #ディスクサイズ
$Zone = 3 #可用性ゾーン

#ディスク(Managed Disks)の設定
$DiskConfig = New-AzDiskConfig -SkuName $StorageType -Location $Location -CreateOption Empty -DiskSizeGB $DataDiskSize -Zone $Zone

#ディスク(Managed Disks)をデプロイ
New-AzDisk -DiskName $DataDiskName -Disk $DiskConfig -ResourceGroupName $RgName

※仮想マシンのゾーンを指定している場合は、ディスクも同じゾーンを指定する必要があります。
※ファイルに保存して実行するか、PowerShell上でコマンドレットを実行します。

Azure PowerShellの実行環境についてはこちらに纏めています。

データディスクを仮想マシンに追加(アタッチ)

仮想マシンにデータディスクを追加します。

    • Get-AzDisk:ディスクのプロパティを取得
    • Get-AzVM:仮想マシンのプロパティを取得
    • Add-AzVMDataDisk:仮想マシンにデータディスクを追加
    • Update-AzVM:仮想マシンのプロパティを更新

Get-AzVM、Get-AzDiskでリソースのプロパティを取得します。
Add-AzVMDataDiskで仮想マシンにデータディスクを追加します。
Update-AzVMで仮想マシンのプロパティを更新します。

#リソースの設定値
$RgName = 'test-rg-01’ #リソースグループ名
$VmName = 'test-vm-03’ #仮想マシン名
$location = 'japaneast’ #地域
$DataDiskName = 'test-vm-03-datadisk-01’ #データディスク名
$LunNum = 0 #Lun番号

#ディスク(Managed Disks)を仮想マシンにアタッチ
$DataDisk = Get-AzDisk -DiskName $DataDiskName -ResourceGroupName $RgName

$vm = Get-AzVM -Name $vmName -ResourceGroupName $RgName
$vm = Add-AzVMDataDisk -VM $vm -Name $DataDiskName -CreateOption Attach -ManagedDiskId $DataDisk.Id -Lun $LunNum
Update-AzVM -VM $vm -ResourceGroupName $rgName

※ファイルに保存して実行するか、PowerShell上でコマンドレットを直接実行します。
—広告—

Azure CLIを使用したデータディスクの作成から仮想マシンへの追加までの手順

公式サイトの手順を参考に進めます。

Linux VM へのディスクの追加

ディスクの設定値は、Azure PowerShellの場合と同じです。

データディスクを新規作成

az disk create コマンドを利用して、新しいディスクを作成します。

#リソースの設定値
$RgName = 'test-rg-01’ #リソースグループ名

$Location = 'japaneast’ #地域
$StorageType = 'StandardSSD_LRS’ #SKU
$DataDiskName = 'test-vm-03-datadisk-01’ #データディスク名
$DataDiskSize = 4 #ディスクサイズ
$Zone = 3 #可用性ゾーン

#ディスク(Managed Disks)をデプロイ
az disk create –resource-group $RgName –name $DataDiskName –location $Location –size-gb $DataDiskSize –sku $StorageType –zone $Zone

※可用性ゾーンは、仮想マシンと同じゾーンを指定する必要があります。
※LUNはデータディスクの論理ユニット番号であり、仮想マシン内で一意である必要があります。

Azure CLIが利用できる環境でコマンドを実行します。
Azure CLIの実行環境準備の手順については、こちらで紹介しています。

データディスクを仮想マシンに追加(アタッチ)

az vm disk attach コマンドを使用して、仮想マシンにデータディスクを追加します。

#リソースの設定値
$RgName = 'test-rg-01’ #リソースグループ名

$VmName = 'test-vm-03’ #仮想マシン名
$location = 'japaneast’ #地域
$DataDiskName = 'test-vm-03-datadisk-01’ #データディスク名

#ディスク(Managed Disks)を仮想マシンにアタッチ
az vm disk attach –resource-group $RgName –vm-name $VmName –name $DataDiskName

※今回は、ディスクと仮想マシンが同じリソースグループ内にあったため、リソース名を利用しています。公式サイトの手順では、ディスクのリソースIDが使用されています。

データディスクの新規作成と仮想マシンへの追加を同時に実施

az vm disk attach コマンドを利用すると、ディスクの作成と仮想マシンへの追加を同時に実施できます。
–new を利用すると、新規にディスクが作成されます。
ゾーンや地域 (Location) の指定は必要ありません。

#リソースの設定値
$RgName = 'test-rg-01’ #リソースグループ名

$VmName = 'test-vm-03’ #仮想マシン名
$StorageType = 'StandardSSD_LRS’ #SKU
$DataDiskName = 'test-vm-03-datadisk-01’ #データディスク名
$DataDiskSize = 4 #ディスクサイズ

#ディスク(Managed Disks)をデプロイして仮想マシンにアタッチ
az vm disk attach –resource-group $RgName –vm-name $VmName –name $DataDiskName –size-gb $DataDiskSize –sku $StorageType –new

Azure Portalを使ったデータディスク追加手順

Azure Portalを利用した仮想マシンへのデータディスク追加手順については、こちらで紹介しています。

—広告—

仮想マシンに追加したデータディスクをRocky Linuxで利用するための手順

公式サイトの手順を参考に進めます。

Linux VM へのディスクの追加

OS上でデータディスク追加状況を確認

lsblk、fdisk、df コマンドを利用して、データディスクの追加状況を確認します。
/dev/sdc としてデータディスクが認識されていますが、パーティションは未作成であり、OS からもマウントされていない状態であることが分かります。

    • lsblk:ブロックデバイスの情報を一覧表示
    • ls:ファイル一覧を表示
    • df:マウントされている場所の空き領域を表示

※ls -l /dev/disk/azure/scsi1 を使って確認すると、データディスクの Lun 番号に対応したデバイス情報が確認できます。

[root@test-vm-03]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
 sda1 8:1 0 100M 0 part /boot/efi
 sda2 8:2 0 1000M 0 part /boot
 sda3 8:3 0 1M 0 part
 sda4 8:4 0 8.9G 0 part /
sdb 8:16 0 4G 0 disk
 sdb1 8:17 0 4G 0 part /mnt
sdc 8:32 0 4G 0 disk #←まだパーティションが無い

[root@test-vm-03]# ls -l /dev/disk/azure/scsi1
lrwxrwxrwx. 1 root root 12 Nov 25 03:14 lun0 -> ../../../sdc #←Lun0がsdcである事が分かる

[root@test-vm-03]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs   334M  0       334M 0% /dev
tmpfs        370M  0       370M 0% /dev/shm
tmpfs        370M  9.7M  360M 3% /run
tmpfs        370M  0       370M 0% /sys/fs/cgroup
/dev/sda4  9.0G   1.3G  7.7G 15% /
/dev/sda2  994M  227M 768M 23% /boot
/dev/sda1  100M  5.8M  95M 6% /boot/efi
/dev/sdb1  3.9G   28K    3.7G 1% /mnt
tmpfs        74M    0       74M 0% /run/user/1000

※仮想マシンの一時ディスク領域は /dev/sdb1 となっており、/mnt にマウントされている状態でした。

パーティションを作成

仮想マシンにデータディスクを追加しただけでは、すぐに利用することはできません。
パーティション分割、ファイルシステムの作成、マウントといった作業が必要になります。
parted コマンドを利用してパーティションを作成します。

    • parted:パーティションの作成や削除
      • mklabel:パーティションテーブルのラベルを指定
      • mkpart:パーティションを作成

※パーティションテーブルには GPT(GUID Partition Table)を利用しています。
※追加したデータディスクのすべての領域を 1 つのパーティションとして利用しています。

[root@test-vm-03]# parted /dev/sdc
GNU Parted 3.2
Using /dev/sdc
Welcome to GNU Parted! Type 'help’ to view a list of commands.

(parted) print

Error: /dev/sdc: unrecognised disk label
Model: Msft Virtual Disk (scsi)
Disk /dev/sdc: 4295MB
Sector size (logical/physical): 512B/4096B
Partition Table: unknown #←unknownになっている
Disk Flags:
(parted) mklabel gpt
(parted) print
Model: Msft Virtual Disk (scsi)
Disk /dev/sdc: 4295MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt #←gptが指定されている
Disk Flags:

Number Start End Size File system Name Flags

(parted)  mkpart “Data Disk Partition 01" 0% 100%
(parted) print
Model: Msft Virtual Disk (scsi)
Disk /dev/sdc: 4295MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags 
1 1049kB 4294MB 4293MB Data Disk Partition 01 #←パーティションが作成されている

(parted) quit

※公式サイトの手順は、–script オプションを利用した方法となっています。–script を利用すると、引数にコマンドを指定することで対話することなく実行できます。

Warning: The resulting partition is not properly aligned for best performanceが表示される

mkpart コマンドをサイズで指定して実行した場合、エラーメッセージが表示されることがあります。
自分の場合は、上記の手順のように%指定にすることで、エラーを回避することができました。

※すべての領域を割り当てる場合は、開始を 0、終了を -1 にします。

(parted)  mkpart “Data Disk Partition 01" 0MiB -1MiB
Warning: You requested a partition from 0.00B to 4294MB (sectors 0..8386559).
The closest location we can manage is 17.4kB to 4294MB (sectors 34..8386559).
Is this still acceptable to you?
Yes/No? Yes
Warning: The resulting partition is not properly aligned for best performance:
34s % 2048s != 0s
Ignore/Cancel? 

XFSファイルシステムを作成

XFSファイルシステムを作成します。

    • mkfs:ファイルシステムの作成(フォーマット)

[root@test-vm-03]# mkfs.xfs /dev/sdc1
meta-data=/dev/sdc1 isize=512  agcount=4, agsize=262016 blks

—(中略)—

Discarding blocks…Done.

[root@test-vm-03]# lsblk –fs /dev/sdc1
NAME FSTYPE LABEL UUID MOUNTPOINT
sdc1 xfs 7a34387c-0ab2-410c-8c77-c1e2933f923c

※この時点ではマウントされていない為、マウントポイントは空になっています。

データディスクをマウント

/datadisk01 に追加したデータディスクをマウントします。
マウントすることで、追加したデータディスクを利用できるようになります。

    • mount:ファイルシステムをマウント
    • findmnt:マウントポイントを表示

df コマンドでも /datadisk01 が表示されることを確認できます。

※mkdir /datadisk01 で、マウントポイントとなるディレクトリを作成しています。

[root@test-vm-03]# mkdir /datadisk01
[root@test-vm-03]# mount /dev/sdc1 /datadisk01

[root@test-vm-03 ]# findmnt –type xfs
TARGET SOURCE FSTYPE OPTIONS
/        /dev/sda4 xfs rw,relatime,seclabel,attr2,inode64,logbufs=8,logb
ー/boot     /dev/sda2 xfs rw,relatime,seclabel,attr2,inode64,logbufs=8,logb
ー/datadisk01    /dev/sdc1 xfs rw,relatime,seclabel,attr2,inode64,logbufs=8,logb #←追加されている

[root@test-vm-03]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs   334M  0       334M 0% /dev
tmpfs        370M  0       370M 0% /dev/shm
tmpfs        370M  9.7M  360M 3% /run
tmpfs        370M  0       370M 0% /sys/fs/cgroup
/dev/sda4  9.0G   1.3G  7.7G 15% /
/dev/sda2  994M  227M 768M 23% /boot
/dev/sda1  100M  5.8M  95M 6% /boot/efi
/dev/sdb1  3.9G   28K    3.7G 1% /mnt
tmpfs        74M    0       74M 0% /run/user/1000
/dev/sdc1  4.0G   61M   4.0G 2% /datadisk01 #←追加されている

fstabに追記してマウントを永続化

mount コマンドを実行するだけでは、OS を再起動するとマウントが解除されてしまいます。
/etc/fstab に記載することで、マウントを永続化(再起動時にもマウント)できます。
UUID を指定することで、別のディスクが誤ってマウントされるのを防げます。
UUID は lsblk コマンドなどで調べることができます。ls コマンドでも確認できます。

fstab に追記した後、データディスクを取り外すと OS が起動できなくなる場合があります。
fstab 追記時に nofail オプションを追加することで、データディスクを取り外しても OS が起動できるようになります。

※今回の手順では、root ユーザーのみが書き込み権限を持つ状態となっています。適切な権限を付与します。

#UUIDを調べる
[root@test-vm-03]#
lsblk –fs /dev/sdc1
NAME FSTYPE LABEL UUID MOUNTPOINT
sdc1 xfs 7a34387c-0ab2-410c-8c77-c1e2933f923c /datadisk01

[root@test-vm-03]# ls -l /dev/disk/by-uuid/ |grep sdc
rwxrwxrwx. 1 root root 10 Nov 25 03:14 7a34387c-0ab2-410c-8c77-c1e2933f923c -> ../../sdc1

#fstabに追記(最後の行に追加)
[root@test-vm-03]#
 vi /etc/fstab

###追記内容###
UUID=7a34387c-0ab2-410c-8c77-c1e2933f923c /datadisk01 xfs defaults,,nofail 1 2

#OS再起動して確認
[root@test-vm-03]#
df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs   334M  0       334M 0% /dev
tmpfs        370M  0       370M 0% /dev/shm
tmpfs        370M  9.7M  360M 3% /run
tmpfs        370M  0       370M 0% /sys/fs/cgroup
/dev/sda4  9.0G   1.3G  7.7G 15% /
/dev/sdc1  4.0G   61M   4.0G 2% /datadisk01 #←再起動後もマウントされている
/dev/sda2  994M  227M 768M 23% /boot

/dev/sda1  100M  5.8M  95M 6% /boot/efi
/dev/sdb1  3.9G   28K    3.7G 1% /mnt
tmpfs        74M    0       74M 0% /run/user/1000
[root@test-vm-03]# ls -alh /datadisk01
drwxr-xr-x. 2 root root 6 Nov 25 01:53 .
dr-xr-xr-x. 19 root root 259 Nov 25 03:14 ..

データディスクを追加した場合のAzure Backup設定に関する注意点

仮想マシンのバックアップを設定している場合、注意点があります。
将来のディスクを含めるにチェックを入れていない場合、新たに追加したディスクはバックアップの対象になりません。
利用している場合は、念のため、バックアップ設定を確認しておきます。

最後に

Rocky Linux の仮想マシンにデータディスクを追加する手順を確認しました。
データディスクの追加(アタッチ)は、オンラインでも可能で、とても簡単に設定できました。

引き続き、いろいろ試してみたいと思います。

Windows Serverの仮想マシンへのデータディスク追加手順は、こちらで紹介しています。

データディスクのサイズ変更手順は、こちらで紹介しています。

スポンサーリンク