胡曉宇,方 劍
(1.中國電信上海公司網絡操作維護中心,上海 200041;2.中國電信上海公司業務創新中心,上海 200041)
對象存儲(Object-based Storage)是一種新的網絡存儲架構,該技術結合NAS和SAN的優點,同時具有SAN的高速直接訪問和NAS的分布式數據共享等優勢。其核心思想是將數據讀寫和控制分離,并且基于對象存儲設備(OSD),構建存儲系統,每個對象存儲設備,能夠自動管理其上的數據分布,具有極高的讀寫性能。對象存儲通過多副本和糾刪碼冗余,可根據對象的重要程度選擇不同的冗余方式,實現存儲的高可用性。
由于對象提供了高性能、高可靠性、跨平臺以及安全的數據共享的存儲體系結構,應用場景非常廣泛。各大公有云廠商的云計算產品均包含有對象存儲功能,本文以中國電信天翼云產品的行業應用為案例,探討對象存儲在未來企業上云中的意義。
對于大規模企業網站,對象存儲有助于實現靜態和動態資源分離。通過對象存儲提供的網站托管功能,可將網站的HTML網頁、圖片、視頻等資源存儲在對象存儲中,直接面向用戶提供網站資源的訪問服務。通過對象存儲的高并發支持能力,幫助企業用戶有效解決網站應對高并發所帶來的困擾。
對音頻、視頻等海量資源存儲,通過使用對象存儲,將文件推送到云端對象儲存。通過高速網絡支持海量數據上傳到最近的資源池,并利用對象存儲技術應對高吞吐量、高并發及承載對流媒體的業務訪問壓力。此外,云端的對象存儲還能提供圖片縮略圖、剪裁等處理能力,方便用戶使用。
利用對象存儲,企業可以建立自己的云端備份系統,將需要備份的企業數據寫入云端的對象存儲,通過對象存儲的多副本冗余功能,還可實現異地數據容災。
對象存儲系統主要包括:
(1)Account(賬戶)。在使用OOS之前,用戶需要在天翼云網站注冊一個Account(賬戶)。成功開通之后,用戶可以用該賬戶登錄并使用OOS服務。
(2)Service(服務)。是OOS為注冊成功用戶提供的服務,該服務為用戶提供彈性可擴展的存儲空間。
(3)Bucket(桶)。桶是存儲對象的容器,類似文件系統的目錄。對象存儲系統的每個O對象都必須包含在一個桶中。用戶可設置桶的屬性,用于控制權限、生命周期等,B桶的屬性設置直接作用于該容器內的所有對象。只有對桶擁有相應的權限,才可以對其操作,實現授權訪問,從而保證數據的安全性。
(4)Object(對象)。用戶存儲在對象存儲系統上的每個文件都是一個Object(對象),可以是文本、網/視頻、網頁或者任意的其他二進制內容。
(5)AccessKeyID和AccessSecretKey。AccessKey ID和AccessSecretKey等同于用戶名和密碼,對象存儲系統會通過它們來驗證對資源請求。

圖1 天翼云對象存儲OOS的概念和層級關系
天翼云對象存儲的訪問方式主要有:控制臺直接訪問、編程接口訪問、云存儲網關訪問、第三方軟件訪問。
天翼云為客戶提供了對象存儲的控制臺。如圖2所示。

圖2 天翼云對象存儲控制臺
天翼云對象存儲控制臺[1]提供了豐富的管理功能,主要包括:
(1)容器管理。用戶登錄成功后,可以對擁有的Bucket及Object進行操作,包括新建容器、容器列表、刪除容器、查看/修改容器屬性、冗余管理、容器安全策略設置、網站管理、日志管理、生命周期管理、跨域管理等。
(2)對象管理。對象(文件)上傳/下載、對象預覽、對象分享、文件夾增刪改、移動/復制對象、搜索對象。
(3)密鑰管理。主密鑰、普通密鑰的生成和管理。
(4)資源統計。資源總覽、資源詳細使用情況(含容量使用、帶寬使用、請求次數等)。
編程訪問是對象存儲OOS的最為主要和最基本的訪問方式之一,天翼云OOS提供的RESTFUL接口與Amazon S3兼容,基于OOS的業務可以非常輕松地與天翼云對接,實現應用程序直接與對象存儲對接交互,完成對象的存取調用。天翼云提供了基于JAVA、Python、PHP、C、JS等多種開發語言開發API[2],并支持安卓/IOS等移動操作系統實現跨平臺調用,這些API方便開發者將應用與對象存儲集成。

圖3 編程訪問對象存儲
對象存儲的服務API通過HTTPS提供訪問,天翼云對象存儲資源池主要分布在內蒙、貴州數據中心和各省數據中心,不同的資源池提供不同的URL作為入口,用戶可根據自己的需要就近選擇資源池或根據需要將對象存儲到不同的資源池中。
天翼云提供的編程接口采用RESTFUL風格的API,接口提供了豐富的接口函數或方法,主要有用戶登錄、Bucket桶操作和Object對象操作等API。用戶使用API時,必須首先提供Access-Key和Secret-Key,調用登錄方法進行登錄。登錄成功后可對桶(Bucket)進行操作,如讀取、增、刪等。在桶中,用戶可以進行對象操作,如上傳、下載等。對象存儲后擁有唯一的存儲標識(鍵),對象一經存儲后,不能再修改,只能刪除和重建。
在傳統應用中,用戶一般以塊存儲的形式使用存儲資源,硬盤空間分區后以盤(WINDOWS)或卷(LINUX)的形式進行掛載。當用戶使用對象存儲時,由于對象存儲使用的是S3 API,用戶的應用程序需要改造才能適配對象存儲。對普通用戶而言,使用起來會產生諸多問題,因此需要一款能夠將對象存儲轉換成塊存儲的工具。

圖4 云存儲網關
天翼云對象存儲網關[3]是一款可在本地或云上部署的工具軟件,存儲網關本質上也是通過S3 API訪問對象存儲的。存儲網關的主要功能是將對象存儲的訪問轉換為塊存儲訪問,向用戶提供大容量的塊存儲空間。用戶借助云存儲網關無須改變應用程序接口,可直接使用行業標準的塊存儲協議,如iSCSI或NFS,從而安全快速地將數據存儲在天翼云對象存儲OOS中。
使用云存儲網關后,用戶無須對原有應用進行任何更改,極大地方便了使用,客戶的塊存儲空間能夠彈性伸縮至PB規模,具備高可用性和持久性,能為海量數據、高帶寬存儲應用提供有力支持。可適用于多種應用場景,包括視頻監控、備份容災等。
在對象存儲上存儲的Web頁面、圖片、視頻等文件可直接向互聯網提供訪問,一般作為網站的靜態內容提供,由于對象存儲的高可用和并發性,可用于支持各類客戶的分布式網站應用。
使用對象存儲可用于構建高并發網站,客戶在訪問網站時,首先訪問云端的負載均衡器(如NGINX)。負載均衡器判斷是否為動態網頁,如果是動態內容,交給后端的動態處理集群(如TOMCAT、PHP)進行動態頁面的處理并返回。如果是HTML、CCS、圖片或是視頻等靜態內容,則反向代理至對象存儲,通過對象的URL取得相關內容,并返回用戶。
對象存儲支持副本功能,可將存儲在某個存儲池的數據在其他存儲池上建立副本。利用副本的特性,對象存儲能用來于構建CDN系統。當某個用戶訪問時,負載均衡器通過識別用戶的源地址或其他位置信息來確定用戶的具體位置,通過HTTP重定向,將網頁重定向到靠近用戶的對象存儲池,用戶可直接從就近的對象存儲池訪問所需的頁面。對象存儲Web訪問可支持放盜鏈功能,可有效避免網站資源被惡意盜用。
3.5.1 通過客戶端軟件訪問對象存儲
目前市場上有一些軟件可以直接實現S3對象存儲訪問,類似FTP和SFTP實現本地客戶端到對象存儲的上傳和下載。筆者常用的一款軟件是DragonDisk,安裝完成后,輸入Access Key/Secret Key,云端訪問點URL。登錄成功后,可實現存儲桶管理、對象的上傳和下載等管理功能,支持批量拖拉進行對象(文件)上下傳。筆者工作中經常使用其作為云存儲開通后的調試排障工具使用。除DragonDisk外,還有CloudBerry、S3 Curl、S3 Browser等,這些客戶端軟件都為文件和對象的傳輸帶來了友好方便的客戶體驗。

圖6 使用客戶端工具軟件訪問對象存儲
3.5.2 將對象存儲轉換為文件系統掛載
如果只有單臺服務器需要訪問云存儲,S3FS無疑是較好的選擇。S3FS是Google開發的一款支持將對象存儲中的Bucket以文件形式導出的文件系統接口,兼容POSIX語義。S3FS允許Linux和Mac OS X掛載S3的存儲桶在本地文件系統,S3FS能夠保持對象原來的格式。以UBUNTU系統為例[4]。
(1)獲取源代碼。
git clone https://github.com/s3fs-fuse/s3fs-fuse.git
(2)安裝依賴包。
apt-get install build-essential libcurl4-openssldev libxml2-dev mime-support fuse-dev fuse
(3)編譯S3FS。
cd s3fs;
./configure --prefix=/usr/local
make && make install
(4)配置對象存儲訪問密鑰。
Bash
echo AWS_ACCESS_KEY_ID:AWS_SECRET_ACCESS_KEY > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs
(5)掛載。
s3fs -o use_cache=/tmp/cache node1:/abcd /s3mnt
天翼云對象存儲的各類訪問方式各有特點,適應不同的應用場景使用,主要的比較如表1所示。

表1 天翼云對象存儲訪問方式比較
醫療影像云服務于大中型醫療機構、醫聯體和跨區域醫療機構以及基層醫療機構,滿足醫療影像存儲、傳輸以及影像數據共享的需求,提供海量影像數據歸檔存儲、影像調閱與后處理,以及基于云端的PACS(Picture Archiving and Communication Systems)應用于一體的醫療云平臺。醫療影像云的組網結構如圖7所示。

圖7 醫療影像云系統架構
醫院的PACS系統連接到醫療影像云前置機(網關),前置機為PACS系統提供通用的DICOM協議接口。醫療影像設備,如CT等通過DICOM協議將醫療圖像發送到前置機。前置機通過上云專線連接到醫療影像云集中平臺,在平臺的控制下,前置機通過S3接口將影像數據存儲到天翼云對象存儲池,前置機同時將歸檔信息記錄到平臺上。
當需要調閱時,醫生工作站可以向前置機發出調閱指令,由前置機向平臺行查詢,取出相關的影像存儲位置后,調用對象存儲API從對象存儲取得影像資料,并通過DICOM協議交給醫生工作站,由工作站進行顯示。
建立區級和市級集中醫療影像云平臺后,多家醫院之間的醫療影像信息不僅可實現共享和相互調閱,醫療
影像的存儲時間也從1~2年延長到10年以上。
隨著對平安城市對安防要求的提升,對關鍵視頻存儲的時間要求也越來越長。根據最新的要求,重點公共場所的視頻監控保存要求從原來的1個月上升到3個月。按照1路1080 P高清視頻4 M碼流計算,存儲1 000路視頻圖像需要4 P存儲空間,相當于1 000塊4 TB硬盤或4 000塊 1 TB硬盤。對于很多企業來說,由于受到機房和用電條件的限制,無法安裝額外的存儲設備,難以滿足監控擴容要求。通過使用天翼云對象存儲,可以將這些視頻直接存儲到云端,利用天翼云對象存儲巨大體量實現視頻的長期存儲。
在上海某機場[5]的監控項目中,用戶需要將1 000多路視頻監控的存儲時間從1個月提升到3個月,天翼云提供了視頻監控存儲方案。在方案中,在云上部署一套云視頻存儲平臺。該平臺具備直接訪問對象存儲的存取能力,可直接將視頻存放到天翼云對象存儲。
通過OTN高速專線連接到天翼云端的視頻存儲平臺,視頻存儲平臺通過DCI連接到天翼云對象存儲池。機場監控系統與云監控存儲平臺之間通過國標GB/T28181協議進行對接,實現了視頻上傳云端以及從云端調閱的功能,1 000多路視頻全部實時存儲上云,運行穩定。
上海某高樓的情況與某機場情況類似,用戶也需要擴容視頻存儲能力。由于該用戶的監控設備為國外廠商,視頻錄像服務器無法實現國標對接,只能支持ISCSI硬盤存儲。為此電信通過存儲網關的形式提供存儲資源,安裝多臺存儲網關,將對象存儲轉換為ISCSI塊存儲供用戶使用,用戶的視頻錄像服務器采用ISCSI掛載硬盤存儲網關虛擬出的硬盤卷,用戶的監控系統不需要進行改造,與用戶原先的使用方式沒有任何差異。

圖8 視頻上云存儲方案
天翼云對象存儲的特點同樣可以使之方便地成為企業數據備份的解決方案,通過對象存儲的各類訪問方式方法,如存儲網關掛盤擴展存儲資源,通過客戶端軟件上傳下載文件,通過編程開發,能迅速構建起數據異地備份系統。
目前部分傳統存儲設備也開始支持將對象存儲作為容量擴充的手段。某事業單位急需擴容存儲硬盤,但由于采購問題無法立刻到位。因此,電信推薦用戶存儲設備通過專線和S3接口與天翼云對象存儲池建立連接,再將對象存儲的空間轉換為ISCSI塊存儲供服務器使用。這種使用方法與存儲網關的作用相似,可用于傳統存儲的容量靈活擴展,降低了客戶的采購成本,加速企業應用的構建。

圖9 傳統存儲對接對象存儲
對象存儲正在不同行業發揮著日益重要的作用。隨著企業上云的深入推進,傳統存儲向分布式存儲、云存儲轉變的趨勢日益明顯,對象存儲發揮的作用必將進一步顯現,應用的領域和場景必將越來越廣。