Nutanix AHVでLinux仮想マシンのディスク容量を拡張する方法【Rocky Linux 9】

Windows

Nutanix AHV上で動作しているRocky Linux 9のディスク容量が不足したため、仮想ディスクを拡張しました。

Nutanix側で仮想ディスクを50GBから100GBへ変更しても、それだけではLinuxの/の容量は増えません。

Linux側でも、

仮想ディスク
 ↓
パーティション
 ↓
LVM Physical Volume(PV)
 ↓
Logical Volume(LV)
 ↓
XFSファイルシステム

という順番で拡張する必要があります。

この記事では、実際にNutanix AHV上のRocky Linux 9で行った作業を例に、ディスク容量を拡張する方法を解説します。

Nutanix AHVでRocky Linux 9仮想マシンのディスク容量を拡張する手順
Nutanix AHVで仮想ディスクを拡張しgrowpart・pvresize・lvextend・xfs_growfsでLinux側の容量を増やす方法

今回の環境

今回作業したのは、Nutanix AHV上で稼働しているRocky Linux 9の仮想マシンです。

実際に2台の仮想マシンで作業しました。

  • VM1:50GB → 100GB
  • VM2:50GB → 150GB

Linux側はLVM+XFSの構成です。

/dev/sda
├─ /dev/sda1   /boot
└─ /dev/sda2   LVM
      ├─ rl-root   /
      └─ rl-swap

環境によってデバイス名、パーティション番号、VG/LV名は異なります。

そのままコマンドをコピーするのではなく、必ずlsblkやpvs、lvsなどで自分の環境を確認してください。

作業前にスナップショットを取得する

ディスクやパーティション、LVMを変更する作業なので、作業前にNutanix側でスナップショットなどの復旧手段を確保しておくと安心です。

特にgrowpartでパーティションを変更する前に取得しておくのがよいでしょう。

また、重要なサーバーではスナップショットだけをバックアップの代わりにせず、通常のバックアップや復旧方法も確認してから作業します。

Nutanix AHVでVMスナップショットを取得する具体的な手順については、以下の記事で解説しています。

▶ Nutanix AHVでVMスナップショットを取得・復元する方法【Prism Element】

現在のディスク構成を確認する

最初に現在の状態を確認します。

lsblk

さらにファイルシステムの容量を確認します。

df -Th

LVMを使用している場合は、次のコマンドも確認しておきます。

pvs
vgs
lvs

今回の環境では、50GBの仮想ディスク/dev/sdaに、/dev/sda1と/dev/sda2が存在し、/dev/sda2がLVMとして使用されていました。

1.Nutanix AHV側で仮想ディスクを拡張する

まずNutanix側で対象仮想マシンの仮想ディスク容量を増やします。

今回の1台目では、

50GB
 ↓
100GB

へ拡張しました。

もう1台では、

50GB
 ↓
150GB

へ拡張しています。

Nutanix側で拡張したあと、Rocky Linuxからディスクサイズを確認します。

lsblk

例えば100GBへ拡張した場合、ディスク本体は次のように100GBと認識されます。

NAME        SIZE TYPE MOUNTPOINTS
sda         100G disk
├─sda1        1G part /boot
└─sda2       49G part
  ├─rl-root 45.1G lvm  /
  └─rl-swap  3.9G lvm  [SWAP]

ここで重要なのは、/dev/sdaは100GBになっていても、/dev/sda2やrl-rootはまだ元のサイズという点です。

AHV側でディスクを増やしただけでは/は増えない

これはNutanixの問題ではありません。

仮想ディスク自体は拡張されていますが、Linux側のパーティション・LVM・ファイルシステムは自動的には拡張されていないためです。

/dev/sda       100GB ← 拡張済み

/dev/sda2       49GB ← まだ
PV              49GB ← まだ
rl-root       45.1GB ← まだ
XFS /         約45GB ← まだ

ここからLinux側を順番に拡張していきます。

2.growpartでパーティションを拡張する

今回LVMに使用されているパーティションは/dev/sda2です。

次のコマンドを実行しました。

growpart /dev/sda 2

注意したいのは、

growpart /dev/sda2

ではなく、

growpart /dev/sda 2

とディスク名とパーティション番号を分けて指定することです。

実行後、再度確認します。

lsblk

100GBへ拡張したVMでは、/dev/sda2が約49GBから約99GBへ拡張されました。

150GBへ拡張したVMでは、約149GBになりました。

growpartコマンドがない場合

Rocky Linux 9環境によっては、growpartがインストールされていないことがあります。

今回の環境でも最初は利用できなかったため、cloud-utils-growpartをインストールしました。

dnf install cloud-utils-growpart

インストール後、再度実行します。

growpart /dev/sda 2

3.pvresizeでLVMのPhysical Volumeを拡張する

パーティションを拡張しただけでは、LVMは追加領域をまだ利用できません。

次にPhysical Volume(PV)を拡張します。

pvresize /dev/sda2

確認します。

pvs

または、

pvdisplay

で確認できます。

これで拡張した領域がVolume Groupから利用できるようになります。

4.lvextendでルート論理ボリュームを拡張する

次にLogical Volume(LV)を拡張します。

今回の環境ではルートファイルシステムが、

/dev/mapper/rl-root

でした。

VGの空き領域をすべてルートLVへ割り当てる場合は、次のように実行できます。

lvextend -l +100%FREE /dev/mapper/rl-root

実行後に確認します。

lvs

100GBへ拡張したVMでは、rl-rootが約45.1GBから約95.1GBへ拡張されました。

150GBへ拡張したVMでは、約145.1GBまで拡張されました。

+100%FREEはVolume Groupの未使用領域をすべて対象LVへ割り当てる指定です。

他のLV用に空き領域を残したい場合は、安易に+100%FREEを使用せず、必要なサイズだけ割り当てます。

5.xfs_growfsでXFSファイルシステムを拡張する

LVを拡張しても、XFSファイルシステムはまだ元のサイズです。

最後にXFSを拡張します。

xfs_growfs /

Red Hatの公式ドキュメントでも、XFSはマウントした状態でxfs_growfsを使用して拡張できます。

-Dなどでサイズを指定しなければ、基盤となるデバイスが利用できる最大サイズまで拡張されます。

6.df -Thで最終確認する

最後に容量を確認します。

df -Th

実際に100GBへ拡張したVMでは、最終的にルートLVが約95GBになりました。

Filesystem          Type  Size  Mounted on
/dev/mapper/rl-root xfs    96G  /

150GBへ拡張したVMでは、ルートLVが約145GBになりました。

Filesystem          Type  Size  Mounted on
/dev/mapper/rl-root xfs   146G  /

仮想ディスクの100GBや150GBすべてが/になるわけではありません。

/bootやswapなどでも容量を使用するためです。

今回実際に行ったコマンド

今回の構成では、Linux側で主に次の順序で作業しました。

lsblk
df -Th
pvs
vgs
lvs

growpart /dev/sda 2

pvresize /dev/sda2

lvextend -l +100%FREE /dev/mapper/rl-root

xfs_growfs /

lsblk
pvs
lvs
df -Th

流れを整理すると、

Nutanix AHV
仮想ディスクを拡張
        ↓
growpart
パーティション拡張
        ↓
pvresize
Physical Volume拡張
        ↓
lvextend
Logical Volume拡張
        ↓
xfs_growfs
XFS拡張
        ↓
df -Th
確認

となります。

lvextend -rを使う方法もある

Red Hatのドキュメントでは、lvextendの--resizefs(-r)を利用してLVとファイルシステムをまとめて拡張する方法も案内されています。

例えば環境に応じて、

lvextend -r -l +100%FREE /dev/mapper/rl-root

のような方法もあります。

今回は処理を一段階ずつ確認するため、

lvextend
 ↓
xfs_growfs

を分けて実行しました。

トラブル時にどのレイヤーまで拡張できているのか確認しやすいため、仕組みを理解するうえでも分けて実行すると分かりやすいです。

XFSは縮小できないので注意

Red Hatのドキュメントでは、XFSファイルシステムは拡張できますが、現在縮小には対応していません。

そのため、

50GB → 150GB

へ拡張したあと、単純に同じ手順を逆にして50GBへ戻すことはできません。

必要以上に大きくしないよう、拡張サイズは事前に検討しておくことをおすすめします。

ディスクを増やしたのにdfで増えない場合

Nutanix AHV側でディスクを拡張したのに、

df -h

の容量が変わらない場合は、どの段階まで拡張されているか確認します。

ディスク自体が増えているか

lsblk

パーティションが増えているか

lsblk

PVが増えているか

pvs

VGに空きがあるか

vgs

LVが増えているか

lvs

XFSが増えているか

df -Th

このように上のレイヤーから順番に確認すると、どこで拡張が止まっているのか判断しやすくなります。

KVMの場合も基本的な考え方は同じ

KVM仮想マシンでも、仮想ディスクを拡張したあとLinux側でパーティション、LVM、ファイルシステムを拡張するという考え方は同じです。

KVMでqcow2ディスクを拡張した実例については、こちらの記事で解説しています。

▶ KVM仮想マシンのディスク容量を拡張する方法

まとめ

Nutanix AHVでLinux仮想マシンの仮想ディスクを拡張しても、Linuxのルートファイルシステムが自動的に拡張されるとは限りません。

今回のRocky Linux 9+LVM+XFS環境では、

1. Nutanix AHVで仮想ディスク拡張
2. growpart
3. pvresize
4. lvextend
5. xfs_growfs
6. df -Thで確認

という手順で、実際に50GBから100GB、および50GBから150GBへ拡張できました。

重要なのは、ディスク・パーティション・PV・LV・ファイルシステムを別々のレイヤーとして確認することです。

容量が増えない場合も、lsblk、pvs、vgs、lvs、df -Thを順番に確認すると、問題箇所を切り分けやすくなります。

参考情報

コメント

タイトルとURLをコピーしました