1 2 3 4 5 下一页
作者及顾问:Marshall Kirk McKusick;卡内基梅隆大学 Gregory R. Ganger中文翻译:北京工业大学计算机学院 李鑫 <delphij@cnfug.org>
--------------------------------------------------------------------------这篇论文最初发表于1999年6月6日至11日举行的USENIX年度技术会议中,Freenix会议录的第1-17页。其版权归Marshall Kirk McKusick和Greg Ganger所有,作者保留所有权力。这篇论文在作者的许可下被翻译和重新发布。在保持此版权宣示完整的前提下,允许对本文进行非商业目的的重新发布。--------------------------------------------------------------------------
摘要
传统上,维持掉电或系统崩溃后的文件系统一致性维护主要采用两种方法:其一是对存在依赖顺序的元数据(metadata)进行同步写入,其二是用写通式日志来将原子操作组织在一起。Soft Updates,一种不同于它们的方法,是一种通过保证元数据按依赖顺序更新来确保磁盘上文件系统的总保持一致的实现机制。使用SoftUpdates避免了对于独立日志或大量同步写操作的需求。同时,它还能将很多以前独立且同步进行的操作合并,从而在文件操作密集的环境(例如程序开发、邮件服务器等)中减少40%-70%的写操作。在提高性能的同时,SoftUpdates还可以更好地维持文件系统的一致性。通过保证不一致性仅存在于未声明的块或i-节点,SoftUpdate能够消除对于系统崩溃后运行文件系统检查程序的依赖。这样,在重启后文件系统立即处于可用状态。另外,可以通过一个后台任务在处于运行状态的文件系统中回收丢失的块和i-节点。
这篇论文描述了集成到4.4BSD快速文件系统(Fast Filesystem)中的一个SoftUpdates实现。它详细介绍了建立一个成品级质量的系统时,对研究原型以及BSD系统做的修改。同时,它也讨论了在将SoftUpdates从研究转入现实中的经验、难处,以及从中得到的教训; 那些非常规的文件系统操作(例如,fsck和‘fsync’),需要进行的重新考虑和增加的代码。最终实现的系统得到的体验证明了早先的研究成果:SoftUpdates很好地融合进了现有的文件系统,保证了元数据关联性,并基本达到了最佳的性能。
第1节 研究背景与导言
元数据(如文件目录,i-节点,以及空闲块映射表)指明原始数据存储(raw storage)的结构。元数据提供指针和描述符,通过它们将磁盘上的扇区联结成文件,并区分它们。为了长期维持可靠存储,文件系统必须在遭遇非预期的系统崩溃,如断电和操作系统故障时,保证元数据的完整性。由于类似的崩溃通常导致保存于易失性主存中的全部信息的丢失,保存在非易失性存储器(例如,磁盘)中的信息必须总具有足够的一致性以便确定性地重建文件系统的一致。特别地,文件系统在磁盘上的镜像绝不能包含悬挂指针,也不能有足以导致二义性的资源所有权指针,或未引用的活动资源。维持这些原则通常需要顺序地(或按原子操作分组)更新小的元数据对象。
标签: