[问题]
昨天我转载的一文中,提到了对于ext3 reiserfs xfs jfs文件系统不同读写性能的比较。见:http://zhangyu.blog.51cto.com/197148/137389
结论方面,我并不完全同意,但真没精力做那样系统的测试(很敬佩那位老外作者),从文件系统的设计看,那篇文章的测试结果相对是比较符合我的判断的。只是测试并未针对异常操作、崩溃保护方面,文中提到的也很少。
我以我个人看法,谈谈ext3 reiserfs xfs三种文件系统的安全性(jfs了解不多),泛泛而谈,应该有不当之处,欢迎提供不同的看法,以便改正。
ext3是多数LINUX上默认的文件系统,也是从传统UNIX文件系统的结构上演变而来的,文件系统设计得非常简单明了,以不同的块组进行数据、节点、块组表的组织。优点是很简单,尤其适用于频繁删除/增加文件、同时每级文件下的文件总数不多的文件系统。
因EXT3 B树的概念用得较少,在目录检索方面很差,所以同一组目录下不能放太多文件,目录结构也尽可能不能太复杂。
EXT3的日志功能设计很差,经常会遇到实然断电后,文件系统损坏的情况,实际上ext3对日志的检验、还原方面做得还很不够。
EXT3采用的数据存储方式相当表格化,格式化时就确定了固定数目的inode,并分配好了空间,当然会导致空间的大浪费,同时当文件太多,达到上限时,文件系统也无法负担。
EXT3采用全索引的方式对数据存储区域进行索引管理,所以,大量的文件碎片在EXT3上并不会导致严重的数据风险,随机寻址会更快。当然,浪费也会大一些。
总得看,EXT3并不是一个很安全的文件系统,如果从数据存储安全的角度看,并不推荐。
REISERFS是一个算法敏捷的文件系统,无处不在的树结构使得索引、遍历的适应范围极大,一个上几千万个文件的文件系统,通常也只需要约4级索引就可以到达。但因索引以整个文件系统中所有的节点为单位组织(一颗树),所以即使访问一个文件,复杂程序也不会很低。所以很容易理解的,MOUNT的时间会更长(读取一个根目录就需要从整个树的根读到叶,同时根目录节点并不是索引B树的根节点,也是普通的一个叶节点,这点和其他文件系统很不相同),同时目录节点有机地整合在整个节点树里,并以HASH为索引键值。
reiserfs的上述主要特征决定了,它在处理少量文件时的优势并不明显,反而会更慢,同时因复杂程度带来更强的不稳定性。但在处理大量文件时,它的稳定性也不会再下降多少,同时树的特征与目录节点的特征,遍历目录结构的性能也不会下降多少。所以特别适合大量文件(邮件系统、大量文件的网站服务器)的使用环境。
另外,reiserfs也是一种日志文件系统,但日志能力并不很强,日志方面我分析得不多,只从结构方面看,比EXT3的好一点(更加结构化了)。
xfs本身是SGI用在IRIX上的一种文件系统,设计结构感觉滴水不漏,随处可见的分层寻址机制(和REISERFS的设计可是大相径庭),让系统可以更快,更高效得处理指定文件。同时,XFS在寻址上大量运用位操作,这也使得处理大文件时效率更高。
xfs在目录结构组织方面比较类似于ext3,目录也是以普通数据文件的方式进行存储与管理,这样在应付大量文件读取时,索引性能稍差一些。
xfs文件系统的日志功能据其他资料讲相对要强一些(本人未作分析),通常不容易崩溃。
从数据删除与格式化角度看,XFS与REISERFS在删除与格式化后,都有机会完整恢复(并不清除节点里的关键信息)。但EXT3恢复的难度就会大很多(清除节点)。
简单的结论,XFS在文件数目不是特别多的情况下是较可靠的。REISERFS在大量小文件的文件系统(超过百万文件,且多数文件小于1MB)上是首选的。
本文转自 张宇 51CTO博客,原文链接:http://blog.51cto.com/zhangyu/137383,如需转载请自行联系原作者