作为IT工程师,处理Linux硬盘故障需要系统性的方法。以下是详细的排查和解决步骤:
dmesg | grep -i error
journalctl -p 3 -xb # 查看系统错误日志
cat /var/log/syslog | grep -i sda # 替换sda为你的设备名
lsblk # 查看磁盘和分区信息
fdisk -l # 详细分区表信息
smartctl -a /dev/sda # 查看SMART信息(需安装smartmontools)
# 检查文件系统
fsck -y /dev/sda1 # 替换为你的分区
# 强制检查(如果系统提示需要)
fsck -f /dev/sda1
# 检查坏道
badblocks -v /dev/sda > bad-blocks.txt
# 标记坏道(对于ext文件系统)
e2fsck -l bad-blocks.txt /dev/sda1
df -h # 查看磁盘使用情况
du -sh * # 查看当前目录下各文件夹大小
lsof +L1 # 查看已删除但仍被进程占用的文件
# 检查IO性能
iotop
iostat -x 1
# 检查等待IO的进程
vmstat 1
ddrescue /dev/sda /dev/sdb rescue.log
testdisk /dev/sda
photorec /dev/sda1
# 设置定期SMART检查
smartctl -t short /dev/sda # 短期测试
smartctl -t long /dev/sda # 长期测试
# 添加到crontab定期运行
smartctl -H /dev/sda | grep "SMART overall-health"
# 创建RAID1阵列
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb
vgscan # 扫描卷组
vgdisplay # 显示卷组信息
lvdisplay # 显示逻辑卷信息
cryptsetup luksOpen /dev/sda1 encrypted_vol
mount /dev/mapper/encrypted_vol /mnt
以上方法覆盖了大多数Linux硬盘故障场景,具体操作时应根据实际情况选择合适的方法。