JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris ZFS 管理指南     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  Oracle Solaris ZFS 文件系统(介绍)

2.  Oracle Solaris ZFS 入门

3.  管理 Oracle Solaris ZFS 存储池

4.  安装和引导 Oracle Solaris ZFS 根文件系统

5.  管理 Oracle Solaris ZFS 文件系统

6.  使用 Oracle Solaris ZFS 快照和克隆

7.  使用 ACL 和属性保护 Oracle Solaris ZFS 文件

8.  Oracle Solaris ZFS 委托管理

9.  Oracle Solaris ZFS 高级主题

10.  Oracle Solaris ZFS 故障排除和池恢复

确定 ZFS 问题

解决一般的硬件问题

确定硬件和设备故障

ZFS 错误消息的系统报告

确定 ZFS 存储池的问题

确定 ZFS 存储池中是否存在问题

查看 zpool status 输出

总体池状态信息

ZFS 存储池配置信息

ZFS 存储池清理状态

ZFS 数据损坏错误

解决 ZFS 存储设备问题

解决缺少设备或设备被移除的问题

解决设备被移除的问题

以物理方式重新附加设备

将设备可用性通知 ZFS

更换或修复损坏的设备

确定设备故障的类型

清除瞬态设备错误

替换 ZFS 存储池中的设备

确定是否可以替换设备

无法替换的设备

替换 ZFS 存储池中的设备

查看重新同步状态

解决 ZFS 文件系统问题

解决 ZFS 存储池中的数据问题

检查 ZFS 文件系统完整性

文件系统修复

文件系统验证

控制 ZFS 数据清理

显式 ZFS 数据清理

ZFS 数据清理和重新同步

ZFS 数据损坏

解决 ZFS 空间问题

ZFS 文件系统空间报告

ZFS 存储池空间报告

修复损坏的数据

确定数据损坏的类型

修复损坏的文件或目录

修复具有多块引用的损坏数据

修复 ZFS 存储池范围内的损坏

修复损坏的 ZFS 配置

修复无法引导的系统

11.  建议的 Oracle Solaris ZFS 做法

A.  Oracle Solaris ZFS 版本说明

索引

确定 ZFS 存储池的问题

以下各节介绍如何确定并解决 ZFS 文件系统或存储池中的问题:

可以使用以下功能来确定 ZFS 配置所存在的问题:

大多数 ZFS 故障排除工作都会涉及到 zpool status 命令。此命令对系统中的各种故障进行分析并确定最严重的问题,同时为您提供建议的操作和指向知识文章(用于获取更多信息)的链接。请注意,虽然池可能存在多个问题,但是此命令仅确定其中的一个问题。例如,数据损坏错误一般意味着一台设备发生故障,但更换故障设备可能无法解决所有数据损坏问题。

此外,ZFS 诊断引擎也会诊断和报告池故障和设备故障。另外还会报告与这些故障关联的校验和、I/O、设备和池错误。fmd 报告的 ZFS 故障在控制台上以及系统消息文件中显示。在大多数情况下,fmd 消息会指示您查看 zpool status 命令的输出,以便获得进一步的恢复说明。

基本的恢复过程如下所示:

本节介绍如何解读 zpool status 输出,以便诊断可能出现的故障类型。尽管大多数工作是由命令自动执行的,但是准确了解所确定的问题以便诊断故障是很重要的。后续部分将介绍如何解决可能遇到的各种问题。

确定 ZFS 存储池中是否存在问题

确定系统上是否存在任何已知问题的最简单的方法是使用 zpool status -x 命令。此命令仅对出现问题的池进行说明。如果系统中不存在运行状态不佳的池,该命令将显示以下信息:

# zpool status -x
all pools are healthy

如果没有 -x 标志,则该命令显示所有池(如果在命令行上指定了池,则为请求的池)的完整状态,即使池的运行状况良好也是如此。

有关 zpool status 命令的命令行选项的更多信息,请参见查询 ZFS 存储池的状态

查看 zpool status 输出

完整的 zpool status 输出与以下内容类似:

# zpool status tank
   pool: tank
 state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-2Q
 scan: scrub repaired 0 in 0h3m with 0 errors on Mon Nov 12 15:17:02 2012
config:

        NAME        STATE     READ WRITE CKSUM
        tank        DEGRADED     0     0     0
          mirror-0  DEGRADED     0     0     0
            c1t1d0  ONLINE       0     0     0
            c1t2d0  UNAVAIL      0     0     0  cannot open

errors: No known data errors

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

总体池状态信息

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

pool

确定池的名称。

state

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

status

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

action

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

see

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

scrub

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

errors

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

ZFS 存储池配置信息

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

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

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

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

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

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

ZFS 存储池清理状态

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

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

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

ZFS 数据损坏错误

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

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

# zpool status -v
  pool: tank
 state: UNAVAIL
status: One or more devices are faulted in response to IO failures.
action: Make sure the affected devices are connected, then run 'zpool clear'.
   see: http://www.sun.com/msg/ZFS-8000-HC
 scrub: scrub completed after 0h0m with 0 errors on Tue Feb  2 13:08:42 2010
config:

        NAME        STATE     READ WRITE CKSUM
        tank        UNAVAIL      0     0     0  insufficient replicas
          c1t0d0    ONLINE       0     0     0
          c1t1d0    UNAVAIL      4     1     0  cannot open

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

/tank/data/aaa
/tank/data/bbb
/tank/data/ccc

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

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