В openSUSE Leap появится поддержка атомарного обновления системы

Разработчики проекта openSUSE представили транзакционные обновления (Transactional Updates), новую значительную возможность дистрибутива, которая будет предложена в выпуске openSUSE Leap 15, намеченном на 25 мая. Транзакционные обновления позволяют обновить операционную систему и связанные с ней пакеты в атомарном режиме, без раздельного применения новой версии каждого пакета.

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

Ключевым отличием реализованного в openSUSE Leap метода атомарных обновлений от решений на базе ostree и snap, применяемых в Fedora и Ubuntu, является реализация через штатную функциональность системы хранения — вместо построения отдельных атомарных образов и развёртывания дополнительно инфраструктуры доставки, в openSUSE Leap применяется механизм снапшотов в ФС.

Подобный подход прекрасно сочетается с имеющейся пакетной системой, обеспечивает все свойственные для атомарного обновления преимущества и позволяет обойтись без лишних усложнений, таких как переключение между несколькими меняющимися коревыми разделами и жесткое разделение областей ФС только для чтения. Из недостатков метода можно отметить необходимость выполнения перезагрузки и невозможность одновременной работы с разными версиями одного и того же приложения.

Реализация транзакционных обновлений базируется на возможностях файловой системы Btrfs, штатных репозиториях пакетов и привычных инструментах snapper и zypper, во многом напоминая уже доступную систему снапшотов и отката операций установки пакетов в openSUSE. Отличие заключается в том, что ранее доступные системы сохраняли состояние в снапшоте и выполняли обновление активной системы, а новый метод создаёт снапшот и выполняет обновление в нём, не касаясь работающей системы до подтверждения транзакции. Если обновление произведено успешно, обновлённый снапшот помечается активным и используется по умолчанию после перезагрузки (обновления вступают в силу только после перезагрузки, на случай проблем в загрузочном меню остаётся и прошлый снапшот).

Обновление инициируется при помощи новой утилиты transactional-update. В инсталляторе появилась новая роль Transactional Server, позволяющая развернуть сервер c включенной по умолчанию системой транзакционных обновлений (обновления проверяются ежедневно, в случае их установки с 3:30 до 5 ночи автоматически производится перезагрузка). На существующих системах аналогичный режим можно включить активировав сервисы transactional-update.timer и rebootmgr.service. Параметры работы сервиса можно настроить через файл конфигурации /etc/rebootmgr.conf.

0_1526374189.png

©  OpenNet