mdadm을 사용하여 RAID1 미러를 생성하면 "생성 실패"라는 경고가 표시되지만 성공적으로 완료됩니다.

mdadm을 사용하여 RAID1 미러를 생성하면 "생성 실패"라는 경고가 표시되지만 성공적으로 완료됩니다.

RAID 1 어레이를 생성하면 mdadm명령이 성공적으로 완료되지만 경고가 표시됩니다.

시스템 특성(Pi 3의 Debian/Raspbian "bullseye"):

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)"

실제 사례:

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

경고 메시지:

mdadm: Fail create md0 when using /sys/module/md_mod/parameters/new_array
mdadm: array /dev/md0 started.

종료 상태( $?)는 0이며 성공적인 완료를 나타냅니다.

cat /proc/mdstat몇 분 후에 상태가 확인되어() 새 RAID 어레이가 동기화될 수 있습니다.

Personalities : [raid1]
md0 : active raid1 loop2[1] loop1[0]
      130048 blocks super 1.2 [2/2] [UU]

unused devices: <none>

참조된 "파일"이 존재합니다:

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

실제 관련 부분은 다음과 같습니다 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

메타장치가 성공적으로 생성되었다는 점을 고려하면 Fail create이 맥락에서 이 용어는 무엇을 의미합니까?

답변1

처음에 이 md_mod/parameters/new_array매개변수는 생성만 지원했습니다 "md_*" where * is not all digits. mdNNN나중에 배열 생성이 추가되었습니다.Linux 커밋 039b7225e6,mdadm 커밋 039df36231.

이 커밋은 커널보다 이전 버전이지만 v4.9.x에는 적용되지 않았으므로 커널이 아직 이를 지원하지 않습니다. 이 변경 사항을 적용하려면 Linux 커널 v4.12 이상 및 mdadm v4.1 이상이 필요합니다. 이미 mdadm v4.1이 있지만 커널이 업데이트되지 않았으므로 전체 문제는 "mdadm이 커널보다 최신입니다"로 귀결됩니다.

이 경우 mdadm예상대로 작동하는 이전 노드 생성 모드로 돌아가므로 오류 메시지에도 불구하고 성공합니다. 결국 당신은 여전히 ​​배열을 얻었고 모든 것이 괜찮습니다(더 큰 숫자나 더 멋진 MD 이름으로 인해 실패할 수 있습니다).

문제는 왜 불스아이 커널이 그렇게 오래된 것인지입니다. 내가 Raspbian에서 본 바에 따르면 Linux 6.1 또는 5.10과 함께 제공되어야 하는데 왜 4.9를 사용해야 하는지 잘 모르겠습니다.

관련 정보