开始新对话

此帖子已超过 5 年

Solved!

Go to Solution

2895

2012年8月15日 01:00

dmx盘的reserve_lock参数问题

请教下各位,有个问题,在一个环境里面,使用AIX+HACMP+ORACLE9 RAC系统,HACMP使用的是并发资源组,并发VG,存储是DMX,主机上得到的盘hdiskpower 的

reserve_lock参数并没有设置为No,系统能正常运行,为什么有的情况下这个

reserve_lock参数必须为yes才能运行呢? 请教下各位能给解释下,谢谢。

1.2K 消息

2012年8月15日 18:00

在一个共享存储的环境下,多台主机可能会同时访问同一台存储设备,如果此时多台主机在同一时点上对一个Lun进行写的操作,那么可想而知这个Lun将不知道哪个数据先写,哪个数据后写。为了防止这种情况发生而导致的数据损坏,于是就引入了SCSI锁的概念。

通常来讲目前SCSI锁有两种类型:SCSI-2 Reservation和SCSI-3 Reservation,这两种类型的的锁是不能共存在一个Lun上的。SCSI-2 Reservation只允许设备被发出加锁的Initiator访问,这里Initiator一般指HBA。比如HostA上的fcs0对访问的LUN加上SCSI-2锁,此时即使HostA上的fcs1也无法访问该Lun。所以SCSI-2 Reservation有时也被称为single-path reservation。SCSI-3 Reservation是使用PR Key来对设备进行加锁。通常一台Host会有唯一的PR Key,不同的host,PR Key也不同。所以一般SCSI-3 Reservation通常被应用在多通路的共享环境下面

一般设备被打开时将会被加上锁。比如varyonvg、dd等等,需要注意的是对于dd这种命令当它运行时设备会被加锁,运行完成后会自动解锁。

HACMP AIX在varyonvg时对相关的hdisk/vpath等设备上锁(做SCSI reserve的动作),以防止其他主机非法访问存储。varyoffvg则会对VG相关的设备进行正常的解锁操作,释放SCSI reserve。HACMP在管理硬盘时会检查SCSI reserve,如果发现存在SCSI reserve就会像存储发出一条标准的break SCSI reserve命令。

HACMP相关命令:

正常情况下,在HACMP切换时,会调用/usr/es/sbin/cluster/events/utils/cl_disk_available脚本去判断设备的类型、是否有锁等,然后再调用相关命令用于解锁。

/usr/es/sbin/cluster/events/utils:

cl_flutereset (for DS4000)

cl_fscsilunreset (for SCSI-3)

cl_iscsilunreset (for iSCSI)

cl_pscsilunreset (for SCSI-2)

cl_scdiskreset (for IBM 7135)

cl_vpathreset (for sdd)

1.2K 消息

2012年8月15日 02:00

并发Cluster环境下reserve_lock应当设置为No,因为所有节点需要同时访问磁盘设备,并发环境下能够协调不同节点的访问I/O而无需加锁。

如果看到主机hdiskpower的reserve_lock参数没有设置为No,但也能正常工作,应该是参数没有设置正确或没有设置,但因为HACMP有自动发现并发Cluster加锁情况下能够自动解锁的机制,所以可以正常工作。

40 消息

2012年8月15日 04:00

您好,看到了您的解释明白了很多,我还想具体知道下这2个解锁的机制,reserve_lock这个应该在scsi_block层面吧?而HACMP应该在VG层面? 都有什么区别呢?具体怎么实现的呢?谢谢。。

40 消息

2012年8月16日 18:00

多谢您了。

1.2K 消息

2012年8月16日 19:00

不客气~如果觉得我的答案有帮助,请mark为已回答结贴~

找不到事件!

Top