在大约一年的时间里,我让一台debian服务器运行在zfs (池名zdata)下面的dm-crypt/ luks加密hdds上,8个hdds以镜像模式运行,因此有4个镜像,每个镜像有2个hdds。健康时代的一种状态:
# zpool status
pool: zdata
state: ONLINE
scrub: scrub completed after (blahblah)
config:
NAME STATE READ WRITE CKSUM
zdata ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
dm-name-n8_2 ONLINE 0 0 0
dm-name-n8_3 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
dm-name-n8_0 ONLINE 0 0 0
dm-name-n8_1 ONLINE 0 0 0
mirror-2 ONLINE 0 0 0
dm-name-n8_4 ONLINE 0 0 0
dm-name-n8_5 ONLINE 0 0 0
mirror-3 ONLINE 0 0 0
dm-name-n8_7 ONLINE 0 0 0
dm-name-n8_6 ONLINE 0 0 0
errors: No known data errors (当然,没有备份这34 of的原始数据。我可以放弃几乎所有的数据,但有些文件对我来说是宝贵的。)
两周前,在升级到稳定之后,我注意到了以dm-name-n8_2开头的几个读、写和错误。就在那一刻,这面镜子中的另一个hdd,dm-name-n8_3也出现了同样的错误,我开始意识到,这两个hdd各自的控制器都快死了。
我认为,比起我所做的愚蠢的事情,我目前所能理解的并不是所有的事情(兹普尔的历史什么也没有显示出来)。除其他外,我还开始用“更好”的磁盘替换。同时,我还设计了一个导致电源中断的缺陷家用电器,在启动之后,我无法再次导入这个池。坏的磁盘现在被替换了。最后,我无法再次导入池:
# zpool import -f
pool: zdata
id: 1343310357846896221
state: UNAVAIL
status: One or more devices were being resilvered.
action: The pool cannot be imported due to damaged devices or data.
config:
zdata UNAVAIL missing device
mirror-0 DEGRADED
dm-name-n8_2 UNAVAIL
dm-name-n8_3 ONLINE
mirror-1 ONLINE
n8_0 ONLINE
n8_1 ONLINE
mirror-2 DEGRADED
dm-name-n8_4 ONLINE
dm-name-n8_5 UNAVAIL
mirror-3 ONLINE
n8_7 ONLINE
dm-name-n8_6 ONLINE
# zpool import zdata -f
cannot import 'zdata': one or more devices is currently unavailable使用zpool导入zdata -fnF的Samesame
注意更改的设备名称。
在每个镜像中,池中至少有一个在线设备,为什么它抱怨丢失了一个设备?
我怎么知道哪台设备不见了?有什么方法可以让游泳池重新上线,我该怎么做?
(我在freebsd手册上阅读了甲骨文文档和关于zfs的章节,学到了一些东西,但没有找到问题的答案。)
zdb的输出有点长,可以看到这里。
发布于 2017-08-15 19:40:55
最后,我找到了解决这个问题的方法:我看到了不同的status消息,这取决于我采取了哪些磁盘来再次启动池。我多次尝试使用四个相应磁盘的不同组合以降级状态导入池,最后得到了以下结果:
NAME STATE READ WRITE CKSUM
zdata DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
dm-name-n8_2 ONLINE 0 0 0 (resilvering)
11141007683912581709 UNAVAIL 0 0 0 was /dev/disk/by-id/dm-name-n8_3
mirror-1 DEGRADED 0 0 0
16620393607066428577 FAULTED 0 0 0 was /dev/disk/by-id/dm-name-n8_0
dm-name-n8_0 ONLINE 0 0 0
mirror-2 DEGRADED 0 0 0
replacing-0 DEGRADED 85 0 0
1051730541091272780 FAULTED 0 0 0 was /dev/disk/by-id/dm-name-n8_4
dm-name-n8_6 ONLINE 0 0 85 (resilvering)
dm-name-n8_4 ONLINE 0 0 0 (resilvering)
mirror-3 DEGRADED 0 0 0
dm-name-n8_5 ONLINE 0 0 0
13833275275194605312 FAULTED 0 0 0 was /dev/disk/by-id/dm-name-n8_6这使我能够从损坏的磁盘上抓取几乎所有的数据。损失约为0.1%(134个>70000)文件。
据我理解,zfs将配置数据存储在池的每个设备上,并保持它们的同步。可能是停电损坏了这个还是快死的磁盘?
不管怎样,我又高兴了。感谢您的阅读和帮助!
发布于 2023-05-12 13:32:25
仅供参考。在不同的I/O缓冲区(HardWare RAID控制器)上放置I/O缓冲区一直是个坏主意。这两个人互不理睬,可能会引起各种麻烦。避免这种情况的聪明方法是使用网络存储设备。
https://unix.stackexchange.com/questions/385319
复制相似问题