大话存储学习笔记(5)
九、磁盘阵列
1.关于LUN
LUN是SCSI ID的更细一级的地址号,每个SCSI ID下有更多的LUN ID。对大型磁盘阵列来说,可以生产几百几千个虚拟磁盘,为每个磁盘分配一个SCSI ID是远远不够的。因为每个SCSI总线最多允许16个设备接入(目前32位SCSI标准可以接入32个)。LUN是一个次级寻址ID。磁盘阵列可以在一个SCSI ID下虚拟多个LUN地址,每个LUN对应一个虚拟磁盘。硬件层次生成的虚拟磁盘,称为LUN;软件生成的虚拟磁盘,称为卷。
2.双控制器的磁盘阵列
如果盘阵内部只有一个控制器模块,那么会是一个SPOF(Single Point Of Failure),即单点故障点。为了避免单点故障点,给盘阵安装一个额外的控制器,和原来的控制器在它们后端共享一条或多条磁盘总线。两个控制器可以使用Active-Standby的方式,也可以使用Dual-Active的互备方式。
1)Active-Standby
这种方式又称HA方式(High Availablity,高可用性),即两个控制器中同一时刻一个在工作,另外一个处于等待、同步和监控状态。一旦主控制器发生故障,则备份控制器接管工作。
2)Dual-Active
这种双控制器的实现方式是两个控制器同时工作,每个控制器对后端总线有通路,但是每个总线平时只被其中一个控制器管理,另外一个控制器不去触动。可以将后端一般数量的总线交由一个控制器管理,另一半交由另外一个控制器管理。一旦一个控制器损坏,另外一个控制器接管其所有工作。
3.脑分裂
某时刻两个控制器之间的通路出现了问题,而不是其中某个控制器死机。两者检测不到对方的存在,两者都尝试接管所有总线,即同时操纵所有设备。
预防这种情况方法:(1)利用一个仲裁者来选择到底使用哪一个控制器接管所有总线,比如:用一两个控制器都能访问到的磁盘,控制器向其上写入自己的仲裁信息。一旦发生脑分裂,就参考这个磁盘,谁最后写入了信息就控制权给谁。
(2)用一种电源控制器,一旦其中某个控制器要接管,那么不管对方确实发生了故障还是正常,这个控制器都会向电源控制器发送信号,让对方重启并进入standby状态。