Grub은 zfs "다운그레이드" raid1에서 부팅할 수 있습니다(시도해 보았습니다). 간단합니다. 두 개의 zfs 풀, 하나의 부팅과 하나의 루트, 각 raid1을 생성한 다음 grub은 두 디스크를 모두 사용하여 Linux를 로드하거나 하나만 사용합니다. 활성, 하나 또는 둘. btrfs root raid1 + mdadm raid1을 사용하여 ext4에서 비슷한 것을 시도하고 싶습니다. 내가 아는 한, Slackware의 최신 grub은 부팅 시 md raid를 인식할 수 있습니다(메타데이터 0.90). 나는 이렇게 시스템을 구성한다
fdisk -l /dev/vda
Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7715105B-51CD-9A45-9D05-E2C8161E51E9
Device Start End Sectors Size Type
/dev/vda1 2048 1050623 1048576 512M EFI System
/dev/vda2 1050624 9439231 8388608 4G Linux swap
/dev/vda3 9439232 11536383 2097152 1G Linux RAID
/dev/vda4 11536384 104857566 93321183 44.5G Linux filesystem
fdisk -l /dev/vdb
Disk /dev/vdb: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7715105B-51CD-9A45-9D05-E2C8161E51E9
Device Start End Sectors Size Type
/dev/vdb1 2048 1050623 1048576 512M EFI System
/dev/vdb2 1050624 9439231 8388608 4G Linux swap
/dev/vdb3 9439232 11536383 2097152 1G Linux RAID
/dev/vdb4 11536384 104857566 93321183 44.5G Linux filesystem
이것은 fstab입니다
LABEL=SWAP swap swap defaults 0 0
LABEL=ROOT / btrfs defaults,degraded 1 1
LABEL=BOOT /boot ext4 defaults 1 2
/dev/vda1 /boot/efi vfat defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
proc /proc proc defaults 0 0
tmpfs /dev/shm tmpfs nosuid,nodev,noexec 0 0
이것은 /etc/default/grub입니다.
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=$( sed 's/Slackware /Slackware-/' /etc/slackware-version )
GRUB_ENABLE_CRYPTODISK=y
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200 rootflags=degraded"
GRUB_TERMINAL="console serial"
마지막으로 mkinitrd.conf
SOURCE_TREE="/boot/initrd-tree"
CLEAR_TREE="1"
OUTPUT_IMAGE="/boot/initrd.gz"
KERNEL_VERSION="$(ls /var/log/packages/kernel-generic-*-x86_64-* |cut -d - -f 3)"
KEYMAP="it"
MODULE_LIST="btrfs:ext4:vfat:xhci-hcd:hid:usbhid:ochi-hcd:uhci-hcd:uhci-hcd:ehci-hcd:virtio-net:virtio-ring:virtio-blk:virtio-pci"
LUKSDEV="/dev/disk/by-uuid/b97cbe7d-c5e5-432e-adc4-659ed80dd65f:/dev/disk/by-uuid/ec4fd069-0bd2-4b53-90e2-e493c50070f1"
ROOTDEV="/dev/vda4"
ROOTFS="btrfs"
RESUMEDEV="/dev/disk/by-label/SWAP"
RAID="1"
LVM="0"
UDEV="1"
initrd와 grub을 업데이트했습니다.
mkinitrd -B -F
grub-mkconfig -o /boot/grub/grub.cfg
재부팅했더니 제대로 작동했습니다. 두 개의 암호화된 Luks 장치에 대한 두 개의 비밀번호를 요청한 다음 직접 로그인했습니다. 두 번째 디스크로 부팅을 시도했는데...
보시다시피 첫 번째 디스크를 연결하면 제대로 작동합니다. 두 번째 efi 파티션은 인식되지만 md raid1 저하된 파티션은 인식되지 않습니다. 물론 저는 이미 부팅 디스크에 grub을 설치했습니다.
grub-install --target=x86_64-efi --recheck --efi-dir=/boot/efi /dev/vda
grub-install --target=x86_64-efi --recheck --efi-dir=/boot/efi /dev/vdb
해결책이 있나요?
답변1
해결책: 그것은 그럽 문제가 아니라 EFI 문제입니다! 일반적인 방법(efi + BIOSboot 파티션 없음)을 사용한 부팅 grub은 mdadm을 인식하고 두 번째 디스크에서 정상적으로 부팅합니다.