金融機構(gòu)多場景關(guān)鍵應(yīng)用下的存儲架構(gòu)如何設(shè)計?

金融行業(yè)作為特殊而典型的行業(yè),其信息系統(tǒng)在面臨業(yè)務(wù)需求變革時,必然引發(fā)應(yīng)用系統(tǒng)底層存儲架構(gòu)的優(yōu)化及革新。例如銀行的賬務(wù)系統(tǒng)、保險的理賠業(yè)務(wù)系統(tǒng)、證券的交易系統(tǒng)等。因此站在不同的業(yè)務(wù)角度,去探討不同場景下的存儲選型設(shè)計顯得尤為重要。

本文來自微信公眾號“twt企業(yè)IT社區(qū)”。

【欄目主編】趙海某金融系統(tǒng)高級主管:本議題由光大科技有限公司高級工程師牛凱源、某金融科技公司資深集成工程師孫偉光、某金融機構(gòu)架構(gòu)師李威分別發(fā)表自己的主張,幾位專家的主張在某股份制銀行系統(tǒng)架構(gòu)師老谷、江西銀行信息科技部系統(tǒng)管理崗資深運維工程師謝茜茜、以及我本人的復(fù)議后,形成了一定的共識,希望可以對同行有一定的參考。

牛凱源光大科技有限公司高級工程師:

金融機構(gòu)關(guān)鍵業(yè)務(wù)存儲架構(gòu)在選型時,需充分考慮到業(yè)務(wù)場景的特點,有針對性地選取適合的存儲產(chǎn)品以及架構(gòu),不能一味的求新、求變,應(yīng)以科技為金融服務(wù)為宗旨,通過技術(shù),提高金融機構(gòu)服務(wù)的質(zhì)量和效率。

一、引言

金融機構(gòu)在多種場景有著關(guān)鍵應(yīng)用,銀行業(yè)更多關(guān)注交易類與賬務(wù)系統(tǒng),保險行業(yè)則將投保理賠類系統(tǒng)視為關(guān)鍵系統(tǒng),而如何選擇適合各場景下的存儲?如何設(shè)計適合特定業(yè)務(wù)場景的存儲架構(gòu)?對于企業(yè)IT人員來說尤為重要。

二、當(dāng)前主流存儲架構(gòu)分析

現(xiàn)有的存儲系統(tǒng)經(jīng)過長期發(fā)展,種類極其繁多,架構(gòu)也各不相同,限于篇幅,本文主要針對架構(gòu)進行相關(guān)討論。

當(dāng)前主流架構(gòu)主要分為集中式存儲和分布式存儲兩種。集中式存儲技術(shù)成熟,架構(gòu)簡單,有足夠的穩(wěn)定性,對高IOPS、低延時、數(shù)據(jù)強一致性有很好的支持。但是集中式架構(gòu)決定了其擴展能力有限,無法很好支撐高并發(fā)訪問性能。隨著數(shù)據(jù)量不斷增長,集中式存儲增長空間越來越有限。分布式存儲是采用分布式架構(gòu)的存儲集群,將數(shù)據(jù)分布在不同物理位置,并通過網(wǎng)絡(luò)把它們連接起來,橫向擴展能力很強。分布式存儲有效解決了傳統(tǒng)集中式存儲的可擴展性問題,規(guī)??蓴U展至上千個節(jié)點,容量擴展到上百PB甚至EB級,性能隨容量線性提升。按需在線擴容后,自動實現(xiàn)數(shù)據(jù)再均衡。分布式存儲的多個存儲節(jié)點能夠同時提供讀寫服務(wù),因此具有很高的吞吐率,可達到幾十GB/s。主流分布式存儲產(chǎn)品主要有以下幾種:

?Ceph:適合云平臺塊存儲和對象存儲

?HDFS:適用于大數(shù)據(jù)場景

?GlusterFS:適用視頻,音頻等大文件和以讀為主的場景

?BeeGFS/Luster:適用于高性能計算場景

三、金融機構(gòu)業(yè)務(wù)場景分析與架構(gòu)選型思路

首先,需要明確不同金融機構(gòu)不同場景下的業(yè)務(wù)特點,此處,以銀行業(yè)與保險行業(yè)為例,比如:銀行業(yè)的聯(lián)機交易業(yè)務(wù)或核心業(yè)務(wù)主要體現(xiàn)在客戶層面對于業(yè)務(wù)響應(yīng)的快慢,故而對于讀寫的性能要求極高;此外,對于事務(wù)性也有極高的要求,交易業(yè)務(wù)要求數(shù)據(jù)必須是強一致的,不允許出現(xiàn)臟讀,臟寫的情況。針對上述出現(xiàn)的這類核心業(yè)務(wù)系統(tǒng),可采用傳統(tǒng)的集中式存儲架構(gòu),以便對高IOPS、低延時和數(shù)據(jù)強一致性的需求能夠有效支持。

而像銀行業(yè)或保險行業(yè)的影像類系統(tǒng),主要存儲的是客戶的影像媒體數(shù)據(jù),數(shù)據(jù)多以大文件、非結(jié)構(gòu)化數(shù)據(jù)為主,業(yè)務(wù)特點也多以影像數(shù)據(jù)的查詢?yōu)橹?,對性能有較高要求。對于此類業(yè)務(wù),以個人實踐情況來看,以GlusterFS為代表的分布式存儲最為適合該業(yè)務(wù),GlusterFS具有高擴展性、高可用性、高性能、可橫向擴展等特點,其根據(jù)場景不同,可設(shè)置不同類型的卷,如:分布式復(fù)制卷,分布式條帶卷等,以此來達到高性能讀寫的目的。

個人曾對GlusterFS存儲進行過相關(guān)讀寫性能測試,在分布式復(fù)制卷模式,同/異步寫入,讀取數(shù)據(jù)的場景下,發(fā)現(xiàn)其對于大文件的讀寫支持很好,測試數(shù)據(jù)如表1,表2所示:

表1同步讀寫測試數(shù)據(jù)

360截圖16251112669372.png

表2異步讀寫測試數(shù)據(jù)

360截圖16251112669372.png

根據(jù)表1可以看出,GlusterFS存儲對于小文件的讀寫性能支持并不是很好,但是對于大文件來說,讀寫性能很強,適合視頻流媒體等影像文件的讀寫

根據(jù)表2可以看出,雖然GlusterFS適合大文件讀寫,但是異步讀寫下,并不是文件越大,讀寫性能越好,反而在筆者的測試環(huán)境下,2G大小的文件,讀寫性能達到最佳。

該測試數(shù)據(jù)是基于分布式復(fù)制卷進行的數(shù)據(jù)讀寫,理論上來講,該模式下相對于分布式條帶卷,讀寫性能要略微差一些,但是由于采用了多副本機制,所以保證了數(shù)據(jù)的高可用,但隨之帶來的是存儲容量有效利用率較低以及數(shù)據(jù)查詢效率的降低。

所以,在實際場景中,選擇分布式存儲時,是否采用多副本,副本數(shù)量設(shè)置多少,需要結(jié)合具體業(yè)務(wù)場景來確定。

四、結(jié)語

綜上所述,金融機構(gòu)業(yè)務(wù)存儲架構(gòu)在選型時,需充分考慮到業(yè)務(wù)場景的特點,有針對性地選取適合的存儲產(chǎn)品以及架構(gòu),不能一味的求新、求變,應(yīng)以科技為金融服務(wù)為宗旨,通過技術(shù),提高金融機構(gòu)服務(wù)的質(zhì)量和效率。

孫偉光某金融科技公司資深集成工程師:

數(shù)據(jù)作為企業(yè)的核心要素和資產(chǎn),在解決如何存儲管理大數(shù)據(jù)以及海量文件數(shù)量之外,更重要的是根據(jù)應(yīng)用的訪問特點,在保證數(shù)據(jù)安全性的同時,進行簡易化合理的數(shù)據(jù)存儲管理以及提高存儲系統(tǒng)讀寫性能,提升數(shù)據(jù)處理效率,將存儲系統(tǒng)的價值發(fā)揮到最大。讓存儲在保險業(yè)發(fā)揮重要的壓艙石作用。

一、保險行業(yè)影像類業(yè)務(wù)應(yīng)用特點

數(shù)字化轉(zhuǎn)型大勢下,作為數(shù)字經(jīng)濟的重要參與者,保險公司面臨諸多數(shù)字化轉(zhuǎn)型的挑戰(zhàn),如何通過“數(shù)據(jù)”驅(qū)動實際業(yè)務(wù)以實現(xiàn)保險企業(yè)的數(shù)字化轉(zhuǎn)型成為關(guān)鍵所在。影像平臺為保險企業(yè)提供了全面影像技術(shù)支撐,包括:影像采集、影像存儲、影像處理、影像調(diào)閱。影像平臺系統(tǒng)需要管理海量內(nèi)容數(shù)據(jù),內(nèi)容通常是傳統(tǒng)關(guān)系型數(shù)據(jù)庫信息的幾十乃至上百倍,保險企業(yè)生產(chǎn)業(yè)務(wù)系統(tǒng)生成的電子保單是以文件為單位的非結(jié)構(gòu)化數(shù)據(jù),不論是單個文件大小還是文件總數(shù)據(jù)量,其增長都非常迅速。而且為了方便用戶在調(diào)取經(jīng)常被訪問的數(shù)據(jù)時可以直接從緩存調(diào)取,會將所有經(jīng)常被訪問的數(shù)據(jù)都存儲在緩存池中,當(dāng)數(shù)據(jù)量不斷增長時(如圖片類與結(jié)構(gòu)化數(shù)據(jù)),存儲系統(tǒng)中的文件數(shù)量也會快速增長。當(dāng)存儲系統(tǒng)內(nèi)的文件數(shù)量增長到數(shù)千萬以上時,文件的檢索查找等操作將會給文件系統(tǒng)帶來巨大的壓力,特別是當(dāng)一個目錄下面存放的文件超過一定數(shù)量時,甚至?xí)斐晌募檎倚实募眲∠陆怠?/p>

數(shù)據(jù)作為企業(yè)的核心要素和資產(chǎn),在解決如何存儲管理大數(shù)據(jù)以及海量文件數(shù)量之外,更重要的是根據(jù)應(yīng)用的訪問特點,在保證數(shù)據(jù)安全性的同時,進行簡易化合理的數(shù)據(jù)存儲管理以及提高存儲系統(tǒng)讀寫性能,提升數(shù)據(jù)處理效率,將存儲系統(tǒng)的價值發(fā)揮到最大。讓存儲在保險業(yè)發(fā)揮重要的壓艙石作用。

二、保險行業(yè)影像系統(tǒng)架構(gòu)分析

存儲架構(gòu)是實現(xiàn)數(shù)據(jù)存儲關(guān)系各個系統(tǒng)讀寫性能的關(guān)鍵環(huán)節(jié)。存儲架構(gòu)重點是在建立起統(tǒng)一的存儲平臺上,更有效的完成業(yè)務(wù)處理,并極大地提高系統(tǒng)的可管理性,降低系統(tǒng)的管理難度及管理開銷,提高信息的可用性和共享性。金融機構(gòu)關(guān)鍵業(yè)務(wù)系統(tǒng)在存儲規(guī)劃設(shè)計上一般需要考慮如下兩個重要因素:

1)系統(tǒng)運行性能:系統(tǒng)應(yīng)能滿足的性能需求,包括在線用戶數(shù),并發(fā)用戶數(shù),綜合處理能力(TPS)、重要業(yè)務(wù)的平均響應(yīng)時間、重要數(shù)據(jù)的聯(lián)機存儲能力等內(nèi)容。

2)系統(tǒng)安全性:應(yīng)能滿足的用戶接入系統(tǒng)的安全性要求,應(yīng)能滿足的系統(tǒng)關(guān)鍵數(shù)據(jù)的保存和恢復(fù)等安全性要求,應(yīng)能滿足的系統(tǒng)關(guān)鍵數(shù)據(jù)的被查詢的安全性要求。

按照影像平臺數(shù)據(jù)存儲結(jié)構(gòu)可將數(shù)據(jù)分為兩大類:結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù)主要包括應(yīng)用系統(tǒng)直接產(chǎn)生的數(shù)據(jù),即行數(shù)據(jù),是存儲在數(shù)據(jù)庫里可以用二維表結(jié)構(gòu)來邏輯表達實現(xiàn)的數(shù)據(jù),包括:業(yè)務(wù)數(shù)據(jù)、基礎(chǔ)庫數(shù)據(jù)等。非結(jié)構(gòu)化數(shù)據(jù)是指不方便用數(shù)據(jù)庫二維邏輯表來表現(xiàn)的數(shù)據(jù),主要包括:音頻、視頻、日志與圖像文件等。

保險業(yè)影像平臺由于其應(yīng)用功能固有特點,將產(chǎn)生大量的掃描圖片、影音等非結(jié)構(gòu)化、半結(jié)構(gòu)化的數(shù)據(jù),對這類數(shù)據(jù)的采集、存儲、檢索、分發(fā)、分析等管理提出了很高的要求。因此,非結(jié)構(gòu)化數(shù)據(jù)根據(jù)法規(guī)要求,需要對數(shù)據(jù)集中歸檔備份。重點在于平衡數(shù)據(jù)存儲成本效率與計算處理效率,配合結(jié)構(gòu)化數(shù)據(jù)的分析,提供分析應(yīng)用場景下的非結(jié)構(gòu)化數(shù)據(jù)支持。

根據(jù)數(shù)據(jù)分類原則,影像平臺的數(shù)據(jù)劃分為兩個層級,如表3所示:

表3影像平臺數(shù)據(jù)劃分表

360截圖16251112669372.png

三、業(yè)務(wù)應(yīng)用場景下存儲架構(gòu)設(shè)計

存儲系統(tǒng)應(yīng)該以存儲資源池的形態(tài)進行應(yīng)用系統(tǒng)存儲資源的調(diào)配和存儲資源的管理。存儲資源的調(diào)配應(yīng)該以一種靈活、高效的方式出現(xiàn),尤其是在影像平臺,存儲系統(tǒng)中虛擬資源調(diào)配功能完全滿足這些需求,為了便于管理,應(yīng)該提供一個統(tǒng)一的存儲平臺對系統(tǒng)進行統(tǒng)一配置管理、系統(tǒng)狀態(tài)監(jiān)控和性能監(jiān)控。通過統(tǒng)一管理平臺,用戶可以清晰地了解到整個存儲資源池的設(shè)備運行狀態(tài)、容量資源利用率和性能狀態(tài)等。

存儲系統(tǒng)作為云平臺的重要組成部分,需要與計算資源有良好的集成,尤其是需要將存儲管理與云平臺管理有機地集成在一起。SAN網(wǎng)絡(luò)中網(wǎng)絡(luò)層是非常關(guān)鍵的一個部分,它負(fù)責(zé)將主機和存儲系統(tǒng)連接在一起,并且提供一個高靈活性、高擴展性的環(huán)境,以適應(yīng)業(yè)務(wù)系統(tǒng)不斷發(fā)展帶來的主機和存儲系統(tǒng)的擴展。

對于NAS存儲層來說,NAS作為最成熟的網(wǎng)絡(luò)存儲解決方案,而且是唯一一種通過網(wǎng)絡(luò)連接主機系統(tǒng)共享數(shù)據(jù)的存儲技術(shù)。它采用文件為基本讀寫單位,文件管理由高效的專用硬件模塊負(fù)責(zé),可以降低應(yīng)用服務(wù)器主機對文件管理的開銷,因此最適合做海量文件的存儲構(gòu)架。優(yōu)秀的NAS存儲設(shè)備可以提供每秒近萬次文件讀寫,在處理海量文件時性能更優(yōu)于SAN存儲。NAS采用高速以太網(wǎng)作為連接訪問的形式,因此在系統(tǒng)容量擴展時,不需為應(yīng)用主機添加諸如FC光纖卡等昂貴配件,性價比高且不論是增加主機還是存儲容量都十分便捷,通過快照方式還可以方便地進行高速文件備份。

對象存儲是一種靈活的可擴展存儲結(jié)構(gòu),它將所有數(shù)據(jù)都作為獨立對象存儲在平面層空間中。對象存儲支持同時存儲和管理各種類型的數(shù)據(jù),包括結(jié)構(gòu)化數(shù)據(jù)(如數(shù)據(jù)庫)、非結(jié)構(gòu)化數(shù)據(jù)(如圖像和視頻)和半結(jié)構(gòu)化數(shù)據(jù)(如電子郵件和社交媒體消息)。鑒于其可擴展性高且訪問速度快,主要云存儲服務(wù)全都以對象存儲為基礎(chǔ)。

從數(shù)據(jù)生命周期角度看,影像系統(tǒng)業(yè)務(wù)發(fā)起產(chǎn)生結(jié)構(gòu)數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),這部分?jǐn)?shù)據(jù)作為在線數(shù)據(jù),分別進入不同的存儲池,結(jié)構(gòu)化數(shù)據(jù)寫入SAN閃存存儲,非結(jié)構(gòu)化數(shù)據(jù)寫入NAS存儲。業(yè)務(wù)完成一段時間后,非結(jié)構(gòu)化數(shù)據(jù)因很少在被調(diào)用可作為近線數(shù)據(jù)寫入對象存儲或者作為離線數(shù)據(jù)寫入磁帶庫等。

四、存儲選型應(yīng)用基本思路總結(jié)

存儲選型方法論:

1.存儲性能保障原則

1)設(shè)備利用率通用原則控制在70%以下,部件利用率在30%以上仍然可以處理相同吞吐負(fù)載但是帶來處理延時的增加,延時大帶來聯(lián)機交易延時失敗。

2)不同的轉(zhuǎn)速的磁盤設(shè)備,在不同IO特征下能夠完成的吞吐量和流量差距很大。

2.存儲分配規(guī)則

每臺存儲需預(yù)留20%的空間,滿足存儲內(nèi)系統(tǒng)擴容和變更的要求。對于重要系統(tǒng)和性能壓力大的系統(tǒng),為確保磁盤性能,存儲底層RAID組盡量分散。同一RAID組的LUN為避免相互干擾不能分配給兩個繁忙的系統(tǒng)。對于數(shù)據(jù)量大的應(yīng)用,盡量獨占RAID組。根據(jù)存儲性能數(shù)據(jù)優(yōu)化后端磁盤,減少熱點盤的出現(xiàn)。存儲前端端口:IO負(fù)載高的應(yīng)用,使用專有的存儲前端口。對于高端存儲IOPS≥4000應(yīng)分配1對獨立存儲前端端口,IOPS≥8000應(yīng)分配2對獨立存儲前端端口。數(shù)據(jù)流量高的應(yīng)用,分配在不同存儲前端板卡上,避免存儲前端板卡到后端交換機的帶寬成為瓶頸。服務(wù)器HBA卡和存儲前端口是可以1對1或多對1,避免1對多。IO壓力小的業(yè)務(wù)系統(tǒng)可共享存儲前端口,每個存儲前端口最多為3個HBA共享。服務(wù)器端訪問每個LUN的多路徑≤4條,如果4條仍無法滿足性能要求,應(yīng)將LUN進行分組,不同的組對應(yīng)不同的前端口。

3.存儲使用規(guī)則

1)操作系統(tǒng)層條帶化:為了提高性能,主機層LV建議做條帶,條帶的PV應(yīng)分配到不同RAID組。操作系統(tǒng)群集識別相同共享存儲群集HA或者RAC系統(tǒng),兩個節(jié)點識別相同的存儲磁盤,盡量避免出現(xiàn)群集節(jié)點磁盤個數(shù)不一致情況。

2)數(shù)據(jù)庫層空間分配原則:數(shù)據(jù)庫空間一般有IO較小,隨機IO多的特點,采用RAID1空間。數(shù)據(jù)和索引表空間要分配在不同RAID組上。TEMP表空間功能是查詢排序和存放臨時表,較忙,采用性能好的LUN。REDO表空間采用RAID1空間、UNDO表空間采用RAID1組、ARCHIVE歸檔日志建議用RAID5空間。

李威某金融機構(gòu)架構(gòu)師:

海量小文件,為什么會成為世界性難題?一切的根源探索還得從海量小文件的實際場景出發(fā),如何產(chǎn)生、如何存儲、如何成難題。透過現(xiàn)象看本質(zhì),優(yōu)化才有方向,目標(biāo)才能明確。

海量小文件,不僅是一個行業(yè)難題,更是一個世界性難題,各行各業(yè)的諸多場景下都存在類似困境。此類問題難以根治,一部分原因是傳統(tǒng)存儲解決方案無法高效匹配海量小文件的場景,另一部分原因是從傳統(tǒng)存儲切換到對象存儲的成本略高。此前,針對影像系統(tǒng)和打印系統(tǒng)的海量小文件場景,我們曾花費大量的時間和精力來優(yōu)化海量小文件的業(yè)務(wù)存儲。借此機會拋磚引玉,來深入聊一下海量小文件問題,分享些許我們在海量小文件優(yōu)化上的一點心得。

對于海量小文件的定義,行業(yè)上尚未有精確規(guī)定,更像一個事實標(biāo)準(zhǔn),而非定義標(biāo)準(zhǔn)。一般情況下,單個文件的體積并不大,一般為數(shù)十KB至數(shù)MB,但數(shù)量規(guī)模數(shù)十萬甚至百萬以上級別之巨,這類場景我們稱為“海量小文件”。海量小文件通常呈現(xiàn)出一種非結(jié)構(gòu)化文件的大小與數(shù)量極不平衡的特性,也正是難以根治的癥結(jié)所在。

在金融保險的業(yè)務(wù)系統(tǒng)中,以壽險為例,有兩大核心系統(tǒng)最易形成海量小文件場景:一是影像系統(tǒng),影像系統(tǒng)中需要存儲大量非結(jié)構(gòu)化數(shù)據(jù),如保險人相關(guān)的證件、圖片、PDF文件等,同時還有海量的業(yè)務(wù)過程文件,如交易報文、日志記錄等;二是打印系統(tǒng),打印系統(tǒng)會生成大量的電子保單,同樣存在大量過程文件,如渠道交易圖像、電子簽名照片、電子合同、相關(guān)OCR文件等。這兩大系統(tǒng)中圖像類文件在MB級別,中間過程文件在KB級別,相對比之下中間過程文件的數(shù)量級遠高于影像類文件,單個系統(tǒng)存儲的非結(jié)構(gòu)化數(shù)據(jù)量在TB級別以上。伴隨業(yè)務(wù)高峰期的到來,單目錄下小文件數(shù)量可達百萬級別,嚴(yán)重影響目錄的讀寫效率,甚至長時間無響應(yīng)。

在我們的業(yè)務(wù)實踐中,單目錄下小文件數(shù)量達到一定規(guī)模后,該共享存儲目錄的讀寫效率會出現(xiàn)顯著下降,但影像系統(tǒng)與打印系統(tǒng)對這些非結(jié)構(gòu)化數(shù)據(jù)的IOPS要求并不低。根據(jù)業(yè)務(wù)險種及渠道的不同,對保險人影像件的調(diào)取、電子保單的合成一般都要求在數(shù)秒之間,實時單批次電子保單合成同樣如此,非實時大批量電子保單合成不超過數(shù)分鐘。

海量小文件不僅會對在線業(yè)務(wù)的IOPS有很大影響,而且對這部分業(yè)務(wù)數(shù)據(jù)的連續(xù)數(shù)據(jù)保護也構(gòu)成巨大挑戰(zhàn)。根據(jù)監(jiān)管單位的關(guān)鍵業(yè)務(wù)數(shù)據(jù)保留要求,近三年至五年的數(shù)據(jù)均需要可回溯,所有數(shù)據(jù)均需要永久保留。夜間閑時窗口,是數(shù)據(jù)備份的重要時間段,錯開核心業(yè)務(wù)夜間核心批處理作業(yè)時間后,數(shù)據(jù)保護的執(zhí)行窗口相當(dāng)有限。然而當(dāng)使用備份軟件對海量小文件進行備份、歸檔時,發(fā)現(xiàn)在數(shù)據(jù)掃描階段會消耗大量時間掃描小文件來建立備份索引。數(shù)據(jù)備份階段,數(shù)百萬計的小文件將寫入磁帶或歸檔存儲,速率極其低效。若再加上網(wǎng)絡(luò)等相關(guān)因素影響,海量小文件的備份歸檔窗口將遠超計劃,甚至以天計算。

造成海量小文件存儲如此低效的根源到底是什么?為什么至今還能成為一個世界性的難題?

要想明白這個問題,就得回到存儲本身來追根溯源了。首先,主要是存儲介質(zhì)問題。傳統(tǒng)的存儲以機械磁盤為主要介質(zhì),而機械磁盤適合順序的大文件IO讀寫,不適合隨機的小文件IO讀寫。因此海量小文件的體積、數(shù)量都會進一步加劇機械磁盤的劣勢。

其次是數(shù)據(jù)效率問題。傳統(tǒng)磁盤文件系統(tǒng)體系結(jié)構(gòu)依靠目錄項(Dentry)、索引節(jié)點(Inode)以及數(shù)據(jù)塊(Data)來指導(dǎo)、定位、讀寫文件系統(tǒng)的數(shù)據(jù),而目錄項(Dentry)、索引節(jié)點(Inode)以及數(shù)據(jù)塊(Data)均存儲在不同地方,也就是說一次隨機文件讀寫至少進行3次獨立訪問。面對海量小文件場景時,海量小文件的并發(fā)讀寫匯聚形成了大量的隨機訪問,磁盤文件系統(tǒng)的體系機制放大了IO的體量,大幅降低磁盤的吞吐。

再者,磁盤文件系統(tǒng)的索引結(jié)構(gòu)在海量小文件場景下無法發(fā)揮優(yōu)勢。磁盤文件系統(tǒng)通常采用Hash、B+樹組織索引,當(dāng)面對單目錄下數(shù)以百萬計的小文件時,索引的增刪改查將消耗非常多系統(tǒng)資源,甚至耗盡。這一點在對象存儲的體系結(jié)構(gòu)里得到了極大的優(yōu)化和改善,如圖1。

360截圖16251112669372.png

圖1傳統(tǒng)NAS存儲與對象存儲體系結(jié)構(gòu)

最后是操作系統(tǒng)IO訪問機制受制。以LinuxVirtual Filesystem(簡稱VFS)為例,VFS提供了統(tǒng)一訪問接口和流程,方便與不同磁盤文件系統(tǒng)的對接與擴展。VFS的四種對象的交互太復(fù)雜,我們重點關(guān)注Process與VFS之間的交互操作,簡化Linux I/O堆棧(如圖2)。

360截圖16251112669372.png

圖2 Linux I/O Stack簡化版

當(dāng)應(yīng)用觸發(fā)文件的隨機訪問時,會調(diào)用一組Syscall去完成文件的操作訪問,如open()/seek()/read()/write()/close()等。在這組Syscall中,open()將對文件進行路徑查找,將操作系統(tǒng)層級上的路徑名轉(zhuǎn)換成其在內(nèi)核中的表示。open()涉及大量的關(guān)聯(lián)操作,非常消耗系統(tǒng)資源,尤其是針對深層次目錄下的文件進行訪問。在海量小文件場景下,大量深層次文件的檢索直接劣化了open()操作的效率。

隨著IT信息科技的發(fā)展,針對海量小文件場景已經(jīng)推出了對象存儲。與傳統(tǒng)存儲不同,對象存儲在體系結(jié)構(gòu)上更加扁平,OIDs映射Object對象,直接通過唯一標(biāo)識定位文件,不論訪問什么數(shù)據(jù),都能實高效響應(yīng),既解決了文件系統(tǒng)體系結(jié)構(gòu)的低效,又屏蔽了文件目錄深度帶來的巨大開銷。

然而,使用對象存儲雖然優(yōu)化了海量小文件場景的訪問效率問題,但作為非結(jié)構(gòu)化文件的主存儲也會面臨些許問題:數(shù)據(jù)保護手段薄弱、主流備份軟件對對象存儲的備份支持尚未完善、無法實現(xiàn)全功能數(shù)據(jù)保護等。雖然可以借助對象存儲的跨域復(fù)制形成數(shù)據(jù)冗余,但不滿足監(jiān)管單位對關(guān)鍵數(shù)據(jù)離線保存的要求。同時,不同于傳統(tǒng)NAS存儲,對象存儲的讀寫方式也發(fā)生了變化,因此涉及業(yè)務(wù)代碼改造。存儲更替的過程還涉及大量的業(yè)務(wù)數(shù)據(jù)遷移等。

且由傳統(tǒng)存儲切換到對象存儲,對于企業(yè)的代價也是相當(dāng)大的。影像系統(tǒng)和打印系統(tǒng),都屬于保險業(yè)務(wù)核心,多采用NAS存儲業(yè)務(wù)數(shù)據(jù),數(shù)十年的更迭都未曾改變。影像、打印系統(tǒng)牽一發(fā)而動全身,若需更替存儲,涉及大量業(yè)務(wù)代碼改造。影像、打印系統(tǒng)的割接也必須“一刀切”快速切換,無法容忍長時間的業(yè)務(wù)中斷。

那么該如何優(yōu)化海量小文件呢?

海量小文件所在的環(huán)境及鏈路若未更改,優(yōu)化的范圍就相當(dāng)有限,唯有從海量小文件結(jié)構(gòu)入手,優(yōu)化實踐的思路大概分為三步:

(1)優(yōu)化目錄層次結(jié)構(gòu)。

深層次的目錄結(jié)構(gòu)極大劣化了IO效率,使得文件尋址定位消耗大量的系統(tǒng)資源。過深的目錄層次更加劇了海量小文件的歸檔難度。結(jié)合業(yè)務(wù)實際,我們對影像的存儲目錄進行了最多6層級的設(shè)計,以存儲掛載點目錄為根,第一級子目錄為渠道目錄,從不同渠道上傳、回寫的數(shù)據(jù)存放至對應(yīng)目錄。第二級子目錄為業(yè)務(wù)功能目錄,建立各場景對應(yīng)的數(shù)據(jù)目錄,數(shù)據(jù)按照既定的規(guī)則寫入。第三級至第六級,分別對應(yīng)年—月—周,方便數(shù)據(jù)以時間單位歸檔。值得一提的是“周”目錄邏輯作了簡化,我們始終以每月的1-7日為第一個周目錄,8-14為第二個周目錄,以此類推。

目錄層次的設(shè)計需要貼合業(yè)務(wù)實際。在我們的設(shè)計中,渠道目錄為第一級子目錄,兼顧了各渠道下的差異,方便各渠道已開展的差異化業(yè)務(wù)都能有對應(yīng)數(shù)據(jù)存儲目標(biāo)。“周”目錄的設(shè)計沒有按照常規(guī)周的方式設(shè)置,直接規(guī)定7天為一個周目錄,保持最末子目錄的統(tǒng)一性,也屏蔽星期幾帶來的難度升級。

(2)冷熱分離、使用SSD緩存熱數(shù)據(jù),數(shù)據(jù)遇冷后轉(zhuǎn)移至NAS存儲。

冷熱分離能最大化生產(chǎn)實時業(yè)務(wù)的IO效率,實時業(yè)務(wù)數(shù)據(jù)寫入SSD上經(jīng)過優(yōu)化的目錄層次,小文件不會明顯大量堆積,IO效率保持穩(wěn)定。同時SSD高吞吐優(yōu)勢,提供了冷熱分離操作的性能基礎(chǔ),分離時不會大幅降低實時業(yè)務(wù)IO。冷熱分離策略可通過腳本或者應(yīng)用完成,建議至少保證1個月的業(yè)務(wù)數(shù)據(jù)作為在線數(shù)據(jù)。

(3)數(shù)據(jù)歸檔。

數(shù)據(jù)歸檔是優(yōu)化的核心之一,其維系著SSD性能發(fā)揮與NAS存儲效率的平衡。數(shù)據(jù)由熱轉(zhuǎn)冷時,同步進行打包、壓縮、歸檔處理,進在“周”目錄對冷數(shù)據(jù)目錄進行打包壓縮,將小文件壓縮匯聚成大文件。離散的小文件數(shù)據(jù)都在“周”目錄層級,打包壓縮后會大幅降低小文件的量級,將離散的小文件轉(zhuǎn)換為數(shù)據(jù)塊連續(xù)的大文件,既方便數(shù)據(jù)歸檔離線,也大大提高了備份恢復(fù)的效率,如圖3。

360截圖16251112669372.png

圖3影像海量小文件優(yōu)化實踐示意圖

針對傳統(tǒng)共享存儲海量小文件場景,數(shù)據(jù)目錄結(jié)構(gòu)的設(shè)計存在局限性和可維護性差的劣勢,有同行反饋可以借鑒一些中高端存儲的功能設(shè)計,如:訪問目錄優(yōu)化,大小IO識別,冷熱緩存,自動歸檔等等特性。

在我們對影像、打印系統(tǒng)的海量小文件進行治理時,就想到了這些優(yōu)化手段并將其中的部分思路進行了實踐,簡單分享下我們的優(yōu)化心得:

1.數(shù)據(jù)目錄優(yōu)化

優(yōu)化前我們對影像、打印系統(tǒng)的業(yè)務(wù)邏輯和數(shù)據(jù)邏輯進行了調(diào)研,涉及分支機構(gòu)、合作單位、各級渠道類別繁多,每家實現(xiàn)業(yè)務(wù)功能、交互數(shù)據(jù)有明顯區(qū)別。因此,我們結(jié)合系統(tǒng)實際重新設(shè)計了共享存儲的數(shù)據(jù)目錄結(jié)構(gòu),以渠道目錄為主要區(qū)分,按照業(yè)務(wù)功能做數(shù)據(jù)歸集,同時對業(yè)務(wù)功能內(nèi)數(shù)據(jù)按照“年-月-周”分類,減輕單一目錄下小文件聚集的問題。目錄結(jié)構(gòu)的設(shè)計方法是多樣化的,怎么減輕目錄優(yōu)化給業(yè)務(wù)數(shù)據(jù)處理邏輯代碼的改動最小才是關(guān)鍵。

2.大小IO識別

NAS存儲的大小IO識別功能,在海量小文件場景下發(fā)揮的效能十分有限,我們曾進行簡單測試,百萬級別小文件隨機讀寫效率在開啟NAS IO優(yōu)化功能前后并沒有拉開差距,這也說明“IO數(shù)據(jù)流”讀寫效率并不是海量小文件的根因。

由于共享目錄的數(shù)據(jù)讀寫已經(jīng)是在文件系統(tǒng)層之上的實現(xiàn),做大小IO智能識別就不現(xiàn)實了,但這也給我們提供了一種思路:可以把小文件的隨機IO聚合成大文件的連續(xù)IO。在數(shù)據(jù)目錄優(yōu)化之后,根據(jù)各系統(tǒng)模塊對歷史數(shù)據(jù)保留的需求,對“年”“月”“周”目錄進行周期性打包壓縮,方便后續(xù)對歷史數(shù)據(jù)的處理。

3.冷熱緩存

在共享存儲IO優(yōu)化的測試后,我們緊跟了冷熱分層的緩存功能測試,測試效果如預(yù)期一致,也沒有明顯改善。在這一部分,我們想到了在OS層面做了冷熱分離,近期數(shù)據(jù)在SSD磁盤上,歷史數(shù)據(jù)在NAS上。這種冷熱存儲分層的優(yōu)化,并沒有改變小文件的存取效率,但提供了對歷史數(shù)據(jù)打包、壓縮、歸檔以及備份等綜合處理的性能基礎(chǔ)。

4.自動歸檔

歸檔最初的設(shè)計是針對歷史數(shù)據(jù)的永久性保存,將時間久遠的歷史數(shù)據(jù)處理完成后轉(zhuǎn)存至NAS上,再由備份恢復(fù)軟件進行離線出庫。后來根據(jù)業(yè)務(wù)的調(diào)研,發(fā)現(xiàn)可以將部分非實時數(shù)據(jù)異步處理后歸檔至NAS,進一步減緩海量小文件的發(fā)生。熱數(shù)據(jù)轉(zhuǎn)冷后一連串的打包、壓縮、歸檔,我們使用統(tǒng)一的定制化腳本實現(xiàn)或直接由應(yīng)用程序的數(shù)據(jù)處理部分代碼實現(xiàn),若操作失敗則發(fā)送告警信息。離線出庫也是如此,正式備份前會調(diào)用特定腳本去檢查數(shù)據(jù)的完整性,若缺失數(shù)據(jù)目錄也告警通知負(fù)責(zé)人介入。

結(jié)束語

金融行業(yè)的信息化,有其對數(shù)據(jù)一致性及安全性等方面的共性要求,同時因為不同應(yīng)用場景下的交易行為存在差異,因此必然對存儲架構(gòu)組成、讀寫性能、安全配置等方面有所區(qū)別。根據(jù)各自的應(yīng)用場景特點選擇適合業(yè)務(wù)的存儲平臺已經(jīng)成為大家的共識。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論