Linux系统中的Inode节点表

索引节点是指在许多类Unix文件系统中的一种数据结构。每个索引节点保存了文件系统中的一个文件系统对象的元信息数据,但不包括数据内容或者文件名。

Inode

         首先需要明白的是,在Unix操作系统中的任何资源都被当作文件来管理。如目录、光驱、终端设备等等,都被当作是一种文件。从这方面来说,Unix操作系统中的所有的目录、硬件设备跟普通文件一样,具有共同的属性。而这些属性的话,就是保存在inode块中。

        Inode块中保存了一个文件系统中的全部Inode节点。也就是说,当系统创建了一个文件(或者添加了一个新设备)时,系统就会从这个块中给 这个文件分配一个Inode结点。在这个结点中存储了这个文件的大部分属性,如创建、修改时间等等。但是需要注意的是,有两个属性不包含在这个inode 结点中,分别为文件名与结点号。这主要是因为inode节点按顺序排列,所以系统内核就可以采用简单的算法,就可以得出inode节点号。

索引节点

  • inode(index node)表中包含文件系统所有文件列表
  • 一个节点 (索引节点)是在一个表项,包含有关文件的信息(元数据 ),包括:

                           文件类型,权限,UID,GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据

文件分为两部分:

  • 元数据:大小、权限、所有者atime、ctime、mtime……
  • 数据本身:文件的内容
  • 存放的位置不是集中存放的,文件的索引信息和数据本身是分开存放的。索引信息(元数据)和数据本身是分开存放的

图片1

inode表结构

图片2

节点表

有很多元数据的信息:Mode、Owner info、Size……

直接指针:直接指向数据的位置。(指向的位置就是数据块)

一个数据块的大小:4K = 4096字节

         有12个直接指针,能表示的空间总大小为:12个 * 每个4K = 48K

如果一个指针放不下数据的内容,就是用两个指针指向数据的位置,用来标识文件的位置

只要数据低于12*4K以内,都可以用直接指针找到(低于48K,用直接指针就可以找到);如果超过48k,就使用间接指针

间接指针:【一级指针】

间接指针直接指向的不是数据块,是一个指针块,不是存数据的地方,是一个指针块,通过指针块,指向数据块;指针块也是4k大小,里面记录了数据块的路径,每个数据块占用的指针块的空间是4个字节(也就是说数据块在什么位置要消耗4个字节俩描述)

指针块:4k 4096个字节,可以指向1024个数据块

                                    表示的空间总大小为:

间接指针1  *  指针块4K大小指向的1024个数据块 (每个数据块的位置用4个字                                                 节表示) *  每个数据块的大小4K = 4M

二级指针:【间接指针的间接指针】

 二级指针 —->  指向间接指针(2),间接指针在指向另外一个指针表(3),通过另外一个指针表(3)指向数据的位置。

每个指针块同样是4k大小,指向的三级指针块同样占用4个字节表示

总大小为:

三级指针1个*二级指针快1个表示1024个三级指针 * 3级指针1024个,指向 1024个数据块                                 1*1024*1024*4K=4G

 

指针大小计算

1.前12个直接指针,直接指向内存存储的数据区域1.前12个直接指针,直接指向内存存储的数据区域 如Books大小为4096,则前12个直解指针可以保存48KB的文件。

2.一级指针可存储文件大小计算 保存每个指针,估计占4个字节,则以及指针指向的Block可保存4096/4个指针可以指向1024个 Block块,一级指针可存储文件数量大小为1024个指针指向的数据块*每个数据块4096K=4M

3.二级指针可存储文件大小计算 同样按照数据块(Black)大小为4096,则二级指针可保存的数据块指针数量为(4096/4)*(4096/4)= 1024 * 1024,则二级指针可保存的文件数量的大小为(1024*1024)*4096K=4GB

4.三级指针可存储文文件大小计算 以一级、二级指针计算方法类推,三级指针可存储的文件数据大小为(1024*1024*1024)*4096K=4TB

无标题

 

 

EXT4表示的数据可以超过4T的空间,每个指针的路径占4个字节,一个字节是8位,4个字节32位,2的32次方个字节就是4T

 

EXT4在存放数据的时候,指针的数据块占用的是48位(6个字节),48位就是2的48次方个字节,也就是:281474976710656字节=256T

 

1K=1024字节

1M=1024K

1G=1024M

1T=1024G

 

查看节点号:

[root@localhost ~]# ll -i

total 8

100663362 -rw——-. 1 root root 1908 Nov  7 16:15 anaconda-ks.cfg

100663373 -rw-r–r–. 1 root root 1939 Nov  7 16:23 initial-setup-ks.cfg

 

[root@localhost ~]# df -i

Filesystem       Inodes  IUsed    IFree IUse% Mounted on

/dev/sda2      26214400 120596 26093804    1% /

devtmpfs         250313    398   249915    1% /dev

tmpfs            253989      1   253988    1% /dev/shm

tmpfs            253989    592   253397    1% /run

tmpfs            253989     16   253973    1% /sys/fs/cgroup

/dev/sda3      10485760      6 10485754    1% /app

/dev/sda1        524288    329   523959    1% /boot

tmpfs            253989     17   253972    1% /run/user/1000

/dev/sr0              0      0        0     – /run/media/ding/CentOS 7 x86_64

tmpfs            253989      1   253988    1% /run/user/0

节点编号会被重复利用,改文件名不会改变节点编号。在一个分区上节点编号是有范围的,每个文件消耗一个节点编号。节点编号用完就不能创建文件了

 

 

ps:部分内容来自百度百科

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88463

(1)
无言胜千言无言胜千言
上一篇 2017-11-16 13:50
下一篇 2017-11-16 19:22

相关推荐

  • 【26期】Linux第七周学习小总结

        今天给大家的分享是本周的一个有趣的小内容,LVM逻辑卷相关的,为什么分享这个内容呢?主要是刚没有接触或者说深入接触Linux时,有人在群里提问,如果不用虚拟机,那Centos本身有快照吗?当时说的答案很热闹,不过大部分还是倾向于没有快照,本周学习的逻辑卷管理器章节里,就这个问题给了一个准确答案,那我们一起来看一下吧!  …

    2017-08-26
  • N22-℡浮生.若夢 ╮第八周作业

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 集线器:集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离 网桥:是早期的两端口二层网络设备,用来连接不同网段。网桥的两个端口分别有一条独立的交换信道,       不是共享一条背板总线,可隔离冲突域…

    Linux干货 2016-11-28
  • Linux的学习之路-第一周

    >N21-Keen-第一周作业 ### 1. 计算机的组成及其原理     >计算机的组成是根据冯诺依曼体系设计的,主要分为五大部分:控制器、运算器、存储器、输入设备和输出设备。          >其中控制器和运算器分布在CPU上,主要用来做控制和运算作用。存储器也就是…

    Linux干货 2016-07-16
  • N21_第二周练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理类命令:cp,mv.rm 复制命令:cp 格式:        cp [OPTION]… [-T] SOURCE DEST        cp [OPTION]… SOU…

    Linux干货 2016-07-16
  • linux启动流程

    linux组成 Linux: kernel+rootfskernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能 rootfs:程序和glibc库:函数集合, function, 调用接口(头文件负责描述)过程调用:procedure,无返回值函数调用:function程序:二进制执行文件 内核设计流派:单内核(monolithic ker…

    2018-01-01
  • Linux基础之shell脚本编程(三)

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;   1 #!/bin/bash   2 #author:BaoZhang   3 #  …

    Linux干货 2016-11-20