新普京网站-澳门新普京 > 前端 > 开发者必须了解的常见文件系统对比

开发者必须了解的常见文件系统对比

2019/12/29 21:33

本文将对Linux下分布的二种文件系统实行对照,满含ext2、ext3、ext4、XFS和Btrfs,希望能援救大家越来越好的选用适当的文件系统。

后天安装使用CentOS6.0,开掘6.0系统新扩展了ext4文件系统,想打听一下ext4文件系统的特征,于是,在网络查找了一下.相对于以前的ext3,ext2职能更丰裕了重重.以下来自百度百科:
  Ext4是意气风发种针对ext3类别的扩大日志式文件系统,是特意为 Linux 开采的原有的扩充文件系统(ext 或 extfs)的第四版。 Linux kernel 自 2.6.28 早先专门的学业扶植新的文件系统 Ext4。 Ext4 是 Ext3 的改良版,改正了 Ext3 中某些至关重大的数据构造,而不光像 Ext3 对 Ext2 那样,只是扩张了多个日志成效而已。Ext4 能够提供更佳的天性和可信性,还会有尤其丰盛的服从。  相对于Ext3,特点如下:  1. 与 Ext3 宽容。 实施多少条命令,就能够从 Ext3 在线迁移到 Ext4,而无须重新格式化磁盘或重新安装系统。原有 Ext3 数据构造照样保留,Ext4 功用于新数据,当然,整个文件系统因此也就获得了 Ext4 所协助的越来越大体量。  2. 更大的文件系统和越来越大的公文。 较之 Ext3 方今所协助的最大 16TB 文件系统和最大 2TB 文件,Ext4 分别援助1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系统,以至 16TB 的文件。  3. 极度数量的子目录。 Ext3 最近只扶持 32,000 个子目录,而 Ext4 辅助但是数量的子目录。  4. Extents。 Ext3 采取直接块映射,当操作大文件时,效用特别低下。举例一个 100MB 大小的文书,在 Ext3 中要创建 25,600 个数据块(每一种数据块大小为 4KB)的映射表。而 Ext4 引进了现代文件系统中山大学行其道的 extents 概念,各类extent 为后生可畏组两次三番的数据块,上述文件则意味着为“该公文数量保存在接下去的 25,600 个数据块中”,进步了多数功用。  5. 多块分配。 当 写入数据到 Ext3 文件系统中时,Ext3 的数据块分配器每一趟只好分配二个 4KB 的块,写一个 100MB 文件就要调用 25,600 次数据块分配器,而 Ext4 的多块分配器“multiblock allocator”(mballoc) 帮助三遍调用分配多少个数据块。  6. 延缓分配。 Ext3 的多少块分配政策是急忙分配,而 Ext4 和任何今世文件操作系统的政策是竭尽地延迟分配,直到文件在 cache 中写完才起来分配数据块并写入磁盘,这样就会优化整个文件的数码块分配,与前三种特色搭配起来能够要来说之升高品质。  7. 连忙 fsck。 早前试行 fsck 第一步就能够极慢,因为它要检查有着的 inode,今后Ext4 给每个组的 inode 表中都加多了风姿洒脱份未利用 inode 的列表,未来 fsck Ext4 文件系统就足以跳过它们而只去反省这几个在用的 inode 了。  8. 日志校验。 日志是最常用的有的,也极易变成磁盘硬件故障,而从损坏的日志中苏醒数据会招致越来越多的多寡损坏。Ext4 的日记校验效能能够非常的低价地认清日志数据是不是损坏,况兼它将 Ext3 的两阶段日志机制合并成四个等第,在扩展安全性的还要压实了质量。  9. “无日志”(No Journaling)形式。 日志总归有意气风发对开辟,Ext4 允许关闭日志,以便有个别有例外部须求求的用户能够借此升高质量。  10. 在线碎片收拾。 固然延迟分配、多块分配和 extents 能有效缩小文件系统碎片,但零星依然不可防止会生出。Ext4 支持在线碎片收拾,并将提供 e4defrag 工具进行个别文件或任何文件系统的零散收拾。  11. inode 连锁脾气。 Ext4 帮助更加大的 inode,较之 Ext3 暗许的 inode 大小 128 字节,Ext4 为了在 inode 中容纳越来越多的恢宏属性(如微秒时间戳或 inode 版本),默许 inode 大小为 256 字节。Ext4 还扶助高效扩张属性(fast extended attributes)和 inode 保留(inodes reservation)。  12. 持久预分配(Persistent preallocation)。 P2P 软件为了保障下载文件有丰富的长空贮存,平常会先行创造一个与所下载文件大小雷同的空文件,避防现在的数钟头或好多天之内磁盘空间不足招致下载败北。 Ext4 在文件系统层面落成了悠久预分配并提供对应的 API(libc 中的 posix_fallocate(卡塔尔国),比使用软件自身完成更有效用。  13. 暗许启用 barrier。 磁 盘上配有中间缓存,以便重新调节批量数码的写操作顺序,优化写入质量,因而文件系统必需在日记数据写入磁盘之后技艺写 commit 记录,若 commit 记录写入在先,而日志有望破坏,那么就能够影响数据完整性。Ext4 暗中认可启用 barrier,唯有当 barrier 早先的数量总体写入磁盘,工夫写 barrier 之后的数目。(可经过 "mount -o barrier=0" 命令禁止使用该性情。)

剧情出自于互连网找的资料以致协调的部分经历,才具有限,错误在劫难逃,仅供参谋

...

历史

文件系统 创建者 创建时间 最开始支持的平台
ext2 Rémy Card 1993 Linux,Hurd
XFS SGI 1994 IRIX, Linux, FreeBSD
ext3 Dr. Stephen C. Tweedie 1999 Linux
ZFS Sun 2004 Solaris
ext4 众多开发者 2006 Linux
Btrfs Oracle 2007 Linux

从创设时间足以阅览他们所处的两样时代,因为Btrfs的得以达成借鉴自ZFS,所以这边也将ZFS列出来作为参谋。

大大小小限定

文件系统 最大文件名长度 最大文件大小 最大分区大小
ext2 255 bytes 2 TB 16 TB
ext3 255 bytes 2 TB 16 TB
ext4 255 bytes 16 TB 1 EB
XFS 255 bytes 8 EB 8 EB
Btrfs 255 bytes 16 EB 16 EB

最大文件和分区大小受格式化分区时所使用的块大小(block size)所影响,块越大,所支持的最大文件和分区越大,也越大概浪费磁盘空间,上表列出的多寡依赖4K的块大小。

代码规模

从代码规模得以看看文件系统的功用足够程度以致复杂度,上边列出的数据来源于于kernel-4.1-rc8,只是轻巧的用wc -l来总括,未有过滤空行、注释等。

文件系统 源文件(.c) 头文件(.h)
ext2 8363 1016
ext3 16496 1567
ext4 44650 4522
XFS 89605 15091
Btrfs 105254 7933
  • Btrfs还在高效的费用进度中,代码行数可能还应该有非常的大的改造
  • XFS和Btrfs都利用了B-tree

ext2

ext的独特之处是比较简单,文件很少时质量较好,比较相符文件少的情景,主要症结如下

  • inode的数额是稳固不改变的,在格式化分区的时候能够钦定inode和数据块所占空间的比例,但假设格式化好,后续就没有办法再转移了
  • 当块大小为4K时,单个文件大小不能够胜过2TB,分区大小不能够赶过16TB(近日硬盘大小相仿都唯有几TB,所以亦非怎么样大主题材料,)
  • 多个目录下最四只可以有3二零零一个子目录
  • 由于目录里面积累的文书和子目录都是以线个性局来协会的,所以遍历目录功能不高,特别当目录下文件个数达到10K之上规模的时候,速度会通晓的变慢
  • 当底层的磁盘分区空间变大时(使用LVM时很广泛),ext2没办法动态的强大来利用加多的空中
  • 从未日记(Journal)作用,所以数据的安全性不高
上一篇:没有了 下一篇:没有了