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

我正常的ZFS文件系统的构build过程可能如下所示:

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 

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

有什么办法可以将多个zfs set parameter=value行简化为一个命令行吗?

取决于实施。

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

 # zfs create zfsroot/test # zfs set compression=lzjb sync=disabled zfsroot/test # 

在Solaris(11.2)上,您不能:

 # zfs create rpool/test # zfs set compression=on sync=disabled rpool/test cannot open 'sync=disabled': invalid dataset name # 

由于我没有zfs的Linux,所以这个是给你发现的。 🙂

我意识到这可能有点晚了,但这就是-O (大写字母)的用途:池的根数据集。 小写字母-o用于游泳池属性。 我在Ubuntu / ZoL中使用了这个,但FreeBSD似乎也有。 哦,你会看看,看来Solaris也是!