写io的几种模式
- buffer write
特点:
a) 应用程序写入到page cache
b) 操作系统 writeback
优缺点:
a) 大部分情况直接写内存,速度很快
b) 数据完整性无法得到严格保证
c) 小部分写入受到系统回写影响,服务质量没有办法保证 - direct write
特点:
a) 绕过操作系统cache,直接写介质
b) 规避了page cache的使用,不受操作系统回写的影响
c) 介质有可能有cache,不能绝对安全 - write + sync
特点:
a) 写入数据调用 sync or fsync
b) sync返回后数据已经成功写入磁盘介质并足够安全
c) 在调用sync前写入的数据有可能丢失
d) 随着操作系统内存的使用情况不同, sync等待的时间也会不同 - O_SYNC
特点:
a) 用户 sync或者O_SYNC
b) 操作系统将数据写入存储: direct write或者page cache回写
c) 操作系统指示存储介质将数据写入非易失介质: flush或者write barrier