LVMで作ったLVのパーティションを拡張する。
手順としては、物理HDDのパーティションを拡張するときや、HDDを大容量に換装した時の手順とほぼ同じですね。
- pv の確認
- vg の確認
- lv の確認
- lv の容量を追加する
- lv の上のファイルシステムを拡張する
LVの拡張には次のコマンドが大事
sudo lvextend -l +100%FREE vg_name/lv_name
ただし、このコマンドを実行するまでに、pvに追加vgに追加が必要なので、順番に書いておきます。
pv の確認
まず、PVの状態を確認しておきます。
$ sudo pvs /dev/sdc1 PV VG Fmt Attr PSize PFree /dev/sdc1 lvm2 --- 150.00g 150.00g
実験用のvg / lv / FS を作ります。
今回は、作業手順を確認するために、VGをそのためだけに作ることにした。
vgの作成
$ sudo vgcreate sample01 /dev/sdc1 Volume group "sample01" successfully created
lv の作成
$ sudo lvcreate -n lv01 -L 30GB sample01 Logical volume "lv01" created $ ls /dev/mapper sample01-lv01
FSの作成
$ sudo mkfs.ext4 /dev/mapper/sample01-lv01 mke2fs 1.42.12 (29-Aug-2014) Creating filesystem with 7864320 4k blocks and 1966080 inodes Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
マウントして確認しておく
30GBのファイルシステムが作られていて正しく扱えることを確認した。
$ sudo mount /dev/mapper/sample01-lv01 mnt $ ls mnt lost+found $ df mnt ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/sample01-lv01 30832636 44992 29198396 1% /home/takuya/mnt
LV の拡張
実験用の環境が作れたので、ここから、LV を拡張してく。
最初にアンマウントしておく
$ sudo umount /dev/mapper/sample01-lv01
lvextend でLVに容量を追加する。
$ sudo lvextend -L +30GB sample01/lv01 Size of logical volume sample01/lv01 changed from 30.00 GiB (7680 extents) to 60.00 GiB (15360 extents). Logical volume lv01 successfully resized
ポイントは追加したい容量を引数で指定する 。上記の例では30GBを足すので、 -L +30GB
と増分を書く。
同じことをするのに、他の指定方法もある。
-L +30GB
増分の指定-L 60GB
増加後の容量の指定-l +20%
増分を%で指定。 (VGに対しての%)-l 40%
増分後の容量を%で指定。 (VGに対しての%)-l +100%FREE
残りの容量を全部割り振る
計算が面倒なときや大体でいいときはパーセント指定が楽だよね。あとでLVMは容量変えられるし。
使用量が変化したことを確認しておく
pvs で割当ての容量が変化して、FREEの空き容量が減ったことを確認。
$ sudo pvs /dev/sdc1 PV VG Fmt Attr PSize PFree /dev/sdc1 sample01 lvm2 a-- 150.00g 90.00g
lvs で、容量が変化していることを確認。
$ sudo lvs sample01/lv01 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv01 sample01 -wi-a----- 60.00g
ボリュームの容量が増加したので、これでほぼ作業は終了。あとはファイルシステムをボリュームの空き容量に合わせて拡張していく
ファイルシステムを拡張する
今回は、実験用にext4 を使ったので、ext4 の拡張手順に従って拡張する。
最初にe2fck -f
でチェックしておく
$ sudo e2fsck -f /dev/mapper/sample01-lv01 e2fsck 1.42.12 (29-Aug-2014) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/mapper/sample01-lv01: 11/1966080 files (0.0% non-contiguous), 167409/7864320 blocks
次に resize2fs で空き容量いっぱいまで拡張する
次に、resize2fs
のコマンドをオプションの容量指定無しで用い100%までファイルシステムを拡張する。
$ sudo resize2fs /dev/mapper/sample01-lv01 resize2fs 1.42.12 (29-Aug-2014) Resizing the filesystem on /dev/mapper/sample01-lv01 to 15728640 (4k) blocks. The filesystem on /dev/mapper/sample01-lv01 is now 15728640 (4k) blocks long.
最後にマウントして確認
$ sudo mount /dev/mapper/sample01-lv01 mnt $ df -h mnt ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/sample01-lv01 59G 52M 56G 1% /home/takuya/mnt
以上で拡張の手順は終わり。
物理HDDで使う時と、LVMで容量を拡張する時の、2つの大きな違いは、容量追加がとても楽なこと。
パーティションの移動や、前半部分を開けたり後方部分を開けたりといったfdisk のめんどくさい作業が要らなくなって嬉しい。
パーティションを移動するときに比べて圧倒的にかかる時間が少ないのも魅力的である。
ただ、物理ディスク内を虫食いに使ってしまうので、リカバリ時に少し苦労するかもしれない。その懸念もLVMをちゃんと使えれば防ぐことが出来る。その話はまた別のエントリで。
参考資料
- man lvextend
- man resiz2fs
- man e2fsck