По причинам, слишком сложным для понимания, я использую 3-дисковый RAID1E в некоторых системах Linux. Видеть Вот для получения дополнительной информации об этом.
Итак, я понимаю, что для оптимизации макета файловой системы на этом томе вы используете следующий расчет:
chunk-size = 64kB
block-size = 4kB
stride = chunk / block = 16
stripe-width = stride * ( (numdisks)/2 ) = 16 * 1.5 = 24
Однако mkfs.ext3 выдает предупреждение, когда я использую этот расчет для установки ширины полосы, что она должна быть степенью двойки.
Итак, мой вопрос: правильно ли я делаю это? Должен ли я обращаться с ним как со стандартным четырехдисковым RAID10, поскольку полосы имеют одинаковый размер?
Обновление: это не деградированный массив, это полностью поддерживаемая конфигурация. Прочтите ссылку из первого абзаца.
Установка ширины полосы более 64 КБ будет неоптимальной.
Любая запись размером более 64 КБ приведет к 4 операциям записи: одна запись на один диск, одна запись на другой и две записи на один.
Просто установите ширину полосы на 64 КБ.
Вы начинаете оптимизацию не с того места. Вам нужно начать с размера ввода-вывода, для которого вы оптимизируете (например, размера блока, который ваше приложение читает / записывает), и оптимизировать для этого весь стек. Я написал статью именно на эту тему, в которой объясняется, почему выравнивание стека хранилища и файловой системы важно, который может оказаться полезным.
Я провел несколько экспериментов с использованием XFS вместо ext3 на различных размерах и уровнях MD RAID. Похоже, что следующая формула применима ко всем:
# chunk is specified in mdadm create, block in mkfs
stride = chunk / block
stripe-width = ((slices - parity) * stride
Где четность равна нулю для RAID0 / 10 / 1E, один для RAID5, два для RAID6.
Итак, в случае моего первоначального вопроса ширина полосы должна быть установлена на 48 (Фрагмент 64 КБ, блок 4 КБ, 3 сегмента, нулевая четность). Когда я использую эти настройки, mkfs.ext3 больше не выдает предупреждение о том, что ширина полосы не делится на шаг.