我没有在所有“Windows Server 2012 r2”帖子中看到的新功能之一是集群现在支持使用 ReFS 格式化的 CSV。因此,自然地,我想将存储 VHDX 文件的 CSV 更改为 ReFS。但是 VHDX 文件被用于在运行 Sql Server 2012 的 VM 中存储数据库文件。
我的想法是,我将在硬件级别拥有 RAID,以防止瞬时故障。除此之外,真正的操作系统(Hyper-V Server 2012 r2)会将它们维护为 ReFS 卷,这将保护这些驱动器上的数据免受 bitrot。最后,VHDX 是 NTFS 驱动器,这意味着受支持的应用程序继续使用它们所依赖的文件系统。
到目前为止,我能找到的最好的是这在技术上是受支持的——因为 Hyper-V 报告说,当您尝试从 VHDX 文件(Set-FileIntegrity cmdlet)中使用它时,您必须关闭它ReFS 卷。但我找不到比这更可靠的信息了。它真的为黄金时段做好了准备,还是实际上只是集群的技术预览?
编辑:2014-01-22
我发现 ReFS 只能自己检测 bitrot。为了同时检测和自动修复 ReFS,您还必须使用存储空间来使用多个 ReFS 驱动器创建 RAID-1 卷。所以看起来我的解决方案正在演变为让硬件 RAID 将其磁盘呈现为 JBOD,然后 Windows 将负责 RAID-1 部分。我将在下个月左右测试这是否是生产中可行的设置。
答案是非常明确的“不”。
如果相关文件启用了“Integrity Streams”,ReFS仅检测用户数据中的位损坏(来源: TechNet 官方文档、每个人最喜欢的博客文章和另一个地方)。哦,当完整性流被禁用时,你也会失去 COW(写时复制)。由于除非禁用 Integrity Streams,否则您无法使用驻留在 ReFS 卷上的 VHDX,因此您无法保护 VHDX 免受位损坏。游戏结束。
就像同一个人认为集群存储空间池应该至少需要 3 个磁盘一样,他也决定让 ReFS 的最佳功能可以关闭,然后让 Hyper-V 人员要求它被禁用。很难想象如此多的“愚蠢”在这样的核心团队中传播得如此之远。
辅助
在进行一些测试时,我发现以下内容可能对仍希望继续前进的人有用:
正如您所发现的,支持 ReFS,但禁用了数据完整性。这意味着您的 VHD 没有像上面所说的那样“防止比特腐烂”。文件系统本身是,但不是 VHD 本身。如果您对这种保护措施感兴趣,请继续使用 ReFS。