explicar raid10, f2 do md

14

Eu sei como funciona a maioria dos vários RAIDs. Mas eu tropecei no modo recomendado raid10, f2 enquanto pesquisava o ataque ao software linux. Eu realmente não entendo como funciona em 2 ou 3 discos. alguém poderia me explicar? ou me indicou um artigo realmente bom que explica isso?

xenoterracida
fonte

Respostas:

17

na verdade, acho que a Wikipedia explica melhor do que os documentos reais. Aqui está o texto do artigo.

O driver RAID do software de kernel Linux (chamado md, para "vários dispositivos") pode ser usado para criar uma matriz RAID 1 + 0 clássica, mas também (desde a versão 2.6.9) como um único nível [4] com algumas extensões interessantes [ 5] O layout "próximo" padrão, em que cada pedaço é repetido n vezes em uma matriz de faixas k-way, é equivalente ao arranjo RAID-10 padrão, mas não exige que n divida k. Por exemplo, um layout n2 em 2, 3 e 4 unidades seria semelhante a:

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
..  ..           ..  ..  ..        ..  ..  ..  ..

O exemplo de 4 unidades é idêntico a uma matriz RAID-1 + 0 padrão, enquanto o exemplo de 3 unidades é uma implementação de software do RAID-1E. O exemplo de 2 unidades é equivalente a RAID 1. O driver também suporta um layout "distante", onde todas as unidades são divididas em f seções. Todos os pedaços são repetidos em cada seção, mas compensados ​​por um dispositivo. Por exemplo, os layouts f2 em matrizes de 2 e 3 unidades se pareceriam com:

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
..  ..               ..   ..   ..

Isso foi desenvolvido para reduzir o desempenho de uma matriz espelhada; as leituras sequenciais podem ser distribuídas, como no RAID-0, as leituras aleatórias são um pouco mais rápidas (talvez 10 a 20% devido ao uso dos setores externos mais rápidos dos discos e menores tempos médios de busca), e as gravações seqüenciais e aleatórias têm o mesmo desempenho para outros ataques espelhados. O layout tem bom desempenho para sistemas em que as leituras são mais frequentes que as gravações, o que é uma situação muito comum em muitos sistemas. O primeiro 1 / f de cada unidade é uma matriz RAID-0 padrão. Assim, você pode obter desempenho de distribuição em um conjunto espelhado de apenas 2 unidades. As opções local e remota podem ser usadas ao mesmo tempo. Os pedaços em cada seção são deslocados por n dispositivo (s). Por exemplo, o layout n2 f2 armazena 2 × 2 = 4 cópias de cada setor, portanto, requer pelo menos 4 unidades:

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
..  ..  ..  ..        ..  ..  ..  ..  ..

A partir do Linux 2.6.18, o driver também suporta um layout de deslocamento em que cada faixa é repetida o vezes. Por exemplo, layouts de o2 em matrizes de 2 e 3 unidades são apresentados como:

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
..  ..         ..  ..  ..

Nota: k é o número de unidades, n #, f # e o # são parâmetros na opção mdadm --layout. O Linux também pode criar outras configurações RAID padrão usando o driver md (0, 1, 4, 5, 6).

xenoterracida
fonte
6

Pelo que li, uma matriz f2 RAID10 mantém pelo menos 2 cópias de cada bloco e elas são armazenadas longe uma da outra.

Aqui estão as seções relevantes das páginas de manual.

mdadm (8)

-p, --layout = Esta opção configura os detalhes do layout de dados para as matrizes raid5 e raid10
...
Por fim, as opções de layout do RAID10 são 'n', 'o' ou 'p', seguidas por um pequeno número. O padrão é 'n2'.

n sinaliza cópias 'próximas'. Várias cópias de um bloco de dados têm desvios semelhantes em dispositivos diferentes.

o sinaliza cópias 'offset'. Em vez de os blocos serem duplicados em uma faixa, as faixas inteiras são duplicadas, mas são giradas por um dispositivo para que blocos duplicados estejam em dispositivos diferentes. Assim, cópias subsequentes de um bloco estão na próxima unidade e estão um pedaço mais abaixo.

f sinaliza cópias ' distantes ' (várias cópias têm deslocamentos muito diferentes). Veja md (4) para mais detalhes sobre 'near' e 'far'.

md (4)

O RAID10 fornece uma combinação de RAID1 e RAID0 e, às vezes, conhecido como RAID1 + 0. Cada bloco de dados é duplicado várias vezes e a coleção resultante de blocos de dados é distribuída em várias unidades. Ao configurar uma matriz RAID10, é necessário especificar o número de réplicas de cada bloco de dados que são necessárias (normalmente será 2) e se as réplicas devem estar 'próximas', 'deslocadas' ou 'distantes'. (Observe que o layout 'deslocamento' está disponível apenas a partir de 2.6.18).

Quando réplicas ' próximas ' são escolhidas, as várias cópias de um determinado pedaço são dispostas consecutivamente nas faixas da matriz, para que as duas cópias de um bloco de dados provavelmente estejam no mesmo deslocamento em dois dispositivos adjacentes.

Quando réplicas ' distantes ' são escolhidas, as várias cópias de um determinado pedaço são dispostas bastante distantes uma da outra. A primeira cópia de todos os blocos de dados será distribuída na parte inicial de todas as unidades no modo RAID0 e, em seguida, a próxima cópia de todos os blocos será distribuída em uma seção posterior de todas as unidades, sempre garantindo que todas as cópias de qualquer bloco sejam em unidades diferentes.

O arranjo ' distante ' pode fornecer desempenho de leitura sequencial igual ao de uma matriz RAID0, mas ao custo de desempenho de gravação degradado.

Quando réplicas 'offset' são escolhidas, as várias cópias de um determinado pedaço são dispostas em unidades consecutivas e com deslocamentos consecutivos. Efetivamente, cada faixa é duplicada e as cópias são deslocadas por um dispositivo. Isso deve atribuir características de leitura semelhantes a 'distante' se um tamanho de pedaço adequadamente grande for usado, mas sem procurar por gravações.

Deve-se observar que o número de dispositivos em uma matriz RAID10 não precisa ser múltiplo do número de réplicas de cada bloco de dados; deve haver pelo menos tantos dispositivos quanto réplicas.

Se, por exemplo, uma matriz for criada com 5 dispositivos e 2 réplicas, um espaço equivalente a 2,5 dos dispositivos estará disponível e cada bloco será armazenado em dois dispositivos diferentes.

Zoredache
fonte
soa como offset é o caminho a percorrer ...
xenoterracide
Eu acho que a explicação mais visual da Wikipedia é mais clara ... então eu a publiquei aqui.
Xenoterracide
2

Isso é interessante e bem explicado. No entanto, o RAID1 comum também possui o recurso, pelo menos no RAID do software Linux, para poder sustentar vários leitores em paralelo com um desempenho muito bom:

Os dados são lidos em qualquer dispositivo. O driver tenta distribuir solicitações de leitura em todos os dispositivos para maximizar o desempenho.
[...] Em teoria, ter um RAID1 de disco N permitirá que N threads sequenciais leiam todos os discos. (homem 4 md, seção RAID1)

Parece que o RAID10, em seu layout próximo, é mais adequado para esse comportamento (acelerando não E / S de thread único como RAID0, mas E / S de múltiplos threads). n2f2 com 4 discos sendo semelhante ao RAID1 com 4 discos.

O layout n2 com 4 discos fará as duas coisas: duplicar o desempenho de leitura de um único encadeamento e quadruplicar o desempenho de leitura de dois encadeamentos (se o planejador Linux md RAID10 estiver bem implementado, um encadeamento deverá ler em um par e outro em o outro par).

Tudo depende do que você precisa! Ainda não fiz benchmarks.

alphanet
fonte