GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Vorbereitung zum Anwenden von Updates auf Red Hat Linux

Ziel

Unser Ziel ist es sicherzustellen, dass die Aktualisierung des Betriebssystems reibungslos und fehlerfrei abläuft.

Betriebssystem- und Softwareversionen

  • Betriebssystem: Red Hat Enterprise Linux 6+

Anforderungen

Privilegierter Zugriff auf die Systeme

Schwierigkeit

EINFACH

Konventionen

  • # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl
  • $ – gegebene Linux-Befehle, die als normaler nicht-privilegierter Benutzer ausgeführt werden sollen

Einführung

Das System auf dem neuesten Stand zu halten, ist eine tägliche Aufgabe für einen Systemadministrator sowie einen Desktop-Benutzer. Durch die Anwendung der neuesten (stabilen) verfügbaren Software auf dem System können wir die neuesten Funktionen nutzen und sind besser vor Sicherheitsproblemen geschützt und leiden hoffentlich weniger unter Fehlern. Um das System zu aktualisieren, benötigen Sie konfiguriertes yum Repositorys, die als Quelle der aktualisierten Software dienen.

Wenn Sie neben dem Computer sitzen, auf dem das zu aktualisierende Betriebssystem ausgeführt wird, können Sie leicht handeln, wenn während des Updates etwas schief geht, z. B. die Ausgabe auf dem Terminal überprüfen oder zu einem Live-System booten, wenn das aktualisierte System nicht zurückkehrt Neustart – aber das ist nicht immer der Fall. Denken Sie an ein Rechenzentrum mit Hunderten oder Tausenden von (virtuellen) Maschinen oder einfach an einen physischen PC, den Sie remote aktualisieren müssen.

Es gibt einfache Schritte, die wir ausführen können, um das System auf das Upgrade vorzubereiten und möglicherweise alle Probleme zu beseitigen, die ein erfolgreiches Update gefährden würden.

Aktualisierungsprozess

Beim Durchführen einer bedingungslosen Aktualisierung (d. h. „alle aktualisieren“), yum holt alle Metadaten aus den verfügbaren Repositories und berechnet alle zu aktualisierenden Pakete gegen die rpm Datenbank, die alle Metadaten zu den auf dem System installierten Paketen enthält.

Der Aktualisierungsprozess berechnet auch alle Abhängigkeiten der aktualisierten Pakete, kann alte Pakete ersetzen und alte Kernel-Images gemäß seiner Konfiguration entfernen. Die Anzahl der zu behaltenden Kernel-Images wird in /etc/yum.conf festgelegt Konfigurationsdatei und ist standardmäßig 3:

installonly_limit=3


Nachdem alle erforderlichen Änderungen berechnet wurden, yum bietet eine umfangreiche Liste aller Pakete, die für Abhängigkeiten aktualisiert, entfernt oder installiert werden müssen, genauso wie es beim Installieren oder Aktualisieren bestimmter Pakete der Fall ist.

In einer interaktiven Aktualisierungssitzung yum wird eine Zusammenfassung der zu ändernden Pakete sowie eine Berechnung der Datengröße bereitstellen, die für das Upgrade heruntergeladen werden muss, wie unten gezeigt:

Zusammenfassung des interaktiven Yum-Updates

Nach Prüfung der Ergebnisse können wir entscheiden, ob wir das Update starten oder abbrechen. Da yum alles aktualisieren wird, wofür es Updates finden kann, möchten wir möglicherweise nicht benötigte Pakete vorher entfernen. Möglicherweise bemerken wir auch ein Paket, das für ein Update markiert ist und für das wir eine Versionssperre haben, das vom Upgrade ausgeschlossen werden muss.

Nach der Genehmigung lädt yum alle neuen Pakete herunter und installiert/aktualisiert sie nacheinander. Nach Abschluss überprüft es die Integrität der installierten/aktualisierten Pakete und bereinigt nicht benötigte Dateien. Es bietet auch Feedback während des Prozesses, indem es eine Textzeile für jeden Schritt bereitstellt, sowie einen Exit-Code, der darauf hinweist, ob das Upgrade erfolgreich war oder ob ein Problem aufgetreten ist. Außerdem wird der Update-Vorgang abgebrochen, wenn ein Problem auftritt, das aus der Perspektive des konsistenten Systems kritisch erscheint – aber es gibt Zeiten, in denen es bereits zu spät ist, daher ist es besser, das Auftreten von Update-Problemen zu verhindern.

Speicherplatz

leckerer Cache

Aus dem oben beschriebenen Prozess könnten wir erraten, dass wir etwas Speicherplatz für den Update-Vorgang benötigen:

  • Die Metadaten aller konfigurierten Repositorys müssen gespeichert werden, bis die Berechnung aller zu aktualisierenden Pakete (und ihrer Abhängigkeiten) abgeschlossen ist.
  • rpm Pakete, die das Update selbst darstellen, müssen lokal gespeichert werden, bis sie ordnungsgemäß installiert werden.

Diese Daten werden yum cache genannt wird nur während des Updates benötigt, kann aber erheblichen Speicherplatz beanspruchen. Der Standardspeicherort für diesen Cache ist /var/cache/yum Verzeichnis. Es versteht sich von selbst, dass der Aktualisierungsprozess fehlschlägt, wenn nicht genügend Speicherplatz vorhanden ist, um alle erforderlichen Daten zu speichern. Einige nicht abgeschlossene Downloads werden verworfen, aber möglicherweise wird nicht der gesamte Speicherplatz freigegeben, was dazu führt, dass ein System die Aktualisierung nicht bestanden hat und sein Volume /var/cache enthält fast voll.

Viele Installationen speichern ihre /var Verzeichnis auf einem Volume, das der Protokollierung gewidmet ist, da der Standardspeicherort für Protokolldateien /var/log ist auf den meisten Distributionen und die meisten gut funktionierenden Anwendungen funktionieren nicht mehr oder stürzen sogar ab, wenn sie ihre Protokolldateien nicht schreiben können. Es ist also eine schlechte Sache, das Volumen zu füllen, in das sie schreiben .

Je mehr Pakete aktualisiert werden müssen und je mehr Repositories wir haben, desto mehr Platz belegt das Update temporär. Diesen Speicherplatz von Update zu Update zu berechnen, ist schwierig, kann aber mit der später beschriebenen Probelauflösung getestet werden, wenn wir eine Testmaschine mit dem genauen Softwareinhalt haben. Als Beispiel in Echtzeit kann die Aktualisierung von RHEL 7.1 auf 7.5 (Desktop-Installation mit Gnome) 4 GB Cache-Speicher beanspruchen, aber die Installation einiger Fixes auf einem System, das nur ein oder zwei Monate veraltet ist, wird nur in Anspruch nehmen ein paar MB.

Um zu prüfen, wie viel Platz wir haben, können wir den df verwenden Befehl:

# df -h /var/
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/vg_sys-var  6.0G  1.7G  4.4G  28% /var


Im obigen Beispiel haben wir 4,4 GB freien Speicherplatz, was ausreichend ist, da der Server erst vor wenigen Monaten aktualisiert wurde. Um Speicherplatz freizugeben, wäre ein trivialer Schritt, den yum cache zu leeren bereits gespeichert (vielleicht beim letzten Update). Um zu prüfen, wie viel Speicherplatz ein Cache gerade belegt, können wir du verwenden :

# du -mcd 1 /var/cache/yum
1103    /var/cache/yum/x86_64
1103    /var/cache/yum
1103    total


Die obigen Zahlen sind in MB, also der yum cache nimmt in diesem Beispiel etwa 1 GB Speicherplatz ein und belegt den größten Teil des Speicherplatzes auf /var Lautstärke.

Cache löschen

Wir können den gesamten Cache mit dem folgenden Befehl leeren:

yum clean all

Aber als yum teilt uns in der Ausgabe des obigen Befehls auf RHEL 7-Versionen mit, dass möglicherweise verwaiste Daten aus entfernten oder deaktivierten Repositories vorhanden sind, was höchstwahrscheinlich nach kleineren Release-Upgrades der Fall sein wird. In diesem Fall können wir die Daten sicher von Hand löschen:

rm -rf /var/cache/yum/*

Möglicherweise erhalten wir mehr Speicherplatz für das Update, indem wir andere auf dem Volume gespeicherte Daten löschen, z. B. alte Protokolldateien komprimieren/löschen, große Dateien auf andere Volumes verschieben oder die Volume-Größe erweitern.

Verschieben des Caches

Mit den Möglichkeiten von yum weiterzuarbeiten , wenn wir wirklich wenig Speicherplatz haben, nichts weiter löschen und dem Volume keinen weiteren Speicherplatz hinzufügen können, können wir den Speicherort des yum cache verschieben auf ein anderes Volume mit mehr freiem Speicherplatz. Wir können den Cache-Speicherort in der yum.conf konfigurieren oben erwähnte Konfigurationsdatei. Beachten Sie die Standardeinstellung:

cachedir=/var/cache/yum/$basearch/$releasever

Indem Sie den Pfad vor $basearch ändern die nächste yum-Operation funktioniert mit der gleichen Verzeichnisstruktur, aber auf einem anderen Pfad – hoffentlich mit mehr freiem Speicherplatz für das Upgrade. Wir können den Cache auch auf ein anderes Volume verschieben, indem wir das gesamte Verzeichnis verschieben:

mv /var/cache/yum /extended_data_volume/


Und am ursprünglichen Ort einen Symlink erstellen, der auf den neuen Ort verweist:

ln -s /extended_data_volume/yum /var/cache/yum


Es ist ratsam zu wissen, dass das Update bei einem trivialen Fehler wie wenig Speicherplatz nicht fehlschlägt. Auf einem großen System setzen Systemadministratoren Überwachungstools wie Nagios ein, die auf allen Computern geringen Speicherplatz melden können, wodurch dieser Schritt viel weniger zeitaufwändig und fehleranfällig wird.

Netzwerkfehler

Wenn es Probleme mit der Konnektivität zwischen den Repositories und dem Computer gibt, der das Update durchführt, kann das Update fehlschlagen. Dies kann nur bei den Metadaten oder der neuen RPM-Download-Phase passieren und wird das System nicht beschädigen. Sie können den Aktualisierungsvorgang erneut starten, wenn das Netzwerkproblem behoben ist.

Wenn andererseits das Update von einer interaktiven Sitzung aus initialisiert wird, kann die Verbindung bei einem Netzwerkausfall unterbrochen werden, sodass der Update-Rechner ohne Administrator bleibt, um die Fragen yum zu beantworten darf fragen. Wenn die Phase der Paketinstallation/-aktualisierung bereits begonnen hat, wird sie unbeaufsichtigt fortgesetzt und kann fehlschlagen oder abgeschlossen werden, wenn dies andernfalls der Fall wäre. Nach erneuter Verbindung kann der Vorgang in der /var/log/yum.log verfolgt werden .

Lecker Probelauf

Abgesehen von unzureichendem Speicherplatz und Netzwerkproblemen kann das Update in vielen Fällen aufgrund ungelöster Paketabhängigkeiten fehlschlagen. Diese müssen mit Tools gelöst werden, die Paketabhängigkeiten berechnen und handhaben können, aber es wäre hilfreich, vor dem eigentlichen Update zu wissen, dass es Probleme geben wird (und damit die immer zu kurze Ausfallzeit des Systems nicht zu verschwenden). Um diese wertvollen Informationen zu erhalten, können wir den Aktualisierungsprozess so ausführen, als würde er das eigentliche Update ausführen, aber anhalten, bevor das eigentliche Herunterladen, Installieren oder Aktualisieren des Pakets stattgefunden hat.

Rund um Redhat 6.6 wurde eine neue Option eingeführt, die yum verursacht um bei jeder Frage, die während der Aktualisierung auftaucht, ein „Nein“ anzunehmen – einschließlich der Genehmigung vor der eigentlichen Paketmanipulationsphase, und als Folge davon ist keine tatsächliche Interaktion erforderlich, führen Sie einen Probelauf durch:

yum update --assumeno

Dies kann das ideale Werkzeug sein, um einen Probelauf des kommenden Updates zu erstellen, einschließlich der zu aktualisierenden Pakete und eventuell auftretender Fehler. Betrachten Sie die folgende einfache bash Skript:

#!/bin/bash
yum update --assumeno &> $(hostname).yum.dryrun.$(date '+%Y-%m-%d').out
exit $?


Das obige Skript kann automatisch ausgeführt werden und liefert einen Textbericht über den Probelauf sowie einen allgemeinen Beendigungscode, der auf Probleme hinweist. Die Ausgabe muss nicht im lokalen Dateisystem gespeichert werden. Das Ziel der Ausgabeumleitung kann ein Netzwerkdateisystem sein, oder der Bericht kann an einen zentralen Berichtsserver gesendet oder von anderen Skripten oder Anwendungen gesammelt werden. Die Berichte können veröffentlicht und an andere IT-Abteilungen zur Genehmigung verteilt werden, auf diese Weise können alle Beteiligten genau sehen, welche Pakete aktualisiert werden und auf welche Version.

Der Probelauf kann mit cron so geplant werden, dass er in einem bestimmten Zeitrahmen (möglicherweise nachts, um die Systemleistung weniger zu beeinträchtigen) ausgeführt wird , oder von einer zentralen Quelle mit einem Marionetten-Setup ausgeführt werden. Der Exitcode kann auch per Monitoring oder facter gespeichert und verarbeitet werden , um die möglichen Ergebnisse des bevorstehenden Upgrades zusammenzufassen, bevor Sie fortfahren.

Schlussfolgerung

Auch bei einem oder wenigen Rechnern sollten wir uns sicherheitshalber vor einem Update des gesamten Betriebssystems informieren. Eines Tages wird es ein Problem geben, und es ist viel weniger stressig, wenn Sie es lösen können, bevor es Auswirkungen auf die eigentliche Arbeit einer bestimmten Maschine hat. In größerem Maßstab ist es einfach nicht möglich, neben jedem Server oder Desktop zu sitzen und ihn mit Ihrer Anwesenheit zu unterstützen, in der Hoffnung, dass dies dazu beiträgt, dass das Update fehlerfrei ausgeführt wird.

Die Kenntnis der Phasen des Update-Prozesses, der Fallstricke sowie der Lösung dafür ist für erfolgreiche Updates unerlässlich. Beginnen Sie die nächste Aktualisierungsphase Ihrer gesamten Infrastruktur mit der Gewissheit, dass es keine Probleme geben wird, wenn Sie dies mit Stil tun.


Linux
  1. 10 Ansible-Module für die Linux-Systemautomatisierung

  2. Erstellen eines benutzerdefinierten Red Hat Enterprise Linux 7-Images für Microsoft Azure

  3. So spiegeln Sie ein Repository unter Linux

  4. So bereiten Sie sich auf die Zertifizierungsprüfungen für Linux-Systemadministratoren vor

  5. Wie erhalte ich Red Hat Enterprise Linux kostenlos?

Red Hat Enterprise Linux (RHEL) 8 Installationsschritte mit Screenshots

Die wichtigsten Linux-Befehle für Systemadministratoren

Einige nützliche Tools für Linux-Systemadministratoren

Arbeiten mit dem Echtzeit-Kernel für Red Hat Enterprise Linux

Meine Reise in die Linux-Systemadministration

10 Beispiele zum Ausschließen von Yum zum Überspringen von Paketen für das Linux-Yum-Update (So schließen Sie Kernel-Updates von Yum aus)