ディスクを拡張する-LVM2か仮想化か

先日、CentOSサーバのディスク容量を拡張するネタがあった。/dev/sdbとして接続されていたデータディスクはそのままに、OSの入っているディスクを大容量のものに取り換えるという作業だ。
たまたま、データの入っているパーティションというかLogical VolumeがLVM*1で切ってあったので、あたらしいハードディスク上のパーティションをPVとして登録して、既存のLVが切りだされたVGに追加して、既存LV上のファイルシステムを拡張することで対応した。*2
途中、ファイルシステムの拡張コマンドe2fsadmがCentOSのdistributionには存在しないことが分かったりして、微妙に焦った。
結局CentOS5.5ではこんな手順になるだろう。*3

  • OSインストール時に、データ領域に追加する予定のパーティションを作成しておく(CentOSのインストーラはそこまではやれる)
  • OSインストール後、PVを作成
# pvcreate パーティション名(/dev/sda5とか)
# pvscan
  • PVをVGに追加
# vgextend ロジカルボリュームグループ名 PV名
# vgscan
  • LVを拡張する。サイズを%100FREEとかするとめいっぱいやってくださる。
# lvextend  -l+100%FREE ロジカルボリューム名
  • LV上のファイルシステム*4を拡張する。ただしその前にfsckせよといわれるので従う。今回は1TBのディスクだったのでfsckに結構時間がかかった(10分以上)
# e2fsck -f ロジカルボリューム名
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
ロジカルボリューム名: 59236/60293120 files (14.8% non-contiguous), 114349740/120586240 blocks
# resize2fs ロジカルボリューム名
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on ロジカルボリューム名 to 360865792 (4k) blocks.
The filesystem on ロジカルボリューム名 is now 360865792 blocks long.

で、本題。いまどきこんなことする奴おるんかしら

ところどころで紹介されているe2fsadmコマンドがCentOSにバンドルされてなかったあたりで思ったのだが、いまどきこういうことは流行らないのかなぁ、と。
どうせCentOSなら、Xenで仮想化しちゃった後でディスクをいじるほうが楽というか、ノウハウとして今後使えるんじゃないかと思ったりした。*5
ここでKVMがすっと出てこないあたり、自分もRedHatも大丈夫かと思ってしまう(汗

(2011/04/27追記)VMware ESXi4.1上でもすんなりできた

ディスクの扱いってのは、XenServer5.6とvSphere4でOVF経由でデプロイしてみるといろいろ違いがあって面白い。
VMware ESXi4.1の仮想化環境ということで、init 1レベルに落とさず、/をマウントしたままでサイズ換えたりというテストができた。ちゃんとfsckもresize2fsも、マウントしたまま実行できた。(fdiskで、増設したディスクを認識させた直後はOSの再起動が必要だったが)

*1:LVM2

*2:こういうことしてLVを作ると、ハードディスクの障害が発生したときにハマりやすいので、best practiceとは言えない。一応、smartでヤバいと報告されたハードディスクからデータを退避するという対処方法はあるようだ→[http://www.itmedia.co.jp/enterprise/0308/08/epn01_3.html#h05:title]

*3:参照:[http://d.hatena.ne.jp/sodomojo/20080704/1215124477:title]とか[http://nosa.cocolog-nifty.com/sanonosa/2006/06/linuxlvm_9d51.html:title]とか。基本を押さえるなら[http://www.miraclelinux.com/technet/document/linux/training/2_2_3.html:title]とか?

*4:CentOSだとたいていはext3かしら

*5:VMwareの製品でもいいけど、無償版であるVMware Server2は今後メンテされなそうなので、「今後役立つノウハウ」という意味では除外。逆に「銭がとれる」という意味ではVMware関連のお仕事は大事だが(汗