什么是 ZFS 旧式挂载点?

什么是 ZFS 旧式挂载点?

我试图了解 ZFS 在执行快照等操作时的工作方式。当我在机器上使用 zfs list 时,我会得到一些挂载点和一些路径。例如,我得到了类似这样的信息:

rpool/ROOT/s10x_u10_wos_17b      5.3gb   58.2gb    5.3gb     /

我获得了 root 作为挂载点/

我首先想到的是,这里有实际的文件,但当我导航到目录时,/rpool却没有 ROOT 目录。经过一番思考,我发现它/rpool/ROOT实际上安装在 Legacy 上,所以它一定是在其他地方。

有人可以解释一下当它安装在旧版上时文件在哪里,以及为什么使用这种旧模式吗?

答案1

我不明白传统挂载点的用途。

ZFS 在池内提供数据集的层次结构。在您的案例中,您有一个名为 的池rpool,以及至少以下数据集:

  • rpool
  • rpool/ROOT
  • rpool/ROOT/s10x_u10_wos_17b

这些数据集中的每一个通常都是一个文件系统(尽管它可以是一个卷/块设备)。

正如每个数据集都可能是一个完整/独立的文件系统一样,每个数据集也可以独立安装或不独立安装。

默认情况下,ZFS 会将子数据集挂载在父级内的逻辑位置...如果rpool数据集挂载在/rpool(即:默认),那么您会发现rpool/ROOT数据集挂载在/rpool/ROOT,等等...

这是由mountpoint属性控制的——运行zfs get -rt filesystem mountpoint来查看每个数据集的当前值。

  • 如果该值是路径,则在导入池时,ZFS 会自动将数据集挂载在该路径上。默认(如上所述)是将文件系统挂载在父级下。
  • 如果值为none,则 ZFS 将不会挂载文件系统,并且文件系统不能可以使用其中任一种进行安装mount
  • 如果值为legacy,则 ZFS 将不会挂载文件系统,但您可以使用mountumount手动管理文件系统的挂载点。您也可以使用/etc/fstab来引导自动挂载。

在您的情形下,rpool/ROOT/s10x_u10_wos_17b数据集被挂载在/(即:它是您的根文件系统)。要实现这一点,您可以设置mountpoint=/并让 ZFS 处理事情,或者mountpoint=legacy明确设置并挂载它。

由于这是您的根文件系统,让 ZFS 为您管理它实际上不是一个选择,您需要明确指定挂载点。

因此,rpool/ROOT/s10x_u10_wos_17bmountpoint=legacy

答案2

当使用 挂载文件系统时,通常使用传统挂载点fstab

来自 FreeBSD 手册页:

如果需要,ZFS 文件系统也可以使用传统工具(mount(8)、umount(8)、fstab(5))进行管理。如果文件系统的挂载点设置为传统,则 ZFS 不会尝试管理该文件系统,管理员负责挂载和卸载该文件系统。

相关内容