为什么 ZFS 复制是单线程的?

为什么 ZFS 复制是单线程的?

在我的 8 核 NAS 上,当通过 SSH 运行 ZFS 复制时,我看到只有一个核心达到最大值。

我希望传输快照能够与核心数量完美匹配,因为快照可以分成 N 个独立的部分。

它是单线程的,有什么技术原因吗?

答案1

对此我不太确定,但可以(有根据的)猜测:

通过多线程方法可以轻松实现机器本地复制,但问题是这是否会给您带来很多好处,因为与硬盘之间的数据传输非常具有顺序性。当然,您可以并行执行多个硬盘,但并行进程之间的同步非常重要,并且会使事情变得非常复杂。

当你将 LAN 连接加入其中时,情况又会有所不同。SSH
连接是单线程的。显然,你可以并行运行多个连接,但 LAN 连接的性质是高度连续的(LAN 速度通常是最受限制的因素),因此,这是否会提高性能以及付出的努力是否值得,这一点值得商榷。

当然……另一方能以同样的方式处理这个问题吗?
如果接收方 NAS 的核心数比发送方少(最坏情况:只有 1 个),您很容易就会给它带来大量的任务切换开销。
如果 NAS 盒之间的物理磁盘结构不匹配,还需要在运行中进行(不小的)数据重组。
再说一遍:这值得这么复杂和努力吗?

相关内容