Ich versuche zu verstehen, wie ich meinen Prometheus skalieren kann, und schaue mir die Speichermechanik dafür an.
Nehmen wir Folgendes an:
- Prometheus-Datenspeicherverzeichnis: 20 GB groß
- Anzahl Schnappschüsse: 3
- Snapshot-Größe: jeweils 18 GB
Frage: Wie kann ohne symbolische Links die Summe der Snapshot-Größen größer sein als die Gesamtgröße des Verzeichnisses? Wie wird sichergestellt, dass ein Snapshot alle erforderlichen Daten enthält?
Ich gehe davon aus, dass der Speichermechanismus von Prometheus Referenzen statt echter Daten speichert. Doch welches System hier genau am Werk ist, habe ich versucht herauszufinden, welche Mechanik dahinter steckt.
Hinweise in die richtige Richtung sind auch willkommen. Ich würde zumindest gerne die Prinzipien verstehen.
Antwort1
Prometheus Snapshots verwendenhartLinks ab v2.1. Das erklärt das vom OP beobachtete Verhalten bei der Dateisystemnutzung.
Die Snapshots bestehen aus Hardlinks vorhandener Blöcke und einem Dump der aktuell geöffneten Blöcke. Da Hardlinks verwendet werden, bedeutet dies, dass die Snapshots älterer Blöcke keinen zusätzlichen Speicherplatz beanspruchen, da nur eine Kopie auf der Festplatte gespeichert ist. Sie können Prometheus jedoch beschädigen, wenn Sie sie, ihre Berechtigungen oder ihren Benutzer/ihre Gruppe ändern. Wenn Sie fertig sind, können Sie das Snapshot-Verzeichnis mit rm -rf aufrufen, da der Snapshot zwar zunächst wenig zusätzlichen Speicherplatz beansprucht, der Snapshot jedoch den Speicherplatz belegt, sobald der ursprüngliche Block gelöscht/komprimiert wird.
Quelle:https://www.robustperception.io/taking-snapshots-of-prometheus-data/