我知道 Xen 可以使用 NFS 挂载作为根文件系统来启动实例。我想要类似的东西,但不知道如何实现。
我希望所有 Xen 来宾都能看到只读块设备,并以非 root 用户身份挂载它。我知道如何通过在每个来宾配置文件中指定 dom0 可用的块设备来实现这一点。如果我可以为每个主机系统配备一个“共享”设备,那么这很简单,但我希望网络上只有一个共享设备。
我不想在每个客户机上都使用 NFS,因为我不想让它们与我的 NFS 服务器位于同一网络上。我宁愿简单地公开一个设备。
有任何想法吗?
答案1
我不认为这适用于内核模块或 Portage 树,对吗?这就是我所见过的这种机制的用途...
因此,可以肯定的是,让所有客户机都拥有一个文件系统映像文件作为只读块设备附加到它们身上是很容易的。将其安装在客户机的某个位置(/etc/fstab
以及所有 Jazz)也非常简单。无论如何,您大概都会在块设备中处理所有权(假设您使用的是存储该元数据的文件系统类型 - 但如果您使用的是 VFAT,所有权只是一个安装选项)。
诀窍在于处理更新。一旦你在任何客户机上安装了“块设备”,没有什么可以允许更新它。这根本行不通,因为没有人知道其他人正在更新内容,所以一切都会崩溃。相反,您需要使用文件系统映像创建文件的副本,进行所需的任何更改,然后触发某种更新操作,让客户机卸载旧的“文件系统”,然后 dom0 可以分离旧文件并附加新文件,然后客户机重新安装文件系统。
在我使用过这个的情况下,我们实际上在 domU 配置文件中有一些代码(因为它们无论如何都是 Python)来查找最新的块设备并将其附加,然后通常的启动时挂载就会做正确的事情。所以,对我们来说,“更新过程”是“重新启动客户机”。不过,这是否适合你,我无法回答这个问题,因为我不知道你想用它做什么。
或者,只需使用第二个 NFS 服务器,仅用于将这些文件提供给您的 domU。这可能比所有这些块设备 frufru 更简单(我们有一些非常具体的要求,使其成为最不坏的选择,但我不认为它们适用于您的情况——事实上,我知道它们不适用于您的情况,因为您已经有 NFS 服务器了)。