返回

Linux系统管理体系-磁盘管理体系进阶

后端

一、磁盘管理之故障案例

1、磁盘空间不足-经典版本

错误提示: no space left on device

现象: df -h某个磁盘分区使用率达到100%,如何排查,如何处理?

模拟故障: 创建1G大小文件touch 1G.file,df -h查看磁盘空间使用情况,发现/dev/sda1分区使用率达到100%

解决方案:

  1. 检查文件系统是否已满。使用df -i命令查看文件系统的inode使用情况,如果inode使用率也达到100%,则需要扩容文件系统或删除不需要的文件。
  2. 检查是否有大文件或目录占用过多空间。可以使用find命令查找占用空间较大的文件或目录,然后删除或移动它们。
  3. 检查是否有临时文件或日志文件占用过多空间。可以使用find命令查找tmp目录下的临时文件,或使用grep命令查找日志文件,然后删除或移动它们。
  4. 清空系统缓存。可以使用sync命令将系统缓存中的数据写入磁盘,然后使用free -m命令查看系统缓存的使用情况,如果系统缓存占用过多空间,则可以考虑增加系统内存。
  5. 压缩文件或目录。可以使用gzip或bzip2等工具压缩文件或目录,以减少它们所占用的空间。
  6. 扩容磁盘分区。如果以上方法都无法解决问题,则可以考虑扩容磁盘分区。

2、IO性能低下

现象: 系统运行缓慢,IO操作频繁,磁盘灯持续亮起

模拟故障: 在/tmp目录下创建1G大小文件dd if=/dev/zero of=1G.file,然后使用iostat -x 1观察磁盘IO情况,发现磁盘读写速度很慢

解决方案:

  1. 检查磁盘是否损坏。可以使用smartctl工具检查磁盘的健康状况,如果磁盘损坏,则需要更换磁盘。
  2. 检查磁盘是否有坏道。可以使用badblocks工具检查磁盘是否有坏道,如果有坏道,则需要用mkfs命令重新格式化磁盘。
  3. 检查磁盘是否碎片化。可以使用defrag工具对磁盘进行碎片整理,以提高磁盘的IO性能。
  4. 检查磁盘队列长度。可以使用iostat -x命令查看磁盘队列长度,如果队列长度过长,则需要调整磁盘调度算法或增加磁盘数量。
  5. 检查系统负载。可以使用uptime命令查看系统负载,如果系统负载过高,则需要调整系统资源的使用情况或增加系统资源。

3、数据备份与恢复

现象: 由于误操作或磁盘损坏导致数据丢失

模拟故障: 使用rm -rf命令删除/tmp目录下的所有文件,然后使用find命令查看/tmp目录,发现所有文件都已丢失

解决方案:

  1. 从备份中恢复数据。如果在数据丢失之前已经对数据进行了备份,则可以直接从备份中恢复数据。
  2. 使用数据恢复工具恢复数据。可以使用TestDisk、PhotoRec等数据恢复工具尝试恢复丢失的数据。
  3. 联系数据恢复公司。如果数据丢失严重,并且无法自行恢复,则可以联系数据恢复公司寻求帮助。

4、磁盘配额管理

现象: 某些用户或组占用了过多磁盘空间

模拟故障: 在/home目录下创建两个用户user1和user2,然后使用quota -u命令查看他们的磁盘配额,发现user1的磁盘配额为10G,user2的磁盘配额为无限

解决方案:

  1. 使用quota -u命令查看所有用户的磁盘配额情况。
  2. 使用quota -e命令启用磁盘配额。
  3. 使用quota -p命令设置磁盘配额。
  4. 使用quota -g命令查看所有组的磁盘配额情况。
  5. 使用quota -g命令设置磁盘配额。