Вопрос: Не удается установить grub в RAID1 (md0)


У меня есть массив RAID1 на моем Ubuntu 12.04 LTS, а мой / sda HDD был заменен несколько дней назад. Я использую эти команды для замены:

# go to superuser
sudo bash
# see RAID state
mdadm -Q -D /dev/md0
# State should be "clean, degraded"
# remove broken disk from RAID
mdadm /dev/md0 --fail /dev/sda1
mdadm /dev/md0 --remove /dev/sda1
# see partitions
fdisk -l
# shutdown computer
shutdown now
# physically replace old disk by new
# start system again
# see partitions
fdisk -l
# copy partitions from sdb to sda
sfdisk -d /dev/sdb | sfdisk /dev/sda
# recreate id for sda
sfdisk --change-id /dev/sda 1 fd
# add sda1 to RAID
mdadm /dev/md0 --add /dev/sda1
# see RAID state
mdadm -Q -D /dev/md0
# State should be "clean, degraded, recovering"
# to see status you can use
cat /proc/mdstat

Это мой вывод mdadm после синхронизации:

/dev/md0:
        Version : 0.90
  Creation Time : Wed Feb 17 16:18:25 2010
     Raid Level : raid1
     Array Size : 470455360 (448.66 GiB 481.75 GB)
  Used Dev Size : 470455360 (448.66 GiB 481.75 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Nov  1 15:19:31 2012
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : 92e6ff4e:ed3ab4bf:fee5eb6c:d9b9cb11
         Events : 0.11049560

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1

После завершения завершения сборки fdisk -l говорит, что у меня неверная таблица разделов / dev / md0. Это мой вывод fdisk -l:

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00057d19

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63   940910984   470455461   fd  Linux raid autodetect
/dev/sda2       940910985   976768064    17928540    5  Extended
/dev/sda5       940911048   976768064    17928508+  82  Linux swap / Solaris

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000667ca

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *          63   940910984   470455461   fd  Linux raid autodetect
/dev/sdb2       940910985   976768064    17928540    5  Extended
/dev/sdb5       940911048   976768064    17928508+  82  Linux swap / Solaris

Disk /dev/md0: 481.7 GB, 481746288640 bytes
2 heads, 4 sectors/track, 117613840 cylinders, total 940910720 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/md0 doesn't contain a valid partition table

Это мой вывод на сборку grub:

root@answe:~# grub-install /dev/sda
/usr/sbin/grub-setup: warn: Attempting to install GRUB to a disk with multiple partition labels or both partition label and filesystem.  This is not supported yet..
/usr/sbin/grub-setup: error: embedding is not possible, but this is required for cross-disk install.
root@answe:~# grub-install /dev/sdb
Installation finished. No error reported.

Некоторая информация о версии:

grub-install (GRUB) 1.99-21ubuntu3.4
3.2.0-32-generic #51-Ubuntu SMP Wed Sep 26 21:33:09 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

Так

1) «update-grub» найти только / sda и / sdb Linux, not / md0

2) «dpkg-reconfigure grub-pc» говорит: «GRUB не удалось установить следующие устройства / dev / md0»

Я не могу загрузить свою систему, кроме как из / sdb1 (и вручную, а не автоматически), а в режиме DEGRADED ...

Кто-нибудь может решить эту проблему? У меня большая головная боль с этим.

UPDATE: после уничтожения нового диска с нулями, копирование разделов с помощью sfdisk update-grub говорит:

root@answe:~# grub-install /dev/sda
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
Installation finished. No error reported.

Теперь update-grub генерирует те же ошибки:

root@answe:~# update-grub
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
Generating grub.cfg ...
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
Found linux image: /boot/vmlinuz-3.2.0-32-generic
Found initrd image: /boot/initrd.img-3.2.0-32-generic
...
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
Found memtest86+ image: /boot/memtest86+.bin
No volume groups found
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
Found Ubuntu 12.04.1 LTS (12.04) on /dev/sda1
Found Ubuntu 12.04.1 LTS (12.04) on /dev/sdb1
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
done

5
2017-10-28 10:22


Источник




Ответы:


Предупреждение указывает на основную причину. Новый диск, который вы использовали для замены, вероятно, имел на нем файловую систему и grub-setup теперь путают метаданные, которые, вероятно, все еще там.

Итак, просто уничтожьте все в начале диска до первого раздела. Я взял 62 номер из fdisk -l вывод. В нем говорится, что 63 это начало первого раздела, который звучит так, будто есть 62 перед ним, которые вы можете очистить.

dd if=/dev/zero of=/dev/sda bs=512 count=62

Затем заново создайте таблицу разделов:

sfdisk -d /dev/sdb | sfdisk /dev/sda

sfdisk, вероятно, будет жаловаться на то, что «ядро может использовать старую таблицу разделов», но вы можете игнорировать предупреждение, так как вы на самом деле не изменения таблицу разделов.

Тогда вы должны уметь grub-install /dev/sda,

Обновить:

Если вы все еще получаете ошибки, попробуйте извлечь диск из RAID и обнулить больше данных с начала и конца. Или просто обнулите весь диск (dd if=/dev/zero of=/dev/sda). Затем добавьте его обратно в RAID, как и раньше, начиная с sfdisk -d /dev/sdb | sfdisk /dev/sda, И подумайте о переходе на формат метаданных 1.0, как было рекомендовано в нескольких других местах.


3
2017-11-01 10:03



После уничтожения диска нулями мне нужно добавить разделы на нем. Но сразу после sfdisk -d /dev/sdb | sfdisk /dev/sda началось перестроение массива. Если я не могу удалить sda из массива и попытаюсь установить grub, я получил такую ​​же ошибку. - Andrew Answer
install-grub хорошо работать. Теперь у меня много сообщений error: found two disks with the index 2 for RAID md0. - Andrew Answer