Add-ClusterSharedVolume -name "Physical Disk Resource Name"
DiskRunChkdsk 值 7 用于附加空间卷并将分区置于只读模式。 这样,空间便可以通过触发修复进行自我发现和自我修复。 修复将在装载后自动运行。 它还允许你访问数据,这可以帮助你访问和复制你有权访问的任何数据。 对于某些故障状态(例如 DRT 日志已满),需要运行计划任务“用于故障恢复的数据完整性扫描”。
“用于故障恢复的数据完整性扫描”任务用于同步和清除已填满的脏区域跟踪 (DRT) 日志。 此任务可能需要几个小时才能完成。 “用于故障恢复的数据完整性扫描”任务不会显示为存储作业,并且不提供进度指示器。 如果该任务显示为正在运行,那么它就是正在运行。 在完成后,它会显示为已完成。 如果在运行此任务时将其取消或重启节点,则需要从头开始运行此任务。
有关详细信息,请参阅排查存储空间直通运行状况和操作状态问题。
带有 STATUS_IO_TIMEOUT c00000b5 的事件 5120
对于 Windows Server 2016:为了减少在应用带有修复的更新时遇到这些症状的可能性,当节点上安装了从 2018 年 5 月 8 日到 2018 年 10 月 9 日发布的 Windows Server 2016 累积更新时,建议使用以下“存储维护模式”过程来安装 Windows Server 2016 的 2018 年 10 月 18 日累积更新或更高版本。
在安装了 2018 年 5 月 8 日 KB 4103723 到 2018 年 10 月 9 日 KB 4462917 累积更新的 Windows Server 2016 上重启某个节点后,你可能会收到带有 STATUS_IO_TIMEOUT c00000b5 的事件 5120。
重启节点时,事件 5120 会记录在系统事件日志中,并包含以下错误代码之一:
Event Source: Microsoft-Windows-FailoverClustering
Event ID: 5120
Description: Cluster Shared Volume 'CSVName' ('Cluster Virtual Disk (CSVName)') has entered a paused state because of 'STATUS_IO_TIMEOUT(c00000b5)'. All I/O will temporarily be queued until a path to the volume is reestablished.
Cluster Shared Volume 'CSVName' ('Cluster Virtual Disk (CSVName)') has entered a paused state because of 'STATUS_CONNECTION_DISCONNECTED(c000020c)'. All I/O will temporarily be queued until a path to the volume is reestablished.
记录事件 5120 时,会生成实时转储以收集调试信息,这可能会导致出现其他症状或影响性能。 生成实时转储会造成短时间的暂停,以便能够创建内存快照来写入转储文件。 具有大量内存且承受压力的系统可能会导致节点退出群集成员身份,同时导致记录以下事件 1135。
Event source: Microsoft-Windows-FailoverClustering
Event ID: 1135
Description: Cluster node 'NODENAME'was removed from the active failover cluster membership. The Cluster service on this node may have stopped. This could also be due to the node having lost communication with other active nodes in the failover cluster. Run the Validate a Configuration wizard to check your network configuration. If the condition persists, check for hardware or software errors related to the network adapters on this node. Also check for failures in any other network components to which the node is connected such as hubs, switches, or bridges.
2018 年 5 月 8 日在 Windows Server 2016 中引入了一项更改,它是一项为存储空间直通群集内 SMB 网络会话添加 SMB 可复原句柄的累积更新。 此项更新旨在提高发生暂时性网络故障后的复原能力,并改进 RoCE 处理网络拥塞状况的方式。 这些改进也无意中增大了 SMB 尝试重新连接时的超时,以及在重启节点时等待的超时。 这些问题可能会影响承受压力的系统。 在计划外停机期间,当系统等待连接超时时,还可能会出现长达 60 秒的 IO 暂停。若要解决此问题,请安装 Windows Server 2016 的 2018 年 10 月 18 日累积更新或更高版本。
注意:此项更新使 CSV 超时与 SMB 连接超时保持一致,从而解决了此问题。 它不会实现更改来禁用“解决方法”部分中提到的实时转储生成。
关机流程:
运行 Get-VirtualDisk cmdlet,并确保 HealthStatus 值为 Healthy。
运行以下 cmdlet 来排空节点:
Suspend-ClusterNode -Drain
运行以下 cmdlet,在存储维护模式中将磁盘放置在该节点上:
Get-StorageFaultDomain -type StorageScaleUnit | Where-Object {$_.FriendlyName -eq "<NodeName>"} | Enable-StorageMaintenanceMode
运行 Get-PhysicalDisk cmdlet,并确保 OperationalStatus 值为 In Maintenance Mode。
运行 Restart-Computer cmdlet 以重启节点。
节点重启后,运行以下 cmdlet 以从存储维护模式中删除该节点上的磁盘:
Get-StorageFaultDomain -type StorageScaleUnit | Where-Object {$_.FriendlyName -eq "<NodeName>"} | Disable-StorageMaintenanceMode
运行以下 cmdlet 来恢复节点:
Resume-ClusterNode
运行以下 cmdlet 检查重新同步作业的状态:
Get-StorageJob
禁用实时转储
若要缓解实时转储生成对具有大量内存且承受压力的系统的影响,还可能需要禁用实时转储生成。 下面提供了三个选项。
此过程可能会阻止收集 Microsoft 支持部门在调查此问题时所需的诊断信息。 支持座席可能要求你根据特定的故障排除方案重新启用实时转储生成。
可以通过两种方法禁用实时转储,如下所述。
方法 1(建议用于此方案)
若要完全禁用所有转储,包括系统范围的实时转储,请执行以下步骤:
创建以下注册表项:HKLM\System\CurrentControlSet\Control\CrashControl\ForceDumpsDisabled
在新的 ForceDumpsDisabled 项下,创建 REG_DWORD 属性 GuardedHost,并将其值设置为 0x10000000。
将新注册表项应用于每个群集节点。
必须重启计算机才能使注册表更改生效。
设置此注册表项后,创建实时转储将会失败并生成“STATUS_NOT_SUPPORTED”错误。
默认情况下,Windows 错误报告仅允许在每 7 天内为每种报告类型创建 1 个 LiveDump,在每 5 天内为每台计算机创建 1 个 LiveDump。 你可以更改此设置,方法是将以下注册表项设置为永远只允许在计算机上创建一个 LiveDump。
reg add "HKLM\Software\Microsoft\Windows\Windows Error Reporting\FullLiveKernelReports" /v SystemThrottleThreshold /t REG_DWORD /d 0xFFFFFFFF /f
reg add "HKLM\Software\Microsoft\Windows\Windows Error Reporting\FullLiveKernelReports" /v ComponentThrottleThreshold /t REG_DWORD /d 0xFFFFFFFF /f
注意:必须重启计算机才能使更改生效。
若要禁用群集生成实时转储(例如在记录事件 5120 时),请运行以下 cmdlet:
(Get-Cluster).DumpPolicy = ((Get-Cluster).DumpPolicy -band 0xFFFFFFFFFFFFFFFE)
此 cmdlet 对所有群集节点立即生效,而无需重启计算机。
如果你发现 IO 性能缓慢,请检查存储空间直通配置中是否启用了缓存。
可通过两种方式进行检查:
使用群集日志。 在所选的文本编辑器中打开群集日志,并搜索“[=== SBL Disks ===]”。这是生成日志的节点上的磁盘列表。
已启用缓存的磁盘示例:请注意,此处的状态为 CacheDiskStateInitializedAndBound,并显示了一个 GUID。
[=== SBL Disks ===]
{26e2e40f-a243-1196-49e3-8522f987df76},3,false,true,1,48,{1ff348f1-d10d-7a1a-d781-4734f4440481},CacheDiskStateInitializedAndBound,1,8087,54,false,false,HGST ,HUH721010AL4200 , 7PG3N2ER,A21D,{d5e27a3b-42fb-410a-81c6-9d8cc12da20c},[R/M 0 R/U 0 R/T 0 W/M 0 W/U 0 W/T 0],
未启用缓存:此处未显示 GUID,状态为 CacheDiskStateNonHybrid。
[=== SBL Disks ===]
{426f7f04-e975-fc9d-28fd-72a32f811b7d},12,false,true,1,24,{00000000-0000-0000-0000-000000000000},CacheDiskStateNonHybrid,0,0,0,false,false,HGST ,HUH721010AL4200 , 7PGXXG6C,A21D,{d5e27a3b-42fb-410a-81c6-9d8cc12da20c},[R/M 0 R/U 0 R/T 0 W/M 0 W/U 0 W/T 0],
未启用缓存:如果所有磁盘的类型相同,则默认不会启用缓存。 此处未显示 GUID,状态为 CacheDiskStateIneligibleDataPartition。
{d543f90c-798b-d2fe-7f0a-cb226c77eeed},10,false,false,1,20,{00000000-0000-0000-0000-000000000000},CacheDiskStateIneligibleDataPartition,0,0,0,false,false,NVMe ,INTEL SSDPE7KX02, PHLF7330004V2P0LGN,0170,{79b4d631-976f-4c94-a783-df950389fd38},[R/M 0 R/U 0 R/T 0 W/M 0 W/U 0 W/T 0],
从 SDDCDiagnosticInfo 使用 Get-PhysicalDisk.xml
使用“$d = Import-Clixml GetPhysicalDisk.XML”打开 XML 文件
运行“ipmo storage”
运行“$d”。 请注意,Usage 是 Auto-Select 而不是 Journal。你将看到如下所示的输出:
如何销毁现有群集以便再次使用相同的磁盘
在存储空间直通群集中,禁用存储空间直通并使用清理驱动器中所述的清理过程后,群集存储池仍会保持脱机状态,并且会从群集中删除运行状况服务。
下一步是删除虚构存储池:
Get-ClusterResource -Name "Cluster Pool 1" | Remove-ClusterResource
现在,如果在任何节点上运行 Get-PhysicalDisk,将看到池中的所有磁盘。 例如,某个实验室中有一个 4 节点群集,该群集包含 4 个 SAS 磁盘;为每个节点提供 100GB 磁盘空间。 在这种情况下,在禁用存储空间直通(删除 SBL(存储总线层)但保留筛选器)后,如果你运行 Get-PhysicalDisk,则它应该报告 4 个磁盘,不包括本地操作系统磁盘。 但它实际报告了 16 个磁盘。 对于群集中的所有节点,结果都是一样的。 运行 Get-Disk 命令时,你会看到编号为 0、1、2 ... 的本地附加磁盘,如以下示例输出所示:
HealthStatus
OperationalStatus
运行 Enable-ClusterS2D cmdlet 时,你可能会看到如下所示的错误:
若要解决此问题,请确保以 HBA 模式配置 HBA 适配器。 不应以 RAID 模式配置 HBA。
Enable-ClusterStorageSpacesDirect 在“正在等待显示 SBL 磁盘”阶段或进度为 27% 时挂起
你将在验证报告中看到以下信息:
连接到节点 <nodename>
的磁盘 <identifier>
返回了 SCSI 端口关联,并且找不到相应的机箱设备。 硬件与存储空间直通 (S2D) 不兼容,请联系硬件供应商验证对 SCSI 机箱服务 (SES) 的支持。
问题与磁盘和 HBA 卡之间的 HPE SAS 扩展卡有关。 SAS 扩展卡会在连接到该扩展卡的第一个驱动器与该扩展卡本身之间创建重复 ID。 此问题已在 HPE 智能阵列控制器 SAS 扩展卡固件:4.02 中得到解决。
Intel SSD DC P4600 系列有一个非唯一的 NGUID
你可能会遇到以下问题:对于多个命名空间,Intel SSD DC P4600 系列设备似乎报告类似的 16 字节 NGUID,例如以下示例中的 0100000001000000E4D25C000014E214 或 0100000001000000E4D25C0000EEE214。
uniqueid
deviceid
MediaType
BusType
serialnumber
canpool
friendlyname
OperationalStatus
若要解决此问题,请将 Intel 驱动器上的固件更新到最新版本。 2018 年 5 月发布的固件版本 QDV101B1 可以解决此问题。
Intel SSD 数据中心工具 2018 年 5 月版包含适用于 Intel SSD DC P4600 系列的固件更新 QDV101B1。
物理磁盘状态为“正常”,操作状态为“正在从池中删除”
在 Windows Server 2016 存储空间直通群集中,你可能会看到一个或多个物理磁盘的运行状态为“正常”,而操作状态为“(正在从池中删除,正常)”。
“正在从池中删除”是调用 Remove-PhysicalDisk 时设置的意向,但此状态存储在运行状况中以维护状态,并使用户能够在删除操作失败时进行恢复。 可使用以下方法之一手动将操作状态更改为“正常”:
从池中删除物理磁盘,然后将其添加回来。
Import-Module Clear-PhysicalDiskHealthData.ps1
运行 Clear-PhysicalDiskHealthData.ps1 脚本以清除意向。 (可以下载该脚本的 .TXT 文件。需要先将其另存为 .PS1 文件,然后才能运行。)
以下示例演示如何运行该脚本:
使用 SerialNumber 参数指定要设置为“正常”的磁盘。 可以从 WMI MSFT_PhysicalDisk 或 Get-PhysicalDIsk 获取序列号。 (在下面,我们只使用若干个 0 作为序列号。)
Clear-PhysicalDiskHealthData -Intent -Policy -SerialNumber 000000000000000 -Verbose -Force
使用 UniqueId 参数指定磁盘(同样可以从 WMI MSFT_PhysicalDisk 或 Get-PhysicalDIsk 获取)。
Clear-PhysicalDiskHealthData -Intent -Policy -UniqueId 00000000000000000 -Verbose -Force
文件复制速度缓慢
在使用文件资源管理器将大型 VHD 复制到虚拟磁盘时,你可能会遇到问题 - 文件复制花费的时间超过预期。
不建议使用文件资源管理器、Robocopy 或 Xcopy 将大型 VHD 复制到虚拟磁盘,因为这会导致性能低于预期。 复制过程不会经历存储堆栈下面的存储空间直通堆栈,而是类似于本地复制过程。
如果你要测试存储空间直通的性能,我们建议使用 VMFleet 和 Diskspd 对服务器进行负载和压力测试,以获得基线并设置预期的存储空间直通性能。
在节点重启期间,其余节点上预期会发生的事件。
可以放心地忽略这些事件:
Event ID 205: Windows lost communication with physical disk {XXXXXXXXXXXXXXXXXXXX }. This can occur if a cable failed or was disconnected, or if the disk itself failed.
Event ID 203: Windows lost communication with physical disk {xxxxxxxxxxxxxxxxxxxxxxxx }. This can occur if a cable failed or was disconnected, or if the disk itself failed.
如果你正在运行 Azure VM,则可以忽略此事件:Event ID 32: The driver detected that the device \Device\Harddisk5\DR5 has its write cache enabled. Data corruption may occur.
我们发现了一个严重问题,它会影响某些使用基于 Intel P3x00 系列 NVM Express (NVMe) 设备且固件版本低于“维护版本 8”的硬件的存储空间直通用户。
个别 OEM 的设备可能基于带有独特固件版本字符串的 Intel P3x00 系列 NVMe 设备。 有关最新固件版本的详细信息,请与 OEM 联系。
如果你在部署中使用基于 Intel P3x00 系列 NVMe 设备的硬件,我们建议立即应用最新可用固件(至少为维护版本 8)。