Qual é a diferença entre criar o array mdadm usando partições ou discos inteiros diretamente?

13

Alguém pode me explicar, qual é a diferença entre criar mdadm array usando partições ou discos inteiros diretamente? Supondo que pretendo usar as unidades inteiras. Note que eles estão com o GPT.

Imagine o RAID6 criado de duas maneiras:

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

ou:

mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Existe alguma diferença?

EDIT1: Quero dizer, por exemplo, confiabilidade ou capacidade de gerenciamento ou operações de recuperação nesses arrays, etc.

EDIT2: eu uso drives de diferentes fabricantes. Mas essa não é a questão realmente. Todos eles têm exatamente o mesmo tamanho, eu entendo o ponto, que pode haver fabricantes fazendo unidades de tamanhos ligeiramente diferentes. Mas para o bem desta questão, vamos supor que eles são do mesmo tamanho.

EDIT3: Tipo de aviso de isenção: Até o momento, estou sempre particionando as unidades.

    
por Vlastimil 31.10.2016 / 17:01

2 respostas

10

A diferença mais importante é que ele permite aumentar a flexibilidade de substituição de disco. É melhor detalhado abaixo, juntamente com uma série de outras recomendações.

Deve-se considerar o uso de uma partição em vez de todo o disco. Isso deve estar de acordo com as recomendações gerais para a configuração de uma matriz e pode certamente poupar algumas dores de cabeça no futuro quando novas substituições de disco forem necessárias.

Os argumentos mais importantes são:

Discos de diferentes fabricantes (ou mesmo modelos diferentes da "mesma" capacidade do mesmo fabricante) não têm necessariamente o mesmo tamanho de disco e, mesmo a menor diferença de tamanho, impedem a substituição de um disco com falha um mais novo se o segundo for menor que o primeiro. O particionamento permite que você contorne isso;

Anote o porquê de usar discos de diferentes fabricantes: Os discos irão falhar, isto não é uma questão de um "se" mas de um "quando". Discos do mesmo fabricante e do mesmo modelo têm propriedades semelhantes e, portanto, maiores chances de falhar juntos sob as mesmas condições e tempo de uso. A sugestão é usar discos de fabricantes diferentes, modelos diferentes e, em especial, que não pertencem ao mesmo lote (considere comprar em lojas diferentes se você estiver comprando discos do mesmo fabricante e modelo). Isso não é incomum que um segundo disco falhe durante um resotre após a substituição do disco quando discos do mesmo lote são usados. Você certamente não quer que isso aconteça com você.

Portanto, as recomendações:

1) Particione os discos que serão usados com capacidade ligeiramente menor do que o espaço total em disco (por exemplo, eu tenho uma matriz RAID5 de discos de 2 TB e intencionalmente particionou-los desperdiçando cerca de 100MB em cada). Então, use / dev / sd? 1 de cada um para compor o array - Isso adicionará uma margem de segurança caso um novo disco substituto tenha menos espaço que os originais usados para montar o array quando ele foi criado;

2) Use discos de diferentes fabricantes;

3) Use discos de modelos diferentes se diferentes fabricantes não forem uma opção para você;

4) Use discos de diferentes lotes;

5) Substitua os discos proativamente antes que eles falhem e nem todos ao mesmo tempo. Isso pode ser um pouco paranoico e realmente depende da criticidade dos dados que você tem. Eu costumava ter discos que têm 6 meses de diferença de idade um do outro;

6) Faça backups regulares (sempre, independentemente de você usar uma matriz ou não). Raid não serve o mesmo propósito de backups. Arrays garantem alta disponibilidade, Backups permitem restaurar arquivos perdidos (incluindo aqueles que são excluídos acidentalmente ou são danificados por vírus, alguns exemplos de algo que não são protegidos por arrays).

OBS: Exceto por todo o racional não-negligenciável acima, não há muitas outras diferenças técnicas entre usar / dev / sd? vs / dev / sd? #.

Boa sorte

    
por 15.11.2016 / 14:56
0

Outro argumento importante é que algumas mainboards podem excluir seus superblocos RAID se você usar dispositivos de disco inteiros e não tiver o cuidado de limpá-los ao adicionar discos a uma matriz RAID que já foram dispositivos GPT. / p>

Aprendi isso da maneira mais difícil, quando o UEFI da placa-mãe da ASRock tornou meu RAID inutilizável:

Para se proteger disso, sempre execute sgdisk --zap em um disco formatado anteriormente no GPT que você deseja usar para um RAID de dispositivo inteiro.

wipefs -a também pode funcionar para limpar todos os tipos de informações de particionamento que sobraram (não apenas GPT) antes de adicionar o dispositivo para o disco.

Dito isso, apenas usar partições parece ser uma prática recomendada para diminuir a probabilidade de isso acontecer .

Eu nunca soube quais eram os argumentos real para essa prática recomendada (além da resposta de @ Marcelo explicando que ele pode lidar com discos de tamanhos ligeiramente diferentes). Agora eu sei.

A propósito, se isso acontecer com você, seus dados não serão perdidos. Você pode, provavelmente, usar apenas sgdisk --zap do dispositivo e recriar o RAID com, por exemplo, mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd (o mdadm lhe dirá que já detectou dados passados e pergunta se você deseja continuar a reutilizar esses dados). Eu tentei várias vezes e funcionou, mas eu ainda recomendo fazer um backup antes de fazer isso.

    
por 27.11.2018 / 23:08