有什么方法可以防止Storage Spaces Direct自动添加磁盘?


8

在托管使用存储空间直通(S2D)的SQL故障转移群集实例(FCI)的2016 Windows服务器故障转移群集(WSFC)上遇到问题。在每台服务器上,成功地进行初始创建后,S2D会自动向存储池添加一个本来没有使用的RAID卷(尽管无法在RAID卷上创建S2D,并且绝对坚持使用未经检查的磁盘)。现在它坏了,因为-据我所知-正是这样。结果,虚拟磁盘处于脱机状态,从而导致整个群集崩溃。由于缺少群集网络资源,它不会重新联机。有问题的磁盘可以退出,但不能删除。虚拟磁盘修复未运行,群集兼容性测试声称配置无效。

这是一个新设置。因此,我可以简单地删除虚拟磁盘,群集甚至服务器,然后重新开始。但是,在我们提高工作效率之前,我需要确保,再也不会发生这种情况。仅通过不必要地和错误地添加不受支持的磁盘,系统就无法在虚拟膝盖中崩溃,这是我们无法部署的平台。因此,首先,我需要一种方法来防止这种情况的发生,而不是立即进行修复。我的猜测是,防止S2D设置获取的磁盘数量超过创建时的数量,就可以解决问题。在实际磁盘更换期间,可能需要更多手动交互的成本对于集群来说可以忽略不计...我们在这里。但是,到目前为止我浏览了许多文档,但找不到任何方法来控制它。除非我缺少任何东西,否则Set-StoragePool都不会,

任何帮助或提示将不胜感激。

以下是有关上述内容的更多详细信息:我们有2台HPE DL380 Gen9服务器计算机,它们通过支持RDMA的10GB以太网和通过1GB的客户端网络进行了双连接。每个功能都有一个RAID控制器HP ??? 和一个简单的HBA控制器HP ??? (因为S2D绝对需要并且只能在直接连接的未入侵磁盘上使用)。存储配置包括RAID控制器上的OS-RAID,RAID控制器上的Files-RAID,以及HBA上用于S2D的一组直接连接的磁盘。

我在OS-RAID上设置了2个Windows Servers 2016数据中心版本,安装了WSFC功能,运行并通过了包括S2D选项的群集兼容性测试,创建了不带存储的群集,添加了文件共享见证(在单独的计算机上),启用了S2D在存储池中,该存储池自动包括所有未入侵的磁盘,并在该池的顶部创建了镜像类型的虚拟磁盘,并将NTFS用作文件系统,因为它应该是SQL FCI的首选FS安装。

然后,我在该群集上将SQL 2016标准版安装为FCI,导入了数据库并对其进行了全部测试。一切都很好。数据库在那里,而且比以往任何时候都快。强制以及自动故障转移都很容易。一切看起来都很好。

第二天,我们尝试使用剩余的Files-RAID。第一件事是更改RAID级别,因为我们不喜欢预配置。删除预配置的RAID卷并在每个服务器上构建一个新的RAID卷后不久,我们检测到群集已关闭。到目前为止,据我所知,预先配置的Files-RAID卷已自动添加到池中,而正如我们刚刚删除的那样,它现在从池中丢失了。在检查时,我发现了新的Files-RAID,尽管仍在创建中,但也已显示为池的物理驱动器。因此,该池现在在每台服务器上都包含2个RAID卷,其中一个甚至都不存在。Get-PhysicalDisk将这些卷(而不是它们的磁盘)与HBA上的实际物理磁盘一起列出,不确定是否正常。

我能够淘汰这些物理磁盘(即实际上是RAID卷的磁盘),现在将它们标记为已淘汰。但是它们仍然在池中,我暂时无法删除它们,尝试这样做失败。Repair-VirtualDisk应该仅在其余磁盘上将虚拟磁盘重建到正确的状态(我经过的是:https : //social.technet.microsoft.com/Forums/windows/en-US/dbbf317b-80d2-4992- b5a9-20b83526a9c2 / storage-spaces-remove-physical-disk?forum = winserver8gen),但是这项工作很快就结束了,“成功”了,当然没有任何效果。

尝试将虚拟磁盘切换回联机失败,表明网络群集资源不可用。据我了解,这只能指(可用的)存储池,因为丢失的磁盘不是群集资源。该池显示无错误可修复。运行群集兼容性测试会声明不适合群集的配置。

我找不到剩下的任何地方可以弹动另外一英寸,整个事情永远都陷入僵局。关于如何防止正在运行的WSFC那样出现的任何想法?

我没有遇到任何启发性的错误消息,并且我也不想通过发布所有错误消息来进一步轰炸该页面。如果有人想提供任何具体细节,请告诉我。

谢谢您的宝贵时间,伙计们!

卡斯滕

根据Raspberry先生的要求进行更新 在此处输入图片说明


3
您能否与我们分享您的驱动器及其总线类型的列表?PoweShell命令:Get-PhysicalDisk -CanPool $true | Sort Model | ft FriendlyName, BusType, CanPool, OperationalStatus, HealthStatus, Usage, Size另外,在重新配置File-RAID并将S2D驱动器分配给新RAID时,您是否有可能犯了一个错误?
树莓先生

2
S2D + SQL Server有什么意义?如果您不打算(实际上不能...)运行任何虚拟机,为什么要花钱购买无限许可的VM?即使使用Standard,SQL Server 2016仍可以执行AlwaysOn Basic AG,并且仅使用Windows Server Standard 2016就可以节省大量资金。docs.microsoft.com/zh
cn/sql/

@先生。Raspberry:我用物理磁盘列表更新了该条目。请注意,我没有列出“ -CanPool $ true”,因为没有一个是可合并的。
卡斯滕·科普尼克(KarstenKöpnick)'17年

3
@KarstenKöpnick:好吧,我建议您考虑使用SQL Server AlwaysOn FCI + StarWind Virtual SAN Free。在使用2节点群集的情况下,此配置将以更低的成本更好地完成工作,并且在没有此类问题的情况下更易于部署和管理。starwindsoftware.com/...
树莓先生

1
“似乎是S2D的解决之道”好吧……祝你好运:)
BaronSamedi1958

Answers:


5

是的,您可以禁用自动池化行为。经验不是很好,但是肯定是可行的和受支持的。设置名称和示例cmdlet语法在此公共文档的“设置”部分中:

https://technet.microsoft.com/zh-cn/windows-server-docs/failover-clustering/health-service-overview

本质上,以管理员身份运行此命令:

Get-StorageSubSystem群集* | Set-StorageHealthSetting-名称“ System.Storage.PhysicalDisk.AutoPool.Enabled”-值False

希望这可以帮助!-Cosmos(@cosmosdarwin),Microsoft PM


@CosmosDarvin:谢谢!看起来可以解决问题。我需要深入了解它并理解其中的含义,然后再尝试进行报告。
卡斯滕·科普尼克(KarstenKöpnick)'17年

@CosmosDarvin:非常感谢。我终于有机会更深入地研究该主题,以了解潜在的影响。据我所知,禁用该选项后,唯一的后果就是必须使用Add-PhysicalDisk命令将磁盘手动添加到池中。这是一个很好的权衡。我找不到其他并发症或缺点的任何迹象,因此我将尝试一下。-仅需记录下更换磁盘时手动添加磁盘的必要性。-我会报告结果。
KarstenKöpnick17年

报告结果:我想补充一点,我无法使用这种方法收集任何实际经验。决定添加一个磁盘盒并使用它代替S2D。如此大小的RAID中的磁盘更换是一项常见的任务,并且要求随时有足够专业知识的人来执行PowerShell干预,甚至是有据可查的人员,以进行简单的磁盘交换也被视为停下来。那样看,我完全同意。因此,我们使用机柜重新安装,此后没有任何问题。-谢谢大家的友善和专家帮助。
KarstenKöpnick17年

2

我发现此问题的解决方法是通过将RAID卷或磁盘的总线类型从支持的类型之一更改为不受支持的类型来更改它。

您将必须从“设备管理器”中识别控制器驱动程序,然后在注册表中找到以下位置的驱动程序名称。

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ SmartPqi \ Parameters

就我而言,我已将与SAS对应的注册表项更改为RAID

«BusType»= 0x00000008(RAID)(而不是0x0000000a)(SAS)

重新启动机器

进行此更改之后,您可以在Windows Storage子系统中使用存储池,而不是使用Clustered Storage Spaces。

如果您想应用这种解决方法,请小心,因为它不是经过验证的解决方案,并且可能会使您的生产环境面临高风险。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.