了解介质和已恢复磁盘错误
适用场景
- ONTAP
- 磁盘介质错误
问题解答
什么是介质错误?
介质错误是指存储磁盘因访问存储的数据时出现问题而无法执行请求的 I/O 操作的事件。
介质错误在读取事务中更为常见,但也可能在写入时发生。如果磁盘在查找写入数据的位置时遇到问题,则写入时可能会发生介质错误。读取时,除了这些定位故障之外,磁盘可能会在检索数据时遇到问题。当磁盘写入数据时,它还会写入其他信息,例如记录位置,记录 CRC 或校验和以确认数据写入完整性。
如果首次尝试时无法正确访问此信息,磁盘可能会将此信息归类为介质错误。
介质错误可细分为可恢复和不可恢复。这两种类型的错误都是预期的。事实上,磁盘供应商已经注意到可恢复和不可恢复介质错误的比率。这些错误率以介质访问的每位错误数表示。
注意:这是介质访问。512 字节的用户数据只是为每个扇区写入的数据的一部分。对于这些错误率,必须计算报头,拖架, CRC ,差距记录的字节,以及检索到的可能从未使用的读取标题的数据。
什么是可恢复的错误?
可恢复的错误比较常见,因此预期错误率较高。已恢复或可恢复的错误表示磁盘可能需要执行比初始访问更多的操作才能正确访问数据。该磁盘最终能够提供所请求的数据,而无需 RAID 干预。可能需要重试,或者重试不会生成正确的数据,并且已进行了一些错误更正。
请注意,磁盘始终使用数据记录错误更正代码。这些更正代码用于可靠地重现缺少的数据位。当磁盘读取数据时,它会为要读取的数据计算 CRC ;然后将此 CRC 与随数据存储的 CRC 进行比较。如果不匹配,则可以应用错误更正代码来重现缺少的位。
数据恢复通常包括一系列步骤,从重试到重新定位和重试以及应用错误更正代码。如果其中一个步骤成功,则磁盘会将此操作视为已恢复的数据操作。如果检索或复制数据的所有措施都失败,则此操作将成为不可恢复的数据操作。
在正常操作期间,系统如何从介质错误中恢复?
由于介质故障是预期的,因此,如果磁盘属于 RAID 存储系统,则可以正确处理这些故障。存储器按以下方式处理这些事件:
首先,存储器的软件会查看发生的与数据传输速率相关的可恢复和不可恢复块错误。如果错误率超过特定阈值,则名为存储运行状况监控器( Storage Health Monitor , SHM )的模块将生成 AutoSupport 消息。此 SHM 实际上会检查除这些错误率以外的各种参数,并查找诸如完成 I/O 所需的时间过长或超时等内容。
如果错误是可恢复的错误,则不会对事务执行任何操作。毕竟,它是可恢复的。磁盘驱动程序会将此操作视为成功的 I/O 操作。但是, SHM 会记下此事件,并在计算数据速率错误时考虑此因素。
如果错误不可恢复,则会执行 RAID 操作。磁盘实际上会在错误信息中返回错误的逻辑块地址。控制器会获取该 LBA 并向磁盘发出一个命令,以重新分配该坏块地址。磁盘会执行内部功能,以便从那时起,对该 LBA 的访问将导致访问物理介质的其他部分。请注意,磁盘中预留了大量扇区,仅用于此类事务。
如果将 LBA 重新分配到其他物理位置的管理功能因任何原因失败,则会报告错误,则控制器会通过使磁盘出现故障来响应此错误。无法成功重新分配坏块的磁盘将不再使用。
如果重新分配成功,则会重新写入与 LBA 关联的新物理位置。
在降级模式下出现介质错误时会发生什么情况?
在降级模式下,可能不会进行重建。如果某个磁盘在同一 RAID 组中的另一个磁盘出现故障时块级出现故障,则该扇区会出现双重错误情况。RAID-4 可以处理单个故障情况,但丢失另一个磁盘上的扇区意味着该条带存在两个故障磁盘。因此, RAID-4 无法确定缺少的数据是什么。这相当于 1 个方程式与 2 个未知方程的功能等效。这是无法解决的。
多磁盘崩溃是最终结果。因此,如果磁盘出现介质故障,则不是一个好主意。虽然磁盘可能在某个扇区上出现介质故障,但另一个磁盘在同一块地址发生介质故障的可能性极小。但是,如果磁盘发生故障,则表示 * 任何 * 扇区上的介质故障实际上会成为双磁盘故障。
我是否应该关注介质和已恢复的磁盘错误?
介质和已恢复的错误会在正常驱动器操作中报告。它们并不表示驱动器出现故障。
磁盘擦除过程读取整个磁盘时,磁盘擦除过程中会出现许多介质或已恢复的错误。
如果介质错误超过预期错误率,则 Storage Health Monitor 将标记驱动器。此情况将生成预测故障 AutoSupport 消息,并创建案例。如果某个驱动器被标记为错误率较高,则会创建一个案例并通知您此问题。
我是否应该关注介质和已恢复的磁盘错误?
不可以,这些错误属于正常驱动器操作的一部分,如果驱动器即将发生故障,则 ONTAP (通过存储运行状况监控器)将向您发出警告,并应将其删除。
我使用 NetApp 驱动器已有很长时间,这些新驱动器出现的介质错误更多。新驱动器是否出现问题?
如果 ONTAP 未标记要删除的磁盘驱动器,则此驱动器运行正常。NetApp 使用密度更高的驱动器在同一空间中提供大量存储。驱动器越密集,发生介质错误的可能性就越大。这是正常的,并将继续用于未来的驱动器技术。NetApp 会密切监控当前的驱动器技术,并在发现产品系列的高故障率时采取相应措施。
但是,我听说有一条一般规则来删除存在 " 大量介质错误 " 的驱动器?
如果您需要关注驱动器的运行状况, ONTAP 将通知您。
解释介质和已恢复磁盘错误消息
事件日志中的完整消息行将显示如下内容:
介质错误示例—已恢复
第 1 行:在对驱动器 8a.22 扇区 180529 执行读取操作(操作 0x28 )期间,适配器驱动程序报告已恢复的错误(感知数据 1 17 , 3 )。这意味着驱动器必须执行一些额外的工作才能读取此扇区中的数据。此扇区仍有效,不会重新分配。三位数代码( 1 17 , 3 )是驱动器报告的感知数据。此代码将被转换为系统可供用户读取的 " 已恢复错误 " 。
第 2 行: SCSI 层也报告相同的错误。SCSI 层以十六进制格式报告检测数据,并添加第四个代码,称为 FRU 。FRU 由驱动器供应商使用。
注:
- 恢复此错误不涉及 RAID 。驱动器已从内部错误中恢复,并已根据请求提供操作。
这通常称为 " 覆盖错误 " 或 " 覆盖介质错误 " 。 - 不会重新分配已恢复错误中涉及的扇区。
可以再次访问此扇区而不显示任何错误,也可以报告已恢复的错误。 - 无需执行其他操作。驱动器将继续正常运行,并且数据是安全的。
介质错误示例—未恢复
第 1 行:在驱动器 7a.38 扇区 37565872 上执行读取操作(操作 0x28 )期间,适配器驱动程序报告未恢复的读取错误(检测数据 3 11 , 0 )。这意味着驱动器无法提供从此扇区请求的数据。三位数代码( 3 11 , 0 )是驱动器报告的感知数据。此代码会被系统转换为可供用户读取的 " 未恢复的读取错误 " 。
第 2 行:报告相关扇区将重新分配。
第 3 行:适配器驱动程序报告驱动器的序列号,并显示未恢复的读取错误。
第 4 行: SCSI 层也报告相同的错误。SCSI 层以十六进制格式报告检测数据,并添加第四个代码,称为 FRU 。FRU 由驱动器供应商使用。
注意: 磁盘无法从此错误中恢复;因此,它会报告一个未恢复的读取错误。这是 RAID 接管的位置;请参见下一节。
恢复未恢复的介质错误的过程
第 1 行:在驱动器 7a.38 扇区 37565872 上执行读取操作(操作 0x28 )期间,适配器驱动程序报告未恢复的读取错误(检测数据 3 11 , 0 )。这意味着驱动器无法提供从此扇区请求的数据。三位数代码( 3 11 , 0 )是驱动器报告的感知数据。此代码会被系统转换为可供用户读取的 " 未恢复的读取错误 " 。
第 2 行:报告相关扇区将重新分配。
第 3 行:适配器驱动程序报告驱动器的序列号,并显示未恢复的读取错误。
第 4 行: SCSI 层也报告相同的错误。SCSI 层以十六进制格式报告检测数据,并添加第四个代码,称为 FRU 。FRU 由驱动器供应商使用。
第 5 行: RAID 层在块 4695734 中报告此磁盘上的读取错误。此块存储在扇区 37565872 上。
第 6 行: RAID 层报告坏块中的数据已从奇偶校验重新写入。
第 7 行:适配器驱动程序报告已成功重新分配此扇区。不会再使用坏扇区 37565872 。
注意: 在从奇偶校验重新写入错误块后,无需执行进一步操作。驱动器将继续正常运行,并且数据是安全的。请勿因此错误使驱动器出现故障。
追加信息
附加信息 _text