跳转到主内容

什么是 SCSI 保留和 SCSI 永久保留?

Views:
5,117
Visibility:
Public
Votes:
23
Category:
clustered-data-ontap-8
Specialty:
san
Last Updated:

适用于

  • ONTAP 9
  • Clustered Data ONTAP 8 
  • Data ONTAP 7 及更早版本 
  • Flexpod

问题和答案

什么是 SCSI 保留和 SCSI-3 永久保留?

  • SCSI 保留用于控制对共享 SCSI 设备(如磁盘或磁带驱动器)的访问。
  • 启动程序 在 LUN 上设置保留, 以防止其他启动程序对 LUN 进行更改。此操作类似于文件锁定概念。SCSI 保留始终由主机启动器设置。理想情况下,相同的启动器将在受影响的 LUN 上执行 SCSI 释放。 
  • SCSI 保留的机制在 SCSI  协议中指定。根据这些协议的规定,保留用于控制对设备的访问。
  • 最初的 SCSI 保留机制称为 SCSI Reserve and Release,也称为 SCSI-2 Reservations。在此机制下,启动器将使用 SCSI  Reserve 命令设置保留。此保留可以由发出 SCSI  Release 命令的所有主机或 SCSI 总线重置释放。因此,由于错误恢复而执行的 SCSI 总线重置将导致保留被释放。
  • SCSI-3 Primary Commands 规范为保留提供了一种称为 Persistent Reservations 的现代方法。Persistent Reservations 添加了保留预订的功能,即使总线已重置以进行错误恢复。这些是使用 SCSI  Persistent Reserve Out 和 Persistent Reserver IN 命令设置的。尽管 SPC-2 同时支持 Reserve and Release 以及 Persistent Reservations,但这两种机制是相互排斥的。
  • 如果将经典保留放置在设备上,则所有后续的 Persistent Reservation 请求都将失败,直到执行经典 Release。较新的 SPC-3 规范弃用了经典的 Reserve and Release 机制,转而采用 Persistent Reservations。
  • SCSI  协议 规范提供了有关保留的更多详细信息。

SCSI-3 持久性保留如何工作?

  • SCSI-3 永久保留支持多个节点访问设备,同时阻止其他节点进行访问。SCSI-3 永久保留还支持从主机到磁盘的多条路径,而 SCSI-2 保留则不支持,并且只能使用指向 LUN 的单条路径。
  • SCSI-3 永久保留使用了注册和保留的概念。参与的系统向 LUN 注册一个密钥。每个系统都会注册自己的密钥。在此之后,已注册的系统可以建立保留。使用此方法,阻止写入访问就像从设备中删除注册一样简单。希望弹出另一个系统的系统可以注册、清除或抢占其他已注册的启动器。该方法有效地避免了脑裂情况。
  • 永久保留允许多个客户端(启动器)通过跟踪称为 I_T nexus 的多个启动器与目标之间的关系来与目标进行通信。I_T nexus 是 SCSI 目标内给定 LUN 的特定 SCSI 启动器端口和 SCSI 目标端口之间的关系。 
  • 设置永久保留的第一步是注册保留密钥。保留密钥特定于每个 I_T nexus,并包含允许对 I_T nexus 设备进行身份验证以控制保留的必要信息。

持久性保留有两个命令:

  • persistent reserve in:发起人用于读取有关现有预订和注册的目标的信息。
  • persistent reserve out:发起人用于注册、设置和修改其保留,并中断保留以进行错误恢复。

SCSI 永久保留命令还使用名为服务操作的子命令来执行特定功能,例如保留和释放保留。下面是使用 persistent reserve out 服务操作设置永久保留的示例:

 

SCSI Reservations and SCSI Persistent Reservations

 

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

  • 控制主机发送 release 命令。
  • SCSI 总线设备重置由任何启动器发出。

注意:SCSI-3 永久保留可能会在目标设备的电源循环中保留。此行为由发起方在使用 APTPL 标记将reserve预订请求发送给目标时确定。

 

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 takeover 状态,都会使用这些保留。这些保留在重新启动后仍然持续存在。
  • 拥有保留的节点对磁盘具有完全控制权,包括读写功能。
  • SCSI-3 永久保留每 30 秒重新声明一次。 

 

从主机解决 SCSI-2 保留冲突

如何使用lun reset 和target reset命令影响 SCSI-2 保留?

  • 使用基于主机的软件是清除 SCSI 保留的最佳方式。通常,LUN 映射到单个主机。但是,在主机集群的情况下, 相同的 LUN 通常映射到所有集群节点。
  • 在某些情况下,主机可能需要清除其未发起的保留。 这是通过使用 lun reset 和 target reset SCSI 命令来完成的。


存储系统在收到lun reset或target 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 的命令。

 

示例:

Resolving SCSI-2 reservation conflicts from a Host

 

 SCSI target reset or lun reset 命令会清除 SCSI-2 保留吗? 
    是

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

SCSI lun reset 命令是否可以 从对此 LUN 具有可见性的任何主机上的任何启动器发出?
    是。但是,该 lun reset 命令需要指向特定的 LUN。

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

SCSI  目标重置命令是否会影响来自登录到 目标 LUN 的所有启动器的所有 LUN? 
    NetApp SCSI 目标上的目标重置仅重置映射到发送目标重置命令的启动器的那些 LUN。

SnapDrive 与 SCSI 保留冲突相关的错误
  • 尝试使用 SnapDrive 连接到 LUN 时,可能会出现以下错误:
  • Unable to locate a LUN to perform requested operation.
  • The LUN has SCSI reservation but has not been mapped.
  • 在 Windows 主机上的 计算机管理 > 磁盘管理,磁盘也可以显示为 Unknown/Unreadable。
  • 这可以通过清除 SCSI 保留来解决。

 

 

建议使用基于主机的软件来清除这些保留。

如果这不起作用,可以由NetApp全球支持的升级工程师执行,必要时可以从存储系统完成

解决 NetApp 存储系统中 SCSI-3 永久保留的冲突 - 在尝试从 NetApp 存储系统中清除任何保留之前,请与 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.