Рейтинг:0

Как я могу сделать конфигурации LVM устойчивыми к загрузке с подключенным USB-накопителем

флаг gi

Настройка: DELL PowerEdge R520, узел oVirt 4.4.1 x86_64

# пвс
  PV VG Fmt Attr PSize PFree   
  /dev/sda2 onn_ovirt01 lvm2 a-- 105.26g 20.77g
  /dev/sda3 VG_he_nfs lvm2 a-- <100.00g <10.00g
  /dev/sda4 VG_data_nfs lvm2 a-- <1.50t <206.00g

# лблк
...

sdb 8:16 0 1.4T 0 диск 
ââsdb1 8:17 0 1.4T 0 часть /exports/nfs/backups

Проблема: Когда система перезагружается, резервный диск 1.4T, подключенный с помощью sata-to-usb, становится sda, где lvm не находит нужных разделов для физических томов. Затем система загружается в режим восстановления, где я должен войти в систему через подключенный монитор / клавиатуру, размонтировать и извлечь диск sata-to-usb, прокомментировать его запись из fstab, отключить его и перезагрузить систему. Затем, после правильной загрузки с правильным устройством как sda, я должен отменить все, что я сделал в режиме восстановления с устройством sata-to-usb.

Все дело в том, что fstab уже определен для монтирования по UUID или /dev/mapper/.

Вопрос: можно ли изменить конфигурацию LVM, чтобы она получала правильный физический том для системы независимо от того, какое устройство становится sda? Возможно ли это без воссоздания и миграции (у меня есть системные данные на RAID 1 (зеркалирование) с горячим резервированием, поэтому в шасси больше нет места для сменного устройства дисков)? Я открыт для любого решения, которое не требует удаления данных или создания новой конфигурации RAID для замены. Если это невозможно, то я открыт для всего, на самом деле - или просто продолжу разбираться в режиме восстановления каждый раз, когда он неожиданно перезагружается.

Рейтинг:0
флаг gi

Я решил проблему. Все, что мне нужно было сделать, это добавить разделы sdb в фильтр в /etc/lvm/lvm.conf:

Был:

filter = ["a|^/dev/sda2$|", "a|^/dev/sda3$|", "a|^/dev/sda4$|", "r|.*|"]

Изменился на:

filter = ["a|^/dev/sda2$|", "a|^/dev/sda3$|", "a|^/dev/sda4$|", "a|^/dev/sdb2$|" , "a|^/dev/sdb3$|", "a|^/dev/sdb4$|", "r|.*|"]

Кто-нибудь еще пытается это сделать, убедитесь, что вы проверили свои изменения и восстановили кеш с помощью vgscan

моя первая попытка (забыл | после $):

[root@host lvm]# vgscan
  Недопустимый разделитель в конце регулярного выражения.
  Неверный шаблон фильтра "a|^/dev/sdb2$".
  Не удалось создать фильтр устройств регулярного выражения.

моя вторая попытка:

[root@host lvm]# vgscan
  Найдена группа томов «VG_data_nfs», использующая тип метаданных lvm2.
  Найдена группа томов "VG_he_nfs" с использованием типа метаданных lvm2.
  Найдена группа томов «onn_ovirt01» с использованием типа метаданных lvm2.

Диск sata-to-usb по-прежнему отображается как sda, но это не имеет значения — LVM переходит к разделам sdb, когда на sda ничего не найдено. Мне пришлось монтировать диск sata-to-usb вручную, но поскольку он /etc/fstab правильно, мне нужно было только выдать гора -а. Мне придется разобраться с этим вопросом позже, а пока взять эту победу.

Nikita Kipriyanov avatar
флаг za
Это плохое решение. Лучше добавить все устройства `/dev/sd*` для сканирования. Неправильная идея фильтровать по индексу устройства, как я объяснил в своем ответе. Что, если вы добавите еще один USB-накопитель или другой логический диск RAID? Лучше всего вернуть lvm.conf к настройкам дистрибутива по умолчанию; поверьте мне, **вам действительно не нужно прикасаться к этому**.
JayRugMan avatar
флаг gi
То есть вы хотите сказать, что если я вообще уберу фильтр, он сработает? Я попробую, когда у меня будет шанс. В любом случае, почему так непреклонно не использовать функциональность, предоставляемую lvm? Этот сервер мой, и я знаю, что в него будет подключено, а что нет. Я ни в малейшей степени не беспокоюсь о том, что это _ничего_ не испортит.
Nikita Kipriyanov avatar
флаг za
Я предлагаю оставить файл таким, каким он был установлен менеджером пакетов. За 20 с лишним лет работы с Linux у меня был только один предположительно допустимый случай, касающийся этого, в кластерной среде. Я ценю функциональность, предоставляемую LVM. Я также выступаю за грамотное использование параметров конфигурации по их прямому назначению. У тебя была какая-то цель? Вы действительно хотели ограничить сканирование томов LVM только sda, несмотря на то, что sd-устройства имеют тенденцию переименовываться? Так что это вызвало вашу "проблему". Также отслеживайте свои изменения и рассмотрите возможность их отмены в первую очередь, когда что-то пойдет не так.
Рейтинг:0
флаг za
  1. LVM не хранит пути к устройствам. UUID компонентов хранятся в суперблоках LVM, и эти UUID используются исключительно для идентификации компонентов (PV, VG, LV). LVM просто сканирует все доступные блочные устройства (какие разрешены для сканирования настраивается в файле /etc/lvm/lvm.conf), определяет физические тома и собирает из них группы томов. На этот раз он просто не смотрит, какой тип / путь к устройству имеет физический том. Он очень устойчив к переиндексации устройств и так далее. Таким образом, он найдет ваши данные, если вы переместите тома в /dev/cciss/cXdYpZ (старый блочный драйвер HP/Compaq SmartArray создает такие устройства) или в /dev/hdXY, или /dev/sdXY, или /dev/mapper/...(все, что построено на основе DM, размещает там узлы устройств — криптографические, многопутевые и т. д.), /dev/md/... (Linux MD RAID) и так далее. Ваша забота неверна, и ваша проблема в другом.

  2. Причиной вашей проблемы может быть медлительность USB. Имеет большие задержки; также внешние жесткие диски очень медленно запускаются (это сделано для ограничения их пикового энергопотребления во время раскрутки). USB — это не производительность, а надежность в руках неопытного пользователя. Таким образом, он медленно инициализируется. Вам необходимо настроить свои сценарии инициализации (вероятно, сценарий инициализации initramfs), чтобы разрешить большие задержки/тайм-ауты, чтобы USB-устройства имели достаточно времени для раскрутки и стабилизации.

  3. Другой типичной причиной является неправильная конфигурация загрузчика; например, он может ожидать найти свои данные в «первом разделе первого жесткого диска», и если «первый жесткий диск» окажется неправильным устройством, у него нет конфигурации и образа ядра для загрузки и бросает тебя в загрузчик спасательный снаряд. Командная строка ядра или что-то, что помещается в initramfs, может быть привязано к какому-то конкретному пути к устройству, и поэтому замена устройств приводит к тому, что он не может найти / и это бросает вас в initramfs спасательный снаряд. Обратите внимание, что это разные спасательные снаряды и понимание который из видите, это важно.

  4. RAID0 с запасным — это оксюморон. RAID0 не имеет избыточности, не имеет определенного ухудшенного состояния, ничего для восстановления массива в оптимальное состояние после сбоя устройства, так что запасной вариант ничем помочь не может. Любая проблема компонентного устройства обычно приводит к переводу всего массива непосредственно в неисправное состояние. Любой другой уровень RAID имеет избыточность, он сначала перейдет в деградированное состояние в случае сбоя компонента, поэтому он выиграет от запасных частей, а RAID0 - нет.

JayRugMan avatar
флаг gi
Я перепутал RAID 0 и 1. У меня диски зеркальные, поэтому RAID 1 (выше исправил). Во всяком случае, то, что вы говорите о RAID 0, имеет смысл. Спасибо, что побудили меня исправить эту деталь в моем вопросе. Что касается остального, все, что я знаю, это то, что когда я проверяю lsblk в режиме восстановления, USB-накопитель является sda, и LVM не находит системные данные на sdb, где внутреннее устройство RAID 1 отображается при загрузке с помощью USB-SATA подключен. Как медленный USB побеждает внутреннее устройство, превращаясь в sda, и какое это имеет значение, основываясь на всем остальном, что вы написали?
JayRugMan avatar
флаг gi
Я не могу попробовать это сейчас, но кажется, что если я добавлю разделы sdb в фильтр LVM, он может поймать системные данные при загрузке, даже если sda сопоставлен с моим резервным USB-накопителем. Сейчас в фильтре в конфигах lvm указан только sda. Когда я приеду домой, я попробую это.
Nikita Kipriyanov avatar
флаг za
Очень странно, что в фильтре только sda. Сканирование SCSI асинхронно, устройства переупорядочиваются, это нормально и ожидаемо; *бессмысленно* разрешать сканирование только некоторых устройств sdX и запрещать сканирование других. LVM не делает этого по умолчанию, поэтому это должна быть ваша пользовательская настройка.
JayRugMan avatar
флаг gi
Может быть, это сделал я, я не знаю (должно быть, я думаю). Я не помню, чтобы делал это. Во всяком случае, я добавил разделы sdb в фильтр, и это сработало - они сканируются, и LVM отлично находит системные данные (см. ответ, который я опубликовал).
Nikita Kipriyanov avatar
флаг za
Это была уже неправильная идея прикоснуться к нему в первую очередь. Просто верните его к исходным значениям по умолчанию для пакета.

Ответить или комментировать

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