Lead Ahead
WAFL 2----WAFL 的设计
上一篇 /
下一篇 2006-12-29 18:27:52
/ 个人分类:原创/翻译
1.2 WAFL的设计
*A${/y.XK/|0WAFL是一种为网络文件访问优化的一种兼容的文件系统。他具有独一无二的特性:他存储了足够多的信息,来让它和很多不同的客户环境系统兼容;同时在提供给多种类型的网络客户端时,也为最大化硬盘容量的读写操作做出优化。DOIT博客$E6x+n$?S-x^
DOIT博客ElS{4M
WAFL是一个为网络文件访问优化的一种独一无二的文件系统。在很多情况下WAFL相似于UNIX的文件系统,例如Berkeley Fast File System和TransArc的Episode File System。它是一个使用inode来描述文件的基于块的文件系统。它使用了4KB的块而没有分段。但他的独特之处在于它能够存储足够多的元数据,这使得它能跟任何其他的主流操作系统(UNIX,Linux和Windows)一起运行,正如跟像FCP和iSCSI这样的块级别的协议。它还包含了独特的优化功能,能有效地增加它在磁盘块和网络接口之间的传输数据的能力,这目前比市场上任何通用的操作系统都要好。
'{%C
LH rI3s?L3L0
v3r%A7wZ0硬盘的可用空间的一小部分被用来存储文件系统有关的数据,这个可以被看作是一种消耗。一个文件系统会把剩余的空间分成小的而大小一致的段。在UNIX的世界里,这些段也是被称之为inode。
1{ R\m"qf6n"h)mY0
DOIT博客ts[.hu2F#sFk
每一个WAFL的inode都包含了指向它属于文件的那一个块的指针。不同于FFS的是,所有的在WAFL的inode的块的指针,都涉及到同一级别的块。因而,对于小文件的inode,使用在inode里的块的指针来指向数据的块。大的文件的指针的inode,指向了那些指向真实文件数据的指针的间接的块。对于大文件的inode,指向了双倍的间接的块并不断进行下去。对于非常小的文件,数据存在inode本身存放块指针的地方。通过这样存储数据和块,可以减少文件系统的I/O,因为inode的访问实际上能带来第一层的块指针和甚至是真正的文件目录。
*T!`x/jY
~d0 DOIT博客#c*ynT$do$tq$d#a
1.1.1 在文件中的元数据DOIT博客U'``G2J
像Episode文件系统,WAFL把元数据储存在文件中。WAFL的三种元数据是:inode文件,它包含了文件系统的inode;block-map文件,它能识别闲置的块;inode-map文件,它确定了空闲的inode。术语map是用来取代bit map的,因为这些文件对每一个条目(entry)使用了多于1 bit的空间。Block-map文件的格式如以下细节所描述。DOIT博客3[ p.j@8Q.v/m
DOIT博客XP+Qg j xu3k
因为元数据存放在真实的文件里(虽然完全被
9^B;[hdh7r7s0 隐藏起来),所以这些文件是被当作数据文件
'I|Nhj3s8u t \0 一样看待。他们接受一样的保护和性能调优,DOIT博客
D2q&e _9z|/I/x1]I#Feq
因为他们被描述为用户数据文件。DOIT博客"`7KV*xM,o v5C
DOIT博客/z7LXT1l H
U
把元数据保留在文件里,这样可以允许WAFL把元数据的块写在磁盘的任何地方。这是WAFL的名字的来源,代表了“写在任何地方的文件设计”。这种“写在任何地方”的设计允许WAFL,能有效的和RAID运行;通过时序安排多个的写到同样的RAID的stripe,因为WAFL只需要更新stripe里的一个block,所以尽可能避免了通常遇到RAID导致的4-to-1的写惩罚。
)|3B&BIkE/s'vC$nP:O0 DOIT博客#L-TfF#R A j&Q
把元数据保留在文件里,也使得在运行中增加文件系统的大小变得更加容易。当一个新的硬盘被增加的时候,N系列的村村系统会自动地增加元数据文件的大小。假如默认的文件系统里的inode的大小太小,系统管理员可以手动地增加它,但这一般来说并没有必要。最后地,“写在任何地方”设计能使用Snapshot使用的copy-on-write的技术。为了让snapshot能工作,WAFL必须能够写任何新的数据(包括了元数据)到硬盘的新的特定区域,而不是把以前的数据覆盖掉。如果WAFL把元数据储存在硬盘的固定的特定区域,这就会让snapshot无法工作了。
m*aWM)]7m0 UK6lo7P+F[r+^0
导入论坛
引用链接
收藏
分享给好友
管理
举报
TAG: