跳转到主内容

NetApp_Insight_2020.png 

什么是 SCSI 预留和 SCSI 持久预留?

Views:
38
Visibility:
Public
Votes:
0
Category:
data-ontap-8
Specialty:
san
Last Updated:

适用于

  • 集群模式 Data ONTAP 8 
  • Data ONTAP 7 及更早版本 
  • FlexPod

问题和答案

  • 什么是 SCSI 预留和 SCSI 持久预留?
  • 什么是 SCSI 持久性预留?
  • NetApp 存储系统是否支持 SCSI 预留?
  • 解决主机的 SCSI 预留冲突。
  • 与 SCSI 预留冲突相关的 SnapDrive 错误。
解决 NetApp 存储系统中的 SCSI 预留冲突。

什么是 SCSI 预留和 SCSI-3 持久预留

SCSI 预留用于控制对共享 SCSI 设备(例如磁盘或磁带驱动器)的访问。启动程序会在逻辑单元号( LUN )上设置预留,以防止其他启动程序更改 LUN 。这与文件锁定概念类似。SCSI 预留始终由主机启动程序设置。理想情况下,同一个启动程序将在受影响的 LUN 上执行 SCSI 版本。 

SCSI 预留的机制在 SCSI 协议中指定。按照这些协议中的说明、预留用于控制对设备的访问。最初的 SCSI 预留机制称为 SCSI 预留和发布(也称为 SCSI-2 预留)。在此机制下、启动程序将使用 SCSI reserve 命令设置预留。此预留可通过发出 SCSI 释放命令的所属主机或通过 SCSI 总线重置释放。因此,由于错误恢复而执行 SCSI 总线重置会导致预留释放。

SCSI-3 主命令规范提供了一种现代的预留方法,称为持久性预留。永久保留增加了保留的能力、即使总线被重置为错误恢复也可以保留。这些设置使用命令中的 SCSI 持久性保留空间 out 和持久性保留空间进行设置。虽然 SPC-2 支持保留和释放保留以及持续保留,但这两种机制是互斥的。如果在设备上放置了经典保留,则所有后续的持续保留请求都将失败,直到执行经典发行版为止。较新的 SPC-3 规范将传统的保留和发布机制弃之于永久保留。

SCSI 协议规范提供了有关预留的更多详细信息。

SCSI-3 永久保留如何工作?

SCSI-3 持久性预留支持多个节点访问设备,同时阻止对其他节点的访问。SCSI-3 永久保留还支持从主机到磁盘的多条路径、而 SCSI-2 预留不支持、并且只能与单个 LUN 路径配合使用。

SCSI-3 永久保留使用注册和预留的概念。要参与的系统、请在 LUN 中注册密钥。每个系统都注册自己的密钥。之后、注册系统可以建立预留。使用此方法、阻止写入访问就像从设备删除注册一样简单。希望弹出另一个系统的系统可能会注册、清除或抢占其他已注册启动程序。这种方法有效地避免了脑分裂情况。

永久保留允许多个客户端(启动程序)通过跟踪多个启动程序到目标的关系(称为 I_T Nexuses )与目标进行通信。i_T Nexus 是 SCSI 目标内特定 SCSI 启动程序端口与指定 LUN 的 SCSI 目标端口之间的关系。 

设置永久保留的第一步是注册保留密钥。预留密钥特定于每个 I_T 关系、并包含必要的信息、允许对 I_T Nexus 设备进行身份验证以控制预留。

永久保留有两个命令:

  • persistent reserve in:由启动程序用于读取有关现有预留和注册的目标的信息。
  • persistent reserve out:由启动程序用于注册、设置和更改其预留以及中断用于错误恢复的预留。

SCSI 持久性预留命令还使用称为 service actions 的子命令来执行特定功能,例如保留和释放预留。以下是如何使用persistent reserve out服务操作设置持久性预留的示例:

 

KB_1001463_1.png

 

reservation conflict当响应从目标发送到启动程序时、冲突的启动程序将需要重试reserve该请求。主机启动程序的操作系统将按reserve重试请求的时间间隔进行控制。冲突主机将继续从reservation conflict目标获取状态、直至发生以下事件之一:

  • 控制主机发送release命令。
  • SCSI 总线设备重置是从任何启动程序发出的。

:在目标设备的整个电源周期内, SCSI-3 持久预留可能会保留。此行为由启动程序在使用reserve APTPL 标志将预留请求发送到目标时确定。

NetApp 存储系统出于以下几个原因使用 SCSI 预留:

  1. 在 SAN 环境中、 NetApp 光纤连接存储系统将为启动程序请求的 LUN 设置并遵守经典版本 / 保留和永久保留。
  2. 在磁带备份环境中、可以将存储系统配置为使用 SCSI 预留空间在动态驱动器共享环境中保留磁带驱动器。 
    • 在 7.1.1 之前的 Data ONTAP 版本中、 SCSI 保留 / 发布预留由options tape.persistent_reservations [on | off]命令控制。 
    • Data ONTAP 7.1.1 及更高版本增加了设置 SCSI 保留 / 发布或 SCSI 永久保留的功能。options tape.persistent_reservations 该命令已过时并已替换options tape.reservations [scsi | persistent]为命令。 
  3. NetApp 高可用性( HA )存储控制器使用 SCSI 预留来控制磁盘访问。
    • 对于使用硬件磁盘所有权的 HA 对、 SCSI 预留仅在 CF 接管期间使用。  
    • 对于使用软件磁盘所有权的 HA 对、无论系统是否处于 CF 接管中、都将使用 SCSI 预留。
  • 在磁盘架的整个电源周期中,它们不会持续存在。因此,接管的节点将在磁盘架断电或驱动器重置时定期重新恢复预留。
  • 虽然可以看到预留存在、但无法确定哪个节点设置预留。

使用 Sanown (软件磁盘所有权)的主动 - 主动集群合作伙伴使用 SCSI-3 永久保留来控制磁盘所有权。无论 HA 对是否在 CF 接管中、都将使用这些预留。这些预留在重新引导后会持续存在。拥有预留的节点完全控制磁盘、包括读取和写入功能。SCSI-3 永久保留每 30 秒重新进行一次。 

解决主机上的 SCSI-2 预留冲突

lun reset 命令和命令target reset如何影响 SCSI-2 预留?

使用基于主机的软件是清除 SCSI 预留的最佳方法。通常, LUN 映射到单个主机。但是,在主机集群中、相同的 LUN 通常映射到所有集群节点。

在某些情况下、主机可能需要清除未启动的保留。  这是通过使用lun resettarget reset SCSI 命令来完成的。

存储系统在收到lun resettarget reset命令时如何响应

收到重置时将记录以下消息:

Mon Jan 5 18:19:40 CST [storage1: scsitarget.ispfct.lunReset:notice]: FCP Target 5a: LUN 0 was Reset by the Initiator at Port Id: 0x74001f (WWPN 5001438002210a3e)
Mon Jan  5 18:18:01 CST [storage1: scsitarget.ispfct.targetReset:notice]: FCP Target 6a: Target was Reset by the Initiator at Port Id: 0x1d3600 (WWPN 500508b200b65d52)

发出target reset命令时是否必须使用特定的 LUN ?   
target reset该命令可以由启动程序发送而无需指定特定 LUN 的地址、但lun reset 需要将寻址到特定 LUN 。

 

警告:目标重置将中止所有映射到发出此命令的启动程序的 LUN 上的所有命令。  它还会中止来自其他启动程序的命令到启动程序访问的 LUN ,并从启动程序启动中止。

 

示例:

KB_1001463_2.png

 

SCSItarget reset or lun reset 命令是否会清除 SCSI-2 预留?

lun reset target reset 命令是否会影响 SCSI-3 持久保留?

是否可以lun reset从对该 LUN 具有可见性的任何主机上的任何启动程序发出 SCSI 命令?
是但是lun reset ,需要将该命令寻址到特定 LUN 。

SCSIlun reset 是否会影响登录到特定 LUN 的任何其他启动程序?
是所有映射到特定 LUN 的启动程序都将收到LUN RESET通知。 

SCSI 目标重置命令是否会影响所有已登录到目标 LUN 的启动程序的所有 LUN ?
NetApp SCSI 目标上的目标重置仅重置映射到发送目标重置命令的启动程序的 LUN 。

与 SCSI 预留冲突相关的 SnapDrive 错误

尝试使用 SnapDrive 连接到 LUN 时,可能会出现以下错误:

Unable to locate a LUN to perform requested operation.
The LUN has SCSI reservation but has not been mapped.

在 Windows 主机上、在 Computer Management (计算机管理) > Disk Management (磁盘管理)中、磁盘也可以显示为Unknown/Unreadable

可以通过清除 SCSI 预留空间来解决此问题。建议使用基于主机的软件清除这些预留。如果这不起作用,则可以由 NetApp 全球支持的升级工程师执行此操作—如有必要,可从存储系统执行此操作。

解决来自 NetApp 存储系统的 SCSI-3 永久保留冲突—在尝试从 NetApp 存储系统清除任何保留之前,请与 NetApp 支持部门联系。