marlborolj 回复于:2003-05-27 15:36:11 |
在用ext3文件系统有时候会遇到这样的问题 机器突然断电,系统无法启动 提示错误 kernel panic 这时候可能是你的某个启动文件损坏,而导致系统无法启动。用单用户模式也无法进入系统 好像在reiserFS文件系统没遇见过这样的问题!! |
fancheng 回复于:2003-05-27 16:45:17 |
我使用REDHAT ADS2.1 操作系统,选用reiserFS 文件系统,但是好像次文件系统不支持2G以上的文件,听说只有SaSUjhjsg, 支持,不知道通过什么方式能支持次文件系统,谢谢! 如方便发邮件给我 fancheng! |
marlborolj 回复于:2003-05-27 17:10:26 |
2.4内核版本以上都应该支持ext3和reiserFS文件系统 能给我解释一下什么是“次文件系统” 这个名词比较陌生 这些文件系统至少能支持1T的文件 不过不是对rh ADS2.1 我是用其他的linux发行版本 |
弱智 回复于:2003-05-27 23:31:06 |
purge也想知道。 push~~~ |
marlborolj 回复于:2003-05-28 09:12:55 |
顶一下 “次文件系统”? |
bombax 回复于:2003-05-28 17:14:13 |
明显是误敲啦,应该是:“此”。 [quote:30e302883c="marlborolj"]顶一下 “次文件系统”?[/quote:30e302883c] |
弱智 回复于:2003-05-29 00:44:50 |
http://www.linuxworld.com/linuxworld/lw-2000-10/lw-10-penguin_4.html |
marlborolj 回复于:2003-05-29 09:22:01 |
可以借这篇文章谈论一下linux文件系统 例如 jfs reiserFS ext3 |
marlborolj 回复于:2003-05-29 09:26:50 |
zt IBMlinux技术中心 日志文件系统 (JFS) 提供了基于日志的字节级文件系统,该文件系统是为面向事务的高性能系统而开发的。它具有可伸缩性和健壮性,与非日志文件系统相比,它的优点是其快速重启能力:JFS 能够在几秒或几分钟内就把文件系统恢复到一致状态。 虽然 JFS 主要是为满足服务器(从单处理器系统到高级多处理器和群集系统)的高吞吐量和可靠性需求而设计的,JFS 还可用于想得到高性能和可靠性的客户机配置。 体系结构和设计 JFS 体系结构可从磁盘布局特性的角度进行说明。 逻辑卷 所有文件系统讨论的基础是某种类型的逻辑卷。这可以是一个物理磁盘,或物理磁盘空间的某个子集,例如:一个 FDISK 分区。逻辑卷也称为磁盘分区。 聚集和文件集 文件系统创建实用程序 mkfs,创建了完全包含在分区内的聚集。聚集是包含一种特定格式的磁盘块阵列,其格式包括超级块和分配映射表。超级块将分区标识成 JFS 聚集,而分配映射表描述聚集内每个数据块的分配状态。格式还包括描述它所必需的初始文件集和控制结构。文件集是可安装的实体。 文件、目录、inode 与寻址结构 文件集包含文件和目录。文件和目录由 inode 持续表示;每个 inode 描述文件或目录的属性,并作为查找磁盘上文件或目录数据的起始点。JFS 还使用 inode 来表示其它文件系统对象,如描述文件集中每个 inode 的分配状态和磁盘位置的映射表。 目录将用户特定的名称映射到为文件和目录所分配的 inode 上,并且形成传统的命名层次。文件包含用户数据,用户数据中没有隐含任何限制或格式。也就是说,JFS 将用户数据看成是未解释的字节流。根植于 inode 基于盘区的寻址结构用来将文件数据映射到磁盘。聚集超级块和磁盘分配映射表、文件描述符和 inode 映射表、inode、目录以及寻址结构一起表示了 JFS 控制结构或元数据。 日志 在每个聚集中维护 JFS 日志,并且用来记录元数据的操作信息。日志有一种同样由文件系统创建实用程序设置的格式。聚集内多个安装的文件集可以同时使用一个日志。 设计特性 JFS 从一开始就设计成完全集成了日志记录,而不是在现有文件系统上添加日志记录。JFS 的许多特性使之区别于其它文件系统。 日志处理 JFS 提供了改进的结构化一致性和可恢复性,以及比非日志文件系统(例如:HPFS、ext2 和传统 UNIX 文件系统)快得多的系统重启时间。发生系统故障时非日志文件系统容易崩溃,是由于一个逻辑写文件操作通常占用多个媒体 I/O 来完成,且在任何给定时间,可能没有完全反映在媒体上。这些文件系统依靠重启实用程序(也就是 fsck),fsck 检查文件系统的所有元数据(例如:目录和磁盘寻址结构)以检测和修复结构完整性问题。这是一个耗时并且容易出错的过程,在最糟糕的情况下,它还可能丢失或放错数据。 相反,JFS 使用原来为数据库开发的技术,记录了文件系统元数据上执行的操作(即原子事务)信息。如果发生系统故障,可通过重放日志并对适当的事务应用日志记录,来使文件系统恢复到一致状态。由于重放实用程序只需检查文件系统最近活动所产生的运行记录,而不是检查所有文件系统的元数据,因此,与这种基于日志的方法相关的文件系统恢复时间要快得多。 基于日志恢复的其它几个方面也值得注意。首先,JFS 只记录元数据上的操作,因此,重放这些日志只能恢复文件系统中结构关系和资源分配状态的一致性。它没有记录文件数据,也没有将这些数据恢复到一致状态。因此,恢复后某些文件数据可能丢失或失效,对数据一致性有关键性需求的用户应该使用同步 I/O。 面对媒体出错,日志记录不是特别有效。特别地,在将日志或元数据写入磁盘的期间发生的 I/O 错误,意味着在系统崩溃后,要将文件系统恢复到一致状态,需要耗时并且有可能强加的全面完整性检查。这暗示着,坏块重定位是任何驻留在 JFS 下的存储管理器或设备的一个关键特性。 JFS 日志记录的语义如下:当涉及元数据更改的文件系统操作--例如,unlink()--返回成功执行的返回码时,操作的结果已经提交到文件系统,即使系统崩溃了也可以发现。例如,一旦成功删除了文件,即使系统崩溃然后重启,它仍然是删除的并且不会再重新出现。 日志记录风格将同步写入日志磁盘引入每个修改元数据的 inode 或 vfs 操作。(对数据库专家而言,这是一种使用非剥夺缓冲区策略的仅重做的、物理残留映象、提前写的日志记录协议。)在性能方面,与依赖(多个)谨慎的同步元数据写操作以获得一致性的许多非日志文件系统相比,这种方法较好。但是,与其它日志文件系统相比,它在性能上处于劣势。其它日志文件系统,如 Veritas VxFS 和 Transarc Episode,使用不同的日志风格并且缓慢地将日志数据写入磁盘。在执行多个并行操作的服务器环境中,通过将多个同步写操作组合成单一写操作的组提交来减少这种性能损失。JFS 日志记录风格随着时间推移而得到不断改进,现在提供了异步日志记录,异步日志记录提高了文件系统的性能。 基于盘区的寻址结构 JFS 使用基于盘区的寻址结构,连同主动的块分配策略,产生紧凑、高效、可伸缩的结构,以将文件中的逻辑偏移量映射成磁盘上的物理地址。盘区是象一个单元那样分配给文件的相连块序列,可用一个由 <逻辑偏移量,长度,物理地址> 组成的三元组来描述。寻址结构是一棵 B+ 树,该树由盘区描述符(上面提到的三元组)填充,根在 inode 中,键为文件中的逻辑偏移量。 可变的块尺寸 按文件系统分,JFS 支持 512、1024、2048 和 4096 字节的块尺寸,以允许用户根据应用环境优化空间利用率。较小的块尺寸减少了文件和目录中内部存储碎片的数量,空间利用率更高。但是,小块可能会增加路径长度,与使用大的块尺寸相比,小块的块分配活动可能更频繁发生。因为服务器系统通常主要考虑的是性能,而不是空间利用率,所以缺省块尺寸为 4096 字节。 动态磁盘 inode 分配 JFS 按需为磁盘 inode 动态地分配空间,同时释放不再需要的空间。这一支持避开了在文件系统创建期间,为磁盘 inode 保留固定数量空间的传统方法,因此用户不再需要估计文件系统包含的文件和目录最大数目。另外,这一支持使磁盘 inode 与固定磁盘位置分离。 目录组织 JFS 提供两种不同的目录组织。第一种组织用于小目录,并且在目录的 inode 内存储目录内容。这就不再需要不同的目录块 I/O,同时也不再需要分配不同的存储器。最多可有 8 个项可直接存储在 inode 中,这些项不包括自己(.)和父(..)目录项,这两个项存储在 inode 中不同的区域内。 第二种组织用于较大的目录,用按名字键控的 B+ 树表示每个目录。与传统无序的目录组织比较,它提供更快的目录查找、插入和删除能力。 稀疏和密集文件 按文件系统分,JFS 既支持稀疏文件也支持密集文件。 稀疏文件允许把数据写到一个文件的任意位置,而不要将以前未写的中间文件块实例化。所报告的文件大小是已经写入的最高块位处,但是,在文件中任何给定块的实际分配,只有在该块进行写操作时才发生。例如,假设在一个指定为稀疏文件的文件系统中创建一个新文件。应用程序将数据块写到文件中第 100 块。尽管磁盘空间只分配了 1 块给它,JFS 将报告该文件的大小为 100 块。如果应用程序下一步读取文件的第 50 块,JFS 将返回填充了 0 的一个字节块。假设应用程序然后将一块数据写到该文件的第 50 块,JFS 仍然报告文件的大小为 100 块,而现在已经为它分配了两块磁盘空间。稀疏文件适合需要大的逻辑空间但只使用这个空间的一个(少量)子集的应用程序。 对于密集文件,将分配相当于文件大小的磁盘资源。在上例中,第一个写操作(将一块数据写到文件的第 100 块)将导致把 100 个块的磁盘空间分配给该文件。在任何已经隐式写入的块上进行读操作,JFS 将返回填充了 0 的字节块,正如稀疏文件的情况一样。 JFS 内部(潜在)限制 JFS 是完全 64 位的文件系统。所有 JFS 文件系统结构化字段都是 64 位大小。这允许 JFS 同时支持大文件和大分区。 文件系统大小 JFS 支持的最小文件系统是 16M 字节。最大文件系统的大小是文件系统块尺寸和文件系统元数据结构支持的最大块数两者的乘积。JFS 将支持最大文件长度是 512 万亿字节(TB)(块尺寸是 512 字节)到 4 千万亿字节(PB)(块尺寸是 4K 字节) 文件长度 最大文件长度是主机支持的虚拟文件系统最大文件长度。例如:如果主机只支持 32 位,则这就限制了文件长度。 可移动媒体 JFS 不支持把软盘作为基本文件系统设备。 标准管理实用程序 JFS 提供创建和维护文件系统的标准管理实用程序。 创建文件系统 这个实用程序提供 mkfs 命令的 JFS 特定部分,用来在指定的驱动器上初始化 JFS 文件系统。该实用程序在较低级别上操作,并假设文件系统所存在的任何卷的创建/初始化由更高级别的另一个实用程序处理。 检查/修复文件系统 这个实用程序提供 fsck 命令的 JFS 特定部分。该命令检查文件系统的一致性,修复发现的问题。它也重放日志,把提交的改动应用到文件系统元数据,如果由于日志重放而声明文件系统是干净的,就不会再采取进一步操作。如果文件系统不认为是干净的,这意味着由于某种原因没有完整和正确地重放日志,或者文件系统不能单靠重放日志来恢复到一致状态,那么,就对文件系统执行一遍完整检查。 当执行全部完整性检查时,检查/修复实用程序首要目的是要达到可靠的文件系统状态,以防止将来文件系统崩溃或故障,第二个目的就是面对崩溃时保存数据。这意味着为了达到文件系统的一致性,实用程序可能丢弃数据。具体而言,当实用程序在不做假设的情况下,无法获得所需信息以将结构上不一致的文件或目录恢复到一致状态时,就会废弃数据。当遇到不一致的文件或目录时,就废弃整个文件或目录,而不再试图保存任何部分。任何由删除受损目录所孤立起来的文件或子目录,都放在文件系统根下的 lost+found 目录中。 文件系统检查/修复实用程序重点考虑的因素之一是所需虚存数量。通常,这些实用程序所需的虚存数量由文件系统的大小决定,这是由于所需虚存主要用于跟踪文件系统中个别块的分配状态。随着文件系统增大,块的数量增多,用来跟踪这些块所需的虚存数量也随之增加。 JFS 检查/修复实用程序的设计区别在于其虚存需求由文件系统中文件和目录的数量(而不是由块的数量)所决定。对 JFS 检查/修复实用程序而言,每个文件或目录的虚存大约为每个文件或目录 32 字节,或者对于包含百万个文件和目录的文件系统而言,不论其文件系统大小,虚存需求都是大约 32 兆字节。如同所有其它的文件系统,JFS 实用程序需要跟踪块分配状态,但避免使用虚存方法,而是使用位于实际文件系统中的一小块保留工作区来实现。 结束语 因为在系统崩溃时,JFS 能提供快速文件系统重启时间,所以它是因特网文件服务器的关键技术。使用数据库日志处理技术,JFS 能在几秒或几分钟之内把文件系统恢复到一致状态。而在非日志文件系统中,文件恢复可能花费几小时或几天。大部分文件服务器用户不能容忍与非日志文件系统相关的停机时间。只有通过转移到日志技术,这些文件系统才能避免需要检查文件系统的所有元数据才能验证文件系统或将其恢复到一致状态这一耗时的过程。 |
marlborolj 回复于:2003-05-29 09:27:50 |
什么是ReiserFS 它通过一种与众不同的方式--完全平衡树结构来容纳数据,包括文件数据,文件名以及日志支持。ReiserFS还以支持海量磁盘和磁盘阵列,并能在上面继续保很快的搜索速度和很高的效率。ReiserFS文件系统一直以来被用在高端Unix系统上如SGI等。 2. ReiserFS的特点(与ext2的对比): ReiserFS相对于Linux上传统的文件系统--ext2有很多优点,在下面一一介绍。 ·搜寻方式 ReiserFS是基于平衡树的文件系统结构,尤其对于大量文件的巨型文件系统,如服务器上的文件系统,搜索速度要比ext2快;ext2使用局部的二分查找法,综合性能比不上ReiserFS。 ·空间分配和利用情况 ReiserFS里的目录是完全动态分配的,因此不存在ext2中常见的无法回收巨型目录占用的磁盘空间的情况。ReiserFS里小文件(<4K)可以直接存储进树,小文件读取和写入的速度更快,树内节点是按字节对齐的,小的文件可共享同一个硬盘块,节约大量空间。Ext2使用固定大小的块分配策略,也就是说,不到4K的小文件也要占据4K的空间,导致的空间浪费比较严重。 ·先进的日志机制 ReiserFS有先进的日志(Journaling/logging)机制,在系统意外崩溃的时候,未完成的文件操作不会影响到整个文件系统结构的完整性。 ext2虽然健壮性很强,但一旦文件系统被不正常地断开,在下一次启动时它将不得不进行漫长的检查系统数据结构的完整性的过程,这是为了防止数据丢失而必需的操作。对于较大型的服务器文件系统,这种"文件系统检查"可能要持续好几个小时,在很多场合下这样长的时间是无法接受的。 解决这个问题的一种技术"日志文件系统"。在日志的帮助下,每个对数据结构的改变都被记录下来,日志在机制保证了在每个实际数据修改之前,相应的日志已经写入硬盘。正因为如此,在系统突然崩溃时,在下次启动几秒钟后就能恢复成一个完整的系统,系统也就能很快的使用了。 ·支持海量磁盘和优秀的综合性能 ReiserFS是一个相当现代化的文件系统,相比之下,ext2虽然性能已经很好了,但其设计还只是19世纪80年代的水准。ReiserFS的出现,使Linux拥有了像Irix/AIX那样的高档商用Unix才有的高级文件系统。ReiserFS可轻松管理上百G的文件系统,在企业级应用中有其用武之地,由于它的高效存储和快速小文件I/O特点,它在桌面系统上也表现出色:启动X窗口系统的时间ReiserFS比ext2少1/3。而ext2则无法管理2G以上的单个文件,这也使得ReiserFS在某些大型企业级应用中比ext2要出色。 3.缺点 ReiserFS一个最受人批评的缺点是每升级一个版本,都将要将磁盘重新格式化一次,这个缺点也正在改进中。 |
marlborolj 回复于:2003-05-29 09:29:09 |
用于Linux的日志文件系统 最近12个月以来,Linux已经巩固了其作为服务器操作系统的地位。就像集群(cluster)对于企业级的应用很重要那样,日志文件系统(journaling file system)也是同样重要的。 为什么日志文件系统很重要呢?它是怎样工作的呢?有哪些日志文件系统可以用于Linux? 日志文件系统比传统的文件系统安全,因为它用独立的日志文件跟踪磁盘内容的变化。就像关系型数据库(RDBMS),日志文件系统可以用事务处理的方式,提交或撤消文件系统的变化。 Ext2不能满足要求 尽管Linux可以支持种类繁多的文件系统,但是几乎所有的Linux发行版都用ext2作为默认的文件系统。Linux可以支持的文件系统有:FAT、VFAT、HPFS(OS/2)、NTFS(Windows NT)、Sun的UFS,等等。 ext2的设计者主要考虑的是文件系统的效率和性能方面的问题。ext2在写入文件内容的同时并没有同时写入文件的meta-data(和文件有关的信息,例如:权限、所有者以及创建和访问时间)。换句话说,Linux先写入文件的内容,然后等到有空的时候才写入文件的meta-data。如果在写入文件内容之后但在写入文件的meta-data之前,突然断电了,文件系统就会处于不一致的状态。在一个需要大量文件操作的系统中(例如,像Hotmail这样的免费的Web e-mail),出现这种情况会导致很严重的后果。日志文件系统可以帮助解决这个问题。 假定你正在更新一个目录项(directory entry)。你已经在这个巨大的目录项的第五个文件块(block)中改变了23个文件项(file entry)。当正在写这个文件块的时候突然间断电了,这个文件块还没有写完,也就是被损坏了。 重新启动的时候,Linux(就像其它的Unix)会运行一个叫做“fsck”(file system check)的程序,扫描整个文件系统,保证所有的文件块都被正确地分配或使用。它将找到这个被损坏的目录项并试图修复它,但是不能够保证fsck一定能够修复损坏。修复不了是经常的事。所以,当出现上面那种情况,目录项中所有的文件项可能会丢失,也就造成文件的丢失。 如果文件系统很大,fsck扫描要费很长时间。在一个有数十亿个文件的计算机上,fsck可能要运行10个小时以上。在这段时间内,系统是不可用的,也就是导致了很长的当机时间。日志文件系统可以避免这种情况。 文件系统是怎样工作的? 文件系统通过为每个文件分配文件块的方式把数据存储在存储设备中。这样就要维护每一个文件的文件块的分配信息,而分配信息本身也要存在磁盘上。DOS和Windows的用户可能还记得FAT这种文件系统吧。不同的文件系统用不同的方法分配和读取文件块。 有两种常用的文件系统的分配策略:块分配(block allocation)和扩展分配(extent allocation)。块分配当文件变大的时候每一次都为这个文件分配磁盘空间,而扩展分配则是当某个文件的磁盘空间不够的时候,一次性为它分配一连串连续的块。 传统的Unix文件系统使用的块分配的机制提供了一个灵活而高效的文件块分配策略。磁盘上的文件块根据需要分配给文件,这样可以减少存储空间的浪费。当一个文件慢慢变大的时候,就会造成文件中文件块的不连续。这就导致了过多的磁盘寻道时间,当读取一个文件的时候有可能要随机而不是连续地读取文件块,这样的效率很低。 可以通过优化文件块的分配策略(尽可能为文件分配连续的块)来避免文件块的随机分配。通过使用聪明的块分配策略,可以实现块的连续分配。这样就可以减少磁盘的寻道时间。但是,当整个文件系统的文件块的分配形成碎片的时候,就再也不可能连续分配了。 每一次当文件扩展的时候,块分配的算法就要写入一些关于新分配的块所在位置的信息。如果每一次文件扩展的时候只增加一个块,那么就需要很多额外的磁盘I/O用来写入文件块的结构信息。文件块的结构信息也就是上面说的meta-data。meta-data总是一起同时地写入存储设备的,这就意味着改变文件大小的操作要等到所有的meta-data的操作都完成之后才能进行。因此,meta-data的操作会显著地降低整个文件系统的性能。 基于扩展(Extent-based)的分配方式 扩展分配方式一次性为文件分配很多连续的块。当创建一个文件的时候,很多文件块同时被分配;当文件扩展的时候,也一次分配很多块。文件系统的meta-data在文件创建的时候被写入,当文件的大小没有超过所有已分配的文件块的大小,就不用写入meta-data。(直到需要再分配文件块的时候) 这样可以优化磁盘寻道的方式,可以成组地分配块,有利于一次写一大批数据到存储设备中,这样就可以减少SCSI设备写数据的时间。 基于扩展分配的文件系统在读取顺序文件的时候有很好的性能,因为文件块都是成组连续分配的。但是,如果I/O操作是随机的,基于扩展分配的文件系统的好处就非常有限了。例如,当我们要连续地读取一个基于扩展分配的文件的时候,我们只要读起始块号和文件长度就行了。然后,就可以连续地读取所有的文件块了,这样在顺序读取文件的时候,读meta-data的开销就很小。反之,如果随机地读取文件,我们就要先查找每一个所需块的块地址然后再读取块的内容,这样就和块分配方式很象了。 在ext2文件系统中,对写性能的增强是通过尽量延迟写的时间,这样就能一次写一大批数据而不是每次写一小点。随之而来的就是系统效率的提高。同样,当读的时候,ext2也是一次读取一整组的块,也就是采用预读策略。这样就能提高ext2文件系统的读性能,大量减少每次读取少量数据的I/O操作。 文件块的组或块簇(block cluster)的大小是在编译的时候确定的。怎样设定簇的大小不是这篇文章所要介绍的内容。但是,可以这么说,簇的大小对文件系统的性能确实有很大的影响,而且簇的大小也是文件系统设计的时候需要考虑的一个很重要的方面。 象Veritas这样的扩展分配的文件系统和象ext2这样的“成簇写”(write-clustering)的文件系统,在默认情况下都使用512字节的块而不用1k字节的块。如果ext2用4k而不是1k字节的块,大概会有20%的性能提升。但是,为了减少被浪费的空间ext2文件系统的设计者建议使用1k字节的块。 日志文件系统是怎样解决问题的? 先提醒你一下:这节标题可能容易导致误解。日志文件系统确实解决了上面提到的一些问题,但是又带来了新问题。 日志文件的设计思想是跟踪文件系统的变化而不是文件系统的内容。为了更好地解释这个问题,下面我用ext2文件系统和日志文件系统举一个例子: 当我们改变文件“test.file”的内容的时候会出现什么情况?先假定“test.file”的inode有四个数据块。用来保存“test.file”文件的数据块的块号分别为3110、3111、3506和3507(因为在3111和3506之间的块已经分配给其它文件了,所以这些块不连续)。当硬盘要先找到3100,读两块,在跳到3500,再读两块,才能读取整个文件。假定你改变了第三块,文件系统会读取第三块,改变它,然后重新写入第三块,这一块还在3506这个位置。如果你往文件中添加了一些内容,就要从别的地方另外分配一些空余的块。 如果在日志文件系统中,情况就有所不同。日志文件系统不会改变第3506块的内容,它会把“test.file”的inode的一个拷贝和新的第三块保存到磁盘上。在内存中的inode列表需要更新,让“test.file”使用新的inode。所有的变化、添加和改变需要被记录到一个文件系统中被称为“日志”的那部分中去。每隔一段时间,文件系统在“检查点”(check point)回更新在磁盘上的inode,并且释放文件中用不到的那些旧块(例如:“test.file”文件最初的第三块)。 在系统崩溃之后,日志文件系统很快就能恢复。它需要恢复的只是日志中记录下来的很少的几块。当断电之后,“fsck”只要用几秒钟的扫描时间。 这就是我所说的解决了一些问题! 但是,文件系统为得到额外的安全也是要付出代价的,这就是系统开销。每一次更新和大多数的“日志”操作都需要写同步,这样就需要更多的磁盘I/O操作。系统管理员就面临这样一个问题:为了有一个更安全的文件系统值不值得牺牲一部分性能? 大多数系统管理员会根据实际情况作出决定。没有必要把“/usr”目录放在日志文件系统上因为“/usr”目录大部分是只读的操作。但是,可以考虑把“/var”或包含e-mail spool文件的目录放在日志文件系统上。幸运的是在Linux系统中可以根据需要混合使用这些文件系统。 日志文件系统还有一个问题就是更容易产生碎片。因为它的文件分配方式与众不同,很容易在文件系统中到处产生碎片。ext2文件系统也会产生碎片但是可能不会有这么严重。每个月定期把文件系统备份到磁带中然后重新恢复,不仅可以解决这问题,而且可以检查备份/恢复的过程是否正确。 想得到一些好处,总是要付出一些代价的,不是吗? 可供选择的Linux日志文件系统 当我写这篇文章的时候,有两个日志文件系统还在开发,有三个日志文件系统可供使用。 SGI的xfs(http://oss.sgi.com/projects/xfs/)日志文件系统和Veritas(www.veritas.com)的文件系统和卷管理(volume manager)。这两个文件系统在五个月前就发布了,但是现在还不能得到源代码。SGI的xfs是基于Irix(SGI的Unix)上已经实现的xfs。SGI已经宣布xfs为Open Source的软件。 两个马上就可以得到的日志文件系统是reiserfs和IBM的jfs。这两文件系统都是开放源代码的而且很多有天赋的人在开发这两个文件系统。jfs(Journaled File System Technology for Linux)的开发者包括AIX(IBM的Unix)的jfs的主要开发者。 在AIX上,jfs已经经受住了考验。它是可靠、快速和容易使用的。Reiserfs应用了一些新的技术,例如,统一名字空间(unified name space),是非常有前途的(Namesys)可以参考。 有一些Linux的发行版已经包括了reiserfs文件系统,作为安装时的可选项。SuSE 6.4 就很容易使用reiserfs文件系统。reiserfs的最新版是3.5.12,经过测试reiserfs的基准测试的结果是很激动人心的。这个测试使用“postmark”基准测试,50,000个事务处理20,000个文件。结果是: Sun E450 1 GB, Solaris 2.6, and vxfs (Veritas) file system: 22 transactions/second Sun E450 1 GB, Solaris 2.6, and UFS file system: 23 transactions/second Dual P-III, 1 GB Linux 2.2.13, standard ext2: 93 transactions/second Dual P-III, 1 GB Linux 2.2.13, reiserfs 3.5.5 journaling beta: 196 transactions/second Dual P-III, 1 GB Linux 2.2.13, reiserfs 3.5.5 journaling beta, mount options notail, genericread: 847 transactions/second (Sun的计算机用的是barracuda硬盘,x86的计算机用的是cheeta硬盘) 还有一个日志文件系统是jfs。jfs还没有被任何Linux发行版采用,因为它现在的版本是0.7。但是,jfs进展得很快。本文的作者已经加入jfs项目现在是jfs FAQ的维护者。 reiserfs和jfs都非常容易安装。下载完jfs的软件包之后,还有下面几个步骤要完成: 1)1) 解压jfsXXX.tar.gz。 2)2) 软件带有内核(2.2.14、2.2.15和2.3.99)的补丁。把补丁拷贝到内核源代码的目录,通常在“/usr/src”。把补丁打到内核上,用这个命令: root@ maguro /usr/src # patch -p0 3)3) 重新编译内核 root@ maguro /usr/src # make menuconfig; make dep; make clean; make bzImage; make modules 安装reiserfs的步骤和上面类似: 1)1) 下载软件包。 2)2) 把补丁拷贝塔内核源代码所在的目录,通常在“/usr/src”,给内核打补丁: root@ maguro /usr/src # zcat linux-2.2.11-reiserfs-3.5-patch.gz | patch -p0 3)3) 编译内核。 4)4) 用下面命令生成reiserfs文件系统: root@ maguro /usr/src # /linux/fs/reiserfs/utils/mkreiserfs /dev/hda2 另一个选择 日志文件系统的另一个选择是ext2的后继者ext3fs文件系统。ext3fs文件系统正在Linux内核黑客Stephen Tweedie的领导下开发。 ext3fs还处于beta测试阶段,就像reiserfs和jfs,但是它工作得很好。Stephen预计2000年夏天可以正式发布ext3fs。ext3fs最大的优点是向下兼容ext2。而且ext3fs还支持异步的日志,这意味着它的性能可能还比ext2好。 安装ext3fs和安装jfs和reiserfs类似。从这下载补丁:ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs。 就像reiserfs,ext3fs可能不久就会成为标准Linux内核的一部分,可能是2.4版的Linux内核。 最后几句话 现在还很难说jfs、ext3fs和reiserfs这三种日志文件系统到底哪一个会最后胜出。最后很有可能是多种日志文件系统并存。因为我加入jfs项目,所以我觉得jfs还是很有希望的。 现在,reiserfs用得最广泛,因为SuSE的6.3和6.4版已经包含它了。将来SGI的xfs源代码发布了,它也有可能成为有力的竞争者。如果你现在想要一个日志文件系统,那么你可以试试reiserfs。 |
alstone 回复于:2003-05-29 09:30:10 |
jfs 在linux上的实现不好。不够稳定。 AIX+LVM +jfs 是一个经典组合。 可以动态增大文件系统,对卷的理解极透彻。 但是linux +lvm+reiserfs从可管理性上完全超越了他。 只是稳定性还略有欠缺。 |
happykai 回复于:2003-10-19 12:34:21 |
幸好我还没装,开始想用默认的ext2,结果装到一半盘出问题了,幸运啊 |