也是学习的过程-一轮群晖SHR修复演练记录
早就有计划做这样的演练,加上最近群辉有个硬盘吱吱响,邮件也提醒有一次重连接

而且现在硬盘涨价,不打算现在买硬盘替换,自己也没有多少处理RIAD数据存储故障的经验,所以有必要做一次数据恢复演练,就像项目管理说的:识别了风险、也知道风险的危害了,现在要规划风险应对了。
演练环境
dell t3620工作站主机
500g硬盘x2
3t硬盘x1
群晖7.2版本系统
话说这3t硬盘就是去年扩容4t时换下来的,现在卖的话和当时买4t一个价,谁能想到呢。
这台主机原生有3个3.5寸硬盘位,如果把两个光驱位改一改,就有6盘位了,不想花钱升级多盘位白群辉的话,用这台做成6盘位nas长期用也不是不可以。
硬件接好,开机用rr装个7.2的群晖系统。
好久没折腾黑群晖,找资源的时候发现现在都在玩飞牛呢,还在折腾黑群晖我是不是out了?
演练场景
单盘故障处理过不少,知道整个过程什么个情况,就不演练了,主要针对一个硬盘故障降级后,换了硬盘同步过程有另一块硬盘出现故障(不是彻底损坏),这时会出现什么情况?需要怎么恢复数据?
其他情况暂时没想出来,各种情况总结起来,除了硬盘本身故障,无非是群晖软件故障或者物理故障,不管是软件还是硬件,演练或者实战都是围绕硬盘进行操作,只是硬盘故障可以在群晖上直接操作,群晖软硬件系统挂了就找其他软硬件载体来进行恢复处理。
演练记录
一、将正常运行的SHR阵列中3块硬盘其中一块在PE下格式化数据分区
开机存储空间变成已降级

二、修复过程
这时用人为清除数据这块硬盘直接修复是不能修复的,虽然识别了3块硬盘,硬盘也没有故障,但还是提示要插入符合条件的硬盘。

这时需要在硬盘列表页面将这块硬盘停用,并拨出几秒或更长再插回去,再继续进行修复操作就能进行下去了。
继续完成修复操作,然后出现修复进度说明正在修复了,但界面上有个警告提示无法将特定硬盘添加到系统分区,等到修复完成+数理清理完成后这个警告还是在,网上说需要SSH进去用命令修复,我看到界面上有修复选项,但点击它尝试修复时界面一闪而过,没有修复成功,将群晖重启后再次点击修复就出现进度然后1分钟左右就修复完成了(这次没有尝试停用-排插硬盘的方式,估计也是可行的)。


由于上面的测试中意外出现无法将特定硬盘添加到系统分区的故障,就没有按演练计划在修复过程中人为拔出另一块硬盘。
所以修复完成后重新来过。
三、将正常运行的SHR阵列中的一块在PE下将数据分区格式化为EXT4
开机后和上面一样警告一块硬盘有问题,进行修复,修复速度和前面一样很快就完成了,完成后进数入数据清理阶段,鉴于修复很快,而数据清理过程要很久,可见肯定是数据清理阶段才是数据校验重建的阶段,所以在数据清理过程中拨出另一块硬盘再插回,这个过程大概3-4秒,模拟的是实际使用中可能出现的由于晃动或接口老化造成的硬盘连接闪断。
四、检查造成影响
发现并没有影响系统数据清理,清理过程居然顺利完成了。

另一个发现,在PE下查看进行格式化的分区,发现显示的还是EXT4格式,并有分区出现的损坏提示,其他硬盘正常的分区显示的是Linux RAID分区。

为了进一步确认是真的修复好的,我还特意在本次演练一开始刚建好存储空间时就上传了200多个真实的测试文件,在发现上述情况下,对这些保存的文件进行打开测试,随机测试了几十个,都能正常打开。

考虑到只要有两块硬盘正常就能完整的存储数据,于是将另一块硬盘的数据分区在PE下格式化成EXT4。
五、复盘分析
这SHR比预想的更强壮稳定啊,后续又尝试在前面修复阶段而不是数据清理进行拨出另一块硬盘,也是能正常完成修复和清理的,测试文件打开一样也都能打开。
根据我不多的存储技术知识,推断有两种可能 ,一是群晖在校验数据时存在重试机制,在进行某一条带数据校验(或恢复)过程中,需要分别来自两块硬盘的两个数据,在DSM读取其中一个数据发现接口访问失败时会重试;

二是我使用的是Btrfs格式,Btrfs本身支持一定的检验和文件恢复能力,在拔出第二块硬盘期间SHR对个别条带数据校验不了,但数秒后接回硬盘校验继续,等整体校验结束后再通过Btrfs的特性对个别损坏的位置进行恢复?

至于修复后分区格式不对的问题,可能是PE下使用的分区管理软件对做了RAID的分区支持不完善?回头SSH进去查看确认下吧……
本次演练增强了我对群晖数据存储安全的信息,也学了点新的东西,但是最后复盘分析有什么多水分,再一次明白自己知识的有限,后面有时间再继续研究。
----------------------------------------------------------------
2026.03.22
刚进后台看了,三个硬盘的数据分区格式都是Linux RAID,格式的问题是因PE下分区软件识别错误

关于修复过程拔掉另一硬盘插回后也能恢复,经过后台看日志,以及查资料后基本得出结论:
1、修复及校验程序运行在内存中,只要不重启当硬盘被正常插回并识别到分区及数据无变化后就能正常修复;
2、拨出硬盘期间修复动作会继续,期间读取用于恢复的信息失败时只会报SATA 通信错误,并不会直接判断为硬盘损坏从而进入阵列损毁状态。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
