Windows 的全新文件系统:ReFS

  • Jonathan Allen
  • 郑柯

2012 年 1 月 31 日

话题:DevOps

大约 20 年前,微软公布了 New Technology File System(NTFS)文件系统,作为 Windows NT 的一部分出现。从那时起,NTFS 就沉淀下很多特性,这些特性可能当时看起来不错,但实际上是不怎么样的想法。同时,尖端技术不断发展,与 NTFS 架构也就不再兼容了。经过几次失败的尝试之后,微软现在承诺提供一个全新的文件系统。

该文件系统被称为 ReFS 或“弹性文件系统”,其设计目的是要提升可靠性,特别是发生电源断电或是媒介故障的时候(比如磁盘的老化)。可靠性部分来自底层的变化,比如文件元数据的存储和更新。现在元数据的更新使用写时分配 (allocate-on-write)方式,而不是以前的结合日志即时更新方式。

ReFS 兼容Storage Spaces跨区卷技术。Storage Spaces 自身有多种提升性能和可靠性的方式,特别是出现灾难性的磁盘失败情况时。然而,可能发生某种很微妙形式的数据毁坏情况。ReFS 使用校验和系统,可以检测到这些错误的发生。出现错误时,ReFS 会查询所有的 Storage Spaces 驱动器,判断谁有文件的正确拷贝。

为了主动确保驱动器和文件的完整性,ReFS 会运行后台进程,不时抽测文件。该进程会对比与元数据和文件每份拷贝的内容,正如上例,该进程会使用正确拷贝修复其他错误拷贝。这对于很少访问的文件很重要,因为除非其他拷贝也出错,否则一份拷贝中的错误可能很难发现。

另一种可靠保障机制被称为“完整性流(integrity streams)”。与元数据类似,完整性流会使用写时分配方式来降低错误发生几率,这种错误发生在向磁盘写入时,有可能导致文件内容唯一一份正确拷贝出错。完整性流不适用所有文件类型,需要控制物理文件结构的应用(比如数据库)应该禁止该功能。

为了提升兼容性,在实现 ReFS 时,保证它可以在 NTFS API 下运行,只是替换了一些最底层的 API。不过还是有一些 NTFS 的功能 ReFS 无法支持:

  • 命名流
  • 对象 ID
  • 短名称
  • 压缩
  • 文件级加密(EFS)
  • 用户数据事务
  • 分散文件
  • 硬链接
  • 扩展属性
  • 磁盘份额

“BitLocker 加密、安全访问控制列表、USN 日志、变更通知、符号链接、接点、挂载点、重解析点、卷快照、文件 ID、oplocks”等其他特性仍得到支持。

ReFS 的早期版本将定位于文件服务器。也就是说只能在 Windows 8 Server 版中才能使用,而且不支持可启动驱动器。将来,ReFS 将可以提供给客户机版本的 Windows,最终将可用作启动驱动器。考虑到文件系统缺陷的危险程度,微软认为这种缓慢的方式更加审慎。

不过 NTFS 格式文件系统还是不能直接转换为 ReFS,必须创建新的驱动器,然后把数据拷贝过去。

查看英文原文:Introducing Windows New File System: ReFS

DevOps