inode小结

inode是啥玩意:

当第一次使用磁盘,把磁盘分区并格式化的时候,整个分区会被划分为两个部分:

即inode区和data block(实际数据块)

这个inode即是(目录、档案)文件在一个文件系统中的唯一标识,需要访问这个文件的时候必须先找到并读取这个文件的 inode。

Inode 里面存储了文件的很多重要参数,其中唯一标识称作 Inumber,

其他信息还有创建时间(ctime)、修改时间(mtime) 、

文件大小、属主、归属的用户组、读写权限、数据所在block号等信息,

具体来看可以分为:

inode包含文件的元信息,具体来说有以下内容:

  * 文件的字节数

  * 文件拥有者的User ID

  * 文件的Group ID

  * 文件的读、写、执行权限

  * 文件的时间戳,共有三个:ctime指inode上一次变动的时间(c=),mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  * 链接数,即有多少文件名指向这个inode

  * 文件数据block的位置

(扩展:atime mtime ctime 含义

文件的 Access time,atime 是在读取文件或者执行文件时更改的。
文件的 Modified time,mtime 是在写入文件时随文件内容的更改而更改的。
文件的 Create time,ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。 )

文件系统一开始就将inode与block规划好了,除非重新格式化,否则inode和block固定后就不会在发生变化。

每个inode与block都与自己的编号,inode就是记录档案的属性,一个档案占用一个inode,

同时记录此档案数据所在的block码。block则是实际记录档案的内容,若档案过大则会占用多个block。

由于每个inode与block都有自己的编号,而每个文件都会占用inode,inode内有数据 block的位置,因此可以制动啊,如果能够找到文件的inode,就可以找到文件所放置数据的block号码,也就能够找到文件的时间数据所在了。所以inode就有指针的作用,而在inode结构中,并不是只有一种指针,而是有多种。

在inode表中将第1 - 12块指针当作直接块指针,由于一个指针只能指向一个block块,所以如一个block块有4K的存储空间,那么使用直接块指针的文件最大不能超过48K,这时就需要用到间接块指针,或双重间接块指针,或三重间接块指针。

直接块指针

直接块指针就是inode中直接记录了block块的号码,直接指向block块,

假如一个文件的属性与权限数据放置在inode4号,而这个inode记录了档案数据的实际位置放置点位2,7,13,15这四个block号码,此时操作系统可以据此来排列磁盘的阅读顺序,可以直接将四个block的内容读出来,数据的读取如下图所示

间接块指针

间接块指针,其实和直接块指针大同小异,他们都是指针,只是直接块指针式直接指向的block块存储的是文件的数据,而间接块指针是将指向的block块继续当作指针块使用,所以间接指针指向的block块存储的是指针信息,它将继续指向下一个block块中存储的文件数据。

双重间接块指针

理解了间接指针块,那么双重间接指针块就容易理解了,它是在间接指针块的基础上将第二次指向的block块也当作指针使用,这样就可以指向更的的block块。

三重间接块指针

三重间接块指针的道理就和双重的道理一样了,只是把第三次指向的block块也当作指针块当作指针使用,这样就可以执行跟过的block块。

前面已经提到使用直接块指针的文件最大不能超过48K,假定一个指针块需要4个字节,一个block块有4K的存储空间,那么一个block块就可以存储1024个指针块,所以间接块指针的文件最大就可以存储1024*4K=4M的文件,以此类推使用双重间接块指针的文件最大存储空间就有1024*1024*4K=4G,使用三重间接块指针的文件最大存储空间就可以达到1024*1024*1024*4K=4T。

inode表结构如图所示:

总的来说,文件就有两部份组成:

1、元数据:inode table(索引节点表)

2、数据内容:数据块(block)

目录文件:

普通文件是由indoe+block构成,

在linux下目录也是一种文件,那么目录文件又是什么结构呢,

目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录项,由两部分组成:

1,所包含文件的文件名,

2,以及该文件名对应的inode号码。

通过目录项找到目录下文件的inode信息,然后就可以找到文件的block块及数据信息

如图所示:

在文件系统中用户可以使用df命令查看每个磁盘分区的inode总数和已使用的数量,

命令:df -i

我们可能遇到一种情况:

虽然磁盘显示仍有可用空间,但使用时却提示空间不足:

产生这个问题,可能就是因为inode也占用一定的磁盘空间,但此时inode用完的所有inode空间, 那么即使磁盘仍有存储空间也无法使用!

时间: 2024-12-22 12:52:34

inode小结的相关文章

文件系统inode与block

ls -lhi: -i:inode索引节点编号,它是文件或目录,在磁盘里的唯一标识,Linux读取文件或者目录首先要读取到这个索引节点. 查看根分区inode大小:(inode大点可以存放更多的属性) [[email protected] ~]# dumpe2fs /dev/sda3|grep -i "Inode size" dumpe2fs 1.41.12 (17-May-2010) Inode size:               256 [[email protected] ~

简单总结iNode和block知识

iNode:索引节点(index node) iNode是用来存储数据属性信息的,iNode包含的属性包括:文件大小.属组.归属的用户组.读写权限.文件类型.修改时间.还包括指向文件实体的指针功能(iNode节点和block的对应关系),但是,iNode不包括文件名. Block 是用来存储实际数据的. 理解:可以把iNode理解为一本书的目录,block理解为书的每一页. iNode小结: 1)磁盘分区格式化为ext4文件系统后会生成一定数量的iNode和block 2)iNode是索引节点,

Linux基础系列(三)Linux系统文件和目录重要知识

详细解释图: 第一列 Inode详解 第二列 文件类型及权限 第三列 硬链接数 第四五列 属主及所归属得组 第六列 文件或目录的大小 第七八九列 最近修改时间 第十列 文件或目录名字 inode详解 block是用来存储实际数据 inode用来存储文件属性 inode不包含文件名 文件在上一级目录的block里 block小结 磁盘读取数据是按Block为单位读取的. 一个文件可能占用多个Block.每读取一个Block就会消耗一次磁盘I/O. 如果要提升磁盘I/O性能,那么就要尽可能一次性读取

linux 文件或目录的权限和属性

1.windows 和linux文件类型的区别 windows 里是通过扩展名来区分文件类型的:linux里文件扩展名和文件类型没有关系,为了容易区分和箭筒用户使用的windows的习惯,我们也会用扩展名来表示linux文件类型,linux 系统中,一切皆文件. 2.linux系统查看文件类型 [[email protected] ~]# ls  -l 总用量 72556 -rw-------. 1 root root     1104 7月   6 00:51 anaconda-ks.cfg

linux运维、架构之路-linux文件属性

1.查看文件属性 ls -lhi 文件属性详细说明 1. 第一列: inode索引节点编号 2. 第二列:文件类型及权限 3. 第三列:硬链接数 4. 第四列:文件或目录所属的用户,即文件的所有者 5. 第五列:文件或目录所属的组. 6. 第六列:文件或目录的大小. 7. 第七.八.九列:文件或目录的修改时间 2.inode小结 磁盘被分区并格式化为ext4文件系统会生成一定数量的inode和block.inode被称为索引节点,它的作用是存放文件的属性信息及作为文件内容的索引(指向实体bloc

系统运维必会知识点

1 删除文件的原理 文件删除:需要具备以下两个条件同时具备才生效 1 受文件的硬连接控制,有一个硬连接i_link+1,减少一个硬连接,i_link-1,当i_link=0时,文件就被删了 列:创建文件i_link=1,为这个文件创建一个硬连接,i_link=2,删除一个硬连接,i_link-1,删除源文件i_link=0了 2 受进程占用控制,当有进程使用这个文件时,有一个进程占用这个文件i_count+1,即i_count=1.当减少一个进程占用i_count-1,即i_count=0,当没

【命令小结】df&du&fsck&dumpe2fs

一.df命令 1.用途:显示磁盘分区的资源占用情况. 2.语法: df [-ahiklm] 分区,其中: -a 全部文件系统列表(将内存中运行的进程也列出来) -h 方便阅读方式显示 -i 显示inode信息 -k 区块以KB字节显示 -l 只显示本地文件系统 -m 区块以MB字节显示 3.重点:df可以用来查看分区占用的资源情况,显示的结果不仅包括分区中的目录和文件,还包括系统后台执行的进程,因此更接近分区的实际使用情况. 二.du命令 1.用途:显示目录和文件大小,主要用于目录的大小查询,文

磁盘操作- inode/Block深入实战

一 思路: 1,磁盘物理结构及大小计算 2,分区 MBR GPT知识 3,fdisk分区 挂载 自动挂载 4,格式化文件系统 5,inode block 软硬链接 查看磁盘: [[email protected] dev]# ls sda sda sda1 sda2 sda3 二 MBR分区机制 512 446 66 ----- 64 分区模式 不能对已挂载的磁盘,进行操作. 只能读写数据. 如果想重新更改文件系统,--先卸载—然后修改fs 三 mount umount 四 inode bloc

Linux设备驱动之button按键驱动学习与小结

button按键驱动,相对于前面的LED驱动来说.增加了中断服务程序以及等待队列等新知识点. 先上学习的驱动代码. 内核:linux3.0 板子:fl2440 /********************************************************************************* * Copyright: (C) 2011 Guo Wenxue<[email protected]> * All rights reserved. * * Filenam