本章では、 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-lsXenStore データベースのダンプを表示します。
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 コマンドをお使いください。
>sudoxenstore-list /vm 00000000-0000-0000-0000-000000000000 9b30841b-43bc-2af9-2ed3-5a649f466d79-1
出力の冒頭は Dom0 そのもので、 2 行目が実際の VM ゲスト になります。下記のように実行することで、 VM ゲスト 内の項目を表示することができます:
>sudoxenstore-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 コマンドを使用します:
>sudoxenstore-read /vm/9b30841b-43bc-2af9-2ed3-5a649f466d79-1/vcpus 1
/vm/<UUID> 以下の主な項目は下記のとおりです:
uuidVM ゲスト の UUID です。移行処理を行っても、この値は変更されません。
on_rebootVM ゲスト が再起動要求を受け取った場合、 VM ゲスト のシャットダウンや再起動など、何を行うのかを指定する項目です。
on_poweroffVM ゲスト が停止要求を受け取った場合、 VM ゲスト のシャットダウンや再起動など、何を行うのかを指定する項目です。
on_crashVM ゲスト がクラッシュした場合、 VM ゲスト のシャットダウンや再起動など、何を行うのかを指定する項目です。
vcpusVM ゲスト に割り当てられた仮想 CPU 数を表します。
vcpu_availVM ゲスト に対して提供されている仮想 CPU のビットマスクです。このビットマスクには vcpus の値と同じ数だけビットが設定されています。
nameVM ゲスト の名前を表します。
通常の VM ゲスト (Dom0 以外) であれば、 /vm/<UUID>/image のようなパスも存在します:
>sudoxenstore-list /vm/9b30841b-43bc-2af9-2ed3-5a649f466d79-1/image ostype kernel cmdline ramdisk dmargs device-model display
それぞれの項目の意味は下記のとおりです:
ostypeVM ゲスト の OS の種類を表します。
kernelVM ゲスト で使用するカーネルの Dom0 内でのパスを表します。
cmdlineVM ゲスト の起動時に使用するカーネルのコマンドラインを表します。
ramdiskVM ゲスト で使用する RAM ディスクの Dom0 内でのパスを表します。
dmargsQEMU プロセスに対して渡されるパラメータを表します。 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, name30.2.2項 「/vm」 での同名の項目と同じ意味を持ちます。
domidVM ゲスト のドメイン ID を表します。
cpuVM ゲスト 側でピン設定を行っている現在の CPU を表します。
cpu_weightスケジューリングの目的で割り当てられた、 VM ゲスト に対する重み値を表します。この値が大きければ大きいほど、物理 CPU が頻繁に割り当てられるようになります。
上述の項目以外にも、 /local/domain/<ドメイン_ID> 内にはいくつかのサブディレクトリが存在しています。利用可能な全ての項目の意味を知りたい場合は、 XenStore Reference (英語) をお読みください。
/local/domain/<ドメイン_ID>/memoryメモリに関する情報が含まれています。なお、 /local/domain/<ドメイン_ID>/memory/target には、 VM ゲスト に対するターゲットのメモリサイズ (キロバイト単位) が含まれています。
/local/domain/<ドメイン_ID>/consoleVM ゲスト が使用しているコンソールに関する情報が含まれています。
/local/domain/<ドメイン_ID>/backendVM ゲスト が使用している全てのバックエンドデバイスの情報が含まれています。ここにはさらにサブディレクトリが存在する場合があります。
/local/domain/<ドメイン_ID>/deviceVM ゲスト のフロントエンドデバイスに関する情報が含まれています。
/local/domain/<ドメイン_ID>/device-miscデバイスに関するその他の情報が含まれています。
/local/domain/<ドメイン_ID>/storeVM ゲスト のストア情報が含まれています。