问题表现:
- No space left on device
错误
- 系统运行缓慢
- 无法创建新文件或保存修改
解决方法:
# 1. 检查磁盘使用情况
df -h
# 2. 查找大文件/目录
du -sh /* 2>/dev/null | sort -rh | head -10
du -sh /home/* 2>/dev/null | sort -rh | head -10
# 3. 清理日志文件
journalctl --vacuum-size=100M # 限制系统日志大小
find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
# 4. 清理旧的内核版本(保留1-2个最新版本)
sudo apt autoremove --purge # Debian/Ubuntu
sudo dnf autoremove # RHEL/CentOS/Fedora
# 5. 清理软件包缓存
sudo apt clean # Debian/Ubuntu
sudo yum clean all # RHEL/CentOS
sudo dnf clean all # Fedora
问题表现: - 系统启动时出现文件系统错误 - 文件或目录无法访问 - 出现"I/O error"等错误信息
解决方法:
# 1. 卸载文件系统(如果可能)
umount /dev/sdX
# 2. 运行文件系统检查
fsck -y /dev/sdX
# 对于ext2/3/4文件系统:
e2fsck -f -y -v /dev/sdX
# 对于XFS文件系统:
xfs_repair /dev/sdX
# 3. 如果根文件系统损坏,使用救援模式或Live CD
常见问题: - 物理卷(PV)、卷组(VG)或逻辑卷(LV)无法识别 - 扩展/缩小逻辑卷时出现问题
解决方法:
# 1. 检查LVM状态
pvdisplay
vgdisplay
lvdisplay
# 2. 扩展逻辑卷
lvextend -L +10G /dev/vgname/lvname
resize2fs /dev/vgname/lvname # 对于ext文件系统
xfs_growfs /mountpoint # 对于XFS文件系统
# 3. 修复丢失的物理卷
vgchange -a y vgname
pvscan --cache
vgimportclone /dev/sdX
问题表现: - 系统响应缓慢 - 高磁盘I/O等待时间(iowait) - 应用程序超时
解决方法:
# 1. 识别高I/O进程
iotop
dstat -d
# 2. 检查磁盘I/O统计
iostat -x 1
# 3. 调整I/O调度器
# 查看当前调度器
cat /sys/block/sdX/queue/scheduler
# 临时更改为deadline或noop
echo deadline > /sys/block/sdX/queue/scheduler
# 永久更改(在/etc/default/grub中添加)
GRUB_CMDLINE_LINUX_DEFAULT="... elevator=deadline"
# 4. 限制进程I/O
ionice -c 3 -p PID
常见问题: - 无法挂载设备 - 挂载点忙 - 错误的文件系统类型
解决方法:
# 1. 检查已挂载的文件系统
mount | grep sdX
# 2. 强制卸载
umount -l /mountpoint # 懒卸载
fuser -vm /mountpoint # 查看使用挂载点的进程
kill -9 PID # 终止相关进程后重试
# 3. 检查文件系统类型
blkid /dev/sdX
# 4. 尝试手动挂载
mount -t ext4 /dev/sdX /mountpoint
# 5. 检查/etc/fstab是否有错误
mount -a # 测试fstab配置
常见问题: - RAID降级 - 磁盘故障 - 同步问题
解决方法:
# 1. 检查RAID状态
cat /proc/mdstat
mdadm --detail /dev/mdX
# 2. 替换故障磁盘
mdadm --manage /dev/mdX --fail /dev/sdX1
mdadm --manage /dev/mdX --remove /dev/sdX1
mdadm --manage /dev/mdX --add /dev/sdY1
# 3. 监控重建进度
watch -n 1 cat /proc/mdstat
# 4. 检查SMART状态
smartctl -a /dev/sdX
常见问题: - 挂载超时 - 权限问题 - 连接不稳定
解决方法:
# 1. 检查NFS服务端
rpcinfo -p server_ip
showmount -e server_ip
# 2. 调整挂载选项
mount -t nfs -o soft,timeo=30,retrans=3 server:/path /mountpoint
# 3. 检查网络连接
ping server_ip
traceroute server_ip
# 4. 查看NFS统计
nfsstat
常见问题: - "Permission denied"错误 - 文件所有权不正确
解决方法:
# 1. 检查文件权限
ls -l /path/to/file
# 2. 更改文件所有权
chown user:group /path/to/file
# 3. 更改文件权限
chmod 755 /path/to/file
# 4. 检查SELinux上下文(如果启用)
ls -Z /path/to/file
restorecon -Rv /path/to/file
定期监控:
# 设置磁盘空间监控
df -h >> /var/log/disk_usage.log
# 或使用监控工具如Nagios、Zabbix等
定期检查文件系统:
# 添加到cron作业中
touch /forcefsck
实施备份策略:
# 使用rsync、tar或专业备份工具
tar -cvzf /backup/backup-$(date +%Y%m%d).tar.gz /important_data
使用LVM快照:
lvcreate -L 1G -s -n snap_name /dev/vgname/lvname
启用SMART监控:
smartctl -a /dev/sdX
smartctl -H /dev/sdX
通过以上方法和预防措施,可以有效地管理和解决Linux系统中的大多数存储相关问题。