Данная статья применима к:
Общая информация
В составе Astra Linux Special Edition РУСБ.10015-01 1.7 с установленным актуальным оперативным обновлением доступен инструмент astra-full-upgrade
для автоматической миграции (далее — миграция) на следующее очередное обновление — 1.8. Миграция на новую ОС позволяет сохранить стандартные домашние каталоги пользователей (каталог /home
), а также установленное прикладное ПО (см. 7.2).
Условия для выполнения миграции
- Миграция на очередное обновление ОС (новая ОС) возможна с очередного обновления 1.7 (старая ОС) с установленным актуальным оперативным обновлением.
- Если в текущем очередном обновлении ОС для файловой системы включен режим «только чтение» (
overlay
), то миграция невозможна. - Миграция на новую ОС позволяет сохранить стандартные домашние каталоги пользователей (каталог
/home
), а также установленное прикладное ПО (см. 7.2). - Для успешного выполнения миграции требуется наличие неразмеченного свободного непрерывного дискового пространства, рекомендуемый размер которого не менее 60 ГБ:
- при загрузке в режиме BIOS свободное пространство должно быть выделено на основном диске;
- при загрузке в режиме EFI в случае отсутствия свободного места на основном диске может использоваться подключенный дополнительный диск.
- таблица дисковых разделов в формате GPT;
- дисковый раздел
/boot
объемом не менее 1 ГБ; - группа томов LVM с файловой системой
ext4
, включающая:- дисковый раздел объемом не менее 60 ГБ с корневой файловой системой;
- дисковый раздел с каталогом
/home
(домашние каталоги пользователей); - прочие разделы, при необходимости, например
/tmp
,/var/tmp
и др.
необязательный дисковый раздел для области подкачки (
swap
) (если используется);- не размеченное пространство, которое может располагаться как внутри группы томов LVM, так и за ее пределами.
Порядок выполнения миграции
Если свободное пространство не входит в состав LVM, или LVM вообще не используется, то при миграции в свободном пространстве будет создана новая группа томов LVM.
При миграции на очередное обновление все имеющиеся дисковые разделы старой ОС, кроме /home
, /boot
и swap
, будут созданы заново в не размеченном свободном пространстве.
Если до миграции использовалось защитное преобразование дисковых разделов, то новые разделы будут заменены на не преобразованные.
Разделы со старой ОС после миграции останутся на диске в неизменном виде и могут быть впоследствии использованы для отката выполненной миграции или для размещения информации при миграции на следующее очередное обновление.
Настройка инструмента
Настройка инструмента осуществляется редактированием конфигурационного файла /usr/lib/python3/dist-packages/astra_upgrade/configs/upgrade.conf.yaml
.
Синтаксис вызова инструмента миграции
Синтаксис вызова инструмента миграции:
astra-full-upgrade [параметр]
Описание параметров инструмента:
- status — отобразить текущий статус обновления и выйти. Возможные статусы:
- error — при проверке возникли ошибки;
- ready-for-download — проверки пройдены, система готова к загрузке пакетов;
- wait-for-download — загрузка пакетов начнется по истечении случайно выбранной задержки от 0 до указанной в поле max_delay конфигурационного файла;
- downloading — производится загрузка пакетов;
- ready — готовность к обновлению (пакеты загружены);
- activated — обновление произойдет при перезагрузке (киоск активирован);
- forced — принудительное обновление при перезагрузке (без возможности отката);
- c,check — Проверить систему на соответствие требованиям для выполнения обновления с формированием отчета;
- e,enable — Проверить систему на соответствие требованиям и начать подготовку к обновлению;
- d,disable,full-revert — Остановить процесс обновления и отменить изменения;
- f,force — Принудительно запустить обновление при отсутствии ошибок в отчете;
- edit — Открыть конфигурационный файл для редактированияset;
- <статус> Принудительно установить один из следующих статусов:
- ready-for-download — вернуться на этап готовности к загрузке пакетов;
- activated— перейти на этап запуска обновления после перезагрузки;
- ready— вернуться с этапа activated на этап готовности к обновлению;
- -h,–help Вывести справку и выйти
Для дополнительного управления процессом обновления в старой ОС могут быть добавлены переменные окружения.
Выполнение действий на этапах миграции производится в следующей последовательности:
- Предопределенные в инструменте проверки и миграции;
- Действия, определяемые плагинами (см. 7.5).
- Действия, заданные в пользовательских сценариях.
Пользовательские сценарии
Используемые сценарии должны размещаться в каталоге старой ОС /usr/share/astra-upgrade/scripts
. Порядок запуска сценариев определяется алфавитным порядком имен их файлов. Каждый сценарий должен иметь возможность запуска с параметром config для вывода основной информации о сценарии.
Пример сценария:
example-verification config
Результатом запуска сценария с указанным параметром должен быть вывод в стандартный вывод (stdout
) следующей основной информации о сценарии:
- Уникальный строковый идентификатор сценария.
- Список уникальных идентификаторов стадий обновления, на которых должен запускаться сценарий, перечисляемых через запятую:
- verification — стадия подготовки;
- installation — стадия установки;
- migration — стадия миграции;
- finalizing — стадия финализации;
- abort — стадия отката.
- Порядок выполнения на стадии:
- pre — перед выполнением стадии;
- post— после выполнения стадии.
- Краткое описание.
Формат вывода информации о сценарии:
id: <уникальный_ID_сценария>
stage: <уникальный_ID_стадии_обновления>,...substage: pre
description: Example verification
Если в выводе отсутствует любой из вышеперечисленных параметров или какой-то из них некорректен, сценарий не будет запущен.
При запуске без параметров сценарий должен выполнять свой основной код. В процессе выполнения сценария в stdout может выводиться следующая информация:
- произвольные сообщения, попадающие в отчет;
- путь к конфигурационному файлу сценария;
- предупреждения;
- сообщения об ошибках.
Выводимая сценарием информация будет записана в отчет /var/cache/astra-upgrade/upgrade.report.yaml
в файловой системе новой ОС, откуда эти данные могут быть получены другими сценариями в процессе обновления. Также сценарий может иметь код возврата. Если код возврата ненулевой, то считается, что выполнение сценария завершилось с ошибкой. Результаты выполнения сценария должны выводиться в следующем формате:
message: <произвольное сообщение> config: <путь к файлу>.yaml warning: <предупреждение> error: <ошибка>
Если вывод сценария пуст или не соответствует данному формату ни в одной выведенной строке, но код возврата при этом равен нулю, действие считается полностью успешно выполненным.
Плагины
Помимо пользовательских сценариев при миграции также могут использоваться плагины, написанные на языке Python. Плагины выполняются после заранее заданных проверок и миграции, но до выполнения пользовательских сценариев. Функциональность плагинов аналогична сценариям, но предоставляет больше возможностей для взаимодействия с инструментами обновления. Для того, чтобы плагин был загружен, файл с ним необходимо поместить в каталог /usr/share/astra-upgrade/plugins
старой ОС.
Откат выполненной миграции
Для отката выполненной миграции на очередное обновление используется инструмент командной строки astra-revert-upgrade
. Синтаксис команды:
astra-revert-upgrade [параметр]
Параметры инструмента:
- full — полный откат к старой ОС с уничтожением созданных разделов для новой ОС;
- soft — «мягкий» откат к старой ОС с сохранением новой ОС, что позволяет вернуться к новой ОС в будущем;
- back — возврат к новой ОС после «мягкого» отката.
При запуске инструмент производит следующие действия:
- Чтение данных о дисковых разделах из отчета об обновлении
/var/log/upgrade.report.yaml.
- проверка текущей версии ОС.
Если любое из этих действий завершается с ошибкой, то работа инструмента останавливается, и выводится информация об ошибке, в противном случае выполняется указанная операция.
Полный откат миграции
Полный откат миграции возможен только из новой ОС. При полном откате производится возврат к старой ОС с удалением разделов новой ОС. Для выполнения полного отката выполнить команду:
astra-revert-upgrade full
Полный откат выполняется в следующем порядке:
- Монтируется раздел со старой ОС.
- Конфигурационный файл загрузчика
/etc/default/grub
в новой ОС заменяется конфигурационным файлом загрузчика из старой ОС. - Загрузочный раздел старой ОС восстанавливается из резервной копии
/var/cache/bootback.tar.
- Резервная копия загрузочного раздела старой ОС удаляется.
- В новой ОС создаются юниты
systemd
для уничтожения разделов новой ОС и восстановления конфигурационных файлов графического окружения при загрузке ОС. - Выполняется перезагрузка в старую ОС.
- При загрузке старой ОС запускаются созданные юниты
systemd
, которые после завершения своей работы удаляются.
«Мягкий» откат миграции
«Мягкий» откат миграции возможен только из новой ОС. При «мягком» откате производится возврат на старую ОС, разделы новой ОС при этом не удаляются, что дает возможность в дальнейшем возможно вернуться к новой ОС (см. 7.6.3). Для «мягкого» отката выполнить команду:
astra-revert-upgrade soft
Мягкий откат выполняется в следующем порядке:
- Монтируется раздел со старой ОС.
- Создается резервная копия загрузочного раздела
/boot
новой ОС и сохраняется в архив/var/cache/bootback.new.tar
в файловой системе старой ОС, также из новой ОС копируется в старую ОС отчет об обновлении/var/log/upgrade.report.yaml.
- Загрузочный раздел старой ОС восстанавливается из резервной копии
/var/cache/bootback.tar.
- В старой ОС создается юнит
systemd
для восстановления конфигурационных файлов пользовательского графического окружения при загрузке ОС. - Выполняется перезагрузка в старую ОС.
- При загрузке старой ОС запускается созданный юнит
systemd
, который после восстановления настроек графического окружения удаляется.
Возврат к новой ОС после «мягкого» отката
Возврат к новой ОС возможен только из старой ОС. Для возврата к новой ОС после «мягкого» отката выполнить команду:
astra-revert-upgrade back
Возврат к новой ОС выполняется в следующем порядке:
- Раздел с новой ОС монтируется в каталог/target. Если этого каталога нет, то он создается.
- Загрузочный раздел новой ОС восстанавливается из резервной копии
/var/cache/bootback.new.tar
- Создается юнит
systemd
для восстановления конфигурационных файлов пользовательского графического окружения при загрузке ОС - Выполняется перезагрузка в новую ОС.
- При загрузке новой ОС запускается созданный юнит
systemd
, который после восстановления настроек графического окружения удаляется