前回は、Azure上にデプロイしたRed Hat Enterprise Linux(RHEL)9のVMで、OSディスクを拡張する手順を説明しました。
Azure Red Hat Enterprise Linux 仮想マシンのディスク操作手順~OSディスク~ - JBS Tech Blog
本記事では、データディスクの操作手順について記載します。
※ RHEL9のVMはLVM構成のものを使用しています
はじめに
本記事では、データディスクに関して大きく以下3つの手順を説明します。
データディスク新規追加
Azureポータルから新規のディスクを割り当てる際、OS上でフォーマットし、マウントする操作が必要です。
データディスク拡張
Azureポータルからディスクを拡張する場合、OS上でパーティション拡張操作も必要です。
データディスクアンマウント
データディスクをアンマウントする場合、OS上とAzureポータルの両方でアンマウント操作が必要です。
また、Azureではアンマウントしたディスクに対しても課金が発生するため、利用が終了したディスクは速やかに削除する必要があります。
データディスク新規追加
操作手順
新規ディスク追加(Azure)
1. Azureポータルに、VMの共同管理者以上の権限があるアカウントでログインします。
2. 対象VMの「ディスク」画面で[新しいディスクを作成し接続する]をクリックします。
3. 新規ディスクの情報を入力し[適用]をクリックします。
4. 対象VMの「ディスク」画面で、新規ディスクが表示されることを確認します。
作業前の状態確認(OS)
1. VMにSSH接続し、sudoコマンドでrootに昇格します。
2. 以下のコマンドを実行し、現在のディスク構成を確認します。実行結果から、パーティションの存在しない「sdc」が確認できます。
※ 個々のパーティションのデバイス名は”NAME”列に記載されます。
# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
<実行結果>
NAME FSTYPE SIZE MOUNTPOINT
/dev/sda 64G
|-/dev/sda1 vfat 200M /boot/efi
|-/dev/sda2 xfs 500M /boot
|-/dev/sda3 1M
|-/dev/sda4 LVM2_member 63.3G
|-/dev/mapper/rootvg-tmplv xfs 2G /tmp
|-/dev/mapper/rootvg-usrlv xfs 10G /usr
|-/dev/mapper/rootvg-homelv xfs 1G /home
|-/dev/mapper/rootvg-varlv xfs 8G /var
|-/dev/mapper/rootvg-rootlv xfs 2G /
/dev/sdb 8G
|-/dev/sdb1 ext4 8M /mnt
/dev/sdc 32G ←★データディスクのサイズ
データディスクのパーティション構成(OS)
1. 以下のコマンドを実行し、新規ディスクのパーティションを構成します。
※ 対象のデバイス名は、先の「作業前の状態確認」手順2.で確認した「/dev/sdc」です。
# parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
<実行結果>
出力なし
VG作成(OS)
1. 以下のコマンドを実行し、VGを新規作成します。本記事ではVG名を「vg01」とします。
# vgcreate vg01 /dev/sdc1
<実行結果>
Physical volume "/dev/sdc1" successfully created.
Volume group "vg01" successfully created
LVM作成(OS)
1. 以下のコマンドを実行し、LVMを新規作成します。本記事ではLVM名を「lv01」とします。
# lvcreate --name lv01 --extents 100%FREE vg01
<実行結果>
Logical volume "lv01" created.
ファイルシステム作成(OS)
1. 以下のコマンドを実行し、前の手順で作成したLVMパーティションのファイルシステムを拡張します。デバイス名は「/dev/mapper/<VG名>-<LVM名>」です。本記事ではデバイス名を「/dev/mapper/vg01-lv01」とします。
# mkfs.xfs /dev/mapper/vg01-lv01
<実行結果>
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=2096896 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=8387584, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Discarding blocks...Done.
マウント設定
1. 以下のコマンドを実行し、データディスクのマウントポイントを作成します。本記事では、マウントポイントを「/data」とします。
# mkdir /data
<実行結果>
出力なし
2. 以下のコマンドを実行し、ファイル「/etc/fstab」に以下の書式でデータディスクのマウント設定を追加します。
<デバイス名> <マウントポイント> xfs defaults 0 0
# vi /etc/fstab
<最終行に以下追記>
/dev/mapper/vg01-lv01 /data xfs defaults 0 0
3. 以下のコマンドを実行して、fstabの変更をOSに反映させます。
# systemctl daemon-reload
<実行結果>
出力なし
4. 以下のコマンドを実行し、fstabのマウント設定を読み込みます。
# mount -a
<実行結果>
出力なし
5. 以下のコマンドを実行し、変更後のディスク構成を確認します。実行結果から、「/dev/sdc」にLVMパーティションが構成されたことがわかります。
# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
<実行結果>
NAME FSTYPE SIZE MOUNTPOINT
/dev/sda 64G
|-/dev/sda1 vfat 200M /boot/efi
|-/dev/sda2 xfs 500M /boot
|-/dev/sda3 1M
|-/dev/sda4 LVM2_member 63.3G
|-/dev/mapper/rootvg-tmplv xfs 2G /tmp
|-/dev/mapper/rootvg-usrlv xfs 10G /usr
|-/dev/mapper/rootvg-homelv xfs 1G /home
|-/dev/mapper/rootvg-varlv xfs 8G /var
|-/dev/mapper/rootvg-rootlv xfs 2G /
/dev/sdb 8G
|-/dev/sdb1 ext4 8M /mnt
/dev/sdc 32G
|-/dev/sdc1 VM2_member 32G
|-/dev/mapper/vg01-lv01 xfs 32G ←★データディスクパーティション
6. 以下のコマンドを実行し、ディスク構成を確認します。実行結果から、「/data」にデータディスクがマウントされていることがわかります。
# df -h
<実行結果>
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 722M 8.7M 713M 2% /run
efivarfs 128K 35K 89K 29% /sys/firmware/efi/efivars
/dev/mapper/rootvg-rootlv 2.0G 71M 1.9G 4% /
/dev/mapper/rootvg-usrlv 10G 1.6G 8.4G 16% /usr
/dev/sda2 436M 131M 306M 31% /boot
/dev/mapper/rootvg-homelv 960M 40M 921M 5% /home
/dev/mapper/rootvg-tmplv 2.0G 47M 1.9G 3% /tmp
/dev/sda1 200M 7.1M 193M 4% /boot/efi
/dev/mapper/rootvg-varlv 8.0G 642M 7.4G 8% /var
/dev/mapper/vg01-lv01 32G 261M 32G 1% /data ←★データディスク
/dev/sdb1 7.8G 28K 7.4G 1% /mnt
tmpfs 361M 0 361M 0% /run/user/1000
まとめ
下表に、データディスク新規追加時に必要な操作をまとめます。
作業有無 | 作業対象 | |
---|---|---|
1.VM停止 | 不要 | - |
2.ディスク追加 | 必要 | Azureポータル |
3.パーティション構成 | 必要 | OS |
4.VG構成 | 必要 | OS |
5.LVM構成 | 必要 | OS |
6.ファイルシステム構成 | 必要 | OS |
7.マウントポイント構成 | 必要 | OS |
8.再起動 | 不要 | - |
データディスク拡張
前提条件
本記事ではデータディスク拡張前にVMの停止(割り当て解除)を実施します。
データディスク拡張は、一部の条件に合致する場合はVMの停止をせずに実施することが可能です。詳細は以下公開情報から確認が可能です。
Linux VM の仮想ハード ディスクを拡張する - Azure Virtual Machines | Microsoft Learn
操作手順
データディスク拡張(Azure)
1. Azureポータルに、VMの共同管理者以上の権限があるアカウントでログインします。
2. 対象VMの「概要」画面でVMを停止し、状態が「停止済み(割り当て解除)」になることを確認します。
3. 対象VMの「ディスク」画面で拡張対象のデータディスク名をクリックします。
4. データディスクの「サイズおよびパフォーマンス」画面で[拡張後のディスクサイズ]を選択し[保存]をクリックします。
5. 対象VMの「ディスク」画面で、拡張後のディスクサイズが表示されることを確認します。
6. 対象VMの「概要」画面でVMを開始し、状態が「実行中」になることを確認します。
作業前の状態確認(OS)
1. VMにSSH接続し、sudoコマンドでrootに昇格します。
2. 以下のコマンドを実行し、現在のディスク構成を確認します。実行結果から、データディスクが拡張されていることを確認します。
# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
<実行結果>
NAME FSTYPE SIZE MOUNTPOINT
/dev/sda 64G
|-/dev/sda1 vfat 200M /boot/efi
|-/dev/sda2 xfs 500M /boot
|-/dev/sda3 1M
|-/dev/sda4 LVM2_member 63.3G
|-/dev/mapper/rootvg-tmplv xfs 2G /tmp
|-/dev/mapper/rootvg-usrlv xfs 10G /usr
|-/dev/mapper/rootvg-homelv xfs 1G /home
|-/dev/mapper/rootvg-varlv xfs 8G /var
|-/dev/mapper/rootvg-rootlv xfs 2G /
/dev/sdb 64G ←★データディスクの合計サイズ
|-/dev/sdb1 LVM2_member 32G ←★LVMの合計サイズ
|-/dev/mapper/vg01-lv01 xfs 32G /data ←★/dataのサイズ
/dev/sdc 8G
|-/dev/sdc1 ext4 8M /mnt
パーティション拡張(OS)
1. 以下のコマンドを実行し、LVM全体のパーティションを拡張します。
※ 拡張対象のデバイス名は、先の「作業前の状態確認」手順2.で確認した「/dev/sdb1」です。
# growpart /dev/sdb 1
<実行結果>
CHANGED: partition=1 start=2048 old: size=67104768 end=67106815 new: size=134215647 end=134217694
# pvresize /dev/sdb1
<実行結果>
Physical volume "/dev/sdb1" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
LVM拡張(OS)
1. 以下のコマンドを実行し、現在のLVM構成を確認します。
# lvs
<実行結果>
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
homelv rootvg -wi-ao---- 1.00g
rootlv rootvg -wi-ao---- 2.00g
tmplv rootvg -wi-ao---- 2.00g
usrlv rootvg -wi-ao---- 10.00g
varlv rootvg -wi-ao---- 8.00g
lv01 vg01 -wi-ao---- <32.00g ←★/dataのLVMサイズ
2. 以下のコマンドを実行し、LVMパーティションを拡張します。本記事では「/data」のサイズを拡張します。
※「/data」のデバイス名は、先の「作業前の状態確認」手順2.で確認した「/dev/mapper/vg01-lv01」です。
# lvextend -l +100%FREE /dev/mapper/vg01-lv01
<実行結果>
Size of logical volume vg01/lv01 changed from <32.00 GiB (8191 extents) to <64.00 GiB (16383 extents).
Logical volume vg01/lv01 successfully resized.
ファイルシステム構成(OS)
1. 以下のコマンドを実行し、前の手順で拡張したLVMパーティションのファイルシステムを拡張します。
# xfs_growfs /dev/mapper/vg01-lv01
<実行結果>
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=2096896 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=8387584, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 8387584 to 16776192
2. 以下のコマンドを実行し、変更後のディスク構成を確認します。実行結果から、「data」のパーティションサイズが増えたことがわかります。
# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
<実行結果>
NAME FSTYPE SIZE MOUNTPOINT
/dev/sda 64G
tq/dev/sda1 vfat 200M /boot/efi
tq/dev/sda2 xfs 500M /boot
tq/dev/sda3 1M
mq/dev/sda4 LVM2_member 63.3G
tq/dev/mapper/rootvg-tmplv xfs 2G /tmp
tq/dev/mapper/rootvg-usrlv xfs 10G /usr
tq/dev/mapper/rootvg-homelv xfs 1G /home
tq/dev/mapper/rootvg-varlv xfs 8G /var
mq/dev/mapper/rootvg-rootlv xfs 2G /
/dev/sdb 8G
mq/dev/sdb1 ext4 8G /mnt
/dev/sdc 64G
mq/dev/sdc1 LVM2_member 64G
mq/dev/mapper/vg01-lv01 xfs 64G /data ←★/dataのLVMサイズ
3. 以下のコマンドを実行し変更後のLVM構成を確認します。実行結果から、「/data」のLVMサイズが増えたことがわかります。
# lvs
<実行結果>
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
homelv rootvg -wi-ao---- 1.00g
rootlv rootvg -wi-ao---- 2.00g
tmplv rootvg -wi-ao---- 2.00g
usrlv rootvg -wi-ao---- 10.00g
varlv rootvg -wi-ao---- 8.00g
lv01 vg01 -wi-ao---- <64.00g ←★/dataのLVMサイズ
まとめ
下表に、データディスク新規追加時に必要な操作をまとめます。
作業有無 | 作業対象 | |
---|---|---|
1.VM停止 | 必要(ただし前提条件に合致する場合は不要) | Azureポータル |
2.ディスク拡張 | 必要 | Azureポータル |
3.パーティション拡張 | 必要 | OS |
4.VG構成 | 不要 | - |
5.LVM構成 | 必要 | OS |
6.ファイルシステム構成 | 必要 | OS |
7.マウントポイント構成 | 不要 | - |
8.再起動 | 不要 | - |
データディスクアンマウント
前提条件
本記事ではデータディスクのアンマウントを実施します。
Azureのディスクはアンマウント後も課金が発生します。対象ディスクが不要である場合は、不要な課金を防ぐため削除が必要です。
アンマウントしたデータディスクは、AzureポータルからVMに接続し、OSからマウント操作を実施することで、再び利用することが可能です。また別のVMでも利用することが可能です。
操作手順
ディスクアンマウント(OS)
1. 以下のコマンドを実行し、ファイル「/etc/fstab」から以下のデータディスクマウント設定を削除します。
<デバイス名> <マウントポイント> xfs defaults 0 0
# vi /etc/fstab
<最終行の以下設定を削除>
/dev/mapper/vg01-lv01 /data xfs defaults 0 0 ←★削除対象行
2. 以下のコマンドを実行し、「/data」をアンマウントします。コマンド実行時は、カレントディレクトリを「/data」から移動する必要があります。
# umount /data
<実行結果>
出力なし
3. 以下のコマンドを実行し、ディスク構成を確認します。実行結果から、「/data」がアンマウントされている(表示されない)ことがわかります。
# df -h
<実行結果>
「/dev/mapper/vg01-lv01」からはじまる行が表示されない
ディスクアンマウント(Azure)
1. Azureポータルに、VMの共同管理者以上の権限があるアカウントでログインします。
2. 対象VMの「ディスク」画面で、アンマウント対象データディスクの右端にある「デタッチ」アイコンをクリックします。
3. アンマウント対象データディスクが接続されてない状態であることを確認し、[適用]をクリックします。
4. 対象VMの「ディスク」画面で、データディスクが存在しないことを確認します。
※Azureではアンマウントしたディスクに対しても課金が発生します。利用が終了したディスクは必ず削除を実施してください。
まとめ
下表に、OSディスク拡張時に必要な操作をまとめます。
作業有無 | 作業対象 | |
---|---|---|
1.VM停止 | 不要 | - |
2.ディスクアンマウント | 必要 | OS |
3.ディスクアンマウント(削除) | 必要 | Azureポータル |
おわりに
本記事では、Azure上にデプロイしたLVM構成のRHEL9 VMで、データディスクの追加・拡張・アンマウントを行う手順を説明しました。
データディスクの追加・拡張・アンマウントは、AzureポータルとOS両方で適切な操作が必要です。Azureディスクを有効に使う方法の一つとして、データディスクの操作手順を覚えていただければ幸いです。
山﨑 優美(日本ビジネスシステムズ株式会社)
ハイブリッドクラウド本部に所属。Windows Server・Linux、どちらのOSでもさわれるインフラエンジニアです。3児のママも兼務しています。
担当記事一覧