國(guó)人的驕傲:FastCFS -- 支持云原生的高性能通用分布式存儲(chǔ)系統(tǒng)

好久沒(méi)有寫(xiě)文章了鹤竭。今天的主角FastCFS讓我有興致拿起鍵盤(pán)太闺,向大家來(lái)推薦它。

FastCFS項(xiàng)目背景介紹

FastCFS 項(xiàng)目在giteegithub上同時(shí)開(kāi)源蝴韭,地址分別為:-

作者是存儲(chǔ)系統(tǒng)方面的大佬余慶老師咏尝,如果你對(duì)FastCFS不熟悉,但是FastDFS我相信大家都耳熟能詳褂傀,F(xiàn)astDFS作為一款分布式對(duì)象存儲(chǔ)系統(tǒng)忍啤,以開(kāi)源、簡(jiǎn)潔仙辟、易用同波、高性能而著稱,像一股清流深受大家喜歡叠国。

說(shuō)回今天的主角FastCFS未檩。

當(dāng)前,云原生已經(jīng)成為應(yīng)用開(kāi)發(fā)者在選擇架構(gòu)設(shè)計(jì)時(shí)的首選粟焊,Kubernetes(以下簡(jiǎn)稱k8s)逐漸成為云原生時(shí)代的基礎(chǔ)設(shè)施冤狡,熟悉k8s的同學(xué)都知道k8s中網(wǎng)絡(luò)和存儲(chǔ)是兩大難點(diǎn)。

特別是支持云原生的存儲(chǔ)系統(tǒng)项棠,大家在選擇的時(shí)候都沒(méi)有比較好的解決方案悲雳,商業(yè)話的存儲(chǔ)買(mǎi)不起,開(kāi)源的云原生存儲(chǔ)要么性能達(dá)不到要求香追,要么運(yùn)維復(fù)雜合瓢,并且基本上都是不是國(guó)人開(kāi)發(fā)的,比如:Ceph透典,OpenEBS晴楔,Longhorn等。

在這樣的背景下峭咒,F(xiàn)astCFS在余慶老師團(tuán)隊(duì)努力下橫空出世税弃。

私底下問(wèn)了余老師,這個(gè)項(xiàng)目他2020年1月份全職開(kāi)發(fā)讹语,到現(xiàn)在已經(jīng)有兩年了時(shí)間了钙皮。在現(xiàn)在這樣的社會(huì)環(huán)境下,余老師不忘初心的做法確實(shí)令人由衷的敬佩,忍不住想給他點(diǎn)贊短条。FastCFS秉承了fastDFS的氣質(zhì):簡(jiǎn)潔导匣、開(kāi)源、高性能茸时、支持云原生贡定,關(guān)鍵是符合中國(guó)人的使用習(xí)慣,好交流(有需求或建議直接用中文撩他可都,哈哈)缓待。

FastCFS 介紹

官方的一句話介紹是:

可以跑數(shù)據(jù)庫(kù)的高性能通用分布式文件系統(tǒng)

不過(guò)我覺(jué)得更準(zhǔn)確的是:

FastCFS是一款開(kāi)源的,支持云原生的高性能分布式存儲(chǔ)系統(tǒng)渠牲。

余老師在他的技術(shù)文章中提到:

FastCFS在保證數(shù)據(jù)強(qiáng)一致的前提下旋炒,同時(shí)做到了高性能,完全滿足數(shù)據(jù)庫(kù)對(duì)IO性能和數(shù)據(jù)一致性的嚴(yán)格要求签杈。軟件本身不應(yīng)該成為系統(tǒng)的性能瓶頸瘫镇,這是我奉行的原則并一直為之實(shí)踐。若有朋友發(fā)現(xiàn)FastCFS在高端服務(wù)器上性能發(fā)揮不出來(lái)答姥,歡迎來(lái)找我(tiguan)铣除。

這是一種霸氣且有底氣的態(tài)度,并且更難的是FastCFS完全自主研發(fā)鹦付,用C語(yǔ)言原生實(shí)現(xiàn)尚粘,除了依賴libfuse實(shí)現(xiàn)文件掛載外,不依賴任何第三方軟件敲长。

那么FastCFS是怎么做的呢郎嫁?

FastCFS的基本概念和核心組件

FastCFS分成服務(wù)端、客戶端潘明、 CSI三個(gè)部分行剂,另外還貼心的提供了運(yùn)維工具。

  • 服務(wù)端有三個(gè)核心組件是 FastStore 钳降、 FastDIR、FastAuth腌巾。
  • 客戶端是利用libfuse實(shí)現(xiàn)的文件掛載服務(wù)遂填,可以直接以文件的方式訪問(wèn)FastCFS的存儲(chǔ)系統(tǒng)
  • FastCFS CSI 是一個(gè)基于k8s CSI標(biāo)準(zhǔn)來(lái)實(shí)現(xiàn)的,用于支持k8s來(lái)使用FastCFS澈蝙,實(shí)現(xiàn)存儲(chǔ)卷的創(chuàng)建吓坚、加載和讀寫(xiě)操作。
FastCFS組件圖

1灯荧、FastDIR介紹

FastDIR作為通用分布式文件系統(tǒng)FastCFS核心組件之一礁击,F(xiàn)astDIR是一款高性能、大容量分布式目錄服務(wù),除了支持文件系統(tǒng)基本特性外哆窿,還實(shí)現(xiàn)了如下特性:

  • 支持全部類型:如socket链烈、字符設(shè)備、符號(hào)鏈接等挚躯,還支持硬鏈接强衡;
  • 文件鎖:完全支持POSIX文件鎖,支持按范圍加/解鎖码荔;
  • 文件擴(kuò)展屬性(x-attribute)漩勤,V2.0開(kāi)始支持,用于保存存儲(chǔ)池相關(guān)屬性缩搅。

FastDIR支持命名空間越败,一個(gè)命名空間對(duì)應(yīng)一套目錄結(jié)構(gòu),多個(gè)命名空間的目錄結(jié)構(gòu)相互獨(dú)立硼瓣,可以通過(guò)命名空間隔離不同應(yīng)用究飞。FastCFS 對(duì)應(yīng)k8s的支持就是通過(guò)存儲(chǔ)池來(lái)實(shí)現(xiàn)的,一個(gè)存儲(chǔ)池對(duì)應(yīng)FastDIR的一個(gè)命名空間巨双,在k8s中對(duì)應(yīng)的一個(gè)PV噪猾。

另外FastDIR通過(guò)插件方式實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)引擎,采用binlog + 存儲(chǔ)引擎插件筑累,按需加載inode數(shù)據(jù)袱蜡,單機(jī)以有限內(nèi)存(如64GB)支持100億級(jí)的海量文件。

2慢宗、FastStore介紹

FastStore原理圖

上次來(lái)自余老師的技術(shù)文章坪蚁,由上圖可以看出 FastStore對(duì)服務(wù)器和數(shù)據(jù)均采用分組方式,服務(wù)器分組簡(jiǎn)稱 SG镜沽,為物理分組敏晤;數(shù)據(jù)分組簡(jiǎn)稱 DG,為邏輯分組缅茉。FastStore的server各自管理數(shù)據(jù)塊(文件塊)索引嘴脾,數(shù)據(jù)塊的元數(shù)據(jù)采用無(wú)中心的分布式架構(gòu)。FastStore本質(zhì)是一個(gè)分布式KV系統(tǒng)蔬墩,key是數(shù)據(jù)塊所屬的對(duì)象ID(inode) + 偏移量(offset)译打,value是數(shù)據(jù)塊內(nèi)容。FastStore采用的數(shù)據(jù)路由規(guī)則:數(shù)據(jù)塊key按數(shù)據(jù)分組數(shù)(DGC)求模得出所在的數(shù)據(jù)分組拇颅,即:block_hash_code % DGC奏司。

因此,部署集群需要注意:

DGC一旦確定就不可更改樟插,否則將導(dǎo)致數(shù)據(jù)訪問(wèn)混亂韵洋!
如果數(shù)據(jù)增長(zhǎng)遠(yuǎn)超預(yù)期需要增大DGC竿刁,只能搭建一套新集群,在新舊兩套集群并存的情況下搪缨,把原有數(shù)據(jù)手工遷移到新集群食拜,遷移完成后切換到新集群。

另外勉吻,為了便于以后增加SG進(jìn)行擴(kuò)容监婶,DG數(shù)量(DGC)必須事先充足地預(yù)估數(shù)據(jù)規(guī)模后確定下來(lái),生產(chǎn)環(huán)境建議最小配置 256齿桃。友情提示:盡可能樂(lè)觀地預(yù)估數(shù)據(jù)增長(zhǎng)規(guī)模惑惶,寧多勿少,不存在過(guò)猶不及的問(wèn)題短纵。

FastStore架構(gòu)有如下特點(diǎn):
* 基于數(shù)據(jù)塊的無(wú)中心設(shè)計(jì)(類一致性Hash)带污,理論上可以無(wú)限擴(kuò)容;
* 分組方式(SG和DG)香到,簡(jiǎn)單高效鱼冀;
* 數(shù)據(jù)分組內(nèi)采用Master/Slave結(jié)構(gòu),簡(jiǎn)單有效的數(shù)據(jù)一致性保證悠就。

3千绪、FastAuth

FastAuth的目的就是為了更好地對(duì)接虛擬機(jī)和K8s,實(shí)現(xiàn)了存儲(chǔ)池和訪問(wèn)權(quán)限控制梗脾,并支持配額荸型。

FastAuth核心功能就是用戶和權(quán)限體系,為了保證高性能且不依賴第三方組件炸茧,auth模塊精心設(shè)計(jì)瑞妇,采用基于session的分布式訪問(wèn)控制,session由Auth server生成并分發(fā)給上次提到的FastDIR 和FastStore兩大組件 梭冠,實(shí)現(xiàn)了session本地驗(yàn)證辕狰。

一句話總結(jié):FastCFS的用戶權(quán)限體系采用集中管理,分布式驗(yàn)證的做法控漠,做到了極致性能蔓倍。

4、FastCFS-Fuse客戶端

FastCFS-Fuse客戶端是基于FUSE的標(biāo)準(zhǔn)文件接口已經(jīng)實(shí)現(xiàn)盐捷〖砹常可以使用FastCFS的fused模塊mount到本地,為數(shù)據(jù)庫(kù)毙驯、虛擬機(jī)以及其他使用標(biāo)準(zhǔn)文件接口的應(yīng)用提供存儲(chǔ),同時(shí)也方便運(yùn)維人員去查看文件內(nèi)容灾测。

5爆价、FastCFS CSI

FastCFS CSI 垦巴, 是標(biāo)準(zhǔn)的容器存儲(chǔ)接口實(shí)現(xiàn),該驅(qū)動(dòng)器為容器編排器k8s管理FastCFS類型卷的生命周期提供 CSI 支持铭段。

主要功能包括

  • 靜態(tài)供應(yīng) - 創(chuàng)建一個(gè)新的或遷移現(xiàn)有的 FastCFS 卷, 然后從 FastCFS 卷創(chuàng)建持久卷 (PV) 并使用 PersistentVolumeClaim (PVC) 從容器中消費(fèi) PV骤宣。
  • 動(dòng)態(tài)供應(yīng) - 使用PersistentVolumeClaim (PVC)請(qǐng)求 Kuberenetes 代表用戶創(chuàng)建 FastCFS 卷,并從容器內(nèi)部消費(fèi)該卷序愚,支持StorageClass憔披。
  • 掛載選項(xiàng) - 可以通過(guò)在持久卷 (PV) 中指定掛載選項(xiàng),來(lái)定義卷的掛載方式爸吮。
  • 卷擴(kuò)充 - 擴(kuò)充卷的大小芬膝。

需要注意的是:FastCFS-CSI 不支持刪除靜態(tài)卷。PV 規(guī)范中的 persistentVolumeReclaimPolicy 必須設(shè)置為 Retain形娇,以避免在 csi-provisioner 中嘗試刪除 PV锰霜。

隨便提一句,F(xiàn)astCFS CSI 有兩種實(shí)現(xiàn)桐早,一種是fastCFS-fuse客戶端和fuse客戶端代理模式癣缅。

以上對(duì)應(yīng)FastCFS的基本概念和組成,來(lái)自于余老師的技術(shù)博客文章哄酝,可能有表述錯(cuò)誤或者理解偏差友存,請(qǐng)直接移步余老師博客:https://my.oschina.net/u/3334339

總結(jié):

FastCFS定位為一款強(qiáng)一致性、高性能陶衅、高可用屡立、支持百億級(jí)海量文件的通用分布式文件系統(tǒng),可以作為MySQL万哪、PostgresSQL侠驯、Oracle等數(shù)據(jù)庫(kù),k8s和NAS的后端存儲(chǔ)奕巍。

到現(xiàn)在2022年1月份最新版本是V3.1.0已經(jīng)具備了基本生產(chǎn)可用的狀態(tài)吟策,經(jīng)過(guò)筆者的測(cè)試性能正如余老師所說(shuō)非常好(后面的文章會(huì)提到)。當(dāng)然在文檔的止、自動(dòng)化擴(kuò)容檩坚、監(jiān)控、運(yùn)維上還有一些欠缺诅福,但是這些都在一步一步的按計(jì)劃進(jìn)行中匾委,并且速度非常快氓润。

做一款產(chǎn)品非常不容易赂乐,做一款分布式云原生存儲(chǔ)產(chǎn)品更加困難,讓我們一起參與到FastCFS的共建中咖气,讓FastCFS早日成為云原生存儲(chǔ)的標(biāo)桿挨措。

本篇對(duì)FastCFS的介紹先到此挖滤,后面會(huì)把筆者部署體驗(yàn)FastCFS集群,并在k8s中通過(guò)CSI連通FastCFS集群的過(guò)程寫(xiě)出來(lái)浅役,希望能夠幫助到搭建FastCFS碰到問(wèn)題的同學(xué)斩松,或者想嘗試FastCFS的同學(xué)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末觉既,一起剝皮案震驚了整個(gè)濱河市惧盹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瞪讼,老刑警劉巖钧椰,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異尝艘,居然都是意外死亡演侯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)背亥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)秒际,“玉大人,你說(shuō)我怎么就攤上這事狡汉÷玻” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵盾戴,是天一觀的道長(zhǎng)寄锐。 經(jīng)常有香客問(wèn)我,道長(zhǎng)尖啡,這世上最難降的妖魔是什么橄仆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮衅斩,結(jié)果婚禮上盆顾,老公的妹妹穿的比我還像新娘。我一直安慰自己畏梆,他們只是感情好您宪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著奠涌,像睡著了一般宪巨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溜畅,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天捏卓,我揣著相機(jī)與錄音,去河邊找鬼慈格。 笑死天吓,一個(gè)胖子當(dāng)著我的面吹牛贿肩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播龄寞,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼汤功!你這毒婦竟也來(lái)了物邑?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤滔金,失蹤者是張志新(化名)和其女友劉穎色解,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體餐茵,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡科阎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了忿族。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锣笨。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖道批,靈堂內(nèi)的尸體忽然破棺而出错英,到底是詐尸還是另有隱情,我是刑警寧澤隆豹,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布椭岩,位于F島的核電站,受9級(jí)特大地震影響璃赡,放射性物質(zhì)發(fā)生泄漏判哥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一碉考、第九天 我趴在偏房一處隱蔽的房頂上張望塌计。 院中可真熱鬧,春花似錦豆励、人聲如沸夺荒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)技扼。三九已至,卻和暖如春嫩痰,著一層夾襖步出監(jiān)牢的瞬間剿吻,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工串纺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丽旅,地道東北人椰棘。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像榄笙,于是被迫代替她去往敵國(guó)和親邪狞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容