欢迎光临散文网 会员登陆 & 注册

【NAS】1PB数据全丢?从Linus经历中我们能学到什么?

2022-02-08 07:23 作者:村雨Mura  | 我要投稿

加拿大白嫖王在2022年2月7日发布了一期视频:PB级数据出现危机!网址如下:大危机续篇 我们的数据又丢了 - Vault数据恢复 第一集#linus谈科技


真是喜闻乐见,言归正传,来从头分析一下他出现危机的原因,以及我们从中能学到什么?对于我们组NAS或保护数据会有非常大的帮助!

这里先说结论,具体结论得出的依据可以继续往下阅读

结论:

1、raidz2依然是首选

2、要配备UPS

3、出现意外要执行scrub或re-sync;不出意外也要定期一个月一次scrub完全的数据完整性校验

4、重建raid前,先检查所有硬盘数据完整性

5、重建raid前,先备份;没法重建时,依然是先备份

6、经常冷备


出了啥问题(问题一)?

来看Linus出问题的情况:如图所示,他是15块硬盘组一个raidz2(一个vdev),之后总共60块硬盘分4个raidz2(vdev)再条带化拼接起来。

raidz2最多两块硬盘挂掉,如果再有一块硬盘挂掉,那么数据就完全没救了

出错的地方在第二个raidz2中(第二个vdev中)出现了两块硬盘完全挂掉,而且是相邻的两块。

所以,结论一:组mirror还是要慎重

如果恰好这两块坏盘组了mirror,那数据已经死得透透的了

此外,我们看一下raidz2是否够用?15块硬盘组raidz2允许最多坏两块盘,在这里看起来似乎是“刚刚好勉强”够用的,那我们自组NAS组raidz1、raidz2还是raidz3?

组raidz2最少四块盘 最多允许坏两块,raidz1最少三块盘 最多允许坏一块,raidz3最少五快盘 最多允许坏三块

1、先说raidz1

在Linus这里明显不合适,因为他是连续两块盘坏。家用三块盘组一个raidz1,依然有一定风险一下子坏两块,而且raidz1重建的成功率极低,一旦发生坏一块盘的情况,只能把数据全部拷贝出去,而不能换新盘重建恢复。所以,raidz1属于能用,但需要仍需要提心吊胆的那种

2、再说raidz2

15块硬盘坏2块概率高?还是4块硬盘坏2块概率高?肯定是15块里面坏2块概率更高,家用一般很少有15块组raidz2,所以家用raidz2我个人认为是完全够用的。而且如下图:在每4个硬盘组1个raidz2的情况下,有概率错开,每个vdev就只坏1个。

就算两块相邻的情况碰到了,依然可以重建恢复,或者更保险一点,先将数据拷贝出去,再换新盘重建。所以,raidz2完全够用(个人观点)

更别提,后面我们还会用到scrub和re-sync机制即使发现有问题的磁盘,提前就可以动手换盘重建,第二块磁盘有问题的时候也不用担心校验位不够而无法重建

3、最后是raidz3

raidz2够用,raidz3更够用了,就是成本过了(个人观点)

因此,我的结论:raidz2依然是家用NAS上的首选,raidz1能用但仍需谨慎,raidz3成本高了不合适

出了啥问题(问题二)?

在Linus的另一个服务器上,出现了五块硬盘“报错”,并非完全暴毙。

从图中,我们可以看到,出问题的硬盘,没有再出现“连续”两块硬盘都挂掉的情况

但还是有3块硬盘中2个出问题的情况,更进一步说明,组raidz1可能还是需要慎重的。每3块里出现两块的情况又发生了,更何况15块硬盘,其中有2块出毛病的概率几乎是较大概率事件了


为什么这里出问题的硬盘数量多达5块?根据Linus叙述,大概率是因为停电,而他没有用UPS!

PS:我个人最早在大学正在格式化一个日立1t硬盘,然后宿舍断电导致硬盘彻底挂了。后来用外接硬盘做种,宿舍断电没来得及推出磁盘,每次重新接入的时候,qbittorrent都要重新校验然后把失去的数据重新下载回来...对于断电丢失数据甚至毁硬盘这件事我是非常熟悉的,一般重新接入以后先修复磁盘驱动,然后在check修复一下才能正常使用磁盘,并且丢失的数据是零碎的,你根本找不回来,还好是bt做种,可以通过校验重新下载,但其它数据就没戏了,你根本不知道哪些数据丢了,也不可能一个一个检查,就算检查出来,能恢复的了吗?别跟我扯diskgenius数据恢复软件,能恢复一小部分,适合手动误删情况回收站的时候使用,断电丢失数据这种还真不好使

所以,结论:要配备UPS!

还有第二个结论:在意外断电后,一定要进行check!如scrub或re-sync;即使没有意外发生,也要一个月scrub一次!

定期检测,提前发现问题,提前解决!

出了啥问题(问题三)?

Linus其实素材非常多,但很多都是老旧素材,根本用不上。这样导致了两个问题:

问题一:大量老旧数据,没有计划scrub进行完整数据校验,导致唯一的数据完整性校验,只能发生在读取的时候,而这些老旧数据几乎不会被读取,也就没法做校验,数据坏了也发现不了

解决办法:开启scrub计划(上述同样的方法来解决)

问题二:磁盘不可逆衰老掉电掉磁等问题

一般冷备的解决办法是定期通电,5年一换新,也就是玩无限接力。这里Linus用的是NAS,依然可以用定期每个月的scrub检测来及时发现问题并避免(上述同样的方法解决)

结论:要定期scrub!(重复了)


出了啥问题(问题四)?

Linus在经常断电,又没有执行scrub计划的情况下,即:没有做全盘检测,只是看到5块硬盘报错,就直接把坏盘拿掉,raidz2重建了

可以看到,出现了1.7亿的错误

而原来的status状态下是:只有五块盘啊,哪来的1.7亿错误?

结果是重建的时候,没有足够的奇偶校验来修复了

可以分析原因:还是没有做定期的scrub完整的数据校验导致的,其实磁盘们都已经有很多错误了,只是可能这五块的状态最差而已。如果贸然重建,结果就是1.7亿的错误,是几乎所有硬盘都出了错,而并不是简单的几块磁盘错误。

这种情况下,别说用raidz3,raidz999都不一定够用

结论:在重建raid前,先做完整校验,如scrub扫描或re-sync这种操作,确定坏盘之外的其它盘问题不大的时候,再重建

像Linus这种情况,确定其它N个盘都有error的情况下,raid已经没用了,只能像raidz1那样,保持原样,把现有的数据完全拷贝出来再说,也正如他自己所说:

最后,是老莱深情总结:

说白了,如果有计划任务scrub,有UPS,有断电重启后的scrub,而且有冷备的话,这TM算事?

关于评论中的几个观点

1、说希捷垃圾

根据前文分析,这并不是希捷的问题,而是Linus自己的问题,不检查,不配UPS,你换哪家硬盘来了都得挂啊

2、认为zfs无用 truenas无用

根据分析,raidz2起到了至关重要的作用,尤其是Linus的第一个仓库,raidz2救命了属于是。truenas是有用的,只是Linus没用而已,属于人祸

3、认为raidz2不行,raidz3可以

只能说linus 的情况raidz3也救不了,1.7亿错误,需要多少个校验盘才够用啊,三个也不够

4、劝买磁带机的

呃,1PB用磁带机,这个成本我不想算,还不如云备份呢

5、劝买叠瓦盘冷备的

这...

6、从亿点错误中找到了一点数据

有理!


我是村雨,如果文中有错误欢迎纠正,我们下期见


【NAS】1PB数据全丢?从Linus经历中我们能学到什么?的评论 (共 条)

分享到微博请遵守国家法律