Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / Verwalten von SLE Micro mit dem Kommando transactional-update

Verwalten von SLE Micro mit dem Kommando transactional-update

Veröffentlicht: 12.12.2024
WAS?

Mit dem Kommando transactional-update können Sie ein schreibgeschütztes Dateisystem ändern. Die Änderungen werden in einem separaten Snapshot durchgeführt und wirken sich erst dann auf das laufende System aus, wenn Sie in den Snapshot booten.

WARUM?

Sie möchten SLE Micro und seine Aktualisierungen verwalten, um das Risiko von Systemausfällen aufgrund von Fehlern bei der Aktualisierung zu minimieren und gleichzeitig einfache Rollbacks zu gewährleisten.

AUFWAND

Es dauert weniger als 30 Minuten, das Kommando transactional-update zu verstehen.

ZIEL

Sie verstehen, wie transactional-update funktioniert und wie Sie es zur Verwaltung Ihres Systems verwenden können.

ANFORDERUNGEN
  • Eine ausgeführte Instanz von SLE Micro

  • root-Berechtigungen

1 Transaktionsaktualisierungen

1.1 Was sind Transaktionsaktualisierungen?

Um das Basisbetriebssystem stabil und konsistent zu halten, verwendet SLE Micro ein schreibgeschütztes Root-Dateisystem. Daher können Sie keine direkten Änderungen am Root-Dateisystem vornehmen, beispielsweise mit dem Kommando zypper. SLE Micro ermöglicht stattdessen Transaktionsaktualisierungen, mit denen Sie eine oder mehrere Änderungen auf das Root-Dateisystem anwenden können.

Das standardmäßige Verhalten von transactional-update besteht darin, nach jeder Änderung einen neuen Snapshot vom aktuellen Root-Dateisystem zu erstellen. Zum Anwenden der Änderungen müssen Sie den Host neu starten. Sie können das Kommando transactional-update nicht mehrmals ausführen, ohne neu zu starten, um dem Snapshot weitere Änderungen hinzuzufügen. Diese Aktion erstellt separate unabhängige Snapshots, die keine Änderungen gegenüber den vorherigen Snapshots enthalten.

1.2 Wie funktionieren Transaktionsaktualisierungen?

Jedes Mal, wenn Sie das Kommando transactional-update zum Ändern des Systems aufrufen (ein Paket installieren, eine Aktualisierung ausführen oder einen Patch anwenden), laufen die folgenden Aktionen ab:

Vorgehen 1: Ändern des Root-Dateisystems
  1. Es wird ein neuer Snapshot mit Lese-/Schreibzugriff für das aktuelle Root-Dateisystem oder für einen von Ihnen angegebenen Snapshot erstellt.

  2. Alle Änderungen werden angewendet (Aktualisierungen, Patches oder Paketinstallation).

  3. Der Snapshot wird wieder in den Nur-Lesen-Modus versetzt.

  4. Wenn die Änderungen erfolgreich angewendet wurden, wird der neue Snapshot des Root-Dateisystems als Standard festgelegt.

  5. Nach dem Neustart bootet das System in den neuen Snapshot.

1.3 Vorteile von Transaktionsaktualisierungen

  • Sie sind atomar – die Aktualisierung wird nur dann angewendet, wenn sie erfolgreich abgeschlossen wird.

  • Änderungen werden in einem separaten Snapshot übernommen und haben somit keinen Einfluss auf das laufende System.

  • Änderungen lassen sich mühelos per Rollback rückgängig machen.

1.4 Umgebung innerhalb des Kommandos transactional-update

Jedes Mal, wenn Sie das Kommando transactional-update ausführen, werden die Änderungen in einem neuen Snapshot ausgeführt. Die Umgebung im Snapshot kann sich von der Umgebung in der Shell unterscheiden, von der aus Sie das Kommando transactional-update ausführen. Das aktuelle Arbeitsverzeichnis ($PWD) ist beispielsweise nicht auf das Verzeichnis eingestellt, von dem aus Sie das Kommando transactional-update ausführen, sondern auf /.

Aus dem Snapshot heraus können Sie nicht auf das Verzeichnis /var zugreifen. Dieses Verzeichnis ist auch nicht im Snapshot enthalten. Einige Verzeichnisse werden allerdings nicht in den Snapshot aufgenommen, sondern sind innerhalb der Umgebung von transactional-update verfügbar, z. B. das Verzeichnis /root.

2 Verwendung des Kommandos transactional-update

Mit dem Kommando transactional-update ist eine atomare Installation oder das Entfernen von Aktualisierungen möglich. Aktualisierungen werden nur dann angewendet, wenn alle erfolgreich installiert werden können. transactional-update erstellt einen Snapshot Ihres Systems und verwendet ihn zum Aktualisieren des Systems. Später können Sie diesen Snapshot wiederherstellen. Alle Änderungen werden erst nach dem Reboot aktiv.

Die Syntax für das Kommando transactional-update lautet wie folgt:

transactional-update [option] [general_command] [package_command] standalone_command
Anmerkung
Anmerkung: Ausführen von transactional-update ohne Argumente

Wenn Sie beim Ausführen von transactional-update kein Kommando oder keine Option angeben, aktualisiert das System sich selbst.

Mögliche Kommandoparameter werden weiter unten beschrieben.

Optionen für transactional-update
--interactive, -i

Kann zusammen mit einem Paketkommando verwendet werden, um den interaktiven Modus zu aktivieren.

--non-interactive, -n

Kann zusammen mit einem Paketkommando verwendet werden, um den nicht interaktiven Modus zu aktivieren.

--continue [number], -c

Mit der Option --continue werden mehrere Änderungen am Root-Dateisystem vorgenommen, ohne dass neu gebootet werden muss. Weitere Informationen finden Sie in Abschnitt 3, „Anwendung mehrerer Änderungen ohne Neustart“.

Als weitere nützliche Funktion der Option --continue können Sie jeden beliebigen vorhandenen Snapshot als Basis für Ihren neuen Snapshot auswählen. Im folgenden Beispiel wird gezeigt, wie transactional-update ausgeführt wird, um ein neues Paket in einem Snapshot basierend auf Snapshot 13 zu installieren. Danach wird es erneut ausgeführt, um ein weiteres Paket zu installieren:

> sudo transactional-update pkg install package_1
> sudo transactional-update --continue 13 pkg install package_2
--no-selfupdate

Deaktiviert die Selbstaktualisierung von transactional-update.

--drop-if-no-change, -d

Verwirft den mit transactional-update erstellten Snapshot, wenn keine Änderungen am Root-Dateisystem vorgenommen wurden. Falls das Verzeichnis /etc geändert wurde, wurden diese Änderungen wieder mit dem aktuellen Dateisystem zusammengeführt.

--quiet

Das Kommando transactional-update sendet keine Ausgabe an stdout.

--help, -h

Gibt Hilfe für das Kommando transactional-update aus.

--version

Zeigt die Version des Kommandos transactional-update an.

2.1 Allgemeine Kommandos

In diesem Abschnitt werden allgemeine Kommandos von transactional-update aufgeführt.

grub.cfg

Mit diesem Kommando bauen Sie die GRUB-Bootloader-Konfigurationsdatei neu auf.

bootloader

Das Kommando installiert den Bootloader neu.

initrd

Mit diesem Kommando bauen Sie initrd erneut auf.

kdump

Falls Sie Änderungen an der Hardware oder am Speicher vornehmen, müssen Sie Kdump-initrd eventuell neu aufbauen.

shell

Öffnet eine Shell mit Lese-/Schreibzugriff im neuen Snapshot vor dem Beenden. Dieses Kommando wird in der Regel zur Fehlersuche verwendet.

reboot

Das System wird neu gestartet, sobald das Kommando transactional-update abgeschlossen ist.

run <command>

Führt das angegebene Kommando in einem neuen Snapshot aus.

setup-selinux

Installiert und aktiviert die gezielte SELinux-Richtlinie.

3 Anwendung mehrerer Änderungen ohne Neustart

Das Kommando transactional-update wendet Änderungen auf das Root-Dateisystem auf einem Transaktionssystem an. Das Standardverhalten besteht darin, nach jeder Änderung einen neuen Snapshot aus dem aktuellen Root-Dateisystem zu erstellen und neu zu starten, um die Änderungen zu übernehmen.

Sollen mehrere Änderungen am Root-Dateisystem ohne Neustart vorgenommen werden, haben Sie mehrere Möglichkeiten, die in den folgenden Abschnitten beschrieben werden.

3.1 Die Option transactional-update --continue

Verwenden Sie das Kommando transactional-update zusammen mit der Option --continue, um mehrere Änderungen ohne Neustart vorzunehmen. Bei jeder Ausführung wird ein neuer Snapshot erstellt, der jeweils alle Änderungen des früheren Snapshots sowie die neuen Änderungen enthält. Der endgültige Snapshot umfasst alle Änderungen. Starten Sie das System neu, um sie anzuwenden, und Ihr endgültiger Snapshot wird zum neuen Root-Dateisystem.

3.2 Das Kommando transactional-update run

Mit dem Kommando transactional-update run wird normalerweise nur ein einziges Kommando ausgeführt. Sie können damit jedoch auch mehrere Kommandos in einer einzigen Transaktionssitzung ausführen, wenn Sie die Kommandos in einer Kommando-Shell wie bash verketten, beispielsweise:

> sudo transactional-update run bash -c 'ls && date; if [ true ]; then echo -n "Hello "; echo '\''world'\''; fi'
Anmerkung
Anmerkung

Das Kommando transactional-update run unterliegt den gleichen Einschränkungen wie das Kommando transactional-update shell (siehe Abschnitt 3.3, „Die transactional-update-Shell“), mit der Ausnahme, dass die eingegebenen Kommandos in der Datei /var/log/transactional-update.log protokolliert werden.

3.3 Die transactional-update-Shell

Das Kommando transactional-update shell öffnet eine Shell in der „transactional-update“-Umgebung. In der Shell können Sie nahezu jedes Linux-Kommando eingeben und damit Änderungen am Dateisystem vornehmen, z. B. mehrere Pakete mit dem Kommando zypper installieren oder Änderungen an Dateien vornehmen, die Bestandteil des schreibgeschützten Dateisystems sind. Sie können auch prüfen, ob die Änderungen, die Sie zuvor mit dem Kommando transactional-update ausgeführt haben, korrekt sind.

Wichtig
Wichtig

Die Transaktions-Shell unterliegt verschiedenen Einschränkungen. Sie können beispielsweise keine Dienste mit systemd-Kommandos starten oder stoppen, und es ist nicht möglich, die /var-Partition zu ändern, da sie nicht eingehängt ist. Außerdem werden Befehle, die in einer Shell-Sitzung eingegeben werden, nicht in der Datei /transactional-update.log protokolliert.

Alle Änderungen, die Sie am Dateisystem vornehmen, sind Teil eines einzelnen Snapshots. Nachdem Sie die Änderungen am Dateisystem vorgenommen und die Shell mit dem Kommando exit verlassen haben, müssen Sie den Host neu starten, um die Änderungen zu übernehmen.

4 Snapshot-Bereinigung durchführen

Sie können mit transactional-update nicht verwendete Dateisystem-Snapshots und nicht referenzierte /etc-Overlay-Verzeichnisse bereinigen.

transactional-update erkennt die folgenden Bereinigungskommandos:

cleanup-snapshots

Das Kommando markiert alle nicht verwendeten Snapshots zum Entfernen durch Snapper.

cleanup-overlays

Das Kommando entfernt alle nicht verwendeten Overlay-Layer von /etc im Verzeichnis /var/lib/overlay.

cleanup

Das Kommando kombiniert die Kommandos cleanup-snapshots und cleanup-overlays.

4.1 So funktioniert die Bereinigung

Wenn Sie das Kommando transactional-update cleanup ausführen, haben alle alten Snapshots ohne Bereinigungsalgorithmus einen Satz. Alle wichtigen Snapshots sind ebenfalls markiert. Das Kommando entfernt auch alle nicht referenzierten (und damit nicht verwendeten) /etc-Overlay-Verzeichnisse in /var/lib/overlay.

Die Snapshots mit dem festgelegten number-Bereinigungsalgorithmus werden gemäß den Regeln gelöscht, die durch die folgenden Parameter in /etc/snapper/configs/root konfiguriert sind:

NUMBER_MIN_AGE

Definiert das Mindestalter eines Snapshots (in Sekunden), der automatisch entfernt werden kann.

NUMBER_LIMIT/NUMBER_LIMIT_IMPORTANT

Definiert die maximale Anzahl gespeicherter Snapshots. Die Bereinigungsalgorithmen löschen Snapshots über dem angegebenen Maximalwert, ohne den Snapshot und den Speicherplatz im Dateisystem zu berücksichtigen. Die Algorithmen löschen auch Snapshots über dem Mindestwert, bis die Grenzwerte für den Snapshot und das Dateisystem erreicht sind.

Die Snapshot-Bereinigung wird auch regelmäßig von systemd durchgeführt.

5 Registrierung von Produkten

Mit dem Kommando transactional-update register können Sie alle Aufgaben im Zusammenhang mit der Produktregistrierung und der Abonnementverwaltung erledigen. Sie können folgende Optionen angeben:

--list-extensions

Mit dieser Option listet das Kommando die verfügbaren Erweiterungen für das System auf. Anhand der Ausgabe können Sie eine Produktkennung für die Produktaktivierung ermitteln.

-p, --product

Mit dieser Option geben Sie ein Produkt für die Aktivierung an. Die Produktkennung hat das folgende Format: <Name>/<Version>/<Architektur>, beispielsweise sle-module-live-patching/15.3/x86_64. Das entsprechende Kommando hat die folgende Form:

> sudo transactional-update register -p sle-module-live-patching/15.3/x86_64
-r, --regcode

Registrieren Sie das System mit dem bereitgestellten Registrierungscode. Das Kommando registriert das Abonnement und aktiviert Software-Repositorys.

-d, --de-register

Die Option hebt die Registrierung des Systems oder (bei Verwendung der Option -p) die Registrierung einer Erweiterung auf.

-e, --email

Geben Sie eine E-Mail-Adresse an, die im SUSE Customer Center für die Registrierung verwendet wird.

--url

Geben Sie die URL Ihres Registrierungsservers an. Die URL wird in der Konfiguration gespeichert und in nachfolgenden Kommandosaufrufen verwendet. Beispiel:

> sudo transactional-update register --url https://scc.suse.com
-s, --status

Zeigt den aktuellen Registrierungsstatus im JSON-Format an.

--write-config

Schreibt den angegebenen Optionswert in die Konfigurationsdatei /etc/SUSEConnect.

--cleanup

Entfernt alte Systemanmeldedaten.

--version

Gibt die Version aus.

--help

Zeigt die Verwendung des Kommandos an.

6 Verwalten von Softwarepaketen

Sie können mit transactional-update Softwarepakete installieren, aktualisieren oder entfernen.

SLE Micro bezieht Softwarepakete aus Repositorys, die nach der Produktregistrierung verfügbar sind.

transactional-update verwendet die folgenden Kommandos zur Verwaltung von Softwarepaketen.

Tipp
Tipp: Das Kommando pkg und Zypper-Optionen

Mit transactional-update pkg-Kommandos können Sie jede Zypper-Option verwenden, die dem verwendeten Unterkommando entspricht. transactional-update pkg install versteht zum Beispiel alle Optionen von zypper install.

pkg install

Installiert einzelne Paket aus den verfügbaren Kanälen mit dem Kommando zypper install. Mit diesem Kommando werden auch PTF(Program Temporary Fix)-RPM-Dateien installiert. Die Standardoption für dieses Kommando lautet --interactive.

> sudo transactional-update pkg install package_name

oder

> sudo transactional-update pkg install rpm1 rpm2

Zur Installation eines Softwareschemas:

> sudo transactional-update pkg install -t pattern pattern_name
pkg remove

Entfernt einzelne Pakete vom aktiven Snapshot mit dem Kommando zypper remove. Mit diesem Kommando werden auch PTF-RPM-Dateien entfernt. Die Standardoption für dieses Kommando lautet --interactive.

> sudo transactional-update pkg remove package_name
pkg update

Aktualisiert einzelne Pakete vom aktiven Snapshot mit dem Kommando zypper update. Es können nur Pakete aktualisiert werden, die Teil des Snapshots des Basisdateisystems sind. Die Standardoption für dieses Kommando lautet --interactive.

> sudo transactional-update pkg update package_name
patch

Sucht nach verfügbaren Patches und installiert diese. Die Standardoption für dieses Kommando lautet --non-interactive.

dup

Führt ein Upgrade des Systems durch. Die Standardoption für dieses Kommando lautet --non-interactive.

up

Aktualisiert installierte Pakete auf neuere Versionen. Die Standardoption für dieses Kommando lautet --non-interactive.

migration

Das Kommando migriert das System an ein ausgewähltes Ziel. In der Regel wird damit das System aufgerüstet, wenn es über das SUSE Customer Center registriert wurde.

7 Durchführen eines System-Rollbacks

GRUB 2 ermöglicht das Booten von btrfs-Snapshots und ermöglicht es Ihnen somit, jeden älteren funktionalen Snapshot zu verwenden, falls der neue Snapshot nicht korrekt funktioniert.

Beim Booten eines Snapshots werden die Teile des Dateisystems, die sich im Snapshot befinden, schreibgeschützt eingehängt. Alle anderen Dateisysteme und Teile, die aus Snapshots ausgeschlossen sind, werden schreibfähig eingehängt und können bearbeitet werden.

Tipp
Tipp: Rollback zu einem bestimmten Installationszustand

Ein erster bootfähiger Snapshot wird am Ende der ersten Systeminstallation erstellt. Diesen Zustand können Sie jederzeit wiederherstellen; booten Sie hierzu diesen Snapshot. Der Snapshot ist an der Beschreibung first root file system erkennbar.

Es gibt zwei Methoden, um ein System-Rollback durchzuführen.

Wenn Ihr aktueller Snapshot funktionsfähig ist, können Sie das folgende Verfahren für ein System-Rollback verwenden.

Vorgehen 2: Rollback von einem laufenden System
  1. Identifizieren Sie den Snapshot, der als Standard festgelegt werden soll, und notieren Sie sich seine Nummer.

    > sudo snapper list
  2. Legen Sie den Snapshot als Standard fest.

    > sudo transactional-update rollback snapshot_number

    Wenn Sie die snapshot number weglassen, wird der aktuelle Snapshot als Standard festgelegt.

    Tipp
    Tipp: Festlegen des letzten funktionierenden Snapshots

    Wenn Sie den letzten funktionierenden Snapshot als Standard festlegen möchten, führen Sie rollback last aus.

  3. Starten Sie Ihr System neu, um in den neuen Standard-Snapshot zu booten.

Das folgende Verfahren wird verwendet, falls der aktuelle Snapshot defekt ist und Sie ihn nicht booten können.

Vorgehen 3: Rollback auf einen funktionierenden Snapshot
  1. Starten Sie Ihr System neu und wählen Sie Start bootloader from a read-only snapshot aus.

  2. Wählen Sie einen Snapshot zum Booten aus. Die Snapshots sind nach dem Erstellungsdatum sortiert, wobei der neueste ganz oben steht.

  3. Melden Sie sich bei Ihrem System an und prüfen Sie, ob alles wie erwartet funktioniert. Die Daten, die in Verzeichnisse geschrieben werden, die von den Momentaufnahmen ausgeschlossen sind, bleiben unberührt.

  4. Wenn der Snapshot, in den Sie gebootet haben, nicht für das Rollback geeignet ist, starten Sie Ihr System neu und wählen Sie ein anderes.

    Wenn der Snapshot wie erwartet funktioniert, können Sie das Rollback durchführen, indem Sie das folgende Kommando ausführen:

    > sudo transactional-update rollback

    Booten Sie anschließend neu.

8 Verwalten von automatischen Transaktionsaktualisierungen

Automatische Aktualisierungen werden durch systemd.timer gesteuert, das einmal pro Tag ausgeführt wird. Damit werden alle Aktualisierungen angewendet und rebootmgrd wird informiert, dass der Rechner neu gebootet werden muss. Die Uhrzeit für die Ausführung der Aktualisierung kann angepasst werden. Weitere Informationen hierzu finden Sie in der Dokumentation zu systemd.timer(5).

8.1 Deaktivieren von automatischen Aktualisierungen

Die automatischen Aktualisierungen sind standardmäßig aktiviert. Sie können sie jedoch mit diesem Kommando deaktivieren:

> sudo systemctl --now disable transactional-update.timer

8.2 Konfigurieren von Benachrichtigungen über fehlgeschlagene Aktualisierungen

Wenn eine automatische transactional-update fehlschlägt, wird der fehlgeschlagene Snapshot gelöscht. In der Zwischenzeit kann das System neu gestartet werden, und Sie können dann nicht feststellen, dass die letzte automatische Aktualisierung fehlgeschlagen ist. Daher können Sie einen systemd-Dienst konfigurieren, der Sie über den Fehler bei der automatischen transactional-update informiert. Die Vorgehensweise kann in den folgenden Schritten zusammengefasst werden:

8.2.1 Installieren der erforderlichen Pakete

Die Pakete mailx und systemd-status-mail sind erforderlich, um die Benachrichtigungen zu konfigurieren. Sie sind standardmäßig auf dem System vorhanden. Wenn Sie sie noch nicht installiert haben, installieren Sie die Pakete mit dem folgenden Kommando:

> sudo transactional-update pkg in systemd-status-mail mailx

Booten Sie das System neu.

8.2.2 Konfigurieren des systemd-status-mail-Dienstes

Zum Konfigurieren des systemd-status-mail-Dienstes können Sie eine Konfigurationsdatei erstellen oder das Tool jeos-config verwenden.

8.2.2.1 Konfigurieren des Dienstes mit jeos-config

E-Mail-Benachrichtigungen können Sie wie unten beschrieben mit den Tools jeos-config konfigurieren.

  1. Führen Sie zum Öffnen des Konfigurationsfensters das folgende Kommando aus:

    > sudo jeos-config status_mail
  2. Konfigurieren Sie im Dialogfeld die Elemente nach Ihren Bedürfnissen.

  3. Bestätigen Sie Ihre Auswahl mit OK.

8.2.2.2 Konfigurieren des Dienstes durch Bearbeiten einer Konfigurationsdatei

Die Standardkonfigurationsdatei befindet sich unter /usr/etc/default/systemd-status-mail. Wenn Sie es ändern möchten, erstellen Sie eine Kopie in /etc/default/ und bearbeiten Sie die folgenden Elemente:

ADDRESS

Ein Pflichteintrag. Geben Sie die E-Mail-Adresse an, an die die Benachrichtigung gesendet wird. Beispiel:

ADDRESS=“tux@example.com”
FROM

Die E-Mail-Adresse des Absenders der Benachrichtigungs-E-Mail. Stellen Sie sicher, dass die Adresse gültig ist. Beispiel:

FROM=“geeko@example.com”
MAILER

Die Art der E-Mail-Anwendung zum Senden von Benachrichtigungen. Verwenden Sie den Wert mailx wie folgt:

MAILER=“mailx”
RELAYHOST

Geben Sie das von mailx verwendete Mail-Relay an.

RELAYHOST=“mail.example.com:587”
MAILX_OPTIONS

Geben Sie die erforderlichen Optionen an, um sicherzustellen, dass der E-Mail-Anbieter die Benachrichtigungs-E-Mail akzeptiert.

MAILX_OPTIONS="-Sverbose -Ssmtp-use-starttls -Ssmtp-auth=login -Ssmtp-auth-user='tux@example.com' -Ssmtp-auth-password='TopSecret'"