在 Windows 中,使用 NTFS 格式化非常快。我有一台低功率的 Linux 机器,内存很少。将 2TB 卷格式化为 ext4 需要很长时间。
我可以做些什么来加快格式化速度?我无法想象为什么需要这么长时间?(为什么需要这么长时间)
答案1
严格回答
解决方案-E lazy_itable_init
不会改变结果,只会加快进程。这是明确要求的,但在许多情况下,人们需要更多。
额外奖励
在大多数情况下,您实际上需要一些符合您的使用模式的选项,不仅可以加快文件系统创建速度,还可以允许更快的使用和更多的可用空间。
我刚刚做了一个测试。即使不使用-E lazy_itable_init
,下面的选项也能将 2TB 文件系统的创建时间从 16 分 2 秒缩短到 1 分 21 秒(Intel i7 2.2GHz 上的 3.5.0 64 位内核,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。这是一个相当明显的差异。
答案2
添加标志-E lazy_itable_init
以下是手册页的内容:
如果启用并且启用了 uninit_bg 功能,则 mke2fs 不会完全初始化 inode 表。这显著加快了文件系统初始化速度,但它要求内核在首次挂载文件系统时在后台完成初始化文件系统。如果省略选项值,则默认为 1 以启用延迟 inode 表初始化。
答案3
默认是快速格式化;设置 ext* 卷的结构比设置 NTFS 卷要花费更长的时间,因为 ext* 卷的结构更多。您可以减少超级块的数量,但即使这样也只能到此为止。
答案4
如果您要存储的主要是较大的文件,则可以增加每个 inode 的字节数,从而减少创建的 inode 数量。这可以大大加快创建时间。