Постоянные подключения: одна строка, способная не дать машине загрузиться
Подключение, сделанное вручную, исчезает после перезагрузки, а сделать его постоянным можно только через файл, который решает, загрузится ли машина. Сломанная строка там останавливает не службу, а машину.
AtlasPVE ·
Эта статья отвечает на
- proxmox fstab постоянное подключение
- proxmox диск пропадает после перезагрузки
- proxmox не загружается fstab
- что такое nofail
- proxmox постоянное подключение nfs
Вы подключаете диск или сетевое хранилище вручную, и оно работает. Перезагружаете машину, и всё пропало.
Решение очевидно: добавить строку в список того, что подключается при загрузке. И вот тут-то и начинается опасность.
Этот файл не похож на остальные
Большинство файлов настроек на сервере, когда они сломаны, мешают работать какой-то службе. Когда сломан этот файл, машина может не загрузиться.
Итог не «служба легла», а «система упала в оболочку восстановления». И в этот момент вы не подключитесь удалённо; нужны клавиатура с монитором или физическая консоль.
Перекос, которого никто не замечает
Сломанная сетевая настройка неприятна: вы теряете удалённый доступ. Но машина всё равно загружается.
Сломанная строка подключения может вовсе не дать машине загрузиться.
И тем не менее люди куда осторожнее правят сетевой файл. Порядок опасности обратен интуиции, и ошибается именно интуиция.
Три правила
Проверьте строение перед записью. Строке нужны минимум три поля: источник, цель и тип файловой системы. Строка с пропущенными полями портит жизнь любому средству, читающему этот файл.
Пишите неделимо. Наполовину сделанная запись в этом файле хуже, чем никакой: остаётся обрезанный файл, и машина пытается загрузиться с ним.
Не позволяйте отсутствующему диску держать машину в заложниках. Для сетевых хранилищ и съёмных дисков используйте вариант, позволяющий загрузке продолжиться при неудачном подключении. То, что диск для копий не подключён, не повод серверу не загружаться.
Ловушка проверки: рухнувшая проверка, это не пройденная проверка
Самый общий урок этой статьи здесь, и он относится не только к этому файлу.
Есть стандартное средство для проверки этого файла. Измеренное на настоящей машине, оно показало вот что: средство падает, когда видит строку меньше чем с тремя столбцами. То есть оно взрывается ровно тогда, когда видит ту искажённую форму, которую должно поймать.
Падение средства проверки не означает, что проверка пройдена. Правильный ответ не «нет проблем», а «проверить не удалось».
Порядок, который не делает этого различия, одобряет самый опасный файл в его самый слабый момент.
Вторая ловушка: не всякая жалоба, это ошибка
То же средство проверки может сказать две разные вещи, и путать их значит создавать новую беду.
Ошибка формата означает, что файл нечитаем. Вот это по-настоящему опасно, и запись надо откатывать.
Смысловая жалоба, это другое: вроде «цель недоступна при загрузке» или «неизвестный тип файловой системы». Они не портят файл и могут быть законными. Добавить строку для ещё не подключённого устройства, обычное и правильное дело; вариант, позволяющий загрузке продолжиться, существует именно для этого.
Проверка, кладущая обе в одну корзину, отвергает совершенно новую и вполне верную строку. Иначе говоря, чрезмерно строгие ворота делают работу невозможной и подталкивают людей выключить ворота.
Что делает Atlas
В Atlas любая запись в этот файл проходит через одну-единственную дверь. Каждая строка проверяется по строению до записи, запись неделима, а после записи файл перечитывается и проверяется; если ожидаемый результат не появился, прежнее состояние восстанавливается.
Обе ловушки выше обработаны намеренно. Внешнее средство проверки считается лишь второстепенным сигналом: если оно падает, итог не «чисто», а «проверить не удалось». А ошибки формата и смысловые жалобы обрабатываются по отдельности; только ошибка формата ведёт к откату, а смысловые жалобы не проглатываются, а сообщаются вызывающей стороне.
Необходимость этого различия тоже нашли измерением: в первой редакции обе вели к откату, и в таком виде отвергалась даже совершенно новая и полностью верная строка.
Честная историческая заметка: раньше продукт писал в этот файл из восьми разных мест, и ни в одном не проверялось, верно ли записанное; в двух весь файл перезаписывался неделимым образом. В том же продукте сетевой файл, который не может помешать машине загрузиться, записывался неделимо. То есть более опасный файл был менее защищённым. Это измерили и свели за одну дверь.
Источники
Собственная документация Proxmox. На английском, и последнее слово в этом вопросе за ней.