VMware(ESXi)上の仮想マシン CentOS 6.4 をファイルサーバとして利用しているが、標準のディスク割り当てでインストールをしたら /home 領域が過剰に大きくなってしまった。ここで再インストールをしておけば手間はかからなかったのだが、この状態でしばらく運用してしまったのでそれも面倒。
幸い標準でLVMが採用されているので、ディスクサイズを調整して /mnt
領域の容量を確保することにした。
現在の状態と目標
図1のようにCentOS領域は1.2TBである。同一HDD内に600GBの空き容量があったので、これをCentOSに割り当てることとした。今回はシンプロビジョニングを利用しているのでディスクサイズの拡張とするが、新規ディスクの割り当て(増設する)でもほぼ同じ手順と思われる。そしてLVMにて2つの領域を1つであるかのように利用する(図2)。
(Step.1) LVM構築の大まかな流れ
- ディスクのパーティショニング(図1の状態)
- 物理ボリューム(PV)の作成
- ボリュームグループ(VG)の作成(図2の状態)
- 論理ボリューム(LV)の作成
- ファイルシステムの作成
- マウント
(Step.1-1) ディスクパーティショニング
vSphere client にて仮想マシンのディスクサイズを拡張。先ずは拡張ディスク分の新規パーティションを作成する。
ディスク拡張前後で fdisk -l を実行してサイズ変更されていることを確認すると良い。
sudo fdisk /dev/sda
p (テーブル表示で確認)
n (新規)
p (テーブル表示で確認)
領域番号 (1-4): 3 (既に1,2があるので3を作成)
p (テーブル表示で確認)
t (LVMに変更する為)
領域番号 (1-4): 3
L
16進数コード (L コマンドでコードリスト表示): 8e
p (テーブル表示で確認)
コマンド (m でヘルプ): w
領域テーブルは交換されました!
# リブートする必要がある
shutdown -r now
(Step.1-2 ~3) 物理ボリューム(PV)の作成, VGの作成
以上でパーティションが作成された。続いてそのパーティションを使ってLVMのディスクを拡張します。
pvcreate /dev/sda3
vgextend vg_cent /dev/sda3
※ ここで出てくる vg_cent とは、インストール時に設定された名前。仮想マシンのホスト名から自動的に設定されている様子(今回の仮想マシンホスト名は cent である為、vg_centとなる)
(参考)実行結果のコピー
$ sudo fdisk -l /dev/sda
(中略)
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 64 512000 83 Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2 64 156651 1257778176 8e Linux LVM
/dev/sda3 156651 248029 734001742+ 8e Linux LVM
$ sudo pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created
$ sudo vgextend vg_cent /dev/sda3
Volume group "vg_cent" successfully extended
$ sudo pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name vg_cent
PV Size 1.17 TiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 307074
Free PE 0
Allocated PE 307074
(一部省略)
--- Physical volume ---
PV Name /dev/sda3
VG Name vg_cent
PV Size 700.00 GiB / not usable 2.58 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 179199
Free PE 179199
Allocated PE 0
(一部省略)
(Step.1-4 ~5) 論理ボリューム(LV)の作成
/mnt用に新規 Logical Volume (lv_mnt) を作成する。ここでは割り当てたディスクサイズ600GBを指定している。その後、ファイルシステムを作成する。
lvcreate -L 600G -n lv_mnt vg_cent
# (参考) `-l 100%FREE` この方法で100%使えるようだが上記の通りサイズ指定した
mkfs.ext4 /dev/vg_cent/lv_mnt
実行結果
$ sudo lvdisplay -C
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_home vg_cent -wi-ao--- 1.12t
lv_root vg_cent -wi-ao--- 50.00g
lv_swap vg_cent -wi-ao--- 3.88g
$ sudo lvcreate -L 600G -n lv_mnt vg_cent
Logical volume "lv_mnt" created
$ sudo lvdisplay -C
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_home vg_cent -wi-ao--- 1.12t
lv_mnt vg_cent -wi-a---- 600.00g
lv_root vg_cent -wi-ao--- 50.00g
lv_swap vg_cent -wi-ao--- 3.88g
(Step.1-6) マウントの設定
fatabに記載して仮想マシンを再起動する。
$ sudo vi /etc/fstab
+ /dev/mapper/vg_cent-lv_mnt /mnt ext4 defaults 1 3
reboot
Step.2 パーティションサイズの調整
記事が長くなったので別に記載: LVMでパーティションサイズを調整(縮小・拡張)する