了解介质错误和坏区

存储系统在无法成功读块时会向主机返回介质错误响应。 系统对主机读操作的响应应遵循此行为。

提供的卷虚拟化将延长向主机返回介质错误的时间。 由于与非虚拟化系统的这一差异,因此系 统使用术语坏区(而不是介质错误)。

系统从受管磁盘 (MDisk) 上的扩展数据块分配卷。 MDisk 可以是外部存储控制器上的卷或从内部驱动器创建的 RAID 阵列。 在任一情况下,根据所用的 RAID 级别,通常都会防止单个驱动器发生读错误。 但是,如果多个驱动器发生错误或由于其他问题导致驱动器正在重新构建或脱机,那么仍可能在读请求时出现介质错误。

系统提供了一些迁移工具,可用于将卷从一组底层物理存储器移至另一组底层物理存储器,或者复制使用高速镜像或全局镜像的卷。在所有这些情况下,当读取原始卷上的逻辑块地址时,经迁移或复制的卷会向主机返回介质错误。系统会保留坏区表以记录无法进行读取的逻辑块地址。 这些表与为卷提供存储器的 MDisk 关联。

dumpmdiskbadblocks 命令和 dumpallmdiskbadblocks 命令可用于查询坏区的位置。
Important: dumpmdiskbadblocks 输出已创建的虚拟介质错误,而不输出 MDisk 或驱动器上实际介质错误的列表。

用于记录坏区位置的表可被填满。 该表可填入一个 MDisk 或整个系统。 如果该表的确已填满,由于无法创建源卷的精确映像,因此创建坏区的迁移或复制将失败。

在以下情况下,系统将在事件日志中创建警报:
  • 检测到介质错误和创建坏区时
  • 坏区表填满时

坏区错误 列出了坏区错误代码。

Table 1. 坏区错误
错误代码 描述
1840 受管磁盘具有坏区。 在外部控制器上,这必须是拷贝介质错误。
1226 系统无法创建坏区,因为 MDisk 已达到允许的最大坏区数量。
1225 系统无法创建坏区,因为系统已达到允许的最大坏区数量。

针对这些警报的建议操作将指导您纠正这一情况。

通过取消分配卷磁盘数据块、删除卷或向块发出写 I/O 来清除坏区。 一旦检测到坏区就进行修复是一个好办法。 此操作可防止在复制或迁移卷时传播坏区。 但是,坏区可能是应用程序未使用的卷的一部分。 例如,它可能是尚未初始化的数据库的一部分。 在应用程序向这些坏区写数据时,将修复这些区域。 修复前,坏区记录将继续使用可用的坏区空间直至用尽。