JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 11.1 管理:ZFS 文件系统     Oracle Solaris 11.1 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

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

2.  Oracle Solaris ZFS 入门

3.  管理 Oracle Solaris ZFS 存储池

4.  管理 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 故障

ZFS 存储池中缺少设备

ZFS 存储池中的设备已损坏

ZFS 数据已损坏

检查 ZFS 文件系统完整性

文件系统修复

文件系统验证

控制 ZFS 数据清理

显式 ZFS 数据清理

ZFS 数据清理和重新同步

解决 ZFS 问题

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

查看 zpool status 输出

总体池状态信息

池配置信息

清理状态

数据损坏错误

ZFS 错误消息的系统报告

修复损坏的 ZFS 配置

解决缺少设备的问题

以物理方式重新附加设备

将设备可用性通知 ZFS

更换或修复损坏的设备

确定设备故障的类型

清除瞬态错误

替换 ZFS 存储池中的设备

确定是否可以替换设备

无法替换的设备

替换 ZFS 存储池中的设备

查看重新同步状态

修复损坏的数据

确定数据损坏的类型

修复损坏的文件或目录

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

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

修复无法引导的系统

11.  归档快照和根池恢复

12.  建议的 Oracle Solaris ZFS 做法

A.  Oracle Solaris ZFS 版本说明

索引

检查 ZFS 文件系统完整性

对于 ZFS,不存在与 fsck 等效的实用程序。此实用程序传统上有两个作用:文件系统修复和文件系统验证。

文件系统修复

对于传统的文件系统,写入数据的方法本身容易出现导致文件系统不一致的意外故障。由于传统的文件系统不是事务性的,因此可能会出现未引用的块、错误的链接计数或其他不一致的文件系统结构。添加日志记录确实解决了其中的一些问题,但是在无法回滚日志时可能会带来其他问题。ZFS 配置中的磁盘上存在不一致数据的唯一原因是出现硬件故障(在这种情况下,应该已创建冗余池)或 ZFS 软件中存在错误。

fsck 实用程序可以解决 UFS 文件系统特有的已知问题。大多数 ZFS 存储池问题一般都与硬件故障或电源故障有关。使用冗余池可以避免许多问题。如果硬件故障或断电导致池损坏,请参见修复 ZFS 存储池范围内的损坏

如果没有冗余池,则始终存在因文件系统损坏而造成无法访问某些或所有数据的风险。

文件系统验证

除了文件系统修复外,fsck 实用程序还能验证磁盘上的数据是否没有问题。过去,此任务要求取消挂载文件系统并运行 fsck 实用程序,在该过程中可能会使系统进入单用户模式。此情况导致的停机时间的长短与所检查文件系统的大小成比例。ZFS 提供了一种对所有不一致性执行例程检查的机制,而不是要求显式实用程序执行必要的检查。此功能称为清理,在内存和其他系统中经常将它用作一种在错误导致硬件或软件故障之前检测和防止错误的方法。

控制 ZFS 数据清理

每当 ZFS 遇到错误时(不管是在清理时还是按需访问文件时),都会在内部记录该错误,以便您可以快速查看池中所有已知错误的概述。

显式 ZFS 数据清理

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

# zpool scrub tank

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

# zpool status -v tank
  pool: tank
 state: ONLINE
 scan: scrub in progress since Mon Jun  7 12:07:52 2010
    201M scanned out of 222M at 9.55M/s, 0h0m to go
    0 repaired, 90.44% done
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 存储池的状态

ZFS 数据清理和重新同步

替换设备时,将启动重新同步操作,以便将正确副本中的数据移动到新设备。此操作是一种形式的磁盘清理。因此,在给定的时间,池中只能发生一个这样的操作。如果清理操作正在进行,则重新同步操作会暂停当前清理,并在重新同步完成后重新启动清理操作。

有关重新同步的更多信息,请参见查看重新同步状态