FC46 Linux实验室

出自Full Circle 中文项目主页

跳转到: 导航, 搜索

LINUX LAB


文件系统之一:主场优势

很久以前,最初的电子计算机只在大公司和政府部门使用。程序和数据只能直接加载到内存中,因为内存就是全部的存储空间。不过工程师们还是很聪明的,他们用打孔的卡片和纸带用来存储和输出,随后还出现了半英寸的磁带——这些都是串行存取的存储设备。

然后一些非常聪明的人发明了磁盘,一种可以在随机位置进行读写直接访问的存储设备(DASD),所以他们需要文件系统来组织数据和支持磁盘操作系统(DOS)。再往后几年就出现了个人计算机。在IBM需要一个文件系统和对其进行访问的方式时,出现了微软的磁盘操作系统。虽然它不是最早和唯一的DOS,但微软的DOS却是家用电脑中的主角——不管你喜不喜欢,当时你用的就是DOS。

又往后几年就有了使用开源软件的智能计算小组(就是我们了)。在大多数安装程序中都接受默认设置并使用默认文件系统。在行动起来之前你的首要问题是选择一个发行版。你会选择哪个呢?

亲爱的Diary……

更准确的说法应该是“亲爱的日志……”,大部分现代文件系统都有日志系统。它可以看作是低层次的活动日志。一个需要更新的文件会首先写入到日志中,进行记录,在准备好的时候对磁盘进行写操作,然后从日志中清除并取消记录。如果在计算机运行过程中出现任何情况打断这个过程——比如电源中断或者系统崩溃——当文件正在被写入到磁盘的过程中,文件系统中会记录所有未完成的操作。如果一切正常,这些操作就可以完成,如果不是的话,会有日志帮助进行文件恢复。

日志系统付出很小的磁盘/处理器占用来增加数据安全性。为了减小资源占用,一些文件系统不将所有文件内容写入到日志中,所以在日志规范中看到的就是对文件元数据、inode和磁盘位置的引用。

一些好的文件系统非常重要的特性包括完整的访问控制(比如根据你的学校划分权限和授权),别名和符号链接——对同一文件进行引用的多重指针。

Ext家族

我们现在能用到最新的是第四代ext。第一代的ext现在已经不存在了,你现在能看到还在使用最老的版本是ext2。ext2是非日志文件系统,所以在速度上就有优势,但安全性却不如它的继承者们。因为其对磁盘进行较少的写动作(擦除动作也较少),所以用在闪存上仍然是不错的选择——这些设备通常都有读写次数的限制。

ext3和ext4保持对ext2的向后兼容,同时增加了日志系统。他们都花费数年时间来提高性能和数据安全性,这就是为什么ext3最初就被用在大型数据库中,而不是服务器,而ext4最后简直就是一个全能选手。ext4相对ext3在性能上有很大的提升,包括更大的文件系统支持、更快的检查、纳秒级别的时间标记和包含校验的日志认证。ext4使用了叫做延迟写入的技术来减少文件碎片,这就意味着它可以用在闪存和固态磁盘(SSD)上,但是延迟写入却有丢失数据的风险。我在自己所有台式机、笔记本和外置磁盘上都使用ext4,相比ext2和ext3都有了不少的性能提升。ext4非常强壮并且高效,但是还是缺少一些高级特性——比如磁盘快照和高级可扩充性。下面介绍它的另外两个竞争者……

起起落落的ReiserFS

ReiserFS在2001年是一次彻底的飞跃,其中包括很多Ext都无法使用的特性。Reiser4完成了最初版本的很多特性并对其进行了很多改进。但是2004年以来的开发进展非常缓慢,并因为主要开发人员Hans Reiser的个人“法律问题”而陷入很大的困难。Reiser4在主流linux内核中并不受到支持。

据说,ReiserFS在需要进行很多小文件——意思就是日志和索引写入操作的系统中表现良好,例如数据库和邮件服务器。

越来越好的BTR-FS

BTR-FS——大家同意把这个读成‘better’而不是‘butter’吗?我不喜欢butter,我可不愿意将自己的文件放在一个可能融化的东西上面。BTR-FS代表B-tree File-System,最初是由Oracle开发的(开源软件迷们,看看他们的许可证吧)。和ReiserFS有类似的特性,在很多企业级的特性如存储池、在线快照、透明压缩和在线碎片整理上投入了很大力量。所有主要linux发行版都打算将其作为默认文件系统,不过现在你还不能将其用在boot分区上,只能用在数据分区,所以还没法单独使用。目前的评分显示在很多用途上只比ext4慢一点,但是依靠大型数据库提供商Oracle可以在以后几个版本进行改进。文档中说的非常清楚:现在还不适合用作跑分之外的其他用途。

Best of the rest

如果你想知道足够多的文件系统词汇,在Linux安装程序和磁盘工具中就有很多。

XFS,来自Silicon Graphics:跟ext很像,在大文件条件下性能较好;所以提供渲染和视频处理时表现很好,但在数据库和email就不大合适了。如果你需要保证数据吞吐量、在线伸缩大小、内建配额管理和对8EB(1024*1024TB)支持的文件系统的话,你可以在很多流行发行版中找到XFS作为安装选项。你可以设置系统使用不同大小的block使容量和速度的效率达到最大。

JFS,来自IBM:这种文件系统的资格很老了,但在以前的小设备和文件上的表现还是非常不错的。可以在比较老的硬件上找到JFS的身影。

ZFS,来自Sun Microsystems:可以将其看作是BtrFS的祖父,:)

SWAP Shop

Swap本身并不是文件系统。它是没有文件系统结构的虚拟内存,只能由内核使用将内存页面文件写入其中。当你的物理内存用光时它就是你的交换文件或者页面文件,在进行休眠时同样需要用到它。没有swap分区你甚至没法完成linux安装。

古老的文件系统是没有国界的

这就是本次的内容了,没怎么涉及技术内幕,只是介绍了一下常见的文件系统。如果你有精力的话,第二部分会介绍给你其他文件系统。但要是你想成为开放系统的大使或者交流使者,你需要了解其他文件系统……

个人工具