安全的編程方式:fopen() -> fflush() -> fsync() -> fclose()
確保數據落盤的幾種方法:
1.open(O_DIRECT):write/read時,文件系統的IO會繞過cache直接操作磁盤IO;
2.open(O_SYNC):確保每一筆IO都是同步落盤的,相當于是每次write后自動調用fsync;
3.open(O_DSYNC):相當于是每次write后自動調用fdatasync;
4.fsync: write后調用fsync刷新文件數據+元數據緩沖區;
5.fdatasync: write后調用fdatasync刷新文件數據;
6.sync: 標準IO后調用sync強制刷新內核緩沖區到磁盤,linux是文件真正落盤后才會返回;
7.msync: 通過mmap函數把文件映射到進程的地址空間,讀寫進程內存的地址的數據其實是轉發到磁盤上去讀寫,write后調用msync強制刷盤。
Ensuring data reaches disk https://lwn.net/Articles/457667/
深入理解 Linux的I/O 系統
https://view.inews.qq.com/a/20211216A01H5600
怎么才能保證 IO 數據的安全
https://blog.csdn.net/FL63Zv9Zou86950w/article/details/116505686
緩存技術及算法策略簡介
http://www.xupifu.com/2017/01/19/cache-introduction/






