Rocky Linuxの仮想マシン(Azure VM)にデータディスク追加

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

Rocky Linuxの仮想マシン(Azure VM)へのマネージドディスク(Managed Disks)の追加手順について纏めてみました。
マネージドディスク(Managed Disks)の作成から仮想マシン(Azure VM)への追加(アタッチ)はAzure PowerShellとAzure CLIでの手順を纏めています。
Rocky Linuxでのパーティション作成(Parted)、XFSファイルシステム作成、マウントまでの手順を纏めています。

※Rocky Linux release 8.7 (Green Obsidian)の仮想マシン(Azure VM)を利用しています。
※仮想マシン(Azure VM)はStandard B1s (1 vcpu、1 GiB メモリ)(一時ディスク有)を利用しています。

スポンサーリンク

Azure PowerShellを使ってデータディスクを作成、追加

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

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

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

設定値

作成したマネージドディスク(Managed Disks)の設定値です。
test-vm-03という仮想マシン(Azure VM)にデータディスクを追加します。

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

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

マネージドディスク(Managed Disks)を作成

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

    • New-AzDiskConfig:マネージドディスク(Managed Disks)のパラメータを設定
      • SKUの設定値はSkuNameを確認します
    • New-AzDisk:マネージドディスク(Managed Disks)を作成

New-AzDiskConfigでマネージドディスク(Managed Disks)の設定をします。
New-AzDiskのコマンドレットでは-Diskでマネージドディスク(Managed Disks)の設定値を指定します。
この設定値には$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

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

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

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

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

    • Get-AzDisk:マネージドディスク(Managed Disks)のプロパティを取得
    • Get-AzVM:仮想マシン(Azure VM)のプロパティを取得
    • Add-AzVMDataDisk:仮想マシン(Azure VM)にデータディスクを追加
    • Update-AzVM:仮想マシン(Azure VM)のプロパティを更新

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

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

#ディスク(Managed Disks)を仮想マシン(Azure VM)にアタッチ
$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 へのディスクの追加

マネージドディスク(Managed Disks)の設定値はAzure PowerShellの場合と同じです。

マネージドディスク(Managed Disks)を作成

az disk createコマンドを利用してマネージドディスク(Managed Disks)を作成します。

#リソースの設定値
$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 VM)のゾーンを指定している場合は、マネージドディスク(Managed Disks)も同じゾーンを指定する必要があります。

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

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

az vm disk attachを使って仮想マシン(Azure VM)にデータディスクを追加します。

    • az vm disk attach:マネージドディスク(Managed Disks)を仮想マシン(Azure VM)に追加

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

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

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

※今回はマネージドディスク(Managed Disks)と仮想マシン(Azure VM)が同じリソースグループであった為リソース名を利用しています。公式サイトはマネージドディスク(Managed Disks)のリソースIDを使った手順になっています。

データディスク作成と追加を同時に実施

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

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

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

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

Azure Portalを使った手順

Azure Portalを利用した仮想マシン(Azure VM)へのディスク(Managed Disks)追加方法についてはこちらに纏めています。

—広告—

追加したデータディスクを利用する(Rocky Linux)

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

Linux VM へのディスクの追加

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

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

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

パーティション作成

仮想マシン(Azure VM)をデータディスク追加しただけでは利用出来ません。
パーティション分割、ファイルシステム作成、マウントの作業が必要になります。
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について

仮想マシン(Azure VM)のバックアップを設定していた場合に注意点があります。
将来のディスクを含めるをチェックしていない場合にはバックアップ対象となりません。
念のため確認しておいた方が良いかもしれません。

最後に

Rocky Linuxの仮想マシン(Azure VM)へのデータディスク(Managed Disks)追加手順を確認してみました。
データディスク追加(アタッチ)はオンラインでも出来ました。

今後も色々試してみたいと思います。

Windows Serverでのデータディスク追加手順はこちらに纏めています。

データディスクサイズ変更はこちらで試しています。

スポンサーリンク