DeltaRPM: Efficient Updates on SUSE (Artikel 131)
Optimierung von Software-Updates mittels DeltaRPM. Erfahren Sie, wie SUSE Bandbreite spart, indem nur die Differenzen zwischen Paketversionen übertragen werden.
# DeltaRPM: Bandbreite sparen durch binäre Differenzen
TL;DR / Management Summary In Umgebungen mit schmaler Internetanbindung oder hunderten Servern ist Bandbreite ein kostbares Gut. DeltaRPM (DRPM) ist die Lösung von SUSE: Anstatt das gesamte neue Paket (z.B. 100MB) herunterzuladen, wird nur die Differenz zum installierten Paket (z.B. 5MB) übertragen. Auf dem Zielsystem wird daraus das neue RPM rekonstruiert. Ein Senior Admin muss den Trade-off kennen: Weniger Download-Zeit bedeutet höhere CPU-Last während der Rekonstruktion.
# 1. Einführung & Architektur
Das Patch-Prinzip auf Binärebene.
DeltaRPM nutzt das Tool applydelta-rpm, um aus einem installierten Paket und einer Delta-Datei ein neues RPM zu bauen.
# Der Update-Fluss (Mermaid)
graph LR
A[Repo: New Package 2.0 - 100MB]
B[Repo: Delta 1.0 to 2.0 - 5MB]
C[Server: Installed 1.0]
D[Admin: zypper up] -->|Check Local| C
D -->|Decision| E{Bandwidth vs CPU?}
E -->|Download| B
B --> F[Reconstruction: 1.0 + Delta = 2.0]
F --> G[RPM Install: 2.0]
G --> H[Update DB]
# 2. DeltaRPM in Zypper steuern
Den Standard anpassen.
Standardmäßig ist DeltaRPM in SUSE aktiviert, wenn die Repositories diese anbieten.
# Status prüfen
Datei: /etc/zypp/zypp.conf
##
## Ob DeltaRPMs genutzt werden sollen
##
download.use_deltarpm = true
# Manuelle Steuerung via CLI
Wenn Sie die CPU-Last minimieren wollen (z.B. auf einem schwachen ARM-Node):
# Deaktiviere DeltaRPM für diese Transaktion
sudo zypper up --no-deltarpm
# 3. Voraussetzungen für Erfolg
Wann funktioniert DeltaRPM?
Damit DeltaRPM funktioniert, müssen drei Bedingungen erfüllt sein:
- Repository-Support: Der Mirror-Server muss
.drpmDateien bereitstellen. - Versions-Abstand: Das Delta funktioniert meist nur von der direkten Vorversion. Wenn Sie 2 Jahre nicht geupdatet haben, wird das volle RPM geladen.
- Integrität: Das installierte RPM muss unverändert sein.
# 4. Day-2 Operations: Leistung messen
Hat es sich gelohnt?
Achten Sie beim nächsten zypper up auf den Output. Zypper zeigt an, wie viel Bandbreite gespart wurde:
(1/1) Installing: bash-5.1.16-150400.4.12.1.x86_64 ... [done]
Delta RPMs applied: 4.2 MiB saved (92%)
# 5. Troubleshooting & “War Stories”
Wenn das Puzzle nicht zusammenpasst.
# Story 1: “Der CPU-Spike im RZ”
Symptom: Während eines nächtlichen Massen-Updates via Ansible steigt die CPU-Last aller virtuellen Hosts gleichzeitig auf 100% an, was den Hypervisor stresst.
Ursache: Alle Server rekonstruieren gleichzeitig große Pakete (z.B. Kernel oder LibreOffice) aus DeltaRPMs.
Lösung: Deaktivieren Sie DeltaRPMs für Cloud-Instanzen oder VMs auf überbuchten Hosts in der zypp.conf, da der Download im schnellen internen Netz meist günstiger ist als die CPU-Last.
# Story 2: “Reconstruction Failed”
Symptom: Zypper meldet “Failed to apply delta” und lädt danach das volle RPM herunter. Ursache: Die installierte Binärdatei wurde verändert (z.B. durch ein Prelink-Tool oder eine manuelle Änderung am Binary). Die Prüfsumme passt nicht zum Delta-Algorithmus. Lösung: Keine Aktion nötig, Zypper heilt sich selbst durch den Full-Download. Prüfen Sie jedoch, warum Systemdateien verändert wurden (Sicherheits-Check!).
# 6. Fazit & Empfehlung
- IoT & Edge: DeltaRPM ist ein Segen für Systeme an LTE/Satelliten-Anbindungen.
- High-End Server: Hier kann man DeltaRPM oft abschalten, um die Update-Zeit (Downtime) zu verkürzen.
- Wahl: Lassen Sie es im Standard an, es sei denn, Sie haben spezifische Performance-Probleme beim Patching.
# Anhang: Cheatsheet
| Aufgabe | Befehl / Parameter |
|---|---|
| DRPM global aus | download.use_deltarpm = false in zypp.conf |
| DRPM Tool manuell | applydeltarpm <old_rpm> <delta_rpm> <new_rpm> |
| Delta-Infos sehen | zypper info --drpms <paketname> |
| Download-Check | zypper up --download-only |
| Paket-Vergleich | deltarpm -v <delta_file> |