文件系统是包括在存储设备或分区上的一种目录结构。通常情况下,一个可应用的存储设备可以包含一个或多个文件系统。通俗的说,一个文件系统是有组织存储文件或数据的方法,目的是易于操作系统查询和存取数据。现在常见的文件系统有FAT3、NTFS、Ext3和Reiserfs等等。不过不同的操作系统其支持的文件系统是不同的。以Linux为例,其主要支持Ext2、Ext3和Reiserfs等文件系统。
作为一个Linux系统工程师,必须了解各个文件系统的特点。然后在实际应用中根据应用场景来选择合适的文件系统。不同的文件系统有不同的特性,这种特性往往决定着在文件系统中文件和目录的属性。每个文件系统都有一系列的工具,包括创建、修复、备份等。值得一说的是大多文件系统都有自我修复工具。在您的文件系统意外出现损害的情况下,采用文件系统自带的修复功能修复等等。笔者在这篇文章中将简要介绍一下Ext3和Reiserfs 文件系统的特点,并对他们的优劣做一定的分析。希望这可以帮助大家消除在文件系统选择时的迷惑。
一、 Ext3 文件系统。
Ext2文件系统应该说是Linux正宗的文件系统,早期的Linux都是用ext2。但随着技术的发展,大多Linux的发行版本目前并不用这个文件系统了,而大多都建议用ext3文件系统。Ext3文件系统是由ext2发展而来的。在Linux所用的Ext3文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个文件还有一个节点。节点中包含有文件所有者、读写权限、文件类型等有用信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。如果文件大于12个块,那么节点在12个块号之后存储一个间接块的块号。在这个间接块号所对应的块中,存储有256个文件数据块的块号。如果有更大的文件,那么还会在节点中出现二级间接块和三级间接块。所以Ext3文件系统中是支持大文件的。不过不支持反删除操作。
二、 Reiserfs 文件系统。
Reiserfs 文件系统是一款优秀的文件系统,它支持大文件,而且还支持反删除操作。他也是一个比较老的文件系统。但是他并没有像Ext2文件系统那样被抛弃。现在这个文件系统应用的仍然很广泛,很有生命力。这主要是因为这个文件系统有比较出色的表现。
如这个文件系统有比较高级的日志管理机制。它的日志管理机制制保证了在每个实际数据修改之前,相应的日志已经写入硬盘。如此的话,文件与数据的安全性有了很大提高。如在这种文件系统下,磁盘的利用率是很高的。Reiserfs文件系统对一些小文件并不分配inode。而是将这些文件打包,存放在同一个磁盘分块中。而其它文件系统则为每个小文件分别放置到一个磁盘分块中。这也就是说,如果有20000个小文件,就要占用20000个分块。这很浪费磁盘空间。在这一点上比NTFS文件系统设计的还要好。而且,其还支持海量的硬盘。ReiserFS文件系统可轻松管理上百G的文件,最大支持的文件系统尺寸为16TB。为此在一些大型的Linux服务器中,这个文件系统是首选。
另外,Reiserfs文件系统在性能上也有比较杰出的表现。如文件定位非常的快。Reiserfs文件系统基于快速平衡树搜索。平衡树在性能上非常卓越,这是一种非常高效的检索算法。Reiserfs文件系统在大量文件中搜索文件时,搜索速度要比其他文件系统快得多。Reiserfs文件系统使用B*Tree存储文件,而其它文件系统使用B+Tree树。B*Tree查询速度比B+Tree要快很多。故Reiserfs文件系统在文件定位上速度非常快。 其性能的优越还表现在其存储上。Reiserfs文件系统,它的数据非常高效、快速,甚至小文件硬盘输入输出。使用Reiserfs文件系统的计算机,在启动X窗口系统时,所花的时间要比在同一台机器上使用其他文件系统少很多。
三、 自动修复能力的比较。
Ext3和Reiserfs 文件系统都能够自动修复损坏的文件系统。他们的共同点是都会在开机的时候检测文件系统,若有损坏的话会自动恢复。其实,其他文件系统,如Ext2 或者FAT32等文件系统也都支持这个功能。不过他们性能上有所差异。一般来说,Reiserfs 文件系统要比其他的文件系统表现要好。
如对于Ext3 文件系统,有时候管理员不得不手工采用fsck命令来进行文件系统的修复。如当一开机系统管理员就选择单用户模式并且把这个系统放进lost+found目录。此时如果系统管理员要恢复文件系统的话,则必须要手工采用fsck文件系统修复命令。但是这个文件系统修复命令存在着一定的管理风险。如在修复过程中如果出现意外关机或者断电,那么很可能会导致一些莫名其妙的问题。另外ext3文件系统还有一些备份的超级块。系统管理员可以尝试用备份的超级块加载 ext3 文件系统和修复 ext3 文件系统。这个操作虽然比较复杂,但是在实际工作中却非常有用。以后若有机会,笔者会详细介绍一下如何利用备份的超级块来恢复这个文件系统。
Reiserfs 文件系统也能自动修复损坏的文件系统。但是他相对来说比较容易操作一点。这个文件系统在自动检测和修复损坏的文件系统上具有很强的功能。如修复速度上比ext3文件系统要快的多。另外Reiserfs 文件系统对于意外断电的情况也能够很好的处理。如笔者做过一个简单的测试,两台同样的机器,安装了同样的Linux操作系统。只是他们所采用的文件系统不一样。但是在Ext3文件系统下,如果采用直接拔掉电源关机,然后再重新启动的话,大部分情况需要手工采用fsck 命令来恢复文件系统。但是如果采用Reiserfs 文件系统的话,则基本不用fsck命令就可以自动修复文件系统。
四、 Ext3不支此反删除操作,安全性相对来说高一点。
年轻人犯错误,上帝也会原谅。可惜的某些却不是上帝。如一旦我们删除文件同时清空回收站之后,就再也无法恢复被删除的文件了。这对于像笔者这样以安装、删除、试用软件为娱乐的人来说实在是一大打击。不过从另外一个角度讲,如果被删除的文件仍然可以挽救的回来的话,那就会涉及到安全问题。故如果从安全来考虑,可以支持反删除的文件系统,反而对安全来说是不利的。
而reiserfs文件系统支持反删除操作。如果企业安全级别比较高,则很可能意味着不安全。因为即使用户删除了文件,并且清空了回收站,但是系统管理员仍然可以通过采用一些反删除工具来恢复删除了的文件。为此这可能会泄露企业的机密信息。而Ext3文件系统不支持反删除操作。在ext3文件系统下,一旦用户删除某个机密文件,则是不可恢复的。虽然也有人说可以在Ext3 文件系统下恢复被删除的文家,但是据笔者了解,成功的可能性并不多。故如果从文件的安全性来考虑,还是采用Ext3文件系统为好。
五、 文件系统建立与维护。
硬盘的格式化就是存储设备建立文件系统的过程。一般的情况下,每个类型的操作系统都有这方面的工具,也有多功能的第三方工具,比如PQ软件。不过笔者建议系统管理员最好利用操作系统自带的工具来初始化分区,也就是建立文件系统。如在Linux操作系统中就带有mkfs工具。它可以帮助系统管理员建立文件系统。
另外,我们还可以利用第三方工具如PQ软件,先对硬盘进行分区。然后再利用操作系统自带的格式化工具进行格式化。为了系统的稳定性考虑,笔者强烈建议在安装Linux系统时无论有没有格式化化好了的文件系统,最好利用Linux系统自带的格式化工具再重新格式化一遍。