只要设置 sharenfs 属性,ZFS 便能自动共享文件系统。使用此属性时,不必在共享新文件系统时修改 /etc/dfs/dfstab 文件。sharenfs 属性是要传递给 share 命令的选项的逗号分隔列表。值 on 是缺省的共享选项的别名,它向所有用户提供 read/write 权限。值 off 指明文件系统不是由 ZFS 进行管理,但可通过传统方法(如 /etc/dfs/dfstab 文件)来共享。在引导过程中将会共享 sharenfs 属性不为 off 的所有文件系统。
缺省情况下,所有文件系统都未进行共享。要共享新文件系统,请使用类似如下的 zfs set 语法:
# zfs set sharenfs=on tank/home/eschrock |
sharenfs属性是继承的,如果文件系统继承的属性不为 off,则这些文件系统在创建时会自动进行共享。例如:
# zfs set sharenfs=on tank/home # zfs create tank/home/bricker # zfs create tank/home/tabriz # zfs set sharenfs=ro tank/home/tabriz |
tank/home/bricker 和 tank/home/tabriz 最初以可写方式共享,因为它们从 tank/home 继承了 sharenfs 属性。将该属性设置为 ro(只读)后,无论为 tank/home 设置的 sharenfs 属性为何值,都会以只读方式共享 tank/home/tabriz。
尽管大多数文件系统都可在引导、创建和销毁过程中自动共享或取消共享,但文件系统有时候需要显式取消共享。为此,请使用 zfs unshare 命令。例如:
# zfs unshare tank/home/tabriz |
此命令会取消共享 tank/home/tabriz 文件系统。要取消共享系统中的所有 ZFS 文件系统,需要使用 -a 选项。
# zfs unshare -a |
通常而言,ZFS 在引导和创建时共享文件系统的自动行为足以满足一般操作的需要。如果由于某些原因取消共享了某个文件系统,则可使用 zfs share 命令再次将其共享。例如:
# zfs share tank/home/tabriz |
另外,还可以通过使用 -a 选项共享系统中的所有 ZFS 文件系统。
# zfs share -a |
如果 sharenfs 属性设置为 off,则 ZFS 在任何时候都不会尝试共享或取消共享文件系统。借助此值,可以通过传统方法(如 /etc/dfs/dfstab 文件)来管理文件系统共享。
与传统的 mount 命令不同,传统的 share 和 unshare 命令在 ZFS 文件系统中仍然可以运行。因此,可以使用与 sharenfs 属性的选项不同的选项来手动共享文件系统。不鼓励使用这种管理模型。请选择完全通过 ZFS 或完全通过 /etc/dfs/dfstab 文件来管理 NFS 共享内容。ZFS 管理模型与传统模型相比,设计更为简单,所需进行的工作越少。