Oracle Solaris ZFS 管理指南

显式 ZFS 数据清理

检查数据完整性的最简单的方法是,对池中所有数据启动显式清理操作。此操作对池中的所有数据遍历一次,并验证是否可以读取所有块。尽管任何 I/O 的优先级一直低于常规操作的优先级,但是清理以设备所允许的最快速度进行。虽然进行清理时池数据应该保持可用而且几乎都做出响应,但是此操作可能会对性能产生负面影响。要启动显式清理,请使用 zpool scrub 命令。例如:


# zpool scrub tank

使用 zpool status 命令可以显示当前清理操作的状态。例如:


# zpool status -v tank
  pool: tank
 state: ONLINE
 scrub: scrub completed after 0h7m with 0 errors on Tue Tue Feb  2 12:54:00 2010
config:
        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0

errors: No known data errors

每个池一次只能发生一个活动的清理操作。

可通过使用 -s 选项来停止正在进行的清理操作。例如:


# zpool scrub -s tank

在大多数情况下,旨在确保数据完整性的清理操作应该一直执行到完成。如果清理操作影响了系统性能,您可以自行决定停止清理操作。

执行常规清理可以保证对系统上所有磁盘执行连续的 I/O。常规清理具有副作用,即阻止电源管理将空闲磁盘置于低功耗模式。如果系统通常一直执行 I/O,或功耗不是重要的考虑因素,则可以安全地忽略此问题。

有关解释 zpool status 输出的更多信息,请参见查询 ZFS 存储池的状态