首页 > 系统相关 >Linux inode详解

Linux inode详解

时间:2022-12-15 15:44:26浏览次数:72  
标签:文件 使用 详解 硬盘 Linux inode 节点 block

1、inode和block概述

block:操作系统在读取硬盘的时候,会一次性读取一“块”(block),这种块是文件存取的最小的单位,block的大小常见的是4KB,即八个扇区构成。(硬盘的最小存储单位叫做扇区,每个扇区存储512字节,而连续的8个扇区组成了一个块)
inode:文件储存在block中,还必须找到一个储存文件的元信息,比如文件的创建者、创建日期、文件大小等等。这种储存文件元信息的区域就是inode。

2、inode由哪些信息组成

inode包含文件的属性信息有以下内容:

  • 文件的字节数
  • 文件拥有者的id
  • 文件所属组id
  • 文件的读写执行权限
  • 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动时间,atime指文件上一次打开时间。
  • 链接数,既有多少个文件指向这个inode。
  • 文件数据块的位置。

inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘划分为两个区域。一个是数据区,存放文件数据,另一个是inode区(inode table),存放inode所包含的信息。

每一个文件都有一个inode,每个inode都有一个号码inode_num,操作系统用inode号码来识别不同的文件。

3、Linux打开文件原理

​linux系统内部不使用文件名,而使用inode号码来识别文件,对于系统来说,文件名只是inode号码便于识别的别称,在我们的操作系统中表面上是通过文件名打开文件的,实际上分为以下三步:

  1. 查找文件名对应的inode号
  2. 通过inode号获取inode信息
  3. 根据inode信息,找到文件数据所在的block,读出数据

 

4、inode相关命令实操

下面我们为了更详细了解inode号,对其进行一系列实际操作。

首先我们在/opt/inode_test下创建一个abc目录和aaa.txt文件然后用“ls -l”命令查看并对比他们之间的节点数。

查看节点号我们可以使用的有两个命令分别是“ls -i” 和“stat 要查看的文件”,前者只能单独查看文件的节点号,而后者在除了查看节点号外还可以查看文件的其他的一些详细信息。

给一个文件创建一个硬链接后,二者在目录中分别属于两个文件,但是共享同一个节点号的。(硬链接详细介绍见:Linux 软链接和硬链接

这里我们还有两条命令是可以查看文件类型的分别是“file 文件”和“ls -l”。前者可以直白的显示出文件的类型,后者则可以通过权限前面的符号来分别该文件是目录还是文档,当然除了这两种还有一种比较常见的,那就是根据文件显示的颜色来分辨。

前面讲了如何查看文件的节点号,这里我们在讲一下磁盘的节点数目。此时磁盘sdb1共有一千多万节点,而且只使用了三个。
CentOS 7 inode节点详解

接下来我们进入目录abc并在其中创建十万个空文档。
CentOS 7 inode节点详解
CentOS 7 inode节点详解

一个文档占据的就是一个节点,所以此时我们sdb1就已经使用了十万个节点了,占据总结点数百分之一,但内存只占据了80M,与节点数并不成正比,所以这也是我们实际情况中能见到的一种方式,使用空文档占满别人磁盘的节点,虽然磁盘空间还剩余很多但却已经写不进东西了。
CentOS 7 inode节点详解

5、硬盘空间大小和inode数量关系

df -i 可以看到总量、可用、已用inode数量,一般来讲,mkfs的时候,会划分 x% 的空间存放inode的,可用inode数量是按照文件个数计算的,不是按照占用空间计算的,如:

500GB的磁盘,格式化为xfs后,可以使用的inode数量约 2.6亿; 那么1GB的磁盘格式化为xfs后,可用inode数量为 2.6亿/500 ~= 50万吗?测试如下:

确实,1GB默认可以存放约52万个文件,注意: 目录也是占用inode的,而且也不可能把所有文件都放在一个目录的,所以真正计算inode的话,还需要把目录的数量算上。

另外,xfs是个比较智能的文件系统,没有固定大小的inode区域,随着磁盘的使用,inode的总数量也在变化,基本不会出现inode已用光,但是存储空间很空闲很多的情况。

6、节点inode 使用率

每个文件都必须有一个 inode,用于储存文件的元信息,比如文件的创建者、创建日期,inode 也会消耗硬盘空间,大量的 cache 小文件也容易导致 inode 资源被使用耗尽。并且,有可能发生 inode 已经用光,但是硬盘还未存满的情况,此时就无法在硬盘上创建新文件。

而 inode 使用率的监控恰好就可以预先发现上述提到的这类情况,帮助用户知道集群 inode 的使用情况,防止因 inode 耗尽使得集群无法正常工作,提示用户及时清理临时文件。

7、总结

linux系统内部不使用文件名,而使用inode号码来识别文件,对于系统来说,文件名只是inode号码便于识别的别称,在我们的操作系统中表面上是通过文件名打开文件的,实际上分为以下三步:

  1. 查找文件名对应的inode号
  2. 通过inode号获取inode信息
  3. 根据inode信息,找到文件数据所在的block,读出数据

另外,目前使用大部分操作系统都是使用xfs文件系统,xfs比较智能,没有固定大小的inode区域,随着磁盘的使用,inode的总数量也在变化,基本不会出现inode已用光,但是存储空间很空闲很多的情况。

参考:https://www.likecs.com/show-204143370.html

参考:https://blog.csdn.net/m0_71518373/article/details/125798445

参考:https://phpor.net/blog/post/7379

参考:Linux 软链接和硬链接

标签:文件,使用,详解,硬盘,Linux,inode,节点,block
From: https://www.cnblogs.com/zhangmingcheng/p/16984922.html

相关文章

  • 解决双网卡虚拟机linux无法上外网的问题
    之前添加了一块网卡后,archlinux无法上外网了。也就是说只有一块NAT网卡时可以连接因特网,添加了另一块仅主机网卡后就无法上网了。一通查询之后才发现,是因为两块网卡都有......
  • linux扩容磁盘
    某天腾讯云的某台机器不能访问了,后面发现是磁盘满了写不了日志了,马上进行扩容。在扩容之后,发现磁盘空间还是没变。使用fdisk-l  发现磁盘空间有了,但是没有分......
  • Linux 查看CPU负载信息
    mpstat是MultiprocessorStatistics的缩写,是实时系统监控工具。mpstat最大的特点是:可以查看多核cpu中每个计算核心的统计数据;而类似工具vmstat只能查看系统整体cpu情况。......
  • compact 命令详解
    一直都没发现,原来Windows系统自带了一个文件压缩程序:compact.exe,这个程序位于系统的“Windows\system32”文件夹下,专门用来显示或改变NTFS分区上的文件的压缩状况。利......
  • Linux系统网络相关知识点
    云计算底层技术-虚拟网络设备(Bridge,VLAN,VxLan)https://www.cnblogs.com/janeysj/articles/10755246.html盘点Linux系统网络相关知识点https://zhuanlan.zhihu.com/p/5......
  • Linux服务器发包部署问题排查流程
    1IDEA中配置文件lineseparator分隔符格式CRLF、LF和CR这三种东西,CR是MAC老版本的做法,就是回车,但是后来的MAC系统统一换成LF了,LF是Linux下的做法,就是换行,这个做法比较自......
  • 【Linux】之如何卸载干净zabbix服务
    1、停止zabbix-serverzabbix-agenthttpdrh-php72-php-fpmsystemctlstopzabbix-serverzabbix-agenthttpdrh-php72-php-fpm 2、卸载zabbix服务2.1、查找zabbix......
  • 在linux下使用CMake构建应用程序
    本文介绍了一个跨平台的自动化构建系统CMake在linux上的使用方法。CMake是一个比automake更加容易使用的工具,能够使程序员从复杂的编译连接过程中解脱出来。文中通......
  • linux ethernet driver
    Referencehttps://www.cnblogs.com/YYFaGe/p/16289035.htmlhttps://www.kernel.org/doc/html/latest/driver-api/phy/phy.htmlhttps://simpleiot.blog.csdn.net/art......
  • Linux安装
    安装方式介绍物理机安装直接将操作系统安装到服务器硬件上虚拟机安装通过虚拟机软件安装补:虚拟机软件:虚拟机(VirtualMachine)指通过软件模拟的具有完整硬件系统功能......