Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7 с установленным актуальным оперативным обновлением


Общая информация

В составе Astra Linux Special Edition РУСБ.10015-01 1.7 с установленным актуальным оперативным обновлением (далее - старая ОС) доступны инструменты astra-full-upgrade и astra-console-upgrade для автоматического обновления (далее — миграция) на следующее очередное обновление — 1.8 (далее — новая ОС).

Условия для выполнения миграции


  • Миграция предназначена для обновления клиентских компьютеров и не должна применяться для серверов, то есть для компьютеров, предоставляющих разделяемые ресурсы и сервисы для других компьютеров.
  • Миграция возможна только с очередного обновления Astra Linux Special Edition 1.7 с установленным актуальным оперативным обновлением и поддерживается только для аппаратной платформы x86-64.
  • Миграция невозможна если в старой ОС:
    • включен режим файловой системы «только чтение» (overlay );
    • включен режим ЗПС;
  • Миграция поддерживается как на компьютерах с загрузкой BIOS, так и на компьютерах с загрузкой EFI.
  • Должна быть установлена и загружена версия ядра, имеющая обновление в новой ОС.
  • Рекомендации по конфигурации дисковых разделов для подготовки к миграции описаны в статье Рекомендации по установке Astra Linux Special Edition x.7 на клиентские компьютеры.
    Для успешного выполнения миграции требуется наличие свободного непрерывного дискового пространства размером не менее 60 ГБ:
    • данное пространство не должно быть отформатировано с созданием какой-либо файловой системы;
    • при загрузке в режиме BIOS свободное пространство должно быть выделено на основном диске;
    • при загрузке в режиме BIOS в сочетании с таблицей дисковых разделов в формате GPT дополнительно на основном диске должен быть создан дисковый раздел без файловой системы с флагом bios_grub размером 1МБ;
    • при загрузке в режиме EFI в случае отсутствия свободного места на основном диске может использоваться подключенный дополнительный диск;
    • по умолчанию свободное дисковое пространство не должно входить в состав логического тома LVM (см. далее описание настройки параметров миграции);
    Рекомендуемые параметры дисковых разделов для успешной миграции:
    • таблица дисковых разделов в формате GPT (поддерживается также формат MBR);
    • дисковый раздел /boot объемом не менее 1ГБ (рекомендуется 2GB);
    • при использовании загрузки BIOS в сочетании с таблицей дисковых разделов GPT — дисковый раздел объемом 1МБ с флагом bios_grub;
    • группа томов LVM с файловой системой ext4, включающая:
      • дисковый раздел объемом не менее 60 ГБ с корневой файловой системой;
      • дисковый раздел с каталогом /home (домашние каталоги пользователей);
    • допускается использование иных дисковых разделов, например /tmp, /var/tmp и др.
    • необязательный дисковый раздел для области подкачки (swap) (если используется, см. Область подкачки (swap): особенности применения и обеспечения безопасности);

    • неразмеченное пространство, которое может располагаться как внутри группы томов LVM, так и за ее пределами.

Особенности выполнения миграции

При выполнении миграции с использованием неразмеченного пространства:

  • Миграция позволяет сохранить:
    • стандартные домашние каталоги пользователей старой ОС (каталог /home );
    • установленное прикладное ПО.
  • Миграция должна выполняться от имени суперпользователя ОС (при включенном МКЦ — от имени суперпользователя с высоким уровнем целостности).
  • Миграция может выполняться в графическом режиме (в режиме графической консоли) или в режиме командной строки:
    • графический режим (инструмент astra-full-upgrade) позволяет выполнить миграцию в интерактивном взаимодействии с инструментом или с поэтапным конролем;
    • режим командной строки (инструмент astra-console-upgrade) позволяет выполнять миграцию удаленно в сессии SSH идти в сценариях Puppet/Ansible/Foreman;
  • Если свободное дисковое пространство, зарезервированное для выполнения миграции, не входит в состав LVM, или LVM вообще не используется, то при миграции в пространстве будет создана новая группа томов LVM.
  • При выполнении миграции стандартными точками монтирования дисковых ресурсов считаются каталоги стандартной файловой системы Linux (/, /var, /boot, /boot/efi, /home, /cache, /tmp, /var/tmp и т.д.).
  • Каталоги /boot, /boot/efi и /home при миграции не дублируются, то есть в новой ОС будут примонтированы те же дисковые разделы с обновленным содержимым. Из этого следует, что если для размещения новой ОС используется второй накопитель, то отключить первый накопитель после завершения миграции невозможно без дополнительных действий. В случае, если каталог /home старой ОС не находится на отдельном дисковом разделе, будет примонтирован весь содержащий его дисковый раздел, а каталог /home старой ОС примонтирован в каталог /home новой ОС.
    При использовании монтируемых дисковых разделов для других стандартных каталогов при миграции будут созданы аналоги монтируемых разделов и воспроизведена структура монтирования, при этом в новую ОС будут монтироваться созданные аналоги.
    Если используются иные точки монтирования (нестандартные дисковые или сетевые ресурсы), то перед выполнением миграции:
    • остановить приложения, использующие нестандартные дисковые ресурсы;
    • отмонтировать нестандартные дисковые ресурсы;
    • удалить (закомментировать) записи в /etc/fstab, задающие монтирование этих ресурсов;
  • Если до миграции использовалось защитное преобразование дисковых разделов, то новые разделы будут заменены на не преобразованные.
  • Дисковые разделы старой ОС после миграции останутся на диске в неизменном виде и могут быть впоследствии использованы для отката выполненной миграции или для размещения информации при миграции на следующее очередное обновление. Если нет необходимости в сохранении дисковых разделов старой ОС, то их можно удалить стандартными средствами ОС (gparted, parted).
  • Выполнение действий на этапах миграции производится в следующей последовательности:

    1. Предопределенные в инструменте проверки и миграции.
    2. Действия, определяемые плагинами (см. Плагины).
    3. Действия, заданные в пользовательских сценариях (см. Пользовательские сценарии).
  • При активации обновления прекращается отслеживание состояния системы по пакетам. Т.е., если после активации обновления была произведена установка/удаление пакетов из системы, то эти изменения не будут учтены при проведении обновления.
  • При обновлении с 1.7.6 на 1.8, пакет fly-update-notifier-major (если ои установлен) будет заменен на fly-update-notifier.

Настройка параметров миграции

Параметры миграции находятся в конфигурационном файле /usr/lib/python3/dist-packages/astra_upgrade/configs/upgrade.conf.yaml . Описание параметров представлено в самом файле в виде комментариев.

Параметры, значения которых которые чаще всего требуют модификации:

  • Расположение репозиториев, из которых будет производиться установка пакетов новой ОС:
    target_repos: # Настройки источников пакетов
      sources: # Список репозиториев (как сетевых так и локальных), используемых для обновления
        - 'deb https://download.astralinux.ru/astra/stable/1.8_x86-64/main-repository/ 1.8_x86-64 main contrib non-free non-free-firmware'
        - 'deb https://download.astralinux.ru/astra/stable/1.8_x86-64/extended-repository/ 1.8_x86-64 main contrib non-free non-free-firmware'
      dirs: # Список директорий с пакетами, из которых будут созданы локальные репозитории, которые также будут использоваться для обновления.
        - '/opt/repo'
      sources_list: all # all | disable | third_party | astra

    • sources: — репозитории, из которых будет выполняться установка новой ОС. По умолчанию используется интернет-репозитории актуального оперативного обновления Astra Linux Special Edition 1.8. При работе в изолированны сетях (без доступа к Интернет) здесь могут быть указаны собственные репозитории, сетевые или локальные. При этом используется формат указания репозиториев, принятый для файлов /etc/apt/sources.list (подробнее см. Создание локальных и сетевых репозиториев
    • dirs: — дополнительно может быть указан локальный каталог с пакетами, который будет использоваться как дополнительный репозиторий.
      При модификации состава репозиториев и добавлении пакетов следует учитывать, что общий состав репозиториев и добавленных пакетов, должен быть замкнут по зависимостям. При отсутствии зависимостей для пакета это пакет не будет установлен в процессе миграции.
    • sources_list: — политика использования репозиториев, указанных в файле /etc/apt/sources.list и файлах в каталоге /etc/apt/sources.list.d Старой ОС. Возможные варианты:
      • all — использовать все указанные репозитории;
      • disable — не использовать;/.
      • third_party — использовать только сторонние репозитории;
      • astra — использовать только репозитории Astra Linux,
  • Политика использования неразмеченного пространства для размещения новой ОС:
    #  use_existing: /dev/mapper/astra--VG-root # Использовать существующий раздел под корневую ФС целевой системы. При использовании этой опции настройки разметки игнорируются
    По умолчанию для развертывания новой ОС используется неразмеченное пространство. С помощью параметра конфигурации use_existing может быть указан существующий логический том LVM.


Пример файла:

# Настройки обновления
target_repos: # Настройки источников пакетов
  sources: # Список репозиториев (как сетевых так и локальных), используемых для обновления
    - 'deb https://download.astralinux.ru/astra/stable/1.8_x86-64/main-repository/ 1.8_x86-64 main contrib non-free non-free-firmware'
    - 'deb https://download.astralinux.ru/astra/stable/1.8_x86-64/extended-repository/ 1.8_x86-64 main contrib non-free non-free-firmware'
  dirs: # Список директорий с пакетами, из которых будут созданы локальные репозитории, которые также будут использоваться для обновления.
    - '/opt/repo'
  sources_list: all # all | disable | third_party | astra
 
base_system_install: # Настройки установки базовой системы
  source: debootstrap # Тип источника установки. Возможные варианты: debootstrap | archive | images. Исходя из выбранного варианта установки, будут использоваться соответствующие настройки, при этом настройки для других типов
                      # источников будут проигнорированы.
  debootstrap: # Настройки для варианта установки с использованием debootstrap (source: debootstrap)
    repo: https://download.astralinux.ru/astra/stable/1.8_x86-64/main-repository/ # Репозиторий из которого должен быть проведен debootstrap.
    use_disk: false # Установить в true, если требуется установка с диска. При установке с диска, указывать репозиторий (параметр repo) не требуется.
    mountpoint: /run/live/medium # Точка для монтирования диска
  images: # Список образов для варианта установки с использованием заранее подготовленных образов системы (source: images).
    - <path to rootfs image>/rootfs.img
  archive: <path to rootfs archive>/rootfs.tar.gz # Путь к архиву для варианта установки путем распаковки заранее подготовленного архива (source: archive).
 
packages: # Настройки установки и верификации пакетов
#  critical: # Список пакетов, которые отсутствуют в исходной системе, но должны быть установлены в целевую систему при обновлении
#    - lvm2
#    - cryptsetup
#    - plymouth-astra-theme
 
#  whitelist: # Список сторонних пакетов, которые установлены в исходной системе и должны быть перенесены в целевую систему при обновлении (см. также allow_third_party)
#    - code
 
  target_kernel_version: 'auto' # Выбор ядра, которое должно быть установлено в целевую систему при обновлении. Используйте значение 'auto' - для автоматического выбора последней доступной версии ядра.
  allow_third_party: true # Установить в false, чтобы запретить перенос всех установленных в исходной системе сторонних пакетов (см. также whitelist)
  check_gpg: true # Установить в false, чтобы отключить проверку gpg-ключей репозиториев для пакетов из состава AstraLinux.
 
#  removed: # Список пакетов, которые установлены в исходной системе, но не должны быть перенесены в целевую систему при обновлении.
#    - name
 
#  predefined_versions: # Список пакетов, для которых в целевую систему должна быть установлена указанная версия в принудительном порядке
#     package_name: version
 
# Путь к директории - точке монтирования устройства/раздела, которое будет использовано при проведении обновления.
target_path: '/target'
 
# Путь к директории, в которой хранится отчет и прочие файлы, генерируемые в процессе обновления
report_path: '/var/cache/astra-upgrade'
 
download: # Настройки параметров загрузки пакетов
  path: '/var/cache/astra-upgrade/download' # Путь к директории, в которую будет производиться загрузка пакетов
  keep: true # Установить в false, чтобы удалять загруженные пакеты при аварийном откате и откате с использованием команды set ready-for-download.
  check_time: 60 # Временной интервал между проверками на наличие изменений в составе пакетов исходной системы. Используется только в случае, если нет возможности отслеживать кеш пакетов. Задается в секундах.
  max_delay: 240 # Максимальное значение отсрочки загрузки пакетов, задается в минутах.
  retry_count: 3 # Количество повторных попыток загрузки при ошибках загрузки. Установить значение равным -1 для снятия ограничения.
  retry_delay: 30 # Временной интервал между повторными попытками загрузки, задается в секундах.
 
# Срок (в днях), через который текущая система перейдет в режим принудительного обновления при перезагрузке. Отсчет начинается с момента завершения загрузки пакетов.
max_upgrade_delay: 7 # in days
 
# Установить в true, чтобы игнорировать данные предыдущего отчета (если он имеется) при проведении проверок системы
ignore_prev_report: false
 
# Настройки разметки
target_fs_size_policy: 'auto' # Политика использования свободного места на устройстве/разделе, которое будет использовано при проведении обновления.  Возможные варианты: 'auto', 'minimal', 'maximum'
target_fs_minimal_reserve: 1000 # Размер дополнительного дискового пространства, резервируемого под рост ОС. Задается в Мб
target_fs_snapshot_reserve: 5000 # Размер дополнительно дискового пространства, резервируемого под создание снепшотов
target_rootfs_size: 'auto' # Размер дискового пространства, выделяемого под корневую ФС. Может быть вычислен динамически ('auto'), также можно  указать вручную в Мб.
backup_path: '/backup_1.7' # Путь до директории, в которой будет храниться копия старой системы
dummydisk_path: '/' # Путь до фиктивного диска для loop устройств
 
# Управление шаблоном разметки
partitioning_template:
  not_rebuild: false # Выставить в true, если нужно использовать скорректированный шаблон разметки из предыдущего отчета.
#  use_existing: /dev/mapper/astra--VG-root # Использовать существующий раздел под корневую ФС целевой системы. При использовании этой опции настройки разметки игнорируются

# Управление настройками безопасности
security_settings:
  enable_overlay: false # Выставить в true, чтобы включить astra-overlay после обновления системы


Порядок выполнения миграции

Общая подготовка к миграции

  1. Установить актуальное оперативное обновление старой ОС.
  2. Рекомендуется:
    1. Установить последнюю доступную версию ядра ОС:
      sudo apt install linux-image-latest
    2. Перезагрузить ОС с использованием последней версии ядра.
    3. Удалить все неиспользуемые версии ядра. См. статью Astra Linux: установка и обновление ядер серии 5 и выше.
    Эти действия не обязательны, но снижают вероятность возникновения ошибок из-за недостатка свободного места.
  3. Установить пакеты:
    1. Для выполнения миграции с использованием графического режима — пакет astra-full-upgrade:
      sudo apt install astra-full-upgrade
    2. Для выполнения миграции без использования графического — пакет astra-console-upgrade:
      sudo apt install astra-console-upgrade
    3. Для извещения пользователей в графических сессиях о статусе миграции и наличии оперативных обновлений дополнительно установить пакет fly-update-notifier-major:
      sudo apt install fly-update-notifier-major
  4. По необходимости отредактировать конфигурационный файл /usr/lib/python3/dist-packages/astra_upgrade/configs/upgrade.conf.yaml:
    • указать корректные репозитории пакетов для установки новой ОС;
    • указать дисковый раздел для выполнения миграции в политике использования дисковых , или удалить один из логических разделов, освободив неразмеченное место.

Выполнение миграции для компьютеров, поддерживающих графический режим работы

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

sudo astra-full-upgrade force

Эта команда автоматически выполнит необходимые проверки, и в случае успешного завершения проверок, запустит дальнейшие действия по миграции.

Для пошагового выполнения миграции с проверкой промежуточных результатов:

  1. Выполнить команду проверки готовности к миграции:
    В результате проверки могут быть выданы предупреждения (warnings). Наличие предупреждений не является препятствием к миграции.

    sudo astra-full-upgrade check
  2. Проверить статус готовности к миграции:
    Статус может обновляться с некоторой задержкой. Если отображаемый статус не соответствует ожидаемому, то следует убедиться в отсутствии сообщений об ошибках в журнале, и, в случае отсутствия таких сообщений, повторно  проверить статус.

    sudo astra-full-upgrade status
  3. Если статус готовности к миграции error, то проанализировать вывод команды проверки готовности к миграции и её журнал в файле /var/cache/astra-upgrade/upgrade.report.yaml и устранить выявленные причины неготовности. В частности, отредактировать конфигурационный файл /usr/lib/python3/dist-packages/astra_upgrade/configs/upgrade.conf.yaml.
  4. Выполнять проверку готовности, проверку статуса и устранение выявленных проблем до появления статуса ready-for-download:
    sudo astra-full-upgrade status

    Upgrade status: ready-for-download
  5. Выполнить загрузку пакетов новой ОС. Приведенная ниже команда выполняет повторную прочерку готовности и запускает процесс загрузки пакетов новой ОС. Для предотвращение перегрузки сети при массовой миграции выполнение загрузки начинается со случайной задержкой по времени. Команда для загрузки пакетов:
    sudo astra-full-upgrade enable
    Команда также может быть выполнена с указанием максимального времени задержки (в минутах). Например, задержка 0 для немедленного начала загрузки:
    sudo ASTRA_UPGRADE_MAX_DELAY=0 astra-full-upgrade enable
  6. Проверить статус. В ожидании начала загрузки команда проверки статута будет сообщать статус wait-for-download. В процессе загрузки команда проверки статуса будет сообщать статус downloading:
    sudo astra-full-upgrade status

    Upgrade status: downloading
    Статус downloading обозначает, что загрузка выполняется и еще не завершена.

  7. Повторяя проверку статуса дождаться завершения загрузки (статус ready):
    sudo astra-full-upgrade status

    Upgrade status: ready
    Если загрузка завершилась с иным статусом следует проверить журнал /var/cache/astra-upgrade/upgrade.report.yaml, устранить причины ошибки и повторить проверку готовности к миграции и загрузку.

  8. После появления статуса ready выполнить команду активации миграции:
    sudo astra-full-upgrade set activated
  9. Убедиться, что команда активации выполнена успешно:
    sudo astra-full-upgrade status

    Upgrade status: activated
  10. Перезагрузить ОС. После перезагрузки будет выполнена миграция на новую ОС.


Выполнение миграции для машин без графики

Для выполнения миграции в текстовой консоли (текстовой командной строке) выполнить команду:

sudo astra-console-upgrade --force

Эта команда автоматически выполнит необходимые проверки, и в случае успешного завершения проверок, запустит дальнейшие действия по миграции.

Мониторинг статуса миграции и оперативных обновлений

Служба мониторинга статуса миграции и оперативных обновлений предоставляется пакетом fly-update-notifier-major. Служба обеспечивает вывод извещений о текущем статусе миграции (или о наличии обновлений) в графических сессиях пользователей.

При установке пакета fly-update-notifier-major устанавливается системная служба astra-update-service, обеспечивающая мониторинг обновлений. Для включения работы службы:

  1. Разрешить автоматический запуск службы при перезагрузке и запустить её:
    sudo astra-update-ctl enable
  2. Для того, чтобы начали выдаваться сообщения пользователю — перезапустить пользовательскую сессию.

Далее после запуска процесса миграции, например, командой:

sudo astra-full-upgrade enable

служба отследит завершение загрузки пакетов и выдаст соответствующее предупреждение пользователю:
 

И предоставит возможность выбора дальнейших действий:

  • выполнить миграцию при перезагрузке, в том числе перезагрузить систему немедленно:

  • при нажатии на кнопку "Обновить при перезагрузке" миграция будет активирована и выполнится при следующей перезагрузке. При этом, окно с информацией обновится в соответствии с новым состоянием:
  • при нажатии на кнопку "Отложить обновление" (доступно при активированном обновлении) будет выполнен откат на предыдущее состояние;
  • при активации чек-бокса "Перезагрузить сейчас" и последующем нажатии кнопки "Да" перезагрузка будет выполнена немедленно;
  • после проведения обновления, в обновленной системе будет выдано уведомление об успешно выполненном обновлении:
  • При возникновении ошибок в процессе обновления, будут выполнены откат произведенных изменений, загрузка в исходную систему и выдача уведомления о неуспешной попытке обновления:

Проверка успешности миграции

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

cat /etc/astra/build_version

В результате выполнения команды должен быть выведен номер установленной сборки Astra Linux. Для Astra Linux Special Edition 1.8 это должен быть номер вида 1.8.X.XX. Номер, начинающийся на 1.7 указывает, что миграция завершилась с ошибкой и загружена старая ОС. Для диагностики ошибки следует использовать журнал /var/log/astra-upgrade.log.

Общий синтаксис инструментов миграции

Общий синтаксис вызова графического инструмента миграции

Общий синтаксис вызова инструмента миграции:

astra-full-upgrade [параметр]

Описание параметров:

  • status — отобразить текущий статус обновления и выйти. Возможные статусы:
    • not_ready. Report not found — данные о подготовке к миграции не найдены (подготовка не начиналась);
    • 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;
  • set <статус> — принудительно установить один из следующих статусов:
    • ready-for-download — вернуться на этап готовности к загрузке пакетов;
    • activated — (доступно только если текущий статус — ready) перейти на этап запуска обновления после перезагрузки;
    • ready— вернуться с этапа activated на этап готовности к обновлению;
  • -h,–help — вывести справку и выйти

Особенности установки статусов:

  • в случае, если был выполнен запуск с аргументом enable, то после завершения подготовки:
    • устанавливается статус ready;
    • задается крайний срок начала миграции, определяемый с использованием параметра max_upgrade_delay конфигурационного файла;
  • когда наступает крайний срок начала миграция, процесс миграции активируется автоматически и автоматически переходит в статус forced.


Для дополнительного управления процессом обновления в старой ОС могут использоваться переменные окружения. Если не оговорено иное, то переменные окружения действуют, если они определены, вне зависимости от их значения:

  • ASTRA_UPGRADE_NO_DOWNLOAD — принудительное отключение предварительной загрузки пакетов.
  • ASTRA_UPGRADE_MAX_DELAY=<значение> — задание максимального значения отсрочки загрузки пакетов. Задается в минутах. Если требуется начинать загрузку без отсрочки, то установить значение 0. Переопределяет параметр download:max_delay конфигурационного файла.
  • ASTRA_UPGRADE_ALLOW_THIRD_PARTY — Разрешение переноса установленных сторонних пакетов. Переопределяет параметр packages:allow_third_party конфигурационного файла.
  • ASTRA_UPGRADE_IGNORE_PREV_REPORT — Отключение сравнения текущего отчета с предыдущим. Переопределяет параметр ignore_prev_report конфигурационного файла.
  • ASTRA_UPGRADE_DEBUG — Устарело. Включение режима отладки (отображение интерактивного графического интерфейса на этапе верификации). Актуальна только для astra-full-upgrade. Включено, если переменная установлена, вне зависимости от значения переменной. Данная переменная окружения будет переименована в одном из ближайших релизов. Поведение astra-full-upgrade, при использовании данной переменной окружения, также будет переработано.
  • ASTRA_UPGRADE_NOT_REBUILD_PART_TEMPLATE — Не пересоздавать шаблон разметки на стадии проверки, если в каталоге /var/cache/astra-upgrade/ имеется предыдущий отчёт с шаблоном разметки. Если отчёта с шаблоном разметки нет, шаблон разметки будет создан заново. Переопределяет параметр partitioning_template: not_rebuild конфигурационного файла.
  • ASTRA_UPGRADE_NO_CHECK_GPG — Отключить проверку подписи репозиториев. Переопределяет параметр packages: check_gpg конфигурационного файла.

Общий синтаксис вызова текстового инструмента миграции

Синтаксис вызова текстового инструмента миграции:

astra-console-upgrade [параметр]

Параметры:

  • -f, --force — выполнение миграции;
  • -h, --help — вывод подсказки;
  • -u, --self-upgrade — автоматическое обновление утилиты, при установленном актуальном обновлении не требуется.


Пользовательские сценарии

Используемые сценарии должны размещаться в каталоге старой ОС /usr/share/astra-upgrade/scripts. Порядок запуска сценариев определяется алфавитным порядком имен их файлов. Каждый сценарий должен иметь возможность запуска с параметром config для вывода основной информации о сценарии.

Пример вызова сценария:

example-verification config

Результатом запуска сценария с указанным параметром должен быть вывод в стандартный вывод (stdout) следующей основной информации о сценарии:

  1. Уникальный строковый идентификатор сценария.
  2. Список уникальных идентификаторов стадий обновления, на которых должен запускаться сценарий, перечисляемых через запятую:
    • verification — стадия подготовки;
    • installation — стадия установки;
    • migration — стадия миграции;
    • finalizing — стадия финализации;
    • abort — стадия отката.
  3. Порядок выполнения на стадии:
    • pre — перед выполнением стадии;
    • post— после выполнения стадии.
  4. Краткое описание.

Формат вывода информации о сценарии:

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:

sudo apt install astra-revert-upgrade

Синтаксис команды:

astra-revert-upgrade [параметр]

Параметры инструмента:

  • -h, --help — показать список параметров;
  • full — полный откат к старой ОС с уничтожением созданных разделов для новой ОС;
  • soft — «мягкий» откат к старой ОС с сохранением новой ОС, что позволяет вернуться к новой ОС в будущем;
  • back — возврат к новой ОС после «мягкого» отката.

При запуске инструмент производит следующие действия:

  1. Чтение данных о дисковых разделах из отчета об обновлении /var/log/upgrade.report.yaml.
  2. проверка текущей версии ОС.

Если любое из этих действий завершается с ошибкой, то работа инструмента останавливается, и выводится информация об ошибке, в противном случае выполняется указанная операция.

Полный откат миграции

Полный откат миграции возможен только из новой ОС. При полном откате производится возврат к старой ОС с удалением разделов новой ОС. Для выполнения полного отката выполнить команду:

sudo astra-revert-upgrade full

Полный откат выполняется в следующем порядке:

  1. Монтируется раздел со старой ОС.
  2. Конфигурационный файл загрузчика /etc/default/grub в новой ОС заменяется конфигурационным файлом загрузчика из старой ОС.
  3. Загрузочный раздел старой ОС восстанавливается из резервной копии /var/cache/bootback.tar.
  4. Резервная копия загрузочного раздела старой ОС удаляется.
  5. В новой ОС создаются юниты systemd для уничтожения разделов новой ОС и восстановления конфигурационных файлов графического окружения при загрузке ОС.
  6. Выполняется перезагрузка в старую ОС.
  7. При загрузке старой ОС запускаются созданные юниты systemd , которые после завершения своей работы удаляются.

«Мягкий» откат миграции

«Мягкий» откат миграции возможен только из новой ОС. При «мягком» откате производится возврат на старую ОС. Дисковые разделы новой ОС при этом не удаляются, что дает возможность в дальнейшем возможно вернуться к новой ОС (см. Возврат к новой ОС после "мягкого" отката). Для «мягкого» отката выполнить команду:

sudo astra-revert-upgrade soft

Мягкий откат выполняется в следующем порядке:

  1. Монтируется раздел со старой ОС.
  2. Создается резервная копия загрузочного раздела /boot новой ОС и сохраняется в архив /var/cache/bootback.new.tar в файловой системе старой ОС, также из новой ОС копируется в старую ОС отчет об обновлении /var/log/upgrade.report.yaml.
  3. Загрузочный раздел старой ОС восстанавливается из резервной копии /var/cache/bootback.tar.
  4. В старой ОС создается системный юнит службы systemd для восстановления конфигурационных файлов пользовательского графического окружения при загрузке ОС.
  5. Выполняется перезагрузка в старую ОС.
  6. При загрузке старой ОС запускается созданный юнит systemd , который после восстановления настроек графического окружения удаляется.

Возврат к новой ОС после «мягкого» отката

Возврат к новой ОС возможен только из старой ОС. Для возврата к новой ОС после «мягкого» отката выполнить команду:

sudo astra-revert-upgrade back

Возврат к новой ОС выполняется в следующем порядке:

  1. Раздел с новой ОС монтируется в каталог/target. Если этого каталога нет, то он создается.
  2. Загрузочный раздел новой ОС восстанавливается из резервной копии /var/cache/bootback.new.tar
  3. Создается юнит systemd для восстановления конфигурационных файлов пользовательского графического окружения при загрузке ОС
  4. Выполняется перезагрузка в новую ОС.
  5. При загрузке новой ОС запускается созданный юнит systemd , который после восстановления настроек графического окружения удаляется.

Выявление и устранение ошибок

Отчет о последнем выполнявшемся этапе миграции сохраняется в журнале /var/cache/astra-upgrade/upgrade.report.yaml .

Если после завершения миграции загружается старая ОС, то для диагностики следует использовать журналы в каталоге /var/log, в частности журнал /var/log/astra-upgrade.log.

  • Нет меток