跳转到主内容

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

Views:
1,900
Visibility:
Public
Votes:
22
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 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 和 Release 以及 Persistent Reservations,但这两种机制是相互排斥的。
  • 如果将经典保留放置在设备上,则所有后续的持久保留请求都将失败,直到执行经典释放。较新的 SPC-3 规范弃用了经典的 Reserve 和 Release 机制,转而采用 Persistent Reservations。
  • SCSI 协议规范提供了有关保留的更多详细信息。

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

  • SCSI-3 永久保留支持多个节点访问设备,同时阻止对其他节点的访问。SCSI-3 永久保留还支持从主机到磁盘的多个路径,而 SCSI-2 保留不支持,并且只能使用指向 LUN 的单个路径。
  • SCSI-3 永久保留使用注册和保留的概念。参与的系统向 LUN 注册密钥。每个系统都会注册自己的密钥。在此之后,已注册的系统可以建立保留。使用此方法,阻止写入访问就像从设备中删除注册一样简单。希望弹出另一个系统的系统可以注册、清除或抢占其他注册的启动器。该方法有效地避免了脑裂状况。
  • 永久保留允许多个客户端(启动器)通过跟踪称为 I_T nexuses 的多个启动器与目标之间的关系来与目标进行通信。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 保留在动态驱动器共享环境中保留磁带驱动器。 
    • 在 Data ONTAP 7.1.1 之前的版本中,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 对是否处于接管状态,都会使用预订。这些预订在重新启动后会持续存在。
  • 拥有保留的节点可以完全控制磁盘,包括读写功能。
  • 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 的命令。

 

示例:

Resolving SCSI-2 reservation conflicts from a Host

 

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

Will the 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.