Назад | Перейти на главную страницу

mdadm raid 1 grub только на sda

Я только что закончил настройку 64-битного сервера CentOS 6.3 с mdadm, но загорелась лампочка, и я понял, что grub будет установлен только на первый диск, который примерно так же полезен, как и пепельница на мотоцикле.

Я взглянул, чтобы подтвердить свое подозрение:

grub> find /grub/stage1
find /grub/stage1
 (hd0,0)

Поэтому я обновил карту своего устройства, чтобы она выглядела так:

(fd0)   /dev/fd0
(hd0)   /dev/sda
(hd1)   /dev/sdb

(Обратите внимание, что запись (hd1) была добавлена ​​мной

поэтому я попытался установить grub на / dev / sdb

И я получаю:

grub> root (hd1,0)
root (hd1,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
setup (hd1)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... no

Error 15t: File not found

Итак, я немного погуглил (к сожалению, Google только что хорошо поработал и собрал 100 примеров установки grub, которые здесь не помогают)

Найдя несколько подсказок, я попробовал:

# grub-install --recheck /dev/sdb

Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(fd0)   /dev/fd0
(hd0)   /dev/sda
(hd1)   /dev/sdb

# grub-install /dev/sdb
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(fd0)   /dev/fd0
(hd0)   /dev/sda
(hd1)   /dev/sdb

Какие из них предполагает, что grub теперь установлен и на / dev / sdb, однако, если я посмотрю еще раз, я все равно получу:

grub> find /grub/stage1
find /grub/stage1
 (hd0,0)

раздельные выходы для 2 приводов:

ПДД

Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      17.4kB  500MB   500MB   ext3         1     boot
 2      500MB   81.0GB  80.5GB               2     raid
 3      81.0GB  85.0GB  4000MB               3     raid
 4      85.0GB  3001GB  2916GB               4     raid

SDB

Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      17.4kB  500MB   500MB   ext3         1
 2      500MB   81.0GB  80.5GB               2     raid
 3      81.0GB  85.0GB  4000MB               3     raid
 4      85.0GB  3001GB  2916GB               4     raid

И mdadm mdstat:

Personalities : [raid1]
md1 : active raid1 sdb3[1] sda3[0]
      3905218 blocks super 1.1 [2/2] [UU]

md2 : active raid1 sdb4[1] sda4[0]
      2847257598 blocks super 1.1 [2/2] [UU]

md0 : active raid1 sda2[0] sdb2[1]
      78612189 blocks super 1.1 [2/2] [UU]

Может ли кто-нибудь пролить свет на ситуацию? Такое ощущение, что я на 99% в настоящий момент и упускаю что-то очевидное.

Спасибо.

редактировать обновление:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md0               74G   18G   53G  25% /
tmpfs                 580M     0  580M   0% /dev/shm
/dev/sda1             462M   98M  341M  23% /boot
xenstore              580M   64K  580M   1% /var/lib/xenstored

/ находится на md0, который состоит из sda2, а sdb2 swap - это md1, который является sda3, а sdb3 md2 - LVM, однако / boot только на / sda1

Я полагаю, что проблема в том, будет ли решение создать md4 и содержать sdа1 и SDб1

Возможно, у меня что-то немного перепуталось в моей голове, но я предположил, что grub был установлен не в разделе, а в первых нескольких блоках диска, то есть sda или hd0 / 1

Любые разъяснения и советы приветствуются.

Это должно быть твоей проблемой

root (hd1,0)
 Filesystem type is ext2fs, partition type 0x83

Сделайте следующие шаги:

  • Создайте 2 раздела / boot на / dev / sda1 и / dev / sdb1 - введите fd (Linux autodetect raid) - используйте свой любимый инструмент (fdisk, cfdisk, gparted, ...) (fd00 для GPT)
  • Не забудьте включить флаг загрузки на обоих разделах, sda1 и sdb1 (не для GPT)
  • Заставить диски сделать новый рейд:

    mdadm --zero-superblock /dev/sda1 
    mdadm --zero-superblock /dev/sdb1
    
  • При создании метаданных рейда, которые будут вашим разделом / boot, используйте версию 0.9. Linux не может автоматически определять новые версии (без виртуального диска).

    mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sda1 /dev/sdb1 --metadata=0.9
    
  • Форматирование с использованием ext2 или ext3

  • Установите выбранный вами Linux, БЕЗ формирования файла / boot

После первой загрузки дистрибутива:

  • Исправьте ваш / etc / fstab, чтобы он указывал / boot на / dev / md0 (возможно, в этом нет необходимости)
  • Установите grub на 2 диска MBR

    # grub /dev/sda
     grub> root (hd0,0)
     grub> setup (hd0)
     grub> quit
     quit
    
    # grub /dev/sdb
     grub> root (hd1,0)
     grub> setup (hd1)
     grub> quit
     quit
    
  • Отредактируйте загрузчик (инструкции для Grub1)

  • Найдите строку «по умолчанию» и добавьте вариант «откат» ниже

    vi /boot/grub/menu.lst
    default 0
    fallback 1
    
  • Добавьте еще одну запись в свой загрузчик (опять же, в моем случае я выбрал grub1, поскольку он менее сложен и достаточно хорош для моих нужд), каждая из которых указывает на разные загрузочные разделы, являющиеся участниками рейда:

    title           Debian GNU/Linux, kernel 2.6.32-5-686  (default)
    root            (hd0,0)
    kernel          /vmlinuz-2.6.32-5-686 root=/dev/mapper/vg-root ro quiet
    initrd          /initrd.img-2.6.32-5-686
    
    title           Debian GNU/Linux, kernel 2.6.32-5-686  (fallback)
    root            (hd1,0)
    kernel          /vmlinuz-2.6.32-5-686 root=/dev/mapper/vg-root ro quiet
    initrd          /initrd.img-2.6.32-5-686 
    
  • Обратите внимание, что в моем случае у меня есть уровень LVM в моем рейде / md.

Готово. Этого должно быть достаточно, чтобы у вас был «избыточный» загрузчик.

Хотите ли вы сопоставить эти два диска с другим массивом raid1, решать вам. Это законный выбор, потому что тогда вы сможете установить grub на md4 напрямую и избегайте хлопот, связанных с управлением обеими установками вручную. Я сделал это ™.

По моему опыту, файл карты устройства в значительной степени не имеет значения, а его поведение (как его читает grub) в лучшем случае непредсказуемо, если не полностью произвольно.

В device команда из оболочки grub намного надежнее. Вы можете прочитать справочную информацию по нему, но основной синтаксис говорит сам за себя:

grub> device (hd0) /dev/md4

После этого / dev / md4 будет сопоставлен с hd0 в текущем запущенном сеансе grub, игнорируя файл карты устройств. Отсюда можно было бы продолжить, как обычно, с root (hd0) и setup (hd0,x). Причину установки в раздел объясняет Генри С.

AFAIK, единственное, кроме «загрузочного кода» (stage1), который записывается в первые 512 байтов диска (MBR), - это номер раздела, в котором этот этап должен искать меню.

Это можно испортить. После POST можно было бы встретить приглашение вместо меню, но grub предоставляет команды для «инициализации» этого меню из другого раздела (файла), чем тот, который был указан при установке. Обычно это работает без вмешательства, потому что «первый загрузочный диск» в BIOS будет определен как «hd0».