Por que o RAID 0 não pode utilizar todo o espaço em disco em dois discos de tamanhos diferentes?

10

Para citar o artigo da Wikipedia sobre RAID :

Um RAID 0 pode ser criado com discos de tamanhos diferentes, mas o espaço de armazenamento adicionado à matriz por cada disco é limitado ao tamanho do menor disco. Por exemplo, se um disco de 100 GB for distribuído junto com um disco de 350 GB, o tamanho da matriz será 200 GB (100 GB × 2).

O artigo, no entanto, não explica por que não pode RAID-los juntos e usa todo o espaço em disco. Entendo que a distribuição grava entre os dois, mas certamente não deve impedir a gravação nos setores posteriores do segundo disco, enquanto a execução é prejudicada? Existe um sistema RAID alternativo (por exemplo, RAID de software) que ofereça esse recurso?

Polinomial
fonte
Não tenho certeza se isso funcionaria com alguns ataques de hardware, mas com ataques de software. Para tirar proveito de alguns aspectos do RAID 0 e usar mais espaço disponível em duas unidades de tamanhos diferentes, como uma de 100 GB e outra de 350 GB, você pode tentar criar 3 Partições de 100 GB na unidade maior e distribuir a partição de 100 KB na primeira e as 3 partições de 100 GB na segunda unidade. O nível de raide 0 fornecerá 400 shows para usar, proporcionando um aumento no desempenho de leitura / gravação, mas provavelmente seria menor do que se você distribuísse duas unidades de 200 GB.
Keith Reynolds
Normalmente você não gostaria de fazer isso. Para fins de demonstração, configurei um RAID0 usando uma das unidades flash 1G e 16G. Fiz partições estendidas preenchendo cada disco. Então eu fiz partições de 981MB em cada unidade até que estivessem cheias. Então eu fiz um ataque usando as 16 partições com o comando linux mdadm --create --verbose /dev/md0 --chunk=512 -l0 -n16 /dev/sdd5 /dev/sde5 /dev/sde6 /dev/sde7 /dev/sde8 /dev/sde9 /dev/sde10 /dev/sde11 /dev/sde12 /dev/sde13 /dev/sde14 /dev/sde15 /dev/sde16 /dev/sde17 /dev/sde18 /dev/sde19. Acabei com menos espaço do que tinha Eu apenas usei o drive de 16GB
Keith Reynolds

Respostas:

11

A razão para o tamanho ser limitado ao tamanho do menor disco tem a ver com o fato de que as faixas são gravadas "alternadamente" e devem ter o mesmo tamanho.

Em um sistema de dois discos, todas as faixas ímpares estão em um disco, as pares no outro. Gravações alternam entre discos, ímpar / par / ímpar / par / ...

Como as faixas devem ter o mesmo tamanho e emparelhadas (para dois discos), você está limitado a um espaço útil máximo de 2 * (tamanho do menor disco).

Prumo
fonte
3

Você pode usar o espaço restante. Você pode criar um volume usando o espaço restante ou até mesmo usá-lo como parte de outro RAID. No entanto, o uso desse espaço extra prejudicará o desempenho que o RAID 0 oferece, pois dois processos diferentes podem estar tentando acessar o mesmo controlador físico e disco.

Por que você não pode adicionar esse espaço extra ao RAID original? Bem, sem entrar em muitos detalhes, é por causa dos algoritmos que os RAIDs usam. O RAID 0 grava no primeiro disco do RAID e depois no próximo. Isso aumenta o desempenho, pois não precisa aguardar o disco anterior terminar a leitura ou gravação. Se os 250 GB em sua postagem foram usados, a maior parte da gravação seria no primeiro disco, eliminando praticamente qualquer ganho de desempenho.

O RAID pode não ser a solução que você está procurando. Se você deseja usar todo o espaço das unidades, deve expandir os volumes. A extensão permite pegar muitos volumes e concatená-los juntos em um grande volume. A extensão não oferece aumento ou redundância de desempenho.

Keltari
fonte
Isso não explica por que não pode usar todas as duas unidades em um volume. Além disso, a parte dos volumes separados não causará nenhum problema de desempenho - o controle de E / S de disco no nível baixo é tratado por interrupções via disk.sys, para que as solicitações de leitura / gravação sejam canalizadas de qualquer maneira e o Windows também suporte E / S sobrepostas.
Polynomial
Ok, você atualiza ainda não explicou. Eu estou familiarizado com o funcionamento das faixas, mas isso não explica por que não pode simplesmente passar para o modo de disco único (com desempenho padrão de disco único) quando o disco menor está cheio. Obrigado por mencionar a abrangência do volume - isso parece útil.
Polynomial
1
Porque é assim que o RAID funciona. Se você realmente quisesse, poderia RAID 0 o que pudesse, criar um volume com o espaço livre e depois expandir o RAID e o volume extra. Mas acho que nenhum controlador RAID permitirá que você faça isso. Você pode fazer isso com uma combinação de RAID de hardware e software.
Keltari
1
-1 "Este desempenho aumenta, como ele não tem que esperar para o disco anterior para terminar de ler ou escrever" o mesmo poderia ser dito para dois discos rígidos de tamanhos diferentes em RAID 0
Celeritas
2
@ Polinomial Isso não seria RAID 0. Você perguntou por que RAID 0 não pode usar todo o espaço em disco e então responde "por que não pode simplesmente ...". Não pode porque é RAID 0. Se fizesse outra coisa, seria outra coisa.
David Schwartz
0

RAID é um pseudo-padrão que descreve como os dados podem ser armazenados em uma matriz de discos. O padrão descreve quatro maneiras diferentes de armazenar dados (tecnicamente mais, mas principalmente ninguém se importa com os outros):

Raid-0: Striping. Cada bloco de dados é dividido em cada membro do dispositivo RAID. Sem redundância, portanto, trata-se mais de uma matriz de discos baratos, e não de uma matriz redundante de disco barato.

RAID-1: Espelhamento. Cada bloco de dados é armazenado em todos os discos da matriz. Isso só faz realmente com dois discos. O RAID 1/0 ou apenas o RAID 10 é uma combinação de espelhamento e distribuição e pode ser usado para tirar proveito de mais de dois discos.

Raid-5: Paridade. Cada bloco de dados é dividido em cada membro do dispositivo RAID + um disco é dedicado à paridade.

Raid-6: Paridade Dupla: Igual ao Raid-5, mas com dois discos de paridade.

É isso aí. O Raid não descreve o que fazer com erros de correspondência de tamanho ou algo assim, mas a distribuição só funciona realmente com discos de tamanho igual. Normalmente, a maneira de contornar isso é usar o espaço restante como uma unidade de disco separada.

Afastando-se do RAID como uma maneira de criar uma grande matriz de discos, você pode usar coisas como o ZFS e apenas adicionar discos a um pool de armazenamento. O ZFS sempre tentaria usar os dois discos da maneira mais eficiente possível, e você poderia dizer ao ZFS com que nível de redundância você está satisfeito.

Tecnologias anteriores são coisas como mapeamento de volume (ou seja, LVM, ou é equivalente ao Windows), que abstraem a idéia de mapear blocos no disco para um nível superior. Com o LVM, você pode estender-se por discos, expandir partições, ter partições não contíguas e assim por diante. O mapeamento de volume não é RAID e, em vez de aumentar o desempenho à medida que você aumenta os discos, ele escolhe aleatoriamente gravar em um disco ou outro, dependendo de onde você está no sistema de arquivos. Isso é conhecido como extensão e normalmente é melhor que o RAID se você optar por IOPS em vez de desempenho bruto.

Clarus
fonte
0
A RAID 0 can be created with disks of differing sizes, but the storage
space added to the array by each disk is limited to the size of the
smallest disk.

Isso pode ser verdade e será verdadeiro para a maioria das implementações de RAID0. No entanto, não para todos.

Há dois motivos para usar o RAID 0:

  1. Concatene vários discos em um grande volume.
  2. Atuação.

A opção 2 é a mais comum e acho que é usada em quase todas as implementações atuais de RAID 0. A explicação técnica é que as informações são escritas alternando entre discos.

De uma maneira não técnica: pense nos discos como dois livros. Esses livros têm velocidades limitadas de acesso (leitura / gravação). Então, em vez de dois livros de 100 páginas, nós os reformatamos em dois livros, mas renumeramos as páginas para que todos os números pares sejam escritos em um livro e todos os números ímpares no outro livro.

Agora, nosso novo livro 'R0' se comporta como um único livro com o dobro do número de páginas e o dobro da velocidade.


A opção 1 pode ser tão simples quanto 'cola nos livros consecutivamente'. Nesse caso, você não terá ganho de velocidade, mas poderá colar livros com uma contagem de páginas diferente. Parece que me lembro de algumas implementações 'RAID0' como essa por volta de 1990. Mas não é o que a maioria das pessoas consideraria 'RAID 0 adequado'.

Hennes
fonte