首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将ext4文件系统完全碎片整理

如何将ext4文件系统完全碎片整理
EN

Ask Ubuntu用户
提问于 2022-11-13 11:04:52
回答 3查看 1.9K关注 0票数 2

我希望ext4文件系统中的所有文件不会因为原因而被分割。可悲的是,e4defrag (这里建议:如何分解ext4 4文件系统)未能整理几个文件。我有什么选择?

文件系统已经包含了所有的文件(它们不会被以任何方式改变),而且它几乎已经满了。有几个自由块(根据df -h:434M可用的85G和80G可用),可用作缓冲区。我不需要在碎片整理时挂载文件系统。此外,我还有其他文件系统,有足够的空间作为缓冲区使用。

我的一个想法是将文件移动到其他文件系统,然后以某种方式将它们复制回来,告诉文件系统连续地存储它们。

我刚刚发现我不能依赖e4defrag输出。它将具有多个区段的文件计数为碎片,同时它知道区段是连续的:

代码语言:javascript
运行
复制
$ sudo filefrag file.file
file.file: 1 extent found
$ sudo e4defrag -vc file.file
e4defrag 1.45.5 (07-Jan-2020)

[ext 1]: start 22388736: logical 0: len 32768
[ext 2]: start 22421504: logical 32768: len 32768
[ext 3]: start 22454272: logical 65536: len 32768
[ext 4]: start 22487040: logical 98304: len 27962

 Total/best extents 4/1
 Average size per extent 126266 KB
 Fragmentation score 0
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This file (file.file) does not need defragmentation.
 Done.
EN

回答 3

Ask Ubuntu用户

回答已采纳

发布于 2022-11-13 20:46:11

<#>If您的一些文件很大,从技术上讲,如果不修改文件系统,就不可能对它们进行碎片整理。

任何ext4 4文件系统都是由一系列块组组成的。默认情况下,每个块组的长度为128个MiB。

每个块组从一组文件系统元数据(超级块、组描述符、分配位图和inode表)开始,然后是属于该块组的文件使用的实际数据块。这意味着文件系统元数据主要分散在整个设备上。

但是,由于可选的flex_bg特性,可以将多个块组聚合到一个更大的组中。自2008ISH以来,mke2fs一直在默认情况下创建文件系统,并将16个块组打包在一起。假设您在使用-G选项将文件系统设置为mkfs时没有更改这一点,那么您的文件系统很可能被分成2-GIBFlex组。

除非您的所有文件都明显小于2 GiB,否则您将不可避免地遇到这样一种情况,即要存储的下一个文件必须在两个或多个块组中进行分段。当然,如果您的任何文件大于(flex)块组中的可用数据块,则肯定会发生这种情况。

因此,为了达到目标,您可能必须用比默认的16更高的-G选项设置文件系统的格式,以便使文件系统使用真正大的flex块组。

票数 4
EN

Ask Ubuntu用户

发布于 2022-11-13 12:57:53

我希望我的所有文件都在一个ext4文件系统中,而不是因为原因而被分割。

虽然有合理的理由来删除,但没有任何一个文件要求每个文件被删除和连续。任何人可能希望每个文件都被删除的主要原因是OCPD相关的,这完全是浪费时间,因为在安装rw后不久,文件系统将再次变得“支离破碎”。

文件系统..。快满了..。

在这种情况下,您可能无法整理每个文件,因为Linux碎片整理程序倾向于在文件级别工作,而且您不一定有足够的连续空闲空间来整理每个文件。

我的一个想法是把文件移到其他文件系统,然后复制回来.

这是你最可行的选择。但是,特定的文件分配由文件系统驱动程序决定。

要重新排序块,只需有一个空闲块作为缓冲区就足够了。

Linux文件系统开发人员没有给予defrag与Windows相同的优先级。所以问题不在于技术上是不可能的,而是没有人费心去写任何程序来做到这一点。

在碎片整理之后,fs可以设置为ro。

然后使用为ro设计的文件系统,比如squashfs。所有文件将被删除,连续,甚至压缩。

票数 12
EN

Ask Ubuntu用户

发布于 2022-11-13 15:22:01

回到DOS 6之前,整理胖分区的通常建议是:

  1. 将文件从分区复制到其他地方;
  2. 擦拭隔板;
  3. 在空分区上重新创建目录结构;以及
  4. 把文件复印回来。

我从未尝试过这一点,因为MS 6在碎片整理成为我的一个问题之前(它包含了碎片整理实用程序)出来了。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1440500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档