Ext4 (简体中文)
Ext4是Linux上Ext3文件系统的进化。在很多方面,Ext4对于Ext3有着比Ext3对于Ext2更多更深的改变。Ext3主要是针对Ext2添加了日志系统,而Ext4修改了重要的文件系统的数据结构,比如用来存储文件数据的那部分。当然结果就是文件系统有更好的设计,更好的性能,稳定性还有更多的功能。
来源: Ext4 - Linux Kernel Newbies
直接创建Ext4分区
- 升级你的系统:
pacman -Syu
- 格式化分区:
mkfs.ext4 /dev/sdxY
(查看mkfs.ext4 man帮助获得更多选项) - 挂载这个分区
- 添加相关条目到fstab
/etc/fstab
, 并且修改文件系统类型'type'为 ext4
/etc/mke2fs.conf
可以修改默认配置。从Ext2/3迁移到Ext4
有两种方法迁移分区从Ext3到Ext4:
- 不转换直接把ext3分区挂载成ext4分区格式 (兼容)
- 转换ext3分区到ext4格式 (性能)
这两种方法下面详细介绍。
不转换直接把ext3分区挂载成ext4分区格式
基本原理
转换到ext4和继续使用ext3格式的折衷的办法就是把ext3分区当作ext4分区来挂载。
优点:
- 兼容性 (分区的文件系统依旧可以用ext3挂载) – 这允许用户继续使用那些不支持ext4文件格式的发行版/操作系统来读取该分区。(例如:带ext3驱动的Windows系统)
- 提高性能(然而性能依然没有完全转换成ext4分区时好) – 具体信息参看Ext4 - Linux Kernel Newbies。
缺点:
- 仅有少部分ext4特性能够使用。(只有那些不改变分区格式的功能能被使用,例如multiblock allocation 和 delayed allocation。)
步骤
- 修改
/etc/fstab
,把你想要挂载成ext4的现有ext3分区的'type'栏的内容从 ext3改为ext4。 - 重新挂载使修改成效。
- 完成!
转换ext2/3分区到ext4格式
基本原理
为了能够使用ext4的全部特性,必须完成一个不可逆转的转换过程。
优点:
- 提升性能以及使用新功能 – 细节参见 Ext4 - Linux Kernel Newbies
缺点
- 无法用 ext3 驱动读写 (注意 Windows 中没有已知的 ext4 驱动)
- 不可逆 (ext4 分区无法被 '降级' 到 ext3)
步骤
这些说明是从http://ext4.wiki.kernel.org/index.php/Ext4_Howto 还有 https://bbs.archlinux.org/viewtopic.php?id=61602 截取下来的。已经在2009年1月16日被作者测试过和确认过了。
-
升级! 进行一次整个系统的升级,来保证系统软件符合要求:
pacman -Syu
- 备份! 备份准备转换到ext4的ext3分区上所有的数据。尽管ext4被认为日常使用非常稳定,但是仍然是一个年轻的没有经过充分测试的文件系统。何况,这个转换过程只是经过相对简单的测试,因为不可能测试所有各种各样用户可能用到的环境配置。
- 修改
/etc/fstab
的'type'栏,把需要转换的所有分区的ext3改为ext4。
- 使用
e2fsprogs
的转换过程必须在分区没有被挂载前提下进行。如果转换主分区,最简单的方法就是启动到其他live环境(其他支持ext4的环境)。就如同'前提条件'里面所描述的那样。- 有必要的话,启动到Live环境.
- 对于每个需要转换的分区:
- 确保分区没有被挂载
- 如果要转换的是 ext2,先要增加日志功能,以 root 权限执行:
tune2fs -j /dev/sdxX
。分区变为 ext3 格式。 - 运行
tune2fs -O extents,uninit_bg,dir_index /dev/分区
(/dev/分区
替换成需要转换分区的路径,例如/dev/sda1
) - 运行
fsck -fp /dev/分区
- 重新启动 Arch Linux!
mkinitcpio -p linux
提示和技巧
删除保留块
默认会预留 5% 的文件空间给 root 用户。对现在的大容量硬盘来说是很大的浪费。在下面情况下可以缩小它以节省空间
- 非常大 (例如 >50 G)
- 不被系统文件使用
tune2fs 工具可以完成这个工作,下面的命令将保留比例设置为 1.0%:
tune2fs -m 1.0 /dev/sdXY
问题解决
数据损坏
在强行重启系统之后有可能会遇到数据损坏的情况。请参阅 Ext4 data loss; explanations and workarounds 来获取更多信息。
有人发现在 GRUB menu.lst
文件的 kernel
行后添加 rootflags=data=ordered
可以解决这一问题。
kernel 2.6.30 之后,ext4 更安全了,一些补丁提高了 ext4 的稳定性 - 性能上做了牺牲。参数 auto_da_alloc
可以禁用此行为。更多信息请访问 Linux 2 6 30 - 文件系统性能提升.
2.6.30 之前的内核版本可以在 GRUB 的 menu.lst
中的 kernel
行加入 rootflags=data=ordered
预防问题的发生。
屏障与性能
从内核 2.6.30 开始,ext4 的性能开始下降,原因是由于提供保护数据完整性的功能发生了变化 [1].
大多数文件系统 (XFS, ext3, ext4, reiserfs) 在fsync之后或者传输提交的时候,发送写屏障信号给磁盘。写屏障信号可以确保正确的写入顺序,是易失性的写入缓存可以安全的使用(损失一些性能)。如果你的磁盘有一种或多种备用电源,禁用屏障可以安全的提升性能。
发送写入屏障可以通过使用 barrier=0 挂载选项(对于 ext3, ext4, 和 reiserfs) ,或者使用 nobarrier 挂载选项(对于 XFS)来禁用。 [2].
要关闭屏障选项,添加 barrier=0
选项到 /etc/fstab
中想要的文件系统中。例如:
# /dev/sda5 / ext4 noatime,barrier=0 0 1
E4rat
E4rat 是为 ext4 文件系统专门设计的应用程序。它可以监视自开机以来被打开的文件,通过优化它们在分区上所处的位置,并在开机过程之初就预加载它们来提升访问效率。