explica o raid10, f2 do md

14

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

    
por xenoterracide 06.05.2010 / 00:32

3 respostas

14

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

O driver RAID do kernel do Linux (chamado md, para "vários dispositivos") pode ser usado para construir uma matriz RAID 1 + 0 clássica, mas também (desde a versão 2.6.9) como um único nível [4] com alguns extensões interessantes [5]. O layout padrão "próximo", onde cada pedaço é repetido n vezes em uma matriz de faixas k-way, é equivalente ao arranjo padrão RAID-10, mas não requer 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 drives é idêntico a um array padrão RAID-1 + 0, enquanto o exemplo de 3 drives é 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 duas e três unidades seriam semelhantes a:

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 é projetado para distribuir o desempenho de uma matriz espelhada; leituras seqüenciais podem ser distribuídas, como em RAID-0, as leituras aleatórias são um pouco mais rápidas (talvez 10-20% devido ao uso dos setores externos mais rápidos dos discos e menores tempos médios de busca) e as gravações sequenciais e aleatórias têm o mesmo desempenho para outros ataques espelhados. O layout funciona bem para sistemas onde 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 é um array RAID-0 padrão. Assim, você pode obter desempenho de distribuição em um conjunto espelhado de apenas 2 unidades. As opções near e far podem ser usadas ao mesmo tempo. Os pedaços de cada seção são compensados por n dispositivo (s). Por exemplo, as lojas de layout n2 f2 2 × 2 = 4 cópias de cada setor, então 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 onde cada faixa é repetida o vezes. Por exemplo, layouts o2 em matrizes de 2 e 3 unidades são definidos 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 padrão de RAID usando o driver md (0, 1, 4, 5, 6).

    
por 11.05.2010 / 06:37
6

Pelo que eu li uma matriz RAID10 f2 mantém pelo menos 2 cópias de cada bloco e elas são armazenadas longe umas das outras.

Aqui estão as seções relevantes das man pages.

mdadm (8)

-p, --layout= This option configures the fine details of data layout for raid5, and raid10 arrays
...
Finally, the layout options for RAID10 are one of 'n', 'o' or 'p' followed by a small number. The default is 'n2'.

n signals 'near' copies. Multiple copies of one data block are at similar offsets in different devices.

o signals 'offset' copies. Rather than the chunks being duplicated within a stripe, whole stripes are duplicated but are rotated by one device so duplicate blocks are on different devices. Thus subsequent copies of a block are in the next drive, and are one chunk further down.

f signals 'far' copies (multiple copies have very different offsets). See md(4) for more detail about 'near' and 'far'.

md (4)

RAID10 provides a combination of RAID1 and RAID0, and sometimes known as RAID1+0. Every datablock is duplicated some number of times, and the resulting collection of datablocks are distributed over multiple drives. When configuring a RAID10 array it is necessary to specify the number of replicas of each data block that are required (this will normally be 2) and whether the replicas should be 'near', 'offset' or 'far'. (Note that the 'offset' layout is only available from 2.6.18).

When 'near' replicas are chosen, the multiple copies of a given chunk are laid out consecutively across the stripes of the array, so the two copies of a datablock will likely be at the same offset on two adjacent devices.

When 'far' replicas are chosen, the multiple copies of a given chunk are laid out quite distant from each other. The first copy of all data blocks will be striped across the early part of all drives in RAID0 fashion, and then the next copy of all blocks will be striped across a later section of all drives, always ensuring that all copies of any given block are on different drives.

The 'far' arrangement can give sequential read performance equal to that of a RAID0 array, but at the cost of degraded write performance.

When 'offset' replicas are chosen, the multiple copies of a given chunk are laid out on consecutive drives and at consecutive offsets. Effectively each stripe is duplicated and the copies are offset by one device. This should give similar read characteristics to 'far' if a suitably large chunk size is used, but without as much seeking for writes.

It should be noted that the number of devices in a RAID10 array need not be a multiple of the number of replica of each data block, those there must be at least as many devices as replicas.

If, for example, an array is created with 5 devices and 2 replicas, then space equivalent to 2.5 of the devices will be available, and every block will be stored on two different devices.

    
por 06.05.2010 / 01:07
2

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

Data is read from any one device. The driver attempts to distribute read requests across all devices to maximise performance.
[ ... ] In theory, having an N-disk RAID1 will allow N sequential threads to read from all disks. (man 4 md, RAID1 section)

Parece que o RAID10, em seu layout próximo, é mais adequado a esse comportamento (acelerando não apenas E / S de thread único como RAID0, mas E / S multi-threaded). n2f2 com 4 discos sendo semelhantes ao RAID1 com 4 discos.

O layout n2 com 4 discos fará os dois: dobrar o desempenho de leitura de um único thread e quadruplicar o desempenho de leitura de dois threads (se o planejador Linux md RAID10 estiver bem implementado, um thread deve ler um par e o outro no outro par).

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

    
por 20.02.2011 / 10:40