reiserfs
日志型文件系统发展比 ext2/3 晚近许多。在技术上使用的是 B*-tree 为基础的文件系统,其特色为能很有效率地处理大型文件到众多小文件都可以用很高的效率处理;实务上 ReiserFS 在处理文件小于 1k 小文件时,甚至效率可以比 ext3 快约10倍。
特点:
1,先进的日志机制,确保每个实际数据修改前,相应的日志已经写入硬盘。
2,高效的磁盘空间利用,对一些小文件不分配inode,而是打包存于一个磁盘分块。
3,快速的搜索定位,由于基于快速平衡树搜索(B*Tree,比B+Tree快很多)
4,支持海量磁盘,最大卷容量16TB,适合企业级应用
5,优异的性能,高效存储,快速小文件I/O,单个文件尺寸8G
6,对于大量文件的巨型文件系统搜索速度比ext2快
7,ReiserFS里的目录是完全动态分配的,因此不存在ext2中常见的无法回收巨型目录占用的磁盘空间的情况。ReiserFS里小文件(< 4K)可以直接存储进树,小文件读取和写入的速度更快,树内节点是按字节对齐的,小的文件可共享同一个硬盘块,节约大量空间。Ext2使用固定大小的块分配策略,也就是说,不到4K的小文件也要占据4K的空间,导致的空间浪费比较严重。
缺点:
出现异常断电的时候,会出现大量的未写入完全的数据。ReiserFS会在恢复的时候进行rebuild-tree。而这个过程是非常慢的。在ReiserFS的升级版本Reiser4中有所改观。
xfs
高性能64位日志文件系统,最大支持8exbibytes-1个字节单文件,32位linux文件以及文件系统都会被限制在16TB。
特点:
1,开启日志功能,磁盘文件不会因意外宕机而被破坏,文件系统可以根据所记录的日志快速恢复文件内容
2,查询和分配存储空间快
3,可扩展性强,对特大文件以及小文件的支持表现出众,
4,能以接近裸设备I/O的性能存储数据
缺点:
历史上XFS上的元数据操作曾比其它文件系统都慢,表现为在删除大量小文件时性能糟糕。
ext3
是一个日志文件系统,常用于Linux操作系统。它是很多Linux发行版的默认文件系统。虽然它的性能(速度)不如它的竞争对手,例如JFS2,ReiserFS和XFS,但它具有重要的优势,那就是它允许在适当的时候从流行的ext2文件系统升级,而无需备份和恢复数据;除此之外,它还具有比ReiserFS和XFS更低的的CPU使用率[1]
特点:
1,日记
(慢,但风险小)元数据和文件内容都在提交到主文件系统前写入。这样将提高稳定性但性能上有所损失,因为所有的数据都要写入2次。如果没有在/etc/fstab 中加上这个选项,修改中的档案遇上 kernel panic 或突然断电的时候就可能发生损毁的情况,当然,这还是得看软体是怎么写入档案的。
2,顺序
(中速,中等风险)顺序和写回类似,但在对应的元数据标记为提交前,强制写入文件内容。这是很多Linux发行版默认的方式。
3,回写
(快,但风险最大;在某种感觉上和ext2相当): 这边会写入日志的只有 metadata 而已,档案的内容并不会跟着写入日志里面。这样的作法让整个效率变快了不少,不过也同样造成了档案写入时不按顺序的结果。举例来说,档案在附加变大的同时发生了 crash 的情况,就可能造成下次挂载时档案后面就附加一堆垃圾数据的情况。
尽管ext3缺少一些当代文件系统的特点,像是动态的inode、树状的资料储放结构等等,都是被视作ext3的缺点之一,不过在这些特点之外,ext3在文件系统回复上面就有了很好的表现。跟树状结构的文件系统相比,在ext3上面metadata是放在固定的位置,而且在写入的同时会重复写入的一些资料让ext2/3在面临资料损毁的情况下还有挽回的机会。
缺点:
Ext3在写入日志时,并不做校验和。如果barrier=1没有作为加载参数(在文件/etc/fstab),并且如果硬件在无次序的写入缓存,在崩溃时会严重损坏文件系统
参考: