Eu tenho dois arrays do mdadm no meu sistema:
alex@fileserver:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdc1[0] md0[3] sde1[1]
7759197184 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
md0 : active raid0 sdd1[1] sdb1[0]
3907019776 blocks super 1.2 512k chunks
unused devices: <none>
Se você olhar bem de perto, verá que md1
usa md0
em sua matriz. (Eu tinha dois discos de 4 TB e dois discos de 2 TB, e era assim que eu queria que trabalhassem juntos ...)
Isso funciona muito bem, exceto no boot. Mesmo que meu mdadm.conf
tenha estas linhas:
ARRAY /dev/md/0 metadata=1.2 UUID=ba271258:3f18f660:1d5d19aa:2bd0d8e3 name=fileserver:0
ARRAY /dev/md/1 metadata=1.2 UUID=262a6823:3fafb521:75e315ab:f2de4329 name=fileserver:1
ele consegue montar md0
, mas md1
está faltando md0
em sua matriz e acaba ficando inativo, com apenas sdc1
e sde1
como peças de reposição. Eu estou supondo que o mdadm tenta montar seus arrays em paralelo ou algo assim?
Se, após a inicialização, eu executar mdadm --stop /dev/md1
e, em seguida, mdadm --assemble --scan
, a matriz será corretamente montada.
Meu cenário provavelmente não é muito normal, mas existe alguma solução simples para esse problema? Por exemplo. alguma maneira de dizer ao mdadm.conf que md1
depende de md0
? Eu sempre poderia apenas escrever um pequeno script de inicialização que faz os comandos stop / assemble para mim depois do mdadm, mas eu preferiria evitar tais hacks se uma solução apropriada existisse, especialmente porque eu tenho serviços de sistema que dependem do md1
estar presente e montado para funcionar corretamente.