linux硬盘明明还有空间,linux却说硬盘空间不足?inode;mkdir: 无法创建目录“shen1“: 设备上没有空间

本文主要是介绍linux硬盘明明还有空间,linux却说硬盘空间不足?inode;mkdir: 无法创建目录“shen1“: 设备上没有空间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在生产环境中,突然服务器上的tomcat,还有一些会产生文件的服务都停掉了。进入服务器,然后打算重新启动服务,发现报以下错误

然后果断使用命令   df -h    查看硬盘的空间是不是被日志给挤满,不过这个一般我都有做定时清理的我觉得不大可能,查询后如下

 

这个时候很疑惑,这个时候我想起之前看了操作系统概论的书,知道系统是有 i  节点跟物理节点的。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节,

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

    文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode(索引节点 ),每一个文件都有对应的inode,里面包含了与该文件有关的一些信息

这个时候我们使用  df     -i    命令查看服务器的inode使用情况

发现iNode节点都用完了,这种 情况下满的分区无法新建文件,也无法输出日志,需要输日志的进程一般都会停止工作。

可能原因:

可以看下日志文件是否太多,如果是日志文件占用大量的inodes可以临时释放清理下过期的日志。

也可以根据较大目录的文件占用情况,临时转移部分文件到占用磁盘较小的目录中。
 

解决方法:使用find -exec 遍历,然后执行删除便可。

第一种:删除字节为0的文件

find /home -type  f  -size 0 -exec rm {} \;         #/home是服务器的目录,根据你自己想要查找的文件去释放

find / -type d -size +10M  #找出大小大于10M的目录(目录大小越大,表示目录下的文件越多)。但是如果一个目录很多文件的话,会容易查很久!!!!

配合find */ ! -type l | cut -d / -f 1 | uniq -c  #找出目录下文件总数,可能需要执行多次,直到找出具体的目录。比如上面的命令找出了/home目录下存在大量的小文件,

我这边找出的原因是因为服务器的邮箱文件太多了!!!!!很久没删除过。就是执行定时任务时,不管成功或者失败都会发送一个mail,然后日志文件又放到了服务器上,日积月累下来,导致了很多文件占用了空间。

大家可以重点查看/var/spoo/  目录下的文件大小与个数。主要是/var/spoo/mqueue这个 邮件队列 目录。

我们可以7天清理一次,写一个定时任务,命令如下

find /var/spool/mqueue/*   -type f -mtime +7 -exec rm -rf {} \;

上面这个命令可以用来直接执行。

 

这篇关于linux硬盘明明还有空间,linux却说硬盘空间不足?inode;mkdir: 无法创建目录“shen1“: 设备上没有空间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/344324

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优