批次动态条带化读写算法
WAFL文件系统中采用批次动态条带化读写算法。在UNIX或者Windows文件服务器中,写入性能尤其重要,因为它必须直接面对硬盘(或非易失性内存), 而读操作尚可以面对UNIX/Windows客户端和服务器的高速缓存。这就使得UNIX或者Windows客户端和服务器的硬盘写操作要比读操作多5-10倍。
这种需求特点激发了WAFL在最初的设计中,即最大限度的发挥了写入分配策略的灵活性。WAFL文件系统中,通过批次动态条带化读写算法的三种机制,保证了这种灵活性的实现:
WAFL能把文件系统的任何数据块(除包含root inode的数据块外)写到磁盘中的任何位置上。而在FFS中,诸如inode、位图和元数据被保存在磁盘中的固定位置上,这就妨碍了文件系统写入性能。例如,对某一新近更新的文件,不能将它的数据块和inode在磁盘上的紧邻位置加以存储。而WAFL则相反,它可以在磁盘上的任何地方加以写入,从而创造性地优化了写入性能。
WAFL能把数据块按任何顺序写到磁盘中。与之对应的,FFS仅能把数据块按确定的顺序写到磁盘中,在中断之后可以通过Fsck恢复文件系统的一致性。因为WAFL文件系统的映像文件只有在写入一致点信息时才会改变,所以WAFL能按任何顺序写入数据块。
WAFL能在单一写入周期内为多个NFS操作同时分配盘空间。而FFS需要为NFS请求一一分配空间。WAFL在确定文件系统一致点之前可以收集数百个NFS请求,在一致点时刻立即为其分配空间。这种延缓分配写入空间的机制通过从应答处理的过程中去除磁盘分配时间,大大改进了NFS操作的等待时间。 对于那些在到达磁盘前即被删除的数据块而言,这种方式也避免了时间的浪费。
以上的这些特性赋予了WAFL文件系统特别灵活的写入策略。为众多写入同时分配空间的能力使其更加智能化,允许将数据块以任何顺序写入到任何地方的能力又确保了这种策略适用于多种环境。