我正在家里运行一台带有 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 状态为 FAULTEDzpool 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>
) 来增加文件的副本数量,以限制可能的数据丢失。