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 × 1024
3
なので 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