修复:Linux执行ls报错 ls: cannot open directory .: Input/output error解决思路

[复制链接] |主动推送
查看53 | 回复0 | 2024-9-11 18:27:09 | 显示全部楼层 |阅读模式
当Linux执行ls报错 ls: cannot open directory .: Input/output error的时候,或者遇到类似的问题,要考虑几个方面。
1,看看是不是ls的分区不存在或者被误删除。
2,注意看是不是ls的分区权限出现问题。
3,经常出现的是该分区所在的磁盘扇区故障。
分析:由于服务器是重IO业务所有对磁盘损坏比较大,经常出现此类错误,上述这种情况一般都是硬盘问题导致文件系统损坏解决方案:
1.如果条件允许可以重启系统试试。
2.如果无法重启或重启无法解决问题,lsof、fuser命令查找出还在损坏磁盘进行读写的进程,全部停掉(pkill -9 xxx)进程,尝试mount和umount文件系统,以便重放日志,修复文件系统,如果不行,再进行如下操作。
3、检查文件系统:先确保umount
xfs_check /dev/sdd(盘符); echo $? 返回0表示正常
4、执行xfs_repair -n,检查文件系统是否损坏,如何损坏会列出将要执行的操作如果幸运的话,会发现没有问题,你可以跳过后续的操作。该命令将表明会做出什么修改,一般情况下速度很快,即便数据量很大,没理由跳过。
5、执行xfs_repair修复文件系统
xfs_repair /dev/sdd (ext系列工具为fsck)
6、最后方法:损失部分数据的修复方法
根据打印消息,修复失败时:
umount -l 卸载磁盘 也可以到/etc/fstab用#注释掉有问题的磁盘后重启。
先执行xfs_repair -L /dev/sdd(清空日志,会丢失文件),
fsck -y /dev/sdd;(ext文件系统)
xfs_repair -L /dev/sdd (xfs文件系统)
再执行xfs_repair /dev/sdd,
再执行xfs_check /dev/sdd 检查文件系统是否修复成功。
说明:-L是修复xfs文件系统的最后手段,慎重选择,它会清空日志,会丢失用户数据和文件。
备注:
在执行xfs_repair操作前,最好使用xfs_metadump工具保存元数据,一旦修复失败,最起码可以恢复到修复之前的状态。
xfs_metadump为调试工具,可以不管,跳过。
7.修复完成后重新挂载目录,再次进入到目录查看问题是否解决。
**PS:正常操作流程是以上流程,但是偶尔会出现分区表损坏的情况,需要重新做raid 用 MegaCli64
注:修复过程可能造成文件丢失的风险,建议执行操作前对磁盘分区进行备份。**错误解决couldn't initialize XFS library
注意:如果使用xfs_repair修复文件系统时提示fatal error -- couldn't initialize XFS library
修复方法
1、修改/etc/fstab,将待修复的分区先注释掉
2、重启主机
3、重复执行xfs_repair命令,必要时可使用-L选项 或者 执行fsck(ext文件)
4、修改/etc/fstab,恢复被修复的分区
5、重启主机
修复的过程比较漫长,根据坏道的多少来决定时间,一般是把有坏道的区块屏蔽掉。大概的过程类似这样:大体的修复过程
我的/www挂在/dev/sdc1上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则