由于 I/O 错误,无法导入已降级的 zpool

由于 I/O 错误,无法导入已降级的 zpool

我正在家里运行一台带有 CentOS 7 操作系统和 12TB zpool 的个人服务器。它已经运行了几年了,昨天我注意到一些问题,所以我进去看看。

起初,我的一个驱动器似乎出现了故障,并zpool import给出了以下结果:

pool: media
id: 1363376331138686016
state: DEGRADED
status: One or more devices contains corrupted data.
action: The pool can be imported despite missing or damaged devices.  
The
fault tolerance of the pool may be compromised if imported.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
 config:

media                                DEGRADED
  raidz1-0                           DEGRADED
    ata-ST3000DM001-1ER166_W500G55Q  ONLINE
    ata-ST3000DM001-1CH166_Z1F278KB  UNAVAIL
    sdc                              ONLINE
    sde                              ONLINE
    sdf                              ONLINE

这看起来不错,但是我似乎无法直接导入池。

跑步zpool import media给了我:

cannot import 'media': I/O error
Destroy and re-create the pool from
a backup source.

我环顾四周试图找出问题所在,但我发现的一切都没有给我带来任何帮助。

我尝试过的其他一些事情:

  • zpool import -fFX: zpool 无法导入
  • zpool import -fFV:导入的 zpool 状态为 FAULTED
  • zpool status: 没有可用的池

有人能指出我正确的方向吗?我不确定我的下一步诊断应该是什么。

答案1

最好的办法是销毁池,用故障驱动器的替代品重新创建它ata-ST3000DM001-1CH166_Z1F278KB,然后从备份中恢复。

如果这不是一个选项(它应该是 - ZFS 和 RAID 都不是备份的替代品!它们也从来没有打算成为备份的替代品),那么您可以尝试使 zpool 脱机,直到您有ata-ST3000DM001-1CH166_Z1F278KB准备安装的替代品。

当您获得替换驱动器后,尝试导入处于 DEGRADED 状态的池,并立即用完好的新驱动器替换出现故障的驱动器。

顺便提一句,https://serverfault.com/questions/548568/zfs-recover-from-faulted-pool-state可能有一些对您有用的信息。

答案2

您注意到什么样的问题促使您去查看卷?列出的 zpool 命令显示驱动器不可用。你还能看到它吗,或者它已经死了?

raidz 池中似乎有足够的驱动器,您应该能够将其导入。

通常首先使用 azpool import -nF来确定是否可以通过丢弃最后几笔交易来导入池。

有时 azpool clear和 azpool scrub可以提供帮助。您也许还可以尝试使用新驱动器对可疑/损坏/故障驱动器进行 zpool 替换。

在家庭文件服务器中使用大型 SATA 驱动器时,最好不要太贪心。无论您使用 ZFS(另一种软件 raid,还是使用“企业”硬件 raid),都有大量不同的链,因此我不会详细介绍。

驱动器出现故障。这将会发生。毕竟,这只是旋转的铁锈而已。即使您的设置中多个驱动器可能会发生故障,那么在重建替换驱动器期间另一个驱动器不会发生故障吗?--你好,多 TB 驱动器。出于这个原因,很多人开始使用三向镜。幸运的是,驱动器不再像以前那么昂贵。

使用 ZFS,您还可以尝试增加副本数量 ( zfs set copies=<# copies> <pool>) 来增加文件的副本数量,以限制可能的数据丢失。

相关内容