磁盤陣列
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,存儲區域網
: 將磁盤放到主機外部,存儲設備和主機之間形成了一個獨立的網絡