Microsoft 在不久前发布了他们的下一代文件系统 ReFS, 将用于下一代的 Windows Server 8. 那么 ReFS 和当前 Linux 新型的文件系统 Btrfs , ZFS相比又如何呢?
与微软之前发布的针对内部储存和闪存卡的 exFAT 不同,ReFS 的设计目标是用来接替自 Windows 2000 和 XP 以来就广泛使用的 NTFS 文件系统。ReFS 是 Resilient File System (弹性文件系统)的缩写。将随着 Windows Server 8 的出现而投入使用。非服务器版本的 Windows 8 将不会支持 ReFS,但是根据微软向来的习惯,ReFS 很可能在一段时间之后在客户用操作系统中出现。
Linux 上的用户可能不怎么关心这个 Windows 上使用的新型文件系统。但不管怎样我们最后都可能在自己的硬盘中或者新安装的 Windows 分区中见到她。由于这些原因,我们有兴趣来看看这位 NTFS 的继任者和当前 Linux 的流行文件系统有什么异同。同时,我们也希望知道什么时候 Linux 能够开始支持 ReFS.
在阅读了 MSDN 上一篇名为 Building the next generation file system for Windows: ReFS 的文章后,我在下面列出了几条我的理解:
- 与 NTFS 不同,ReFS 和 BtrFS 有一些相同之处。ReFS 是写时复制(copy-on-write)的,并提供完整的 Checksums/ECC, 扩展属性以及 B-树。Sun/Oracle 的 ZFS 同样具有这些特性。ReFS 的储存引擎与普通的 BtrFS 相比,使用了 B+树,以及叶级、内部节点记录的数据正变化(with the difference of the plus variant being records stored at the leaf-level of the tree and keys being within the interior nodes).
- ReFS 的卷/文件/目录尺寸接近 EXT4 和 BtrFS。
- 目前,至少在 Windows 8 上,微软不会提供任何从 NTFS 切换到 ReFS 的方法,除非使用格式化+复制文件的方式。在 Windows 8 中,ReFS 还不支持作为可引导分区,也不支持用在可移动储存上。
- 以下是微软所说的 ReFS 的”关键特性”:
- 以校验码(Checksums)为保证的元数据完整性
- 完整的数据流,并提供可选的用户数据整合
- 写时复制特性
- 大尺寸卷/文件/目录的支持
- 便于文件系统创建及管理的储存池/虚拟化技术
- 可保证性能的数据带区化(带宽可控制)技术以及冗余容错能力
- 防止潜在磁盘错误的擦写功能
- 对于数据损坏具有”弹性限度”,可以保证在大多数情况下数据卷可用
- 跨设备的储存池共享机制,可使系统具有更强的容错能力以及负载平衡
- ReFS不支持重复数据删除(data de-duplication),写时复制快照(copy-on-write snapshots,ZFS 和 Btrfs 均具有此特性,但是 ReFS 的快照功能可在多个微软储存空间存在时启用),文件级加密(file-level encryption,似乎是没有继承 NTFS 的传统),以及压缩功能(Btrfs 现在支持 Gzip, LZO, Snappy 三种)。
- 至于 ReFS 会不会多多少少支持 Linux 和其他操作系统,微软的 Steven Sinofsky 说,”ReFS 上的数据存取可通过现在存取 NTFS 数据的 API 来进行。”ReFS 的上层引擎和 NTFS 几乎完全一样,但是下层的磁盘储存引擎和格式却和 NTFS 有差异。
此外,在刚才提到的那个 MSDN 博客上,还有其他不少相关的文章。在目前看来,至少在特性方面,Btrfs 和 ZFS 现在还是可以和 ReFS 一较高下的(主要指的是打败 ReFS),但是真正的结果还是在测试磁盘实际性能后得出更有说服力,也更有趣些。
离 Linux 支持 ReFS 可能还有一段时间,可以推测,ReFS 肯定又要拖出来一大堆专利和限制,所以用户的文件系统的读写可能会通过 FUSE 完成,就像 NTFS 和 ex-FAT 那样。因此,当 Tuxera 提供 ReFS For Linux 的商业支持时,也别感到惊讶 —— 他们可是敢说自己的 Linux 下 NTFS 读写方案是最快的公司。
消息来源:Phoronix