Solaris ZFS代码公开了
在 这里。ZFS提出了很多很有意思的概念,值得一看。
比较感兴趣的几个地方:(1)Solaris的byteswap实现;(2)DSL;(3)ZIL。暂时还没有仔细看ZIL,但这里有一个很有意思的设计:
- 内日志(“intent log”)保存在内存中
- commit操作直接消除内日志
- fsync或其他原因sync时提交内日志到磁盘上的日志池。
这和SoftUpdates的做法原理上基本一致,但不同之处在于fsync/不得不同步时,写日志。看上去,这种做法从性能方面应该要优于UFS的SoftUpdates(相当于geom的journal层,性能更好的原因是通过日志将写操作扎堆),但疑问是这些在内存严重不足时,应该如何处理?
看了代码再说……