首页 > 代码库 > No space left on device 解决Linux系统磁盘空间满的办法

No space left on device 解决Linux系统磁盘空间满的办法

由于当初安装系统时设计不合理,有些分区分的过小,以及网络通讯故障等造成日志文件迅速增长等其他原因都可能表现为磁盘空间满,造成无法读写磁盘,应用程序无法执行等。

(以/home空间满为例):

 
  1. 定期对重要文件系统扫描,并作对比,分析那些文件经常读写
 
  #ls –lR /home >;files.txt
 
  #diff filesold.txt files.txt
 
  通过分析预测空间的增长情况,同时可以考虑对不经常读写文件进行压缩,以减少占用空间。
 
  2. 查看空间满的文件系统的inodes消耗
 
  #df – i /home
 
  如果还有大量inode可用,说明大文件占用空间,否则是可能大量小文件占用空间。
 
  3. 找出占用空间较大的目录
 
  查看/home 占用的空间
 
  #du –hs /home
 
  查看/home 下占用空间超过1000m
 
  #du |awk ‘$1>;2000‘
 
  4. 找出占用空间较大的文件
 
  #find /home –size +2000k
 
  5. 找出最近修改或创建的文件
 
  先touch一个你想要的时间的文件如下:
 
  # touch -t 08190800 test
 
  #find /home -newer test -print
 
  6. 删除系统日志等
 
  删除生成 core,mbox等文件
 
  #find / -name core|xargs rm –rf
 
  删除日志
 
  #rm -rf /var/log/*
 
  7. 对分区做链接
 
  在有空间的分区,对没有空间分区做链接
 
  #ln -s /home /usr/home
 
  8.找出耗费大量的空间的进程
 
  根据不同的应用,找出对应的进程。分析原因。
 
  9.检查并修复文件系统
 
  #fsck –y /home
 
  10.重起机器
 
  有了以上的十招,应该可以解决大部分问题,但关键还是安装时要规划好分区。另外发现磁盘满时,不能急,小心操作,认真分析原因,然后小心应对。需要注意,以上十招不需要顺序执行,有的可能一招封喉,有的可能需要数招并用,删除操作一定要小心。如果还不行,只有采取增加硬盘,重新安装系统等"硬"办法了。
 
  还可以:
 
  cd \
 
  du -h --max-depth=1|grep G|sort -n
 
  找到最大的那个目录后进入该目录
 
  再运行du -h --max-depth=1|grep G|-n
 
  如果没有结果可以运行 du -h --max-depth=1|grep M|sort -n
 
  找出来以后看是否有用的文件
 
  没用就删掉
 

No space left on device 解决Linux系统磁盘空间满的办法