HACK #17 如何使用ext4
本节介绍ext4的编写和挂载方法、开发版ext4的使用方法。
ext4是ext3的后续文件系统,从Linux 2.6.19开始使用。现在主要的发布版中多数都是采用ext4作为标准文件系统。
除了间接参照块管理以外,ext4还以扩展形式支持块的管理,使其能够处理更大的文件、文件系统。另外,还增加了确保多块(multiblock)注1、确保延迟块、提高fsck速度、碎片整理等新的功能。在ext3中,时间戳(time stamp)的单位为毫秒,而ext4中变成了纳秒,可管理的时间日期上限也从2038年为止扩展到2514年为止。时间戳的种类也在以往的mtime、atime、ctime基础上增加了保存文件生成时间的crtime注2。
表3-1所示为ext3和ext4主要功能的差异。
表3-1 ext3和ext4的性能、功能比较
ext4的生成与挂载
下面介绍ext4的生成方法。生成文件系统时可以使用e2fsprogs中的mke2fs命令。mke2fs有很多种选项。表3-2介绍其中的一部分。
表3-2 mke2fs的选项
选项的详细情况请参考mke2fs命令的操作指南。
生成ext4时,需要将文件系统的种类指定为ext4,执行mke2fs命令。在该例子中使用的是Fedora 14的e2fsprogs-1.41.12-5,在/dev/sdb1上生成ext4。
# mke2fs -t ext4 /dev/sdb1 或mkfs -t ext4 /dev/sdb1
挂载ext4时可以执行mount命令。需要向变量指定设备和挂载点。在该例子中是挂载到/mnt。
# mount -t ext4 /dev/sdb1 /mnt
关于mount选项
ext4中增加了很多功能。这些功能多数都可以在生成文件系统时或挂载时选择启用/禁用。这里介绍可以在挂载中设置的一部分选项(见表3-3)。
mount选项的详细内容请参考mount命令的操作指南或内核文档(Documentation/filesystems/ext4.txt)。
表3-3 ext4的挂载选项
开发版ext4的获取方法
现在论坛也在对ext4进行积极开发。开发版的ext4包含新的功能和bug的修改等。利用开发版时,需要从ext4的维护人员所管理的Git树中获取。这里将介绍获取开发版内核、命令的方法。获取时可以使用git命令。
ext4 patch queue的获取
正在开发的ext4的补丁包括在ext4 patch queue中。可以使用下列方法来获取。
# git clone http://repo.or.cz/r/ext4-patch-queue.git
获取成功后,就会生成ext4-patch-queue目录。其中就有适用于ext4的补丁。对应的内核版本、适用的补丁的顺序记载在series文件中。
# cat ext4-patch-queue/series
# BASE v3.0-rc1
#
correct-comments-for-ext4_free_blocks
fix-max-file-size
use-FIEMAP_EXTENT_LAST-flag-for-last-extent
fixed-tracepoints-cleanup
# potential problems?
fix-oops-in-jbd2_journal_remove_journal_head
##########################################
# unstable patches
####################################################
stable-boundary
...
将这些补丁适用于内核的源代码后,生成的内核就具有ext4的最新功能。
开发版的e2fsprogs的获取
e2fsprogs的Git树可以执行下列命令来获取。
# git clone http://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
这时获取的是最新的稳定版e2fsprogs,因此需要切换到开发版的“next”分支。
# git checkout next
这样就切换到了开发版的e2fsprogs。可以通过执行configure,make来使用各种命令。由于内核、命令都是开发版,因此在使用过程中可能会发现bug。这时请向linux-ext4@vger.kernel.org报告。
小结
本节介绍了ext4的生成与挂载、获取开发版ext4的内核补丁和命令的方法。ext4具有比ext3更多的功能,作为更加便捷的文件系统,能够吸引更多的用户。
参考文献
Ext4(and Ext2/Ext3)Wiki
https://ext4.wiki.kernel.org/index.php/Main_Page
Mailing list ARChives
http://marc.info/?l=linux-ext4&r=1&w=2
—Akira Fujita