Вопрос или проблема
В данный момент я устанавливаю SuSE Linux 15. Я хочу защитить эту систему от отказа диска, поэтому выбрал настройку программного RAID 1 на диск1 (sda) и диск2 (sdb). Во время установки я настроил разделы дисков в RAID 1 и затем создал следующие разделы:
/boot/efi md0 (sda2+sdb2)
/boot md1 (sda3+sdb3)
/swap md2 (sda4+sdb4)
/ md3 (sda5+sdb5)
Затем я протестировал эту систему, удалив диск sdb, и система могла загружаться без проблем.
Но когда я удалил диск sda (основной), система не смогла перейти за Grub.
После анализа я понял, что Grub настроен таким образом, что указывает на программный raid-раздел md1, но он должен иметь оба диска в наличии, то есть работающий программный raid, чтобы суметь загрузить систему с этого устройства md1.
Меня это не устраивает, если это действительно так. Основная идея использования программного raid для устройства /boot заключается в том, что в случае сбоя оборудования система должна использовать другой работающий диск и загружаться. Разве не для этого существует программный raid 1?
Я действительно запутался сейчас. Если вам нужны какие-либо дополнительные детали системы, пожалуйста, спросите. Но как же тогда обезопасить систему (boot) от аппаратного сбоя? Диски в конечном итоге выходят из строя. Поэтому должно быть какое-то решение. Просто я его еще не знаю.
С уважением.
Вот вывод команд, которые вы запросили,
localhost:~ # lsblk -f | grep -v loop | sed -E 's/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/'
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1
├─sda2 linux_raid_member 1.0 any:0 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
├─sda3 linux_raid_member 1.0 any:1 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
├─sda4 linux_raid_member 1.0 any:2 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
│ └─md2 swap 1 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX [SWAP]
└─sda5 linux_raid_member 1.0 any:3 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
sdb
├─sdb1
├─sdb2 linux_raid_member 1.0 any:0 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
│ └─md0 vfat FAT32 ADB7-4EE5 1021.9M 0% /boot/efi
├─sdb3 linux_raid_member 1.0 any:1 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
│ └─md1 ext4 1.0 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 853.8M 7% /boot
├─sdb4 linux_raid_member 1.0 any:2 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
│ └─md2 swap 1 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX [SWAP]
└─sdb5 linux_raid_member 1.0 any:3 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
└─md3 ext4 1.0 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 4.4G 54% /
sr0 iso9660 Joliet Extension SLE-15-SP6-Full-x86_6493.51.001 2024-06-13-19-56-33-00
localhost:~ # fdisk -l
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0E77630A-CBC9-4C1F-9321-D7886DAC09BC
Device Start End Sectors Size Type
/dev/sda1 2048 104447 102400 50M BIOS boot
/dev/sda2 104448 2201599 2097152 1G Linux RAID
/dev/sda3 2201600 4298751 2097152 1G Linux RAID
/dev/sda4 4298752 8493055 4194304 2G Linux RAID
/dev/sda5 8493056 31457246 22964191 11G Linux RAID
Disk /dev/sdb: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 07F46E03-A25D-4305-BCFD-E79ADEA113C1
Device Start End Sectors Size Type
/dev/sdb1 2048 104447 102400 50M BIOS boot
/dev/sdb2 104448 2201599 2097152 1G Linux RAID
/dev/sdb3 2201600 4298751 2097152 1G Linux RAID
/dev/sdb4 4298752 8493055 4194304 2G Linux RAID
/dev/sdb5 8493056 31457246 22964191 11G Linux RAID
Disk /dev/md1: 1023.94 MiB, 1073676288 bytes, 2097024 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 /dev/md3: 10.95 GiB, 11757551616 bytes, 22963968 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 /dev/md0: 1023.94 MiB, 1073676288 bytes, 2097024 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
Disklabel type: dos
Disk identifier: 0x00000000
Disk /dev/md2: 2 GiB, 2147418112 bytes, 4194176 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
Соответствующие разделы:
/dev/sda1 --> Раздел BIOS BOOT
/dev/sda2 --> Раздел BIOS BOOT
/dev/md0 (sda2+sdb2) : /boot/efi
/dev/md1 (sda3+sdb3): /boot
/dev/md2 (sda4+sdb4): /swap
/dev/md3 (sda5+sdb5): /
У меня недостаточно очков репутации, чтобы комментировать прямо сейчас, поэтому я должен часть из этого написать в ответе. То, что вы хотите сделать, возможно, и я делал что-то подобное с RAID10, хотя не с EFI. Как минимум, я могу предложить структуру дисков, которая может облегчить вашу задачу. Если вы можете
RAID 1 действительно должен защитить вас от потери диска без потери работоспособности машины. Однако, поскольку grub не “понимает” программный RAID, есть несколько ручных шагов. Чтобы загружаться с любого из дисков, необходимо, чтобы выполнялись следующие условия:
- материнская плата должна распознавать один или оба как загрузочное устройство (похоже, вы прошли этот этап)
- на каждый диск должен быть установлен grub (и вручную переустановлен после замены диска)
Если вы настроили RAID во время установки, то каждый диск должен быть отмечен как загрузочное устройство (обычно это не по умолчанию). Это оставляет место для grub на каждом диске. Скриншоты шага 1 в этом руководстве очень информативны.
Проверьте вашу систему, чтобы увидеть, идентичны ли разделы на обоих дисках. Если вы можете выложить вывод одной из следующих команд, чтобы увидеть, как ваши диски в настоящее время настроены (с учетом всех дополнительных редактирований, которые необходимы), это было бы полезно.
$ lsblk -f | grep -v loop | sed -E 's/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/'
$ fdisk -l
Если проблемный диск не был настроен как загрузочный во время установки, вы можете сделать это после установки. Надеюсь, это поможет.
P.S.: В плане компоновки, если требования не диктуют иное, вы можете извлечь выгоду от размещения полной ёмкости ваших дисков в одном md0 RAID1. Вы можете далее разбить md0, если захотите (например, /
и /home
). Если вы не хотите swap на выделенном оборудовании или на другом уровне RAID, файл подкачки (например, /swap.img
) легко настроить и его намного проще изменить в будущем, если ваши потребности изменятся.
.
Ответ или решение
Чтобы сделать так, чтобы GRUB загружался как с основного, так и с вторичного диска массива RAID1, необходимо выполнить несколько шагов и учесть специфику конфигурации программного RAID в Linux. Давайте рассмотрим это в деталях.
Теория
RAID 1 обеспечивают защиту данных посредством зеркалирования, что значит, что данные дублируются на оба диска. В случае отказа одного из дисков второй продолжает работу. Однако, программный RAID в Linux требует, чтобы загрузчик GRUB был правильно настроен на обоих дисках, чтобы система могла загружаться независимо от того, какой диск остался в рабочем состоянии.
Пример
В вашем случае вы установили openSUSE и сконфигурировали программный RAID 1, однако система не загружается при отсутствии основного диска (sda). Это происходит, потому что GRUB по умолчанию может быть настроен только на один из дисков, а не на оба.
Применение
Шаги для настройки GRUB на обоих дисках:
-
Убедитесь, что оба диска имеют разделы BIOS Boot:
- Вы уже создали разделы BIOS Boot на sda1 и sdb1. Это необходимо для установки загрузчика GRUB.
-
Установите GRUB на оба диска:
- Это ключевой шаг. Вам нужно установить GRUB как на sda, так и на sdb.
# Установка GRUB на диск sda
grub2-install /dev/sda
# Установка GRUB на диск sdb
grub2-install /dev/sdb
- Обновите конфигурацию GRUB:
- После установки убедитесь, что параметры GRUB правильно настроены на обеих дисках.
# Обновление конфигурации GRUB
grub2-mkconfig -o /boot/grub2/grub.cfg
-
Проверка и тестирование:
- Убедитесь, что после удаления любого из дисков система загружается корректно. Для этого возможно придется перезагрузить систему несколько раз, проверяя поведение при каждом сценарии отказа.
-
Проверьте UEFI/BIOS:
- Убедитесь, что UEFI/BIOS видит оба диска как доступные для загрузки и что они настроены на автоматический переход в рабочее состояние в случае сбоя одного из устройств.
Эти шаги должны обеспечить функционирование вашей системы в случае отказа одного из дисков и обеспечить возможность загрузки независимо от того, который из дисков остался в работе. Это настоящая сила RAID 1 — гарантия безотказной работы даже при выходе из строя одной из частей массива.