暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux之inode介绍

运维DevOps 2023-07-30
67

Linux操作系统中的文件数据除了内容之外,还有非常多的属性,比如文件权限,创建者,文件属性等。文件系统一般会将这两部分内容区分为inode和block中。

block:

Linux一切皆文件,文件都是存储在硬盘上,硬盘的最小存储单位叫做扇区,每个扇区存储512字节(约为0.5kb)。操作系统读取硬盘时,并不是逐个扇区读取,这样效率很低,而是一次性同时读取多个扇区,即一次性读取一个块block。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个block。

inode:

Linux文件数据存储在块中,那文件的元信息也需要有地方存放,例如文件的创建者、创建日期、大小等。这种存储文件元信息的区域就叫做inode,也可以成为索引节点。因此,一个文件必须占用一个inode,但至少占用一个block。

inode包含很多的文件元信息,但不包含文件名,例如:字节数、属主UserID、属组GroupID、读写执行权限、时间戳等。而文件名存放在目录当中,但Linux系统内部不使用文件名,而是使用inode号码识别文件。对于系统来说文件名只是inode号码便于识别的别称。

用户通过文件名打开文件,实际上,系统内部将这个过程分为三步:

  • 系统找到这个文件名对应的inode号码

  • 通过inode号码,获取inode信息,看用户是否具有访问的权限,有就指向对应的数据block,没有就返回权限拒绝

  • 根据inode信息,找到文件数据所在的block,并读出数据



1、查看文件的inode信息,如图:

    stat filename or ls -li filename  # 两条命令都可以


    inode也会占用硬盘空间,因此系统格式化的时候,自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息。每个inode的大小,一般是128字节或256字节。一般我们不需要关注单个inode的大小,而是需要重点关注inode总数。inode总数在格式化的时候就确定了,并随着新建文件或者减少文件或者硬链接的变化而变化。

    2、df -i 查看硬盘分区的inode总数和已使用情况,如图:

    由于inode与文件名分离,因此Linux系统具备以下几种情况:

    (1)、文件名包含特殊字符,可能无法正常删除,如图:

    此时可以通过inode来删除此乱码文件,先查看inode信息,如图:

    通过如下命令删除两个乱码文件,如下:

      find  -inum 节点号 -delete 

      (2)、移动文件或重命名文件,只是改变文件名,不影响inode号码,如图:

      (3)、打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名

      inode 雨量不足:

      由于在系统分区的inode总数就已经固定,并且每个文件必须有一个inode,因此就有可能发生inode节点用光,但硬盘空间还剩不少,却无法创建新文件。此时就需要找出占用大量inode的文件,删除即可,或者硬链接数量过多也可以删除不需要的硬链接。

      文章转载自运维DevOps,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论