dmesg | grep -i error
journalctl -p 3 -xb # 对于使用systemd的系统
cat /var/log/messages | grep -i filesystem
smartctl -a /dev/sdX # 需要安装smartmontools
mount | grep "^/dev"
df -h
# 卸载文件系统后运行fsck
umount /dev/sdXN # 先卸载
fsck -y /dev/sdXN # -y自动修复
# 对于根文件系统,可使用恢复模式或Live CD
# 查找备用超级块
mkfs.ext4 -n /dev/sdXN # 显示超级块位置而不格式化
# 使用备用超级块修复
fsck -b 32768 /dev/sdXN # 32768为备用超级块位置
badblocks -v /dev/sdXN > bad-blocks.txt
fsck -l bad-blocks.txt /dev/sdXN
ext3/ext4:
fsck.ext4 -p /dev/sdXN # 自动修复
XFS:
xfs_repair /dev/sdXN
Btrfs:
btrfs check --repair /dev/sdXN # 谨慎使用--repair选项
定期检查:设置定期文件系统检查
tune2fs -c 30 /dev/sdXN # 每30次挂载后检查
启用磁盘写入屏障
# 在/etc/fstab中添加barrier=1选项
/dev/sdXN / ext4 defaults,barrier=1 0 1
使用UPS:防止意外断电导致文件系统损坏
监控磁盘健康:
smartctl -t long /dev/sdX # 定期测试
考虑使用更健壮的文件系统:如ZFS或Btrfs(带校验功能)
debugfs /dev/sdXN
> lsdel # 列出已删除的inode
> dump <inode> /path/to/recover # 恢复文件
vgscan
vgcfgrestore -l vgname
vgcfgrestore vgname
ddrescue /dev/sdX /dev/sdY mapfile
通过以上方法,大多数文件系统错误都可以得到有效解决。如果问题持续存在,可能需要考虑更换存储设备或更深入的数据恢复服务。