嵌入式linux中文站,ext4是linux文件系统的一次革命。在很多方面,ext4相对于ext3的进步要远超过ext3相对于ext2的进步。ext3相对于 ext2的改进主要在于日志方面,但是ext4相对于ext3的的改进是更深层次的,是文件系统数据结构方面的优化。一个高效的、优秀的、可靠的和极具特点的文件系统就此诞生。
兼容性
任何ext3文件系统都可以轻松的迁移到ext4文件系统,你只需要在只读模式下运行几条命令即可。这就意味着你完全可以不格式化硬盘、不重装操作系统、不重装软件环境,就能够顺利的升级到ext4文件系统。这种升级方法不会损害到你硬盘上的数据和资料,因为ext4仅会在新的数据上使用,而基本不会改动原有数据。
更大的文件系统/文件大小
ext3支持最大16tb的文件系统,2tb的文件大小。ext4将支持最大1eb的文件系统,16tb的文件大小。
1eb=1024pb=1024*1024tb=1024*1024*1024gb
上述这个特性是由于ext4采用了48位寻址。有人会问,为什么不是64位呢?因为就目前的开发进展来看,实现64位寻址存在一些技术限制,但是ext4已经在考虑这个问题了,在不久的将来,ext4将实现完全的64位支持。
子目录可扩展性
目前的ext3中,单个目录下的子目录数目的上限是32000个。而在ext4中打破了这种限制,可以创建无限多个子目录。
extents
传统的类unix文件系统,比如ext3,都是使用一个间接数据块映射表来记录每一个数据块的分配情况的。但是这种机制对于超大文件的存储是有缺陷 的,特别是当对超大文件进行删除和截断操作时。映射表会对每一个数据块进行记录,而一个超大文件将占有很多的数据块,因此造成映射表将变得无比臃肿,难于 维护。ext4引入了一个新的概念,叫做“extents”。一个extents是一个地址连续的数据块的集合。比如一个100mb的文件将被分配给一个 单独的extents,这样就不用像ext3那样新增25600个数据块的记录(一个数据块是4kb)。而超大型文件会被分解在多个extents里。
extents的实现提高了文件系统的性能,减少了文件碎片。
多块分配
在ext3中,“将新的数据写入磁盘的哪些空闲块”是由块分配器来控制的。但是ext3的块分配器存在一定缺陷,那就是它一次只能够分配一个数据块(4kb),这就意味着,如果系统需要向磁盘中写入100mb的数据,那么需要调用块分配器25600次,而且由于块分配器无法获知总的分配块数,所以也无法对分配空间和分配位置进行优化。
在ext4中,使用了“多块分配器”,即一次调用可以分配多个数据块,这种机制提高了系统的性能,而且使得分配器有了充足的优化空间。
延迟分配
延迟分配(delayed allocation)是一项仅仅少数现代文件系统才具有的优秀特性,比如xfs、zfs、btrfs(better fs)以及reiser4。它能够尽可能的积累更多的数据块再分配出去,相对比,传统的文件系统则会尽快的将数据块分配出去,如ext3,reiser3 等。
这项特性会和extents特性以及多块分配特性相结合,使得磁盘io性能得到显著提高。
更快速的fsck
在ext3中,fsck本身是个速度很慢的操作,因为它要检查文件系统里的每一个“i节点”。但是,ext4会维护一个未使用的“i节点”表,在进行 fsck操作时,会跳过表中节点,只检查正在使用中的i节点。这种机制使得fsck的效率提高为原有ext3文件系统的2到20倍。不过,你要注意到一点,那就是这个未使用的i节点表是由fsck来维护的,而不是由ext4,因此你必须要首先运行一次fsck来生成,这样,在下次再运行fsck时才可以享受提速。(虽然表是由fsck来维护的,但你还是需要从ext3升级到ext4才能够享受这项功能)
日志校验
日志要算是磁盘中最常用的部分了,也是最容易使硬盘出问题的机制之一。如果你不幸使用一个已经崩溃的日志来恢复系统的话,将导致更大规模的系统崩溃。 ext4提供校验日志数据的功能,可以查看其潜在错误。而且,ext4还会将ext3日志机制中的“两阶段提交”动作合并为一个步骤,这种改进将使文件系统的操作性能提升20%。这就是ext4在日志机制方面对可靠度和性能的双重提升。
在线磁盘整理
这个特性没有包括在内核版本2.6.28之中,但是它很有可能会在下一个版本中引入。
虽然extents、多块分配和延迟分配都有助于减少磁盘碎片,但是磁盘碎片仍然会产生。举例来说:你在一个目录下建立了三个文件 (f1,f2,f3),它们被按序写入到连续的一段内存之中。然而几天之后,你想要更新文件f2,也就是位于这段连续内存的中间那一段的那个文件。我要向 这个文件中增加一些字符。很明显,在这段连续内存之中已经没有地方放下增加的这些字符,这别无选择,只能将这个f2文件移动到一个能容纳下的新的连续内存 之中。这导致了f2文件和f1、f3文件离的非常远,读取也相对缓慢了。看,这就产生了磁盘碎片了。
还有,可引导文件应该被放在连续的内存之中,但是磁盘整理机制并不知道哪些文件是可引导文件。
为了解决上述问题,ext4将支持在线磁盘整理,e4defrag工具也被用来支持更智能的磁盘碎片整理功能。
结点相关特性
更大的i结点:ext3支持自定义i结点大小,但是默认的i结点大小是128字节,ext4将默认大小提升到256字节。增加的空间用来存储更多的结点信息,这样有利于提升磁盘性能。
i结点预留机制:当新建一个目录时,若干i结点会被预留下来,等新的文件在此目录中创建时,这些预留的i结点就可以立即被使用。文件的建立和删除将变得更加高效。
毫微秒级的时间戳:在ext3中,时间精度是秒。在ext4中,时间精度提升到了毫微秒。
可持续预分配
这个特性,已经出现在了ext3的最后几个内核版本中,并且也可以由glibc在不支持此功能的文件系统中模拟产生,允许应用程序去预分配磁盘空间。应用程序告知文件系统给预留出一定的空间,文件系统会据此预分配必要的数据块,但是这些数据块将会是空的,直到应用程序向里面写入数据为止。这个机制会常常在p2p应用程序中用到,因为p2p应用程序下载文件常常需要几天的时间。这种机制也防止了磁盘碎片的产生,因为文件系统会一次性分配尽可能连续的数据块给应用程序。再者,这种机制对于实时系统非常重要,因为一旦没有这种机制,可能将会导致在一次重要操作的半截,磁盘空间已满。这项特性是通过调用posix_fallocate()来实现的。
如何使用ext4
目前的ext4文件系统是第一个稳定版本,整个的开发进度和发布计划都被放缓了,就是为了保证用户可以享受到“和使用ext3同等级”的稳定。
一个非常重要的事情是,目前还没有ext4 grub。更准确的说,就是目前没有grub支持ext4。换句话说,就是你目前的发行版本的grub不支持ext4。目前我们的grub2正在开发之中,在ubuntu和debian发行版中已经有了grub2的grub-pc软件包了,但是目前官方仍没有宣布正式支持。在google soc中也包含了一个开发版本,且发布了相关补丁。你可以试用一下,你自己选择喽。
在你的发行版本的下一个新版本之中,可能会有相关的支持出现。所以安全起见,尽量保持你的/boot目录为ext3文件系统类型。
警告归警告,转换到ext4其实是件很容易的事情,如下方法均可:
1 建立一个全新的ext4文件系统。
这是最简单的方法,你只需要升级你的e2fsprogs到ext4,并且使用mkfs.ext4命令创建文件系统即可。
2 从ext3迁移到ext4。
你需要使用tune2fs命令和fsck命令,并且当前文件系统需要被卸载才可以。运行命令
tune2fs -o extents,uninit_bg,dir_index /dev/yourfilesystem
此后,你务必运行fsck命令,否则ext4将无法挂载你的新文件系统。在fsck过程中,可能会有一些error需要你的确认。你可以考虑使用 -p选项,来告诉fsck你想要的是“automatic repair”,即fsck -pf /dev/yourfilesystem
3 使用ext4来挂载一个ext3文件系统。
你可以使用mount -t ext4 /dev/yourpartition /mnt来将一个ext3文件系统用ext4来挂载,但你将享受不到那些需要改变磁盘格式才可以享受得到的特性,比如extents。你可以享受到的只有 那些不需要改变磁盘格式即可享受得到的特性,比如多块分配、延迟分配等。我们当然不建议您这么做,因为ext4的优秀特性,您将无法体会….
湃睿科技与碳益科技达成战略合作,引领低碳能源数智化新篇章
介绍硅衬底GaN基Micro LED技术的发展情况
Git高效命令的使用技巧
星闪联盟与共熵服务中心达成战略合作伙伴关系
影驰GTX 1660 SUPER高清拆解图集
Ext4文件系统新特性
javascript和java的区别有哪些
排班系统在呼叫中心的定位
智能插座设计/开关面板设计的详细说明
华为发布了5G Cloud PC多场景应用
网络分析仪维修有那几点问题-安泰网分维修
端子箱导轨式多回路智能型温湿度控制器
雷曼光电称控股股东李跃宗质押463万股
可靠的逻辑高电平I/O电路
各个方向稳定飞行的机器人蜜蜂创建
SPI4.2总线的原理是什么?怎样进行调试?
小米Note10黑色包装盒曝光 Note系列或重新复活
三星Exynos“自供”模式有苦衷?三星AP芯片蓄势待发
环保数采仪
基于区块链技术框架的Substrate智能合约平台解析