我目前正在用一些便宜的硬件构建实验室服务器。2 个 NVMe SSD,一堆 3.5 HDD。创建分层存储(NVMe-Mirror 和 HDD-parity)后,使用 ReFS 格式化,一切都表现得非常正常:
- 使用性能计数器,我可以看到快速层已填满,然后一旦达到 85%,就开始降级到奇偶校验层。
- 我可以验证新的写入总是会到达快速层。
- 根据数据,读取操作会被发送到快速层或慢速层。
只有快速层的大小看起来有点奇怪:我使用了 2 * 220 GB NVMe SSds,并用它创建了一个 215GB 的快速层。HDD 总计约 6 TB。Powershell 报告的大小应该是这样的:
FriendlyName TierClass MediaType ResiliencySettingName FaultDomainRedundancy Size FootprintOnPool StorageEfficiency
------------ --------- --------- --------------------- --------------------- ---- --------------- -----------------
M. Acc. Parity-NVMe-Tier Performance SSD Mirror 1 215 GB 430 GB 50,00 %
NVMe-Tier Unknown SSD Mirror 1 0 B 0 B
HDD-Tier Unknown HDD Parity 1 0 B 0 B
M. Acc. Parity-HDD-Tier Capacity HDD Parity 1 6 TB 9 TB 66,67 %
但我现在面临的问题是:当将数据移至分层存储时,我可以从性能计数器中看到快速层报告的使用率为 85%,并开始将文件转储到慢速层在我将大约 40-50GB 的内容移动到虚拟磁盘之后。
我考虑了几天这个现象的可能原因,也许有人对此有什么想法?
我目前的想法:正如所提到的,NVMe SSD 非常便宜,所以它们是 TLC-SSds。只要它们在 pSLC 模式下运行,它们就能提供相当不错的性能。然而,这会浪费 67% 的磁盘容量(每个单元 1 位,而不是 3 位)——这与我的观察结果有点吻合(220GB 的 33% 将是 ~ 71 GB,所以我们很快就会达到总使用量的 85%)
好吧,如果快速层那么小,但另一方面又不必处理缓慢的 TLC 性能,那我就不介意了 - 但为什么层大小报告为 220 GB?有没有办法设置 pSLC 模式,还是由 ReFS 控制/通过修剪等完成?
我特别感兴趣的是,是什么原因导致磁盘卡在 pSLC 模式,据我了解,一旦磁盘空间不足,磁盘应该自动切换到 TLC 模式。(但我还读到,MS 禁用了 ReFS 的修剪,可能与此有关?)
这似乎是故意的,或者如果 ReFS 也假设有 215GB 磁盘,为什么 ReFS-PerformanceCounter 会知道实际的 Fast-Tier-Fill-Level?
示例截图:将 8 GB 写入快速层,将 8GB 的其他数据降级,然后再次从快速层中删除这 8GB。看起来 8GB = 10%,所以我认为 ReFS 将该层视为 ~ 80GB。
- Windows Server 2019 标准版
- 在两个节点上构建此实验室,可以看到两个节点上完全相同的行为。(相同硬件)