与 VMFS 斗争(下)群晖 btrfs 文件系统的扫描

2022-02-10 11:37:26 11点赞 63收藏 18评论

自从去年下半年以来就一直在和 VMFS 文件系统斗争。这个系列也是开篇以来拖了很久。本来还计划了个中篇 - VMFS on VSAN,但想想家用一般不会接触到。就先把下篇给填上。

群晖 ext4 请参考 与 VMFS 斗争(上)群晖 ext4 文件系统的扫描修复

背景

家里的服务器由于阵列卡缓存和缓存电池同时故障,在一次小区大面积停电后虚拟机全军覆没。其中windows做chkdsk就正常了;photonos开机直接进rescue mode做fsck就正常了。唯独群晖的brtfs,修正起来非常麻烦。

群晖存储池“已损毁”的修复

这台群晖同样挂载了两块虚拟磁盘作为存储。但其结构与之前的稍有不同:

与 VMFS 斗争(下)群晖 btrfs 文件系统的扫描

其中md0存储了群晖操作系统文件,md1存储了群晖的配置文件。位于/volume1的应用程序、应用配置以及保存的文件都无法正常读写入。检查了系统分区和配置存储分区均正常,所以将问题锁定在sdb3和md2。

由于群晖自带的btrfs管理版本低且功能差,直接关机并将该虚拟硬盘挂载到Ubuntu下。

大部分btrfs的中文修复教程都指向一个命令:btrfs check。在Ubuntu下,首先需要安装支持工具:

apt-get update && apt-get install -y mdadm lvm2 btrfs-prog

然后查看分区内的block并根据读出的block修复:

btrfs-find-root /dev/md/3

btrfs check --repair --tree-root 950302949376 --super 2 /dev/md/3

然而并没有什么用,到最后因 Couldn't setup device tree 而失败。或尝试重置分区索引:

btrfs rescue super-recover /dev/md/3

然而也没有什么用,到最后提示 Disk I/O error

群晖 btrfs 损坏后的文件导出

经过一番科学的搜索,发现可以扫描并导出分区内的文件。首先查看分区文件夹入口:

btrfs restore -l /dev/md/3

该命令会返回一堆形如`tree key (257 ROOT_ITEM 0) 950302949376 level 2`的文件夹,但其中只有一个是根文件夹,其他的都是子文件夹。

经过一番尝试,最终确认入口 257 是根文件夹。给Ubuntu挂载了一个nas目录,然后将该文件夹恢复出来:

btrfs restore -vvvv -r 257 -i /dev/md/3 /mnt/nas/257

如果不好确定哪个是根文件夹且硬盘空间足够,也可将所有的ROOT_ITEM都给恢复出来。某个网站给出了一个很有效的批处理:

btrfs restore -l /dev/md/3 | grep ROOT_ITEM | awk 'substr($3,2) ~ /^[0-9]+$/ {print substr($3,2)}' | xargs -I % sh -c 'mkdir /mnt/nas/%; btrfs restore -vvvv -r % -i /dev/md/3 /mnt/nas/%'

后记

从易用性以及广泛性来看,ext4显然是比btrfs更好的文件系统。但就功能来说,btrfs更胜一筹。只不过一旦btrfs文件系统有损坏,修复不但很麻烦而且不一定成功。但btrfs在容错方面做得不错,至少还可以把文件给导出来……

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

展开 收起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2829元起

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

2179元起

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

2190.84元起

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

4079元起

Synology 群晖 DS1821+ 8盘位NAS (V1500B、4GB)

Synology 群晖 DS1821+ 8盘位NAS (V1500B、4GB)

8899元起

Synology 群晖 DS223j 双盘位 NAS网络存储服务器 私有云 智能相册 文件自动同步

Synology 群晖 DS223j 双盘位 NAS网络存储服务器 私有云 智能相册 文件自动同步

1529元起

Synology 群晖 DS923+ NAS网络存储服务器 标准无硬盘

Synology 群晖 DS923+ NAS网络存储服务器 标准无硬盘

4899元起

Synology 群晖 DS1821+ 8盘位 NAS(V1500B、4GB)

Synology 群晖 DS1821+ 8盘位 NAS(V1500B、4GB)

7196元起

群晖(Synology)DS124单盘位NAS网络存储服务器私有云智能相册文件自动同步

群晖(Synology)DS124单盘位NAS网络存储服务器私有云智能相册文件自动同步

1399元起

Synology 群晖 DS720+ 双盘位NAS(J4125、2GB)

Synology 群晖 DS720+ 双盘位NAS(J4125、2GB)

4099元起

synology群晖nas云存储ds920+中小型企业办公网络存储群辉家庭个人私有云盘四盘位NAS备份硬盘服务器ds918+(DS920+希捷企业级16T*4)

synology群晖nas云存储ds920+中小型企业办公网络存储群辉家庭个人私有云盘四盘位NAS备份硬盘服务器ds918+(DS920+希捷企业级16T*4)

13746元起

Synology 群晖 DS416 企业级 NAS网络存储

Synology 群晖 DS416 企业级 NAS网络存储

暂无报价

Synology 群晖 DS423 四核心 4盘位 NAS网络存储 私有云 照片自动备份

Synology 群晖 DS423 四核心 4盘位 NAS网络存储 私有云 照片自动备份

3179元起

Synology 群晖 DS223 2盘位NAS(Realtek RTD1619B、2GB)

Synology 群晖 DS223 2盘位NAS(Realtek RTD1619B、2GB)

2299元起

Synology 群晖 DS420+ 4盘位NAS (赛扬J4025、2GB)

Synology 群晖 DS420+ 4盘位NAS (赛扬J4025、2GB)

3090元起

Synology 群晖 DS1621+ 六盘位NAS (V1500B、4GB)

Synology 群晖 DS1621+ 六盘位NAS (V1500B、4GB)

6899元起
18评论

  • 精彩
  • 最新
  • 插到新设备上 不能修复吗

    校验提示文案

    提交
    虚拟盘 怎么插 [皱眉]

    校验提示文案

    提交
    这样啊 我是小白 不太懂

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 我的也是显示盘坏了 然后直接重新装了系统 里面的东西都还在 就是弄不出来 最后发现是主板有问题 售后换了主板 这块盘一直在手上 插上去就提示要把存储池先格式化 我们这的人说只能拆盘恢复 所以我的问题是 我这种情况 盘还有别的方法可以把数据弄出来么

    校验提示文案

    提交
    硬盘没物理损坏,拆盘一定是错误方法。理论上直接挂pc3000之类的扫描一下就可以了。麻烦的话相当于格式化恢复,需要手工编目录。

    校验提示文案

    提交
    我问了我们这群晖的总代 说只能拆盘 费用2000好像 回头我了解下pc3000是个啥
    那格式化恢复那种也不需要拆盘的么?
    感谢大神

    校验提示文案

    提交
    还有7条回复
    收起所有回复
  • 我是初二那天关机后,路由换了个,电脑没法登陆了,手机管家显示系统损坏。文件丢失。网上说重装系统。但是登陆不了页面。最后手机登陆后,手机重装的系统。很奇怪为什么电脑不行。

    校验提示文案

    提交
    chrome浏览器不太行。

    校验提示文案

    提交
    收起所有回复
  • 你这标题不对啊,你这是导出文件了,并没有修复文件系统

    校验提示文案

    提交
    嗯嗯,修复失败了

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
63
扫一下,分享更方便,购买更轻松