首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZFS: zpool导入-无效丢失设备

ZFS: zpool导入-无效丢失设备
EN

Unix & Linux用户
提问于 2017-08-10 19:12:54
回答 2查看 2.8K关注 0票数 2

在大约一年的时间里,我让一台debian服务器运行在zfs (池名zdata)下面的dm-crypt/ luks加密hdds上,8个hdds以镜像模式运行,因此有4个镜像,每个镜像有2个hdds。健康时代的一种状态:

代码语言:javascript
复制
# 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各自的控制器都快死了。

我认为,比起我所做的愚蠢的事情,我目前所能理解的并不是所有的事情(兹普尔的历史什么也没有显示出来)。除其他外,我还开始用“更好”的磁盘替换。同时,我还设计了一个导致电源中断的缺陷家用电器,在启动之后,我无法再次导入这个池。坏的磁盘现在被替换了。最后,我无法再次导入池:

代码语言:javascript
复制
# 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的输出有点长,可以看到这里

EN

回答 2

Unix & Linux用户

发布于 2017-08-15 19:40:55

最后,我找到了解决这个问题的方法:我看到了不同的status消息,这取决于我采取了哪些磁盘来再次启动池。我多次尝试使用四个相应磁盘的不同组合以降级状态导入池,最后得到了以下结果:

代码语言:javascript
复制
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将配置数据存储在池的每个设备上,并保持它们的同步。可能是停电损坏了这个还是快死的磁盘?

不管怎样,我又高兴了。感谢您的阅读和帮助!

票数 2
EN

Unix & Linux用户

发布于 2023-05-12 13:32:25

仅供参考。在不同的I/O缓冲区(HardWare RAID控制器)上放置I/O缓冲区一直是个坏主意。这两个人互不理睬,可能会引起各种麻烦。避免这种情况的聪明方法是使用网络存储设备。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/385319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档