大多数人应该使用什么 ZFS 池、vdev 和数据集属性?

大多数人应该使用什么 ZFS 池、vdev 和数据集属性?

ZFS 有许多不同的可配置属性用于泳池对于 vdev对于数据集。其中许多可以随时更改,但有些只能在创建时设置(或仅影响之后写入的数据,因此应该真正在创建时设置)。

作为一个新手,我搜索了许多不同的问题,并发现了几个建议大量设置的属性。

显然,每个用例在哪些属性有意义方面几乎没有差异,但似乎有一组通用的属性是大多数 zfs 用户应该使用的。我正在考虑那些应该有积极理由的属性不是使用它们。它们是什么?为什么?

答案1

(免责声明:作为 ZFS 初学者,这只是我目前的理解,旨在推动其他人获得更完整、更可靠的信息)。

池属性

数据集属性

这些可以zfs create -o通过根文件系统的-O开关来指定zpool create(默认情况下将被继承给其他文件系统)。

  • xattr=sa

    这显著提高了 xattr 的性能,而且没有任何实际缺点。(仅适用于 Linux目前)。

  • dnodesize=auto

    使用 时应使用此属性xattr=sa。不使用这些的主要原因是与不支持所需 ZFS 功能的系统交互

  • relatime=on

    即使在只读交互中,跟踪文件的访问时间也可能非常昂贵。relatime以属性中不太精确的信息为代价,显著降低了这些更新的粒度/频率atime(同时保持了一些通常需要的不变量)。请注意,目前,这在很长一段时间内都是 Linux 上几乎所有文件系统的默认设置。如果需要精确的atime信息,则不要打开它。如果知道atime永远不需要,那么它atime=off会提供更好的性能。

  • normalization=formD

    这将确保文件名始终以相同的方式规范化。这的主要副作用还意味着文件系统将把文件名视为 UTF-8 编码,并且不能再存储其他文件系统接受的某些“损坏”名称的文件名。如果不希望这样,请忽略它。

  • compression=lz4

    大家似乎一致认为,在现代硬件上,压缩成本非常低,因此压缩实际上只有好处。主要存储已高度压缩数据的数据集可能希望关闭压缩功能。

  • recordsize

    对于许多用例来说,默认记录大小似乎是一个很好的中间值,但数据库等某些用例可能会受益于特定的值。

来源

相关内容