MCPLive > 杂志文章 > 幕后操盘手的升级 ReFS文件系统解析

幕后操盘手的升级 ReFS文件系统解析

2013-03-20郎艳2013年3月上

信息时代,大家的生活再也离不开形形色色的计算设备——PC、智能手机、平板电脑以及各种各样的互联网服务器。无论什么形式,这些计算设备都基于同样的基本原理——存储-计算,因此存储系统的重要性不言而喻。MCer也许会说“与PC相关的配件我们都已经相当熟悉,与存储紧密相连的硬盘也不例外,型号、规格,孰优孰劣基本是信手拈来。”但你可能并不十分了解存储硬件的幕后管理者——文件系统。没关系,借微软新一代文件系统ReFS的面世,让我们带大家一起来了解这个神秘的操盘手。

幕后操盘手的升级 ReFS文件系统解析

MCer应该对“文件系统”这个名词并不陌生,例如常见的Windows XP系统多使用FAT32文件系统格式化硬盘,Windows 7则默认使用NTFS文件系统格式化硬盘。这种组合方式也许会让不少人误以为NTFS是个随Windows 7系统一同面世的新技术。而很少有人知道,NTFS的起源可以追溯到上个世纪90年代初。从1993年Windows NT 3.1当中的v1.0版一路走来,NTFS的版本已经进化到Windows 7当中采用的v6.1,至今约有20年的历史了。只可惜大多数人认识NTFS的契机,是因近几年逐步兴起的高清视频导致的拷贝错误。FAT32通常不支持超过4GB的单个文件,而高清视频动辄超过20GB,导致用户在向采用FAT32的硬盘内拷贝视频文件时,系统会弹出无法拷贝的错误提示框。哪怕硬盘的剩余总容量足够多,也依旧不能拷贝单个文件容量过大的视频。此外,FAT32的分区容量大仅支持32GB的弊端,也是随着2005年前后硬盘总容量突破100GB才开始逐渐显现。所以多数用户从FAT32过渡到NTFS还是近几年的事。就在NTFS相对FAT32的优势才刚开始被广大用户所重视时,微软新的ReFS文件系统已经随着Windows Server 2012的'发布(原名Windows Server 8,是Windows 8的服务器版本)闯进我们视野。这次,让我们先睹为快。

和Windows XP用户普遍使用的FAT32相比,NTFS确实有诸多优点,其中为人所知的优点就是支持超过4GB的单个文件,以及大2TB的磁盘分区。除此之外,NTFS在安全性、可靠性、文件管理效率上其实也要优于FAT32。以上优点,让NTFS在近两年迅速成为使用为广泛的文件系统。

不过时至今日,24×7全天候数据应用对数据使用效率和安全性有了更高的要求,NTFS已现疲态。特别是因SSD普及带来的分级存储应用,老文件系统难以发挥出更好的效率,也难以避免偶然断电造成的文件丢失等安全性问题。为此,微软在新一代服务器操作系统Windows Server 2012当中引入了ReFS。

ReFS全称是Resilient File System(弹性文件系统),微软内部初研发代号为“Protogon”。ReFS 基于NFTS拓展研发而来,向下兼容现有的NTFS。根据微软的解释,以ReFS格式存储的数据,可以由客户端当作NTFS数据来访问,减少企业用户向ReF S过渡成本。作为新一代文件系统,ReFS针对新一代存储系统的软、硬件和使用场景进行了优化。此外ReF S还支持超大规模文件、目录和卷,支持高达4PB的系统存储池,不限制系统中存储池数量,支持跨设备共享存储池。同时,顾名思义,ReFS还具有对数据的高度弹性管理能力。微软是如何将ReFS打造成如此全能的,ReFS相比NTFS大的改进在哪?接下来就让我们从设计思路开始为你一一道来。

良好的兼容性

代码重用

就文件系统API来说,兼容性是重要的,也是具挑战性的设计要点。兼容性问题高度依赖于程序的代码、调用时间和硬件配置。如果重写文件系统语义代码,无疑会导致不可预见的兼容性问题。因此,在构建ReFS文件系统时,微软依旧使用了负责实现NTFS语义的代码。这些代码实现了文件系统接口(读、写、打开、关闭、修改通知等),维护内存中文件和卷状态,执行安全措施,维护内存缓存和同步文件数据。确保了ReFS向下高度兼容NTFS。

完美兼容Windows传统存储堆栈

ReFS和其他文件系统一样,可以插入存储堆栈,以尽可能提升和周边应用的兼容性。例如,它可以无缝地利用Bit Locker加密,用于安全地访问控制列表、USN日志、更改通知、符号链接、文件ID和操作锁等。我们预计当前的大多数文件系统过滤器无需或者只需较小改动,即可无缝地用于ReFS。微软自己的测试也证实了这一点。例如现有的Forefront防病毒解决方案可以在ReFS当中正常工作。

可靠的读写策略

元数据

ReFS开始支持利用元数据对数据进行管理和维护。这允许存储系统通过更少、更复杂的I/O指令将相互关联的海量数据混合写入存储介质。同时,这种全新的方案还利用到分层分配方案等措施来保持读取的连续性。这能显著提升硬盘的写效率,特别是对采用快速闪存作为介质的S SD硬盘。更少的I/O请求能显著减缓主控芯片的压力,降低数据传输前的准备时间,让写操作更加高效。

可靠的更新策略

可靠并且高效率地更新磁盘是文件系统设计的另一个重点,也是有挑战性的地方之一。设计人员花费大量时间来评估各种方案,他们曾经考虑过传统的日志结构文件系统,但终放弃。因为他们认为这种方案不再适合Windows所面对的复杂应用环境。之前的NTFS就是依赖日志来确保磁盘的一致性,这种方案会在数据更新时覆盖原有的控制类元数据,然后使用日志来持续跟踪变化,以便在数据发生错误时进行回档或从断电当中进行恢复。这种依靠日志结构的系统优势是能够维持现有的元数据结构布局,有助于提高读取性能。而主要缺点则是写入的随机化,倘若在写入过程当中断电,存储设备的更新动作会因“覆盖”操作损坏之前的元数据,即所谓的“断写”。

为了大限度地提高可靠性和彻底避免断写情况的发生,ReFS选择了写入备份方案。这种方案在某种程度上借鉴了一个很老的概念——“影式分页”,依靠备份来更可靠地更新元数据。在数据发生更改时,它不再更新现有的控制数据,而是将新的控制数据写入到不同的位置,以保证更改完成之前拥有2个甚至更多的数据副本。而且,由于ReFS的上层架构派生于NTFS,所以新的模式可以无缝地利用已经发展得高度成熟的现有故障恢复逻辑。借此迅速利用正确副本恢复遭到破坏、丢失的数据。同时,复用现成方案也能免去大费周章的开发和测试,避免不可预知的一些兼容性问题的发生。

磁盘损坏后的高度容错性

正如前面提到的,ReF S的设计目标之一是及时发现和纠正数据损坏。这不仅为了确保数据的完整性,而且还兼具提高系统可用性和降低多存储设备互联时的连带损坏风险等重任。针对此,微软为它引入了两个高效的技术——“隔舱”设计和专用的“完整流”。

“隔舱”设计思路其实源自造船业早已采纳的隔舱结构。当文件系统出现损坏时,ReFS会像船舱隔板隔离漏水船体一样,将错误卷隔离开来,而其他卷则不受影响,用户依旧可以正常地访问剩余卷。与此同时,ReFS还会尽可能将损坏卷中的可用数据予以恢复,进一步降低数据丢失。

此外,ReFS还增加了一个“完整流”功能,可以对文件内容进行校验。实际使用中,存储系统的许多故障不涉及硬件介质的故障,而是由数据损坏、丢失或错写造成。而这正是ReFS可以通过校验检测到的故障。因为ReFS校验会随数据写入自动完成备份,因此即便写入过程当中断电,我们总有文件的正确副本。一旦检测到这种故障,ReF S会读取所有可用的数据副本,并根据校验和验证结果,选择正确的副本来修复损坏的数据。

对抗“位衰减”

所谓“位衰减”是指硬盘当中的部分数据会随着时间推移而自损。实际上在我们的存储系统中,常会存在某一部分空间很少被读写的情况。若这种很少被操作的空间遇到硬件故障,将很难被系统及时检测到,更别提应急处理。如果你的某些不常用的重要数据恰好存放在这个区域,那么当你需要再次读写或检测这些数据时,很可能发现它已经丢失。更糟糕的情况是其备选副本可能也因为其他不可预见的错误而损坏或丢失,没办法恢复你想要的重要数据。

从ReFS架构图来看,其上层部分引擎源自于NTFS的代码复用,确保了兼容性。其下层部分采用全新的存储引擎,来实现如主文件表(MFT)等其他创新功能。
从ReFS架构图来看,其上层部分引擎源自于NTFS的代码复用,确保了兼容性。其下层部分采用全新的存储引擎,来实现如主文件表(MFT)等其他创新功能。

为了对付位衰减,ReFS添加了一项系统任务,系统将定期自行扫描镜像存储空间中驻留在ReFS卷上的所有元数据和完整流数据。扫描过程会读取所有冗余副本并使用R e F S校验和验证其正确性。如果校验和不匹配,就会使用正确的副本及时修复损坏的数据。以此保证不常用的数据也会被及时检测,同时所有数据总有一个备份处于完整可靠的状态。

数据打捞

微软预计很多用户会结合镜像存储空间使用ReFS。在这种情况下,文件系统能利用先进的“完整流”和“位衰减”技术轻松地自动完成数据的检测、修复工作。然而,也不排除有些用户不采取备份措施,即没有镜像存储空间。或者系统遇到某些极端情况,镜像存储空间当中的卷也可能遭到了破坏。例如系统内存故障可能会破坏数据,这些被破坏的数据进入磁盘就会破坏所有冗余副本。所以,ReFS有了“隔舱”技术。但移除损坏卷的目的是要确保不可修复的损坏不会影响到其他良好数据,而不能解决被移除卷中的数据恢复问题。针对此,ReFS增加了“数据打捞”特性,以帮助用户避免脱机风险。如果一个目录中的单个文件已经损坏,并且不能自动修复,ReFS会将该部分从系统命名空间当中移除。但这还并未结束,重要的是,它还会对该卷余下部分的数据进行打捞。面对无法打开或删除的损坏文件,管理员通常也会束手无策。但现在他们能借助数据打捞这个高级功能,从打捞出的备份数据中尽可能地获取原文件。更重要的是,这个打捞操作通常可以在一秒钟内完成,并不会明显影响系统性能,也无需让整个存储系统脱机。因此,即使无法完全恢复问题数据,这个机制也能保证整个系统不会因为一处错误就必须承担昂贵的脱机检测费用和数据离线后带来的潜在损失,用户从此可以安心部署超大容量数据卷。

更好的扩展性——专用的B+树结构

ReFS架构当中,结构的构建和后续操作皆由存储引擎处理,这个存储引擎将使用专用的B+树形结构,这也是ReFS中唯一用于表示硬盘中所有信息的数据结构。这种结构很容易设计出一种通用的嵌入接口,系统将利用该接口来实现文件、目录等结构的管理。

如上图所示,ReFS使用B+树形表来存放数据目录,因此目录可以高效扩展到极大规模。举个例子,下一级树形结构的根目录可以存储于上一级树形结构的某一行数据中。与此同时,这种相对单一的结构也极大地减少了代码量,降低了系统资源的占用量。ReFS中的接口将可枚举的所有嵌入状态组合成“表”的概念。大部分表具有唯一的ID,系统可以通过该I D来引用特定的表,并通过一个总表为系统中的所有此类表建立索引,以方便任何数据或控制文件的访问操作。这意味着ReFS系统中的文件和目录规模再大,也不会明显影响存储系统性能,突破了NTFS文件系统在这方面的局限性。

此外,ReFS还减少了对文件的一些限制,为大规模扩展做好准备。例如ReFS可以支持大16EB(16×106TB)的单个文件;当簇大小为64KB时所支持的大卷容量为1YB(1×1012T B);分别将文件名和文件路径的限制扩展到32KB大小的Unicode格式字符串。当然,也会有其他因素会影响实际阈值。比如包括内存容量在内的系统硬件配置、各种系统组件设置的权限不同等,会导致ReFS系统存在不同的限制阈值。但不管怎么说,1YB的上限,在现在看来无疑是个天文数字,至少短时间内用户们可以不用担心存储系统的扩展能力了。

ReFS文件结构
ReFS文件结构

写在后

由于需要大规模转移现有数据,所以可以预见,与当年微软引入NTFS的情况类似,向ReFS的全面过渡也不会在朝夕之间。它将被首先部署到服务器环境,如Windows Server 2012上。值得注意的是,现阶段其实无法从ReFS卷启动系统,还不太适合PC。也许包括此问题在内的一些实用性问题解决后,ReFS才会逐渐向下渗透,并终入驻桌面平台,取代NTFS成为主流。总的来说,ReFS作为微软潜心打造的NTFS替代者,其大的进步是在数据的可靠性上,相较而言其他新功能并不显眼。不过在硬盘有价、数据无价的当下,这样的设计显然能迎合用户的需求,带给大家足够的安全感。与此同时,它仍然维持了对NTFS的兼容性,具备了成为优秀文件系统的潜力。只是ReFS的向上兼容性不太好,当前的Windows 7以及之前的Windows版本暂时无法读取ReFS卷,只有期待后续更新。希望随着微软逐步加大对Re F S的推广力度和功能改善,我们能很快见识到更完美、高效的ReFS,重要的是希望能尽快在桌面平台上一睹它的威力。

什么是文件系统,和PC性能的关系大吗?

文件系统的英文名“File System”,是一种存储和组织PC内文件和数据的方式。它使系统能更加便利地访问和查找硬盘内的数据,通常作为操作系统的一个基本组件随系统一起更新、发布。简单来说文件系统的作用是维护文件在物理设备中的位置,对PC来说这个物理设备主要是指HDD或者SSD。一旦用户要访问某个文件,则可以通过文件系统快速定位存储设备中的相关位置,并对文件实现读写操作。如果我们将文件比作图书馆的藏书,文件系统就相当于图书馆的检索系统。缺乏这个系统,要在浩瀚的书海中找到需要的图书简直就是天方夜谭。因此,文件系统相当于存储系统的基石,是极为重要的组成部分。由此也不难想象,一个高效的文件系统,能更加有效地帮助我们快速访问文件,降低计算机系统的数据访问整体延时,提升应用流畅度。可见,它的优劣会直接影响PC系统的整体性能发挥,特别是在存储性能逐渐成为PC性能一大瓶颈的当前,文件系统的优劣,更应该受到PC用户的关注。

LinuX OS发展线

Ext4基于Ext3扩展而来,优异、稳定的表现让它备受推崇。而智能手机的兴起更是诞生了不少有关用Ext4和刷机的话题,优化支持Ext4也成了不少厂商的目标
Ext4基于Ext3扩展而来,优异、稳定的表现让它备受推崇。而智能手机的兴起更是诞生了不少有关用Ext4和刷机的话题,优化支持Ext4也成了不少厂商的目标

2001年11月(Linux 2.4.15)诞生的Ext3是个优秀的文件系统,奠定了日志式文件系统的基础。
2001年11月(Linux 2.4.15)诞生的Ext3是个优秀的文件系统,奠定了日志式文件系统的基础。

Linux的开放性也让文件系统变得多样,分支众多难以理清标准发展路线,不过当前Ext和HFS无疑是具代表性的两个分支。

Linux的开放性也让文件系统变得多样,分支众多难以理清标准发展路线,不过当前Ext和HFS无疑是具代表性的两个分支。

Windows发展线

古老的文件系统之一FAT12,它的历史要追溯到Dos的诞生。
古老的文件系统之一FAT12,它的历史要追溯到Dos的诞生。

随着Dos3.0一起打江山的FAT16,算是一款使用时间超长的文件系统。也因为早期PC对文件系统的要求还不高,才让它并不出色的规格也能久经考验。
随着Dos3.0一起打江山的FAT16,算是一款使用时间超长的文件系统。也因为早期PC对文件系统的要求还不高,才让它并不出色的规格也能久经考验。

NTFS实际上早于FAT32面世,它于1993年随WindowsNT 3.1推出第一版v1.0。只是桌面平台接触得太少。
NTFS实际上早于FAT32面世,它于1993年随WindowsNT 3.1推出第一版v1.0。只是桌面平台接触得太少。

FAT32随着Windows 95而面世,1996诞生到2006年前后都是常见的文件系统,成为当之无愧的一代霸主。
FAT32随着Windows 95而面世,1996诞生到2006年前后都是常见的文件系统,成为当之无愧的一代霸主。

windows 7带来了NTFS v6.1,NTFS越来越完善,也正式进入应用高峰期。但与此同时,新的ReFS开始曝光。
windows 7带来了NTFS v6.1,NTFS越来越完善,也正式进入应用高峰期。但与此同时,新的ReFS开始曝光。


早曝光的Protogon,其实就是ReF S的前生。只是当时以为它会随着Windows 8一起到来,而现在才知道它将先登录服务器平台,再向桌面延伸。

表:主流文件系统主要规格、性能对比一览

表:主流文件系统主要规格、性能对比一览

ReFS关键设计目标

ReFS作为微软新一代操作系统的专用组件,微软在开发之初就为它制定了几个关键设计目标。

其一:在增加新功能的同时,保持内建NFTS功能子集,以维持向下的高度兼容性。但并不是完全收纳,而是去糟取精,放弃一些价值有限,且会显著增加系统复杂性、占用大量系统资源的功能。

其二:必须完善自动校验、更正数据功能。由于一些意外因素,数据可能会遭到破坏,因此ReFS能否对数据进行自动校验,并在可能的情况下自动更正数据,成为了新文件系统的一个重要考察指标。

其三:面对极端硬件规模,也必须游刃有余。在这种设计理念当中,文件系统必须具备足够灵活的弹性架构来应付一切情况。

其四:保证绝对的稳定性,切勿让文件系统宕机。在数据损坏事件中,文件系统必须有能力隔离故障区域,同时保证未被损坏的数据依然能被正常访问。

为ReFS制定的关键功能:

为了让ReFS完美达到设计目标,微软认为至少要从以下9个角度去构建并完善ReFS的功能特性:

1.维持“元数据”完整性,并且配有自动校验功能;

2.完整数据流功能;

3.数据写入时分配功能,以提供可靠的数据更新方案(也被称为写入备份功能);

4.支持超大规模卷、文件和目录,用来满足未来相当长一段时间的扩展需求;

5.存储池和虚拟化功能,让文件系统易于创建和管理;

6.支持数据条带化处理,提升读写性能,并且提升容错冗余;

7.定时自检功能,以防止潜在的硬盘错误;

8.借助“数据打捞”提升对数据损坏的容错能力,在任何情况下,尽可能提升卷的可用性;

9.跨设备共享存储池,提供额外的容错能力和负载平衡。

此外,ReFS还必须从NTFS那里继承某些特性和语义,其中包括Bitlocker加密、访问控制列表、USN日志、更动通知、符号链接、连接点、挂载点、重解析点、卷快照、文件ID和操作锁等等。

其实总结起来,微软的意图也并不复杂。众多的设计目标和关键功能都剑指“良好的兼容、更为可靠的”这三大方面。接下来就讲讲微软为了实现这些特性,都采用了什么样的设计思路,创造了哪些关键技术。

分享到:

用户评论

用户名:

密码: