有没有办法一次设置多个 ZFS 文件系统属性?

eww*_*ite 6 linux freebsd solaris zfs

我正常的 ZFS 文件系统构建过程可能类似于:

zpool create vol1 -o autoexpand=on -o autoreplace=on mirror nvme0n1 nvme1n1 -f
zfs set compression=lz4 vol1
zfs set atime=off vol1
zfs set xattr=sa vol1
zfs set acltype=posixacl vol1
zfs create vol1/data -o mountpoint=/data
Run Code Online (Sandbox Code Playgroud)

ZFS 似乎允许使用该-o标志在文件系统和池创建中设置选项。但是,在许多情况下,我需要在顶层设置文件系统参数(用于新文件系统的继承),而不是在本地定义。

有没有办法将多zfs set parameter=value行简化为单个命令行?

dro*_*kie 6

取决于实施。

在 FreeBSD (10.3-STABLE) 上,您可以:

# zfs create zfsroot/test
# zfs set compression=lzjb sync=disabled zfsroot/test
#
Run Code Online (Sandbox Code Playgroud)

在 Solaris (11.2) 上,您不能:

# zfs create rpool/test
# zfs set compression=on sync=disabled rpool/test
cannot open 'sync=disabled': invalid dataset name
#
Run Code Online (Sandbox Code Playgroud)

由于我没有带 zfs 的 Linux,因此您可以自行探索。:)