Hyper-V上のCentOS6.3でストレージを拡張する

先週某氏に聞かれたので、Windows8で検証。
Hyper-V上でCentOSを30GBの仮想HDDにインストール。
この時、/dev/sda1に/boot、/dev/sda2にswapを割り当てて、残りをすべて/dev/sda3として、PVを構築。PV上にそのままVGを構築し、その内部を複数LVとしてlv1に/varを割り当て、lv2に/を割り当てる。まあ、ここまでは自動セットアップでanacondaがやってくれるようなことだ。問題は運用を開始した後にVGをLVが食い尽くした後だ。
食い尽くしてしまったので、CentOSの入った仮想HDDを、Hyper-Vの機能で60GBに拡張する。これはHyper-V管理ツールの操作で簡単に実行可能だ。さて、拡張後CentOSを起動すると、当然HDDは60GBあるように見える。sda1からsda3までのパーティションサイズ合計は30GB。残りの30GBをどうやって使用すればよいか。
2つのパターンが考えられる。

  1. 残り領域にPVを新規作成し、vgextendで新しいPVと、もともとあったVGをまとめてしまう方法。
  2. /dev/sda3をサイズ拡張し、PVをサイズ拡張。PV拡張すると多分VGも自動拡張されるので、LVを拡張という方法。

1は多分超簡単なので、2をやってみた。結構危険なので、必ず仮想HDDをバックアップしてから実行すること。

まず、/dev/sda3を拡張します。

1)# fdisk /dev/sda
2)/dev/sda3を削除(d⇒3)
3)/dev/sda3を新規作成(n⇒p⇒3)
4)/dev/sda3のタイプを8e(LVM)に変更(t⇒3⇒8e)
5)書き込んで終了させます(w)
6)オンラインディスクに対する変更のためなのか、警告がでますが、再起動します。

次にpvをリサイズします。

1)# pvresize /dev/sda3
2)# pvdisplay

次にvgがリサイズされていることを確認します。

1)# vgdisplay

最後に、lvを拡張します。

1)# lvextend -L +10G /dev/vg/lv1 ※vgはヴォリュームグループの名前
2)# lvextend -L +10G /dev/vg/lv2 ※lvは論理ヴォリュームの名前

まあこんな感じだと思われる。
参考まで。