谈天说地

“Ext4”三部曲之三

本原创文章属于《Linux大棚》博客,博客地址为http://roclinux.cn。文章作者为rocrocket。
为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅。

===

[正文开始]

上接“Ext4”三部曲之二

===

i结点相关特性

更大的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的优秀特性,您将无法体会….

over~

发表您的评论

请您放心,您的信息会被严格保密。必填项已标识 *