在之前的《IBM DS 存储几种常见的问题(1)》文章中简单描述了failover,提过有时间会写一篇关于failover mode的文章,因此才有了下文。
先来解释下什么是ADT/AVT,同样地,摘录自redbook中的一段话:
ADT is a built-in feature of controller firmware that allows logical drive-level failover rather than controller-level failover .ADT is not a failover driver. ADT provides storage systems with the flexibility to work with certain third-party failover software.ADT是控制器firmware中允许在lun层面上failover而不是在控制器层面上failover。ADT不是failover驱动,它提供存储系统和第三方failover 软件灵活配合。
怎么理解ADT是在lun层面failover,而不是controller层面,请往看下。
根据控制器firmware和多路径软件版本的不同,多路径驱动在控制器failover时会执行不同的动作。有三种failover mode。
1,AVT/ADT(Automatic Logical drive Transfer),如果主机类型被设置为enable AVT/ADT,多路径驱动会将IO重定向到另一个正常的controller。那这个surviving controller会接管lun并处理IO。只有受影响的lun才会切换到另一个controller上。当path恢复后,会自动redistribute lun到preferred controller上。这种模式在7.77.xx.xx及以前的版本被支持。
如下图,当主机访问lun0时,发现通过A控访问不了,那多路径软件会通过B控来访问lun0,并且只有被访问的lun0会切换到B控上,没有受影响的lun2则不会切换。再回头看看,是不是lun层面的failover?确实是,因为它只是将受影响的lun切换到surviving controller上。
2,RDAC failover mode(RDAC mode == non-AVT mode),如果主机类型被设置为disable AVT/ADT或non-AULA,多路径驱动会发出一个”mode page 2C”给surviving controller,让它接管所有的lun,此时所有的lun都会切换到surviving controller上。接着surviving controller就会高高兴兴地接管lun并处理IO。但区别是即使一切都optimal了,surviving controller也不会把lun的控制权交还给之前的controller。霸道吧,此时就需要管理员手动redistribute lun了。这种模式在所有控制器firmware中都支持。
如下图,当主机通过A控访问lun0和lun2,发现访问不了,多路径软件发出mode page 2C后,B控会把所有的lun都接管过来。而这第2种模式就是和第1种模式对应的controller级别的failover。
3,ALUA(Asymmetric Logical Unit Access) mode,在7.83及以后,如果主机被设置为enable ALUA,这就有点复杂了。举个例子,
如下图,A控还是好的,但是到达A控的路径fail了,这种情况下,如果enable ALUA,那么B控会将IO还交给A控来处理,而不是接管LUN并自己处理IO,这就比较大方了吧,呵呵。当然也不能老是这样“傻大哈”啊,占用自己资源不说,还得不到任何好处。如果这条到达A控path 在过去5分钟之内shipped 超过 75%的IO,那对不起了,B控会将lun“夺”过来,自己处理IO。这样也算得对起A控了。。
使用了ALUA,那就减少了一些不必要的transfer。
总结:(1)、第1种是ADT/AVT enable,第2种是RDAC(ADT/AVT disable),那有人会有疑问了,有没有RDAC(ADT/AVT enable)这种模式呢,答案是No,请看下面一句话:
ADT/AVT is a feature provided with code which help in volume transfer from one controller to another AND only one feature can stay on Host either RDAC from IBM or ADT/AVT enabled from IBM with third party failover driver. If both (RDAC and ADT/AVT enabled) are being used at the same time then Lun thrashing will occur which causes. 即要么是IBM的RDAC(ADT/AVT disabled),要么是ADT/AVT enabled配合第三方failover驱动,两者选其一!
写到这里,有的用户会有问题了,如果客户不使用RDAC,使用自己的multipath driver,那可以么?答案是,如果AVT是enabled,那就可以。如果是disabled,那failover就不会生效,即一旦有路径中断,那就造成lost access了。
Anyway,Be sure that the operating systems are using RDAC when you disable AVT. Otherwise, it loses access to the logical drive, since other systems will not failover properly as their multi-path I/O driver is based on AVT.
(2)、 7.77.xx.xx和之前的firmware支持AVT/ADT和RDAC的failover模式,7.83.xx.xx和以后的版本只支持RDAC和ALUA的模式,不支持AVT/ADT。
(3)、下面的表格列出了不同OS下哪种failover mode被enable。
(4)、各种主机类型下默认的ADT状态:
PS:更多关于IBM DS系列存储的文章,请点击
《IBM DS Storage ISCSI Configuration》
《IBM Copy Service--Flashcopy Introduction》
《IBM copy service--flashcopy 实验》
《IBM DS3500 with Windows 2008 Multipathing》
《IBM DS Storage--Replace drive option》