情况是这样的,我正在为我的爬虫程序检查域名是否重复,我有 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 字节的文件,在这种情况下系统将不会为该文件分配块。