Может ли большое количество (небольших) файлов ухудшить производительность файловой системы?

Я работаю над архивным проектом и в настоящее время храню 514600 изображений (от 200 КБ до 2 МБ) на моем накопителе NAS объемом 4 ТБ. Сам диск отформатирован как ext4, и я пишу файлы по сети через cifs / smb.

Есть ли последствия хранения такого огромного количества файлов? Будет ли файловая система жертвой фрагментации?

3 ответа

Решение

Фрагментация происходит, когда файл, уже находящийся на диске, изменяется таким образом, что он становится больше, чем был раньше, и ни один файл, размер которого меньше размера вашего кластера, не должен оказаться фрагментированным. Чтобы правильно ответить на ваш вопрос, нам нужно знать размер вашего кластера, процент используемого диска и изменения файлов после первоначального распределения дискового пространства.

Операции ввода-вывода над многими небольшими файлами по сравнению с несколькими большими файлами намного медленнее из-за всех издержек файловой системы (и времени сканирования / поиска), поэтому, если учесть, что производительность снижается, то да. это действительно зависит больше от того, получаете ли вы доступ к 5000 из них одновременно или только к нескольким одновременно.

Ext4, в частности, не требует дефрагментации так же, как файловые системы Windows, из-за способа, которым он выделяет пространство для файлов, поэтому, пока ваш раздел не заполнен на 90%, я бы об этом не беспокоился.

Есть ли последствия хранения такого огромного количества файлов?

Я добавлю, что вы должны следить за максимальным количеством файлов, которые может обработать ваша файловая система. Файлы (на ext4, которые вы используете) используют inode. Таблица inode статически выделяется при создании файловой системы, и единственный способ увеличить ее - воссоздать файловую систему.

Вы можете проверить свои текущие используемые inode / свободные номера с df -i или же tune2fs -l /path/to/device

Значения по умолчанию должны быть проблемой только при хранении очень маленьких файлов.

Скорость доступа значительно уменьшается. Это обычная проблема в проектах Java, где у вас есть тонны относительно небольших файлов. Их эффективнее хранить в одном архиве, доступ к ним более быстрый, несмотря на то, что они должны быть распакованы.

В вашем случае ваши файлы не маленькие, поэтому проблем с фрагментацией, вероятно, не будет.

Вы работаете над архивным проектом, поэтому вам, вероятно, следует использовать ZIP или TAR / GZIP. Если ваши файлы уже упакованы, вы можете использовать просто TAR, чтобы соединить их в один больший файл. Найдите некоторую разумную "единицу упаковки", чтобы вы могли легко найти все ваши файлы позже.

Другие вопросы по тегам