D.

LVM のサイズをオンラインのまま変更する。

最近のメジャーな Linux ディストリビューションでは標準で LVM が利用可能となっている。この LVM のオンラインリサイズを利用すると、システムの停止無しにファイルシステムのサイズを変更できる。これは非常に便利なのでやり方をまとめておく。


ここでは Debian Squeeze を利用しファイルシステムには ext3 を利用しているものとする。なお UbuntuRHEL 等のディストリビューションext4 等を利用している場合も同様である。ユースケースとして /home に多めに割り当てていたサイズを縮小し /usr や /var 等に配分する方法を想定する。

ファイルシステムのサイズ縮小

LVM のパーティションをアンマウントして、まずファイルシステム領域を縮小する。ext3/4 の場合は resize2fs で縮小できる。ここでは仮に 283GB の /home から 10GB 縮小するものと仮定する。

df -T -h
umount /dev/mapper/hostname-home
e2fsck -f /dev/mapper/hostname-home
resize2fs /dev/mapper/hostname-home 273G

mount -a でマウントしなおして df -T -h で確認すると領域が 10GB 減少しているのがわかる。

LVM のオンラインリサイズ

次に LV を縮小する。 lvdisplay であらかじめ現在の LV の状態を確認したあと lvresize -L で領域を 10GB 縮小する。

lvresize -L -10G /dev/mapper/hostname-home

ファイルシステムのサイズより小さい値まで LV を縮小してしまうとシステムの破壊につながるので気をつける。特にオプションの指定ミスはやりがちなので注意する。LV の縮小に成功すると VG 全体に空き領域が生まれるはずなので vgdisplay で確認する。今度はこれを各パーティションに割り振るため LV を拡大する。

lvresize -L +5G /dev/mapper/hostname-usr
lvresize -L +1G /dev/mapper/hostname-root
lvresize -L +3G /dev/mapper/hostname-var
lvresize -L +1G /dev/mapper/hostname-tmp

ファイルシステムのサイズ拡大

あとは引数無しで resize2fs を実行し LV で割り当てられた上限サイズまでファイルシステムを拡張すれば良い。

resize2fs /dev/mapper/hostname-usr
resize2fs /dev/mapper/hostname-root
resize2fs /dev/mapper/hostname-var
resize2fs /dev/mapper/hostname-tmp
resize2fs /dev/mapper/hostname-home


Debian の標準のインストーラーで LVM のパーティーションを構築すると /home 以外のサイズはかなりストイックに設定されるが、オンラインリサイズすればいつでも補充できるので心配する必要は無い。


ちなみにこの記事は以前に書いた記事のサルベージである。