什么是 SCSI 保留和 SCSI 永久保留?
适用于
- 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
服务操作设置永久保留的示例:
当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]
命令。
- 在 Data ONTAP 7.1.1 之前的版本中,SCSI 保留/释放保留由
- 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 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 的命令。 |
示例:
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