賀強(qiáng) 宗萍
(北京兆芯電子科技有限公司 北京市 100000)
隨著信息技術(shù)的迅猛發(fā)展,存儲(chǔ)系統(tǒng)已成為IC 研發(fā)企業(yè)保存重要數(shù)據(jù)的關(guān)鍵一環(huán)。選擇存儲(chǔ)系統(tǒng)需要參考幾個(gè)重要的指標(biāo):可靠性、容錯(cuò)性及可擴(kuò)展性。
本文分析了集成電路(IC)芯片設(shè)計(jì)企業(yè)對(duì)存儲(chǔ)系統(tǒng)的需求,基于分布式文件系統(tǒng)Ceph 和Ganesha 設(shè)計(jì)了適合IC 芯片研發(fā)企業(yè)使用的分布式存儲(chǔ)系統(tǒng)。后端存儲(chǔ)基于分布式架構(gòu),利用Ganesha 雙活負(fù)載集群將CephFS 導(dǎo)出為NFS 為高性能運(yùn)算集群(HPC)提供存儲(chǔ)空間及Snapshot 數(shù)據(jù)快照保護(hù)及訪問權(quán)限和目錄使用量Quota 等功能設(shè)置。
實(shí)現(xiàn)了IC 芯片設(shè)計(jì)企業(yè)對(duì)海量存儲(chǔ)、小文件高IO 需求的主要功能,通過Prometheus 和Grafana 為用戶提供存儲(chǔ)的實(shí)時(shí)性能和歷史記錄監(jiān)控,為IC 芯片設(shè)計(jì)企業(yè)提供高性能、高可靠性的分布式存儲(chǔ)系統(tǒng)。
CephFS(Ceph File System)功能特性是基于RADOS 來實(shí)現(xiàn)分布式的文件系統(tǒng),引入了MDS(Metadata Server),主要為兼容POSIX 文件系統(tǒng)提供元數(shù)據(jù),一般都是當(dāng)作文件系統(tǒng)來掛載為客戶端提供數(shù)據(jù)訪問服務(wù)。
主要組成部分:
(1)OSDs 主要功能包括存儲(chǔ)數(shù)據(jù),處理數(shù)據(jù)的復(fù)制、恢復(fù)、回補(bǔ)、平衡數(shù)據(jù)分布,并將一些相關(guān)數(shù)據(jù)提供給Ceph Monitor;
(2)Monitors 主要功能是維護(hù)整個(gè)集群健康狀態(tài),提供一致性的決策,包含了Monitor map、OSD map、PGmap 和CRUSH map;
(3)Managers 負(fù)責(zé)跟蹤運(yùn)行時(shí)指標(biāo)和Ceph 集群的當(dāng)前狀態(tài),包括存儲(chǔ)利用率,當(dāng)前性能指標(biāo)和系統(tǒng)負(fù)載;
(4)MDS 主要保存的是Ceph 文件系統(tǒng)的元數(shù)據(jù);
對(duì)一家IC 設(shè)計(jì)公司而言,所設(shè)計(jì)研發(fā)的數(shù)據(jù)是企業(yè)最重要的資產(chǎn),而且數(shù)據(jù)量巨大,往往會(huì)達(dá)到PB 級(jí)以上。為確保這些數(shù)據(jù)的最高可用性,一套穩(wěn)定、可靠的存儲(chǔ)系統(tǒng)必然不可或缺。NAS存儲(chǔ)的特點(diǎn)在于數(shù)據(jù)集中管理、訪問數(shù)據(jù)及時(shí)方便。但隨著公司員工人數(shù)的增長(zhǎng)以及運(yùn)營規(guī)模的擴(kuò)大,對(duì)存儲(chǔ)的需求也逐步擴(kuò)大,以確保企業(yè)研發(fā)數(shù)據(jù)的最高可用性,存儲(chǔ)系統(tǒng)的穩(wěn)定性和靈活的可擴(kuò)展性也成了存儲(chǔ)解決方案的主要考慮因素。
根據(jù)在IC 設(shè)計(jì)公司多年IT 經(jīng)驗(yàn),IC 設(shè)計(jì)企業(yè)存儲(chǔ)需求大致可參考表1。
(1)操作系統(tǒng)建議選擇最新的,本文選擇CentOS 7.8 操作系統(tǒng)。
(2)Ceph 選擇Nautilus 最新穩(wěn)定版14.2.11。
(3)文件系統(tǒng)采用Ceph 最新提供的BlueStore。
表1:企業(yè)存儲(chǔ)需求參考表
表2:全局公共調(diào)優(yōu)參數(shù)
表3:Monitor 調(diào)優(yōu)參數(shù)
表4:OSD 調(diào)優(yōu)參數(shù)
表5:MDS 調(diào)優(yōu)參數(shù)
表6:Client 調(diào)優(yōu)參數(shù)
硬件選型原則:PB 級(jí)生產(chǎn)集群盡量選擇品質(zhì)有保障并經(jīng)過嚴(yán)格測(cè)試的平臺(tái)及硬件,由于數(shù)據(jù)量較大應(yīng)該配備更多內(nèi)存、CPU 和數(shù)據(jù)存儲(chǔ)空間及萬兆網(wǎng)絡(luò)來解決存儲(chǔ)高IO、高流量壓力。
3.2.1 服務(wù)器選型
考慮綜合性價(jià)比,盡量選槽位較多的型號(hào),本案例選DELL R740XD 作為Ceph 主機(jī)平臺(tái)。
3.2.2 CPU 選型
元數(shù)據(jù)服務(wù)器對(duì)CPU 相對(duì)敏感,它會(huì)動(dòng)態(tài)地重分布它們的負(fù)載,所以元數(shù)據(jù)服務(wù)器應(yīng)該有足夠的處理能力。
3.2.3 內(nèi)存選型
元數(shù)據(jù)服務(wù)器和監(jiān)視器必須可以盡快地提供它們的數(shù)據(jù),它們應(yīng)該有足夠的內(nèi)存,至少1GB 每個(gè)進(jìn)程,運(yùn)行每個(gè)OSD 默認(rèn)會(huì)分配4GB 內(nèi)存;然而在恢復(fù)期間它們占用內(nèi)存比較大,通常內(nèi)存越多性能越好。
3.2.4 硬盤選型
OSD 應(yīng)該有足夠的空間用于存儲(chǔ)數(shù)據(jù),考慮到大硬盤的每GB成本,建議用容量大于1TB 的硬盤,用GB 數(shù)除以硬盤價(jià)格來計(jì)算每GB 成本,因?yàn)檩^大的硬盤通常會(huì)對(duì)每GB 成本有較大影響,每臺(tái)服務(wù)器的硬盤槽位有限,安裝大容量硬盤意味著每臺(tái)服務(wù)器可提供更大容量的空間來平攤服務(wù)器硬件、機(jī)柜、維護(hù)等成本,更加經(jīng)濟(jì)。
3.2.5 網(wǎng)絡(luò)設(shè)備選型
建議每node 最少兩個(gè),甚至四個(gè)萬兆網(wǎng)卡,兩兩做bonding,增加帶寬、提升容災(zāi)效果。現(xiàn)在大多數(shù)SSD 硬盤都能達(dá)到大概12Gbps 的吞吐量,網(wǎng)卡應(yīng)該能及時(shí)處理所有OSD 硬盤總吞吐量,所以推薦四個(gè)萬兆網(wǎng)卡,分別用于Public Network(前端)和Cluster Network(后端),兩個(gè)網(wǎng)絡(luò)最好用VLAN 或物理隔離,減少額外負(fù)載。
集群網(wǎng)絡(luò)(最好不要與互聯(lián)網(wǎng)連接)用于處理由數(shù)據(jù)復(fù)制產(chǎn)生的額外開銷,而且可防止拒絕服務(wù)攻擊,拒絕服務(wù)攻擊會(huì)干擾數(shù)據(jù)歸置組,使之在OSD 數(shù)據(jù)復(fù)制時(shí)不能回到active+clean 狀態(tài)。
(1)服務(wù)器的BIOS 設(shè)置中開啟CPU 的HT 特性;
(2)關(guān)閉CPU 的節(jié)能模式;
(3)關(guān)閉NUMA 特性。
4.2.1 Kernel PID Max
echo 4194303 >/proc/sys/kernel/pid_max
永久生效請(qǐng)修改/etc/sysctl.conf 文件read_ahead。
4.2.2 Read_ahead_kb
通過數(shù)據(jù)預(yù)讀并且記載到隨機(jī)訪問內(nèi)存方式提高磁盤讀操作。
echo "8192" >/sys/block/sd[x]/queue/read_ahead_kb
4.2.3 swappiness
主要控制系統(tǒng)對(duì)swap 的使用,這個(gè)參數(shù)的調(diào)整的原因主要是使用到swap 后會(huì)影響系統(tǒng)的性能。
echo "vm.swappiness=10" | tee -a/etc/sysctl.conf
4.2.4 I/O Scheduler
I/O Scheduler 的調(diào)整方法:SSD 用noop,SATA/SAS 使用deadline。
noop I/O 調(diào)度器實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的FIFO(First-In/First-Out)調(diào)度器。通過使用Last-Hit(最后命中)緩存,請(qǐng)求在通用塊層中被合并。對(duì)于使用快速存儲(chǔ)的計(jì)算密集型系統(tǒng)來說,這是最好的調(diào)度器。
deadline I/O 調(diào)度器替換了CFQ,后者原先是默認(rèn)I/O 調(diào)度器。deadline 調(diào)度器的好處是每個(gè)調(diào)度器通過使用單獨(dú)的IO 隊(duì)列,因此與寫相比,更利于讀。
Ceph 軟件的參數(shù)都記錄在ceph.conf 配置文件中,每次Ceph的服務(wù)進(jìn)程,比如MON、OSD、MDS 啟動(dòng),都會(huì)首先讀取這個(gè)配置文件。這個(gè)文件分global、MON、OSD、MDS、Client 五部分。
(1)global。global為全局公共部分,參數(shù)定義全局有效。見表2。
(2)MON。見表3。
(3)OSD。OSD scrubbing(清理)設(shè)置:OSD scrubbing 對(duì)維護(hù)數(shù)據(jù)完整性來說是非常重要的,但是也會(huì)降低其性能。可以采用表4配置來增加或減少scrubbing 操作。
(4)MDS。見表5。
(5)Client。定義的參數(shù)對(duì)所有連接Ceph 存儲(chǔ)系統(tǒng)的客戶端都生效。見表6。
(6)PG Number 計(jì)算。PG 和PGP 數(shù)量一定要根據(jù)OSD 的數(shù)量及副本數(shù)進(jìn)行調(diào)整,計(jì)算公式如下,但是最后算出的結(jié)果一定要接近或者等于一個(gè)2 的指數(shù)。
Total PGs=(OSD * 100)/副本數(shù)
Ceph 的監(jiān)控可視化界面方案很多,如grafana、Kraken、cephdash 等。從Ceph Luminous 開始,Ceph 提供了原生的Dashboard 功能,通過Dashboard 可以獲取Ceph 集群的各種基本狀態(tài)信息,也可以用命令行方式進(jìn)行查看。
命令行查看集群實(shí)時(shí)狀態(tài):
(1)查看Ceph 集群狀態(tài):
#ceph -s
(2)查看所有OSD 大小、使用量及狀態(tài)等信息:
#cephosddf
Dashboard:Dashboard 可以查看到整個(gè)集群的主機(jī)數(shù)、OSD 數(shù)量及各服務(wù)實(shí)時(shí)狀態(tài);性能指標(biāo)主要有IOPS 及Throughput 等提供集群實(shí)時(shí)的數(shù)據(jù)訪問情況;最后還有集群容量使用狀況,如容量緊張的話,需要及時(shí)增加Node 和OSD 來保證可用性。
Ceph 是一個(gè)分布式存儲(chǔ)、可擴(kuò)展、高性能、不存在單節(jié)點(diǎn)故障的統(tǒng)一存儲(chǔ)解決方案,可以幫助企業(yè)擺脫昂貴的專屬硬件。作為全球最火熱的開源分布式存儲(chǔ)項(xiàng)目,當(dāng)前中國Ceph 應(yīng)用的形勢(shì)對(duì)比前幾年已經(jīng)發(fā)生了決定性的變化。隨著國內(nèi)越來越多各行業(yè)用戶的參與和使用,足以見證它的穩(wěn)定性和可靠性,盡早大規(guī)模應(yīng)用到各企業(yè)中去,從而減少對(duì)國外昂貴專用存儲(chǔ)的依賴,降低IC 研發(fā)企業(yè)投入成本。