几种文件系统的原理与对比
 
一、              文件系统原理
1.         文件系统特点
文件系统具有以下特点:
1)        友好的用户接口,用户只对文件进行操作,而不管文件结构和存放的物理位置。
2)        对文件按名存取,对用户透明。
3)        某些文件可以被某个用户或进程所共享。
4)        文件系统大都使用磁盘、磁带、和光盘等大容量存储器作为介质,因此,可存储大量信息。
2.         文件系统软件组件
1)        与文件管理有关的软件;
2)        被管理的文件;
3)        实施文件管理的数据结构。
3.         逻辑文件结构2种形式
1)        无结构的流式;
2)        有结构的记录式文件。
4.         物理结构文件
1)        连续文件;
2)        索引文件;
3)        链接文件。
5.         文件系统提供的服务
1)        关于设置和修改用户对文件的存取权限的服务;
2)        关于建立健全、改变和删除目录的服务;
3)        关于文件共享、设置访问路径的服务;
4)        创建、打开、读写、关闭,以及撤消文件的服务。
 
 
 
 
二、              Minix文件系
 

引导块是计算机加电启动时可由ROMBIOS自动读入的执行代码和数据。但并非所有盘都用作引导设备,所以对于不用于引导的盘片,这一盘块中可以不含代码。但任何盘片必须要含有引导块空间,以保持MINIX文件系统格式的统一。如果内核文件放在文件系统中,那么就可以在文件系统所在的设备的第一个块(引导块空间)存放实际的引导程序,并由它来取得和加载文件系统中的内核映象文件。
超级块主要功能是给出文件系统各个部分的大小,其中包含描叙文件系统布局的信息,和引导块一样,超级块的大小也是固定的1024字节。如果给出块的大小和i节点数,我们可以很容易地算出i节点位图的大小和存放i节点所需的快数。
i
节点位图用于说明i节点是否被使用,每个位代表一个i节点,其中第0i节点为被使用。在内存的超级块表中,有一个字段直接指向第一个空闲的i节点,当新创建的文件需要i节点时,将第一个空闲节点分配出去,修改位图中相应的位,同时将指针指向下一个空闲节点。当一个节点被释放时,需要检查,看这个节点是否位于当前所指向的空闲节点的前面,若是则修改指针,然后将位图中对应的位清零。
区段位图用于说明区段的使用情况,同样是每个位代表一个区段,其中第0号区段未使用。区段是磁盘的一种基本分配单位,其大小和块的大小一样。使用区段的目的是,确保同一个文件的磁盘块位于同一个柱面上,从而提高文件顺序读取时的性能。区段的分配和释放跟i节点类似。
i
节点部分存放着文件系统中文件和目录名的索引节点,每个文件或目录名都有一个i节点。每个i节点结构中存放着对应文件的相关信息。
文件中的数据是存放在磁盘块的数据区中的,而一个文件名则通过对应的i节点与这些数据磁盘块相联系,这些盘块的号码就存放在i节点的逻辑块数组中。
另外,对于/dev/目录下的设备文件来说,它们并不占用磁盘数据区中的数据盘块,即它们的文件长度是0。设备文件名的i节点仅用于保存其所定义设备的属性和设备号。设备号被存放在设备文件i节点的逻辑块数组0中。
三、              Linux文件系统
1.         linux文件系统组成
1)        虚拟文件系统;
2)        实际文件系统。
2.         主要文件系统类型
1)        ext2:非日志文件系统;
2)        ext3:日志文件系统,metadata中记录文件更改信息。
3.         文件系统结构图
 
四、              Solaris/Open Solaris文件系统(128位,动态文件系统,1Z= 1T=1024G
 
 
           传统文件系统                           ZFS文件系统
五、              snapshot快照
1.         snapshot:在线快照,备份时不需要umount文件系统,不占用整个文件系统空间,根据实际占有量分配大小;
2.         fssnapUFSufsdumpufsrestore,备份时需要umount文件系统。
六、              ZFS多优秀的地方
被称作终极文件系统的ZFS,相比传统文件系统,有许多优秀的地方:
1.         以前,文件系统被局限于一个设备,因此文件系统自身会受到该设备大小的限制。由于存在大小限制,因此创建和重新创建传统文件系统很耗时,有时候还很难。由于 ZFS 文件系统不局限于特定设备,因此可以轻松、快捷地创建。在为存储池分配的空间内,ZFS 文件系统可以自动增长。
2.         ZFS 建立在池存储概念的基础上。与典型文件系统映射到物理存储器不同,池中的所有 ZFS 文件系统都共享该池中的可用存储器。因此,即使文件系统处于非活动状态,实用程序(例如 df)报告的可用空间也会发生变化,因为池中的其他文件系统会使用或释放空间。
3.       ZFS 中的所有元数据都是动态分配的。其他大部分文件系统都会预分配其大量元数据。ZFS 是事务性文件系统。大部分文件系统修改都捆绑到事务组中,并异步提交至磁盘,从而保证了数据的安全性和完整性。
4.         采用快照进行系统的备份和恢复。文件系统的快照开销很小,并且很容易在 ZFS 中创建。在大多数ZFS 环境中,快照很可能是通用的。
 
具体文档见附件