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

退出打印视图

更新时间: 2014 年 12 月
 
 

确定 ZFS 存储池的运行状况

ZFS 提供了一种检查池和设备运行状况的集成方法。池的运行状况是根据其所有设备的状态确定的。使用 zpool status 命令可以显示此状态信息。此外,池和设备的潜在故障由 fmd 报告,显示在系统控制台上,并记录于 /var/adm/messages 文件中。

本节介绍如何确定池和设备的运行状况。本章不介绍如何修复运行不良的池或从其恢复。有关故障排除和数据恢复的更多信息,请参见Chapter 10, Oracle Solaris ZFS 故障排除和池恢复

池的运行状况通过以下四种状态之一来描述:

DEGRADED

池有一个或多个设备发生故障,但由于使用了冗余配置,数据仍然可用。

ONLINE

池中的所有设备都正常运行。

SUSPENDED

池正在等待恢复设备连接。在设备问题得到解决之前,SUSPENDED 池一直处于 wait 状态。

UNAVAIL

池的元数据遭到损坏,或者有一个或多个设备不可用,并且没有足够的副本支持其继续运行。

每个池设备都可以处于以下状态之一:

DEGRADED

虚拟设备出现过故障,但仍能工作。此状态在镜像或 RAID-Z 设备缺少一个或多个组成设备时最为常见。池的容错能力可能会受到损害,因为另一个设备中的后续故障可能无法恢复。

OFFLINE

管理员已将设备显式脱机。

ONLINE

设备或虚拟设备处于正常工作状态。尽管仍然可能会出现一些瞬态错误,但是设备在其他方面处于正常工作状态。

REMOVED

系统正在运行时已物理移除了该设备。设备移除检测依赖于硬件,而且并非在所有平台上都受支持。

UNAVAIL

无法打开设备或虚拟设备。在某些情况下,包含 UNAVAIL 设备的池会以 DEGRADED 模式显示。如果顶层虚拟设备的状态为 UNAVAIL,则无法访问池中的任何设备。

池的运行状况是根据其所有顶层虚拟设备的运行状况确定的。如果所有虚拟设备状态都为 ONLINE,则池的状态也为 ONLINE。如果任何一个虚拟设备状态为 DEGRADEDUNAVAIL,则池的状态也为 DEGRADED。如果顶层虚拟设备的状态为 UNAVAILOFFLINE,则池的状态也为 UNAVAILSUSPENDED。如果池处于 UNAVAILSUSPENDED 状态,则完全无法访问该池。附加或修复必需的设备后,才能恢复数据。处于 DEGRADED 状态的池会继续运行,但是,如果池处于联机状态,则可能无法实现相同级别的数据冗余或数据吞吐量。

zpool status 命令还提供有关重新同步和清理操作的详细信息。

  • 重新同步进度报告。例如:

    scan: resilver in progress since Wed Jun 20 14:19:38 2012
    7.43G scanned
    7.43G resilvered at 26.8M/s, 10.35% done, 0h30m to go
  • 清理进度报告。例如:

    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: resilvered 71.8G in 0h14m with 0 errors on Wed Jun 20 14:33:42 2012
  • 清理完成消息。例如:

    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
  • 清理和重新同步完成消息在系统重新引导后仍存在

基本的存储池运行状况

使用 zpool status 命令可以快速查看池运行状态,如下所示:

# zpool status -x
all pools are healthy

通过在命令语法中指定池名称,可以检查特定池。如下节所述,应检查不处于 ONLINE 状态的所有池是否存在潜在的问题。

详细运行状况

使用 –v 选项可以请求更详细的运行状况汇总信息。例如:

# zpool status -v 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'.
scan: scrub repaired 0 in 0h0m with 0 errors on Wed Jun 20 15:38:08 2012
config:

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

device details:

c0t5000C500335F907Fd0    UNAVAIL          cannot open
status: ZFS detected errors on this device.
The device was missing.
see: http://support.oracle.com/msg/ZFS-8000-LR for recovery


errors: No known data errors

此输出显示了池处于其当前状态的原因的完整说明,其中包括问题的易读说明,以及指向知识文章的链接(用于了解更多信息)。每篇知识文章都提供了有关从当前问题恢复的最佳方法的最新信息。使用详细的配置信息,您可以确定哪个设备损坏以及如何修复池。

在以上示例中,UNAVAIL 设备应该被替换。如有必要,替换该设备后,请使用 zpool online 命令使设备联机。例如:

# zpool online pond c0t5000C500335F907Fd0
warning: device 'c0t5000C500335DC60Fd0' onlined, but remains in degraded state
# zpool status -x
all pools are healthy

以上输出表明该设备一直处于降级状态,直到完成任何重新同步操作为止。

如果启用了 autoreplace 属性,则您可能不必使被替换的设备联机。

如果池包含脱机设备,则命令输出将标识有问题的池。例如:

# zpool status -x
pool: pond
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
config:

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

errors: No known data errors

READWRITE 列提供了在设备上出现的 I/O 错误的计数,而 CKSUM 列则提供了在设备上出现的无法更正的校验和错误的计数。这两种错误计数指示可能的设备故障,并且需要执行更正操作。如果针对顶层虚拟设备报告了非零错误,则表明部分数据可能无法访问。

errors: 字段标识任何已知的数据错误。

在以上示例输出中,脱机设备不会导致数据错误。

有关诊断和修复 UNAVAIL 池和数据的更多信息,请参见Chapter 10, Oracle Solaris ZFS 故障排除和池恢复

收集 ZFS 存储池状态信息

可以使用 zpool status 的时间间隔和计数选项收集一定时期内的统计信息。此外,使用 –T 选项可以显示时间戳。例如:

# zpool status -T d 3 2
Wed Jun 20 16:10:09 MDT 2012
pool: pond
state: ONLINE
scan: resilvered 9.50K in 0h0m with 0 errors on Wed Jun 20 16:07:34 2012
config:

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

errors: No known data errors

pool: rpool
state: ONLINE
scan: scrub repaired 0 in 0h11m with 0 errors on Wed Jun 20 15:08:23 2012
config:

NAME                         STATE     READ WRITE CKSUM
rpool                        ONLINE       0     0     0
mirror-0                     ONLINE       0     0     0
c0t5000C500335BA8C3d0s0      ONLINE       0     0     0
c0t5000C500335FC3E7d0s0      ONLINE       0     0     0

errors: No known data errors
Wed Jun 20 16:10:12 MDT 2012

pool: pond
state: ONLINE
scan: resilvered 9.50K in 0h0m with 0 errors on Wed Jun 20 16:07:34 2012
config:

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

errors: No known data errors

pool: rpool
state: ONLINE
scan: scrub repaired 0 in 0h11m with 0 errors on Wed Jun 20 15:08:23 2012
config:

NAME                         STATE     READ WRITE CKSUM
rpool                        ONLINE       0     0     0
mirror-0                     ONLINE       0     0     0
c0t5000C500335BA8C3d0s0      ONLINE       0     0     0
c0t5000C500335FC3E7d0s0      ONLINE       0     0     0

errors: No known data errors