web-dev-qa-db-ja.com

ソフトウェアRAIDディスクにgrubをインストールする方法を教えてください。

mdadm RAID 1を搭載したDebian 9を実行しています。以前は両方のハードドライブがOSで起動できましたが、現在はどちらか一方しか起動できません。

最近、交換が必要な不良ディスクがあったので、交換しました。

まず、走った

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も実行してみましたが、役に立ちませんでした。

GPartedを実行すると、/dev/sdd1にはフラグbootraidがあり、/dev/sdaにはフラグがないことがわかります。また、/dev/sdaの最初のセクターは0から始まり、/dev/sdd1は2048から始まることもわかります。

誰かが私がこれを解決できる方法を提案できますか?

「奇妙な」ハードドライブを取り外してフォーマットし、再接続してもかまいません。

2
Oleg

OK-これが私が解決した方法です。 /dev/sdd/dev/sdd1と呼ばれるパーティションがあり、セクターが2048から始まるという事実は非常に役に立ちました。

これ Arch Wikiのwikiarticleも非常に役に立ちました。重要なのは、両方のライブをまったく同じ方法で分割することです。

  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

2
Oleg

ディスクのレイアウトを理解している場合(これもUEFIであると想定しています)、grub-installのブートディレクトリでmd0を試してみてください。 /dev/sdaは単なるデバイスですが、通常GRUBをディスクの/bootにインストールする必要があります。UEFIを実行しているかレガシーを実行しているかによって異なります。

Arch Wikiから。

Grub-installコマンドにdevice_pathオプション(例:/ dev/sda)がないことに注意してください。実際、提供されたdevice_pathはGRUB UEFIインストールスクリプトによって無視されます。実際、UEFIブートローダーはMBRブートコードまたはパーティションブートセクターをまったく使用しません。

Arch WikiはGRUBの私のお気に入りです。詳細については、こちらをご覧ください: https://wiki.archlinux.org/index.php/GRUB#Installation_2

1
Will Nilges