fsync
Der Systemaufruf, der Schreibvorgänge aus dem Page Cache des Kernels auf dauerhaften Speicher erzwingt. Ohne ihn liegt deine "gespeicherte" Datei nur im RAM und verschwindet bei einem Stromausfall.
Ein normales write() kehrt zurück, sobald die Daten im Page Cache liegen — schnell, aber ohne Garantie. fsync(fd) wartet, bis die Platte bestätigt hat, was Millisekunden kostet und der eigentliche Grund für die Commit-Latenz von Datenbanken ist. fdatasync() überspringt Metadaten und ist günstiger. Zwei klassische Fallen: Ein fsync auf die Datei reicht nicht, wenn der Verzeichniseintrag neu ist — dann muss auch das Verzeichnis synchronisiert werden; und Platten mit Schreibcache können vortäuschen, Daten hätten die Platter erreicht, wenn Barrieren fehlen. 2018 entdeckten die PostgreSQL-Entwickler zudem "fsyncgate" — Linux verwarf die Fehlerflagge nach einem gescheiterten Schreibversuch, sodass der nächste fsync trotz verlorener Daten Erfolg meldete.