Linux服务器在长时间运行中难免遇到存储方面的故障,例如磁盘写满、文件系统只读、分区无法挂载等。这些问题如果处理不及时,会直接影响线上业务。本文介绍一套实用的排查与解决方法,帮助你在真实环境中快速定位并修复存储故障。

一、确认磁盘空间使用情况
当系统提示空间不足或写入失败时,第一步是用df命令查看整体挂载点的容量:
# 查看所有挂载点使用情况,以人类可读方式显示 df -h # 查看某个目录所在分区的使用率 df -h /var/log
如果某个分区使用率接近100%,再用du命令逐层定位大文件或目录:
# 查看当前目录下各子目录占用空间,排序前10 du -h --max-depth=1 | sort -rh | head -10
- 日志文件异常增长是常见原因,可清理或轮转日志。
- 临时文件目录如
/tmp也可能被占满,需定期清理。
二、处理文件系统错误
若磁盘正常但文件系统变成只读,或系统报错Input/output error,可能是文件系统损坏。此时应使用fsck修复,但要注意:必须先在单用户模式或救援模式下卸载目标分区。
# 卸载分区(请确认无进程占用) umount /dev/sdb1 # 对ext4文件系统做检查与修复 fsck -y /dev/sdb1
注意:对根分区修复通常需要通过Live CD或救援模式启动,不要直接在线强制修复。
三、排查硬盘识别与挂载异常
有时重启后磁盘未被识别,或/etc/fstab配置错误导致启动卡住。可用以下命令确认硬件与分区状态:
# 查看内核环形缓冲区,找存储相关报错 dmesg | grep -i error # 列出块设备及其挂载点 lsblk -f
若分区存在但挂载失败,检查/etc/fstab中是否写错UUID或文件系统类型。可使用blkid获取正确标识:
blkid /dev/sdb1
| 故障现象 | 优先检查项 |
|---|---|
| 写入提示空间不足 | df、du输出与日志 |
| 分区变成只读 | fsck与dmesg日志 |
| 启动卡在挂载 | /etc/fstab与blkid |
四、利用LVM提升管理弹性
对于频繁扩缩容的场景,建议采用LVM。当逻辑卷空间不够时,可在线扩展:
# 向卷组vg_data添加新磁盘/dev/sdc vgextend vg_data /dev/sdc # 将逻辑卷lv_app扩容5G lvextend -L +5G /dev/vg_data/lv_app # 同步文件系统(ext4示例) resize2fs /dev/vg_data/lv_app
通过上述步骤,多数Linux存储故障都能被有效解决。关键是先观察现象、再分层排查,避免盲目格式化或重启造成数据丢失。