VegoSong

记录点滴生活,学习心得,分享经验

【inode清理】解决inode内存不足引起的各种No Space Left问题

前段时间发现自己杭州服务器的几个网站都莫名出现 No space left on device 警告,但是由于当时网站还是可以访问就没有太在意。再过了一段时间后发现网站直接无法访问了,查看了一下Nginx,MySQL服务发现 已经停止运行了,想手动启动提示空间不足。于是用df -h命令查看了一下磁盘使用情况,发现磁盘只使用了59%,还有16G的剩余空间,按理说不会出现这种问题。后来用df -i查看了一下索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。

inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是BlockBlock是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。

这台杭州服务器的Block虽然还有剩余,但inode已经用满,因此在创建新目录或文件时,系统提示磁盘空间不足。

解决方案:

宝塔Inode信息的清理方法:

请按照教程分别清理网站日志、php站点session、系统邮件、临时文件、面板回收站、mysql二进制日志

一:清理网站日志/php站点session/系统邮件/临时文件执行命令:

cd /www/server/panel && python tools.pyc clear

二:清空面板回收站执行命令:

rm -rf /www/Recycle_bin/*

三:清除mysql二进制日志

注意:清除mysql二进制日志过程中会停止重启数据库,除非必要,否则不建议清理此日志

执行命令:

/etc/init.d/mysqld stop
rm -f /www/server/data/ib_logfile*
rm -f /www/server/data/mysql-bin.*
/etc/init.d/mysqld start

注意:执行rm命令时,命令行是不会有任何显示的,如果不能输入命令说明正在执行删除操作,能输入命令的时候说明上一个删除任务已经完成。

清理完成后检查磁盘空间

执行上述清理磁盘空间的命令后,可以通过命令:

df -h

查看一下剩余的磁盘空间。只要Use%没有达到100%就可以了。

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注