在 Oracle® Solaris 11.2 中管理 ZFS 文件系统

退出打印视图

更新时间: 2014 年 12 月
 
 

查看 ZFS 存储池状态信息

使用 zpool status 命令显示 ZFS 存储池状态信息。例如:

# zpool status pond
pool: pond
state: DEGRADED
status: One or more devices are unavailable in response to persistent errors.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or 'fmadm repaired', or replace the device
with 'zpool replace'.
Run 'zpool status -v' to see device specific details.
scan: scrub repaired 0 in 0h0m with 0 errors on Wed Jun 20 13:16:09 2012
config:

NAME                   STATE     READ WRITE CKSUM
pond                   DEGRADED     0     0     0
mirror-0               ONLINE       0     0     0
c0t5000C500335F95E3d0  ONLINE       0     0     0
c0t5000C500335F907Fd0  ONLINE       0     0     0
mirror-1               DEGRADED     0     0     0
c0t5000C500335BD117d0  ONLINE       0     0     0
c0t5000C500335DC60Fd0  UNAVAIL      0     0     0

errors: No known data errors

该输出将在下一节中进行介绍。

总体池状态信息

zpool status 输出中的这一部分包含以下字段(其中一些字段仅出现问题的池才会显示):

pool

标识池的名称。

state

指示池的当前运行状况。此信息仅指池提供必要复制级别的能力。

status

描述池存在的问题。如果未发现错误,则省略此字段。

action

建议用于修复错误的操作。如果未发现错误,则省略此字段。

see

对包含详细修复信息的知识文章的引用。在线文章的更新频率高于本指南的更新频率。因此,务必参考这些文章以了解最新的修复程序。如果未发现错误,则省略此字段。

scrub

确定清理操作的当前状态,它可能包括完成上一清理的日期和时间、正在进行的清理或者是否未请求清理。

errors

确定是否存在已知的数据错误。

ZFS 存储池配置信息

zpool status 输出中的 config 字段描述池中的设备的配置,以及设备的状态和设备产成的任何错误。其状态可以是以下状态之一:ONLINEFAULTEDDEGRADEDSUSPENDED。如果状态是除 ONLINE 之外的任何状态,则说明池的容错能力已受到损害。

配置输出的第二部分显示错误统计信息。这些错误分为以下三类:

  • READ-发出读取请求时出现 I/O 错误

  • WRITE-发出写入请求时出现 I/O 错误

  • CKSUM – 校验和错误,意味着设备对读取请求返回损坏的数据

这些错误可用于确定损坏是否是永久性的。小量 I/O 错误数可能指示临时故障,而大量 I/O 错误则可能指示设备出现了永久性问题。这些错误不一定对应于应用程序所解释的数据损坏。如果设备处于冗余配置中,则设备可能显示无法更正的错误,而镜像或 RAID-Z 设备级别上不显示错误。这种情况下,ZFS 成功检索到良好的数据并试图利用现有副本修复受损数据。

有关解释这些错误的更多信息,请参见确定设备故障的类型

最后,在 zpool status 输出的最后一列中显示其他辅助信息。此信息是对 state 字段的详述,以帮助诊断故障。如果设备处于 UNAVAIL 状态,则此字段指示是否无法访问设备或者设备上的数据是否已损坏。如果设备正在进行重新同步,则此字段显示当前的进度。

有关监视重新同步进度的信息,请参见查看重新同步状态

ZFS 存储池清理状态

zpool status 输出的 scrub 部分描述任何清理操作的当前状态。此信息不是用于指示系统上是否检测到任何错误,但是可以利用此信息来判定数据损坏错误报告的准确性。如果上一清理是最近结束的,则很可能已发现任何已知的数据损坏。

提供了以下 zpool status 清理状态消息:

  • 清理进度报告。例如:

    scan: scrub in progress since Wed Jun 20 14:56:52 2012
    529M scanned out of 71.8G at 48.1M/s, 0h25m to go
    0 repaired, 0.72% done
  • 清理完成消息。例如:

    scan: scrub repaired 0 in 0h11m with 0 errors on Wed Jun 20 15:08:23 2012
  • 取消正在进行的清理消息。例如:

    scan: scrub canceled on Wed Jun 20 16:04:40 2012

清理完成消息可在系统重新引导后存留下来。

有关数据清理以及如何解释此信息的更多信息,请参见检查 ZFS 文件系统完整性

ZFS 数据损坏错误

zpool status 命令还显示是否有已知错误与池关联。在数据清理或常规操作期间,可能已发现这些错误。ZFS 将与池关联的所有数据错误记录在持久性日志中。每当系统的完整清理完成时,都会轮转此日志。

数据损坏错误始终是致命的。出现这种错误表明至少一个应用程序因池中的数据损坏而遇到 I/O 错误。冗余池中的设备错误不会导致数据损坏,而且不会被记录在此日志中。缺省情况下,仅显示发现的错误数。使用 zpool status –v 选项可以列出带有详细说明的完整错误列表。例如:

# zpool status -v tank
pool: tank
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption.  Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: http://support.oracle.com/msg/ZFS-8000-8A
scan: scrub repaired 0 in 0h0m with 2 errors on Fri Jun 29 16:58:58 2012
config:

NAME           STATE     READ WRITE CKSUM
tank           ONLINE       2     0     0
c8t0d0         ONLINE       0     0     0
c8t1d0         ONLINE       2     0     0

errors: Permanent errors have been detected in the following files:

/tank/file.1

也可使用 fmd 在系统控制台上和 /var/adm/messages 文件中显示类似的消息。还可以使用 fmdump 命令跟踪这些消息。

有关解释数据损坏错误的更多信息,请参见确定数据损坏的类型