如何在Linux上将ext2或ext3文件系统迁移到ext4

你知道你应该升级你的Linux文件系统,但不能面对这种恶化吗?下面介绍如何将ext2和ext3转换为ext4,而无需完全重新安装。

Linux文件系统

如果您有礼貌的话,您会说ext3文件系统历史悠久,它早在2001年就推出了。至于可怜的老ext2,这个文件系统源自1993年,除了古老之外,没有其他词可以用来形容它。在计算机术语中,ext3是一件古董。而ext2是一项考古发现。

Linux世界中的现代文件系统是2008年发布的ext4。它更快,更不容易碎片化,能够处理更大的文件系统-更大的文件-它有更准确的文件日期戳,我们提到过它更快吗?快多了。

好的,我被卖了-我们开始吧

让我们把这件事想清楚。实际上,您可能不想升级文件系统。

相反,升级整个Linux系统更有意义。我们所说的升级是指进行几次数据备份,擦除您的系统,重新安装最新的发行版,并恢复您的数据。去彻底刷新一下吧。通过更新的软件以及干净的、最新的和新安装的文件系统获得现代Linux发行版的好处。

如果你不能在你的硬件上运行现代的Linux,即使是像Lubuntu、LinuxLite或CrunchBang++这样的轻量级发行版,你也必须坚持使用你已经拥有的Linux,仍然有一些警告。

要将文件系统升级到ext4,您必须使用内核版本2.6.28或更高版本。因此,如果您没有该版本或更高版本的内核,则必须首先升级内核。

警告:在没有满足内核版本要求的情况下,不要想尝试这样做。您最终会得到一台无法引导的计算机。在继续之前,请检查您正在使用的内核版本。

确保您有当前使用的Linux版本的安装盘,并将其保持在待机状态。升级文件系统并非没有危险。

备份是您的安全网。在做任何事情之前,请将数据备份到不同的备份介质,并确保手头有旧的Linux安装盘。如果出现严重问题,您可以重新安装旧的Linux并恢复数据。

您还需要现代Linux发行版的最新LiveCD/DVD来执行文件系统升级。所以要确保你也有一个这样的东西要交。

顺便说一句,本文是使用2009年4月发布的Ubuntu Jaunty Jackalope安装程序进行研究的。它使用ext3作为文件系统。

还和我们在一起吗?

约翰·韦恩(John Wayne)说,勇气是被吓坏了,但无论如何还是要备好鞍子。我很佩服你的胆量。

我们要做的第一件事是用uname检查内核版本。uname命令可以显示不同类型的系统信息。

在您的旧Linux计算机上,打开一个终端窗口并键入以下命令。键入uname、空格、0-r,然后按Enter键。

uname -r

这台计算机上的Linux版本使用的是内核版本2.6.28-11,所以我们已经满足了内核版本的要求。

说真的,如果你还没有达到这个要求,现在就停止吧。仅仅靠得够近是不够的。您必须达到或超过此内核版本号。

现在,我们将使用blKID检查磁盘标识符,它标识系统上的块设备。

blkid

该系统有一个硬盘驱动器(SDA),其上有一个挂载在/dev/sda1处的文件系统(Sda1)。这是一个ext3文件系统。这是我们要转换的文件系统。

还有一种名为交换的文件系统,但我们对此不感兴趣。

使用Live CD重新启动

插入Live CD并重新启动计算机。您可能需要在重新启动过程中按任意键,才能使计算机从CD启动。要按的键将在启动过程的早期阶段显示。动作要快-机会之窗不会持续太久。如果错过,请重新启动并重试。

当您引导到Live CD环境时,请确保不会意外启动安装。花点时间阅读一下提供给您的选项,如果有类似于“try DistributionName”的选项,请选择该选项。

成为根

打开终端窗口并键入以下命令。这实际上使您成为root用户,这意味着您不需要在每个命令前面键入sudo。

sudo bash

请注意,命令提示符已更改。你是根。小心行事。

识别文件系统

我们需要再次标识文件系统,看看它们在这个Linux实例中是如何显示的。

fdisk -l

您将看到一些类似以下内容的输出。

我们之前标识为sda1的文件系统已被Live CD Linux找到并识别。这是第一个小型里程碑。

第二个是转换文件系统。

转换文件系统

这里列出了两个命令,一个用于从ext2转换到ext4,另一个用于从ext3转换到ext4。请确保您使用的是正确的!

要从ext2转换为ext4,请使用以下命令:

tune2fs -O extents,uninit_bg,dir_index,has_journal /dev/sda1

要从ext3转换为ext4,请使用以下命令:

tune2fs -O extents,uninit_bg,dir_index /dev/sda1

这有点平淡无奇,因为似乎没有太多事情发生。您将返回到命令提示符。如果你看到一些输出,很可能是错误消息。所以这里没有消息就是好消息。

检查文件系统

即使没有标记错误,我们也要彻底检查整个文件系统是否有问题。我们将使用名为e2fsck的命令。这是一个用于检查文件系统完整性的工具。它还可以尝试修复它发现的任何问题。e2fsck工具适用于ext2、ext3和ext4文件系统。

p(Preen)选项导致e2fsck尝试修复错误,-f(Force)选项导致e2fsck检查文件系统,即使文件系统看起来很干净。

e2fsck -pf /dev/sda1

未报告错误。现在我们可以尝试挂载文件系统了。

装载文件系统

我们需要调整文件系统表(Fstab)和GRUB引导加载器以使用转换后的文件系统。为此,我们必须挂载文件系统。我们将把它装在/mnt上。我们在前面将文件系统标识为sda1,因此我们的命令是:

mount -t ext4 /dev/sda1 /mnt

现在它已经挂载,我们应该能够列出文件系统了。我们来检查一下。文件系统的根将位于挂载点/mnt。

ls /mnt

这很鼓舞人心。看起来我们已经预料到了。

相关:如何从Linux终端挂载和卸载存储设备

编辑fstab

我们需要编辑fstab文件,并将ext3(或ext2,如果是您从中转换的文件系统)的任何引用更改为ext4。

本例中使用的Live CD上有Nano编辑器。这是一个简单的小编辑器,所以我们将使用它。如果您的LiveCD上没有Nano,那么该CD上将会有另一个由Linux发行版捆绑的编辑器。

nano /mnt/etc/fstab

将出现Nano编辑器窗口。您需要查找字符串“ext3”或“ext2”的匹配项,并将它们更改为“ext4”。在本例中,出现了一个ext3,它被突出显示。

ext3被ext4取代。

您需要保存文件并退出编辑器。在Nano中,Ctrl+O将保存文件,Ctrl+X将关闭编辑器。

升级GRUB

因为我们已经将sda1文件系统挂载到/mnt上,文件系统中目录的路径实际上都比通常移动了一个级别。这就是为什么我们提供给Nano的路径是/mnt/etc/fstab,而不是通常的/etc/fstab。

因为GRUB希望在某些位置找到内容,所以我们需要使文件系统看起来就像是正常挂载的一样。我们需要文件系统的根位于/,而不是/mnt。chroot命令允许我们运行命令shell并指定我们希望使用的根点。

我们使用的命令是:

chroot /mnt

请注意,命令提示符已更改。

现在我们可以发出update-GRUB命令,让GRUB读取fstab文件并重新配置自身。

update-grub

重新配置GRUB之后,我们需要在硬盘上安装一个新的GRUB实例。注意:这是硬盘sda,不是文件系统sda1。不包括“1”,只需键入“sda”即可。

grub-install /dev/sda

重新启动您的Linux

重新启动系统并取出Live CD。系统重新启动后,打开一个终端窗口,然后输入以下命令:

blkid

正如我们所看到的,文件系统现在是ext4文件系统。

本文研究的机器花了很长时间重新启动(超过10分钟),人们认为它出了问题,永远也不会重新启动。

可能是因为它是虚拟机,也可能是因为某些文件系统转换发生在第一次引导期间。无论哪种方式,耐心都占了上风,最终它确实重新浮出水面。如果您的机器执行类似的操作,请等待它结束。可能不会失去一切。

随后的重新启动速度与正常一样快。

改为升级您的Linux

嗯,我们到了。但是,您仍然可以在现代文件系统上使用旧Linux版本的非标准混合。

如果迁移到新的文件系统对您很重要,并且您的硬件可以接受,那么迁移到当前的Linux发行版是最好的选择。您将享受到这样做所带来的所有其他安全和软件优势。

不过,如果没有其他方法-有时我们没有我们希望的选项-这些步骤将允许您升级您的文件系统。

相关文章