Linux文件系统和inode

学到linux上的软连接和硬链接,不得不了解inode,要想知道inode,不得不了解一些文件系统,至少是Linux文件系统

Linux文件系统

文件系统是什么

我的理解,文件系统类似现实中的档案管理,条理化的存储数据。它定义了磁盘上储存文件的方法和数据结构。
不同的人管理档案有不同的管理方法,那么相对于不同的系统格式有不同的存储办法,所以就有了不同的文件系统类型。什么ext2,ext3,ext4,xfs,NTFS,FAT等。但是不同人的管理方法有的领导不承认或者是不认识,那么领导就不能来按照他的管理方法来查找档案,就像不同的操作系统只认识特定的文件系统一样。要想让“领导”认识某些文件系统,则需要教会领导,那么这就涉及到更深层次的编译系统了。

inode是什么

inode又要扯到存储了,我们知道数据是保存在磁盘中的,磁盘上最小存储数据的是扇区,每个扇区一般都是可以存放512字节的数据。

那么如果数据大于512字节时候,磁盘需要不停地移动磁头来查找数据,我们知道一般地文件很容易超过512字节那么如果把多个扇区合并为一个块,那么磁盘就可以提高效率了,。那么磁头一次读取多个扇区就为一个块“block”(linux上称为块,Windows上称为簇)。

一个块多为4KB,因为块是文件系统层面上的概念,所以块也可以在格式化时候自行定义。

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

Linux文件系统工作原理初识

我们知道文件系统记录的数据,除了其自身外,还有数据的权限信息,所有者等属性,这些信息都保存在inode中,那么谁来记录inode信息和文件系统本身的信息呢,比如说文件系统的格式,inode与data的数量呢?那么就有一个超级区块(supper block)来记录这些信息了.

每个inode和block,都有编号。通俗讲

  • superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等
  • inode:记录文件的属性信息,可以使用stat命令查看inode信息。
  • block:实际文件的内容,如果一个文件大于一个块时候,那么将占用多个block,但是一个块只能存放一个文件。(因为数据是由inode指向的,如果有两个文件的数据存放在同一个块中,就会乱套了)

inode用来指向数据block,那么只要找到inode,再由inode找到block编号,那么实际数据就能找出来了。我来试着画一个简图


Linux文件系统格式化时候,格式化上面三个区域,supper block, inode 与 block 的区块,假设某一个数据的属性与权限数据是放置到 inode 5 号,而这个 inode 记录了档案数据的实际放置点为 3,4,10 这四个 block 号码,此时我们的操作系统就能够据此来寻找数据了。称为索引式文件系统。

Windows中的FAT文件系统就不是索引式文件系统,如下简图


引用自鸟哥

很明显,我们懂了每一个数据块都存放下一个数据块的索引,如上1>7>4>15。
但这就有了一个问题,如果文件系统中碎片太多,那么将大大降低数据的读取速度。虽然linux系统也会存在碎片化的问题,但由于是索引式文件系统,所以影响并不大,所以一般情况下windows需要经常进行碎片化整理,而linux很少需要进行整理,但是也可以写脚本进行整理,不过这都是那些高手们干的事情。

Inode

inode内容

可以使用stat命令进行查看

  • 文件的字节数
  • 文件拥有者的User ID
  • 文件的Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
  • 链接数,即有多少文件名指向这个inode
  • 文件数据block的位置
inode大小与数量

inode也会占用磁盘空间,大小一般为128k或256k.
inode 数量也可以使用mke2fs -N来进行指定,这在实际的生产中很有必要,比如说论坛系统,因为里面的文件很小,并且很多,很可能会出现inode先用完,而数据空间并没没有使用完。此时就需要根据经验,根据磁盘总空间来进行估算出inode的需求,最好在使用inode完的同时,block也使用完。

生产环境下如果inode不够使用了的缓解办法

如果/data 所在分区inode不够使用
1、删除/data/cache目录中的部分文件,释放出/data分区的一部分inode。
2、用软连接将其他分区目录连接到/data/cache,使用其他分区的inode来缓解/data分区inode不足的问题:
  ln -s /opt/newcache /data/cache

硬链接与软连接

说到inode,那么硬链接与软连接不用说我们就可以明白了其中的原理了,我就总结了点两者的不同吧。
(1).软硬链接实现的原理不同
硬链接是建立一个目录项,包含文件名和文件的inode,但inode是原来文件的inode号,并不建立其所对应得数据。所以硬链接并不占用inode。
软连接也创建一个目录项,也包含文件名和文件的inode,但它的inode指向的并不是原来文件名所指向的数据的inode,而是新建一个inode,并建立数据,数据指向的是原来文件名,所以原来文件名的字符数,即为软连接所占字节数

(2).软硬链接所能创建的目标有区别
因为每个分区各有一套不同的inode表,所以硬链接不能跨分区创建而软连接可以,因为软连接指向的书文件名。

(3).硬链接不能指向目录
如果说目录有硬链接那么可能引入死循环,但是你可能会疑问软连接也会陷入循环啊,答案当然不是,因为软连接是存在自己的数据的,可以查看自己的文件属性,既然可以判断出来软连接,那么自然不会陷入循环,并且系统在连续遇到8个符号连接后就停止遍历。但是硬链接可就不行了,因为他的inode号一致,所以就判断不出是硬链接,所以就会陷入死循环了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容