こんにちはますのです。
Azureの仮想マシンでディスク追加と一緒にルートボリュームも拡張しておくれというオーダーを頂きました。
そういえば、AWS触ってた時もLinuxのボリューム追加ってやったことなかったなぁと。
WindowsではGUI操作(コンピュータの管理からディスクの管理)でポチポチするだけだったので、改めてLinuxでの手順がパッと出てこなかったのです。手順を作ったので今後同じようなことがあってもきっと大丈夫という意味でもメモを残すのです。
やりたいこと
- AzureVMのルートボリュームを初期値(30GB)から50GBに拡張する
- イメージ:CentOS-based 8.2 Gen1をAzureのVirtual Machinesに作成
現時点のルートボリュームの容量を確認
確認方法はいくつかあるので、「lsblk」「df」コマンド等を使いましょう。
今回は初期設定で対象となる「/」に約30GB、sdb2として割り当たっていることが分かりました。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 4G 0 disk
L sda1 8:1 0 4G 0 part /mnt/resource
sdb 8:16 0 30G 0 disk
L sdb1 8:17 0 500M 0 part /boot
L sdb2 8:18 0 29G 0 part /
L sdb14 8:30 0 4M 0 part
L sdb15 8:31 0 495M 0 part /boot/efi
sr0 11:0 1 628K 0 rom
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 442M 0 442M 0% /dev
tmpfs tmpfs 458M 0 458M 0% /dev/shm
tmpfs tmpfs 458M 6.3M 452M 2% /run
tmpfs tmpfs 458M 0 458M 0% /sys/fs/cgroup
/dev/sdb2 xfs 30G 1.8G 28G 6% /
/dev/sdb1 xfs 496M 72M 424M 15% /boot
/dev/sdb15 vfat 495M 6.9M 488M 2% /boot/efi
/dev/sda1 ext4 3.9G 16M 3.7G 1% /mnt/resource
tmpfs tmpfs 92M 0 92M 0% /run/user/1000
Azureポータル>Virtual Machines>対象のVM>ディスクをクリックすると、仮想マシンにアタッチされているディスクが確認できます。
「OSディスク」にアタッチされている「サイズ:30GB」が現在のOSリソースに割り当たっている容量となります。
現時点でルートボリュームにフルで設定されているようですね。
設定するOSによってルートボリュームに割り振りされる容量は異なるようなので、確認したほうが良いかもしれないですね。
AzureVMのOSディスクを拡張する
それでは現時点の設定が30GBと確認出来たので、50GBとなるように20GBのディスクを追加してみましょう。
ざっくりした内容は以下の流れとなります。
- Azureポータル上でOSディスクを20GB拡張する
- サーバにSSH接続後、論理ボリュームを拡張する
Linuxでの論理ボリューム設定と、Azureで容量追加をしてあげるといった内容ですね。
ディスク拡張をする際は事前に仮想マシンの停止を行いましょう。
AzureポータルでOSディスクの拡張をする
ディスクサイズを確認した画面より、対象のディスク名をクリックします。
- サイズおよびパフォーマンス>カスタムディスクサイズ(GiB):設定したいディスクサイズへ変更
- 今回の例は「50」とする>「サイズ変更」をクリック
- 「左カラム:概要」をクリック>ディスク構成が指定したサイズになっていれば完了
AzureVMのOSディスクの拡張が完了したら、AzureVMを管理コンソール上から起動して、OS側での拡張設定を実施します。
今回テスト用に作ったCentOS8.2では起動時に拡張が済んでいました。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 30G 0 disk
L sdb2 8:18 0 49G 0 part /
参考情報:https://jpaztech.github.io/blog/vm/linux-expand-os-disk/
RHELや論理ボリューム構成(LV)の場合は拡張が必要になるそうなので、その場合は続いてOS側の拡張設定までやる必要があります。
Linux:OS側のディスク拡張を行う(物理・論理共通)
はい。だいぶ想定と違いますが、このままサーバディスク拡張設定のメモは残します。
ディスク拡張のコマンドは論理ボリュームでも物理ボリュームでも「growpart」コマンドを使うので、Linuxサーバにインストールされていない場合はインストールしましょう。
///インストール済か確認する
# sudo dnf list installed | grep growpart
cloud-utils-growpart.noarch 0.29-3.el8 @AppStream
///list installedで表示されなかった場合はインストール
# sudo dnf install -y cloud-utils-growpart
拡張する対象のディスクを確認する
# lsblk -p -o NAME,FSTYPE,SIZE,MOUNTPOINT
NAME FSTYPE SIZE MOUNTPOINT
/dev/sda 20G
L /dev/sda1 xfs 500M /boot
L /dev/sda2 xfs 30G /
「lsblk」より対象のルートボリュームは「/dev/sda2」であることが分かります。
また、「FSTYPE:xfs」ということも確認することが出来ました。
growpartコマンドでパーティションを拡張する
「/dev/sda2」が対象となるため、指定するパーティション番号は「2」となります。
# sudo growpart /dev/sda 2
拡張されたかを確認します。
# lsblk /dev/sda2
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda2 8:2 0 50G 0 part /
ここから先の手順は物理ボリューム、論理ボリュームによって異なりますので環境に合わせて実施となります。
Linux:OS側のディスク拡張設定(物理ボリューム:PV)
「growpart」でパーティション拡張後に以下手順を実施します。
ファイルシステムを拡張する
コマンドはファイルシステムによって異なります。今回は「xfs」で拡張します。
・xfsの場合:xfs_growfs
・ext4の場合:resize2fs
# sudo xfs_growfs /
拡張されたか確認します。
# df -hT /
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 50G 2.8G 47G 6% /
ルートボリュームが50GBに拡張されたことを確認することが出来ました。
以上で物理ボリュームの拡張設定は完了となります。
Linux:OS側のディスク拡張設定(論理ボリューム:LV)
「growpart」でパーティション拡張後に以下手順を実施します。
PV(物理ボリューム)を拡張する
# sudo pvresize /dev/sda2
Physical volume "/dev/sda2" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
物理ボリュームが拡張されたか確認します。
# vgs
VG #PV #LV #SN Attr VSize VFree
rootvg 1 5 0 wz--n- <50.00g 20.00g
物理ボリュームが50GBになり、20GBが使用可能領域となった状態です。
LV(論理ボリューム)を拡張する
# sudo lvextend -l +100%FREE /dev/rootvg/rootlv
Size of logical volume rootvg/rootlv changed from <30.00 GiB to <50.00 GiB.
Logical volume rootvg/rootlv successfully resized.
数値で指定する場合は「sudo lvextend -L +20G /dev/rootvg/rootlv」として値を指定して拡張することも可能です。
ファイルシステムを拡張する
コマンドはファイルシステムによって異なります。今回は「xfs」で拡張します。
・xfsの場合:xfs_growfs
・ext4の場合:resize2fs
# sudo xfs_growfs /
拡張されたか確認します。
# df -hT /
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 50G 2.8G 47G 6% /
ルートボリュームが50GBに拡張されたことを確認することが出来ました。
以上で論理ボリュームの拡張設定は完了となります。
このあたりはLinuxを触る場合必要になる手順となるので覚えていると幸せになれる気がするのです。またやる機会があれば試してみたい所存です。