VirtualBoxの仮想HDのサイズを後から大きくする

Twitterに書くには長すぎたんだけどどっかにまともに書くほどでもないチラシの裏だったのでこっちに書く。


概要

MacBook(Early 2008)にVirtualBoxを導入してWindows Server 2003を走らせてて、そいつの仮想HDを最初ケチって10GBに設定したんだけれどもやっぱり厳しくなってきたので50GBに拡大した。思ったより面倒だったから備忘録代わりに書いておこうと思った次第。

作業環境

Host側の環境には特に依存しないはず……。ちなみにGuest側が家庭用Windowsだった時は場合は後の作業が楽。

Host OS
Mac OS X 10.5.8 on MacBook(Early 2008)
Virtualization
VirtualBox 4.0.10
Guest OS
Windows Server 2003 R2

手順

とりあえず今回はggって出てきたサイトさん( http://risin.jp/archives/214 )を見ながらやってみた。

仮想HDの「物理的な」容量を大きくする

まずは仮想HD自体の拡大。
VirtualBox側で50GBの可変仮想HDファイルを作成。それからターミナルを立ち上げて、
$/Applications/VirtualBox.app/Contents/MacOS/vBoxManage clonehd (もともとの仮想HDファイル) (新しい仮想HDファイル) -existing これでしばらく待つ。これで、新しい仮想HDの中にもともとの仮想HDの中身がまるまるコピーされたことになる。
でもこれはあくまで仮想HDの容量が大きくなっただけで、その中にあるパーティションのサイズは変わってないからこの先がちょっと面倒。

仮想HDのパーティションサイズを大きくする

実はWinXPとかだとこのステップはとっても簡単。VirtualBoxで、仮想マシンのディスクの割り当てを新しい仮想HDに割り当ててから、EASEUS Partition Managerの無料版( http://www.partition-tool.com/download.htm )を使えばおしまい。
ところがWindows ServerだとPartition Managerが使えないから、他の手段を考える羽目に。

頑張ればいろんな方法はあるんだろうけど、一番面倒じゃなさそうなのがOS標準のコマンドdiskpart.exeの使用。説明は@ITあたり( http://www.atmarkit.co.jp/fwin2k/win2ktips/577diskext/diskext.html )を参照。
ただしこれまた面倒なことに、diskpartは起動ディスクに対しては使用できないから、拡大前の仮想HDDを使うことにした。

もともとの構成
プライマリ・マスター
(もともとの仮想HDファイル)
パーティション設定用の一時的な構成
プライマリ・マスター
(もともとの仮想HDファイル)
プライマリ・スレーブ
(新しい仮想HDファイル)
一時的にこういう構成にしてWindowsを起動。
んで「ファイル名を指定して実行」に「diskpart.exe」と入力して呼び出す。
>list volume すると、同じようなPartitionが二つ表示されるはず(片方には「システム」って書いてある)だから、システムじゃない方に対して、 >select volume (該当ボリュームの番号) の操作を行ってから、 >extend を実行する。
これでWindows側の操作は終わりだから一旦Windowsをシャットダウン。
あとはVirtualBoxの設定を、
プライマリ・マスター
(新しい仮想HDファイル)
に直して起動すれば完了!

蛇足

今回はいちいちclonehdしたけど、単に仮想HDの(物理的な)サイズを大きくするだけなら、vBoxManageで $/Applications/VirtualBox.app/Contents/MacOS/vBoxManage modifyhd (もともとの仮想HDファイル) --resize 50000 って実行するだけで50GBにリサイズされるっていうね。XPとかならあとはこれをPartitioin Managerでパーティション拡大しておしまい。
ただ、Serverのときは上で書いたみたいに別の起動ディスクで起動して〜って過程が必要だから、まあcloneしといてよかったっていう結果オーライw


Sitemaster: じゅりあす