导论:
linux的文件系统设计十分优秀,总的来讲有两大部份,第一部份就是树状的组织结构,第二部份就是vfs,树状的组织结构组织了文件系统的假象,用户很便捷的使用,而vfs是文件系统的实现机理,它处于内核态,不但实现了树状结构的mount机制,并且还提供了一个统一的插口拿来访问设备。
一、Linux文件系统概述
1、Linux文件系统组织
Linux中使用树来组织文件系统。整个文件系统构成了一颗树,这棵树以/为根。整个系统有且只有这一颗文件树。这棵树描述了文件系统的拓扑结构,没有任何文件系统的类型信息。
2、mount机制
linux使用mount机制扩充文件系统,使不同类型的文件系统可以挂载在系统的文件树的任何位置。mount机制使文件树有了类型属性,支持了不同类型的文件系统的挂载。
如图所示。
可以看见若果不考虑挂载点,整个文件系统就是一棵树,假如考虑了挂载点,这棵树原先是嫁接而成的,可以包含各类不同种类的文件系统。正如桥片扩充了总线一样,挂载点扩充了文件树,和扩充总线不同的是,任意目录都可以是挂载点,而且不是任意芯片都是可以作为桥的。(集线器/交换机扩充以太网也是一样的道理,和mount机制愈发类似一些,由于你只须要插入一个多端口网卡就可以作为一个集线器了。)
3、mount机制的益处
mount可以屏蔽文件系统的类型,所有类型的文件系统共享一棵树,并且实现却可以不相同。用户进程可以使用相同的系统调用插口访问所有的文件系统,而毋须在乎访问的文件是哪些类型的。mount机制使一棵文件树得以多元化,然而又可以向用户屏蔽这些多元化。这些多元化是通过vfs实现的。
4、单棵树组织+mount扩充
Linux的文件系统和c盘并不绑定,文件系统就是一棵树,是一个虚拟的概念,没有介质,没有容量,没有读写规则,只有在挂载(mount)发生的时侯,也就是具体的文件系统挂载的时侯linux 内核 引导 文件系统,某个挂载点才和介质构建联系,但是此时对于文件系统来讲一直没有容量的概念RAR FOR LINUX,容量仅仅是挂载于此目录的c盘设备的属性linux 内核 引导 文件系统,假如c盘空间满了,依旧可以通过在此c盘的一个目录上mount一个新的文件系统来解决,而新的文件系统在一块新的c盘上。
5、和Windows文件系统的对比
Windows显式的分离了各类文件系统,尽管Windows在操作插口上也汲取了Unix中“一切皆文件”的思想。在插口级别,windows也使用相同的API来访问各种文件,例如ReadFilelinux设置环境变量,WriteFile等,但是在操作级别,windows却没有实现一致性,在操作级别,windows的文件系统主要指以c盘为介质的文件系统,因而windows没有必要用一棵树包含所有的文件,而是区分成了各个c盘,但是这些方法有个隐忧,那就是不易扩充,由于单个c盘限制了容量,c盘直接和文件系统绑定。因而,Windows不以单棵树树来组织文件系统,windows很难用mount来扩充文件系统。