Azure上の仮想マシン(VM)は、物理環境と比較して容易にディスクサイズを拡張したり新規にディスクを追加したりすることができます。しかし、Azureポータルからディスクを操作しただけではOS上で利用することはできません。
そこで、Azure上にデプロイしたRed Hat Enterprise Linux(RHEL)9のVMで、既存ディスクを拡張する手順・ディスクを新規追加する手順・既存ディスクを削除する手順を数回に分けて説明します。
※ RHEL9のVMはLVM構成のものを使用しています
本記事では、まず、OSディスクの操作手順について記載します。
はじめに
本記事では、大きく以下2つの手順を説明します。
OSパーティション拡張
Azure上に新規デプロイされたRHEL VMは、OSディスク総容量の一部がパーティション未割り当ての領域となっています。
つまり、Azureポータル上はOSディスクが64GBであっても、そのままではOS上で全容量を利用できないということです。
ここでは、パーティション未割り当ての領域を利用する手順を記載します。
OSディスク拡張
AzureポータルからOSディスクを拡張する場合、OS上でパーティションを拡張する操作が必要です。
ここでは、OSディスクを拡張する手順を記載します。
OSパーティション拡張
事前準備
操作を誤ってVMが起動しなくなる恐れがあるため、VMのバックアップ(もしくはOSディスクのスナップショット)を取得します。
本操作ではVMの停止・起動が発生するので、サービス影響を考慮します。
操作手順
作業前の状態確認
1. VMにSSH接続し、sudoコマンドでrootに昇格します。
2. 以下のコマンドを実行し、現在のディスク構成を確認します。実行結果から、「sda4」(LVM)の合計容量と、個々のパーティション「/tmp」「/usr」「/home」「var」「/」のサイズが確認できます。
※ 個々のパーティションのデバイス名は”NAME”列に記載されます。
# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
<実行結果>
NAME FSTYPE SIZE MOUNTPOINT
/dev/sda 64G ←★OSディスクの合計サイズ
|-/dev/sda1 vfat 200M /boot/efi
|-/dev/sda2 xfs 500M /boot
|-/dev/sda3 1M
|-/dev/sda4 LVM2_member 63.3G ←★LVMの合計サイズ
|-/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 ←★/varのサイズ
|-/dev/mapper/rootvg-rootlv xfs 2G /
3. 以下のコマンドを実行し、現在のVG構成を確認します。実行結果から、「rootvg」の合計容量(VSize)63.31GBのうち未使用量(VFree)が40.31GBであることがわかります。
# vgs
<実行結果>
VG
#PV #LV #SN Attr VSize VFree
rootvg 1 5 0 wz--n- 63.31g 40.31g
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 ←★/varのLVMサイズ/
2. LVMパーティションを拡張します。本記事では「/var」のサイズを拡張します。「/var」のデバイス名は、先の「作業前の状態確認」手順2.で確認した「/dev/mapper/rootvg-varlv」です。
空き領域のうち2GBだけ拡張する場合は、以下のようにコマンドを実行します。
# lvextend -L+2G /dev/mapper/rootvg-varlv
<実行結果>
Size of logical volume rootvg/varlv changed from 8.00 GiB (2048 extents) to 10.00 GiB (2560 extents).
Logical volume rootvg/varlv successfully resized.
空き領域を全部拡張する場合は、以下のようにコマンドを実行します。
# lvextend -l +100%FREE /dev/mapper/rootvg-varlv
<実行結果>
Size of logical volume rootvg/varlv changed from 8.00 GiB (2048 extents) to 48.31 GiB (12368 extents).
Logical volume rootvg/varlv successfully resized.
ファイルシステム構成(OS)
1.以下のコマンドを実行し、前の手順で拡張したLVMパーティションのファイルシステムを拡張します。本記事では「/var」のファイルシステムを拡張します。
※ 「/var」のデバイス名は、先の「作業前の状態確認」手順2.で確認した「/dev/mapper/rootvg-varlv」です。
# xfs_growfs /dev/mapper/rootvg-varlv
<実行結果>
meta-data=/dev/mapper/rootvg-varlv isize=512 agcount=4, agsize=524288 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=2097152, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2097152 to 12664832
2. 再起動します。以下のコマンドを実行するか、Azureポータルから再起動します。
# reboot
3. 以下のコマンドを実行し、変更後のディスク構成を確認します。実行結果から、「var」のパーティションサイズが増えたことがわかります。
# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
<実行結果>
NAME FSTYPE SIZE MOUNTPOINT
/dev/sda 64G ←★OSディスクの合計サイズ
|-/dev/sda1 vfat 200M /boot/efi
|-/dev/sda2 xfs 500M /boot
|-/dev/sda3 1M
|-/dev/sda4 LVM2_member 63.3G ←★LVMの合計サイズ
|-/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 48.3G /var ←★/varのサイズ
|-/dev/mapper/rootvg-rootlv xfs 2G /
3. 以下のコマンドを実行し、変更後のVG構成を確認します。実行結果から、「rootvg」の合計容量(VSize)63.31GBがすべて使用され、未使用量(VFree)が0になったことがわかります。
# vgs
<実行結果>
VG
#PV #LV #SN Attr VSize VFree
rootvg 1 5 0 wz--n- 63.31g 0g
4. 以下のコマンドを実行し、変更後のLVM構成を確認します。実行結果から、「/var」の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---- 48.31g ←★/varのLVMサイズ
まとめ
下表に、パーティション拡張時に必要な操作をまとめます。
作業有無 | 作業対象 | |
---|---|---|
1.VM停止 | 不要 | - |
2.ディスク拡張 | 不要 | - |
3.パーティション拡張 | 不要 | - |
4.VG構成 | 不要 | - |
5.LVM構成 | 必要 | OS |
6.ファイルシステム構成 | 必要 | OS |
7.マウントポイント構成 | 不要 | - |
8.VM再起動 | 必要 | OS/Azureポータル |
OSディスク拡張
事前準備
操作を誤るとVMが起動しなくなる恐れがあるため、VMのバックアップ(もしくはOSディスクのスナップショット)を取得します。
本操作ではVMの停止・起動が発生するので、サービス影響を考慮します。
操作手順
ディスク拡張(Azure)
1. Azureポータルに、VMの共同管理者以上の権限があるアカウントでログインします。
2. 対象VMの「概要」画面で[停止]をクリックし、VMを停止します。
3. 状態が「停止済み(割り当て解除)」になることを確認します。
4. 対象VMの「ディスク」画面で[OSディスク名]をクリックします。
5. OSディスクの「サイズおよびパフォーマンス」画面で[拡張後のディスクサイズ]を選択し[保存]をクリックします。
6. 対象VMの「ディスク」画面で、OSディスクサイズが変更されたことを確認します。
7. 対象VMの「概要」画面で[開始]をクリックし、VMを起動します。
8. 状態が「実行中」になることを確認します。
作業前の状態確認
1. VMにSSH接続し、sudoコマンドでrootに昇格します。
2. 以下のコマンドを実行し、現在のディスク構成を確認します。実行結果から、「sda4」(LVM)の合計容量と、個々のパーティション「/tmp」「/usr」「/home」「var」「/」のサイズが確認できます。
※ 個々のパーティションのデバイス名は”NAME”列に記載されます。
# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
<実行結果>
NAME FSTYPE SIZE MOUNTPOINT
/dev/sda 128G ←★OSディスクの合計サイズ
|-/dev/sda1 vfat 200M /boot/efi
|-/dev/sda2 xfs 500M /boot
|-/dev/sda3 1M
|-/dev/sda4 LVM2_member 63.3G ←★LVMの合計サイズ
|-/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 48.3G /var ←★/varのサイズ
|-/dev/mapper/rootvg-rootlv xfs 2G /
3. 以下のコマンドを実行し、現在のVG構成を確認します。実行結果から、「rootvg」の合計容量(VSize)が63.31GBで未使用量(VFree)が0GBであることがわかります。
# vgs
<実行結果>
VG
#PV #LV #SN Attr VSize VFree
rootvg 1 5 0 wz--n- 63.31g 0
パーティション拡張(OS)
1. 以下のコマンドを実行し、LVM全体のパーティションを拡張します。
※ 拡張対象のデバイス名は、先の「作業前の状態確認」手順2.で確認した「/dev/sda4」です。
# growpart /dev/sda 4
<実行結果>
CHANGED: partition=4 start=1437696 old: size=132777984 end=134215679 new: size=266997727 end=2684354
# pvresize /dev/sda4
<実行結果>
Physical volume "/dev/sda4" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
LVM構成(OS)
以降の手順は、「OSパーティション拡張」の「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---- 48.31g ←★/varのLVMサイズ
2. 以下のコマンドを実行し、LVMパーティションを拡張します。本記事では「/var」のサイズを拡張します。
※「/var」のデバイス名は、先の「作業前の状態確認」手順2.で確認した「/dev/mapper/rootvg-varlv」です。
空き領域のうち2GBだけ拡張する場合は、以下のようにコマンドを実行します。
# lvextend -L+2G /dev/mapper/rootvg-varlv
<実行結果>
Size of logical volume rootvg/varlv changed from 48.31 GiB (12368 extents) to 50.31 GiB (12880 extents).
Logical volume rootvg/varlv successfully resized.
空き領域を全部拡張する場合は、以下のようにコマンドを実行します。
# lvextend -l +100%FREE /dev/mapper/rootvg-varlv
<実行結果>
Size of logical volume rootvg/varlv changed from 48.31 GiB (12368 extents) to 112.31 GiB (28752 extents).
Logical volume rootvg/varlv successfully resized.
ファイルシステム構成(OS)
1. 以下のコマンドを実行し、前の手順で拡張したLVMパーティションのファイルシステムを拡張します。本記事では「/var」のファイルシステムを拡張します。
※「/var」のデバイス名は、先の確認手順で確認した「/dev/mapper/rootvg-varlv」です。
# xfs_growfs /dev/mapper/rootvg-varlv
<実行結果>
meta-data=/dev/mapper/rootvg-varlv isize=512 agcount=4, agsize=524288 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=12664832, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 12664832 to 29442048
2. 再起動します。以下のコマンドを実行するか、Azureポータルから再起動します。
# reboot
3. 以下のコマンドを実行し、変更後のディスク構成を確認します。実行結果から、「var」のパーティションサイズが増えたことがわかります。
# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
<実行結果>
NAME FSTYPE SIZE MOUNTPOINT
/dev/sda 128G ←★OSディスクの合計サイズ
|-/dev/sda1 vfat 200M /boot/efi
|-/dev/sda2 xfs 500M /boot
|-/dev/sda3 1M
|-/dev/sda4 LVM2_member 127.3G ←★LVMの合計サイズ
|-/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 112.3G /var ←★/varのサイズ
|-/dev/mapper/rootvg-rootlv xfs 2G /
3. 以下のコマンドを実行し、変更後のVG構成を確認します。実行結果から、「rootvg」の合計容量(VSize)が増えたことがわかります。
# vgs
<実行結果>
VG
#PV #LV #SN Attr VSize VFree
rootvg 1 5 0 wz--n- 127.31g 0g
4. 以下のコマンドを実行し、変更後のLVM構成を確認します。実行結果から、「/var」の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---- 112.31g ←★/varのLVMサイズ
まとめ
下表に、OSディスク拡張時に必要な操作をまとめます。
作業有無 | 作業対象 | |
---|---|---|
1.VM停止 | 必要 | Azureポータル |
2.ディスク拡張 | 必要 | Azureポータル |
3.パーティション拡張 | 必要 | OS |
4.VG構成 | 不要 | - |
5.LVM構成 | 必要 | OS |
6.ファイルシステム構成 | 必要 | OS |
7.マウントポイント構成 | 不要 | - |
8.再起動 | 必要 | OS/Azureポータル |
おわりに
本記事では、Azure上にデプロイしたLVM構成のRHEL9 VMで、OSディスクとOSパーティションを拡張する手順を説明しました。
Azureではディスクサイズに応じて課金が発生します。Azureディスクを有効に使う方法の一つとして、OSディスク領域を最大限活用する手順を覚えていただければ幸いです。
山﨑 優美(日本ビジネスシステムズ株式会社)
ハイブリッドクラウド本部に所属。Windows Server・Linux、どちらのOSでもさわれるインフラエンジニアです。3児のママも兼務しています。
担当記事一覧