是否有一个了解 ZFS 的用于管理 FreeBSD jail 的工具?

是否有一个了解 ZFS 的用于管理 FreeBSD jail 的工具?

FreeBSD 下的 ZFS 允许将文件系统分配给 jail,这样 jail 中具有适当权限的帐户可以访问文件系统、创建新的下属文件系统等等。至少在 8-STABLE 中,这些功能尚未集成到现有脚本中/etc/rc.d/jail。基本过程如下所示:

sysctl -w security.jail.enforce_statfs=0
sysctl -w security.jail.mount_allowed=1
zfs set jailed=on <filesystem>
zfs jail <jid> <filesystem>

并且还需要暴露zfs监狱内的设备节点。

与此同时,似乎有大量的工具(ezjail、jailer、warden 等/usr/ports/sysutils/*jail*)声称更容易/更好/更强大/等等,但其中大多数似乎只进行了轻微的维护,而且与标准 jail 脚本相比并没有太大的优势。

我想避免重复造轮子。有没有可以与 ZFS 很好地集成的 jail 管理工具?我正在寻找一种可以在启动 jail 时负责设置必要的 devfs 规则、sysctl 设置和 zfs 属性的工具……并且理想情况下允许基于名称的 jail 引用,尽管许多第三方工具都支持此功能,但不幸的是,现有的 jail 脚本中却缺少此功能。

答案1

经过一番探索,结果发现最新版本的埃兹贾伊尔已经有了这种支持。关键部分是中的以下配置选项/usr/local/etc/ezjail.conf

ezjail_use_zfs="YES"
ezjail_jailzfs="tank/jails"

-c zfs在创建监狱时使用,如下所示:

ezjail-admin create -c zfs myjail 192.168.1.10

您可以使用以下命令将 ZFS 数据集与监狱关联ezjail-admin config(您不能将此作为create命令的一部分执行):

ezjail-admin config -z tank/data/myjail myjail

这假设您已经设置了 ZFS 数据集并配置了适当的 sysctl 设置和 devfs 规则以使其工作。

您的 ZFS 数据集需要设置以下jailed选项:

zfs set jailed=on tank/data/myjail

您需要以下内容/etc/sysctl.conf

# support zfs in jails
security.jail.mount_allowed=1
security.jail.enforce_statfs=0

我对使用 ezjail 配置的 jails 使用以下 devfs 规则集:

[devfsrules_zfsjail=100]
add include $devfsrules_jail
add path zfs unhide

答案2

接受的答案(ezjail)自 2015 年以来一直无人维护。有几个项目正在积极维护:

答案3

CBSD(位于http://www.bsdstore.ru/en/about.html) 对 ZFS 有很深入的了解。

相关内容