Я создаю файловую систему ext3 поверх программного raid5 (md), и мне интересно, каковы лучшие параметры при создании файловой системы (с mkfs.ext3) и при монтировании.
Размер блока RAID5 составляет 128 КБ, в массиве 3 диска, эффективный общий объем - 900 ГБ. ext4 не вариант.
Изменить: в файловой системе есть несколько VPS (виртуальных частных машин), в том числе Gentoo VPS с большим количеством маленьких файлов. VPS не использует изображения, они хранят файлы непосредственно в файловой системе. Также в нем много файлов размером 500-1000 МБ.
Спасибо, Матич
Идея оптимизации размеров полосок состоит в том, чтобы оптимизировать их так, чтобы в вашем типичная рабочая нагрузка большинство запросов на чтение могут быть выполнены (кратно) за одно чтение, равномерно распределенное по всем дискам данных. Для трехдискового набора RAID-5 количество дисков с данными будет равно двум.
Например, предположим, что моя типичная рабочая нагрузка составляет запросы чтения ввода-вывода, которые в среднем составляют 128 КБ. Затем вы захотите создать куски по 64 КБ, если у меня есть трехдисковый набор RAID-5. Рассчитайте это так:
avg request size / number of data disks = chunk size
128kB / 2 = 64kB
Это размер блока вашего Набор RAID, мы еще не подошли к созданию файловой системы.
Следующим шагом будет проверка соответствия файловой системы характеристикам RAID-массива. Следовательно, мы хотим убедиться, что файловая система знает размер блока RAID-массива. Затем он может равномерно распределить суперблоки по трем дискам.
Для этого нам нужно сообщить mke2fs, каков размер чанка или, точнее, сколько блоков файловой системы уместится в чанке. Это называется «шагом» файловой системы:
chunk size / size of filesystem block = stride size
64kB / 4kB = 16
Затем вы можете вызвать mke2fs с параметром -E stride = 16.
В страница Упомянутое ранее также говорит о параметре -E stripe-width для mke2fs, но я никогда не использовал его сам, и на странице руководства моей версии mke2fs это не упоминается. Если бы мы хотели его использовать, мы бы использовали его, как с 32: ширина полосы рассчитывается путем умножения шага на количество дисков данных (два, в вашем случае).
Теперь к сути вопроса: каков оптимальный размер блока? Как я описал выше, вам понадобится средний размер запроса чтения ввода-вывода. Вы можете получить это значение, проверив соответствующий столбец в выходных данных iostat или sar. Вам нужно будет сделать это в системе, имеющей сравнимую рабочую нагрузку с системой, которую вы настраиваете, в течение длительного периода.
Убедитесь, что вы знаете, какую единицу использует значение: секторы, килобайты, байты или блоки.
Убедитесь, что вы выровняли файловую систему с размером полосы RAID -
http://wiki.centos.org/HowTos/Disk_Optimization
имеет хорошее резюме.
Убедившись, что файловая система правильно выровнена, вы можете избежать использования RMW на RAID5, что повышает производительность.
Не зная точной вашей рабочей нагрузки, я бы сказал, что значения по умолчанию, вероятно, будут лучшим вариантом. Может быть -m 0
если вас не беспокоит заполнение диска пользователями без полномочий root и / или установка dir_index
если вы собираетесь делать глупости с количеством файлов в каталоге.