VMware ESXi にLVMで構築したCentOSのディスク領域を拡張する
VMware ESXiにCentOS 7をインストールして、VPNサーバーを運用していたのですが、あろうことかデフォルト設定でインストールしたため、ディスク容量が16GBしかありません。
1日でログファイルが300MBほど吐き出されるので、すぐに容量不足に陥ります。
そこで、LVM領域を拡張してディスク容量不足問題を解決します。
現状確認
まずは現在のディスクの空き容量を下記コマンドで確認します。
df -h
実行結果がこちら
[syobon@ooyodo ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 14G 14G 724M 95% /
devtmpfs 910M 0 910M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 41M 880M 5% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/sda1 497M 212M 286M 43% /boot
tmpfs 184M 0 184M 0% /run/user/995
tmpfs 184M 0 184M 0% /run/user/0
tmpfs 184M 0 184M 0% /run/user/1000
/の領域が14GBで、残り容量が724MBしかありません。
ついでに、デバイス名もメモしておきます。(例では/dev/mapper/centos-root)
Rescue modeで起動
システム領域が格納されているパーティションを弄るため、Rescue modeに切り替える必要があります。
Rescue modeで起動するために、CentOS 7のインストールメディアからブートさせます。
仮想マシンの構成を変更するので、ゲストOSを下記コマンドでシャットダウンします。
init 0
シャットダウンが完了したら、対象仮想マシンの構成を変更します。
CD/DVD Drive 1を「Datastore ISO file」に変更します。
すると、データストアエクスプローラーが立ち上がりますので、CentOS 7のインストールイメージを選択して、「Select」をクリックします。
次に、Add hard disk -> New hard diskを選択して、仮想ディスクを追加します。
New Hard diskが追加されますので、設定したい容量を入力します。
次にVM Optionsタブをクリックし、Force BIOS setup欄の「The next time the virtual machine boots, force entry into the BIOS setup screen」にチェックを入れます。
これで次回起動時に、何もしなくてもBIOS画面に入ることが出来るようになります。
最後に、CD/DVD Drive 1の「Connect」にチェックを入れて、「Save」をクリックします。
仮想マシンを立ち上げると、上記のようにBIOS画面が表示されます。
Bootタブに移動し、「CD-ROM Drive」を選択した状態で、「+」を2回押してCD-ROM Driveを一番上に持って行きます。
上記のようにCD-ROM Driveが最上位にあることを確認して、F10を押します。
設定を保存して、BIOSから抜け出しても良いか確認されますので、Yesを選択してEnterキーを押します。
CentOSのインストーラーが立ち上がりますので、Troubleshootingを選択してEnterキーを押し、
Rescue a CentOS Linux systemを選択して、Enterキーを押します。
システム領域をマウントするか確認されますので、1を入力してEnterキーを押し、システム領域をマウントして起動します。
Enterキーを押してshellに入れと表示されますので、Enterキーを押します。
これで、Rescue modeでの起動は完了です。
論理ボリュームへHDDを追加
dmesg |grep sd
を実行すると、sdaの他にsdbが追加されていることが分かります。
容量を見ると、先ほど追加された60GBの仮想ディスクがsdbに当たることが分かります。
それでは、追加された仮想ディスクの初期化を行っていきます。
fdisk /dev/sdb
を実行して、fdiskを立ち上げます。
fdiskが立ち上がったら「p」を入力してEnterキーを押し、/dev/sdbのパーティション情報を確認します。
もちろん追加したばかりのディスクですので、パーティションはありません。
もし既にパーティションが存在しているようであれば、それは違うディスクを参照していますので、「q」を入力してEnterキーを押し、fdiskを終了して、正しいデバイスを選択して再度fdiskを立ち上げてください。
それでは追加したディスクに新規パーティションを作成します。
「n」を入力してEnterキーを押す、「p」を入力してEnterキーを押す、Partition numberは1を入力してEnter、First sectorとLast sectorには何も入れずそれぞれEnterを押します。
これでパーティションが作成されましたので、「w」を入力してEnterキーを押し、パーティション情報を書き込ます。
パーティション情報を書き込んだら、自動でfdiskが終了しますので、下記コマンドを実行して既存のPV(Phisical Volume)を確認します。
pvdisplay
すると、既存のPVが表示されますので、ここのVG Nameをメモします。
(例ではcentosとなっています)
既存のPVを確認したら、先ほど作成したパーティションを指定して新しいPVを作成します。
その後、VG(Volume Group)へ新しいPVを追加します。
(例ではVGはcentosを指定しています。)
pvcreate /dev/sdb1
vgextend centos /dev/sdb1
ここの例では/dev/sdb1を対象としています。
これで論理ボリュームへHDDを追加することが出来ました。
ファイルシステムサイズの拡張
次に下記コマンドを実行して、LVM領域を拡張します。
(例では/dev/mapper/centos-rootを拡張対象としています。)
lvextend -l +100%FREE /dev/mapper/centos-root
この状態でディスク領域サイズを下記コマンドで確認してみます。
df -h
ところがシステム領域の空き容量は増えていません。実はさらにファイルシステムサイズの拡張が必要になるのです。
下記コマンドを実行して、ファイルシステムサイズの拡張を行います。
(例では/dev/mapper/centos-rootを拡張対象としています。)
xfs_growfs /dev/mapper/centos-root
ファイルシステムサイズの拡張後、下記コマンドを実行して容量を確認します。
df -h
無事に拡張対象であった/dev/mapper/centos-rootの容量が拡張されていることが確認できます。
後始末
拡張が完了したら、下記コマンドを実行してゲストOSをシャットダウンします。
init 0
仮想マシンの構成変更画面を表示し、CD/DVD Drive 1の「Connect」チェックを外して、「Save」をクリックします。
これで後始末は完了です。仮想マシンの電源を入れ、通常運用に戻します。
駆け足となってしまいましたが、以上でLVM領域の拡張が完了しました。
今回は仮想マシン構築時に何も考えずに仮想ディスクを作成してしまったがために、面倒な手順を踏む羽目になりました。
できればこういった手戻りなどは発生させずにサーバー構築したいものですね・・・
家の環境だからと言って手を抜きすぎました・・・