我想更改recordsize
现有 ZFS 数据集的属性。
手册页指出:
更改文件系统的记录大小仅影响之后创建的文件;现有文件不受影响。
因此,简单地更改recordsize
属性只会对新创建的文件产生影响。我希望现有文件也能利用新的记录大小。
数据集的azfs send
和zfs receive
是否会将现有文件转换为新的记录大小,还是我必须手动将文件从数据集中复制然后再复制回来?
我想更改recordsize
现有 ZFS 数据集的属性。
手册页指出:
更改文件系统的记录大小仅影响之后创建的文件;现有文件不受影响。
因此,简单地更改recordsize
属性只会对新创建的文件产生影响。我希望现有文件也能利用新的记录大小。
数据集的azfs send
和zfs receive
是否会将现有文件转换为新的记录大小,还是我必须手动将文件从数据集中复制然后再复制回来?
如果您想利用新的记录大小,您需要将数据复制回文件系统。
不过,我不确定你的问题是什么。
我知道回复晚了,但这里有几点建议:
zfs receive
有一个-o recordsize
选项可让您覆盖接收端的值。恕我直言,同步 ZFS 数据集最容易在 syncoid 的帮助下实现(这是Sanoid套件的一部分)。例如,以下相当简单的命令行会将给定的数据集从现有的 Zpool 复制
apool
到,同时在接收端bpool
将期望的数据集强制为 64k:recordsize
syncoid
是一个包装器zfs send/receive
,它根据自己管理的快照进行操作;因此您可以在系统运行时使用它,也可以发送增量。--recvoptions
被传递到zfs receive
。此选项仅记录在syncoid
的联机帮助页中,而不是在 Github 页面上,但它完全按预期工作。这是一个旧回复,但您不能使用
zfs send
+zfs recv
来更改记录大小。我被某处读到它确实改变了记录大小而被愚弄了,然后我开始从事一个项目,在那里我需要阅读很多关于流格式的内容,发现它总是引用流中已经存在记录大小的对象 ID . 当然,您可能会认为这不是问题,它可以在接收端更改它,但是因为它支持增量更新,所以当它引用块 ID + 块偏移量时,如果不将原始信息存储在某处,就不可能存储 FREE 命令ZFS,它没有。