@
coreos #12
ZFS 默认不开启写缓存,但是在内存中有写缓冲,当然这个写缓冲非常小,现代文件系统基本都有读写缓冲区,这个并不是缓存。
ZFS 的写缓存叫 ZIL,IL 指 intent log,可以将之理解成数据库的日志。ZFS 用一个额外的块设备(此设备的 4K 写能力应当很强,所以应当选用 SSD 之类)来缓存这些写入操作,可以被理解成一个大容量的写入队列缓冲器。
ZFS 的读缓存分两级,默认开启的 ARC 在内存中,此外可以额外加一层 L2ARC,L2ARC 和 ARC 承担的任务其实是一样的,而且它们中的数据都不会存活到下次启动之后,哪怕在外部存储器上开启了 L2ARC 。
总的来讲,ZFS 有高性能高效率的读写缓存机制,但这些并不是对文件系统本身的缓存,而是 ZFS 运行时数据的缓存。
ZFS 使用尽可能多的内存,作为临时读缓存,提高读取速度;
ZFS 不对写入进行缓存,即使开启 ZIL,也仅相当于扩大了写入缓冲区;
ZFS 不提供文件系统本身的缓存功能;
可以搭配其他缓存系统(比如各种 cache FS )实现额外的中间层文件系统缓存。