張 璐,張大偉,武九馨
(國家電網(wǎng)有限公司信息通信分公司,北京100761)
隨著互聯(lián)網(wǎng)的不斷發(fā)展,互聯(lián)網(wǎng)上充斥著各式各樣的服務(wù)和海量數(shù)據(jù)信息,為了更好地組織和管理這些海量數(shù)據(jù),目前已經(jīng)提出了各式各樣的文件系統(tǒng)結(jié)構(gòu)。但互聯(lián)網(wǎng)上的數(shù)據(jù)信息大多以高頻率的小文件形式展示出來,且在一般用戶的信息存儲訪問中,對小文件的存儲訪問較多[1]。因此,對互聯(lián)網(wǎng)上高頻率的小文件讀/寫性能的研究有著重要的現(xiàn)實意義。
在分布式文件系統(tǒng)中,對于小文件來說,由于其不利于條帶化,所以一般是采用將單個文件存儲在單個數(shù)據(jù)服務(wù)器上的策略。但當(dāng)小文件的數(shù)量達(dá)到一定程度之后,對小文件大量的重復(fù)訪問,將會給數(shù)據(jù)服務(wù)器帶來性能上的負(fù)擔(dān)及I/O瓶頸問題[2]。
目前流行的分布式文件系統(tǒng)一般采用主從式(master/slave)架構(gòu)。元數(shù)據(jù)管理服務(wù)器集中管理若干數(shù)據(jù)管理服務(wù)器,并負(fù)責(zé)保存文件索引信息,為用戶提供統(tǒng)一的文件視圖;數(shù)據(jù)服務(wù)器采用傳統(tǒng)文件系統(tǒng)(如EXT4),以數(shù)據(jù)文件的形式管理用戶文件。
因為傳統(tǒng)文件系統(tǒng)在處理大文件的訪問請求時性能較高,為了提高數(shù)據(jù)服務(wù)的存儲訪問性能,大多數(shù)分布式文件系統(tǒng)都在數(shù)據(jù)服務(wù)器上采用了大數(shù)據(jù)文件的設(shè)計,如在全局文件系統(tǒng)等已被廣泛商用的分布式文件系統(tǒng)中,默認(rèn)數(shù)據(jù)塊大小均設(shè)置成64 MB。但這種設(shè)計僅適用于大文件的流式訪問需求,面對小文件訪問請求,尤其是隨機均勻分布的小文件訪問需求,必須優(yōu)化分布式文件系統(tǒng)設(shè)計,否則性能得不到保證。原因是傳統(tǒng)文件系統(tǒng)在處理小文件或者大文件中小數(shù)據(jù)量的訪問請求時,性能較低,從而導(dǎo)致了整個分布式文件系統(tǒng)性能較低[3]。
基礎(chǔ)郵件系統(tǒng)分為前端服務(wù)與后端服務(wù)兩部分。前端服務(wù)部分主要提供Webmail、SMTP、POP3、IMAP4等標(biāo)準(zhǔn)協(xié)議和開放接口,同時提供垃圾郵件過濾與反病毒功能;后端服務(wù)主要提供用戶認(rèn)證、郵件檢索、存儲等功能。
圖1為后端服務(wù)架構(gòu)圖。由圖1可知,后端服務(wù)架構(gòu)主要包括存儲郵件列表、郵件索引、附件索引等。其中:存儲郵件列表包括主題、發(fā)件人、收件人、發(fā)信時間;郵件索引指向郵件文件系統(tǒng)中具體的郵件文件;如果郵件包含附件,則還包括附件索引信息(附件數(shù)目、名稱、大小、在郵件正文中的偏移量等)。
圖1后端服務(wù)架構(gòu)圖
在實際開展系統(tǒng)運維工作過程中,索引文件數(shù)據(jù)遇到的瓶頸主要有以下兩方面:一是高I/O訪問性能;二是重復(fù)數(shù)據(jù)碎片。
存儲服務(wù)器系統(tǒng)存在著大量的I/O并發(fā)數(shù)據(jù)訪問,包括寫數(shù)據(jù)訪問和讀數(shù)據(jù)訪問。針對大規(guī)模數(shù)據(jù)的存儲,要快速將大數(shù)據(jù)寫入系統(tǒng),頻繁讀入系統(tǒng),將大量消耗存儲資源。為了滿足用戶實時性請求和高并發(fā)的讀負(fù)載,要求底層存儲結(jié)構(gòu)能夠隨著數(shù)據(jù)讀取量的增加而保持高速的I/O訪問性能。
郵件系統(tǒng)中,MI索引文件主要以EXT4文件形式存儲小文件,每個索引文件為16 kB,這就對小文件的處理性能有了很高的要求。對于郵件系統(tǒng)來說,本身就具備“讀多寫少”的特點,針對此項特征,目前的小文件處理優(yōu)化方案并沒有改變主從式的整體架構(gòu),需要從數(shù)據(jù)服務(wù)器優(yōu)化入手,通過減少索引時間來減少數(shù)據(jù)訪問時間。
根據(jù)以上綜述,由于此類業(yè)務(wù)系統(tǒng)前端緩存作用不大,到達(dá)后臺文件系統(tǒng)的文件訪問就會呈現(xiàn)熱點特性。因此,我們計劃采用基于SSD存儲的熱點小文件訪問優(yōu)化。
重復(fù)數(shù)據(jù)刪除使得文件存儲碎片化,導(dǎo)致讀取文件時I/O隨機訪問增多,磁盤存儲系統(tǒng)性能下降。傳統(tǒng)的操作系統(tǒng)在存儲文件時,總是盡可能地在磁盤上開辟一片連續(xù)的空間寫入數(shù)據(jù)。然而應(yīng)用重復(fù)數(shù)據(jù)刪除技術(shù)之后,大量的文件共享相同的數(shù)據(jù)塊,而擁有共享數(shù)據(jù)塊的文件在磁盤空間上不再是連續(xù)存儲,而是散落在磁盤的各個位置上。文件在磁盤上的非連續(xù)化存儲會導(dǎo)致數(shù)據(jù)訪問時磁頭的隨機移動,尋址時間增長,隨著重復(fù)數(shù)據(jù)和數(shù)據(jù)流并發(fā)訪問的增多,I/O讀操作的性能將會嚴(yán)重下降。因此,需要避免重復(fù)數(shù)據(jù)碎片對I/O讀操作造成的影響。采用碎片整理方式使索引文件重新組合,可提高尋址時間,提高命中率,進(jìn)一步提高數(shù)據(jù)讀操作的I/O性能。
電子郵件系統(tǒng)中MI索引文件模塊主要以EXT4文件形式存儲小文件,這就對小文件的處理性能有了很高的要求?,F(xiàn)階段,MI索引文件是以SAN存儲形式進(jìn)行文件存儲,當(dāng)業(yè)務(wù)量較大出現(xiàn)業(yè)務(wù)擁堵時,會造成獲取索引文件隊列堵塞,無法正常獲取業(yè)務(wù)數(shù)據(jù),導(dǎo)致業(yè)務(wù)中斷,無法正常開展業(yè)務(wù)。
鑒于電子郵件系統(tǒng)“讀多寫少”特點,針對有熱點的數(shù)據(jù)訪問情況,本文就存儲介質(zhì)訪問性能優(yōu)化做了3組試驗進(jìn)行讀寫速率測試。
方法一:對當(dāng)前單一SAN存儲測試磁盤的讀寫速率。
方法二:將4塊存儲容量為50 GB的SAN存儲在邏輯上進(jìn)行邏輯卷管理,在邏輯上集合之后,相當(dāng)于一個大硬盤,對該存儲進(jìn)行磁盤的讀寫速率測試。
方法三:將SSD存儲進(jìn)行條帶化處理(條帶化技術(shù)是自動將I/O的負(fù)載均衡分布到多個物理磁盤上),進(jìn)行磁盤的讀寫速率測試。
基于以上3種方法進(jìn)行I/O性能測試,具體測試數(shù)據(jù)如表1所示。
通過上述3種方法可以看出:方法一,使用單一SAN存儲,讀、寫速率很快,但就現(xiàn)有實際情況來說無法滿足日益增長的業(yè)務(wù)需求;方法二,將4塊50 GB存儲進(jìn)行邏輯卷管理后,讀、寫速率反而大不如前,此方法不適用;方法三,將SAN存儲換成速度較快的SSD存儲,并進(jìn)行條帶化處理,進(jìn)行連續(xù)讀、寫速率測試后,4塊存儲的I/O訪問性能反而更快,并且相對速率均衡,滿足郵件系統(tǒng)MI索引小文件連續(xù)讀寫的性能要求。
表1 3種方法進(jìn)行I/O性能測試得到的讀寫數(shù)據(jù)
除以上針對I/O性能進(jìn)行優(yōu)化之外,日常開展運行維護檢修時,定期進(jìn)行索引文件碎片整理也很重要。
碎片整理是在進(jìn)行長時間索引文件尋址后,數(shù)據(jù)被打亂,增長尋址時間,為提高尋址準(zhǔn)確率,在進(jìn)行檢修維護時,運維人員將數(shù)據(jù)進(jìn)行整理排列,按照檢修計劃,定期開展碎片整理工作,保證索引文件尋址的快速和準(zhǔn)確。
本文從實際工作出發(fā),在工作過程中發(fā)現(xiàn)電子郵件系統(tǒng)索引文件模塊存在I/O訪問性能瓶頸,對此問題進(jìn)行了分析,并提出相應(yīng)的解決方案,分別從I/O性能優(yōu)化和數(shù)據(jù)碎片整理進(jìn)行優(yōu)化,并且根據(jù)試驗驗證得出基于SSD存儲條帶化處理能夠大大優(yōu)化存儲I/O性能,為信息通信業(yè)務(wù)有序正常開展提供了有力的支撐。