Windows的全新文件系统:ReFS
jopen 13年前
<div id="news_body"> <p> 大约 20 年前,微软公布了 New Technology File System(NTFS)文件系统,作为 Windows NT 的一部分出现。从那时起,NTFS 就沉淀下很多特性,这些特性可能当时看起来不错,但实际上是不怎么样的想法。同时,尖端技术不断发展,与 NTFS 架构也就不再兼容了。经过几次失败的尝试之后,微软现在承诺提供一个全新的文件系统。</p> <p> 该文件系统被称为 ReFS 或“<a href="/misc/goto?guid=4958326066784461673">弹性文件系统</a>”,其设计目的是要提升可靠性,特别是发生电源断电或是媒介故障的时候(比如磁盘的老化)。可靠性部分来自底层的变化,比如文件元数据的存储和更新。现在元数据的更新使用写时分配(allocate-on-write)方式,而不是以前的结合日志即时更新方式。</p> <p> ReFS 兼容 <a href="/misc/goto?guid=4958327292980223816">Storage Spaces</a> 跨区卷技术。Storage Spaces 自身有多种提升性能和可靠性的方式,特别是出现灾难性的磁盘失败情况时。然而,可能发生某种很微妙形式的数据毁坏情况。ReFS 使用校验和系统,可以检测到这些错误的发生。出现错误时,ReFS 会查询所有的 Storage Spaces 驱动器,判断谁有文件的正确拷贝。</p> <p> 为了主动确保驱动器和文件的完整性,ReFS 会运行后台进程,不时抽测文件。该进程会对比与元数据和文件每份拷贝的内容,正如上例,该进程会使用正确拷贝修复其他错误拷贝。这对于很少访问的文件很重要,因为除非其他拷贝也出错,否则一份拷贝中的错误可能很难发现。</p> <p> 另一种可靠保障机制被称为“完整性流(integrity streams)”。与元数据类似,完整性流会使用写时分配方式来降低错误发生几率,这种错误发生在向磁盘写入时,有可能导致文件内容唯一一份正确拷贝出错。完整性流不适用所有文件类型,需要控制物理文件结构的应用(比如数据库)应该禁止该功能。</p> <p> 为了提升兼容性,在实现 ReFS 时,保证它可以在 NTFS API 下运行,只是替换了一些最底层的 API。不过还是有一些 NTFS 的功能 ReFS 无法支持:</p> <ul> <li>命名流</li> <li>对象 ID</li> <li>短名称</li> <li>压缩</li> <li>文件级加密(EFS)</li> <li>用户数据事务</li> <li>分散文件</li> <li>硬链接</li> <li>扩展属性</li> <li>磁盘份额</li> </ul> <p> “BitLocker 加密、安全访问控制列表、USN 日志、变更通知、符号链接、接点、挂载点、重解析点、卷快照、文件 ID、oplocks”等其他特性仍得到支持。</p> <p> ReFS 的早期版本将定位于文件服务器。也就是说只能在 Windows 8 Server 版中才能使用,而且不支持可启动驱动器。将来,ReFS 将可以提供给客户机版本的 Windows,最终将可用作启动驱动器。考虑到文件系统缺陷的危险程度,微软认为这种缓慢的方式更加审慎。</p> <p> 不过 NTFS 格式文件系统还是不能直接转换为 ReFS,必须创建新的驱动器,然后把数据拷贝过去。</p> <p> <strong>查看英文原文:<a href="/misc/goto?guid=4958327293783347481">Introducing Windows New File System: ReFS</a></strong></p> <div id="come_from"> 来自: <a id="link_source2" href="/misc/goto?guid=4958327294579181425" target="_blank">InfoQ</a> </div> </div>