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