磁盘阵列
JBOD
在过去一台服务器只能放两三块盘,远远不能满足要求,所以可以把盘放到主机的外面。也就是说专门拿一个箱子,所有磁盘都放在机箱里面,而且独立电源和散热,接口方面,内部其实就是一条SCSI线缆,这就形成了磁盘柜(Just a Bound Of Disk , JBOD),顾名思义,实际上就是“一串磁盘”
独立的外部磁盘阵列
JBOD的内部不含RAID卡,这样,如果要调整RAID的话,还需要重启主机,影响主机里面的应用。那么最好是可以把RAID功能做到磁盘箱内部。
如下图所示,凡是自带RAID控制器的盘柜就叫磁盘阵列。通过外部的SCSI接口,连接到主机上端的SCSI端口。
主机的SCSI控制器与盘阵SCSI控制器相比,盘阵的SCSI控制器作为Target模式,被主机SCSI控制器操控。
而在右边的SCSI总线上,盘阵的S2控制器作为Initiator模式,占据主动权。磁盘均为SCSI Target,受控于Initiator
前端和后端
对盘阵来说,左边为前端,面向主机提供对外服务
面向自己管理的磁盘就变成了后端。也就是右边的部分。
内部接口和外部接口
- 内部接口:盘阵RAID控制器连接内部磁盘时用的接口:可以连接IDE磁盘等
- 外部接口:盘阵控制器对于主机端,提供什么接口,
内外接口可以不一样,比如内部连接IDE磁盘,外部用SCSI接口连接主机。(仅限于盘阵,盘柜必须一样)
因为盘阵控制器是一个虚拟化引擎,可以不一致,即使内部是IDE的,也可以向主机报告有多少LUN
多外部接口
有多个接口是为了连接多台的主机。
每个由盘阵RAID控制器生成的逻辑磁盘,可以通过设置只分配到其中一个口,连接到其他口的主机就不会看到这个LUN。
也可以把一个LUN同时分配到两个口,两台主机对一个LUN写数据,容易造成数据不一致。
关于LUN
LUN是SCSI ID的更细一级的地址号。每个SCSI ID下面可有更多的LUN ID 。
大型磁盘阵列有几千个虚拟磁盘,但是每条SCSI总线最多允许16个设备,所以为每个虚拟磁盘分配一个SCSI ID不够用。
可以在一个SCSI ID虚拟多个LUN地址,每个LUN地址对应一个虚拟磁盘。
LUN
:硬件层次生成的虚拟磁盘统称为LUN。
卷
:软件生成的虚拟磁盘
双控制器磁盘阵列
如果控制器只有一个,则会存在单点故障,所以至少有两个控制器。双控制器需要相互通信,一般使用PCI总线进行互联。
而两个控制器的协同方式有两种,Active-Standby 、Dual-Active
Active-Standby(HA)
HA方式:两个控制器同一时刻只有一个在工作,另一个在等待、同步和监控状态,只是在故障以后才接管。
两控制器各占一个ID 。剩余14个ID给磁盘,
为了预防脑分裂
,备份控制器在接管之前需要将主控断电或者重启,释放其总线使用权,然后接管前端和后端总线。
主机端必须使用两个SCSI适配器分别连接到盘阵上的控制器,但是这样做,主机端必须通过某种方式感知到HA策略,并在故障发生时切换。
对于FC盘阵来说,使用双控及主机端使用双FC适配卡非常普遍。
Dual-Active
所谓Dual-active,也叫控制器双活,指的是两个控制器同时工作,对所有后端总线有通路,但是每个总线平时只被一个控制器管理,另一个不触动。
可以将后端一半数量的总线交由一个控制器管理,另一半交由另一个控制器管理。一旦损坏,可以立刻接管所有的总线,比Active-Standby更高效。
脑分裂Split Brain
脑裂指的是控制器之间的通路出现了问题。也就是说两个控制器其实是正常的,但是检测不到对方的 存在。所以都会尝试接管所有的总线。类似于精神分裂。
解决方案:
加入一个仲裁者
- 使用两个控制器都能写到的硬盘,向其写入自己的仲裁信息,如果脑分裂,就看谁在上面最后写了信息。
- 电源控制器:向电源控制器发送信号,让对方重启并进入Standby
接管了总线的控制器一般会对总线上所有的磁盘进行SCSI Reserve操作,即预订操作。
总线上所有目标设备一旦被预订,便不再接受其他控制器的IO请求。
连接多个扩展柜
到现在,一个盘柜里面有两个磁盘控制器、有磁盘,但是一条SCSI总线最多15块磁盘,为了15块磁盘,使用两个RAID控制器有点不值。
下图为一个机头,它带有一个扩展磁盘接口以及两个控制器。
然后使用这个机头连接JBOD扩展柜
总结一下:
机头:带有控制器的磁盘柜,就像是火车的机头一样,是提供动力的,机头也可以有磁盘。
扩展柜:用于扩展容量的JBOD,就如同车厢,没有动力,但是需要有基本的供电和冷却系统。
主机和磁盘阵列本是一家
盘阵控制器的主机化
可以说盘阵控制器本来但是一个简单的主机系统
所以完全可以用一台服务器来充当存储系统的控制器。
插入几张SCSI卡作为前端接口卡,若干SCSI卡作为后端连接磁盘箱的接口卡,然后设计软件从/向后端读写数据,经过处理或者虚拟化后,传送给前端的主机服务器。
目前有两种趋势:
- 主机充当控制器
- 高集成度的芯片作为控制器的核心
盘阵类型
按照前端-后端接口分,有
- SCSI-FC盘阵:前端是FC接口的盘阵,后端是SCSI磁盘
- FC-FC盘阵
- SATA-FC盘阵
- SCSI-SCSI盘阵
后面会讲到FC-FC盘阵,这是目前高端盘阵所采用的架构。
SAN(Storage area network)
RAID 控制器相当与路由器,也就是协议转换器。
SAN,存储区域网
: 将磁盘放到主机外部,存储设备和主机之间形成了一个独立的网络