大话EXT4文件系统之四:神奇的标签

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

上回我们说到,蛋蛋从标签表中看到了一个标签inode的内容,inode里面包含的东西除了那些,还有个更重要的就是货物的位置:到底放哪些盒子里面?

  要知道Linux市的货物是用字节组成的长串,有的只占了一个盒子,有的占了多个盒子,甚至成千上万个盒子,而标签表只留了60个字节保存查找信息,根本放不下那么多盒子的位置信息,那么到底该怎么办?我们来看看聪明的饿想她超市怎么解决这个查找的难题。

三级映射

俗话说,有钱能使鬼推磨,为了降低成本,给顾客提供更大的便利,饿想她超市的老板命令工程师赶快解决上面这个问题,搞定了工资翻番,否则卷铺盖走人。工程师老蛋刚刚开始Linux的码农生涯,就接了这么个活,站在自己家的大树底下冥思苦想,想了几天几夜,还是没有头绪。一气之下,他一头撞在树皮上,心想自己要跟月亮上的吴刚一样,一辈子要跟这棵树为伴了。唉,树啊!哎,树!哈哈哈哈!大树底下传来了老蛋的四声大笑:我终于明白了,在这个60个字节里面可以用三级映射来存放货物的地址,就跟树的枝干一样,一级级细分。

 

如下图,开始是头几个数据盒子的位置,对那种小货物足够了。后面是一级映射表的盒子位置,找到这个盒子就能找到所有的1024个数据盒子,因为里面放了1024个盒子的位置。如果还不够,那么就用后面的二级映射,里面是所有一级映射的位置,从一级映射的盒子里面再找到所有的数据盒子位置,这样就是1024*1024个盒子了。尼玛,还不够,嘿嘿,后面还有三级映射,总共包含1024*1024*1024个数据盒子的位置。

 

28989651_1376493732tfez

 

扩展树:真正的树

 

老蛋得到了饿想她超市创始老板的嘉奖,成了公司技术骨干。但是,后来超市创始老板退休,少老板接班,新官上任三把火,决定建设一个更厉害的第四家分店ext4。他年轻有为,找到老蛋说:蛋仔,你这个三级映射太麻烦了,位置都是固定死的,修改什么的太麻烦,而且如果盒子都是连续放置的,还得在映射里面一条条保存他们的位置,一点都不高效,太浪费空间了。回去给我弄个更好的办法,完不成提头来见!

 

老蛋觉得自己受到了侮辱,成名作被一个小年轻贬的一文不值,忍着内心的悲愤回到家,跟老婆说自己都想跳槽了。老婆听了,瞪了他一眼:没本事整更牛的,躲开算什么男人。老蛋一想,脑子也转过来了,于是又来到熟悉的大树下,想啊想,还是没办法。突然,他想,瞅瞅大树肯定有办法,一抬头,心中顿时豁然开朗:树啊树,又是你帮了我,不禁老泪纵横~

 

老蛋这次设计了一棵真正的大树来放货物的地址。如下图,树有一个根节点,后面有很多子节点,每个节点都有一个header,header后面的数据有两种类型,第一种是索引,就是树枝的位置,第二种是叶子,放数据盒子的位置。这样一级级就可以查到,而且数据节点表示的是一串连续盒子的开头位置和数量,而不用全都一个个列出来。老蛋再次得到了少庄主的嘉奖,他得意地回家对老婆说:每一个成功的男人背后都有一个不认输的女人!

 

节点头

树枝内容,指向更细的树枝

叶子内容

 

引用

https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout http://www.datarecoverytools.co.uk/2009/11/16/learn-more-about-ext4/ http://blog.chinaunix.net/uid-26430381-id-4559492.html

 

想要每天看一条SSD文章吗?扫一扫,微信关注我们!或者微信搜索公众号ssdfans关注。

 

11

分类目录 存储, 技术文章.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。