Debian

如何在軟體 RAID 磁碟上安裝 grub?

  • June 5, 2020

我正在執行帶有mdadmRAID 1 的 Debian 9。以前兩個硬碟都可以啟動到作業系統,現在只有一個可以。

我最近有一個需要更換的故障磁碟,所以我更換了它。

首先,我跑了

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

我試過用 just 引導/dev/sda,但無濟於事。我也嘗試過 running blockdev --flushbufs /dev/sda,正如一些人推薦的那樣,但無濟於事。

執行GParted時,我可以看到有bootraid/dev/sdd1標誌,而沒有標誌。我還看到’ 的第一個扇區從 0 開始,而’ 的第一個扇區從 2048 開始。/dev/sda``/dev/sda``/dev/sdd1

誰能建議我可以解決這個問題的方法?

我不介意分離“奇怪”的硬碟驅動器,格式化它,然後重新連接它。

好的 - 這就是我解決它的方法。/dev/sdd有一個稱為分區/dev/sdd1並且該扇區從 2048 開始的事實非常有幫助。

Arch Wiki 上的這篇wikiarticle 也有很大幫助。關鍵是要以完全相同的方式對兩個 rives 進行分區。

  1. 讓我們從軟體 raid 中刪除不允許我們在其上安裝 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

引用自:https://serverfault.com/questions/1019079