有什么方法可以阻止存储空间直通自动添加磁盘?

有什么方法可以阻止存储空间直通自动添加磁盘?

在 2016 Windows Server 故障转移群集 (WSFC) 上,托管使用存储空间直通 (S2D) 的 SQL 故障转移群集实例 (FCI) 时出现问题。在每台服务器上,成功初始创建后,S2D 会自动将未使用的 RAID 卷添加到存储池(尽管无法在 RAID 卷上创建 S2D,并且绝对坚持使用未创建磁盘)。现在它坏了,据我所知,正是因为这个原因。结果,虚拟磁盘处于脱机状态,整个群集也随之瘫痪。由于缺少群集网络资源,它不会重新联机。可以停用相关磁盘,但不能将其移除。虚拟磁盘修复未运行,群集兼容性测试声称配置无效。

这是一个新设置。所以我可以简单地删除虚拟磁盘、集群甚至服务器,然后重新开始。但在我们开始工作之前,我需要确保这种情况不会再发生。系统仅仅因为不必要地错误地添加不受支持的磁盘而陷入虚拟困境,并崩溃,这不是我们可以部署的平台。所以我主要需要一种方法来防止这种情况发生,而不是现在修复它。我猜想,防止 S2D 设置抓取比创建时更多的磁盘就可以解决问题。在实际磁盘更换期间可能更多的手动交互的成本对于我们这里的集群来说是微不足道的。然而,尽管我到目前为止浏览了文档,但我找不到任何方法来控制它。除非我遗漏了什么,否则 Set-StoragePool、Set-VirtualDisk 和 Set-Volume 都没有提供任何参数来扩展。

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

以下只是上述内容的更多细节:我们有 2 台 HPE DL380 Gen9 服务器,通过支持 RDMA 的 10GB 以太网相互连接,并通过 1GB 连接到客户端网络。每台服务器都配备一个 RAID 控制器 HP ??? 和一个简单的 HBA 控制器 HP ???(因为 S2D 绝对需要并且只能在直接连接的非 RAID 磁盘上工作)。存储配置包括 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 先生的要求进行更新 在此处输入图片描述

答案1

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

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

本质上,以管理员身份运行它:

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

希望这能有所帮助! - Cosmos (@cosmosdarwin),微软 PM

答案2

我发现解决此问题的方法是更改​​ RAID 卷或磁盘的总线类型,将其从受支持的类型更改为不受支持的类型。

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SmartPqi\参数

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

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

重启机器

完成此更改后,您可以在 Windows 存储子系统中拥有存储池,而不是集群存储空间

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

相关内容