29 XenStore:在域之间共享的配置数据库 #
本章介绍有关 XenStore 的基本信息、它在 Xen 环境中的作用、XenStore 所使用的文件的目录结构,并提供了 XenStore 命令的说明。
29.1 简介 #
XenStore 是在 Dom0 中所运行的 VM Guest 与管理工具之间共享的配置和状态信息数据库。VM Guest 和管理工具对 XenStore 进行读取和写入以传达配置信息、状态更新和状态更改。XenStore 数据库由 Dom0 管理,支持读取和写入密钥等简单操作。可以通过监测关注项将 XenStore 中发生的任何更改通知给 VM Guest 和管理工具。xenstored
守护程序由 xencommons
服务管理。
XenStore 位于 Dom0 上的单个数据库文件 /var/lib/xenstored/tdb
(tdb
表示树数据库)中。
29.2 文件系统接口 #
XenStore 数据库内容由与 /proc
类似的虚拟文件系统表示(有关 /proc
的详细信息,请参见第 2.6 节 “/proc
文件系统”)。树有三条主路径:/vm
、/local/domain
和 /tool
。
/vm
- 存储有关 VM Guest 配置的信息。/local/domain
- 存储有关本地节点上的 VM Guest 的信息。/tool
- 存储有关多个工具的一般信息。
每个 VM Guest 都有两个不同的 ID 编号。即使 VM Guest 迁移到其他计算机,全局唯一标识符 (UUID) 也保持不变。域标识符 (DOMID) 是表示正在运行的特定实例的标识号。将 VM Guest 迁移到其他计算机后,此编号通常会改变。
29.2.1 XenStore 命令 #
可使用以下命令操作 XenStore 数据库的文件系统结构:
xenstore-ls
显示 XenStore 数据库的完整转储。
xenstore-read
path_to_xenstore_entry
显示指定 XenStore 项的值。
xenstore-exists
xenstore_path
报告指定的 XenStore 路径是否存在。
xenstore-list
xenstore_path
显示指定 XenStore 路径的所有子项。
xenstore-write
path_to_xenstore_entry
更新指定 XenStore 项的值。
xenstore-rm
xenstore_path
去除指定的 XenStore 项或目录。
xenstore-chmod
xenstore_path
mode
更新对指定 XenStore 路径的读取/写入权限。
xenstore-control
将一条命令(例如,用于触发完整性检查)发送到
xenstored
后端。
29.2.2 /vm
#
/vm
路径按每个 VM Guest 的 UUID 编制索引,用于存储虚拟 CPU 数量和分配的内存量等配置信息。每个 VM Guest 都有一个 /vm/<uuid>
目录。要列出目录内容,请使用 xenstore-list
。
>
sudo
xenstore-list /vm 00000000-0000-0000-0000-000000000000 9b30841b-43bc-2af9-2ed3-5a649f466d79-1
输出的第一行属于 Dom0,第二行属于正在运行的 VM Guest。以下命令会列出与 VM Guest 相关的所有项:
>
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 Guest 的虚拟 CPU 数量)的值,请使用 xenstore-read
:
>
sudo
xenstore-read /vm/9b30841b-43bc-2af9-2ed3-5a649f466d79-1/vcpus 1
所选 /vm/<uuid>
项的列表如下:
uuid
VM Guest 的 UUID,在迁移过程中不会变化。
on_reboot
指定响应重引导请求时是要销毁还是重启动 VM Guest。
on_poweroff
指定响应暂停请求时是要销毁还是重启动 VM Guest。
on_crash
指定响应崩溃事件时是要销毁还是重启动 VM Guest。
vcpus
分配给 VM Guest 的虚拟 CPU 数量。
vcpu_avail
VM Guest 的活动虚拟 CPU 的位掩码。位掩码中有多个位等于
vcpus
的值,其中有一个位是为每个联机虚拟 CPU 设置的。name
VM Guest 的名称。
普通的 VM Guest(不是 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 Guest 的操作系统类型。
kernel
Dom0 上指向 VM Guest 内核的路径。
cmdline
引导时对 VM Guest 使用的内核命令行。
ramdisk
Dom0 上指向 VM Guest RAM 磁盘的路径。
dmargs
显示传递给 QEMU 进程的参数。如果您使用
ps
查看 QEMU 进程,看到的参数应该与/vm/<uuid>/image/dmargs
中的相同。
29.2.3 /local/domain/<domid>
#
此路径按运行中的域 (VM Guest) ID 编制索引,包含有关运行中的 VM Guest 的信息。请记住,在迁移 VM Guest 期间,域 ID 会变化。可用的项如下:
vm
此 VM Guest 的
/vm
目录的路径。on_reboot, on_poweroff, on_crash, name
请参见第 29.2.2 节 “
/vm
”中的相同选项。domid
VM Guest 的域标识符。
cpu
当前 VM Guest 固定到的 CPU。
cpu_weight
出于调度目的分配给 VM Guest 的权重。权重越高,使用物理 CPU 的频率就越高。
除了上面所述的各个项以外,/local/domain/<domid>
下的多个子目录也包含特定的项。要查看所有可用的项,请参见 XenStore
Reference。
/local/domain/<domid>/memory
包含内存信息。
/local/domain/<domid>/memory/target
包含 VM Guest 的目标内存大小(以 KB 为单位)。/local/domain/<domid>/console
包含有关 VM Guest 所用控制台的信息。
/local/domain/<domid>/backend
包含有关 VM Guest 所用的所有后端设备的信息。该路径包含 VM Guest 自己的子目录。
/local/domain/<domid>/device
包含有关 VM Guest 的前端设备的信息。
/local/domain/<domid>/device-misc
包含有关设备的其他信息。
/local/domain/<domid>/store
包含有关 VM Guest 的存储空间的信息。