Raid1 question

2

Digamos que eu tenha um array raid1 de software de duas partições. Eu recebo um disco rígido do computador e o coloco em outro computador, e copio alguns dados para a partição espelhada.

O que acontece quando coloco o disco rígido de volta no seu lugar original? Os novos dados serão espelhados na outra unidade? Se sim, como o controlador verifica / percebe que há novos dados na unidade? Certamente não pode verificar a partição inteira em cada inicialização.

Além disso, o que acontece quando excluo um arquivo no mesmo cenário acima? Ele será excluído da outra unidade ou será copiado de volta?

Isso está em uma máquina Ubuntu e, ao sair da unidade, quero dizer que o computador está completamente desligado ao fazer isso e só é ativado quando a unidade está em seu lugar.

Se o controlador de raid não reconhecer a alteração porque a energia está desligada enquanto faz isso, existe uma maneira de instruí-lo para reconstruir o array? Tipo, digamos que o raid é construído a partir de / dev / sda1 e / dev / sdb1, eu desligo o computador e pego a unidade sdb, copio dados para ela, coloco de volta, e agora eu quero instruir o controlador para reconstruir a matriz, usando / dev / sdb1 "como mestre".

    
por K. Norbert 07.06.2009 / 00:40

6 respostas

3

As duas respostas sobre o fato de estarem marcadas como falhas e reconstrução estão corretas, e esperamos que isso seja o que acontecerá. Esse é o melhor cenário possível.

A outra possibilidade é que o software não perceba, e então ainda vai pensar que as unidades estão em sincronia. (Por exemplo, isso pode acontecer se você fizer isso com o desligamento) O resultado final provavelmente será uma corrupção, e a única correção será formatá-lo e restaurá-lo a partir do backup.

Lembre-se, o RAID funciona no nível do disco, ele não sabe nada sobre o sistema de arquivos no topo. Apenas um monte de setores. Quando o sistema de arquivos solicita o bloco 10, a camada RAID sabe que o bloco 10 está armazenado no bloco 10 do disco 1 e do disco 2. De alguma forma, ele escolhe um disco ou outro e lê o bloco 10. Exceto por causa da sua modificação dos discos atrás de suas costas, o bloco 10 no disco1 e no disco2 é diferente. Oops Você pode esperar uma mistura de disk1 e disk2 em uma base por bloco, incluindo blocos usados para armazenar metadados do sistema de arquivos.

Corrigindo a bagunça

Sugiro sua melhor aposta para se recuperar disso, já que o formato e a restauração do backup não são uma opção:

(a) Imediatamente visualize as duas unidades. Backups são importantes. Opcionalmente, você pode querer trabalhar apenas nas cópias.

(b) Se a matriz não estiver no modo de leitura / gravação após esse erro, basta puxar a unidade modificada. Reconstruir com uma nova unidade em branco.

(c) Se a matriz estiver no modo de leitura / gravação, escolha uma unidade e solte-a da matriz. Reconstrua em uma nova unidade.

(d) Se você não se importa com qual unidade, apenas (substituindo X pelo seu número de array, é claro): Isso força uma ressincronização.

echo repair > /sys/block/mdX/md/sync_action 

(e) Força um fsck na matriz agora reconstruída.

(f) Faça o que puder para verificar seus dados. Por exemplo, execute debsums para verificar a integridade do sistema operacional, fornecendo todos os arquivos de pacote necessários para as coisas que não possuem soma MD5.

Observe que a unidade precisa estar em branco ou pelo menos todas as informações de RAID apagadas, caso contrário, a reconstrução não funcionará corretamente.

    
por 07.06.2009 / 02:48
4

Quando você desconectar uma unidade de uma matriz RAID ativa, ela verá a unidade com falha em sua configuração. Quando você insere uma nova unidade (ou a mesma unidade), ela a verá como "nova" para a matriz e reconstruirá o conteúdo da unidade remanescente boa e conhecida, portanto, quaisquer alterações feitas no conteúdo serão sobrescritas. Se você fizer isso em uma unidade enquanto a matriz estiver off-line, as alterações feitas irão perturbar as somas de verificação que o controlador da matriz usa para rastrear as alterações e, novamente, ele verá a unidade como falha e tentará uma recriação.

Se você deseja copiar arquivos para sua matriz, você precisará fazer isso através do controlador (independentemente de ser software ou hardware).

    
por 07.06.2009 / 01:30
3

Esta é uma questão sobre Linux ou Windows? Qual é a sua implementação específica?

Geralmente, a unidade removida está com falha e, ao adicioná-la de volta, você terá que "recusá-la". Isso, por sua vez, geralmente significa que o disco com falha é reinicializado com todos os dados do disco de trabalho. Então, em essência, todas as alterações feitas no disco que você removeu provavelmente serão perdidas em tal situação

    
por 07.06.2009 / 00:44
3

Em geral, quando você extrai um disco de um array RAID-1 enquanto o array está ativo , o array é considerado fora de sincronia.

Se você reinserir o disco removido, ele passará aproximadamente pelo mesmo processo que se você inserisse um disco completamente novo - o conteúdo da unidade ativo será copiado bloqueado por bloco até que a nova unidade seja uma duplicata exata e, em seguida, a matriz retornará à sua condição de operação "normal" como uma matriz RAID-1 ativa.

Presumivelmente, você está perguntando se a matriz detectará que esta é a unidade que foi removida recentemente e, de alguma forma, restringe o processo de sincronização. A resposta para isso é não . O controlador terá que copiar novamente tudo .

Observe que, se a matriz não estiver online quando a unidade for removida, normalmente é possível reconectar a unidade com segurança antes de colocar a matriz on-line sem precisar sincronizar novamente.

    
por 07.06.2009 / 04:52
0

Seu array ficará corrompido, já que os sistemas de arquivos em ambos os discos terão dados diferentes, e na primeira vez que o sistema tentar gravar um novo arquivo em uma das partições do disco, ele não irá bagunçar apenas as tabelas do sistema de arquivos. , mas os dados também.

    
por 07.06.2009 / 16:41
0

Se você tiver drive aeb em um ataque mdadm 1 e você

1) desligue o servidor A 2) Coloque a unidade B no servidor B 3) Usando o mdadm, grave na unidade B no servidor B 4) Desligue B 5) Servidor de inicialização A com A e B.

O mais provável é que as somas de verificação A e B sejam diferentes e inicie a matriz com B e A serão consideradas defeituosas - já que a soma de verificação de B será mais recente.

Você adicionaria A ao array e B seria copiado por A

Eu não sei porque você gostaria de fazer isso.

    
por 07.06.2009 / 21:21