使用Linux的人常常认为它不需要碎片整理。这是 Linux 用户的一个常见误解。实际上,Linux操作系统确实支持碎片整理。碎片整理的目的是改进 I/O 操作,例如允许本地视频更快加载或更快地提取存档。

Linux ext2、ext3 和 ext4 文件系统不需要太多关注,但随着时间的推移,在执行很多很多读/写之后,文件系统可能需要优化。否则硬盘可能会变慢并可能影响整个系统。
在本教程中,我将向您展示几种对文件执行碎片整理的不同技术。在开始之前,我们应该提到 ext2、3、4 等常见文件系统如何防止碎片。这些文件系统包括防止这种影响的技术。例如,文件系统在硬盘上保留空闲块组以完全存储不断增长的文件。
不幸的是,这种机制并不总能解决问题。虽然其他操作系统可能需要昂贵的附加软件来解决此类问题,但 Linux 有一些易于安装的工具可以帮助您解决此类问题。
如何检查文件系统是否需要碎片整理?
在我们开始之前,我想指出以下操作只能在硬盘并且不在固态硬盘。对 SSD 驱动器进行碎片整理只会增加其读/写次数,从而缩短其使用寿命。相反,如果您使用 SSD,则应该使用 TRIM 功能,本教程不涉及该功能。
让我们测试一下系统是否确实需要碎片整理。我们可以使用诸如以下的工具轻松检查这一点e2fsck。在系统上的分区上使用此工具之前,建议先卸载该分区。这并不是完全必要的,但这是安全的方法:
$ sudo umount <device file>
就我而言,我有/dev/sda1安装于/tmp:

请记住,在您的情况下,分区表可能会有所不同,因此请确保卸载正确的分区。要卸载该分区,您可以使用:
$ sudo umount /dev/sda1
现在让我们检查这个分区是否需要碎片整理,e2fsck。您将需要运行以下命令:
$ sudo e2fsck -fn /dev/sda1
上面的命令将执行文件系统检查。这-f即使系统看起来干净,选项也会强制进行检查。这-n选项用于以只读方式打开文件系统并假设答案为"no"所有可能出现的问题。
这个选项基本上允许使用e2fsck非交互地。如果一切都是好的,您应该看到类似于下面屏幕截图所示的结果:

这是显示系统错误的另一个示例:

如何使用 e2fsck 修复 Linux 文件系统
如果出现错误,您可以尝试使用以下命令修复文件系统e2fsck与“-p“ 选项。请注意,为了运行以下命令,需要卸载分区:
$ sudo e2fsck -p <device file>
这 ”-p”选项尝试对文件系统进行自动修复,以解决无需人工干预即可安全修复的问题。如果发现问题可能需要系统管理员采取额外的纠正措施,e2fsck 将打印问题的描述,并以代码 4 退出,这意味着“文件系统错误未得到纠正”。根据发现的问题,可能需要采取不同的操作。
如果问题出现在无法卸载的分区上,您可以使用另一个名为e4碎片整理。它预装在许多 Linux 发行版上,但如果您的发行版上没有它,您可以使用以下命令安装它:
$ sudo apt-get install e2fsprogs [On Debian and Derivatives] # yum install e2fsprogs [On CentOS based systems] # dnf install e2fsprogs [On Fedora 22+ versions]
如何对 Linux 分区进行碎片整理
现在是时候使用以下命令对 Linux 分区进行碎片整理了。
$ sudo e4defrag <location> or $ sudo e4defrag <device>
如何对 Linux 目录进行碎片整理
例如,如果您希望对单个目录或设备进行碎片整理,您可以使用:
$ sudo e4defrag /home/user/directory/ # sudo e4defrag /dev/sda5
如何对所有 Linux 分区进行碎片整理
如果您希望对整个系统进行碎片整理,安全的方法是:
$ sudo e4defrag /
请记住,此过程可能需要一些时间才能完成。
结论
碎片整理是您很少需要在 Linux 中运行的操作。它适用于那些知道自己到底在做什么的高级用户,不推荐 Linux 新手使用。整个操作的重点是优化文件系统,以便更有效地执行新的读/写操作。
