网上有关“为什么要引入索引分配方式?”话题很是火热,小编也是针对为什么要引入索引分配方式?寻找了一些与之相关的一些信息进行分析 ,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
索引节点,其英文为 Inode ,是 Index Node 的缩写 。索引节点是整个 Linux
文件系统的基础。存储于文件系统上的任何文件都可以用索引节点来表示。举一个例子来说,假设有一个老图书馆里面有一本登记簿,上面记录着馆内的书名及存放
位置 ,比如在哪一间的第几排存放着哪一本书,以及书的作者是谁 。在这里,记录着一本书的那一行就是索引节点。索引节点以同样的方式来存储对象 ,我们会在下
面学习。
在 Linux 系统中,文件系统主要分为两部分,一部分为元数据(metadata) ,另一部分为数据本身 。元数据,换句话说,就是“包含了与数据有关信息的数据”。索引节点就管理着文件系统中元数据的部分。
索引节点基础知识
如上所述,文件系统中的任何一个文件或目录都与一个索引节点相对应 。每个索引节点都是一个数据结构 ,存储着目标数据的如下信息:
文件大小(以字节为单位)
(存放文件的)设备标识符
(文件所有者的)用户标识符
用户组标识符
文件模式(所有者、用户组及其他人对于文件的读取有怎样的权限)
扩展属性(如 ACL)
文件读取或修改的时间戳
链接数量(指向该文件的硬链接数,记住,软链接不计算在内)
指向存储该内容的磁盘区块的指针
文件分类(是普通文件 、目录还是特殊区块设备)
文件占用的区块数量
Linux 文件系统从来不存储文件创建时间 ,许多人都不清楚这一点。
一个典型的索引数据看起来会是像下面这样:
# stat 01
Size:Blocks:1816IO Block:4096regular file
Device:803h/2051dInode:Links:1
Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)
Access:2012-09-0701:46:54.-0500
Modify:2012-04-2706:22:02.-0500
Change:2012-04-2706:22:02.-0500
索引节点是在何时并以怎样的方式创建的?
索引节点的创建与正在使用的文件系统有关。一些文件系统在创建时就创建了索引节点,故其索引节点的数量有限 。而一些如 JFS 和 XFS 等系统也在文件系统创建时创建索引节点,但使用动态节点分配 ,并按需扩大索引节点的数量,因此可以避免所有索引节点用完的情况。
当读取文件时都发生了什么?
当用户试图读取文件或与该文件相关的信息时,他会使用文件名称。但是 ,实质上这个文件名称首先映射为存储于目录表中的索引点节号码。通过该索引节点号码又读取到相对应的索引节点 。索引节点号码及相对应的索引节点存放于映射表(Inode table)中。
索引节点指针结构
上面已经解释过,索引节点只存储元数据信息,其中包括真正的数据存储的区块的信息。下面就来解释一下索引节点指针结构 。
如这篇维基百科上面的文章解释的那样 ,这个结构可能会有 11 到 13 个指针,但大多数文件系统会以 15 个指针的形式来存储数据结构。这 15 个指针包括:
直接指向文件数据区块的 12 个指针,称为直接指针(direct pointer)。
一个单独非直接指针(singly indirect pointer),指向一个由多个指针构成的区块 ,后者的指针又指向文件数据区块 。
一个双重非直接指针(doubly indirect pointer),指向一个由多个指针构成的区块,后者的指针又指向一个由多个指针构成的区块 ,这一区块的指针又指向文件数据的区块。
一个三重非直接指针(triply indirect pointer),指向一个由多个指针构成的区块,后者的指针又指向一个由多个指针构成的区块 ,其指针又指向另一个由多个指针构成的区块,这一区块的指针又指向文件数据的区块。
关于“为什么要引入索引分配方式? ”这个话题的介绍,今天小编就给大家分享完了 ,如果对你有所帮助请保持对本站的关注!
本文来自作者[许昕彤]投稿,不代表格瑞号立场,如若转载,请注明出处:https://gree0731.com/ig/18038.html
评论列表(4条)
我是格瑞号的签约作者“许昕彤”!
希望本篇文章《为什么要引入索引分配方式?》能对你有所帮助!
本站[格瑞号]内容主要涵盖:生活百科,小常识,生活小窍门,知识分享
本文概览:网上有关“为什么要引入索引分配方式?”话题很是火热,小编也是针对为什么要引入索引分配方式?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您...