为什么ZFS重新同步扫描整个池?

Modified on: Mon, 15 Apr 2019 20:40:02 +0800

我有一个zpool,我刚刚更换了一个故障磁盘,并开始重新启动新磁盘。

我不明白的是,为什么zpool status表示当vdev的大小为〜30TB时,它想要扫描129TB。当我查看iostat -nx 1时,我可以看到vdev中的5个磁盘正在进行大量读取,而新磁盘等于重写。因此,zfs不会像所说的那样扫描所有数据。

# zpool status tank3 |head
  pool: tank3
 state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Thu Apr 30 09:59:15 2015
    61.2T scanned out of 129T at 3.03G/s, 6h23m to go
    946G resilvered, 47.34% done

问题强>

我想说每个vdev都是相互独立的,所以一个的弹性不应该要求对其他vdev进行任何扫描。为什么zfs会在重新同步时扫描所有已用磁盘空间?

最佳答案

Resilvering是一个vdev操作;因为您暗示只有该vdev中的存储设备用于重建新设备。我不确定为什么它引用了zpool的完整大小,但我怀疑开发人员从scrub函数中借用了代码,或者它只是引用了整个zpool大小,因为这是最糟糕的情况。


相关问答

添加新评论