PureFlash存儲(chǔ)系統(tǒng)介紹與上手指南

PureFlash是一個(gè)開源的分布式存儲(chǔ)系統(tǒng),項(xiàng)目起始于2016年。本文介紹將介紹PureFlash系統(tǒng)的主要特點(diǎn),以及基于容器的快速上手體驗(yàn)。

PureFlash的開源項(xiàng)目位置:https://github.com/cocalele/PureFlash?

一、PureFlash整體介紹

PureFlash是一個(gè)開源的ServeSAN實(shí)現(xiàn),也就是通過大量的通用服務(wù)器,加上PureFlash的軟件系統(tǒng),構(gòu)造出一套能滿足企業(yè)各種業(yè)務(wù)需求的分布式SAN存儲(chǔ)。

PureFlash是為全閃存時(shí)代而設(shè)計(jì)的存儲(chǔ)系統(tǒng)。當(dāng)前SSD盤的應(yīng)用越來越廣泛,大有全面取代HDD的趨勢(shì)。SSD與HDD的顯著區(qū)別就是性能差異,這也是用戶體驗(yàn)最直接的差異,而且隨著NVMe接口的普及性能差異越來大,這種近百倍的量變差異足以帶來架構(gòu)設(shè)計(jì)上的質(zhì)變。舉個(gè)例子,原來HDD的性能很低,遠(yuǎn)遠(yuǎn)低于CPU、網(wǎng)絡(luò)的性能能力,因此系統(tǒng)設(shè)計(jì)的準(zhǔn)則是追求HDD的性能最大化,為達(dá)到這個(gè)目標(biāo)可以以消耗CPU等資源為代價(jià)。而到了NVMe時(shí)代,性能關(guān)系已經(jīng)完全顛倒了,盤不再是瓶頸,反而CPU、網(wǎng)絡(luò)成為系統(tǒng)的瓶頸。那種消耗CPU以優(yōu)化IO的方法只能適得其反。

因此我們需要一套全新的存儲(chǔ)系統(tǒng)架構(gòu),以充分發(fā)揮SSD的能力,提高系統(tǒng)的效率。PureFlash的設(shè)計(jì)思想以簡(jiǎn)化IO stack, 數(shù)據(jù)通路控制通路分離,快速路徑優(yōu)先為基本原則,確保高性能與高可靠性,提供云計(jì)算時(shí)代塊存儲(chǔ)核心能力。

二、功能特性

1. 單副本與多副本任意選擇,允許每個(gè)volume使用不同的副本數(shù),提供不同的可靠性等級(jí)

2. 精簡(jiǎn)置備,即thin provision。能夠?qū)崿F(xiàn)云計(jì)算時(shí)代需要的存儲(chǔ)虛擬化,存儲(chǔ)超賣等關(guān)鍵特性。而且可以提供超過單節(jié)點(diǎn)容量能力的超大容量Volume

3. 瞬時(shí)快照能力,PureFlash采用inplace 快照技術(shù),能夠瞬時(shí)完成快照且不占用額外的存儲(chǔ)空間

4. Scale out能力,可以隨時(shí)通過增加節(jié)點(diǎn)的方式擴(kuò)展系統(tǒng)的總體容量,即便是運(yùn)行期間也可以進(jìn)行擴(kuò)容。

5. 強(qiáng)一致性,使用強(qiáng)一致性,確保企業(yè)數(shù)據(jù)正確性、確保核心業(yè)務(wù)正確運(yùn)行

6. 允許共享訪問,同一個(gè)Volume允許從多個(gè)Client同時(shí)訪問,可以用于支撐Oracle RAC類共享盤業(yè)務(wù)

7. 故障冗余,容忍各種單點(diǎn)故障,包括網(wǎng)絡(luò)故障,網(wǎng)卡故障,SSD故障,節(jié)點(diǎn)整機(jī)故障

8. 可控?cái)?shù)據(jù)恢復(fù),當(dāng)硬件故障恢復(fù)后,可以對(duì)數(shù)據(jù)進(jìn)行恢復(fù),并且可以控制恢復(fù)的時(shí)間與資源占用情況

9. 可控?cái)?shù)據(jù)均衡,系統(tǒng)長(zhǎng)時(shí)間使用后可能數(shù)據(jù)分布不均衡,可控均衡功能可以在節(jié)點(diǎn)間均衡數(shù)據(jù)分布。并且均衡的時(shí)間與資源占用率都可以控制,以減少對(duì)正常業(yè)務(wù)的沖擊

10. 多網(wǎng)卡與多路徑支持,每個(gè)節(jié)點(diǎn)可以有多個(gè)網(wǎng)卡,這些網(wǎng)卡都處于活動(dòng)狀態(tài)以提供更高的IO吞吐能力,并且在一個(gè)網(wǎng)卡故障時(shí)可以自動(dòng)把IO遷移到其他網(wǎng)卡而不影響客戶端訪問。

11. 簡(jiǎn)化的io stack,PureFlash以提供塊存儲(chǔ)為目標(biāo),為將SSD性能毫無損失的發(fā)揮出來,避免使用任何多余的中間IO層級(jí),因此既沒有使用本地文件系統(tǒng),也沒有使用K-V系統(tǒng)進(jìn)行本地?cái)?shù)據(jù)管理。使用本地文件系統(tǒng)或者KV做本地?cái)?shù)據(jù)管理在分布式存儲(chǔ)系統(tǒng)中很常見,但同時(shí)也帶來了性能損失,系統(tǒng)復(fù)雜度上升,bug概率增加。PureFlash則完全避免了這一點(diǎn)。

12. 擴(kuò)容穩(wěn)定性,PureFlash系統(tǒng)使用非hash設(shè)計(jì),新節(jié)點(diǎn)加入集群后,不需要均衡就可以立即開始承載業(yè)務(wù),保證既有業(yè)務(wù)穩(wěn)定運(yùn)行,避免均衡帶來的沖擊。

13. 最小資源消耗,適合超融合部署。PureFlash設(shè)計(jì)中沒有使用SPDK這樣的IO接口。SPDK雖然能帶來一些IO性能收益,但是付出的代價(jià)是CPU資源的大量浪費(fèi),在沒有IO時(shí)候也要處于忙等待狀態(tài)中。這對(duì)超融合系統(tǒng)是致命的,存儲(chǔ)任務(wù)一直占用CPU資源,而不能出讓給計(jì)算任務(wù)使用,背離超融合的基本理念。PureFlash只消耗與IO能力成比例的CPU、內(nèi)存、網(wǎng)絡(luò)資源,并且可以通過參數(shù)配置最大資源消耗量,因而十分適合超融合系統(tǒng)。

三、安裝運(yùn)行

一個(gè)完整的PureFlash集群包括: zookeeper集群、MariaDB集群、jconductor集群、PureFlashStore集群。要想具備基本的高可用能力,需要至少3個(gè)物理節(jié)點(diǎn),然后將這些服務(wù)融合部署在這3個(gè)節(jié)點(diǎn)上。如此多的功能模塊,和如此多的節(jié)點(diǎn),如果從0開始部署的話還是個(gè)比較繁重的任務(wù)。然而作為測(cè)試部署,這些模塊都可以簡(jiǎn)化成單節(jié)點(diǎn)并且部署到單個(gè)容器里。我們從容器開始運(yùn)行,讀者可以快速對(duì)PureFlash有個(gè)體驗(yàn)。容器鏡像位置:https://hub.docker.com/r/pureflash/pureflash

首先,讓我們通過下面的命令拉取和啟動(dòng)容器:

# docker pull pureflash/pureflash:1.0

# docker run -it --rm pureflash/pureflash:1.0

容器啟動(dòng)的時(shí)候,會(huì)首先初始化一個(gè)約20G的數(shù)據(jù)文件代替SSD,整個(gè)初始化過程大概有1分鐘左右。等看到命令提示符就說明初始化好了。

啟動(dòng)后就可以使用了,PureFlash提供了命令行工具,來查看管理集群,

# pfcli list_store

+----+---------------+--------+

| Id | Management IP | Status |

+----+---------------+--------+

|? 1 |? ? 127.0.0.1 |? ? OK |

+----+---------------+--------+

# pfcli list_disk

+----------+--------------------------------------+--------+

| Store ID |? ? ? ? ? ? ? ? uuid? ? ? ? ? ? ? ? | Status |

+----------+--------------------------------------+--------+

|? ? ? ? 1 | 9ae5b25f-a1b7-4b8d-9fd0-54b578578333 |? ? OK |

+----------+--------------------------------------+--------+

作為測(cè)試,我們來創(chuàng)建一個(gè)單副本的volume(這個(gè)環(huán)境只有一個(gè)store節(jié)點(diǎn),也只能創(chuàng)建單副本的Volume)。

# pfcli create_volume -v test_v1 -s 2G --rep 1

+------------+---------+------------+----------+--------+

|? ? Id? ? |? Name? |? ? Size? ? | RepCount | Status |

+------------+---------+------------+----------+--------+

| 1107296256 | test_v1 | 2147483648 |? ? ? ? 1 |? ? OK |

+------------+---------+------------+----------+--------+

同時(shí)容器里面還打包了兩個(gè)測(cè)試工具:pfdd和fio. 前者就是像dd工具一樣,可以向volume里面寫入或者讀出數(shù)據(jù)。而fio是著名的性能測(cè)試工具,大家可以試一試在容器里的性能如何。

# pfdd --rw write --if /dev/zero -v test_v1 --bs 4k --count 10

# fio -name=test -ioengine=pfbd -volume=test_v1 -iodepth=2? -rw=randwrite -size=2G -bs=4k -direct=1

最后,列出PureFlash系統(tǒng)相關(guān)的git庫(kù):

PureFlash存儲(chǔ)服務(wù)pfs:? ?https://github.com/cocalele/PureFlash.git??

PureFlash控制服務(wù)jconductor:?https://github.com/cocalele/jconductor.git

增加了pfbd engine的fio:?https://gitee.com/cocalele/fio.git

增加了pfbd支持的qemu:?https://gitee.com/cocalele/qemu.git

歡迎各位朋友參與此項(xiàng)目,創(chuàng)造全閃時(shí)代的云存儲(chǔ)基石!本人V_X 號(hào):vivenas ,歡迎聯(lián)系。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容