IT用語集 › プログラミング › fsync

fsync

プログラミング Svenska → 更新: 2026-10-21

カーネルのページキャッシュにある書き込みを、永続的なストレージへ強制的に書き出すシステムコール。これがないと、「保存した」はずのファイルはRAMに載っているだけで、電源が落ちれば消える。

通常の write() はデータがページキャッシュに入った時点で戻る。速いが、何も約束しない。fsync(fd) はディスクの確認まで待つため数ミリ秒かかり、データベースにコミット遅延がある理由そのものだ。fdatasync() はメタデータを省くぶん軽い。

古典的な落とし穴は二つ。ファイルを同期しても、ディレクトリエントリが新規なら、ディレクトリも同期しなければならない。また書き込みキャッシュを持つディスクは、バリアがないと、データが盤面に届いたと偽ることがある。さらに2018年、PostgreSQL の開発者は「fsyncgate」を発見した。Linux が書き戻し失敗後にエラーフラグを破棄するため、次の fsync はデータを失っているのに成功を返したのである。

← 用語集に戻る