最近,我不得不用 RAID1(2 个三星 NVMe 磁盘)替换 Centos 7.5 服务器上有故障的硬盘
更换磁盘后,服务器使用另一个驱动器启动,我使用 fsdisk 在新磁盘上复制了相同的分区,将分区添加到 RAID,在 RAID 同步后,我使用以下命令在新 HD 上安装了 GRUB:
grub2-install /dev/nvme1n1
以使其可启动(因此如果其他磁盘出现故障,服务器仍然能够启动)。
重新启动服务器后,出现了 GRUB 菜单,但是在选择任何内核后,服务器停止启动并出现错误:
symbol 'grub_efi_secure_boot' not found
在 BIOS 中更改启动顺序并首先选择旧驱动器后,我设法重新启动了服务器。
我怎样才能使新磁盘可启动?请注意,服务器有 BIOS,而不是 UEFI,并且我使用预安装的映像获得它。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:2 0 32G 0 part
│ └─md0 9:0 0 32G 0 raid1 [SWAP]
├─nvme0n1p2 259:3 0 512M 0 part
│ └─md1 9:1 0 511.4M 0 raid1 /boot
└─nvme0n1p3 259:4 0 444.4G 0 part
└─md2 9:2 0 444.3G 0 raid1 /
nvme1n1 259:1 0 477G 0 disk
├─nvme1n1p1 259:5 0 32G 0 part
│ └─md0 9:0 0 32G 0 raid1 [SWAP]
├─nvme1n1p2 259:6 0 512M 0 part
│ └─md1 9:1 0 511.4M 0 raid1 /boot
└─nvme1n1p3 259:7 0 444.4G 0 part
└─md2 9:2 0 444.3G 0 raid1 /
猫/proc/mdstat
Personalities : [raid1]
md1 : active raid1 nvme1n1p2[2] nvme0n1p2[0]
523712 blocks super 1.2 [2/2] [UU]
md2 : active raid1 nvme1n1p3[2] nvme0n1p3[0]
465895744 blocks super 1.2 [2/2] [UU]
bitmap: 2/4 pages [8KB], 65536KB chunk
md0 : active raid1 nvme0n1p1[0] nvme1n1p1[2]
33521664 blocks super 1.2 [2/2] [UU]
unused devices: <none>
答案1
我设法通过重建 initramfs 来解决启动问题:重建 RAID 阵列并在新磁盘上安装 grub2 后,我运行
dracut -f
建议先备份当前的 initramfs img 文件。您可以为系统中任何可用的内核重建 initramfs img 文件。查看更多这里
我不知道为什么这是必要的,因为新磁盘与旧磁盘完全相同(制造商/型号),所以不需要存储在 initramfs 中的新驱动程序。