实践概述
您是否在使用Linux云主机过程中遇到过这样的问题?
“No space left on device”表示您的磁盘空间不足,它可以直接导致您的系统崩溃、数据丢失、应用程序错误以及其他相关问题的发生。
通常导致磁盘空间不足有以下几个原因:
- 云硬盘订购容量过小,无法满足数据空间需求。用户可根据业务需求进行磁盘扩容,具体操作请参见扩容云硬盘。
- 磁盘分区空间使用率达到100%,您可以通过清理不常使用的较大文件或文件夹来进行空间释放。
- 磁盘存在已删除未释放的僵尸文件,导致空间不足,用户需要准确找到存在的僵尸文件,并清理掉这些文件。
- 磁盘分区索引节点Inode使用率超过100%,您可以删除掉对Inode占用比较高的文件来清理或者直接选择增加Inode节点。
针对这些导致磁盘空间不足的原因,分别用不同方式进行处理,详情请参见本文具体操作步骤。
操作前准备
在进行具体操作之前,需要完成以下准备工作:资源规划和资源创建。
资源规划
本实践以操作系统为“CentOS 7.6 64bit”的云主机为例,处理Linux云主机实例磁盘空间不足的方法,需要您提前做好资源规划,具体资源如下:
资源 | 资源说明 | 数量 | 详情链接 |
---|---|---|---|
弹性云主机 | 操作系统“CentOS 7.6 64bit” | 1个 | 弹性云主机计费 |
弹性IP | 弹性云主机需要绑定弹性IP来下载安装包 | 1个 | 弹性IP计费 |
资源创建
操作步骤
本文中将分别针对导致磁盘空间不足的三个原因,即“磁盘分区空间使用率高达100% ”、“僵尸文件冗余”、“磁盘分区索引节点Inode使用率高达100%”,来分别给出对应的处理方式。
清理占用空间较大的文件及目录
当磁盘分区空间使用率高达100%时,用户可通过清理占用空间较大的文件及目录来达到清理空间的目的。
以下操作步骤中云主机的操作系统为“CentOS 7.6 64bit”,回显仅供参考。
- 登录控制中心。
- 单击控制中心左上角的,选择地域,此处我们选择华东1。
- 单击“计算>弹性云主机”,进入弹性云主机页面。
- 单击待操作的弹性云主机所在行的“操作>远程登录”。
- 以root用户身份登入云主机,登录之后如图:
- 首先执行命令
df -h
,来查看当前云主机的磁盘使用率。
- 用户可以根据“Use%”这一列来确定使用率,从此图中可以看出使用率最高的是/dev/vda1,使用率为4%。
- 用户进入根目录并执行命令
du -sh *
查看哪个文件占用磁盘空间比较大,具体操作及回显信息如下图:
- 从此图中可以看到/usr目录占据磁盘空间较大。接下来进入到/usr目录查看哪个目录或文件占据空间最大,执行命令
du -sh *
及回显信息如下图所示:
从图中可以看到当前/usr路径中/usr/lib占据空间最大,以此类推,最终根据业务和实际需求来判断是否需要删除相应文件,可以删除不再使用的文件及目录。
清理“僵尸文件”
在主机中可能存在一部分文件,被标注为“deleted”,显示已被删除,但是仍在占据磁盘空间,且这部分文件不能用常用的查询文件命令查询到,您可以采用以下方法来查询并删除文件:
- 以“root”用户登录弹性云主机,登录成功如图:
- 在登录成功的弹性云主机中,首先安装lsof工具,lsof是一个列出当前系统打开文件的工具,使用
yum install lsof -y
命令来安装,回显信息如下图所示:
从图中可知,此台云主机中系统自带lsof工具,可直接使用。
- 执行命令
lsof |grep delete | sort -k7 -rn | more
来查看此台云主机中僵尸文件的空间占用情况,具体操作及回显情况如下图:
- 可以看到在本台云主机中,目前没有“僵尸文件”,当有“僵尸文件”时,需要您将其所在进程杀掉。您可以通过命令
lsof | grep delete
来显示进程号,并找出其中的”僵尸文件“进程号,使用kill <进程号>来结束进程,并释放空间。
清理Inode占用较大空间文件
当云主机确认磁盘分区空间还没有被用满,也确认没有“僵尸文件”的存在,可以考虑此台云主机中是否磁盘分区的Inode使用率过高,用户可以采用清理Inode占用空间较大文件的方法来处理此问题,具体步骤如下:
- 以“root”用户登录弹性云主机,登录成功如图:
- 查询Inode使用率,执行命令
df -i
,回显信息如下图:
- 目前的“IUse%”数值都较小,当您发现您云主机中的“IUse%”值接近100%需要继续执行后续操作。
- 执行命令
for i in /*; do echo $i; find $i | wc -l; done
来分析当前云主机上根目录下的二级目录中都分别有多少个文件,回显信息如下图所示:
上图中,每一级目录下方代表的数字为此目录下的文件数,数字越大说明Inode占用越高,此示例中/usr目录下的文件数最多。因此,用户可查询/usr目录中二级目录的文件数,再次找出文件数最多的目录。以此类推,最终定位出占用Inode较大空间的文件及目录,根据业务需要来确认是否清理来释放空间。