linux LVM でextパーティションのサイズ変更(拡大/縮小)

  • man lvm
  • man lvextend
  • man lvreduce
  • man resize2fs

あんましlvm使わないので勉強。実験した環境

VG Name vg_hoge
LV Name lv_home
LV Size 400.00 GiB
device /dev/vg_hoge/lv_home

ext4(ext3も?)拡大はオンライン(マウントしたまま)で変更可能。縮小はアンマウントが必要。

準備

色々確認しておく

# tune2fs -l /dev/vg_hoge/lv_home
# vgs
# lvs
# lvdisplay
# df -h

縮小する (lvreduce)

400Gから300Gに変更。順番としては、まずファイルシステム上でサイズを変更してから、パーティションのサイズを変更する。

1. umount する

# umount /home


2. fsckする
これをせずにresize2fs を実行すると、"Please run 'e2fsck -f /dev/vg_hoge/lv_home' first." と怒られる。

# fsck.ext4 -f /dev/vg_hoge/lv_home 
e2fsck 1.41.12 (17-May-2010)
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/vg_hoge/lv_home : 19/26214400 files (0.0% non-contiguous), 27910434/104857600 blocks	


3. resize2fs でファイルシステムを縮小

# resize2fs /dev/mapper/vg_svxxx-lv_home 300G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vg_svxxx-lv_home to 78643200 (4k) blocks.
The filesystem on /dev/mapper/vg_svxxx-lv_home is now 78643200 blocks long.


4. lvreduce でパーティションを縮小

# lvreduce -L 300G /dev/vg_svxxx/lv_home
  WARNING: Reducing active logical volume to 300.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_home? [y/n]: y
  Reducing logical volume lv_home to 300.00 GiB
  Logical volume lv_home successfully resized


5. 再マウントして確認

# mount /home
# df -h
# vgs
# lvs
# lvdisplay
# tune2fs -l /dev/vg_hoge/lv_home

拡大する (lvextend)

300Gから400Gに拡大する。拡大はオンラインのまま可能。縮小の時と順番が逆になって、パーティションを拡大してから、ファイルシステムを拡大する。

1. lvextendで拡
大する

# lvextend -L 400G /dev/vg_hoge/lv_home
Extending logical volume lv_home to 400.00 GiB
Logical volume lv_home successfully resized


2. resize2fs でファイルシステムを拡大

# resize2fs /dev/vg_hoge/lv_home 400G
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_hoge/lv_home is mounted on /home; on-line resizing required
old desc_blocks = 19, new_desc_blocks = 25
Performing an on-line resize of /dev/vg_hoge/lv_home to 104857600 (4k) blocks.
The filesystem on /dev/vg_hoge/lv_home is now 104857600 blocks long.

resize2fs 中に別のターミナルでdfしていると、sizeが徐々に拡大していくことがわかる。


3. 確認

# df -h
# vgs
# lvs
# tune2fs -l /dev/vg_hoge/lv_home