热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

云服务器ECSLinux磁盘空间满(含innode满)问题排查方法

问题描述在云服务器ECSLinux系统内创建文件时,出现类似如下空间不足提示:Nospaceleftondevi
 

 

 

 

问题描述

 


 

在云服务器 ECS Linux 系统内创建文件时,出现类似如下空间不足提示:

  1. No space left on device …
问题原因

 


 

导致该问题的可能原因包括:

  •   磁盘分区空间使用率达到百分之百。
  •   磁盘分区 inode 使用率达到百分之百。
  •    僵尸文件:已删除文件因句柄被占用未释放导致相应空间未释放。

 


 

处理办法

 


 

要解决该问题,建议通过如下方式处理:

  •   分区容量满
  •   inode 容量满
  •   修改 inode 数量
  •   僵尸文件分析删除

 

 


 

分区容量满

登陆 SSH,使用 df -h 查看使用率,mounted on 指的是挂载的目录:

 

循环执行如下指令,看下哪个目录大,进入该目录:

  1. cd /
  2. du -sh *

 

直到找到最精确的的文件或目录,然后结合业务情况等判断对相关文件或目录进行删除。或者购买更大的数据盘来分担处理。

 

inode 容量满

登录 SSH,运行下面的命令分析根目录下每个目录下面有多少个文件:

  1. for i in /*; do echo $i; find $i | wc -l; done

 

然后,逐层进入 inode 占用最高的目录,继续执行上述指令,逐步定位占用过高空间的文件或目录,最后进行相应清理。

 

 


 

修改 inode 数量

ECS Linux 的 inode节点中,记录了文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针。一般情况不需要特殊配置,如果存放文件很多,需要配置。有时磁盘空间有剩余但是不能存放文件,可能是由于 inode 耗尽所致。df  -i  可以查询 inode 的使用情况:

 

可以参阅如下步骤调整 inode 节点数量:

注:inode 的调整需要重新格式化磁盘,请确保数据已经得到有效备份后再进行下述操作。

1、卸载系统文件。比如:

  1. umount /home

2、重新建立文件系统,指定 inode 节点数:

  1. mkfs.ext3 /dev/xvdb -N 1638400

3、修改 fstab 文件:

  1. vim /etc/fstab

4、查看修改后的 inode 节点数:

  1. dumpe2fs -h /dev/xvdb | grep node

 

僵尸文件分析删除

如果磁盘和 inode 都没有问题,则需要查看是否存在未被清除句柄的僵死文件。这些文件实际上已经被删除,但是有服务程序在使用这些文件,导致这些文件一直被占用,无法释放磁盘空间,使用如下命令可以查看死文件占用情况:

  1. lsof |grep delete | more

 

如果这些文件过多,会占用很大的磁盘空间。可以通过如下方法来释放句柄,以清除僵尸文件:

  • 重启服务器。
  • 正常停止或杀掉占用这些文件的服务进程。

推荐阅读
author-avatar
金婉jessica氵_573
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有