看了http://constantin.glez.de/blog/2010/07/solaris-zfs-synchronous-writes-and-zil-explained ,想仔细分析一下zfs的同步写过程。
对于zfs而言,同步写性能有待提高,但是同步写对于zfs而言,或者对于其他的文件系统而言都是不可或缺的一部分。
在open系统调用的时候穿进去的参数决定了写数据的类型。
O_SYNC 如果该位被设定了,表示执行write(fd,string,len)的时候,只有物理磁盘上实现了更新(包括文件状态,和数据)才算是真正的更新,同时将数据cache到内存中。
区别于同步写,异步写操作直接调用write,把写的工作交给OS,写如内存即可,然后就直接返回了,然后OS异步的将数据flush到磁盘上。
下面分析一下ZFS的同步写过程