如何让 grub 安装在软件 raid 磁盘上?

如何让 grub 安装在软件 raid 磁盘上?

我正在运行 Debian 9 mdadm,上面有 RAID 1。以前两个硬盘都可以启动操作系统,现在只有一个可以。

我最近遇到了一个故障磁盘,需要更换,所以我就更换了它。

首先,我跑了

mdadm --add /dev/md0 /dev/sda

效果很好。之后我立即跑

grub-install /dev/sda

这给了我以下输出:

Installing for i386-pc platform.
grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub-install: error: unable to identify a filesystem in hd0; safety check can't be performed.

这是我的输出lsblk

sda           8:0    0 447.1G  0 disk
└─md0         9:0    0 232.8G  0 raid1
  ├─md0p1   259:0    0  14.9G  0 md    [SWAP]
  ├─md0p2   259:1    0     1K  0 md
  ├─md0p3   259:2    0   216G  0 md    /
  └─md0p5   259:3    0   1.9G  0 md    /boot
sdb           8:16   0   5.5T  0 disk
├─sdb1        8:17   0   5.5T  0 part
└─sdb9        8:25   0     8M  0 part
sdc           8:32   0   5.5T  0 disk
├─sdc1        8:33   0   5.5T  0 part
└─sdc9        8:41   0     8M  0 part
sdd           8:48   0 232.9G  0 disk
└─sdd1        8:49   0 232.9G  0 part
  └─md0       9:0    0 232.8G  0 raid1
    ├─md0p1 259:0    0  14.9G  0 md    [SWAP]
    ├─md0p2 259:1    0     1K  0 md
    ├─md0p3 259:2    0   216G  0 md    /
    └─md0p5 259:3    0   1.9G  0 md    /boot

下面是输出mdadm --detail /dev/md0

/dev/md0:
        Version : 1.2
  Creation Time : Wed Dec 12 15:26:35 2018
     Raid Level : raid1
     Array Size : 244066304 (232.76 GiB 249.92 GB)
  Used Dev Size : 244066304 (232.76 GiB 249.92 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Thu May 28 18:59:51 2020
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : localserver:0  (local to host localserver)
           UUID : 83d5a386:66110e10:e5f3c600:734423a8
         Events : 5339803

    Number   Major   Minor   RaidDevice State
       2       8        0        0      active sync   /dev/sda
       1       8       49        1      active sync   /dev/sdd1

我尝试过只使用 进行启动/dev/sda,但无济于事。我还尝试过blockdev --flushbufs /dev/sda按照某些人的建议运行 ,但无济于事。

跑步时分区我可以看到/dev/sdd1有旗帜引导袭击,而/dev/sda没有。我还看到 的/dev/sda第一个扇区从 0 开始,而/dev/sdd1的从 2048 开始。

有人能建议我解决这个问题的方法吗?

我不介意卸下“奇怪的”硬盘、将其格式化并重新连接。

答案1

好的 - 这就是我解决问题的方法。/dev/sdd有一个名为的分区/dev/sdd1,扇区从 2048 开始,这个事实很有帮助。

Arch Wiki 上的 wikiarticle 也非常有帮助。关键是要让两个分区以完全相同的方式进行分区。

  1. 让我们从软件磁盘阵列中移除不允许安装 GRUB 的磁盘:
mdadm --fail /dev/md0 /dev/sda
mdadm --remove /dev/md0 /dev/sda
  1. 接下来是神奇的部分。使用sfdisk,让我们保存工作磁盘的分区信息,然后对有问题的磁盘重新分区:
sfdisk -d /dev/sdd > raidinfo-partitions.sdd
sfdisk /dev/sda < raidinfo-partitions.sdd

瞧!

  1. 让我们将磁盘重新添加到我们的软件 RAID 阵列:

mdadm --add /dev/md0 /dev/sda1

  1. 最后,当两个驱动器同步后,让我们安装 grub:

grub-install /dev/sda

相关内容