トップページ > LDoms関連 > Libvirt for LDoms 1.0.1 を使ってみた
カテゴリー
オラクルエンジニア通信
サポートページ
マニュアルページ
ソフトウェアダウンロード
中古UNIXマシン購入
blogs.sun.com
お勧めサイト
プライベートリンク

Libvirt for LDoms 1.0.1 を使ってみた

Libvirt とは・・・

Libvirtとは仮想マシンの制御を抽象化したライブラリです。
簡単に言うと様々な仮想化技術を操るためのフロントエンドといったところでしょうか。。。

Libvirt for LDoms 1.0.1 はその名の通り、LDoms を操作するための Libvirt です。当然、LDoms に精通されている方は ldm コマンドを駆使して何でもできるので Libvirt は必要ないです。ただ、Xen やら他の仮想化技術の知識が既にある方にとっては、LDoms を一から習得するのも面倒ですよね。そんな方のための Libvirt for LDoms なわけです。

Libvirt for LDoms 1.0.1 には以下の図の青色になっている部分が含まれています。LDoms Manager は含まれていませんので、あらかじめインストールしておきます。残念ですが、GUIで簡単に操作できるvirt-managerは現バージョンではまだ含まれていません。

Libvirt LDoms 1.0.1 ソフトウェアの入手

以下の Logical Domains Manager 1.0.1 のダウンロードサイトから入手できます。
最近では Logical Domains Manager ソフトウェアと同じアーカイブの中に入っていますので、1.0.2 以降をダウンロードした方は、パッケージのディレクトリの中で SUNWldlibvirt.v や SUNWldvirtinst.v を見つけてください。
Logical Domains Manager 1.0.1 のダウンロード

Libvirt LDoms 1.0.1 ソフトウェアのインストール

以下のように Libvirt_LDoms-1_0_1.zip を展開し、パッケージをインストールするだけです。

primary# ls
Libvirt_LDoms-1_0_1.zip 

primary# unzip Libvirt_LDoms-1_0_1.zip
Archive:  Libvirt_LDoms-1_0_1.zip
   creating: Libvirt_LDoms-1_0_1/
   creating: Libvirt_LDoms-1_0_1/Legal/
  inflating: Libvirt_LDoms-1_0_1/Legal/LGPLDisclaimer.txt
  inflating: Libvirt_LDoms-1_0_1/Legal/THIRDPARTYREADME(20071220).txt
...
  inflating: Libvirt_LDoms-1_0_1/README

primary# cd Libvirt_LDoms-1_0_1
primary# ls
Legal    Product  README
primary# cd Product
primary# ls
SUNWldlibvirt.v   SUNWldvirtinst.v
primary# pkgadd -d . SUNWldlibvirt.v

</var/tmp/Libvirt_LDoms-1_0_1/Product> 中のパッケージインスタンス <SUNWldlibvirt.v> を処理中です。

Libvirt for Logical Domains 1.0.1(sparc.sun4v) 1.0,REV=2007.12.20.16.53
Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
</> をパッケージのベースディレクトリとして使用します。
## パッケージ情報を処理中です。
## システム情報を処理中です。
   6 個のパッケージパス名がすでに正しくインストールされています。
## パッケージの依存関係を検査しています。
## ディスク領域の要件を確認中です。
## すでにインストール済みのパッケージとの重複を確認中で## すでにインストール済みのパッケージとの重複を確認中です。
## setuid/setgid を行うプログラムを検査中です。

このパッケージには、パッケージのインストール処理中にスーパーユーザーの
アクセス権で実行するスクリプトが含まれています。

<SUNWldlibvirt> のインスト��ルを継続しますか [y,n,?] y

Libvirt for Logical Domains 1.0.1 を <SUNWldlibvirt> としてインストール中です。

## 1/1 部分をインストールしています。
/usr/bin/virsh
/usr/include/libvirt/libvirt.h
/usr/include/libvirt/virterror.h
/usr/lib/libvirt.so <シンボリックリンク>
/usr/lib/libvirt.so.0 <シンボリックリンク>
/usr/lib/libvirt.so.0.3.2
/usr/lib/python2.4/vendor-packages/libvirt.py
/usr/lib/python2.4/vendor-packages/libvirtmod.so
[ クラス  を検査しています ]
## postinstall スクリプトを実行中です。

<SUNWldlibvirt> のインストールに成功しました。

primary# pkgadd -d . SUNWldvirtinst.v

</var/tmp/Libvirt_LDoms-1_0_1/Product> 中のパッケージインスタンス <SUNWldvirtinst.v> を処理中です。

Virtual install for Logical Domains 1.0.1(sparc.sun4v) 1.0,REV=2007.12.19.11.26
Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
</> をパッケージのベースディレクトリとして使用します。
## パッケージ情報を処理中です。
## システム情報を処理中です。
   5 個のパッケージパス名がすでに正しくインストールされています。
## パッケージの依存関係を検査しています。
## ディスク領域の要件を確認中です。
## すでにインストール済みのパッケージとの重複を確認中です。
## setuid/setgid を行うプログラムを検査中です。

Virtual install for Logical Domains 1.0.1 を <SUNWldvirtinst> としてインストール中です。

## 1/1 部分をインストールしています。
/usr/lib/python2.4/vendor-packages/urlgrabber/__init__.py
/usr/lib/python2.4/vendor-packages/urlgrabber/byterange.py
/usr/lib/python2.4/vendor-packages/urlgrabber/grabber.py
/usr/lib/python2.4/vendor-packages/urlgrabber/keepalive.py
/usr/lib/python2.4/vendor-packages/urlgrabber/mirror.py
/usr/lib/python2.4/vendor-packages/urlgrabber/progress.py
/usr/lib/python2.4/vendor-packages/urlgrabber/sslfactory.py
/usr/lib/python2.4/vendor-packages/virtinst/DistroManager.py
/usr/lib/python2.4/vendor-packages/virtinst/FullVirtGuest.py
/usr/lib/python2.4/vendor-packages/virtinst/Guest.py
/usr/lib/python2.4/vendor-packages/virtinst/Makefile
/usr/lib/python2.4/vendor-packages/virtinst/ParaVirtGuest.py
/usr/lib/python2.4/vendor-packages/virtinst/__init__.py
/usr/lib/python2.4/vendor-packages/virtinst/util.py
/usr/sbin/virt-install
[ クラス <none> を検査しています ]

<SUNWldvirtinst> のインストールに成功しました。
インストールは以上で終わりです。

virsh コマンドの使用方法

virsh コマンドは以下の場所にインストールされます。

primary# which virsh
/usr/bin/virsh
LDoms を virsh コマンドで操作するには以下のように実行します。
primary# virsh -c ldoms:///default
vshInit() LDOMS enabled
vshInit() LDOMS DEBUG NOT enabled
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
           'quit' to quit
以下のように virsh プロンプトが表示されるので、help と入力して利用できるサブコマンドを表示します。
virsh # help
Commands:

        help            print help
        console         connect to the guest console
        create          create a domain from an XML file
        destroy         destroy a domain
        define          define (but don't start) a domain from an XML file
        domid           convert a domain name or UUID to domain id
        dominfo         domain information
        domname         convert a domain id or UUID to domain name
        domstate        domain state
        domuuid         convert a domain name or id to domain UUID
        dumpxml         domain information in XML
        hostname        print the hypervisor hostname
        list            list domains
        nodeinfo        node information
        quit            quit this interactive terminal
        setmem          change memory allocation
        setvcpus        change number of virtual CPUs
        shutdown        gracefully shutdown a domain
        start           start an inactive or bound domain
        undefine        undefine an inactive domain
        vcpuinfo        domain vcpu information
        version         show version

■ ノード情報の表示
virsh # nodeinfo
CPU model:           SPARC
CPU(s):              24
CPU frequency:       1000 MHz
CPU socket(s):       1
Core(s) per socket:  8
Thread(s) per core:  4
NUMA cell(s):        1
Memory size:         8257536 kB
■ 仮想CPUの表示
以下のように現時点ではうまくいきませんでした。
原因は不明ですが、その他のコマンドはうまくいくのでとりあえず放置しておきます。
原因・対応策をご存知の方は教えてください。
virsh # vcpuinfo primary
Jun  5 09:51:47 t2000-1 genunix: NOTICE: core_log: virsh[1310] core dumped: /var/core/core_t2000-1_virsh_0_0_1212627106_1310
セグメント例外 (core dumped)
■ バージョン情報の表示
virsh # version
Compiled against library: libvir 0.3.2
Using library: libvir 0.3.2
Using API: LDoms 1.0.1
Running hypervisor: LDoms 1.5.2
■ virsh コマンドの終了
virsh # quit

virt-install コマンドを使ったゲストドメインのインストール

virt-install スクリプトを使用してゲストドメインの作成やゲストへのリソースの追加を行う前に、LDoms 制御 (primary) ドメインで次のことを確認してください。

  • インストールサーバーが、ネットワークを介して起動するように事前に構成されている
  • Solaris 10 8/07 OS がインストールされている
  • Logical Domains (LDoms) 1.0.1 ソフトウェアがインストールされている
  • Logical Domains Manager が動作している
  • 制御 (primary) ドメインが構成されている
  • 次のデフォルトのサービスが設定されている
    • 仮想ディスクサーバー (vds)
    • 仮想コンソール端末集配信装置 (vcc)
    • 仮想スイッチ (vsw)
ここでは既にldmコマンドを用いてLDomsの制御ドメインの上記のような初期設定が終わっていること仮定しています。

virt-install は以下の場所にインストールされています。

primary# which virt-install
/usr/sbin/virt-install
LDoms のゲストドメインをインストールするには以下のように行います。
※様々なオプションをあらかじめ付けることによって非対話的に実行することも可能です。
primary# virt-install --connect=ldoms:///default
Traceback (most recent call last):
  File "/usr/sbin/virt-install", line 24, in ?
    import libxml2
  File "/usr/lib/python2.4/vendor-packages/libxml2.py", line 215
    pass
       ^
TabError: inconsistent use of tabs and spaces in indentation
っと、さっそくエラーで止まってしまいました。が、ご安心を。
リリースノートにもありましたが、環境によって上記のエラーが出てしまうそうです。
上記の報告されているファイル /usr/lib/python2.4/vendor-packages/libxml2.py の215行目先頭にある余計なTABをスペースに修正すると直ります。

気を取り直して以下のようにもう一度実行します。

primary# virt-install --connect=ldoms:///default
What is the name of your virtual machine? ldom3
 How much RAM should be allocated (in megabytes)? 1900
 What would you like to use as the disk (path)? /test/ldom3root
 How large would you like the disk (/test/ldom3root) to be (in gigabytes)? 8

上記設定では、
論理ドメイン名:ldom3
メモリサイズ:1900MB
仮想ディスク(インストール用):/test/ldom3root
仮想ディスクのサイズ:8GB
ということになります。

この対話モードでは仮想CPUの数が聞かれないので、デフォルトの1に設定されてしまいます。複数CPUを割り当てる場合は、--vcpus=4 などのオプションを付けて実行します。まぁインストール後にすぐ変更できますので、リソースに関しては大した問題ではないですね。

設定を終わると以下のように自動的に必要なファイル(仮想ディスク用)などを作成してインストールが始まろうとします。

Starting install...
libvir: LDoms error : Domain not found: no domain name match


Creating the virtual disk file /test/ldom3root... It might take a few minutes to complete.
LDom ldom3 started


MAC address 00:14:4f:f9:5f:bd is used for a virtual network device vnet1
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Connecting to console "ldom3" in group "ldom3" ....
Press ~? for control options ..

ok

ここで ldom3 のネットワークインタフェース vnet1 が使用する MACアドレス(00:14:4f:f9:5f:bd)が上記のようにわかるので、JumpStartサーバーの/etc/ethersに登録しておきます。

ちなみに以下のように設定されているエイリアスを確認するとvdisk1やらvnet1やらが既に定義されています。

ok devalias
vdisk1                   /virtual-devices@100/channel-devices@200/disk@0
vnet1                    /virtual-devices@100/channel-devices@200/network@0
virtual-console          /virtual-devices/console@1
net                      /pci@780/network@1,1
disk                     /pci@7c0/scsi@1/disk@0
scsi                     /pci@7c0/scsi@1
ttyb                     /virtual-devices/console@4
nvram                    /virtual-devices/nvram@3
ttya                     /virtual-devices/console@1
vdisk                    /virtual-devices/disk@0
name                     aliases
あとは普通にJumpStartインストールをするだけです。
ldmコマンドでも大して面倒ではないですが、やはりこちらの方が簡単ですね~。
ok boot vnet1 - install
Boot device: /virtual-devices@100/channel-devices@200/network@0 File and args: - install
Requesting Internet Address for 0:14:4f:f9:5f:bd
SunOS Release 5.10 Version Generic_120011-14 64-bit
Copyright 1983-2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
...

あとは待っていればインストールが完了して、ゲストドメインにコンソールログインができる状態まで自動的に上がってきます。

インストールでコケちゃう場合は、インストールサーバー側やネットワークの問題だと思いますので、再度確認してみてください。

LDoms や Libvirt のマニュアル一覧

Logical Domains (LDoms) 1.0 Documentation - Japanese

オラクルユニバーシティSolaris系技術トレーニング一覧

Solarisお勧め書籍

Solaris 11.2 システムハンドブック
Oracle Solaris 11 試験対策本(OCA)