不久前更换了故障驱动器后,我的虚拟磁盘长期处于不健康状态,但可以正常运行。修复命令立即返回到此虚拟磁盘,但健康状态并未准确指示问题所在,因此我忽略了警告。
最近,我错误地从该阵列断开了一个正在工作的驱动器,并在几个小时后重新安装它(这两个操作都涉及对服务器进行电源循环)。当服务器重新启动时,池中的所有 VD 都在工作,除了这个奇偶校验 VD。它被标记为,IsManualAttach=true
并且一旦连接,文件系统就会显示为 RAW。我使用恢复删除软件检查内容,发现大多数文件中都有大量零。
我的理论是元数据中存在一些损坏或一些错误,导致 RAID 5 中的一列被禁用并阻止其修复。当拉出第二个驱动器时,另一列被禁用,但实际上将 VD 呈现给操作系统的更高级别代码无法正确处理此问题。我的问题是有人见过这种情况吗?是否有任何工具可以让我查看和操作存储空间中的低级元数据?
更多信息:
我最近才发现有关此 VD 的这些事件已经记录了好几个月了(在 Microsoft-Windows-StorageSpaces-Driver/Operational 中):
(事件 ID 303)虚拟磁盘 {b731f6a8-b99f-11e4-811f-000c29404dab} 的托管数据的驱动器发生故障或丢失。因此,没有可用的数据副本。返回代码:此设备不存在。
(事件 ID 304)虚拟磁盘 {b731f6a8-b99f-11e4-811f-000c29404dab} 处于降级状态。当承载虚拟磁盘的物理磁盘发生故障、断开连接或遇到写入错误时,可能会发生这种情况。
Windows 将尝试修复虚拟磁盘。目前无需采取任何措施。
(事件 ID 306)尝试映射虚拟磁盘 {b731f6a8-b99f-11e4-811f-000c29404dab} 或为其分配更多存储空间失败。这是因为在更新虚拟磁盘元数据时发生写入失败。返回代码:此磁盘的物理资源已耗尽。
PS C:\Windows\System32> Get-VirtualDisk Redundant | fl
ObjectId : {1}...
PassThroughClass :
PassThroughIds :
PassThroughNamespace :
PassThroughServer :
UniqueId : A8F631B79FB9E411811F000C29404DAB
Access : Read/Write
AllocatedSize : 4626485084160
DetachedReason : None
FootprintOnPool : 6168646778880
FriendlyName : Redundant
HealthStatus : Healthy
Interleave : 262144
IsDeduplicationEnabled : False
IsEnclosureAware : False
IsManualAttach : True
IsSnapshot : False
LogicalSectorSize : 4096
Name :
NameFormat :
NumberOfAvailableCopies :
NumberOfColumns : 4
NumberOfDataCopies : 1
OperationalStatus : OK
OtherOperationalStatusDescription :
OtherUsageDescription :
ParityLayout : Rotated Parity
PhysicalDiskRedundancy : 1
PhysicalSectorSize : 4096
ProvisioningType : Thin
RequestNoSinglePointOfFailure : False
ResiliencySettingName : Parity
Size : 5497826574336
UniqueIdFormat : Vendor Specific
UniqueIdFormatDescription :
Usage : Other
WriteCacheSize : 33554432
PSComputerName :
答案1
在 Microsoft Storage Spaces/Storage Spaces Direct 非功能性设置中处理此类事件的唯一方法是 a) 从头开始重新创建池/虚拟磁盘,以及 b) 从备份中恢复数据。这是 SS/S2D 的一个众所周知的问题 :(