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


17

使用-T largefile标志在为包含flac格式的视频和音频等大文件的分区创建文件系统时有用吗?

我测试了带有该标志且没有该标志的同一个分区,并使用tune2fs -l [partition],我检入了“文件系统功能”,它们都启用了“ large_file”。因此,不必使用-T标志largefile吗?


1
请注意,我对large_file(在tune2fs中获得)和largefile感到困惑。看来他们是不同事物的论点。
2012年

Answers:


24

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

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

如果您确定设备上存储的文件的平均大小将超过1兆字节,那么请务必设置-T largefile。我很乐意在存储分区上使用它,并认为它不太适合设置。

但是,如果将包含许多文件的非常大的源tarball解压缩到该分区(可能成千上万个),则有机会耗尽该分区的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

大文件版本具有102400个inode,而普通文件创建了6553600个inode,并在此过程中节省了1.5 GB。

如果您对将要放置在文件系统上的文件大小有很好的了解,则可以直接使用-i开关微调索引节点的数量。它设置每个索引节点的字节数。如果您-i 65536仍然可以创建超过一百万个文件,则可以节省75%的空间。我通常计算出至少要保留10万个索引节点。


答案很不错,但您说的是“在此过程中节省了1,5 GB”。您应该说“但是为额外的inode使用了1.5 GB的空间”。您听起来像在普通模式下创建了更多的索引节点,并且在磁盘上还留下了更多的可用空间。
本地主机

“我通常计算出至少要保留10万个索引节点。” -为什么?肯定有0个备用(并且还需要0个)是最优的吗?您是否真的担心可能要减少100K的文件或目录数量?
OJFord

4

我认为您正在混淆两个完全不同且独立的概念。

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

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.