2

Вот в чем дело, я проверяю домены для своего сканера, у меня 145 миллионов доменов, чтобы проверять их на лету.

Хранение израсходовано:

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 ответ1

5

Я не специалист по ext4, но, как и большинство файловых систем, он выделяет пространство для файлов в блоках. Размер блока по умолчанию для ext4 составляет 4096 байт, поэтому каждый из ваших однобайтовых файлов фактически использует 4096 байт на диске. 19 миллионов раз 4096 дает вам около 80 ГБ.

Если вы просто используете файлы в качестве маркеров, вы можете использовать файлы длиной 0 байт, в этом случае система не выделит блок для файла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .