Quando crio uma mdadm
matriz RAID 1, o comando é concluído com êxito, mas recebo um aviso.
Características do sistema ("alvo" Debian/Raspbian em um Pi 3):
uname -a
Linux pi 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux
mdadm --version
mdadm - v4.1 - 2018-10-01
head -n4 /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
Exemplo trabalhado:
dd if=/dev/zero bs=1M count=128 >/tmp/r1.img # 128MB will do nicely
cp /tmp/r1.img /tmp/r2.img # Another slice
for r in 1 2; do losetup /dev/loop$r /tmp/r$r.img; done # Associate block devices
mdadm --create /dev/md0 --level=raid1 --raid-devices=2 --metadata=default /dev/loop1 /dev/loop2
Mensagem de aviso:
mdadm: Fail create md0 when using /sys/module/md_mod/parameters/new_array
mdadm: array /dev/md0 started.
O status de saída ( $?
) é zero, ou seja, conclusão bem-sucedida.
Verificação de status ( cat /proc/mdstat
) após alguns instantes, após permitir a sincronização da nova matriz RAID:
Personalities : [raid1]
md0 : active raid1 loop2[1] loop1[0]
130048 blocks super 1.2 [2/2] [UU]
unused devices: <none>
O "arquivo" referenciado existe:
ls -l /sys/module/md_mod/parameters/new_array
--w------- 1 root root 4096 Sep 13 10:34 /sys/module/md_mod/parameters/new_array
Aqui está o que parece ser o segmento relevante da corrida strace mdadm …
:
openat(AT_FDCWD, "/run/mdadm/creating-md0", O_RDWR|O_CREAT|O_LARGEFILE, 0600) = 4
close(4) = 0
openat(AT_FDCWD, "/sys/module/md_mod/parameters/new_array", O_WRONLY|O_LARGEFILE) = 4
write(4, "md0", 3) = -1 EINVAL (Invalid argument)
close(4) = 0
write(2, "mdadm: Fail create md0 when usin"..., 74mdadm: Fail create md0 when using /sys/module/md_mod/parameters/new_array
) = 74
unlink("/run/mdadm/creating-md0") = 0
Dado que o metadispositivo foi criado com sucesso, o que Fail create
significa a terminologia neste contexto?
Originalmente, o
md_mod/parameters/new_array
parâmetro suportava apenas a criação de arquivos"md_*" where * is not all digits
. A criação demdNNN
arrays foi adicionada posteriormente no linux commit 039b7225e6 , mdadm commit 039df36231 .Embora este commit seja anterior ao seu kernel, ele nunca chegou à versão 4.9.x, então seu kernel ainda não o suporta. Para que esta mudança funcione, você precisa do kernel Linux v4.12 ou mais recente e do mdadm v4.1 ou mais recente. Você já tem o mdadm v4.1, mas o kernel não está atualizado, então todo esse problema se resume a "seu mdadm é mais recente que o seu kernel".
Nesse caso,
mdadm
volta ao antigo modo de criação de nó, que funciona conforme o esperado e é bem-sucedido, apesar da mensagem de erro. Você ainda obtém seu array no final e está tudo bem (provavelmente falharia para números maiores ou nomes de MD mais exóticos).A questão é por que o seu kernel bullseye é tão antigo. Pelo que vejo no raspbian, ele deve ser fornecido com o Linux 6.1 ou 5.10, então não sei por que você está preso ao 4.9.