NetApp的文件系统名为WAFL,是专为Filer系统而设计的。WAFL是”Write Anywhere File Layout”,即”任意位置写入文件布局”的缩写。WAFL文件系统和Filer的整合式RAID管理采用一体化设计,以避免大多数带有RAID管理机制的文件系统所固有的性能问题。
网络化存储实际应用中的三个基本要求决定了需要为NetApp Filer设计全新的文件系统:
文件系统应该更加有效地操控RAID机制
增加新的硬盘时,文件系统应该能够相应的动态增长
文件系统应该不需要做消耗大量时间的一致性检查
在这些基本要求之上,引申出了支持数据快照(Snapshot)的要求。
NetApp于1995年5月提出专利申请,在1998年10月获得专利(专利号码:5,819,292),题目为《Method For Maintaining Consistent States of A File System and For Creating User-Accessible Read-Only Copies of A File System》,前半部分就是有关WAFL的内容,后半部分则关于数据快照(Snapshot)技术。另一项专利于1995年6月申请,在1998年9月获得专利(专利号码:5,948,110),题目为《Method For Providing Parity In a RAID Subsystem Using Non-Volatile Memory》,这就是如何利用NVRAM来加速RAID,并保护RAID数据的一致性。WAFL采用有电池保护的NVRAM(非易失性内存)来担任其日志(journal),并藉由consistency points提供文件系统一致性(consistent) 的保证,在非正常断电或关机时,重新开机后可在2分钟内开始提供服务,不需要执行文件系统检查,也不用担心文件系统会损毁。WAFL结合NVRAM、RAID、Snapshot的设计难度极高,故从1992年至今仍未有其它厂商可以做到。
WAFL的主要特点及其所带来的优势包括:
永远一致性的文件系统:任何时刻文件系统均处于一致性的状态,即使遇到非正常断电或不正常关机后,也不需执行硬盘检查,即可在复电后2分钟内迅速提供服务。
具电池保护的NVRAM日志:利用存取速度较硬盘快一千倍的内存,担任文件系统的日志,同时保护metadata及data的交易纪录,并加速写入的效率和反应时间、保证文件系统的一致性、保证写入的交易不会因断电而流失。
内建智能型最佳化的RAID磁盘阵列管理系统:配合NVRAM日志功能,藉由硬盘区块的配置最佳化,可将大量的随机写入转为少量的循序写入,真正达到平行写入 (Stripe Write) 并减少磁头移动的次数和磁头移动的距离的目的,加速文件存取和搜寻的速度。
能增长的文件系统:不需其它软件的协助,就可直接实时动态线上扩增文件系统容量且立刻能使用新增加的容量。每次可只增加一块硬盘或多块硬盘的方式来扩增,完全不需要停机,也不需要等待时间。另外也可在不扩增容量的前提下,动态线上提高文件数量的上限,完全不需要停机,也不需要等待时间,也不影响系统运作效率。
瞬间快照备份 (Snapshot):使用不需要移动硬盘区块的WAFL专利技术,可瞬间备份整个文件系统,每个volume可有255份快照,每个使用者都有自己专属的一个快照目录,可自行恢复只属于自己在任一快照时间点的资料,完全不需系统管理人员的协助。每个快照备份皆是完整的文件系统备份 (Full File System Backup),不论已有多少份数的备份,系统运作效率皆不受影响。
WAFL作为专门为网络文件访问而优化的UNIX兼容文件系统。在某些方面,其磁盘格式类似于其它UNIX文件系统,如伯克利快速文件系统(Berkeley Fast File System,以下简称FFS)和IBM TransArc Episode文件系统,相似之处包括:
WAFL是基于数据块的,使用没有片段的4KB大小数据块
WAFL使用inodes来描述其文件
WAFL文件系统中,目录是格式特殊的文件
像IBM TransArc Episode文件系统一样,WAFL使用文件来储存元数据(Meta Data)。WAFL三个最重要的元数据文件是:
inode文件,包含文件系统所有的inode
块图文件,用以识别空闲块
inode图文件,用以识别空闲inode。
这里采用”图”而不是”位图”的称谓,因为这些文件采用多于1位(bit)对每一个路径加以描述。
其中,每一个WAFL inode包含16个块指针,用以表明哪一个数据块属于该文件。不同于伯克利快速文件系统,一个WAFL inode的所有块指针指向的是相同层次上的数据块。这样,对于小于64KB的文件,inode使用16个块指针指向文件数据块;大于64MB的文件,inode使用块指针指向间接数据块,间接数据块再指向实际的文件数据块。较大文件的inode指向更多的间接数据块。对于十分小的文件,数据储存在inode本身。
简单的,可以把WAFL理解为数据块树型结构,在树的根部是root inode,root inode是用以描述inode文件的特殊inode。inode文件包含描述系统中其它文件的inode,包括块图和inode图文件。WAFL文件系统数据块树型结构的树叶是所有文件的数据块。如下图所示:
图:WAFL的树型结构示例图
图中显示,文件由不同的数据块组成。较大的文件在inode和实际数据块之间存在额外的间接层次。WAFL要启动的话,必须要找到该树型结构的根部,所以对于WAFL(任意位置写入文件布局)来讲,root inode是个例外,它必须处于硬盘上的固定位置以便WAFL定位。使用文件来保存元数据的方式带来的好处有:
允许在硬盘上任何地方写入元数据块。这就是WAFL名称的起源。与FFS类似,WAFL在其写入分配策略上有着完全的灵活性,数据块不是被永久地分配到固定的磁盘位置上。WAFL利用了这种灵活性来优化Filer的RAID性能。WAFL可以事先规划对同一RAID条带进行多重写入的时间,这样当仅仅更新RAID某一硬盘条带中某一数据块时,就不会对整个写入性能带来损耗。在有关RAID的章节中,详细描述了WAFL采用的旨在有效利用增强型RAID4的写分配策略。
使文件系统的增长变得十分容易。当增加新的硬盘时,Filer可以自动增加元数据文件的大小。如果系统的缺省值稍小,管理员也可以手动增加文件系统中的inode。允许元数据块在硬盘上任何地方写入。这种方式使得SnapShot数据快照功能成为可能。要使SnapShot可以工作,WAFL必须可以把新的数据,包括元数据写入到新的硬盘空间上,而不是覆盖原有数据。如果WAFL在磁盘上固定的位置存储元数据,这项功能就不可能实现。
1、批次动态条带化读写算法
WAFL文件系统中采用批次动态条带化读写算法。在UNIX或者Windows文件服务器中,写入性能尤其重要,因为它必须直接面对硬盘(或非易失性内存),而读操作尚可以面对UNIX/Windows客户端和服务器的高速缓存。这就使得UNIX或者Windows客户端和服务器的硬盘写操作要比读操作多5-10倍。如Ousterhout机构的一项观测证明,当服务器端和客户端高速缓存增大的情况下,对写入操作的响应主导了I/O子系统的处理过程。其影响是NFS服务器上的磁盘写操作可能比读操作多5倍(相关内容见于Ousterhout 89报告)。
这种需求特点,激发了WAFL在最初的设计中,即最大限度的发挥了写入分配策略的灵活性。WAFL文件系统中,通过批次动态条带化读写算法的三种机制,保证了这种灵活性的实现:
Ÿ WAFL能把文件系统的任何数据块(除包含root inode的数据块外)写到磁盘中的任何位置上。而在FFS中,诸如inode、位图和元数据被保存在磁盘中的固定位置上,这就妨碍了文件系统写入性能。例如,对某一新近更新的文件,不能将它的数据块和inode在磁盘上的紧邻位置加以存储。而WAFL则相反,它可以在磁盘上的任何地方加以写入,从而创造性的优化了写入性能。
Ÿ WAFL能把数据块按任何顺序写到磁盘中。与之对应的,FFS仅能把数据块按确定的顺序写到磁盘中,在中断之后可以通过fsck恢复文件系统的一致性。因为WAFL文件系统的映像文件只有在写入一致点信息时才会改变,所以WAFL能按任何顺序写入数据块。
.分页: [1] [2]
TAG: NETapp WAFL文件系统