如何对 ext4 文件系统进行碎片整理

99 defrag

我不想要任何回答说没有必要,拜托了!

ger*_*los 104

使用 e4defrag 对文件进行碎片整理

如果您的 ext4 文件系统是使用该extent选项创建的(在最近的发行版中是默认设置),您可以使用该e4defrag实用程序在线检查和对其进行碎片整理,即无需卸载。

只需使用以下内容检查碎片级别(您需要成为 root 才能查看详细信息):

sudo e4defrag -c /path/to/myfiles
Run Code Online (Sandbox Code Playgroud)

以下是您可以获得的输出示例:

$ sudo e4defrag -c iso/
<Fragmented files>                             now/best       size/ext
1. /home/gerlos/iso/debian-live-7.5.0-i386-rescue.iso
                                                 7/1         111177 KB
2. /home/gerlos/iso/systemrescuecd-x86-4.4.1.iso
                                                 4/1         100897 KB
3. /home/gerlos/iso/debian-live-7.5.0-amd64-rescue.iso
                                                 6/1         116053 KB
4. /home/gerlos/iso/ubuntu-14.04.2-server-amd64.iso
                                                 8/1          76160 KB
5. /home/gerlos/iso/ubuntu-14.10-desktop-amd64.iso
                                                15/1          75712 KB

 Total/best extents             40/5
 Average size per extent            90577 KB
 Fragmentation score                0
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This directory (iso/) does not need defragmentation.
 Done.
Run Code Online (Sandbox Code Playgroud)

在这个例子中,大多数时候它会告诉你不需要碎片整理,但如果你想这样做,你可以使用(你不需要使用 sudo 来对自己的文件进行碎片整理):

e4defrag /path/to/myfiles
Run Code Online (Sandbox Code Playgroud)

您的用户甚至可以在他们自己的文件上运行它,除非您想处理其他用户或系统文件,否则不需要 root。

e4defrage2fsprogs包中,我猜它已经安装在你的 Ubuntu 系统上。

  • 这仅对文件本身内部的范围进行碎片整理,而不对彼此之间的文件进行碎片整理。也就是说,如果我有一个包含三个文件的目录,它们位于磁盘上完全不同的物理位置,那么在运行此工具后同时使用这些文件仍然会很慢。有什么方法可以重新排列磁盘上的文件,或者有时称为“对可用空间进行碎片整理”? (5认同)
  • 抱歉,我忘了提及您需要使用 `sudo` 或以 root 身份运行 `e4defrag -c` 才能获取有关文件碎片的详细信息。但是不需要 root 来对它们进行碎片整理。 (4认同)
  • @PavelSayekat 你只需要成为 root(即使用 `sudo`)来运行 `e4defrag /`,并且不需要做任何特别的事情。`e4defrag` 将检查那里的每个文件,所以准备好等待你的驱动器读取所有内容。请记住,这可能会浪费大量时间。大多数情况下,如果您的文件系统中有足够的可用空间,您只会有一些碎片文件,并且通常它们会在您的主目录中,与您的 Web 浏览器活动相关。例如,在我每天使用的台式 PC 上,`e4defrag` 报告只有 5 个碎片文件,都在 Chromium 配置和缓存目录中。 (3认同)
  • e4defrag -c 只返回“done”。这是否只是意味着没有碎片? (2认同)

TII*_*DER 31

看看e2fsprogs。这也可以在 Ubuntu 软件包中使用。它提供程序 e4defrag。

  • @dobey Ubuntu 12.04(.3) LTS 在 `/etc/mke2fs.conf` 的 `[fs_types]` 部分的 `ext4` 节中包含 `extent` - 因此,它是一个“默认值”。但是,无论文件系统连接到的机器的创建时配置如何,您最好检查文件系统本身:`tune2fs -l &lt;​​/dev/with/ext4&gt; | grep extent`(或查看完整 tune2fs 输出中的“文件系统功能”行)。请注意,我刚刚在带有 `extent` 的 100% 完整 1TB 文件系统上运行了 `e4defrag -c ...`,并且只有 5 个碎片文件,并且“碎片分数”为 0。YMMV。 (8认同)
  • 这实际上仅对使用 -O 范围创建的 ext4 文件系统有用,这不是默认设置。 (5认同)

Jam*_*mes 20

使用 Gparted 对文件系统进行碎片整理

如果您的硬盘上有足够的空间,您可以使用Gparted对您的文件系统(ext2、ext 4、nfts 等)进行碎片整理。您必须从 CD/DVD/USB 启动盘启动,因为您正在使用的驱动器必须卸载。您还必须拥有比已用空间更多的未使用空间才能使其工作,这可能需要一段时间。

  • 从引导盘引导。
  • 运行 gparted 并将包含您要进行碎片整理的数据的分区缩小到刚好超过您的数据量。
  • 通过将其移动到末尾,确保要进行碎片整理的分区是驱动器上的最后一个分区(如果驱动器上只有一个分区,则可能需要在其前面创建另一个空白分区)。

将要进行碎片整理的分区作为驱动器上的最后一个分区:

  • 将其左侧的分区增长到最大大小。这会将您的分区数据移动到驱动器的末尾。
  • 完成后,将该分区缩小回之前的大小。
  • 如果您创建的空白分区在光盘上有多个分区,您现在可以将其删除。
  • 将您的分区移回原始顺序,并将您想要进行碎片整理的分区重新恢复到完整大小。

它现在已碎片整理。

而且我知道您对为什么/为什么不对 ubuntu 进行碎片整理不感兴趣,但无论如何我都会发布指向为什么不需要碎片整理的链接。


rjt*_*rjt 7

e2fsck -D /dev/sda1 通过对目录进行排序和重新索引来优化目录,这通常会加快速度。可能不被认为是完整的文件系统碎片整理,但并非所有系统都有 e4defrag。

  • 请注意,它不适用于正在使用的磁盘 (3认同)

Sud*_*ari 5

在 linux 中对 ext4 文件系统进行碎片整理 我添加这个答案也是为了展示我们如何找到各种内置的 Linux 工具来执行一些常见的操作。你

另外,请注意,仅当您想在不卸载的情况下进行碎片整理时,才需要以超级用户身份进行操作。

使用 apropos 命令

e4defrag -vc /path #verbose output with count
Run Code Online (Sandbox Code Playgroud)