LINUX.ORG.RU
ФорумAdmin

Реализация автоматической загрузки системы с резервного раздела при отвале раздела/диска

 ,


0

2

Добрый день! Подскажите пожалуйста. Есть блок на котором крутиться Astra linux 1.6. Блок не имеет подключения монитора, клавы, мыши. У блока есть 4 ssd, 3 из которых работают с системой, а 4-й резервный. Мне надо что бы при невозможности монтирования раздела(например дикс отвалился, или раздел посыпался), например sdb или sda2(корень) КТО-то в системе на этапе загрузки это мог понять и переключить или примонтировать резерв и уже грузится с него. Я копал в сторону initramfs, но не получается с её помощью монтировать резерв, при отвале одного из дисков, как я понимаю из-за того, что на этапе загрузки initramfs еще не доступны разделы. GRUB тоже такие проверки и определения не может сделать. Мне нужно настроить так блок, что бы он без оператора сам там разобрался может или не может грузиться, переходит на резервный раздел. Такой вариант еще можно: например грузить сперва в ОЗУ загрузочную ОС (финикс например), она пробует и проверяет доски, или контрольные суммы, а затем уже принимает решения грузить со стандартных настроек или менять grub, ставить загрузку с резерва и уходить в ребут. Такого не делал еще


Нафига такую хрень городить? Если у тебя есть основной диск и резервный, можно просто RAID1 собрать. Загрузчик, конечно, должен быть на обоих дисках, и они должны идти один за другим в очереди загрузки в BIOS.

Vsevolod-linuxoid ★★★★★
()

дикс отвалился

Применительно к efi bios.

Если может отвалиться загрузочный efi-раздел, то надо создать два efi-раздела (на загрузочном и резервном дисках) и расставить приоритеты загрузки в биосе.

раздел посыпался

grub search --file искать специальный файл, если нет, то файловая система с таким файлом не найдена («посыпалась»), грузим другой вариант.

anonymous
()

Это как раз тот случай, когда надо просто использовать RAID. Хотя если под «посыпался» подразумевается наличие критических ошибок в ФС, то тут надо обеспечить доступ администратора. Например, включить SSH в initramfs.

anonymous
()

в интирамфс доступны все носители что и в основной системе. для этого в интирамфс упиховывают весь набор (при modules=most) модулей ядра для железа носителей. при ошибке загрузки тебя и выкидывают в инитрамфс для принятия решений - поменять скрипты чтобы выкидывало в финикс.
у меня вот прямщас чтото подобное. комп поменял на другой, а опция стояла modules=dep (оптимизатор хреновъ) и необходимого модуля для драйвера сата в материнке просто нет в интирамфс - Gave up waiting for root file system device…

pfg ★★★★★
()

Как насчёт просто положить в initramfs dropbear для ssh, шелл и настройки сети?

Например, как для удалённой разблокировки luks. Первая попавшаяся инструкция, наверняка есть лучше: https://www.arminpech.de/2019/12/23/debian-unlock-luks-root-partition-remotely-by-ssh-using-dropbear/

anonymous
()

Блок не имеет подключения монитора, клавы, мыши.

Это всё можно вывести через последовательный порт (включая grub и kernel/initramfs) на другой ПК.

Я копал в сторону initramfs, но не получается с её помощью монтировать резерв, при отвале одного из дисков,

Если поврежден раздел на котором initramfs, то конечно ничего не выйдет (аналогично и для GRUB).

например грузить сперва в ОЗУ загрузочную ОС (финикс например),

откуда грузить, если раздел поврежден? по сети что-ли?

MirandaUser2
()
Ответ на: комментарий от MirandaUser2

Ни каких других ПК, ни по сети, ничего нет. Блок летает, плавает и работает и его нет возможности администрировать. Если ломается, то вынимают в новый ставят, но системы маломальского восстановления должна быть. Я понимаю, что если отвалиться винт полностью, то не спасёт ни initramfs, ничего. Но есть sdb, sdc. Я смог положить в /srv/finnix.iso и можно с него грузиться. Можно выставлять в /boot/grub/grubenv next_entry=4, можно через finnix монтировать эту директорию и прописывать этот параметр и при перезагрузке загружается finnix. Я не могу разобраться с initramfs, точнее с его скриптами и как они выполняются и выполняются ли они вообще. Я пишу скрипт

#!/bin/sh
   PREREQ=""

   prereqs() {
       echo "$PREREQ"
   }

   case $1 in
       prereqs) exit 0 ;;
   esac

   if [ $? -ne 0 ]; then
       echo "Ошибка при монтировании раздела. Перезагрузка..."
       
       grub-reboot 0  
       reboot
   fi

кладу его в директорию /etc/initramfs-tools/scripts/init-top/, скрипт исполняемый делаю. Так же клал в директорию /etc/initramfs-tools/hooks, уже не знаю куда и положит его, и скрипты разные делал, что бы просто система уходила в ребут, что бы проверить выполняется ли скрипт. Ну ничего. Делаю update-initramfs -ut. Как я могу сделать, что бы initramfs при отвале или при каком-то условии хотя бы перегружался?

McCake
() автор топика