是否考虑过升级 Linux 文件系统,但又担心过程过于复杂?本文将详细介绍如何在不完全重新安装系统的情况下,将 ext2 或 ext3 文件系统升级到 ext4。
Linux 文件系统的演变
ext3 文件系统诞生于 2001 年,在当时可谓是先进的技术。而更早的 ext2 文件系统,其历史可以追溯到 1993 年,在现代计算机领域中,它更像是一个考古遗迹。相比之下,ext3 可以被认为是一位值得尊敬的长者。
在 Linux 世界中,ext4 是目前较为先进的文件系统。它于 2008 年发布,不仅速度更快,而且更不容易产生碎片。ext4 能够处理更大的文件系统和更大的文件,拥有更精确的文件日期时间戳,当然,它的速度也快得多。
升级:必要性与替代方案
在考虑升级文件系统之前,我们有必要仔细权衡利弊。实际上,您可能并不一定需要升级文件系统。
更合理的做法可能是升级整个 Linux 系统。这意味着需要多次备份数据,然后擦除当前系统,重新安装一个现代的发行版,最后再恢复您的数据。这是一个彻底的更新过程,它能让您获得新版 Linux 发行版、更新的软件以及全新安装的文件系统带来的好处。
但如果您的硬件实在无法运行现代 Linux 发行版,哪怕是像 Lubuntu、 LinuxLite 或 CrunchBang++ 这样的轻量级版本,而您又必须坚持使用现有的 Linux 系统,那么请务必注意以下几点。
要将文件系统升级到 ext4,您的内核版本必须至少为 2.6.28。如果您的内核版本低于此要求,则必须先升级内核。
警告:在内核版本不满足要求的情况下,请勿尝试此操作,否则可能会导致计算机无法启动。在继续之前,请务必检查您正在使用的内核版本。
同时,请确保您手头有当前 Linux 版本的安装光盘,并做好备份。升级文件系统并非完全没有风险。
备份是您的安全网。在执行任何操作之前,请多次备份数据到不同的存储介质,并确保您的旧版 Linux 安装光盘也准备就绪。如果出现严重问题,您可以使用旧版 Linux 重新安装系统并恢复数据。
您还需要一个现代 Linux 发行版的 Live CD/DVD 来进行文件系统升级,所以请提前准备好。
本文的撰写,基于使用 2009 年 4 月发布的 Ubuntu Jaunty Jackalope 进行的研究,该系统使用 ext3 作为文件系统。
准备工作:检查内核和磁盘
第一步是使用 uname
命令检查内核版本。此命令用于显示各种系统信息。
在旧的 Linux 计算机上打开终端窗口,输入 uname -r
并按 Enter 键。
示例中,Linux 版本使用的是内核版本 2.6.28-11,满足了最低内核版本要求。
再次强调,如果您的内核版本不满足要求,请立即停止操作。必须达到或超过此内核版本号。
接下来,我们将使用 blkid
命令检查磁盘标识符,该命令用于识别系统上的块设备。
blkid
该系统有一个硬盘驱动器 (sda),上面有一个文件系统 (sda1),它被挂载在 /dev/sda1 上。这是一个 ext3 文件系统,也就是我们要转换的文件系统。
此外还有一个名为 swap 的文件系统,但我们不需要关注它。
使用 Live CD 重启系统
插入 Live CD 并重新启动计算机。您可能需要在重启过程中按下某个键,才能让计算机从 CD 启动。要按下的键会在启动过程的早期阶段显示,请注意不要错过。如果错过了,请重新启动并重试。
当您启动到 Live CD 环境时,请务必确保您不会意外启动安装程序。花点时间仔细阅读选项,如果有一个类似“Try DistributionName”的选项,请选择该选项。
获取 Root 权限
打开终端窗口并键入以下命令,这将使您获得 root 权限,从而无需在每个命令前使用 sudo
。
sudo bash
请注意,命令提示符已更改,您现在拥有 root 权限,请谨慎操作。
再次识别文件系统
我们需要再次识别文件系统,以了解它们在这个 Linux 实例中的显示方式。
fdisk -l
您将看到类似以下内容的输出:
Live CD Linux 已经找到并识别了我们之前标识为 sda1 的文件系统。这是一个重要的里程碑。
下一步就是转换文件系统。
转换文件系统
这里有两个命令,一个用于从 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
一切正常,这让人感到鼓舞。
编辑 fstab
我们需要编辑 fstab
文件,并将所有对 ext3 (或 ext2) 的引用更改为 ext4。
此示例使用的 Live CD 上有 nano 编辑器。这是一个简单易用的编辑器,我们将使用它。如果您的 Live CD 上没有 nano,那么发行版中也会包含另一个编辑器。
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 文件系统。
本文研究的机器重启花费了很长时间(超过十分钟),一度被认为出现了问题,不会恢复。可能是因为它是一台虚拟机,或者某些文件系统转换发生在第一次启动期间。但最终,耐心得到了回报,系统最终恢复。如果您的机器也出现类似情况,请耐心等待,一切可能没有丢失。
随后的重启速度恢复正常。
更好的选择:升级您的 Linux 系统
至此,您成功升级了文件系统。但您仍然在现代文件系统上使用旧版本 Linux 的混合系统。
如果迁移到新的文件系统对您来说非常重要,并且您的硬件条件允许,那么迁移到当前 Linux 发行版是最佳选择。您将享受到由此带来的所有其他安全和软件优势。
尽管如此,如果别无选择,这些步骤将允许您升级您的文件系统。