S2D故障转移集群:节点重启驱动器脱离及Set-VirtualDisk权限拒绝求助
解决S2D集群Set-VirtualDisk权限拒绝及IsManualAttach修改问题
问题背景
搭建3节点S2D故障转移集群,每节点配置6块驱动器组成存储池。重启任意节点后,部分关联驱动器因communication failure脱离存储池,仅能通过拔插SATA线缆恢复。需将虚拟磁盘的IsManualAttach设为False(当前为TRUE),但执行PowerShell命令set-virtualdisk -FriendlyName "multiresilient" -ismanualattach $false时始终提示Access denied,尝试域/本地管理员账户、给集群节点及集群名称授予EVERYONE全权限均无效。
错误输出:
set-virtualdisk : Access denied
Extended information:
Access is denied.
Recommended Actions:
- Check if you have the necessary privileges to perform the operation.
- Perform the operation from Failover Cluster Manager if the resource is clustered.
Activity ID: {a7a8b0da-9b4a-4d53-b3e4-41b195339e44}
At line:1 char:1- set-virtualdisk -FriendlyName "multiresilient" -ismanualattach $false
- CategoryInfo : PermissionDenied: (StorageWMI:ROOT/Microsoft/..._StorageCmdlets) [Set-VirtualDisk], CimException
- FullyQualifiedErrorId : StorageWMI 40001,Set-VirtualDisk
解决方案
1. 通过故障转移集群管理器修改(优先推荐)
按照错误提示的建议,直接在GUI中操作:
- 打开故障转移集群管理器,定位到目标集群
- 展开存储 > 磁盘,找到虚拟磁盘
multiresilient - 右键点击该磁盘,选择属性
- 在属性窗口中取消勾选手动附加选项,点击确定保存
2. 调整权限并正确执行PowerShell命令
- 以集群管理员身份启动PowerShell(而非普通本地/域管理员)
- 先切换到集群上下文,再执行修改命令:
# 确认集群名称 Get-Cluster | Select-Object Name # 切换到集群上下文 Set-ClusterContext -Cluster <你的集群名称> # 修改IsManualAttach属性 Set-VirtualDisk -FriendlyName "multiresilient" -IsManualAttach $false - 补充权限检查:在域控制器的Active Directory用户和计算机中,给集群对象(CNO)添加对存储池和虚拟磁盘的完全控制权限;同时确保操作账户加入本地的存储管理员和故障转移集群管理员组。
3. WMI直接调用修改(替代方案)
如果PowerShell命令仍报错,尝试通过WMI直接修改:
Get-WmiObject -Namespace root/microsoft/windows/storage -Class MSFT_VirtualDisk | Where-Object {$_.FriendlyName -eq "multiresilient"} | Invoke-WmiMethod -Name SetManualAttach -ArgumentList $false
4. 根源排查:驱动器通信故障
解决权限问题后,建议排查驱动器重启脱机的根源:
- 检查SATA控制器BIOS设置,确保开启AHCI模式,非必要时禁用热插拔
- 更新存储控制器驱动、固件至最新版本
- 验证集群节点间SMB 3.0通信:
Test-SmbConnection -ComputerName <其他节点主机名>
内容的提问来源于stack exchange,提问作者David Crawford
相关产品推荐
相关产品推荐

