跳转到主内容

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

Views:
960
Visibility:
Public
Votes:
17
Category:
clustered-data-ontap-8
Specialty:
san
Last Updated:

适用场景

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

问题和答案

什么是 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服务操作设置持久性预留的示例:

 

 

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

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

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

 

NetApp 存储系统使用 SCSI 预留的原因如下
  • 在 SAN 环境中、 NetApp 光纤连接存储系统将为启动程序请求的 LUN 设置并遵守经典版本 / 保留和永久保留。
  • 在磁带备份环境中、可以将存储系统配置为使用 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]为命令。 
  • 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 ,并从启动程序启动中止。

 

示例:

 

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 支持部门。

 

NetApp provides no representations or warranties regarding the accuracy or reliability or serviceability of any information or recommendations provided in this publication or with respect to any results that may be obtained by the use of the information or observance of any recommendations provided herein. The information in this document is distributed AS IS and the use of this information or the implementation of any recommendations or techniques herein is a customer's responsibility and depends on the customer's ability to evaluate and integrate them into the customer's operational environment. This document and the information contained herein may be used solely in connection with the NetApp products discussed in this document.
Scan to view the article on your device