TW202137027A - Data storage system and global deduplication method thereof - Google Patents

Data storage system and global deduplication method thereof Download PDF

Info

Publication number
TW202137027A
TW202137027A TW110105608A TW110105608A TW202137027A TW 202137027 A TW202137027 A TW 202137027A TW 110105608 A TW110105608 A TW 110105608A TW 110105608 A TW110105608 A TW 110105608A TW 202137027 A TW202137027 A TW 202137027A
Authority
TW
Taiwan
Prior art keywords
data
representative value
erasure
data block
value
Prior art date
Application number
TW110105608A
Other languages
Chinese (zh)
Other versions
TWI815086B (en
Inventor
蔡金印
賴義麟
Original Assignee
威盛電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 威盛電子股份有限公司 filed Critical 威盛電子股份有限公司
Priority to US17/195,551 priority Critical patent/US11709609B2/en
Priority to CN202110270233.3A priority patent/CN112835538A/en
Publication of TW202137027A publication Critical patent/TW202137027A/en
Application granted granted Critical
Publication of TWI815086B publication Critical patent/TWI815086B/en

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

A data storage system and a global deduplication method thereof are provided. The data storage system includes multiple storage devices and a dispatch device. The dispatch device divides the original data corresponding to a data writing request into at least one data chunk. The dispatch device performs a summary calculation on one data chunk to generate a representative value. The dispatch device performs a distribution calculation on the representative value to determine the destination location corresponding to the representative value. The dispatch device transmits the data chunk and the representative value to at least one destination storage device among the storage devices through a communication network according to the destination location. The at least one destination storage device checks the representative value to determine whether to store the data chunk in the storage space of the at least one destination storage device.

Description

資料儲存系統及其全域去重複方法Data storage system and its global deduplication method

本發明是有關於一種資料儲存技術,且特別是有關於一種資料儲存系統及其全域去重複方法。The present invention relates to a data storage technology, and particularly relates to a data storage system and its global deduplication method.

分散式儲存系統(資料儲存系統)包括多個物件儲存裝置(object storage device)。這些物件儲存裝置可以經由通訊網路而彼此連接,其中所述通訊網路包括區域網路以及(或是)網際網路。多個使用者裝置可以通過網路而將資料儲存於分散式儲存系統。無論如何,儲存於分散式儲存系統中的資料可能有重複。為了將大量資料更有效地存儲在分散式儲存系統中,需要一種資料縮減技術,例如去重複(deduplication)技術。去重複技術可以消除重複資料的副本,以降低儲存資料量。The distributed storage system (data storage system) includes multiple object storage devices. These object storage devices can be connected to each other via a communication network, where the communication network includes a local area network and/or the Internet. Multiple user devices can store data in a distributed storage system via the network. In any case, the data stored in the distributed storage system may be duplicated. In order to store a large amount of data more effectively in a distributed storage system, a data reduction technology, such as deduplication, is needed. Deduplication technology can eliminate duplicates of duplicate data to reduce the amount of stored data.

分散式儲存系統的一個範例是Ceph。公知的Ceph是一種開源軟體儲存平台(open-source software storage platform),其將物件儲存實施在單個分散式計算機群(distributed computer cluster)。由於分散式儲存系統的資料處理過程和附加的元資料(metadata)管理,分散式儲存系統很難進行全域去重複。例如,Ceph沒有支持全域去重複。An example of a distributed storage system is Ceph. The well-known Ceph is an open-source software storage platform that implements storage of objects in a single distributed computer cluster. Due to the data processing process and additional metadata management of the distributed storage system, it is difficult for the distributed storage system to perform global deduplication. For example, Ceph does not support global deduplication.

須注意的是,「先前技術」段落的內容是用來幫助了解本發明。在「先前技術」段落所揭露的部份內容(或全部內容)可能不是所屬技術領域中具有通常知識者所知道的習知技術。在「先前技術」段落所揭露的內容,不代表該內容在本發明申請前已被所屬技術領域中具有通常知識者所知悉。It should be noted that the content of the "prior art" paragraph is used to help understand the present invention. Part of the content (or all of the content) disclosed in the "Prior Art" paragraph may not be the conventional technology known to those with ordinary knowledge in the technical field. The content disclosed in the "prior art" paragraph does not mean that the content has been known to those with ordinary knowledge in the technical field before the application of the present invention.

本發明提供一種資料儲存系統及其全域去重複方法,其可以在分散式儲存環境中有效去重複。The present invention provides a data storage system and a global deduplication method thereof, which can effectively deduplication in a distributed storage environment.

在本發明的一實施例中,上述的資料儲存系統包括多個儲存裝置以及一個分派裝置。這些儲存裝置適於耦接至通訊網路。分派裝置適於接收資料寫請求。分派裝置被配置為將資料寫請求所對應的原資料切割為至少一個資料塊。分派裝置對在所述至少一個資料塊中的一個目前資料塊進行摘要計算,以產生目前資料塊所對應的代表值。分派裝置對代表值進行第一分佈計算,以決定代表值所對應的目的位置。分派裝置依照目的位置而通過通訊網路將目前資料塊與代表值傳輸至這些儲存裝置中的至少一個目的儲存裝置。所述至少一個目的儲存裝置檢查代表值,以決定是否將目前資料塊存入所述至少一個目的儲存裝置的儲存空間中。In an embodiment of the present invention, the aforementioned data storage system includes a plurality of storage devices and a dispatch device. These storage devices are suitable for coupling to a communication network. The dispatching device is adapted to receive data write requests. The dispatching device is configured to cut the original data corresponding to the data write request into at least one data block. The allocating device performs summary calculation on a current data block in the at least one data block to generate a representative value corresponding to the current data block. The allocating device performs a first distribution calculation on the representative value to determine the destination location corresponding to the representative value. The dispatching device transmits the current data block and the representative value to at least one of the storage devices through the communication network according to the destination location. The at least one destination storage device checks the representative value to determine whether to store the current data block in the storage space of the at least one destination storage device.

在本發明的一實施例中,上述的一種全域去重複方法包括:由分派裝置接收資料寫請求;由分派裝置將資料寫請求所對應的原資料切割為至少一個資料塊;由分派裝置對在所述至少一個資料塊中的一個目前資料塊進行摘要計算,以產生目前資料塊所對應的代表值;由分派裝置對代表值進行第一分佈計算,以決定代表值所對應的目的位置;由分派裝置依照目的位置而通過通訊網路將目前資料塊與代表值傳輸至多個儲存裝置中的至少一個目的儲存裝置;以及由所述至少一個目的儲存裝置檢查代表值,以決定是否將目前資料塊存入所述至少一個目的儲存裝置的儲存空間中。In an embodiment of the present invention, the aforementioned global deduplication method includes: receiving a data write request by a dispatching device; cutting the original data corresponding to the data writing request into at least one data block by the dispatching device; A current data block in the at least one data block performs summary calculation to generate a representative value corresponding to the current data block; the dispatching device performs a first distribution calculation on the representative value to determine the destination location corresponding to the representative value; The dispatching device transmits the current data block and the representative value to at least one destination storage device among the plurality of storage devices through the communication network according to the destination location; and the at least one destination storage device checks the representative value to determine whether to store the current data block Into the storage space of the at least one destination storage device.

基於上述,本發明諸實施例所述資料儲存系統及其全域去重複方法可以被應用於分散式儲存系統。分派裝置可以產生目前資料塊所對應的代表值,以及依據代表值決定目的位置。依照所述目的位置,分派裝置可以通過通訊網路(例如區域網路或是其他網路)將目前資料塊與代表值傳輸至多個儲存裝置中的至少一個目的儲存裝置。也就是說,相同的資料塊會被傳送至相同的儲存裝置。所述目的儲存裝置可以檢查代表值,以決定是否將目前資料塊存入其本地的儲存空間中。因此,所述資料儲存系統可以在分散式儲存環境中有效去重複。Based on the above, the data storage system and its global deduplication method described in the embodiments of the present invention can be applied to a distributed storage system. The dispatch device can generate the representative value corresponding to the current data block, and determine the destination location based on the representative value. According to the destination location, the allocating device can transmit the current data block and representative value to at least one destination storage device among the multiple storage devices through a communication network (such as a local area network or other network). In other words, the same data block will be sent to the same storage device. The destination storage device can check the representative value to determine whether to store the current data block in its local storage space. Therefore, the data storage system can effectively de-duplicate in a distributed storage environment.

為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。In order to make the above-mentioned features and advantages of the present invention more comprehensible, the following specific embodiments are described in detail in conjunction with the accompanying drawings.

在本案說明書全文(包括申請專利範圍)中所使用的「耦接(或連接)」一詞可指任何直接或間接的連接手段。舉例而言,若文中描述第一裝置耦接(或連接)於第二裝置,則應該被解釋成該第一裝置可以直接連接於該第二裝置,或者該第一裝置可以透過其他裝置或某種連接手段而間接地連接至該第二裝置。本案說明書全文(包括申請專利範圍)中提及的「第一」、「第二」等用語是用以命名元件(element)的名稱,或區別不同實施例或範圍,而並非用來限制元件數量的上限或下限,亦非用來限制元件的次序。另外,凡可能之處,在圖式及實施方式中使用相同標號的元件/構件/步驟代表相同或類似部分。不同實施例中使用相同標號或使用相同用語的元件/構件/步驟可以相互參照相關說明。The term "coupling (or connection)" used in the full text of the description of this case (including the scope of the patent application) can refer to any direct or indirect connection means. For example, if it is described in the text that the first device is coupled (or connected) to the second device, it should be interpreted as that the first device can be directly connected to the second device, or the first device can be connected through other devices or some This kind of connection means is indirectly connected to the second device. The terms "first" and "second" mentioned in the full text of the description of this case (including the scope of the patent application) are used to name the element (element), or to distinguish different embodiments or ranges, and are not used to limit the number of elements The upper or lower limit of is not used to limit the order of components. In addition, wherever possible, elements/components/steps with the same reference numbers in the drawings and embodiments represent the same or similar parts. Elements/components/steps that use the same reference numerals or use the same terms in different embodiments may refer to related descriptions.

圖1是依照本發明的一實施例的一種資料儲存系統100的電路方塊(circuit block)示意圖。使用者裝置10可以通過通訊網路20發出資料寫請求、資料讀請求以及(或是)其他請求至資料儲存系統100。資料儲存系統100可以通過通訊網路20提供雲端儲存服務給一個或多個使用者裝置10。所述使用者裝置10可以是手機、平板電腦、筆記型電腦、個人電腦以及(或是)其他電子裝置。所述通訊網路20可以包含區域網路、網際網路以及(或是)其他通訊網路。FIG. 1 is a schematic diagram of a circuit block of a data storage system 100 according to an embodiment of the present invention. The user device 10 can send data write requests, data read requests, and/or other requests to the data storage system 100 via the communication network 20. The data storage system 100 can provide cloud storage services to one or more user devices 10 via the communication network 20. The user device 10 may be a mobile phone, a tablet computer, a notebook computer, a personal computer, and/or other electronic devices. The communication network 20 may include a local area network, the Internet, and/or other communication networks.

在圖1所示實施例中,資料儲存系統100包括分派裝置110、儲存裝置120_1、儲存裝置120_2、儲存裝置120_3、儲存裝置120_4、儲存裝置120_5、…、儲存裝置120_n。分派裝置110與儲存裝置120_1~120_n適於耦接至通訊網路20。儲存裝置120_1~120_n的數量n可以依照設計需求來決定。舉例來說,在某一個實施例中,所述數量n可以為2。In the embodiment shown in FIG. 1, the data storage system 100 includes a dispatch device 110, a storage device 120_1, a storage device 120_2, a storage device 120_3, a storage device 120_4, a storage device 120_5, ..., a storage device 120_n. The dispatching device 110 and the storage devices 120_1 to 120_n are suitable for coupling to the communication network 20. The number n of storage devices 120_1 to 120_n can be determined according to design requirements. For example, in an embodiment, the number n may be 2.

儲存裝置120_1~120_n可以是互為獨立的多個電子設備。依照設計需求,這些儲存裝置120_1~120_n的任何一個可以是個人電腦、工作站、伺服器、網路附加儲存(network attached storage,NAS)設備以及(或是)其他電子設備。依照設計需求,在一些實施例中,分派裝置110可以是獨立於儲存裝置120_1~120_n的另一個電子設備,而分派裝置110可以是個人電腦、工作站、伺服器、NAS設備以及(或是)其他電子設備。在另一些實施例中,這些儲存裝置120_1~120_n中的至少一個可以被選用做為分派裝置110。The storage devices 120_1 to 120_n may be multiple electronic devices independent of each other. According to design requirements, any of these storage devices 120_1 to 120_n can be a personal computer, a workstation, a server, a network attached storage (NAS) device, and/or other electronic devices. According to design requirements, in some embodiments, the dispatching device 110 may be another electronic device independent of the storage devices 120_1 to 120_n, and the dispatching device 110 may be a personal computer, a workstation, a server, a NAS device, and/or other Electronic equipment. In other embodiments, at least one of the storage devices 120_1 to 120_n may be selected as the dispatching device 110.

依照不同的設計需求,上述分派裝置110以及(或是)儲存裝置120_1~120_n的方塊的實現方式可以是硬體(hardware)、韌體(firmware)、軟體(software,即程式)或是前述三者中的多者的組合形式。以硬體形式而言,上述分派裝置110以及(或是)儲存裝置120_1~120_n的方塊的相關功能可以被實現於一或多個控制器、微控制器、微處理器、特殊應用積體電路(Application-specific integrated circuit, ASIC)、數位訊號處理器(digital signal processor, DSP)、場可程式邏輯閘陣列(Field Programmable Gate Array, FPGA)及/或其他處理單元中的各種邏輯區塊、模組和電路。According to different design requirements, the implementation of the blocks of the dispatch device 110 and/or the storage devices 120_1 to 120_n can be hardware, firmware, software, or the aforementioned three A combination of more than one of them. In terms of hardware, the related functions of the blocks of the aforementioned dispatching device 110 and/or storage devices 120_1 to 120_n can be implemented in one or more controllers, microcontrollers, microprocessors, and integrated circuits for special applications. (Application-specific integrated circuit, ASIC), digital signal processor (DSP), Field Programmable Gate Array (FPGA) and/or various logic blocks and modules in other processing units Groups and circuits.

以軟體形式及/或韌體形式而言,上述分派裝置110以及(或是)儲存裝置120_1~120_n的相關功能可以被實現為編程碼(programming codes)。例如,利用一般的編程語言(programming languages,例如C、C++或組合語言)或其他合適的編程語言來實現上述分派裝置110以及(或是)儲存裝置120_1~120_n。所述編程碼可以被記錄/存放在記錄媒體中。在一些實施例中,所述記錄媒體例如包括唯讀記憶體(Read Only Memory,ROM)、存儲裝置以及(或是)隨機存取記憶體(Random Access Memory,RAM)。在另一些實施例中,所述記錄媒體可以包括「非臨時的電腦可讀取媒體(non-transitory computer readable medium)」。舉例來說,帶(tape)、碟(disk)、卡(card)、半導體記憶體、可程式設計的邏輯電路等可以被使用來實現所述非臨時的電腦可讀取媒體。電腦、中央處理器(Central Processing Unit,CPU)、控制器、微控制器或微處理器可以從所述記錄媒體中讀取並執行所述編程碼,從而實現上述分派裝置110以及(或是)儲存裝置120_1~120_n的相關功能。而且,所述編程碼也可經由任意傳輸媒體(通信網路或廣播電波等)而提供給所述電腦(或CPU)。所述通信網路例如是網際網路(Internet)、有線通信(wired communication)、無線通信(wireless communication)或其它通信介質。In terms of software form and/or firmware form, the related functions of the aforementioned dispatching device 110 and/or the storage devices 120_1 to 120_n can be implemented as programming codes. For example, general programming languages (such as C, C++ or assembly languages) or other suitable programming languages are used to implement the aforementioned dispatching device 110 and/or the storage devices 120_1 to 120_n. The programming code can be recorded/stored in a recording medium. In some embodiments, the recording medium includes, for example, a read only memory (Read Only Memory, ROM), a storage device, and/or a random access memory (Random Access Memory, RAM). In other embodiments, the recording medium may include "non-transitory computer readable medium". For example, tape, disk, card, semiconductor memory, programmable logic circuit, etc. can be used to implement the non-temporary computer readable medium. A computer, a central processing unit (CPU), a controller, a microcontroller, or a microprocessor can read and execute the programming code from the recording medium, thereby realizing the aforementioned dispatching device 110 and/or Related functions of the storage devices 120_1 to 120_n. Moreover, the programming code can also be provided to the computer (or CPU) via any transmission medium (communication network or broadcast wave, etc.). The communication network is, for example, the Internet, wired communication, wireless communication, or other communication media.

圖2是依照本發明的另一實施例的一種資料儲存系統200的電路方塊示意圖。使用者裝置10可以通過通訊網路30發出資料寫請求、資料讀請求以及(或是)其他請求至資料儲存系統200。資料儲存系統200可以通過通訊網路30提供雲端儲存服務給一個或多個使用者裝置10。所述通訊網路30可以包含區域網路、網際網路以及(或是)其他通訊網路。圖2所示使用者裝置10可以參照圖1所示使用者裝置10的相關說明,故不再贅述。FIG. 2 is a schematic block diagram of a circuit of a data storage system 200 according to another embodiment of the present invention. The user device 10 can send data write requests, data read requests, and/or other requests to the data storage system 200 via the communication network 30. The data storage system 200 can provide cloud storage services to one or more user devices 10 via the communication network 30. The communication network 30 may include a local area network, the Internet, and/or other communication networks. The user device 10 shown in FIG. 2 can refer to the related description of the user device 10 shown in FIG.

在圖2所示實施例中,資料儲存系統200包括分派裝置110以及儲存裝置120_1~120_n。分派裝置110與儲存裝置120_1~120_n適於耦接至通訊網路20。圖2所示通訊網路20、分派裝置110以及儲存裝置120_1~120_n可以參照圖1所示通訊網路20、分派裝置110以及儲存裝置120_1~120_n的相關說明,故不再贅述。In the embodiment shown in FIG. 2, the data storage system 200 includes a dispatching device 110 and storage devices 120_1 to 120_n. The dispatching device 110 and the storage devices 120_1 to 120_n are suitable for coupling to the communication network 20. The communication network 20, the dispatching device 110, and the storage devices 120_1 to 120_n shown in FIG. 2 can refer to the related descriptions of the communication network 20, the dispatching device 110 and the storage devices 120_1 to 120_n shown in FIG.

圖3是依照本發明的一實施例的一種全域去重複方法的流程示意圖。圖3所示全域去重複方法可以適用於圖1所示資料儲存系統100以及(或是)圖2所示資料儲存系統200。依照設計需求,讀者可以參照圖1與圖3來理解下述說明內容,或是參照圖2與圖3來理解下述說明內容。Fig. 3 is a schematic flowchart of a global de-duplication method according to an embodiment of the present invention. The global deduplication method shown in FIG. 3 can be applied to the data storage system 100 shown in FIG. 1 and/or the data storage system 200 shown in FIG. 2. According to design requirements, readers can refer to FIG. 1 and FIG. 3 to understand the following description content, or refer to FIG. 2 and FIG. 3 to understand the following description content.

在步驟S310中,分派裝置110可以接收使用者裝置10的資料寫請求。所述資料寫請求可以包括原鍵值OID與原資料D。亦即,使用者裝置10請求將一筆原資料D寫入資料儲存系統。In step S310, the dispatching device 110 may receive a data write request from the user device 10. The data write request may include the original key value OID and the original data D. That is, the user device 10 requests to write a piece of original data D into the data storage system.

在步驟S320中,分派裝置110可以將所述資料寫請求所對應的原資料D切割為一個(或多個)資料塊(data chunk)。在步驟S330中,分派裝置110可以對在這個(或這些)資料塊中的一個目前資料塊進行摘要計算,以產生目前資料塊所對應的代表值。依照設計需求,在一些實施例中,所述摘要計算可以包括哈希演算法(Hash algorithm)以及(或是)其他演算法,而所述代表值可以包括所述目前資料塊的哈希值。舉例來說,分派裝置110可以將所述原資料D切割為資料塊ChunkA與資料塊ChunkB,分派裝置110可以對資料塊ChunkA進行哈希計算而產生代表值HIDa,以及分派裝置110可以對資料塊ChunkB進行哈希計算而產生代表值HIDb。分派裝置110可以將所述原鍵值OID、代表值HIDa與代表值HIDb的映射關係記錄至分派裝置110的查找表中。In step S320, the dispatching device 110 may cut the original data D corresponding to the data write request into one (or more) data chunks. In step S330, the allocating device 110 may perform a summary calculation on a current data block in this (or these) data blocks to generate a representative value corresponding to the current data block. According to design requirements, in some embodiments, the digest calculation may include a Hash algorithm and/or other algorithms, and the representative value may include the hash value of the current data block. For example, the dispatching device 110 may cut the original data D into a data block ChunkA and a data block ChunkB, the dispatching device 110 may perform a hash calculation on the data block ChunkA to generate the representative value HIDa, and the dispatching device 110 may perform a hash calculation on the data block ChunkB performs a hash calculation to generate a representative value HIDb. The dispatching device 110 may record the mapping relationship between the original key value OID, the representative value HIDa, and the representative value HIDb in the lookup table of the dispatching device 110.

在步驟S340中,分派裝置110可以對所述代表值進行分佈計算,以決定代表值所對應的目的位置。在步驟S350中,分派裝置110可以依照所述目的位置而通過通訊網路20將目前資料塊與代表值傳輸至這些儲存裝置120_1~120_n中的至少一個目的儲存裝置。依照設計需求,在一些實施例中,所述分佈計算可以包括Ceph CRUSH演算法以及(或是)其他演算法。所述Ceph CRUSH演算法為習知技術,故在此不予贅述。舉例來說,分派裝置110可以對資料塊ChunkA的代表值HIDa進行CRUSH計算,並依照計算結果(假設)將資料塊ChunkA傳輸至儲存裝置120_1(目的儲存裝置)。同理,分派裝置110可以對資料塊ChunkB的代表值HIDb進行CRUSH計算,並依照計算結果(假設)將資料塊ChunkB傳輸至儲存裝置120_4(目的儲存裝置)。In step S340, the allocating device 110 may perform a distribution calculation on the representative value to determine the destination location corresponding to the representative value. In step S350, the allocating device 110 can transmit the current data block and the representative value to at least one of the storage devices 120_1 to 120_n through the communication network 20 according to the destination location. According to design requirements, in some embodiments, the distributed calculation may include the Ceph CRUSH algorithm and/or other algorithms. The Ceph CRUSH algorithm is a conventional technology, so it will not be repeated here. For example, the allocating device 110 may perform CRUSH calculation on the representative value HIDa of the data block ChunkA, and transmit the data block ChunkA to the storage device 120_1 (destination storage device) according to the calculation result (hypothesis). Similarly, the dispatching device 110 can perform CRUSH calculation on the representative value HIDb of the data block ChunkB, and transmit the data block ChunkB to the storage device 120_4 (destination storage device) according to the calculation result (hypothesis).

在步驟S360中,所述目的儲存裝置可以檢查所述代表值,以決定是否將所述目前資料塊存入所述目的儲存裝置的儲存空間中。依照設計需求,所述儲存空間可以是所述目的儲存裝置的硬碟(hard disk drive,HDD)、固態硬碟(solid state drive,SSD)以及(或是)其他儲存介質。舉例來說,在分派裝置110將資料塊ChunkA與代表值HIDa傳輸至儲存裝置120_1(目的儲存裝置)後,儲存裝置120_1可以檢查代表值HIDa,以決定是否將資料塊ChunkA存入儲存裝置120_1的儲存空間中。同理,在分派裝置110將資料塊ChunkB與代表值HIDb傳輸至儲存裝置120_4(目的儲存裝置)後,儲存裝置120_4可以檢查代表值HIDb,以決定是否將資料塊ChunkB存入儲存裝置120_1的儲存空間中。In step S360, the destination storage device may check the representative value to determine whether to store the current data block in the storage space of the destination storage device. According to design requirements, the storage space may be a hard disk drive (HDD), a solid state drive (SSD), and/or other storage media of the destination storage device. For example, after the dispatch device 110 transmits the data block ChunkA and the representative value HIDa to the storage device 120_1 (destination storage device), the storage device 120_1 can check the representative value HIDa to determine whether to store the data block ChunkA in the storage device 120_1. In storage space. Similarly, after the dispatching device 110 transmits the data block ChunkB and the representative value HIDb to the storage device 120_4 (destination storage device), the storage device 120_4 can check the representative value HIDb to determine whether to store the data block ChunkB in the storage device 120_1. In space.

圖4是依照本發明的一實施例的一種儲存裝置的操作流程示意圖。圖3所示步驟S360可以參照圖4的相關說明。在圖4所示實施例中,儲存裝置120_1~120_n的每一個各自具有查找表(或是一鍊結表)。在步驟S410中,所述目的儲存裝置可以接收分派裝置110所提供的目前資料塊與代表值。在步驟S420中,所述目的儲存裝置可以檢查查找表有無所述代表值。舉例來說,在分派裝置110將資料塊ChunkA與代表值HIDa傳輸至儲存裝置120_1(目的儲存裝置)後,儲存裝置120_1可以檢查儲存裝置120_1的查找表有無所述代表值HIDa。FIG. 4 is a schematic diagram of the operation flow of a storage device according to an embodiment of the present invention. For step S360 shown in FIG. 3, reference may be made to the related description of FIG. 4. In the embodiment shown in FIG. 4, each of the storage devices 120_1 to 120_n has a look-up table (or a link table). In step S410, the destination storage device may receive the current data block and representative value provided by the dispatching device 110. In step S420, the destination storage device may check whether the lookup table has the representative value. For example, after the dispatch device 110 transmits the data block ChunkA and the representative value HIDa to the storage device 120_1 (destination storage device), the storage device 120_1 can check the lookup table of the storage device 120_1 for the representative value HIDa.

當查找表有所述代表值時(亦即步驟S430的判斷結果為「是」),所述目的儲存裝置可以進行步驟S440、S450與S460。在步驟S440中,所述目的儲存裝置會放棄將分派裝置110所提供的所述目前資料塊存入儲存空間中,亦即丟棄分派裝置110所提供的所述目前資料塊。在步驟S450中,所述目的儲存裝置可以調增代表值所對應的參照次數值。在步驟S460中,所述目的儲存裝置可以將所述參照次數值更新至所述查找表。舉例來說,在儲存裝置120_1(目的儲存裝置)的查找表有所述代表值HIDa的情況下,儲存裝置120_1可以丟棄分派裝置110所提供的所述目前資料塊ChunkA,將代表值HIDa所對應的參照次數值RefCnt累進加1,以及將參照次數值RefCnt更新至儲存裝置120_1的所述查找表。When the look-up table has the representative value (that is, the judgment result of step S430 is "Yes"), the destination storage device may perform steps S440, S450, and S460. In step S440, the destination storage device will give up storing the current data block provided by the dispatching device 110 in the storage space, that is, discard the current data block provided by the dispatching device 110. In step S450, the destination storage device may increase the reference times value corresponding to the representative value. In step S460, the destination storage device may update the reference count value to the look-up table. For example, in the case where the look-up table of the storage device 120_1 (destination storage device) has the representative value HIDa, the storage device 120_1 may discard the current data block ChunkA provided by the dispatching device 110, and correspond the representative value HIDa The reference count value RefCnt is incremented by 1, and the reference count value RefCnt is updated to the look-up table of the storage device 120_1.

當查找表沒有所述代表值時(亦即步驟S430的判斷結果為「否」),所述目的儲存裝置可以進行步驟S470、S480與S490。在步驟S470中,所述目的儲存裝置可以將分派裝置110所提供的所述目前資料塊存於儲存空間的物理位址。在步驟S480中,所述目的儲存裝置可以將所述代表值所對應的參照次數值設為初始值(例如0)。在步驟S490中,所述目的儲存裝置可以將代表值、物理位址與參照次數值記錄於查找表。舉例來說,假設目前資料塊ChunkA的長度為L。在儲存裝置120_1(目的儲存裝置)的查找表沒有所述代表值HIDa的情況下,儲存裝置120_1可以將分派裝置110所提供的目前資料塊ChunkA存於儲存裝置120_1的儲存空間的某個物理位址FADD,將代表值HIDa所對應的參照次數值RefCnt重置為0,以及將代表值HIDa、物理位址FADD、長度L與參照次數值RefCnt記錄於儲存裝置120_1的查找表。When the look-up table does not have the representative value (that is, the judgment result of step S430 is “No”), the destination storage device may perform steps S470, S480, and S490. In step S470, the destination storage device may store the current data block provided by the dispatching device 110 in the physical address of the storage space. In step S480, the destination storage device may set the reference count value corresponding to the representative value as an initial value (for example, 0). In step S490, the destination storage device may record the representative value, the physical address, and the reference count value in the lookup table. For example, suppose that the length of the current data block ChunkA is L. In the case that the look-up table of the storage device 120_1 (destination storage device) does not have the representative value HIDa, the storage device 120_1 can store the current data block ChunkA provided by the dispatch device 110 in a physical location of the storage space of the storage device 120_1 Address FADD, reset the reference count value RefCnt corresponding to the representative value HIDa to 0, and record the representative value HIDa, the physical address FADD, the length L, and the reference count value RefCnt in the look-up table of the storage device 120_1.

圖5是依照本發明的一實施例說明圖1或圖2所示分派裝置110的電路方塊示意圖。依照設計需求,圖5所述實施例可以參用圖3與(或)圖4的相關說明。在圖5所述實施例中,分派裝置110包括主分派裝置111以及備援分派裝置112。主分派裝置111與備援分派裝置112適於耦接至通訊網路20。主分派裝置111與備援分派裝置112是互為獨立的兩個電子設備。依照設計需求,主分派裝置111與備援分派裝置112的任何一個可以是個人電腦、工作站、伺服器、NAS設備以及(或是)其他電子設備。依照設計需求,在一些實施例中,主分派裝置111(或備援分派裝置112)可以是獨立於儲存裝置120_1~120_n的另一個電子設備。在另一些實施例中,這些儲存裝置120_1~120_n中的至少一個可以被選用做為主分派裝置111(或備援分派裝置112)。FIG. 5 is a circuit block diagram illustrating the dispatching device 110 shown in FIG. 1 or FIG. 2 according to an embodiment of the present invention. According to design requirements, the embodiment described in FIG. 5 can refer to the related descriptions of FIG. 3 and (or) FIG. 4. In the embodiment shown in FIG. 5, the dispatching device 110 includes a main dispatching device 111 and a backup dispatching device 112. The main dispatching device 111 and the backup dispatching device 112 are adapted to be coupled to the communication network 20. The main dispatching device 111 and the backup dispatching device 112 are two independent electronic devices. According to design requirements, any one of the main dispatching device 111 and the backup dispatching device 112 can be a personal computer, a workstation, a server, a NAS device, and/or other electronic devices. According to design requirements, in some embodiments, the main dispatching device 111 (or the backup dispatching device 112) may be another electronic device independent of the storage devices 120_1 to 120_n. In other embodiments, at least one of the storage devices 120_1 to 120_n may be selected as the main dispatching device 111 (or the backup dispatching device 112).

依照不同的設計需求,上述主分派裝置111以及(或是)備援分派裝置112的方塊的實現方式可以是硬體、韌體、軟體(即程式)或是前述三者中的多者的組合形式。以軟體形式及/或韌體形式而言,上述主分派裝置111以及(或是)備援分派裝置112的相關功能可以被實現為編程碼。例如,利用一般的編程語言(例如C、C++或組合語言)或其他合適的編程語言來實現上述主分派裝置111以及(或是)備援分派裝置112。所述編程碼可以被記錄/存放在記錄媒體中。電腦、CPU、控制器、微控制器或微處理器可以從所述記錄媒體中讀取並執行所述編程碼,從而實現上述主分派裝置111以及(或是)備援分派裝置112的相關功能。而且,所述編程碼也可經由任意傳輸媒體(通信網路或廣播電波等)而提供給所述電腦(或CPU)。According to different design requirements, the implementation of the blocks of the primary dispatching device 111 and/or the redundant dispatching device 112 can be hardware, firmware, software (ie, programs), or a combination of many of the foregoing three. form. In the form of software and/or firmware, the related functions of the above-mentioned primary dispatching device 111 and/or the backup dispatching device 112 can be implemented as programming codes. For example, a general programming language (for example, C, C++, or assembly language) or other suitable programming languages are used to implement the above-mentioned main dispatching device 111 and/or the backup dispatching device 112. The programming code can be recorded/stored in a recording medium. A computer, CPU, controller, microcontroller, or microprocessor can read and execute the programming code from the recording medium, thereby realizing the above-mentioned main dispatching device 111 and (or) the related functions of the backup dispatching device 112 . Moreover, the programming code can also be provided to the computer (or CPU) via any transmission medium (communication network or broadcast wave, etc.).

圖6是依照本發明的一實施例說明圖5所示主分派裝置111的寫操作流程示意圖。圖5所示備援分派裝置112的功能可以參照主分派裝置111的相關說明來類推。請參照圖5與圖6。在步驟S610中,主分派裝置111可以接收使用者裝置10的資料寫請求。所述資料寫請求可以包括原鍵值OID與原資料D。FIG. 6 is a schematic diagram illustrating a write operation flow of the master dispatching device 111 shown in FIG. 5 according to an embodiment of the present invention. The functions of the backup dispatching device 112 shown in FIG. 5 can be deduced by analogy with reference to the relevant description of the main dispatching device 111. Please refer to Figure 5 and Figure 6. In step S610, the master dispatching device 111 may receive a data write request from the user device 10. The data write request may include the original key value OID and the original data D.

在步驟S620中,主分派裝置111可以將所述資料寫請求所對應的原資料D切割為一個(或多個)資料塊(data chunk)。在步驟S630中,主分派裝置111可以對在這個(或這些)資料塊中的一個目前資料塊進行摘要計算,以產生目前資料塊所對應的代表值。在步驟S640中,主分派裝置111可以將原鍵值與代表值的映射關係記錄至主分派裝置111的查找表中。舉例來說,主分派裝置111可以將所述原資料D切割為資料塊ChunkA與資料塊ChunkB,主分派裝置111可以對資料塊ChunkA進行哈希計算而產生代表值HIDa,以及主分派裝置111可以對資料塊ChunkB進行哈希計算而產生代表值HIDb。主分派裝置111可以將原鍵值OID、代表值HIDa與代表值HIDb的映射關係記錄至主分派裝置111的查找表中。In step S620, the main dispatching device 111 may cut the original data D corresponding to the data write request into one (or more) data chunks. In step S630, the main dispatching device 111 may perform a summary calculation on a current data block in this (or these) data blocks to generate a representative value corresponding to the current data block. In step S640, the main dispatching device 111 may record the mapping relationship between the original key value and the representative value in the lookup table of the main dispatching device 111. For example, the main dispatching device 111 may cut the original data D into a data block ChunkA and a data block ChunkB, the main dispatching device 111 may perform a hash calculation on the data block ChunkA to generate a representative value HIDa, and the main dispatching device 111 may Hash calculation is performed on the data block ChunkB to generate the representative value HIDb. The main dispatching device 111 may record the mapping relationship between the original key value OID, the representative value HIDa and the representative value HIDb in the lookup table of the main dispatching device 111.

在步驟S650中,主分派裝置111可以對所述代表值進行分佈計算,以決定代表值所對應的目的位置。在步驟S660中,主分派裝置111可以依照所述目的位置而通過通訊網路20將目前資料塊與代表值傳輸至這些儲存裝置120_1~120_n中的多個目的儲存裝置。舉例來說,主分派裝置111可以對資料塊ChunkA的代表值HIDa進行CRUSH計算,並依照計算結果(假設)將代表值HIDa與資料塊ChunkA傳輸至儲存裝置120_1與120_2(目的儲存裝置)。相同的資料塊ChunkA被傳輸至儲存裝置120_1與120_2,以實現複製(replica)功能。同理,主分派裝置111可以對資料塊ChunkB的代表值HIDb進行CRUSH計算,並依照計算結果(假設)將代表值HIDb與資料塊ChunkB傳輸至儲存裝置120_4與120_5(目的儲存裝置)。In step S650, the main dispatching device 111 may perform a distribution calculation on the representative value to determine the destination location corresponding to the representative value. In step S660, the master dispatching device 111 may transmit the current data block and representative value to multiple destination storage devices among the storage devices 120_1 to 120_n through the communication network 20 according to the destination location. For example, the main dispatching device 111 may perform CRUSH calculation on the representative value HIDa of the data block ChunkA, and transmit the representative value HIDa and the data block ChunkA to the storage devices 120_1 and 120_2 (destination storage devices) according to the calculation result (hypothesis). The same data block ChunkA is transferred to the storage devices 120_1 and 120_2 to realize the replication function. Similarly, the main dispatching device 111 can perform CRUSH calculation on the representative value HIDb of the data block ChunkB, and transmit the representative value HIDb and the data block ChunkB to the storage devices 120_4 and 120_5 (destination storage devices) according to the calculation result (hypothesis).

在這些目的儲存裝置回答(表示成功儲存)後,主分派裝置111可以將所述查找表提供給備援分派裝置112(步驟S670)。在步驟S680中,主分派裝置111可以回答使用者裝置10,以表示成功儲存。備援分派裝置112的查找表的內容與主分派裝置111的查找表的內容一致。因此,在主分派裝置111的查找表被毀損的情況下,或是在主分派裝置111無法正常操作的情況下,備援分派裝置112可以代替主分派裝置111去進行圖6所示寫操作流程以及(或是)圖7所示讀操作流程。After the destination storage device answers (indicating successful storage), the main dispatching device 111 may provide the look-up table to the backup dispatching device 112 (step S670). In step S680, the main dispatching device 111 may reply to the user device 10 to indicate successful storage. The content of the look-up table of the backup dispatching device 112 is consistent with the content of the look-up table of the main dispatching device 111. Therefore, in the case that the lookup table of the main dispatching device 111 is damaged, or the main dispatching device 111 cannot operate normally, the backup dispatching device 112 can replace the main dispatching device 111 to perform the write operation flow shown in FIG. 6 And (or) the read operation flow shown in Figure 7.

圖7是依照本發明的一實施例說明圖5所示主分派裝置111的讀操作流程示意圖。圖5所示備援分派裝置112的功能可以參照主分派裝置111的相關說明來類推。請參照圖5與圖7。在步驟S710中,主分派裝置111可以接收使用者裝置10的資料讀請求。所述資料讀請求可以包括原鍵值OID。在步驟S720中,主分派裝置111可以在主分派裝置111的查找表中搜尋資料讀請求所對應的原鍵值OID,以便從所述查找表取出原鍵值OID所對應的代表值。在步驟S730中,主分派裝置111可以對所述代表值進行分佈計算,以決定代表值所對應的目的位置。在步驟S740中,主分派裝置111可以依照所述目的位置而通過通訊網路20將讀請求與代表值傳輸至這些儲存裝置120_1~120_n中的一個(或多個)目的儲存裝置。FIG. 7 is a schematic diagram illustrating a read operation flow of the master dispatching device 111 shown in FIG. 5 according to an embodiment of the present invention. The functions of the backup dispatching device 112 shown in FIG. 5 can be deduced by analogy with reference to the relevant description of the main dispatching device 111. Please refer to Figure 5 and Figure 7. In step S710, the master dispatching device 111 may receive a data reading request from the user device 10. The data read request may include the original key value OID. In step S720, the main dispatching device 111 may search for the original key value OID corresponding to the data read request in the lookup table of the main dispatching device 111, so as to retrieve the representative value corresponding to the original key value OID from the lookup table. In step S730, the main dispatching device 111 may perform a distribution calculation on the representative value to determine the destination location corresponding to the representative value. In step S740, the main dispatching device 111 may transmit the read request and the representative value to one (or more) of the storage devices 120_1 to 120_n through the communication network 20 according to the destination location.

舉例來說,主分派裝置111可以在主分派裝置111的查找表中搜尋原鍵值OID,以便從所述查找表取出原鍵值OID所對應的代表值HIDa與HIDb。主分派裝置111可以對代表值HIDa進行CRUSH計算,並依照計算結果(假設)將讀請求與代表值HIDa傳輸至儲存裝置120_1(目的儲存裝置)。在儲存裝置120_2作為儲存裝置120_1的備援裝置的情況下,當儲存裝置120_1的資料失效時,主分派裝置111可以將讀請求與代表值HIDa傳輸至儲存裝置120_2(目的儲存裝置)。同理,主分派裝置111可以對代表值HIDb進行CRUSH計算,並依照計算結果(假設)將讀請求與代表值HIDb傳輸至儲存裝置120_4(目的儲存裝置)。在儲存裝置120_5作為儲存裝置120_4的備援裝置的情況下,當儲存裝置120_4的資料失效時,主分派裝置111可以將讀請求與代表值HIDa傳輸至儲存裝置120_5(目的儲存裝置)。For example, the main dispatching device 111 may search for the original key value OID in the lookup table of the main dispatching device 111, so as to retrieve the representative values HIDa and HIDb corresponding to the original key value OID from the lookup table. The main dispatching device 111 may perform CRUSH calculation on the representative value HIDa, and transmit the read request and the representative value HIDa to the storage device 120_1 (destination storage device) according to the calculation result (hypothesis). When the storage device 120_2 is used as a backup device of the storage device 120_1, when the data of the storage device 120_1 fails, the master dispatching device 111 can transmit the read request and the representative value HIDa to the storage device 120_2 (destination storage device). In the same way, the main dispatching device 111 can perform CRUSH calculation on the representative value HIDb, and transmit the read request and the representative value HIDb to the storage device 120_4 (destination storage device) according to the calculation result (hypothesis). When the storage device 120_5 is used as a backup device of the storage device 120_4, when the data of the storage device 120_4 fails, the master dispatching device 111 may transmit the read request and the representative value HIDa to the storage device 120_5 (destination storage device).

所述目的儲存裝置可以依照主分派裝置111所提供的代表值而在其本地的儲存空間中讀取出對應的資料塊,然後依照讀請求將所述資料塊回傳給主分派裝置111。在主分派裝置111接收這些目的儲存裝置所回傳的資料塊(步驟S750)後,主分派裝置111可以彙整這些回傳的資料塊作為原資料D,以及將原資料D回傳給使用者裝置10(步驟S760)。舉例來說,儲存裝置120_1(目的儲存裝置)可以依照主分派裝置111所提供的代表值HIDa而在其本地的儲存空間中讀取出對應的資料塊ChunkA,然後依照讀請求將所述資料塊ChunkA回傳給主分派裝置111。同理,儲存裝置120_4(目的儲存裝置)可以依照主分派裝置111所提供的代表值HIDb而在其本地的儲存空間中讀取出對應的資料塊ChunkB,然後依照讀請求將所述資料塊ChunkB回傳給主分派裝置111。在主分派裝置111接收這些目的儲存裝置120_1與120_4所回傳的資料塊ChunkA與ChunkB後,主分派裝置111可以彙整這些資料塊ChunkA與ChunkB作為原資料D,以及將原鍵值OID與原資料D回傳給使用者裝置10。The destination storage device can read the corresponding data block in its local storage space according to the representative value provided by the main dispatching device 111, and then send the data block back to the main dispatching device 111 according to the read request. After the master dispatching device 111 receives the data blocks returned by these destination storage devices (step S750), the master dispatching device 111 can aggregate these returned data blocks as the original data D, and return the original data D to the user device 10 (Step S760). For example, the storage device 120_1 (destination storage device) can read the corresponding data block ChunkA in its local storage space according to the representative value HIDa provided by the master dispatching device 111, and then transfer the data block according to the read request ChunkA is transmitted back to the main dispatching device 111. Similarly, the storage device 120_4 (destination storage device) can read the corresponding data block ChunkB in its local storage space according to the representative value HIDb provided by the main dispatching device 111, and then transfer the data block ChunkB according to the read request Return to the main dispatching device 111. After the main dispatching device 111 receives the data blocks ChunkA and ChunkB returned by the destination storage devices 120_1 and 120_4, the main dispatching device 111 can aggregate these data blocks ChunkA and ChunkB as the original data D, and combine the original key value OID with the original data D is sent back to the user device 10.

圖8是依照本發明的另一實施例說明圖1或圖2所示分派裝置110的電路方塊示意圖。依照設計需求,圖8所述實施例可以參用圖3與(或)圖4的相關說明。在圖8所述實施例中,分派裝置110包括一個糾刪編碼(Erasure coding)裝置113以及一個(或多個)資料分派裝置114。糾刪編碼裝置113與資料分派裝置114適於耦接至通訊網路20。糾刪編碼裝置113與資料分派裝置114是互為獨立的兩個電子設備。依照設計需求,糾刪編碼裝置113與資料分派裝置114的任何一個可以是個人電腦、工作站、伺服器、NAS設備以及(或是)其他電子設備。依照設計需求,在一些實施例中,糾刪編碼裝置113(或資料分派裝置114)可以是獨立於儲存裝置120_1~120_n的另一個電子設備。在另一些實施例中,這些儲存裝置120_1~120_n中的至少一個可以被選用做為糾刪編碼裝置113(或資料分派裝置114)。FIG. 8 is a circuit block diagram illustrating the dispatching device 110 shown in FIG. 1 or FIG. 2 according to another embodiment of the present invention. According to design requirements, the embodiment described in FIG. 8 can refer to the related descriptions of FIG. 3 and (or) FIG. 4. In the embodiment shown in FIG. 8, the dispatching device 110 includes an erasure coding device 113 and one (or more) data dispatching devices 114. The erasure coding device 113 and the data distribution device 114 are suitable for coupling to the communication network 20. The erasure coding device 113 and the data dispatching device 114 are two independent electronic devices. According to design requirements, any one of the erasure coding device 113 and the data distribution device 114 can be a personal computer, a workstation, a server, a NAS device, and/or other electronic devices. According to design requirements, in some embodiments, the erasure coding device 113 (or the data dispatching device 114) may be another electronic device independent of the storage devices 120_1 to 120_n. In other embodiments, at least one of the storage devices 120_1 to 120_n may be selected as the erasure coding device 113 (or the data dispatching device 114).

依照不同的設計需求,上述糾刪編碼裝置113以及(或是)資料分派裝置114的方塊的實現方式可以是硬體、韌體、軟體(即程式)或是前述三者中的多者的組合形式。以軟體形式及/或韌體形式而言,上述糾刪編碼裝置113以及(或是)資料分派裝置114的相關功能可以被實現為編程碼。例如,利用一般的編程語言(例如C、C++或組合語言)或其他合適的編程語言來實現上述糾刪編碼裝置113以及(或是)資料分派裝置114。所述編程碼可以被記錄/存放在記錄媒體中。電腦、CPU、控制器、微控制器或微處理器可以從所述記錄媒體中讀取並執行所述編程碼,從而實現上述糾刪編碼裝置113以及(或是)資料分派裝置114的相關功能。而且,所述編程碼也可經由任意傳輸媒體(通信網路或廣播電波等)而提供給所述電腦(或CPU)。According to different design requirements, the implementation of the blocks of the erasure coding device 113 and/or the data dispatching device 114 can be hardware, firmware, software (ie, programs), or a combination of more of the three. form. In terms of software and/or firmware, the related functions of the erasure coding device 113 and/or the data dispatching device 114 described above can be implemented as programming codes. For example, a general programming language (such as C, C++, or assembly language) or other suitable programming languages are used to implement the erasure coding device 113 and/or the data dispatching device 114. The programming code can be recorded/stored in a recording medium. A computer, CPU, controller, microcontroller, or microprocessor can read and execute the programming code from the recording medium, so as to realize the related functions of the erasure coding device 113 and/or the data dispatching device 114. . Moreover, the programming code can also be provided to the computer (or CPU) via any transmission medium (communication network or broadcast wave, etc.).

圖9是依照本發明的一實施例說明圖8所示糾刪編碼裝置113與資料分派裝置114的寫操作流程示意圖。圖8所示資料分派裝置114的功能可以參照糾刪編碼裝置113的相關說明來類推。請參照圖8與圖9。在步驟S900中,糾刪編碼裝置113可以接收使用者裝置10的資料寫請求。所述資料寫請求可以包括原鍵值OID與原資料D。FIG. 9 is a schematic diagram illustrating the writing operation flow of the erasure correction coding device 113 and the data dispatching device 114 shown in FIG. 8 according to an embodiment of the present invention. The function of the data dispatching device 114 shown in FIG. 8 can be deduced by referring to the related description of the erasure coding device 113. Please refer to Figure 8 and Figure 9. In step S900, the erasure coding device 113 may receive a data write request from the user device 10. The data write request may include the original key value OID and the original data D.

在步驟S905中,糾刪編碼裝置113可以對原資料D進行糾刪編碼計算,以產生多個糾刪資料以及這些糾刪資料所對應的多個鍵值。在步驟S910中,糾刪編碼裝置113可以對這些鍵值的每一個進行分佈計算,以產生這些鍵值所對應的多個裝置位置。在步驟S915中,糾刪編碼裝置113可以依照所述裝置位置而通過通訊網路20將這些糾刪資料與這些鍵值傳輸至多個資料分派裝置114。舉例來說,糾刪編碼裝置113可以對原資料D進行糾刪編碼計算,以產生多個糾刪資料Shard1、Shard2、Shard3、Shard4與Shard5。糾刪編碼裝置113還可以依據原鍵值OID產生這些糾刪資料Shard1~Shard5所對應的鍵值為OID1、OID2、OID3、OID4與OID5。糾刪編碼裝置113可以對鍵值OID1進行分佈計算,以通過通訊網路20將糾刪資料Shard1與鍵值OID1傳輸至這些資料分派裝置114中的第一個資料分派裝置。同理,糾刪編碼裝置113可以通過通訊網路20將糾刪資料Shard2與鍵值OID2傳輸至這些資料分派裝置114中的第二個資料分派裝置,將糾刪資料Shard3與鍵值OID3傳輸至這些資料分派裝置114中的第三個資料分派裝置,將糾刪資料Shard4與鍵值OID4傳輸至這些資料分派裝置114中的第四個資料分派裝置,以及將糾刪資料Shard5與鍵值OID5傳輸至這些資料分派裝置114中的第五個資料分派裝置。In step S905, the erasure correction coding device 113 may perform erasure correction coding calculations on the original data D to generate multiple erasure correction data and multiple key values corresponding to the erasure correction data. In step S910, the erasure coding device 113 may perform a distributed calculation on each of these key values to generate multiple device positions corresponding to these key values. In step S915, the erasure correction coding device 113 can transmit the erasure correction data and these key values to the multiple data distribution devices 114 via the communication network 20 according to the location of the device. For example, the erasure correction coding device 113 can perform erasure correction coding calculations on the original data D to generate a plurality of erasure correction data Shard1, Shard2, Shard3, Shard4, and Shard5. The erasure coding device 113 can also generate the key values OID1, OID2, OID3, OID4, and OID5 corresponding to the erasure data Shard1 to Shard5 according to the original key value OID. The erasure coding device 113 can perform distributed calculation on the key value OID1 to transmit the erasure correction data Shard1 and the key value OID1 to the first data distribution device of the data distribution devices 114 through the communication network 20. In the same way, the erasure coding device 113 can transmit the erasure data Shard2 and the key value OID2 to the second data distribution device of these data distribution devices 114 through the communication network 20, and transmit the erasure data Shard3 and the key value OID3 to these data distribution devices 114. The third data distribution device in the data distribution device 114 transmits the erasure data Shard4 and the key value OID4 to the fourth data distribution device in the data distribution devices 114, and the erasure data Shard5 and the key value OID5 are transmitted to The fifth data distribution device among these data distribution devices 114.

在步驟S950中,這些資料分派裝置114可以將所述糾刪資料切割為一個(或多個)資料塊(data chunk)。在步驟S955中,這些資料分派裝置114可以對在這個(或這些)資料塊中的一個目前資料塊進行摘要計算,以產生目前資料塊所對應的代表值。在步驟S960中,這些資料分派裝置114可以將原鍵值與代表值的映射關係記錄至資料分派裝置114的查找表中。舉例來說,這些資料分派裝置114中的第一個資料分派裝置可以將所述糾刪資料Shard1切割為資料塊Chunk1A(或更多個資料塊),所述第一個資料分派裝置可以對資料塊Chunk1A進行哈希計算而產生代表值HID1a,以及所述第一個資料分派裝置可以將鍵值OID1與代表值HID1a的映射關係記錄至所述第一個資料分派裝置的查找表中。同理,這些資料分派裝置114中的第二個至第五個資料分派裝置的操作可以參照這些資料分派裝置114中的所述第一個資料分派裝置的相關說明來類推,故不再贅述。In step S950, these data allocating devices 114 can cut the erasure data into one (or more) data chunks. In step S955, these data allocating devices 114 may perform summary calculation on a current data block in this (or these) data blocks to generate a representative value corresponding to the current data block. In step S960, these data allocating devices 114 can record the mapping relationship between the original key value and the representative value in the look-up table of the data allocating device 114. For example, the first data allocating device among these data allocating devices 114 can cut the erasure data Shard1 into data blocks Chunk1A (or more data blocks), and the first data allocating device can compare data The block Chunk1A performs hash calculation to generate the representative value HID1a, and the first data distribution device can record the mapping relationship between the key value OID1 and the representative value HID1a in the lookup table of the first data distribution device. In the same way, the operations of the second to fifth data dispatching devices in these data dispatching devices 114 can be deduced by analogy with reference to the relevant description of the first data dispatching device in these data dispatching devices 114, so they will not be repeated here.

在步驟S965中,這些資料分派裝置114可以對所述代表值進行分佈計算,以決定代表值所對應的目的位置。在步驟S970中,這些資料分派裝置114可以依照所述目的位置而通過通訊網路20將目前資料塊與代表值傳輸至這些儲存裝置120_1~120_n中的一個(或多個)目的儲存裝置。舉例來說,這些資料分派裝置114中的第一個資料分派裝置可以對資料塊Chunk1A的代表值HID1a進行CRUSH計算,並依照計算結果(假設)將代表值HID1a與資料塊Chunk1A傳輸至儲存裝置120_1(目的儲存裝置)。In step S965, these data allocating devices 114 may perform a distribution calculation on the representative value to determine the destination location corresponding to the representative value. In step S970, the data allocating devices 114 can transmit the current data block and the representative value to one (or more) of the storage devices 120_1 to 120_n through the communication network 20 according to the destination location. For example, the first data allocating device among the data allocating devices 114 may perform a CRUSH calculation on the representative value HID1a of the data block Chunk1A, and transmit the representative value HID1a and the data block Chunk1A to the storage device 120_1 according to the calculation result (hypothesis) (Destination storage device).

在這些目的儲存裝置回答(表示成功儲存)後,這些資料分派裝置114可以回答糾刪編碼裝置113(步驟S975)。在這些資料分派裝置114回答(表示成功儲存)後,糾刪編碼裝置113可以回答(表示成功儲存)使用者裝置10。After the destination storage device answers (indicating successful storage), the data allocating device 114 can answer the erasure coding device 113 (step S975). After the data allocating device 114 answers (indicating successful storage), the erasure coding device 113 can answer (indicating successful storage) the user device 10.

圖10是依照本發明的一實施例說明圖8所示糾刪編碼裝置113與資料分派裝置114的讀操作流程示意圖。請參照圖8與圖10。在步驟S1000中,糾刪編碼裝置113可以接收使用者裝置10的資料讀請求。所述資料讀請求可以包括原鍵值OID。在步驟S1005中,糾刪編碼裝置113可以對原鍵值OID進行糾刪編碼計算,以產生多個鍵值。在步驟S1010中,糾刪編碼裝置113可以對這些鍵值的每一個進行分佈計算,以產生這些鍵值所對應的多個裝置位置。在步驟S1015中,糾刪編碼裝置113可以依照所述裝置位置而通過通訊網路20將讀請求與這些鍵值傳輸至多個資料分派裝置114。FIG. 10 is a schematic diagram illustrating the read operation flow of the erasure correction coding device 113 and the data dispatching device 114 shown in FIG. 8 according to an embodiment of the present invention. Please refer to Figure 8 and Figure 10. In step S1000, the erasure coding device 113 may receive a data read request from the user device 10. The data read request may include the original key value OID. In step S1005, the erasure correction coding device 113 may perform erasure correction coding calculations on the original key value OID to generate multiple key values. In step S1010, the erasure coding device 113 may perform distributed calculation on each of these key values to generate multiple device positions corresponding to these key values. In step S1015, the erasure coding device 113 can transmit the read request and these key values to a plurality of data distribution devices 114 via the communication network 20 according to the location of the device.

舉例來說,糾刪編碼裝置113可以對原鍵值OID進行糾刪編碼計算,以產生多個鍵值OID1、OID2、OID3、OID4與OID5。糾刪編碼裝置113可以對鍵值OID1進行分佈計算,以通過通訊網路20將讀請求與與鍵值OID1傳輸至這些資料分派裝置114中的第一個資料分派裝置。同理,糾刪編碼裝置113可以通過通訊網路20將讀請求與鍵值OID2傳輸至這些資料分派裝置114中的第二個資料分派裝置,將讀請求與鍵值OID3傳輸至這些資料分派裝置114中的第三個資料分派裝置,將讀請求與鍵值OID4傳輸至這些資料分派裝置114中的第四個資料分派裝置,以及將讀請求與鍵值OID5傳輸至這些資料分派裝置114中的第五個資料分派裝置。For example, the erasure coding device 113 may perform erasure coding calculation on the original key value OID to generate multiple key values OID1, OID2, OID3, OID4, and OID5. The erasure coding device 113 can perform distributed calculation on the key value OID1, so as to transmit the read request and the key value OID1 to the first data dispatching device among the data dispatching devices 114 through the communication network 20. In the same way, the erasure coding device 113 can transmit the read request and the key value OID2 to the second data dispatching device of the data dispatching devices 114 through the communication network 20, and transmit the read request and the key value OID3 to the data dispatching device 114 The third data dispatching device in the data dispatching device 114 transmits the read request and the key value OID4 to the fourth data dispatching device of these data dispatching devices 114, and the read request and the key value OID5 are transmitted to the first data dispatching device 114 of these data dispatching devices 114 Five data distribution devices.

在步驟S1050中,資料分派裝置114可以在資料分派裝置114的查找表中搜尋讀請求所對應的鍵值,以便從所述查找表取出所述鍵值所對應的代表值。在步驟S1055中,資料分派裝置114可以對所述代表值進行分佈計算,以決定代表值所對應的目的位置。在步驟S1060中,資料分派裝置114可以依照所述目的位置而通過通訊網路20將讀請求與代表值傳輸至這些儲存裝置120_1~120_n中的一個(或多個)目的儲存裝置。In step S1050, the data allocating device 114 may search for the key value corresponding to the read request in the look-up table of the data allocating device 114, so as to retrieve the representative value corresponding to the key value from the look-up table. In step S1055, the data allocating device 114 may perform a distribution calculation on the representative value to determine the destination location corresponding to the representative value. In step S1060, the data distribution device 114 may transmit the read request and the representative value to one (or more) of the storage devices 120_1 to 120_n through the communication network 20 according to the destination location.

舉例來說,這些資料分派裝置114中的第一個資料分派裝置可以在所述第一個資料分派裝置的查找表中搜尋鍵值OID1,以便從所述查找表取出鍵值OID1所對應的代表值HID1a。所述第一個資料分派裝置可以對代表值HID1a進行CRUSH計算,並依照計算結果(假設)將讀請求與代表值HID1a傳輸至儲存裝置120_1(目的儲存裝置)。同理,這些資料分派裝置114中的第二個至第五個資料分派裝置的操作可以參照這些資料分派裝置114中的所述第一個資料分派裝置的相關說明來類推,故不再贅述。For example, the first data allocating device among the data allocating devices 114 may search for the key value OID1 in the lookup table of the first data allocating device, so as to retrieve the representative corresponding to the key value OID1 from the lookup table. Value HID1a. The first data distribution device may perform CRUSH calculation on the representative value HID1a, and transmit the read request and the representative value HID1a to the storage device 120_1 (destination storage device) according to the calculation result (hypothesis). In the same way, the operations of the second to fifth data dispatching devices in these data dispatching devices 114 can be deduced by analogy with reference to the relevant description of the first data dispatching device in these data dispatching devices 114, so they will not be repeated here.

這些目的儲存裝置可以依照這些資料分派裝置114所提供的代表值而在其本地的儲存空間中讀取出對應的資料塊,然後依照讀請求將所述資料塊回傳給這些資料分派裝置114。這些資料分派裝置114接收這些目的儲存裝置所回傳的資料塊(步驟S1065)後,這些資料分派裝置114可以彙整這些回傳的資料塊作為糾刪資料,以及將糾刪資料回傳給糾刪編碼裝置113(步驟S1070)。糾刪編碼裝置113接收這些資料分派裝置114所回傳的糾刪資料後,糾刪編碼裝置113可以彙整這些回傳的糾刪資料作為原資料D,以及將原鍵值OID與原資料D回傳給使用者裝置10(步驟S1020)。These destination storage devices can read corresponding data blocks in their local storage space according to the representative values provided by the data allocating devices 114, and then send the data blocks back to the data allocating devices 114 according to the read request. After the data allocating devices 114 receive the data blocks returned by the destination storage devices (step S1065), the data allocating devices 114 can aggregate the returned data blocks as erasure data, and return the erasure data to erasure correction Encoding device 113 (step S1070). After the erasure-correction coding device 113 receives the erasure-corrected data returned by the data dispatching device 114, the erasure-correction coding device 113 can aggregate the returned erasure-corrected data as the original data D, and return the original key value OID and the original data D. It is transmitted to the user device 10 (step S1020).

舉例來說,儲存裝置120_1(目的儲存裝置)可以依照這些資料分派裝置114中的所述第一個資料分派裝置所提供的代表值HID1a而在其本地的儲存空間中讀取出對應的資料塊Chunk1A,然後依照讀請求將所述資料塊Chunk1A回傳給所述第一個資料分派裝置。在所述第一個資料分派裝置接收目的儲存裝置120_1所回傳的資料塊Chunk1A後,所述第一個資料分派裝置可以彙整這資料塊ChunkA作為糾刪資料Shard1,以及將鍵值OID1與糾刪資料Shard1回傳給糾刪編碼裝置113。同理,這些資料分派裝置114中的第二個至第五個資料分派裝置的操作可以參照這些資料分派裝置114中的所述第一個資料分派裝置的相關說明來類推,故不再贅述。在糾刪編碼裝置113接收這些資料分派裝置114所回傳的糾刪資料Shard1~Shard5後,糾刪編碼裝置113可以彙整這些糾刪資料Shard1~Shard5作為原資料D,以及將原鍵值OID與原資料D回傳給使用者裝置10。For example, the storage device 120_1 (destination storage device) can read the corresponding data block in its local storage space according to the representative value HID1a provided by the first data distribution device among these data distribution devices 114 Chunk1A, and then send the data chunk Chunk1A back to the first data distribution device according to the read request. After the first data distribution device receives the data block Chunk1A returned by the destination storage device 120_1, the first data distribution device can aggregate this data block ChunkA as the erasure data Shard1, and combine the key value OID1 with the erasure data. The deleted data Shard1 is sent back to the erasure coding device 113. In the same way, the operations of the second to fifth data dispatching devices in these data dispatching devices 114 can be deduced by analogy with reference to the relevant description of the first data dispatching device in these data dispatching devices 114, so they will not be repeated here. After the erasure coding device 113 receives the erasure correction data Shard1 to Shard5 returned by the data dispatching device 114, the erasure coding device 113 can aggregate the erasure correction data Shard1 to Shard5 as the original data D, and combine the original key value OID with The original data D is returned to the user device 10.

圖11是依照本發明的又一實施例說明圖1或圖2所示分派裝置110的電路方塊示意圖。依照設計需求,圖11所述實施例可以參用圖3與(或)圖4的相關說明。在圖11所述實施例中,分派裝置110包括糾刪編碼裝置115以及備援糾刪編碼裝置116。糾刪編碼裝置115與備援糾刪編碼裝置116適於耦接至通訊網路20。糾刪編碼裝置115與備援糾刪編碼裝置116是互為獨立的兩個電子設備。依照設計需求,糾刪編碼裝置115與備援糾刪編碼裝置116的任何一個可以是個人電腦、工作站、伺服器、NAS設備以及(或是)其他電子設備。依照設計需求,在一些實施例中,糾刪編碼裝置115(或備援糾刪編碼裝置116)可以是獨立於儲存裝置120_1~120_n的另一個電子設備。在另一些實施例中,這些儲存裝置120_1~120_n中的至少一個可以被選用做為糾刪編碼裝置115(或備援糾刪編碼裝置116)。FIG. 11 is a circuit block diagram illustrating the dispatching device 110 shown in FIG. 1 or FIG. 2 according to another embodiment of the present invention. According to design requirements, the embodiment described in FIG. 11 can refer to the related descriptions of FIG. 3 and (or) FIG. 4. In the embodiment shown in FIG. 11, the dispatching device 110 includes an erasure correction coding device 115 and a backup erasure correction coding device 116. The erasure correction coding device 115 and the redundant erasure correction coding device 116 are adapted to be coupled to the communication network 20. The erasure correction coding device 115 and the backup erasure correction coding device 116 are two independent electronic devices. According to design requirements, any one of the erasure correction coding device 115 and the backup erasure coding device 116 may be a personal computer, a workstation, a server, a NAS device, and/or other electronic devices. According to design requirements, in some embodiments, the erasure correction coding device 115 (or the backup erasure correction coding device 116) may be another electronic device independent of the storage devices 120_1 to 120_n. In other embodiments, at least one of these storage devices 120_1 to 120_n may be selected as the erasure correction coding device 115 (or backup erasure coding device 116).

依照不同的設計需求,上述糾刪編碼裝置115以及(或是)備援糾刪編碼裝置116的方塊的實現方式可以是硬體、韌體、軟體(即程式)或是前述三者中的多者的組合形式。以軟體形式及/或韌體形式而言,上述糾刪編碼裝置115以及(或是)備援糾刪編碼裝置116的相關功能可以被實現為編程碼。例如,利用一般的編程語言(例如C、C++或組合語言)或其他合適的編程語言來實現上述糾刪編碼裝置115以及(或是)備援糾刪編碼裝置116。所述編程碼可以被記錄/存放在記錄媒體中。電腦、CPU、控制器、微控制器或微處理器可以從所述記錄媒體中讀取並執行所述編程碼,從而實現上述糾刪編碼裝置115以及(或是)備援糾刪編碼裝置116的相關功能。而且,所述編程碼也可經由任意傳輸媒體(通信網路或廣播電波等)而提供給所述電腦(或CPU)。According to different design requirements, the implementation of the blocks of the erasure coding device 115 and/or the backup erasure coding device 116 can be hardware, firmware, software (ie, programs) or more of the foregoing three. The combination form of the person. In the form of software and/or firmware, the related functions of the erasure correction coding device 115 and/or the backup erasure coding device 116 can be implemented as programming codes. For example, a general programming language (for example, C, C++, or assembly language) or other suitable programming languages are used to implement the erasure correction coding device 115 and/or the backup erasure coding device 116. The programming code can be recorded/stored in a recording medium. A computer, CPU, controller, microcontroller, or microprocessor can read and execute the programming code from the recording medium, thereby realizing the erasure correction coding device 115 and/or the backup erasure coding device 116. Related functions. Moreover, the programming code can also be provided to the computer (or CPU) via any transmission medium (communication network or broadcast wave, etc.).

圖12是依照本發明的一實施例說明圖11所示糾刪編碼裝置115的寫操作流程示意圖。圖11所示備援糾刪編碼裝置116的功能可以參照糾刪編碼裝置115的相關說明來類推。請參照圖11與圖12。在步驟S1210中,糾刪編碼裝置115可以接收使用者裝置10的資料寫請求。所述資料寫請求可以包括原鍵值OID與原資料D。FIG. 12 is a schematic diagram illustrating the writing operation flow of the erasure correction coding device 115 shown in FIG. 11 according to an embodiment of the present invention. The function of the redundant erasure correction coding device 116 shown in FIG. 11 can be deduced by analogy with reference to the related description of the erasure correction coding device 115. Please refer to Figure 11 and Figure 12. In step S1210, the erasure coding device 115 may receive a data write request from the user device 10. The data write request may include the original key value OID and the original data D.

在步驟S1220中,糾刪編碼裝置115可以對原資料D進行糾刪編碼計算,以產生多個糾刪資料以及這些糾刪資料所對應的多個鍵值。舉例來說,糾刪編碼裝置115可以對原資料D進行糾刪編碼計算,以產生多個糾刪資料Shard1、Shard2、Shard3、Shard4與Shard5。糾刪編碼裝置115還可以依據原鍵值OID產生這些糾刪資料Shard1~Shard5所對應的鍵值為OID1、OID2、OID3、OID4與OID5。In step S1220, the erasure correction coding device 115 may perform erasure correction coding calculations on the original data D to generate multiple erasure correction data and multiple key values corresponding to the erasure correction data. For example, the erasure correction coding device 115 may perform erasure correction coding calculations on the original data D to generate a plurality of erasure correction data Shard1, Shard2, Shard3, Shard4, and Shard5. The erasure coding device 115 can also generate the key values OID1, OID2, OID3, OID4, and OID5 corresponding to the erasure data Shard1 to Shard5 according to the original key value OID.

在步驟S1230中,糾刪編碼裝置115可以將這些糾刪資料的每一個切割為一個(或多個)資料塊(data chunk)。在步驟S1240中,糾刪編碼裝置115可以對在這個(或這些)資料塊中的一個目前資料塊進行摘要計算,以產生目前資料塊所對應的代表值。在步驟S1250中,糾刪編碼裝置115可以將鍵值與代表值的映射關係記錄至糾刪編碼裝置115的查找表中。舉例來說,糾刪編碼裝置115可以將糾刪資料Shard1切割為資料塊Chunk1A(或更多資料塊)。同理,糾刪編碼裝置115可以將糾刪資料Shard2切割為資料塊Chunk2A,將糾刪資料Shard3切割為資料塊Chunk3A,將糾刪資料Shard4切割為資料塊Chunk4A,以及將糾刪資料Shard5切割為資料塊Chunk5A。糾刪編碼裝置115可以對資料塊Chunk1A進行哈希計算而產生代表值HID1a,對資料塊Chunk2A進行哈希計算而產生代表值HID2a,對資料塊Chunk3A進行哈希計算而產生代表值HID3a,對資料塊Chunk4A進行哈希計算而產生代表值HID4a,以及對資料塊Chunk5A進行哈希計算而產生代表值HID5a。糾刪編碼裝置115可以將鍵值OID1~OID5與代表值HID1a~HID5a的映射關係記錄至糾刪編碼裝置115的查找表中。In step S1230, the erasure correction coding device 115 may cut each of these erasure correction data into one (or more) data chunks. In step S1240, the erasure coding device 115 may perform digest calculation on a current data block in this (or these) data blocks to generate a representative value corresponding to the current data block. In step S1250, the erasure correction coding device 115 may record the mapping relationship between the key value and the representative value in the lookup table of the erasure correction coding device 115. For example, the erasure correction coding device 115 can cut the erasure correction data Shard1 into data blocks Chunk1A (or more data blocks). Similarly, the erasure coding device 115 can cut the erasure data Shard2 into data blocks Chunk2A, the erasure data Shard3 into data blocks Chunk3A, the erasure data Shard4 into data blocks Chunk4A, and the erasure data Shard5 into Data block Chunk5A. The erasure coding device 115 can perform a hash calculation on the data block Chunk1A to generate a representative value HID1a, perform a hash calculation on the data block Chunk2A to generate a representative value HID2a, and perform a hash calculation on the data block Chunk3A to generate a representative value HID3a. The block Chunk4A is hashed to generate the representative value HID4a, and the data block Chunk5A is hashed to generate the representative value HID5a. The erasure coding device 115 may record the mapping relationship between the key values OID1 to OID5 and the representative values HID1a to HID5a in the lookup table of the erasure coding device 115.

在步驟S1260中,糾刪編碼裝置115可以對所述代表值進行分佈計算,以決定所述代表值所對應的目的位置。在步驟S1270中,糾刪編碼裝置115可以依照所述目的位置而通過通訊網路20將目前資料塊與代表值傳輸至這些儲存裝置120_1~120_n中的目的儲存裝置。舉例來說,糾刪編碼裝置115可以對資料塊Chunk1A的代表值HID1a進行CRUSH計算,並依照計算結果(假設)將代表值HID1a與資料塊Chunk1A傳輸至儲存裝置120_1(目的儲存裝置)。同理,糾刪編碼裝置115可以對資料塊Chunk2A~Chunk5A的代表值HID2a~HID5a進行CRUSH計算,並依照計算結果(假設)將代表值HID2a~HID5a與資料塊Chunk2A~Chunk5A分別傳輸至儲存裝置120_2~120_5(目的儲存裝置)。In step S1260, the erasure correction coding device 115 may perform a distribution calculation on the representative value to determine the destination position corresponding to the representative value. In step S1270, the erasure coding device 115 can transmit the current data block and the representative value to the destination storage device among the storage devices 120_1 to 120_n through the communication network 20 according to the destination location. For example, the erasure coding device 115 may perform a CRUSH calculation on the representative value HID1a of the data block Chunk1A, and transmit the representative value HID1a and the data block Chunk1A to the storage device 120_1 (destination storage device) according to the calculation result (hypothesis). Similarly, the erasure coding device 115 can perform CRUSH calculations on the representative values HID2a to HID5a of the data blocks Chunk2A to Chunk5A, and transmit the representative values HID2a to HID5a and the data blocks Chunk2A to Chunk5A to the storage device 120_2 according to the calculation result (hypothesis). ~120_5 (Destination storage device).

在這些目的儲存裝置回答(表示成功儲存)後,糾刪編碼裝置115可以將所述查找表提供給備援糾刪編碼裝置116(步驟S1280)。在步驟S1290中,糾刪編碼裝置115可以回答使用者裝置10,以表示成功儲存。備援糾刪編碼裝置116的查找表的內容與糾刪編碼裝置115的查找表的內容一致。因此,在糾刪編碼裝置115的查找表被毀損的情況下,或是在糾刪編碼裝置115無法正常操作的情況下,備援糾刪編碼裝置116可以代替糾刪編碼裝置115去進行圖12所示寫操作流程以及(或是)圖13所示讀操作流程。After the destination storage device answers (indicating successful storage), the erasure correction coding device 115 may provide the look-up table to the backup erasure coding device 116 (step S1280). In step S1290, the erasure coding device 115 may reply to the user device 10 to indicate successful storage. The content of the lookup table of the backup erasure correction coding device 116 is consistent with the content of the lookup table of the erasure correction coding device 115. Therefore, in the case where the look-up table of the erasure correction coding device 115 is damaged, or in the case where the erasure correction coding device 115 cannot operate normally, the backup erasure coding device 116 can replace the erasure correction coding device 115 to perform FIG. 12 The write operation flow shown and/or the read operation flow shown in FIG. 13.

圖13是依照本發明的一實施例說明圖11所示糾刪編碼裝置115的讀操作流程示意圖。圖11所示備援糾刪編碼裝置116的功能可以參照糾刪編碼裝置115的相關說明來類推。請參照圖11與圖13。在步驟S1310中,糾刪編碼裝置115可以接收使用者裝置10的資料讀請求。所述資料讀請求可以包括原鍵值OID。在步驟S1320中,糾刪編碼裝置115可以對所述資料讀請求所對應的原鍵值OID進行糾刪編碼計算,以產生多個鍵值。在步驟S1330中,糾刪編碼裝置115可以在糾刪編碼裝置115的查找表中搜尋這些鍵值,以便從所述查找表取出這些鍵值所對應的代表值。在步驟S1340中,糾刪編碼裝置115可以對所述代表值進行分佈計算,以決定這些代表值所對應的目的位置。在步驟S1350中,糾刪編碼裝置115可以依照所述目的位置而通過通訊網路20將讀請求與這些代表值傳輸至這些儲存裝置120_1~120_n中的一個(或多個)目的儲存裝置。FIG. 13 is a schematic diagram illustrating the read operation flow of the erasure correction coding device 115 shown in FIG. 11 according to an embodiment of the present invention. The function of the redundant erasure correction coding device 116 shown in FIG. 11 can be deduced by analogy with reference to the related description of the erasure correction coding device 115. Please refer to Figure 11 and Figure 13. In step S1310, the erasure coding device 115 may receive a data read request from the user device 10. The data read request may include the original key value OID. In step S1320, the erasure coding device 115 may perform erasure coding calculation on the original key value OID corresponding to the data read request to generate multiple key values. In step S1330, the erasure correction coding device 115 may search for these key values in the lookup table of the erasure correction coding device 115, so as to retrieve the representative values corresponding to these key values from the lookup table. In step S1340, the erasure correction coding device 115 may perform a distribution calculation on the representative values to determine the destination positions corresponding to the representative values. In step S1350, the erasure coding device 115 can transmit the read request and the representative values to one (or more) of the storage devices 120_1 to 120_n through the communication network 20 according to the destination location.

舉例來說,糾刪編碼裝置115可以對原鍵值OID進行糾刪編碼計算,以產生多個鍵值OID1、OID2、OID3、OID4與OID5。糾刪編碼裝置115可以在糾刪編碼裝置115的查找表中搜尋鍵值OID1,以便從所述查找表取出鍵值OID1所對應的代表值HID1a。同理,糾刪編碼裝置115可以在查找表中搜尋鍵值OID2~OID5,以便從所述查找表取出鍵值OID2~OID5所對應的代表值HID2a~HID5a。糾刪編碼裝置115可以對代表值HID1a~HID5a進行CRUSH計算,並依照計算結果(假設)將讀請求與代表值HID1a~HID5a分別傳輸至儲存裝置120_1~120_5(目的儲存裝置)。For example, the erasure coding device 115 may perform erasure coding calculation on the original key value OID to generate multiple key values OID1, OID2, OID3, OID4, and OID5. The erasure coding device 115 can search for the key value OID1 in the lookup table of the erasure coding device 115, so as to retrieve the representative value HID1a corresponding to the key value OID1 from the lookup table. Similarly, the erasure coding device 115 can search for the key values OID2 to OID5 in the lookup table, so as to retrieve the representative values HID2a to HID5a corresponding to the key values OID2 to OID5 from the lookup table. The erasure coding device 115 may perform CRUSH calculation on the representative values HID1a to HID5a, and according to the calculation result (hypothesis), transmit the read request and the representative values HID1a to HID5a to the storage devices 120_1 to 120_5 (destination storage devices), respectively.

所述目的儲存裝置可以依照糾刪編碼裝置115所提供的代表值而在其本地的儲存空間中讀取出對應的資料塊,然後依照讀請求將所述資料塊回傳給糾刪編碼裝置115。在糾刪編碼裝置115接收這些目的儲存裝置所回傳的資料塊(步驟S1360)後,糾刪編碼裝置115可以彙整這些回傳的資料塊作為糾刪資料(步驟S1370)。糾刪編碼裝置115可以彙整這些糾刪資料作為原資料D,以及將原鍵值OID與原資料D回傳給使用者裝置10(步驟S1380)。The destination storage device can read the corresponding data block in its local storage space according to the representative value provided by the erasure coding device 115, and then send the data block back to the erasure coding device 115 according to the read request . After the erasure coding device 115 receives the data blocks returned by these destination storage devices (step S1360), the erasure coding device 115 may aggregate these returned data blocks as erasure data (step S1370). The erasure coding device 115 can aggregate these erasure data as the original data D, and return the original key value OID and the original data D to the user device 10 (step S1380).

舉例來說,儲存裝置120_1~120_5(目的儲存裝置)可以依照糾刪編碼裝置115所提供的代表值HID1a~HID5a而在其本地的儲存空間中讀取出對應的資料塊Chunk1A~Chunk5A,然後依照讀請求將這些資料塊Chunk1A~Chunk5A回傳給糾刪編碼裝置115。在糾刪編碼裝置115接收這些目的儲存裝置120_1~120_5所回傳的資料塊Chunk1A~Chunk5A後,糾刪編碼裝置115可以彙整這些資料塊Chunk1A~Chunk5A作為糾刪資料Shard1~Shard5。糾刪編碼裝置115可以彙整這些糾刪資料Shard1~Shard5作為原資料D,以及將原鍵值OID與原資料D回傳給使用者裝置10。For example, the storage devices 120_1 to 120_5 (destination storage devices) can read the corresponding data blocks Chunk1A to Chunk5A in their local storage space according to the representative values HID1a to HID5a provided by the erasure coding device 115, and then follow The read request returns these data blocks Chunk1A to Chunk5A to the erasure coding device 115. After the erasure coding device 115 receives the data blocks Chunk1A to Chunk5A returned by the destination storage devices 120_1 to 120_5, the erasure coding device 115 can aggregate these data blocks Chunk1A to Chunk5A as erasure data Shard1 to Shard5. The erasure coding device 115 can aggregate the erasure data Shard1 to Shard5 as the original data D, and return the original key value OID and the original data D to the user device 10.

綜上所述,上述諸實施例所述資料儲存系統及其全域去重複方法可以被應用於分散式儲存系統。分派裝置110可以產生目前資料塊所對應的代表值HID,以及依據代表值HID決定目的位置。依照所述目的位置,分派裝置110可以通過通訊網路20將目前資料塊與代表值HID傳輸至多個儲存裝置中的至少一個目的儲存裝置。也就是說,相同的資料塊會被傳送至相同的儲存裝置。所述目的儲存裝置可以檢查代表值HID,以決定是否將目前資料塊存入其本地的儲存空間中。因此,所述資料儲存系統可以在分散式儲存環境中有效去重複。In summary, the data storage system and its global deduplication method described in the foregoing embodiments can be applied to a distributed storage system. The allocating device 110 can generate the representative value HID corresponding to the current data block, and determine the destination location according to the representative value HID. According to the destination location, the allocating device 110 can transmit the current data block and the representative value HID to at least one destination storage device among the multiple storage devices via the communication network 20. In other words, the same data block will be sent to the same storage device. The destination storage device can check the representative value HID to determine whether to store the current data block in its local storage space. Therefore, the data storage system can effectively de-duplicate in a distributed storage environment.

雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。Although the present invention has been disclosed in the above embodiments, it is not intended to limit the present invention. Anyone with ordinary knowledge in the relevant technical field can make some changes and modifications without departing from the spirit and scope of the present invention. The protection scope of the present invention shall be subject to those defined by the attached patent application scope.

10:使用者裝置 20、30:通訊網路 100、200:資料儲存系統 110:分派裝置 111:主分派裝置 112:備援分派裝置 113、115:糾刪編碼裝置 114:資料分派裝置 116:備援糾刪編碼裝置 120_1、120_2、120_3、120_4、120_5、120_n:儲存裝置 S310~S360、S410~S490、S610~S680、S710~S760、S900~S975、S1000~S1070、S1210~S1290、S1310~S1380:步驟10: User device 20, 30: Communication network 100, 200: data storage system 110: Dispatch device 111: Main Dispatch Device 112: Redundant Dispatching Device 113, 115: erasure coding device 114: Data Distribution Device 116: Redundant erasure coding device 120_1, 120_2, 120_3, 120_4, 120_5, 120_n: storage device S310~S360, S410~S490, S610~S680, S710~S760, S900~S975, S1000~S1070, S1210~S1290, S1310~S1380: steps

圖1是依照本發明的一實施例的一種資料儲存系統的電路方塊(circuit block)示意圖。 圖2是依照本發明的另一實施例的一種資料儲存系統的電路方塊示意圖。 圖3是依照本發明的一實施例的一種全域去重複方法的流程示意圖。 圖4是依照本發明的一實施例的一種儲存裝置的操作流程示意圖。 圖5是依照本發明的一實施例說明圖1或圖2所示分派裝置的電路方塊示意圖。 圖6是依照本發明的一實施例說明圖5所示主分派裝置的寫操作流程示意圖。 圖7是依照本發明的一實施例說明圖5所示主分派裝置的讀操作流程示意圖。 圖8是依照本發明的另一實施例說明圖1或圖2所示分派裝置的電路方塊示意圖。 圖9是依照本發明的一實施例說明圖8所示糾刪編碼裝置與資料分派裝置的寫操作流程示意圖。 圖10是依照本發明的一實施例說明圖8所示糾刪編碼裝置與資料分派裝置的讀操作流程示意圖。 圖11是依照本發明的又一實施例說明圖1或圖2所示分派裝置的電路方塊示意圖。 圖12是依照本發明的一實施例說明圖11所示糾刪編碼裝置的寫操作流程示意圖。 圖13是依照本發明的一實施例說明圖11所示糾刪編碼裝置的讀操作流程示意圖。FIG. 1 is a schematic diagram of a circuit block of a data storage system according to an embodiment of the present invention. FIG. 2 is a schematic block diagram of a circuit of a data storage system according to another embodiment of the present invention. Fig. 3 is a schematic flowchart of a global de-duplication method according to an embodiment of the present invention. FIG. 4 is a schematic diagram of the operation flow of a storage device according to an embodiment of the present invention. FIG. 5 is a circuit block diagram illustrating the dispatching device shown in FIG. 1 or FIG. 2 according to an embodiment of the present invention. FIG. 6 is a schematic diagram illustrating a write operation flow of the master dispatching device shown in FIG. 5 according to an embodiment of the present invention. FIG. 7 is a schematic diagram illustrating a read operation flow of the master dispatching device shown in FIG. 5 according to an embodiment of the present invention. FIG. 8 is a circuit block diagram illustrating the dispatching device shown in FIG. 1 or FIG. 2 according to another embodiment of the present invention. 9 is a schematic diagram illustrating the writing operation flow of the erasure correction coding device and the data dispatching device shown in FIG. 8 according to an embodiment of the present invention. FIG. 10 is a schematic diagram illustrating the read operation flow of the erasure correction coding device and the data dispatching device shown in FIG. 8 according to an embodiment of the present invention. FIG. 11 is a circuit block diagram illustrating the dispatching device shown in FIG. 1 or FIG. 2 according to another embodiment of the present invention. FIG. 12 is a schematic diagram illustrating a write operation flow of the erasure correction coding apparatus shown in FIG. 11 according to an embodiment of the present invention. FIG. 13 is a schematic diagram illustrating a read operation flow of the erasure correction coding apparatus shown in FIG. 11 according to an embodiment of the present invention.

S310~S360:步驟 S310~S360: steps

Claims (26)

一種資料儲存系統,包括: 多個儲存裝置,適於耦接至一通訊網路;以及 一分派裝置,適於接收一資料寫請求,其中該分派裝置被配置為將該資料寫請求所對應的一原資料切割為至少一個資料塊,該分派裝置對在該至少一個資料塊中的一個目前資料塊進行一摘要計算以產生該目前資料塊所對應的一代表值,該分派裝置對該代表值進行一第一分佈計算以決定該代表值所對應的一目的位置,以及該分派裝置依照該目的位置而通過該通訊網路將該目前資料塊與該代表值傳輸至該些儲存裝置中的至少一個目的儲存裝置; 其中該至少一個目的儲存裝置檢查該代表值以決定是否將該目前資料塊存入該至少一個目的儲存裝置的一儲存空間中。A data storage system including: A plurality of storage devices, suitable for being coupled to a communication network; and A dispatching device adapted to receive a data write request, wherein the dispatching device is configured to cut an original data corresponding to the data write request into at least one data block, and the dispatching device responds to one of the at least one data block The current data block performs a summary calculation to generate a representative value corresponding to the current data block, the distribution device performs a first distribution calculation on the representative value to determine a destination location corresponding to the representative value, and the distribution device according to The destination location transmits the current data block and the representative value to at least one destination storage device among the storage devices through the communication network; The at least one destination storage device checks the representative value to determine whether to store the current data block in a storage space of the at least one destination storage device. 如請求項1所述的資料儲存系統,其中該些儲存裝置中的至少一個被選用為該分派裝置。The data storage system according to claim 1, wherein at least one of the storage devices is selected as the allocating device. 如請求項1所述的資料儲存系統,其中該摘要計算包括一哈希演算法,而該代表值包括該目前資料塊的一哈希值。The data storage system according to claim 1, wherein the digest calculation includes a hash algorithm, and the representative value includes a hash value of the current data block. 如請求項1所述的資料儲存系統,其中該第一分佈計算包括一Ceph CRUSH演算法。The data storage system according to claim 1, wherein the first distributed calculation includes a Ceph CRUSH algorithm. 如請求項1所述的資料儲存系統,其中該至少一個目的儲存裝置檢查一查找表有無該代表值, 當該查找表有該代表值時,該至少一個目的儲存裝置放棄將該目前資料塊存入該儲存空間中,調增該代表值所對應的一參照次數值,以及將該參照次數值更新至該查找表;以及 當該查找表沒有該代表值時,該至少一個目的儲存裝置將該目前資料塊存於該儲存空間的一物理位址,將該代表值所對應的該參照次數值設為一初始值,以及將該代表值、該物理位址與該參照次數值記錄於該查找表。The data storage system according to claim 1, wherein the at least one destination storage device checks a lookup table for the representative value, When the lookup table has the representative value, the at least one destination storage device gives up storing the current data block in the storage space, increases a reference count value corresponding to the representative value, and updates the reference count value to The lookup table; and When the lookup table does not have the representative value, the at least one destination storage device stores the current data block in a physical address of the storage space, sets the reference count value corresponding to the representative value to an initial value, and The representative value, the physical address, and the reference count value are recorded in the look-up table. 如請求項1所述的資料儲存系統,其中該資料寫請求還包括一原鍵值,該分派裝置將該原鍵值與該代表值的一映射關係記錄至一查找表中。The data storage system according to claim 1, wherein the data write request further includes an original key value, and the dispatching device records a mapping relationship between the original key value and the representative value in a lookup table. 如請求項1所述的資料儲存系統,其中該分派裝置包括一主分派裝置以及一備援分派裝置,該資料寫請求還包括一原鍵值,該主分派裝置將該原鍵值與該代表值的一映射關係記錄至一查找表中,以及將該查找表提供給該備援分派裝置。The data storage system according to claim 1, wherein the allocation device includes a main allocation device and a backup allocation device, the data write request further includes an original key value, and the main allocation device associates the original key value with the representative A mapping relationship of the value is recorded in a look-up table, and the look-up table is provided to the spare allocation device. 如請求項1所述的資料儲存系統,其中該至少一個目的儲存裝置包括一第一目的儲存裝置與一第二目的儲存裝置,該分派裝置通過該通訊網路將該目前資料塊與該代表值傳輸至該第一目的儲存裝置與該第二目的儲存裝置。The data storage system according to claim 1, wherein the at least one destination storage device includes a first destination storage device and a second destination storage device, and the allocating device transmits the current data block and the representative value through the communication network To the first destination storage device and the second destination storage device. 如請求項1所述的資料儲存系統,其中該分派裝置包括一糾刪編碼裝置以及至少一個資料分派裝置,該糾刪編碼裝置接收該資料寫請求,該糾刪編碼裝置對該原資料進行一糾刪編碼計算以產生至少一個糾刪資料以及該至少一個糾刪資料所對應的至少一個鍵值,該糾刪編碼裝置對該至少一個鍵值進行一第二分佈計算以產生該至少一個鍵值所對應的至少一個裝置位置,該糾刪編碼裝置依照該至少一個裝置位置而通過該通訊網路將該至少一個糾刪資料與該至少一個鍵值傳輸至該至少一個資料分派裝置,該至少一個資料分派裝置將該至少一個糾刪資料切割為該至少一個資料塊,該至少一個資料分派裝置對在該至少一個資料塊中的該目前資料塊進行該摘要計算以產生該代表值,該至少一個資料分派裝置對該代表值進行該第一分佈計算以決定該目的位置,以及該至少一個資料分派裝置依照該目的位置而通過該通訊網路將該目前資料塊與該代表值傳輸至該至少一個目的儲存裝置。The data storage system according to claim 1, wherein the allocation device includes an erasure coding device and at least one data allocation device, the erasure coding device receives the data write request, and the erasure coding device performs an erasure correction on the original data. Erasure correction coding is calculated to generate at least one erasure correction data and at least one key value corresponding to the at least one erasure correction data, and the erasure correction coding device performs a second distribution calculation on the at least one key value to generate the at least one key value Corresponding to at least one device location, the erasure coding device transmits the at least one erasure correction data and the at least one key value to the at least one data distribution device through the communication network according to the at least one device location, the at least one data The allocation device cuts the at least one erasure data into the at least one data block, the at least one data allocation device performs the summary calculation on the current data block in the at least one data block to generate the representative value, the at least one data The distribution device performs the first distribution calculation on the representative value to determine the destination location, and the at least one data distribution device transmits the current data block and the representative value to the at least one destination storage via the communication network according to the destination location Device. 如請求項9所述的資料儲存系統,其中該至少一個資料分派裝置將該至少一個鍵值與該代表值的一映射關係記錄至一查找表中。The data storage system according to claim 9, wherein the at least one data distribution device records a mapping relationship between the at least one key value and the representative value in a look-up table. 如請求項1所述的資料儲存系統,其中該分派裝置包括一糾刪編碼裝置,該糾刪編碼裝置接收該資料寫請求,該糾刪編碼裝置對該原資料進行一糾刪編碼計算以產生至少一個糾刪資料以及該至少一個糾刪資料所對應的至少一個鍵值,該糾刪編碼裝置將該至少一個糾刪資料切割為該至少一個資料塊,該糾刪編碼裝置對在該至少一個資料塊中的該目前資料塊進行該摘要計算以產生該代表值,該糾刪編碼裝置對該代表值進行該第一分佈計算以決定該目的位置,以及該糾刪編碼裝置依照該目的位置而通過該通訊網路將該目前資料塊與該代表值傳輸至該至少一個目的儲存裝置。The data storage system according to claim 1, wherein the allocating device includes an erasure coding device, the erasure coding device receives the data write request, and the erasure coding device performs an erasure coding calculation on the original data to generate At least one erasure correction data and at least one key value corresponding to the at least one erasure correction data, the erasure correction coding device cuts the at least one erasure correction data into the at least one data block, and the erasure correction coding device pairs the at least one erasure correction data in the at least one data block. The current data block in the data block performs the digest calculation to generate the representative value, the erasure coding device performs the first distribution calculation on the representative value to determine the target position, and the erasure coding device performs the calculation according to the target position The current data block and the representative value are transmitted to the at least one destination storage device through the communication network. 如請求項11所述的資料儲存系統,其中該糾刪編碼裝置將該至少一個鍵值與該代表值的一映射關係記錄至一查找表中。The data storage system according to claim 11, wherein the erasure coding device records a mapping relationship between the at least one key value and the representative value in a look-up table. 如請求項12所述的資料儲存系統,其中該分派裝置還包括一備援糾刪編碼裝置,以及該糾刪編碼裝置將該查找表提供給該備援糾刪編碼裝置。The data storage system according to claim 12, wherein the allocating device further includes a redundant erasure correction coding device, and the erasure correction coding device provides the look-up table to the redundant erasure coding device. 一種全域去重複方法,包括: 由一分派裝置接收一資料寫請求; 由該分派裝置將該資料寫請求所對應的一原資料切割為至少一個資料塊; 由該分派裝置對在該至少一個資料塊中的一個目前資料塊進行一摘要計算,以產生該目前資料塊所對應的一代表值; 由該分派裝置對該代表值進行一第一分佈計算,以決定該代表值所對應的一目的位置; 由該分派裝置依照該目的位置而通過一通訊網路將該目前資料塊與該代表值傳輸至多個儲存裝置中的至少一個目的儲存裝置;以及 由該至少一個目的儲存裝置檢查該代表值,以決定是否將該目前資料塊存入該至少一個目的儲存裝置的一儲存空間中。A global deduplication method, including: Receive a data write request by a dispatch device; The dispatching device cuts an original data corresponding to the data write request into at least one data block; Performing a summary calculation on a current data block in the at least one data block by the allocating device to generate a representative value corresponding to the current data block; The allocating device performs a first distribution calculation on the representative value to determine a destination location corresponding to the representative value; The allocating device transmits the current data block and the representative value to at least one destination storage device among a plurality of storage devices through a communication network according to the destination location; and The at least one destination storage device checks the representative value to determine whether to store the current data block in a storage space of the at least one destination storage device. 如請求項14所述的全域去重複方法,其中該些儲存裝置中的至少一個被選用為該分派裝置。The global deduplication method according to claim 14, wherein at least one of the storage devices is selected as the allocating device. 如請求項14所述的全域去重複方法,其中該摘要計算包括一哈希演算法,而該代表值包括該目前資料塊的一哈希值。The global deduplication method according to claim 14, wherein the digest calculation includes a hash algorithm, and the representative value includes a hash value of the current data block. 如請求項14所述的全域去重複方法,其中該第一分佈計算包括一Ceph CRUSH演算法。The global deduplication method according to claim 14, wherein the first distributed calculation includes a Ceph CRUSH algorithm. 如請求項14所述的全域去重複方法,更包括: 由該至少一個目的儲存裝置檢查一查找表有無該代表值; 當該查找表有該代表值時,放棄將該目前資料塊存入該儲存空間中,調增該代表值所對應的一參照次數值,以及將該參照次數值更新至該查找表;以及 當該查找表沒有該代表值時,將該目前資料塊存於該儲存空間的一物理位址,將該代表值所對應的該參照次數值設為一初始值,以及將該代表值、該物理位址與該參照次數值記錄於該查找表。The global deduplication method described in claim 14 further includes: Check whether a lookup table has the representative value by the at least one destination storage device; When the lookup table has the representative value, give up storing the current data block in the storage space, increase a reference count value corresponding to the representative value, and update the reference count value to the lookup table; and When the look-up table does not have the representative value, store the current data block in a physical address of the storage space, set the reference count value corresponding to the representative value to an initial value, and set the representative value, the representative value, and the The physical address and the reference count value are recorded in the look-up table. 如請求項14所述的全域去重複方法,其中該資料寫請求還包括一原鍵值,所述全域去重複方法更包括: 由該分派裝置將該原鍵值與該代表值的一映射關係記錄至一查找表中。The global deduplication method according to claim 14, wherein the data write request further includes an original key value, and the global deduplication method further includes: The dispatching device records a mapping relationship between the original key value and the representative value in a lookup table. 如請求項14所述的全域去重複方法,其中該分派裝置包括一主分派裝置以及一備援分派裝置,該資料寫請求還包括一原鍵值,所述全域去重複方法更包括: 由該主分派裝置將該原鍵值與該代表值的一映射關係記錄至一查找表中;以及 由該主分派裝置將該查找表提供給該備援分派裝置。The global deduplication method according to claim 14, wherein the dispatch device includes a primary dispatch device and a backup dispatch device, the data write request further includes an original key value, and the global deduplication method further includes: The master dispatching device records a mapping relationship between the original key value and the representative value in a lookup table; and The main dispatch device provides the look-up table to the spare dispatch device. 如請求項14所述的全域去重複方法,其中該至少一個目的儲存裝置包括一第一目的儲存裝置與一第二目的儲存裝置,所述全域去重複方法更包括: 由該分派裝置通過該通訊網路將該目前資料塊與該代表值傳輸至該第一目的儲存裝置與該第二目的儲存裝置。The global deduplication method according to claim 14, wherein the at least one destination storage device includes a first destination storage device and a second destination storage device, and the global deduplication method further includes: The distribution device transmits the current data block and the representative value to the first destination storage device and the second destination storage device through the communication network. 如請求項14所述的全域去重複方法,其中該分派裝置包括一糾刪編碼裝置以及至少一個資料分派裝置,所述全域去重複方法更包括: 由該糾刪編碼裝置接收該資料寫請求; 由該糾刪編碼裝置對該原資料進行一糾刪編碼計算,以產生至少一個糾刪資料以及該至少一個糾刪資料所對應的至少一個鍵值; 由該糾刪編碼裝置對該至少一個鍵值進行一第二分佈計算,以產生該至少一個鍵值所對應的至少一個裝置位置; 由該糾刪編碼裝置依照該至少一個裝置位置而通過該通訊網路將該至少一個糾刪資料與該至少一個鍵值傳輸至該至少一個資料分派裝置; 由該至少一個資料分派裝置將該至少一個糾刪資料切割為該至少一個資料塊; 由該至少一個資料分派裝置對在該至少一個資料塊中的該目前資料塊進行該摘要計算,以產生該代表值; 由該至少一個資料分派裝置對該代表值進行該第一分佈計算以決定該目的位置;以及 由該至少一個資料分派裝置依照該目的位置而通過該通訊網路將該目前資料塊與該代表值傳輸至該至少一個目的儲存裝置。The global deduplication method according to claim 14, wherein the dispatching device includes an erasure correction coding device and at least one data dispatching device, and the global deduplication method further includes: Receiving the data write request by the erasure coding device; Performing an erasure correction coding calculation on the original data by the erasure correction coding device to generate at least one erasure correction data and at least one key value corresponding to the at least one erasure correction data; Performing a second distribution calculation on the at least one key value by the erasure coding device to generate at least one device position corresponding to the at least one key value; The erasure coding device transmits the at least one erasure correction data and the at least one key value to the at least one data distribution device through the communication network according to the location of the at least one device; Cutting the at least one erasure-corrected data into the at least one data block by the at least one data allocating device; Performing the summary calculation on the current data block in the at least one data block by the at least one data allocating device to generate the representative value; The at least one data distribution device performs the first distribution calculation on the representative value to determine the destination location; and The at least one data distribution device transmits the current data block and the representative value to the at least one destination storage device through the communication network according to the destination location. 如請求項22所述的全域去重複方法,更包括: 由該至少一個資料分派裝置將該至少一個鍵值與該代表值的一映射關係記錄至一查找表中。The global deduplication method described in claim 22 further includes: The at least one data allocating device records a mapping relationship between the at least one key value and the representative value in a look-up table. 如請求項14所述的全域去重複方法,其中該分派裝置包括一糾刪編碼裝置,所述全域去重複方法更包括: 由該糾刪編碼裝置接收該資料寫請求; 由該糾刪編碼裝置對該原資料進行一糾刪編碼計算,以產生至少一個糾刪資料以及該至少一個糾刪資料所對應的至少一個鍵值; 由該糾刪編碼裝置將該至少一個糾刪資料切割為該至少一個資料塊; 由該糾刪編碼裝置對在該至少一個資料塊中的該目前資料塊進行該摘要計算,以產生該代表值; 由該糾刪編碼裝置對該代表值進行該第一分佈計算,以決定該目的位置;以及 由該糾刪編碼裝置依照該目的位置而通過該通訊網路將該目前資料塊與該代表值傳輸至該至少一個目的儲存裝置。The global deduplication method according to claim 14, wherein the dispatching device includes an erasure correction coding device, and the global deduplication method further includes: Receiving the data write request by the erasure coding device; Performing an erasure correction coding calculation on the original data by the erasure correction coding device to generate at least one erasure correction data and at least one key value corresponding to the at least one erasure correction data; Cutting the at least one erasure correction data into the at least one data block by the erasure correction coding device; Performing the digest calculation on the current data block in the at least one data block by the erasure coding device to generate the representative value; The erasure coding device performs the first distribution calculation on the representative value to determine the target location; and The erasure coding device transmits the current data block and the representative value to the at least one destination storage device through the communication network according to the destination location. 如請求項24所述的全域去重複方法,更包括: 由該糾刪編碼裝置將該至少一個鍵值與該代表值的一映射關係記錄至一查找表中。The global deduplication method described in claim 24 further includes: The erasure coding device records a mapping relationship between the at least one key value and the representative value in a look-up table. 如請求項25所述的全域去重複方法,其中該分派裝置還包括一備援糾刪編碼裝置,以及所述全域去重複方法更包括: 由該糾刪編碼裝置將該查找表提供給該備援糾刪編碼裝置。The global deduplication method according to claim 25, wherein the dispatching device further includes a redundant erasure coding device, and the global deduplication method further includes: The look-up table is provided by the erasure correction coding device to the backup erasure coding device.
TW110105608A 2020-03-27 2021-02-19 Data storage system and global deduplication method thereof TWI815086B (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/195,551 US11709609B2 (en) 2020-03-27 2021-03-08 Data storage system and global deduplication method thereof
CN202110270233.3A CN112835538A (en) 2020-03-27 2021-03-12 Data storage system and global deduplication method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202063000508P 2020-03-27 2020-03-27
US63/000,508 2020-03-27

Publications (2)

Publication Number Publication Date
TW202137027A true TW202137027A (en) 2021-10-01
TWI815086B TWI815086B (en) 2023-09-11

Family

ID=79601314

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110105608A TWI815086B (en) 2020-03-27 2021-02-19 Data storage system and global deduplication method thereof

Country Status (1)

Country Link
TW (1) TWI815086B (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI420333B (en) * 2011-08-10 2013-12-21 Inventec Corp A distributed de-duplication system and the method therefore
CN103873504A (en) * 2012-12-12 2014-06-18 鸿富锦精密工业(深圳)有限公司 System enabling data blocks to be stored in distributed server and method thereof
TWI663515B (en) * 2017-07-18 2019-06-21 先智雲端數據股份有限公司 Storage system of distributed deduplication for internet of things backup in data center and method for achieving the same

Also Published As

Publication number Publication date
TWI815086B (en) 2023-09-11

Similar Documents

Publication Publication Date Title
US10977123B2 (en) Coordination protocol between dispersed storage processing units and rebuild modules
US9740403B2 (en) Methods for managing storage in a data storage cluster with distributed zones based on parity values and devices thereof
US10126974B2 (en) Redistributing encoded data slices in a dispersed storage network
US20170192698A1 (en) Determining byte-hours usage of a vault or by users
US11954373B2 (en) Data structure storage and data management
US9043616B2 (en) Efficient storage of encrypted data in a dispersed storage network
US20170054806A1 (en) Adaptive resource utilization with request cancellation
US20200117362A1 (en) Erasure coding content driven distribution of data blocks
US20140325305A1 (en) Cache for file-based dispersed storage
JP2009129441A (en) Method and apparatus for deduplication in storage system
US20170075762A1 (en) Online disk replacement/removal
US10067831B2 (en) Slice migration in a dispersed storage network
US10268374B2 (en) Redundant array of independent discs and dispersed storage network system re-director
CN108431815B (en) Deduplication of distributed data in a processor grid
US10592335B2 (en) Using data object copies to improve the performance of a distributed storage network
US20210334241A1 (en) Non-disrputive transitioning between replication schemes
US20190004727A1 (en) Using a namespace to augment de-duplication
US10681138B2 (en) Storing and retrieving multi-format content in a distributed storage network
CN112835538A (en) Data storage system and global deduplication method thereof
TWI815086B (en) Data storage system and global deduplication method thereof
US20220394091A1 (en) Storing a Data Object as Data Regions in a Storage Network
WO2017004157A1 (en) Method and system for processing data access requests during data transfers
US20220261167A1 (en) Storage Pool Tiering in a Storage Network
US10057351B2 (en) Modifying information dispersal algorithm configurations in a dispersed storage network
US20210367932A1 (en) Efficient storage of data in a dispersed storage network