Какую файловую систему Linux вы бы выбрали для лучшей скорости в следующем сценарии:
- сто миллионов файлов
- ~ 2К размер файла в среднем
- > 95% доступ для чтения
- довольно случайный доступ
- высокий параллелизм (> 100 процессов)
Примечание: файлы хранятся в глубоком иерархическом дереве, чтобы избежать больших каталогов. Каждый листовой каталог содержит около тысячи файлов.
Как бы вы оценили это?
Ответы:
Вот некоторые результаты, сравнивающие все основные ОС Linux с bonnie ++, которые вы можете использовать в качестве отправной точки.
С точки зрения случайных поисков выигрывает Рейзер, затем EXT4, а затем JFS. Я не уверен, будет ли это точно соответствовать поиску в каталоге, но похоже, что это будет индикатор. Вы должны будете сделать свои собственные тесты для этого специально. EXT2 отбивает все за время создания файла, вероятно, из-за отсутствия журнала, но EXT4 побеждает все, кроме Reiser, которое вы можете не использовать из-за текущего статуса Ханса Райзера.
Возможно, вы захотите взглянуть на диски, которые поддерживают NCQ, и убедитесь, что ваша установка настроена для его использования. При тяжелых поисках это должно обеспечить повышение скорости.
Наконец, убедитесь, что ваша машина имеет тонну оперативной памяти. Поскольку файлы не часто обновляются, linux заканчивает кэширование большинства из них в ram, если у него есть свободное место. Если ваши шаблоны использования верны, это даст вам огромный прирост скорости.
источник
Я согласен с большей частью того, что сказал Эндрю, за исключением того, что я бы порекомендовал Reiser4 или более старый (но лучше поддерживаемый) ReiserFS . Как показывают эти тесты (и документация для ReiserFS), он предназначен для более точной ситуации, о которой вы спрашиваете (большое количество небольших файлов или каталогов). Раньше я использовал ReiserFS с Gentoo и Ubuntu без проблем.
Что касается статуса Ханса Рейзера, я не вижу в этом проблемы с кодом или стабильностью самой файловой системы. Reiser4 даже спонсируется как DARPA, так и Linspire, поэтому, хотя я согласен с тем, что дальнейшее развитие файловой системы Reiser не определено, я не думаю, что это должно стать решающим фактором в отношении того, должен ли кто-либо его использовать или нет.
источник
Я знаю, что это не прямой ответ на ваш вопрос, но в этих случаях я думаю, что база данных может быть более подходящей для размещения этого. Небольшие файлы могут храниться в двоичном формате в таблице базы данных и извлекаться по адресу. Программное обеспечение, использующее эти файлы, должно поддерживать это, хотя ...
источник
Кто-то из Unix StackExchange создал тест (с исходным кодом) для тестирования только этого сценария:
В: Какая файловая система Linux является самой высокопроизводительной для хранения большого количества маленьких файлов (HDD, а не SSD)?
Лучшая производительность при чтении, похоже, исходит от ReiserFS.
источник
По моему опыту, ext2 выдувает ext4 из воды для маленьких файлов. Если вас не волнует целостность записи, это здорово. Например, Subversion создает много-много-много мелких файлов, которые блокируют ext4 и другие файловые системы (XFS) (запустите задание cron, которое rsyncs данных в ext4 из ext2 каждые полчаса или около того фактически решает проблему).
Выполнение этих команд делает ext2 еще быстрее (даже если большинство этих параметров делают файловую систему нестабильной после сбоя, если вы не запустите синхронизацию до ее сбоя). Эти команды практически не влияют на ext4 с небольшими файлами.
источник
Я думаю, ext3 (или ext4), может быть, JFS будет хорошим решением. Я был бы осторожен с ext4 и btrfs (файловые системы хитры - будьте готовы к резервному копированию, если вы хотите использовать новейшие, самые новые вещи).
Существуют также различные параметры, которые вы можете настроить во время mkfs, чтобы настроить файловую систему по своему вкусу.
Я бы определенно рекомендовал против XFS. Не потому, что это плохая файловая система, но создание / удаление - дорогостоящая операция над ней.
Чтобы избежать проблем с поиском в каталоге, используйте интеллектуальную схему именования, например:
или аналогичные, более сложные схемы. Это ускорит ваш поиск в каталоге и, следовательно, общую скорость доступа. (Это старый трюк Unix, я думаю, из V7)
источник
Большинство FS будут задыхаться с более чем 65K файлами в директории, я думаю, что это все еще верно для ext4. Файловые системы Reiser не имеют этого ограничения (люди на mp3.com заплатили, чтобы убедиться в этом). Не уверен ни в чем другом, но это один из сценариев использования, для которых был создан ReiserFS.
источник
ls
или завершение табуляции, это работает быстро. Вероятно, из-за индекса.