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

2019-10-14Azure,Managed Disks,PowerShell/Azure CLI,RockyLinux/CentOS

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)の仮想マシンを利用しています。

スポンサーリンク

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

※仮想マシンのゾーンを指定している場合は、ディスクも同じゾーンを指定する必要があります。

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を再起動するとマウントが外れてしまいます。
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の仮想マシンへのデータディスク追加手順はこちらで紹介しています。

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

スポンサーリンク