O Raid 1, sendo um espelho, depende de todos os discos em um espelho serem cópias exatas um do outro. Pegue o seu disco rígido aleatório, e outro disco rígido aleatório, e você possivelmente terá dados diferentes, violando assim essa suposição. É por isso que a inicialização é necessária. Simplesmente copia o conteúdo da primeira unidade para outras pessoas. Note que, em algumas condições, você pode se safar de não inicializar as unidades - geralmente os novos dispositivos de fábrica já possuem zeros em todo o lugar, então você pode simplesmente ignorar isso. A mdadm
option --assume-clean
faz isso, mas avisa:
--assume-clean
Tell mdadm that the array pre-existed and is known to be clean. It can be useful when trying to recover from a major failure as you can be sure that no data will be affected unless you actually write to the array. It can also be used when creating a RAID1 or RAID10 if you want to avoid the initial resync, however this practice -- while normally safe -- is not recommended. Use this only if you really know what you are doing.
Se você não fizer isso, há uma discrepância entre as unidades e é lido, não há como saber o que a unidade vai ler. Você deve estar bastante seguro com um sistema de arquivos (mas observe abaixo), porque provavelmente você escreverá antes de ler qualquer coisa daquele dispositivo, e então você está claro.
Observe que, pelo menos, o mdadm
do Linux inicializará a matriz em segundo plano. Você pode facilmente criar o FS no primeiro segundo. O desempenho vai sofrer até a inicialização terminar, mas isso é tudo.
Mas:
a) Ao fazer mkfs
alguns utilitários verificam se já existe algo nessa unidade. Enquanto isso só toca em algumas regiões bem conhecidas do drive, ele lê antes de você escrever qualquer coisa, colocando você em perigo.
b) Se você fizer uma ressincronização periódica da sua matriz, o dispositivo RAID não conhece nada do seu FS. Ele simplesmente lê cada bloco de cada dispositivo e os compara. E se você não estiver usando um FS de copy-on-write (por exemplo, ZFS ou BTRFS) e nunca preencher seu FS, é perfeitamente plausível que um bloco permaneça não inicializado na perspectiva de FS por anos.
Por que ressincronizar com dispositivos RAID1?
Pela mesma razão, você ressincroniza com dispositivos RAID5 ou qualquer outro nível (exceto RAID0). Ele lê todos os dados e compara / verifica as somas de verificação do RAID (no RAID 5 ou 6). Se um bit foi virado de alguma forma (porque a memória HD tem um flip espontâneo, porque os celulares de vocês e seus 5 vizinhos apenas interferiram acidentalmente nessa região específica do disco, o que quer que seja) ele detectará inconsistência, mas não será capaz de ajudar você. Se, OTOH, um dos discos rígidos simplesmente informar "Não consigo ler esse bloco", o que é mais provável com uma unidade com falha, você só detectou uma falha no início e reduziu o tempo em execução no modo degradado (contando a partir de a falha da unidade, não a partir de quando você percebe isso). O Raid não o ajudará se uma unidade falhar e um mês depois a outra falhar se você não notar a primeira falha naquele mês.
RAID10
Agora, para o RAID10, todos os itens acima são válidos. Afinal, o RAID10 é apenas uma maneira inteligente de dizer "Estou colocando meus dois dispositivos RAID1 em um par RAID0".
Advertência:
Isso tudo é um comportamento indefinido. Por que verifiquei no Linux, usando mdadm
, outras implementações RAID de software podem se comportar de maneira diferente. Outras versões do kernel do Linux e / ou mdadm
tools que eu estou usando também podem se comportar de maneira diferente.