Windows 中的存储类内存 (NVDIMM N) 的运行状况管理

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows 10

针对 Windows 中的存储类内存 (NVDIMM N) 设备,本文向系统管理员和 IT 专业人员提供了有关错误处理和运行状况管理的信息,重点强调存储类内存设备和传统存储设备之间的差异。

如果不熟悉 Windows 对存储类内存设备的支持,请观看以下短片了解概况:

  • 在 Windows Server 2016 中将非易失存储器 (NVDIMM-N) 用作块存储器
  • 在 Windows Server 2016 中将非易失存储器 (NVDIMM-N) 用作按字节编址存储器
  • 使用 Windows Server 2016 中的 PMEM 提升 SQL Server 2016 性能

另请参阅了解和部署存储空间直通中的永久性内存

自 Windows Server 2016 和 Windows 10(1607 版)起,具有本机驱动程序的 Windows 支持符合 JEDEC 的 NVDIMM-N 存储类内存设备。 虽然这些设备的行为与其他磁盘 (HDD 和 SSD)类似,但也存在一些差异。

此处列出的所有情况都极少发生,具体取决于硬件的使用状况。

以下各种实例可能引用了存储空间配置。 令人感兴趣的特别配置是:两个 NVDIMM N 设备在存储空间中用作一个镜像回写式缓存。 要设置此配置,请参阅配置具有 NVDIMM-N 回写式缓存的存储空间

在 Windows Server 2016 中,存储空间 GUI 显示 NVDIMM N 总线类型的状态为“未知”。 在创建池、存储 VD 时,它不会出现功能丢失或无法使用的情况。 可以通过运行以下命令来验证总线类型:

PS C:\>Get-PhysicalDisk | fl

cmdlet 输出中的参数 BusType 将正确显示总线类型为“SCM”

检查存储类内存的运行状况

要查询存储类内存的运行状况,请在 Windows PowerShell 会话中使用以下命令。

PS C:\> Get-PhysicalDisk | where BusType -eq "SCM" | select SerialNumber, HealthStatus, OperationalStatus, OperationalDetails

执行此操作将生成此示例输出:

SerialNumber HealthStatus OperationalStatus OperationalDetails
802c-01-1602-117cb5fc 正常 确定
802c-01-1602-117cb64f 警告 预计故障 {Threshold Exceeded,NVDIMM_N Error}

注意

若要查找事件中指定的 NVDIMM-N 设备的物理位置,请在事件查看器中事件的“详细信息”选项卡上,转到“EventData”>“位置”。 请注意,Windows Server 2016 列出了不正确的 NVDIMM-N 设备位置,但此问题已在 Windows Server 版本 1709 中得到修复。

有关了解各种运行状况的帮助,请参阅以下部分。

“警告”运行状况状态

这种情况即:检查存储类内存设备的运行状况时,发现它的“运行状况状态”显示为“警告”,如此示例输出中所示:

SerialNumber HealthStatus OperationalStatus OperationalDetails
802c-01-1602-117cb5fc 正常 确定
802c-01-1602-117cb64f 警告 预计故障 {Threshold Exceeded,NVDIMM_N Error}

下表列出了一些有关这种情况的信息。

方位 说明
可能的情况 NVDIMM-N 警告阈值违例
根本原因 NVDIMM-N 设备追踪各种阈值,例如温度、NVM 生存期和/或能量源生存期。 当超出其中一个阈值时,操作系统将会收到通知。
常规特性 设备保持完全正常运行。 这是警告,不是错误。
存储空间性能 设备保持完全正常运行。 这是警告,不是错误。
详细信息 PhysicalDisk 对象的 OperationalStatus 字段。 EventLog – Microsoft-Windows-ScmDisk0101/Operational
要执行的操作 视警告阈值违例而定,可能需要谨慎考虑是替换整个 NVDIMM-N 还是替换其中某些部分。 例如,如果 NVM 生存期阈值已经违例,那么替换 NVDIMM-N 是可以的。

写入 NVDIMM-N 失败

这种情况即:检查存储类内存设备的运行状况时,发现“运行状况状态”显示为“不正常”,“操作状态”显示为“IO 错误”,如此示例输出中所示:

SerialNumber HealthStatus OperationalStatus OperationalDetails
802c-01-1602-117cb5fc 正常 确定
802c-01-1602-117cb64f 不正常 {元数据已过时, IO 错误, 暂时性错误} {丢失数据持久性, 丢失数据, NV...}

下表列出了一些有关这种情况的信息。

方位 说明
可能的情况 持久性丢失/备份电源
根本原因 NVDIMM-N 设备依赖备份电源(通常是电池或超级电容)获得持久性。 如果此备份电源的源不可用或设备出于任何原因(控制器/闪存错误)无法执行备份,那么数据将处于危险之中,Windows 将阻止对受影响设备的任何进一步写入操作。 仍有可能执行“读取”操作以疏散数据。
常规特性 NTFS 卷将被卸除。
所有受影响的 NVDIMM-N 设备的 PhysicalDisk 运行状况状态字段将显示为“不正常”。
存储空间性能 只有一个 NVDIMM-N 受影响的情况下,存储空间仍可正常运行。 如果多个设备受到影响,则将无法写入到存储空间。
所有受影响的 NVDIMM-N 设备的 PhysicalDisk 运行状况状态字段将显示为“不正常”。
详细信息 PhysicalDisk 对象的 OperationalStatus 字段。
EventLog – Microsoft-Windows-ScmDisk0101/Operational
要执行的操作 我们建议备份受影响的 NVDIMM-N 的数据。 要获得读取访问权限,可以手动使磁盘联机(将以只读 NTFS 卷形式出现)。

要完全清除这种情况,必须解决根本原因(即提供电源或更换 NVDIMM-N,视具体问题而定),NVDIMM-N 上的卷必须脱机并再次进入联机状态或重新启动系统。

若要使 NVDIMM N 再次在存储空间中可用,请使用 Reset-PhysicalDisk cmdlet,它将重新集成设备并启动修复进程。

NVDIMM-N 显示“0”字节容量,或显示为“通用物理磁盘”

这种情况即:存储类内存设备显示 0 字节容量,无法初始化或公开为操作状态显示“通信中断”的“通用物理磁盘”对象,如此示例输出中所示:

SerialNumber HealthStatus OperationalStatus OperationalDetails
802c-01-1602-117cb5fc 正常 确定
警告 通信中断

下表列出了一些有关这种情况的信息。

方位 说明
可能的情况 BIOS 未将 NVDIMM N 公开到操作系统
根本原因 NVDIMM N 设备基于 DRAM。 当引用损坏的 DRAM 地址时,大多数 CPU 将启动计算机检查并重新启动服务器。 然后,某些服务器平台取消映射 NVDIMM,以阻止操作系统访问相应平台,并可能会引起其他计算机检查。 如果 BIOS 检测到 NVDIMM N 已失败并且需要更换,这种情况同样也可能发生。
常规特性 NVDIMM-N 显示为未初始化、容量为 0 字节,并且无法读取或写入。
存储空间性能 存储空间仍可运行(前提是只有 1 个 NVDIMM N 受影响)。
NVDIMM-N PhysicalDisk 对象的“运行状况状态”显示为“警告”和“通用物理磁盘”
详细信息 PhysicalDisk 对象的 OperationalStatus 字段。
EventLog – Microsoft-Windows-ScmDisk0101/Operational
要执行的操作 NVDIMM-N 设备必须经过替换或净化,以便服务器平台将其再次公开给主机操作系统。 建议替换设备,因为可能会发生其他无法纠正的错误。 使用 Add-physicaldisk cmdlet 可以将替换设备添加到存储空间配置。

重启后,NVDIMM-N 显示为 RAW 或空磁盘

这种情况即:检查存储类内存设备的运行状况时,发现“运行状况状态”显示为“不正常”,“操作状态”显示为“无法识别的元数据”,如此示例输出中所示:

SerialNumber HealthStatus OperationalStatus OperationalDetails
802c-01-1602-117cb5fc 正常 确定 {未知}
802c-01-1602-117cb64f 不正常 {无法识别的元数据, 元数据已过时} {未知}

下表列出了一些有关这种情况的信息。

方位 说明
可能的情况 备份/还原失败
根本原因 备份或还原过程失败可能会导致 NVDIMM-N 上的所有数据丢失。 加载操作系统时,它将显示为一个没有分区或文件系统的全新 NVDIMM-N 并呈现为 RAW,这意味着它不具有文件系统。
常规特性 NVDIMM-N 将处于只读模式。 执行显式用户操作才能再次使用。
存储空间性能 如果只有一个 NVDIMM 受到影响,那么存储空间仍可以运行。
NVDIMM-N 物理磁盘对象的运行状况状态将显示为“不正常”,无法用于存储空间。
详细信息 PhysicalDisk 对象的 OperationalStatus 字段。
EventLog – Microsoft-Windows-ScmDisk0101/Operational
要执行的操作 如果用户不想替换受影响的设备,他们可以使用 Reset-PhysicalDisk cmdlet 清除受影响的 NVDIMM-N 上的只读条件。 在存储空间环境中,这也会尝试将 NVDIMM-N 重新集成到存储空间并启动修复进程。

交错的集合

交错的集合通常在平台的 BIOS 中创建,使多个 NVDIMM-N 设备显示为主机操作系统的单个设备。

Windows Server 2016 和 Windows 10 Anniversary Edition 不支持 NVDIMM-N 的交错的集合。

在撰写本文时,没有主机操作系统在这种集合中正确识别单个 NVDIMM-N、清楚地告知用户哪个特定设备可能导致错误或需要进行维修的机制。