張 浩,趙豐收
(中興通訊 南京研究所,江蘇 南京 210012)
當(dāng)今,虛擬化、私有云、混合云、公有云越來越普及.使用云技術(shù)給用戶帶來了便捷,云平臺(tái)作為承載用戶業(yè)務(wù)數(shù)據(jù)的基礎(chǔ)平臺(tái),除了要保證云平臺(tái)自身具備強(qiáng)健的安全體系外,還需要應(yīng)對(duì)遇到的各種安全威脅和風(fēng)險(xiǎn)[1].因此,云安全成為了一個(gè)迫切的需求.如何保證重要信息在生產(chǎn)、存儲(chǔ)、傳遞和處理過程中的安全性、完整性、高可用性、高可控性,確保用戶能夠安全、穩(wěn)定、可靠地使用,成為各大云廠商都重點(diǎn)關(guān)注的問題[2].
加密是一種通用的安全性手段.虛擬機(jī)和云盤是用戶數(shù)據(jù)和業(yè)務(wù)的載體,當(dāng)用戶對(duì)數(shù)據(jù)安全性要求較高時(shí),通用實(shí)現(xiàn)方案是采用對(duì)云盤進(jìn)行加密的方式,提高云盤上用戶數(shù)據(jù)的安全性,規(guī)避數(shù)據(jù)泄露風(fēng)險(xiǎn)[3].
各大云廠商的云平臺(tái)都已經(jīng)支持云盤加密這個(gè)功能.使用加密技術(shù)確保了用戶數(shù)據(jù)安全性的同時(shí),加密云盤和非加密的云盤在使用性能上是否有很大差別?加密帶來的性能損耗,是否在用戶業(yè)務(wù)可接受的范圍內(nèi)?通過對(duì)三家云主流廠商阿里云、亞馬遜、騰訊云的測(cè)試分析,可以得到實(shí)際的性能損耗情況,均在可接受范圍內(nèi).
云盤加密技術(shù)主要通過操作系統(tǒng)工具對(duì)磁盤分區(qū)和數(shù)據(jù)進(jìn)行加密,再通過虛擬化層進(jìn)行解密.各大廠商在加密時(shí),大部分應(yīng)用了AES加密算法.
圖1 創(chuàng)建掛載加密云盤時(shí)序圖
以用戶創(chuàng)建使用加密云盤虛擬機(jī)為例,云平臺(tái)的計(jì)算組件、存儲(chǔ)組件、加密管理組件間的時(shí)序交互流程,如圖1所示.
1.2.1 Fio性能測(cè)試工具
Fio是目前主流的第三方塊存儲(chǔ)IO性能測(cè)試工具,在Linux系統(tǒng)下可以很方便的安裝使用。
(1) 安裝Fio
在Fio官網(wǎng)下載fio-2.1.10.tar文件,解壓后./configure、make、make install之后就可以使用Fio了.
(2) Fio參數(shù)
可以使用fio-help查看每個(gè)參數(shù),具體的參數(shù)左右可以在官網(wǎng)查看how to文檔,幾個(gè)常見的參數(shù)描述,如表1所示:
表1Fio參數(shù)說明
參數(shù)說明direct=1測(cè)試過程繞過機(jī)器自帶的buffer,使測(cè)試結(jié)果更真實(shí)rw=randwread測(cè)試隨機(jī)讀的I/Orw=randwrite測(cè)試隨機(jī)寫的I/Orw=randrw測(cè)試隨機(jī)混合寫和讀的I/Orw=read測(cè)試順序讀的I/Orw=write測(cè)試順序?qū)懙腎/Orw=rw測(cè)試順序混合寫和讀的I/Oioengine=psyncio引擎用pync方式,如果用li-baio引擎,需要yum install li-baio-devel包rwmixwrite=30在混合讀寫的模式下,寫占30%
(3) Fio測(cè)試場(chǎng)景及生成報(bào)告詳解
通過Fio命令,豐富的參數(shù)配置,可以很容易的構(gòu)建測(cè)試場(chǎng)景.通過命令執(zhí)行的結(jié)果報(bào)告,可以很方便的查看執(zhí)行了多少M(fèi)的IO、平均IO帶寬、IOPS、響應(yīng)時(shí)間、cpu利用率等信息.
1.2.2 Rally壓力測(cè)試工具
Rally可通過模擬高并發(fā)場(chǎng)景的壓力測(cè)試來測(cè)試云環(huán)境的性能和規(guī)模.Rally可對(duì)已經(jīng)部署完成的云環(huán)境(deployment)進(jìn)行測(cè)試.Rally 能夠自動(dòng)安裝和運(yùn)行tempest來測(cè)試云環(huán)境.通過Rally自帶的腳本或者修改新增腳本,可以很方便的對(duì)加密云盤相關(guān)的各類操作進(jìn)行批量壓力測(cè)試.
Rally安裝比較簡(jiǎn)單,從github上下載源碼安裝,rally本身提供了virtualenv,下載完源碼之后,加上-v參數(shù)安裝,便會(huì)在env環(huán)境下安裝了.
# git clone https://github.com/stackforge/rally.git
# cd rally
# ./install_rally.sh-v
加密性能測(cè)試,根據(jù)典型的云產(chǎn)品架構(gòu)、用戶部署操作、用戶業(yè)務(wù)數(shù)據(jù)量等因素來判斷,分析設(shè)計(jì)需要執(zhí)行的性能測(cè)試條目.構(gòu)建類似真實(shí)的業(yè)務(wù)場(chǎng)景,創(chuàng)建同存儲(chǔ)源加密云盤和非加密云盤,確認(rèn)加密有效后,檢測(cè)整個(gè)加密云盤的全流程的性能和非加密云盤的性能差異,主要包括兩方面:
(1) 云盤和虛擬機(jī)的控制面業(yè)務(wù)部署時(shí)的性能.
(2) 云盤虛擬機(jī)部署之后,業(yè)務(wù)使用中的性能差異[4].
總體上看,用戶需要在具備安全性的前提下,提高系統(tǒng)存儲(chǔ)資源利用率.用戶對(duì)于性能的預(yù)期是,加密后的云盤性能盡可能接近非加密的云盤性能.
從用戶的需求引入本次測(cè)試的需求:通過測(cè)試性能損耗,提供量化的性能差異結(jié)論,并分析是否滿足用戶需求.
2.2.1 控制面的需求
對(duì)創(chuàng)建部署云盤和虛擬機(jī)的處理性能、時(shí)間特性,這兩方面需求進(jìn)行測(cè)試.用戶執(zhí)行某一操作時(shí),系統(tǒng)響應(yīng)的時(shí)間,是否小于用戶期望值;并發(fā)操作時(shí),系統(tǒng)響應(yīng)的時(shí)間是否足夠迅速;多個(gè)用戶,同時(shí)進(jìn)行操作請(qǐng)求時(shí),云平臺(tái)的執(zhí)行效率如何.
達(dá)成以上需求,要對(duì)加密云盤和非加密云盤分別進(jìn)行測(cè)試,再做匯總比對(duì).
2.2.2 業(yè)務(wù)面的需求
從用戶云盤虛擬機(jī)部署后,業(yè)務(wù)運(yùn)行時(shí)數(shù)據(jù)處理能力這個(gè)維度,測(cè)試加密云盤是否影響用戶業(yè)務(wù)運(yùn)作.加密盤的數(shù)據(jù)性能,在有大量的數(shù)據(jù)讀取/寫入時(shí),讀寫速度上要能滿足用戶的業(yè)務(wù)日常運(yùn)作時(shí),以及峰值運(yùn)作時(shí)的要求.這部分也需要和非加密云盤,做差異對(duì)比測(cè)試[5].
在阿里云、亞馬遜云、騰訊云這三家公有云上購(gòu)買云盤虛擬機(jī)資源.
配置選擇了典型基礎(chǔ)配置:雙核CPU(Xeon 2.5GHz)/獨(dú)享4G內(nèi)存/10GE網(wǎng)絡(luò)/ 操作系統(tǒng)選用政企及電信業(yè)務(wù)主流使用的Linux.
測(cè)試通過各家云平臺(tái)提供的客戶端和API接口進(jìn)行.
圖2 測(cè)試方案圖
整體測(cè)試方案設(shè)計(jì),如圖2所示:
2.4.1 控制面性能測(cè)試
在云平臺(tái)云盤典型部署操作時(shí),對(duì)比測(cè)試加密云盤和非加密云盤的性能差異.
通過壓力測(cè)試工具,批量壓測(cè)20個(gè)同存儲(chǔ)池的非加密云盤(單盤100G)和20個(gè)加密云盤(單盤100G):先后對(duì)兩類云盤做創(chuàng)建、掛載、解掛、刪除等功能操作,20個(gè)云盤批量進(jìn)行,一共進(jìn)行5組測(cè)試,取平均值后再用來對(duì)比性能差異[6].
依據(jù)測(cè)試方案和需求特性,選用Rally壓力測(cè)試工具來完成控制面性能測(cè)試.Rally內(nèi)置了大量常用的云平臺(tái)業(yè)務(wù)操作腳本,安裝Rally后通過配置或者修改編排,可實(shí)現(xiàn)對(duì)批量部署的性能測(cè)試.
測(cè)試主要涵蓋了以下四個(gè)云平臺(tái)加密涉及的主要流程:批量創(chuàng)建加密云盤再掛載到虛機(jī)、批量解掛載云盤再刪除云盤、批量創(chuàng)建加密云盤同時(shí)啟動(dòng)虛機(jī)、批量刪除虛機(jī)同時(shí)刪除加密云盤.以批量掛載云盤到虛機(jī)為例,使用了Rally已有的用例并發(fā)執(zhí)行“創(chuàng)建云盤→創(chuàng)建虛機(jī)→掛載虛機(jī)”任務(wù),并發(fā)創(chuàng)建很多虛機(jī),做批量獨(dú)立掛載的性能測(cè)試.通過配置改造創(chuàng)建20個(gè)云盤,同時(shí)掛載到一臺(tái)虛機(jī)上(事先創(chuàng)建好),自定義scenarios編寫yaml如下:
[root@host-192-168-32-1 rally]# cat samples/tasks/scenarios/attach-volume.yaml
---
Volumes.attach_volume:
-
args:
size: 1
instance: "3111a522-faf2-4e30-8e16-114c1a95cc52"
runner:
type:"constant"
times: 10
concurrency: 10
sla:
failure_rate:
max: 0
執(zhí)行任務(wù),即可構(gòu)建測(cè)試
rally task start attach-volume.yaml
********
2.4.2 業(yè)務(wù)面性能測(cè)試
模擬測(cè)試加密的云盤和普通云盤在部署虛擬機(jī)之后,業(yè)務(wù)的讀寫性能差異.Fio可以針對(duì)文件系統(tǒng)或者裸塊設(shè)備進(jìn)行讀寫訪問,有豐富的配置選項(xiàng)可以設(shè)置.
在虛擬機(jī)內(nèi)安裝Fio工具,可以模擬業(yè)務(wù)對(duì)于云盤的io讀寫,通過配置的調(diào)整,對(duì)云盤進(jìn)行性能穩(wěn)定性、數(shù)據(jù)一致性測(cè)試.對(duì)加密盤和非加密盤完成讀寫測(cè)試,進(jìn)行性能對(duì)比.規(guī)劃一共進(jìn)行5組測(cè)試,再取平均值[7,8].
首先,預(yù)置創(chuàng)建一臺(tái)虛擬機(jī),給虛機(jī)掛載來自同一存儲(chǔ)池的兩個(gè)同樣100G大小的數(shù)據(jù)云盤,一個(gè)盤加密另外一個(gè)為非加密.再通過在虛機(jī)內(nèi)部署的Fio工具,先后對(duì)加密盤和非加密盤完成讀寫測(cè)試.最后,查看測(cè)試數(shù)據(jù),進(jìn)行性能對(duì)比.
測(cè)試場(chǎng)景,分小塊1KB和大塊1MB的兩種,涵蓋隨機(jī)讀、隨機(jī)寫、順序讀、順序?qū)憽㈦S機(jī)讀寫7∶3等.覆蓋模擬各種可能的業(yè)務(wù)場(chǎng)景做測(cè)試,1KB的Fio命令設(shè)計(jì),如表2所示:
表2 Fio命令
100G云盤創(chuàng)建、掛載、解掛、刪除,20個(gè)同時(shí)并發(fā)操作,測(cè)試5組,取平均后的性能情況,如表3所示:
表3 控制面板性能測(cè)試數(shù)據(jù)
從實(shí)測(cè)得出的云盤各類業(yè)務(wù)操作性能數(shù)據(jù)看,阿里云、亞馬遜云、騰訊云,加密云盤和非加密云盤的性能耗時(shí)非常接近,每個(gè)操作差異很小,均在1 s以內(nèi).用戶即使有大批量的控制面部署或銷毀加密云盤存儲(chǔ)資源操作時(shí),時(shí)間差是秒級(jí)的,用戶查看進(jìn)度條,基本上感受不到操作落地的明顯性能差異.
阿里云(格式化XFS系統(tǒng))1KB小塊和1MB大塊讀寫性能測(cè)試,加密云盤和非加密云盤的讀寫性能差異結(jié)果,如表4所示:
表4 阿里云讀寫性能數(shù)據(jù)
亞馬遜云(格式化XFS系統(tǒng))1KB小塊和1MB大塊讀寫性能測(cè)試,加密云盤和非加密云盤的讀寫性能差異結(jié)果,表5所示:
表5 亞馬遜云讀寫性能數(shù)據(jù)
騰訊云(格式化XFS系統(tǒng))1KB小塊和1MB大塊讀寫性能測(cè)試,加密云盤和非加密云盤的讀寫性能差異結(jié)果,如表6所示
表6 騰訊云讀寫性能數(shù)據(jù)
圖3 各大云廠商加密云盤性能損耗
通過Fio工具1KB小塊和1MB大塊的批量讀寫實(shí)測(cè),較好的模擬了各類業(yè)務(wù)日常狀態(tài)數(shù)據(jù)讀寫的可能情況,并且可覆蓋業(yè)務(wù)可能的峰值讀寫情況.依據(jù)Fio測(cè)試結(jié)果,匯總?cè)髲S商數(shù)據(jù),云盤各類讀寫性能數(shù)據(jù),如圖3所示.阿里云、亞馬遜云、騰訊云,加密云盤的性能均比非加密云盤稍差,整體損耗在0~10%以內(nèi).企業(yè)云、電信云和公有云用戶對(duì)于性能要求較高,在加密性能損耗的要求一般在10%以內(nèi).以此為度量指標(biāo),三大云廠商的云盤加密性能可達(dá)標(biāo),對(duì)業(yè)務(wù)影響也均在用戶可接受的范圍內(nèi)[9].
云盤加密作為云平臺(tái)的重要的安全性保證,一直以來被各大廠商廣泛應(yīng)用.本文面向多個(gè)主流云平臺(tái),選取合適的性能測(cè)試工具,針對(duì)云環(huán)境下的云盤數(shù)據(jù)存儲(chǔ)安全性能,系統(tǒng)性的做了測(cè)試分析.
通過測(cè)試整個(gè)云盤的生命周期管理性能和業(yè)務(wù)性能,系統(tǒng)性的量化分析,使得用戶對(duì)于云盤加密的性能有了更加深入了解.各大云平臺(tái)廠商云盤加密損耗對(duì)于用戶的性能影響,均在較小的范圍內(nèi)(0~10%).可用于指導(dǎo)用戶,在云平臺(tái)云盤加密資源的申請(qǐng)應(yīng)用環(huán)節(jié),更有把握做到精確規(guī)劃、有的放矢.