ここでは, いろいろと理由があって, /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