ext4是否有一种“快速”格式?


28

在Windows中,使用NTFS格式化非常快。我有一台低功耗的Linux机器,几乎没有RAM。将2TB卷格式化为ext4需要很长时间。

我可以做些什么来加快格式吗?我无法想象需要这么长时间?(花了这么长时间)


1
您正在使用什么命令来格式化它?
tacotuesday,2012年

解决方法。尝试使它成为较小的lvm卷,并根据需要进行扩展?无论如何,这将降低初始开销。
Sirex

1
或使用XFS(如果文件系统创建时间确实使您感到困扰)-mkfs.xfs比mkfs.ext4快得多(因为它不起作用-或需要这样做)。但是mkfs通常对于每个文件系统只需要执行一次操作-可能还有更好的事情要优化。
cas 2012年

或使用ZFS。无论大小如何,使用ZFS创建文件系统几乎都是瞬间完成的。
jlliagre 2012年

仅在具有企业级硬件的情况下才使用ZFS,尤其是在具有ECC RAM和UPS的情况下。它不建议使用ZFS没有这些要求。内存奇偶校验错误和/或电源故障后,您可能无法恢复。在这种情况下,您所有的音量都将丢失。你被警告了。
理查德·戈麦斯

Answers:


16

严格的答案

诸如此类的解决方案-E lazy_itable_init不会改变结果,只会加快流程。这是明确提出的要求,但在许多情况下,人们需要更多。

额外奖励

在大多数情况下,您实际上需要一些与您的使用模式相匹配的选项,不仅可以加快文件系统的创建速度,而且还可以提高使用速度和可用空间。

我刚刚做了测试。即使不使用-E lazy_itable_init,下面的选项也可以将2TB文件系统的创建时间从16分钟2秒加快到1分钟21秒(Intel i7 2.2GHz上的内核3.5.0 64bit,USB2连接上的2TB磁盘-SATA可能更快) 。

对于将容纳大文件的文件系统,我使用以下组合:

mkfs.ext3 /dev/sdXX -O sparse_super,large_file -m 0 -T largefile4

在何处-T largefile4选择/etc/mke2fs.conf通常包含以下内容的选项:

    inode_ratio = 4194304
    blocksize = -1

做一个man mke2fs关于这些选项的细节。

以下是相关摘录:

               sparse_super
                      Create a filesystem with fewer superblock backup copies (saves space on large filesystems).

               large_file
                      Filesystem can contain files that are greater than 2GB.  (Modern kernels set this feature  automatically
                      when a file > 2GB is created.)

   -i bytes-per-inode
          Specify  the  bytes/inode ratio.  mke2fs creates an inode for every bytes-per-inode bytes of space on the disk.  The
          larger the bytes-per-inode ratio, the fewer inodes will be created.  This value generally shouldn't be smaller  than
          the blocksize of the filesystem, since in that case more inodes would be made than can ever be used.  Be warned that
          it is not possible to expand the number of inodes on a filesystem after it is created, so be  careful  deciding  the
          correct value for this parameter.

-m 0只说不为根保留5%,这对于数据(不是引导/根)文件系统是可以的。2TB磁盘的5%表示100Gb。那是一个相当大的差异。


1
请注意,允许文件系统充满95%以上的文件将导致极端的碎片化,从而大大降低性能。如果有的话,如果有人关心他的数据分区的性能,应该提高到10%
Matija Nalis

如果您的磁盘不仅可以容纳大文件,可以容纳小文件,请阅读以下内容:降低inode比率最多可以为您节省大约1.5%的存储空间,而却会降低多功能性。inode_ratio = x意味着如果卷上的平均文件大小小于x字节,那么在存储空间用完之前,您会先用尽inode。在那种情况下,您实际上可能浪费了成千上万的钱,比您预期节省的多。
斯特凡纳·古里科

换句话说,如果平均文件大小小于4MB,请不要使用“ -T largefile4”。对于大型驱动器,我现在最终使用-T hugewhich inode_ratio = 65536。如有疑问,请不要设置,-i-T让ext2 / 3/4的智者为您选择。您将保留一小部分已知的空间用于内部整理,并且(除非您存储了数百万个非常小的文件)您可以确保不浪费任何实际百分比的存储空间。正如人们所写的那样,精美的软件很不错,但是好的文件系统一定很无聊并且可以正常工作。
斯特凡纳·古里科

就我而言,mkfs.ext4(time:)real 0m16.001smkfs.ext3(time :)更快real 2m10.336s
coanor

19

添加标志 -E lazy_itable_init

手册页上的内容如下:

如果启用并且启用了uninit_bg功能,则mke2fs将不会完全初始化inode表。这样可以显着加快文件系统的初始化速度,但是在第一次安装文件系统时,它要求内核在后台完成文件系统的初始化。如果省略该选项值,则默认为1以启用惰性inode表初始化。


3
从技术上讲,这实际上并不能使格式运行得更快,但是可以让您在后台完成格式时挂载和使用文件系统。
Wyzard-停止Harming Monica--2012年

非常感谢!这个工作真的很好,直到知道要寻找的内容,文档/人才对我不清楚!非常感谢!

我看过有关最低内核版本的参考,使用该内核是最低要求?
Xarses

8

默认快速格式。为ext *卷设置结构要比为NTFS卷设置花费更多的时间,因为它们更多。您可以减少超级块的数量,但即使如此,到目前为止也是如此。


感谢您提供的信息,我的设备大约在20个小时前开始格式化2TB USB2磁盘,但仍在继续-设备功耗低,想想具有64MB RAM的Raspberry Pi。为了开始格式化,我必须将分页程序设置为要格式化的同一USB磁盘,我可以做些什么来加快速度吗?如果能将性能提高到一两个小时以下,我会很棒的吗?

2
lazy_itable_init帮了我大忙,这不是默认设置,它确实使格式化速度更快
卡住了

4

如果要存储的文件大都是较大的,则可以增加每个inode的字节数,从而减少创建的inode数。这可以大大加快创建时间。

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.