2011年04月01日

LVMを使って既存のext3パーティションをオンラインリサイズ

 昨今のLinuxは、インストール時にパーティショニングをおまかせモードにすると、/boot 以外をLVMで作ってくれる。LVMを使われると、所謂パーティションツールで特定のところだけを移植したりするときに軽く困るのでわざと使わないこともあるのだが、LVMを使っているとそれはそれで便利なときもある。例えば、/ が足らない時。
 例えば、/dev/hda1が/boot、/dev/hda2がLVM、/dev/hda3 がFAT32、みたいなマシンがあって、こんな感じにファイルシステムが埋まってしまったとする。
% df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
38G 36G 1.1G 95% /
/dev/hda1 99M 25M 70M 26% /boot
/tmpfs 501M 0 501M 0% /dev/shm
/dev/hda3 60G 20G 39G 33% /export/fat
 一昔前なら/をでかく取っておけば良かったと後悔後の祭りになるが、LVMだとオンラインで領域を追加できる。例えばこの時に、hda3のパーティションを潰して、/を拡張しみよう、ということである。
 おおざっぱに言うと、LVMパーティションを追加してPV作成->VGにPVを突っ込んで拡張->LVを拡張->ファイルシステムを拡張、という操作が必要である。

 まずfdiskでhda3を潰し、Linux LVMパーティションを確保する。IDは0x8e。d -> 3 -> n -> p -> 3 -> [RET] -> [RET] -> t -> 3 -> 8e -> w だ。
 こんなパーティションテーブルになった。
デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 4864 38965657+ 8e Linux LVM
/dev/hda3 4865 12161 58613152+ 8e Linux LVM
 これで追加するLVMパーティションが確保できたので、これを既存のLVMに追加する。
 最初に、pvcreateでPVを作り、LVMパーティションを使えるようにする。
# pvcreate /dev/hda3
Physical volume "/dev/hda3" successfully created
# pvdisplay /dev/hda3
"/dev/hda3" is a new physical volume of "55.90 GB"
--- NEW Physical volume ---
PV Name /dev/hda3
VG Name
PV Size 55.90 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID i3iHBK-Lm4l-wIR1-iKBl-gFlJ-063G-kDI9nM
次に、/ が入っているVGである VolGroup00 に、今作ったPVを追加する。VGを見るコマンドはvgdisplay。追加前は
# vgdisplay
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 37.16 GB
PE Size 32.00 MB
Total PE 1189
Alloc PE / Size 1189 / 37.16 GB
Free PE / Size 0 / 0
VG UUID JOT4c8-pOkz-hVtX-Aprl-fOol-Ow01-EgeRfl
(以下略)
だったところに、vgextendで追加する。
# vgextend VolGroup00 /dev/hda3
Volume group "VolGroup00" successfully extended
# vgdisplay VolGroup00
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 93.03 GB
PE Size 32.00 MB
Total PE 2977
Alloc PE / Size 1189 / 37.16 GB
Free PE / Size 1788 / 55.88 GB
VG UUID JOT4c8-pOkz-hVtX-Aprl-fOol-Ow01-EgeRfl
 VGサイズが拡張されたので、VGの中にあるLVの拡張を行う。LVを見るコマンドはlvdisplay。拡張前は
# lvdisplay
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID rJeiKe-4a8g-52sS-nAwu-Yeah-z9wx-U2C5tm
LV Write Access read/write
LV Status available
# open 1
LV Size 35.19 GB
Current LE 1126
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
(以下略)
だったところに、lvresizeで追加する。
# lvresize -L +58G /dev/VolGroup00/LogVol00
Extending logical volume LogVol00 to 35.19 GB
Logical volume LogVol00 successfully resized
# lvdisplay
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID rJeiKe-4a8g-52sS-nAwu-Yeah-z9wx-U2C5tm
LV Write Access read/write
LV Status available
# open 1
LV Size 91.06 GB
Current LE 2914
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
(以下略)
 次がようやく最終段階。/ のファイルシステムをリサイズ。ext3 なら、resize2fsでオンラインのまま拡張できる(resize2fsは結構時間が掛かる)。
# resize2fs -p /dev/mapper/VolGroup00-LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/mapper/VolGroup00-LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/mapper/VolGroup00-LogVol00 to 23871488 (4k) blocks.
The filesystem on /dev/mapper/VolGroup00-LogVol00 is now 23871488 blocks long.
# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
89G 24G 61G 28% /
/dev/hda1 99M 25M 70M 26% /boot
/tmpfs 501M 0 501M 0% /dev/shm
 とまあ、これでめでたく、/が拡張された。


posted by usoinfo at 10:52 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。