微软 wordpress Android nginx Python mysql centos linux shell apache Firefox php google HTML5 开源 linux命令 程序员 Windows Ubuntu java

Windows的全新文件系统:ReFS

大约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,必须创建新的驱动器,然后把数据拷贝过去。

延伸阅读

评论