将软件RAID卷从ext3转换为ext4(或ext2)?

我有一个mdadm在我的Ubuntu Linux 11机器上创build了软件RAID卷。 这不是启动驱动器。 这是一个由3个大型SATA硬盘组成的软件RAID 5configuration。

当我最初创build它时,我做了ext3。 我从那以后就知道我可以将它转换成ext4(或ext2)。

首先,我想确认一下,这是有道理的,例如转换为ext4会给我更好的性能(在ext3上searchext4似乎是一个共同的好处)。

接下来,是否有任何理由考虑去ext2 – 或者这实际上是一个坏主意?

最后,我该怎么做?

从我收集的内容(例如,从这个站点),我需要卸载音量,然后执行一些命令来转换音量。 我的fstab当前被设置为文件系统types的“自动”。

各种各样的ext [0-9]文件系统之间的差异更多的是function,而不是结构。 优点是它们相互兼容。 例如,你可以挂载一个ext3分区作为 ext2,一切都应该正常工作。 同样,你可以挂载一个ext3分区作为ext4。 无论何时进行这些操作,都无法访问特定于版本的function。 例如,如果您将ext3分区挂载为ext2,则将失去对日志的访问权限。 同样,将ext3分区挂载为ext4将不会让您使用较新的function,例如减lessfsck时间和范围而不是位图。

为了使转换你需要做的,在高层次,是

  1. 卸载分区
  2. 运行转换
  3. 安装分区

所以只要这不是你的主磁盘,你可以做到这一点,而不必closures系统,你只需要期待目标分区closures了一段时间。 和往常一样,在摆弄你的文件系统之前,你应该对数据进行完整的备份,以防你有一些损失。

你应该运行的确切命令如下。 为了我的目的,我将假设你的目标设备是/dev/md0

 umount /dev/md0 fsck.ext3 -pf /dev/md0 tune2fs -O extents,uninit_bg,dir_index /dev/md0 fsck.ext4 -yfD /dev/md0 

第一个fsck是在转换之前确保你的文件系统处于干净和健全的状态。 否则,这个过程可能会失败,甚至更糟的是,可能会成功,但留下不一致的地方。 tune2fs命令用于处理文件系统设置。 它最初是为ext2创build的,因此是名称的'2fs'部分,但是它用于修改所有版本的ext文件系统。 在这种情况下,我们启用了在ext3和ext4之间添加的额外function。 最后的fsck正在做两件事。 首先它确保从转换中发生任何必要的清理,其次它将创build或重build目录索引。

毕竟这将需要编辑/etc/fstab ,以确保它被挂载为ext4,但事实上auto选项应正确识别它。

恭喜,只要没有发生火灾/爆炸/犯下大规模种族灭绝/在这个过程中被判死刑的妻子,那么你应该是一个ext4分区的快乐主人。

是的,转换到ext4应该给你更好的performance,由于延迟分配的原因。 ext4在防止文件碎片方面也更好,这也有助于性能。 而且,ext4模块对于ext3文件系统的处理有一个严肃的说法,即使你停留在ext3上,你很可能也会使用相同的代码Pretty Soon Now(TM)。

去ext2是一个坏主意。 你会转向一个旧的代码,而没有所有的努力工作的文件系统开发人员在十年左右的时间内将ext3和ext4(ext3在2001年秋季推出)的改进。

你如何转换? 有两种方法:

  1. 转换就地。 你已经find了正确的程序,Scott Pack也给出了答案。
  2. 备份,从头开始创build一个ext4并恢复。

第一个问题就不那么麻烦了,但是对于文件系统中已经存在的文件,你没有得到ext4的一些好处(也就是说它们不是基于extent的)。

Backup-mkfs-restore将为您提供所有文件的所有function,而mkfs.ext4将确保数据alignment与您的底层软件RAID保持一致。 如果你在创buildext3文件系统的时候alignment的话,那就没有任何好处了。 如果你犯了一个错误,你可能会获得很多。

select哪种方法? 由你决定。 如果你的文件系统现在工作正常,而你只想运行当前的文件系统,你可以就地转换。 如果您遇到性能问题,并希望文件系统更改将帮助您与这些,我会去一个方法2。

ext3基本上是ext2 +期刊。 维护日志会为正常操作(取决于日志选项设置)增加一定的开销,但会提高文件系统的可靠性并减less系统崩溃或断电后的fsck时间。 对于快速变化的瞬态数据和/或很less变化的数据(或者对于备用电池和/或等待fsck在电源恢复时等待完成的系统),速度的差异可能是显着的 。

将ext3更改为ext2仅仅是将文件系统types更改为ext2并重新启动的问题。 你将有关于将ext3文件系统挂载为ext2的警告,但是你可以通过禁用日志并强制fsck来使这些文件系统消失: tune2fs -O ^has_journal /dev/whatever

ext4基本上是ext3 +的很多新function。 其中最主要的是用连续的内存分配replace了昔日的“块地图”,减less了碎片,提高了线性读取性能,特别是对于大文件。 此外,像目录索引这样的ext3选项默认是打开的。

转换为ext4 可以通过确保您的系统正确支持ext4,然后使用当前版本的tune2fs来启用各种ext4选项,将文件系统types更改为ext4并重新启动来完成,但是此转换方法不会转换任何现有文件的使用范围。 为了ext4的全部好处,最好是备份一切,重新格式化和恢复。

无论你走向哪个方向, 基准支持你的想法,你可以比ext3做得更好。