Linux关于inode的理解

Linux操作系统中每个文件的属性信息,比如大小,时间,类型等成为文件的元数据(metadata),这些数据都存在inode(index node)表中,innode表中是由很多记录组成的,一条记录对应的存放的一个文件的元数据信息

每一额个inode表记录对应的保存了以下的信息

  • inode number 节点号
  • 文件类型
  • UID
  • GID
  • 链接数(指向这个文件名路径名称个数)
  • 该文件的大小和不同的时间戳
  • 有关文件的其他数据

inode分为直接指针和一级二级指针

df -i 可以看到一共有多少个inodes,用了多少个Inodes,还可以用多少个InodesLinux关于inode的理解_第1张图片

试着把Inodes的值给填满,现在可以看到Ifree为0,说明现在没有可以用的InodeLinux关于inode的理解_第2张图片

虽然可用的Inodes为0,但是依然可以创建,因为有些是预留的。Linux关于inode的理解_第3张图片

那我们就再多创建一些文件,直至没有空间

这个时候我们再用df -h看下空间,如下图可以看到空间还有483M,但是却不能创建文件了Linux关于inode的理解_第4张图片

 出现的问题是节点编号用完了,而并不是空间不够了

 模拟把硬盘空间撑满 cp /dev/zero /boot/test.img,然后用df -h查看,磁盘空间已经满了。Linux关于inode的理解_第5张图片

接下来我们把vim 把这个文件打开

然后再删除,并用df -h看下磁盘空间,神奇的事情发生了,磁盘空间还是被占用了​​​​​​,还是无法创建文件Linux关于inode的理解_第6张图片

把ssh连接的vim窗口关闭,空间就回来了(需要找到使用这个文件的程序,然后关闭它)Linux关于inode的理解_第7张图片

但是如果不能随便关,也许是工作中的业务程序,用户访问会受影响,我们再构建出来,使用另外一种解决方案。Linux关于inode的理解_第8张图片

在不关闭ssh连接的情况下我们使用一下命令可以把文件的内容清空,然后再执行删除,完成!Linux关于inode的理解_第9张图片

 cat /dev/null >/boot/test.img 用黑洞清空 和>/boot/test.img 一样的效果(>在shell为/bin/csh不能用)

你可能感兴趣的:(linux,运维,服务器)