緩存設(shè)備和存儲系統(tǒng)之間同步快照的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于存儲技術(shù)領(lǐng)域,具體說涉及一種緩存設(shè)備和存儲系統(tǒng)之間同步快照的方法和裝置。
【背景技術(shù)】
[0002]存儲區(qū)域網(wǎng)絡(luò)(StorageArea Network, SAN)、網(wǎng)絡(luò)附屬存儲(Network AttachedStorage, NAS)等技術(shù)的發(fā)展,實現(xiàn)了用戶與存儲系統(tǒng)的分離,用戶能夠通過網(wǎng)絡(luò)等方式訪問存儲系統(tǒng)。這種存儲服務(wù)方式具有高可用性、高可靠性、訪問連接靈活、易于進(jìn)行主機(jī)迀移和負(fù)載均衡、能提供共享訪問等優(yōu)勢,在當(dāng)前的云計算、大數(shù)據(jù)應(yīng)用等諸多領(lǐng)域中被廣泛使用。
[0003]隨著訪問存儲系統(tǒng)的用戶增加,存儲系統(tǒng)自身的性能往往成為制約存儲服務(wù)的重要瓶頸。解決該問題的方法之一是在用戶和存儲系統(tǒng)之間增加高速的緩存設(shè)備,以期在容量、價格、性能之間找到一個平衡。
[0004]用戶訪問存儲系統(tǒng)時,除了一般的讀寫存儲服務(wù)外,也常常執(zhí)行數(shù)據(jù)備份、數(shù)據(jù)克隆、數(shù)據(jù)快照等“較為高級”的操作。緩存設(shè)備的引入,對執(zhí)行這些“較為高級”的操作帶來一定困難。為了保證數(shù)據(jù)的完整性和一致性,一般會把緩存設(shè)備中的數(shù)據(jù)全部復(fù)制到存儲系統(tǒng)后再執(zhí)行數(shù)據(jù)備份、數(shù)據(jù)克隆、數(shù)據(jù)快照等操作。容量較大的緩存設(shè)備復(fù)制數(shù)據(jù)需要相當(dāng)長的時間,同時還要凍結(jié)存儲系統(tǒng)的讀寫操作。要實現(xiàn)秒級的數(shù)據(jù)快照或數(shù)據(jù)克隆,這顯然是無法容忍的。
[0005]在說明書“【背景技術(shù)】”部分公開的內(nèi)容,有助于本領(lǐng)域技術(shù)人員理解本發(fā)明的技術(shù)方案,但不應(yīng)據(jù)此認(rèn)為這些內(nèi)容一定屬于現(xiàn)有技術(shù)或公知常識。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提供一種緩存設(shè)備和存儲系統(tǒng)之間同步快照的方法,該方法與客戶端、存儲系統(tǒng)、存儲服務(wù)代理設(shè)備以及緩存設(shè)備相關(guān)。
[0007]本發(fā)明所述的客戶端,泛指一切能夠讓用戶通過網(wǎng)絡(luò)或其他方式訪問存儲系統(tǒng)的設(shè)備或裝置。客戶端常見的功能包括發(fā)送用戶的存儲服務(wù)請求,接收存儲服務(wù)請求的反饋等。所述的存儲服務(wù)請求不僅包括數(shù)據(jù)讀寫等基本的存儲服務(wù)請求,也包括數(shù)據(jù)克隆、數(shù)據(jù)快照等“較為高級”的存儲服務(wù)請求。根據(jù)不同的技術(shù)方案或技術(shù)需求,客戶端還可以具有其他功能??蛻舳丝梢酝ㄟ^軟件、硬件或軟硬件結(jié)合的方式實現(xiàn)。
[0008]本發(fā)明所述的存儲系統(tǒng),泛指一切能夠為用戶提供存儲服務(wù)的設(shè)備或裝置。存儲系統(tǒng)常見的功能包括接收存儲服務(wù)請求、處理存儲服務(wù)請求、實施存儲(即直接存儲數(shù)據(jù))、反饋存儲服務(wù)結(jié)果等。所述的存儲服務(wù)請求不僅包括數(shù)據(jù)讀寫等基本的存儲服務(wù)請求,也包括數(shù)據(jù)克隆、數(shù)據(jù)快照等“較為高級”的存儲服務(wù)請求。根據(jù)不同的技術(shù)方案或技術(shù)需求,存儲系統(tǒng)還可以具有其他功能。以上功能中,直接存儲數(shù)據(jù)的功能只能通過半導(dǎo)體器件等物理介質(zhì)即硬件的方式實現(xiàn),其他功能可以通過軟件、硬件或軟硬件結(jié)合的方式實現(xiàn)。
[0009]本發(fā)明所述的存儲服務(wù)代理設(shè)備,泛指一切能夠為通過網(wǎng)絡(luò)或其他方式訪問存儲系統(tǒng)的客戶端提供代理服務(wù)的設(shè)備或裝置。存儲服務(wù)代理設(shè)備一般通過調(diào)用存儲系統(tǒng)的應(yīng)用程序編程接口(Applicat1n Programming Interface,API)來與存儲系統(tǒng)進(jìn)行數(shù)據(jù)交換。所有客戶端對存儲系統(tǒng)的直接訪問,都必須通過存儲服務(wù)代理設(shè)備執(zhí)行代理操作(客戶端的一些存儲服務(wù)請求會先訪問緩存設(shè)備,通過緩存設(shè)備與存儲系統(tǒng)建立聯(lián)系,這不視為直接訪問存儲系統(tǒng),不受此限制)。在本發(fā)明一種可選擇的技術(shù)方案中,存儲服務(wù)代理設(shè)備還有一個重要功能,即管理數(shù)據(jù)塊的快照序號和數(shù)據(jù)標(biāo)識,該功能通過快照序號管理模塊實現(xiàn)。存儲服務(wù)代理設(shè)備可以通過軟件、硬件或軟硬件結(jié)合的方式實現(xiàn)。
[0010]本發(fā)明所述的緩存設(shè)備,泛指一切能夠作為存儲系統(tǒng)的緩存使用的設(shè)備或裝置。緩存設(shè)備的存儲速度高于存儲系統(tǒng)的存儲速度??蛻舳讼虼鎯ο到y(tǒng)發(fā)出讀操作或?qū)懖僮髡埱髸r,需要先訪問緩存設(shè)備。緩存設(shè)備可以通過硬件或軟硬件結(jié)合的方式實現(xiàn)。
[0011]作為另一種可選擇的簡化實施方式,客戶端直接訪問存儲系統(tǒng),不設(shè)置存儲服務(wù)代理設(shè)備,這時快照序號管理模塊設(shè)置在存儲系統(tǒng)中。
[0012]緩存設(shè)備和存儲系統(tǒng)之間同步快照的方法,包括:
[0013]根據(jù)客戶端的數(shù)據(jù)快照請求生成快照序號和數(shù)據(jù)標(biāo)識,并將快照序號和數(shù)據(jù)標(biāo)識返回客戶端;
[0014]客戶端請求寫操作時附帶最新快照序號,判斷客戶端所需的數(shù)據(jù)塊是否在緩存設(shè)備中,根據(jù)判斷結(jié)果進(jìn)行處理;
[0015]客戶端請求讀操作時附帶快照序號和數(shù)據(jù)標(biāo)識,判斷客戶端所需的數(shù)據(jù)塊是否是快照數(shù)據(jù)塊,根據(jù)判斷結(jié)果進(jìn)行處理。
[0016]本發(fā)明涉及的所有數(shù)據(jù),以數(shù)據(jù)塊為基本單位(最小單位)。無論易失性存儲器如隨機(jī)存取存儲器(RAM)還是非易失性存儲器如閃存(Flash Memory)中存儲的數(shù)據(jù),現(xiàn)有技術(shù)都可以實現(xiàn)以數(shù)據(jù)塊為基本單位進(jìn)行操作。
[0017]本發(fā)明中涉及的數(shù)據(jù)塊有數(shù)據(jù)序號和“干凈/臟”狀態(tài)兩個標(biāo)志。數(shù)據(jù)塊執(zhí)行復(fù)制等操作的過程中,數(shù)據(jù)序號不會改變,這樣通過數(shù)據(jù)序號就可以對數(shù)據(jù)塊進(jìn)行識別。數(shù)據(jù)塊中的數(shù)據(jù)與最初始數(shù)據(jù)相比沒有改動,顯示“干凈”狀態(tài);數(shù)據(jù)塊中的數(shù)據(jù)與最初始數(shù)據(jù)相比有了改動,則顯示“臟”狀態(tài)。因為復(fù)制等操作導(dǎo)致數(shù)據(jù)塊處于同一存儲設(shè)備不同位置甚至不同存儲器上時,通過“干凈/臟”狀態(tài)很容易判斷數(shù)據(jù)塊中的數(shù)據(jù)是否被改動過?,F(xiàn)有技術(shù)可以實現(xiàn)數(shù)據(jù)塊的數(shù)據(jù)序號和“干凈/臟”狀態(tài)兩個標(biāo)志。此外,數(shù)據(jù)塊還附帶有快照序號(簡稱seq)和數(shù)據(jù)標(biāo)識(簡稱flag)兩個特征信息??煺招蛱柺潜景l(fā)明技術(shù)方案中,客戶端向存儲系統(tǒng)請求數(shù)據(jù)快照操作時,快照序號管理模塊生成的數(shù)值,該數(shù)值與數(shù)據(jù)塊的快照操作次數(shù)相關(guān)。快照序號常見的生成規(guī)則是將數(shù)據(jù)塊的初始快照序號設(shè)為0,數(shù)據(jù)塊每進(jìn)行一次快照操作相應(yīng)的快照序號增加I??煺招蛱柍烁綆г诖鎯ο到y(tǒng)和緩存設(shè)備中所有與快照操作相關(guān)的數(shù)據(jù)塊上外,還要返回客戶端。數(shù)據(jù)標(biāo)識則是本發(fā)明技術(shù)方案中用于區(qū)分?jǐn)?shù)據(jù)塊是原始數(shù)據(jù)塊還是快照數(shù)據(jù)塊的標(biāo)志。數(shù)據(jù)標(biāo)識常見的生成規(guī)則是將原始數(shù)據(jù)塊的數(shù)據(jù)標(biāo)識設(shè)為1,將快照數(shù)據(jù)塊的數(shù)據(jù)標(biāo)識設(shè)為O。同樣,數(shù)據(jù)標(biāo)識除了附帶在所有與快照操作相關(guān)的數(shù)據(jù)塊上外,還要返回客戶端。
[0018]數(shù)據(jù)快照操作,即為存儲系統(tǒng)中某一時刻的全部數(shù)據(jù)制作一個副本,該副本其只能讀不能寫。存儲系統(tǒng)中被執(zhí)行快照操作的數(shù)據(jù)可讀可寫,稱為原始數(shù)據(jù)(簡稱head數(shù)據(jù))。顯然,原始數(shù)據(jù)可以被執(zhí)行多次快照操作,每執(zhí)行一次快照操作原始數(shù)據(jù)中數(shù)據(jù)塊的快照序號就會相應(yīng)改變。同時,將只能讀不能寫的副本稱為快照數(shù)據(jù)(簡稱snap數(shù)據(jù))??梢杂卸鄠€快照數(shù)據(jù)對應(yīng)相同的原始數(shù)據(jù),但這些快照數(shù)據(jù)中數(shù)據(jù)塊的快照序號顯然是不同的。快照數(shù)據(jù)和原始數(shù)據(jù)一樣,既可以存儲在存儲系統(tǒng)中,也可以存儲在緩存設(shè)備中??煺諗?shù)據(jù)不能被更改,所以緩存設(shè)備中的快照數(shù)據(jù)不會被復(fù)制到存儲系統(tǒng)中。數(shù)據(jù)快照操作由客戶端直接訪問存儲系統(tǒng)實現(xiàn)。數(shù)據(jù)快照執(zhí)行過程中,存儲系統(tǒng)會給相關(guān)的原始數(shù)據(jù)和快照數(shù)據(jù)配置數(shù)據(jù)標(biāo)識,并將數(shù)據(jù)標(biāo)識信息傳遞給快照序號管理模塊,由快照序號管理模塊返回客戶端。
[0019]由于多個客戶端都可以訪問存儲系統(tǒng),可能某一客戶端對某原始數(shù)據(jù)進(jìn)行快照操作后其他客戶端又對該原始數(shù)據(jù)進(jìn)行了快照操作,這會導(dǎo)致原始數(shù)據(jù)中數(shù)據(jù)塊的快照序號改變,而在先進(jìn)行操作的客戶端獲得的快照序號就不是最新的快照序號了。
[0020]為了解決這一問題,快照序號管理模塊引入事件訂閱機(jī)制,通過事件訂閱機(jī)制向客戶端返回最新的快照序號。所謂的事件訂閱機(jī)制,指某客戶端對某一原始數(shù)據(jù)請求快照操作后,快照序號管理模塊就視為該客戶端對該原始數(shù)據(jù)的后續(xù)快照操作進(jìn)行了 “訂閱”,如果其他客戶端對該原始數(shù)據(jù)進(jìn)行快照操作導(dǎo)致了原始數(shù)據(jù)中數(shù)據(jù)塊的快照序號改變,快照序號管理模塊也會將改變后的快照序號返回該客戶端(盡管該客戶端自身并沒有再請求快照操作)。一般情況下,數(shù)據(jù)塊的數(shù)據(jù)標(biāo)識不會改變,因此事件訂閱機(jī)制主要針對快照序號。如果特殊情況導(dǎo)致數(shù)據(jù)塊的數(shù)據(jù)標(biāo)識改變,基于相同原理,也可以通過事件訂閱機(jī)制向客戶端返回最新的數(shù)據(jù)標(biāo)識。
[0021]客戶端請求讀操作時,讀操作中應(yīng)附帶所需數(shù)據(jù)塊的快照序號和數(shù)據(jù)標(biāo)識。當(dāng)然,客戶端請求讀操作時,應(yīng)該附帶所需數(shù)據(jù)塊的數(shù)據(jù)序號,若有必要還應(yīng)該附帶所需數(shù)據(jù)塊的“干凈/臟”狀態(tài)標(biāo)志。由于這兩個標(biāo)志屬于現(xiàn)有技術(shù),在“緩存設(shè)備和存儲系統(tǒng)之間同步快照的方法”的步驟描述中將其省略,只寫為“客戶端請求讀操作時附帶快照序號和數(shù)據(jù)標(biāo)識”,這并不意味著讀操作不需要附帶數(shù)據(jù)序號以及必要時附帶“干凈/臟”狀態(tài)標(biāo)志,不影響技術(shù)方案的完整性?!熬彺嬖O(shè)備和存儲系統(tǒng)之間同步快照的方法”的步驟描述中還有諸多類似的對現(xiàn)有技術(shù)的省略,不再一一指明。對本發(fā)明中所有此類省略應(yīng)做相同的理解,不影響技術(shù)方案的完整性。
[0022]客戶端向存儲系統(tǒng)發(fā)起讀操作或?qū)懖僮髡埱髸r,需要先訪問存儲速度較快的緩存設(shè)備,緩存設(shè)備根據(jù)讀寫請求中附帶的快照序號和數(shù)據(jù)標(biāo)識進(jìn)行判斷,根據(jù)判斷結(jié)果分別予以不同處理。由快照數(shù)據(jù)管理模塊實現(xiàn)這一功能。
[0023]客戶端請求寫操作時附帶最新快照序號,判斷客戶端所需的數(shù)據(jù)塊是否在緩存設(shè)備中,根據(jù)判斷結(jié)果進(jìn)行處理。所述的處理包括:
[0024]如果客戶端所需的數(shù)據(jù)塊不在緩存設(shè)備中,則向客戶端返回存儲系統(tǒng)中對應(yīng)的附帶最新快照序號的數(shù)據(jù)塊。
[0025]如果客戶端所需的數(shù)據(jù)塊在緩存設(shè)備中,則判斷緩存設(shè)備中的對應(yīng)數(shù)據(jù)塊是否是原始數(shù)據(jù)塊,根據(jù)判斷結(jié)果進(jìn)行處理。所述的處理包括:
[0026]如果緩存設(shè)備中的對應(yīng)數(shù)據(jù)塊不是原始數(shù)據(jù)塊(即是快照數(shù)據(jù)塊),則向客戶端返回存儲系統(tǒng)中對應(yīng)的附帶最新快照序號的原始數(shù)據(jù)塊。
[00