Windows 存储空间——RAID6 的有用替代品?

Windows 存储空间——RAID6 的有用替代品?

// 底部的简短更新

// 另一个更新位于底部附近,用于回复建议的编辑

所以,一开始我有这个想法:找一个虚拟驱动器来设置并在 Windows 上使用软件 raid。结果:即使有开发人员的支持,仍然失败。

在观看了一段有关虚拟化的 YouTube 视频后,我又想到了下一个想法:为运行裸机的 Linux 系统安装第二个相当便宜的 GPU,并通过直通方式在主 GPU 的 VM 中设置我的 Windows。这样我就可以使用 mdadm/lvm,让 Linux 执行所有软件 raid 操作。结果:失败 - 因为我的主板存在一些奇怪的问题,根本不喜欢第二个 GPU。

然后我读了一些关于 Windows 存储空间的文章,它能够提供与软件 RAID6 相当的容错能力(据我所知,这是通过分布在物理驱动器上的文件系统影子副本实现的)。所以我尝试了一下,让它工作了(虽然它需要在 powershell 中手动输入一些行,因为 gui 版本不公开某些高级设置)。

由于这只是在虚拟机中测试,因此测试性能相当差,但我注意到数据被多次写入,有时会导致驱动器使用不均匀。例如:其中一个虚拟磁盘只写入了大约 2GB,而另一个驱动器写入了大约 4GB。因此,无论使用哪种分配算法(它看起来不像循环,而更像是首先使用大多数可用物理空间),它都与我预期的软件 RAID6 的行为方式相去甚远。

我还注意到,利用物理磁盘空间相当浪费。我的测试使用了 8 个磁盘,每个磁盘 50GB。mdadm 软件 RAID6 导致可用空间不足 300GB,存储空间只有大约 250GB - 因此又有 15% 的“损失”。好吧,我想这就是所有的开销之类的东西,但即使是从软件 RAID 开始,我也希望更好地利用我的物理磁盘空间。

然后,我测试了如果我开始移除驱动器会发生什么情况,由于我已使用 -PhysicalDiskRedundancy 2 进行了设置,因此它能够存活下来并且所有测试数据仍然可用。

因此,总体而言,它似乎满足了我对 Windows 上的软件 raid 的需求,支持类似 raid6 的容错功能,可以承受双重故障(即:重建第一个故障驱动器时第二个驱动器发生故障)。关于性能:嗯,它是软件 raid - 因为我目前正在使用 fakeRAID(基本上是特定于驱动程序的软件 raid,由 bios 阴影化),所以对系统性能的影响不会像现在这样大。

真正让我深思熟虑的是:目前有两个主要问题:a)它无法安装在 Linux 系统上(我还没有测试它是否可以以及如何在恢复环境中安装)和 b)在当前的 Win10 2004 中,许多问题已经导致数据丢失,正如一些用户在不同论坛上报告的那样。

我为什么要问这个问题:主要的“问题”是,我目前没有资金来投资新的/更好的硬件。我只能省下我目前拥有的硬件。因此,我正在寻找软件解决方案。我尝试了 WinBTRFS,因为它声称支持其卷的软件 RAID,但即使在其开发人员的帮助下,我也无法正确设置它。因此,基本问题归结为:如果买不起硬件 RAID 或其他解决方案(如虚拟化)(由于硬件不兼容),使用存储空间是否是一种可行的选择?当然,我有许多“真正重要”的数据备份在外部驱动器上,但我仍然宁愿构建一些可靠的系统,而不是走“我相信什么都不会发生”的道路。

// 更新

关于是否以及如何通过 WinPE 访问此类虚拟磁盘,我做了一个小更新:我刚刚下载了最新的 2004 ADK 并创建了一个新的 WinPE 映像。由于我必须使用 PowerShell 来访问信息,所以我只是复制了 ADK PE 文档中的说明。之后,我创建了一个 ISO 并在 VM 中启动了它。无需任何其他命令,它就可以从启动时直接使用。正如我在 MSDN 论坛上看到的,这仅适用于 Windows 的客户端版本。在服务器版本上,存储空间以只读和分离状态启动(我想是为了安全)。因此,为了从中读取,必须手动附加它。要写入它,显然,必须将其从只读更改为读写 - 但由于我的问题是关于如何在恢复环境中读取数据,因此我不需要写入这样的卷。

// 附加回复

正如 DarcyThomas 在他的评论中所说的那样,以下是我目前使用 RAID5 的原因以及我认为需要迁移到 RAID6 等更安全的类型的背景:

  1. 我这样做是为了获得较小的读取速度优势吗:虽然我注意到阵列能够比其中一个驱动器本身更快地传输数据,但只有在我复制大文件导致长时间连续读取时才真正显示出来。当我处理大量小文件时,这会导致大量随机 I/O,与单个驱动器相比,性能有时会变得更差。至于写入速度,情况大致相同。所以,回答这个问题:不,速度优势肯定不是我想要的,因此我可以接受 RAID6 所暗示的更糟糕的“惩罚”。

  2. 我这样做是不是为了廉价备份?有人肯定会说是的。而且如果其中一个驱动器发生故障,我肯定会利用仍然可以使用所有数据这一优势。当然,我确实将真正重要的数据保存在另一个离线驱动器上,因此如果阵列发生灾难性丢失(即由于硬件故障或主板冒烟),我的重要数据仍然可以安全保存。但我肯定会利用这种便利,不必像将它们用作单个驱动器(或者可能在另一种配置中)那样担心驱动器发生故障。我已经有两个驱动器发生故障(都是在移动后不久发生的 - 所以两次都可能是物理运输损坏而不是驱动器磨损)并且重建时间相当长(仅 3 TB 就需要大约 14 小时)。

  3. 我真的需要那个单一的大卷吗?虽然这是另一个有争议的问题,但为了简短起见,我会简单地回答:是的,至少为了方便。我的阵列已经填满了 1/3 以上,跨多个驱动器/卷管理如此大量的数据会导致混乱(至少对我来说)。另一个巧妙的副作用:如果有人带着新东西(音乐、电影等)过来,我可以将其“转储”到阵列上,然后可以重新组织和重复数据删除,而不必担心堵塞驱动器。我是一个脑子像苍蝇一样的人:几个小时后我会忘记我把数据放在另一个驱动器上,然后需要另一个驱动器才能再次找到它。只需将它们全部放在一个地方就好了。

  4. 至于“在线”备份解决方案:是的,我知道它们存在。是的,我也知道有些可以免费或至少便宜地获得。当然,我有能力自己编写一些小型加密器/解密器代码,使用非对称密钥来保护对称密钥,而不是使用密码短语。这并不是说我不会信任它们。但与第 3 点相同:随着时间的推移,我会简单地忘记其中的一些。虽然我的连接速度相当快(250/50),但我并不希望通过网络存储我的所有数据。但我想这只是个人问题。

因此,总结一下:对我来说,从 5 驱动器 RAID5 升级到 8 驱动器 RAID6 只是下一步合乎逻辑的步骤。投资将相当低(仅用于额外的驱​​动器 + 一两个简单的 HBA),并且如果做得好,它不应该依赖于我现在正在使用的专有产品。是的,我弄清楚了如何从恢复环境访问存储空间,但这需要其专有规范保持不变,而不会发生突然变化导致不兼容(例如仅办公文档的混乱)。也许这个补充可能会在未来帮助其他人回复。

答案1

Windows Parity Spaces 速度非常慢,而且(据 Microsoft 称)它不适用于除存档工作负载之外的任何用途。Microsoft 一直在尝试提高写入性能,比如实现硬件 RAID 中缺少日志,但缺少电池供电的写回缓存让一切变得索然无味。不过,您可以尝试通过告诉 Spaces 您有 UPS 来提高写入性能。

https://docs.microsoft.com/en-us/windows-server/storage/storage-spaces/deploy-standalone-storage-spaces

设置存储池-友好名称-IsPowerProtected $True

另一点是使用 ReFS 和存储空间组合成所谓的镜像加速奇偶校验,写入最终会进入 SSD 层,稍后会消失在 HDD 层。

https://docs.microsoft.com/en-us/windows-server/storage/refs/mirror-accelerated-parity

http://knowledgebase.45drives.com/kb/kb450193-creating-mirror-accelerated-parity-volumes-and-storage-tiers-in-storage-spaces-windows-server-2019/

不幸的是,除了存储空间直通(这本身就是另一个棘手的问题)之外,这不是 100% 支持的场景。

我建议使用 Linux MDRAID+XFS,因为它具有出色的稳定性和大量经过验证的部署,如果您确实需要坚持使用 Windows Server OS,或者可以从 eBay 购买旧版 LSI 硬件 RAID 卡。

答案2

“Windows 存储空间 - RAID6 的有用替代品?”

如果您所说的“RAID6”的意思是“我讨厌我的数据并且想以尽可能慢的方式获取它”,那么是的,当然 - 我们一度丢失了 62TB 的数据,幸运的是我们对它们进行了备份,但再也没有丢失过。

编辑:不要信任 Windows 软件 RAID,不要信任大容量的双奇偶校验硬件 RAID,始终遵循 3-2-1 备份规则和“我们信任备份”。

相关内容