在iSCSI中,启动器端口Id定义为: iSCSI_Name,I,Initiator_Session_Id
目标端口ID定义为: iSCSI_Name,T,Target_Portal_Group_Tag
在启动器发出“PR In-Reserve”SCSI命令后,会持续保存上述与I_T连接有关的信息。如果服务器上发生崩溃,并且在启动器重新登录后,启动器很可能会获得新的Initiator_Session_Id。如果是这样,发起人(或任何已注册的发起人)将如何清除预留?
谢谢你, 艾哈迈德。
答案 0 :(得分:1)
如果服务器上的"崩溃是目标端的崩溃,则iSCSI发起方通常会使用相同的会话ID重新建立会话。 Linux和Windows启动器的行为如下。 iSCSI的弹性很大一部分在于它能够独立于传输协议恢复会话状态。在这种情况下,没有必要清除预订;发起者保留它。
如果崩溃发生在启动器端,那么你是对的,除非会话被持久记录(在Linux上,它不是),会话获得一个新的会话ID。此时,这是PERSISTENT RESERVE OUT - PREEMPT
或PREEMPT AND ABORT
命令的来源。使用持久保留作为协调对共享存储的访问的方式的集群都必须处理需要接管的情况另一个发起人持有的预订。这就是SPC-4草案中关于命令的说法:
应用程序客户端可以抢占持久保留 通过发出持久保留的另一个持久保留 具有PREEMPT服务操作或PREEMPT AND ABORT服务的命令 具有以下参数的操作:
a)RESERVATION KEY字段设置为保留键的值 已在I_T连接的逻辑单元中注册;
b)SERVICE ACTION RESERVATION KEY字段设置为的值 要抢占的持久预约的预约密钥;和
c)设置TYPE字段和SCOPE字段以定义新的持久性 保留。创建持久保留的SCOPE和TYPE 通过抢占I_T连接可能与那些不同 持续保留被抢先一步。
在这里,你的发起者会出现,并执行PERSISTENT RESERVE OUT - REGISTER
命令来注册它的nexus。然后,它调用PERSISTENT RESERVE IN - READ RESERVATION
和READ KEYS
或者只调用READ FULL STATUS
来检索保留预订的发起者的密钥。最后,它执行PREEMPT AND ABORT
将旧保留移动到新的连接。
来源:(需要注册)http://www.t10.org/cgi-bin/ac.pl?t=f&f=spc4r35a.pdf(如果您在网上搜索spc4.pdf,您无疑会找到无注册的变体。)