Alguém pode me explicar qual é a diferença entre criar mdadm
um array usando partições ou discos inteiros diretamente? Supondo que pretendo usar todas as unidades.
Imagine um 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
Qual é a diferença e possíveis problemas decorrentes de qualquer uma das duas variantes?
Por exemplo, quero dizer a confiabilidade ou capacidade de gerenciamento ou operações de recuperação em tais matrizes, etc.
Responder1
A diferença mais importante é que permite aumentar a flexibilidade para 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 do disco inteiro. Isso deve estar de acordo com as recomendações gerais para a configuração de um array e certamente pode 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 fabricantes diferentes (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, impedirá que você substitua um disco com falha por um mais novo. se o segundo for menor que o primeiro. O particionamento permite solucionar isso;
Nota lateral sobre por que usar discos de fabricantes diferentes: Os discos falharão, não é uma questão de "se", mas de "quando". Discos do mesmo fabricante e mesmo modelo possuem propriedades semelhantes e, portanto, maiores chances de falharem juntos nas mesmas condições e tempo de uso. A sugestão então é utilizar discos de fabricantes diferentes, modelos diferentes e, principalmente, que não pertençam ao mesmo lote (considere comprar em lojas diferentes se for comprar discos do mesmo fabricante e modelo). Não é incomum que uma segunda falha de disco ocorra durante uma restauração após uma substituição de disco quando discos do mesmo lote são usados. Você certamente não quer que isso aconteça com você.
Então as recomendações:
1)Particionar os discosque será usado com umcapacidade um pouco menordo que o espaço geral em disco (por exemplo, eu tenho uma matriz RAID5 de discos de 2 TB e os particionei intencionalmente, desperdiçando cerca de 100 MB em cada um). Em seguida, 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) Utilize discos de fabricantes diferentes;
3) Utilize discos de modelos diferentes caso fabricantes diferentes não sejam uma opção para você;
4) Utilize discos de lotes diferentes;
5) Substitua os discos de forma proativa antes que eles falhem e não todos ao mesmo tempo. Isso pode ser um pouco paranóico e realmente depende da criticidade dos dados que você possui. Eu costumo ter discos com 6 meses de diferença de idade entre si;
6) Faça backups regulares (sempre, independentemente de usar array ou não). O Raid não tem o mesmo propósito dos backups. Os arrays garantem alta disponibilidade. Os backups permitem restaurar arquivos perdidos (incluindo aqueles que foram excluídos acidentalmente ou danificados por vírus, alguns exemplos de algo contra o qual o uso de arrays não irá protegê-lo).
OBS: Exceto todos osnão negligenciávelracional acima, não há muitas outras diferenças técnicas entre usar /dev/sd? vs /dev/sd?#.
Boa sorte
Responder2
Outro argumento importante é que algunsplacas-mãe podem excluir seus superblocos RAIDse você usa dispositivos de disco inteiros e não tem muito cuidado ao limpá-los ao adicionar discos a uma matriz RAID que já foram dispositivos GPT.
Aprendi isso da maneira mais difícil, quando o UEFI da minha placa-mãe ASRock inutilizou meu RAID:
- http://forum.asrock.com/forum_posts.asp?TID=10174
- https://news.ycombinator.com/item?id=18541493
- https://www.phoronix.com/scan.php?page=news_item&px=Linux-Software-RAID-ASRock
Para se proteger contra isso, sempre execute sgdisk --zap
em um disco formatado anteriormente em GPT que você deseja usar para um RAID de dispositivo inteiro.
wipefs -a
também pode funcionarpara limpar todos os tipos de informações de particionamento restantes (não apenas GPT) antes de adicionar o dispositivo ao disco.
Dito isto,apenas usar partições parece ser uma prática recomendada para tornar isso menos provável de acontecer.
Eu nunca soube o querealos argumentos eram a favor dessa prática recomendada (além da resposta do @Marcelo explicando que ela pode lidar com discos de tamanhos ligeiramente diferentes). Agora eu sei.
Aliás, se isso acontecer com você, seus dados não serão perdidos.Provavelmente, você pode apenas sgdisk --zap
o dispositivo e, em seguida, recriar o RAID com, por exemplo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
(o mdadm informará que já detectou dados anteriores e perguntará se deseja continuar a reutilizar esses dados). Tentei várias vezes e funcionou, mas ainda recomendo fazer um backup antes de fazer isso.
Responder3
Existem algumas postagens citando problemas com o uso de todo o dispositivo como membro do RAID em vez de partição,um aqui. Posso confirmar que é esse o caso.
Portanto, se você criar RAID usando o dispositivo inteiro (digamos, /dev/sda
, /dev/sdb
, ... em vez de on /dev/sda1
, /dev/sdb1
, ...), o dispositivo RAID não será remontado após uma reinicialização, mesmo se você tiver a configuração salva em mdadm.conf
. Também existe a possibilidade de substituir o firmware da placa-mãe ou remover o superbloco RAID. Na minha configuração, a execução mdadm --assemble --scan --verbose
não me traz de volta a configuração do RAID e parece ser o caso do superbloco RAID não estar disponível.
Responder4
Não é incomum colocar discos em vez de partições em um RAID, antes de particionar o RAID. Em particular, a maioria dos controladores RAID de hardware não consegue nem ler tabelas de partição, portanto eles sempre operam em discos inteiros. Mas o mesmo é possível com RAIDs de software. E se configurados corretamente, os RAIDs de software serão remontados perfeitamente na reinicialização. Claro, certifique-se de que nenhum vestígio de uma tabela de partição anterior seja deixado no disco. Isto é particularmente importante, pois muitos discos são entregues pré-formatados e muitas ferramentas (software RAID, sistemas de arquivos etc.) tendem a deixar "setores vazios" no início, onde esses vestígios de antigas tabelas de partição podem sobreviver.
Também compensa comprar um ou dois discos extras como reserva, quando você configura um RAID. Se algum disco falhar, você poderá substituí-lo rapidamente, o que é particularmente importante em um RAID5 ou RAID1 de dois discos, onde após uma falha de disco único, você fica sem redundância, até que o disco com falha seja substituído e o RAID tenha sido ressincronizado. Ao ter um disco sobressalente de correspondência exata, você também evita os problemas que podem surgir de um disco "fraco" em um RAID, como quando o novo disco é mais lento ou um pouco menor que os antigos.
No entanto, o problema “um pouco menor” pode ser resolvido independentemente de você ter ou não partições. Basta usar o mapeador de dispositivos para criar um disco virtual, que obtém 99,9% de sua capacidade do novo disco e os 0,1% que faltam de um disco do sistema ou SSD. Alternativamente, você pode reduzir o sistema de arquivos durante uma reinicialização no estágio initramfs (consultehttps://serverfault.com/a/888830como fazer isso), reduza o RAID e você estará online novamente também.
Em outras palavras: usar discos inteiros para um RAID de hardware ou software ou um pool de memória ZFS é perfeitamente aceitável.