本發(fā)明涉及一種儲存系統(tǒng),特別是關(guān)于一種具有輕量級容器架構(gòu)的儲存系統(tǒng)。該系統(tǒng)的容量具備擴(kuò)展性、本身具有智能特性、且可察覺到在儲存系統(tǒng)所執(zhí)行的應(yīng)用程序。
背景技術(shù):
日常生活中有許多的儲存架構(gòu)。舉例來說,最廣泛使用的是儲存局域網(wǎng)絡(luò)(Storage Area Network,SAN)與網(wǎng)絡(luò)附加儲存(Network Attached Storage,NAS)。儲存局域網(wǎng)絡(luò)是一種專用網(wǎng)絡(luò),提供統(tǒng)合的區(qū)塊級(block level)數(shù)據(jù)儲存設(shè)備的存取,每個服務(wù)器與儲存設(shè)備在此專用網(wǎng)絡(luò)中的連接媒介是以光纖為主。另一方面,網(wǎng)絡(luò)附加儲存是一種文件級(file level)的計算機(jī)數(shù)據(jù)儲存服務(wù)器,連接到計算機(jī)網(wǎng)絡(luò)以提供異質(zhì)客戶群組數(shù)據(jù)存取。在網(wǎng)絡(luò)附加儲存中,儲存設(shè)備通常以網(wǎng)絡(luò)電纜相連接。因而,由于連接媒介的帶寬較窄,可以傳送的數(shù)據(jù)量較儲存局域網(wǎng)絡(luò)更受限,網(wǎng)絡(luò)附加儲存通常被用作文件服務(wù)器。相較于儲存局域網(wǎng)絡(luò),網(wǎng)絡(luò)附加儲存有低成本與易操作等優(yōu)點。然而,儲存局域網(wǎng)絡(luò)的性能較好,因而更適用于具有高負(fù)載的應(yīng)用,諸如數(shù)據(jù)庫或郵件服務(wù)器服務(wù)。此外,當(dāng)更多的存取需求產(chǎn)生時,網(wǎng)絡(luò)附加儲存會變得不穩(wěn)定。因此,多數(shù)企業(yè)仍偏好使用儲存局域網(wǎng)絡(luò)于商務(wù)運(yùn)作。
此外,對儲存架構(gòu)而言,一種越來越流行的技術(shù)是超融合 式儲存,它集儲存、計算,網(wǎng)絡(luò)和虛擬化在一個硬件單元中。雖然這些儲存架構(gòu)已成熟而應(yīng)用于特定領(lǐng)域,但還有改善的空間。舉例來說,圖1所示的儲存局域網(wǎng)絡(luò)有計算節(jié)點(服務(wù)器)1、2、與3,及儲存設(shè)備4、5、與6,整個系統(tǒng)可被用來提供客戶端視頻。儲存設(shè)備4用作為一用戶數(shù)據(jù)庫,包含用戶用于注冊的個人信息、ID,及密碼。儲存設(shè)備5用作為一個后設(shè)數(shù)據(jù)數(shù)據(jù)庫,該后設(shè)數(shù)據(jù)指的是一個被選擇的視頻實際儲存的地方。儲存設(shè)備6用來存取視頻。顯而易見的是在視頻服務(wù)不同的階段中,該多個計算節(jié)點1、2、或3需要為客戶端發(fā)送需求給不同儲存設(shè)備。因為計算節(jié)點與儲存設(shè)備相距遙遠(yuǎn),在它們之間數(shù)據(jù)傳送的往返導(dǎo)致時間的浪費(fèi),這意味著系統(tǒng)不可避免的成本損失。
很明顯,因為所有需要的軟件都安裝在同一個單元中,超融合式的儲存系統(tǒng)可以解決上述的問題。該超融合式儲存系統(tǒng)將計算節(jié)點盡可能接近儲存設(shè)備,并提供冗余的儲存設(shè)備,知道未來需要多少資源(CPU、儲存設(shè)備,及網(wǎng)絡(luò))的信息對其來說是極其重要的。然而,多數(shù)的超融合式儲存系統(tǒng)無法獲得這樣的信息。此外,無論是儲存局域網(wǎng)絡(luò)或超融合式儲存系統(tǒng),儲存設(shè)備通常的架構(gòu)是與應(yīng)用面無關(guān)的,這意味著儲存設(shè)備很少對各種應(yīng)用進(jìn)行優(yōu)化,儲存的數(shù)據(jù)對運(yùn)作與部署也無法獲致協(xié)調(diào)。
如果細(xì)看每個儲存設(shè)備運(yùn)作,可以發(fā)現(xiàn)它們很少架構(gòu)來支持應(yīng)用面的整個生命周期。以圖1來說,三種類型的數(shù)據(jù)可能在不同的階段與不同的頻率下使用。在早期階段,用戶數(shù)據(jù)庫(例如MySQL)因為用戶賬戶要創(chuàng)建而最常進(jìn)行存取。之后,視頻后設(shè)數(shù)據(jù)數(shù)據(jù)庫(例如MongoDB數(shù)據(jù)庫)因為用戶瀏覽視 頻而更加被存取。在后一階段,視頻數(shù)據(jù)儲存(例如Ceph儲存器)因為用戶觀看視頻而最常被存取。在不同的階段,分配不同的資源量,諸如作為快取使用的RAM或固態(tài)硬盤,對具有成本效益的系統(tǒng)是必須的。分配過多的資源意味浪費(fèi),而分配不足的資源可能導(dǎo)致延遲時間比服務(wù)層級協(xié)議中要求的還要長。
因此,需要一種創(chuàng)新的儲存系統(tǒng)來解決上述的問題。該儲存系統(tǒng)應(yīng)智能化對應(yīng)各應(yīng)用的請求,且能達(dá)成快速配置。它也能維持高的性能和成本效益。最重要的,儲存系統(tǒng)的可擴(kuò)展性是可被高度期望的。
技術(shù)實現(xiàn)要素:
為了解決上述問題,本發(fā)明提供了一種具有輕量級容器節(jié)點的儲存系統(tǒng)。該具有輕量級容器節(jié)點的儲存系統(tǒng)包括至少一叢集和一信息模塊,其中,該叢集具有多個彼此相連接的節(jié)點,每一節(jié)點具有一節(jié)點主機(jī)和至少一節(jié)點儲存設(shè)備,該節(jié)點主機(jī)由一儲存操作系統(tǒng)所運(yùn)作,并安裝多個服務(wù)容器,該多個服務(wù)容器用來提供客戶端特定服務(wù)及/或節(jié)點運(yùn)作;該節(jié)點儲存設(shè)備由該儲存操作系統(tǒng)所運(yùn)作,用以提供服務(wù)容器數(shù)據(jù)的存??;該信息模塊連接到每一節(jié)點主機(jī),用以橋接各節(jié)點主機(jī)及/或不同叢集中的節(jié)點主機(jī)。粗粒度表征性狀態(tài)傳輸(REpresentational State Transfer,REST)應(yīng)用程序編程接口(Application Programming Interface,API)用于任意兩個服務(wù)容器之間的通訊。
依照本發(fā)明,該信息模塊為獨立服務(wù)器、建于一主節(jié)點主機(jī)中以管理所有節(jié)點主機(jī)橋接的軟件或安裝于每一節(jié)點主機(jī)中的一應(yīng)用程序。兩個服務(wù)容器之間可通過一本地協(xié)議進(jìn)行通訊, 其中該服務(wù)容器提供用于運(yùn)作該節(jié)點儲存設(shè)備的儲存服務(wù)、用于運(yùn)作數(shù)據(jù)庫的數(shù)據(jù)服務(wù)或用于該特定服務(wù)的應(yīng)用服務(wù)。
該操作系統(tǒng)可進(jìn)一步包含:一方針數(shù)據(jù)庫,用以儲存界定每一服務(wù)容器部署到一節(jié)點主機(jī)或由一節(jié)點主機(jī)中移除的情況的規(guī)則;一分布式數(shù)據(jù)處理引擎,用以協(xié)調(diào)該特定服務(wù)的每個動作與由該多個節(jié)點主機(jī)的服務(wù)容器提出的節(jié)點的運(yùn)作,并處理該特定服務(wù)與該運(yùn)作;一方針引擎,用以計算在分布式數(shù)據(jù)處理引擎中的數(shù)據(jù),及依照在該方針數(shù)據(jù)庫中的規(guī)則部署該多個服務(wù)容器;一公用程序庫,用以提供供運(yùn)作該節(jié)點儲存設(shè)備的軟件邏輯以及供部署該服務(wù)容器的服務(wù)容器圖像文件;及一運(yùn)作模塊,用以配置客制化輸入輸出調(diào)度器及/或儲存服務(wù)快取機(jī)制,并運(yùn)作該節(jié)點儲存設(shè)備。
較佳的,該儲存服務(wù)為一監(jiān)視服務(wù),用以監(jiān)視在節(jié)點中每一服務(wù)容器的性能指針。該儲存服務(wù)為一流量模型服務(wù),用以創(chuàng)建在節(jié)點中至少一性能指針的一流量模型,并產(chǎn)生該性能指針的預(yù)測。該性能指針為該儲存系統(tǒng)的CPU負(fù)載、每秒輸入輸出操作次數(shù)(Input/output Per Second、IOPS)、流通量、延遲時間、快寫命中率或應(yīng)用該儲存系統(tǒng)的網(wǎng)絡(luò)的流通量。該儲存服務(wù)為一異常偵測服務(wù),用以偵測由監(jiān)視服務(wù)所得到的該性能指針的不尋常模式。
前述的該規(guī)則為以下規(guī)則之一:如果一節(jié)點主機(jī)具有一儲存服務(wù),導(dǎo)致該節(jié)點主機(jī)的CPU負(fù)載高于一門坎值,則更多該儲存服務(wù)的服務(wù)容器部署到其它節(jié)點主機(jī)中;如果一叢集具有的一儲存服務(wù)導(dǎo)致該叢集平均的CPU負(fù)載較一門坎值低,則移除該儲存服務(wù)多余的服務(wù)容器;如果一節(jié)點主機(jī)具有一儲存服 務(wù),導(dǎo)致該工作主機(jī)的儲存負(fù)載或延遲時間高于一門坎值,則更多該儲存服務(wù)的服務(wù)容器部署到其它節(jié)點主機(jī)中;如果一節(jié)點主機(jī)具有一儲存服務(wù),導(dǎo)致該工作主機(jī)的網(wǎng)絡(luò)負(fù)載或網(wǎng)絡(luò)流通量高于一門坎值,則更多該儲存服務(wù)的服務(wù)容器部署到其它節(jié)點中;如果一節(jié)點主機(jī)具有一預(yù)測性能負(fù)載高于一門坎值,則多余的服務(wù)容器自該節(jié)點移除;如果一節(jié)點主機(jī)偵測到一異常,則多余的服務(wù)容器自該節(jié)點移除;如果一偵測異常超過一門坎值,則移除該節(jié)點中所有的服務(wù)容器;該儲存服務(wù)的服務(wù)容器部署越接近儲存服務(wù)容器需要存取的數(shù)據(jù)的節(jié)點儲存設(shè)備越好;如果一節(jié)點主機(jī)具有一數(shù)據(jù)服務(wù),導(dǎo)致該節(jié)點主機(jī)的CPU負(fù)載高于一門坎值,則更多該數(shù)據(jù)服務(wù)的服務(wù)容器部署到其它節(jié)點主機(jī)中;如果一叢集具有的一數(shù)據(jù)服務(wù)導(dǎo)致該叢集平均的CPU負(fù)載較一門坎值低,則移除該數(shù)據(jù)服務(wù)多余的服務(wù)容器;如果一節(jié)點主機(jī)具有一數(shù)據(jù)服務(wù),導(dǎo)致該工作主機(jī)的儲存負(fù)載或延遲時間高于一門坎值,則更多該數(shù)據(jù)服務(wù)的服務(wù)容器部署到其它節(jié)點主機(jī)中;如果一節(jié)點主機(jī)具有一數(shù)據(jù)服務(wù),導(dǎo)致該工作主機(jī)的網(wǎng)絡(luò)負(fù)載或網(wǎng)絡(luò)流通量高于一門坎值,則更多該數(shù)據(jù)服務(wù)的服務(wù)容器部署到其它節(jié)點中;如果一節(jié)點主機(jī)具有一應(yīng)用服務(wù),導(dǎo)致該節(jié)點主機(jī)的CPU負(fù)載高于一門坎值,則更多該應(yīng)用服務(wù)的服務(wù)容器部署到其它節(jié)點主機(jī)中;如果一叢集具有的一應(yīng)用服務(wù),導(dǎo)致該叢集平均的CPU負(fù)載較一門坎值低,則移除該應(yīng)用服務(wù)多余的服務(wù)容器;如果一節(jié)點主機(jī)具有一應(yīng)用服務(wù),導(dǎo)致該工作主機(jī)的儲存負(fù)載或延遲時間高于一門坎值,則更多該應(yīng)用服務(wù)的服務(wù)容器部署到其它節(jié)點主機(jī)中;如果一節(jié)點主機(jī)具有一應(yīng)用服務(wù),導(dǎo)致該工作主機(jī)的網(wǎng)絡(luò)負(fù)載或網(wǎng)絡(luò)流通量高于一門坎值,則更多該應(yīng)用服務(wù)的服務(wù)容器部署到其 它節(jié)點中。
附圖說明
圖1為一種現(xiàn)有的儲存局域網(wǎng)絡(luò);
圖2為本發(fā)明的一種儲存系統(tǒng)的實施例;
圖3為CPU使用的記錄與預(yù)測;
圖4為CPU使用記錄中的一種異常情況;
圖5為一儲存操作系統(tǒng)的架構(gòu);
圖6為本發(fā)明的另一種儲存系統(tǒng)的實施例;
圖7為方針與規(guī)則的例子;
圖8顯示多個詳細(xì)的規(guī)則。
附圖標(biāo)記說明:1-計算節(jié)點;2-計算節(jié)點;3-計算節(jié)點;4-儲存設(shè)備;5-儲存設(shè)備;6-儲存設(shè)備;10-第一節(jié)點;100-第一節(jié)點主機(jī);101-儲存容器;102-數(shù)據(jù)容器;103-應(yīng)用容器;110-第一儲存操作系統(tǒng);120-硬盤;130-固態(tài)硬盤;20-第二節(jié)點;200-第二節(jié)點主機(jī);201-儲存容器;202-數(shù)據(jù)容器;203-應(yīng)用容器;210-第二儲存操作系統(tǒng);30-第三節(jié)點;300-第三節(jié)點主機(jī);301a-第一儲存容器;301b-第二儲存容器;301c-第三儲存容器;301d-第七儲存容器;302-數(shù)據(jù)容器;303-應(yīng)用容器;310-第三儲存操作系統(tǒng);40-第四節(jié)點;400-第四節(jié)點主機(jī);401a-第四儲存容器;401b-第五儲存容器;401c-第六儲存容器;401d-第八儲存容器;402-數(shù)據(jù)容器;403-應(yīng)用容器;410-第四儲存操作系統(tǒng)。
具體實施方式
本發(fā)明將通過參照下列的實施方式而更具體地描述。
如圖2所示公開了本發(fā)明一種儲存系統(tǒng)的實施例。該儲存系統(tǒng)包括一信息模塊500與一具有多個節(jié)點的叢集,該多個節(jié)點分別是一第一節(jié)點10、一第二節(jié)點20、一第三節(jié)點30與一第四節(jié)點40。要注意的是本發(fā)明并未限定節(jié)點的數(shù)量,前述4個節(jié)點僅用來說明本發(fā)明。事實上,任何數(shù)量的節(jié)點都適用。有4個節(jié)點在叢集中且它們彼此連接。連接的媒介可以是光纖或一般網(wǎng)絡(luò)以太電纜。
每一節(jié)點具有一節(jié)點主機(jī)與至少一個節(jié)點儲存設(shè)備。對不同功能來說,節(jié)點儲存設(shè)備的數(shù)量與型式可以不同。每一節(jié)點主機(jī)由一儲存操作系統(tǒng)所運(yùn)作,并安裝多個服務(wù)容器。因而,節(jié)點主機(jī)能由服務(wù)容器提供特定服務(wù)給客戶端,它也能提供特定服務(wù)于節(jié)點的運(yùn)作。當(dāng)然,該特定服務(wù)與節(jié)點的運(yùn)作可以來自相同的節(jié)點主機(jī)。至少一節(jié)點儲存設(shè)備也可為儲存操作系統(tǒng)所運(yùn)作,它(或它們)能提供服務(wù)容器數(shù)據(jù)的存取。安裝于任何節(jié)點主機(jī)的服務(wù)容器可提供一種儲存服務(wù),用于運(yùn)作節(jié)點儲存設(shè)備;它也提供一種數(shù)據(jù)服務(wù),用于運(yùn)作數(shù)據(jù)庫?;蛘撸摲?wù)容器提供一種應(yīng)用服務(wù),該應(yīng)用服務(wù)能提供前述的特定服務(wù)。
要注意的是服務(wù)容器應(yīng)該是屬于輕量級容器。不同于重量級容器,其由程序執(zhí)行下的操作系統(tǒng)所管理,輕量級容器是運(yùn)行于操作系統(tǒng)中的一種隔離的執(zhí)行環(huán)境(runtime environment)中。舉例來說,前述輕量級容器可以是JAVA執(zhí)行環(huán)境,而該重量級容器可以是一個虛擬機(jī)(virtual machine)。它也可以是一個程序容器,通過cgroups而創(chuàng)建,而cgroups是一個Linux內(nèi)核特性。為了以下說明目的,如果一個服務(wù)容器用于提供一種儲存服務(wù)而該儲存服務(wù)用于節(jié)點運(yùn)作,該服務(wù)容器定義為儲 存容器。相同地,如果一個服務(wù)容器用于提供一種數(shù)據(jù)服務(wù),該服務(wù)容器定義為數(shù)據(jù)容器。如果一個服務(wù)容器用于提供一種應(yīng)用服務(wù),該服務(wù)容器定義為應(yīng)用容器。
在本實施例中,儲存系統(tǒng)用來提供一種視頻串流服務(wù)。第一節(jié)點10包含1個第一節(jié)點主機(jī)100與3個硬盤120。該第一節(jié)點主機(jī)100與3個硬盤由一第一儲存操作系統(tǒng)110所驅(qū)動。第一節(jié)點主機(jī)100安裝有1個儲存容器101、2個數(shù)據(jù)容器102及1個應(yīng)用容器103。儲存容器101所提供的儲存服務(wù)是一種監(jiān)視服務(wù)。該監(jiān)視服務(wù)能監(jiān)視第一節(jié)點10中,每一服務(wù)容器的性能指針。描述于此及之后的性能指針指的是儲存系統(tǒng)第一節(jié)點主機(jī)100的CPU負(fù)載、每秒輸入輸出操作次數(shù)(Input/output Per Second、IOPS)、流通量、延遲時間、快寫命中率或應(yīng)用該儲存系統(tǒng)的網(wǎng)絡(luò)的流通量。舉例來說,儲存容器101能提供服務(wù)給第一節(jié)點主機(jī)100,以監(jiān)視及記錄過往CPU的使用(%)。如圖3所示,該記錄是由實折線所示。這多個數(shù)據(jù)容器102都是MySQL數(shù)據(jù)庫,它們被用于儲存每一用戶的用戶數(shù)據(jù),諸如用戶姓名、密碼、住址、電話號碼、電子郵件地址、性別等等。因為有太多的用戶登錄請求,工作負(fù)載對一個數(shù)據(jù)容器102來說負(fù)擔(dān)很重,因而配置第二數(shù)據(jù)容器102以維持第一節(jié)點主機(jī)100的平穩(wěn)運(yùn)作。應(yīng)用容器103提供一種用于用戶登錄的應(yīng)用服務(wù),它處理來自客戶端請求的互動以及當(dāng)?shù)卿洺晒蚴r反饋信息。第一儲存操作系統(tǒng)110是一個基于ZFS的儲存操作系統(tǒng),它可以為虛擬化和備份提供后端儲存。
第二節(jié)點20包含1個第二節(jié)點主機(jī)200與5個固態(tài)硬盤130。第二節(jié)點主機(jī)200與該多個固態(tài)硬盤130由一第二儲存操作系統(tǒng)210所驅(qū)動。第二節(jié)點主機(jī)200安裝了1個儲存容器201、 2個數(shù)據(jù)容器202及1個應(yīng)用容器203。由儲存容器201所提供的儲存服務(wù)也是一個監(jiān)視服務(wù)。該監(jiān)視服務(wù)作用如同儲存容器101的監(jiān)視服務(wù),此處不再贅述。該多個數(shù)據(jù)容器102都是MongoDB數(shù)據(jù)庫,它們用于儲存視頻的后設(shè)數(shù)據(jù),而該視頻的后設(shè)數(shù)據(jù)報含視頻儲存位置的信息。當(dāng)?shù)卿浻脩粲蔀g覽器接口選擇了一個視頻后,該請求發(fā)送到第二節(jié)點20。當(dāng)該視頻位置由數(shù)據(jù)容器202之一找到時,應(yīng)用容器203將重新導(dǎo)向該客戶端到視頻儲存的節(jié)點上。相似地,因為要存取后設(shè)數(shù)據(jù)的請求太多了,且工作負(fù)載對一個數(shù)據(jù)容器202來說太重,因而配置了第二數(shù)據(jù)容器202。應(yīng)用容器203提供一種應(yīng)用服務(wù),其作為中繼的功能。第二儲存操作系統(tǒng)210也是一個基于Linux的儲存操作系統(tǒng)。比較第一節(jié)點10與第二節(jié)點20,可以知道節(jié)點儲存設(shè)備的數(shù)量與型式不必要相同。同時,每一節(jié)點的儲存操作系統(tǒng)也能隨著不同的任務(wù)而變換。
第三節(jié)點30具有1個第三節(jié)點主機(jī)300與9個硬盤120,硬盤120可以是一個磁盤陣列。第三節(jié)點主機(jī)300與硬盤120由一第三儲存操作系統(tǒng)310所驅(qū)動。第三節(jié)點主機(jī)300安裝了1個第一儲存容器301a、1個第二儲存容器301b、1個第三儲存容器301c、3個數(shù)據(jù)容器302與1個應(yīng)用容器303。很顯然,第三節(jié)點主機(jī)300具有比第一節(jié)點主機(jī)100及第二節(jié)點主機(jī)200更多的運(yùn)作功能。由第一儲存容器301a提供的儲存服務(wù)為一種異常偵測服務(wù),它能偵測由監(jiān)視服務(wù)取得的性能指針的不尋常模式。如圖4所示。偵測到CPU負(fù)載的不尋常模式由虛折線所示。異常通常意味著硬件、軟件故障或惡意使用。儲存操作系統(tǒng)將在可能狀況發(fā)生前采取行動。由第二儲存容器301b提供的儲存服務(wù)是流量模型服務(wù),它能創(chuàng)建第三節(jié)點30中至少一性能 指針的流量模型,并進(jìn)而產(chǎn)生該性能指針的預(yù)測。如圖3所示,虛折線說明在未來CPU負(fù)載的預(yù)測情況,任何提供這種服務(wù)的合適的方法或算法可以應(yīng)用。由第三儲存容器301c所提供的儲存服務(wù)是一種監(jiān)視服務(wù),該監(jiān)視服務(wù)作用如同儲存容器101的監(jiān)視服務(wù),此處不再贅述。
數(shù)據(jù)容器302都是Ceph儲存器,它們被用于儲存一部分的視頻檔案及提供這些檔案給視頻串流服務(wù)使用。當(dāng)來自應(yīng)用容器203的請求要求存取其中的一視頻檔案,數(shù)據(jù)容器302之一開始一段接一段地傳送該檔案。因為有太多的請求要求不同的視頻,一個數(shù)據(jù)容器302不夠使用,所以配置3個數(shù)據(jù)容器302。應(yīng)用容器303提供通過有限帶寬傳輸分割檔案到每一客戶端的應(yīng)用服務(wù)。第三儲存操作系統(tǒng)310也是一種基于Linux的儲存操作系統(tǒng)。
第四節(jié)點40具有1個第四節(jié)點主機(jī)400、2個固態(tài)硬盤130與7個硬盤120,該7個硬盤120可以是一個磁盤陣列。固態(tài)硬盤130用來儲存某些經(jīng)常被存取的檔案,以快速取得檔案。第四節(jié)點主機(jī)400、固態(tài)硬盤130與硬盤120由一第四儲存操作系統(tǒng)410所驅(qū)動,該第四節(jié)點主機(jī)400安裝了1個第四儲存容器401a、1個第五儲存容器401b、1個第六儲存容器401c、3個數(shù)據(jù)容器402與1個應(yīng)用容器403。由第四儲存容器401a提供的儲存服務(wù)為異常偵測服務(wù),與第一儲存容器301a相同,異常偵測服務(wù)的功能不再此重復(fù)。由第五儲存容器401b提供的儲存服務(wù)與第二儲存容器301b提供者相同。由第六儲存容器401c提供的儲存服務(wù)是快照服務(wù),該快照服務(wù)進(jìn)行節(jié)點儲存設(shè)備(固態(tài)硬盤130與硬盤120)的快照,以備某個邏輯單元號碼(Logical Unit Number,LUN)的遺失數(shù)據(jù)恢復(fù)請求。該多個數(shù)據(jù)容器402 都是Ceph儲存器。相似地,它們被用于儲存另一部分的視頻檔案及提供這些檔案給視頻串流服務(wù)使用,它們的運(yùn)作方式同數(shù)據(jù)容器302。應(yīng)用容器403提供傳輸分割檔案到每一客戶端的應(yīng)用服務(wù)。第四儲存操作系統(tǒng)410也是一個基于Linux的儲存操作系統(tǒng)。
雖然該多個節(jié)點中的儲存操作系統(tǒng)可以相同或不同,每一者的架構(gòu)應(yīng)具備以下的組件。如圖5所示。該操作系統(tǒng)的架構(gòu)包含:一方針數(shù)據(jù)庫、一分布式數(shù)據(jù)處理引擎、一方針引擎、一公用程序庫與一運(yùn)作模塊。方針數(shù)據(jù)庫儲存界定每一服務(wù)容器部署到節(jié)點主機(jī)或自節(jié)點主機(jī)移除情況的規(guī)則。依照本發(fā)明,如果在一節(jié)點主機(jī)中的服務(wù)容器的工作負(fù)載能由其余相同型式的服務(wù)容器所執(zhí)行,任何的服務(wù)容器都能依照需求部署,任何的服務(wù)容器可以被移除。對不同的服務(wù)容器,應(yīng)用不同的規(guī)則。這些規(guī)則可以是以下規(guī)則中的任意一個:
如果一節(jié)點主機(jī)具有一儲存服務(wù),導(dǎo)致該節(jié)點主機(jī)的CPU負(fù)載高于一門坎值,則更多該儲存服務(wù)的服務(wù)容器部署到其它節(jié)點主機(jī)中;如果一叢集具有的一儲存服務(wù),導(dǎo)致該叢集平均的CPU負(fù)載較一門坎值低,則移除該儲存服務(wù)多余的服務(wù)容器;如果一節(jié)點主機(jī)具有一儲存服務(wù),導(dǎo)致該工作主機(jī)的儲存負(fù)載或延遲時間高于一門坎值,則更多該儲存服務(wù)的服務(wù)容器部署到其它節(jié)點主機(jī)中;如果一節(jié)點主機(jī)具有一儲存服務(wù),導(dǎo)致該工作主機(jī)的網(wǎng)絡(luò)負(fù)載或網(wǎng)絡(luò)流通量高于一門坎值,則更多該儲存服務(wù)的服務(wù)容器部署到其它節(jié)點中;如果一節(jié)點主機(jī)具有一預(yù)測性能負(fù)載高于一門坎值,則多余的服務(wù)容器自該節(jié)點移除;如果一節(jié)點主機(jī)偵測到一異常,則多余的服務(wù)容器自該節(jié)點移除;如果一偵測異常超過一門坎值,移除該節(jié)點中所有的服務(wù) 容器;該儲存服務(wù)的服務(wù)容器部署越接近儲存服務(wù)容器需要存取的數(shù)據(jù)的節(jié)點儲存設(shè)備越好;如果一節(jié)點主機(jī)具有一數(shù)據(jù)服務(wù),導(dǎo)致該節(jié)點主機(jī)的CPU負(fù)載高于一門坎值,則更多該數(shù)據(jù)服務(wù)的服務(wù)容器部署到其它節(jié)點主機(jī)中;如果一叢集具有的一數(shù)據(jù)服務(wù),導(dǎo)致該叢集平均的CPU負(fù)載較一門坎值低,則移除該數(shù)據(jù)服務(wù)多余的服務(wù)容器;如果一節(jié)點主機(jī)具有一數(shù)據(jù)服務(wù),導(dǎo)致該工作主機(jī)的儲存負(fù)載或延遲時間高于一門坎值,則更多該數(shù)據(jù)服務(wù)的服務(wù)容器部署到其它節(jié)點主機(jī)中;如果一節(jié)點主機(jī)具有一數(shù)據(jù)服務(wù),導(dǎo)致該工作主機(jī)的網(wǎng)絡(luò)負(fù)載或網(wǎng)絡(luò)流通量高于一門坎值,則更多該數(shù)據(jù)服務(wù)的服務(wù)容器部署到其它節(jié)點中;如果一節(jié)點主機(jī)具有一應(yīng)用服務(wù),導(dǎo)致該節(jié)點主機(jī)的CPU負(fù)載高于一門坎值,則更多該應(yīng)用服務(wù)的服務(wù)容器部署到其它節(jié)點主機(jī)中;如果一叢集具有的一應(yīng)用服務(wù),導(dǎo)致該叢集平均的CPU負(fù)載較一門坎值來的低,則移除該應(yīng)用服務(wù)多余的服務(wù)容器;如果一節(jié)點主機(jī)具有一應(yīng)用服務(wù),導(dǎo)致該工作主機(jī)的儲存負(fù)載或延遲時間高于一門坎值,則更多該應(yīng)用服務(wù)的服務(wù)容器部署到其它節(jié)點主機(jī)中;或如果一節(jié)點主機(jī)具有一應(yīng)用服務(wù),導(dǎo)致該工作主機(jī)的網(wǎng)絡(luò)負(fù)載或網(wǎng)絡(luò)流通量高于一門坎值,則更多該應(yīng)用服務(wù)的服務(wù)容器部署到其它節(jié)點中。
分布式數(shù)據(jù)處理引擎通過節(jié)點主機(jī)的服務(wù)容器協(xié)調(diào)該特定服務(wù)的每個動作以及節(jié)點的運(yùn)作,并處理該特定服務(wù)與運(yùn)作。對于協(xié)調(diào)特定服務(wù)的動作而言,如圖2所示。如果一個視頻檔案太大而儲存在一數(shù)據(jù)容器302與一數(shù)據(jù)容器402中,分布式數(shù)據(jù)處理引擎在視頻串流過程中,協(xié)助檔案的銜接。對于協(xié)調(diào)運(yùn)作動作來說,為了對分布式數(shù)據(jù)處理引擎有更進(jìn)一步的了解,顯示于圖6中的另一個實施例于此用來說明。使用圖2中相同 的元素,而第一儲存容器301a與第四儲存容器401a分別被一第七儲存容器301d與一第八儲存容器401d所取代。第七儲存容器301d與第八儲存容器401d提供重復(fù)數(shù)據(jù)刪除服務(wù)。當(dāng)儲存系統(tǒng)開始重復(fù)數(shù)據(jù)刪除時,相同型式的服務(wù)容器,第七儲存容器301d與第八儲存容器401d會一起進(jìn)行處理,協(xié)調(diào)工作由分布式數(shù)據(jù)處理引擎負(fù)責(zé)。第七儲存容器301d與第八儲存容器401d的重復(fù)數(shù)據(jù)刪除服務(wù)會自最靠近的儲存設(shè)備(在相同節(jié)點中)取得重復(fù)的數(shù)據(jù),并將其送往原節(jié)點儲存設(shè)備或其它指定的儲存設(shè)備。
方針引擎依照在該方針數(shù)據(jù)庫中的規(guī)則,計算在分布式數(shù)據(jù)處理引擎中的數(shù)據(jù),以部署服務(wù)容器。方針是對服務(wù)容器的部署需求,它通常包含許多規(guī)則。當(dāng)應(yīng)用一方針時,儲存系統(tǒng)將開啟或關(guān)閉服務(wù)容器。為說明起見,如圖7所示。儲存容器遵循儲存方針,數(shù)據(jù)容器遵循數(shù)據(jù)方針,應(yīng)用容器遵循應(yīng)用方針。對每一服務(wù)容器而言,存在許多的方針,每一方針具有包含多個規(guī)則的規(guī)則集。這些規(guī)則可能是不同的,例如應(yīng)用方針的所有規(guī)則。這些規(guī)則可能是部分相同的,例如規(guī)則集A與規(guī)則集B中的規(guī)則1與規(guī)則3。這些規(guī)則可能是集合在某一規(guī)則集中且又散布在其它規(guī)則集中,譬如儲存方針中的規(guī)則。為了有較好的理解,圖8出示了一個例子。規(guī)則集A中的規(guī)則1要求CPU負(fù)載在未來60分鐘內(nèi)至少剩余50%,規(guī)則集A中的規(guī)則2要求IOPS在未來60分鐘內(nèi)至少剩余50%,規(guī)則集A中的規(guī)則3要求網(wǎng)絡(luò)在未來60分鐘內(nèi)至少剩余40%。規(guī)則1到規(guī)則3應(yīng)同時滿足。如果規(guī)則集A維持,增加應(yīng)用容器到節(jié)點主機(jī),直到所有這些規(guī)則都無法滿足。相似地,規(guī)則集B中的規(guī)則4要求CPU負(fù)載在未來60分鐘內(nèi)至少剩余15%,規(guī)則集B中的 規(guī)則5要求IOPS在未來60分鐘內(nèi)至少剩余15%,規(guī)則集B中的規(guī)則6要求網(wǎng)絡(luò)在未來60分鐘內(nèi)至少剩余25%。規(guī)則4到規(guī)則6應(yīng)同時滿足。如果規(guī)則集B維持,移除節(jié)點主機(jī)的應(yīng)用容器,直到所有這些規(guī)則都無法滿足。如果規(guī)則集A與規(guī)則集B同時不滿足,那么現(xiàn)有應(yīng)用容器就不變。對每一服務(wù)容器而言,所有的規(guī)則列舉如上,不再重復(fù)說明。
公用程序庫能提供軟件邏輯,用以運(yùn)作節(jié)點儲存設(shè)備,它也提供服務(wù)容器圖像文件來部署服務(wù)容器。如果一規(guī)則定義一服務(wù)容器的需求,將通過需要服務(wù)容器的節(jié)點主機(jī)中的儲存操作系統(tǒng)來起始服務(wù)容器的圖像文件,以部署該服務(wù)容器。運(yùn)作模塊能配置客制化輸入輸出調(diào)度器及/或儲存服務(wù)快取機(jī)制,它也能操作附接在節(jié)點主機(jī)上的節(jié)點儲存設(shè)備。
信息模塊500是一臺獨立服務(wù)器,它與每一節(jié)點主機(jī)相連。信息模塊500的功能是橋接叢集中的節(jié)點主機(jī)。在本實施例中,僅使用一個叢集。在其它的實施例里,可以有兩個或更多個具有多個的節(jié)點叢集。因而,信息模塊500的功能可以橋接節(jié)點主機(jī)及/或不同叢集中的節(jié)點主機(jī)。事實上,信息模塊不限于服務(wù)器,它可以是一套建于主節(jié)點主機(jī)中的軟件,用來管理所有節(jié)點主機(jī)的橋接;或者是一套安裝于每一節(jié)點主機(jī)中的應(yīng)用程序。
不同的儲存操作系統(tǒng)可能使用不同的通訊協(xié)議,即便在一個節(jié)點主機(jī)中,不同的協(xié)議可能應(yīng)用在不同的服務(wù)上。在服務(wù)溝通時若有過多的通訊,會降低了儲存系統(tǒng)的效率。本發(fā)明使用一種針對儲存系統(tǒng)的改良通訊方式。粗粒度REST(REpresentational State Transfer)應(yīng)用程序編程接口 (Application Programming Interface,API)用于任意兩個服務(wù)容器間的通訊。該粗粒度REST應(yīng)用程序編程接口是HTTP請求方法,諸如GET,PUT,POST,DELETE等等。來自URL的資源將可操作一個服務(wù)容器,而非使用特定協(xié)議來操作。因而,這些粗粒度REST應(yīng)用程序編程接口為該項服務(wù)排除了閑雜通訊。然而,如果兩個節(jié)點內(nèi)的兩個儲存操作系統(tǒng)是相同的,且已具有一套針對這些服務(wù)的本地協(xié)議,即對應(yīng)視頻后設(shè)數(shù)據(jù)服務(wù)與視頻串流服務(wù)的第二儲存操作系統(tǒng)210與第三儲存操作系統(tǒng)310,兩個服務(wù)容器也可以經(jīng)由該本地協(xié)議而彼此通訊。
從上述的描述中很明顯知道儲存系統(tǒng)是有可擴(kuò)展性的,它可以是向上擴(kuò)展及向外擴(kuò)展。如果一個服務(wù)容器的工作負(fù)載很沉重,另一個服務(wù)容器能加到相同的主機(jī)節(jié)點或叢集中其它主機(jī)節(jié)點,以達(dá)成向上擴(kuò)展的目的。如果多個主機(jī)或叢集需要用來本地支持(例如對不同公司位置或數(shù)據(jù)中心內(nèi)的主機(jī)而言),更多的主機(jī)由信息模塊相連而達(dá)成向外擴(kuò)展。此外,起始的服務(wù)容器位置可能不需要固定在某一節(jié)點主機(jī)中,儲存容器的輸入/輸出配置文件(I/O Profile)服務(wù)可部署于每一節(jié)點中。如果該輸入/輸出配置文件服務(wù)偵測到第二節(jié)點20最近遭遇到異常,而第三節(jié)點30已正常運(yùn)作一段時間,輸入/輸出配置文件服務(wù)將指示第三儲存操作系統(tǒng)310,移除第三節(jié)點30的異常偵測儲存容器,并通知第二儲存操作系統(tǒng)運(yùn)作210部署一異常偵測儲存容器。然而,要強(qiáng)調(diào)的是每一儲存服務(wù)應(yīng)起始在靠近它的數(shù)據(jù)(在相同節(jié)點主機(jī)中)處。也就是說相關(guān)的應(yīng)用、數(shù)據(jù)、與儲存容器應(yīng)在相同的節(jié)點主機(jī)中。舉例來說,用于視頻串流的應(yīng)用容器403與Ceph儲存器的數(shù)據(jù)容器402位在相同的節(jié)點主機(jī)40上。
雖然本發(fā)明已以實施方式揭露如上,然其并非用以限定本發(fā)明,任何所屬技術(shù)領(lǐng)域中具有通常知識者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的更動與潤飾,因此本發(fā)明的保護(hù)范圍當(dāng)視本案權(quán)利要求范圍所界定為準(zhǔn)。