Я знаю, как работает большинство различных RAID. Но наткнулся на рекомендованное raid10, f2 режим при исследовании рейда программного обеспечения Linux. Я не очень понимаю, как это работает на 2 или 3 дисках. может кто-нибудь мне это объяснить? или указать мне на действительно хорошую статью, в которой это объясняется?
на самом деле я думаю Википедия объясняет это лучше, чем настоящие документы. Вот текст из статьи.
Программный драйвер RAID ядра Linux (называемый md, что означает «несколько устройств») можно использовать для создания классического массива RAID 1 + 0, но также (начиная с версии 2.6.9) как одноуровневый [4] с некоторыми интересными расширениями [ 5]. Стандартный «ближний» макет, где каждый фрагмент повторяется n раз в k-полосном массиве, эквивалентен стандартной схеме 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 и 3 дисками будут выглядеть так:
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. Таким образом, вы можете получить производительность чередования на зеркальном наборе всего из 2 дисков. Параметры «ближний» и «дальний» можно использовать одновременно. Чанки в каждом разделе смещены 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 и 3 дисками представлены следующим образом:
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).
Из того, что я прочитал f2 В массиве RAID10 хранится не менее 2 копий каждого блока, и они хранятся далеко друг от друга.
Вот соответствующие разделы на страницах руководства.
-p, --layout = Этот параметр настраивает мелкие детали схемы данных для массивов raid5 и raid10
...
Наконец, варианты компоновки для RAID10 - это одно из "n", "o" или "p", за которым следует небольшое число. По умолчанию - n2.n сигнализирует о «ближайших» копиях. Несколько копий одного блока данных находятся на одинаковом смещении на разных устройствах.
o сигнализирует о «офсетных» копиях. Вместо того, чтобы дублировать блоки в полосе, дублируются целые полосы, но поворачиваются одним устройством, поэтому дублирующиеся блоки находятся на разных устройствах. Таким образом, последующие копии блока находятся на следующем диске и на один фрагмент ниже.
f сигналы 'далеко'копий (у нескольких копий очень разные смещения). См. Md (4) для получения более подробной информации о «ближнем» и «дальнем».
RAID10 обеспечивает комбинацию RAID1 и RAID0, иногда известную как RAID1 + 0. Каждый блок данных дублируется несколько раз, и результирующий набор блоков данных распределяется по нескольким дискам. При настройке массива RAID10 необходимо указать количество реплик каждого блока данных, которые требуются (обычно это 2), и должны ли реплики быть «ближними», «смещенными» или «дальними». (Обратите внимание, что макет «смещение» доступен только с версии 2.6.18).
Когда 'возлеЕсли выбраны реплики, несколько копий данного фрагмента располагаются последовательно по полосам массива, поэтому две копии блока данных, вероятно, будут с одинаковым смещением на двух соседних устройствах.
Когда 'далеко'реплики выбраны, несколько копий данного фрагмента размещаются довольно далеко друг от друга. Первая копия всех блоков данных будет чередоваться по ранней части всех дисков в режиме RAID0, а затем следующая копия всех блоков будет чередоваться по более поздней части всех дисков, всегда гарантируя, что все копии любого данного блока на разных дисках.
'далекоТакая компоновка может обеспечить производительность последовательного чтения, равную производительности массива RAID0, но за счет снижения производительности записи.
Когда выбраны «смещенные» реплики, несколько копий данного фрагмента размещаются на последовательных дисках и с последовательными смещениями. Фактически каждая полоса дублируется, а копии смещаются одним устройством. Это должно дать такие же характеристики чтения, как и 'far', если используется достаточно большой размер блока, но без стольких попыток записи.
Следует отметить, что количество устройств в массиве RAID10 не обязательно должно быть кратным количеству реплик каждого блока данных, их должно быть как минимум столько же, сколько и реплик.
Если, например, создается массив из 5 устройств и 2 реплик, то будет доступно пространство, эквивалентное 2,5 устройствам, и каждый блок будет храниться на двух разных устройствах.
Это интересно и хорошо объяснено. Однако простой RAID1 также имеет функцию, по крайней мере, на программном RAID Linux, чтобы иметь возможность поддерживать несколько устройств чтения параллельно с очень хорошей производительностью:
Данные читаются с любого устройства. Драйвер пытается распределить запросы чтения по всем устройствам, чтобы максимизировать производительность.
[...] Теоретически наличие N-дискового RAID1 позволит N последовательным потокам читать со всех дисков. (man 4 md, раздел RAID1)
Похоже, что RAID10 в своей близкой компоновке больше подходит для этого поведения (ускорение не однопоточного ввода-вывода, как RAID0, а многопоточного ввода-вывода). n2f2 с 4 дисками аналогичен RAID1 с 4 дисками.
Компоновка n2 с 4 дисками сделает и то, и другое: удвоит производительность чтения для одного потока и в четыре раза повысит производительность чтения для двух потоков (если планировщик Linux md RAID10 хорошо реализован, один поток должен читать в паре, а другой - в другая пара).
Все зависит от того, что вам нужно! Тестов еще не делал.