Постоянные подключения: одна строка, способная не дать машине загрузиться

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

AtlasPVE ·

Эта статья отвечает на

  • proxmox fstab постоянное подключение
  • proxmox диск пропадает после перезагрузки
  • proxmox не загружается fstab
  • что такое nofail
  • proxmox постоянное подключение nfs

Вы подключаете диск или сетевое хранилище вручную, и оно работает. Перезагружаете машину, и всё пропало.

Решение очевидно: добавить строку в список того, что подключается при загрузке. И вот тут-то и начинается опасность.

Этот файл не похож на остальные

Большинство файлов настроек на сервере, когда они сломаны, мешают работать какой-то службе. Когда сломан этот файл, машина может не загрузиться.

Итог не «служба легла», а «система упала в оболочку восстановления». И в этот момент вы не подключитесь удалённо; нужны клавиатура с монитором или физическая консоль.

Перекос, которого никто не замечает

Сломанная сетевая настройка неприятна: вы теряете удалённый доступ. Но машина всё равно загружается.

Сломанная строка подключения может вовсе не дать машине загрузиться.

И тем не менее люди куда осторожнее правят сетевой файл. Порядок опасности обратен интуиции, и ошибается именно интуиция.

Три правила

Проверьте строение перед записью. Строке нужны минимум три поля: источник, цель и тип файловой системы. Строка с пропущенными полями портит жизнь любому средству, читающему этот файл.

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

Не позволяйте отсутствующему диску держать машину в заложниках. Для сетевых хранилищ и съёмных дисков используйте вариант, позволяющий загрузке продолжиться при неудачном подключении. То, что диск для копий не подключён, не повод серверу не загружаться.

Ловушка проверки: рухнувшая проверка, это не пройденная проверка

Самый общий урок этой статьи здесь, и он относится не только к этому файлу.

Есть стандартное средство для проверки этого файла. Измеренное на настоящей машине, оно показало вот что: средство падает, когда видит строку меньше чем с тремя столбцами. То есть оно взрывается ровно тогда, когда видит ту искажённую форму, которую должно поймать.

Падение средства проверки не означает, что проверка пройдена. Правильный ответ не «нет проблем», а «проверить не удалось».

Порядок, который не делает этого различия, одобряет самый опасный файл в его самый слабый момент.

Вторая ловушка: не всякая жалоба, это ошибка

То же средство проверки может сказать две разные вещи, и путать их значит создавать новую беду.

Ошибка формата означает, что файл нечитаем. Вот это по-настоящему опасно, и запись надо откатывать.

Смысловая жалоба, это другое: вроде «цель недоступна при загрузке» или «неизвестный тип файловой системы». Они не портят файл и могут быть законными. Добавить строку для ещё не подключённого устройства, обычное и правильное дело; вариант, позволяющий загрузке продолжиться, существует именно для этого.

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

Что делает Atlas

В Atlas любая запись в этот файл проходит через одну-единственную дверь. Каждая строка проверяется по строению до записи, запись неделима, а после записи файл перечитывается и проверяется; если ожидаемый результат не появился, прежнее состояние восстанавливается.

Обе ловушки выше обработаны намеренно. Внешнее средство проверки считается лишь второстепенным сигналом: если оно падает, итог не «чисто», а «проверить не удалось». А ошибки формата и смысловые жалобы обрабатываются по отдельности; только ошибка формата ведёт к откату, а смысловые жалобы не проглатываются, а сообщаются вызывающей стороне.

Необходимость этого различия тоже нашли измерением: в первой редакции обе вели к откату, и в таком виде отвергалась даже совершенно новая и полностью верная строка.

Честная историческая заметка: раньше продукт писал в этот файл из восьми разных мест, и ни в одном не проверялось, верно ли записанное; в двух весь файл перезаписывался неделимым образом. В том же продукте сетевой файл, который не может помешать машине загрузиться, записывался неделимо. То есть более опасный файл был менее защищённым. Это измерили и свели за одну дверь.

Источники

Собственная документация Proxmox. На английском, и последнее слово в этом вопросе за ней.

Похожие статьи

Как это выглядит внутри Atlas?

Перейти на страницу продукта