是,預先設(shè)置的對應關(guān)系還可以采用(Υ,Χ)-Ζ表示,Χ,Υ,Ζ的含義可參 閱上述X,Υ,Ζ,還可以采用其他表示方法,具體此處不作限定。
[0056] S404、從與確定出的快照卷的標識對應的快照卷中讀取待讀取數(shù)據(jù)。
[0057] 存儲設(shè)備確定快照卷的標識之后,根據(jù)快照卷的標識確定快照卷,從快照卷中讀 取待讀取數(shù)據(jù)。從快照卷中讀取數(shù)據(jù)的過程可參閱現(xiàn)有技術(shù),此處不再贅述。
[0058] 需要說明的是,若數(shù)據(jù)存儲在源卷中,存儲設(shè)備根據(jù)卷的標識和數(shù)據(jù)塊的標識,以 及預設(shè)的對應關(guān)系也可以一次查找到源卷的卷標識,再從源卷中讀取數(shù)據(jù),具體實現(xiàn)過程 與上述從快照卷中讀取數(shù)據(jù)的過程相似,此處不再贅述。
[0059] 為便于理解,下面以一具體應用場景對本申請中的讀數(shù)據(jù)的方法進行詳細說明:
[0060] 存儲設(shè)備包括源卷、快照卷1、快照卷2和快照卷3,源卷、快照卷1、快照卷2和快照 卷3的卷標識分別以0,1,2,3為例,每個卷都包括ChunkO,Chunkl,Chunk2,Chunk3, Chunk4,…,Chunkn,待讀取數(shù)據(jù)以datal為例,假定datal存儲在快照卷1的Chunk4中,快照 卷2為快照卷1的下一級快照,快照卷3為快照卷2的下一級快照,如圖5所示;建立的訪問加 速表如表2所不:
[0061] L0062J 表 2
[0063]當主機下發(fā)讀I/O指令,讀I/O指令包括卷ID和地址,卷ID以3為例,地址以300為 例,Chunk的大小以64kb為例,確定Chunk ID = 300/64 = 4,根據(jù)(4,3)和預先設(shè)置的對應關(guān) 系,可以確定datal所在卷為卷1,即快照卷1,從快照卷1中讀取數(shù)據(jù)。
[0064] 由此可見,存儲設(shè)備可以通過一次查找確定數(shù)據(jù)所在快照,減少了查找數(shù)據(jù)所用 時間,因此提高了讀數(shù)據(jù)的效率。同時,在多次讀快照的情況下,查找次數(shù)為〇,或查找次數(shù) 為1,因此讀數(shù)據(jù)的時間非常接近,避免了現(xiàn)有技術(shù)中讀數(shù)據(jù)的時間相差較大的情況,因此 提高了讀數(shù)據(jù)的穩(wěn)定性。
[0065] 在實際應用中,若I/O指定的快照卷所映射的數(shù)據(jù)為需保護數(shù)據(jù),則需要先將需保 護數(shù)據(jù)進行保護,再寫入主機下發(fā)的數(shù)據(jù),才能保護需保護數(shù)據(jù),在現(xiàn)有技術(shù)中,存儲設(shè)備 需要逐一查詢快照卷,直至查找到需保護數(shù)據(jù)所在卷,才能獲取需保護數(shù)據(jù),查詢次數(shù)越 多,寫數(shù)據(jù)速度越慢。
[0066]為了提高上述數(shù)據(jù)處理過程的數(shù)據(jù)處理效率,本申請?zhí)峁┮环N數(shù)據(jù)處理方法,本 申請實施例提供的讀數(shù)據(jù)方法的執(zhí)行主體可以是如圖1所示的控制器22。請參閱圖6,上述 數(shù)據(jù)處理方法包括:
[0067] S601、接收寫數(shù)據(jù)指令,寫數(shù)據(jù)指令包括待寫數(shù)據(jù)、卷的標識和起始地址;
[0068] 本實施例中,主機下發(fā)寫數(shù)據(jù)指令時,存儲設(shè)備接收寫數(shù)據(jù)指令。其中,寫數(shù)據(jù)指 令包括待寫數(shù)據(jù)、卷的標識和起始地址。
[0069] S602、根據(jù)起始地址確定數(shù)據(jù)塊標識;
[0070] 步驟S602與圖4所示實施例中步驟S402相似,此處不再贅述。
[0071] S603、根據(jù)卷的標識、數(shù)據(jù)塊標識以及預先設(shè)置的對應關(guān)系,確定需保護數(shù)據(jù)所在 快照卷的標識,預先設(shè)置的對應關(guān)系包括卷的標識、數(shù)據(jù)塊標識,與快照卷的標識之間的對 應關(guān)系;
[0072] 本實施例中,寫數(shù)據(jù)指令包含的卷的標識和數(shù)據(jù)塊的標識,所對應的卷的數(shù)據(jù)塊 所映射的數(shù)據(jù)為需保護數(shù)據(jù)。需保護數(shù)據(jù)可以是重要等級的數(shù)據(jù),或重要用戶的數(shù)據(jù),或其 他類型需要要被保護的數(shù)據(jù),此處不作限定。
[0073] 具體的,根據(jù)卷的標識、數(shù)據(jù)塊標識以及預先設(shè)置的對應關(guān)系,確定需保護數(shù)據(jù)所 在快照卷的標識的具體過程與圖2所示實施例中步驟203相似,此處不再贅述。
[0074] S604、從與確定出的快照卷的標識對應的快照卷中獲取需保護數(shù)據(jù),將需保護數(shù) 據(jù)寫入卷的標識對應的卷;
[0075] 存儲設(shè)備確定快照卷的標識之后,根據(jù)快照卷的標識確定快照卷,從快照卷中獲 取需保護數(shù)據(jù),并確定與寫指令包括的卷標識對應的卷,將需保護數(shù)據(jù)寫入該卷。主機再讀 該卷時,可以從其中讀取需保護數(shù)據(jù),從而實現(xiàn)了數(shù)據(jù)保護功能。
[0076] 作為一個可選的實施例,將需保護數(shù)據(jù)寫入卷的標識對應的卷具體可以通過以下 方式實現(xiàn):將需保護數(shù)據(jù)寫入數(shù)據(jù)保護空間,數(shù)據(jù)保護空間屬于與卷的標識對應的卷。
[0077] 具體的,在存儲設(shè)備中,每個卷還包括數(shù)據(jù)保護空間,獲取需保護數(shù)據(jù)之后,可以 將需保護數(shù)據(jù)寫入卷的數(shù)據(jù)保護空間,以實現(xiàn)數(shù)據(jù)保護功能。
[0078] S605、將待寫數(shù)據(jù)寫入卷的標識對應的卷,并在預先設(shè)置的對應關(guān)系中,將快照卷 的標識修改為卷的標識。
[0079] 將待寫數(shù)據(jù)寫入卷的標識對應的卷,并將快照卷的標識修改為卷的標識之后,當 主機讀該卷時,存儲設(shè)備根據(jù)對應關(guān)系在該卷中查找,并讀取主機最后寫入該卷的數(shù)據(jù)。
[0080] 需要說明的是,在預先設(shè)置的對應關(guān)系中,將快照卷的標識修改卷的標識之后,可 以不再修改卷的標識和數(shù)據(jù)塊的標識對應的卷的標識,以避免重復修改。
[0081] 作為一個可選的實施例,將待寫數(shù)據(jù)寫入卷的標識對應的卷具體可以通過以下方 式實現(xiàn):根據(jù)卷的標識以及數(shù)據(jù)塊標識,將待寫數(shù)據(jù)寫入卷的數(shù)據(jù)塊,卷的數(shù)據(jù)塊與數(shù)據(jù)塊 標識對應。
[0082] 具體的,將需保護數(shù)據(jù)寫入卷的標識對應的卷之后,再將待寫數(shù)據(jù)寫入該卷的數(shù) 據(jù)塊,完成寫數(shù)據(jù)的過程,以便主機下次從該卷中讀取上述待寫數(shù)據(jù)。
[0083] 需要說明的是,若需保護數(shù)據(jù)存儲在源卷中,本發(fā)明根據(jù)卷的標識和數(shù)據(jù)塊的標 識,以及預設(shè)的對應關(guān)系也可以一次查找到源卷的卷標識,再從源卷中讀取需保護數(shù)據(jù),具 體實現(xiàn)過程與上述從快照卷中獲取需保護數(shù)據(jù)的過程相似,此處不再贅述。
[0084] 作為一個可選的實施例,每個快照卷包含有預先設(shè)置的對應關(guān)系。
[0085] 具體的,存儲設(shè)備根據(jù)寫數(shù)據(jù)指令查詢?nèi)我庖粋€快照卷時,就能夠根據(jù)其包含的 預設(shè)對應關(guān)系確定需保護數(shù)據(jù)所在快照,提供了實施的可行性。
[0086]為便于理解,下面以一具體應用場景對本申請中的數(shù)據(jù)處理方法進行詳細說明:
[0087] 存儲設(shè)備包括源卷、快照卷1、快照卷2和快照卷3,源卷、快照卷1、快照卷2和快照 卷3的卷標識分別以0,1,2,3為例,每個卷都包括ChunkO,Chunkl,Chunk2,Chunk3, Chunk4,···,Chunkn,需保護數(shù)據(jù)以data2為例,假定data2存儲在快照卷1的Chunk5中,快照 卷2為快照卷1的下一級快照,快照卷3為快照卷2的下一級快照,如圖7所示;建立的訪問加 速表如表3所不:
[0088]
[0090]表 3
[0091]當主機下發(fā)寫10指令時,寫I/O指令包括data3、卷ID和地址,卷ID以3為例,數(shù)據(jù)塊 標識以5為例,存儲設(shè)備根據(jù)(5,3)和