mdadm 루트 파티션 raid 1이 간헐적으로 실패함

mdadm 루트 파티션 raid 1이 간헐적으로 실패함

한동안 저는 디스크 오류가 발생할 경우 가동 중지 시간을 최소화하기 위해 소프트웨어 RAID 1 루트 및 부팅 파티션으로 모든 서버를 설정해 왔습니다. 설치하는 동안 설정했습니다.

mdadm --create /dev/md0 --metadata 1.0 --raid-devices=2 --level=1 /dev/sd[ab]1
mdadm --create /dev/md1 --raid-devices=2 --level=1 /dev/sd[ab]2
mkfs.fat -F32 /dev/md0
mkfs.ext4 /dev/md1

그런 다음 fstab에서 각각 /boot 및 /로 설정합니다. 물론 EFI는 소프트웨어 RAID 1 파티션을 읽을 수 없으므로 EFI 부팅 장치는 /dev/sda1 및 /dev/sdb1입니다.개별적으로. initramfs는 mdadm을 인식하도록 설정되어 있으므로 /는 즉시 /dev/md1 raid 파티션으로 마운트되고 /dev/md0은 부팅 후 미러링, 유지 관리 /dev/sda1및 동기화됩니다 /dev/sdb1. 나는 수년 동안 이런 방식으로 시스템을 설정해 왔지만 아무런 문제가 없었습니다.

최근까지 저는 26개의 HBA 디스크로 백업 서버를 구성했습니다. /dev/sdy은 및 /dev/sdz에 사용하는 SSD 디스크입니다 . 대부분의 경우 시스템이 정상적으로 부팅됩니다. 그러나 재부팅 시 시스템이 간헐적으로 충돌하며 "슈퍼블록이 손상되었습니다." 및 "문제를 해결하기 위해 e2fsck -b 8198 등을 실행하려고 합니다." 그러나 /dev/md1의 슈퍼블록에는 문제가 없습니다. USB 메모리에서 다운로드할 수 있습니다. 스틱이 부팅되고 설치됩니다. 문제가 없으며 장치에 오류가 반환되지 않습니다. 많은 수의 디스크에서 이 문제를 일으키는 원인이 무엇인지 모르겠습니다(간헐적인 하드웨어 문제 또는 불안정한 펌웨어 제외). RAID가 조립된 방식의 조합(즉, RAID 슈퍼 블록을 찾기 위해 파티션을 스캔함) 그러나 지시문이 /etc/mdadm.conf에 있고 그때까지 읽을 수 없다는 것을 깨닫는 것입니다 . /가 이미 마운트되어 있었는데, 애초에 문제였습니다.//boot/dev/md1dev/md1e2fsckmdadm

혹시 이 문제를 보신 분이나 해결책을 아시는 분 계신가요?

답변1

나는 사용하고있다시스템 부팅내 UEFI 부팅 관리자(https://wiki.archlinux.org/index.php/Systemd-boot), systemd-boot에서는 다음을 제공해야 합니다.로더 구성 항목부팅할 커널/initramfs 파일과 커널 부팅 매개변수로 전달된 옵션에 대한 정보를 제공합니다. 다음 옵션 중 하나는 루트 장치를 지정합니다.

# cat /boot/loader/entries/arch.conf
title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=UUID=acf7e0be-5723-478e-aad6-80af6eb82a92 rw ipv6.disable=1

처음에는 평소와 같이 루트 장치를 설정했지만 root=/dev/md1시스템에 26개의 HBA 디스크가 포함되어 있고 시스템이 디스크 장치 이름 지정과 혼동한 것 같습니다. 어쨌든 root=UUID=acf7e0be-5723-478e-aad6-80af6eb82a92위에 표시된 대로 루트를 변경하면 문제가 해결되었으며 이제 시스템은 매번 올바르게 부팅됩니다.

관련 정보