Non, pas du tout... fsync est une primitive d'écriture des fichiers comme on en trouve dans la plupart des OS, et elle convient à la majorité des fichiers qui doivent être écrit sur disque. Effectivement elle fait du cache. Mais le problème des bases de données relationnelles est qu'il existe systématiquement au moins deux fichiers qui doivent impérativement être synchronisés : les fichiers de données d'un côté, le journal de transaction de l'autre. Les données reçoivent une marque dite LSN (Lof Segment Number) qui est un point d'entrée dans le journal de transaction, pour savoir ou ils en sont des données réellement écrites. Le journal de transaction étant composé d'entrée séquentielle identifiées par ce fameux LSN. Une même transaction étant découpées en différents LSN au fur et à mesure de son avancement et les transactions étant entrelacées du fait de la concurrence.
Ce qui peut arriver de pire dans un SGBDR est la désynchronisation de ces LSN conduisant à la corruption des données. Et c'est exactement ce qui se passe avec le fsync de Linux. Dans ce cas la base de donnée contient des données sont corrompues car il est impossible de savoir ce qui a été réellement mis à jour et ce qui ne l'a pas été...
Il ne s'agit donc pas d'un bug de Linux, qui a mon sens est un OS bien fait, mais d'une mauvaise utilisation de l'OS en confiant directement les écritures de PostGreSQL à Linux par défaut. Tous les grand éditeurs de SGBD Relationnel (donc transactionnels) le savent ! Cela a même été noté dans les articles écrit par Stonebarker (le père de Ingres et de PostGreSQL) dans ce livre : "
The Ingres Papers: Anatomy of a Relational Database System" - Addison Weslay - 1985
Le fait pour PostGreSQL de l'avoir ignoré relève que l'équipe de développement actuelle n'est pas sérieuse !
Quelques éléments à ce sujet :
https://postgresqlco.nf/doc/fr/param/fsync/
https://wiki.postgresql.org/wiki/Fsync_Errors
Apparemment ce bug vient enfin d'être corrigé 2 ans après sa découverte et 22 ans après sue des données corrompues se soient propagée dans les bases...
A +