배경

배경

배경

저는 Centos 7을 사용하고 있습니다. 처음에는 다음과 같이 단일 디스크에서 실행됩니다.

1  200M    EFI System       (/boot/efi)
2  500M    Microsoft basic  (/boot)
3  465.1G  Linux LVM 

LVM VG centos
- LVM LV ext4 centos-root (/)
- LVM LV swap centos-swap (swap)

처음에는 Linux 소프트웨어 RAID1 어레이에 설치해야 하므로 이는 임시 솔루션일 뿐입니다. 오늘 시간을 내어 마이그레이션해 봤습니다. 현재 모습은 다음과 같습니다.

Both new disks have this partition layout:

1  200M    EFI System   (/boot/efi)
2  457.6G  Linux RAID   /dev/md0  RAID1 (for boot and LVM)
3  8G      Linux RAID   /dev/md1  RAID0 (so 16GB total, for swap)

/dev/md0 looks like this:

1  500M  Linux filesystem (/boot)
2  457G  Linux LVM        (centos-root is migrated to this)

LVM now has only one LV, centos-root

/etc/mdadm.conf다음과 같습니다.

ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=main.centos.local:0 UUID=5b5057b4:4235ba4b:5342dfda:acf63302
   devices=/dev/sda2,/dev/sdb2
ARRAY /dev/md1 level=raid0 num-devices=2 metadata=1.2 name=main.centos.local:1 UUID=f82a8c99:9b391d83:4efc9456:9e9bad98
   devices=/dev/sda3,/dev/sdb3

/etc/fstab다음과 같습니다.

/dev/mapper/centos-root                   /          xfs    defaults  0 0
UUID=fcb5f82f-ce6b-460b-800f-329e010bc403 /boot      xfs    defaults  0 0
UUID=C532-14AE                            /boot/efi  vfat   umask=0077,shortname=winnt 0 0
/dev/md1                                  swap       swap   defaults  0 0

blkid다음을 출력합니다(관련 항목만):

/dev/sdb1: SEC_TYPE="msdos" UUID="C532-14AE" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="ed301bbd-c15c-40af-ae75-bf238d0e6270" 
/dev/sda1: SEC_TYPE="msdos" UUID="C532-14AE" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="f3a76412-41a0-4e04-9b04-ad1c159133cf" 
/dev/md0p1: LABEL="boot" UUID="fcb5f82f-ce6b-460b-800f-329e010bc403" TYPE="xfs" PARTLABEL="primary" PARTUUID="df8d6481-c6ce-423a-b5d5-205d355e5653" 
/dev/md0p2: UUID="7LfywM-oPHy-MTEt-swlI-EVbZ-opTo-m82E6R" TYPE="LVM2_member" PARTLABEL="primary" PARTUUID="19e7f9d5-a955-4036-8338-03a748faa1f6" 
/dev/mapper/centos-root: UUID="deaa9788-b487-4991-adf7-2945788fb6cd" TYPE="xfs"

/boot/efi_[device]커널이 업데이트될 때 모든 것을 동기화 상태로 유지하기 위해 grub.cfg가 해당 파티션에 복사되는 다른 EFI 파티션을 자동으로 마운트하는 스크립트가 있습니다 .

/dev/sda1스크립트를 통해 동기화가 유지 되므로 /dev/sdb1(확인했습니다) 둘 중 하나를 fstab에 마운트하는 것은 문제가 되지 않습니다 /boot/efi. 이는 또한 오류로 인해 하나의 드라이브가 제거되더라도 시스템이 계속 부팅된다는 것을 의미합니다. 작업을 단순화하기 위해 LV에 스왑을 넣을 수도 있었지만 RAID0은 (가치 있는 만큼) 더 나은 성능을 얻고 추가로 16GB의 공간을 얻습니다.

다음 명령을 사용하여 LV를 이전 드라이브에서 새 PV로 마이그레이션했습니다.

pvcreate /dev/md0p2
vgextend centos /dev/md0p2
pvmove /dev/sdg3
vgreduce centos /dev/sdg3

dracut그런 다음 (원본 파일을 백업한 후) initramfs를 재생성하고 마지막으로 grub.cfg를 재생성했습니다. 그 후 새 /boot파티션 을 마운트 /boot/efi하고 모든 것을 복사했습니다.

질문

이전 드라이브의 연결을 끊고 부팅한 후 dracut은 내 RAID 배열을 찾을 수 없으며 확실히 /boot파티션과 LVG도 찾을 수 없습니다. 합계를 전혀 mdadm --assemble호출 하지 않는 것 같습니다 . 프롬프트에서 이 작업을 수행 하고 연결할 수 있는 LVG를 찾을 수 있으며 프롬프트를 종료하면 시스템이 문제 없이 계속 부팅됩니다. 모든 것이 있어야 할 곳에 있는 것 같습니다./dev/md0/dev/mddracutlvm_scan/dev/centos/root/dev/root

사용 가능한 커널 업데이트가 있었기 때문에 설치를 시도했지만(initramfs 및 grub.cfg 파일을 처음으로 재생성할 때 뭔가를 망쳤다고 가정) 성공하지 못했습니다. 시스템은 여전히 ​​똑같은 방식으로 실패합니다. EFI 파티션 중 하나에서 수동으로 부팅하는 경우입니다(둘 다 동일하므로 그래야 합니다).

Pastebin의 rdsosreport.txt 링크

내가 여기서 무엇을 놓치고 있는 걸까요? 어레이를 조립하기 위해 dracut을 어떻게 구합니까?

답변1

dracut 문서에는 모든 md raid 어레이가 자동으로 조립되어야 하며 rd.md.uuid이 매개변수는 부팅 프로세스의 일부로 특정 어레이를 조립하려는 경우에만 사용해야 함을 암시합니다.

실제로 어레이는 자동으로 조립되지 않는 것처럼 보입니다. 실제로는 rd.md.uuid매개변수가 설정될 때만 조립됩니다(어셈블해야 하는 각 어레이에 대해). rd.lvm.lv매개변수가 이미 설정되어 있어서 왠지 방해가 될 수도 있지만 md테스트할 시간이 없습니다.

즉, rd.md.uuid두 배열의 매개변수를 GRUB_CMDLINE_LINUX변수 에 추가한 /etc/default/grub다음 grub 구성을 다시 생성하면 문제가 해결되었습니다.

답변2

rd.md=1변수 에 rd.md.conf=1rd.auto=1매개변수를 추가한 다음 grub 구성을 다시 생성하면 비슷한 문제가 해결되었습니다. 이러한 매개변수의 기본값은 0입니다( 문서에는 명시적으로 나와 있지 않지만 그렇다고 나와 있습니다).GRUB_CMDLINE_LINUX/etc/default/grubdracut.cmdline

물론, rd.md.uuid별도로 추가하는 것도 가능합니다. 이렇게 하면 필요한 배열이 명시적으로 시작되기 때문입니다. 하지만 저는 게으르고 일반적인 매개변수를 선호합니다. 이 rd.md.uuid버전의 장점은 부팅 시 필요한 어레이만 시작된다는 것입니다.

답변3

나는 이것을 사용한다mdadm RAID CentOS 시작 가이드이 주제에 관해 누락된 정보가 많이 있는 것 같습니다.

명백한 단계 외에도 시작 문제를 해결하는 두 가지 단계가 더 있었습니다. 1.) /etc/default/grub에 rd.auto=1을 추가하고 grub.cfg grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg를 업데이트했습니다. 2.) 다음과 같이 initramfs를 다시 빌드해야 했습니다. : dracut --add="mdraid" /boot/initramfs-3.10.0-1127.13.1.el7.x86_64.img 3.10.0-1127.13.1.el7.x86_64 --force

그 후에는 부팅할 수 있지만 향후 모든 커널에 mdraid가 내장되도록 dracut.conf를 편집하여 mdraid를 추가하는 것을 잊지 마십시오.

관련 정보