我有一个自动挂载单独的池,有嵌套的挂载点的问题。 我正在使用ZfsOnLinux 0.6.2。
目前的情况如下:
zpool1 ---> /var zpool1/log ---> /var/log zpool1/mail ---> /var/mail
现在我需要为数据库添加一个单独的zpool。 为了保持目录层次的一致性,我想到了这一点:
zpool2 ---> /var/db
现在,问题是,当zpool2首先挂载,zpool1无法挂载(这是逻辑)。
有没有一种方法可以强制使用池安装顺序来允许在zpool1中安装zpool2,除了使用传统的安装选项? 像zpools依赖? 或者我应该不惜一切代价避免这种嵌套坐骑?
不要将zpool2
为/var/db
,而zpool2
其挂载为/zpool2
或/db
或者任何对您有意义的东西。
然后将/var/db
作为/var/db
的符号链接。
您可以将文件系统挂载点属性设置为legacy
并使用/etc/fstab
来定义它们。
这样,你就可以定义它们将被安装的顺序。
编辑:我只是注意到你已经考虑了传统的方法。 这可能是唯一的一个。
也许在ZFS上使用Root可能会有所帮助。
我在FreeBSD上使用两个池和嵌套挂载点的ZFS。 第一个池(ssd)是其中大部分其他文件系统所在的根文件系统所在的池。 第二个池(hdd)用于将大量数据安装到特定位置的文件系统。
我相信因为根文件系统,所有来自ssd池的文件系统首先被挂载,而hdd池中的文件系统被挂载在第二个。
我从来没有这个设置的问题。 但是,这是一个生产服务器,我不经常重新启动它。
在同一池中,安装path的组成决定了安装顺序。 在一个池中,Zfs按照各自的安装点path对文件系统进行sorting,从而保证正确的安装顺序。
当涉及2个或更多个池时,没有类似的设施来自动在池之间施加挂载次序。
换句话说,Zfs有一个内置的机制,可以确保任何挂载点组合都能使fs-s以正确的顺序挂载,但是当涉及多个池时,它没有类似的function来保证这一点。
如果pool2的文件系统设置为通过首先在pool1中挂载一个fs使其可用的挂载点挂载,则pipe理员将确保pool1确实首先安装。 例如:它必须是脚本。 所以答案是“不要期望这个自行清理”。