2011-04-24

LVM 上の EXT3 パーティションを縮小

EXT3 の縮小の方法などを紹介する.

ここでは, いろいろと理由があって, /dev/sda 上にある /dev/VolGroup00/LogVol00 を 縮小して /dev/sdb 上に移動させる必要がでてきた. ext3 でフォーマットしてルートにマウントしているので, とりあえず runlevel 1 でスナップショット /dev/VolGroup00/snap1 を取ってから, パーティションを縮小, 新しいパーティションに dd でコピーする. やや複雑な手順になってしまった.

ファイルシステムのチェックと, ジャーナルの削除を行う. (ジャーナルの削除は不要かもしれない.)

# fsck /dev/VolGroup00/snap1
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/VolGroup00/snap1: clean, 502353/134217728 files, 18419731/134217728 blocks

# fsck -n /dev/VolGroup00/snap1
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/VolGroup00/snap1: clean, 502353/134217728 files, 18419731/134217728 blocks

# tune2fs -O ^has_journal /dev/VolGroup00/snap1

# e2fsck -f /dev/VolGroup00/snap1
e2fsck 1.39 (29-May-2006)
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/VolGroup00/snap1: 502353/134217728 files (0.6% non-contiguous), 18386929/134217728 blocks

ファイルシステムの縮小. 操作が完了したら, 何ブロックになったか出力されるので, この数値を確認する. この例では, ちょうど 50331648 × 4096 = 192 × 10243 なので OK.

# resize2fs /dev/VolGroup00/snap1  192G
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/VolGroup00/snap1 to 50331648 (4k) blocks.
sudo tune2fs -O has_journal /dev/VolGroup00/snap1 
The filesystem on /dev/VolGroup00/snap1 is now 50331648 blocks long.

ジャーナルを戻す.

# tune2fs -O has_journal /dev/VolGroup00/snap1
tune2fs 1.39 (29-May-2006)
Creating journal inode: done
This filesystem will be automatically checked every -1 mounts or
0 days, whichever comes first.  Use tune2fs -c or -i to override.

縮小した領域を別のパーティションにコピーする.

# lvcreate -L 192G -n root1 VolGroup00 /dev/sdb2

# dd if=/dev/VolGroup00/snap1 of=/dev/VolGroup00/root1 bs=4096 count=50331648
(全てのブロックが書き込まれたか確認する.)

この操作中 (とくに resize2fs の間に), スナップボリュームの COW テーブルはかなりたくさん使用された. (もともとの /dev/VolGroup00/LogVol00 は 496GB 中 55 GB だけが使用されていた.)

  --- Logical volume ---
  LV Name                /dev/VolGroup00/snap1
  VG Name                VolGroup00
  LV UUID                ZBrQlU-Xhut-Efbu-uDmV-VG3n-yobg-tC0l9Y
  LV Write Access        read/write
  LV snapshot status     active destination for /dev/VolGroup00/LogVol00
  LV Status              available
  # open                 0
  LV Size                512.00 GB
  Current LE             16384
  COW-table size         64.00 GB
  COW-table LE           2048
  Allocated to snapshot  28.12% 
  Snapshot chunk size    4.00 KB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:3

0 件のコメント:

コメントを投稿