《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #17 如何使用ext4

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

时间: 2024-08-18 07:47:38

《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #17 如何使用ext4的相关文章

《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #1 如何获取Linux内核

HACK #1 如何获取Linux内核 本节介绍获取Linux内核源代码的各种方法. "获取内核"这个说法看似简单,其实Linux内核有很多种衍生版本.要找出自己想要的源代码到底是哪一个,必须首先理解各种衍生版本的意义. 接下来将简单介绍Linux内核的开发模式,并分析各种衍生版本在其中所处的地位,然后介绍获取这些衍生版本的源代码的方法. 内核的种类 想要获取正确的Linux内核源代码,首先必须了解Linux内核的开发模式. Linux内核是由多个开发者以分散型的模式进行开发的.这里出

《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #15 ramzswap

HACK #15 ramzswap 本节介绍将一部分内存作为交换设备使用的ramzswap. ramzswap是将一部分内存空间作为交换设备使用的基于RAM的块设备.对要换出(swapout)的页面进行压缩后,不是写入磁盘,而是写入内存.可以使用的内存仅为完成压缩的部分.压缩处理使用的是LZO注1. ramzswap是从Linux 2.6.33合并到Staging驱动程序的.Staging驱动程序是指尚未达到某种程度的质量的试验性驱动程序. 通过使用ramzswap,运转速度可以比换出到一般磁盘

《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #3 如何编写内核模块

HACK #3 如何编写内核模块 本节将介绍向Linux内核中动态添加功能的结构-内核模块的编写方法. 内核模块 Linux内核是单内核(monolithic kernel),也就是所有的内核功能都集成在一个内核空间内.但是内核具有模块功能,可以将磁盘驱动程序.文件系统等独立的内核功能制作成模块,并动态添加到内核空间或者删除. 内核模块是可以动态添加到Linux内核空间的二进制文件,文件扩展名为ko. 内核模块的编写方法大致有两种.一种是将内核源码树带有的功能编写为模块的方法(参考Hack #2

《Linux内核精髓:精通Linux内核必会的75个绝技》一导读

前 言 内核是操作系统的核心,操作系统的基本功能都是由内核提供的.文件生成和数据包传输等也是通过内核的功能实现的.但这些都不是简单的任务.平时可能意识不到,但这其中确实包含了很多先进技术.例如,在文件系统方面,配置文件时尽量减少磁盘扫描,在网络方面,由于路由表的入口数量庞大,因此设计时尽量保证对系统整体影响较小的设计.在内存管理.进程管理方面也作出了很多努力.解读这种先进技术也是内核构建的魅力之一. 然而,最近的Linux所提供的并不只有基本功能.随着功能的不断发展,现在已经出现了很多特定领域的

《Linux内核精髓:精通Linux内核必会的75个绝技》一第1章 内核入门

第1章 内核入门 一提起内核包,总会让人感觉似乎困难至极.如临深渊一般.但其基本的操作与其他开放源代码软件包并没有什么不一样,都是首先获取源代码,进行解读,然后修改或者添加新功能对应的代码,并编译.测试.本章将介绍这些内核包操作中最基础的知识,以及Linux内核特有的方法.

《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #18 向ext4转换

HACK #18 向ext4转换 ext4可以与ext2/ext3在后台进行互换.这里将介绍从ext2/ext3转换的方法以及转换时的注意事项. 转换 有两种方法可以将ext2/ext3的磁盘映像作为ext4来使用. 1.直接作为ext4挂接 执行下列命令,就可以将ext2/ext3的磁盘映像/dev/sdb1作为ext4挂载到/mnt. # mount -t ext4 /dev/DEV MOUNTPOINT 通过上述方法,ext4的多块分配.延迟分配等功能也可以使用,因此性能比ext2/ext

《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #19 ext4的调整

HACK #19 ext4的调整 本节介绍可以从用户空间执行的ext4调整.ext4在sysfs中有一些关于调整的特殊文件(见表3-6).使用这些特殊文件,就不用进行内核编译.重启,直接从用户空间确认.更改内核空间的设置参数.表3-6 sysfs中的ext4文件 /sys/fs/ext4/<设备名>下有与文件系统相关的各种文件.表3-6所示为这些文件的说明和默认值的列表.这里将具体介绍上述文件中最为有效的部分文件. lifetime_write_kbytes与session_write_kby

《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #8 调度策略

HACK #8 调度策略 本节介绍Linux的调度策略(scheduling policy). Linux调度策略的类别大致可以分为TSS(Time Sharing System,分时系统)和实时系统这两种. 一方面,一般的进程是通过分时运行的.也就是说,使用CPU的时间达到分配给进程的时间(时间片)时,就会切换到其他进程.这种分时运行的调度策略称为TSS. 另一方面,在实时制约较严格且要求保证实时的处理中,就需要指定静态的执行优先级,并严格按照执行优先级进行调度.对这种对应答性有要求的进程,可

《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #4 如何使用Git

HACK #4 如何使用Git 本节介绍Git的使用方法. Git是Linux内核等众多OSS(Open Source Software,开源软件)开发中所使用的SCM(Source Code Management,源码管理)系统.在2005年以前,在Linux内核开发中一直使用一个叫做BitKeeper的SCM.但是由于后来BitKeeper的许可证被更改,可能会对开发造成障碍,因此Linux不得不改用新的SCM进行开发.在这种情况下,Linux内核的创始人Linus Torvalds就开发了