zfs 设置写在哪里?

eri*_*icx 6 freebsd zfs configuration

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

IE:

$ 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
Run Code Online (Sandbox Code Playgroud)

我已经grepped通/etc/var上面出现的字符串,我没有得到任何命中。

Gen*_*ene 10

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

如果要获取 ZFS 池的挂载点值,可以使用以下命令:

zfs get mountpoint <pool name>
zfs get mountpoint <pool name>/<dataset>
Run Code Online (Sandbox Code Playgroud)

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

此外,还有一些其他有用的命令可用于获取有关 ZFS 池的信息:

zfs list
zpool list
zpool status
Run Code Online (Sandbox Code Playgroud)

如果您想找出 ZFS 池缓存文件的位置,可以使用以下命令:

zpool get cachefile <pool name>
Run Code Online (Sandbox Code Playgroud)

专门针对您的情况:

zpool get cachefile zpool0
Run Code Online (Sandbox Code Playgroud)

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

可以在没有缓存文件的情况下创建 ZFS 池,因此如果该zpool get cachefile命令未显示,请不要惊慌。

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


use*_*ser 5

正如Gene 指出的那样,ZFS 池中的文件系统列表(不是分区!)存储在池本身内。具体来说,它作为池元数据的一部分存储,无法以原始形式轻松访问。

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

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

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

  • 如果设置为路径,则为整个文件系统层次结构中该 ZFS 文件系统的挂载点,自动挂载
  • 如果设置为,则在指定挂载点时legacy“手动”挂载文件系统(使用非 ZFS 感知工具),例如普通旧文件系统(可能通过 /etc/fstab)mount
  • 如果设置为none,则无法挂载文件系统;这类似于canmount设置off

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