nkjmkzk.net

powered by Kazuki Nakajima

VMテンプレートのディスクサイズを変更(拡張)する方法

Oracle VMのVMテンプレートは小さなサイズで作成されています。Oracle Enterprise Linux 5 update 3のテンプレートで言えば、容量は4GByte程になっています。これは後から簡単に仮想ディスクを追加できるという理由と、逆に最初に大きなサイズで作ると小さくするのは厄介という理由からです。大きくするのはそれほど難しい作業ではありません。

今回は仮想ディスクを追加するのではなく、元々のディスクサイズを拡張させる方法を紹介します。Oracle Enterprise Linux 5 update 3のテンプレートを例に話を進めていきます。

*Oracle Enterprise Linux 5 update 3のVMテンプレートはこちらからダウンロードできます。

http://edelivery.oracle.com/oraclevm

まずはOracle Enterprise Linux 5 update 3のテンプレートをダウンロードし、VM Serverの/OVS/seed_pool以下に保存します。そして解凍、展開します。

[root@vmserver]# cd /OVS/seed_pool/
[root@vmserver]# tar xvfz OVM_EL5U3_X86_64_PVM_4GB.tgz

次に展開したディレクトリの中にある仮想ディスクファイルのサイズをddコマンドで変更します。今回はディスクサイズを20Gbyteに伸ばしています。

[root@vmserver]# cd OVM_EL5U3_X86_64_PVM_4GB/
[root@vmserver]# ls
README  System.img  vm.cfg
[root@vmserver]# dd if=/dev/zero of=System.img bs=1M count=0 seek=20000

*Oracle VM 2.2からSparse Fileをサポートしているのでこのddコマンドは一瞬で終了し、拡張分の容量はSparse形式で追加されます。

次に設定ファイルを編集してvfbの行をコメントアウトします。これはxmコマンドから簡単にゲストOSのコンソールに接続するためです。

[root@vmserver]# vi vm.cfg
bootloader = '/usr/bin/pygrub'
disk = ['file:/OVS/seed_pool/OVM_EL5U3_X86_64_PVM_4GB/System.img,xvda,w']
memory = '1024'
name = 'OVM_EL5U3_X86_64_PVM_4GB'
on_crash = 'restart'
on_reboot = 'restart'
vcpus = 1
#vfb = ['type=vnc,vncunused=1,vnclisten=0.0.0.0']
vif = ['']

編集が終わったらゲストOSを起動します。-cスイッチを付けることで起動と同時にゲストOSのコンソールに接続できます。

[root@vmserver]# xm create -c vm.cfg
起動が完了したらrootでログインします。デフォルトのパスワードはovsrootです。
次にfdiskコマンドを使ってパーティションを切り直します。これは、仮想ディスクのサイズは先のddコマンドで大きくなっているものの、パーティションサイズは従来のディスクで切られたままだからです。パーティションは/dev/xvda1が/boot領域、/dev/xvda2が/(ルート)領域、/dev/xvda3がswap領域となっています。/(ルート)領域を拡張させるため、一度/(ルート)領域とswap領域を削除し、新たに切り直します。(パーティションを消しても/(ルート)領域の情報は失われません。ただしパーティションの順序だけはご注意ください)

ここからの手順は設定の様子を動画を交えてご覧ください。

fdiskでパーティションを切り直す

ここで一度再起動して新しいパーティションテーブルを有効にします。

起動してきたゲストOSでは新しいパーティションテーブルが有効になっていますが、まだdfコマンドでみてもファイルシステムは大きくなっていません。現時点ではパーティションは拡大したものの、その上のファイルシステムが従来の状態のままになっているため、ファイルシステムをパーティションのサイズに合わせる必要があります。これをresize2fsコマンドで行います。

resize2fsでファイルシステムを拡張する

これで/(ルート)領域のファイルシステムが拡張されました。後、現在swap領域が無効になってしまっています。従来の領域はパーティションのレイアウト変更で消失してしまっているからです。新たに作成した/dev/xvda3をswapとして指定します。

mkswapでswap領域を作成し、swaponで有効化する

これでswap領域も新しいパーティションレイアウトに沿って有効になりました。あとは再起動後もswapが有効になるようにfstabを編集しておきます。

fstabを編集しswap設定を永続化する

これでゲストOSのディスクサイズ拡張は完了です。
最後に、このゲストOSはテンプレートなのでこれまでの作業ログやネットワーク設定等をクリーンアプしてテンプレートとしてリパックする必要があります。そうすることでこのテンプレートから次回仮想マシンを作成したときにクリーンな状態で、再度Oracle VMテンプレートのイニシャルスクリプトを起動させることができます。クリーンアップを行うには以下2つのコマンドを実行してください。
[root@guest]# oraclevm-template --cleanup
[root@guest]# oraclevm-template --enable
そしてシャットダウンすればリパックは完了です。このテンプレートから作成した仮想マシンはクリーンな状態で、イニシャルスクリプトによって初期設定を行うことができます。
VM Managerからこのテンプレートをインポートし、仮想マシンを作成してみてください。

without comments

Written by 中嶋 一樹

11月 11th, 2009 at 3:49 pm

Posted in Uncategorized

Tagged with ,

Leave a Reply