2

在 iSCSI 中,initiator port Id 定义为:iSCSI_Name,i,Initiator_Session_Id

目标端口id定义为:iSCSI_Name,t,Target_Portal_Group_Tag

在发起者发出“PR In - Reserve”SCSI 命令后,与 I_T 关系有关的上述信息被永久保存。如果服务器发生崩溃,发起者重新登录后,发起者很可能会得到一个新的 Initiator_Session_Id。如果是这样,发起者(或任何已注册的发起者)将如何清除保留?

谢谢你,艾哈迈德。

4

1 回答 1

1

如果“服务器崩溃”是目标端的崩溃,那么 iSCSI 启动器通常会使用相同的会话 ID 重新建立会话。Linux 和 Windows 启动器的行为是这样的。iSCSI 弹性的很大一部分在于它能够独立于传输协议恢复会话状态。在这种情况下,不需要清除保留;发起者保留它。

如果崩溃发生在发起方,那么您是对的,除非会话被持久记录(在 Linux 上不是),否则会话会获得一个新的会话 ID。此时,PERSISTENT RESERVE OUT - PREEMPTPREEMPT AND ABORT命令就派上用场了。使用持久保留作为协调对共享存储的访问的一种方式的集群都必须处理需要接管另一个发起者持有的保留的情况。这是 SPC-4 草案中关于命令的内容:

应用程序客户端可以通过使用 PREEMPT 服务操作或 PREEMPT AND ABORT 服务操作发出具有以下参数的 PERSISTENT RESERVE OUT 命令来用另一个持久保留抢占持久保留:

a) RESERVATION KEY 字段设置为在 I_T 关系的逻辑单元中注册的保留密钥的值;

b) SERVICE ACTION RESERVATION KEY字段设置为要被抢占的持久保留的reservation key的值;和

c) 设置 TYPE 字段和 SCOPE 字段以定义新的持久保留。由抢占 I_T nexus 创建的持久保留的范围和类型可能与被抢占的持久保留的范围和类型不同。

在这里,你的发起者会出现,并执行一个PERSISTENT RESERVE OUT - REGISTER命令来注册它的关系。然后,它调用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,你无疑会找到一个免注册变化。)

于 2015-11-18T19:24:56.083 回答