RAID1: Qual disco será espelhado?

6

Como um sistema RAID1 determina qual disco usar como origem e qual disco usar como destino ao espelhar?

Suponha, por exemplo, o seguinte cenário: Uma matriz RAID1 é criada com dois discos A e B. A é substituído pelo disco C, que é adicionado à matriz. Os arquivos estão sendo modificados com o passar do tempo. Agora B é removido e A é reinserido.

O sistema RAID1 perceberá que A e C estão fora de sincronia? E esse C está mais atualizado que A? E se não, existe uma maneira segura de evitar que o processo de espelhamento inicie imediatamente quando o disco A é inserido?

EDIT: Eu deveria esclarecer que no meu cenário eu assumo que A não falhou quando foi removido, e então, tanto quanto eu entendo, neigther A nem C estão "sujos" quando o sistema RAID1 deve decidir o caminho a seguir espelho entre eles. (E eu não assumi bitmaps, mas eu entendo isso pode ser relevante.)

    
por tmelen 07.10.2012 / 21:57

3 respostas

3

Você está falando de um espelho de software usando mdadm . Você não escreveu se usa um bitmap ou não. Estou assumindo que você use um bitmap (no outro caso, um re-mirror completo será iniciado a partir do primeiro bloco sempre que um disco for perdido / reconectado / o que for).

No caso de um bitmap, esses bitmaps serão armazenados por disco - como bitmap interno no próprio disco-espelho ou em um bitmap externo (se você especificar um) - novamente, isso é por disco.

Agora, essa também é a resposta para sua pergunta: no começo, todos os bits são marcados como "sujos", ou seja, precisam ser sincronizados novamente. Cada bit representa um bloco no disco físico. Portanto, o status desses bitmaps é importante.

Você vê o status desses bitmaps com cat /proc/mdstat .

Lembre-se de que a criação de bitmaps não é uma operação padrão se você criar espelhos. Você pode mudar isso depois com mdadm --grow .

    
por 07.10.2012 / 22:10
3

O que acontece é que os dois discos são gravados em conjunto e lidos de forma intercambiável. É um sistema multi-mestre, e daí deriva o aumento de desempenho de leitura decorrente do espelhamento.

Quando um volume fica ruim, diz-se que a matriz é degraded . Você então adiciona um novo disco; o controlador RAID sabe que essa unidade não contém sua parte do volume (é dirty ), e a matriz começa a copiar os dados que devem armazenar nela de outra parte da matriz (esse processo é chamado rebuilding ) ; para o RAID 1, há apenas um outro local para copiá-lo. Quando a reconstrução estiver concluída, o novo volume será clean e o sistema será tolerante a falhas e será multi-mestre novamente ( normal ).

Se o outro disco original for removido ou falhar antes que a reconstrução seja feita, haverá perda de dados (se removida, mas não inativa, isso é recuperável). No entanto, se ele for removido depois que a recriação estiver concluída e um novo disco for adicionado, a matriz passará pelo mesmo processo de degradação para reconstrução até o normal.

Isso é um pouco simplificado, embora represente a grande maioria dos casos em que os discos falham ou são removidos e adicionados de outra forma. Também é normalmente possível que partes de um volume sejam sinalizadas como sujas, por exemplo.

    
por 08.10.2012 / 00:53
0

se você tivesse ligado a qualquer momento com uma unidade. geralmente terá algo como um contador de gravação na unidade. então, será necessário o que for mais alto que o mestre.

Portanto, se você retirar a unidade A por uma semana, mas continuar correndo com a unidade B, ela teria algumas gravações durante esse período e um contador de gravação maior. e então seria o mestre.

Alguns controladores irão basear-se no que estava na última inicialização. Se uma unidade estiver ausente por uma semana, ela reaparece e agora é considerada fora de sincronia.

Se você removesse as duas unidades simultaneamente, dependeria do controlador quanto ao que faria. Muito provavelmente apenas mostre uma matriz estrangeira que você possa importar.

    
por 24.04.2018 / 10:44