mdadm - Remover disco do RAID0


11

Então, eu gostaria de saber, é possível fazer o seguinte com o mdadm:

  1. Começo com a configuração RAID0 em 2 discos: sdae sdb.
  2. Gostaria de adicionar mais um disco ao array sdce mover todos os dados sdbpara ele.
  3. Desconecte sdb.

No momento, vejo apenas uma opção - paro a matriz, copio sdbpara ou sdccom ddqualquer outra ferramenta de cópia em bloco e inicio a matriz novamente.

Perco alguma coisa? É possível fazer isso com o mdadm?


Você pode transformar sdb em um espelho temporário e sincronizar sdc com ele em segundo plano - isso reduziu o tempo de inatividade necessário, embora eu não tenha feito isso como iniciante em seu lugar.
— peterh - Restabelece Monica

Eu não sou iniciante com certeza :) Você pode me falar mais sobre espelho temporário? É o recurso mdadm?
— Maniaque

Não, é um recurso simples de ataque. Eu pensei que uma matriz RAID1 temporária, que poderia ser o lugar de sdb em sua matriz RAID1. Enquanto estiver sincronizando sdb para sdc, você também poderá usá-lo como parte de sua matriz raid0.
— peterh - Restabelece Monica

Então, eu entendo você certo? 1. Pare a matriz. 2. Crie mais uma matriz RAID1 com sbd e sdc. 3. E como eu poderia pedir ao mdadm para iniciar meu RAID0 com md1 em vez de sdb?
— Maniaque

Ainda não pesquisamos muito, mas certamente parece que você deve crescer de um RAID0 -> RAID5. Em seguida, reduza novamente para um RAID0.
— Zoredache

Respostas:


17

Primeiro de tudo: para aqueles que ainda acreditam em "RAID0 não tem hot spare". Poderia ter uma reposição manual, feita por humanos, que entendem os níveis de RAID e o mdadm. O mdadm é um RAID de software, por isso pode fazer muitas coisas interessantes.

Créditos à Zoredache pela ideia!

Então, a situação:

  • você tem uma matriz RAID0 de dois discos
  • você gostaria de substituir um deles sem tempo de inatividade da matriz

Se o tempo de inatividade for aceitável, você sempre poderá fazer uma cópia em bloco do disco com dd e remontar a matriz, o mdadm funcionará bem.

Solução: use RAID4 como solução intermediária

RAID0 -> RAID4 -> RAID0

Portanto, se você não se lembra do RAID4, é simples. Ele possui um bloco de paridade, mas, diferentemente do RAID5, não é distribuído pela matriz, mas reside em UM disco. Esse é o ponto, isso é importante e é por isso que o RAID5 não funcionará.

O que você precisará: mais dois discos do mesmo tamanho, como o disco que você deseja substituir.

Meio Ambiente:

  • Ubuntu 14.04 Thrusty Thar
  • mdadm - v3.2.5 - 18 de maio de 2012
  • / dev / sdb - começa com ele, substitui-o
  • / dev / sdc - comece com ele
  • / dev / sdd - será usado temporariamente
  • / dev / sde - será usado no lugar do sdb

O melhor guia mdadm de reposição a quente RAID0;)

sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]

md0 : active raid0 sdc[1] sdb[0]
      2096128 blocks super 1.2 512k chunks

Criamos uma matriz raid0, parece legal.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

Este é o nosso ponto de verificação - se um bit diferir no resultado /dev/md0- falhamos.

sudo mdadm /dev/md0 --grow --level=4

md0 : active raid4 sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Então, aumentamos nossa matriz para RAID4. Ainda não adicionamos o disco de paridade, então vamos fazê-lo. O crescimento será instantâneo - não há nada para recalcular ou recalcular.

sudo mdadm /dev/md0 -a /dev/sdd

md0 : active raid4 sdd[3] sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [===>.................]  recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec

Adicionamos sddcomo disco de paridade. É importante lembrar - a ordem dos discos na primeira linha não é sincronizada com a imagem na segunda linha! [UU_]

sdd é exibido primeiro, mas na verdade é o último e mantém não os dados, mas a paridade.

sudo mdadm /dev/md0 -f /dev/sdb

md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

Fizemos o disco sdb com defeito, para removê-lo nas próximas etapas.

sudo mdadm --detail /dev/md0

State : clean, degraded

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty spare   /dev/sdb

Os detalhes nos mostram a remoção do primeiro disco e aqui podemos ver a verdadeira ordem dos discos na matriz. É importante rastrear o disco com paridade, não devemos deixá-lo na matriz ao retornar ao RAID0.

sudo mdadm /dev/md0 -r /dev/sdb

md0 : active raid4 sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

sdb completamente removido, pode ser retirado.

sudo mdadm /dev/md0 -a /dev/sde

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
      [==>..................]  recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec

Adicionamos a substituição do nosso disco sdb. E aqui vamos nós: agora os dados do sdb estão sendo recuperados usando paridade. Sweeeeet.

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]

Feito. No momento, estamos completamente seguros - todos os dados do sdb são recuperados e agora temos que remover o sdd (lembre-se, ele mantém a paridade).

sudo mdadm /dev/md0 -f /dev/sdd

md0 : active raid4 sde[4] sdd[3](F) sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Sdd com defeito.

sudo mdadm /dev/md0 -r /dev/sdd

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Removido sdd da nossa matriz. Estamos prontos para nos tornar RAID0 novamente.

sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [=>...................]  reshape =  7.0% (73728/1048064) finish=1.5min speed=10532K/sec

Aaaaaaand bang!

md0 : active raid0 sde[4] sdc[1]
      2096128 blocks super 1.2 512k chunks

Feito. Vejamos a soma de verificação MD5.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

Mais alguma pergunta? Portanto, o RAID0 poderia ter um hot spare. É chamado de "usuário";)


1

Até onde eu sei, depois de configurar um RAID0, você não pode alterar um dos discos. Você pode fazer um backup e alternar os discos e restaurar o backup. Gostaria apenas RAID5 esses 3 discos que você tem. Dessa forma, no futuro, você poderá soltar um disco e ainda reconstruí-lo.


Bem, eu sei como fazer o que falo com o RAID5 - posso adicionar um novo disco ao array (como sobressalente), marcar o disco que gosto de sair com defeito e removê-lo do array, limpando o superbloco posteriormente. Mas eu estou interessado em mesma operação com RAID0 :)
— maniaque

@ maniaque Chama-se RAID 0 porque zero é o quanto RAID você recebe. Absolutamente nada de importância nunca deve ser colocado em um RAID 0.
— Michael Hampton

@ MichaelHampton Acho que você quer dizer redundância, não RAID, mas sua afirmação está 100% correta.
— 1011814 joJo1ff

@MichaelHampton Por favor, veja a minha resposta abaixo :)
— maniaque

0

O RAID 0 não fornece redundância.

Portanto, ele não suporta substituição de unidade quente.


1
Basta olhar abaixo, por favor. Não há nada impossível, quando você entender os níveis de RAID;)
— maniaque
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.