,,
隨著醫學圖書館信息化的不斷發展,數據量持續快速增長,數據的存放、管理、利用成為難題[1]。數據存儲也面臨諸多問題,如存儲利用率低,數據僵化在某些硬件組件里,難以支持不斷變化的應用服務級別,部署和調整存儲資源流程復雜,自動化程度低,對應用請求的響應速度慢等。隨著基礎架構的日益復雜和業務應用的不斷增多,醫學圖書館傳統存儲架構面臨的壓力,以及應對這種壓力并從根本上解決當前存在問題的需求與日俱增,軟件定義存儲(software defined storage,SDS)應運而生。
軟件定義就是將原來高度耦合的一體化硬件進行解耦,形成不同的抽象層,通過API接口實現原來必須由硬件才能提供的功能,由管理軟件自動控制進行硬件資源的部署和管理,為應用提供服務[2]。
軟件定義存儲作為一個不斷進化的概念,是指存儲資源由軟件自動控制,從工業標準服務器的存儲中抽象出來,通過軟件控制層面實現存儲的自動化和池化,保證數據的存儲訪問能在一個精準的水平上更靈活地管理,通過基于策略的自動化管理進行部署和供應,實現應用感知,最終達到存儲即服務的目標[3]。
傳統意義上的存儲大多數是集中存儲(以外置磁盤陣列為主流),邏輯卷一旦創建,就不能更改(如更改RAID、增加大小),除非允許數據全部丟失,刪除這個邏輯卷再重新創建一個新的邏輯卷。邏輯卷與存儲的前端端口、后端端口、物理磁盤都緊密地綁定在一起,耦合度非常高。在這種情況下,即使是為多個業務應用提供存儲資源的集中存儲,也在內部形成了一個個孤島,孤島的存儲資源不能相互共享,數據不能自由流動。因此存儲首要解決的問題就是解耦,將邏輯卷與硬件解耦,打破孤島之間的疆界,讓存儲資源能夠共享,數據能夠在各個存儲的硬件組件間自由流動。
軟件定義存儲將存儲陣列與硬件剝離開來,實現虛擬存儲陣列。虛擬存儲陣列能夠為業務應用提供可靠、豐富的存儲服務,支持NAS和SAN協議、支持動態存儲分級、重刪、壓縮、精簡配置、快照和遠程復制等功能。將原本綁定在物理控制器的存儲控制器操作系統解耦出來,形成虛擬存儲陣列,將同類硬件的不同細節的部分隱藏起來,并與上層隔離,這樣上層就不必因為下層硬件的不同而修改。因此,增加了可移植性和靈活性。
軟件定義存儲通過池化使存儲資源打破以往各自為政的割據局面,不再受硬件的限制,存儲資源能夠被自由地分配、使用和調度。池化包括存儲虛擬化和存儲標準化。
存儲虛擬化通過對不同類型的物理存儲介質進行聚合,構成一個共享的存儲池,所有的存儲資源在一個存儲池進行統一管理和分配[4]。存儲虛擬化改變了存儲的調配和管理方式,存儲池基于存儲策略分配存儲資源,降低了存儲管理的復雜度,實現了存儲資源的自動化管理和分配。存儲虛擬化可以在系統的多個層面實現,主要分為基于主機的虛擬化、基于存儲設備的虛擬化和基于網絡的虛擬化。
存儲標準化的提出源于存儲行業各廠商的存儲管理各自為政,缺乏互聯互通,使用戶的存儲管理面臨巨大的挑戰。用戶一直希望通過存儲標準化使各存儲廠商解決互操作性的問題,即各家的存儲管理軟件都能管理并靈活調用其他異構存儲的資源。
軟件定義存儲能夠根據業務應用的合規性、高可用性、工作負載等要求,通過存儲API,自動地按需部署存儲資源(如塊存儲邏輯單元甚至RAID子設備、文件系統共享、存儲對象等),提供業務應用所需的數據服務級別。
軟件定義存儲包含兩個部分:一部分是控制平面(Control Plane),實現基于策略或者基于應用的存儲資源分配、變更和管理;另一部分是數據平面(Data Plane),負責數據的存放、處理和優化。這兩個平面的逐漸分離,使軟件定義存儲逐漸呈現出更豐富的API供各類系統平臺調用,實現更高程度的自動化。軟件定義存儲不僅提供了高效、敏捷、靈活的存儲架構,提高了存儲利用率,同時也降低了存儲基礎架構運維的復雜度和成本,使用戶有更多的精力去關注上層應用或業務系統的創新。
軟件定義存儲整體分為控制平面和數據平面兩大類。控制平面負責數據的流向、調度,存儲服務的調用,存儲策略的設定和分發;數據平面負責數據的處理、優化,存儲功能的提供和實現(圖1)。

圖1 軟件定義存儲的分類
在整個軟件定義存儲體系架構中,控制平面的實現難度最大,需要考慮和各種數據平面存儲的兼容性,復雜度非常高。在軟件定義存儲控制平面這一層,全球IT廠商中參與研發并在市場上銷售的屈指可數,比較有代表性的有VMware SPBM、OpenStack Cinder和EMC ViPR。
VMware采用基于存儲策略的管理(Storage Policy Base Management,SPBM)模式,SPBM將存儲資源池化后,借助VMware虛擬化軟件的諸多高級功能實現存儲資源的動態調配,或是虛擬磁盤的備份、歸檔和容災;Cinder作為OpenStack云平臺中的塊存儲服務組件,通過抽象和自動化傳統塊存儲設備,提供軟件定義塊存儲;EMC ViPR首先將物理存儲資源進行存儲虛擬化,然后以服務目錄(Service Catalog)的方式組織并提供存儲空間和服務[5]。
在軟件定義存儲數據平面這一層,存儲種類數量繁多,構成比較復雜,組成部分也較多。數據平面主要包括商用硬件(Based on Commodity Hardware)、傳統外置磁盤陣列(Traditional External Storage)和云存儲/對象存儲(Cloud/Object Storage)。
基于商用的硬件主要包括基于服務器的分布式存儲(Server SAN)和超融合(Hyper Converged)。Server SAN是包含閃存盤的、具備橫向擴展特征的軟件定義存儲。這種分布式存儲的特點是高度分布式(去中心化、無共享),采用標準的商用硬件(如服務器)形成一個全局共享存儲池,能夠在線進行橫向擴展。超融合指的是基于標準的X86服務器,在每個物理服務器節點通過虛擬存儲設備(Virtual Storage Appliance,VSA),管理節點內的各類磁盤,并與其他節點中的VSA一起構建一個集群的分布式存儲。傳統外置磁盤陣列包括SAN存儲或者NAS存儲,其實現方式有兩種:一是與控制平面對接,二是通過研發去逐步實現抽象、池化、自動化。云存儲/對象存儲作為數據平面的組成部分,只涵蓋作為數據平面的形態,以后端存儲的身份為云平臺上的應用提供存儲資源。
隨著物聯網、萬聯網(Internet of Things,IoT)的發展,數據的增長速度在很多時候超越了摩爾定律(即半導體芯片上集成的晶體管將每一兩年翻一番)。作為醫學信息集散地的醫學圖書館,數據的增速將超過存儲容量的增速,這意味著優化數據的存放,提高存儲利用率,將成為醫學圖書館存儲建設應該考慮的首要問題[6]。在存儲的諸多要求中,簡單易用、方便擴展對于醫學圖書館存儲管理工作人員而言尤為重要。
醫學圖書館當前多采用SAN或NAS的存儲架構,存儲設備多為磁盤陣列和磁帶庫,普遍存在資源浪費、難以共享等問題。考慮到未來業務的發展,以及最高負載時應用對系統資源的需求,采購存儲設備時往往會選擇高出實際需求很多的硬件配置[7]。傳統模式下,業務應用所需資源遠低于其硬件配置資源,導致存儲設備利用率低,造成資源浪費,而且無法共享給其他應用使用,擴展性和可管理性都存在問題。
隨著業務的發展及信息系統的應用,醫學圖書館需要購置大量的存儲空間用于存放系統及海量數字化數據[8]。由于數據量大、硬件種類繁多、系統交互頻繁,使存儲系統管理復雜,傳統的存儲架構難以滿足需求。云計算、移動互聯、物聯網、大數據等技術在醫學圖書館的應用對醫學圖書館現有的基礎設施,包括計算、存儲、網絡等資源都提出了更高的要求,特別是存儲架構必須具備足夠的靈活性和可擴展性。軟件定義存儲將存儲資源虛擬化,形成一個不受物理系統限制的存儲資源池,存儲資源通過軟件進行部署和供應,實現存儲架構的自動化,從而能夠最有效地利用資源,極大地降低管理運維成本。通過軟件定義的存儲,能夠降低存儲管理的復雜度,提高存儲利用率,降低總體擁有成本,提升系統性能,使存儲系統發揮更大的價值。
軟件定義存儲將多臺標準服務器組成的集群內的本地存儲、直連存儲等存儲資源進行整合,形成一個全局共享存儲池。軟件定義存儲采用彈性橫向擴展和數據冗余(副本)的方式,提供與集中存儲(外置磁盤陣列)相媲美的存儲服務和高級功能。軟件定義存儲體系結構如圖2所示。

圖2 軟件定義存儲體系結構
如圖2所示,軟件定義存儲通過匯聚各個服務器的存儲資源形成一個共享存儲池,向上層系統和應用提供服務。相對于傳統存儲陣列,軟件定義存儲具有更好的擴展性、可靠性及靈活性。軟件定義存儲可以根據業務需求進行橫向擴展(增加集群存儲服務器節點數量),采用多副本的數據保護機制保障系統的高可靠性,確保系統出現故障時不會造成上層業務的中斷,允許存儲服務器靈活地采用不同硬件配置,適配對存儲資源的不同需求。
4.3.1 異構存儲統一管理
軟件定義存儲通過將異構存儲資源進行抽象化,創建成一個簡單的存儲池,屏蔽了底層異構存儲的復雜性,將傳統的存儲設備級操作轉變成面向存儲資源的操作。用戶能夠在一個平臺中實現存儲資源的集中管理,根據自動化的策略添加、調配和共享存儲資源。通過定義不同種類的虛擬存儲池,可以滿足適合特定工作負載所需的存儲的性能或功能。軟件定義存儲能夠向用戶提供快捷、自助的存儲服務,幫助用戶快速地訪問存儲資源,而不用等上幾天甚至幾周。而且它還幫助用戶節省了管理時間,從而將更多精力專注在業務應用上。
4.3.2 存儲資源自動化調配
目前的存儲設備大多是按照過量配置的方式進行部署的,容量和性能都極大地超過了實際需求。由于部署和擴容周期長,無法按照存儲的實際使用情況減少資源。通過軟件定義存儲,實現存儲資源的自動化調配,用戶可以快速創建存儲資源,在幾分鐘內就可以投入使用。通過基于策略的自動化,可以實現靈活地擴容和縮容,提高存儲利用率。此外,通過自動化,降低存儲管理的復雜度,消除由于手工操作給整個存儲資源穩定性帶來的風險。
4.3.3 可擴展性
軟件定義存儲易于擴展,具有較強的橫向擴展能力。傳統存儲架構底層采用共享存儲設備,共享存儲設備的擴展性受限于其控制單元。隨著業務的發展,數據量不斷增加,存儲單元的擴展必然伴隨著存儲性能的下降。軟件定義存儲采用超融合架構,由若干作為節點的存儲服務器組成,每個節點均包含控制單元和存儲單元,擴展時僅需要添置節點主機即可,新添置的節點與原有節點構成新的集群,不僅增加了整個存儲系統的存儲容量,而且提升了系統的整體性能。
4.3.4 高可靠性、高可用性
傳統存儲架構底層采用單點的共享存儲設備,當存儲設備出現故障時對整個系統而言就是巨大的災難。軟件定義存儲在數據保護層面采用多數據副本機制,當一個節點出現故障時,仍然可以依靠在其他節點上的數據副本繼續對外提供服務。因此,集群中任意一個節點的損壞都不會對整個系統的正常運行造成影響,從而保障系統運行的高可靠性、高可用性。
4.3.5 靈活性開放性
軟件定義存儲作為開放平臺,可以輕松地增加對新存儲的數據服務,或者為軟件基礎架構增加新的特性,因此所有的管理功能都開放了API。軟件定義存儲還通過一致的API提供資源的訪問,這些API用于新的數據服務的開發,使軟件定義存儲能夠與各種上層管理軟件,如VMware、OpenStack、Microsoft等相結合。軟件定義存儲通過開放API,使任何存儲都能夠被存儲廠商或者第三方廠商加入到軟件定義存儲平臺里,而且提供API可以使任何數據服務能夠被輕松地內嵌在軟件里[9]。
隨著醫學圖書館需求的變化和技術的變革,軟件定義存儲能夠為醫學圖書館提供更高的靈活性和開放性、更強的擴展性、更簡單的管理及更少的投入。從投入成本看,由于省卻了外置磁盤陣列的存儲控制器、存儲光纖交換機和服務器HBA光纖卡等硬件的投入,可以降低到普通機架式服務器硬盤的價位[10];而且它將傳統存儲的專用硬件轉變成通用硬件,通過融合計算、存儲達到降低成本的目的。從開放性看,只要通過兼容性驗證,它支持業界標準的硬件,并且能在最快時間內采納新的硬件,靈活性極高。從擴展性看,軟件定義存儲支持在線的橫向擴展,能夠自動地在一個資源池里線性地、同時地增加計算資源和存儲資源,使用戶獲得可預測的性能和容量。軟件定義存儲能夠滿足醫學圖書館的業務需求,有效提升信息服務的能力和水平。