implementação de 4 drives RAID-6 e GPT

1

Minha ideia atual é criar 1 software RAID-6 com 4 drives membros usando mdadm .

Especificamente, eles seriam HDDs de 1 TB em SATA em um servidor pequeno.

Sistema: Linux Debian Jessie 8.6.

Isso gera 2 TB de espaço com 2 TB para paridade.

Mas gostaria de separar 1 TB de espaço e outro de 1 TB em algum nível.

Eu não acho que seria mais sensato criar 2 arrays RAID-1 de 2 unidades separadas, ou seria?

Eu prefiro criar dois sistemas de arquivos ext4 separados nesta matriz RAID-6.

Q # 1) Isso parece bom ou ruim? Algum problema que eu deva levar em conta?

Eu também gostaria de tê-lo com a tabela de partição GPT, para que isso funcione, eu não tenho certeza de como proceder especificamente supondo que eu preferiria fazer isso no terminal.

Q # 2) Você poderia me orientar como devo proceder em alguns passos.

Obrigado pelo seu tempo.

EDIT1: esse array servirá somente para os dados. Sem inicialização ou sistema operacional.

EDIT2: O RAID5 está totalmente fora de questão; O RAID1 estaria perdendo espaço; RAID10 é ótimo, mas eu preciso optar por RAID6 devido ao propósito desta matriz, dois discos falham a matriz deve ser capaz de sobreviver. Desde que eu estou limitado por HW para 4 unidades, não há alternativa para o RAID6 que eu conheço. No entanto, a lentidão do RAID6 pode parecer, não importa neste array.

    
por Vlastimil 22.10.2016 / 06:52

2 respostas

4

Nesta resposta, deixe claro que todos os seus dados serão destruídos em todos os membros da matriz (drives), então faça o backup primeiro!

Abra o terminal e torne-se root ( su ); se você tiver sudo ativado, você também pode fazer, por exemplo, sudo -i ; veja man sudo para todas as opções):

sudo -i

Primeiro, devemos apagar as unidades, se houver algum sistema de dados e de arquivos antes, isto é. Suponha que tenhamos 4 membros: sda , sdb , sdc , sdd :

pv < /dev/zero > /dev/sda
pv < /dev/zero > /dev/sdb
pv < /dev/zero > /dev/sdc
pv < /dev/zero > /dev/sdd

Para verificar novamente se não há nada deixado para trás, você pode espiar com GParted em todas as unidades, e se houver algum sistema de arquivos diferente de unknown , limpe-o:

wipefs --all /dev/sda
wipefs --all /dev/sdb
wipefs --all /dev/sdc
wipefs --all /dev/sdd

Em seguida, inicializamos todas as unidades com a tabela de partição GUID (GPT):

gdisk /dev/sda
gdisk /dev/sdb
gdisk /dev/sdc
gdisk /dev/sdd

Em todos os casos, use o seguinte:

o Digite para a nova tabela de partições GUID vazia (GPT)
y Digite para confirmar sua decisão
w Digite para gravar as alterações em y Digite para confirmar sua decisão

Agora, precisamos particionar todas as unidades, mas não faça isso com o GParted, porque isso criaria um sistema de arquivos no processo, o qual não queremos, use gdisk novamente:

gdisk /dev/sda
gdisk /dev/sdb
gdisk /dev/sdc
gdisk /dev/sdd

Em todos os casos use o seguinte:
n Digite para a nova partição
Digite para a primeira partição
Enter para default do primeiro setor
Enter para default do último setor
fd00 Digite para o tipo Linux RAID
w < kbd> Digite para gravar as alterações de y Digite para confirmar sua decisão

Para triplicar a verificação se não houver nada deixado para trás, você pode espiar com GParted em todas as partições recém-criadas e, se elas contiverem qualquer sistema de arquivos diferente de unknown , limpe-o:

wipefs --all /dev/sda1
wipefs --all /dev/sdb1
wipefs --all /dev/sdc1
wipefs --all /dev/sdd1

Você pode examinar as unidades agora:

mdadm --examine /dev/sda /dev/sdb /dev/sdc /dev/sdd

Deveria dizer:

(type ee)

Em caso afirmativo, examinamos agora as partições:

mdadm --examine /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

Deveria dizer:

No md superblock detected

Em caso afirmativo, podemos criar o array RAID6:

mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

Aguardaremos até que a matriz seja totalmente criada, com o qual poderemos assistir:

watch -n 1 cat /proc/mdstat

Após a criação da matriz, devemos analisar seu detalhe:

mdadm --detail /dev/md0

Deveria dizer:

          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

Agora, criamos o sistema de arquivos na matriz, se você usar ext4 , é melhor evitar isso, porque ext4lazyinit levaria uma quantidade considerável de tempo, daí o nome "lazyinit", portanto, recomendo que você evite este:

mkfs.ext4 /dev/md0

Em vez disso, você deve forçar uma inicialização instantânea completa com:

mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/md0

Ao especificar essas opções, os inodes e o diário serão inicializados imediatamente durante a criação, útil para matrizes maiores.

Se você escolher um atalho e criar o ext4 filesystem com o "melhor comando evitado", observe que ext4lazyinit levará um tempo considerável para inicializar todos os inodes, você pode assisti-lo até que seja feito, por exemplo com:

iotop

De qualquer forma você escolhe fazer a inicialização do sistema de arquivos, você deve montá-lo depois que ele terminar sua inicialização:

Agora criamos um diretório para esse array RAID6:

mkdir -p /mnt/raid6

E simplesmente monte:

mount /dev/md0 /mnt/raid6

Como estamos essencialmente prontos, podemos usar o GParted novamente para verificar rapidamente se ele mostra linux-raid filesystem, junto com o raid flag em todas as unidades.

Se isso acontecer, criamos corretamente o array RAID6 com partições GPT e agora podemos copiar arquivos nele.

Veja qual UUID tem o sistema de arquivos md :

blkid /dev/md0

Copie o UUID para a área de transferência.

Agora, precisamos editar fstab com seu editor de texto favorito:

nano /etc/fstab

E adicione uma entrada a ela:

UUID=<the UUID you have in the clipboard>                /mnt/raid6              ext4    defaults        0 0

Você pode verificar se está correto, depois de salvar as alterações:

mount -av | grep raid6

Deveria dizer:

already mounted

Se isso acontecer, salvamos a configuração da matriz; Caso você não tenha nenhum dispositivo md criado, basta fazer isso:

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Caso já existam arrays, apenas execute o comando anterior sem redirecionar para o arquivo conf:

mdadm --detail --scan

e adicione a nova matriz ao arquivo conf manualmente.

No final, não se esqueça de atualizar seu initramfs:

update-initramfs -u

Verifique se você fez tudo de acordo com o planejado e, em caso afirmativo, poderá reiniciar:

reboot --reboot
    
por 01.11.2016 / 17:33
0

Se você criar as matrizes RAID com mais de 4 dispositivos de bloco brutos em vez de 2 x 4 partições, isso significa que todas as operações de recuperação de RAID podem necessariamente operar em todos os dispositivos e vice-versa.

Assim, por exemplo, se você espera que os discos comecem a desenvolver erros de E / S na segunda metade deles, com as matrizes sobre partições isso significaria que apenas uma das matrizes perceberia, enquanto a outra continuaria intocada, pelo menos até que o dano se espalhe pela metade. Isso pode fornecer alguma flexibilidade temporária ou uma ausência de lentidão de E / S.

Por outro lado, assim que você começa a intervir, você precisa remover todo o disco físico para substituí-lo, assim você terá que degradar ambos os arrays em algum momento. Além disso, com SSDs, é aparentemente mais comum que o disco inteiro falhe, portanto, ambos os arrays podem ser afetados por tais eventos de qualquer maneira.

Não há nada a ser dito sobre os detalhes do processo que não podem ser encontrados no particionamento típico e na documentação do mdadm.

    
por 22.10.2016 / 20:04