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

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

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

    HACK #1 如何获取Linux内核 本节介绍获取Linux内核源代码的各种方法.“获取内核”这个说法看似简单,其实Linux内核有很多种衍生版本.要找出自己想要的源代码到底是哪一个,必须首先理解各 ...

  2. 《Linux内核精髓:精通Linux内核必会的75个绝技》目录

    1章 内核入门HACK #1 如何获取Linux内核HACK #2 如何编译Linux内核HACK #3 如何编写内核模块HACK #4 如何使用GitHACK #5 使用checkpatch.pl检 ...

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

    HACK #15 ramzswap 本节介绍将一部分内存作为交换设备使用的ramzswap.ramzswap是将一部分内存空间作为交换设备使用的基于RAM的块设备.对要换出(swapout)的页面进行 ...

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

    HACK #3 如何编写内核模块 本节将介绍向Linux内核中动态添加功能的结构—内核模块的编写方法.内核模块Linux内核是单内核(monolithic kernel),也就是所有的内核功能都集成在 ...

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

    HACK #19 ext4的调整 本节介绍可以从用户空间执行的ext4调整.ext4在sysfs中有一些关于调整的特殊文件(见表3-6).使用这些特殊文件,就不用进行内核编译.重启,直接从用户空间确认 ...

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

    HACK #18 向ext4转换 ext4可以与ext2/ext3在后台进行互换.这里将介绍从ext2/ext3转换的方法以及转换时的注意事项.转换有两种方法可以将ext2/ext3的磁盘映像作为ex ...

  7. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #21FUSE

    HACK #21FUSE 本节将介绍使用用户进程的文件系统框架—FUSE.FUSE概要FUSE(Filesystem in Userspace,用户空间文件系统),是用来生成用户空间的一般进程的框架. ...

  8. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #20 使用fio进行I/O的基准测试

    HACK #20 使用fio进行I/O的基准测试 本节介绍使用fio进行模拟各种情况的I/O基准测试的操作方法.I/O的基准测试中有无数需要考虑的因素.是I/O依次访问还是随机访问?是通过read/w ...

  9. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #16 OOM Killer的运行与结构

    HACK #16 OOM Killer的运行与结构(1) 本节介绍OOM Killer的运行与结构. Linux中的Out Of Memory(OOM) Killer功能作为确保内存的最终手段,可以在 ...

随机推荐

  1. 题目1001:A+B for Matrices

    题目1001:A+B for Matrices 时间限制:1 秒内存限制:32 兆 题目描述: This time, you are supposed to find A+B where A and  ...

  2. sql,去重

    distinct SELECT distinct nf FROM BSHGJJK.T_JJ_NY_QSNCJBQK order by nf desc 来自为知笔记(Wiz)

  3. 【linux基础】ubuntu如何查看linux的内核版本和系统版本

    参考 1.查看linux内核和系统版本: 完

  4. xdoj-1149(多重集合+容斥原理+组合数取模)

    #include <iostream> #include <algorithm> #include <cstdio> using namespace std; ty ...

  5. (转)函数库调用 VS 系统调用

    Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions).可以参考<Linux程序设计>(英文原版为<Beginning ...

  6. (1)集合 ---遍历map集合

    Map接口     实现Map接口的类用来存储键(key)-值(value) 对.Map 接口的实现类有HashMap和TreeMap等.Map类中存储的键-值对通过键来标识,所以键值不能重复. Ha ...

  7. test20180922 倾斜的线

    题意 问题描述 给定两个正整数P和Q.在二维平面上有n个整点.现在请你找到一对点使得经过它们的直线的斜率在数值上最接近P/Q(即这条直线的斜率与P/Q的差最小),请输出经过它们直线的斜率p/q.如果有 ...

  8. Apache和Nginx的Rewrite规则对比

    一.Apache的rewrite 1.Rewrite规则简介: Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的(.h ...

  9. baidu手机浏览器安卓4.5版公布:由于快,所以爱

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDUyMzk4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  10. MySQL命令行--导入导出数据库

    MySQL命令行导出数据库:   1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:\Program Files\MySQL\MySQL Se ...