分类: LINUX
2012-01-18 10:42:38
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%,而且不够可靠。虽然Berkeley在1978年设计了fsck来修复文件系统,通过把磁盘块增加到1K,将性能提高了2倍,但仍然未彻底解决性能问题。
FFS中提出的很多思想、方法至今仍在使用。为了提高性能,FFS将磁盘分配单位block大幅提高到4K;同时为了减少内碎片导致的空间浪费,提出了fragment方法,将一个block分割为多个固定大小的fragment,对于小块数据给其分配fragment,而不是block。
为了减少磁头寻道时间,FFS将磁盘划分为block group(块组),每个 BG包含superblock,inode,data block;一个文件的inode和data尽可能分配到同一个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年后才真正焕发光彩!WALF、ZFS都采用了LFS的思想和方法。
有兴趣者可以阅读该论文。
6.
Adam Sweeney. Proceedings of the USENIX 1996 Annual Technical Conference
San Diego, California, January 1996
XFS是90年代中期 Silicon Graphic公司面向高性能计算机开发的优秀的文件系统,后来被移植到Linux系统。XFS迄今仍在大量使用,国内很多存储产品就是基于该文件系统。
XFS是64位文件系统,因此可以管理极大的磁盘空间和数据。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公司后来推出的ZFS和WAFL如此相似。
8.
Jeff Bonwick, Matt Ahrens, Val Henson, Mark Maybee, Mark Shellenbaum. 2002.
可以毫不夸张地说,ZFS是现代文件系统的“王冠”,前无古人,后无来者(本人斗胆猜测15年之内无出其右者。目前热炒的ext4,brtfs等至多也只能是ZFS的模仿而已)。ZFS文件既是几十年来文件系统优秀技术的集大成者,更是一次彻底的颠覆和重生。
其主要特色包括:
l ZFS设计了全新的文件系统的结构,高效整合了卷管理功能和RAID功能,极大地简化了系统管理(在Linux下使用过RADI、LVM的人对此将有深切体会);而文件系统结构本身却变得更加清晰、精简,其代码量还不到Linux LVM模块的1/5;
l 能够自动检测并修改文件数据的损坏;对文件系统的元数据实现冗余保护;采用“Redirect on write”方式来组织数据,能够非常高效地创建快照。为数据提供了最全面的保护。
l 128位文件系统,可以管理高达258 ZB数据!(每个 为 270 字节);
l 基于更加智能的预读(Prefetch)和cache管理策略、为同步写提供了专门优化支持(ZIL),以及“Redirect on write”带来的写合并优化等,ZFS具有最优秀的性能。
ZFS目前已被移植到Linux(2010年9月15日)。强烈建议技术爱好者对代码进行学习研究。