需要解释 Linux Ext4 文件系统,1900 万个单字节文件等于 80+GB?

需要解释 Linux Ext4 文件系统,1900 万个单字节文件等于 80+GB?

情况是这样的,我正在为我的爬虫程序检查域名是否重复,我有 1.45 亿个域名需要即时检查是否重复。

存储消耗:

80GB for 19 million files

为此,我根据域名的前四个字母创建一个目录结构,然后创建一个单字节文件来表示我以前见过这个域名。

s/u/p/e/superuser.com

我创建了如上所述的目录结构,以防止任何目录中包含不合理数量的文件......

域/文件位置详细信息:

Domain: superuser.com
Root Directory: /home/tmc/tech/Data/Dupes/Domains/
Directory: s/u/p/e/
File Path: s/u/p/e/superuser.com
File Contents: .

现在,我强烈怀疑存储使用情况与正在创建的目录和文件的数量有关,但是,仅创建目录不会导致极端的存储使用,因此它与填充这些目录有关,再次,我正在尝试弄清楚,这是我目前的怀疑。

有人可以向我解释一下 Linux ext4 文件系统在目录、文件以及填充文件的目录方面的存储消耗方面是如何工作的吗?

答案1

我不是 ext4 专家,但与大多数文件系统一样,它以块为文件分配空间。ext4 的默认块大小为 4096 字节,因此每个一字节文件实际上在磁盘上使用 4096 字节。1900 万乘以 4096 可得到大约 80GB 的空间。

如果您只是将文件用作标记,您可能能够使用长度为 0 字节的文件,在这种情况下系统将不会为该文件分配块。

相关内容