Difference between revisions of "Ext4 (简体中文)"

From ArchWiki
Jump to navigation Jump to search
(update interlanguage links)
Tag: wiki-scripts
 
(32 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{i18n_links_start}}
+
[[Category:简体中文]]
{{i18n_entry|Česky|Ext4 (Česky)}}
+
[[Category:File systems (简体中文)]]
{{i18n_entry|English|Ext4}}
+
[[cs:Ext4]]
{{i18n_entry|Türkçe|Ext4 (Türkçe)}}
+
[[de:Ext4]]
{{i18n_entry|简体中文|Ext4 (简体中文)}}
+
[[en:Ext4]]
{{i18n_links_end}}
+
[[es:Ext4]]
{{translateme}}
+
[[fr:Ext4]]
 
+
[[it:Ext4]]
=介绍=
+
[[ja:Ext4]]
 
+
[[pt:Ext4]]
 +
[[ru:Ext4]]
 
Ext4是Linux上Ext3文件系统的进化。在很多方面,Ext4对于Ext3有着比Ext3对于Ext2更多更深的改变。Ext3主要是针对Ext2添加了日志系统,而Ext4修改了重要的文件系统的数据结构,比如用来存储文件数据的那部分。当然结果就是文件系统有更好的设计,更好的性能,稳定性还有更多的功能。
 
Ext4是Linux上Ext3文件系统的进化。在很多方面,Ext4对于Ext3有着比Ext3对于Ext2更多更深的改变。Ext3主要是针对Ext2添加了日志系统,而Ext4修改了重要的文件系统的数据结构,比如用来存储文件数据的那部分。当然结果就是文件系统有更好的设计,更好的性能,稳定性还有更多的功能。
  
 
来源: [http://kernelnewbies.org/Ext4 Ext4 - Linux Kernel Newbies]
 
来源: [http://kernelnewbies.org/Ext4 Ext4 - Linux Kernel Newbies]
  
=删除一个分区并创建ext4分区=
+
== 直接创建Ext4分区==
  
# 升级你的系统: {{Codeline|pacman -Syu}}
+
# 升级你的系统: {{Ic|pacman -Syu}}
# 格式化分区: {{Codeline|mkfs.ext4 /dev/sdxY}} (查看mkfs.ext4 man帮助获得更多选项)
+
# 格式化分区: {{Ic|mkfs.ext4 /dev/sdxY}} (查看mkfs.ext4 man帮助获得更多选项)
 
# 挂载这个分区
 
# 挂载这个分区
# 添加相关条目到fstab {{Filename|/etc/fstab}}, 并且修改文件系统类型'type'为 ext4
+
# 添加相关条目到fstab {{ic|/etc/fstab}}, 并且修改文件系统类型'type'为 ext4
  
=从Ext3迁移到Ext4=
+
{{小贴士|mkfs.ext4 的 man 页面提供了更多选项;编辑 {{ic|/etc/mke2fs.conf}} 可以修改默认配置。}}
 +
 
 +
==从Ext2/3迁移到Ext4==
  
 
有两种方法迁移分区从Ext3到Ext4:
 
有两种方法迁移分区从Ext3到Ext4:
* 不转换直接把ext3分区挂载成ext4分区格式 (兼容模式)
+
* 不转换直接把ext3分区挂载成ext4分区格式 (兼容)
* 转换ext3分区到ext4格式 (性能模式?)
+
* 转换ext3分区到ext4格式 (性能)
  
 
这两种方法下面详细介绍。
 
这两种方法下面详细介绍。
  
==不转换直接把ext3分区挂载成ext4分区格式==
+
===不转换直接把ext3分区挂载成ext4分区格式===
  
 
===基本原理===
 
===基本原理===
Line 34: Line 37:
 
转换到ext4和继续使用ext3格式的折衷的办法就是把ext3分区当作ext4分区来挂载。
 
转换到ext4和继续使用ext3格式的折衷的办法就是把ext3分区当作ext4分区来挂载。
  
'''Pros:'''
+
'''优点:'''
* Compatibility (the filesystem can continue to be mounted as ext3) – This allows users to still read the filesystem from other distributions/operating systems without ext4 support (e.g. Windows with ext3 drivers)
+
* 兼容性 (分区的文件系统依旧可以用ext3挂载) – 这允许用户继续使用那些不支持ext4文件格式的发行版/操作系统来读取该分区。(例如:带ext3驱动的Windows系统)
* Improved performance (though not as much as a fully-converted ext4 partition) – See [http://kernelnewbies.org/Ext4 Ext4 - Linux Kernel Newbies] for details
+
* 提高性能(然而性能依然没有完全转换成ext4分区时好) – 具体信息参看[http://kernelnewbies.org/Ext4 Ext4 - Linux Kernel Newbies]
  
'''Cons:'''
+
'''缺点:'''
* Fewer features of ext4 are used (only those that do not change the disk format such as multiblock allocation and delayed allocation)
+
* 仅有少部分ext4特性能够使用。(只有那些不改变分区格式的功能能被使用,例如multiblock allocation delayed allocation。)
  
{{Note|Except for the relative novelty of ext4 (which can be seen as a risk), '''there is no major drawback to this technique'''.}}
+
{{注意|除了由ext4格式带来的相对新的不一样的特性(可以看作一种潜在风险)之外,'''这种技术没有明显缺点'''}}
  
===步骤===
+
====步骤====
  
# 修改 {{Filename|/etc/fstab}},把你想要挂载成ext4的现有ext3分区的'type'栏的内容从 ext3改为ext4。
+
# 修改 {{ic|/etc/fstab}},把你想要挂载成ext4的现有ext3分区的'type'栏的内容从 ext3改为ext4。
 
# 重新挂载使修改成效。
 
# 重新挂载使修改成效。
 
# 完成!
 
# 完成!
  
==转换ext3分区到ext4格式==
+
===转换ext2/3分区到ext4格式===
  
===基本原理===
+
====基本原理====
  
 
为了能够使用ext4的全部特性,必须完成一个不可逆转的转换过程。
 
为了能够使用ext4的全部特性,必须完成一个不可逆转的转换过程。
  
'''Pros:'''
+
'''优点:'''
* Improved performance and awesome new features – See [http://kernelnewbies.org/Ext4 Ext4 - Linux Kernel Newbies] for details
+
* 提升性能以及使用新功能 – 细节参见 [http://kernelnewbies.org/Ext4 Ext4 - Linux Kernel Newbies]
  
'''Cons:'''
+
'''缺点'''
* Cannot be read/written with ext3 drivers (note that there is no known ext4 driver for Windows)
+
* 无法用 ext3 驱动读写 (注意 Windows 中没有已知的 ext4 驱动)
* Irreversible (ext4 partitions cannot be 'downgraded' to ext3)
+
* 不可逆 (ext4 分区无法被 '降级' ext3)
  
===必要条件===
+
====步骤====
  
在 Arch Linux 下需要如下软件:
+
这些说明是从http://ext4.wiki.kernel.org/index.php/Ext4_Howto 还有 https://bbs.archlinux.org/viewtopic.php?id=61602 截取下来的。已经在2009年1月16日被作者测试过和确认过了。
* {{Codeline|1=kernel26 >= 2.6.28}}
 
* {{Codeline|1=e2fsprogs >= 1.41}}
 
  
如果需要/boot分区也转换成ext4,还要求:
+
* '''升级!''' 进行一次整个系统的升级,来保证系统软件符合要求: {{Ic|pacman -Syu}}
* {{Codeline|1=grub >= 0.97}} (包含ext4补丁)
+
* '''[[Backup programs|备份!]]''' 备份准备转换到ext4的ext3分区上所有的数据。尽管ext4被认为日常使用非常稳定,但是仍然是一个年轻的没有经过充分测试的文件系统。何况,这个转换过程只是经过相对简单的测试,因为不可能测试所有各种各样用户可能用到的环境配置。
 +
* 修改 {{ic|/etc/fstab}} 的'type'栏,把需要转换的所有分区的ext3改为ext4。
  
{{注意|ext4补丁已经包含在默认的Archlinux的grub软件包里面了 。 或者,[[GRUB2]]也可以用来从ext4分区启动你的系统。}}
+
{{警告|如果不启用新的功能(不完全转换)的话,ext4是向下兼容ext3的。也就是不进行下面的步骤,如果用户有个分区需要和其他系统共享数据,但是其他系统并不支持ext4,那么还是可以在不支持ext4的系统中以ext3的方式挂载此分区,而在Arch中以ext4方式挂载。 但是,这样没有完全转换的ext4只拥有和ext3非常少的新特性。}}
  
{{警告|从ext4分区启动并不是grub的''官方的''支持,即使[[GRUB2]]相关支持也仍然在开发当中。虽然GRUB确实能正常工作,但更安全的选择是继续在/boot分区上使用ext2或者ext3格式。'''要注意这一点!'''}}
+
* 使用{{Ic|e2fsprogs}}的转换过程必须在分区没有被挂载前提下进行。如果转换主分区,最简单的方法就是启动到其他live环境(其他支持ext4的环境)。就如同'前提条件'里面所描述的那样。
 +
** 有必要的话,启动到Live环境.
 +
** 对于每个需要转换的分区:
 +
*** 确保分区'''没有'''被挂载
 +
*** 如果要转换的是 ext2,先要增加日志功能,以 root 权限执行:{{ic|tune2fs -j /dev/sdxX}}。分区变为 ext3 格式。
 +
*** 运行{{Ic|tune2fs -O extents,uninit_bg,dir_index /dev/分区}} ({{Ic|/dev/分区}}替换成需要转换分区的路径,例如{{Ic|/dev/sda1}})
 +
*** 运行{{Ic|fsck -fp /dev/分区}}
  
如果需要转换主分区(/)到ext4还需要:
+
{{注意|用户'''必须'''检测(fsck)这个文件系统, 否则这个分区将不可读! 检测磁盘能够让文件系统回到一般状态。'''这个过程将在group descriptors找到checksum错误''' -- 这个是被预料到的。 '-f'参数要求磁盘检测一定要检查,哪怕文件系统标记是正常的。'-p'参数要求检测的时候能够自动修复(否则,用户将被要求没遇到一个错误确认一次).}}
* {{Codeline|1=mkinitcpio >= 0.5.20}}
 
  
如果需要转换主分区(/)到ext4,还需要一个带有如下软件的可引导的CD或者USB设备:
+
* 重新启动 Arch Linux!
* {{Codeline|1=e2fsprogs >= 1.41}}
 
  
{{注意|1=推荐使用最新的Arch Linux(2009.02)。更老版本的Arch Linux镜像(<= 2008.06)只有老版本的{{Codeline|e2fsprogs}}, 但是仍然可以简单的进入Live环境后使用{{Codeline|pacman -Sy e2fsprogs}}来安装新版,当然得设置好网络。还有个选择,去[http://www.sysresccd.org/Download SystemRescueCd >= 1.1.4]下载一个合适的版本,他本身就是一个方便的CD。}}
+
{{警告|如果用户转换了主(/)分区,启动过程可能遇到kernel panic。如果真的出现了,简单的使用fallback模式启动,然后重新创建默认模式:{{Ic|mkinitcpio -p linux}}}}
  
===步骤===
+
==提示和技巧==
 +
===删除保留块===
  
这些说明是从http://ext4.wiki.kernel.org/index.php/Ext4_Howto 还有 http://bbs.archlinux.org/viewtopic.php?id=61602截取下来的。已经在2009年1月16日被作者测试过和确认过了。
+
默认会预留 5% 的文件空间给 root 用户。对现在的大容量硬盘来说是很大的浪费。在下面情况下可以缩小它以节省空间
  
* '''升级!''' 进行一次整个系统的升级,来保证系统软件符合要求: {{Codeline|pacman -Syu}}
+
* 非常大 (例如 >50 G)
* '''[[Backup programs|备份!]]''' 备份准备转换到ext4的ext3分区上所有的数据。尽管ext4被认为日常使用非常稳定,但是仍然是一个年轻的没有经过充分测试的文件系统。何况,这个转换过程只是经过相对简单的测试,因为不可能测试所有各种各样用户可能用到的环境配置。
+
* 不被系统文件使用
* 修改 {{Filename|/etc/fstab}} 的'type'栏,把需要转换的所有分区的ext3改为ext4。
 
  
{{警告|如果不启用新的功能(不完全转换)的话,ext4是向下兼容ext3的。也就是不进行下面的步骤,如果用户有个分区需要和其他系统共享数据,但是其他系统并不支持ext4,那么还是可以在不支持ext4的系统中以ext3的方式挂载此分区,而在Arch中以ext4方式挂载。 但是,这样没有完全转换的ext4只拥有和ext3非常少的新特性。}}
+
tune2fs 工具可以完成这个工作,下面的命令将保留比例设置为 1.0%:
  
* 使用{{Codeline|e2fsprogs}}的转换过程必须在分区没有被挂载前提下进行。如果转换主分区,最简单的方法就是启动到其他live环境(其他支持ext4的环境)。就如同'前提条件'里面所描述的那样。
+
tune2fs -m 1.0 /dev/sdXY
** 有必要的话,启动到Live环境.
 
** 对于每个需要转换的分区:
 
*** 确保分区'''没有'''被挂载
 
*** 运行{{Codeline|tune2fs -O extents,uninit_bg,dir_index /dev/分区}} ({{Codeline|/dev/分区}}替换成需要转换分区的路径,例如{{Codeline|/dev/sda1}})
 
*** 运行{{Codeline|fsck -fp /dev/分区}}
 
 
 
{{注意|用户'''必须'''检测(fsck)这个文件系统, 否则这个分区将不可读! 检测磁盘能够让文件系统回到一般状态。'''这个过程将在group descriptors找到checksum错误''' -- 这个是被预料到的。 '-f'参数要求磁盘检测一定要检查,哪怕文件系统标记是正常的。'-p'参数要求检测的时候能够自动修复(否则,用户将被要求没遇到一个错误确认一次).}}
 
  
* 重新启动 Arch Linux!
+
==问题解决==
 +
====数据损坏====
 +
在强行重启系统之后有可能会遇到数据损坏的情况。请参阅 [http://www.h-online.com/open/Ext4-data-loss-explanations-and-workarounds--/news/112892 Ext4 data loss; explanations and workarounds] 来获取更多信息。
  
{{警告|1=如果用户转换了主(/)分区,启动过程可能遇到kernel panic。如果真的出现了,简单的使用fallback模式启动,然后重新创建默认模式: {{Codeline|mkinitcpio -p kernel26}}}}
+
有人发现在 GRUB {{ic|menu.lst}} 文件的 {{Ic|kernel}} 行后添加 {{Ic|1=rootflags=data=ordered}} 可以解决这一问题。
  
=问题解决=
+
kernel 2.6.30 之后,ext4 更安全了,一些补丁提高了 ext4 的稳定性 - 性能上做了牺牲。参数 {{Ic|auto_da_alloc}} 可以禁用此行为。更多信息请访问 [http://kernelnewbies.org/Linux_2_6_30#head-329ba44b44a7f58c98ae22b8f2730418cdd6630d Linux 2 6 30 - 文件系统性能提升].
  
===Kernel Panic===
+
2.6.30 之前的内核版本可以在  GRUB 的 {{ic|menu.lst}}  中的 {{Ic|kernel}} 行加入 {{Ic|1=rootflags=data=ordered}} 预防问题的发生。
One problem this author encountered was a kernel panic after converting the root (/) partition to ext4. This is because the initial ramdisk was detecting the partition as 'ext4dev', rather than 'ext4'. It was a simple matter to boot with the 'fallback' initial ramdisk and re-create the 'default' initial ramdisk:
 
# mkinitcpio -p kernel26
 
  
During the creation process, {{Codeline|mkinitcpio}} correctly detected and included ext4 modules in the initial ramdisk.
+
==== 屏障与性能 ====
  
===GRUB Error 13===
+
从内核 2.6.30 开始,ext4 的性能开始下降,原因是由于提供保护数据完整性的功能发生了变化 [http://www.phoronix.com/scan.php?page=article&item=ext4_then_now&num=1].
After a recent kernel update, this author encountered a GRUB error while attempting to boot from an ext4 /boot partition:
 
Error 13: Invalid or unsupported executable format
 
  
The solution is to boot from the live medium and chroot into the Arch Linux installation:
+
''大多数文件系统 (XFS, ext3, ext4, reiserfs) 在fsync之后或者传输提交的时候,发送写屏障信号给磁盘。写屏障信号可以确保正确的写入顺序,是易失性的写入缓存可以安全的使用(损失一些性能)。如果你的磁盘有一种或多种备用电源,禁用屏障可以安全的提升性能。''
# mkdir /mnt/arch
 
# mount -t ext4 /dev/sda1 /mnt/arch
 
# mount -t proc proc /mnt/arch/proc
 
# mount -t sysfs sys /mnt/arch/sys
 
# mount -o bind /dev /mnt/arch/dev
 
  
# chroot /mnt/arch /bin/bash
+
''发送写入屏障可以通过使用 barrier=0 挂载选项(对于 ext3, ext4, 和 reiserfs) ,或者使用 nobarrier 挂载选项(对于 XFS)来禁用。'' [http://doc.opensuse.org/products/draft/SLES/SLES-tuning_sd_draft/cha.tuning.io.html].
  
If /boot is on a separate partition, this partition must also be mounted:
+
{{警告|如果磁盘无法保证在电源掉电时缓存正确写入,禁用写入屏障可以导致严重的文件系统损坏和数据丢失。}}
# mount -t ext4 /dev/sda2 /boot
 
  
Then, the following command should resolve the issue. (Does anyone know why?):
+
要关闭屏障选项,添加 {{Ic|1=barrier=0}} 选项到 {{ic|/etc/fstab}} 中想要的文件系统中。例如:
# grub-install --recheck /dev/sda
 
  
===Data Corruption===
+
# /dev/sda5    /    ext4    noatime,barrier=0    0    1
If data corruption is encountered after a hard reboot, one user found that adding {{Codeline|1=rootflags=data=ordered}} to their {{Codeline|kernel}} line in GRUB's {{Filename|menu.lst}} helped resolve the issue.
 
  
''(It was not specified whether this recovered the corrupt data or whether it simply helped prevent future corruption.)''
+
===== E4rat =====
  
Please read [http://www.h-online.com/open/Ext4-data-loss-explanations-and-workarounds--/news/112892 Ext4 data loss; explanations and workarounds] for more information.
+
[[E4rat]] 是为 ext4 文件系统专门设计的应用程序。它可以监视自开机以来被打开的文件,通过优化它们在分区上所处的位置,并在开机过程之初就预加载它们来提升访问效率。
  
[[Category:HOWTOs (English)]] [[Category:File systems (English)]]
+
== 参见 ==
 +
*[[Fstab (简体中文)|Fstab]]

Latest revision as of 17:25, 13 December 2017

Ext4是Linux上Ext3文件系统的进化。在很多方面,Ext4对于Ext3有着比Ext3对于Ext2更多更深的改变。Ext3主要是针对Ext2添加了日志系统,而Ext4修改了重要的文件系统的数据结构,比如用来存储文件数据的那部分。当然结果就是文件系统有更好的设计,更好的性能,稳定性还有更多的功能。

来源: Ext4 - Linux Kernel Newbies

直接创建Ext4分区

  1. 升级你的系统: pacman -Syu
  2. 格式化分区: mkfs.ext4 /dev/sdxY (查看mkfs.ext4 man帮助获得更多选项)
  3. 挂载这个分区
  4. 添加相关条目到fstab /etc/fstab, 并且修改文件系统类型'type'为 ext4
提示: mkfs.ext4 的 man 页面提供了更多选项;编辑 /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。)
注意: 除了由ext4格式带来的相对新的不一样的特性(可以看作一种潜在风险)之外,这种技术没有明显缺点

步骤

  1. 修改 /etc/fstab,把你想要挂载成ext4的现有ext3分区的'type'栏的内容从 ext3改为ext4。
  2. 重新挂载使修改成效。
  3. 完成!

转换ext2/3分区到ext4格式

基本原理

为了能够使用ext4的全部特性,必须完成一个不可逆转的转换过程。

优点:

缺点

  • 无法用 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。
警告: 如果不启用新的功能(不完全转换)的话,ext4是向下兼容ext3的。也就是不进行下面的步骤,如果用户有个分区需要和其他系统共享数据,但是其他系统并不支持ext4,那么还是可以在不支持ext4的系统中以ext3的方式挂载此分区,而在Arch中以ext4方式挂载。 但是,这样没有完全转换的ext4只拥有和ext3非常少的新特性。
  • 使用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/分区
注意: 用户必须检测(fsck)这个文件系统, 否则这个分区将不可读! 检测磁盘能够让文件系统回到一般状态。这个过程将在group descriptors找到checksum错误 -- 这个是被预料到的。 '-f'参数要求磁盘检测一定要检查,哪怕文件系统标记是正常的。'-p'参数要求检测的时候能够自动修复(否则,用户将被要求没遇到一个错误确认一次).
  • 重新启动 Arch Linux!
警告: 如果用户转换了主(/)分区,启动过程可能遇到kernel panic。如果真的出现了,简单的使用fallback模式启动,然后重新创建默认模式: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 文件系统专门设计的应用程序。它可以监视自开机以来被打开的文件,通过优化它们在分区上所处的位置,并在开机过程之初就预加载它们来提升访问效率。

参见