Ми хотіли б зберігати мільйони текстових файлів у файловій системі Linux, щоб мати змогу зафіксувати та обслуговувати довільну колекцію як послугу. Ми спробували інші рішення, як-от база даних ключових / значущих, але наші вимоги щодо одночасності та паралелізму роблять використання рідної файлової системи найкращим вибором.
Найпростіший спосіб - це зберігання всіх файлів у папці:
$ ls text_files/
1.txt
2.txt
3.txt
що має бути можливим у файловій системі EXT4 , яка не обмежує кількість файлів у папці.
Два процеси FS будуть:
- Напишіть текстовий файл із веб-фрагмента (не повинно впливати кількість файлів у папці).
- Zip вибрані файли, задані списком імен файлів.
Моє запитання полягає в тому, чи зберігання до десяти мільйонів файлів у папці впливатиме на виконання вищезазначених операцій чи загальну продуктивність системи, інакше, ніж створення дерева підпапок для файлів, у яких живуть?
ls -l
чи будь-що інше, що має stat
кожну bash
вкладку в каталозі (наприклад, глобалізація / завершення вкладки), буде штучно швидше ніж після певного зносу (видаліть деякі файли, напишіть нові). ext4 може зробити це краще, ніж XFS, тому що XFS динамічно виділяє простір для inode порівняно з даними, так що ви можете в кінцевому підсумку з більш розсіяними вкладами. (Але це чиста здогадка, заснована на дуже мало детальних знаннях; я ледве не використовував ext4). Переходьте з abc/def/
підкаталогами.
ZipOutputStream
можуть бити майже за будь-яку безкоштовну рідну файлову систему Linux - я сумніваюся, що ви хочете заплатити за GPFS IBM. Цикл для обробки набору результатів JDBC та створення цього потоку zip, ймовірно, становить лише 6-8 рядків коду Java.
dir_index
, яке часто включається за замовчуванням, прискорить пошук, але може обмежити кількість файлів у каталозі.