LINUX.ORG.RU

LVM зеркало при потере одного раздела выпадает в initramfs

 , ,


0

2

Ubuntu Server 24.04.1 LTS При установке Ubuntu Server выбрал вариант с LVM разделом. sda1:MBR sda2:boot sda3:корень (LVM) Решил попробовать режим зеркала «lvconvert -m 1 ubuntu-vg/ubuntu-lv». Добавил второй раздел с другого диска и зеркало успешно создалось, ОС загружается в штатном режиме. Далее сэмулировал потерю диска- выключил ПК, отключил физически второй диск и запустил снова. Ожидал загрузки ОС и статуса отсутствия части зеркала. Получил, что при загрузке ОС вываливается в initramfs c криками mdadm, что массивы не найдены и /dev/mapper/ubuntu–vg-ubuntu-lv отсутствует. Если набрать в initramfs> exit, то все повторяется- снова вываливается в initramfs с алертом /dev/mapper/ubuntu–vg-ubuntu-lv отсутствует. Если в initramfs набрать lvm, в lvm>vgchange -ay, то раздел LVM ubuntu-vg/ubuntu-lv активируется и при выходе из initramfs происходит дальнейшая загрузка ОС в штатном режиме и да, в статусе LVM раздела появляется информация об отсутствии части раздела.

Т.е. что, при потере физического раздела (pv) автоматически не активируется группа разделов (vg)- подскажите, как сделать, что бы при загрузке ОС не вываливалась в initramfs, а продолжала загружаться без части зеркала, может настройка конфига какая в lvm нужна?

Ответ на: комментарий от no-dashi-v2

Мне сложно самому разобраться, поэтому спросил, может кто сталкивался… Да, возможно до активации и не доходит. В штатном режиме, когда все разделы на месте, lvm действительно активирует разделы заранее и корневой раздел находится, загрузка происходит. Не понимаю, что именно при отсутствии зеркальной части (второго диска) останавливает загрузку, можно ли это исправить.

Alexeus
() автор топика
Ответ на: комментарий от no-dashi-v2

В выводе много строк, что: «mdadm: no arrays found in config file or automatically» и еще «mdadm:error opening /dev/md?*: no such file or directory». Где-то видел, что в конфиге mdadm можно установить игнорить ошибки, можно попробовать, возможно дело в нем.

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

man lvmraid

   Activating an LV with missing devices
       A RAID LV that is missing devices may be activated or not, depending on the "ac‐
       tivation mode" used in lvchange:

       lvchange -ay --activationmode complete|degraded|partial LV

       complete
              The LV is only activated if all devices are present.

       degraded
              The  LV  is activated with missing devices if the RAID level can tolerate
              the number of missing devices without LV data loss.

       partial
              The LV is always activated, even if portions of the LV data  are  missing
              because  of  the  missing device(s).  This should only be used to perform
              extreme recovery or repair operations.

       Default activation mode when not specified by the command:
       lvm.conf(5) activation/activation_mode

       The default value is printed by:
       # lvmconfig --type default activation/activation_mode

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

Спасибо! Т.е. предположение верное было, что LVM не активировал все разделы при потере одного из них. Теперь нужно попробовать конфиг поправить.

Alexeus
() автор топика
Ответ на: комментарий от no-dashi-v2

та не, это убунтэйнеры вечно что-то забудут в скриптах, или граб добавить на второй диск, или пункт в него добавить для аварийной загрузки, а то и инитрамфс не пересоберут после всех танцев

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

mdadm я не трогал, вообще его удалял- ситуация не меняется, он роли не играет. Граб у меня на первом диске, я его не отключаю, отключаю только второй (без граба). Танцы никакие не производил, надеялся, что LVM штатно отработает загрузку без одного PV, не отработал. Изменил конфиг LVM на допустимую загрузку без PV (parted режим), после пересобрал инитрамфс, но снова неудача - выход в инитрамфс т.к. не находит /dev/mapper/ubuntu–vg-ubuntu–lv. Не знаю что с конфигом LVM, возможно не все условия совпадают для запуска без PV, но не хочет он активировать раздел и не работает в моем случае.

Нашел в инете скрипт для принудительной активации, который выполняет команду vgchange -ay, с ним штатно загружается без второго диска (где второй раздел PV).

Ubuntu's LVM autodetect didn't work at all for me either. To fix it, I made a script in
/etc/initramfs-tools/scripts/local-top/forcelvm
with the following contents:
#!/bin/sh
PREREQ=""
prereqs()
{
   echo "$PREREQ"
}
case $1 in
prereqs)
   prereqs
   exit 0
   ;;
esac
. /scripts/functions
# Begin real processing below this line
# This was necessary because ubuntu's LVM autodetect is completely broken. This
# is the only line they needed in their script. It makes no sense.
# How was this so hard for you to do, Ubuntu?!?!?
lvm vgchange -ay
Then did
# chmod +x `/etc/initramfs-tools/scripts/local-top/forcelvm`
for good measure and
# update-initramfs -u -k all
That fixed everything, while persisting after a system update.
Alexeus
() автор топика
Ответ на: комментарий от targitaj

нормальное зеркало, проверено. это ТС там наворотил чего-то, с чем сам разобраться не может.

lvm поверх linux raid

ну, можно на лыжах и в гамаке, да.

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

Граб у меня на первом диске

ну да, ну да - вот и весело будет когда сдохнет первый, а не второй ))))

честно, не хочу разбираться, я только высказал мнение. Мои записки сумасшедшего уже давно не актуальны. Много лет работает и протухло. А убунтоводы так и не написали нормальных скриптов и мануалов для райдов

Morin ★★★★★
()
Ответ на: комментарий от Alexeus

О! Как раз тут решил потренироваться, что будет, если отвалится одно из зеркал LVM RAID1 в Дебиане. Сделал виртуалку с рейдом (даже не с загрузочным никаким, /home) и пытался отключать один из дисков. Абсолютно та же хрень, вываливается в maintenance mode хоть убей, несмотря ни на какие activation_mode=degraded и md_mod.start_dirty_degraded=1. Причём вываливается уже на этапе fsck, потому что диск не активировался. И до этого момента в консоли никаких ошибок даже с параметром ядра verbose. Если руками выполнить vgchange -ay — дальше всё прекрасно грузится.

Просто интересно, на каком этапе этот затык? Такое чувство, что то ли udev, то ли dm где-то хранят ID’ы дисков массива, и если какой-то не найден, тупо вываливаются. До LVM дело даже не доходит. Как такие вещи люди отлаживают?

alegz ★★★★
()
Последнее исправление: alegz (всего исправлений: 1)
Ответ на: комментарий от alegz

В общем, понятно. Дело, как обычно, в системдшном высере под кличкой udev. Поставляемый в пакете lvm2 файл рулесов (в дебиане он /lib/udev/rules.d/69-lvm.rules, в убунте он, скорей всего, тоже есть, хотя имя может отличаться) запускает pvscan --checkcomplete, и, соответственно, если «incomplete» - хрен вам, а не активация. И пофиг, что там в lvm.conf написано. Я хз, зачем это вообще надо - в лвмовском конфиге и так сказано, при каких условиях активировать, а при каких - нет. Пишу багрепорт.

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

Как раз хотел поинтересовться, подскажите пожалуйста, как сделать, что бы в этой ситуации загрузка происходила со второго диска, ведь на нем зеркальный лвм раздел остался. Это сработает, если например, создать на втором диске еще раздел для /boot c флагами boot, efi, отключить первый диск с активным загрузчиком. На оставшемся подключенным диске загрузить раздел лвм корня через загрузочную флешку с граб2 и выполнить установку граб на этот диск? В БИОС выставить последовательность загрузки с обоих дисков, если один отвалится, загрузится второй… Или нужно иначе делать?

Alexeus
() автор топика
Ответ на: комментарий от alegz

У вас концептуально не верный подход.

Когда диск отказывает во время работы, надо сделать vgreduce --removemissing и при след. загрузке проблем не будет.

Ваш сценарий подразумевает участие админа во время загрузки, так что он может руками выполнить vgchange -ay

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

вроде вот и верно все, но есть нюансы. Диск когда отвалился, надо бы уведомление прислать. Да ситуации бывают разные, и если админ приходящий, а сервак ребутнулся, он должен взлететь, работать ведь надо

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

надо бы уведомление прислать

пришлет, если настроишь мониторинг

админ приходящий, а сервак ребутнулся

не гонялся бы ты, поп, за дешевизной.

он должен взлететь, работать ведь надо

Это lvm (он для гибкости, но и тебе прогнуться придется), кроме того на LVM могут быть не только зеркальные тома (как работать будешь?).

Чисто для зеркала исп. mdadm

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

первое принимается

и даже с третьим полностью согласен

по второму пункту, ну нет. Понимаешь бывают такие конторы где админу просто нет постоянной работы, особенно если админ хороший. На фултайме он там просто сопьется к хренам.

Morin ★★★★★
()
Ответ на: комментарий от futurama

Разворачивай мысль полностью, для меня тупого :) ну что уж делать.

Как-то я не понимаю, что еще надо упростить в серваке для даты юзверей, зеркало ну самое примитивное что мне в голову пришло. Облака могут не подходить по различным причинам, самая банальная чувствительность даты к сливам. И да бэкапы тут тоже никто не отменяет

Morin ★★★★★
()
Ответ на: комментарий от futurama

Этот сценарий подразумевает, что после выключения системы, при последующем включении один из дисков сдох. Ситуация вполне реальная, у меня как-то именно так было. А присутствие админа при включении/выключении как раз совершенно необязательно. И будет система висеть и ждать рутового пароля, и хорошо ещё, если у неё есть куда и чем его ввести. Это может быть безголовый сервак, это может быть плоскопанельная станция с тачскрином. (Если кто-то когда-нибудь пробовал найти PS-клавиатуру на боевом корабле, тот знает, о чём я.)

anonymous
()