作者:张宇,北亚服务器数据恢复中心([url]http://www.datahf.net[/url]),转载请联系作者,如果实在不想联系作者,至少请保留版权,谢谢。
[问题]
昨天我转载的一文中,提到了对于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)上是首选的。

在LINUX环境中,哪种文件系统存储更安全?相关推荐

  1. Linux环境下几种常用的文件系统

    Linux环境下几种常用的文件系统: 1.ext2 ext2是为解决ext文件系统的缺陷而设计的可扩展的.高性能的文件系统,又被称为二级扩展文件系统.它是Linux文件系统中使用最多的类型,并且在速度 ...

  2. 理解 Linux 网络栈(2):非虚拟化Linux 环境中的 Segmentation Offloading 技术

    本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + Vx ...

  3. Linux环境中堆栈和堆相关内存损坏的基本原理和调试方法介绍

    本文讲的是Linux环境中堆栈和堆相关内存损坏的基本原理和调试方法介绍, 前言 建议阅读本文之前,你对ARM组件的有个基本了解,本文会先为你介绍32位Linux环境中进程的内存布局,然后再介绍堆栈和堆 ...

  4. Avatarify-人脸驱动项目在Linux环境中的实现

    蚂蚁的牙是什么颜色的? ~ 黑色的! ~蚂蚁牙黑~  今年2月,"蚂蚁牙黑"一夜之间风靡各大社交平台,我们看到的视频都是通过手机软件Avatarify制作的,今天来聊一聊Githu ...

  5. 如何在Linux环境中使用USB存储器(转)

    如何在Linux环境中使用USB存储器(转) 如何在Linux环境中使用USB接口的存储设备?这是各大电脑论坛上出现得比较多的一个问题,同此可见这也是摆在许多电脑玩家面前的一道难题.本文就为您提供一套 ...

  6. 嵌入式linux系统中常用的文件系统

    原文:https://blog.csdn.net/li_wen01/article/details/80090624 嵌入式linux系统中常用的文件系统: 闪存主要有NOR和NAND两种技术:因为F ...

  7. Linux环境中对海康威视工业相机SDK进行二次开发(QT+CMake+Opencv+海康SDK)

    关于在Windows环境中对海康威视工业相机SDK进行二次开发的话,可以参考这两篇博客. 海康威视工业相机SDK二次开发(VS+Opencv+QT+海康SDK+C++)(一) 海康威视工业相机SDK二 ...

  8. python27怎么安装thrift解压包_Python在Linux环境中安装Thrift

    1.文件下载:thrift-0.11.0.tar.gz 个人网盘下载:链接:https://pan.baidu.com/s/1MXgx8LuN4wk7ssVUD9Wzaw  提取码:xw85 2. 将 ...

  9. 在linux环境中利用efibootmgr管理efi启动项[添加、删除、改变顺序]

    在linux环境中利用efibootmgr管理efi启动项[添加.删除.改变顺序] 本例可以解决uefi双系统中启动顺序的问题,首先确保自己的机器为uefi固件 在Terminel中输入efiboot ...

最新文章

  1. 在ASP.NET中使用Office Web Components (OWC)创建统计图
  2. java 线性表的表示和实现_线性表中顺序表的的理解和实现(java)
  3. enterFrame是什么意思?
  4. Django之templates模板
  5. php会话控制区别和流程,PHP会话控制:cookie和session区别与用法深入理解_后端开发...
  6. python选取列中数据的范围_Python Pandas中根据列的值选取多行数据
  7. table中添加下拉框
  8. ASP.net揭秘笔记
  9. 鸿蒙是安卓改名,EMUI更名为鸿蒙,这几个问题的答案马上就能揭晓!
  10. 数字信号处理matlab实验心得,数字信号处理学习心得体会3篇
  11. XRD测试常见问题及解答(三)
  12. haneWIN NFS Server for Windows
  13. Android开机动画没有声音,Android O 8.0 自定义开机动画/开机铃声
  14. oracle 总僵尸进程,subprocess子进程kill后存在僵尸进程的原因及处理方法
  15. 嵌入式C语言开发学习笔记 —— CSPL
  16. android 读取本地超大图片
  17. 新手建模学习哪一个软件比较好
  18. 域名可以修改绑定的服务器么,域名备案绑定的服务器可以改么
  19. 基于SSM的医院预约挂号系统 JAVA MYSQL
  20. pandas计算excel两列的日期差

热门文章

  1. MongoDB_限制集(Capped)
  2. Tornado 学习笔记
  3. 使用图形工具管理Server Core上的账号和组
  4. 非常实用的Windows7进阶功能
  5. 五一减肥狂掉肉饮食法
  6. 利用XML实现通用WEB报表打印(转载)
  7. 24.下拉列表的交互事件
  8. vuex实践之路——笔记本应用(三)
  9. 写日历的一些总结(二)
  10. Ubuntu 16.04设置IP、网关、DNS