TWI771933B - 借助命令相關過濾器來進行重複資料刪除管理的方法、主裝置以及儲存伺服器 - Google Patents
借助命令相關過濾器來進行重複資料刪除管理的方法、主裝置以及儲存伺服器 Download PDFInfo
- Publication number
- TWI771933B TWI771933B TW110107087A TW110107087A TWI771933B TW I771933 B TWI771933 B TW I771933B TW 110107087 A TW110107087 A TW 110107087A TW 110107087 A TW110107087 A TW 110107087A TW I771933 B TWI771933 B TW I771933B
- Authority
- TW
- Taiwan
- Prior art keywords
- fingerprint
- commands
- storage
- data
- deduplication
- Prior art date
Links
- 238000003860 storage Methods 0.000 title claims abstract description 382
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000007726 management method Methods 0.000 claims description 77
- 238000012545 processing Methods 0.000 claims description 77
- 230000008859 change Effects 0.000 claims description 8
- 238000013523 data management Methods 0.000 claims description 5
- 239000007787 solid Substances 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 38
- 230000006870 function Effects 0.000 description 32
- 238000013507 mapping Methods 0.000 description 12
- 238000012217 deletion Methods 0.000 description 11
- 230000037430 deletion Effects 0.000 description 11
- 230000008030 elimination Effects 0.000 description 11
- 238000003379 elimination reaction Methods 0.000 description 11
- 230000002085 persistent effect Effects 0.000 description 9
- 230000004044 response Effects 0.000 description 9
- 238000013500 data storage Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000001914 filtration Methods 0.000 description 6
- 238000012790 confirmation Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 102100024113 40S ribosomal protein S15a Human genes 0.000 description 2
- 102220475408 Acyl-coenzyme A thioesterase MBLAC2_S89A_mutation Human genes 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 102220118644 rs61736727 Human genes 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 101001118566 Homo sapiens 40S ribosomal protein S15a Proteins 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 102200094897 rs121913558 Human genes 0.000 description 1
- 102220238245 rs1555952639 Human genes 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明揭露了一種借助命令相關過濾器來進行重複資料刪除管理的方法和相關設備,該方法可包含:利用在儲存伺服器中運行在主裝置上的多個程式模組中的至少一程式模組,以控制儲存伺服器來將使用者的多組使用者資料寫入至儲存裝置層,以及利用在多個程式模組中的基於指紋的重複資料刪除管理模組,以創造多個指紋,並且將該多個指紋儲存至指紋儲存器,以作為多組使用者資料的各自代表,以最小化有關重複資料刪除控制的計算量;以及利用命令相關過濾器來消除非必要命令,以執行單一命令而非該組命令中的全部命令。
Description
本發明係有關儲存控制,尤指一種借助命令相關過濾器來進行重複資料刪除管理的方法和設備,其中該設備的範例可包含但不限於:整個儲存伺服器、在儲存伺服器中的主裝置、在主裝置中的處理電路以及在處理電路中運行對應至該方法之一個或多個程式模組的至少一個處理器/處理器核心(例如:中央處理器(Central Processing Unit,CPU)/中央處理器核心)。
伺服器可用來儲存使用者資料,例如,儲存伺服器可用來進行能夠為使用者儲存資料的遠端儲存(例如雲端伺服器),隨著儲存伺服器的使用者數量可能增加,以及使用者的資料可能隨著時間增加,儲存伺服器的儲存容量可能容易變得不足,在儲存伺服器中加入更多儲存裝置可能有助於擴展儲存伺服器的儲存容量,然而,可能會發生一些問題,例如,儲存伺服器的整體花費可能會急遽增加,又例如,由於儲存伺服器的架構,在儲存伺服器中的儲存裝置的數量可能會有上限,在現有技術中已經提出了一種重複資料刪除方法,以嘗試降低用完儲存伺服器的儲存容量的速度,但是儲存服務器的整體性能可能會
因為相關的計算量而降低,因此,需要一種新穎的架構來增強儲存控制,以允許儲存伺服器在日常使用中正常且平穩地運行。
本發明之一目的在於揭露一種借助命令相關過濾器來進行重複資料刪除管理的方法,以及揭露相關設備(例如:儲存伺服器、儲存伺服器中的主裝置等等),以解決上述問題。
本發明之另一目的在於揭露一種借助命令相關過濾器來進行重複資料刪除管理的方法,以及揭露相關設備(例如:儲存伺服器、儲存伺服器中的主裝置等等),以在不引入副作用的情況下或藉由不太可能引入副作用的方式來達到最佳性能。
本發明之至少一實施例揭露了一種借助命令相關過濾器來進行重複資料刪除管理的方法,其中該方法係應用於儲存伺服器,該方法可包含有:
利用在儲存伺服器內的主裝置上運行的多個程式模組中的至少一個程式模組,以控制儲存伺服器將儲存伺服器的使用者的多組使用者資料寫入至儲存伺服器的儲存裝置層,並且利用在多個程式模組中的基於指紋的重複資料刪除管理模組來創造多個指紋,並將該多個指紋儲存至儲存伺服器的指紋儲存器,以作為儲存伺服器的多個使用者資料的各自代表,用來最小化有關重複資料刪除控制的計算量,以增加儲存伺服器的整體效能,其中儲存伺服器包含有主裝置以及儲存裝置層,儲存裝置層包含有耦接於主裝置的至少一個儲存裝置,主裝置用來控制儲存伺服器的操作,且該至少一個儲存裝置用來為儲存伺服器儲存資訊;以及利用基於指紋的重複資料刪除管理模組中的命令相關過濾
器,以監控在基於指紋的重複資料刪除管理模組中多個處理路徑之中的一處理路徑上的多個命令,至少根據一組命令所分別攜帶的位址,決定在多個命令中的有關使用者資料變化的該組命令,並且將該組命令轉換成單一命令以消除該組命令中的一個或多個非必要的命令,用來執行該單一命令而非執行該組命令中的所有命令,因此更進一步地增加儲存伺服器的整體效能。
除了上述方法外,本發明另揭露了一種主裝置,該主裝置可包含有處理電路,其用來控制主裝置以在儲存伺服器中進行基於指紋的重複資料刪除管理,其中儲存伺服器包含有主裝置以及儲存裝置層,儲存裝置層包含有耦接於主裝置的至少一個儲存裝置,主裝置用來控制儲存伺服器的操作,且該至少一個儲存裝置用來為儲存伺服器儲存資訊,例如,在儲存伺服器中的主裝置上運行的多個程式模組中的至少一個程式模組控制儲存伺服器,以將儲存伺服器的使用者的多組使用者資料寫入至儲存伺服器的儲存裝置層,且在多個程式模組中的基於指紋的重複資料刪除管理模組創造多個指紋,並將該多個指紋儲存至儲存伺服器的指紋儲存器,以作為儲存伺服器上多組使用者資料的各自代表,用來最小化有關重複資料刪除控制的計算量,以增加儲存伺服器的整體性能;以及在基於指紋的重複資料刪除管理模組中的命令相關過濾器監控在基於指紋的重複資料刪除管理模組中多個處理路徑之中的一處理路徑上的多個命令,至少根據一組命令所分別攜帶的位址,決定在多個命令中的有關使用者資料變化的該組命令,並且將該組命令轉換成單一命令以消除該組命令中的一個或多個非必要的命令,用來執行該單一命令而非執行該組命令中的所有命令,因此更進一步地增加儲存伺服器的整體效能。
除了上述方法外,本發明另揭露了一種儲存伺服器,該儲存伺服器
可包含有主裝置以及儲存裝置層,其中主裝置用來控制儲存伺服器的操作,例如,主裝置可包含有處理電路其用來控制主裝置,以在儲存伺服器中進行基於指紋的重複資料刪除管理,此外,儲存裝置層可包含有耦接於主裝置的至少一個儲存裝置,且該至少一個儲存裝置用來為儲存伺服器儲存資訊,例如,在儲存伺服器中的主裝置上運行的多個程式模組中的至少一個程式模組控制儲存伺服器,以將儲存伺服器的使用者的多組使用者資料寫入至儲存伺服器的儲存裝置層,且在多個程式模組中的基於指紋的重複資料刪除管理模組創造多個指紋,並將該多個指紋儲存至儲存伺服器的指紋儲存器,以作為儲存伺服器上多組使用者資料的各自代表,用來最小化有關重複資料刪除控制的計算量,以增加儲存伺服器的整體性能;以及在基於指紋的重複資料刪除管理模組中的命令相關過濾器監控在基於指紋的重複資料刪除管理模組中多個處理路徑之中的一處理路徑上的多個命令,至少根據一組命令所分別攜帶的位址,決定在多個命令中的有關使用者資料變化的該組命令,並且將該組命令轉換成單一命令以消除該組命令中的一個或多個非必要的命令,用來執行該單一命令而非執行該組命令中的所有命令,因此更進一步地增加儲存伺服器的整體效能。
本發明方法和相關設備可以增加儲存伺服器的整體效能,例如,儲存伺服器可以根據該方法的多個控制方案進行操作,尤其,在運行對應該方法的一個或多個程式模組的處理電路的控制下,儲存伺服器可以借助命令相關過濾器進行重複資料刪除管理,以在不引入副作用的情況下或藉由不太可能引入副作用的方式來達到最佳性能。
10:儲存伺服器
50:主裝置
52:處理電路
52P:程式模組
53:基於指紋的重複資料刪除管理模組
54:儲存介面電路
56:儲存裝置
58:網路介面電路
90:複數個儲存裝置
S01,S02A~S08A,S02B~S04B:步驟
PP(1):第一部分處理
PP(2):第二部分處理
100:重複資料刪除模組
110:重複資料刪除模組應用程式介面
120:重複資料刪除管理器
130:指紋引擎
131:過濾器
132:指紋管理器
132D:資料庫
133:指紋產生器
134:指紋匹配器
134F:過濾器
135:指紋資料管理器
136:指紋儲存器
137:指紋汰除模組
140:資料快取管理器
142:使用者資料匹配器
144:使用者資料管理器
146:使用者資料儲存器
S11,S12,S13,S14A,S14B,S15A,S15B:步驟
S21~S24:步驟
S31~S34:步驟
S41~S43:步驟
S51~S58,S59A,S59B:步驟
200:寫入緩衝器
300:容體管理器
400:持續記憶體
500:快閃陣列
S61~S66:步驟
S71~S76:步驟
S81~S88,S89A,S89B:步驟
第1圖為根據本發明一實施例之儲存伺服器的示意圖。
第2圖為根據本發明一實施例之借助命令相關過濾器來進行重複資料刪除管理的方法的示意圖。
第3圖為根據本發明一實施例之第2圖所示方法的基於指紋的重複資料刪除控制方案的示意圖。
第4圖為根據本發明一實施例之第2圖所示方法的指紋查找控制方案的示意圖。
第5圖為根據本發明一實施例之第2圖所示方法的指紋刪除控制方案的示意圖。
第6圖為根據本發明一實施例之第2圖所示方法的指紋汰除控制方案的示意圖。
第7圖為根據本發明一實施例之第2圖所示方法的位元組式比較控制方案的示意圖。
第8圖為根據本發明一實施例之第2圖所示方法的資料保存控制方案的示意圖。
第9圖為根據本發明一實施例之第2圖所示方法的資料刪除控制方案的示意圖。
第10圖為根據本發明一實施例之第2圖所示方法的存取控制方案的示意圖。
第11圖為根據本發明一實施例之第2圖所示方法的資料讀取控制方案的示意圖。
第12圖為根據本發明另一實施例之第2圖所示方法的資料讀取控制方案的示意圖,其中重複資料刪除模組具有目標資料。
第13圖為根據本發明另一實施例之第2圖所示方法的資料讀取控制方案的示意圖,其中重複資料刪除模組之前具有目標資料,但是由於汰除相對應的指紋,已經將該目標資料移除。
第14圖為根據本發明一實施例之第2圖所示方法的過濾與處理控制方案的示意圖。
第15圖為根據本發明一實施例之第2圖所示方法的更新要求控制方案的示意圖。
第16圖為在記憶體內的表上找到指紋的情況下,第15圖所示之更新要求控制方案的相關處理的一些範例的示意圖。
第17圖為在儲存器內的表上找到指紋的情況下,第15圖所示之更新要求控制方案的相關處理的一些範例的示意圖。
第18圖為在任一個表上都找不到指紋的情況下,第15圖所示之更新要求控制方案的相關處理的一些範例的示意圖。
第19圖為根據本發明一實施例之從利用命令相關過濾器獲取的增強的可擴展性的示意圖。
第1圖為根據本發明一實施例之儲存伺服器10的示意圖,儲存伺服器包含有主裝置50,且包含有至少一個儲存裝置(例如一個或多個儲存裝置),例如複數個儲存裝置90,複數個儲存裝置90係耦接於主裝置50,根據本實施例,主裝置50可用來控制儲存伺服器10的操作,且複數個儲存裝置90可用來為儲存伺服器10儲存資訊,如第1圖所示,主裝置50可包含有用來控制主裝置50的操作的處理電路52(例如至少一個處理器/處理器核心以及相關電路,例如隨機存取記憶體(Random Access Memory,RAM)、匯流排等等)、用來將主裝置50耦接至複數個儲存裝置90以及耦接至儲存裝置或記憶體裝置(例如一個或多個硬碟(Hard Disk Drive,HDD)以及/或一個或多個固態硬碟(Solid State Drive,SSD))的至少一個儲存介面電路54、以及用來將主裝置50耦接至至少一個網路(network)的網路介面電路58。該儲存裝置或該記憶體裝置可包含有至少一個儲存裝置(例如一個或多個儲存裝置),其可以統稱為儲存裝置56,例如,儲存裝置56可包含有一組儲存裝置,該組儲存裝置中的一儲存裝置可作為主裝置50的系統磁碟,且該組儲存裝置中的其他儲存裝置可用來為主裝置50儲存使用者資料,但是本發明不限於此,又例如,儲存裝置56可包含一儲存裝置,且該儲存裝置可作為主裝置50的系統磁碟。為了更好地理解,運行在處理電路52上的複數個程式模
組52P可包含有一層或多層的軟體模組(例如作業系統(operating system,OS)、驅動程式(driver)、應用程式等等),但是本發明不限於此。
根據本實施例,運行複數個程式模組52P的處理電路52(尤指基於指紋的重複資料刪除管理模組53)可用來控制主裝置50的操作,例如,控制主裝置50以在儲存伺服器10中進行基於指紋的重複資料刪除管理,且儲存介面電路54可符合一個或多個標準(例如串行先進技術附件(Serial Advanced Technology Attachment,Serial ATA或SATA)標準、外部組件互連(Peripheral Component Interconnect,PCI)標準、快速外部組件互連(Peripheral Component Interconnect Express,PCIe)標準、非揮發性記憶體儲存裝置(Non-Volatile Memory Express,NVMe)標準、非揮發性記憶體儲存裝置外接存取(NVMe-over-Fabrics,NVMeoF)標準、小型電腦系統介面(Small Computer System Interface,SCSI)標準、通用快閃記憶體儲存(Universal Flash Storage,UFS)標準等各種標準中的一個或多個標準),且可根據一個或多個標準來進行通訊,以允許運行複數個程式模組52P的處理電路52藉由儲存介面電路54存取儲存裝置56以及複數個儲存裝置90,此外,網路介面電路58可用來提供有線或無線網絡連接,且對應於一個或多個使用者的一個或多個客戶端裝置可藉由該有線或無線網絡連接來存取(例如讀取或寫入)儲存伺服器10(例如其中的儲存裝置56以及複數個儲存裝置90)中的使用者資料。
在第1圖所示的架構中,儲存伺服器10可被繪示為包含有主裝置50以及耦接於主裝置50的複數個儲存裝置90,但是本發明不限於此,例如,主裝置50可另包含有用來安裝主裝置50的元件(例如第1圖所示的處理電路52、儲存介面電路54、網路介面電路58等等)的外殼/機殼(例如電腦機殼,其可以由金
屬及/或一種或多種其他材料所製成)以及複數個儲存裝置90的至少一部份(例如部份或全部),又例如,儲存伺服器10可另包含有耦接於主裝置50以及複數個儲存裝置90的至少一部分(例如部份或全部)之間的至少一個切換電路(switch circuit)(例如一個或多個切換電路),用來進行主裝置50以及複數個儲存裝置90的至少一部分之間的訊號切換(signal switching)。
根據某些實施例,運行複數個程式模組52P的處理電路52或是儲存介面電路54可以設定複數個儲存裝置90的至少一部分(例如部分或全部),以形成儲存池(storage pool)架構,其中該儲存池架構的位址系統的相關位址(例如邏輯區塊位址(logical block address,LBA))可以是儲存池位址(例如儲存池邏輯區塊位址(storage pool LBA,SLBA)),但本發明不限於此。根據某些實施例,運行複數個程式模組52P的處理電路52或是儲存介面電路54可以設定複數個儲存裝置90的至少一部分(例如部分或全部),以形成儲存伺服器10的容錯式磁碟陣列(Redundant Array of Independent Disks,RAID)(例如全快閃陣列(All Flash Array,AFA))。
第2圖為根據本發明一實施例之借助命令相關過濾器來進行重複資料刪除管理的方法的示意圖,該方法可應用於儲存伺服器10,且運行複數個程式模組52P的處理電路52可根據該方法來控制儲存伺服器10,例如,在對應該方法之運行複數個程式模組52P的處理電路52(例如基於指紋的重複資料刪除管理模組53)的控制下,儲存伺服器10可進行平行處理(parallel processing),尤指以平行方式來執行第一部分處理PP(1)以及第二部分處理PP(2),其中第一部分處理PP(1)可包含步驟S02A~S07A的操作,以及第二部分處理PP(2)可包含有步驟S02B~S04B的操作,但是本發明不限於此。
在步驟S01中,儲存伺服器10可進行初始化,例如,儲存伺服器10(例如運行複數個程式模組52P的處理電路52)可啟用分別與該方法的多個控制方案相對應的各種控制機制,用來控制儲存伺服器10以正確且有效地操作。
在步驟S02A中,因應一個或多個寫入要求(request),儲存伺服器10可利用儲存伺服器10中運行在主裝置50上的複數個程式模組52P之中的至少一個程式模組,以控制儲存伺服器10來將儲存伺服器10的使用者(例如一個或多個使用者的任一者)的多組使用者資料寫入至儲存伺服器10的儲存裝置層(storage device layer),且利用複數個程式模組52P中的基於指紋的重複資料刪除管理模組53來創造多個指紋,並將該多個指紋(例如通過分別對多組使用者資料進行指紋計算而獲得的計算結果)儲存至儲存伺服器10的指紋儲存器,以作為儲存伺服器10上多組使用者資料的各自代表,用來最小化有關重複資料刪除控制的計算量,以增加儲存伺服器10的整體性能,其中儲存伺服器10包含有至少一個儲存裝置(例如複數個儲存裝置90)。例如,該一個或多個寫入要求可以從使用者的客戶端裝置傳送,並且可以要求將該多組使用者資料寫入至儲存伺服器10。
在步驟S03A中,當接收到一存取要求時,儲存伺服器10(例如運行複數個程式模組52P的處理電路52)可以判斷該存取要求是否為寫入要求(為簡便起見,標示為“寫入”),如果是,進入步驟S04A;如果否,則進入S08A。例如,使用者的客戶端裝置可能已經向儲存伺服器10傳送存取要求,以要求存取儲存伺服器10。
在步驟S04A中,因應該存取要求為寫入要求,儲存伺服器10可利用基於指紋的重複資料刪除管理模組53來創造至少一指紋,並將該至少一指紋儲存至指紋儲存器,以作為至少一組使用者資料的至少一代表,例如,寫入要求可以從使用者的客戶端裝置傳送,並且可以要求將該至少一組使用者資料寫入至儲存伺服器10。
在步驟S05A中,儲存伺服器10(例如運行複數個程式模組52P的處理電路52)可判斷該至少一組使用者資料(例如寫入要求所攜帶的資料,舉例來說,待寫入資料)是否與儲存在儲存伺服器10的儲存裝置層中的任一現有資料相同,如果是,進入步驟S06A;如果否,則進入步驟S07A。基於指紋的重複資料刪除管理模組53可以至少根據該指紋(例如該至少一組使用者資料的該至少一個指紋)是否與指紋儲存器中的所有多個現有指紋中的任一現有指紋相匹配,來判斷該組使用者資料是否與任一現有資料相同。
例如,在多個現有指紋中的每個指紋的位元數足夠的情況下,基於指紋的重複資料刪除管理模組53可根據該指紋是否與任一現有指紋相匹配,來判斷該組使用者資料是否與任一現有資料相同,其中如果該指紋與任一現有指紋相匹配,基於指紋的重複資料刪除管理模組53判斷該組使用者資料與任一現有資料相同,否則,基於指紋的重複資料刪除管理模組53判斷該組使用者資料與儲存裝置層中的任一現有資料不相同,但是本發明不限於此。此外,在多個現有指紋中的每個指紋的位元數不足夠的情況下,基於指紋的重複資料刪除管理模組53可以更進一步地在有需要時進行位元組式比較(byte-by-byte-compare,BBBC)操作,例如,當該指紋與任一現有指紋相匹配時,也就是說該組使用者資料有可能在儲存裝置層被找到,基於指紋的重複資料刪除管理模組53可更進
一步地進行位元組式比較操作以判斷該組使用者資料與任一現有資料相同是否為真,其中如果位元組式比較操作的位元組式比較結果指示該組使用者資料在儲存裝置層被找到,基於指紋的重複資料刪除管理模組53判斷該組使用者資料與任一現有資料相同為真,否則,基於指紋的重複資料刪除管理模組53判斷該組使用者資料與任一現有資料相同為假。又例如,當該指紋與多個現有指紋的任一個現有指紋不匹配時,也就是說該組使用者資料不可能在儲存裝置層被找到,基於指紋的重複資料刪除管理模組53可判斷該組使用者資料與任一現有資料相同為假(False)。
在步驟S06A中,因應上述至少一組使用者資料與任一現有資料相同,儲存伺服器10可進行重複資料刪除,例如,運行於處理電路52上的複數個程式模組52P中的容體管理(volume manager,VM)模組可創造該組使用者資料的連結資訊(linking information)(例如指向現有資料的軟連結(soft link)以及硬連結(hard link)),並將該連結資訊儲存至儲存伺服器10的儲存裝置層,而非將與現有資料相同的該組使用者資料儲存至儲存裝置層,因此,將來接收到該組使用者資料的讀取要求(例如讀取該組使用者資料的要求)時,儲存伺服器10(例如容體管理模組)可根據該組使用者資料的該連結資訊,來從儲存裝置層獲取現有資料,並且回傳作為該組使用者資料的現有資料。
在步驟S07A中,因應上述至少一組使用者資料與任一現有資料不相同,儲存伺服器10(例如容體管理模組)可將上述至少一組使用者資料寫入至儲存裝置層。
在步驟S08A中,因應該存取要求不是寫入要求,儲存伺服器10可進
行其他處理,例如,當該存取要求是讀取要求時,儲存伺服器10可因應該讀取要求來讀取資料。
在步驟S02B中,儲存伺服器10可利用基於指紋的重複資料刪除管理模組53中的命令相關過濾器,以監控在基於指紋的重複資料刪除管理模組53中多個處理路徑之中的一處理路徑上的多個命令。
在步驟S03B中,基於至少一個預定規則(例如一個或多個預定規則),儲存伺服器10可至少根據一組命令所分別攜帶的位址來使用命令相關過濾器,以在該多個命令中決定出有關使用者資料變化(user-data change)的該組命令,其中該組命令的命令數可大於或等於二。例如,這些位址中的任一位址(例如該組命令的其中一個命令所攜帶的位址)可以是從使用者的客戶端裝置發送至儲存伺服器10的一邏輯區塊位址,因此可被視為一使用者輸入邏輯區塊位址。為了更好地理解,該至少一個預定規則可包含有:當該組命令所分別攜帶的位址是相同的位址且該組命令的第一個命令是要求在該相同的位址先刪除相對應的一組使用者資料,該組命令中的一個或多個其餘命令全部都是非必要,其中當該組命令的命令數等於二時,僅會有一個其餘命令(例如該組命令包含有第一個命令以及僅有一個其餘命令),否則,當該組命令的命令數大於二時,會有多個其餘命令(例如該組命令包含有第一個命令以及多個其餘命令);但是本發明不限於此。
在步驟S04B中,儲存伺服器10可利用命令相關過濾器來將該組命令轉換成單一命令,以消除該組命令中的一個或多個非必要的命令,藉此執行該單一命令,而非執行該組命令中的所有命令,因此更進一步地增加儲存伺服器
10的整體性能,例如,當該組命令所分別攜帶的位址是相同的位址且該組命令的第一個命令要求在該相同的位址先刪除相對應的該組使用者資料,該組命令中的一個或多個其餘命令全部都是非必要,在此情況下,單一命令以及一個或多個非必要的命令可以分別代表第一個命令以及一個或多個其餘命令。
為了更好地理解,該方法可以用第2圖所示的工作流程來說明,但是本發明不限於此,根據某些實施例,一個或多個步驟可於第2圖所示工作流程中增加、刪除或修改。
第3圖為根據本發明一實施例之第2圖所示方法的基於指紋(fingerprint,FP)的重複資料刪除控制方案的示意圖,如第3圖所示,儲存伺服器10可包含有重複資料刪除模組100,且重複資料刪除模組100可包含有一些軟體(software,SW)元件以及一些硬體(hardware,HW)元件,硬體元件可藉由記憶體(例如隨機存取記憶體(RAM)/非揮發性記憶體(NVM)等等)來實作,為了更好地理解,第1圖所示的基於指紋的重複資料刪除管理模組53可包含有多個子模組(例如第3圖所示的多個軟體元件),其中在該些軟體元件中的過濾器131可作為上述命令相關過濾器的範例,但是本發明不限於此,除了命令相關過濾器(例如過濾器131)外,基於指紋的重複資料刪除管理模組53的多個子模組可另包含有重複資料刪除模組應用程式介面(application programming interface,API)110、重複資料刪除管理器120、指紋管理器132、指紋產生器133、指紋匹配器134、指紋資料管理器135、指紋汰除(fingerprint retirement)模組137、使用者資料匹配器142以及使用者資料管理器144。指紋匹配器134可包含有專用過濾器(例如過濾器134F),該專用過濾器是指紋匹配器134的內部過濾器,並且可以藉由布隆過濾器(Bloom filter)來實作。如第3圖所示,過濾器131可在指紋管理器132的外
部,但是本發明不限於此,例如,過濾器131可被整合至指紋管理器132內。
重複資料刪除模組100可包含有指紋引擎130以及資料快取管理器140,指紋引擎130以及資料快取管理器140中的每一者可以藉由軟體元件與硬體元件來實作。指紋引擎130包含有一組軟體元件(例如指紋管理器132、指紋產生器133、指紋匹配器134、指紋資料管理器135以及指紋汰除模組137)且另包含有至少一個硬體元件(例如指紋儲存器136,其可作為在步驟S02A提到的指紋儲存器的範例)。資料快取管理器140包含有一組軟體元件(例如使用者資料匹配器142以及使用者資料管理器144),且另包含有至少一個硬體元件(例如使用者資料儲存器146)。指紋儲存器136以及使用者資料儲存器146中的每一者可以在基於指紋的重複資料刪除管理模組53的控制下,透過儲存相關硬體元件的儲存區域來實作,例如,儲存相關硬體元件可包含有隨機存取記憶體、非揮發性記憶體、硬碟以及固態硬碟中的任一者。此外,重複資料刪除模組100可根據指紋管理器132所管理的資料庫(database,DB)132D中的多個表(table)來操作,該多個表可包含有一組或多組鍵值(Key-Value,KV)表,且在一組或多組鍵值表中的每組鍵值表可包含有表#1、表#2等等,例如表#1可以是指紋表,其中該指紋表的鍵(Key)以及值(Value)可分別代表指紋以及邏輯區塊位址(例如使用者輸入邏輯區塊位址);表#2可以是指紋反向(fingerprint reverse)表,其中該指紋反向表的鍵以及值可分別代表邏輯區塊位址(例如使用者輸入邏輯區塊位址)以及指紋;表#3可以是指紋資料表,其中該指紋資料表的鍵以及值可分別代表指紋以及隨機存取記憶體/非揮發性記憶體位置(例如隨機存取記憶體/非揮發性記憶體位置的記憶體位址);以及表#4可以是使用者資料表,其中該使用者資料表的鍵以及值可分別代表邏輯區塊位址(例如使用者輸入邏輯區塊位址)以及隨機存取記憶體/非揮發性記憶體位置(例如隨機存取記憶體/非揮發性記憶體位置
的記憶體位址)。
重複資料刪除模組應用程式介面110可以與複數個程式模組52P中且位於基於指紋的重複資料刪除管理模組53外部的一個或多個其他程式模組(例如容體管理(volume manager,VM)模組)進行互動,以接收在步驟S02B所述的多個命令的至少一部分(部分或全部)。例如,在該多個命令包含有重複資料刪除模組100的一個或多個內部命令的情況下,上述多個命令的至少一部分可以代表該多個命令的一部分;又例如,在該多個命令包含有重複資料刪除模組100的外部命令而非重複資料刪除模組100的任一個內部命令的情況下,上述多個命令的至少一部分可以代表該多個命令的全部命令。此外,重複資料刪除管理器120可以藉由控制重複資料刪除模組100的相關操作來進行重複資料刪除管理,例如,觸發(trigger)指紋引擎130以進行指紋比較並選擇性地觸發資料快取管理器140以進行位元組式比較操作,以產生比較結果(例如指示該組使用者資料是否與任一個現有資料相同的比較結果)來作為步驟S05A的判斷結果,以允許儲存伺服器10(例如容體管理模組)判斷是否要進行重複資料刪除。重複資料刪除模組100(例如重複資料刪除管理器120,其透過重複資料刪除模組應用程式介面110)可以將比較結果回傳至容體管理模組,當比較結果指示該組使用者資料與任一個現有資料相同時,容體管理模組可以進行步驟S06A所述的重複資料刪除,以節省儲存裝置層的儲存容量;否則,容體管理模組可以如步驟S07A所述而將上述至少一組使用者資料寫入至儲存裝置層。
指紋管理器132可以為重複資料刪除管理器120進行指紋管理,例如,因應單一命令而非該組命令中的全部命令來進行指紋管理,以控制指紋產生器133、指紋匹配器134以及指紋資料管理器135來相對應地操作。指紋產生器
133可以在該多組使用者資料以及一組或多組後續使用者資料上進行指紋計算,以分別產生相對應的計算結果,例如該多個指紋以及一個或多個後續指紋,用來儲存至指紋儲存器136及/或進行指紋比較,此外,指紋匹配器134可以進行有關指紋匹配偵測(例如偵測某組使用者資料的指紋是否與現有指紋相匹配,以判斷是否需要在此組使用者資料上進行重複資料刪除)的指紋比較,以產生指紋比較結果,並且將該指紋比較結果傳送至指紋管理器132,以回傳至重複資料刪除管理器120。此外,指紋汰除模組137可以管理指紋汰除,以在有需要時移除一個或多個指紋。針對硬體資源(例如硬體元件)的控制,指紋資料管理器135可以為指紋引擎130管理指紋儲存器136,尤指在指紋儲存器136上進行指紋資料管理,以在需要時寫入、讀取或刪除指紋,以及使用者資料管理器144可以為資料快取管理器140管理使用者資料儲存器146,尤指在使用者資料儲存器146上進行使用者資料管理,以在需要時寫入、讀取或刪除一組使用者資料。
基於第3圖所示架構,重複資料刪除管理器120可以將上述多個命令的至少一部分傳送至命令相關過濾器(例如過濾器131),且命令相關過濾器(例如過濾器131)可以監控該多個命令,例如,收集(例如加入佇列)並過濾該多個命令,以決定該組命令並將該組命令轉換成單一命令,以供指紋管理器132處理。此外,重複資料刪除管理器120可以利用指紋引擎130來進行步驟S05A的操作的至少一部分(例如部分或全部),以及,根據使用者設定及/或預設(default)設定,選擇性地利用資料快取管理器140以進行步驟S05A的操作的一部分。當有需要時,資料快取管理器140可以用來快取(cache)該多組使用者資料的至少一部分(例如部分或全部),並且快取該一組或多組後續使用者資料在使用者資料儲存器146中,以進行位元組式比較操作。
為了更好地理解,假設在使用者資料儲存器146中的快取使用者資料(例如該多組使用者資料的至少一部分,以及該一組或多組後續使用者資料)可以以4千位元組(kilobyte,KB)為單位而被快取,且指紋儲存器136中該多個現有指紋的指紋資料可以以X位元組(byte,B)為單位儲存,其代表該多個現有指紋中的每一現有指紋的位元數係等於8X(例如8*X),例如,在該多個現有指紋的每一現有指紋的位元數8X係足夠的情況下(例如X=26,其代表8X=(8 * 26)=208),重複資料刪除模組100可以利用指紋引擎130來根據指紋是否與任一個現有指紋相匹配,以判斷該組使用者資料是否與任一個現有資料相同,而無需利用資料快取管理器140來進行位元組式比較操作(例如雙重確認該判斷的正確性),此外,在該多個現有指紋的每個現有指紋的位元數8X係不足夠的情況下(例如X=16,其代表8X=(8 * 16)=128),重複資料刪除模組100可以選擇性地利用資料快取管理器140來進行位元組式比較操作,以雙重確認該判斷的正確性。
例如,當從指紋引擎130(例如,指紋管理器132)回傳的指紋比較結果指示該指紋與任一個現有指紋相匹配時,也就是說,該組使用者資料有可能在儲存裝置層被找到,則重複資料刪除模組100(例如重複資料刪除管理器120)可以觸發資料快取管理器140來進行位元組式比較操作,以判斷該組使用者資料與任一個現有資料相同是否為真(True)。資料快取管理器140(例如使用者資料匹配器142)可以進行位元組式比較操作以產生比較結果,其中該比較結果可指示該組使用者資料是否在儲存裝置層被找到,如果位元組式比較操作的比較結果指示該組資料是在儲存裝置層被找到,資料快取管理器140(例如使用者資料匹配器142)可以判斷該組使用者資料與任一個現有資料相同為真,否則,資料快取管理器140(例如使用者資料匹配器142)可以判斷該組使用者資料與任一個現有資料相同為假。又例如,當從指紋引擎130(例如,指紋管理器
132)回傳的指紋比較結果指示該指紋與任一個現有指紋不匹配時,也就是說,該組使用者資料不可能在儲存裝置層被找到,重複資料刪除模組100(例如重複資料刪除管理器120)可以判斷該組使用者資料與任一個現有資料相同為假,而無需觸發資料快取管理器140(例如使用者資料匹配器142)來進行位元組式比較操作。
根據某些實施例,處理電路52可包含有至少一個處理器/處理器核心以及相關電路(例如隨機存取記憶體、非揮發性記憶體等等),但是本發明不限於此,在某些實施例中,非揮發性記憶體可以被實作為主裝置50中的可拆卸(detachable)非揮發性記憶體模組且耦接於處理電路52。
關於重複資料刪除模組100的一些實施細節可以描述如下,根據某些實施例,指紋產生器133可以產生區塊資料(例如4千位元組的資料)的指紋,並且可被指紋管理器132通過指紋計算函數cal_fingerprint()來呼叫,如下:cal_fingerprint(char *data,int32_t data_len,callback function,callback arg);其中上述函數中的“char *data”指向區塊資料的內容,“int32_t data_len”代表區塊資料的資料長度(例如4K),以及“callback function”和“callback arg”代表回乎函數(callback function)和一個或多個回呼參數(callback argument),此外,在指紋匹配器134中的過濾器134F可以透過布隆過濾器來實作,配備有過濾器134F(例如布隆過濾器)的指紋匹配器134可以在記憶體中(例如隨機存取記憶體/非揮發性記憶體)維護某種索引,並提供應用程式介面以供指紋管理器132來查詢,如果未命中(miss),指紋匹配器134可以回傳未命中;如果命中(hit),則指紋匹配器134可以回傳匹配的指紋以及該匹配的指紋的邏輯區塊位址。此外,指紋資料管理器135可以管理指紋儲存器136的記憶
體或磁碟空間,用來儲存多個指紋以及一個或多個後續指紋,並且在需要時移除一個或多個指紋。指紋資料管理器135可以提供應用程式介面給指紋管理器132,以對指紋進行存取(例如寫入、讀取、清理(trim)等等)。針對指紋汰除管理,指紋汰除模組137可以提供一種機制以將指紋管理器136中所有指紋之中的最老(oldest)或最冷(coldest)的指紋踢除(例如移除或刪除)。此外,指紋管理器132可以管理以及控制指紋產生器133、指紋匹配器134、指紋資料管理器135以及指紋汰除模組137,以提供指紋查詢服務,指紋管理器132可以決定應該保留哪個邏輯區塊位址的指紋,且指紋管理器132可以維護多個表(例如表#1、表#2等等),其中指紋管理器132的應用程式介面可包含有指紋查詢、指紋刪除、指紋更新等等。
針對表#1(例如指紋表),指紋管理器132可以根據攜帶有邏輯區塊位址LBAx(例如LBA(x))的一命令來將鍵值集(例如{鍵:指紋,值:使用者輸入邏輯區塊位址LBAx})儲存至該表中,當指紋匹配時,指紋管理器132可以從該表中獲取另一個邏輯區塊位址LBAy(例如LBA(y)),例如,藉由判斷哪個邏輯區塊位址LBAy具有與邏輯區塊位址LBAx相同的指紋。基於邏輯區塊位址LBAy,指紋管理器132可以從區域池(local pool)讀取資料,並且利用該命令所攜帶之輸入4千位元組資料(例如區塊資料,例如4千位元組資料)來做(例如進行)位元組式比較,請注意,在多個現有指紋中的每一個指紋的位元數8X不足夠的情況下(例如X=16,也就是說8X=(8 * 16)=128),一個指紋可以由具有不同4千位元組資料的不同邏輯區塊位址所共享,而一設計選項可以被選擇以決定共享一個指紋的邏輯區塊位址的數量,尤指一個或多個邏輯區塊位址是否共享一個指紋。另外,假若在多個現有指紋中的每一個現有指紋的位元數8X足夠的情況下(例如X=26,也就是說8X=(8 * 26)=208),指紋管理器132可以
建立邏輯區塊位址與指紋之間的一對一映射關係。針對表#2(例如指紋反向表),指紋管理器132可以將鍵值集(例如{鍵:邏輯區塊位址,值:指紋})儲存至該表,以移除並更新指紋。針對表#3(例如指紋資料表),指紋管理器132可以將鍵值集(例如{鍵:指紋,值:記憶體位置或磁碟位置})儲存至該表,用以指示儲存新指紋的記憶體位置(例如隨機存取記憶體/非揮發性記憶體位置)或磁碟位置,或者用以查詢或刪除現有指紋。針對表#4(例如使用者資料表),指紋管理器132可以將鍵值集(例如{鍵:邏輯區塊位址,值:記憶體位置或磁碟位置})儲存至該表,用以指示儲存一組新使用者資料的記憶體位置(例如隨機存取記憶體/非揮發性記憶體位置)或磁碟位置,或者用以查詢或刪除一組現有使用者資料。
第4圖為根據本發明一實施例之第2圖所示方法的指紋查找控制方案的示意圖。
在步驟S11中,指紋管理器132可以進行指紋查找,例如,藉由呼叫如下的指紋查找函數fp_lookup():fp_lookup(4KB data,LBA);其中該函數中的“4KB data”以及“LBA”可分別代表一組使用者資料(例如區塊資料)以及一命令所攜帶的相關邏輯區塊位址。
在步驟S12中,指紋產生器133可以根據4千位元組資料來計算指紋。
在步驟S13中,指紋匹配器134可以在指紋儲存器136中嘗試尋找匹配的指紋,尤指判斷在指紋儲存器136所有現有指紋中的任一個現有指紋是否與4
千位元組資料的指紋相匹配(例如在步驟S12中指紋產生器133所產生的指紋),如果是,為匹配成功案例(例如案例B(1));如果否,則為匹配失敗案例(例如案例A(1))。
為了更好地理解,指紋管理器132可以利用資料庫132D(例如表#1、表#2等等)來將所有現有指紋中至少一部分的指紋快取(例如暫時地儲存)至指紋儲存器136,以加速步驟S13的操作,指紋管理器132可以快取該部分的指紋以及該組相對應使用者資料(該部分的指紋所代表的該組使用者資料)的各自邏輯區塊位址,以分別作為表#1中多個鍵值集的鍵以及值,並且快取該組相對應使用者資料的各自邏輯區塊位址以及該部分的指紋,以分別作為表#2中多個相對應鍵值集的鍵以及值,並且可以更進一步地儲存該部分的指紋以及該部分的指紋的記憶體/磁碟位置(例如指紋儲存器136中的記憶體/磁碟位置),以分別作為表#3中多個相對應鍵值集的鍵以及值,以維護資料庫132D,但是本發明不限於此。
在步驟S14A中,在匹配失敗案例(例如案例A(1))中,指紋管理器132決定是否在資料庫132D中保留此一指紋(例如步驟S12提到的指紋),例如,根據最近最少使用(least recently used,LRU)方法,以節省資料庫132D的儲存容量。如果是(例如當該指紋屬於熱指紋時,需要保留該指紋),指紋管理器132可以控制指紋資料管理器135來保存該指紋,並且通知資料快取管理器140(例如使用者資料管理器144)來保存4位元組資料;如果否(例如當該指紋屬於冷指紋時,不需要保留該指紋),指紋管理器132可以向重複資料刪除管理器120回覆“不匹配”,以指示找不到匹配的指紋,進而允許重複資料刪除管理器120通過重複資料刪除模組應用程式介面110將對應於“不匹配”的比較結果回傳至
容體管理模組,其中對應於“不匹配”的比較結果可以指示上述至少一組使用者資料與任一個現有資料都不相同。
在步驟S14B中,在匹配成功案例(例如案例B(1))中,指紋管理器132可以將匹配的邏輯區塊位址(例如任一個現有資料的邏輯區塊位址)回傳至重複資料刪除管理器120,以允許重複資料刪除管理器120通過重複資料刪除模組應用程式介面110將對應於匹配的邏輯區塊位址的比較結果回傳至容體管理模組,其中對應於匹配的邏輯區塊位址的比較結果可以指示上述至少一組使用者資料與任一個現有資料相同。
在步驟S15A中,指紋管理器132可以在需要時添加或更新至少一個表(例如表#1),例如,當判斷需要保留指紋時,指紋資料管理器135可以將此一指紋(例如在步驟S12中提到的指紋)儲存至指紋儲存器136,並且將指紋儲存器136中的記憶體/磁碟位置回傳至指紋管理器132,以將此一指紋(例如在步驟S12中提到的指紋)添加至資料庫132D,並相對應地更新至少一個相關表(例如表#3)。
在步驟S15B中,指紋資料管理器135可以在需要時通過指紋管理器132添加或更新至少一個相關表(例如表#3),例如,當判斷需要保留指紋時,指紋資料管理器135可以將此一指紋(例如在步驟S12中提到的指紋)儲存至指紋儲存器136,並且將指紋儲存器136中的記憶體/磁碟位置回傳至指紋管理器132,以將此一指紋(例如在步驟S12中提到的指紋)添加至資料庫132D,並相對應地更新至少一個相關表(例如表#3)。
第5圖為根據本發明一實施例之第2圖所示方法的指紋刪除控制方案的示意圖。
在步驟S21中,指紋管理器132可以進行指紋刪除,例如,藉由呼叫如下的指紋刪除函數fp_delete():fp_delete(LBA);其中該函數中的“LBA”可以代表一命令所攜帶的相關邏輯區塊位址。
在步驟S22中,指紋管理器132可以查詢表#2並且刪除在表#2中相對應於該邏輯區塊位址的項目(entry),例如一鍵值集,其中該鍵值集的鍵係等於該邏輯區塊位址。
在步驟S23中,指紋管理器132可以刪除表#1中相對應的項目,例如一鍵值集,其中該鍵值集的值係等於該邏輯區塊位址(例如該命令所攜帶的邏輯區塊位址)。
在步驟S24中,指紋管理器132可以控制指紋資料管理器135,以自指紋儲存器136移除相對應於該邏輯區塊位址(例如該命令所攜帶的邏輯區塊位址)的指紋,以及刪除在表#3中相對應的項目(例如儲存在該指紋的鍵值集以及該指紋的記憶體/磁碟位置)。
第6圖為根據本發明一實施例之第2圖所示方法的指紋汰除控制方案的示意圖。
在步驟S31中,指紋汰除模組137可以觸發指紋汰除,尤指通知指紋管理器132來移除某指紋的資料(例如指紋資料),例如,藉由呼叫如下的指紋刪除函數fp_delete():fp_delete(LBA);其中該函數中的“LBA”可以代表相對應於該指紋的相關邏輯區塊位址。
在步驟S32中,指紋管理器132可以查詢表#2並且刪除在表#2中對應於此一邏輯區塊位址(例如相對應於該指紋的邏輯區塊位址)的項目,例如一鍵值集,其中該鍵值集的鍵係等於此一邏輯區塊位址。
在步驟S33中,指紋管理器132可以刪除表#1中相對應的項目,例如一鍵值集,其中該鍵值集的值係等於此一邏輯區塊位址(例如相對應於該指紋的邏輯區塊位址)。
在步驟S34中,指紋管理器132可以控制指紋資料管理器135,以自指紋儲存器136移除此一指紋,以及刪除在表#3中相對應的項目(例如儲存此一指紋的鍵值集以及此一指紋的記憶體/磁碟位置)。
第7圖為根據本發明一實施例之第2圖所示方法的位元組式比較(byte-by-byte-compare,BBBC)控制方案的示意圖。
在步驟S41中,使用者資料匹配器142可以進行位元組式比較操作,
例如,藉由呼叫如下的進行位元組式比較函數do_bbbc():do_bbbc(user input LBAx,user input data,LBAy got from fingerprint engine);其中該函數中的“user input LBAx”以及“user input data”可以分別代表邏輯區塊位址LBAx(例如LBA(x))以及一命令所攜帶的使用者資料,且該函數中的“LBAy got from fingerprint engine”可以代表當觸發位元組式比較時,通過重複資料刪除管理器120來從指紋引擎130(例如指紋管理器132)獲取的邏輯區塊位址LBAy(例如LBA(y))。
在步驟S42中,基於表#4,使用者資料匹配器142可以根據邏輯區塊位址LBAy來控制使用者資料管理器144,以從使用者資料儲存器146中讀取與邏輯區塊位址LBAy相關聯的4千位元組資料(例如儲存在邏輯區塊位址LBAy的現有4千位元組資料的快取版本)。
在步驟S43中,使用者資料匹配器142可以進行位元組式比較操作,例如,將此組使用者資料(該命令所攜帶的該組使用者資料)與邏輯區塊位址LBAy相關聯的4千位元組資料以位元組式(byte-by-byte)的方式進行比較,以產生位元組式比較的結果,以作為比較結果,其中位元組式比較的結果可以指示此組使用者資料是否和邏輯區塊位址LBAy相關聯的4千位元組資料完全相同,如果是,為命中案例(例如案例A(2));如果否,則為未命中案例(例如案例B(2))。例如,在命中案例(例如案例A(2))中,使用者資料匹配器142可以向指紋管理器132回覆對應於“命中”的位元組式比較的結果,以指示此組使用者資料與邏輯區塊位址LBAy相關聯的4千位元組資料完全相同;以及在未命中案例(例如案例B(2))中,使用者資料匹配器142可以向指紋管理器132回覆對應於“未命中”的位元組式比較的結果,以指示此組使用者資料與邏輯區塊位址LBAy相關聯的4千位
元組資料並未完全相同;但是本發明不限於此,又例如,在命中案例(例如案例A(2))中,使用者資料匹配器142可以將對應於“命中”的位元組式比較的結果回傳至重複資料刪除管理器120,以指示此組使用者資料與邏輯區塊位址LBAy相關聯的4千位元組資料完全相同;以及在未命中案例(例如案例B(2))中,使用者資料匹配器可以將對應於“未命中”的位元組式比較的結果回傳至重複資料刪除管理器120,以指示此組使用者資料與邏輯區塊位址LBAy相關聯的4千位元組資料並未完全相同。
第8圖為根據本發明一實施例之第2圖所示方法的資料保存控制方案的示意圖。當決定保存指紋(例如一命令所攜帶的一組使用者資料的指紋)時,指紋引擎130(例如指紋管理器132)可以通知使用者資料管理器144,例如,藉由呼叫如下的資料保存函數save_data():save_data(user input LBAx,user input data);其中該函數中的“user input LBAx”以及“user input data”可以分別代表相關的邏輯區塊位址LBAx(例如LBA(x))以及該命令所攜帶的該組使用者資料,此外,指紋管理器132可以為使用者資料管理器144來相對應地更新表#4。
第9圖為根據本發明一實施例之第2圖所示方法的資料刪除控制方案的示意圖。例如,當使用者決定清理位在一個或多個位址上的資料(例如位在邏輯區塊位址LBAx(例如LBA(x))的一組資料)時,重複資料刪除管理器120可以藉由呼叫如下的資料刪除函數delete_data()來刪除在使用者資料儲存器146中的該組資料的快取版本:delete_data(LBAx);其中指紋管理器132可以為重複資料刪除管理器120來相對應地更新
表#4,但是本發明不限於此,又例如,當指紋引擎130(例如指紋汰除模組137)判斷需要汰除一指紋且該指紋係為位在邏輯區塊位址LBAy(例如LBA(y))之一組資料的指紋時,指紋引擎130(例如指紋管理器132)可以藉由呼叫如下的刪除函數delete_data(),以觸發在使用者資料儲存器146中該組資料的快取版本的刪除:delete_data(LBAy);其中指紋管理器132可以相對應地更新表#4。
根據某些實施例,儲存伺服器10可具備高可用性(high availability,HA)架構,為了更好地理解,第1圖所示架構可以被改變(例如更新)以包含有運行各自的程式模組{52P}的多個處理電路{52},且運行各自的程式模組{52P}的多個處理電路{52}可以分別作為高可用性架構中的多個節點(node),例如,在預設情況下,在多個節點中的第一節點以及第二節點可以分別作為現用節點(active node)以及待命節點(standby node),現用節點可以控制儲存伺服器10以提供服務給一個或多個使用者,而待命節點可以作為現用節點的備用節點(backup node),當現用節點故障時,待命節點可被觸發以成為最新的現用節點,以控制儲存伺服器10,用來持續提供服務給一個或多個使用者,此外,至少一個儲存介面電路54以及網路介面電路58可相對應地改變,以分別自多個節點提供連結路徑給該些電路,且尤其,至少一個儲存介面電路54以及網路介面電路58擁有針對連結路徑的切換能力,以允許多個節點獨立地操作,但是本發明不限於此。
第10圖為根據本發明一實施例之第2圖所示方法的存取控制方案的示意圖。例如,在第1圖所示儲存伺服器10具備高可用性架構的情況下,運行複數個程式模組52P的處理電路52可作為現用節點,而運行複數個程式模組52P的
處理電路52的另一相同電路(replica)可作為待命節點,但是本發明不限於此,此外,現用節點以及待命節點的任一個節點(例如每一個節點)可以具備重要資訊保護系統(important information protection system),以在任一個節點的至少一個揮發性記憶體(例如一或多個隨機存取記憶體(RAM),像是動態隨機存取記憶體(DRAM))中保護重要資訊(例如系統資訊、緩衝資料等等),該重要資訊保護系統可包含有至少一個揮發性記憶體、備用電源單元(例如電池)以及備用儲存器(例如非揮發性記憶體、固態硬碟等等),以當需要時在重要資訊上進行備份(backup),其中備用電源單元能夠提供備用電源給至少一個揮發性記憶體以及備用儲存器,例如,當任一個節點的主電源發生電源故障時,重要資訊保護系統可以利用備用電源單元來防止重要資訊的丟失,並且利用備用儲存器來儲存重要資訊。
因應使用者的寫入要求,運行在處理電路52上的複數個程式模組52P中的寫入緩衝器(write buffer,WB)模組(例如第10圖所示寫入緩衝器200)可以控制一些其他模組(例如軟體模組、硬體模組、及/或包含有多個子模組(例如軟體模組以及硬體模組)的混合模組),以進行資料寫入。在運行在處理電路52上的複數個程式模組52P中的持續記憶體(persistent memory,PMem)(例如第10圖所示持續記憶體400)的控制下,現用節點可以通過現用節點以及備用節點之間的至少一個通訊連結路徑來將緩衝資料(例如因應寫入要求而要被寫入至儲存伺服器10之儲存裝置層的資料)傳送至待命節點,並且利用待命節點的至少一部分(例如一部分或全部)來作為現用節點的仿真(emulated)持續記憶體,其中仿真持續記憶體(例如待命節點的至少一部分)可包含有現用節點的重要資訊保護系統。第10圖所示的容體管理器300可作為上述容體管理模組的範例。
在步驟S51中,因應使用者的寫入要求,寫入緩衝器200的上層(例如運行在處理電路52上的複數個程式模組52P中的使用者介面(user interface,UI)模組)可以將資料寫入至儲存伺服器10,例如,藉由呼叫如下的寫入函數write():write(V1,volume LBAx,4KB data);其中“V1”以及“volume LBAx”可以分別代表第一容體的容體識別碼(volume ID)(例如自儲存池架構獲取的多個虛擬容體的其中一個虛擬容體)以及在第一容體中的容體邏輯區塊位址LBAx(例如LBA(x)),以及“4KB data”可以代表寫入要求所攜帶的資料中的一組使用者資料(例如區塊資料)。
在步驟S52中,持續記憶體400可以將4千位元組資料寫入至現有節點的重要資訊保護系統的至少一個揮發性記憶體,並且將4千位元組資料寫入至遠端(remote side)(例如待命節點的重要資訊保護系統的至少一個揮發性記憶體)。
在步驟S53中,持續記憶體400可以向寫入緩衝器200發送一確認訊息(acknowledgement,Ack)。
在步驟S54中,寫入緩衝器200可以通過上層(例如使用者介面模組)向使用者(例如使用者的客戶端裝置)發送一確認訊息,以指示寫入OK(例如寫入完成)。
在步驟S55中,寫入緩衝器200可以觸發針對重複資料刪除的背景執行緒(background thread)來選擇4千位元組資料,用以使該4千位元組資料發送至重複資料刪除模組100,例如,藉由呼叫如下的具有函數deduplicate_me()的重複資料刪除模組應用程式介面110:
deduplicate_me(8B key,4KB data);其中該函數中的“4KB data”以及“8B key”可以分別代表該組使用者資料(例如區塊資料)以及該組使用者資料的8位元組鍵,例如,該8位元組鍵可被計算如下:8B key=((volume ID<<32)∥volume LBA);其中用來計算8位元組鍵的“volume ID”以及“volume LBA”可以分別代表容體識別碼V1以及容體邏輯區塊位址LBAx,以及“<<”可以代表C語言中左移的邏輯移位運算符(例如(V1<<32),用以將其計算結果設定為將V1左移32位元的移位結果,其與乘以232的乘積等效),但是本發明不限於此,在此狀況下,8位元組鍵可以視為組合的(combined)虛擬容體邏輯區塊位址(virtual volume LBA,VVLBA)(例如容體識別碼V1以及容體邏輯區塊位址LBAx的組合)。
在步驟S56中,重複資料刪除模組100可以將結果(例如比較結果)回覆至寫入緩衝器200。比較結果可以指示該組使用者資料使否與任一個現有資料完全相同,如果是,為命中案例(例如案例A(3));如果否,則為未命中案例(例如案例B(3)),例如,在未命中案例(例如案例B(3))中,寫入緩衝器模組(例如其背景執行緒),像是寫入緩衝器200,可以在現用節點中呼叫壓縮引擎(compression engine)以及藉由該壓縮引擎在4千位元組資料上進行在線壓縮(inline compression),以將4千位元組資料的壓縮版本寫入至儲存裝置層;以及在命中案例(例如案例A(3))中,重複資料刪除模組100可以將另一個8位元組鍵(例如在多個虛擬容體中第二容體的容體識別碼V2以及容體邏輯區塊位址LBAy(例如LBA(y))的組合(V2,LBAy))回傳至第二容體,以進行隨後步驟中的重複資料刪除,例如,第二容體可以與第一容體不相同(例如容體識別碼V2係不等於容體識別碼V1),其中容體邏輯區塊位址LBAy與容體邏輯區塊位址LBAx不必相
同,因為它們分別屬於不同的容體,但是本發明不限於此,又例如,第二容體可以與第一容體相同(例如V2=V1),其中容體邏輯區塊位址LBAy與容體邏輯區塊位址LBAx不相同。
由於寫入緩衝器200可以在步驟S55中使用8位元組鍵(或虛擬容體邏輯區塊位址),例如(V1,LBAx),來存取(例如查詢)重複資料刪除模組100,並且在命中案例中,於步驟S56中自重複資料刪除模組100獲取另一個8位元組鍵(或虛擬容體邏輯區塊位址),例如(V2,LBAy),在存取(例如查詢)重複資料刪除模組100之前,寫入緩衝器200不需從容體管理器300獲取相對應於位址(V1,LBAx)的儲存池邏輯區塊位址,但是本發明不限於此,在某些實施例中,寫入緩衝器200可以先從容體管理器300獲取相對應於位址(V1,LBAx)的儲存池邏輯區塊位址,以及使用該儲存池邏輯區塊位址來存取(例如查詢)重複資料刪除模組100。
在步驟S57中,寫入緩衝器200可以控制容體管理器300以複製或重定向(redirect)有關位址(V2,LBAy)以及(V1,LBAx)的元資料(metadata),例如,藉由呼叫如下的元資料-重定向函數metadata():metadata(V2,LBAy,V1,LBAx);其中該函數中“V2,LBAy”以及“V1,LBAx”可以代表來源位置(source location)以及元資料-重定向處理的目標位置。
在步驟S58中,容體管理器300可以藉由一些子步驟(例如步驟S58A~S58C)來執行元資料-重定向函數metadata()。
在步驟S58A中,容體管理器300可以根據位址(V2,LBAy)來進行容體管理器查找(VM lookup),以獲取儲存池邏輯區塊位址SLBA(1),例如,儲存伺服器10(例如容體管理器300)可以建立並更新重映射表(remapping table)(例如儲存池邏輯區塊位址-虛擬容體邏輯區塊位址重映射表),以利用此重映射表的多個項目來紀錄多個儲存池邏輯區塊位址以及多個虛擬容體邏輯區塊位址之間的重映射關係,以及容體管理器300可以參考此重映射表以進行容體管理器查找,但是本發明不限於此。
在步驟S58B中,容體管理器300可以將項目(V1,LBAx,SLBA(1))填入另一個映射表(例如重複資料刪除重映射表),例如,儲存伺服器10(例如容體管理器300)可以建立並更新此重映射表(例如重複資料刪除重映射表),以利用此重映射表的多個項目來記錄重複使用者資料(例如該組使用者資料)以及現有使用者資料(例如該任一現有資料)之間的重複資料刪除關係,且容體管理器300可以利用項目(V1,LBAx,SLBA(1))來記錄位在位址(V1,LBAx)的該組使用者資料的虛擬儲存版本以及位在儲存池邏輯區塊位址SLBA(1)的現有使用者資料之間的重複資料刪除關係,其中連結資訊(linking information)可以代表該組使用者資料的虛擬儲存版本。
在步驟S58C中,容體管理器300可以增加參考計數表(reference count table)之多個項目中有關儲存池邏輯區塊位址SLBA(1)的項目(SLBA(1),REFCNT)中的參考計數值REFCNT,例如,更新參考計數表的該項目如下:(SLBA(1),REFCNT(1)) → (SLBA(1),REFCNT(2));其中“REFCNT(1)”以及“REFCNT(2)”可以代表參考計數值REFCNT的先前值以及最新值,並且REFCNT(2)=(REFCNT(1)+1),例如,如果第一次
發現在儲存池邏輯區塊位址SLBA(1)的現有資料與進入資料(incoming data)(例如該組使用者資料)相匹配,則REFCNT(1)=1且REFCNT(2)=2,但是本發明不限於此,在某些實施例中,參考計數值REFCNT可以等於連結至相同儲存池邏輯區塊位址(例如SLBA(1))的邏輯位址的數量。
在步驟S59A中,容體管理器300可以將一確認訊息(Ack)發送至寫入緩衝器模組(例如寫入緩衝器200)。
在步驟S59B中,寫入緩衝器模組(例如寫入緩衝器200)可以控制持續記憶體400來自持續記憶體400中移除快取資料(例如位在位址(V1,LBAx)的4千位元組資料)。
第11圖為根據本發明一實施例之第2圖所示方法的資料讀取控制方案的示意圖。因應使用者的讀取要求,寫入緩衝器模組(例如寫入緩衝器200)可以控制一些其他模組(例如軟體模組、硬體模組、及/或包含有多個子模組(例如軟體模組以及硬體模組)的混合模組),以進行資料讀取。在運行在處理電路52上的複數個程式模組52P中的快閃陣列(Flash Array,FA)模組(例如第11圖所示的快閃陣列500)的控制下,儲存伺服器10可以將儲存裝置層配置為快閃陣列,且寫入緩衝器模組(例如寫入緩衝器200)可以通過快閃陣列500來存取儲存裝置層,例如,在儲存裝置層中的全部的儲存裝置都是使用非揮發性記憶體裝置(例如固態硬碟)來實作的情況下,快閃陣列可為全快閃陣列(All Flash Array,AFA),故儲存伺服器10便可以視為全快閃陣列伺服器,但是本發明不限於此。
在步驟S61中,因應使用者的讀取要求,上層(例如使用者介面模組)
可以自儲存伺服器10讀取資料,例如,藉由呼叫如下的讀取函數read()如下:read(V1,volume LBAx);其中“V1”以及“volume LBAx”可以分別代表第一容體(例如自儲存池架構獲取的多個虛擬容體中的其中一個虛擬容體)的容體識別碼以及在第一容體中的容體邏輯區塊位址LBAx(例如LBA(x))。
在步驟S62中,寫入緩衝器200可以控制容體管理器300以查詢在位址(V1,LBAx)上的目標資料(例如待讀取的資料)的元資料。
在步驟S63中,容體管理器300可以回傳與位址(V1,LBAx)相對應的相關聯的儲存池邏輯區塊位址(例如儲存池邏輯區塊位址SLBA(1))。
在步驟S64中,寫入緩衝器200可以自快閃陣列500讀取在儲存池邏輯區塊位址SLBA(1)的目標資料。
在步驟S65中,快閃陣列500可以將目標資料回傳至寫入緩衝器200。
在步驟S66中,寫入緩衝器200可以通過上層(例如使用者介面模組)來將一確認訊息發送至使用者(例如使用者的客戶端裝置),以指示讀取OK(例如讀取完成)。
根據某些實施例,儲存伺服器10(例如寫入緩衝器200)可以自重複資料刪除模組100讀取資料。例如,如果儲存裝置層係藉由比重複資料刪除模組100中的任一個使用者資料快取(例如使用者資料儲存器146)更快的背景儲存
器(例如所有的非揮發性儲存裝置固態硬碟)來實作,由於自該背景儲存器讀取資料是更好的讀取方式,儲存伺服器10便可用來自儲存裝置層讀取資料。又例如,如果儲存裝置層係藉由比重複資料刪除模組100中的任一個使用者資料快取(例如使用者資料儲存器146)更慢的背景儲存器(例如包含有硬碟及/或固態硬碟的序列式小型電腦系統介面(Serial Attached SCSI,SAS)/串行先進技術附件架構)來實作,由於自重複資料刪除模組100讀取資料是更好的讀取方式,儲存伺服器10便可用來自重複資料刪除模組100讀取資料。進一步來說,當儲存伺服器10(例如寫入緩衝器200)經由資料刪除模組應用程式介面110來呼叫重複資料刪除模組100(例如,藉由利用函數deduplicate_me()來呼叫重複資料刪除模組100),該函數deduplicate_me()可能需要告知呼叫者(例如寫入緩衝器200)以下內容:(1)命中或未命中:不管是命中案例還是未命中案例,重複資料刪除模組100可以告知呼叫者,其區域快取(local cache)(例如使用者資料儲存器146)中是否有目標資料的一個副本(copy),其中命中或未命中在此不是主要關注點;(2)目標資料是否在重複資料刪除模組100中。
此外,當重複資料刪除模組100回傳告知其已經將目標資料的一個副本保存至該區域快取(例如使用者資料儲存器146)中時,寫入緩衝器200可以通知容體管理器300來記錄以下的讀取相關資訊:(Volume ID,LBA,SLBA,whether a copy exists in deduplication module);其中該資訊中“Volume ID”以及“LBA”可以分別代表某個容體(例如自儲存池架構獲取的多個虛擬容體中的其中一個虛擬容體)的容體識別碼以及在該容體中的容體邏輯區塊位址,該資訊中“SLBA”可以代表相對應於位址(Volumn ID,LBA)的儲存池邏輯區塊位址,以及“whether a copy exists in
deduplication module”可以代表指示重複資料刪除模組100中是否存在副本的存在旗標(existence flag),例如,容體管理器300可以參考儲存池邏輯區塊位址-虛擬容體邏輯區塊位址重映射表來根據位址(Volumn ID,LBA)進行容體管理器查找,以獲取該儲存池邏輯區塊位址。
第12圖為根據本發明另一實施例之第2圖所示方法的資料讀取控制方案的示意圖,其中重複資料刪除模組100具有目標資料。
在步驟S71中,因應使用者的讀取要求,上層(例如使用者介面模組)可以自儲存伺服器10讀取資料,例如,藉由呼叫如下的讀取函數read():read(V1,volume LBAx);其中“V1”以及“volume LBAx”可以分別代表第一容體(例如自儲存池架構獲取的多個虛擬容體中的其中一個虛擬容體)的容體識別碼以及在第一容體中的容體邏輯區塊位址LBAx(例如LBA(x))。
在步驟S72中,寫入緩衝器200可以控制容體管理器300以查詢在位址(V1,LBAx)上的目標資料(例如待讀取的資料)的元資料。
在步驟S73中,容體管理器300可以將指示存在(existence)的存在旗標回傳至寫入緩衝器200,以指示在重複資料刪除模組100中存在一個副本,例如,容體管理器300已經記錄讀取相關資訊(例如(V1,volume LBAx,SLBA(1),whether a copy exists in deduplication module)),且可以自讀取相關資訊中獲取儲存池邏輯區塊位址SLBA(1)以及相對應於存在的存在旗標,以回傳至寫入緩衝器200。
在步驟S74中,寫入緩衝器200可以自重複資料刪除模組100讀取在儲存池邏輯區塊位址SLBA(1)的目標資料。
在步驟S75中,重複資料刪除模組100可以將目標資料回傳至寫入緩衝器200。
在步驟S76中,寫入緩衝器200可以經由上層(例如使用者介面模組)將一確認訊息發送至使用者(例如使用者的客戶端裝置),以指示讀取OK(例如讀取完成)。
第13圖為根據本發明另一實施例之第2圖所示方法的資料讀取控制方案的示意圖,其中重複資料刪除模組100先前曾將目標資料儲存至使用者資料儲存器146中,但是現在已將該目標資料移除(例如在觸發相對應指紋的汰換之後,重複資料刪除模組100理應這樣做)。
在步驟S81中,因應使用者的讀取要求,上層(例如使用者介面模組)可以自儲存伺服器10讀取資料,例如,藉由呼叫如下的讀取函數read():read(V1,volume LBAx);其中“V1”以及“volume LBAx”可以分別代表第一容體(例如自儲存池架構獲取的多個虛擬容體中的其中一個虛擬容體)的容體識別碼以及在第一容體中的容體邏輯區塊位址LBAx(例如LBA(x))。
在步驟S82中,寫入緩衝器200可以控制容體管理器300以查詢在位址
(V1,LBAx)上的目標資料(例如待讀取的資料)的元資料。
在步驟S83中,容體管理器300可以回傳告知在重複資料刪除模組100中存在一個副本。
在步驟S84中,寫入緩衝器200可以自重複資料刪除模組100讀取在儲存池邏輯區塊位址SLBA(1)的目標資料。
在步驟S85中,重複資料刪除模組100可以不回傳任何資料,例如,回傳空資料(null data)來作為目標資料,以指示沒有現有資料與目標資料相匹配。
在步驟S86中,寫入緩衝器200可以控制重複資料刪除模組100來再次查詢在位址(V1,LBAx)上的目標資料(例如待讀取的資料)的元資料。
在步驟S87中,容體管理器300可以將儲存池邏輯區塊位址SLBA(1)回傳至寫入緩衝器200,例如,容體管理器300已記錄讀取相關資訊(例如(V1,volume LBAx,SLBA(1),whether a copy exists in deduplication module)),且可以自讀取相關資訊中獲取儲存池邏輯區塊位址SLBA(1),以回傳至寫入緩衝器200。
在步驟S88中,寫入緩衝器200可以自快閃陣列500中讀取在儲存池邏輯區塊位址SLBA(1)上的目標資料。
在步驟S89A中,快閃陣列500可以將目標資料回傳至寫入緩衝器200。
在步驟S89B中,寫入緩衝器200可以經由上層(例如使用者介面模組)將一確認訊息發送至使用者(例如使用者的客戶端裝置),以指示讀取OK(例如讀取完成)。
第14圖為根據本發明一實施例之第2圖所示方法的過濾與處理控制方案的示意圖。第3圖所示的指紋引擎130(例如其中的軟體元件)可以根據第14圖所示的過濾與處理控制方案來操作,為了更好地理解,指紋引擎130中的指紋管理器132可以包含有調度器(dispatcher)以及多個重複資料刪除表管理器,操作在指紋管理器132的控制下的指紋產生器133可以包含有多個指紋產生器,以及命令相關過濾器(例如過濾器131)可以包含有儲存池邏輯區塊位址過濾器,但是本發明不限於此。根據某些觀點,調度器可以作為完成管理器(completion manager)。此外,可以在一些元件、處理路徑等等的旁邊標記類似正弦曲線的符號(可以代表指紋),以指示可以基於指紋來進行相關操作。
在重複資料刪除模組100的多個表中的該一組或多組鍵值表係為包含有多組鍵值表的情況下,多個重複資料刪除管理器中的任一個重複資料刪除管理器(例如每一個重複資料刪除管理器)可以管理在該多組鍵值表中的一組鍵值表,例如記憶體內(in-memory)的鍵值表(為簡潔起見,圖中標示為”記憶體內的鍵值”)。以第14圖所示最上層的重複資料刪除表管理器來作為任一個重複資料刪除表管理器的範例,在表#1中的多個鍵值集的鍵及值可以分別藉由指紋以及帶有指標(pointer)的儲存池邏輯區塊位址來實作,以分別將指紋映射至帶有指標的儲存池邏輯區塊位址(為了簡便起見,標記為“FP →(SLBA,pointer)”),且在表#2中的多個鍵值集的鍵及值可以分別藉由儲存池邏輯區塊位址以及指紋來實作,以分別將儲存池邏輯區塊位址映射至指紋(為了簡便起見,標記為“SLBA →
FP”),但是本發明不限於此。此外,在資料庫132D中的表可以被擴展,尤指可以從至少一個專用記憶體分佈到至少一個其他儲存器(例如指紋儲存器136),且可以被劃分為記憶體內(in-memory)的表以及儲存器內(in-storage)的表,例如,專用記憶體可以藉由隨機存取記憶體來實作,而至少一個其他儲存器可以藉由非揮發性記憶體、固態硬碟等等來實作,但是本發明不限於此,由於其他儲存器的儲存容量通常大於專用記憶體的儲存容量,記憶體內的表(例如專用記憶體內的表)可以儲存一些經常使用的鍵值對(KV pair),以及儲存器內的表(例如其他儲存器內的表)可以儲存一些不常使用的鍵值對(例如由於記憶體內的表的儲存容量不足,而從記憶體內的表中逐出或踢除的某些鍵值對),因此,儲存器內的表可以作為資料庫132D的擴展資料庫,如第14圖所示,任一個重複資料刪除管理器可以在多組記憶體內的表中管理一組記憶體內的表(例如一組鍵值表),並且管理相對應於該組記憶體內的表的一組儲存器內的表,例如在指紋-至-儲存池邏輯區塊位址(FP-to-SLBA,FP2SLBA)資料庫中的FP2SLBA表以及在儲存池邏輯區塊位址-至-指紋(SLBA-TO-FP,SLBA2FP)資料庫中的SLBA2FP表。
基於第14圖所示架構,指紋引擎130可以接收輸入資訊,以及嘗試根據該輸入資訊來進行指紋-儲存池邏輯區塊位址查找,以產生查找結果作為輸出資訊,以便回傳輸出資訊,例如,該輸入資訊可以表示如下:(Volume ID,LBA,4KB data,SLBA,REFCNT);其中以上資訊中“Volume ID”以及“LBA”可以分別代表某個容體(例如自儲存池架構獲取的多格虛擬容體中的其中一個虛擬容體)的容體識別碼以及在該容體中的容體邏輯區塊位址,“4KB data”可以代表一命令所攜帶的一組使用者資料(例如區塊資料),“SLBA”可以代表相對應於位址(Volume ID,LBA)的儲存值邏輯區塊位址,以及“REFCNT”可以代表參考計數值,此外,該輸出資訊
可以表示如下:(match,des_SLBA);其中“match”可以代表相對應於比較結果的旗標(flag),以指示該組使用者資料與任一個現有資料相同為真(例如匹配案例)或假(例如未命中案例),以及“des_SLBA”可以代表目標儲存池邏輯區塊位址,以指示任一個現有資料的儲存位置,如第14圖所示,指紋引擎130(例如調度器)可以分批處理(batch)或收集由多個指紋產生器產生的一連串指紋(例如(fp0,fp1,...,fpn)),並通過儲存池邏輯區塊位址過濾器來將該一連串指紋分配至多個重複資料刪除管理器,此外,儲存池邏輯區塊位址過濾器可以根據指紋來進行分配要求,尤指根據預定的映射規則來進行從儲存池邏輯區塊位址映射至多個重複資料刪除表管理器的各自管理器識別碼(manager ID)的映射操作(為簡便起見,標記為“SLBA → manager ID”),以嘗試將一連串指紋的指紋-查找任務平均分配給多個重複資料刪除管理器,該多個重複資料刪除管理器可以分別進行指紋-查找任務以產生指紋-查找結果,以作為輸出資訊,為了簡潔起見,在此不再重複詳細描述本實施例。
根據某些實施例,儲存池邏輯區塊位址過濾器可以具備一快取,並利用該快取來記錄一儲存池邏輯區塊位址-管理器項目(其指示儲存池邏輯區塊位址-管理器關係),以提高處理速度,其中儲存池邏輯區塊位址-管理器項目可以包含有儲存池邏輯區塊位址過濾器接收到的儲存池邏輯區塊位址,且另包含有已經完成處理與該儲存池邏輯區塊位址相對應的指紋-查找任務的重複資料刪除表管理器的管理器識別碼,因此,儲存池邏輯區塊位址過濾器可以收集多個儲存池邏輯區塊位址-管理器項目(例如在其快取中的該儲存池邏輯區塊位址-管理器項目),當接收到當前儲存池邏輯區塊位址時,儲存池邏輯區塊位址過濾
器可以將當前儲存池邏輯區塊位址與該多個儲存池邏輯區塊位址-管理器項目中的一個或多個儲存池邏輯區塊位址-管理器項目的一個或多個儲存池邏輯區塊位址相比較,以判斷在其快取中是否存在任一個匹配的儲存池邏輯區塊位址,如果是,為快取命中案例,其中在該快取命中案例中,儲存池邏輯區塊位址過濾器可以自包含有任一個匹配的儲存池邏輯區塊位址的項目中獲取管理器識別碼(例如0x4),以作為目標管理器識別碼,並且將相對應於當前儲存池邏輯區塊位址的當前指紋-查找任務(例如與當前儲存池邏輯區塊位址相關的當前指紋的指紋-查找任務)指派給具有該管理器識別碼(例如0x4)的重複資料刪除表管理器;如果否,則為快取未命中案例,其中在該快取未命中案例中,儲存池邏輯區塊位址過濾器可以決定一個與該多個重複資料刪除管理器之各自管理器識別碼均不相同的預設識別碼(例如0xF),以作為目標管理器識別碼,用於指示快取未命中案例,並觸發對應於該預設識別碼的預定處理。因此,該多個重複資料刪除表管理器可以根據當前狀況為快取命中案例還是快取未命中案例及/或根據哪些指紋屬於該多個重複資料刪除管理器中的一個管理器來進行後續處理(例如指紋-查找任務等等)。針對預設識別碼(例如0xF)指示的快取未命中案例,相對應於預設識別碼的預定處理可以藉由不包含儲存池邏輯區塊位址過濾器之指紋查找架構的處理(例如在另一範例中的原始設計)來實作,且因此可能需要更多輸入/輸出(input/output,I/O)處理以及可能導致更多的每秒輸入/輸出量(I/O per second,IOPS),而針對快取命中案例,指紋引擎130可以借助儲存池邏輯區塊位址過濾器來操作,尤指將多個過濾結果分類為多個預定案例(例如案例1、案例2以及/或某些子案例,例如案例A~案例G),以進行多個預定案例的各自的處理,從而大幅提高處理速度,其中可以減少輸入/輸出處理以及相關的每秒輸入/輸出量,例如,多個預定案例的某些預定案例可以與關於記憶體內的表以及儲存器內的表的指紋匹配/不匹配(例如匹配指紋的存在/不
存在)的各種組合有關。
關於第14圖所示架構的一些實施細節可以描述如下,根據某些實施例,對於每個4千位元組的輸入資料,例如,根據預定函式(例如密碼雜湊函式(cryptographic hash function),像是安全散列演算法(Secure Hash Algorithm 1,SHA-1)),指紋產生器係用來計算指紋值(其可以簡稱為指紋),指紋可以用作快速識別4千位元組資料的功能,而無需位元組式比較,調度器的職責係非同步地(asynchronously)將一要求調度/排程至任一個重複資料刪除表管理器,並作為協調器來從多個重複資料刪除表管理器收集多個結果,以將該多個結果依序回傳,例如,每一個重複資料刪除表管理器可能看起來像一個可以每次處理一個指紋的微型重複資料刪除模組,任一個重複資料刪除表管理器可以用兩個方向來儲存指紋以及儲存池邏輯區塊位址之間的映射關係以供每一個查找操作來使用,因此可以回答在重複資料刪除模組100中是否存在輸入指紋並針對儲存池邏輯區塊位址來有效地移除指紋。
根據第15圖~第18圖分別所示的實施例,為簡便起見,重複資料刪除表管理器可稱為表管理器或管理器。
第15圖為根據本發明一實施例之第2圖所示方法的更新要求控制方案的示意圖。第一種優化係減少發送至表管理器的不必要的刪除要求,而不需保留相對應的鍵值對。儲存池邏輯區塊位址過濾器的採用係為了追蹤儲存池邏輯區塊位址屬於哪個表管理器,當過濾器回傳0xF時,其意味著該儲存池邏輯區塊位址之前未使用過,故只需通過與原始設計(例如案例3)相同的流程即可,因為儲存池邏輯區塊位址過濾器可以作為儲存池邏輯區塊位址以及表管理器識
別碼之間的所有映射的快取,所以回傳0xF並不代表此儲存池邏輯區塊位址以前未使用,因此,還是需要將一刪除要求發送至每個表管理器。當表管理器識別碼(例如範例中的0x4)被回傳,但是指紋屬於不同的表管理器(不是0x4)時,將一刪除要求發送至表管理器0x4以及將(FP,SLBA)的一查找要求發送至目的地的表管理器(例如案例2),另一方面,當指紋以及儲存池邏輯區塊位址都是屬於相同的表管理器時,需要分開討論多個案例(案例1)。
根據某些實施例,重複資料刪除模組100(例如指紋引擎130)可以接收有關當前儲存池邏輯區塊位址的更新要求,以改變位在當前儲存池邏輯區塊位址上的使用者資料,但是本發明不限於此。儲存池邏輯區塊位址過濾器可以獲取當前指紋以及當前儲存池邏輯區塊位址(為方便起見,標記為“(FP,SLBA)”),並且產生在多個過濾結果中的一過濾結果,例如,該過濾結果可被指向至預設識別碼(例如0xF)所指示的快取未命中案例,尤其,在案例3中,調度器可以進行以下操作:(1)將del(SLBA)發送至所有的管理器(例如所有的重複資料刪除表管理器),以刪除與當前儲存池邏輯區塊位址相關的指紋;(2)根據當前指紋以及當前儲存池邏輯區塊位址來發送lookup(FP,SLBA),以執行指紋查找;其中原始設計的處理可以被利用,針對案例1以及案例2,符號“”以及“”可以分別代表“屬於”以及“不屬於”,過濾結果可以被指向至管理器識別碼(例如0x4)所指示的快取命中案例,使得當前指紋-查找任務被分配至具有該管理器識別碼(例如0x4)的重複資料刪除表管理器,為簡便起見,在此不再詳細重複對該些實施例的類似描述。
第16圖為在記憶體內的表上找到指紋的情況下,第15圖所示更新要求控制方案的相關處理的一些範例的示意圖。例如,案例A以及案例B的各自的處理(例如各自的步驟之各自的操作)可以列出如下:
‧ 案例A(回傳匹配)
‧ 案例B(回傳匹配)
(1)找到一鍵值對(FP,SLBA’);(2)(FP’,SLBA)必存在於此管理器中;(2a)自記憶體內的表刪除(FP’,SLBA);(2b)如果存在一副本,自儲存器內的表刪除(FP’,SLBA);(2c)快取管理等等。
當輸入指紋可以在記憶體內的表上找到與其匹配的指紋時,將出現兩種案例,例如案例A以及案例B,在案例A中,如果來自記憶體內的表的匹配鍵值對的儲存池邏輯區塊位址有著與輸入儲存池邏輯區塊位址相同的值,指紋引擎130可以什麼也不做並提供最佳性能。與沒有進一步地比較儲存池邏輯區塊位址的值的先前設計相反,指紋引擎130可以先盲目地刪除相同的鍵值對然後再次插入,在案例B中,如果在匹配鍵值中的儲存池邏輯區塊位址’與輸入邏輯區塊位址不相同,則需要做更多步驟,第一件事是找出具有輸入儲存池邏輯區塊位址的鍵值對,由於儲存池邏輯區塊位址過濾器在一開始時就回報了該儲存池邏輯區塊位址的目的地(案例1),該儲存池邏輯區塊位址必存在於該表管理器中,在此之後,指紋引擎130可以嘗試僅在記憶體內的表上、或僅在儲存器內的表上或在記憶體內的表上及儲存器內的表上刪除該鍵值對(FP’,SLBA),第二件事是將新的鍵值對(FP,SLBA’)插入至記憶體內的表。
第17圖為在儲存器內的表上找到指紋的情況下,第15圖所示更新要
求控制方案的相關處理的一些範例的示意圖,例如,案例C以及案例D的各自的處理(例如各自的步驟之各自的操作)可以列出如下:
‧ 案例C(回傳匹配)
‧ 案例D(回傳匹配)
(1)找到一鍵值對(FP,SLBA’);(2)(FP’,SLBA)必存在於此管理器中與案例B相同的刪除操作;(3)將(FP,SLBA’)加載至記憶體內的表;(4)如果需要,將一鍵值對從記憶體內的表移出至儲存器內的表。
當輸入指紋可以在儲存器內的表上而不是在記憶體內的表上找到匹配的指紋時,也會出現兩種案例,例如案例C以及案例D,案例C相似於案例A,當從儲存器內的表中找到的儲存池邏輯區塊位址有著與輸入儲存池邏輯區塊位址相同的值時,鍵值對(FP,SLBA)需要被更進一步地加載至記憶體內的表(不同步驟),由於快取移除(cache eviction),加載新的鍵值對可能會觸發額外的寫入。案例D相似於案例B,案例D中也需要案例B中為鍵值對(FP’,SLBA)的相同刪除操作,類似地,加載新的鍵值對至記憶體內的表可能會觸發額外的移除快取的操作。
第18圖為在任一個表上都找不到指紋的情況下,第15圖所示更新要求控制方案的相關處理的一些範例的示意圖,例如,案例E、案例F以及案例G的各自的處理(例如各自的步驟之各自的操作)可以列出如下:
‧ 案例E(回傳不匹配)-在記憶體內的表上找到(FP’,SLBA)
(1)不需要變更SLBA → pointer;(2)刪除FP’ → pointer;(3)插入FP → pointer;
‧ 案例F(回傳不匹配)-在儲存器內的表上找到(FP’,SLBA)
(1)從指紋-至-儲存池邏輯區塊位址資料庫中刪除FP’ → SLBA;(2)從儲存池邏輯區塊位址-至-指紋資料庫中SLBA → FP’;(3)將新的鍵值對(FP,SLBA)插入至記憶體內的表;(4)如果需要,將一鍵值對從記憶體內的表移出至儲存器內的表;
‧ 案例G(回傳不匹配)-在記憶體內的表以及儲存器內的表上找到(FP’,SLBA)
(1)刪除儲存器內的映射(和案例F的步驟1~2相同);(2)刪除FP’ → pointer以及插入FP → pointer(和案例E的步驟1~3相同)。當輸入指紋無法在記憶體內的表以及儲存器內的表上找到相匹配的指紋時,將出現三種案例,例如案例E、案例F以及案例G,在案例E中,有著儲存池邏輯區塊位址的相同的值的鍵值對僅在記憶體內的表上被找到,指紋引擎130僅需要自記憶體內的表中刪除從指紋FP’至鍵值項目的映射,而藉由查找記憶體內的表(其儲存從一儲存池邏輯區塊位址至一鍵值項目的記憶體位置的映射),可以找到該鍵值對。在案例F中,有著儲存池邏輯區塊位址的相同的值的鍵值對僅在儲存器內的表上被找到,且因為新的鍵值對僅會被插入至記憶體內的表中,指紋引擎130可能必須自儲存器內的表中刪除兩個映射關係(例如指紋-至-儲存池邏輯區塊位址以及儲存池邏輯區塊位址-至-指紋),要注意的是,由於快取移除,插入新的鍵值對(FP,SLBA)可能也會觸發額外的寫入。在案例G中,有著儲存池邏輯區塊位址的相同的值的鍵值對在儲存器內的表以及記憶體內的表上被找到,指紋引擎130可能需要自儲存器內的表中刪除鍵值對(FP’,SLBA)(與案例F
中的步驟相同),指紋引擎130可能也需要刪除從指紋’至鍵值項目的映射(與案例E中的步驟相同)。對於所有上述討論的案例,可以得出結論就是大多數的案例不需要做太多不必要的輸入/輸出,例如,在案例A中不需要任何輸入/輸出,故可以大幅提高查找性能。
第19圖為根據本發明一實施例之利用命令相關過濾器獲取增強的可擴展性(enhanced scalability)的示意圖(例如相關聯的參數可以包含有:要求(request)的個數:108、0%重複資料刪除、99%更新、管理器個數:3),其中縱軸代表每秒輸入/輸出(千)(為了簡便起見,標示為“IOPS(K)”),橫軸代表指紋產生器數量。關於可擴展性,性能可隨著指紋產生器數量(例如CPU數量)來擴展,但是可能會發生飽和,如第19圖所示,與禁用儲存池邏輯區塊位址過濾器(例如不具有(without,w/o)儲存池邏輯區塊位址過濾器)的案例相比,當啟用儲存池邏輯區塊位址時(例如具有(with,w/)儲存池邏輯區塊位址過濾器),性能可以隨著更多個指紋產生器而線性擴展。以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
S01,S02A~S08A,S02B~S04B:步驟
Claims (10)
- 一種借助一命令相關過濾器來進行重複資料刪除管理的方法,包含有:利用在一主裝置上的至少一程式模組來將一使用者資料寫入至一儲存裝置層,且利用一基於指紋的重複資料刪除管理模組來創造多個指紋並將該多個指紋儲存至一指紋儲存器,以作為該使用者資料的各自代表,用來最小化有關重複資料刪除控制的計算量;以及利用該基於指紋的重複資料刪除管理模組中的該命令相關過濾器來監控該基於指紋的重複資料刪除管理模組中的多個處理路徑之中的一處理路徑上的多個命令,決定在該多個命令中有關該使用者資料的任何變化的一組命令,並且將該組命令轉換成一單一命令以消除該組命令中的一個或多個非必要的命令,其中在該多個命令中有關該使用者資料的所述任何變化的該組命令是根據該組命令所分別攜帶的位址來決定。
- 如申請專利範圍第1項所述之方法,其另包含有:利用該儲存伺服器執行該單一命令,而非執行該組命令中的所有命令。
- 如申請專利範圍第1項所述之方法,其中該基於指紋的重複資料刪除管理模組包含有多個子模組;且除了該命令相關過濾器外,該多個子模組另包含有一重複資料刪除模組應用程式介面、一重複資料刪除管理器、一指紋管理器、一指紋產生器、一指紋匹配器以及一指紋資料管理器,用來與該基於指紋的重複資料刪除管理模組外部的一個或多個程式模組進行互動,以分別進行重複資料刪除管理、進行指紋管理、產生該多個指紋、進行有關指紋匹配檢測的指紋比較以及在該指紋儲存器上進行指紋資料管理。
- 如申請專利範圍第1項所述之方法,其中該基於指紋的重複資料刪除管理模組包含有多個子模組,且除了該命令相關過濾器外,該多個子模組另包含有一重複資料刪除模組應用程式介面、一重複資料刪除管理器以及一指紋管理器;且該方法另包含有:利用該重複資料刪除模組應用程式介面來與該基於指紋的重複資料刪除管理模組外部的一個或多個程式模組進行互動,以接收該多個命令的至少一部分;利用該重複資料刪除管理器來通過該命令相關過濾器向該指紋管理器傳送該多個命令的該至少一部分;以及利用該指紋管理器來因應該單一命令進行處理。
- 如申請專利範圍第1項所述之方法,其中該指紋儲存器係利用在該基於指紋的重複資料刪除管理模組之控制下的一儲存相關硬體元件的一儲存區域來實作。
- 如申請專利範圍第5項所述之方法,其中該儲存相關硬體元件包含有一隨機存取記憶體、一非揮發性記憶體、一硬碟以及一固態硬碟中的任一者。
- 如申請專利範圍第1項所述之方法,其中該組命令包含有該單一命令以及該一個或多個非必要的命令。
- 一種主裝置,包含有: 一處理電路,用來控制該主裝置以進行基於指紋的重複資料刪除管理,其中:在該主裝置上的至少一程式模組將一使用者資料寫入至一儲存裝置層,且一基於指紋的重複資料刪除管理模組創造多個指紋並將該多個指紋儲存至一指紋儲存器,以作為該使用者資料的各自代表,用來最小化有關重複資料刪除控制的計算量;以及該基於指紋的重複資料刪除管理模組中的一命令相關過濾器監控該基於指紋的重複資料刪除管理模組中的多個處理路徑之中的一處理路徑上的多個命令,決定在該多個命令中有關該使用者資料的任何變化的一組命令,並且將該組命令轉換成一單一命令以消除該組命令中的一個或多個非必要的命令,其中在該多個命令中有關該使用者資料的所述任何變化的該組命令是根據該組命令所分別攜帶的位址來決定。
- 如申請專利範圍第8項所述之主裝置,其另包含有:一機殼,用來安裝該主裝置的多個元件以及至少一儲存裝置,其中該主裝置的該多個元件包含有該處理電路。
- 一種儲存伺服器,包含有:一主裝置,用來控制該儲存伺服器的操作,該主裝置包含有:一處理電路,用來控制該主裝置以進行在該儲存伺服器中的基於指紋的重複資料刪除管理;以及一儲存裝置層,該儲存裝置層包含有耦接於該主裝置的至少一儲存裝置;其中:在該主裝置上的至少一程式模組將一使用者資料寫入至該儲存裝置層,且 一基於指紋的重複資料刪除管理模組創造多個指紋並將該多個指紋儲存至一指紋儲存器,以作為該使用者資料的各自代表,用來最小化有關重複資料刪除控制的計算量;以及該基於指紋的重複資料刪除管理模組中的一命令相關過濾器監控該基於指紋的重複資料刪除管理模組中的多個處理路徑之中的一處理路徑上的多個命令,決定在該多個命令中有關該使用者資料的任何變化的一組命令,並且將該組命令轉換成一單一命令以消除該組命令中的一個或多個非必要的命令,其中在該多個命令中有關該使用者資料的所述任何變化的該組命令是根據該組命令所分別攜帶的位址來決定。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062983763P | 2020-03-02 | 2020-03-02 | |
US62/983,763 | 2020-03-02 | ||
US17/140,147 | 2021-01-04 | ||
US17/140,147 US20210271650A1 (en) | 2020-03-02 | 2021-01-04 | Method and apparatus for performing deduplication management with aid of command-related filter |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202134892A TW202134892A (zh) | 2021-09-16 |
TWI771933B true TWI771933B (zh) | 2022-07-21 |
Family
ID=77463937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110107087A TWI771933B (zh) | 2020-03-02 | 2021-02-26 | 借助命令相關過濾器來進行重複資料刪除管理的方法、主裝置以及儲存伺服器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210271650A1 (zh) |
CN (1) | CN113342264A (zh) |
TW (1) | TWI771933B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4152163B1 (en) * | 2020-06-11 | 2024-10-30 | Huawei Technologies Co., Ltd. | Method for processing metadata in storage device and related device |
US12026062B2 (en) * | 2021-01-04 | 2024-07-02 | EMC IP Holding Company LLC | Provider-agnostic management of backup data stored on a cloud-based object storage |
US11677736B2 (en) * | 2021-03-25 | 2023-06-13 | International Business Machines Corporation | Transient identification generation |
US11487726B1 (en) * | 2021-09-15 | 2022-11-01 | Dell Products, L.P. | Dynamic deduplication hash table management |
US11593218B1 (en) * | 2021-10-04 | 2023-02-28 | EMC IP Holding Company LLC | Source file copying and error handling |
US11593332B1 (en) | 2021-10-04 | 2023-02-28 | EMC IP Holding Company LLC | Destination file copying and error handling |
US11977521B2 (en) | 2021-10-04 | 2024-05-07 | EMC IP Holding Company LLC | Source file copying |
US12038947B2 (en) | 2021-10-04 | 2024-07-16 | EMC IP Holding Company LLC | Destination file copying |
CN116893853B (zh) * | 2023-09-11 | 2023-12-12 | 合肥康芯威存储技术有限公司 | 一种存储设备及擦除指令的处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201734750A (zh) * | 2016-01-15 | 2017-10-01 | 飛康國際股份有限公司 | 包含固態硬碟儲存裝置及類似物的重複資料刪除快取記憶體 |
TW201902224A (zh) * | 2017-04-28 | 2019-01-01 | 美商艾斯卡瓦公司 | 藉由使用主要資料篩的資料無損縮減及對於已經使用主要資料篩來無損地縮減的資料進行多維度搜索和內容關聯的檢索 |
CN109358987A (zh) * | 2018-10-26 | 2019-02-19 | 黄淮学院 | 一种基于两级数据去重的备份集群 |
CN109992645A (zh) * | 2019-03-29 | 2019-07-09 | 国家计算机网络与信息安全管理中心 | 一种基于文本数据的资料管理系统及方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102053914B (zh) * | 2009-10-30 | 2013-07-31 | 慧荣科技股份有限公司 | 记忆装置以及存储器的数据存取方法 |
US8463742B1 (en) * | 2010-09-17 | 2013-06-11 | Permabit Technology Corp. | Managing deduplication of stored data |
WO2013124896A1 (en) * | 2012-02-23 | 2013-08-29 | Hitachi, Ltd. | Chunk- based deduplication system and method thereof |
US9830273B2 (en) * | 2015-07-30 | 2017-11-28 | Netapp, Inc. | Deduplicated host cache flush to remote storage |
KR102559518B1 (ko) * | 2016-09-28 | 2023-07-26 | 에스케이하이닉스 주식회사 | 메모리 제어장치 및 방법 |
-
2021
- 2021-01-04 US US17/140,147 patent/US20210271650A1/en not_active Abandoned
- 2021-02-26 TW TW110107087A patent/TWI771933B/zh active
- 2021-03-02 CN CN202110230924.0A patent/CN113342264A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201734750A (zh) * | 2016-01-15 | 2017-10-01 | 飛康國際股份有限公司 | 包含固態硬碟儲存裝置及類似物的重複資料刪除快取記憶體 |
TW201902224A (zh) * | 2017-04-28 | 2019-01-01 | 美商艾斯卡瓦公司 | 藉由使用主要資料篩的資料無損縮減及對於已經使用主要資料篩來無損地縮減的資料進行多維度搜索和內容關聯的檢索 |
CN109358987A (zh) * | 2018-10-26 | 2019-02-19 | 黄淮学院 | 一种基于两级数据去重的备份集群 |
CN109992645A (zh) * | 2019-03-29 | 2019-07-09 | 国家计算机网络与信息安全管理中心 | 一种基于文本数据的资料管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113342264A (zh) | 2021-09-03 |
TW202134892A (zh) | 2021-09-16 |
US20210271650A1 (en) | 2021-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI771933B (zh) | 借助命令相關過濾器來進行重複資料刪除管理的方法、主裝置以及儲存伺服器 | |
US11079969B1 (en) | Disk array enclosure configured for metadata and data storage processing | |
US9495294B2 (en) | Enhancing data processing performance by cache management of fingerprint index | |
US8880787B1 (en) | Extent metadata update logging and checkpointing | |
CN108459826B (zh) | 一种处理io请求的方法及装置 | |
US9569367B1 (en) | Cache eviction based on types of data stored in storage systems | |
US10216446B2 (en) | Method for deduplication in storage system, storage system, and controller | |
US11281386B2 (en) | Disk array enclosure with metadata journal | |
US9817865B2 (en) | Direct lookup for identifying duplicate data in a data deduplication system | |
WO2016041128A1 (zh) | 数据写请求处理方法和存储阵列 | |
JP6320432B2 (ja) | データ重複排除における、類似性探索に基づくダイジェスト検索 | |
US11061618B1 (en) | Disk array enclosure configured to determine metadata page location based on metadata identifier | |
JP6254293B2 (ja) | データ重複排除方法及びストレージアレイ | |
KR20140082639A (ko) | 보조 캐시의 이주량을 위한 동적으로 조정된 스레시홀드 | |
KR102449585B1 (ko) | 버저닝 저장 장치 및 방법 | |
US11907129B2 (en) | Information processing device, access controller, information processing method, and computer program for issuing access requests from a processor to a sub-processor | |
US10223274B1 (en) | Maintaining track format metadata for target tracks in a target storage in a copy relationship with source tracks in a source storage | |
JP6807395B2 (ja) | プロセッサ・グリッド内の分散データ重複排除 | |
US10430305B2 (en) | Determine whether to rebuild track metadata to determine whether a track format table has a track format code for the track format metadata | |
US11599460B2 (en) | System and method for lockless reading of metadata pages | |
US10191690B2 (en) | Storage system, control device, memory device, data access method, and program recording medium | |
KR102403063B1 (ko) | 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법 | |
JP6552583B2 (ja) | データ重複排除方法及びストレージアレイ | |
US9183154B2 (en) | Method and system to maintain maximum performance levels in all disk groups by using controller VDs for background tasks |