创建文件系统时的大文件功能

创建文件系统时的大文件功能

使用起来很有用-T 大文件为包含 flac 格式的视频和音频等大文件的分区创建文件系统时是否需要标记?

我测试了带有该标志和不带有该标志的同一分区,并使用une2fs -l [分区],我检查了“文件系统功能”,两者都启用了“large_file”。所以,没有必要使用-T 标志大文件

答案1

-T largefile标志调整在创建文件系统时分配的索引节点数量。一旦分配,它们的数量就不能调整(至少对于 ext2/3 来说是这样,对于 ext4 不完全确定)。默认情况下,每 16K 磁盘空间有一个 inode。-T largefile使其每兆字节有一个索引节点。

每个文件需要一个 inode。如果没有剩余任何 inode,则无法创建新文件。但这些静态分配的索引节点也占用空间。您可以期待每 100 GB 磁盘节省约 1.5 GB通过设置-T largefile,而不是默认值。-T largefile4(每 4 MB 一个 inode)不会产生如此显着的效果。

如果您确定设备上存储的文件的平均大小将超过 1 MB,那么请务必设置-T largefile.我很高兴在我的存储分区上使用它,并且认为它的设置并不太激进。

但是,如果您将包含许多文件(例如数十万个)的非常大的源 tarball 解压到该分区,则有可能会耗尽该分区的 inode。在这种情况下,除了选择另一个分区来解压之外,您无能为力。

您可以使用以下命令检查实时文件系统上有多少可用的 inode dumpe2fs

# dumpe2fs /dev/hda5
[...]
Inode count:              98784
Block count:              1574362
Reserved block count:     78718
Free blocks:              395001
Free inodes:              34750

在这里,我仍然可以创建 34000 个文件。

以下是我mkfs.ext3 -T largefile -m 0在 100 GB 分区上执行操作后得到的结果:

Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/loop1              102369       188    102181   1% /mnt/largefile
/dev/loop2              100794       188    100606   1% /mnt/normal

大文件版本有 102 400 个 inode,而普通版本创建了 6 553 600 个 inode,并在此过程中节省了 1.5 GB。

如果您很清楚要放入文件系统上的文件大小,则可以直接使用开关微调 inode 的数量-i。它设置每个索引节点的字节数比率。如果您在使用的-i 65536同时仍然能够创建超过一百万个文件,您将节省 75% 的空间。我一般计算至少保留10万个inode备用。

答案2

我认为你混淆了两个完全不同且独立的概念。

您可以在 dumpe2fs 的输出中看到的功能large_file意味着该文件系统可以容纳大于 2 GiB 的文件,我认为它是由现代内核自动设置的。与-T选项无关mke2fs

相关内容