Software RAID10 para crescimento posterior

7

Eu estou querendo saber qual é a melhor prática para criar o RAID10 em software no Linux com a capacidade de crescer depois adicionando discos ou expandindo volumes abaixo.

Estou usando o EBS na Amazon, quero criar 8x1GB RAID10, mas tenho a capacidade de crescer mais tarde, conforme necessário, minimizando quaisquer migrações de dados, se possível (e, claro, o tempo de inatividade).

Qual combinação, se alguma do MDADM / LVM é a melhor e existe alguma troca de desempenho ou estabilidade que eu precise estar ciente?

    
por Richard 06.09.2011 / 23:23

4 respostas

7

A Amazon não recomenda o RAID1 (que faz parte do RAID10). Consulte "Durabilidade de volume do Amazon EBS" no link onde eles afirmam:

"Because Amazon EBS servers are replicated within a single Availability Zone, mirroring data across multiple Amazon EBS volumes in the same Availability Zone will not significantly improve volume durability."

Com base em referências de terceiros e declarações feitas pela Amazon, acredito que o RAID0 pode ajudar no desempenho. Minha impressão é que as pessoas parecem obter o máximo benefício usando até 4 volumes de EBS no RAID0, com benefícios decrescentes acima disso. Verifique se você está usando um tipo de instância do EC2 com alta largura de banda de E / S.

O LVM pode fazer striping em vários volumes do EBS, implementando efetivamente o RAID0. Se você já usar o LVM para adicionar volumes ao sistema de arquivos, isso pode ser mais fácil de gerenciar do que o LVM sobre o mdadm RAID0.

    
por 07.09.2011 / 04:03
6

A resposta curta para a sua pergunta é que, no meu conhecimento, você não pode desenvolver uma partição RAID de software Linux, então o RAID não o ajudará, mas o RAID10 é uma boa idéia por várias outras razões e o RAID0 é quase sempre é uma má idéia se você se preocupa com seus dados ou tempo de inatividade . Eu vejo muitos conselhos na Internet sobre o uso do RAID0 com volumes do EBS e é uma idéia absolutamente terrível em todas as circunstâncias, exceto as mais excepcionais.

Com um volume tão pequeno definido (você disse 8x1GB, então 4GB utilizável), eu iria pular toda essa complexidade e usar um único volume que você pode crescer até 1TB usando snapshots XFS. Com apenas alguns gigs de dados, você deve conseguir capturar o volume com frequência suficiente para que a recuperação de dados se torne um problema fácil e você não esteja maximizando a E / S. Alternativamente, se você puder pagar mais do que o seu atual $ .80 / mês pelo seu disco, apenas o torne maior agora e não se preocupe com essa dor de cabeça por um longo tempo. Se você realmente quis dizer 8x1TB em vez de 8x1GB, continue lendo.

Eu escrevi um artigo sobre isso algumas semanas atrás link e brevemente coberto este assunto em Percona Live em maio: link

Vou resumir aqui.

No mundo do hardware físico, as formas como os discos podem falhar são conhecidas e previsíveis. Por outro lado, os volumes do EBS falham de maneiras atípicas. Você não vê "falhas" no disco - o mdadm nunca marcará automaticamente um disco como falho. O que você obtém são volumes experimentando degradação de desempenho severa e irrecuperável. Às vezes, os volumes são lentos, mas às vezes eles são completamente bloqueados com 100% de utilização e nenhuma IOPS sendo executada, tornando-se essencialmente indisponível. Às vezes, o disco volta à vida o suficiente para obter dados dele, mas às vezes não. Foi o que aconteceu no grande EC2pocalypse de abril de 2011.

Se o seu RAID0 neste cenário, você terá poucas opções. A matriz será bloqueada e os dados ficarão com ela. Às vezes, você pode tirar um instantâneo dos volumes na matriz e restaurar a captura instantânea, mas é difícil garantir a consistência e você terá tempo de inatividade - provavelmente várias horas, pois a gravação de instantâneos é um procedimento muito lento e as matrizes RAID tendem a ser grandes.

No entanto, se você usar o RAID10 e terminar com um desses volumes com desempenho insatisfatório ou gravemente degradado, tudo o que você precisa fazer é marcar o volume com falha, removê-lo da matriz e substituí-lo. Eu fiz isso muitas e muitas vezes em nossos servidores de banco de dados mestre ativos que têm 10 a 20 volumes em um conjunto RAID10 (não use tantos. É um exagero, a menos que você precise de uma matriz de 10 TB).

Minha prova disso volta à minha experiência com o EC2Pocalypse (e várias outras interrupções menores do EBS). Embora alguns dos sites mais populares da Internet tenham ficado inativos por quatro dias, meu empregador teve menos de uma hora de inatividade em nosso ambiente de produção porque conseguimos recuperar os arrays RAID10 removendo o (s) disco (s) com falha. Tem sido RAID0, teria sido uma situação SOL.

A desvantagem é a síndrome do elo mais fraco ... O desempenho do array está ligado ao membro com pior desempenho. Quanto mais volumes, maiores as chances de degradação, mas isso é realmente um problema de monitoramento. Pode-se até automatizar a recuperação, se assim for, embora eu não tenha feito isso. Com o RAID10, você aumenta suas chances de ter um problema na matriz, mas também aumenta suas chances de recuperação. Com o RAID0, cada unidade adicional é pouco mais que uma responsabilidade adicional.

Espero que isso ajude alguns.

    
por 08.09.2011 / 13:31
5

Eu fiz esse benchmark há algum tempo. Os comandos que usei estão aqui: link

Pelo que vi, há pouca vantagem em dividir seu armazenamento em tantos volumes do EBS e, em seguida, agregá-los usando mdadm e lvm. Há, no entanto, uma clara vantagem em usar o RAID 1 e o LVM para evitar a perda de um único volume, mantendo a capacidade de adicionar outro par de RAID 1 mais adiante.

Mas, para responder a sua pergunta:

Você não pode aumentar um volume RAID. Se você criar um RAID 10 (4xEBS) e usar o LVM com ele, poderá adicionar outro RAID10 e adicioná-lo ao seu volume LVM. Mas você não vai crescer o RAID 10 inicial.

Você pode criar um RAID 10 usando esses comandos:

# mdadm --create /dev/md1 --verbose --level=raid1 --raid-devices=2 /dev/sdh1 /dev/sdh2
mdadm: size set to 104857536K
mdadm: array /dev/md1 started.

# mdadm --create /dev/md2 --verbose --level=raid1 --raid-devices=2 /dev/sdh3 /dev/sdh4
mdadm: size set to 104857536K
mdadm: array /dev/md2 started.

# mdadm --create /dev/md3 --verbose --chunk=32 --level=raid0 --raid-devices=2 /dev/md1 /dev/md2
mdadm: array /dev/md3 started.

E você pode criar um volume LVM no topo deste RAID10 com os seguintes comandos:

# pvcreate /dev/md3
  Physical volume "/dev/md3" successfully created

# vgcreate RAID10 /dev/md3
  Volume group "RAID10" successfully created

# lvcreate -L 190G -n store RAID10
  Logical volume "store" created
    
por 06.09.2011 / 23:31
1

Isso não é específico do EBS, mas há boas notícias no anúncio de lançamento do mdadm 3.3:

This is a major new release so don't be too surprised if there are a few issues...

Some highlights are:

...

  • RAID10 arrays can be reshaped to change the number of devices, change the chunk size, or change the layout between 'near' and 'offset'. This will always change data_offset, and will fail if there is no room for data_offset to be moved.

...

De acordo com esta resposta em U & L, você precisará pelo menos do linux 3.5 também.

    
por 01.03.2014 / 22:26