あるパーティションの容量を増やすには
「CentOS」で予め想定した範囲内の容量で足りれば問題は無いわけですが、後からHDDを追加してあるパーティションの容量を増やすには、どうすれば良いか?この問題を解決する方法として「LVM」という機能があります。
※予め「LVM」で構成していないといけません。LVMで構成されていない場合は、OSのインストールから行う必要があります。
LVMとは
要するに複数のHDDを一つの記憶装置として見なして管理する機能です。LVMでは、以下の構成から管理を行います。
1.物理ボリューム(PV:Physical Volume)
物理HDDを小さなブロック(数MB~数十MB)で分割する 物理エクステント(PE)
2.ボリュームグループ(Volume Group)
1.で作成した物理エクステントを寄せ集める
3.論理ボリューム(LV:Logical Volume)
2.で作成したボリュームを各パーティションでマウントする
最終的にサーバ上の記憶領域として意識するのは、論理ボリュームになります。
(「/」や「/usr」といった通常のパーティション領域)
実際に論理ボリュームの容量を増やす
VirtualBox上に構築したCentOSで行ってみます。まずは、HDDを1台の状態でOSをインストールした後にHDDを追加し論理ボリューム(今回は、「/」の容量を増加させます。)
1.初期構成
「/」の容量は、36GB割り当て済み
# df -lh Filesystem Size Used Avail Use% マウント位置 /dev/mapper/VolGroup-lv_root 36G 1.9G 32G 6% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 485M 33M 427M 8% /boot
2.PV作成
追加したHDDデバイスを指定します。
# pvcreate /dev/sdb
3.2.で作成したPVを確認する
[root@localhost ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup PV Size 39.51 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 10114 Free PE 0 Allocated PE 10114 PV UUID g3x6ki-TaBt-2V5J-FzyT-fJaI-AdS2-UNKiaZ "/dev/sdb1" is a new physical volume of "39.99 GiB" --- NEW Physical volume --- PV Name /dev/sdb VG Name PV Size 39.99 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID F5zxAf-hthA-UBBQ-jHAJ-u2Lz-9z3n-mLh1sz
4.VGに追加する
※必ず同じVGに追加する必要があります。異なるVGに追加されたPVは使用できない。
vgextend VolGroup /dev/sdb5.VGのサイズを確認
VGを照会する場合、「vgdisplay」コマンドを使用します。
[root@localhost ~]# vgdisplay --- Volume group --- VG Name VolGroup System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 79.50 GiB PE Size 4.00 MiB Total PE 20352 Alloc PE / Size 10114 / 39.51 GiB Free PE / Size 10238 / 39.99 GiB VG UUID pPlYvB-MZHe-u3WE-YeXE-3wHN-bwkw-vKA5nm
「Free PE / Size」が割り当て可能な容量になります。
上記の場合、「39.99GB」割り当て可能です。
6.論理ボリュームのサイズを変更
使用するコマンドは、「lvresize」コマンドになります。
今回は、「/」パーティションへ全て割り当てします。
lvresize -L +39.99G /dev/VolGroup/lv_root「/dev/VolGroup/lv_root」は論理ボリュームパスになります。
7.ファイルシステムの拡張
6.により論理ボリュームのサイズは変更されましたが、ファイルシステムの容量はそのままなので最後に拡張します。
resize2fs /dev/VolGroup/lv_root
8.確認
# df -lh Filesystem Size Used Avail Use% マウント位置 /dev/mapper/VolGroup-lv_root 74G 1.9G 69G 3% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 485M 33M 427M 8% /boot
以上で容量が「36GB」から「74GB(増加分39GB)」増加しました。
今回は、容量を増やしましたが逆にパーティションを削除して別のパーティションに割り付けたりする事もできます。
最後に
CentOSで50GB以上のHDDで自動パーティション構成をした際に「/」に50GB割り付けられ「/home」に残りの容量が割り当てられてしまっているという事をサーバ構築後に気づき再インストールする事なくどうにか出来ないか調べてこの機能について知りました。とあるレンタルサーバを借りた際に「/home」の容量が大きく割り付けられている事もあり、なぜこんな割り付けするのか気になっていた事が解決できました。