Linux下的主要文件系统 – yuxikuo

马上毕业了,工作是做海量数据存储的,所以学习学习文件系统!Go !

一、相关定义

1、文件系统:文件系统作为操作系统最为重要的一部分,其定义了磁盘上存储文件的方法和数据结构。文件系统将一个文件分为多个文件块,然后以文件块的方式将信息存储在磁盘上,一个文件块通常会占用一个或多个磁盘扇区。磁盘上存储的最小单位是扇区,以个扇区是512B,若遇到比较大的文件一次只读取512B的数据,其效率非常低。因而,文件系统设定其读取数据的最小单位是块,即文件块。为了管理这些文件块,以及各个文件块的编号,根据文件块编号找到磁盘存储文件的物理位置,最后根据要求进行读写操作。

2、Linux支持的主要文件系统:ext、ext2、ext3、ext4、reiserfs、vfs、iso9660、nfts、vfat、Xfs、NFS等。

二、详细介绍

1、ext2

ext出现在1992年4月,专门为Linux设计的文件系统。1993年ext2发布,并添加到了Linux的内核中。目前ext2也成了Linux的标准文件系统。

ext2文件系统是GNU/Linux系统中的文件系统,由Rey Card设计,其特点为存取文件的性能较好,它支持的最大容量可达16TB,文件名长度可达255字符。ext2文件系统是由逻辑块序列组成的,它把所使用的逻辑分区划分成块组,并从0开始依次编号。每个块组中包含若干数据块,数据块就是目录或文件的内容。块组中包含着几个用于管理和控制的信息块:超级块、组描述符表、块位图、inode位图、inode表和数据块。

超级块:它是记录整个文件系统相关信息的地方,它记录的信息主要有:块与inode的总量、未使用与已使用的inode/块数量、一个块与一个inode的大小、文件系统的载入时间、最近一次写入数据的时间、最近一次检验磁盘的时间等文件系统的相关、有效位数值,若此文件系统已被载入,则有效位为0,若未被载入,则有效位为1。

组描述符表:记录此块由何处开始记录。

块位图:此处记录块是否使用。

inode位图:此处记录inode是否使用。

inode表:为每个inode的数据存放区。

数据块:为每个块的数据存放区。

Linux默认的情况下,使用的文件系统是ext2.但是ext2文件系统是非日志文件系统。

2、ext3文件系统

ext3文件系统是直接从ext2文件系统发展而来。目前,ext3文件系统完全兼容ext2文件系统。ext3拥有如下特点:1)高可用性:系统使用了ext3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。死机后,恢复ext3文件系统的时间只要数十秒。2)数据的完整性:ext3文件系统有2种模式可供选择。其中之一就是“同时保持文件系统及数据的一致性”模式。3)文件系统的速度:使用ext3文件系统有时在存储数据时可能要多次写数据,但是ext3的日志功能对磁盘的驱动器读写头进行了优化,所以文件系统的性能较ext2文件系统来说,性能并未降低。4)数据转换:由ext2文件系统转换成ext3文件系统只要简单地输入两条命令即可完成整个转换过程,用户不用花时间备份、恢复、格式化分区等。用一个ext3文件系统提供的小工具tune2fs,它可以将ext2文件系统轻松转换为ext3的日志文件系统。另外,ext3的文件系统可以不经任何修改,而直接加载成为ext2文件系统。5)多种日志模式:ext3有多种日志模式,一种工作模式是对所有的文件数据及metadata(定义文件系统中数据的数据,即数据的数据)进行日志记录。另一种模式则只对metadata记录日志,而不对数据进行日志记录,也即所谓data=ordered或者data=writeback模式。

3、ext4文件系统:与ext3是向后兼容的,目前ext4并不是一个Linux操作系统的标准。其较ext3的改进点如下:1)与ext3向后和向前兼容性:ext4与ext3是向前兼容的,这样就可以将ext3文件系统挂在为ext4文件系统,用户还可以将ext4挂载为ext3,前提是ext4文件系统不能使用区段。2)提高了时间戳分辨率和扩展范围。ext4之前的扩展文件系统的时间戳都是以秒为单位的,而ext4的时间戳单位提升到纳秒。并且ext4给时间范围添加了两位,从而让时间寿命再延长500年。3)增强了伸缩性:ext4以多种方式实现了强大的伸缩性,它的伸缩性超越了ext3,并且在文件系统源数据管理方面开辟了新领域。4)开辟了文件系统的限制。ext4支持更大的文件系统、文件和子目录。ext4支持的最大文件系统为1EB,还支持16TB的文件。5)提高了可靠性。

4、reiserfs系统:1)先进的日志机制:日志机制保证了在每个实际数据修改之前,相应的日志已经写入了硬盘。2)高效的磁盘空间利用:reiserfs对一些小文件不分配inode,而是将这些文件打包,存放在同一个磁盘分块中。而其他文件系统则为每个小文件分别放置到一个磁盘分块中。3)独特的搜寻方式:reiserfs基于快速平衡树搜索。速度比ext2快得多。reiserfs在文件定位上速度非常快。在实际运用中,reiserfs在处理小于4KB的文件时,比ext2快5倍,带尾文件压缩功能的reiserfs比ext2文件系统多存储6%的数据。4)支持海量磁盘:reiserfs可以轻松管理上百GB的文件系统,最大支持的文件系统为16TB。5)优异的性能。

5、VFS系统:是Linux内核中的一个软件层,用于给用户空间的程序提供文件系统接口,屏蔽了文件系统的差别。在VFS管理下Linux能够读写各种不同的文件系统,实现这些文件系统之间的互相访问。每次系统初始化期间,Linux都会先在内存中构造一颗VFS的目录树,实际上便是在内存中建立相应的数据结构。VFS中的各目录主要用途是用来提供实际文件系统的挂载点。

6、iso9660文件系统:是一个由国际标准化组织(ISO)为光盘媒介发布的文件系统,其目标是能够在不同的操作系统上交换数据。此外它还有一些限制。略……

7、Vfat文件系统:它对fat16文件系统进行扩展。

8、Xfs文件系统:是SGI开发的高级日志文件系统:保证在宕机发生的情况下磁盘文件的数据完全性、采用优化算法实现快速查询与分配存储空间、支持上百万TB的存储空间、接近裸设备I/O的性能存储数据。

9、NFS文件系统:网络文件系统是一种在网络上的机器间共享文件的方法。可以通过网络,让不同操作系统的计算机共享数据。NFS文件服务器是 Linux最常见网络的服务器之一,NFS服务器可以看做是一个文件服务器,可以让你的PC机通过网络将远端的NFS服务器共享文件挂载到自己的系统中,在客户端使用NFS远端文件。

没有人会帮你一辈子,所以你要奋斗一生。

Linux下的主要文件系统 – yuxikuo

相关文章:

你感兴趣的文章:

标签云: