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