字体:  

NETAPP技术学习全程记录

ender 发表于: 2008-6-24 23:25 来源: DOIT博客

按老板的要求以后要开始做NETAPP的东西了,以前只在移动的IDC看到过柜子.不过听客户说非常简单,客户自己都可以根据需要去调整.
     开这个帖子目的有三:
     1.记录学习过程
     2.向高手请教
     3.为了不成太监贴,大家督促我完成,不要半途而废

从底层开始,先是WAFL,NVRAM,RAID 4/DP。
第二部分是Data ONTAP存储资源的管理,有aggregate,volume,disk,network等部分
第三部分是NFS
第四部分是CIFS
第五部分是SAN
第六部分qtree,snapshot实验。
第七部分是扩展功能部分,snaprestore,snapmirror,snapvault等。
总体来说是汇集了大量的资料总结而成,在记录的过程中还把和EMC相近的功能做了比较。

使用的DOT实验环境是VMWARE+LINUX+DOT 7.2.1P
NFS测试是LINUX,AIX,Win 2000 adv server.(AIX是以前买来玩的一台43P)
CIFS测试是Win 2000 adv server.
ISCSI测试是LINUX,Win 2000 adv server.

[ 本帖最后由 ender 于 2008-8-1 14:42 编辑 ]

最新回复

ender at 2008-6-24 23:49:39
NETAPP的OS:    DATA ONTAP

一个优秀的微核设计成果,主要框架分成三大部分:
1,接口部分,包括网络接口和光纤接口
2.通讯协议部分.包括File Protocol (NFS, CIFS, HTTP, DAFS) 也就平时我们说的NAS,和Block Protocol (FCP,iSCSI)这个就是平时说的SAN了.
3.内部文件系统和RAID的管理,内部文件系统叫WAFL.这个非常有特点,可以说是NETAPP和别的厂商的不同就在这里了.

我在LINUX上安装了DATA ONTAP的模拟器,很强,很NB.
应该是在LINUX或者BSD之类的平台开始开发的.感觉老美的很多公司都把这些东西用到了极致,成就了不少成功的企业例如cisco,netapp可能未来也算.

[ 本帖最后由 ender 于 2008-8-13 22:32 编辑 ]


DOT.JPG

ender at 2008-6-25 00:02:48
网络化存储对设计提出了几个基本的要求:
1.文件系统应该更加有效地操控RAID机制
2.扩容时文件系统应该能够相应的动态增长,系统初上的时候我们多数时候不能准确的判断未来的需求,变化总比计划快,已经被无数的项目证实了.对存储的需求总是无止境的.经常出现拆了东墙补西墙的情况,最后整个系统乱七八糟的,运行效率地下.
3.文件系统应该不需要做消耗大量时间的一致性检查,
机器出问题后当然是恢复时间越快越好,最好没被别人发现哈.

基于上面几个要求,netapp研究出了wafl这个文件系统.
myciciy at 2008-6-25 09:34:48
继续关注楼主。。。
qqeyes at 2008-6-25 10:00:40
共同学习,哈哈
kking888 at 2008-6-25 10:12:37
关注中 go on……
zlz1zlz at 2008-6-25 10:54:29
资料共享下啊。
ender at 2008-6-25 11:02:29
WAFL 采用有电池保护的NVRAM(非易失性内存)来担任其日志 ,并由consistency points 提供文件系统一致性 的保证,在非正常断电或关机时,重新开机后可在2 分钟内开始提供服务,不需要执行文件系统检查,也不用担心文件系统会损毁。
       NVRAM的作用就像是数据库的日志空间,当有数据提交到Filer的时候,数据同时写入cache和NVRAM,如果这个时候突然断电,NVRAM可以保证数据的安全。
      NVRAM的速度和硬盘相比会快很多,非正式的说法是1000倍左右。
      NETAPP的产品中从128M到4G的配置版本都有,不过我还不太清楚这个容量是否够用。现在学习的都是理论的东西,没见过实际的使用情况。

[ 本帖最后由 ender 于 2008-8-13 22:34 编辑 ]


WAFL.JPG

ender at 2008-6-25 11:11:05
题外话:
大概在2000年的时候,那个时候刚毕业在银行里。跟在中科院计算所的朋友打电话聊天,其中就说到了现在较普及的SAN。朋友也不算很清楚,就是说所里才有人从国外回来,说现在的趋势是通过光纤把服务器和磁盘阵列相连。当时还在想网络上那么多病毒,速度也不稳定啥的,怎么可以这么用哦。
那时行里用的是IBM的RS6000加SSA接口的4133,我觉的性能也不错了。其实从技术上来说IBM的SSA应该不比现在的FC差,可惜不开放被市场淘汰了。

[ 本帖最后由 ender 于 2008-6-25 16:07 编辑 ]
ender at 2008-6-25 11:23:56
就想UNIX的文件系统一样,WAFL有下面几个特点

    WAFL 是基于数据块的,使用没有片段的4KB 大小数据块
    WAFL 使用inodes 来描述其文件
    WAFL 文件系统中,目录是格式特殊的文件

WAFL 使用文件来储存元数据(Meta Data)。 WAFL三个最重要的元数据文件是:
     inode 文件,包含文件系统所有的inode
     块图文件,用以识别空闲块
     inode 图文件,用以识别空闲inode。

根据冬瓜头的指导,更新一下:除了这三个元数据,还有很多重要元数据

[ 本帖最后由 ender 于 2008-6-25 23:49 编辑 ]
ender at 2008-6-25 11:42:07
每一个WAFL inode包含16个块指针,用以表明哪一个数据块属于该文件。一个WAFL inode的所有块指针指向的是相同层次上的数据块。这样,对于小于64KB的文件,inode使用16个块指针指向文件数据块;大于64KB的文件, inode使用块指针指向间接数据块,间接数据块再指向实际的文件数据块。
    较大文件的inode指向更多的间接数据块。
    对于十分小的文件,数据储存在 inode本身。
ender at 2008-6-25 11:57:14
说到inode,看来NETAPP已经把WAFL要用的大小给定死了。不过数量上是可以增加的,要不以后扩容就没办法了。

在以前玩BBS的时候,inode的大小是要考虑的,很多站内邮件和帖子都很小,inode一般就设成1-2K就可以了,多了就是浪费了。

[ 本帖最后由 ender 于 2008-6-25 15:44 编辑 ]
ender at 2008-6-25 12:29:18
可以把WAFL 理解为数据块树型结构,在树的根部是root inode,root inode 是用以描述inode 文件的特殊inode。inode 文件包含描述系统中其它文件的inode,包括块图和inode 图文件。WAFL 文件系统数据块树型结构的树叶是所有文件的数据块。


ender at 2008-6-25 15:43:16
DATA ONTAP系统启动后,需要挂接WAFL的文件系统。这个时候就需要知道root inode的位置。因此root inode的位置必须要固定。当系统找到root inode后,根据树型结构才可能查找到其他文件的inode,然后再找到包含文件的具体数据块的位置。比较大的文件需要和实际数据块之间存在额外的间接层次。

据说大机上的DB2类似于这种结构。呵呵,说是要8年的时间去学大机可能才算有个结果。分db2,OS390,网络和CICS.太复杂了。

以前听说UNISYS的大机的课程,使用磁盘的方式和我们平时见的有很大的不同,感觉空间都被浪费了。现在可能只有航空售票那个地方还在用这套系统。
ender at 2008-6-25 16:02:50
优化了写入性能的WAFL文件系统
         如果有安装,配置存储设备的经验的话。大家就知道在中端的EMC   CX系列产品我们会把尽量多的cache分配给写操作,而高端的DMX系列据说是微码自动优化的。那个SYMMETRIX的内核应该是只有开发系统的几个以色列人最清楚,国内的离开了LIB的支持基本出RED BOX后就抓瞎了
          为了有最好的写入性能最好能达到几个方面:
        1。将多数据块写入到同一条带中的方式,大大提高RAID 的效率与性能。
        2。将相关的块写入到相近的位置而大大缩短了寻道时间,硬盘的悬臂不用来回摆动,积少成多还是可观的时间,特别对压力大的系统。
        3。将顺序的块放置在RAID 阵列中某个单一磁盘上的方式,减少了大文件读出时
的磁头冲突。

       安装提出的要求来实现一套新的文件系统,WAFL就是这个实现的结果。
ender at 2008-6-25 16:16:22
WAFL 能把文件系统的任何数据块 (除包含root inode 的数据块外,前面提到过这个是在硬盘的固定位置 )写到磁盘中的任何位置上。
而在一般的文件系统中,诸如inode、位图和元数据被保存在磁盘中的固定位置上,这就妨碍了文件系统写入性能。硬盘的悬臂先回到元数据的位置,再移动到数据存储的位置。这个动作来回重复总比不动要用的时间多,很好理解。
例如,对某一新近更新的文件,不能将它的数据块和inode 在磁盘上的紧邻位置加以存储。而WAFL 则相反,它可以在磁盘上的任何地方加以写入,从而创造性的优化了写入性能。
ender at 2008-6-25 16:25:51
NVRAM 是带有电池的独特内存,即使切断外来电源,仍然可以由电池供电保证存储数据的安全。 在不正常停机之后,WAFL重演所有“日志”以防丢失。日志类似于数据库线上交易处理 (OLTP) 数据库系统的Log 记录。WAFL 采用内存,而不是硬盘来保存日志(用硬盘的话不如直接写到数据盘里),因为比硬盘快一千倍,提供极高的响应速度。即使有大量的交易,响应速度也不会变慢。当使用者的写入要求送到NVRAM 并完成时,马上可以接受下一笔的写入要求,又可同时保护metadata 及data 的交易纪录。当NVRAM 收集这些写入要求到达某种条件时,WAFL 会先经过计算并整理过后再批次写入到硬盘。
       现在的阵列很多都带有电池,能保证市电中断的情况下把CACHE中的所有数据全部写入到磁盘中后,阵列再自行关闭。再加上数据库的特性,基本可以保证数据的完整性。极端的情况听说过cache坏掉的,特别是没有mirror的板坏了以后很惨。毕竟存储的设计都是提交到cache就算是成功,这个时候坏了不丢数据很难啊。

[ 本帖最后由 ender 于 2008-6-25 16:30 编辑 ]
ender at 2008-6-25 16:34:30
为在磁盘上保存完整的文件系统一致性版本,WAFL 文件系统至少每10 秒会生成一个内部数据快照SnapShot,称为一个一致点(consistency point)。当时Filer 启动时,WAFL 总是使用时间最近的一致点版本,这意味着即使发生掉电或者其它严重系统错误后,系统再次投入正常运转也无需耗时的文件系统检查工作。Filer 在仅仅1 到2 分钟的时间内即可正常启动,而这段时间也主要是花费在磁盘定位和内存检查上。
      恢复时间根据应用的需要来确定了,几年前北京机场的那次故障恢复时间就够很多人受了。
ender at 2008-6-25 16:43:26
WAFL 通过创建内部SnapShot 来避免系统在不正常停机后对文件系统进行检查,这种特殊的SnapShot 叫做一致点,每过几秒钟就会自动创建一次。不同于其它SnapShot 快照的是,一个一致点没有名字,而且不能访问它。同于其它SnapShot 快照的是,一致点是整个文件系统的一个完全自一致的映像。当WAFL 重新启动时,它简单地回放为最近的一致点。
ender at 2008-6-25 16:48:38
在一致点之间,WAFL 也在把数据写到磁盘中,但是它仅仅写到不使用的块中,如此呈现的数据块树型结构的最近一致点仍然是完全不变的。在两个一致点之间,WAFL 需要处理数百或者成千上万的写入请求,因所以磁盘上面的文件系统映像在数秒内会保持不变,直到WAFL 写入新的一致点。磁盘上面的文件系统映像也会自动更新。
ender at 2008-6-25 17:01:34
前面说到了cache坏掉的情况,那如果NVRAM坏了咋办?
   Filer中同时有cache和NVRAM。一起坏的可能性比较小吧,这个问题还要找高手出来解答一下。

   在NOW上查了一下,说是当两块电池都失效时,系统会crash掉。电池电量低的时候会在24小时后关机。平时可以用
"sysconfig -v" 命令来监控看电池的容量是否正常。
   另外看了更换电池的PDF,如果是两个filer做HA,还行。关掉一个换电池就是了,但看那个步骤还是有电麻烦。以后是不是该改成在面板上直接插拔的,那样才方便。

[ 本帖最后由 ender 于 2008-6-25 17:12 编辑 ]