mkdir: 无法创建目录: 设备上没有空间

/ 0评 / 0

报错:

df -h显示硬盘还有空间,但是touch /mkdir 都失败

原因:

df -ia查看下inode的使用情况,发现已经100%

解决方法:

删除无用的临时文件,释放inode。

统计目录inode占用数目:

find */ ! -type l | cut -d / -f 1 | uniq -c
find */ -exec stat -c "%n %i" {} \;|awk -F "[/ ]" '{if(! a[$1-$NF]++) l[$1]++}END{for (i in l) print i,l[i]}'

 

那么,inode究竟是什么?为什么它使用完,就不能创建文件和文件夹了?

在磁盘上建立文件的时候需要两个条件:1.磁盘空间2.需要有inode

任何一个满了都回提示设备没有空间。可以使用df -ia查看磁盘详细信息。

解释:

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。

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

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

每一个文件都有对应的inode,里面包含了与该文件有关的一些信息

 

可以使用stat命令查看inode的信息:stat example.txt

 

另外,单个目录下子目录的数量也是有限制的。

发表评论

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

  • 默认
  • 护眼
  • 夜晚
  • Serif
  • Sans