群晖存储空间损毁/Btrfs文件系统损坏数据恢复教程

Linux2023-12-12
群晖存储空间损毁/Btrfs文件系统损坏数据恢复教程-下一朵云

· 群晖存储空间损毁;Btrfs文件系统损坏数据恢复;Btrfs Repair;Synology Repair

· 恢复数据操作系统 Ubuntu 16.04 LTS desktop( 系统镜像下载地址: https://cloud.orcy.net.cn:5002/s/JcezFxzks4bXMPB 提取密码:2020 )

群晖存储空间损毁/Btrfs文件系统损坏数据恢复教程-下一朵云
图1 存储空间1-已损毁

使用的黑群晖系统,在偶尔一次断电重启后,有一个4x2T硬盘的存储空间出现了“已损毁”状态,而网络上搜索到的教程和案例都是使用 Ext4 作为文件系统,那么只需要用 UFS explorer 来修复就好了。偏偏群晖推荐用的是 Btrfs 文件系统,当前状态系统中无法读取文件,但 RAID 并没有异常,无需进行 RAID 清理。通过查看 S.M.A.R.T 状态,发现所有硬盘均处于健康状态,于是跳过这一步。接下来我们需要引导到 Ubuntu 系统并尝试挂载 RAID。

进入Ubuntu系统后第一件事是安装必要的工具包以及挂载 RAID,打开终端并以 root 身份(sudo -i)执行以下操作:

sudo -i
apt-get update
apt-get install mdadm lvm2 btrfs-tools
mdadm -Asf
vgchange -ay

正常完成后可以在磁盘管理中看到 RAID 阵列,但是由于文件系统损坏,此时是无法挂载的。

群晖存储空间损毁/Btrfs文件系统损坏数据恢复教程-下一朵云
图2 无法挂载RAID

切换回终端,运行以下命令:

btrfs-find-root /dev/vg1/volume-1 &> /home/3.txt

注意:/dev/vg1/volume-1 此位置为系统内的位置,系统不同可能默认路径不一致,以你自己的位置为准,如果使用挂载位置可能会出现报错无法扫描。

运行过程可能需要10-30分钟,期间是没有任何回显的。等待运行完成后终端会返回命令提示符,这时我们打开 /home/3.txt 文件,可以看到如下内容:

群晖存储空间损毁/Btrfs文件系统损坏数据恢复教程-下一朵云
图3 btrfs-find-root运行结果

我们需要用到的数据是 Well block 后面的这一串数字,其后的 gen 数字越高,恢复的可能性越大。下一步使用找到的 tree root 来模拟修复,到目前为止的所有操作都不会对硬盘进行写入和修改,也不会破坏任何数据。

btrfs check --tree-root <block> --super <sup> /dev/vg1/volume1
#<block>为上一步中的数值,按 gen 数字从高到低依次尝试使用
#<sup> 可以尝试0,1或2。

如果 block 有效,运行结果末尾应当类似于以下图示:

群晖存储空间损毁/Btrfs文件系统损坏数据恢复教程-下一朵云
图4 blcok有效的结果

如果最后回显不是以上格式,表明这一条 无效,需要继续尝试下一条。在确认看到以上提示后,我们尝试将数据导出。

此步骤较为重要,请认真阅读理解后操作

此时仍然使用上一步中的 block 值,将 /data5 改为导出目录,需要确保留有足够空间存储文件。如果文件名包含特殊符号可能导致导出中断,将目标分区格式化为 Ext3/4 即可。

btrfs restore /dev/vg1/colume1 /data5 -D -v -i -t <block>
#参数 -D 只测试不执行
#导出数据去掉 -D
群晖存储空间损毁/Btrfs文件系统损坏数据恢复教程-下一朵云
图5 导出正常

如果导出正常进行,会看到类似上图6的提示,此处没有进度提示,可以自行前往导出目录查看。如果导出失败会给出其他提示,在确认导出分区是 Ext3/4 的情况下,则只能退回上一步尝试其他 block 值。

如下图,成功恢复5T左右的数据到/data5目录下:

群晖存储空间损毁/Btrfs文件系统损坏数据恢复教程-下一朵云
图6 恢复到/data5成功

到目前为止我们并没有对数据盘进行任何写入和修改操作,如果因为种种原因无法导出,或是导出过程异常中断,仍然可以通过修复原盘的方式来挽回数据。不过请注意,此步骤有可能会损坏数据,如果你不能接受任何风险,请停止执行并联系专业机构。

其他方法:

*以下修复步骤博主未亲自测试,请谨慎操作!

*群晖的btrfs一般情况下无法通过如下操作修复成功的,请尝试上边的方法

btrfs check --repair --tree-root <block> --super <sup>
#使用之前步骤中正常回显的 <block> 及 <sup> 值进行正式修复,确认操作完成后执行:
btrfs rescue super-recover /dev/vg1/volume-1

提示确认目标分区是 Btrfs 文件系统,否则会损坏数据,输入 y 确认操作。等待数秒后再次回到提示符,如果一切顺利,此时已经可以通过磁盘管理工具挂载 Btrfs 分区了。不过群晖很大几率不会识别修复后的文件系统,还是建议将数据导出后再将硬盘还原。

群晖存储空间损毁/Btrfs文件系统损坏数据恢复教程-下一朵云
图7 修复文件系统

版权声明:本文为下一朵云发布文章,转载请附上原文出处链接和本声明。
本文链接:https://www.orcy.net.cn/1007.html

​ 广告:HCIE-Security认证课程辅导资料(付费)

20 条评论

  • 头像
    王一
    2023-07-08

    如果我把btrfs快照保存到sqlite3数据库中,在我恢复快照的情况下,怎处理数据库,从而使数据库不会被还原

    • 头像
      pony
      2023-07-10

      先把sqlite备份一下

  • 头像
    雷超
    2023-06-12

    大神们 能解释一下 btrfs-find-root /dev/vg1/volume-1 &> /home/3.txt 这句是什么意思吗?

    • 头像
      pony
      2023-06-14

      使用btrfs-find-root来获取要还原到的块号输出到 /home/3.txt中,这个路径随意什么都行

    • 头像
      雷超
      2023-12-12

      特别感谢,已经成功恢复3T数据 感谢感谢!!!!!!

    • 头像
      pony
      2023-12-12

      很高兴能帮到你,另外,恢复了半年?震惊!

  • 头像
    kevin
    2023-02-06

    mdadm -Asf
    vgchange -ay这两个代码输入之后一点反映都没有

    • 头像
      pony
      2023-02-06

      回车后无报错继续下边的操作即可。如果之前卷是活动状态的,回车是无显示的,没有报错即可。

  • 头像
    KEER
    2023-01-09

    我等酷狼4T硬盘19年买等,刚开始2年用的是Basic+extr4一只没有问题,然后第三年等时候由于折腾重装了群晖改用SHR+Btrfs
    2023年1月5号等时候提示”由于存储池错误导致不可恢复等错误”,刚开始以为硬盘挂了,过了一天用SMART完整等扫了几个小时结果是“良好”
    所以我怀疑是这个Btrfs文件系统问题。 我刚移除并重建了存储池又用回Basic+ext4了。

    • 头像
      pony
      2023-01-09

      尽量用ext4吧,损坏了有好多工具可以恢复数据。

  • 头像
    小时有
    2022-12-13

    可以加个联系指导一下吗,我可以适当的有偿,因为停电导致虚拟机中的群晖无法访问到文件,提示空间损毁,我用你的办法但是钨棒图系统中好几个错误也不知是不是成功获取信息,和挂载,765911813

  • 头像
    小时有
    2022-12-12

    有没有更详细点的

    • 头像
      pony
      2022-12-12

      没有了,如果是btrfs损坏按照这个步骤慢慢来应该可以的

  • 头像
    梵高
    2022-08-06

    Root.txt文件会保存在什么位置哈 ,一直没等到他出来。

    • 头像
      pony
      2022-08-08

      “btrfs-find-root /dev/vg1/volume-1 &> /home/3.txt “保存路径位置是”>”后边的路径”/home/3.txt”,这条命令执行时间比较长,需要耐心等待。

  • 头像
    mlyxkj
    2021-08-16

    再请教下,我是否能挑选恢复的文件,而不是按顺序恢复。按我现在这个速度,我还需要10天才能把这10多T文件恢复出来。实际上我需要的不过是3G多。其他的都是电影,能不能找回无所谓了。
    我来说下我这个是怎么出问题的。
    1、我的群晖是部署在ESXI下面,然后ESXI的存储是由6个6TB的硬盘RAID5阵列组成。
    2、ESXI虚拟了三个磁盘给群晖使用,都是存储在RAID5的阵列里。分别是2个2T,一个16T。
    3、因为UPS出问题,不能持续供电,然后外部的开关一天跳了几次闸,结果就出问题了。
    4、实体的阵列RAID5没有问题。反而是虚拟给群晖的虚拟磁盘出问题,其中一个2T,一个16T的提示存储空间损毁。
    5、然后我就搜索到你这里来了。按照你的方法,目前在恢复中。我一天都在盯着回答问题。

    • 头像
      Chi~
      2021-08-22

      试了恢复时删除目标文件夹的父文件夹。这个文件夹的其他文件就跳过了。可以试试。

  • 头像
    mlyxkj
    2021-08-16

    提示的问题是这个,我到现在都没理解。我碰到不需要的文件,我都选择N放弃了。
    we seem to be looping a lot on
    do you want to keep going on?

  • 头像
    mlyxkj
    2021-08-16

    我总共14T的数据,到目前4天了,恢复了4T。我每天除了睡觉都盯着,因为经常跳出菜单要我回答Y/N/A,不知道能不能把这个提问去掉呢?

    • 头像
      Chi~
      2021-08-21

      类似问题,8月14日一大早停电的。我是阵列卡电池故障导致来电后无法回写。目前一个有效superblock都没找到。还在寻找其他的修复方案。顺便说一下。另一台黑群用的是ext4,很顺利的修复好了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注