【大話儲存】學習筆記(6章), 磁碟陣列
磁碟陣列
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,儲存區域網
: 將磁碟放到主機外部,儲存裝置和主機之間形成了一個獨立的網路
相關文章
- 大話儲存——磁碟原理與技術筆記(一)筆記
- 【numpy學習筆記】陣列的儲存和下載筆記陣列
- 大話儲存後傳筆記筆記
- JS陣列學習筆記JS陣列筆記
- 日常學習儲存--陣列和指標陣列指標
- 學習筆記——陣列方法整理筆記陣列
- Java學習筆記之陣列Java筆記陣列
- 學習筆記----樹狀陣列筆記陣列
- swift 學習筆記之陣列Swift筆記陣列
- 學習筆記----字尾陣列筆記陣列
- 字尾陣列 學習筆記陣列筆記
- 字尾陣列學習筆記陣列筆記
- 學習筆記14:模型儲存筆記模型
- Java學習筆記——陣列練習(七)Java筆記陣列
- Java 學習筆記 二維陣列和物件陣列Java筆記陣列物件
- 【C#學習筆記】陣列使用C#筆記陣列
- GlusterFS分散式儲存學習筆記分散式筆記
- OS學習筆記五:儲存模型筆記模型
- CUDA 學習筆記之儲存器筆記
- Perl學習筆記(五)——關聯陣列筆記陣列
- Object C學習筆記11-陣列Object筆記陣列
- 【C#學習筆記】儲存檔案C#筆記
- HTML5學習筆記 Web儲存HTML筆記Web
- SQL學習筆記(ORACLE內部儲存)SQL筆記Oracle
- 磁碟管理--學習筆記筆記
- JavaScript 學習筆記 - 多維陣列變為一維陣列JavaScript筆記陣列
- 飛機的 PHP 學習筆記五:陣列PHP筆記陣列
- JavaScript學習筆記(二)——函式和陣列JavaScript筆記函式陣列
- 【numpy學習筆記】陣列的切片,索引,迭代筆記陣列索引
- Solidity語言學習筆記————12、陣列Solid筆記陣列
- Swift學習筆記(二十)——陣列的基本操作Swift筆記陣列
- 【儲存管理】SAN儲存 Storage Area Network 儲存區域網路 學習筆記筆記
- arrilist陣列和collections儲存學生排序陣列排序
- ES6學習筆記(二)【數值,陣列】筆記陣列
- numpy學習筆記 – numpy陣列的常見用法筆記陣列
- Java學習筆記【1】陣列的宣告和建立Java筆記陣列
- PHP學習筆記6:表示式&多維陣列PHP筆記陣列
- 【Java學習筆記之五】java陣列詳解Java筆記陣列