Короткий ответ
Единственно верного ответа нет: выбор зависит от паттерна ввода-вывода (последовательная/случайная запись, размер файлов, параллелизм), требований к целостности при сбое, типа носителя (NVMe/SSD/HDD) и операционных ограничений (нужна ли online-усадка раздела); решение принимается на основе нагрузочного тестирования на реальном или максимально близком к реальному паттерне, а не по абстрактным рекомендациям.
Как это работает подробнее
Выбор файловой системы и схемы томов (LVM, RAID, количество и тип дисков) определяет, как эффективно ядро и накопитель обрабатывают параллельные операции записи/чтения, фрагментацию, журналирование метаданных и восстановление после сбоя питания; для БД с интенсивной случайной записью критична задержка (latency) отдельной операции и поведение под высокой очередью запросов (iodepth), для объектного хранилища с миллионами мелких файлов критично число inode и производительность метаданных каталогов.
Пример кода
fio --name=db_randwrite --filename=/mnt/testvol/testfile --size=4G --rw=randwrite --bs=8k --iodepth=32 --numjobs=4 --runtime=60 --time_based --group_reportingЧто использовать на практике
- Практика. процесс выбора: смоделировать реальный паттерн нагрузки через fio (random write, нужный блок, нужная глубина очереди), прогнать его на кандидатах (например ext4 vs XFS, разные RAID-уровни, LVM vs прямое использование диска), зафиксировать p99 задержки и throughput, а также протестировать поведение при принудительном обрыве питания (plug-pull test) для оценки риска потери/повреждения данных; также нужно учесть операционные издержки — простоту резервного копирования, снапшотов, возможность расширения/уменьшения тома в будущем.
- Компромисс. Результат fio даёт p99/p999 latency и IOPS для конкретной комбинации ФС/тома/диска — именно эти числа, сравненные между несколькими вариантами на одинаковой нагрузке, а не теоретическая репутация файловой системы, должны быть аргументом в пользу выбора.
Подводные камни
- Риск. выбирать файловую систему по общим рекомендациям из интернета без тестирования на своём железе и своей нагрузке; игнорировать поведение системы при заполнении диска почти под завязку (деградация производительности аллокатора); не тестировать восстановление после сбоя питания, полагаясь только на штатные сценарии остановки.