Robustez de swap do Linux e / ou espelhamento - kernel 3.2

2

Eu tenho discos 8x 2TB em raid6 com mdadm e decidi adicionar uma pequena partição "slack" em cada unidade, para o caso de uma unidade de substituição não ter exatamente o mesmo tamanho das unidades que eu uso agora. O propósito é que eu não corro o risco de não poder adicionar um disco ao ataque, porque ele é muito pequeno.

Agora, para as partições slack, eu simplesmente as designei como partições swap (não podem ser prejudicadas). Agora, pelo que entendi, o Linux faz um round robin nesses discos quando aloca páginas para swap. Novamente, para o meu melhor conhecimento, isso significa que todo o meu espaço de troca é aproximadamente equivalente a um conjunto de faixas raid0. Agora, se um disco falhar, isso significa que ...

A: Meu espaço de troca inteiro está corrompido ou em um estado inválido?

B: Qualquer programa que tenha páginas no dispositivo de troca que falharam está agora comprometido (ou encerrado?!)

C: Seria melhor executar um raid10 do mdadm nas partições de swap e criar um swapfile ou trocar diretamente para o dispositivo mdX?!

Eu aprecio se alguém pudesse lançar alguma luz sobre como o Linux lida com swap em caso de falha.

    
por Waxhead 07.05.2013 / 20:57

1 resposta

2

Não há dependências no kernel entre as partições de troca ou arquivos, apenas um mapeamento de baixo nível das páginas dentro de cada área de troca. Ler páginas de swap é uma leitura de baixo nível de vários setores contíguos do disco. Portanto, se uma área de troca falhar, as outras não serão afetadas.

Se uma partição de troca falhar, ninguém notará até que haja uma falha de página difícil em algum processo que use a partição com falha. O resultado provável é que a página de memória alocada para receber a página permutada permanecerá bzeroed e o processo será segfault. Você provavelmente verá "Read-error on swap-device ..." no log do kernel, mas além de registrar o erro, o kernel não marca a área de swap como ruim. Em write to swap, o kernel imprime "Write-error on swap-device" no klog e volta a sufocar a página para que ela não seja gravada novamente, mas o dano já foi feito no que diz respeito ao processo atual . Não há código para tentar novamente a gravação incorreta em outra posição na partição ou em uma partição swap diferente.

Existem algumas pessoas que trocam no RAID1, veja o post do SE no meu comentário ao seu OP. Acho difícil acreditar que isso não afetará negativamente o desempenho de um sistema com swappy. Talvez eles não o vejam, porque eles têm muita RAM e seus aplicativos não causam swap. O propósito do RAID em qualquer evento é proteger seus dados peristentes, não o seu swap. É um pouco como montar /tmp no RAID5 e fazer um backup incremental noturno. Minha recomendação é comprar discos "RAID Edition" (ou seja, da mais alta qualidade) e trocar as partições brutas como você está fazendo atualmente.

    
por 08.05.2013 / 01:07

Tags