Главная
» Как сделать
»
Безопасный откат неудачного обновления SLES с помощью Snapper
Безопасный откат неудачного обновления SLES с помощью Snapper
В стандартной установке SUSE Linux Enterprise Server (SLES) с корневой файловой системой Btrfs и включенным Snapper наиболее безопасным способом восстановления является загрузка снимка, созданного до неудачного обновления, его тестирование в режиме только для чтения, а затем выполнение команды sudo snapper rollback. Это создаст новый доступный для записи корневой каталог из протестированного состояния; при этом не будет выполнена переустановка каждого диска, подтома или базы данных приложений.
В текущих рекомендациях по администрированию SLES 15 SP7 по-прежнему используется этот алгоритм загрузки и тестирования. Прежде чем следовать ему, убедитесь, что машина соответствует поддерживаемой SUSE схеме отката, и определите предварительный снимок для неудачной транзакции Zypper или YaST.
Восстановит ли откат Snapper весь сервер?
Нет. Откат загружаемой системы применяется к снимкам в конфигурации Snapper по умолчанию root. В документации SUSE поддерживается расположение корневого подтома по умолчанию, с файловой системой Btrfs на одном корневом устройстве и работающим установленным загрузчиком. Откат изменяет содержимое подтома /; другие подтома не включаются. В типичных схемах SLES пути, такие как /var, /srv, /opt, /usr/local, и часто /homeнаходятся за пределами снимка. Поэтому база данных или служба могут сохранять данные, записанные после создания снимка, даже если их системные пакеты возвращаются к исходному состоянию.
Перед выполнением отката создайте или проверьте отдельную резервную копию важных данных приложений. Также избегайте этой процедуры, если вы изменили структуру подтомов Btrfs по умолчанию или используете корневой каталог на нескольких устройствах: требования к загружаемому репозиторию SLES 15 SP7 не охватывают такие конфигурации. Перед продолжением ознакомьтесь с требованиями SUSE к восстановлению Snapper .
Какой снимок был сделан до неудачного обновления?
Используйте конфигурацию Snapper для корневой файловой системы и сравните пару «до» и «после» транзакции. В типичной системе SLES с включенными снимками корневой файловой системы Btrfs, Zypper и YaST создают снимки вокруг операций с пакетами. Снимок «до» представляет состояние корневой файловой системы до этой операции; снимок «после» представляет состояние после ее выполнения, включая частично завершившуюся неудачей транзакцию.
Убедитесь, что корневая конфигурация существует sudo snapper list-configs. Найдите конфигурацию с именем root.
Подтвердите тип корневой файловой системы с помощью команды findmnt -no FSTYPE /`.`. Для этой процедуры отката загрузочного процесса должно отобразиться значение ` btrfs.`. Затем запустите команду `.` sudo btrfs filesystem show /и подтвердите, что корневая файловая система отображает значение ` Total devices 1.`.
Перечислите пары транзакций с помощью sudo snapper -c root list -t pre-post. Сопоставьте дату и описание с неудачным обновлением. Запишите номер в столбце Pre #, а не соответствующую пару Post #.
Проанализируйте, что изменилось между двумя значениями. Замените PREи POSTна числа, отображаемые на вашем устройстве:
Эти команды отображают измененные пути и различия в файлах. Номера снимков, даты, описания пакетов и вывод различаются в зависимости от хоста; не копируйте пример номера со скриншота. Если соответствующая пара не отображается, проверьте, включен ли Snapper и не был ли снимок удален политикой очистки. Отсутствующий снимок не может быть воссоздан Snapper постфактум.
Иллюстративный вид терминала списка предварительных и последующих обновлений Snapper, с парой транзакций Zypper для идентификации снимка состояния до обновления.
Как проверить старый рут перед тем, как сделать его постоянным?
Перезагрузите систему и используйте запись снимка загрузчика. В SLES выберите Start Bootloader from a read-only snapshot, затем выберите снимок, датированный непосредственно перед неудачной транзакцией. Меню загрузки помечает записи датой и описанием, которое может включать zypp(zypper)или операцию YaST. Выберите снимок, сделанный до обновления; не выбирайте снимок, сделанный после обновления, только потому, что его описание проще распознать.
Войдите в систему и проверьте работу служб или приложений, которые не работали. В течение этого пробного периода корневые файлы снимка доступны только для чтения, поэтому одна только эта загрузка не меняет корневой каталог по умолчанию. Если это неправильный снимок или система по-прежнему не работает, перезагрузите систему и попробуйте другой снимок или воспользуйтесь системой восстановления. Не выполняйте принудительный откат только для того, чтобы зафиксировать выбранный пункт меню.
Иллюстративное меню загрузки с описанной опцией создания снимка только для чтения и датированными записями; выберите запись, соответствующую снимку до обновления.
Когда следует запускать откат Snapper?
Откат следует выполнять только после загрузки более старого снимка и прохождения проверок. Из этого снимка, доступного только для чтения, выполните:
sudo snapper rollback
Затем перезагрузите компьютер и выберите стандартный способ загрузки по умолчанию:
sudo reboot
Snapper сохраняет снимок состояния системы до отката и создает новый корневой каталог с возможностью чтения и записи на основе проверенного снимка. В описанном процессе загрузки со снимка номер старого снимка в эту команду не передается. В результате получается новый корневой каталог по умолчанию, а не преобразование самого снимка, доступного только для чтения, в доступный для записи. Снимки могут быть удалены позже с помощью правил очистки, поэтому скопируйте все необходимые файлы, прежде чем полагаться на старый снимок отката в качестве долговременного архива.
Иллюстративный вид терминала, демонстрирующий две команды, использованные после успешного прохождения тестирования снимка в режиме только для чтения: откат snapper, а затем перезагрузка.
Что следует проверить после перезагрузки?
Загрузите стандартную запись и проверьте фактическое восстановление, а не только завершение команды. Подтвердите ожидаемое состояние ядра и пакетов, просмотрите состояние и журналы неисправной службы и выполните небольшую проверку на уровне приложения. Затем проверьте новое состояние Snapper:
sudo snapper -c root list
Для обычного обновления пакетов обычно достаточно убедиться, что машина загружается из новой корневой директории. Если неудачная операция была связана с миграцией пакета обновлений , выполните также проверки SUSE после отката: обновите и проверьте репозитории, затем проверьте регистрацию:
sudo zypper ref -fs
sudo zypper lr
sudo SUSEConnect --status
Репозитории должны соответствовать пакету обновлений, к которому вы вернулись, а установленные продукты должны быть зарегистрированы. Если регистрация не восстанавливается, в качестве шага восстановления используйте процедуру отката пакета обновлений SUSE SLES 15 SP7sudo SUSEConnect --rollback . Эта команда регистрации предназначена специально для восстановления после миграции; не запускайте ее при обычном обновлении пакетов.
Наглядное отображение в терминале результатов проверок состояния Snapper, включенных репозиториев и регистрации продуктов SUSE после отката.
Если на этом хосте используется transactional-update(например, транзакционная система SLE Micro), следуйте процедуре, описанной в этом продукте, вместо применения классической последовательности команд SLES. В документации SUSE описаны способы sudo transactional-update rollback SNAPSHOT_NUMBERвыбора снимка из работающей системы и отдельный рабочий процесс загрузки снимка только для чтения, если текущий корневой каталог поврежден. См. инструкции SUSE по откату транзакционных обновлений .