2012年2月7日
仮想化機能を使っていると、ゲストOSのクローンやコピーを作りたいケースが多くあると思います。残念ながらOracle VM Server for SPARCにはゲストドメインのクローンやコピーを作る機能はないのですが、ZFSを使えば仮想ディスクのクローンは作成することができます。
今回はZFSなどOSの標準機能を使って、ゲストドメインのクローンを作成する方法をご紹介したいと思います。
まずは現在のドメイン構成を確認します。1つのゲストドメインldom1が構成されていますので、これをマスターとしてクローンを作成します。
SPARC Enterprise T5120# ldm ls
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
primary active -n-cv- SP 8 3968M 0.2% 2d 23h 5m
ldom1 active -n---- 5000 8 2G 0.1% 2d 23h 2m
第7回で、仮想ディスクのスナップショットを取っていますので、これを元にクローンを作成します。
ここでは、ldom1のブートディスクであるvdisk0のクローンをvdisk1という名前で作成します。
SPARC Enterprise T5120# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 32.1G 102G 97K /rpool
rpool/ROOT 8.41G 102G 21K legacy
rpool/ROOT/s10s_u9wos_14a 8.41G 102G 8.06G /
rpool/ROOT/s10s_u9wos_14a/var 244M 102G 244M /var
rpool/dump 4.00G 102G 4.00G -
rpool/export 15.5G 102G 48.5K /export
rpool/export/home 30K 102G 30K /export/home
rpool/export/vdisk0 15.5G 112G 5.23G -
rpool/export/vdisk0@snap 2.03M - 5.21G -
rpool/swap 4.13G 106G 16K -
SPARC Enterprise T5120# zfs clone rpool/export/vdisk0@snap rpool/export/vdisk1
SPARC Enterprise T5120# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 32.1G 102G 97K /rpool
rpool/ROOT 8.41G 102G 21K legacy
rpool/ROOT/s10s_u9wos_14a 8.41G 102G 8.06G /
rpool/ROOT/s10s_u9wos_14a/var 245M 102G 245M /var
rpool/dump 4.00G 102G 4.00G -
rpool/export 15.6G 102G 48.5K /export
rpool/export/home 30K 102G 30K /export/home
rpool/export/vdisk0 15.5G 112G 5.25G -
rpool/export/vdisk0@snap 28.7M - 5.21G -
rpool/export/vdisk1 0 112G 5.25G -
rpool/swap 4.13G 106G 16K -
次に作成した仮想ディスクのクローンを使用する新しいゲストドメインを作成します。残念ながらドメインの構成をコピーする方法はありませんので、ここは一からドメインを作成する必要があります。
ゲストドメインの作成方法の詳細は第3回を参照してください。
SPARC Enterprise T5120# ldm add-domain ldom2
SPARC Enterprise T5120# ldm add-vcpu 8 ldom2
SPARC Enterprise T5120# ldm add-mem 2g ldom2
SPARC Enterprise T5120# ldm add-vnet vnet0 primary-vsw0 ldom2
SPARC Enterprise T5120# ldm add-vdsdev /dev/zvol/dsk/rpool/export/vdisk1 vol1@primary-vds0
SPARC Enterprise T5120# ldm add-vdisk vdisk0 vol1@primary-vds0 ldom2
SPARC Enterprise T5120# ldm set-var auto-boot\?=true ldom2
SPARC Enterprise T5120# ldm set-var boot-device=vdisk0 ldom2
作成が終わったら、状態を確認しましょう。
SPARC Enterprise T5120# ldm ls
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
primary active -n-cv- SP 8 3968M 0.1% 2d 23h 12m
ldom1 active -n---- 5000 8 2G 0.1% 2d 23h 9m
ldom2 inactive ------ 8 2G
あとは作成したldom2を起動すればいいのですが、このままではldom1とldom2には同一のIPアドレスやホスト名などが設定されています。これでは困りますので、ldom2のIPアドレスなどをsys-unconfig(1M)コマンドを実行して、再設定します。
まずは、ldom1を停止してからldom2を起動します。
SPARC Enterprise T5120# ldm stop ldom1
LDom ldom1 stopped
SPARC Enterprise T5120# ldm bind ldom2
SPARC Enterprise T5120# ldm start ldom2
LDom ldom2 started
SPARC Enterprise T5120# ldm ls
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
primary active -n-cv- SP 8 3968M 1.3% 15m
ldom1 bound ------ 5000 8 2G
ldom2 active -n---- 5001 8 2G 12% 30s
起動したらldom2のコンソールに接続しましょう。rootパスワードはldom1で設定した値と同じです。ログインしたら、ホスト名やIPアドレスなどを確認してみてください。ldom1で設定した値と同じになっています。
SPARC Enterprise T5120# telnet localhost 5001
Trying ::1...
telnet: connect to address ::1: Network is unreachable
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connecting to console "ldom2" in group "ldom2" ....
Press ~? for control options ..
t5120-ldom1 console login:root
Password:
では、ログインしたらsys-unconfig(1M)で再設定しましょう。
# sys-unconfig
警告
このプログラムは、システムの構成を解除します。つまり、
名前がなく、他のシステムやネットワークを認識しない "初期" 状態の
システムに戻してしまいます。
このプログラムは、システムの停止も行います。
継続してよろしいですか (y/n) ?y
・・・省略・・・
ldom2の再設定が終わったら再起動してきますので、起動後にldom1も起動させて、同時に動作できることを確認してください。
SPARC Enterprise T5120# ldm start ldom1
LDom ldom1 started
SPARC Enterprise T5120# ldm ls
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
primary active -n-cv- SP 8 3968M 0.4% 21m
ldom1 active -n---- 5000 8 2G 34% 2m
ldom2 active -n---- 5001 8 2G 0.4% 3m
いかがでしたでしょうか。コマンド一発でクローンを作れるわけではないので多少面倒に思われるかも知れませんが、OSをインストールする時間分は短縮することができます。いずれldm clone-domainなんてコマンドができて、もっと簡単にできないかなぁと期待しています。
また、仮想ディスクをZFSのクローンで作ることによって、ディスク容量が節約できるメリットもあるんですよ。ZFSのクローンの仕組みはどこかでご紹介したいと思います。
応援メッセージはtwitterにて、ハッシュタグ #fjsparc までお願いします。