我已经设置了一个 Debian 虚拟机,用两个加密设备制作的 RAID1 btrfs 启动。我像这样设置了虚拟机
/etc/default/grub
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_ENABLE_CRYPTODISK=y
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="cryptdevice=UUID=b5259968-2f96-4a45-87bf-c658f6d0f55d:luksvda4 cryptdevice=UUID=6aae0722-1fc0-49d1-85d7-ca5668b06683:luksvdb4 rootflags=degraded"
GRUB_TERMINAL="console"
这是/etc/fstab
LABEL=ROOT / btrfs defaults,degraded 0 1
LABEL=BOOT /boot ext4 defaults 0 2
LABEL=SWAP none swap sw 0 0
这是 /etc/crypttab
# <target name> <source device> <key file> <options>
luksvda4 UUID=b5259968-2f96-4a45-87bf-c658f6d0f55d none luks
luksvdb4 UUID=6aae0722-1fc0-49d1-85d7-ca5668b06683 none luks
最后是磁盘配置
fdisk -l /dev/vda
/dev/vda1 48 65583 65536 32M BIOS boot
/dev/vda2 65584 2162735 2097152 1G Linux RAID
/dev/vda3 2162736 8454191 6291456 3G Linux swap
/dev/vda4 8454192 62914526 54460335 26G Linux filesystem
fdisk -l /dev/vdb
/dev/vdb1 48 65583 65536 32M BIOS boot
/dev/vdb2 65584 2162735 2097152 1G Linux RAID
/dev/vdb3 2162736 8454191 6291456 3G Linux swap
/dev/vdb4 8454192 62914526 54460335 26G Linux filesystem
我使用经典的 mdadm ext4,但启动分区上的 btrfs(当然未加密)工作得很好。系统启动,询问两个luks设备的两个密码后没有问题。但是,当我删除第一个磁盘(模拟故障)时,转到 initramfs 控制台,我必须手动挂载磁盘(原文如此!),在 Slackware 上使用相同的配置不会发生这种情况。问题是:当两个磁盘之一不可用时,是否可以强制 Debian 启动?
答案1
太简单了:在 /etc/fstab 上我放置了 nofail 选项,即使使用一张磁盘启动也没有问题
LABEL=ROOT / btrfs defaults,degraded,nofail 0 1
LABEL=BOOT /boot ext4 defaults,nofail 0 2
LABEL=SWAP none swap sw 0 0