Ликург
Заметки | Тех.книги | Худ.книги |

Размер страйпа и кластера

Размышления на тему размера кластера и страйпа. Выводы сделаны на основе логики и экспериментально не проверены.

В большинстве случаев имеет смысл выбирать максимальный размер страйпа. И совсем не обязательно уравнивать его с размером кластера файловой системы.

Время одной дисковой операции почти не зависит от размера страйпа. И если ваши данные не имеют жуткой фрагментации, или особенность работы с ними не связана с чтением или записью огромного количества удаленных друг от друга мелких блоков. То с этого можно получить приличную выгоду. Т.е. одну физическую операцию, на несколько логических.

Размер кластера желательно выбирать в зависимости от количества мелких файлов и их размера. В основном для экономии дискового пространства.

Если речь о БД, то принято выбирать размер кластера, равным размеру блока данных БД. Думаю здесь смысл в том чтобы кластер не оказался меньше этого блока, чтобы не вызывать лишней физической фрагментации, и был ему кратен, чтобы не вызывать лишних дисковых операций из-за не совпадения границ блоков.

Размер кластера может быть существенно меньше размера страйпа и особых потерь это не вызовет, если нет акцента на работу с разбросанными мелкими блоками и нет предпосылок для сильной фрагментации.

Важно, чтобы размер страйпа был кратен размеру кластера. Также желательно чтобы размер кластера не превышал размер страйпа, т.к. в этом нет смысла (кроме ситуации описанной ниже).

Выше, под размером страйпа имеется ввиду размер физического блока на одном диске. Есть еще понятие полного страйпа рейда, который объединяет дисковые страйпы и распаралеливает доступ к ним. Например, полный страйп RAID 0 равен двум дисковым страйпам, а в RAID 1 они равны.

В ситуациях когда в основном используются только последовательные объемные операции с данными, может быть выгодно иметь размер кластера равный полному страйпу, чтобы распаралеливать доступ к нему.