Главная
» LINUX
»
Откат SLES Btrfs Snapper после неудачного обновления: руководство по безопасному восстановлению
Откат SLES Btrfs Snapper после неудачного обновления: руководство по безопасному восстановлению
Неудачное обновление SLES не всегда означает необходимость переустановки сервера. В стандартной установке SUSE Linux Enterprise Server, использующей Btrfs в качестве корневой файловой системы и имеющей включенный Snapper, часто можно загрузить снимок до обновления, протестировать его без изменения текущей системы, а затем установить это заведомо исправное состояние в качестве нового доступного для записи корневого каталога.
Важное решение заключается не просто в том, «какой снимок самый новый?», а в том, «насколько сильно следует откатить систему?». Полный откат системы Snapper уместен, когда обновление изменило несколько пакетов, библиотек, служб или конфигурационных файлов, и машина перестала работать стабильно. Если проблема только в одном конфигурационном файле, восстановление этого файла обычно менее травматично. В этом руководстве описаны оба варианта, и оно соответствует модели восстановления SLES 15 SP7, описанной SUSE и доступной в октябре 2026 года.
Прежде чем что-либо менять, выберите способ восстановления.
Ситуация
Лучший вариант для начала
Главный компромисс
После обновления сервер не загружается в обычном режиме.
Загрузите снимок Btrfs в режиме только для чтения из GRUB, протестируйте его, а затем запустите.snapper rollback
Восстановление в целом успешно, но отменено только содержимое корневого каталога, зафиксированное в моментальном снимке.
Сервер запустился, но несколько пакетов или служб одновременно перестали работать.
Используйте тот же алгоритм отката: загрузка и проверка.
Требуется перезагрузка, но это позволяет избежать догадок о том, какие именно файлы вызвали проблему.
Один из известных файлов /etcбыл поврежден.
Проверьте файл с помощью snapper statusсимвола / diff, затем используйте undochangeдля этого файла.
Менее значимый, но не подходит для крупных посылочных транзакций.
Миграция пакета обновлений завершилась неудачей.
Используйте снимок, сделанный до миграции, а затем проверьте репозитории и регистрацию продукта.
Состояние хранилища имеет значение после восстановления.
Корневая файловая система не является Btrfs, Snapper был отключен или изменена поддерживаемая структура корневой файловой системы.
Используйте резервные копии, носители для восстановления, программу восстановления пакетов или другой план восстановления.
Стандартный алгоритм отката снимков SLES не применяется.
SUSE различает отмену изменений и откат системы . Отмена изменений сравнивает снимки и отменяет изменения выбранных файлов. Откат делает состояние снимка основой для нового корневого каталога с возможностью записи. SUSE специально рекомендует сначала загрузить целевой снимок при выполнении отката корневой файловой системы, поскольку это дает возможность проверить кандидата перед его фиксацией. См. Руководство по администрированию SLES 15 SP7 .
Шаг 1: Убедитесь, что этот сервер поддерживает стандартный путь отката Snapper.
Перед выбором снимка необходимо убедиться в трех вещах: корневая файловая система — Btrfs, Snapper имеет конфигурацию с именем root, и корневая файловая система Btrfs находится на одном устройстве. В документации SUSE указана поддержка отката загрузки для стандартной структуры корневого подтома, и говорится, что корневая файловая система Btrfs должна сообщать об одном устройстве.
findmnt /
sudo snapper list-configs
sudo /sbin/btrfs filesystem show /
Сначала проверьте корневую файловую систему и конфигурацию Snapper. Поддерживаемая по умолчанию структура SLES использует Btrfs для /, конфигурацию Snapper с именем root и корневую файловую систему для одного устройства.
Если findmnt /отображается файловая система, например XFS или Ext4, остановитесь: рабочий процесс загрузки с использованием снимков Btrfs недоступен для этого корневого каталога. Если запись snapper list-configsотсутствует root, возможно, автоматическое создание снимков корневого каталога не включено. Также остановитесь, если btrfs filesystem show /отображается более одного устройства; в документации SLES 15 SP7 такая структура не указана как поддерживаемая для отката загрузки корневого каталога.
Шаг 2: Найдите снимок состояния, сделанный непосредственно перед неудачным обновлением.
Составьте список снимков и обратите внимание на их дату, тип, взаимосвязь до создания снимка и описание:
sudo snapper list
В списке Snapper могут отображаться пары «до» и «после», созданные вокруг транзакции Zypper. Снимок «до» обычно является первым кандидатом на роль момента, когда само обновление привело к сбою.
В стандартной конфигурации SLES YaST и Zypper могут создавать пары снимков preи postмоментальных снимков. preСнимок представляет состояние файловой системы до транзакции; соответствующий ему postснимок представляет состояние после транзакции. Не выбирайте снимок только потому, что он старше момента сбоя. Сопоставьте метку времени и описание снимка с окном обновления.
Если неудачное изменение касалось миграции пакета обновлений, руководство по обновлению SUSE SLES 15 SP7 специально указывает администраторам найти снимок, созданный непосредственно перед миграцией, и отмечает, что соответствующий снимок помечен как важный.
Шаг 3: Изучите, какие изменения фактически произойдут при использовании снимка состояния кандидата.
Если текущая система по-прежнему загружается, сравните предварительный снимок с текущим состоянием перед перезагрузкой. Это может показать, затронуло ли обновление только один конфигурационный файл или изменило широкий набор системных файлов.
sudo snapper status SNAPSHOT_ID..0
sudo snapper diff SNAPSHOT_ID..0 /etc/some-file.conf
Используйте команды `Snapper status` и `diff`, чтобы понять масштаб обновления. При большом количестве изменений в пакетах и конфигурации целесообразно выполнить полный откат; при изменении одного изолированного файла может потребоваться выборочное восстановление.
Когда выборочное восстановление является более выгодным компромиссом
Если один известный файл поврежден, а остальная часть обновленной системы исправна, восстановление только этого файла позволяет избежать отмены несвязанных изменений в системе. Компания SUSE документирует следующий способ восстановления:
Не следует бездумно опускать имя файла. Без указания имен файлов undochangeможно отменить все изменения, внесенные между двумя состояниями. SUSE предупреждает, что использование восстановления файлов для имитации полного отката корневого каталога не является рекомендуемым методом. Пакетные транзакции могут изменять множество взаимозависимых файлов, поэтому полный проверенный откат обычно проще объяснить, когда сбой обновления носит системный характер.
Шаг 4: Загрузите тестовый снимок из GRUB.
Перезагрузите компьютер. В меню SLES GRUB 2 выберите опцию запуска загрузчика из снимка, доступного только для чтения, затем выберите снимок, соответствующий состоянию до обновления. Точная структура экрана может различаться в зависимости от прошивки и конфигурации загрузки, но в документации SLES 15 SP7 эта запись указана как « Запуск загрузчика из снимка, доступного только для чтения» .
Сначала загрузите снимок, сделанный до обновления, вместо того, чтобы сразу же выполнять откат. Это создаст этап проверки с низким риском перед изменением корневого подтома.
С помощью этого механизма SLES можно загрузить только снимки конфигурации Snapper по умолчанию root. Если меню снимков отсутствует, не создавайте загрузочную запись. Еще раз проверьте, включен ли Snapper, соответствует ли корневая структура поддерживаемой по умолчанию структуре и работает ли установленный загрузчик.
Шаг 5: Проверьте снимок, когда корневой каталог находится в режиме только для чтения.
После загрузки из снимка убедитесь, что вы действительно используете его в качестве источника данных и что корневая файловая система доступна только для чтения:
findmnt /
mount | grep ' on / '
При загрузке в режиме моментального снимка содержимое корневого каталога намеренно доступно только для чтения. Используйте это состояние, чтобы проверить, устраняет ли предыдущее состояние системы симптомы неудачного обновления, прежде чем выполнять откат.
Теперь проверьте то, что не удалось сделать после обновления: запуск служб, настройка сети, аутентификация, запуск приложений, поведение, зависящее от ядра, или другие соответствующие проверки. Избегайте обработки снимка, доступного только для чтения, как обычной загрузки в рабочей среде. Некоторые операции завершатся неудачей просто потому, что в часть корневой файловой системы, для которой был сделан снимок, невозможно записать данные.
Если снимок не подходит, перезагрузите систему и попробуйте другой вариант. Пока вы не выполните команду отката, этот снимок не станет новым корневым каталогом системы, доступным для записи.
Шаг 6: Подтвердите откат только после того, как снимок пройдет проверку.
Когда загруженный снимок будет работать должным образом, сделайте его постоянным:
sudo snapper rollback
Вы можете добавить описание, чтобы упростить последующую идентификацию полученного снимка:
sudo snapper rollback -d "Rollback after failed update"
Запускайте откат Snapper только после того, как загруженный снимок пройдет проверку достоверности. Добавление краткого описания может облегчить последующее распознавание точки восстановления.
Согласно документации по администрированию SLES, Snapper создает снимок состояния до отката и создает новый доступный для записи снимок, который становится корневым каталогом по умолчанию. Это важное свойство безопасности: откат не просто перезаписывает старый корневой каталог на месте.
Перезагрузите компьютер после завершения выполнения команды:
sudo reboot
При следующей загрузке выберите обычную запись SLES по умолчанию, а не загружайте снова старый снимок, доступный только для чтения.
Шаг 7: Убедитесь, что восстановленный корневой каталог доступен для записи и теперь является корневым каталогом по умолчанию.
После обычной загрузки проверьте корневой каталог и список снимков:
findmnt /
sudo snapper list
После перезагрузки стандартного раздела убедитесь, что корневой каталог доступен для записи, и просмотрите новые снимки, связанные с откатом. Теперь корневой каталог должен быть активным состоянием системы.
Повторите функциональные проверки, которые изначально не прошли. Если приложение по-прежнему не проходит проверку, подумайте, не находится ли часть этого приложения в каталоге, который не был включен в корневой снимок.
Шаг 8: Обновите репозитории и проверьте состояние пакетов.
При обычном обновлении пакетов перед попыткой следующего обновления обновите репозитории и проверьте зависимости пакетов. При откате пакета обновлений особенно важны проверки репозиториев и регистрации продуктов, поскольку несоответствие набора репозиториев может немедленно вернуть систему в несогласованное состояние.
В завершение проверьте конфигурацию репозитория и согласованность пакетов. После отката пакета обновлений также убедитесь, что регистрация продукта соответствует восстановленному состоянию SLES.
Для восстановления пакета обновлений следуйте инструкциям в официальном руководстве по обновлению SLES , где прямо указано, что после отката необходимо проверить конфигурацию репозитория и регистрацию продукта.
Что не восстанавливается при откате к корневому каталогу Snapper
Это наиболее важное ограничение, которое необходимо понимать перед использованием функции отката на производственном сервере. Стандартный корневой снимок SLES исключает несколько подтомов, чтобы предотвратить неожиданное откат временных данных, а также пользовательских или прикладных данных. Список, специфичный для продукта, может включать пути загрузчика /home, /opt, /usr/local, /srv, /tmp, /var, /run, и пути загрузчика, специфичные для архитектуры. См. документацию SUSE по основным концепциям Snapper для получения актуального списка и обоснования.
Такая конструкция защищает данные, но создает компромисс: системный код может вернуться в прошлое, в то время как данные в исключенном подразделе останутся в более новом состоянии. SUSE указывает на несколько возможных последствий, включая /optнесоответствие стороннего программного обеспечения, изменение разрешений и невозможность распознавания приложениями форматов данных, записанных после создания снимка.
Это особенно важно для баз данных и серверных приложений. Если обновление включало миграцию схемы или изменение данных приложения в каталогах /varили /srv, откат корневого каталога может не отменить эти изменения данных. Прежде чем полагать, что одного снимка системы достаточно, проверьте собственную процедуру отката или восстановления приложения.
Распространенные ошибки, которых следует избегать
Откат перед тестированием снимка. Загрузка сначала снимка только для чтения — более безопасный подход к работе с SLES, поскольку он позволяет проверить состояние целевого устройства.
Случайно выбрали снимок, сделанный после обновления. Проверьте тип, дату, описание и связь «до» и «после», а не полагайтесь только на номер снимка.
Используется undochangeдля транзакций со всем пакетом. Полезно для отдельных файлов; SUSE рекомендует метод загрузки и отката для полного восстановления root-прав.
Предполагается /varили /homeожидается движение назад вместе с корневым каталогом. Исключения подтомов по умолчанию являются преднамеренными.
Не учитывая требование наличия одного устройства. В документации SLES 15 SP7 описана поддержка отката загрузочного корневого каталога для корневой файловой системы Btrfs на одном устройстве.
Повторная попытка обновления. Сначала выясните причину сбоя обновления, проверьте репозитории и определите, была ли причина в дефекте пакета, несовместимом стороннем программном обеспечении, нехватке места на диске или проблеме с локальной конфигурацией.
Если система использует транзакционные обновления
SLES также можно установить с ролью транзакционного сервера. Это другая модель работы: обновления применяются к снимкам и активируются при перезагрузке. В таких системах SUSE предоставляет transactional-update rollbackвозможность установить снимок в качестве корневого каталога по умолчанию. Не следует смешивать сценарий восстановления транзакционного сервера с обычной установкой SLES с возможностью чтения и записи без предварительного определения роли системы. Официальное описание поведения приведено в документации по транзакционным обновлениям SLES 15 SP7 .
Контрольный список восстановления
Подтвердите /, что используется файловая система Btrfs, rootконфигурация Snapper существует, и корневая файловая система Btrfs находится на одном устройстве.
Найдите снимок состояния непосредственно перед неудачным обновлением.
Используйте snapper statusэто, snapper diffкогда вам необходимо понять масштаб изменений.
Предпочтительнее использовать выборочный режим undochangeтолько для файлов, находящихся в явной изоляции.
В случае сбоя обновления системы загрузите тестовый снимок из GRUB и проверьте его в режиме только для чтения.
Запускать snapper rollbackтолько после того, как кандидат покажет себя корректно.
Перезагрузите систему, используя стандартный режим по умолчанию, и убедитесь, что восстановленный корневой каталог доступен для записи.
После восстановления пакета обновлений обновите репозитории, проверьте состояние пакета и проверьте его регистрацию.
Перед тем как объявить восстановление завершенным, проверьте исключенные подразделы на наличие несоответствий форматам приложений или данных.
Главный компромисс заключается в соотношении точности и согласованности. Выборочное восстановление файлов вносит меньше изменений, но требует точного знания того, что именно сломалось. Проверенная откатная операция системы вносит больше изменений, но восстанавливает согласованное состояние корневого узла на основе снимка и лучше подходит для случаев неудачного обновления, затронувшего несколько компонентов. В SLES наиболее безопасный рабочий процесс — использовать загрузку с использованием снимка только для чтения в качестве точки принятия решения, а не делать откат необратимым до проверки подходящего варианта.