日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

如何基于Ceph設計與構(gòu)建一套軟件定義存儲系統(tǒng)

目前流行的軟件定義存儲相關的開源項目主要有GlusterFS、Swift、Lustre和Ceph 。這四個項目各有各的特點:GlusterFS提供文件存儲,Swift提供對象存儲,Lustre主要用在高性能計算,Ceph則基于一套系統(tǒng)提供塊、對象及文件功能 。
但近年來隨著OpenStack的興起,Ceph由于與OpenStack的良好的集成而受到越來越多的關注 。而Ceph本身也以其良好的自管理,橫向擴展等特性贏得使用者的關注,成為軟件定義存儲領域最受歡迎的開源項目 。
那么如何基于Ceph來構(gòu)建一套符合企業(yè)業(yè)務需求的軟件定義存儲系統(tǒng)呢?
構(gòu)建之前
在進行正式的設計和構(gòu)建之前,一定要調(diào)查清楚對存儲系統(tǒng)的需求 。
首先理解你希望運行的workload的特性. 運行在SDS之上的是結(jié)構(gòu)化數(shù)據(jù)還是非結(jié)構(gòu)化數(shù)據(jù)?如果是結(jié)構(gòu)化數(shù)據(jù),是OLTP數(shù)據(jù)庫應用還是OLAP數(shù)據(jù)庫應用?如果是非結(jié)構(gòu)化數(shù)據(jù),是文件,圖片,語音還是視頻?
這些問題的答案將幫助你在平衡你的目標特性或者對某些特性更友好:
讀 or 寫? 隨機讀寫 or 順序讀寫?讀寫IO的延時 or 更高的IOPS? 存儲密度 or 可用性?多點訪問存儲or 單點訪問存儲? 單點訪問的情況下,是否對單點的突發(fā)性能有較高要求 。還有,業(yè)務是否需要擴展 。如果未來需要擴展,提前規(guī)劃好crushmap, 可以減少未來擴展時的數(shù)據(jù)遷移 。
然后結(jié)合你的應用,定義希望達到的的目標特性(性能(包括延時,IOPS,吞吐)、容量、密度、可用性、可靠性、安全等) 。請記住,不要預期一套系統(tǒng)滿足所有的應用 。
– 基于上述答案,構(gòu)建一套PoC系統(tǒng) 。該PoC系統(tǒng)與實際系統(tǒng)的大小比例應該在1:10到1:100之間 。
– 對PoC系統(tǒng)進行調(diào)優(yōu)甚至調(diào)整,以便達到你要求的性能
– 對該系統(tǒng)進行擴展,并進行持續(xù)的性能調(diào)優(yōu),以保持你的PoC時達到的性能 。由于Ceph本身具有易橫向擴展的特性,所以在擴展系統(tǒng)時,性能指標會保持一定的穩(wěn)定狀態(tài) 。
設計架構(gòu)
1)網(wǎng)絡
網(wǎng)絡是容易出現(xiàn)分布式存儲系統(tǒng)性能瓶頸的所在,因此,選擇大帶寬的網(wǎng)絡往往不會出錯 ??紤]Bond以及交換機的適配,選擇1Gb,10Gb,25Gb,100Gb 。另外,可能的情況下,采用Jumbo Frames, 會對網(wǎng)絡性能帶來一定的提升;采用中斷親和特性,可以減少中斷對網(wǎng)絡傳輸?shù)挠绊?。
關于網(wǎng)絡,要考慮的第二點是Ceph的內(nèi)部數(shù)據(jù)網(wǎng)(一般叫Cluster網(wǎng)絡)和接受客戶端讀寫的網(wǎng)絡(一般叫Public網(wǎng)絡)分離 。這是因為,Public網(wǎng)絡接收外部的IO請求,而Cluster網(wǎng)絡承載IO請求到達后,數(shù)據(jù)在存儲節(jié)點之間的傳輸,因此,大量IO的情況容易出現(xiàn)網(wǎng)絡帶寬瓶頸 。
第三,可以考慮將Cluster網(wǎng)絡的帶寬設計為Public網(wǎng)絡的兩倍 。這是考慮到,分布式存儲系統(tǒng)在三備份的情況下,外部數(shù)據(jù)在寫入主備節(jié)點后,主備節(jié)點會將該數(shù)據(jù)同時寫入第二和第三備份節(jié)點;同時,數(shù)據(jù)在各存儲節(jié)點之間的re-balance以及recovery都需要消耗Cluster網(wǎng)絡帶寬 。
最后,對性能敏感的場景,Cluster網(wǎng)絡和Public網(wǎng)絡可以考慮采用InfiniBand+RDMA 。雖然Infiniband的成本較高,但是會帶來更低的網(wǎng)絡延時以及更高的帶寬 。
2)存儲節(jié)點的選型:
CPU:Ceph OSD運行RADOS服務,需要通過CRUSH來計算數(shù)據(jù)的存放位置,復制數(shù)據(jù),以及維護Cluster Map的拷貝,需要消耗一定的計算能力 。因此,通常建議一個OSD進程對應一個CPU核 。
內(nèi)存:OSD在響應客戶IO業(yè)務時,通常不需要太多的內(nèi)存,可以為每個OSD預留500M~800MB內(nèi)存即可 。但在執(zhí)行恢復操作時,則需要大量的內(nèi)存 。(每OSD進程恢復沒TB數(shù)據(jù)需要約1G內(nèi)存) 。而內(nèi)存過小會導致OSD占用內(nèi)存不足 。

推薦閱讀