V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
marktask
V2EX  ›  Linux

发帖求助下 fsck 以后如何异常如何修复?

  •  
  •   marktask · 2022-08-08 12:30:22 +08:00 · 1577 次点击
    这是一个创建于 625 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司有台服务器,上面配了阵列卡,3 块硬盘做了 raid5 ,另外一块热备,最初时候没配电池,后来加装的。 上周五同事反馈服务器卡顿,查询后发现,Raid5 所在分区 IO 有问题,于是去机房检查服务器状态,发现 raid 的 1 号成员盘跟热备盘同时黄灯常亮,怀疑硬盘坏了。 所以采购了新的硬盘准备替换上去,重启服务器进入 bios 界面,发现 1 号成员盘跟热备盘同时显示不在线,但是硬盘状态又是 0 错误,怀疑只是单纯的硬盘掉盘导致的。于是尝试重新上线下硬盘,结果一上线,就显示重建状态,不敢打断,就保存重启了下服务器。 进入服务器以后发现服务器 raid5 所在的分区无法自动挂载,于是手动挂在了下,结果满屏幕的显示 htree_dirblock_to_tree:984: inode #87556100: block 1: comm smbd: Directory block failed checksum 3: comm smbd: Directory block failed checksum [48427.551162] EXT4-fs error: 118823 callbacks suppressed [48427.551164] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48427.551206] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48427.551249] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48427.551329] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48427.551370] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48427.551423] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48427.551473] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48427.551516] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48427.551558] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48427.551602] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48432.552207] EXT4-fs error: 117129 callbacks suppressed [48432.552221] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48432.552254] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48432.552297] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48432.552381] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48432.552425] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48432.552467] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48432.552540] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48432.552581] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48432.552625] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum [48432.552667] EXT4-fs error (device sdb1): htree_dirblock_to_tree:984: inode #87953926: block 3: comm smbd: Directory block failed checksum 类似信息。 查阅资料,猜测可能是之前阵列卡没配备电池之前,几次异常断电导致的。 我就参照教程,执行了 efsck 命令,本以为是很快就能好,结果周六下午 1 点开始修复的,一直到周日晚上 11 点还在修复,由于服务器要继续使用,就尝试中断了下 fsck ,结果有部分文件丢失,也有部分文件被还原到历史某个版本。同时有的文件夹无法访问,提示: ls: cannot access 'adas.xlsx': Structure needs cleaning 也有部分文件夹提示只读 mkdir: cannot create directory ‘1’: Read-only file system

    问了以前合作过的一家数据修复公司,说没辙 这种情况怎么修复呢????

    yanqiyu
        1
    yanqiyu  
       2022-08-09 12:47:13 +08:00
    这一堆 Directory block failed checksum 也难以定位问题,只是报错 smbd 试图访问文件夹结果因为 checksum 错误失败了。可能原因是断电导致的不一致 /盘里面的数据就是坏了(等于我没说,因为判断不出来)

    如果数据极其重要,建议马上只读挂载,准备相当或更大容量硬盘,把全盘 dd 出来备份,在完完整整的运行一次 e2fsck 。(就算 e2fsck 也不能保证找回所有数据,它只是修正文件系统一致性,要是有什么 block 里面的数据已经坏了是找不回来的。但是强行读写不一致的文件系统可能扩大损坏)
    marktask
        2
    marktask  
    OP
       2022-08-09 16:38:26 +08:00
    @yanqiyu #1 确实是数据不太一致,一开始不知道 fsck 会导致数据丢失,跑了一天了,丢了近万个文件(服务器上大概几千万个文件)。现在没办法,趁着还可读,复制了服务器上文件,然后重新搭建了一台服务
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5177 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:43 · PVG 13:43 · LAX 22:43 · JFK 01:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.