Como criar um sistema Debian redundante inicializável com um software de disco de 3 ou 4 (ou mais) raid10?

2

Como eu crio um sistema Debian que é inicializável, possui um software raid10 e ainda inicializa quando eu removo um ou mais discos (inicializáveis)? Eu gostaria de usar o mínimo possível de discos, de preferência 3 ou 4. E cada disco que faz parte do ataque deve ser inicializável.

Eu estou escolhendo um raid10 porque é o nível de raid redundante mais rápido e ainda me dá bastante espaço. Um raid5 ou 6 é muito lento (e pode ter um limite teórico link ) e um raid1 não me dá espaço suficiente e é menos flexível. Um raid0 não é redundante de todo.

    
por aseq 02.03.2012 / 08:32

2 respostas

6

Vou descrever o estranho aqui, que é um software raid10 construído a partir de 3 discos (pessoas conhecedoras têm sido incrédulas em relação ao disco de 3 raid10). Digamos que você tenha um servidor 1U com 4 compartimentos de unidade e gostaria de ter um compartimento livre, para um disco de armazenamento ou como um hot spare. Os discos são todos do mesmo tamanho, embora não seja necessário, desde que você crie as partições de acordo com o menor tamanho de disco.

Você fica em um CD ou pendrive da Debian e começa a instalar o sistema. Quando você chega na parte em que começa a particionar os discos, faça o seguinte ...

Cada disco que faz parte do ataque deve ter uma partição inicializável de cerca de 1 GB que NÃO faça parte do raid. Crie essas partições normalmente, elas devem ter exatamente o mesmo tamanho. Marque-os como inicializáveis, o ponto de montagem em um dos discos deve ser / boot, você pode deixar os outros como desmontados.

/dev/sda1 - /boot
/dev/sdb1 - not mounted
/dev/sdc1 - not mounted

Se você preferir (eu) criar partições separadas para os locais usuais, você pode fazer isso:

/dev/sd[abc]2 - swap  (Yes we have redundant swap, why not, it ought to be faster than swap outside the raid10)
/dev/sd[abc]3 - /
/dev/sd[abc]4 - /usr
/dev/sd[abc]5 - /tmp
/dev/sd[abc]6 - /var
/dev/sd[abc]7 - /opt
/dev/sd[abc]8 - /home

Caso contrário, basta criar uma partição para swap e uma partição grande em cada disco. Note que você não pode particionar um softraid (mdadm), é por isso que você cria as partições primeiro. (Edit: Desde o kernel 2.6.28 é possível particionar um ataque como qualquer outro dispositivo de bloco, embora eu prefira o método acima.)

Crie invasões de cada partição, exceto a primeira. Por exemplo:

mdadm --create /dev/md0 --level=10 --raid-devices=3 /dev/sd[abc]2

e assim por diante.

Na instalação Debian você usará as opções de menu apropriadas ao invés do comando mdadm, foi apenas para ilustrar. Se você tiver um 4º disco no sistema, adicione-o como hot spare, o 4º membro do raid ou como armazenamento, a menos que você faça o último, certifique-se de compartilhar a mesma tabela de partição e as propriedades inicializáveis dos outros discos. Vou deixar isso para você.

A propósito, o menu de instalação pode ser um pouco confuso no que diz respeito à criação de partições e invasões, apenas recomeçar do zero se você se perder ou o sistema de menu começar a xingar você. : -)

Instale o Debian como sempre. Uma vez que você chega no estágio de instalação do grub, você tem que fazer um pouco mais do que o normal.

Assumimos que / dev / sda1 está montado em / boot. Certifique-se de que o MBR esteja salvo em / dev / sda, / dev / sdb e / dev / sdc. Então nós dizemos ao grub que todos os 3 discos são discos de inicialização.

Uma vez que todo o sistema tenha sido instalado, você deve ser capaz de inicializar o sistema e você terá um sistema Debian inicializável funcionando em um ataque de 3 discos. No entanto, ainda não é totalmente redundante no caso de um disco falhar, o que significa que ele não será inicializado magicamente a partir de outro disco. Para conseguir isso, você precisa fazer cópias exatas da partição de inicialização em / dev / sda1 para os outros discos.

Use dd para isso (bs = 500M acelerará muito dd, ajuste 500M a aproximadamente 2/3 da memória do seu sistema):

dd bs=500M if=/dev/sda1 of=/dev/sdb1
dd bs=500M if=/dev/sda1 of=/dev/sdc1

Agora, certifique-se de que sua BIOS está configurada para tentar inicializar de todos os 3 discos, a ordem não importa. Contanto que o BIOS tente inicializar a partir de qualquer disco, no caso de um dos discos falhar, o sistema inicializará automaticamente a partir do outro disco, porque os UUIDs são exatamente iguais.

Existe uma pequena captura, não se esqueça de, por vezes, repetir o comando dd se / boot tiver sido alterado, digamos com uma atualização do kernel. Faça um trabalho cron semanal, se quiser.

Isso é sempre divertido, teste seu sistema redundante alterando a prioridade de inicialização do BIOS. E se você se sentir sortudo, teste-o arrancando um disco enquanto ele está rodando. :-) Na verdade, eu acho que você tem que fazer isso para ter absoluta certeza de que é totalmente redundante, por que mais passar pelo problema. No entanto, é um exercício divertido, independentemente. Se você fez tudo corretamente (e eu o escrevi corretamente), seu sistema ainda inicializará quando o ataque for degradado. Assim como se você estivesse usando um ataque de hardware. Eu testei em vários servidores 1U e 2U com 2, 3, 4 e mais discos.

Isso também funcionará com um raid1.

A propósito, você tem que usar uma partição de inicialização que não faz parte do ataque, porque senão seu sistema não pode inicializar. Tem que haver uma maneira para o ataque ser iniciado e, como é um problema, primeiro o kernel precisa ser carregado para que o ataque seja reconhecido.

    
por 02.03.2012 / 08:53
2

Resposta tardia, mas você não poderia fazer o que eu tenho feito há algum tempo?

Eu uso instalações de 2 drives RAID1 para a maioria dos meus servidores.

A maneira como eles são configurados é o md0 montado como / boot e é um RAID1 de aproximadamente 250MB, enquanto o md1 é montado como / e é o restante da capacidade do drive, excluindo uma área de swap em cada unidade.

Assim, quaisquer alterações no / boot são espelhadas de acordo com ambas as unidades, mesmo que no momento da inicialização o sistema operacional use o que a bios informou.

Basta lembrar de executar novamente o grub-install / dev / sd * para cada unidade conter um / boot válido. O sistema operacional irá manter / inicializar automaticamente em sincronia adequada entre si.

    
por 05.03.2015 / 17:53