專利名稱:存儲(chǔ)系統(tǒng)和用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體涉及一種存儲(chǔ)系統(tǒng)以及用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法。
背景技術(shù):
存儲(chǔ)系統(tǒng)是計(jì)算機(jī)系統(tǒng)中最重要的部件之一。人們一直希望存儲(chǔ)系統(tǒng)具有高速度 (高的IOPS以及高的吞吐率)、高可靠性和低成本。大多數(shù)現(xiàn)有的服務(wù)器或個(gè)人計(jì)算機(jī)仍然使用硬盤(HDD)作為主要的存儲(chǔ)系統(tǒng)。盡管基于HDD的存儲(chǔ)系統(tǒng)具有較低的成本,但近年來HDD訪問等待時(shí)間的改進(jìn)卻遠(yuǎn)遠(yuǎn)落后于其容量的改進(jìn)。高的等待時(shí)間將極大地影響IOPS (每秒輸入/輸出操作數(shù))值。尤其對(duì)于隨機(jī)I/O占優(yōu)勢(shì)的工作負(fù)荷,例如數(shù)據(jù)庫工作負(fù)荷,HDD將成為性能瓶頸。而對(duì)于順序訪問占優(yōu)勢(shì)的工作負(fù)荷,HDD的訪問性能較好,例如,目前的單個(gè)HDD可獲得高達(dá)160MB/S的持續(xù)性的傳輸率。與HDD相比,近年來出現(xiàn)的固態(tài)盤(SSD)具有較低的隨機(jī)讀取等待時(shí)間(SSD的 0. 03ms對(duì)HDD的5ms)、較高的讀取IOPS (SSD的35000對(duì)HDD的200)。盡管起初SSD的容量較小,但近年來也逐漸趕上了 HDD的容量。例如,目前已有一些作為高端產(chǎn)品的2TB的 SSD0 SSD的能耗也低于HDD。然而,SSD具有如下幾個(gè)缺點(diǎn)一是SDD的成本遠(yuǎn)高于HDD (以當(dāng)前市價(jià)為例,SSD的$10/GB對(duì)HDD的$0. 6/GB)。在SSD中,控制器是極其昂貴的。二是 SSD的每個(gè)單元只具有有限的寫周期,這會(huì)影響其可靠性。盡管引入了幾種技術(shù)來克服該問題,但它們會(huì)增加控制器的成本,并降低IOPS和吞吐率。三是SSD的讀寫性能是非對(duì)稱的。 SDD的寫等待時(shí)間比讀等待時(shí)間大10倍。這是由于寫操作必須首先擦除整個(gè)塊(每個(gè)塊大約是0. 5-1MB),然后將塊中原有數(shù)據(jù)與新數(shù)據(jù)一起寫入該塊,這種操作是很慢的。如何使存儲(chǔ)系統(tǒng)具有較高的讀寫性能、可靠性和低成本,是一種重要的問題。目前存在著如下幾種解決方案。一是由HDD構(gòu)成RAID(冗余獨(dú)立磁盤陣列),將隨機(jī)讀寫分布到若干HDD中,以提高讀寫性能和可靠性。但這種解決方案的能耗成本較高,數(shù)據(jù)中心機(jī)架空間占用較大,且性能改進(jìn)有限。二是利用SSD的較低的讀等待時(shí)間,同時(shí)使用在控制器固件中實(shí)現(xiàn)的部分占用塊合并以及磨損均衡算法(wear-leveling algorithm)來減輕隨機(jī)寫的不利后果,這包括 以大的連續(xù)段寫數(shù)據(jù),在后臺(tái)合并部分占用塊并對(duì)空閑塊進(jìn)行垃圾收集,以及避免不斷寫入一些熱點(diǎn)塊。然而,經(jīng)常的后臺(tái)文件系統(tǒng)掃描來識(shí)別部分占用塊和空閑塊會(huì)消耗SSD控制器的相當(dāng)多帶寬。而且,固件很難實(shí)現(xiàn)復(fù)雜的垃圾收集算法,且成本很高。此外,單個(gè)SSD 無法提供高可用性,而SSD陣列又過于昂貴。三是將SSD用于HDD的高速緩存。這種方案沒有高可靠性特征,并具有寫的不利后果,如寫周期有限以及寫等待時(shí)間較長(zhǎng)等。四是組合SSD和HDD,并進(jìn)行手工數(shù)據(jù)分區(qū)。例如,在GPFS(通用并行文件系統(tǒng)) 中,通過手工分配將元數(shù)據(jù)存儲(chǔ)在SSD上,而將數(shù)據(jù)存儲(chǔ)在HDD上。這種方案不但帶來很大的管理負(fù)擔(dān),而且也無法實(shí)現(xiàn)較高的數(shù)據(jù)讀寫性能以及數(shù)據(jù)的高可用性。
發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)中的缺點(diǎn),提出了本發(fā)明的技術(shù)方案。根據(jù)本發(fā)明的一個(gè)方面,提出了一種存儲(chǔ)系統(tǒng),包括包括至少一個(gè)固態(tài)盤以及至少一個(gè)非固態(tài)盤的盤陣列;以及存儲(chǔ)控制裝置,其被配置為響應(yīng)于進(jìn)入清理模式,掃描并移動(dòng)所述盤陣列中至少一個(gè)非固態(tài)盤中的數(shù)據(jù)塊,來形成更多連續(xù)的空閑塊。根據(jù)本發(fā)明的另一個(gè)方面,提出了一種用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法,其中,所述存儲(chǔ)系統(tǒng)包括盤陣列,該盤陣列包括至少一個(gè)固態(tài)盤以及至少一個(gè)非固態(tài)盤,該方法包括響應(yīng)于進(jìn)入清理模式,掃描并移動(dòng)所述盤陣列中至少一個(gè)非固態(tài)盤中的數(shù)據(jù)塊,來形成更多連續(xù)的空閑塊。本發(fā)明的優(yōu)點(diǎn)包括如下幾項(xiàng)中的一項(xiàng)或多項(xiàng)存儲(chǔ)系統(tǒng)不但通過從固態(tài)盤中讀數(shù)據(jù)而獲得了良好的讀性能,而且通過在清理模式中對(duì)非固態(tài)盤進(jìn)行清理來形成更多的連續(xù)空閑塊,而具有了較好的寫性能;通過將數(shù)據(jù)寫入固態(tài)盤中以及非固態(tài)盤中,提高了數(shù)據(jù)可靠性和可用性;通過在操作系統(tǒng)的驅(qū)動(dòng)器實(shí)現(xiàn)部分占用塊的合并以及磨損均衡等功能,提高了固態(tài)盤的寫入速度和使用壽命,并降低了成本。
所附權(quán)利要求中闡述了被認(rèn)為是本發(fā)明的特點(diǎn)的創(chuàng)造性特征。但是,通過參照附圖閱讀下面對(duì)說明性實(shí)施例的詳細(xì)說明可更好地理解發(fā)明本身以及其優(yōu)選使用模式、目標(biāo)、特征以及優(yōu)點(diǎn),在附圖中圖1示出了根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)系統(tǒng);圖2示出了根據(jù)本發(fā)明的一種實(shí)施例的用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法;以及圖3示出了根據(jù)本發(fā)明的另一種實(shí)施例的用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法。
具體實(shí)施例方式下面參照附圖來說明本發(fā)明的實(shí)施例。在下面的說明中,闡述了許多具體細(xì)節(jié)以便更全面地了解本發(fā)明。但是,對(duì)于本技術(shù)領(lǐng)域內(nèi)的技術(shù)人員明顯的是,本發(fā)明的實(shí)現(xiàn)可不具有這些具體細(xì)節(jié)中的一些。此外,應(yīng)當(dāng)理解的是,本發(fā)明并不限于所介紹的特定實(shí)施例。 相反,可以考慮用下面的特征和要素的任意組合來實(shí)施本發(fā)明,而無論它們是否涉及不同的實(shí)施例。因此,下面的方面、特征、實(shí)施例和優(yōu)點(diǎn)僅作說明之用而不應(yīng)被看作是所附權(quán)利要求的要素或限定,除非權(quán)利要求中明確提出。現(xiàn)參照?qǐng)D1,其示出了根據(jù)本發(fā)明的一實(shí)施例的存儲(chǔ)系統(tǒng)。如圖所示,該存儲(chǔ)系統(tǒng)包括盤陣列110,該盤陣列110包括至少一個(gè)固態(tài)盤111以及至少一個(gè)非固態(tài)盤112 ;以及存儲(chǔ)控制裝置120,該存儲(chǔ)控制裝置被配置為響應(yīng)于進(jìn)入清理模式,掃描并移動(dòng)所述盤陣列中至少一個(gè)非固態(tài)盤中的數(shù)據(jù)塊,來形成更多(即與掃描和移動(dòng)之前相比更多)連續(xù)的空閑塊。所述非固態(tài)盤112是指對(duì)于隨機(jī)讀寫會(huì)導(dǎo)致尋道延時(shí)、而順序?qū)憰r(shí)的速度較高 (例如,接近于固態(tài)盤的寫速度)的存儲(chǔ)介質(zhì)。典型的例子是硬盤(HDD),其通過在盤片轉(zhuǎn)動(dòng)時(shí),在道(track)和扇區(qū)(sector)上移動(dòng)磁頭來讀寫數(shù)據(jù),因此,在隨機(jī)讀寫時(shí),會(huì)導(dǎo)致尋道延時(shí);而當(dāng)順序?qū)憰r(shí),則可節(jié)省尋道延時(shí)。另外的例子是一些可擦寫的⑶、DVD等光學(xué)盤片以及磁光盤,且其順序?qū)懙乃俣容^高,并接近于SSD。盡管圖中僅示出了一個(gè)固態(tài)盤111和一個(gè)非固態(tài)盤112,但本發(fā)明并不僅限于此。 根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)系統(tǒng)的盤陣列110也可以包括多個(gè)固態(tài)盤111和一個(gè)非固態(tài)盤 112 (可稱為N+1模式),或者包括一個(gè)固態(tài)盤111和多個(gè)非固態(tài)盤112 (可稱為1+M模式), 或者包括多個(gè)固態(tài)盤111和多個(gè)非固態(tài)盤112(可稱為N+M模式)。下面首先以存儲(chǔ)系統(tǒng)的盤陣列110包括一個(gè)固態(tài)盤111和一個(gè)非固態(tài)盤112為例來說明本發(fā)明的實(shí)施例。在本發(fā)明的優(yōu)選實(shí)施例中,所述存儲(chǔ)控制裝置120是由操作系統(tǒng)(OS)中的設(shè)備驅(qū)動(dòng)器實(shí)現(xiàn)的。在本發(fā)明的其他實(shí)施例中,所述存儲(chǔ)控制裝置120也可以由其他裝置或功能模塊來實(shí)現(xiàn),例如,可以由盤陣列110的控制器來實(shí)現(xiàn)。盡管在本發(fā)明的優(yōu)選實(shí)施例中,所述存儲(chǔ)控制裝置120的全部功能是由軟件實(shí)現(xiàn)的,但在本發(fā)明的其他實(shí)施例中,所述存儲(chǔ)控制裝置120的全部或部分功能也可由固件或硬件來實(shí)現(xiàn)。存儲(chǔ)控制裝置120用于接收通過文件系統(tǒng)來自上層應(yīng)用的存儲(chǔ)器操作請(qǐng)求,通過對(duì)盤陣列110進(jìn)行相應(yīng)操作來處理存儲(chǔ)器操作請(qǐng)求,并向上層應(yīng)用返回處理結(jié)果。根據(jù)本發(fā)明的一種實(shí)施例,所述存儲(chǔ)控制裝置120還被配置為響應(yīng)于進(jìn)入讀模式,從所述固態(tài)盤111讀取相應(yīng)數(shù)據(jù);以及響應(yīng)于進(jìn)入寫模式,向所述固態(tài)盤111以及所述非固態(tài)盤112寫相應(yīng)數(shù)據(jù)。當(dāng)存儲(chǔ)控制裝置120接收到并開始處理來自上層應(yīng)用的讀請(qǐng)求時(shí),進(jìn)入讀模式。在讀模式中,存儲(chǔ)控制裝置120將只從固態(tài)盤111讀取所請(qǐng)求的數(shù)據(jù)。由于固態(tài)盤111的讀訪問速度較高,這樣可以更快地滿足該讀請(qǐng)求。當(dāng)存儲(chǔ)控制裝置120接收到并處理來自上層應(yīng)用的寫請(qǐng)求時(shí),進(jìn)入寫模式。在寫模式中,存儲(chǔ)控制裝置120將請(qǐng)求寫的數(shù)據(jù)分別寫入固態(tài)盤111和非固態(tài)盤112兩者。由于存儲(chǔ)控制裝置120可以將數(shù)據(jù)寫入清理模式在非固態(tài)盤112上產(chǎn)生的連續(xù)空閑塊和在固態(tài)盤111上產(chǎn)生的空閑塊,因此固態(tài)盤111和非固態(tài)盤112都可以提供非常高的寫入性能。由于將相同的數(shù)據(jù)寫入固態(tài)盤111 和非固態(tài)盤112這兩個(gè)位置,這樣,就可以在一個(gè)盤中的數(shù)據(jù)不可用時(shí)(例如,由于盤的故障或磨損),提供另一個(gè)盤中的數(shù)據(jù),從而提高了數(shù)據(jù)的可靠性和可用性。根據(jù)本發(fā)明的一種實(shí)施例,所述存儲(chǔ)控制裝置120還被配置為在從所述固態(tài)盤 111讀取相應(yīng)數(shù)據(jù)之后,驗(yàn)證所述相應(yīng)數(shù)據(jù)的完整性;響應(yīng)于所述驗(yàn)證通過,向上層應(yīng)用返回所述相應(yīng)數(shù)據(jù);以及響應(yīng)于所述驗(yàn)證未通過,從所述非固態(tài)盤112讀取相應(yīng)數(shù)據(jù),將該相應(yīng)數(shù)據(jù)恢復(fù)到所述固態(tài)盤111,并向上層應(yīng)用返回該相應(yīng)數(shù)據(jù)。如本領(lǐng)域的技術(shù)人員所知的,例如可以通過使用與數(shù)據(jù)一起存儲(chǔ)的校驗(yàn)位來驗(yàn)證數(shù)據(jù)的完整性。在從所述非固態(tài)盤112讀取相應(yīng)數(shù)據(jù)后,也可以首先驗(yàn)證該數(shù)據(jù)的完整性, 如果驗(yàn)證通過,則將該數(shù)據(jù)恢復(fù)到固態(tài)盤111,并向上層應(yīng)用返回該數(shù)據(jù);如果驗(yàn)證未通過,則返回錯(cuò)誤。此外,如果驗(yàn)證未通過,還可進(jìn)一步將該事件記入日志,并可發(fā)出通知,以便管理員采取補(bǔ)救措施。在執(zhí)行將數(shù)據(jù)恢復(fù)到固態(tài)盤111的操作后,也可以首先判斷數(shù)據(jù)是否被成功地恢復(fù)到固態(tài)盤111。如果數(shù)據(jù)已被成功恢復(fù)到固態(tài)盤111,則向上層應(yīng)用返回該數(shù)據(jù);否則, 返回錯(cuò)誤。此外,在數(shù)據(jù)未能成功恢復(fù)到固態(tài)盤111的情況下,還可進(jìn)一步將該事件記入日志,并可發(fā)送通知,以便管理員采取補(bǔ)救措施。
根據(jù)本發(fā)明的一種實(shí)施例,向非固態(tài)盤112寫相應(yīng)數(shù)據(jù)包括尋找非固態(tài)盤112中連續(xù)的空閑塊,以及向非固態(tài)盤112中連續(xù)的空閑塊寫相應(yīng)數(shù)據(jù)。如本領(lǐng)域的技術(shù)人員所知的,在向HDD等非固態(tài)盤112中寫數(shù)據(jù)時(shí),如果是向其中連續(xù)的空閑塊寫數(shù)據(jù),則可節(jié)省尋道時(shí)間,從而可提高寫入速度,可能達(dá)到與向固態(tài)盤111寫數(shù)據(jù)相當(dāng)?shù)乃俣龋@樣就使得根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)系統(tǒng)不僅具有良好的讀性能,而且具有良好的寫性能。根據(jù)本發(fā)明的一種實(shí)施例,如果在非固態(tài)盤112中沒有找到足夠的連續(xù)的空閑塊,則可以向非固態(tài)盤112中不連續(xù)的空閑塊寫相應(yīng)數(shù)據(jù)。這樣,寫性能會(huì)有所降低。因此, 可以將相應(yīng)事件(例如,非固態(tài)盤112中已沒有足夠的連續(xù)的空閑塊)記入日志或發(fā)送通知,以便由存儲(chǔ)控制裝置120或管理員采取補(bǔ)救措施,例如使存儲(chǔ)控制裝置120進(jìn)入下文中所述的清理模式,以對(duì)非固態(tài)盤112中的數(shù)據(jù)進(jìn)行清理來形成更多連續(xù)的空閑塊,或者轉(zhuǎn)移非固態(tài)盤112中的數(shù)據(jù),或者更換非固態(tài)盤112等等??梢远喾N方式尋找非固態(tài)盤112中連續(xù)的空閑塊。例如,可以由存儲(chǔ)控制裝置120 維護(hù)非固態(tài)盤112中全部空閑塊的記錄。每當(dāng)向非固態(tài)盤112寫入數(shù)據(jù)或刪除非固態(tài)盤 112中的數(shù)據(jù)時(shí),相應(yīng)更新該記錄,使該記錄始終記錄著非固態(tài)盤112中的全部空閑塊;此外,當(dāng)如下所述在清理模式中對(duì)非固態(tài)盤112進(jìn)行清理時(shí),也相應(yīng)更新該記錄。這樣,可通過查詢?cè)撚涗泚韺ふ夜虘B(tài)盤111中連續(xù)的空閑塊。當(dāng)然,也可以通過其他方式尋找非固態(tài)盤112中連續(xù)的空閑塊。例如,也可通過直接對(duì)非固態(tài)盤112進(jìn)行掃描來尋找其中連續(xù)的空閑塊。如本領(lǐng)域的技術(shù)人員所知的,當(dāng)向固態(tài)盤111中寫數(shù)據(jù)時(shí),可以采用磨損均衡算法。該功能在現(xiàn)有技術(shù)中通常是在固態(tài)盤111的控制器固件中實(shí)現(xiàn)的。而在本發(fā)明的實(shí)施例中,該功能是在操作系統(tǒng)的驅(qū)動(dòng)器中實(shí)現(xiàn)的,這樣,就極大的節(jié)約了固態(tài)盤111的固件成本。如上所述,根據(jù)本發(fā)明的一種實(shí)施例,在所述清理模式中,存儲(chǔ)控制裝置120掃描非固態(tài)盤112,并移動(dòng)其中的數(shù)據(jù)塊,以便形成更多連續(xù)的空閑塊。這樣,當(dāng)寫入新的數(shù)據(jù)時(shí),就更有可能找到連續(xù)的空閑塊,并將數(shù)據(jù)寫入連續(xù)的空閑塊,而不是將數(shù)據(jù)寫入不連續(xù)的空閑塊,從而提高寫入速度。在移動(dòng)數(shù)據(jù)塊之后,存儲(chǔ)控制裝置120可相應(yīng)更新上述全部空閑塊記錄,以反映非固態(tài)盤112中經(jīng)過數(shù)據(jù)塊移動(dòng)形成的新的空閑塊。根據(jù)本發(fā)明的一種實(shí)施例,所述存儲(chǔ)控制裝置120還被配置為在所述清理模式中,掃描并合并所述盤陣列110中固態(tài)盤111中的部分占用的數(shù)據(jù)塊,來形成更多完整的空閑塊。也就是說,通過將多個(gè)部分占用的數(shù)據(jù)塊中的數(shù)據(jù)合并到一個(gè)或多個(gè)塊中,使所述一個(gè)或多個(gè)塊成為完全占用的數(shù)據(jù)塊,可以節(jié)省出更多完整的空閑塊(如本領(lǐng)域中所知的, 由于固態(tài)盤是一種隨機(jī)訪問存儲(chǔ)器,對(duì)數(shù)據(jù)的訪問時(shí)間與數(shù)據(jù)在盤上的物理位置無關(guān),因此空閑塊不必是連續(xù)的)。這樣,當(dāng)在固態(tài)盤111中寫數(shù)據(jù)時(shí),就更有可能直接在完整的空閑塊中寫數(shù)據(jù)。如本領(lǐng)域的技術(shù)人員所知的,向固態(tài)盤中完整的空閑塊寫入時(shí),可以省去讀出該塊原有數(shù)據(jù)、擦寫整個(gè)數(shù)據(jù)塊的工作,從而大大提高固態(tài)盤寫入的性能。在目前的固態(tài)盤技術(shù)中,這種合并部分空閑塊的功能是在控制器固件中實(shí)現(xiàn)的,在本發(fā)明的一實(shí)施例中, 該功能是在操作系統(tǒng)的驅(qū)動(dòng)程序中實(shí)現(xiàn)的,從而節(jié)省了固件成本??梢允褂枚喾N策略來規(guī)定存儲(chǔ)控制裝置120如何進(jìn)入和退出清理模式。每一種策略規(guī)定了用于觸發(fā)進(jìn)入清理模式的所述特定事件。僅作為示例,第一種策略可以規(guī)定當(dāng)在預(yù)定時(shí)間閾值T內(nèi)沒有接收到讀請(qǐng)求和寫請(qǐng)求時(shí),進(jìn)入清理模式;當(dāng)非固態(tài)盤112中連續(xù)的空閑塊占所有空閑塊的比例超過預(yù)定比例閾值C時(shí),或者當(dāng)接收到讀請(qǐng)求或?qū)懻?qǐng)求時(shí),可以退出清理模式。第二種策略可以規(guī)定當(dāng)磁盤帶寬使用率低于預(yù)定使用率閾值BW時(shí),進(jìn)入清理模式;而當(dāng)磁盤帶寬使用率高于預(yù)定使用率閾值BW時(shí),或者當(dāng)非固態(tài)盤112中連續(xù)的空閑塊占所有空閑塊的比例超過預(yù)定比例閾值C時(shí),可以退出清理模式。第三種策略可以規(guī)定當(dāng)存儲(chǔ)控制裝置120中用于接收來自上層的讀請(qǐng)求和寫請(qǐng)求的請(qǐng)求隊(duì)列的長(zhǎng)度小于預(yù)定長(zhǎng)度閾值QL時(shí),進(jìn)入清理模式;而當(dāng)請(qǐng)求隊(duì)列的長(zhǎng)度高于預(yù)定閾值QL時(shí),或者當(dāng)非固態(tài)盤112中連續(xù)的空閑塊占所有空閑塊的比例超過預(yù)定比例閾值 C時(shí),可以退出清理模式。此外,也可以由管理員手工命令進(jìn)入清理模式,或者響應(yīng)于接收到非固態(tài)盤112 中已沒有足夠的連續(xù)的空閑塊的通知而進(jìn)入清理模式。當(dāng)然,可以在每一種策略中進(jìn)一步規(guī)定只有當(dāng)非固態(tài)盤112盤整列110中連續(xù)的空閑塊占所有空閑塊的比例低于一預(yù)定比例閾值D(其可小于或等于上述預(yù)定比例閾值C)時(shí),才進(jìn)入清理模式;而當(dāng)非固態(tài)盤112中連續(xù)的空閑塊占有所空閑塊的比例等于或大于預(yù)定比例閾值D時(shí),不進(jìn)入清楚模式?;蛘?,存儲(chǔ)控制裝置120在接收到所指定的特定策略規(guī)定的觸發(fā)進(jìn)入清楚模式的特定事件后,進(jìn)一步判斷非固態(tài)盤112中連續(xù)的空閑塊占所有空閑塊的比例是否低于預(yù)定比例閾值D,且只有當(dāng)該判斷為是時(shí),才進(jìn)入清理模式,而當(dāng)該判斷為否時(shí),放棄進(jìn)入清理模式。存儲(chǔ)控制裝置120可通過查詢上述非固態(tài)盤112中所有空閑塊的記錄來判斷非固態(tài)盤112中連續(xù)的空閑塊占所有空閑塊的比例是否低于預(yù)定比例閾值。此外,還可以設(shè)定一優(yōu)先級(jí)調(diào)度策略,規(guī)定由清理模式產(chǎn)生的I/O請(qǐng)求的優(yōu)先級(jí)P小于由上層應(yīng)用產(chǎn)生的讀請(qǐng)求和寫請(qǐng)求的優(yōu)先級(jí) Q,并由存儲(chǔ)控制裝置120根據(jù)優(yōu)先級(jí)進(jìn)行調(diào)度,這樣,就可以保證清理模式所產(chǎn)的I/O請(qǐng)求不會(huì)干擾應(yīng)用的操作。以上策略僅為示例,而不是對(duì)本發(fā)明的限制。在本發(fā)明的一些實(shí)施例中,可采用其他策略來規(guī)定如何進(jìn)入和退出清理模式。根據(jù)本發(fā)明的一種實(shí)施例,該存儲(chǔ)控制裝置120可向上層(例如文件系統(tǒng)或操作系統(tǒng))提供一策略定義接口,管理員可通過該接口指定用于進(jìn)入和退出清理模式的策略, 并設(shè)定該策略所需的閾值等參數(shù)??舍槍?duì)不同上層應(yīng)用的特定,指定不同的策略,并設(shè)定不同的參數(shù)。例如,對(duì)于一個(gè)訪問頻繁的Web服務(wù)器,其平均讀寫間隔為1秒鐘,CPU到磁盤的帶寬為200MBPS,可以指定上述第一種策略,并設(shè)定T = 0. 5秒。也就是說,如果在0. 5秒中內(nèi)沒有讀寫訪問時(shí),則進(jìn)入清理模式?;蛘撸梢灾付ㄉ鲜龅诙N策略,并設(shè)定BW = 50MBPS。 也就是說,當(dāng)磁盤帶寬使用低于50MBPS時(shí),進(jìn)入清理模式。如果當(dāng)前帶寬使用高于50MBPS, 則退出清理模式?;蛘撸梢灾付ㄉ鲜龅谌N策略,并設(shè)定QL= 100。也就是說,只有當(dāng)驅(qū)動(dòng)程序中的由上層應(yīng)用產(chǎn)生的請(qǐng)求的隊(duì)列長(zhǎng)度低于100的時(shí)候,才進(jìn)入清理模式。一旦隊(duì)列長(zhǎng)度超過100,則退出清理模式。此外,還可以指定上述優(yōu)先級(jí)調(diào)度策略,并設(shè)定清理模式產(chǎn)生的I/O請(qǐng)求的優(yōu)先級(jí)為5,上層應(yīng)用產(chǎn)生的I/O請(qǐng)求的優(yōu)先級(jí)為15。這樣,存儲(chǔ)控制裝置120中的調(diào)度功能就可以保證清理模式產(chǎn)生的請(qǐng)求不會(huì)干擾應(yīng)用的操作。此外,還可設(shè)定上述用于退出清理模式的預(yù)定比例閾值C = 25%。也就是說,當(dāng)系統(tǒng)可用的連續(xù)空間超過可用空間的25%時(shí),就可以退出清理模式。通過指定和設(shè)定如上所述策略,可以優(yōu)化對(duì)于 Web服務(wù)器的頻繁訪問以及對(duì)于小文件(例如網(wǎng)頁上的各種小圖片)的讀寫。再例如,對(duì)于一個(gè)企業(yè)的文件服務(wù)器,其平均讀寫間隔為20秒,可以指定上述第一種策略,并設(shè)定T = 10秒。也就是說,如果在10秒中內(nèi)沒有讀寫訪問時(shí),則進(jìn)入清理模式。或者,可以指定上述第二種策略2,并設(shè)定BW = 20MBPS。也就是說,只有當(dāng)磁盤帶寬使用低于20MBPS時(shí),進(jìn)入清理模式。如果當(dāng)前使用帶寬高于20MBPS,則退出清理模式。或者, 可以指定上述第三種策略,并設(shè)定QL = 200,也就是說,只有當(dāng)驅(qū)動(dòng)程序中的由上層應(yīng)用產(chǎn)生的請(qǐng)求的隊(duì)列長(zhǎng)度低于200的時(shí)候,才進(jìn)入清理模式,一旦隊(duì)列長(zhǎng)度超過200,則退出清理模式。此外,還可以設(shè)定上述優(yōu)先級(jí)調(diào)度策略,并指定由清理模式產(chǎn)生的I/O請(qǐng)求的優(yōu)先級(jí)為8,上層應(yīng)用產(chǎn)生的I/O請(qǐng)求的優(yōu)先級(jí)為15,這樣,存儲(chǔ)控制裝置120中的調(diào)度功能就可以保證清理模式產(chǎn)生的I/O請(qǐng)求不會(huì)干擾應(yīng)用的操作。此外,還可以設(shè)定上述用于退出清理模式的預(yù)定比例閾值C = 50%。也就是說,當(dāng)系統(tǒng)可用的連續(xù)空間超過可用空間的 50%時(shí),才可以退出清理模式;低于50%時(shí),就要繼續(xù)進(jìn)行磁盤掃描、計(jì)算和數(shù)據(jù)塊移動(dòng), 以使得連續(xù)可用的空間達(dá)到可用空間的50%以上。通過指定和設(shè)定如上所述策略,可以優(yōu)化對(duì)于文件服務(wù)器訪問頻率較低而每次數(shù)量很大的讀寫(比如幾百兆,甚至是幾個(gè)GB大小的文件上傳)。根據(jù)本發(fā)明的一種實(shí)施例,所述存儲(chǔ)控制裝置120還被配置為在所述清理模式中,判斷是否接收到觸發(fā)退出清理模式的特定事件,該特定事件可以是上文中所述的各種策略規(guī)定的觸發(fā)退出清理模式的特定事件,例如非固態(tài)盤中連續(xù)的空閑塊占所有空閑塊的比例超過預(yù)定比例閾值C,等等;以及如果所述判斷為否,則繼續(xù)如上所述對(duì)非固態(tài)盤112 和固態(tài)盤111的清理操作;以及如果該判斷為是,則退出清理模式。以上描述了根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)系統(tǒng),其中,存儲(chǔ)控制裝置120在寫模式中向固態(tài)盤111和非固態(tài)盤112兩者中寫數(shù)據(jù);而存儲(chǔ)控制裝置120在讀模式中僅從固態(tài)盤111讀取數(shù)據(jù)。然而,這并非是對(duì)本發(fā)明的限制。在本發(fā)明的其他實(shí)施例中,可以不是將所有寫請(qǐng)求的數(shù)據(jù)寫入固態(tài)盤111和非固態(tài)盤112兩者中,而是僅將具有高可用性要求的寫請(qǐng)求的數(shù)據(jù)寫入固態(tài)盤111和非固態(tài)盤112兩者中,而將不具有高可用性要求的寫請(qǐng)求的數(shù)據(jù)僅寫入非固態(tài)盤112中;此外,還可以在此后在清理模式中將雖沒有高可用性要求、 但被頻繁訪問的數(shù)據(jù)從非固態(tài)盤112轉(zhuǎn)移到固態(tài)盤111。以這種方式,不但有區(qū)別地保證了特定應(yīng)用的數(shù)據(jù)的高可靠性和高可用性,而且有區(qū)別地保證了特定應(yīng)用的數(shù)據(jù)訪問速度。因此,根據(jù)本發(fā)明的另一實(shí)施例,所述存儲(chǔ)控制裝置120被配置為響應(yīng)于開始處理對(duì)一文件的讀請(qǐng)求,判斷固態(tài)盤111中是否存在該文件;響應(yīng)于判斷固態(tài)盤111中存在該文件,從固態(tài)盤111中讀取該文件;響應(yīng)于判斷固態(tài)盤111中不存在該文件,從非固態(tài)盤 112中讀取該文件;響應(yīng)于開始處理對(duì)一新文件的寫請(qǐng)求,判斷該新文件是否具有高可用性要求;響應(yīng)于判斷該新文件具有高可用性要求,向固態(tài)盤111以及非固態(tài)盤112中寫新該文件;以及響應(yīng)于判斷該新文件不具有高可用性要求,僅向非固態(tài)盤112中寫該新文件。當(dāng)然,根據(jù)本發(fā)明的進(jìn)一步的實(shí)施例,所述存儲(chǔ)控制裝置120還可被配置為在響應(yīng)于判斷固態(tài)盤111中存在所述文件,并從固態(tài)盤111中讀取所述文件后,可以驗(yàn)證所述文件數(shù)據(jù)的完整性;響應(yīng)于所述驗(yàn)證通過,向上層應(yīng)用返回所述相應(yīng)數(shù)據(jù);以及響應(yīng)于所述驗(yàn)證未通過, 從所述非固態(tài)盤112讀取所述文件,并向上層應(yīng)用返回該相應(yīng)數(shù)據(jù)
根據(jù)本發(fā)明的進(jìn)一步實(shí)施例,所述存儲(chǔ)控制裝置120還被配置為響應(yīng)于從固態(tài)盤111或非固態(tài)盤112中讀取一文件,更新該文件的訪問頻率;在清理模式中,響應(yīng)于判斷一文件的訪問頻率高于預(yù)定閾值,該文件僅存在于非固態(tài)盤112中,且固態(tài)盤111中存在足夠的可用空間,將所述文件從非固態(tài)盤112中轉(zhuǎn)移到固態(tài)盤111中;以及在清理模式中,響應(yīng)于判斷一文件的訪問頻率低于預(yù)定閾值,且該文件僅存在于固態(tài)盤111中,將所述文件從固態(tài)盤111轉(zhuǎn)移到非固態(tài)盤112。當(dāng)然,在本發(fā)明的這些實(shí)施例中,存儲(chǔ)控制裝置120還被配置為執(zhí)行如上文中所述的清理模式中的用于整體非固態(tài)盤和固態(tài)盤中的數(shù)據(jù)塊的各項(xiàng)操作。以上以存儲(chǔ)陣列中包括一個(gè)固態(tài)盤111和一個(gè)非固態(tài)盤112為例描述了根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)系統(tǒng),但這并非對(duì)本發(fā)明的限制。在本發(fā)明的另一些實(shí)施例中,存儲(chǔ)系統(tǒng)的存儲(chǔ)陣列可包括多個(gè)固態(tài)盤111和一個(gè)非固態(tài)盤112 (N+1模式),例如4個(gè)固態(tài)盤111和1非固態(tài)盤112。這種模式適合于固態(tài)盤 111容量較小的情況。由于目前固態(tài)盤111的成本仍然較高,容量較小,大容量的固態(tài)盤111 的成本更高,例如,4塊小容量的固態(tài)盤111的成本可能低于1塊大容量的固態(tài)盤111的成本,因此這種實(shí)施例可降低存儲(chǔ)系統(tǒng)的成本。在這種實(shí)施例中,存儲(chǔ)系統(tǒng)中的存儲(chǔ)控制裝置 120將把多個(gè)固態(tài)盤111視為一個(gè)大的固態(tài)盤111,并執(zhí)行如上文中所述的各項(xiàng)操作。也就是說,在讀模式中,存儲(chǔ)控制裝置120可從所述多個(gè)固態(tài)盤中的一個(gè)固態(tài)盤讀取相應(yīng)數(shù)據(jù); 在寫模式中,存儲(chǔ)控制裝置120可向所述多個(gè)固態(tài)盤中的一個(gè)固態(tài)盤以及所述非固態(tài)盤中寫相應(yīng)數(shù)據(jù);而在清理模式中,存儲(chǔ)控制裝置120可選地可對(duì)所述多個(gè)固態(tài)盤進(jìn)行清理,以合并部分占用的數(shù)據(jù)塊。在本發(fā)明的又一些實(shí)施例中,存儲(chǔ)系統(tǒng)的存儲(chǔ)陣列可包括一個(gè)固態(tài)盤111和多個(gè)非固態(tài)盤112(1+M模式),例如1個(gè)固態(tài)盤111和3個(gè)非固態(tài)盤112。這種模式適合于并發(fā)寫入數(shù)和寫入帶寬要求非常高的情況。當(dāng)需要寫文件時(shí),可以根據(jù)不同文件的不同可靠性要求,將具有高可靠性要求的文件寫入至少兩個(gè)非固態(tài)盤112,而將不具有高可靠性要求的文件只寫入一個(gè)非固態(tài)盤112。并且,在清理模式中,根據(jù)文件讀取的頻率,將讀取頻率較高的文件從非固態(tài)盤112轉(zhuǎn)移到固態(tài)盤111。當(dāng)然,在清理模式中,還要對(duì)各非固態(tài)盤112進(jìn)行掃描和整理以形成更多連續(xù)的空閑塊,并且可選地,對(duì)固態(tài)盤111進(jìn)行掃描以合并部分占用的數(shù)據(jù)塊。因此,根據(jù)本發(fā)明的這些實(shí)施例,存儲(chǔ)控制裝置120被配置為響應(yīng)于開始處理對(duì)一文件的讀請(qǐng)求,判斷所述固態(tài)盤111中是否存在該文件;響應(yīng)于判斷所述固態(tài)盤111中存在該文件,從所述固態(tài)盤111中讀取該文件;響應(yīng)于判斷所述固態(tài)盤111中不存在該文件,從所述多個(gè)非固態(tài)盤112中讀取該文件;響應(yīng)于開始處理對(duì)一新文件的寫請(qǐng)求,判斷該新文件是否具有高可用性要求;響應(yīng)于判斷該新文件具有高可用性要求,向多個(gè)非固態(tài)盤 112中的至少兩個(gè)盤寫該新文件;以及響應(yīng)于判斷該新文件不具有高可用性要求,僅向所述多個(gè)非固態(tài)盤112中的一個(gè)盤寫該新文件。根據(jù)本發(fā)明的這些實(shí)施例,所述存儲(chǔ)控制裝置120還被配置為響應(yīng)于從固態(tài)盤111或多個(gè)非固態(tài)盤112中讀取一文件,更新該文件的訪問頻率;在清理模式中,響應(yīng)于判斷一文件的訪問頻率高于預(yù)定閾值,該文件僅存在于所述多個(gè)非固態(tài)盤112中,且固態(tài)盤111中存在足夠的可用空間,將所述文件從所述多個(gè)非固態(tài)盤112中轉(zhuǎn)移到固態(tài)盤111中;以及在清理模式中,響應(yīng)于判斷一文件的訪問頻率低于預(yù)定閾值,且該文件僅存在于所述固態(tài)盤111中,將所述文件從固態(tài)盤111轉(zhuǎn)移到多個(gè)非固態(tài)盤112中的一個(gè)。根據(jù)本發(fā)明的這些實(shí)施例,所述存儲(chǔ)控制裝置120還被配置為響應(yīng)于進(jìn)入清理模式,掃描所述多個(gè)非固態(tài)盤112,并移動(dòng)其中的數(shù)據(jù)塊,以便形成更多連續(xù)的空閑塊。根據(jù)本發(fā)明的進(jìn)一步的實(shí)施例,所述存儲(chǔ)控制裝置120還被配置為在所述清理模式中,掃描并合并所述盤陣列110中固態(tài)盤111中的部分占用的數(shù)據(jù)塊,來形成更多完整的空閑塊。在本發(fā)明的再一些實(shí)施例中,存儲(chǔ)系統(tǒng)的存儲(chǔ)陣列可包括多個(gè)固態(tài)盤111和多個(gè)非固態(tài)盤112(N+M模式),例如2個(gè)固態(tài)盤111和3個(gè)非固態(tài)盤112。在這種模式中,可以定義不同級(jí)別的可靠性要求,并將可靠性要求的級(jí)別更高的文件寫入更多的盤中。例如,對(duì)于包括2個(gè)固態(tài)盤111和3個(gè)非固態(tài)盤112的存儲(chǔ)系統(tǒng),可定義如下5級(jí)可靠性要求級(jí)別1 (缺省情況)將新文件寫入1塊非固態(tài)盤112,可靠性最低;級(jí)別2 將新文件寫入2塊非固態(tài)盤112 ;級(jí)別3 將新文件寫入3塊非固態(tài)盤112 ;級(jí)別4 將新文件寫入3塊非固態(tài)盤112和1塊固態(tài)盤111 ;級(jí)別5 將新文件寫入3塊非固態(tài)盤112和2塊固態(tài)盤111,可靠性最高。當(dāng)需要寫文件時(shí),可以根據(jù)不同文件的不同可靠性要求級(jí)別,將文件寫入不同數(shù)量非固態(tài)盤112或固態(tài)盤111中。并且,在清理模式中,根據(jù)文件讀取的頻率,將讀取頻率較高的文件從非固態(tài)盤112轉(zhuǎn)移到固態(tài)盤111。當(dāng)然,在清理模式中,還要對(duì)各非固態(tài)盤112 進(jìn)行掃描和整理以形成更多連續(xù)的空閑塊,并且可選地,對(duì)固態(tài)盤111進(jìn)行掃描以合并部分占用的數(shù)據(jù)塊。當(dāng)然,以上所示的可靠性要求的級(jí)別僅僅是示例性的。在本發(fā)明的實(shí)施例中,可以采用其他的可靠性要求級(jí)別。因此,根據(jù)本發(fā)明的這些實(shí)施例,存儲(chǔ)控制裝置120被配置為響應(yīng)于開始處理對(duì)一文件的讀請(qǐng)求,判斷所述多個(gè)固態(tài)盤111中是否存在該文件;響應(yīng)于判斷所述多個(gè)固態(tài)盤111中存在該文件,從所述多個(gè)固態(tài)盤111中讀取該文件;響應(yīng)于判斷所述多個(gè)固態(tài)盤 111中不存在該文件,從所述多個(gè)非固態(tài)盤112中讀取該文件;響應(yīng)于開始處理對(duì)一新文件的寫請(qǐng)求,判斷該新文件的可用性要求的高低;根據(jù)該新文件的可用性要求的高低,向所述多個(gè)固態(tài)盤111和多個(gè)非固態(tài)盤112中的至少一個(gè)盤中寫該新文件。也就是說,對(duì)于可用性要求越高的新文件,則向所述多個(gè)固態(tài)盤111和非固態(tài)盤112中越多的盤中寫該新文件。 根據(jù)本發(fā)明的這些實(shí)施例,所述存儲(chǔ)控制裝置120還被配置為響應(yīng)于從多個(gè)固態(tài)盤111或多個(gè)非固態(tài)盤112中讀取一文件,更新該文件的訪問頻率;在清理模式中,響應(yīng)于判斷一文件的訪問頻率高于預(yù)定閾值,該文件僅存在于多個(gè)非固態(tài)盤112中,且多個(gè)固態(tài)盤111中存在足夠的可用空間,將所述文件從多個(gè)非固態(tài)盤112中轉(zhuǎn)移到多個(gè)固態(tài)盤111中;以及在清理模式中,響應(yīng)于判斷一文件的訪問頻率低于預(yù)定閾值,且該文件僅存在于多個(gè)固態(tài)盤111 中,將所述文件從多個(gè)固態(tài)盤111轉(zhuǎn)移到多個(gè)非固態(tài)盤112。根據(jù)本發(fā)明的這些實(shí)施例,所述存儲(chǔ)控制裝置120還被配置為響應(yīng)于進(jìn)入清理模式,掃描所述多個(gè)非固態(tài)盤112,并移動(dòng)其中的數(shù)據(jù)塊,以便形成更多連續(xù)的空閑塊。根據(jù)本發(fā)明的進(jìn)一步的實(shí)施例,所述存儲(chǔ)控制裝置120還被配置為在所述清理模式中,掃描并合并所述盤陣列110中多個(gè)固態(tài)盤111 中的部分占用的數(shù)據(jù)塊,來形成更多完整的空閑塊。
在本發(fā)明的另外一些實(shí)施例中,存儲(chǔ)系統(tǒng)的存儲(chǔ)陣列可包括相同數(shù)量的多個(gè)固態(tài)盤111和多個(gè)非固態(tài)盤112,且每一個(gè)固態(tài)盤111與每一個(gè)非固態(tài)盤112構(gòu)成一個(gè)單元(可稱為N+N模式),例如4個(gè)固態(tài)盤111和4個(gè)非固態(tài)盤112組成4個(gè)單元,每個(gè)單元包括一個(gè)固態(tài)盤111和一個(gè)非固態(tài)盤112。在這種模式中,存儲(chǔ)控制裝置120針對(duì)每一個(gè)單元執(zhí)行如上文中所述的各種操作,且各個(gè)單元之間根據(jù)需要進(jìn)行組合,例如構(gòu)成RAIDO、RAID 1或 RAID 5 等。以上描述了根據(jù)本發(fā)明的各實(shí)施例的存儲(chǔ)系統(tǒng),應(yīng)指出的是,以上描述僅為示例, 而不是對(duì)本發(fā)明的限制。在本發(fā)明的其他實(shí)施例中,該存儲(chǔ)系統(tǒng)可具有更多、更不或不同的模塊,且該存儲(chǔ)系統(tǒng)的存儲(chǔ)控制裝置可配置為執(zhí)行更多、更不或不同的操作。下面參照附圖描述根據(jù)本發(fā)明的實(shí)施例的用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法。該方法中的各步驟對(duì)應(yīng)于以上所述的根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)系統(tǒng)的各項(xiàng)操作。為簡(jiǎn)明起見,在以下描述中省略了與以上描述重復(fù)的部分細(xì)節(jié),因此,可參照以上描述獲得對(duì)該方法的更詳細(xì)的了解。根據(jù)本發(fā)明的實(shí)施例,提出了一種用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法,其中所述存儲(chǔ)系統(tǒng)包括盤陣列,該盤陣列包括至少一個(gè)固態(tài)盤以及至少一個(gè)非固態(tài)盤,該方法包括以下步驟 響應(yīng)于進(jìn)入清理模式,掃描并移動(dòng)所述盤陣列中至少一個(gè)非固態(tài)盤中的數(shù)據(jù)塊,來形成更多連續(xù)的空閑塊。圖2示出了根據(jù)本發(fā)明的一實(shí)施例的用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法的具體實(shí)現(xiàn)方式。 如圖所示,該方法包括如下步驟在步驟201,進(jìn)行模式仲裁,以確定進(jìn)入讀模式、寫模式和清理模式中的哪一個(gè)。可以使用多種方法進(jìn)行模式仲裁。例如,當(dāng)接收到來自上層應(yīng)用的讀請(qǐng)求并開始處理該請(qǐng)求時(shí),確定進(jìn)入讀模式;當(dāng)接收到來自上層應(yīng)用的寫請(qǐng)求并開始處理請(qǐng)求時(shí),確定進(jìn)入寫模式;而當(dāng)接收到由特定策略(例如,上文中所述的各種策略中的一種)規(guī)定的觸發(fā)進(jìn)入清理模式的特定事件時(shí),進(jìn)入清理模式。例如,可響應(yīng)于如下事件之一,進(jìn)入所述清理模式在預(yù)定時(shí)間閾值內(nèi),未接收到讀請(qǐng)求和寫請(qǐng)求;判斷磁盤帶寬占用低于預(yù)定帶寬占用閾值;判斷用于接收來自上層應(yīng)用的讀請(qǐng)求和寫請(qǐng)求的隊(duì)列長(zhǎng)度低于預(yù)定隊(duì)列長(zhǎng)度閾值;以及接收到進(jìn)入清理模式的命令。在步驟202,響應(yīng)于進(jìn)入清理模式,掃描并移動(dòng)所述盤陣列中至少一個(gè)非固態(tài)盤中的數(shù)據(jù)塊,來形成更多連續(xù)的空閑塊。在步驟203,更新所述至少一個(gè)非固態(tài)盤中全部空閑塊的記錄。在步驟204,掃描并合并所述盤陣列中至少一個(gè)固態(tài)盤中的部分占用的數(shù)據(jù)塊,來形成更多完整的空閑塊。在步驟205,判斷是否接收到觸發(fā)退出清理模式的特定事件,該特定事件可以是上文中所述的各種策略規(guī)定的觸發(fā)退出清理模式的特定事件,例如非固態(tài)盤中連續(xù)的空閑塊占所有空閑塊的比例超過預(yù)定比例閾值C,等等。如果該判斷為否,則返回步驟202。如果該判斷為是,則退出清理模式。根據(jù)本發(fā)明的一種實(shí)施例,該方法還包括如下步驟在步驟206,響應(yīng)于進(jìn)入讀模式,打開所述至少一個(gè)固態(tài)盤的讀通道。在步驟207,從所述至少一個(gè)固態(tài)盤讀取相應(yīng)數(shù)據(jù)。
在可選步驟208,驗(yàn)證所述相應(yīng)數(shù)據(jù)的完整性。在可選步驟209,判斷所述驗(yàn)證是否通過。如果該判斷為是,則轉(zhuǎn)到步驟210,否則轉(zhuǎn)到步驟211。在步驟210,向上層應(yīng)用返回所讀取的相應(yīng)數(shù)據(jù)。在步驟211,打開所述至少一個(gè)非固態(tài)盤的讀通道。在步驟212,從所述至少一個(gè)非固態(tài)盤讀取相應(yīng)數(shù)據(jù)。在步驟213,將所讀取的相應(yīng)數(shù)據(jù)恢復(fù)到所述至少一個(gè)固態(tài)盤。在步驟214,判斷恢復(fù)是否成功。如果該判斷為是,則轉(zhuǎn)到步驟210,向上層應(yīng)用返回所讀取的相應(yīng)數(shù)據(jù)。否則轉(zhuǎn)到步驟215。在步驟215,返回錯(cuò)誤,并可選地將該錯(cuò)誤記錄日志或發(fā)送錯(cuò)誤通知。根據(jù)本發(fā)明的一種實(shí)施例,該方法還包括如下步驟響應(yīng)于進(jìn)入寫模式,在步驟216打開所述至少一個(gè)固態(tài)盤的寫通道,以及在步驟 217打開所述至少一個(gè)非固態(tài)盤的寫通道。在步驟218,尋找所述至少一個(gè)非固態(tài)盤中連續(xù)的空閑塊。在步驟219,判斷所述至少一個(gè)非固態(tài)盤中是否存在足夠的連續(xù)的空閑塊。如果該判斷為是,則轉(zhuǎn)到步驟220 ;如果該判斷為否,則轉(zhuǎn)到步驟221。在步驟220,向所述至少一個(gè)非固態(tài)盤中的連續(xù)的空閑塊寫相應(yīng)數(shù)據(jù)。在步驟221,向所述至少一個(gè)非固態(tài)盤的非連續(xù)的空閑塊中寫相應(yīng)數(shù)據(jù)。在可選步驟222,將相應(yīng)事件記入日志并發(fā)送通知,所述相應(yīng)事件例如為無法在非固態(tài)盤中找到足夠多的連續(xù)的空閑塊。在步驟223,更新所述至少一個(gè)非固態(tài)盤中全部空閑塊的記錄。在步驟224,向所述至少一個(gè)固態(tài)盤寫相應(yīng)數(shù)據(jù)。當(dāng)然,以上所述僅為根據(jù)本發(fā)明的實(shí)施例的用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法的一種具體實(shí)現(xiàn)方式,而不是對(duì)本發(fā)明的限制。該用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法可以具有其他的具體實(shí)現(xiàn)方式?,F(xiàn)參照?qǐng)D3描述根據(jù)本發(fā)明的另一種實(shí)施例的用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法,其中, 所述存儲(chǔ)系統(tǒng)包括盤陣列,該盤陣列包括至少一個(gè)固態(tài)盤以及至少一個(gè)非固態(tài)盤。在以下對(duì)該實(shí)施例的描述中,省略了與圖2所示的實(shí)施例中相同的步驟,例如進(jìn)行模式仲裁的步驟,在清理模式中的與圖2中的實(shí)施例中相同的對(duì)非固態(tài)盤和固態(tài)盤進(jìn)行整理的步驟,以及在讀模式和寫模式中打開通道的步驟等等。如圖所示,該方法包括如下步驟在步驟301,在讀模式中,響應(yīng)于開始處理對(duì)一文件的讀請(qǐng)求,判斷所述至少一個(gè)固態(tài)盤中是否存在該文件。如果該步驟為是,則轉(zhuǎn)到步驟302 ;如果該判斷為否,則轉(zhuǎn)到步驟304。在步驟302,從所述至少一個(gè)固態(tài)盤中讀取該文件。在步驟303,更新該文件的訪問頻率。在步驟304,向上層應(yīng)用返回所讀取的文件數(shù)據(jù)。在步驟305,從所述至少一個(gè)非固態(tài)盤中讀取該文件,然后轉(zhuǎn)到步驟303。
在步驟306,在寫模式中,響應(yīng)于開始處理對(duì)一新文件的寫請(qǐng)求,判斷該新文件的可用性要求的高低。在步驟307,根據(jù)該新文件的可用性要求的高低,向所述至少一個(gè)固態(tài)盤以及所述至少一個(gè)非固態(tài)盤中的至少一個(gè)盤中寫該新文件。在步驟308,在所述清理模式中,響應(yīng)于判斷一文件的訪問頻率高于預(yù)定閾值,該文件僅存在于所述至少一個(gè)非固態(tài)盤中,且所述至少一個(gè)固態(tài)盤中存在足夠的可用空間, 將所述文件從所述至少一個(gè)非固態(tài)盤中轉(zhuǎn)移到所述至少一個(gè)固態(tài)盤中。在步驟309,響應(yīng)于判斷一文件的訪問頻率低于預(yù)定閾值,該文件僅存在于所述至少一個(gè)固態(tài)盤中,將所述文件從所述至少一個(gè)固態(tài)盤轉(zhuǎn)移到所述至少一個(gè)非固態(tài)盤。根據(jù)本發(fā)明的一種實(shí)施例,所述清理模式中產(chǎn)生的I/O請(qǐng)求的優(yōu)先級(jí)低于來自上層應(yīng)用的讀請(qǐng)求和寫請(qǐng)求的優(yōu)先級(jí)。根據(jù)本發(fā)明的一種實(shí)施例,所述至少一個(gè)非固態(tài)盤為硬盤或可擦寫光盤。根據(jù)本發(fā)明的一種實(shí)施例,所述方法是通過操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)器實(shí)現(xiàn)的。以上描述了根據(jù)本發(fā)明的實(shí)施例的方法,應(yīng)指出的是,以上描述僅為示例,而不是對(duì)本發(fā)明的限制。在本發(fā)明的其他實(shí)施例中,該方法可具有更多、更少或不同的步驟,且各步驟之間的關(guān)系可以與所描述的不同。雖然為了敘述和圖示方便起見,以上所述各實(shí)施例中的各步驟具有特定的順序,但某些步驟之間可具有不同的順序或者可并行執(zhí)行,例如,步驟204也可以在步驟203之前執(zhí)行或與之并行執(zhí)行,步驟309也可以在步驟308之前執(zhí)行或與之并行執(zhí)行。以上所述各步驟中的一些步驟為可選步驟,或者可與其他步驟合并。例如,步驟206、211、216、217為可選步驟,或者可與其各自的后續(xù)步驟合并為一個(gè)步驟;步驟 208、209、213、214、215、222、204 也均為可選步驟。下表示出了根據(jù)本發(fā)明的一實(shí)施例的存儲(chǔ)系統(tǒng)的讀寫性能及成本與幾種現(xiàn)有技術(shù)的存儲(chǔ)系統(tǒng)的讀寫性能及成本的比較
權(quán)利要求
1.一種存儲(chǔ)系統(tǒng),包括包括至少一個(gè)固態(tài)盤以及至少一個(gè)非固態(tài)盤的盤陣列;以及存儲(chǔ)控制裝置,其被配置為響應(yīng)于進(jìn)入清理模式,掃描并移動(dòng)所述盤陣列中至少一個(gè)非固態(tài)盤中的數(shù)據(jù)塊,來形成更多連續(xù)的空閑塊。
2.根據(jù)權(quán)利要求1的存儲(chǔ)系統(tǒng),其中,所述存儲(chǔ)控制裝置還被配置為 響應(yīng)于進(jìn)入讀模式,從所述至少一個(gè)固態(tài)盤讀取相應(yīng)數(shù)據(jù);以及響應(yīng)于進(jìn)入寫模式,向所述至少一個(gè)固態(tài)盤以及所述至少一個(gè)非固態(tài)盤寫相應(yīng)數(shù)據(jù)。
3.根據(jù)權(quán)利要求2的存儲(chǔ)系統(tǒng),其中,所述存儲(chǔ)控制裝置還被配置為 在從所述至少一個(gè)固態(tài)盤讀取相應(yīng)數(shù)據(jù)之后,驗(yàn)證所述相應(yīng)數(shù)據(jù)的完整性; 響應(yīng)于所述驗(yàn)證通過,向上層應(yīng)用返回所述相應(yīng)數(shù)據(jù);以及響應(yīng)于所述驗(yàn)證未通過,從所述至少一個(gè)非固態(tài)盤讀取相應(yīng)數(shù)據(jù),將該相應(yīng)數(shù)據(jù)恢復(fù)到所述至少一個(gè)固態(tài)盤,并向上層應(yīng)用返回該相應(yīng)數(shù)據(jù)。
4.根據(jù)權(quán)利要求2的存儲(chǔ)系統(tǒng),其中,向所述至少一個(gè)非固態(tài)盤寫相應(yīng)數(shù)據(jù)包括 尋找所述至少一個(gè)非固態(tài)盤中連續(xù)的空閑塊;以及向所述至少一個(gè)非固態(tài)盤中連續(xù)的空閑塊寫所述相應(yīng)數(shù)據(jù)。
5.根據(jù)權(quán)利要求1的存儲(chǔ)系統(tǒng),其中,所述存儲(chǔ)控制裝置還被配置為響應(yīng)于開始處理對(duì)一文件的讀請(qǐng)求,判斷所述至少一個(gè)固態(tài)盤中是否存在該文件; 響應(yīng)于判斷所述至少一個(gè)固態(tài)盤中存在該文件,從所述至少一個(gè)固態(tài)盤中讀取該文件;以及響應(yīng)于判斷所述至少一個(gè)固態(tài)盤中不存在該文件,從所述至少一個(gè)非固態(tài)盤中讀取該文件。
6.根據(jù)權(quán)利要求5的存儲(chǔ)系統(tǒng),其中,所述存儲(chǔ)控制裝置還被配置為響應(yīng)于開始處理對(duì)一新文件的寫請(qǐng)求,判斷該新文件的可用性要求的高低;以及根據(jù)該新文件的可用性要求的高低,向所述至少一個(gè)固態(tài)盤以及所述至少一個(gè)非固態(tài)盤中的至少一個(gè)盤中寫該新文件。
7.根據(jù)權(quán)利要求5的存儲(chǔ)系統(tǒng),其中,所述存儲(chǔ)控制裝置還被配置為響應(yīng)于從所述至少一個(gè)固態(tài)盤或所述至少一個(gè)非固態(tài)盤中讀取一文件,更新該文件的訪問頻率;在所述清理模式中,響應(yīng)于判斷該文件的訪問頻率高于預(yù)定閾值,該文件僅存在于所述至少一個(gè)非固態(tài)盤中,且所述至少一個(gè)固態(tài)盤中存在足夠的可用空間,將該文件從所述至少一個(gè)非固態(tài)盤中轉(zhuǎn)移到所述至少一個(gè)固態(tài)盤中;以及在所述清理模式中,響應(yīng)于判斷該文件的訪問頻率低于預(yù)定閾值,且該文件僅存在于所述至少一個(gè)固態(tài)盤中,將該文件從所述至少一個(gè)固態(tài)盤轉(zhuǎn)移到所述至少一個(gè)非固態(tài)盤。
8.根據(jù)權(quán)利要求1的存儲(chǔ)系統(tǒng),其中,所述存儲(chǔ)控制裝置還被配置為在所述清理模式中,掃描并合并所述盤陣列中至少一個(gè)固態(tài)盤中的部分占用的數(shù)據(jù)塊,來形成更多完整的空閑塊。
9.根據(jù)權(quán)利要求1的存儲(chǔ)系統(tǒng),其中,所述存儲(chǔ)控制裝置還被配置為 響應(yīng)于如下事件之一,進(jìn)入所述清理模式在預(yù)定時(shí)間閾值內(nèi),未接收到讀請(qǐng)求和寫請(qǐng)求;判斷磁盤帶寬占用低于預(yù)定帶寬占用閾值;判斷用于接收來自上層應(yīng)用的讀請(qǐng)求和寫請(qǐng)求的隊(duì)列長(zhǎng)度低于預(yù)定隊(duì)列長(zhǎng)度閾值;以及接收到進(jìn)入清理模式的命令。
10.根據(jù)權(quán)利要求9的存儲(chǔ)系統(tǒng),其中,所述存儲(chǔ)控制裝置還被配置為響應(yīng)于判斷非固態(tài)盤中連續(xù)的空閑塊占所有空閑塊的比例超過預(yù)定比例閾值,退出所述清理模式。
11.根據(jù)權(quán)利要求9的存儲(chǔ)系統(tǒng),其中,所述清理模式所產(chǎn)生的I/O請(qǐng)求的處理優(yōu)先級(jí)低于來自上層應(yīng)用的讀請(qǐng)求和寫請(qǐng)求的處理優(yōu)先級(jí)。
12.根據(jù)權(quán)利要求1的存儲(chǔ)系統(tǒng),其中,所述存儲(chǔ)控制裝置的功能是通過操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)器實(shí)現(xiàn)的。
13.一種用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法,其中,所述存儲(chǔ)系統(tǒng)包括盤陣列,該盤陣列包括至少一個(gè)固態(tài)盤以及至少一個(gè)非固態(tài)盤,該方法包括響應(yīng)于進(jìn)入清理模式,掃描并移動(dòng)所述盤陣列中至少一個(gè)非固態(tài)盤中的數(shù)據(jù)塊,來形成更多連續(xù)的空閑塊。
14.根據(jù)權(quán)利要求13的方法,還包括響應(yīng)于進(jìn)入讀模式,從所述至少一個(gè)固態(tài)盤讀取相應(yīng)數(shù)據(jù);以及響應(yīng)于進(jìn)入寫模式,向所述至少一個(gè)固態(tài)盤以及所述至少一個(gè)非固態(tài)盤寫相應(yīng)數(shù)據(jù)。
15.根據(jù)權(quán)利要求14的方法,還包括在從所述至少一個(gè)固態(tài)盤讀取相應(yīng)數(shù)據(jù)之后,驗(yàn)證所述相應(yīng)數(shù)據(jù)的完整性; 響應(yīng)于所述驗(yàn)證通過,向上層應(yīng)用返回所述相應(yīng)數(shù)據(jù);以及響應(yīng)于所述驗(yàn)證未通過,從所述至少一個(gè)非固態(tài)盤讀取相應(yīng)數(shù)據(jù),將該相應(yīng)數(shù)據(jù)恢復(fù)到所述至少一個(gè)固態(tài)盤,并向上層應(yīng)用返回該相應(yīng)數(shù)據(jù)。
16.根據(jù)權(quán)利要求14的方法,其中,向所述至少一個(gè)非固態(tài)盤寫相應(yīng)數(shù)據(jù)包括 尋找所述至少一個(gè)非固態(tài)盤中連續(xù)的空閑塊;以及向所述至少一個(gè)非固態(tài)盤中連續(xù)的空閑塊寫所述相應(yīng)數(shù)據(jù)。
17.根據(jù)權(quán)利要求13的方法,還包括響應(yīng)于開始處理對(duì)一文件的讀請(qǐng)求,判斷所述至少一個(gè)固態(tài)盤中是否存在該文件; 響應(yīng)于判斷所述至少一個(gè)固態(tài)盤中存在該文件,從所述至少一個(gè)固態(tài)盤中讀取該文件;以及響應(yīng)于判斷所述至少一個(gè)固態(tài)盤中不存在該文件,從所述至少一個(gè)非固態(tài)盤中讀取該文件。
18.根據(jù)權(quán)利要求17的方法,還包括響應(yīng)于開始處理對(duì)一新文件的寫請(qǐng)求,判斷該新文件的可用性要求的高低;以及根據(jù)該新文件的可用性要求的高低,向所述至少一個(gè)固態(tài)盤以及所述至少一個(gè)非固態(tài)盤中的至少一個(gè)盤中寫該新文件。
19.根據(jù)權(quán)利要求17的方法,還包括響應(yīng)于從所述至少一個(gè)固態(tài)盤或所述至少一個(gè)非固態(tài)盤中讀取一文件,更新該文件的訪問頻率;在所述清理模式中,響應(yīng)于判斷該文件的訪問頻率高于預(yù)定閾值,該文件僅存在于所述至少一個(gè)非固態(tài)盤中,且所述至少一個(gè)固態(tài)盤中存在足夠的可用空間,將該文件從所述至少一個(gè)非固態(tài)盤中轉(zhuǎn)移到所述至少一個(gè)固態(tài)盤中;以及在所述清理模式中,響應(yīng)于判斷該文件的訪問頻率低于預(yù)定閾值,且該文件僅存在于所述至少一個(gè)固態(tài)盤中,將該文件從所述至少一個(gè)固態(tài)盤轉(zhuǎn)移到所述至少一個(gè)非固態(tài)盤。
20.根據(jù)權(quán)利要求13的方法,還包括在所述清理模式中,掃描并合并所述盤陣列中至少一個(gè)固態(tài)盤中的部分占用的數(shù)據(jù)塊,來形成更多完整的空閑塊。
21.根據(jù)權(quán)利要求13的方法,還包括響應(yīng)于如下事件之一,進(jìn)入所述清理模式在預(yù)定時(shí)間閾值內(nèi),未接收到讀請(qǐng)求和寫請(qǐng)求;判斷磁盤帶寬占用低于預(yù)定帶寬占用閾值;判斷用于接收來自上層應(yīng)用的讀請(qǐng)求和寫請(qǐng)求的隊(duì)列長(zhǎng)度低于預(yù)定隊(duì)列長(zhǎng)度閾值;接收到進(jìn)入清理模式的命令。
22.根據(jù)權(quán)利要求21的方法,還包括響應(yīng)于判斷非固態(tài)盤中連續(xù)的空閑塊占所有空閑塊的比例超過預(yù)定比例閾值,退出所述清理模式。
23.根據(jù)權(quán)利要求21的方法,其中,所述清理模式中產(chǎn)生的I/O請(qǐng)求的處理優(yōu)先級(jí)低于來自上層應(yīng)用的讀請(qǐng)求和寫請(qǐng)求的處理優(yōu)先級(jí)。
24.根據(jù)權(quán)利要求13的方法,其中,所述方法是通過操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)器實(shí)現(xiàn)的。
全文摘要
公開了一種存儲(chǔ)系統(tǒng)和用于實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的方法,該存儲(chǔ)系統(tǒng)包括包括至少一個(gè)固態(tài)盤以及至少一個(gè)非固態(tài)盤的盤陣列;以及存儲(chǔ)控制裝置,其被配置為響應(yīng)于進(jìn)入清理模式,掃描并移動(dòng)所述盤陣列中至少一個(gè)非固態(tài)盤中的數(shù)據(jù)塊,來形成更多連續(xù)的空閑塊。本發(fā)明的存儲(chǔ)系統(tǒng)具有良好的讀寫性能、較高的數(shù)據(jù)可靠性和可用性、以及較低的成本。
文檔編號(hào)G06F3/06GK102298506SQ20101021353
公開日2011年12月28日 申請(qǐng)日期2010年6月24日 優(yōu)先權(quán)日2010年6月24日
發(fā)明者張海勇, 王海川, 趙邑新, 韓竹 申請(qǐng)人:國際商業(yè)機(jī)器公司