本章では、 XenStore に関する基本的な情報のほか、 Xen 環境内での役割、 XenStore で使用されるファイルのディレクトリ構造、そして XenStore のコマンドに関する説明をそれぞれ行っています。
XenStore は設定や状態の情報を含むデータベースで、 VM ゲスト と Dom0 内で動作する管理ツールとの間で共有される仕組みでもあります。 VM ゲスト と管理ツールは、 XenStore との間で情報を読み書きし、設定情報の伝達や状態の更新/変更などを行うことができます。 XenStore データベースは Dom0 が管理するものであり、キーをベースにした読み書きなどのシンプルな構成になっています。 VM ゲスト と管理ツール側では、 XenStore 内での項目を監視することで、変更の通知を受けることもできます。なお、 xenstored
デーモンは xencommons
サービスで管理されます。
XenStore は Dom0 内で単一のデータベースファイル /var/lib/xenstored/tdb
( tdb
は Tree DataBase (ツリー構造型データベース) の略) として存在しています。
XenStore のデータベースの内容は /proc
に似た仮想的なファイルシステム構造になっています (/proc
に関する詳細は 2.6項 「/proc
ファイルシステム」 をお読みください) 。このファイルシステムのツリーには、 /vm
, /local/domain
,/tool
の 3 つの種類から構成されています。
/vm
: VM ゲスト の設定に関する情報が保存されています。
/local/domain
: ローカルノード内の VM ゲスト に関する情報が保存されています。
/tool
: さまざまなツールに関する一般的な情報が保存されています。
それぞれの VM ゲスト には 2 種類の ID 番号が設定されます。一方の Universal Unique IDntifier (UUID) は、 VM ゲスト を他のマシンに移行しても変更されることの無い値、もう一方の DOMain IDentifier (DOMID) は、動作中のインスタンスを一位に識別する番号で、こちらは一方から他方に移行を行うと、通常は値が変化することになります。
XenStore データベースのファイルシステム構造は、下記のコマンドを使用してアクセスすることができます:
xenstore-ls
XenStore データベースのダンプを表示します。
xenstore-read
XenStore_エントリへのパス
指定した XenStore の項目の値を読み取ります。
xenstore-exists
XenStore_のパス
指定した XenStore のパスが存在しているかどうかを報告します。
xenstore-list
XenStore_のパス
指定した XenStore パス以下の全ての子項目を表示します。
xenstore-write
XenStore_エントリへのパス
指定した XenStore の項目の値を更新します。
xenstore-rm
XenStore_のパス
指定した XenStore の項目またはディレクトリを削除します。
xenstore-chmod
XenStore_のパス
モード
指定した XenStore パスの読み込み/書き込み権限を更新します。
xenstore-control
たとえば一貫性のチェックなど、 xenstored
バックエンドに対してコマンドを送信します。
/vm
#Edit source/vm
パスにはそれぞれの VM ゲスト の UUID が順に並べられ、その中には仮想 CPU 数や割り当てられているメモリ量などの設定情報が保存されています。つまり、それぞれの VM ゲスト に対して /vm/<UUID>
というディレクトリが存在することになります。ディレクトリの内容を表示したい場合は、 xenstore-list
コマンドをお使いください。
>
sudo
xenstore-list /vm 00000000-0000-0000-0000-000000000000 9b30841b-43bc-2af9-2ed3-5a649f466d79-1
出力の冒頭は Dom0 そのもので、 2 行目が実際の VM ゲスト になります。下記のように実行することで、 VM ゲスト 内の項目を表示することができます:
>
sudo
xenstore-list /vm/9b30841b-43bc-2af9-2ed3-5a649f466d79-1 image rtc device pool_name shadow_memory uuid on_reboot start_time on_poweroff bootloader_args on_crash vcpus vcpu_avail bootloader name
たとえば VM ゲスト に割り当てられている仮想 CPU 数など、項目の値を読み取りたい場合は、 xenstore-read
コマンドを使用します:
>
sudo
xenstore-read /vm/9b30841b-43bc-2af9-2ed3-5a649f466d79-1/vcpus 1
/vm/<UUID>
以下の主な項目は下記のとおりです:
uuid
VM ゲスト の UUID です。移行処理を行っても、この値は変更されません。
on_reboot
VM ゲスト が再起動要求を受け取った場合、 VM ゲスト のシャットダウンや再起動など、何を行うのかを指定する項目です。
on_poweroff
VM ゲスト が停止要求を受け取った場合、 VM ゲスト のシャットダウンや再起動など、何を行うのかを指定する項目です。
on_crash
VM ゲスト がクラッシュした場合、 VM ゲスト のシャットダウンや再起動など、何を行うのかを指定する項目です。
vcpus
VM ゲスト に割り当てられた仮想 CPU 数を表します。
vcpu_avail
VM ゲスト に対して提供されている仮想 CPU のビットマスクです。このビットマスクには vcpus
の値と同じ数だけビットが設定されています。
name
VM ゲスト の名前を表します。
通常の VM ゲスト (Dom0 以外) であれば、 /vm/<UUID>/image
のようなパスも存在します:
>
sudo
xenstore-list /vm/9b30841b-43bc-2af9-2ed3-5a649f466d79-1/image ostype kernel cmdline ramdisk dmargs device-model display
それぞれの項目の意味は下記のとおりです:
ostype
VM ゲスト の OS の種類を表します。
kernel
VM ゲスト で使用するカーネルの Dom0 内でのパスを表します。
cmdline
VM ゲスト の起動時に使用するカーネルのコマンドラインを表します。
ramdisk
VM ゲスト で使用する RAM ディスクの Dom0 内でのパスを表します。
dmargs
QEMU プロセスに対して渡されるパラメータを表します。 ps
コマンドで QEMU のプロセスを参照すると、 /vm/<UUID>/image/dmargs
と同じ内容が現れるはずです。
/local/domain/<ドメイン_ID>
#Edit sourceここでのパスは動作中のドメイン (VM ゲスト) の ID を使用し、動作中の VM ゲスト に対する情報を提供しています。なお、 VM ゲスト の移行を行った場合、ドメイン ID は変化することに注意してください。下記のような項目が提供されます:
vm
この VM ゲスト に対応する /vm
ディレクトリのパスを表します。
on_reboot, on_poweroff, on_crash, name
30.2.2項 「/vm
」 での同名の項目と同じ意味を持ちます。
domid
VM ゲスト のドメイン ID を表します。
cpu
VM ゲスト 側でピン設定を行っている現在の CPU を表します。
cpu_weight
スケジューリングの目的で割り当てられた、 VM ゲスト に対する重み値を表します。この値が大きければ大きいほど、物理 CPU が頻繁に割り当てられるようになります。
上述の項目以外にも、 /local/domain/<ドメイン_ID>
内にはいくつかのサブディレクトリが存在しています。利用可能な全ての項目の意味を知りたい場合は、 XenStore Reference (英語) をお読みください。
/local/domain/<ドメイン_ID>/memory
メモリに関する情報が含まれています。なお、 /local/domain/<ドメイン_ID>/memory/target
には、 VM ゲスト に対するターゲットのメモリサイズ (キロバイト単位) が含まれています。
/local/domain/<ドメイン_ID>/console
VM ゲスト が使用しているコンソールに関する情報が含まれています。
/local/domain/<ドメイン_ID>/backend
VM ゲスト が使用している全てのバックエンドデバイスの情報が含まれています。ここにはさらにサブディレクトリが存在する場合があります。
/local/domain/<ドメイン_ID>/device
VM ゲスト のフロントエンドデバイスに関する情報が含まれています。
/local/domain/<ドメイン_ID>/device-misc
デバイスに関するその他の情報が含まれています。
/local/domain/<ドメイン_ID>/store
VM ゲスト のストア情報が含まれています。