zfs设置在哪写的?

在FreeBSD 10.0上,当创buildzfs分区并configuration它们的安装位置(权限等)时,这些信息存储在哪里? /etc/fstab大部分是空的。

即:

 $ zfs mount zpool0/ROOT/default / zpool0/home /home zpool0/tmp /tmp zpool0/usr /usr zpool0/usr/local /usr/local zpool0/usr/obj /usr/obj zpool0/usr/ports /usr/ports zpool0/usr/ports/distfiles /usr/ports/distfiles zpool0/usr/ports/packages /usr/ports/packages zpool0/usr/src /usr/src zpool0/var /var zpool0/var/crash /var/crash zpool0/var/db /var/db zpool0/var/db/pkg /var/db/pkg zpool0/var/empty /var/empty zpool0/var/log /var/log zpool0/var/mail /var/mail zpool0/var/run /var/run zpool0/var/tmp /var/tmp 

我已经grepped通过/etc/var上面find的string,我没有得到任何命中。

ZFS池信息不存储在纯文本文件中。 有关池的信息存储在磁盘上。 ZFS池信息也可以写入ZFScaching文件 ,但不包含装载点信息。

如果您想获得ZFS池的安装点值,可以使用以下命令:

 zfs get mountpoint <pool name> zfs get mountpoint <pool name>/<dataset> 

如果要更改装入点值,可以使用zfs set命令。 有关pipe理挂载点的更多信息 。

另外,下面是一些其他有用的命令,可以用来获取有关ZFS池的信息:

 zfs list zpool list zpool status 

如果您想了解您的ZFS池caching文件的位置,可以使用以下命令:

 zpool get cachefile <pool name> 

特别为你的情况:

 zpool get cachefile zpool0 

如果要从该文件读取信息,可以使用zdb命令。 使用这个命令要小心 。 使用可能会很危险。 更多信息 。

一个ZFS池可以在没有caching文件的情况下创build ,所以如果zpool get cachefile命令不显示一个不会出现混乱。

编辑 :我更新了我的答案, 迈克尔是正确的 ,ZFS池caching文件不包含有关挂载点的信息。 不过,我仍然会留下有关caching文件的信息,以防万一有人发现它有用。

正如Gene指出的 ,ZFS池中的文件系统(不是分区!)列表存储在池本身中。 具体而言,它被存储为池元数据的一部分,这在原始forms中是不容易访问的。

您可以使用zdb (ZFSdebugging器工具)访问元数据,但是您需要小心以及熟悉ZFS磁盘格式,以正确解释zdb某些可能的调用的输出。 (毕竟是一个debugging器。)

您还可以使用其他ZFS命令使用它,包括zpoolzfs命令的子命令。

通常,在使用ZFS 文件系统时,您只需使用zfs命令,可能是zfs createzfs destroy (小心;这实际上的确如它所说的那样), zfs getzfs set 。 在你的具体情况下,你可能会对mountpoint属性最感兴趣,它指定了两件事情:

  • 如果将其设置为path,则将该ZFS文件系统的挂载点置于整个文件系统层次结构中, 然后自动挂载
  • 如果设置为legacy ,那么指定挂载点时文件系统将被“手动”(使用非ZFS感知工具) mount ,如普通的旧mount (可能通过/ etc / fstab)
  • 如果设置为none ,则不能挂载文件系统; 这与设置canmount off类似

ZFScaching文件与此无关,因为caching文件只包含caching信息,而且您正在询问文件系统信息。 文件系统元数据始终存储在池本身中。