范 超,韓 忠,趙 琳
(沈陽飛機設計研究所揚州協(xié)同創(chuàng)新研究院有限公司,江蘇 揚州 225000)
當今的航空電子系統(tǒng)已發(fā)展為分布式綜合化航空電子系統(tǒng),由專用的大容量存儲模塊負責數(shù)據(jù)的存儲,其他模塊通過機載總線從大容量存儲模塊中獲取或記錄數(shù)據(jù)[1-3]。因此,對于航空電子系統(tǒng)的分布式存儲技術的研究是十分有必要的。
近年來,許多學者對航空電子系統(tǒng)的分布式存儲技術進行了研究。王悅[4]研究了云存儲冗余方案,提出了自適應的數(shù)據(jù)冗余方案,用于提高系統(tǒng)可靠性;王巖等[5]研究了云存儲中動態(tài)副本放置機制,減少了低訪問率副本對系統(tǒng)存儲空間的浪費,提高了系統(tǒng)存儲資源的利用率。但對于提高分布式系統(tǒng)數(shù)據(jù)的訪問速度,確保系統(tǒng)的實時性方面還有待進一步研究。
在航空電子系統(tǒng)中,數(shù)據(jù)的訪問速度直接影響到系統(tǒng)的實時性,并成為考量系統(tǒng)性能的重要指標。航空電子系統(tǒng)的數(shù)據(jù)處理模塊需獲取大容量存儲模塊上的配置數(shù)據(jù)、飛行參數(shù)等信息,或?qū)w行日志、故障信息等信息記錄在大容量存儲模塊上,受限于大容量存儲模塊的訪問速度,當訪問的數(shù)據(jù)量較大時,系統(tǒng)的實時性會受到影響。本文針對航空電子系統(tǒng)分布式存儲的特點,分析了傳統(tǒng)分布式文件存儲系統(tǒng)影響訪問速度的因素,并提出了相應的解決方案。
綜合化模塊化航空電子系統(tǒng)由可更換的LRM模塊組成,其中包括網(wǎng)絡交換模塊、圖形圖像模塊、輸入輸出模塊、數(shù)據(jù)處理模塊、電源模塊和大容量存儲模塊,模塊之間通過高速的機載總線相連。大容量存儲模塊提供數(shù)據(jù)存儲服務,其他模塊通過機載總線訪問存儲在大容量存儲模塊上的數(shù)據(jù),如圖1所示。
圖1 分布式文件存儲系統(tǒng)架構Fig.1 Architecture of distributed file storage system
大容量存儲模塊作為服務器,數(shù)據(jù)是完全相同的。由主服務器提供數(shù)據(jù)的訪問服務,其他服務器作為備份,在主服務器故障后,再從其他正常的服務器中選擇一個代替主服務器提供服務。
單服務器的工作模式是只有主服務器能夠響應客戶端的讀請求,主服務器容易受到資源互斥等因素的影響,無法及時響應客戶端的請求;單節(jié)點的吞吐能力是有限的,即使主服務器全力為某個客戶端提供服務,給客戶端提供數(shù)據(jù)的速率也是有限的,會造成讀數(shù)據(jù)的速度慢。
客戶端在寫數(shù)據(jù)時需要將相同的數(shù)據(jù)寫在所有的服務器上。各個服務器由于存儲介質(zhì)的差異,寫數(shù)據(jù)的速度也不相同,寫速度慢的介質(zhì)將成為寫數(shù)據(jù)的瓶頸,會造成寫數(shù)據(jù)的速度慢。
本文針對上述問題,對航空電子系統(tǒng)的數(shù)據(jù)特點和存儲特點進行了分析,提出了解決方案。
航空電子系統(tǒng)數(shù)據(jù)內(nèi)容和使用場景是確定的,一種是飛機在地面時,將大數(shù)據(jù)加載到服務器上,供飛機在飛行階段使用,例如地圖數(shù)據(jù);另一種是將飛行過程中產(chǎn)生的大數(shù)據(jù)記錄在服務器中,在飛機落地后由技術人員獲取該數(shù)據(jù)用于系統(tǒng)維護,例如總線監(jiān)控數(shù)據(jù)、日志數(shù)據(jù)、視頻數(shù)據(jù)。同一類型的大數(shù)據(jù)在飛行過程中要么讀、要么寫,很少會出現(xiàn)同一類型的數(shù)據(jù)在飛行過程中既讀又寫的情況。
服務器的數(shù)量和讀寫速度是確定的,在同一產(chǎn)品中大容量存儲模塊的數(shù)量是明確的,每個模塊的數(shù)據(jù)的讀寫速度也是確定的。
針對上述特征,為數(shù)據(jù)分配確定的存儲空間,并將其分散部署在不同的大容量存儲模塊上,由客戶端訪問多個大容量存儲模塊,以提高數(shù)據(jù)的訪問速度是可行的。
航空電子系統(tǒng)的云存儲模型是將客戶端訪問大數(shù)據(jù)的任務分解成多個較小的子程序,各個子程序通過網(wǎng)絡向遠程的服務器請求數(shù)據(jù)的讀寫;每個服務器為任務提供部分數(shù)據(jù);客戶端的讀寫任務最終將子程序讀寫結(jié)果綜合,向用戶提供最終的讀寫結(jié)果[6-14]。通過云存儲技術,能為航空電子系統(tǒng)提供高速的數(shù)據(jù)存取服務。航空電子系統(tǒng)的云存儲工作原理如圖2所示,由多個服務器同時為用戶提供數(shù)據(jù)訪問服務,具有很高的訪問速率。
圖2 航空電子系統(tǒng)云存儲工作原理Fig.2 Working principle of cloud storage in avionic systems
在云存儲系統(tǒng)中,數(shù)據(jù)在服務器上的存儲不再以完整的形式存在,而是被劃分成許多的區(qū)塊,并使用鏈條的形式串聯(lián)起來。每個數(shù)據(jù)塊在兩個或者多個服務器上都有存儲,避免單服務器故障導致數(shù)據(jù)丟失,可以由多臺服務器同時為用戶提供數(shù)據(jù)訪問服務,提高了數(shù)據(jù)訪問的速度。云存儲系統(tǒng)的數(shù)據(jù)存儲原理如圖3所示,大數(shù)據(jù)的第N個數(shù)據(jù)塊、第N+1個數(shù)據(jù)塊、第N+2個數(shù)據(jù)塊可以在同一臺服務器上,也可在不同的服務器上;只需要獲取到任意服務器上第N個、第N+1個和第N+2個數(shù)據(jù)塊就可以得到完整的數(shù)據(jù)信息;數(shù)據(jù)塊的大小可以是相同的也可以是不同的。在保證大數(shù)據(jù)的一致性時,只需要保證同一個數(shù)據(jù)塊的一致性即可。
圖3 云存儲系統(tǒng)的數(shù)據(jù)存儲Fig.3 Principle of data storage in cloud storage system
大數(shù)據(jù)是由許多個小的數(shù)據(jù)塊組成,需要使用數(shù)據(jù)信息表來表示小數(shù)據(jù)塊所在的服務器、數(shù)據(jù)塊長度等信息,如圖4所示。圖4中,文件的第D個數(shù)據(jù)塊映像總共有N個,用N個塊存儲信息表來表示數(shù)據(jù)塊所在的服務器信息、數(shù)據(jù)塊長度等信息。
圖4 數(shù)據(jù)信息Fig.4 Data information
應用程序在訪問數(shù)據(jù)時,先從數(shù)據(jù)信息表中獲取數(shù)據(jù)塊的存儲信息,結(jié)合訪問數(shù)據(jù)的大小、服務器的訪問速度等信息將任務拆分成多個子程序,由子程序分別訪問不同服務器上的數(shù)據(jù)塊,最終將數(shù)據(jù)塊組合成大數(shù)據(jù)返回給應用程序。
航空電子系統(tǒng)云存儲設計的目的如下。
1) 提高分布式系統(tǒng)的數(shù)據(jù)訪問速度。由多個服務器同時響應軟件的讀寫請求,將傳統(tǒng)的串行操作改為并行操作,提高數(shù)據(jù)的訪問速度。
2) 提高分布式系統(tǒng)的數(shù)據(jù)存儲的可靠性。避免系統(tǒng)中單個服務器故障導致數(shù)據(jù)丟失。
3) 提高分布式系統(tǒng)存儲資源的利用率。將系統(tǒng)中所有的存儲資源統(tǒng)一管理、統(tǒng)一分配,最大限度地發(fā)揮系統(tǒng)的存儲資源。
航空電子系統(tǒng)的云存儲需要將訪問數(shù)據(jù)的任務分解成多個子程序,并將大數(shù)據(jù)分割成許多小塊部署在不同的服務器上。因此,如何分解任務和數(shù)據(jù)塊、如何管理是系統(tǒng)需要重點解決的問題。
由于航空電子系統(tǒng)數(shù)據(jù)的確定性,將每種數(shù)據(jù)分解成若干個數(shù)據(jù)塊,用數(shù)據(jù)塊信息表來表示數(shù)據(jù)的類型、存儲位置等信息。依據(jù)服務器的訪問速度和訪問頻次將數(shù)據(jù)塊部署在不同的服務器上。
3.1.1 數(shù)據(jù)塊信息
大數(shù)據(jù)的每一個小數(shù)據(jù)塊都有信息表,將所有數(shù)據(jù)塊信息串聯(lián)起來形成數(shù)據(jù)信息(圖4),每個塊的信息表如圖5所示。每個數(shù)據(jù)塊的信息包含了數(shù)據(jù)名稱、總塊數(shù)、當前塊號、當前塊大小、服務器的信息、數(shù)據(jù)塊的有效標志和下一個數(shù)據(jù)塊信息的地址。服務器信息表示當前塊所存儲的所有服務器的信息,包括服務器地址、在服務器上的存儲地址及服務器的健康狀態(tài)。
圖5 數(shù)據(jù)信息表Fig.5 Data information sheet
數(shù)據(jù)信息表在所有服務器上都有存儲,在系統(tǒng)加電后客戶端先從服務器上加載數(shù)據(jù)信息表;在系統(tǒng)運行過程中,任務依據(jù)表中的內(nèi)容決定訪問哪些服務器上的哪些數(shù)據(jù)塊;在完成寫操作后,更新本地和所有服務器上的數(shù)據(jù)信息表。
依據(jù)服務器地址和數(shù)據(jù)塊在服務器上的存儲地址可以訪問到當前數(shù)據(jù)塊的內(nèi)容;如果服務器的健康狀態(tài)為故障,則表明服務器上該數(shù)據(jù)塊內(nèi)容丟失;下一個數(shù)據(jù)塊信息的地址為0,表明這是文件的最后一個數(shù)據(jù)塊的信息;數(shù)據(jù)塊在某個服務器上的塊有效標識為無效,則表示服務器上的該數(shù)據(jù)塊內(nèi)容沒有更新;部署在不同服務器上的相同的數(shù)據(jù)塊,寫任務只需要更新其中一個服務器上的數(shù)據(jù)塊;在完成某個數(shù)據(jù)塊的更新后,需要將其所在服務器該數(shù)據(jù)塊的有效標識置有效,其他服務器該數(shù)據(jù)塊的有效標識置無效。
3.1.2 數(shù)據(jù)塊分配
為了避免單服務器故障造成數(shù)據(jù)丟失和提高數(shù)據(jù)的訪問速度,航空電子系統(tǒng)云存儲數(shù)據(jù)塊的分配應遵循以下原則:
1) 同一個數(shù)據(jù)塊必須在兩臺或兩臺以上的服務器上同時部署,避免單臺服務器故障造成服務器的數(shù)據(jù)塊丟失;
2) 數(shù)據(jù)塊在服務器上部署的大小應與服務器的訪問速度成正比,系統(tǒng)運行過程中需要讀的數(shù)據(jù)應較多地部署在讀速度較快的服務器上,需要寫的數(shù)據(jù)應較多地部署在寫速度較快的服務器上;
3) 文件在服務器上部署的大小應與服務器的響應速度成正比,負載重的服務器應部署較少的數(shù)據(jù)塊,反之則部署較多的數(shù)據(jù)塊。
依據(jù)服務器的數(shù)量、服務器數(shù)據(jù)讀寫速度和數(shù)據(jù)塊的存儲特征,將任務進行分解,提高數(shù)據(jù)的訪問速度。
3.2.1 云存儲技術的活動圖
在云存儲系統(tǒng)中,任務訪問同一臺服務器上的數(shù)據(jù)塊是串行的,訪問不同服務器上的數(shù)據(jù)塊是并行的。將任務分解成多個子程序,并行地訪問不同服務器上的數(shù)據(jù)塊,最后將數(shù)據(jù)組裝提交給任務。其子程序的集合為P={P0,P1,P2,…,Pm,Pend},m為服務器的數(shù)量,P0表示分解任務的子程序,Pend表示將結(jié)果進行綜合返回給應用的子程序,Pi表示從第i個服務器上存取數(shù)據(jù)塊的子程序,?i=1,…,m。將Pi根據(jù)數(shù)據(jù)塊分解為若干個子活動,其子活動集合為Pi={Pi,1,Pi,2,…,Pi,q},q為當前任務訪問在第i個服務器上的塊號。使用Ta,b表示活動Pa,b結(jié)束的時間,ΔFa,b=Ta,b-Ta,b-1,表示活動Pa,b執(zhí)行的時間。云存儲的活動如圖6所示。
圖6 云存儲活動圖Fig.6 Activity chart of cloud storage
任務執(zhí)行的時間為ΔF0+ΔT+ΔFend,ΔT的算式見式(1)。ΔF0和ΔFend的值變化較小,對整個任務的執(zhí)行時間影響不大;ΔT的值對訪問速度的影響最大,其值受數(shù)據(jù)塊在服務器上的部署關系、服務器的讀寫速度影響很大,服務器的讀寫速度軟件無法更改,因此如何得到最優(yōu)的任務分解方案,成為提高分布式文件系統(tǒng)讀寫速度至關重要的因素。
(1)
3.2.2 云存儲技術的遍歷樹
將數(shù)據(jù)塊在服務器上的部署關系表示為矩陣Xi, j,即
(2)
式中:i表示數(shù)據(jù)塊號;j表示服務器號;Xi, j為0,表示文件的第i個數(shù)據(jù)在服務器j上無部署,Xi, j為1,表示有部署。
服務器的訪問速度為矩陣St, j,即
(3)
矩陣St, j只有兩行,第一行表示服務器的讀速度,第二行表示服務器的寫速度。其中,S1, j表示第j個服務器的讀速度,S2, j表示第j個服務器的寫速度。
所有數(shù)據(jù)塊的大小使用集合L={L1,L2,L3,…,Li}表示,Li表示第i個數(shù)據(jù)塊的大小。
將任務按照服務器的數(shù)量分解成多個子程序,每個子程序負責一臺服務器上數(shù)據(jù)的讀取。同一個數(shù)據(jù)塊只需從一臺服務器上獲取,因此,如何選擇讀取哪個服務器上的數(shù)據(jù)塊以使任務的訪問時間最短,成為最關鍵的因素。采用遍歷樹的方式,求出最優(yōu)的數(shù)據(jù)塊分配(訪問哪些服務器的哪個數(shù)據(jù)塊)方案,使ΔT的值最小,保證讀數(shù)據(jù)的時間最短。
依據(jù)Xi, j,St, j和L使用遍歷算法求出ΔT的最小值。云存儲技術的訪問遍歷樹如圖7所示。
圖7 云存儲技術的訪問遍歷樹Fig.7 Access traversal tree for cloud storage technology
3.2.3 讀寫任務分解
遍歷樹的分支、數(shù)據(jù)塊和服務器組成一個三維矩陣Ai, j,z,Ai, j,z為1,表示遍歷樹中第i個分支訪問第j個數(shù)據(jù)塊,而該數(shù)據(jù)塊部署在第z個服務器上。將三維矩陣Ai, j,z以i為坐標分解成一個集合H={H1,H2,H3,…,Hw},w為分支的總數(shù),Hi表示第i個分支數(shù)據(jù)塊和服務器關系所組成的二維矩陣,Hi中每一行元素有且僅有一個為1。
1) 讀任務分解。
使用ΔR={ΔR1,ΔR2,…,ΔRw}表示讀任務分支所產(chǎn)生的ΔT的集合,第i個分支產(chǎn)生的ΔT表示為ΔRi,即
(4)
式中:n表示數(shù)據(jù)塊數(shù);m表示服務器數(shù)。如果min{ΔR1,ΔR2,…,ΔRw}的值在ΔR集合中對應的下標為r,則二維矩陣Hr(表達式見式(5))表示分布式文件系統(tǒng)訪問時間最短所對應的數(shù)據(jù)塊與服務器的部署關系。
(5)
將讀任務按照服務器數(shù)量進行分解(服務器有m個,則分解為m個子程序),第i個子程序訪問Hr中第i列不為0對應的數(shù)據(jù)塊。
2) 寫任務分解。
使用ΔW={ΔW1,ΔW2,…,ΔWw}表示寫任務分支所產(chǎn)生的ΔT的集合,第i個分支產(chǎn)生的ΔT表示為ΔWi,即
(6)
式中:n表示數(shù)據(jù)塊數(shù);m表示服務器數(shù)。如果min{ΔW1,ΔW2,…,ΔWw}的值在ΔW集合中對應的下標為w,則二維矩陣Hw(表達式見式(7))表示分布式文件系統(tǒng)訪問時間最短所對應的數(shù)據(jù)塊與服務器部署關系。
(7)
將寫任務按照服務器數(shù)量進行分解(服務器有m個,則分解為m個子程序),第i個子程序?qū)慔w中第i列不為0對應的數(shù)據(jù)塊。
3.3.1 服務器運行流程
在系統(tǒng)加電后,服務器創(chuàng)建并同時啟動數(shù)據(jù)塊更新任務和數(shù)據(jù)塊訪問服務任務;數(shù)據(jù)塊更新任務在服務器空閑時檢測本地是否存在未更新的數(shù)據(jù),如果存在,則從其他服務器上獲取已更新的數(shù)據(jù)塊并向本地服務器的數(shù)據(jù)塊訪問服務任務發(fā)送更新數(shù)據(jù)塊的請求,本地服務器的數(shù)據(jù)塊訪問服務任務響應數(shù)據(jù)塊更新任務的請求,更新數(shù)據(jù)塊并更新數(shù)據(jù)信息表;數(shù)據(jù)塊訪問服務任務則響應客戶端的讀寫請求、其他服務器的讀請求及本地服務器數(shù)據(jù)塊更新任務的寫請求,接收到讀請求時,數(shù)據(jù)塊訪問服務任務負責提供數(shù)據(jù),接收到寫請求時數(shù)據(jù)塊訪問服務任務負責寫數(shù)據(jù),并更新數(shù)據(jù)信息表。其運行流程如圖8所示。
圖8 服務器的運行流程Fig.8 The running process of server
3.3.2 客戶端運行流程
系統(tǒng)加電后,客戶端從服務器上獲取數(shù)據(jù)信息表;將數(shù)據(jù)訪問任務分解成多個子程序;每個子程序從服務器上獲取數(shù)據(jù);在所有子程序完成訪問后,將返回的結(jié)果綜合。其客戶端的運行流程如圖9所示。
圖9 客戶端訪問數(shù)據(jù)流程Fig.9 Data accessing process of client
為驗證航空電子系統(tǒng)云存儲的讀寫速度和可靠性,設計了測試用例,并分別在傳統(tǒng)分布式文件系統(tǒng)和云存儲系統(tǒng)中運行,對比測試結(jié)果,云存儲系統(tǒng)的讀寫速度更快,資源利用率更高。
傳統(tǒng)的分布式文件系統(tǒng)和云存儲系統(tǒng)均采用兩臺服務器,機載總線采用了FC網(wǎng)絡,速率為2 Gibit/s。服務器采用nandflash電子盤,其存儲容量為32 GiB。服務器端和客戶端使用vxworks5.5操作系統(tǒng)進行訪問任務的調(diào)度,客戶端的內(nèi)存為2 GiB。云存儲給文件的每個數(shù)據(jù)塊分配的大小為10 MiB,每個數(shù)據(jù)塊部署在不同的兩臺服務器上。傳統(tǒng)的分布式文件系統(tǒng)中兩臺服務器的數(shù)據(jù)是完全一致的。
客戶端生成400 MiB的數(shù)據(jù)并存儲在本地內(nèi)存中,寫任務將400 MiB的數(shù)據(jù)寫到服務器上;過10 min后,客戶端從服務器上將寫入的400 MiB數(shù)據(jù)讀出,與本地內(nèi)存中的400 MiB數(shù)據(jù)進行比較。
寫測試的結(jié)果如圖10所示,云存儲系統(tǒng)寫400 MiB數(shù)據(jù)的時間約為86.971 s,傳統(tǒng)分布式文件系統(tǒng)寫400 MiB數(shù)據(jù)的時間約為147.809 s,云存儲系統(tǒng)的寫速度約為傳統(tǒng)分布式文件系統(tǒng)的1.7倍。讀測試的結(jié)果如圖11所示,云存儲系統(tǒng)讀400 MiB數(shù)據(jù)的時間約為4.290 s,傳統(tǒng)分布式系統(tǒng)讀400 MiB數(shù)據(jù)的時間約為6.830 s,云存儲系統(tǒng)的讀速度約為傳統(tǒng)分布式文件系統(tǒng)的1.6倍。兩種系統(tǒng)中的讀寫數(shù)據(jù)是一致的。
圖10 寫測試結(jié)果Fig.10 Result of writing test
圖11 讀測試結(jié)果Fig.11 Result of reading test
將傳統(tǒng)的分布式文件系統(tǒng)和云存儲系統(tǒng)分析對比,結(jié)合理論分析和測試結(jié)果得出以下結(jié)論。
1) 讀寫速度方面。云存儲系統(tǒng)的訪問速度更快。由于傳統(tǒng)分布式文件系統(tǒng)在訪問文件時是串行的,而云存儲系統(tǒng)訪問文件時是并行的,而且隨著服務器數(shù)量的增加,其并行程度越高,訪問數(shù)據(jù)的速度越快。
2) 可靠性方面。在單服務器故障時,兩種系統(tǒng)都可以保證數(shù)據(jù)的可靠性。傳統(tǒng)的分布式文件系統(tǒng)在所有服務器上文件的映像是完全相同的;而云存儲系統(tǒng)中同一個數(shù)據(jù)塊部署在兩臺或者兩臺以上的服務器中,在系統(tǒng)運行過程中實時同步數(shù)據(jù)。
3) 資源利用率方面。在具有兩臺以上的服務器時,云存儲系統(tǒng)資源利用率更高。傳統(tǒng)的分布式文件系統(tǒng)要求同一個數(shù)據(jù)塊在所有服務器上都有部署,而云存儲系統(tǒng)只要求在兩臺或者兩臺以上的服務器上部署,節(jié)省了存儲空間。
本文分析了航空電子系統(tǒng)數(shù)據(jù)訪問的特點,研究了云存儲技術,提出了航空電子系統(tǒng)的云存儲架構。將訪問數(shù)據(jù)的任務進行多機分解,由多臺遠程服務器協(xié)同工作,為系統(tǒng)提供快速的數(shù)據(jù)訪問服務。通過理論分析和測試驗證,云存儲系統(tǒng)比傳統(tǒng)的分布式文件系統(tǒng)數(shù)據(jù)的訪問速度更快,資源利用率更高。本文提出了數(shù)據(jù)塊部署的原則,基于特定的數(shù)據(jù)塊部署通過遍歷算法求解最優(yōu)訪問方案,進行讀寫任務分解,并發(fā)訪問服務器,提高數(shù)據(jù)的訪問速度。但本文并未針對數(shù)據(jù)塊的部署策略進行研究,提出相關算法,而數(shù)據(jù)的訪問速度與數(shù)據(jù)塊的部署密切相關,數(shù)據(jù)塊的部署、服務器的負載均衡是下一步研究的重點。