FusionStorage原理及组件
目錄
一、FS的部署模式
1)融合部署?
2)分離部署?
3)scsi和iscsi使用場景
二、FS的災備
FS的高級特性
三、FS的DHT算法
四、存儲池和卷
五、FS的可靠性和安全級別
可靠性
安全級別
六、VBS結構
scsi:將內核態VSC模塊的scsi流引入VBS用戶態
七、OSD結構
八、FS的IO流程
1)寫IO
2)讀IO
九、ZK的作用
MDC主備管理:
數據存儲
數據同步
十、FS的視圖
十一、FS組件交互過程
1)創建控制集群?? 自動ZK? 控制MDC
2)創建存儲池
3)創建塊客戶端
一、FS的部署模式
1)融合部署?
VBS和OSD合部在同一節點
2)分離部署?
VBS和OSD分開部署在不同的節點
3)scsi和iscsi使用場景
業務與VBS是否合部
如果合部---scsi
如果分開部署在不同節點----iscsi
無論是scsi還是iscsi,都支持融合部署和分離部署
通常在應用場景上考慮是融合還是分離,多在scsi場景考慮
scsi場景下
如果業務需要大量計算資源保障,此時考慮分離部署----關鍵業務系統,例如數據庫
如果服務器主機有足夠計算資源支持業務和FS的組件運行,此時考慮融合部署----云場景
融合部署的成本低于分離部署
二、FS的災備
?
備份主要用來保證業務的安全性
容災主要作用是保護業務的連續性
容災又分為異地容災和同城容災
FS作為生產存儲支持ebakcup或者第三方備份管理軟件的備份
FS的高級特性
雙活
hyper metro?
遠程復制(異步)?
hyper replication
可以實現存儲層容災
三、FS的DHT算法
DHT(分布式哈希表,Distrubuted Hash Table)
111? 698d51a19d8a121ce581499d7b701668
112? 7f6ffaa6bb0b408017b62254211691b5
將十進制的數,轉化為2的128次方的數,就可以實現平均切隨機
一個存儲池對應一個DHT環(邏輯)
讀寫流程:
1.scsi流交給vbs--->vbs轉換scsi流為key-value
2.對key值進行--->hash尋址
目的:將主機下發的IO平均且隨機的落到存儲池各個OSD對應硬盤上
也就是為了實現IO 的負載均衡
3.經過hash得到一個2的32次方的數值--->模運算-->得到patition
目的:縮減表的尺度,加速查找DHT環
4.查詢由MDC維護的映射表記錄的是patition和osd的關系patition--->得到osd
目的:解決壞盤或者擴容場景,準確定位patition對應的osd位置
5.osd做key-value到iscsi流的轉化,做磁盤的讀寫操作
四、存儲池和卷
存儲池是由一組服務器本地硬盤構成,硬盤類型相同、容量相同、參數相同等限制(參考產品文檔)
主存類型:SATA機械? SAS機械?? SAS-SSD?? SATA-SSD? NVME SSD盤、SSD卡
一塊硬盤只能屬于一個存儲池
一個存儲池可以劃多個卷(劃卷依賴vbs)
一個卷只能屬于一個存儲,不能跨存儲池
卷可以通過scsi掛載給vbs或者iscsi映射給業務主機使用
一個主機可以使用多個卷,多個卷可以來自不同存儲池
五、FS的可靠性和安全級別
可靠性
副本機制:
2副本--50%?? 3副本--33.3%
EC機制: M=2,3,4? N最大22
EC(Erusure code)算法,分布式raid算法,可以跨界點raid
N+M?? 壞M塊硬盤或者M個節點數據不丟失,業務不中斷
N是數據分片
M是校驗分片
N+M:B?? 壞M塊硬盤或者B=1個節點數據不丟失,業務不中斷
22+2保護? 高達91%空間利用率
安全級別
FSM配置界面創建存儲池僅支持服務器級和機柜級
服務器級安全:數據副本或者EC的數據分片一定不會放在同一個服務器節點內
機柜級安全:數據副本或者EC的數據分片一定不會放在同一個機柜內
機房級安全:數據副本或者EC的數據分片一定不會放在同一個機房內
不同的存儲池可配置不同的數據保護方式和安全級別
六、VBS結構
scsi:將內核態VSC模塊的scsi流引入VBS用戶態
VBP:scsi流轉換成key-value
client:key--hash---mod--patition--查io-view--主OSD 走存儲網絡平面將io流轉發至主OSD
VBM:卷和快照生命周期管理操作? 創建卷、掛載卷、卸載卷、查詢卷、刪除卷、創建快照、刪除快照、基于快照創建卷等
hearbeat:心跳模塊? 通過存儲平面與MDC交互心跳包? 使MDC維持VBS view狀態視圖
七、OSD結構
RSM:復制協議實現。
SNAP:實現卷與快照的IO功能、磁盤空間的管理。
CACHE:實現cache功能。
AIO:實現異步IO下發到底層SMIO模塊和通過調用SMIO接口來監控介質故障。
SMIO:下發到IO到實際的物理介質、監控物理介質故障、獲取磁盤信息。
八、FS的IO流程
1)寫IO
APP--》OS--》scsi/iscsi---》VSC內核模塊接收---》scsi initiator--》scsi target---》VBP(LUN ID/LBA ID/length-->key data-->value)
---》client(key--hash--mod--patition--查io view--主OSD)---》主OSD(key--hash--mod--patition--查patition view--備OSD)--》主OSD一方面下發寫IO到本端cache,一方面通過RSM復制IO到備OSD---》主備OSD同步寫cache成功--》由主OSD返回VBS寫成功(回寫),VBS返回APP寫成功。
2)讀IO
APP--OS--scsi/iscsi---VSC內核模塊接收---scsi initiator--scsi target---VBP(LUN ID/LBA ID/length-->key data-->value)---client(key--hash--mod--patition--查io view--主OSD)---主OSD
1、主OSD正常,先讀cache,如果cache讀命中,返回讀成功,如果未讀命中,主OSD向主存disk查詢讀數據。
2、主OSD異常,MDC會檢測硬盤異常觸發退盤,修改視圖(OSD view? IO view? Patition view),指導VBS引流到備OSD(新主OSD讀數據),先讀cache,如果cache讀命中,返回度成功,如果未讀命中,主OSD向主存disk查詢讀數據。
九、ZK的作用
Zookeeper(簡稱ZK)分布式服務框架主要用來解決分布式應用中經常遇到的,如:統一命名服務、狀態同步服務、集群管理、分布式應用配置項的管理等,ZK主要工作包括三項:
MDC主備管理:
MDC采用一主兩備部署模式;在MDC模塊進程啟動后,各個MDC進程會向ZK注冊選主,先注冊的為主MDC;運行過程中,ZK記錄MDC主備信息,并通過心跳機制監控MDC主備健康狀況,一旦主MDC進程故障,會觸發MDC重先選主。
數據存儲
在MDC運行過程中,會生成各種控制視圖信息,包括目標視圖、中間視圖、IO視圖信息等,這些信息的保存、更新、查詢、刪除操作都通過ZK提供的接口實現。
數據同步
數據更新到主ZK,由主ZK自動同步到備ZK,保證主備ZK數據同步,一旦ZK發生主備切換,業務不受影響
為什么奇數部署ZK
在ZK集群中,如果大于等于半數ZK節點宕機那么整個集群不可用
比如部署4個ZK,是只允許壞一個ZK
部署3個ZK,也是只允許壞一個ZK
部署3臺和4臺都是只允許一臺宕機,既然是同樣的容錯能力,那么考慮節省服務器資源,所以推薦奇數部署
幫助MDC選主
持久保存MDC管理的系統元數據
幫助MDC實現元數據同步
十、FS的視圖
VBS view?? VBSid---VBS status
OSD view?? OSDid---OSD status
IO view??? patitionid----主OSD
Patition view?? patitionid---主OSD/備OSD--主備OSD的status
視圖持久化保存在ZK盤或者ZK分區
MDC所在主機內存緩存所有視圖
VBS所在主機內存緩存io view
OSD所在主機內存緩存 patition view
十一、FS組件交互過程
1)創建控制集群?? 自動ZK? 控制MDC
ZK啟動形成ZK集群,MDC找ZK注冊,最先注冊成功的為主MDC,MDC與ZK位置心跳,MDC通過ZK形成集群關系
主MDC故障,其他MDC與ZK聯動重新注冊選舉主MDC
備MDC故障,上報FSM,管理員看到進程異常告警及時處理
2)創建存儲池
主MDC確定是否需要啟動新的歸屬MDC管理該存儲,或者用現有MDC作為該存儲池歸屬MDC管理存儲池
如果歸屬MDC故障,由主MDC決定歸屬MDC的接替者
一個歸屬MDC最多管理2個存儲池
啟動OSD,OSD向MDC查詢自己的歸屬MDC,向歸屬MDC上報狀態,維持心跳
如果OSD異常,超過5S,歸屬MDC檢測OSD異常修改視圖,數據引流、數據重建
3)創建塊客戶端
VBS啟動時查詢主MDC,向主MDC注冊
主MDC維護了一個活動VBS的列表,主MDC同步VBS列表到其它MDC,以便MDC能將OSD的狀態變化通知到VBS
VBS向主MDC確認自己是否為leader(最先注冊成功的為主)
VBS從主MDC獲取IO View
主VBS向OSD獲取元數據,其它VBS向主VBS獲取卷的元數據。
總結
以上是生活随笔為你收集整理的FusionStorage原理及组件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言ggplot绘制地图-报错汇总(一
- 下一篇: 大学物理-光学