如何整理ext4文件系统的碎片


65

我不需要任何答案说不需要,请!

Answers:


66

使用e4defrag整理文件

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

只需使用以下代码检查碎片级别(您需要是root用户才能查看详细信息):

sudo e4defrag -c /path/to/myfiles

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

$ 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.

如本例中所示,大多数时候它会告诉您不需要进行碎片整理,但是如果您仍然想进行碎片整理,则可以使用它(不需要使用sudo来整理自己的文件):

e4defrag /path/to/myfiles

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

e4defrage2fsprogs软件包中,我想它已经安装在Ubuntu系统上了。


2
e4defrag -c只返回done。这是否仅代表没有碎片?
hrzhu 2015年

3
抱歉,我忘了提到您需要以root身份运行或以root身份运行e4defrag -csudo以获取有关文件碎片的详细信息。但是不需要扎根整理它们。
盖洛斯2015年

@gerlos如果我尝试对根文件系统进行碎片整理,该/怎么办?
帕维尔·塞耶卡特

2
@PavelSayekat您只需要root(即使用sudo)来运行e4defrag /,而无需执行任何特殊操作。e4defrag将检查那里的每个文件,因此请准备好等待驱动器读取所有内容。请记住,这可能会浪费大量时间。在大多数情况下,如果文件系统中有足够的可用空间,则文件碎片将很少,而且它们通常位于与网络浏览器活动相关的主目录中。例如,在我每天使用的台式PC上,e4defrag报告只有5个碎片文件,全部位于Chromium配置和缓存目录中。
盖洛斯

这仅对文件本身内部的扩展区进行碎片整理,而不对文件之间的碎片进行整理。也就是说,如果我的目录包含三个文件,它们在磁盘上的物理位置完全不同,那么运行此工具后同时使用这些文件仍然很慢。有什么方法可以重新排列磁盘上的文件,或“对可用空间进行碎片整理”?
FuzzyTew16年

29

看一下e2fsprogs。这在Ubuntu软件包中也可用。它提供了程序e4defrag。


5
这实际上仅对使用-O扩展名创建的ext4文件系统有用,这不是默认设置。
dobey 2012年

那个家伙对碎片整理感到不满,使用e4defrag可能是可行的,该提示不明确是否指定外部日志,他不值得-1。
Felipe Alcacibar 2013年

8
@dobey Ubuntu 12.04(.3)LTS包含extent在的ext4节的[fs_types]节中/etc/mke2fs.conf-因此,它是“默认”的。但是,无论与文件系统连接的机器的创建时配置如何,最好还是检查文件系统本身:(tune2fs -l </dev/with/ext4> | grep extent或查看完整tune2fs输出中的“文件系统功能”行)。请注意,我只是使用运行e4defrag -c ...了100%完整的1TB文件系统extent,并且只有5个碎片文件,“碎片分数”为0。YMMV。
理查德·迈克尔

@RichardMichael仅供参考:e2defrag -c /path仅打印找到的前5个碎片文件(甚至不碎片最多的文件)。运行e2defrag -v /path以查看它如何减少范围计数。
蒂诺2016年

17

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

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

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

对于要作为驱动器上的最后一个分区进行碎片整理的分区,请执行以下操作:

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

现在已删除。

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


在缩小并向右移动之后,为什么您要向左生长然后再次缩小而不是仅向左移动?
詹森·C

我还注意到在向左增长步骤之后,数据本身实际上又再次向左移动(由gparted移动数据证明,此后通过直接检查块设备进行了验证),因此除非是版本/文件系统相关的行为,否则最终收缩+再生长可以跳过。这似乎足以只能做到:1)收缩和向右移动,2)申请,3)成长左侧。
詹森·C

简单地移动要进行碎片整理的分区并不一定会将其移动到HD的实际末端。将分区向左增大到最大大小可确保最终分区实际上已“移动”到硬盘驱动器的最末端。
詹姆斯

它移动到正确的它移动到硬盘驱动器的结尾。gparted GUI顶部的分区栏实际上是数据布局的准确表示(嗯,至少对于OS可见,闪存设备例如将逻辑映射到控制器另一侧的物理位置,但是对于典型的硬盘,这是准确的)。可以通过观察分区表中的新开始位置来验证这一点。:)
Jason C

啊,我们沟通不畅。您的意思是重新排序分区,以便最后使用。我的意思是分区移动到驱动器的末尾,这也是我的意思(您可以使用gparted在驱动器上移动分区,而无需重新排序)。:)
Jason C

3

在Linux中对ext4文件系统进行碎片整理 我添加此答案还旨在说明我们如何找到各种内置Linux工具来执行一些常用的操作。您

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

使用apropos命令

e4defrag -vc /path #verbose output with count

2

当以全新安装方式安装(不位于Win-Junk顶部)时,Ubuntu 14.04 LTS确实将(至少是主驱动器)放置在EXT4分区中。

在这种情况下,如果您只是设置了一个新系统,或者在旧系统上进行了全新格式化,然后进行了全新安装,则默认情况下使用14.04 LTS,您将在处有一个EXT4分区/dev/sda1

现在,只需打开一个终端(CTRL- - ALT),T然后键入:

sudo e4defrag -c /dev/sda1

并耐心等待“检查”完成,然后您会收到碎片报告。

如果您不确定在OS驱动器上安装EXT4分区,只需进入HOME并输入df -T。查看您的sda *分区设置为什么(在14.04LTS中尝试此操作,除非您在硬盘驱动器设置中选择了其他分区类型,否则您将看到EXT4)。


有点偏离主题,几乎没有给问题增加任何价值,特别是对于最后的咆哮。
Fernando Silveira

您可以使用同一命令对多个分区进行碎片整理:sudo e4defrag / dev / sda1 / dev / sda2
ProgAndPlay

1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.