Назад | Перейти на главную страницу

Linux: как выровнять разделы и файловую систему на аппаратном RAID

У меня есть тестовый бокс (PowerEdge 2950) с подключенными дисками Perc 6 / i и 4x 15,5k SAS (с размером блока 512 байт). Они находятся на одном виртуальном диске RAID 5 с размером блока 64 КБ.

Я создаю один тестовый раздел, охватывающий весь диск. Должен ли он быть выровнен по отметке фрагмента 64 КБ или размеру блока 512 байт? Если позже, раздел может начинаться с 2048 байтов на одном виртуальном диске, то есть он начнется со 2-го свободного блока на первом диске (я полагаю)?

Кроме того, я добавлю еще два диска и воссоздаю виртуальный диск RAID позже для дальнейшего тестирования, следует ли создавать раздел размером 6x512 байтов, то есть из 3072 байтов?

Я прочитал пару похожих вопросов по этому поводу, но я не мог понять из них, как размер блока в томе RAID может быть связан с выравниванием разделов, размером блока диска при использовании одного диска.

Если вы используете начальный сектор из 2048 (512 байт) секторов, то ваш раздел будет занимать 1 МБ на диске. Это значение используется по умолчанию в большинстве новых установщиков. Это число красиво делится на 64 КБ и большинство других распространенных размеров чанков / блоков.

Если вы делаете разметку с помощью fdisk, то передайте -u флаг. Таким образом, он сообщает значения в 512-байтовых секторах вместо цилиндров.

Поскольку вы используете ext *, вы можете использовать этот калькулятор чтобы определить размер полосы и ширину шага для файловой системы. Я показываю, что вы хотели бы создать свою файловую систему со следующими параметрами: mkfs.ext3 -b 4096 -E stride=16,stripe-width=48. Вы можете попробовать просто создать файловую систему без передачи параметров и посмотреть, что mkfs обнаруживает и использует (проверьте с помощью tune2fs -l /dev/sdnn). В наши дни он, кажется, неплохо справляется с автоматическим определением размера / ширины.

Ваша математика неверна. В 4-дисковом массиве RAID5 есть (упрощенно) 3 диска с данными и диски четности, поэтому, если у вас есть 4 диска по 80 ГБ, вы получаете 3 * 80 или 240 ГБ полезного пространства на массиве RAID. Итак, по вашим предположениям, запуск раздела на 2048 байтах на диске начнется со 2-го блока 2-го диска.

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

Конечно, он читает и записывает блоки размером 64 КБ, поэтому, если вы начали разбиение на границе 192 КБ, вы можете просто увидеть частичное улучшение при доступе к файлам в самом начале раздела. Но, если предположить, что на этом диске не будет нескольких очень больших файлов (то есть с размером, кратным 192 КБ), которые читаются последовательно, при нормальной работе головки будут перемещаться по всему диску (-ам), чтение / запись выделенных файлов в кусках по 4 Кбайт, которые подавят любой выигрыш от выравнивания раздела.

В заключение, поскольку Perc 6 / i является аппаратным RAID-контроллером, я бы просто позволил ОС разбить диск на разделы, как она рекомендует. Выравнивание раздела не окажет заметного влияния на скорость доступа к диску / файлу.

Ваши разделы должны соответствовать ширине полосы (размер блока * количество дисков с данными). Однако вы должны знать, что это едва ли затрагивает поверхность оптимизации выравнивания, и вам нужно убедиться, что все, от размера блока RAID до метаданных файловой системы и размера ввода-вывода приложения, необходимо выровнять для оптимального производительность и отсутствие ненужного усиления чтения / записи. Я написал статью на эту тему оптимизация выравнивания файловой системы, который может оказаться полезным.