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 池缓存文件不包含有关挂载点的信息。但是,我仍然会留下有关缓存文件的信息,以防万一有人发现它有用。
正如Gene 指出的那样,ZFS 池中的文件系统列表(不是分区!)存储在池本身内。具体来说,它作为池元数据的一部分存储,无法以原始形式轻松访问。
您可以使用(ZFS 调试器工具)访问元数据zdb
,但您需要小心并熟悉 ZFS 磁盘格式,才能正确解释某些可能的 zdb 调用的输出。(毕竟,它是一个调试器。)
您还可以使用其他 ZFS 命令来使用它,包括zpool
和zfs
命令的子命令。
通常,在使用 ZFS文件系统时,您只需使用zfs
命令,可能是zfs create
、zfs destroy
(小心;这个命令确实如其所言!)zfs get
和zfs set
。在您的具体情况下,您可能对mountpoint
属性最感兴趣,它指定了两件事:
legacy
“手动”挂载文件系统(使用非 ZFS 感知工具),例如普通旧文件系统(可能通过 /etc/fstab)mount
none
,则无法挂载文件系统;这类似于canmount
设置off
ZFS 缓存文件与此无关,因为缓存文件仅包含池信息,而您正在询问文件系统信息。文件系统元数据始终存储在池本身中。