关于SCSI预订

时间:2015-05-26 14:18:48

标签: linux storage scsi

我正在尝试编写一个程序来阻止使用SCSI 2预留的LUN。

在SCSI 2预留中,LUN可以由具有不同路径的同一主机保留,或者I-T-L连接只能是单个路径。

例如:假设主机尝试从同一目标保留已保留的LUN但使用目标的不同端口。这可能吗?

基本上,LUN预留仍然是同一主机,但来自不同的路径。

[编辑] 我已经得到了上述问题的必要响应,但有另一个查询。 假设主机在LUN X上有预留,连接断开或主机发出注销。预订会怎样? 是否依赖主机驱动程序清除预留并清除其数据或预留仍然存在,如果其他主机尝试保留相同的LUN,则会发生冲突。 我试过谷歌搜索但无法找到与此问题相关的规格。

1 个答案:

答案 0 :(得分:1)

每个I_T_L nexus都是一条路径。当您使用SPC-2中描述的RESERVE(6)或RESERVE(10)命令时,这就是您要保留的内容。因此,一次只能有一条路径处于活动状态。如果这就是你想要的,那么你就是好人! (编辑:要清楚,发出RESERVE的第二个I_T_L关系会发生预订冲突。)

如果你的发起者和目标可以处理它,SPC-3中的PERSISTENT RESERVE / RELEASE命令提供了更大的灵活性。您可以使用LU注册每个连接,然后设置“仅限独占访问注册者”的预留,阻止访问其他所有人,但允许其注册到nexuses。

可以在Redhat群集软件中使用的SCSI fence脚本中的错误描述中看到这方面的一个示例。现有解决方案不与多路径I / O互操作,因为冗余路径不断发生预留冲突。解决方案是注册所有路径:https://bugzilla.redhat.com/show_bug.cgi?id=661134

[编辑]回复您的其他问题:如果连接断开,预订仍然保留。来自SPC-2:

  

该命令应请求保留整个逻辑单元   在预订之前专供发起人使用   被同一个启动器或其他有效的RESERVE命令取代   直到由发出的同一个启动器的RELEASE命令释放   预约,通过TARGET RESET任务管理功能执行   任何启动器,硬复位条件或上电循环。