それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

LVMの lvextend でLVを拡張する

LVMで作ったLVのパーティションを拡張する。

手順としては、物理HDDのパーティションを拡張するときや、HDDを大容量に換装した時の手順とほぼ同じですね。

  1. pv の確認
  2. vg の確認
  3. lv の確認
  4. lv の容量を追加する
  5. 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