Configuração rápida do mdadm RAID com unidades vazias?

9

Estou recriando alguns discos RAID5 como RAID6 com mdadm. Não há dados sobre as unidades que me interessam.

A configuração do RAID leva um tempo para configurar a forma - aceito que, quando houver dados que precisam ser distribuídos e a paridade seja calculada, no entanto, com essas unidades, elas estão vazias - ou pelo menos quero que elas sejam consideradas vazias.

Portanto, existe uma maneira de pular o cálculo de paridade e dizer ao mdadm para configurar os superblocos e concluir, ou de outra forma, o que exatamente ele gasta todo esse tempo quando não há dados para se movimentar?

md3 : active raid6 sdf3[5] sde3[4] sdd3[3] sdc7[2] sdb3[1] sda3[0]
      1953114112 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
      [>....................]  resync =  1.3% (6790144/488278528) finish=409.3min speed=19604K/sec

Observe que não estou falando sobre --assume-cleanonde você está reconstruindo uma matriz a partir de um conjunto pré-existente de discos que contêm uma matriz RAID que você sabe que está correta. Estou falando de uma matriz que deve ser considerada vazia, não considerada corretamente listrada.

Então, digamos que, para essa pergunta, os dispositivos tenham sido pré-preenchidos com zeros.

Paulo
fonte

Respostas:

8

Você pode usar, --assume-cleanmas a menos que esteja usando o raid5 (não o raid6) e os discos estiverem cheios de zeros, na primeira vez em que executar uma verificação de paridade, surgirão erros que precisarão ser corrigidos, portanto, você não deve fazer isso. Você não precisa esperar a ressincronização terminar antes de começar a usar a matriz; ele será arrastado em segundo plano até terminar.

psusi
fonte
Obrigado psusi - isso não aborda a questão.
Paul
2
@ Paul, umm .. sim, faz. Não existe algo como "vazio"; existe apenas sincronização ou não.
Psusi
Não aborda a pergunta que estou fazendo. O xor de um bloco de zeros é zero. Portanto, se eu pudesse dizer ao mdadm que o espaço pode ser considerado vazio, ele poderia criar paridade muito rapidamente. A paridade só precisaria ser calculada corretamente quando um bloco específico for gravado; nesse ponto, não importa se estava "errado" anteriormente. Eu poderia até zerar o disco.
Paul
2
@Paul, novamente, não existe algo como "vazio". Geralmente sim, não importa que a paridade nas faixas que nunca foram escritas esteja errada, e é por isso que você pode se safar com --assume-clean, mesmo quando os discos não estiverem cheios de zeros, mas a paridade errada seja detectado e corrigido quando o mdadm fizer uma verificação de paridade.
Psusi
2
@Paul, o significado de "vazio" não está bem definido. A maioria das pessoas o usa para significar que não colocou nenhum arquivo ou sistema de arquivos no dispositivo e não sabe nem se importa com o que ele contém atualmente. Se você sabe que os discos estão cheios de zeros, então --assume-clean é o que você deseja. Você terá a palavra certa: todos os discos serão zerados e não recalcularão a paridade. Como você mencionou, uma paridade zero será correta para os discos de dados de todos os zeros, pelo menos para o raid5 (não para o raid6).
Psusi
2

Você não pode fazer isso com um RAID de software ou hardware. Todas as somas de verificação precisam ser gravadas nos discos, o que leva tempo. Você pode fazer isso mais tarde, mas as partes do disco que não foram gravadas terão que fazer isso antes de poder usá-las.

Isso ocorre basicamente porque o sistema RAID e os sistemas de arquivos não sabem nada um do outro. O ZFS tem uma solução para isso, mas as partes RAID são profundamente integradas ao sistema de arquivos. Portanto, o subsistema RAID realmente sabe em quais partes dos discos são usadas as informações para armazenamento de dados e quais podem ser usadas posteriormente e, em seguida, escreva as somas de verificação nelas.

Você pode adicionar velocidade de taxa de transferência ao RAID do software ou começar a usá-lo antes que todas as somas de verificação sejam gravadas e deixar que o RAID do software lide com isso posteriormente. Bruxa é o que @psusi escreveu.

Anders
fonte
Entendo como o RAID funciona, estou tentando entender o que ocorre com as somas de verificação em um disco vazio. As somas de verificação precisam ser calculadas toda vez que algo é gravado no disco, portanto, calculá-las antes que qualquer dado esteja presente não faz muito sentido - "fazê-lo mais tarde" é sensato quando não há nada lá. Não há um sistema de arquivos a considerar neste cenário.
Paul
6
sempre os dados presentes. Pode não ser importante ou significativo, mas todo setor sempre tem um valor. (Zero também é um valor!) A implementação do RAID não sabe quais setores contêm dados importantes; portanto, deve tratar todos eles como importantes e calcular sua paridade.
wyzard