您的位置:网站首页 > 电器维修资料网 > 正文 >
详解windows下一代ReFS
★★★★★【文章导读】:详解windows下一代ReFS具体内容是:ReFS的关键目标如下:·保持对一部分广泛采用的NTFS功能的兼容性,同时放弃其他价值有限但会大幅增加系统复杂性和占用率的功能。·验证并自动更正数据。数据可能会由于各种原因而损坏,因此必须对其进行…
来源: 日期:2013-11-24 19:10:37 人气:标签:
ReFS 的关键目标如下:
· 保持对一部分广泛采用的 NTFS 功能的兼容性,同时放弃其他价值有限但会大幅增加系统复杂性和占用率的功能。
· 验证并自动更正数据。数据可能会由于各种原因而损坏,因此必须对其进行验证,并在可能的情况下进行自动更正。元数据必须写入适当的位置,以避免出现“断写”。
· 针对超大规模应用进行优化。使用普遍适用的可扩展结构。不要假设磁盘检查算法可以扩展到整个文件系统的规模。
· 确保文件系统永不脱机。当出现损坏时, 佳的解决方案是隔离错误,并允许继续访问余下的卷,同时尽可能打捞所有可用的数据,并且这一切都通过实时的方式完成。
· 借助与 ReFS 联合设计和构建的存储空间功能,提供完整的端到端弹性结构。
ReFS 的关键功能如下:
· 带有校验和的元数据完整性
· 提供可选用户数据完整性的完整性流。
· 通过写入时分配事务模型实现可靠的磁盘更新(也称为写入时复制)
· 支持超大规模的卷、文件和目录
· 存储池和虚拟化使得文件系统可建立并易于管理
· 通过数据条带化提高性能(带宽可管理)并通过备份提高容错性
· 通过磁盘扫描防止潜在的磁盘错误
· 借助“数据打捞”实现损坏还原,以便在任何情况下尽可能提高卷的可用性
· 跨计算机共享存储池,以提供额外的容错性和负载平衡
此外,ReFS 还从 NTFS 集成了某些功能和语义,包括 BitLOCker 加密、用于安全的访问控制列表、USN 日志、更改通知、符号链接、交接点、装入点、重解析点、卷快照、文件 ID 和操作锁。
当然,客户端只要使用任何操作系统中可访问现有 NTFS 卷的文件访问 API,就可以访问以 ReFS 存储的数据。
关键设计属性和功能
设计属性与目标密切相关。在逐一介绍这些属性的同时,请记住文件系统会由数亿台不同的设备使用,规模从体积 小的计算机到 大的数据中心,从 小的存储格式到 大的多轴格式,从固体状态存储到 大的驱动器和存储系统。同时,Windows 文件系统会由来源各异的各种应用程序和系统软件访问。ReFS 吸收了这些优点,并在这一基础上进行了重新构建。ReFS并非从零开始,而是在适当的 NTFS 组件的基础上进行了适当的重新设计。
代码重用和兼容性
在文件系统 API 这一领域,兼容性是 重要、技术含量 高,同时也 具挑战性的目标。重写文件系统语义的实现代码无法确保适当的兼容性,并且引发的问题将高度依赖于应用程序代码、调用时间和硬件。因此,在构建 ReFS 时,Windows 8重用了用于实现 Windows 文件系统语义的代码。此代码用于实现文件系统接口(读取、写入、打开、关闭、更改通知等),维护内存中的文件和卷状态,执行安全措施,以及维护内存缓存和文件数据同步。这些代码的重用旨在确保与继承自 NTFS 的功能的高度兼容性。
在重用的部分中,ReFS在 NTFS 版本代码的基础上使用了新架构的引擎,并在其中通过主文件表等磁盘上结构来表示文件和目录。ReFS 将这部分重用代码与一种全新的引擎相结合,这是 ReFS 背后的一大创新。下图展示了这些改进:
可靠且可扩展的磁盘上结构
磁盘上结构及其操作由磁盘上存储引擎处理。这构成了一种通用的键值接口,其上的层级将利用该接口来实现文件、目录等结构。对于其自身实现,存储引擎将使用专用B+ 树。事实上,我们以 B+ 树作为唯一的磁盘上结构来表示磁盘中的所有信息。树可以嵌入其他树中(子树的根存储在父树的行中)。在磁盘中,树可以非常大并分为多层,也可以小到只包含几个键并嵌入其他结构中。这确保了该结构具有可全面适应文件系统的可扩展性。使用单一的结构显着简化了系统并减少了代码量。新引擎接口包含“表”的概念,即可枚举的键值对组。大部分表具有唯一的 ID(名为对象 ID),可以通过该 ID 来引用特定的表。ReFS通过一个特别对象表为系统中的所有此类表建立索引。
现在,将介绍如何通过表来构建通用文件系统的抽象。
文件结构
如上图所示,目录以表的形式表示。由于使用 B+ 树来实现表,目录可以高效地扩展为极大规模。文件可以作为嵌入父目录行中的表来实现,父目录本身也是一个表(即上图所示的文件元数据)。文件元数据表中的行表示各种文件属性。文件数据的位置范围由嵌入的流表来表示,其中包含偏移值映射(以及可选的校验和)。这意味着文件和目录的规模再大也不会对性能产生影响,突破了 NTFS 的局限。
ACL(访问控制列表)等其他文件系统中的全局结构将作为以对象表为根的表来表示。所有磁盘空间分配都由分层分配器来管理,其中会以空闲空间范围表来表示空闲空间。为了实现可扩展性,我们提供了三种表,大型、中型和小型分配器。这三种表所管理的空间粒度各不相同:例如,中型分配器负责管理由大型分配器分配的中等大小区块。这使得磁盘分配算法非常易于扩展,并且由于相关的元数据会自动并列配置,因此可实现更出色的性能。这些分配器的根和对象表的根都可以通过磁盘上的已知位置访问。某些表具有专用的分配器,以便减少争用并增强区域配置。
除了全局元数据表之外,对象表中的条目引用的目标为目录,因为文件嵌入在目录中。
可靠的磁盘更新策略
可靠而高效地更新磁盘是文件系统设计 重要,也是 具挑战性的领域之一。 微软花费了大量时间来评估各种方案。曾经考虑过一种日志结构的文件系统,但 终放弃了该方案。这种方案不适合 Windows 所需的通用文件系统类型。NTFS 依靠事务日志来确保磁盘上的一致性。该方案会更新磁盘上现存的元数据,并使用日志作为辅助来持续跟踪更改,以便在发生错误或断电时进行回滚。此方法的优势之一在于维护现存的元数据布局,这有助于提高读取性能。日志系统的主要弊端在于写入可能会变得随机化,更重要的是,如果在写入时断电,更新磁盘的行为可能会损坏之前写入的元数据,该问题通常称为“断写”。
为了尽可能提高可靠性并避免断写, ReFS 选择了一种永不更新现存元数据的写入时分配方案,以原子形式将其写入不同的位置。在某种程度上,这是借鉴了“影式分页”古老的概念,该功能用于可靠地更新磁盘上的结构。事务将基于这种写入时分配方案构建。由于 ReFS 的上层派生自 NTFS,新的事务模型将无缝地利用现存故障恢复逻辑,该逻辑已经过数个版本的测试和稳定。
ReFS 的元数据分配方式允许通过更少、更大的I/O 将相互关联的部件混合写入(例如,流分配、文件属性、文件名和目录页),这对于旋转介质和 flash 都将提供诸多裨益。同时,采取措施保持读取的连续性。分层分配方案在这方面投入了很大的精力。
微软曾经进行过在系统负载极大的情况下断开系统电源的测试,而当系统恢复时,所有结构都会接受正确性检查。本测试是对ReFS成绩的终极衡量。在这项 MICroSOFt 文件系统测试中达到了前所未有的可靠性水平。相信该方案已经达到了行业领先水平,并能完全实现关键设计目标。
磁盘损坏还原
如前所述,ReFS的设计目标之一是检测和更正损坏。这不仅是为了确保数据完整性,也是为了提高系统可用性和联机操作。因此,所有 ReFS 元数据都在 B+ 树页的级别计算了校验和,并将校验和与页本身分别存储。这允许我们检测所有形式的磁盘损坏,包括失写、错写和“位衰减”(介质上的数据降级)。此外,我们还添加了一个选项,供您选择是否计算文件内容的校验和。启用称为“完整性流”的这一选项后,ReFS 始终会将文件更改写入与原始位置不同的位置。这种写入时分配技术可确保不会由于新写入的数据造成之前存在的数据丢失。校验和更新将随数据写入自动进行,因此如果电源在写入时断开,我们始终将具有一个可用于验证一致性的文件版本,并据此权威地检测损坏。
除了提高性能以外,存储空间还能通过在多个磁盘上维护副本,在发生部分和全面磁盘故障时保护数据。在发生读取故障时,存储空间可以读取备选副本,而在发生写入故障(以及彻底的介质读/写故障)时,该功能可以透明地重新分配数据。许多故障并非由介质故障引发,而是由数据寻坏、失写或错写造成。
这些恰恰是 ReFS 可以通过校验和检测的故障类型。一旦 ReFS 检测到此类故障,将通过存储空间接口读取所有可用的数据副本,并根据校验和验证选择正确的副本。然后,ReFS 将告知存储空间根据正确的副本修复损坏的副本。以上操作完全对应用程序透明。如果 ReFS 未在镜像存储空间上运行,则将无法自动修复损坏。在这种情况下,ReFS 将仅记录一个事件,表明检测到损坏,并且无法判断是否为文件数据。我将在稍后进一步介绍这种情况对元数据的影响。
校验和(64 位)始终对 ReFS 元数据启用,假设该卷寄宿在一个镜像存储空间中,自动更正将始终启用。所有完整性流(见下图)都通过相同的方式获得保护。这将为用户提供一种端到端的高完整性解决方案,将相对不可靠的存储变为高度可靠的存储。
完整性流
完整性流可保护文件免遭任何形式的数据损坏。尽管这种功能在许多情境中颇具价值,但也不适合某些情境。例如,某些应用程序倾向于依靠磁盘上的特定文件布局,细致地管理其文件存储。由于每当文件内容发生变化时,完整性流都会对数据块进行重新分配,因此对于这些应用程序来说,文件布局将非常难以预测。数据库系统是此类应用程序的典型案例。此类应用程序通常也会自行维护文件内容的校验和,并可以通过与存储空间 API 的直接交互来验证和更正数据。
对于此类需要特定文件布局的情况,我们在各粒度级别都提供了用于控制此设置的机制和 API。
在 基本的级别,完整性是文件的一种属性(FILE_ATTRIBUTE_INTEGRITY_STREAM)。它也是目录的一种属性。当存在于目录中时,它将由目录中创建的所有文件和目录继承。方便起见,您可以在格式化时使用“format”命令来为卷的根目录指定该属性。在根级别设置该属性可确保其默认传播至该卷上的所有文件和目录。例如:
D:\>format /fs:refs /q /i:enable<volume>
D:\>format /fs:refs /q /i:dISAble <volume>
默认情况下,如果未指定 /i 开关,则系统选择的行为将取决于该卷是否驻留于镜像空间中。在镜像空间中,完整性将获得启用,因为这样做所带来的好处将远大于弊端。应用程序随时可以通过编程方式逐个文件地更改此属性。
对抗“位衰减”
如前所述,ReFS 和存储空间的结合将在发生磁盘损坏和存储故障时提供高度的数据弹性。“位衰减”是一种难以检测和处理的数据损坏,它是指部分磁盘随着时间的推移产生损坏,但由于这些部分很少读取而未引起注意。当读取或检测到这些部分时,其备选副本可能已由于其他故障而损坏或丢失。
为了应对位衰减,ReFS添加了一项系统任务,该任务会定期扫描镜像存储空间中驻留的 ReFS卷上的所有元数据和完整性流数据。扫描涉及读取所有冗余副本并通过 ReFS 校验和验证其正确性。如果校验和不匹配,损坏的副本将通过正确的副本修复。
FILE_ATTRIBUTE_NO_SCRUB_DATA 文件属性指示扫描器应跳过该文件。此属性适用于自行维护完整性信息的那些应用程序,应用程序开发人员可以密切控制扫描这些文件的时间和方式。
Integrity.exe 命令行工具是管理完整性和扫描策略的一种强大方法。
当所有其他措施都失效时…卷将仍然可用
大部分用户都能将 ReFS 与镜像存储空间结合使用,这样损坏就可以自动且透明地修复。但在某些极端情况下,镜像空间中的卷也可能发生损坏,例如损坏的系统内存会破坏数据,然后这些数据将进入磁盘并破坏所有备份副本。此外,某些用户可能不会选择在 ReFS 下使用镜像存储空间。
对于这些卷发生损坏的情况,ReFS 将实施“数据打捞”,该功能可将损坏的数据从活动卷的命名空间中移除。此功能旨在确保无法修复的损坏不会影响正确数据的可用性。例如,目录中的单个文件已损坏且无法自动修复,ReFS 会将该文件从文件系统命名空间中移除,同时对该卷的余下部分进行打捞。此操作通常可在一秒内完成。
通常,文件系统无法打开或删除损坏的文件,管理员也对此束手无策。但由于 ReFS 能够打捞损坏的数据,管理员将能够通过备份来恢复该文件或通过应用程序来重新创建该文件,同时保持文件系统的联机状态。这一关键创新可确保我们无需运行昂贵的脱机磁盘检查和更正工具,并避免了数据量极大的卷由于损坏而产生较长的脱机期所带来的风险。
完美兼容 Windows 存储堆栈
设计必须具备 大的灵活性和兼容性。我们设计的 ReFS 与其他文件系统一样可以插入存储堆栈,以便尽可能提高对其周边层级的兼容性。例如,ReFS 可以无缝利用 BitLocker 加密、用于安全的访问控制列表、USN 日志、更改通知、符号链接、交接点、装入点、重解析点、卷快照、文件 ID 和操作锁。预计大部分文件系统过滤器无需或只需小幅调整即可无缝地用于 ReFS。
还有一项值得注意的灵活性,尽管 ReFS 和存储空间适合结合使用,但它们实际上是可以分别独立运行的两个组件。这可以同时为两种组件提供 大的部署灵活性,避免不必要的相互限制。换句话说,可以在选择存储解决方案时在可靠性和性能方面进行权衡,包括将 ReFS 与来自其他底层存储解决方案联合部署。
借助存储空间,存储池可以由多台计算机共享,并且虚拟磁盘可以在这些计算机之间实现无缝迁移,提供额外的故障弹性。由于构建该系统的方式,ReFS 可以无缝地利用这些优势。
使用
20 多年来,针对 NTFS 开发了数万种复杂而庞大的测试,并使用它们对 ReFS 进行了测试。ReFS 在系统压力测试、断电等故障测试、可扩展性测试和性能测试等方面,都满足并超出了预计的部署要求。因此,ReFS 已经准备好在受控的环境中接受部署测试。
同时, ReFS将作为一种阶段性演进功能进行部署:
首先作为 Windows Server 的存储系统,然后作为客户端的存储系统, 终作为启动卷。之前也曾针对NTFS采取过相同的做法。
初,主要测试将聚焦于作为文件服务器运行的 ReFS。我们希望用户能够通过将其作为文件服务器而获益,尤其是在镜像存储空间中。ReFS还计划与存储合作伙伴密切协作,以便与他们的存储解决方案相集成。
结论
ReFS 和存储空间共同构成了 Windows 在今后十年或更长时间内使用的存储基础。这将显着强化微软在存储领域的领先地位。存储空间和 ReFS 的架构中还预留了进一步创新的空间,期待 ReFS 能够成为下一种大规模部署的文件系统。
常见问题解答:
问:为什么将其命名为 ReFS?
ReFS 是弹性文件系统 (ReSILientFile System) 的缩写。尽管该系统在很多方面都进行了优化,但弹性是其中 突出的一种功能。
问:ReFS 的容量限制是多少?
下表显示了磁盘上格式的容量限制。其他因素可能会决定某些实践限制,例如系统配置(例如内存大小)、各种系统组件设置的限制、填充数据集所需的时间以及备份次数等。
属性 磁盘上格式的限制
单个文件的 大规模 2 ^64-1 字节
单个卷的 大规模 格式支持带有 16KB 群集规模的 2^78 字节 (2^64 * 16 * 2^10)。Windows 堆栈寻址允许 2^64 字节
目录中的 大文件数量 2^64
卷中的 大目录数量 2^64
大文件名长度 32K Unicode 字符
大路径长度 32K
任何存储池的 大规模 4 PB
系统中存储池的 大数量 无限制
存储池中空间的 大数量 无限制
问:我能否在 NTFS 和 ReFS之间转换数据?
Windows 8 中无法转换现有数据。
问:我能否在 Windows Server 8 中从 ReFS 启动?
不能,目前尚未实现也不支持该功能。
问:ReFS 是否可用于可移除介质或驱动器?
不能,目前尚未实现也不支持该功能。
问:ReFS 不再支持哪些 NTFS的语义或功能?
我们在 ReFS 选择不再支持的 NTFS 功能包括:命名流、对象 ID、短名称、压缩、稳健级加密 (EFS)、用户数据事务、稀疏、硬链接、扩展属性和配额。
问:奇偶校验空间能否与 ReFS 结合使用?
ReFS 支持存储空间提供的错误还原选项。在Windows Server 8 中,自动数据更正仅针对镜像空间实施。
问:是否支持群集?
支持故障转移群集,各卷可以跨计算机实现故障转移。此外,支持群集中的共享存储池。
问:RAID 呢?我如何使用ReFS 的条带化、镜像或其他形式的 RAID 功能?例如,ReFS 是否可以提供视频所需的读取性能?
ReFS 可利用存储空间的数据备份功能,包括条带化的镜像和奇偶校验。ReFS 的预计读取性能与 NTFS 相似,因为二者之间共享了大量相关代码。它将非常适合流数据。
问:为什么 ReFS 中没有重复数据删除、DRAM 和存储间的二级缓存以及可写入快照?
ReFS 本身不提供重复数据删除。这种熟悉、可插入的文件系统架构的一个副作用是其他重复数据删除产品可以按照与 NTFS 相同的方式插入 ReFS。
ReFS 并未专门实施二级缓存,但用户可以使用第三方解决方案来实现此功能。
可将 ReFS 和 VSS 结合使用,以便按照与 Windows 环境中的 NTFS 一致的方式提供快照。目前,尚不支持写入超过 64TB 的快照。
【看看这篇文章在百度的收录情况】
相关文章
- 上一篇: Linux何时彻底征服Win8品牌机
- 下一篇: Win8快速启动条件与多系统管理的说明