关于文件系统的介绍已经写了三篇,但才刚刚开始,其中的 [文件系统篇] 一定要阅读,用生活中的场景去解释计算机各模块设计的原理和运行机制是整个系列篇最大的特点,计算机文件系统相关概念是非常的多的,若不还原其本质,不跳出这些概念去看问题是很难理解它为什么要弄这么些东东出来让你头大. 反之,如果搞明白了这些概念背后的真相你想忘记它们都很难,问题是经不起追问的, 多追问几个为什么就会离本源越来越近.
前几篇中追问了以下几个问题:
- 对内核来说
inode真的是唯一的吗? 答案是否定的,使用电脑的经验告诉我们,当把电脑硬盘拆下来挂到其他电脑上时,里面的数据一样能访问,并没有让你一切重来,而inode是存放硬盘上的,你没有办法让已编好序号的inode按你的逻辑重排,这不合理更不科学. 所以结论是inode的全局唯一性不是不想做,而是压根臣妾做不到啊.inode唯一性仅限于某个文件系统的内部. - 经验还告诉我们硬盘可以有多个分区,每个分区可以被格式化成不同的文件系统.(例如:C盘:
NTF,D盘FAT32,E盘ext),数据可以相互拷贝,毫无障碍.不同的文件系统是如何实现文件迁移到呢 ? 具体实现细节是怎样的 ?
如果想明白了这些问题, 就能逆向倒推为什么要有目录,为什么需要挂载使用, 为什么需要根文件系统.一切将是水到渠成 .
先说目录,从内核视角看目录可不能像普通老百姓从用户视角去看,目录是为了屏蔽文件系统之间的差异而设计出来的概念,也就说必须在inode的局部唯一性之上存在一个全局唯一性才能解决统一性问题.目录从更大尺度上去兼容并蓄各文件系统.
那它是如何解决的呢?
- 首先各个文件系统记录了自己内部目录层级关系的,这个在 文件系统篇 | 目录项 中已经说过了. 这种关系是绝对的但也是相对的,绝对是对内,相对是对外. 例如:
A文件系统内部如下:
├─古龙系列 inode id : 789
│ ├─小李飞刀 inode id : 56
│ ├─楚留香 inode id : 342
│ └─陆小凤 inode id : 432
└─金庸系列 inode id : 5567
├─倚天屠龙记 inode id : 89
├─射雕英雄传 inode id : 1212
└─笑傲江湖 inode id : 567843
B文件系统内部如下:
├─席绢系列 : inode id : 87
│ ├─上错花轿嫁对郎 : inode id : 89
│ ├─吻上你的心 : inode id : 789
│ └─红袖招 : inode id : 56
└─琼瑶系列 : inode id : 321
├─在水一方 : inode id : 234
├─梅花三弄 : inode id : 5678
├─烟雨濛濛 : inode id : 987
└─还珠格格 : inode id : 23
其中789,89两个文件系统中都用到了,但它们在内部是唯一的.在A文件系统中通过 789 就能找到 56,342,432,并且能得到相对路径: 古龙系列/小李飞刀,古龙系列/楚留香 .也就是说拿着inode只要进入了本文件系统地盘,那都不叫事,事都能给你办的妥妥的. 那如何才能进入而且不会搞错呢?
挂载目录
答案就是: 挂载目

最低0.47元/天 解锁文章
525

被折叠的 条评论
为什么被折叠?



