объяснить md's raid10, f2

14

Я знаю, как работает большинство различных RAID. Но я наткнулся на рекомендуемый режим raid10, f2 при исследовании программного обеспечения linux raid. Я не очень понимаю, как это работает на 2 или 3 диска. кто-нибудь может мне это объяснить? или укажите мне действительно хорошую статью, которая это объясняет?

xenoterracide
источник

Ответы:

17

на самом деле я думаю, что Википедия объясняет это лучше, чем фактические документы. Вот текст из статьи.

Программный RAID-драйвер ядра Linux (называемый md для «нескольких устройств») можно использовать для создания классического массива RAID 1 + 0, но также (начиная с версии 2.6.9) в качестве одного уровня [4] с некоторыми интересными расширениями [ 5]. Стандартная «ближняя» схема, в которой каждый фрагмент повторяется n раз в массиве k-way stripe, эквивалентна стандартной схеме RAID-10, но не требует, чтобы n делило k. Например, расположение n2 на 2, 3 и 4 дисках будет выглядеть так:

2 drives         3 drives            4 drives
--------         ----------        --------------
A1  A1           A1  A1  A2        A1  A1  A2  A2
A2  A2           A2  A3  A3        A3  A3  A4  A4
A3  A3           A4  A4  A5        A5  A5  A6  A6
A4  A4           A5  A6  A6        A7  A7  A8  A8
..  ..           ..  ..  ..        ..  ..  ..  ..

Пример с 4 накопителями идентичен стандартному массиву RAID-1 + 0, а пример с 3 накопителями - программная реализация RAID-1E. Пример с двумя дисками эквивалентен RAID 1. Драйвер также поддерживает «дальний» макет, где все диски разделены на f разделов. Все фрагменты повторяются в каждом разделе, но смещены на одно устройство. Например, схемы f2 на массивах с двумя и тремя дисками выглядят так:

2 drives             3 drives
--------             --------------
A1  A2               A1   A2   A3
A3  A4               A4   A5   A6
A5  A6               A7   A8   A9
..  ..               ..   ..   ..
A2  A1               A3   A1   A2
A4  A3               A6   A4   A5
A6  A5               A9   A7   A8
..  ..               ..   ..   ..

Это разработано для чередования производительности зеркального массива; последовательное чтение может быть чередованным, как в RAID-0, случайное чтение несколько быстрее (возможно, 10-20% из-за использования более быстрых внешних секторов дисков и меньшего среднего времени поиска), а последовательные и случайные записи примерно одинаковы по производительности. на другие зеркальные рейды. Компоновка работает хорошо для систем, где чтение происходит чаще, чем запись, что является очень распространенной ситуацией во многих системах. Первая 1 / f каждого диска - это стандартный массив RAID-0. Таким образом, вы можете получить производительность чередования только на двух дисках. Параметры ближнего и дальнего действия могут использоваться одновременно. Куски в каждой секции смещены на n устройств. Например, в раскладке n2 f2 хранится 2 × 2 = 4 копии каждого сектора, поэтому требуется как минимум 4 диска:

A1  A1  A2  A2        A1  A1  A2  A2  A3
A3  A3  A4  A4        A3  A4  A4  A5  A5
A5  A5  A6  A6        A6  A6  A7  A7  A8
A7  A7  A8  A8        A8  A9  A9  A10 A10
..  ..  ..  ..        ..  ..  ..  ..  ..
A2  A2  A1  A1        A2  A3  A1  A1  A2
A4  A4  A3  A3        A5  A5  A3  A4  A4
A6  A6  A5  A5        A7  A8  A6  A6  A7
A8  A8  A7  A7        A10 A10 A8  A9  A9
..  ..  ..  ..        ..  ..  ..  ..  ..

Начиная с Linux 2.6.18, драйвер также поддерживает макет смещения, где каждая полоса повторяется o раз. Например, схемы o2 на массивах с двумя и тремя дисками расположены следующим образом:

2 drives       3 drives
--------       --------
A1  A2         A1  A2  A3
A2  A1         A3  A1  A2
A3  A4         A4  A5  A6
A4  A3         A6  A4  A5
A5  A6         A7  A8  A9
A6  A5         A9  A7  A8
..  ..         ..  ..  ..

Примечание: k - это количество дисков, n #, f # и o # - параметры в опции mdadm --layout. Linux также может создавать другие стандартные конфигурации RAID, используя драйвер md (0, 1, 4, 5, 6).

xenoterracide
источник
6

Из того, что я прочитал, массив RAID 10 f2 хранит как минимум 2 копии каждого блока, и они хранятся далеко друг от друга.

Вот соответствующие разделы из справочных страниц.

mdadm (8)

-p, --layout = Эта опция настраивает точные детали расположения данных для массивов raid5 и raid10
...
Наконец, варианты размещения для RAID10 - это один из 'n', 'o' или 'p', за которым следует небольшой число. По умолчанию это «n2».

n сигнализирует «ближние» копии. Несколько копий одного блока данных имеют одинаковые смещения на разных устройствах.

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

f сигнализирует « дальние » копии (множественные копии имеют очень разные смещения). Смотрите md (4) для более подробной информации о «ближнем» и «дальнем».

мкр (4)

RAID10 предоставляет комбинацию RAID1 и RAID0, иногда называемую RAID1 + 0. Каждый блок данных дублируется несколько раз, и результирующий набор блоков данных распределяется по нескольким дискам. При настройке массива RAID10 необходимо указать количество реплик каждого требуемого блока данных (обычно это будет 2) и указать, должны ли реплики быть «рядом», «смещено» или «далеко». (Обратите внимание, что макет «смещение» доступен только из 2.6.18).

Когда выбраны « близкие » реплики, несколько копий данного чанка располагаются последовательно по полосам массива, поэтому две копии блока данных, вероятно, будут иметь одинаковое смещение на двух соседних устройствах.

Когда выбраны « дальние » реплики, несколько копий данного фрагмента располагаются довольно далеко друг от друга. Первая копия всех блоков данных будет чередоваться по ранней части всех дисков в режиме RAID0, а затем следующая копия всех блоков будет чередоваться по более позднему разделу всех дисков, всегда гарантируя, что все копии любого данного блока будут на разных дисках.

« Дальнее » расположение может обеспечить производительность последовательного чтения, равную производительности массива RAID0, но за счет снижения производительности записи.

Когда выбраны «смещенные» реплики, несколько копий данного чанка размещаются на последовательных дисках и с последовательными смещениями. Фактически каждая полоса дублируется, а копии смещаются на одно устройство. Это должно дать аналогичные характеристики чтения для «далеко», если используется достаточно большой размер куска, но без особого количества попыток записи.

Следует отметить, что количество устройств в массиве RAID10 не должно быть кратным количеству реплик каждого блока данных, так как таких устройств должно быть как минимум столько же, сколько реплик.

Если, например, массив создается с 5 устройствами и 2 репликами, то будет доступно пространство, эквивалентное 2,5 устройств, и каждый блок будет храниться на двух разных устройствах.

Zoredache
источник
звучит как офсет - это путь ...
xenoterracide
Я думаю, что более наглядное объяснение Википедии яснее ... поэтому я разместил его здесь.
ксенотеррацид
2

Это интересно и хорошо объяснено. Однако обычный RAID1 также имеет функцию, по крайней мере, в программном RAID-массиве Linux, чтобы иметь возможность поддерживать несколько считывателей параллельно с очень хорошей производительностью:

Данные читаются с любого устройства. Драйвер пытается распределить запросы на чтение по всем устройствам, чтобы максимизировать производительность.
[...] Теоретически, наличие N-диска RAID1 позволит N последовательным потокам читать со всех дисков. (человек 4 мд, раздел RAID1)

Похоже, RAID10 в своей ближней компоновке больше подходит для такого поведения (ускоряет не однопоточный ввод-вывод, такой как RAID0, а многопоточный ввод-вывод). n2f2 с 4 дисками, похожими на RAID1 с 4 дисками.

Компоновка n2 с четырьмя дисками будет выполнять обе задачи: удвоить производительность чтения для одного потока и увеличить производительность чтения для двух потоков в четыре раза (если планировщик Linux md RAID10 хорошо реализован, один поток должен читать пару, а другой - другая пара).

Все зависит от того, что вам нужно! Я еще не делал тесты.

Alphanet
источник