Chinaunix首页 | 论坛 | 博客
  • 博客访问: 39456
  • 博文数量: 54
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 320
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-18 10:47
文章分类
文章存档

2012年(28)

2011年(26)

我的朋友

分类:

2011-12-07 19:41:02

原文地址:文件系统文献推荐 作者:LunarBull

转自:

一.综述与展望

1.        

R.J.T.Morris B.J.Truskowski. IBM SYSTEMS JOURNAL, VOL42, NO2, 2003

 

该文献对存储系统的发展进行了全面回顾,从存储介质-磁盘、存储系统的结构、人类社会信息增长的规律都进行了讨论。论文数据充实,观点精辟,高瞻远瞩。 

二.主机文件系统 

2.        

Dennis M. Ritchie and Ken Thompson. ACM Symposium on Operating Systems Principles Yorktown Heights, N.Y.: October, 1973

 

这篇论文是UNIX操作系统的最经典文献,发表于1973年。入选ACM具有里程碑意义的25篇经典文献之一。 该文献奠定了现代UNIX操作系统的基本结构,包括文件系统的结构与功能。

早期的计算机系统主要用于事务处理和科学计算,文件系统的功能也主要是管理结构化的数据。从现代的观点看,其功能是数据库和文件系统的混合。在当时不同操作系统提供的文件访问API都是不兼容的。

该论文首次提出以“流”的方式来实现文件的访问,提供了极大的灵活性,从此奠定了现代文件系统的基本结构、功能和接口。

阅读这篇文献, 不得不为大师们的智慧、深邃的洞察力和远见而叹服。

 

3.        

Marshall Kirk McKusick, William N. Joy. etc .  ACM Transactions  on Computer Systems, Vol. 2, No. 3, August 1984, Pages 181-197.

 

FFS 是最早注重于性能优化的文件系统(文件系统于1980年发布),可以认为是现代文件系统的鼻祖。在FFS之前,UNIX系统使用的是面向PDP-11设计的文件系统,磁盘分配的单位为512字节,系统性能低下,吞吐量只有磁盘带宽的2-4%,而且不够可靠。虽然Berkeley1978年设计了fsck来修复文件系统,通过把磁盘块增加到1K,将性能提高了2倍,但仍然未彻底解决性能问题。

FFS中提出的很多思想、方法至今仍在使用。为了提高性能,FFS将磁盘分配单位block大幅提高到4K;同时为了减少内碎片导致的空间浪费,提出了fragment方法,将一个block分割为多个固定大小的fragment,对于小块数据给其分配fragment,而不是block

为了减少磁头寻道时间,FFS将磁盘划分为block group(块组),每个 BG包含superblockinodedata block;一个文件的inodedata尽可能分配到同一个BG中,从而能够减少读取文件时磁头移动的距离。其它改进有支持长文件名,quota等。

由于现代硬盘对外接口中已经屏蔽了硬件结构的细节,因此将多个磁盘划分为块组的方法已不能再用以减少磁头寻道时间,但是将磁盘划分为多个单位(有些文件系统称为Allocation Group)的做法目前仍然被普遍采用,它可以增加关键数据的冗余,提高可靠性;减少磁盘管理的时间、空间复杂度;提高磁盘控制数据访问的并发性(多个AG可以并发访问)。

 

4.        

David A. Patterson, Garth A. Gibson and Randy H. Katz. Proceedings of the International Conference on Management of Data (SIGMOD), June 1988

 

RAID技术是计算机科学与技术领域在80年底最重要的成果之一。通过组织多个磁盘协调工作实现并发访问和数据冗余,极大地提高了磁盘子系统的性能和可靠性。

David A. Patterson因该项成果而无愧于计算机科学大师地位。

 

5.        

MENDEL ROSENBLUM, JOHN K. OUSTERHOUTLFS. ACM Transactions on Computer Systems, Vol 10, No. 1, February 1992, Pages 26-52

 

回首文件系统发展历程,可以看到在80年底末、90年代初期兴起了文件系统可靠性研究的热潮,其成果主要为RAID、日志文件系统(即在文件系统中加入日志来提高系统可靠性和可用性)、日志结构文件系统(将整个文件系统作为日志来实现!)

LFS第一次提出将文件系统作为日志来实现!虽然数据库大师、图灵奖获得者Jim Gray早在1981年已指出“ Update in place is an poison apple”,但在文件系统领域,LFS却是第一次真正尝试用这种思想来设计文件系统。

作为文件系统,LFS本身是不完善的,有一些问题未得到有效解决,因此在实践中未得到普遍使用。LFS的思想在2000年后才真正焕发光彩!WALFZFS都采用了LFS的思想和方法。

有兴趣者可以阅读该论文。

 

6.         

Adam Sweeney. Proceedings of the USENIX 1996 Annual Technical Conference

San Diego, California, January 1996

 

XFS90年代中期 Silicon Graphic公司面向高性能计算机开发的优秀的文件系统,后来被移植到Linux系统。XFS迄今仍在大量使用,国内很多存储产品就是基于该文件系统。

XFS64位文件系统,因此可以管理极大的磁盘空间和数据。XFS在设计时充分考虑了系统的可扩展性,大量采用B+树结构来组织管理数据,如目录;结合B+树和“extent”管理磁盘空间、文件数据块等;基于文件的方式管理inode,因此文件系统可以动态扩展。

XFS大量使用缓存技术来提高每次写入磁盘的数据量(延迟高达30s),以减少磁盘寻道时间并提高系统吞吐量。 

 

7.              

Dave Hitz, James Lau, and Michael Malcolm. Technical Report 3002, USENIX Winter 1994 — San Francisco, California

 

       NetApp是全球NAS存储系统的第一品牌,其制胜法宝就是“WAFL”文件系统。

WAFL 是针对network file server而设计、定制的文件系统。其根本特征是“Redirect on write”,既当文件被改写时,新数据写入到新的磁盘位置,而不覆盖旧数据。其带来的直接益处有:

l  能够非常高效地支持“Snapshot”,可以创建任意多的快照而不影响文件系统的性能;

l  由于数据总是写入到新的位置,因此可以将新数据一次写入到磁盘的连续存储空间中,可以优化写性能;对于随机写入,性能提升效果更加显著;

从公开文献看,WAFL是最早利用日志结构文件系统来实现高效支持Snapshot的文件系统。

 

据说WAFL的设计人员出自于SUN公司,这也能够解释为什么SUN公司后来推出的ZFSWAFL如此相似。

 

8.        

Jeff Bonwick, Matt Ahrens, Val Henson, Mark Maybee, Mark Shellenbaum. 2002.

 

可以毫不夸张地说,ZFS是现代文件系统的“王冠”,前无古人,后无来者(本人斗胆猜测15年之内无出其右者。目前热炒的ext4brtfs等至多也只能是ZFS的模仿而已)。ZFS文件既是几十年来文件系统优秀技术的集大成者,更是一次彻底的颠覆和重生。

其主要特色包括:

l  ZFS设计了全新的文件系统的结构,高效整合了卷管理功能和RAID功能,极大地简化了系统管理(在Linux下使用过RADILVM的人对此将有深切体会);而文件系统结构本身却变得更加清晰、精简,其代码量还不到Linux LVM模块的1/5

l  能够自动检测并修改文件数据的损坏;对文件系统的元数据实现冗余保护;采用“Redirect on write”方式来组织数据,能够非常高效地创建快照。为数据提供了最全面的保护。

l  128位文件系统,可以管理高达258 ZB数据!(每个   270 字节);

l  基于更加智能的预读(Prefetch)和cache管理策略、为同步写提供了专门优化支持(ZIL),以及“Redirect on write”带来的写合并优化等,ZFS具有最优秀的性能。

 ZFS目前已被移植到Linux2010915日)。强烈建议技术爱好者对代码进行学习研究。

阅读(133) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~