Linux:Ext2/Ext3/Ext4的区别
Ext2介绍
ext2是专门为Linux设计的文件系统类型,称为扩展文件系统,在Linux发展的早期,起过重要的作用。由于稳定性、速度和兼容性方面存在许多缺陷,ext2现已很少使用。通过不断的迭代ext3、ext4 文件系统逐渐出现了,每种类型的出现,都是为解决前一个类型的缺陷,并在此基础之上进一步的扩展。
Ext2 与 Ext3 的对比
ext3和ext2的主要区别在于,ext3引入Journal。
- ext2和ext3的格式完全相同,只是在ext3硬盘最后面有一部分空间用来存放Journal(日志)的记录;
- 在ext2中,写资料到硬盘中时,先将资料写入缓存中,当缓存写满时才会写入硬盘中;
- 在ext3中,写资料到硬盘中时,先将资料写入缓存中,待缓存写满时系统先通知Journal,再将资料写入硬盘,完成后再通知Journal,资料已完成写入工作;
- 在ext3中,也就是有Journal机制里,系统开机时检查Journal的资料,来查看是否有错误产生,这样就快了很多;
Ext3 与 Ext4 对比
Linux kernel自2.6.28开始正式支持新的文件系统Ext4,而Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构,还提供更佳的性能和可靠性,还有更为丰富的功能。
与 Ext3 兼容。
执行若干条命令,就能从 Ext3 在线迁移到 Ext4,而无须重新格式化磁盘或重新安装系统。原有 Ext3 数据结构照样保留,Ext4 作用于新数据,当然,整个文件系统因此也就获得了Ext4 所支持的更大容量。
更大的文件系统和更大的文件。
较之Ext3所支持的16TB文件系统和最大的2TB的文件,而Ext4分别支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系统,以及16TB的文件。
无限数量的子目录。
Ext3只支持32,000个子目录,而Ext4支持无限数量的子目录
Extents。
Ext3采用间接块映射,当操作大文件时,效率极其低下。比如一个100MB大小的文件,在Ext3中要建立25,600个数据块(每个数据块大小为4KB)的映射表。Ext4引入了现代文件系统中流行的extents概念,提高效率,每个extent为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的25,600个数据块中”。
多块分配。
当写入数据到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块,写一个100MB文件就要调用25,600次数据块分配器,而Ext4的多块分配器“multiblockallocator”(mballoc)支持一次调用分配多个数据块。
延迟分配
- Ext3的数据块分配策略是尽快分配,而Ext4是尽可能地延迟分配,直到文件在cache中写完才开始分配数据块并写入磁盘。
- 如此能优化整个文件的数据块分配,显著提升性能。
快速fsck(文件系统检查)
- 老的fsck会很慢,因为它要检查所有的inode
- Ext4给每个组的inode表中都添加了一份未使用inode的列表,执行fsck就可以跳过它们而只去检查那些在用的inode。
日志校验
- 日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。
- Ext4的日志校验功能可以很方便地判断日志数据是否损坏,将过去两阶段日志机制合并成一个阶段,提高性能。
“无日志”(NoJournaling)模式
Ext4允许关闭日志,以便某些有特殊需求的用户可以借此进一步提升性能。
在线碎片整理
Ext4支持在线碎片整理,并提供e4defrag工具进行个别文件或整个文件系统的碎片整理。
inode相关特性
Ext4支持更大的inode,较之Ext3默认的inode大小128字节,Ext4为了在inode中容纳更多的扩展属性(如纳秒时间戳或inode版本),默认inode大小为256字节。
持久预分配(Persistentpreallocation)
P2P软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。Ext4在文件系统层面实现了持久预分配并提供相应的API,比应用软件自己实现更有效率。
2015-04-16 22:51:50 于 bh xzl
作者:dantezhao | 简书 | CSDN | GITHUB 文章推荐:http://dantezhao.com/readme 个人主页:http://dantezhao.com 文章可以转载, 但必须以超链接形式标明文章原始出处和作者信息