详细介绍了Linux文件系统的inode节点
1。点是什么
理解inode,开始与文件存储。
该文件存储在硬盘和硬盘的最小存储单位称为部门。每个扇区存储在512字节(相当于0.5kb)。
当操作系统读取硬盘时,它不会读取一个扇区,因此效率太低。相反,它是在一个连续的多个部门,这是读一个块(块)一次。这块的块最常见的大小是4KB,其中包括八个连续的扇区组成一个块。
文件数据存储在块中。显然,我们必须找到一个地方来存储元数据信息,如文件的创造者,对文件的创建日期,文件的大小等。存储文件的元信息的区域叫做inode,和中文翻译称为索引节点。
二、inode的内容
inode包含文件的元信息,具体如下:
复制代码如下:*文件的字节数
*文件所有者的用户ID
*文件的组ID
*文件读取、写入和执行权限
*有三种方式:ctime文件时间戳是指时间上的变化和时间的模式,指的是对文件内容的更改时间。时间是指开放时间文件。
*链接,数量是多少文件指向这个inode
*文件数据块的位置
你可以使用STAT命令查看文件的inode信息:
复制代码代码如下:统计example.txt
总之,所有的文件信息,除了文件名中存在的节点。至于为什么没有文件名,下面将详细解释。
三、inode的大小
inode也占用硬盘空间,所以当格式化硬盘,操作系统自动将硬盘分成两个方面,一是数据区,文件数据存储;二是inode区(inode表),它存储在inode中包含的信息。
每个inode节点的大小通常是128字节或256字节,inode节点的总数是在格式化的时间,通常一个inode每约1kb每2KB。假设在一个1GB的硬盘,每个inode节点的大小是128字节,而一个inode是为每一1kb。Then the size of inode table will reach 128MB, which accounts for 12.8% of the total hard disk.
df命令可以用来查看inode的总数量和使用用于每个硬盘分区。
复制代码代码如下:DF I
看着每个inode节点的大小,可以使用以下命令:
复制代码如下:sudo dumpe2fs H / dev / HDA grep inode大小|
由于每个文件都必须有一个节点,它可能是inode被使用,但硬盘是不充分的。在这一点上,你不能创建硬盘上的一个新的文件。
四、信息点编号
每个节点都有一个号码,和操作系统使用一个inode号码来识别不同的文件。
这是值得在这里重复,Unix / Linux系统不使用系统内的文件名和用来识别文件的inode号码的系统,文件名是唯一的昵称或绰号,inode号码是容易识别。表面上,用户打开文件通过的文件的名称。事实上,系统内的过程分为三个步骤:首先,系统找到的文件名对应的信息点编号;其次,通过inode号码获取信息点的信息;最后,根据信息点的信息,我们发现那里的文件数据块地读出数据。
使用ls -i命令,你可以看到对应的文件名的索引节点号:
复制代码代码如下所示:
我example.txt LS
五。目录文件
在UNIX / Linux系统中,目录也是一种文件。打开目录,实际上打开目录文件。
目录文件的结构很简单,列出一系列的目录项(dirent)。每个目录项分为两部分:所包含的文件的文件名和对应的文件的名称的索引节点号。
ls命令只列出目录文件中的所有文件名:
复制代码代码如下:ls等
ls我命令列出整个目录下的文件,文件名和索引节点号:
复制代码代码如下:ls
如果你想查看文件的细节,你必须访问inode节点和读取信息基于inode号。LS l命令列出文件的详细信息。
复制代码代码如下:ls
六。硬链接
在一般情况下,文件名和索引节点号是一对一的关系,和每个inode号对应的文件名。然而,Unix / Linux系统允许多个文件名指向同一个inode号。这意味着你可以访问不同的文件名相同的内容。修改文件的内容将影响所有文件名。但是,删除文件名不会影响另一个文件名的访问。这称为硬链接。
LN命令可以创建硬链接:
源文件目标文件
运行此命令后,源文件是相同的目标文件的inode号和分到同一个inode,inode信息称为反过来链接数,删除一个文件名,减少链接数在inode节点1。当该值降低到0,这表明没有文件名指向inode,并将系统恢复的inode数量及其对应的块区。
在这里,顺便说一下,连接数的目录中的文件,创建一个目录时,两目录的默认生成:,和,。前者的inode号是当前目录的inode号码,这相当于硬的当前目录。后者的inode号是当前目录的父目录的inode号码,这相当于父目录的硬链接。因此,在任何目录硬链接的总数总是等于2加上它的子目录总数(包括隐藏目录),其中2是父目录的硬连接和当前目录下的硬链接。
七、软链接
除了硬链接,有一个特殊的情况下,A和B文件不同的文件的inode号,但该文件的内容是路径的文件当文件被读取,系统自动引导客人到文件B,因此,无论是哪个文件打开,最后看的是文件在这一点上,该文件被称为软连接(软链接)的文件或符号链接。
这意味着文件的依赖文件,如果文件B被删除,将错误的文件:没有这样的文件或目录。这是软链接和硬链接的最大区别:文件一点B文件的文件名,而不是文件B的inode号码,和B文件的inode的链接数不会改变。
复制代码代码如下:LN命令可以创建一个软链接。
源文件或目录目标文件或目录
八特殊作用,inode
由于inode号是从文件名分离,这种机制导致的一些Unix / Linux系统的独特现象。
1。有时,文件名包含特殊字符,无法正常删除。在这一点上,删除inode节点直接发挥作用,可以删除文件。
2。移动文件或重命名文件,只是改变文件名,不影响inode号。
三.打开文件后,系统识别文件的inode号码,不再考虑文件名。因此,一般情况下,系统无法从inode号学习文件的名称。
第三点是软件更新容易,可以更新没有关闭软件,无需重新启动,因为系统识别运行文件的inode数量,它不通过文件名。在更新的时候,该文件的新版本,具有相同的文件名,生成一个新的inode,不影响运行文件。等到下次运行本软件,文件名自动指向该文件的新版本,老版本的inode被收回。
九。实际问题
在低配置Linux服务器(内存、硬盘比较小)/数据分区中创建的文件,系统提示DF -h命令检查磁盘使用磁盘空间不足,发现 /数据分区只使用66% 12g,和剩余的空间,可以说是没有问题的。后来,DF -我看着索引节点(inode)的/分区中的数据,并发现它已经满了(我= 100%),导致系统无法创建新的目录和文件。
找到原因:
在/数据/缓存目录中存在大量微小的字节缓存文件,占用更少的块,但占用了大量的inode。
解uff1a
1、删除部分文件在/数据/缓存目录的 /数据分区的inode释放部分。
2、连接Newcache目录在空闲分区 /选择/数据通过软连接/缓存,并使用 /节点选择分区缓解inode /数据分区。
LN的 / / /选择Newcache数据/缓存