Snapshots aus derselben Sekunde: Sortierung nach creation ist nicht eindeutig #30

Closed
opened 2026-10-15 21:24:52 +02:00 by thorsten.spille · 0 comments

Gefunden mit den ZFS-Integrationstests (#25) auf der Test-VM.

Befund

creation hat Sekundenauflösung. Bei Snapshots eines Datasets aus derselben Sekunde liefert ZFS sie bei -s creation und bei -S creation in derselben Reihenfolge (nach Name bzw. Entstehung) – -S kehrt den Gleichstand nicht um:

zfs list -H -o name,creation,createtxg -p -S creation -t snapshot zci-src/t
zci-src/t@s01	1792092202	7
zci-src/t@s02	1792092202	8
zci-src/t@s03	1792092202	9

zsync bestimmt den ältesten Snapshot mit zfs list -S creation … | tail -1 (Erstreplikation, Löschen pro Intervall). Bei Gleichstand ist das der neueste der Gruppe (s03). Im Test hat die Erstreplikation deshalb nur s03 übertragen; s01/s02 fehlten am Ziel, ein späterer Rollback auf s01 fand keinen gemeinsamen Snapshot mehr.

Praxis

Selten: mehrere Snapshots eines Datasets in derselben Sekunde (z. B. zfs-auto-snapshot mit mehreren Labels zur gleichen Zeit, Skripte, manuelle Snapshots). Dann sind Erstreplikation und Löschgrenze innerhalb dieser Gruppe vertauscht.

Vorschlag

createtxg statt creation als Sortierschlüssel (-s createtxg / -S createtxg): streng monoton, gleiche Bedeutung („älter = früher erzeugt“), auf Quelle und Ziel jeweils lokal gültig. Betrifft den Algorithmus – nur mit Freigabe umsetzen; Nachweis mit Integrationstest (Snapshots in derselben Sekunde).

Gefunden mit den ZFS-Integrationstests (#25) auf der Test-VM. ## Befund `creation` hat Sekundenauflösung. Bei Snapshots eines Datasets aus derselben Sekunde liefert ZFS sie bei `-s creation` **und** bei `-S creation` in derselben Reihenfolge (nach Name bzw. Entstehung) – `-S` kehrt den Gleichstand nicht um: ``` zfs list -H -o name,creation,createtxg -p -S creation -t snapshot zci-src/t zci-src/t@s01 1792092202 7 zci-src/t@s02 1792092202 8 zci-src/t@s03 1792092202 9 ``` zsync bestimmt den ältesten Snapshot mit `zfs list -S creation … | tail -1` (Erstreplikation, Löschen pro Intervall). Bei Gleichstand ist das der **neueste** der Gruppe (`s03`). Im Test hat die Erstreplikation deshalb nur `s03` übertragen; `s01`/`s02` fehlten am Ziel, ein späterer Rollback auf `s01` fand keinen gemeinsamen Snapshot mehr. ## Praxis Selten: mehrere Snapshots eines Datasets in derselben Sekunde (z. B. zfs-auto-snapshot mit mehreren Labels zur gleichen Zeit, Skripte, manuelle Snapshots). Dann sind Erstreplikation und Löschgrenze innerhalb dieser Gruppe vertauscht. ## Vorschlag `createtxg` statt `creation` als Sortierschlüssel (`-s createtxg` / `-S createtxg`): streng monoton, gleiche Bedeutung („älter = früher erzeugt“), auf Quelle und Ziel jeweils lokal gültig. Betrifft den Algorithmus – nur mit Freigabe umsetzen; Nachweis mit Integrationstest (Snapshots in derselben Sekunde).
thorsten.spille added this to the 2.0.0 milestone 2026-10-15 21:24:52 +02:00
Sign in to join this conversation.
No labels
bug
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
bashclub/zsync#30
No description provided.