【CentOS】LVMでディスク容量を拡張(VMwareのHDD容量を増やす)

VMwareのハードディスク容量を増やそうとして調査をしているうちにLVMという技術を知った。

一度パーティションを切ったら専用ソフトを使わないとハードディスク容量を拡張できないと思っていたのでショック。あまりに無知。

前にVMwareのHDD容量を増やす方法を書いたけど、ここに書いてあるやり方がスマートで簡単。

LVMでファイルシステムを構成しておくと後でディスク容量を増やそうと思ったときに簡単にできる。LVMについて詳しくしりたい場合はwikipediaを読んだり、Google先生に聞いてみる。

CentOSの場合はデフォルトでLVMのファイルシステムを構成してくれるので楽。Ubuntuの場合はインストール時に明示的に選択しないと駄目みたい(今度確認しときます)。

以下、さっきのリンクを参考に自分で実行したコマンドをメモ。

まずはVMwareの場合はディスク容量を追加するコマンドをホストで打つ。物理マシンの場合はハードディスクを追加する。
現在の容量と合わせて40GBに拡張したい場合のコマンドはこれ。
# vmware-vdiskmanager -x 40Gb vdisk.vmdk

2GBでsplitしてあって拡張できない場合はvCenter Converterを使って1つに結合したりする。参考記事。vmware-vdiskmanagerを使ってもできるらしい

あとは追加した(仮想)マシン側で作業。

fdiskでlvm用のパーティションを作成。
# fdisk /dev/sda

コマンド (m でヘルプ): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2610    20860402+  8e  Linux LVM

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 3
最初 シリンダ (2611-5221, default 2611):(リターン)
Using default value 2611
終点 シリンダ または +サイズ または +サイズM または +サイズK (2611-5221, default 5221):(リターン)
Using default value 5221

コマンド (m でヘルプ): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2610    20860402+  8e  Linux LVM
/dev/sda3            2611        5221    20972857+  83  Linux

コマンド (m でヘルプ): t
領域番号 (1-4): 3
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました

コマンド (m でヘルプ): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2610    20860402+  8e  Linux LVM
/dev/sda3            2611        5221    20972857+  8e  Linux LVM

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。

警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。

fdiskが終了するので再起動
# reboot

LVM物理ボリュームを作成
# pvcreate /dev/sda3

ボリュームグループ確認
# vgs

ボリュームグループに物理ボリュームを割り当てる
# vgextend cl /dev/sda3

論理ボリュームを増加させる
# lvextend -L +20Gb /dev/VolGroup00/LogVol00
# lvextend -l +100%FREE /dev/cl/root

ファイルシステムサイズの再認識
# resize2fs /dev/VolGroup00/LogVol00
# xfs_growfs /

容量が増えたか確認
# df -m
# df -h

LVMって便利だね。今まで「VMware hdd 拡張」というキーワードで訪れてくれた人に申し訳ない。


[2022/12/06: CentOS Stream 8に合わせてコマンド修正]