Netapp传奇之WAFL文件系统以及RAID4 - 硬网络

来源:百度文库 编辑:神马文学网 时间:2024/06/03 05:42:00

上次有朋友谈到这个话题,关于netapp与其改良型raid4,希望我能介绍这个东西,估计知道的人也不太多,我这里尽量用简单的语言来介绍一下他的特点,希望大家能看明白。

Netapp公司创建时间不算长,1992年才创建,但是netapp还是写下了一系列的神话,包括现在IBM的nas系统,都是OEM的netapp的产品。那么,netapp的优势在哪里呢?我在这里分析一下它的特点,WAFL与RAID4 .

双剑合璧的WAFL和RAID4

WAFL文件系统是netapp自己设计的,运行在netapp专用操作系统DATA ONTAP上的一个文件系统,WAFL是“Write Anywhere File Layout”的意思,即“任意位置写入文件布局”的缩写。正因为有WAFL的这个特点,所以才有了RAID4 ,一个改进型的raid4,使得没有校验瓶颈存在,而且能随意扩充硬盘的raid方式。

假如说传统的存储方式中,假如修改一个数据块,我们必须先定位到那个数据块,然后再修改,在我的前面写的raid5内部分析中,我们也看到了,假如修改一个单独的数据,我们必须先读出这个数据与校验,然后修改数据,计算校验,最后写入到同样的位置,这些特点,不仅仅是raid决定的,而且也是运行在raid之上的文件系统决定的。

在WAFL中,假如它也修改一个数据,他可能不管以前的数据的位置,直接把新数据与新校验写到新的位置,之后更改指针,告诉文件系统说,新的数据在这里,而不是原来那里了。这么做还有一个最大的好处就是,新的数据可能等到足够多以后,可以凑齐raid的一个条带以后,一起写进去,就可以大大的提高写的速度。

raid4 就在WAFL的配合下诞生了,传统的raid4是把所有的校验写在一块单独的硬盘上的,假如数据修改量很大,那么这个单独的硬盘就变成了性能瓶颈,而raid4 可以最大可能的把一个条带的数据,一次性的写入,所以,使得校验盘与其它的盘基本相当的写入量,而没有瓶颈出现。而且,当这个raid组想增加硬盘的时候,只是简单的放入新的硬盘即可,任意位置写的规则可以保证新的硬盘马上就被使用起来。

WAFL与raid4 为了尽量保证把数据合并后一次性写入,就必须依靠cache,在cache中才可以等到一定数量的数据之后再一起分批写入,而且,本身WAFL的日志也是记录在cache中的,也包括WAFL的inode的指针操作,也都是在cache中完成。所以,netapp也必须依靠电池或者ups对cache实施保护。

RAID4与改良型RAID4

我们先看一个传统的raid4与改良型的raid4之间写的差别,如图,在传统型的raid4中,假如改写我如图的数据,每个数据需要读一次,校验盘可能会写6次,每个数据写一个,涉及到6个条带。但是,在改良型的raid4中,读已经不存在了,而且写的话,最小的可能性,只需要写2个条带,8个写io,一次性写入即可,至于指针,则由WAFL文件系统在cache中完成。

注重,这里为什么说最小可能写2个条带,因为写的时候还需要根据磁盘空间剩余情况,cache的利用情况来综合决定的,有可能也会涉及到3-4个条带,但是,可以肯定的是,算法尽量保证最少的磁盘写次数。

我们上面分析了改良型的raid4的写,那么我们再分析一下它的raid组增加磁盘的过程,在一般的raid组中,想要给raid组增加一个磁盘,是非常困难的,因为数据以前就分布好了,除非再强行改变分布,但是,netapp不一样,它的文件系统本来就是任意写,所以很轻易把新加的磁盘给用上。

优缺点分析

那么说了这么多,netapp的WAFL与raid4 的优势已经很清楚了:

1、尽量保证数据一次性的写入,降低磁盘争用,提高写速度

2、因为任意写的特点,使得snapshot变得非常简单,而且,就算你不做snapshot,系统本身也一直在不停的产生snapshot,因为这样可以大大降低文件系统的恢复时间。

那么,有缺点吗?肯定有的,这个世界总是没有完美的东西存在的

1、因为任意写,为了保证每次都能操作一个条带,那么,系统希望尽量有充足的空闲空间,如使用率不要超过80%,否则,因为空闲空间太少而不能保证每次都写一个条带

2、因为任意写,可能会使本来连续的空间,分布在存储的任意位置,如数据库应用中,本来连续的表,在存储中多次修改以后,就不连续了,使得全表扫描或者备份变得很慢。