TW201935243A - 固態驅動器、分散式資料儲存系統和利用鍵值儲存的方法 - Google Patents
固態驅動器、分散式資料儲存系統和利用鍵值儲存的方法 Download PDFInfo
- Publication number
- TW201935243A TW201935243A TW107137684A TW107137684A TW201935243A TW 201935243 A TW201935243 A TW 201935243A TW 107137684 A TW107137684 A TW 107137684A TW 107137684 A TW107137684 A TW 107137684A TW 201935243 A TW201935243 A TW 201935243A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- block
- key
- node
- file
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Emergency Protection Circuit Devices (AREA)
Abstract
一種固態驅動器(SSD)包括:多個資料區塊;用於存取所述多個資料區塊的多個快閃記憶體通道及多個通路;以及固態驅動器控制器,對所述多個資料區塊的區塊大小進行配置。資料檔案與一個或多個鍵-值對一起儲存在所述固態驅動器中,且所述一個或多個鍵-值對中的每一個鍵-值對具有區塊識別符作為鍵且具有區塊資料作為值。所述資料檔案的大小等於所述區塊大小或所述區塊大小的倍數。
Description
本揭露大體來說涉及鍵-值儲存裝置,更具體來說涉及一種在分散式檔案系統中利用鍵-值儲存來高效地儲存資料及中繼資料的系統及方法。
在傳統的資料儲存節點中,通常使用位於資料儲存節點上的現有的檔案系統來儲存鍵-值映射(例如,區塊識別符(identifier,ID)對資料內容的映射)。之所以這樣,是因為基礎的儲存裝置並不在本機支援資料儲存節點所需的鍵-值介面。因此,需要附加軟體層(通常為檔案系統)來提供鍵-值介面。添加檔案系統會引入記憶體開銷及處理器開銷。
駐留在資料儲存節點與實際的資料儲存裝置之間的檔案系統迫使資料儲存裝置引起額外的效率低下(例如,超額配置(overprovisioning)及較高的寫入放大)並且在資源有限的裝置環境中需要更多中央處理器(central processing unit,CPU)迴圈來執行例如垃圾收集等任務。
根據一個實施例,一種固態驅動器(solid-state drive,SSD)包括:多個資料區塊;用於存取所述多個資料區塊的多個快閃記憶體通道及多個通路;以及固態驅動器控制器,對所述多個資料區塊的區塊大小進行配置。資料檔案與一個或多個鍵-值對一起儲存在所述固態驅動器中,且每一個鍵-值對具有區塊識別符作為鍵且具有區塊資料作為值。所述資料檔案的大小等於所述區塊大小或所述區塊大小的倍數。
根據另一個實施例,一種分散式資料儲存系統包括:客戶機;名稱節點,包括第一鍵-值(key-value,KV)固態驅動器(SSD);以及資料節點,包括第二鍵-值固態驅動器,其中所述第二鍵-值固態驅動器包括多個資料區塊、用於存取所述多個資料區塊的多個快閃記憶體通道及多個通路、以及用於配置所述多個資料區塊的區塊大小的固態驅動器控制器。所述客戶機向所述名稱節點發送包括用於儲存資料檔案的檔案識別符的創建檔案請求,並向所述名稱節點發送分配命令以分配所述多個資料區塊中與所述資料檔案相關聯的一個或多個資料區塊。所述名稱節點向所述客戶機返回所述一個或多個資料區塊的區塊識別符以及被指派儲存所述一個或多個資料區塊的所述資料節點的資料節點識別符。所述客戶機向所述資料節點發送區塊儲存命令以儲存所述一個或多個資料區塊。所述第二鍵-值固態驅動器儲存所述一個或多個資料區塊作為鍵-值對,且所述鍵-值對中的至少一個鍵-值對具有所述區塊識別符作為鍵且具有區塊資料作為值。所述資料檔案的大小等於所述區塊大小或所述區塊大小的倍數。
根據又一實施例,一種方法包括:從客戶機向名稱節點發送創建檔案請求,其中所述創建檔案請求包括用於儲存資料檔案的檔案識別符;將所述檔案識別符作為鍵-值對儲存在所述名稱節點的第一鍵-值(KV)固態驅動器(SSD)中,其中所述檔案識別符作為鍵被儲存在所述鍵-值中,且與所述鍵相關聯的值是空的;從所述客戶機向所述名稱節點發送分配命令,以分配與所述資料檔案相關聯的一個或多個資料區塊;在所述名稱節點處將區塊識別符指派給所述一個或多個資料區塊中的至少一者並指派資料節點來儲存所述一個或多個資料區塊;從所述名稱節點向所述客戶機返回所述區塊識別符及所述資料節點的資料節點識別符;從所述客戶機向所述資料節點發送寫入區塊請求,其中所述寫入區塊請求包括所述區塊識別符及內容;以及將所述一個或多個資料區塊作為鍵-值對保存在所述資料節點的第二鍵-值固態驅動器中。所述資料節點的所述第二鍵-值固態驅動器包括具有區塊大小的一個或多個資料區塊。所述鍵-值對中的至少一個鍵-值對具有區塊識別符作為鍵且具有區塊資料作為值。所述資料檔案的大小等於所述區塊大小或所述區塊大小的倍數。
現將參照附圖更具體地闡述包括實施方式的各種新穎細節及事件組合在內的以上及其他優選特徵,且以上及其他優選特徵在權利要求書中指出。應理解,本文所述具體系統及方法僅作為例示示出且不作為限制。如所屬領域中的技術人員應理解,本文所述原理及特徵可用於各種各樣的實施例中,而此並不背離本揭露的範圍。
本文所揭露的特徵及教示內容中的每一者可單獨使用或結合其他特徵及教示內容來使用以提供在分散式檔案系統中利用鍵-值儲存來高效地儲存資料及中繼資料的系統及方法。參照附圖更詳細地闡述代表性實例,這些代表性實例單獨地使用及組合地使用這些附加特徵及教示內容中的許多特徵及教示內容。此詳細說明僅旨在向所屬領域中的技術人員教示用於實踐本教示內容的各個方面的進一步細節,而並非旨在限制權利要求書的範圍。因此,在本詳細說明中以上所揭露特徵的組合可能未必是在最廣泛意義上實踐本教示內容所必需的,而是相反,僅是為了具體闡述本教示內容的代表性的實例而教示。
在以下說明中,僅出於解釋目的來闡述特定術語以提供對本揭露的透徹理解。然而,對於所屬領域中的技術人員而言將顯而易見,這些特定細節並非是實踐本揭露的教示內容所必需的。
本文的詳細說明的一些部分是以演算法及對電腦記憶體內的資料位元進行的操作的符號標記法來呈現。這些演算法描述及標記法被資料處理領域中的技術人員用於向所屬領域中的其他技術人員有效地傳達其工作的實質。演算法在此處且一般而言均被視為能得到所期望結果的步驟的自洽序列(self-consistent sequence)。所述步驟需要對物理量進行實體操縱。通常(儘管未必一定如此),這些量會呈能夠被儲存、傳輸、組合、比較及以其他方式***縱的電訊號或磁訊號的形式。已證明,主要出於通用的原因,將這些訊號稱為位元、值、元件、符號、字元、項、數位等有時是便利的。
然而,應記住,這些用語中的所有用語及所有相似用語均與適宜的物理量相關聯且僅作為應用於這些量的便利標記。除非通過閱讀以下論述顯而易見地另有具體說明,否則應理解,在本說明通篇中,使用例如“處理(processing)”、“計算(computing)”、“運算(calculating)”、“判斷(determining)”、“顯示(displaying)”等用語進行的論述是指電腦系統或相似電子計算裝置的動作及進程,所述電腦系統或相似電子計算裝置操縱在電腦系統的寄存器及記憶體內被表示為物理(電子)量的資料並將所述資料轉換成在電腦系統記憶體或寄存器或者其他這種資訊儲存裝置、資訊傳輸裝置或資訊顯示裝置內被相似地表示為物理量的其他資料。
另外,代表性實例及附屬權利要求的各個特徵可以並未具體地及明確地枚舉的方式加以組合以提供本教示內容的附加的有用實施例。還應明確注意,出於原始揭露內容的目的以及出於限制所主張主題的目的,所有值範圍或對實體的群組的指示均用於揭露每個可能的中間值或中間實體。還應明確注意,圖中所示各組件的尺寸及形狀被設計成有助於理解如何實踐本教示內容,而並非旨在限制實例中所示尺寸及形狀。
本揭露闡述一種解決由分散式檔案系統(例如,海杜普分散式檔案系統(Hadoop Distributed File System,HDFS))引起的效率低下問題的系統及方法。本系統及方法通過將資料直接儲存在資料儲存裝置中來消除對使用檔案名稱作為區塊識別符且使用檔案的資料內容(或檔案的資料內容的一部分)作為值的鍵-值檔案系統的需要。可將資料直接儲存在鍵-值對中的這種資料儲存裝置在本文中指代為鍵-值(KV)固態驅動器(SSD),簡稱KV SSD。KV SSD支持其中將區塊識別符作為鍵且將資料作為值的鍵-值儲存。本系統及方法可提供高效的及簡化的鍵-值資料儲存系統,所述鍵-值資料儲存系統包括可將資料作為鍵/值對直接儲存在一個或多個KV SSD中的KV SSD。因此,本鍵-值資料儲存系統可在提供更快、更簡單且可擴展的資料儲存解決方案的同時消耗更少的能量及資源。
根據一個實施例,KV SSD可與資料儲存節點相結合地實施將資料儲存在鍵-值對中的檔案系統。通過使用可直接儲存鍵-值資料的一個或多個KV SSD,本鍵-值資料儲存系統可不再需要資料儲存節點中的檔案系統。資料儲存節點可將關於資料儲存節點的行為的資訊向下傳遞到KV SSD以對KV SSD的內部資料結構及資源進行優化,從而適應由資料儲存節點規定的工作負載。另外,可將記憶體內(in-memory)映射表卸載到KV SSD以使用資料儲存節點與KV SSD之間的鍵-值介面提供永久資料。
根據一個實施例,本鍵-值資料儲存系統可支援現有的檔案系統(例如,HDFS)。具體來說,被優化用於大的資料區塊的檔案系統可受益於本鍵-值資料儲存系統。舉例來說,KV SSD的中繼資料(或雜湊表(hash table))以大的區塊大小(例如,10 百萬位元組(MB)到100 MB)進行分攤。
分散式檔案系統(例如,HDFS)具有不可變資料區塊(immutable data block),所述不可變資料區塊由於鍵的值不會改變而無需來回移動,由此使儲存在KV SSD中的資料及中繼資料的內部寫入放大因數(write amplification factor,WAF)最小化。另外,本鍵-值資料儲存系統可減小與更新雜湊表值相關聯的CPU開銷。
本鍵-值資料儲存系統在改善性能及資源利用的同時具有簡化的快閃記憶體轉換層(flash translation layer,FTL)。當KV SSD與不可變分散式儲存系統(例如,HDFS)一起使用時,可減小中繼資料開銷。這是由於在這種分散式檔案系統中,鍵的內容無法改變,因此儲存鍵/值對的KV SSD不再需要將值標記為舊的並將鍵指向KV SSD中的快閃記憶體介質上的新的值內容。換句話說,KV SSD不需要支援重寫(overwrite)。另外,對於分散式檔案系統(例如,HDFS),區塊具有固定大小,因此KV SSD不需要處置動態大小的值,從而使得值位置的管理更簡單。舉例來說,當所有區塊具有固定大小時,可使用基於直接索引的資料結構。利用分散式檔案系統中的這些簡化,可簡化鍵/值元組(key/value tuple)的FTL管理。
分散式檔案系統可能將中繼資料保持在單個資料儲存節點的記憶體中,由此限制中繼資料的可擴展性。本鍵-值資料儲存系統可消除在管理其他分散式檔案系統可能需要的中繼資料方面的記憶體限制。
本鍵-值資料儲存系統可實現不是面向延遲(latency-oriented)的高的輸送量。由於HDFS具有這樣大的區塊大小,再加上可能超過記憶體容量的資料集,因此頁面快取記憶體可能無法大幅改善資料儲存及管理性能。因此,即使KV-SSD不支援頁面快取記憶體,KV SSD也不會使具有KV能力的資料節點的性能劣化。
HDFS的集中式快取記憶體管理特徵提供一種明確地告知資料節點在堆外(off-heap)快取記憶體某些區塊的機制。通過允許具有KV能力的資料節點仍從基於記憶體的快取記憶體獲益而無需制定策略決策來確定要進行快取記憶體的區塊,可將這種特徵實施在KV啟用的資料節點中。
本鍵-值資料儲存系統在讀取操作及寫入操作中能夠實現高的並行性。由於每一個資料區塊的延遲不那麼重要,且HDFS通過讀取/寫入大數目的資料區塊表現出高度的並行性,因此不需要將命令(例如,讀取命令、寫入命令)分條並將所述命令發送到KV SSD上的許多通道。每一個資料區塊均可被直接寫入及讀取到KV SSD的一個通道或一個晶片/裸晶以通過利用固有並行性的好處來提供輸送量。這還可簡化KV SSD的FTL以及查找過程的複雜度。所述並行性還可根據KV SSD的擦除區塊的上下文被應用於多個通道或晶片/裸晶。繼而,此可通過將SSD區塊/頁面大小匹配到分散式檔案系統(例如,HDFS)的區塊大小來最小化或消除SSD超額配置。因此,本鍵-值資料儲存系統可利用被發到KV SSD且被對齊到固定區塊大小的裝置擦除區塊來增大輸送量,這是由於對齊的擦除區塊及資料大小在快閃記憶體通道之間將需要較少的同步。通過將中繼資料映射卸載到KV SSD,中繼資料節點中的記憶體不再是分散式儲存系統中的瓶頸。
圖1A示出現有技術分散式資料儲存系統的方區塊圖。客戶機應用101要將檔案105儲存在分散式資料儲存系統100A中的資料節點121中。檔案105包括兩個資料區塊(即,Ω及Σ)。在將檔案105寫入到資料節點121之後,客戶機101將與檔案105相關聯的中繼資料儲存在名稱節點(或中繼資料節點)111的區塊映射115中。在HDFS的上下文中,名稱節點111被稱為主裝置(master),且資料節點121被稱為從裝置(slave)。主裝置可以HDFS目錄結構儲存整個HDFS的檔案的中繼資料。儘管以下所述實例中的一些實例提到HDFS,然而應理解,還可使用被優化用於大量資料的其他檔案系統,而此並不背離本揭露的範圍。
名稱節點111維持區塊映射115,區塊映射115包含包括區塊識別符的檔案105與儲存檔案105中所包括的區塊的資料節點121之間的映射資訊。在本實例中,區塊Ω及區塊Σ分別具有區塊識別符“11”及區塊識別符“99”。當客戶機101需要對檔案105(或資料區塊Ω及Σ)進行存取時,客戶機101與名稱節點111進行通訊以基於儲存在區塊映射115中的關聯資訊來識別與檔案105相關聯的區塊及要存取檔案105(或資料區塊)的資料節點121(DN 1)。
資料節點121包括具有目錄結構的本地檔案系統(例如,Linux的ext4檔案系統),以將每一個區塊作為檔案儲存在目錄中。檔案名稱可為與檔案105的相應區塊對應的唯一區塊識別符(“11”或“99”),且檔案的內容是區塊資料。由於區塊需要被儲存為檔案,因此資料節點121需要附加軟體層(例如,本地ext4檔案系統)、附加記憶體(例如,Linux的目錄項快取記憶體(dentry cache))及將鍵-值按區塊轉換到檔案系統的CPU處理(例如,可攜式作業系統介面(portable Operating System Interface,POSIX)及檔案系統專用命令處理(file system-specific command processing),且檔案系統開銷包括中繼資料管理。SSD 140的控制器邏輯需要執行附加處理以維持區塊映射115的一致性。HDFS區塊大小可不與內部SSD頁面/區塊映射對齊。這可增大SSD的內部WAF以及超額配置的空間,從而導致垃圾收集更頻繁且擁有權總成本(total cost of ownership,TCO)增大。
圖1B示出根據一個實施例的包括鍵-值儲存裝置的示例性分散式資料儲存系統的方區塊圖。客戶機應用101將檔案105儲存在分散式資料儲存系統100B中的資料節點221中。舉例來說,分散式資料儲存系統100B是HDFS。包括鍵-值SSD 150的資料節點221可直接儲存資料區塊Ω及Σ。與包括傳統SSD 140的資料節點121相反,資料節點221不需要本地檔案系統(例如,ext4),這是由於檔案105的資料區塊被作為鍵-值對直接儲存在KV SSD 150中。
KV SSD 150為資料節點221提供與客戶機應用101進行通訊的介面,所述介面能夠實現資料區塊作為鍵-值對的直接儲存。因此,資料節點221不需要本地檔案系統層,因此可能不會引起圖1A所示傳統資料節點121的記憶體開銷及CPU開銷。
根據一個實施例,分散式資料儲存系統100B使客戶機應用101與資料節點221之間能夠交換資訊。這一過程被稱為登記過程或配置過程。在登記過程期間,資料節點221可告知客戶機應用101:資料節點221具有可將資料區塊作為鍵-值對進行儲存的一個或多個KV SSD。在完成登記過程之後,客戶機應用101知曉其可向資料節點221中所包括的KV SSD 150發出KV SSD專用輸入/輸出(input/output,I/O)裝置命令(例如,/dev/kvssd1,其中kvssd1是資料節點221的id)。這會簡化客戶機應用101與資料節點221之間的輸入/輸出路徑。資料節點221可發出“置入(put)”命令來將每一個資料區塊儲存為鍵-值對,而並非依賴本地檔案系統來創建資料區塊及將資料區塊寫入到檔案。讀取KV SSD 150中的所儲存鍵-值對的過程是相似的;資料節點221可向KV SSD 150直接發出“獲取(get)”命令以檢索與鍵相關聯的資料區塊而非通過檔案系統介面來檢索資料區塊。在相似的過程之後可進行刪除過程。
在登記過程期間,可向KV SSD 150提供關於分散式資料儲存系統100B的行為的資訊。可基於分散式資料儲存系統100B的行為、針對分散式資料儲存系統100B來專門對KV SSD 150的快閃記憶體轉換層(FTL)進行優化。
KV SSD 150的SSD控制器可在不同的記憶體晶片(例如,與非晶片)之間以條的形式來寫入及讀取資料以加速寫入操作及讀取操作。分散式資料儲存系統100B(例如,HDFS)可並行地發送許多輸入/輸出請求,且可容忍長的延遲,只要輸送量高即可。這種並行性可通過向SSD控制器添加複雜性來減小延遲。根據一個實施例,KV SSD 150的FTL可被優化成基於分散式資料儲存系統100B的資訊來對單個通道讀取及寫入大的區塊。在這種情形中,KV SSD 150的FTL不會使資料通過多個通道在多個晶片之間分條(striping),而是可並行地執行同時進行的讀取操作與寫入操作以實現高的輸送量。
可針對頻繁讀取所儲存的資料的以資料為中心且資料密集型的應用來對分散式檔案系統(例如,HDFS)進行優化。在這種情形中,資料讀取操作比資料寫入操作頻繁得多。這些分散式檔案系統中的一些分散式檔案系統提供一次寫入語義(write-once semantics)且使用大的區塊大小。相比之下,KV SSD 150可支援動態的區塊大小以及對資料區塊的頻繁更新。
根據另一個實施例,KV SSD 150可被優化成不會引起對於採用內部檔案系統(例如,圖1A所示SSD 140)的情況而言可能原本需要的垃圾收集。垃圾收集是如下過程:從包括過時頁面的區塊移動有效頁面,因此可將所述區塊擦除及改寫。垃圾收集是可造成寫入放大、輸入/輸出不確定性(I/O indeterminism)及驅動器的磨損均衡(wear leveling)的代價高昂的過程。一旦被優化,KV SSD 150的FTL便可對寫入操作與擦除操作使用相同的細微性(granularity)。當一個區塊被刪除時,所述區塊可立即被標記以進行擦除,由此不再需要進行垃圾收集。KV SSD 150的經優化的FTL可改善性能及耐用性,同時消除垃圾收集並簡化FTL。
根據一個實施例,KV SSD 150支援動態頁面及區塊大小。舉例而言,KV SSD 150可基於HDFS配置來調整其中將要儲存的區塊的區塊大小。舉例來說,在所述配置期間,分散式資料儲存系統100B可告知KV SSD 150只有經對齊的固定大小的寫入操作將被發出到KV SSD 150,且KV SSD 150相應地對其區塊大小進行配置。作為另外一種選擇,KV SSD 150可透露其擦除區塊大小(或可能的擦除區塊大小)且需要分散式資料儲存系統100B來相應地對KV SSD 150的區塊大小進行配置。在任意一種情形中,KV SSD 150及分散式資料儲存系統100B中的區塊大小可相對於彼此進行配置。
根據一個實施例,分散式資料儲存系統100B可對KV SSD 150進行配置以允許或不允許進行區塊更新。舉例來說,分散式資料儲存系統100B可將附加參數(在本文中稱為更新旗標)傳遞到KV SSD 150。通過使用更新旗標,KV SSD 150的SSD控制器可將自身配置成提供附加快閃記憶體區塊及執行緒以處置與從客戶機應用101接收的區塊更新請求相關聯的垃圾收集。通過不允許進行區塊更新(例如,更新為旗標=假),分散式資料儲存系統100B可因不同的快閃記憶體通道或裸晶之間的並行性而實現輸送量的大規模增大。當將每一次新的寫入與新的鍵一起使用時,KV SSD 150無需在各個通道或裸晶之間執行同步以驗證所寫入的區塊是重寫。在這種情形中,資料節點221可將區塊更新旗標設定為假。
圖2A示出示例性SSD的系統組態。參照圖1A,分散式資料儲存系統100A通過將其本地檔案系統(例如,Linux的ext4)安裝為“/mnt/fs”來配置SSD 140。儲存在SSD 140中的檔案可由SSD 140的所安裝的檔案系統進行存取。
圖2B示出根據一個實施例的鍵-值SSD的示例性系統組態。參照圖1B,分散式資料儲存系統100B基於在登記過程期間接收的KV SSD 150的資訊來配置KV SSD 150。舉例來說,分散式資料儲存系統100B可將KV SSD 150的儲存類型配置為鍵-值SSD(KV SSD)並將KV SSD 150的輸入/輸出路徑設定為“dev/kvssd”。KV SSD 150還可被配置成將區塊更新旗標設定為假、將區塊大小設定為64 MB且將對齊旗標設定為真。
當KV SSD 150被配置成通過將KV SSD 150的擦除區塊大小與分散式資料儲存系統100B的資料大小設定成相等的及對齊的來禁用交叉通道輸入/輸出操作時,分散式資料儲存系統100B在KV SSD 150中的所有的通道或裸晶之間執行實現無鎖定輸入/輸出操作(lock-less I/O operation)。舉例來說,KV SSD 150使用簡單的雜湊函數(例如,位址模10(address mod 10))在所有可能的通道中確定輸入/輸出應被路由到的通道。在這種情形中,針對給定位址的所有輸入/輸出操作將一致地路由到相同的快閃記憶體通道。在其中通道由連續處理單元執行的情形中,被路由到這一通道的所有輸入/輸出操作被排序而無需任何跨通道鎖定。因此,分散式資料儲存系統100B可在輸入/輸出執行緒之間實現完全並行性而無需進行同步。
本KV SSD可根據KV SSD如何將擦除區塊作為垃圾收集單位進行處置來實現並行性。圖3示出根據一個實施例的實現通道級並行性的示例性SSD通道及裸晶架構。KV SSD可利用通道級並行性來改善KV SSD的輸入/輸出性能。在本實例中,KV SSD具有N個通道及M個通路,其中N及M是等於或大於1的整數。分散式檔案系統(例如,HDFS)的資料大小被設定成等於KV SSD的區塊大小或區塊大小的倍數。KV SSD的區塊大小是由晶片(或裸晶)中擦除單位的大小與KV SSD內部通路數目的乘積來確定,即,區塊大小 = 擦除單位的大小*通路的數目。所述資料可在同一通道中在各個晶片之間分條。舉例來說,KV SSD具有6 MB的擦除單位大小及8個通路,且分散式檔案系統的資料大小被設定成48 MB以適配在KV SSD的資料群組中。在通道級並行性中不會發生垃圾收集,這是因為刪除48 MB資料會導致在同一通道中重新設定8個完整的擦除區塊。然而,通道級並行性並未充分利用所述多個通道可提供的潛在並行性。
圖4示出根據一個實施例的實現通路級並行性(way-level parallelism)的示例性SSD通道及裸晶架構。KV SSD可利用通路級並行性來改善KV SSD的輸入/輸出性能。在這種情形中,分散式檔案系統(例如,HDFS)的資料大小被設定成等於KV SSD的區塊大小或區塊大小的倍數。KV SSD的區塊大小是由擦除單位的大小與通道的數目的乘積來確定,即,區塊大小 = 擦除單位的大小*通道的數目。垃圾收集單位及資料大小是區塊大小的乘法運算。所述資料可在同一通路中在各個晶片之間分條。資料分條可在所有通道之間進行,從而能夠充分利用通道並行性。
圖5示出根據一個實施例的實現裸晶/晶片級並行性的示例性SSD通道及裸晶架構。在本實例中,SSD通道的數目是N,且裸晶的數目是比N大的M。裸晶/晶片級並行性在KV SSD中的各個通道及晶片之間提供最高並行性。在這種情形中,區塊大小等於擦除單位,且垃圾收集是以擦除單位進行。資料大小與擦除單位的倍數對齊。裸晶/晶片級並行性類似於具有虛擬節點的一致性雜湊(consistent hashing)。在這種情形中,每一個虛擬節點對應於擦除區塊單元,且實體節點對應於通道。
分散式檔案系統(例如,HDFS)維持中繼資料以管理資料的位置。舉例來說,每一個檔案均維持有構成所述檔案的所有區塊的清單。重複的分散式儲存系統維持有單獨的映射,所述單獨的映射列出儲存給定區塊(或檔案)的所有節點的位置。在一些分散式資料儲存系統中,這些映射表被保持在單個節點的記憶體中,這會限制分散式資料儲存系統的可擴展性。舉例來說,當儲存這些映射表的中繼資料節點不具有足以儲存附加映射資料的記憶體時,可不添加區塊或檔案。可在資料儲存裝置頂上使用檔案系統以儲存這些映射,但檔案系統會引入額外開銷。
本KV SSD可通過持久地保持檔案對區塊清單的映射以及區塊對節點清單的映射來將資料直接儲存在鍵-值對中而無需本地檔案系統。因此,負責儲存中繼資料的節點不受其記憶體容量的限制且不會引起由於具有附加檔案系統帶來的開銷。由於這些映射資訊是直接儲存在KV SSD上,因此這些映射資訊可採用由檔案進行索引的方式儲存在單個映射表中。這使得KV SSD中的單次查找便能夠檢索所有的資料區塊。單個映射表使中繼資料更加可擴展(僅一個映射表)且更高效(一次查找)。
讀取儲存在KV SSD中的檔案的過程類似於使用常規雜湊映射或相似的資料結構的過程。資料結構可為直接連結到KV SSD的庫。舉例來說,客戶機應用發出檔案檢索操作以使用檔案ID讀取檔案。中繼資料節點以二進位大物件(binary large object,blob)形式返回檔案的區塊清單,且中繼資料節點可映射成區塊清單最初被寫入成的格式。區塊清單還含有節點清單,在所述節點清單中儲存有區塊清單中的每一個區塊。中繼資料節點可接著將區塊的清單及相關聯的節點傳遞回客戶機應用以發出對區塊的讀取。在這種方案中,中繼資料節點仍需要將映射表儲存在其記憶體中以用於每一次查找,以將清單傳遞回客戶機應用;然而,中繼資料節點不需要將所有映射資訊保持在其記憶體中。舉例來說,最近讀取的檔案的快取記憶體可在可擴展性與效率之間提供折衷。
圖6A示出示例性SSD(例如,圖1A及圖2A所示SSD 140)的示例性映射方案。編輯日誌(edit log)是指對檔案及映射表(File and Mapping table)執行的所有中繼資料操作的日誌。這些編輯日誌被持久地保存到磁片。這是必需的,因為檔案及區塊映射表只位於記憶體中;如果名稱節點崩潰,則名稱節點會通過從記憶體中讀取編輯日誌來在記憶體中重建檔案及區塊映射表。圖6B示出根據一個實施例的KV SSD(例如,圖1B及圖2B所示KV SSD 150)的示例性映射方案。SSD 140將檔案映射表及區塊映射表儲存在其記憶體中。使用這些映射資訊,客戶機應用可檢索與檔案相關聯的資料區塊。同時,KV SSD 150儲存包含區塊清單及節點列表的單次映射的文件映射表。
圖7、圖8及圖9示出在分散式檔案系統(例如,HDFS)中創建及寫入檔案、讀取檔案及刪除檔案的示例性輸入/輸出過程的圖。在對每一個圖的說明中,將論述與現有技術過程相比而言的差異及優點。
圖7示出根據一個實施例的在分散式檔案系統的KV SSD中創建並儲存檔案的示例性過程。分散式檔案系統包括客戶機710、包括KV SSD (kv1)730的名稱節點(或中繼資料節點)720以及包括KV SSD(kv2)750的資料節點740。為創建新的檔案,客戶機710向名稱節點720發送帶有檔案ID(fileID)的請求761(createFile(fileID))。名稱節點720通過發送鍵-值儲存命令762(kv.store(fileID, “ ”))而在內部登記檔案ID並將檔案ID作為鍵-值對的無值鍵(value-less key)儲存在KV SSD 730中。KV SSD 730通過將完成消息763發送回名稱節點720來作出回應,且接著,名稱節點720以完成消息764來回應客戶機710。在名稱節點720回應客戶機710後,客戶機710為文件分配區塊的分配命令765(allocateBlock(fileID))。作為回應,名稱節點720指派區塊ID(blockID)及資料節點(例如,資料節點740)來儲存區塊並向客戶機710發送迴響應766。名稱節點720可指派單調遞增的ID作為區塊ID。客戶機710使用區塊ID向資料節點740發送帶有所述區塊的資料內容的區塊寫入請求767(writeBlock(blockID, content))。回應於區塊寫入請求767,資料節點740向KV SSD 750發出帶有傳入參數(區塊ID及內容)的鍵-值儲存命令768(kv.store(blockID, content))。在具有常規SSD的傳統資料節點中,對資料節點進行的寫入操作將請求對檔案系統進行寫入且接著對SSD的基礎資料儲存介質進行寫入。在儲存所述區塊後,KV SSD 750以完成消息768對資料節點740作出回應,且資料節點740以完成消息770對客戶機710作出回應。客戶機710接著向名稱節點720發送提交寫入命令771(commit(Write(fileID, blockID))以將區塊ID與資料節點元組提交到相關聯的檔案。名稱節點720向KV SSD 730發送附加命令772(kv.append(fileID, blockID + dataNode))。在附加過程中,附加命令772是對KV SSD 730進行的單個直接操作,而不是如在傳統的分散式儲存系統中一樣是對兩個單獨的映射(即,檔案-區塊映射及區塊-資料節點映射)的儲存操作。
圖8示出根據一個實施例的讀取儲存在分散式檔案系統的KV SSD中的檔案的示例性過程。為讀取儲存在資料節點740中的檔案,客戶機710向名稱節點720發送帶有檔案ID(fileID)的讀取檔案請求861(openFile(fileID))。通過利用檔案ID,名稱節點720向KV SSD 730發送檢索命令(kv.retrieve(fileID)),且KV SSD 730返回映射資訊863,映射資訊863將區塊映射到與檔案ID相關聯的資料節點。名稱節點720將映射資訊864轉發到客戶機710。通過利用區塊-資料節點映射資訊中所包含的區塊ID,客戶機710向資料節點740發送區塊讀取命令865(readBlock(blockID))。資料節點740向KV SSD 750發送區塊檢索命令866(kv.retrieve(blockID))以檢索區塊內容。KV SSD 750將所請求區塊的內容867發送回資料節點740,且資料節點740將所檢索的區塊內容868轉發回客戶機710。此與傳統的讀取操作之間的基本差異在於,名稱節點720發出單個直接KV SSD讀取操作以檢索區塊-資料節點映射,而非在記憶體內雜湊表中搜索檔案對區塊清單以及區塊對資料節點清單。另外,資料節點740直接向KV SSD發送要檢索資料的請求,從而繞過任何儲存軟體中介軟體(例如檔案系統)。
圖9示出根據一個實施例的刪除分散式檔案系統的KV SSD中的檔案的示例性過程。客戶機710向名稱節點720發送帶有檔案ID的檔案刪除命令961(deleteFile(fileID))。名稱節點720向KV SSD 730發送鍵-值檢索命令962(kv.retrieve(fileID))以檢索檔案的映射資訊,且KV SSD 730返回映射資訊963,映射資訊963將區塊映射到與檔案ID相關聯的資料節點。名稱節點720可臨時地快取記憶體用於相關聯的區塊的後續非同步刪除過程的區塊ID映射。名稱節點720向KV SSD 730發送鍵-值刪除命令964(kv.delete(fileID)),且KV SSD 730在刪除檔案ID及相關聯的映射後向名稱節點720發送完成消息965。當檢索與檔案ID相關聯的映射資訊時,名稱節點720檢索區塊-資料節點元組來找到將從KV SSD 730刪除的檔案。這一過程不同於將涉及到查找多個記憶體內雜湊表的傳統的分散式儲存系統。而是,名稱節點720從含有區塊-資料節點映射的KV SSD 730刪除這一基於檔案的鍵。名稱節點720將控制返回到客戶機710,且名稱節點720非同步地向資料節點740發送區塊刪除命令以從KV SSD 750刪除對應的區塊。應注意,圖9所示檔案刪除過程是基於分散式檔案系統的區塊大小等於或可被劃分成KV SSD 750的擦除區塊大小這一假設。此可使從記憶體內操作移動到基於KV SSD的操作的開銷最小化。
根據一個實施例,一種固態驅動器(SSD)包括:多個資料區塊;用於存取所述多個資料區塊的多個快閃記憶體通道及多個通路;以及SSD控制器,對所述多個資料區塊的區塊大小進行配置。資料檔案與一個或多個鍵-值對一起儲存在所述SSD中,且每一個鍵-值對具有區塊識別符作為鍵且具有區塊資料作為值。所述資料檔案的大小等於所述區塊大小或所述區塊大小的倍數。
所述SSD可用于包括海杜普分散式檔案系統(HDFS)的分散式檔案系統中。
所述SSD控制器還可配置成基於區塊更新旗標來啟用或禁用區塊更新。
所述SSD控制器還可配置成基於對齊旗標來將所述資料檔案與所述多個資料區塊對齊。
所述區塊大小可基於所述SSD的擦除單位乘以快閃記憶體通道的數目來確定。
所述區塊大小可基於所述SSD的擦除單位乘以通路的數目來確定。
所述區塊大小可等於所述SSD的擦除單位。
所述SSD可儲存檔案映射表,所述檔案映射表包括所述檔案向所述多個資料區塊中與所述檔案相關聯的一個或多個資料區塊的第一映射以及所述一個或多個資料區塊中的至少一者向包括所述SSD的資料節點的第二映射。
根據另一個實施例,一種分散式資料儲存系統包括:客戶機;名稱節點,包括第一鍵-值(KV)固態驅動器(SSD);以及資料節點,包括第二KV SSD,其中所述第二KV SSD包括多個資料區塊、用於存取所述多個資料區塊的多個快閃記憶體通道及多個通路、以及用於配置所述多個資料區塊的區塊大小的SSD控制器。所述客戶機向所述名稱節點發送包括用於儲存資料檔案的檔案識別符的創建檔案請求,並向所述名稱節點發送分配命令以分配所述多個資料區塊中與所述資料檔案相關聯的一個或多個資料區塊。所述名稱節點向所述客戶機返回所述一個或多個資料區塊的區塊識別符以及被指派儲存所述一個或多個資料區塊的所述資料節點的資料節點識別符。所述客戶機向所述資料節點發送區塊儲存命令,以儲存所述一個或多個資料區塊。所述第二KV SSD儲存所述一個或多個資料區塊作為鍵-值對,且至少一個鍵-值對具有所述區塊識別符作為鍵且具有區塊資料作為值。所述資料檔案的大小等於所述區塊大小或所述區塊大小的倍數。
所述分散式資料儲存系統可採用海杜普分散式檔案系統(HDFS)。
所述第二KV SSD可儲存檔案映射表,所述檔案映射表包括所述資料檔案向與所述檔案相關聯的一個或多個資料區塊的第一映射以及所述一個或多個資料區塊中的至少一者向資料節點的第二映射。
根據又一實施例,一種方法包括:從客戶機向名稱節點發送創建檔案請求,其中所述創建檔案請求包括用於儲存資料檔案的檔案識別符;將所述檔案識別符作為鍵-值對儲存在所述名稱節點的第一鍵-值(KV)固態驅動器(SSD)中,其中所述檔案識別符作為鍵被儲存在所述鍵-值中,且與所述鍵相關聯的值是空的;從所述客戶機向所述名稱節點發送分配命令,以分配與所述資料檔案相關聯的一個或多個資料區塊;在所述名稱節點處將區塊識別符指派給所述一個或多個資料區塊中的至少一者並指派資料節點來儲存所述一個或多個資料區塊;從所述名稱節點向所述客戶機返回所述區塊識別符及所述資料節點的資料節點識別符;從所述客戶機向所述資料節點發送寫入區塊請求,其中所述寫入區塊請求包括所述區塊識別符及內容;以及將所述一個或多個資料區塊作為鍵-值對保存在所述資料節點的第二KV SSD中。所述資料節點的所述第二KV SSD包括具有區塊大小的一個或多個資料區塊。至少一個鍵-值對具有區塊識別符作為鍵且具有區塊資料作為值。所述資料檔案的大小等於所述區塊大小或所述區塊大小的倍數。
所述客戶機、所述名稱節點及所述資料節點可為海杜普分散式檔案系統(HDFS)中的節點。
所述方法還可包括:設定區塊更新旗標來啟用或禁用區塊更新。
所述方法還可包括:設定對齊旗標來將所述資料檔案與所述資料節點的所述第二KV SSD的所述多個資料區塊對齊。
所述方法還可包括:從所述客戶機向所述名稱節點發送寫入提交命令,所述寫入提交命令包括所述檔案識別符及所述區塊識別符;以及附加單一直接操作,以將所述檔案識別符、所述區塊識別符及所述資料節點附加在所述名稱節點中。
所述方法還可包括:從所述客戶機向所述名稱節點發送要讀取所述資料檔案的讀取檔案請求;向所述客戶機返回所述一個或多個資料區塊中與所述資料檔案相關聯的至少一個資料區塊的所述區塊識別符及所述資料節點識別符;從所述客戶機向所述資料節點發送區塊讀取命令,以檢索儲存在所述資料節點的所述第二KV SSD中的所述一個或多個資料區塊;以及從所述資料節點向所述客戶機返回由所述區塊識別符標識的所述區塊資料。
所述方法還可包括:從所述客戶機向所述名稱節點發送檔案刪除命令,所述檔案刪除命令包括所述檔案識別符;向所述客戶機返回所述一個或多個資料區塊中與所述資料檔案相關聯的至少一個資料區塊的所述區塊識別符及所述資料節點識別符;從所述名稱節點向所述名稱節點的所述第一KV SSD發送鍵-值刪除命令,所述鍵-值刪除命令包括所述資料檔案的所述檔案識別符;從所述名稱節點向所述資料節點發送區塊刪除命令,所述區塊刪除命令包括所述一個或多個資料區塊的清單;以及刪除被儲存在所述資料節點的所述第二KV SSD中的所述一個或多個資料區塊。
所述第二KV SSD可儲存檔案映射表,所述檔案映射表包括所述檔案向與所述檔案相關聯的一個或多個資料區塊的第一映射以及所述一個或多個資料區塊中的至少一者向所述資料節點的第二映射。
上文已闡述了以上示例性實施例來示出實施用於提供在分散式檔案系統中利用鍵-值儲存來高效地儲存資料及中繼資料的系統及方法的系統及方法的各種實施例。所屬領域中的一般技術人員將會聯想到對所揭露示例性實施例的各種修改及相對於所揭露示例性實施例的不同之處。在以上權利要求中闡述了旨在落於本揭露範圍內的主題。
100A、100B‧‧‧分散式資料儲存系統
101‧‧‧客戶機應用/客戶機
105‧‧‧文件
111、720‧‧‧名稱節點
115‧‧‧區塊映射
121、221、740‧‧‧資料節點
140‧‧‧SSD
150‧‧‧鍵-值SSD/KV SSD
710‧‧‧客戶機
730‧‧‧KV SSD (kv1)/KV SSD
750‧‧‧KV SSD(kv2)/KV SSD
761‧‧‧請求
762、768‧‧‧鍵-值儲存命令
763、764、769、770、773、774、965‧‧‧完成消息
765‧‧‧分配命令
766‧‧‧回應
767‧‧‧區塊寫入請求
771‧‧‧提交寫入命令
772‧‧‧附加命令
861‧‧‧讀取檔案請求
862‧‧‧檢索命令
863、864、963‧‧‧映射資訊
865‧‧‧區塊讀取命令
866‧‧‧區塊檢索命令
867‧‧‧內容
868‧‧‧區塊內容
961‧‧‧檔案刪除命令
962‧‧‧鍵-值檢索命令
964‧‧‧鍵-值刪除命令
966、967‧‧‧區塊刪除命令
968、969‧‧‧返回
970‧‧‧非同步消息
作為本說明書的一部分而包括在內的各個附圖示出當前優選的實施例,且與以上所給出的大體說明及以下所給出的對優選實施例的詳細說明一起用於解釋及教示本文所述原理。
圖1A示出現有技術分散式資料儲存系統的方區塊圖。
圖1B示出根據一個實施例的包括鍵-值儲存裝置的示例性分散式資料儲存系統的方區塊圖。
圖2A示出示例性SSD的系統組態。
圖2B示出根據一個實施例的鍵-值SSD的示例性系統組態。
圖3示出根據一個實施例的實現通道級並行性(channel-level parallelism)的示例性SSD通道及裸晶架構。
圖4示出根據一個實施例的實現通路級並行性(way-level parallelism)的示例性SSD通道及裸晶架構。
圖5示出根據一個實施例的實現裸晶/晶片級並行性(die/chip-level parallelism)的示例性SSD通道及裸晶架構。
圖6A示出示例性SSD的示例性映射方案。
圖6B示出根據一個實施例的KV SSD的示例性映射方案。
圖7示出根據一個實施例的在分散式檔案系統的KV SSD中創建並儲存檔案的示例性過程。
圖8示出根據一個實施例的讀取儲存在分散式檔案系統的KV SSD中的檔案的示例性過程。
圖9示出根據一個實施例的刪除分散式檔案系統的KV SSD中的檔案的示例性過程。
各個圖未必是按比例繪製,且出於說明目的,在所有圖中具有相似結構或功能的元件一般是由相同的參考編號表示。各個圖僅旨在方便說明本文所述各種實施例。各個圖並不闡述本文所揭露教示內容的每一方面且並不限制權利要求書的範圍。
Claims (19)
- 一種固態驅動器,包括: 多個資料區塊; 多個快閃記憶體通道及多個通路,用於存取所述多個資料區塊;以及 固態驅動器控制器,對所述多個資料區塊的區塊大小進行配置; 其中資料檔案與一個或多個鍵-值對一起儲存在所述固態驅動器中,且至少一個鍵-值對具有區塊識別符作為鍵且具有區塊資料作為值,且 其中所述資料檔案的大小等於所述區塊大小或所述區塊大小的倍數。
- 如申請專利範圍第1項所述的固態驅動器,其中所述固態驅動器用於包括海杜普分散式檔案系統的分散式檔案系統中。
- 如申請專利範圍第1項所述的固態驅動器,其中所述固態驅動器控制器還配置成基於區塊更新旗標來啟用或禁用區塊更新。
- 如申請專利範圍第1項所述的固態驅動器,其中所述固態驅動器控制器還配置成基於對齊旗標來將所述資料檔案與所述多個資料區塊對齊。
- 如申請專利範圍第1項所述的固態驅動器,其中所述區塊大小是基於所述固態驅動器的擦除單位乘以快閃記憶體通道的數目來確定。
- 如申請專利範圍第1項所述的固態驅動器,其中所述區塊大小是基於所述固態驅動器的擦除單位乘以通路的數目來確定。
- 如申請專利範圍第1項所述的固態驅動器,其中所述區塊大小等於所述固態驅動器的擦除單位。
- 如申請專利範圍第1項所述的固態驅動器,其中所述固態驅動器儲存檔案映射表,所述檔案映射表包括所述檔案向所述多個資料區塊中與所述檔案相關聯的一個或多個資料區塊的第一映射以及所述一個或多個資料區塊中的至少一者向包括所述固態驅動器的資料節點的第二映射。
- 一種分散式資料儲存系統,包括: 客戶機; 名稱節點,包括第一鍵-值固態驅動器;以及 資料節點,包括第二鍵-值固態驅動器,其中所述第二鍵-值固態驅動器包括多個資料區塊、用於存取所述多個資料區塊的多個快閃記憶體通道及多個通路、以及用於配置所述多個資料區塊的區塊大小的固態驅動器控制器, 其中所述客戶機向所述名稱節點發送包括用於儲存資料檔案的檔案識別符的創建檔案請求,並向所述名稱節點發送分配命令以分配所述多個資料區塊中與所述資料檔案相關聯的一個或多個資料區塊, 其中所述名稱節點向所述客戶機返回所述一個或多個資料區塊的區塊識別符以及被指派儲存所述一個或多個資料區塊的所述資料節點的資料節點識別符, 其中所述客戶機向所述資料節點發送區塊儲存命令,以儲存所述一個或多個資料區塊, 其中所述第二鍵-值固態驅動器儲存所述一個或多個資料區塊作為鍵-值對,且至少一個鍵-值對具有所述區塊識別符作為鍵且具有區塊資料作為值,且 其中所述資料檔案的大小等於所述區塊大小或所述區塊大小的倍數。
- 如申請專利範圍第9項所述的分散式資料儲存系統,其中所述分散式資料儲存系統採用海杜普分散式檔案系統。
- 如申請專利範圍第9項所述的分散式資料儲存系統,其中所述第二鍵-值固態驅動器儲存檔案映射表,所述檔案映射表包括所述資料檔案向與所述檔案相關聯的一個或多個資料區塊的第一映射以及所述一個或多個資料區塊中的至少一者向資料節點的第二映射。
- 一種方法,包括: 從客戶機向名稱節點發送創建檔案請求,其中所述創建檔案請求包括用於儲存資料檔案的檔案識別符; 將所述檔案識別符作為鍵-值對儲存在所述名稱節點的第一鍵-值固態驅動器中,其中所述檔案識別符作為鍵被儲存在所述鍵-值中,且與所述鍵相關聯的值是空的; 從所述客戶機向所述名稱節點發送分配命令,以分配與所述資料檔案相關聯的一個或多個資料區塊; 在所述名稱節點處將區塊識別符指派給所述一個或多個資料區塊中的至少一者並指派資料節點來儲存所述一個或多個資料區塊; 從所述名稱節點向所述客戶機返回所述區塊識別符及所述資料節點的資料節點識別符; 從所述客戶機向所述資料節點發送寫入區塊請求,其中所述寫入區塊請求包括所述區塊識別符及內容;以及 將所述一個或多個資料區塊作為鍵-值對保存在所述資料節點的第二鍵-值固態驅動器中, 其中所述資料節點的所述第二鍵-值固態驅動器包括具有區塊大小的一個或多個資料區塊, 其中至少一個鍵-值對具有區塊識別符作為鍵且具有區塊資料作為值,且 其中所述資料檔案的大小等於所述區塊大小或所述區塊大小的倍數。
- 如申請專利範圍第12項所述的方法,其中所述客戶機、所述名稱節點及所述資料節點是海杜普分散式檔案系統中的節點。
- 如申請專利範圍第12項所述的方法,更包括:設定區塊更新旗標來啟用或禁用區塊更新。
- 如申請專利範圍第12項所述的方法,更包括:設定對齊旗標來將所述資料檔案與所述資料節點的所述第二鍵-值固態驅動器的多個資料區塊對齊。
- 如申請專利範圍第12項所述的方法,更包括: 從所述客戶機向所述名稱節點發送寫入提交命令,所述寫入提交命令包括所述檔案識別符及所述區塊識別符;以及 附加單一直接操作,以將所述檔案識別符、所述區塊識別符及所述資料節點附加在所述名稱節點中。
- 如申請專利範圍第16項所述的方法,更包括: 從所述客戶機向所述名稱節點發送要讀取所述資料檔案的讀取檔案請求; 向所述客戶機返回所述一個或多個資料區塊中與所述資料檔案相關聯的至少一個資料區塊的所述區塊識別符及所述資料節點識別符; 從所述客戶機向所述資料節點發送區塊讀取命令,以檢索儲存在所述資料節點的所述第二鍵-值固態驅動器中的所述一個或多個資料區塊;以及 從所述資料節點向所述客戶機返回由所述區塊識別符標識的所述區塊資料。
- 如申請專利範圍第17項所述的方法,更包括: 從所述客戶機向所述名稱節點發送檔案刪除命令,所述檔案刪除命令包括所述檔案識別符; 向所述客戶機返回所述一個或多個資料區塊中與所述資料檔案相關聯的至少一個資料區塊的所述區塊識別符及所述資料節點識別符; 從所述名稱節點向所述名稱節點的所述第一鍵-值固態驅動器發送鍵-值刪除命令,所述鍵-值刪除命令包括所述資料檔案的所述檔案識別符; 從所述名稱節點向所述資料節點發送區塊刪除命令,所述區塊刪除命令包括所述一個或多個資料區塊的清單;以及 刪除被儲存在所述資料節點的所述第二鍵-值固態驅動器中的所述一個或多個資料區塊。
- 如申請專利範圍第12項所述的方法,其中所述第二鍵-值固態驅動器儲存檔案映射表,所述檔案映射表包括所述檔案向與所述檔案相關聯的一個或多個資料區塊的第一映射以及所述一個或多個資料區塊中的至少一者向所述資料節點的第二映射。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862626839P | 2018-02-06 | 2018-02-06 | |
US62/626,839 | 2018-02-06 | ||
US15/934,747 | 2018-03-23 | ||
US15/934,747 US11392544B2 (en) | 2018-02-06 | 2018-03-23 | System and method for leveraging key-value storage to efficiently store data and metadata in a distributed file system |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201935243A true TW201935243A (zh) | 2019-09-01 |
TWI778157B TWI778157B (zh) | 2022-09-21 |
Family
ID=67476066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107137684A TWI778157B (zh) | 2018-02-06 | 2018-10-25 | 固態驅動器、分散式資料儲存系統和利用鍵值儲存的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11392544B2 (zh) |
JP (1) | JP7437117B2 (zh) |
KR (1) | KR20190095089A (zh) |
CN (1) | CN110119425A (zh) |
TW (1) | TWI778157B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI819943B (zh) * | 2022-12-30 | 2023-10-21 | 康和綜合證券股份有限公司 | 資料索引值產生裝置、資料索引值產生方法及其電腦程式產品 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11263180B2 (en) * | 2019-02-23 | 2022-03-01 | National Tsing Hua University | Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device |
CN112394874A (zh) * | 2019-08-13 | 2021-02-23 | 华为技术有限公司 | 一种键值kv的存储方法、装置及存储设备 |
US11287994B2 (en) * | 2019-12-13 | 2022-03-29 | Samsung Electronics Co., Ltd. | Native key-value storage enabled distributed storage system |
US11636059B2 (en) * | 2020-03-31 | 2023-04-25 | Samsung Electronics Co., Ltd. | Scaling performance in a storage server with storage devices |
US20220011948A1 (en) * | 2020-07-08 | 2022-01-13 | Samsung Electronics Co., Ltd. | Key sorting between key-value solid state drives and hosts |
US11704057B2 (en) * | 2020-07-20 | 2023-07-18 | Micron Technology, Inc. | Memory sub-systems including memory devices of various latencies and capacities |
CN116490847A (zh) * | 2020-11-05 | 2023-07-25 | 阿里巴巴集团控股有限公司 | 支持分布式文件***中的垃圾收集的虚拟数据复制 |
KR102486980B1 (ko) * | 2021-01-08 | 2023-01-11 | 주식회사 앤다스 | 블록 데이터 스토리지 시스템, 블록 데이터 스토리지 방법 및 기록 매체에 저장된 프로그램 |
US11614870B2 (en) | 2021-05-07 | 2023-03-28 | Micron Technology, Inc. | Zoned memory device recovery after a key-value store failure |
CN113220237A (zh) * | 2021-05-17 | 2021-08-06 | 北京青云科技股份有限公司 | 一种分布式存储方法、装置、设备及存储介质 |
KR20230017040A (ko) | 2021-07-27 | 2023-02-03 | 단국대학교 산학협력단 | 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법 |
KR102545480B1 (ko) | 2021-07-29 | 2023-06-20 | 단국대학교 산학협력단 | 존 스토리지에서의 키-값 스토어 파일 저장 장치 및 방법 |
US20230054002A1 (en) * | 2021-08-18 | 2023-02-23 | Samsung Electronics Co., Ltd. | Lifecycle-aware persistent storage |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266501B2 (en) * | 2009-09-29 | 2012-09-11 | Micron Technology, Inc. | Stripe based memory operation |
US10089017B2 (en) * | 2011-07-20 | 2018-10-02 | Futurewei Technologies, Inc. | Method and apparatus for SSD storage access |
CN102722449B (zh) * | 2012-05-24 | 2015-01-21 | 中国科学院计算技术研究所 | 基于SSD的Key-Value型本地存储方法及*** |
CN103902632B (zh) | 2012-12-31 | 2018-01-02 | 华为技术有限公司 | 键值存储***中构建文件***的方法、装置及电子设备 |
EP3627428A1 (en) | 2013-02-21 | 2020-03-25 | CFM Global LLC | Data farm metering |
US9405783B2 (en) * | 2013-10-02 | 2016-08-02 | Netapp, Inc. | Extent hashing technique for distributed storage architecture |
IN2013MU03472A (zh) * | 2013-10-31 | 2015-07-24 | Tata Consultancy Services Ltd | |
US9569141B2 (en) * | 2014-03-28 | 2017-02-14 | Intel Corporation | Hash map support in a storage device |
US20170277477A1 (en) * | 2014-10-03 | 2017-09-28 | Agency For Science, Technology And Research | Distributed Active Hybrid Storage System |
US9438426B2 (en) | 2014-10-03 | 2016-09-06 | Seagate Technology Llc | Key-value data storage device with hybrid architecture |
CN105933376B (zh) | 2016-03-31 | 2019-09-03 | 华为技术有限公司 | 一种数据操作方法,服务器及存储*** |
CN106708427B (zh) * | 2016-11-17 | 2019-05-10 | 华中科技大学 | 一种适用于键值对数据的存储方法 |
US10649969B2 (en) * | 2017-06-13 | 2020-05-12 | Western Digital Technologies, Inc. | Memory efficient persistent key-value store for non-volatile memories |
-
2018
- 2018-03-23 US US15/934,747 patent/US11392544B2/en active Active
- 2018-10-25 TW TW107137684A patent/TWI778157B/zh active
- 2018-12-05 KR KR1020180155572A patent/KR20190095089A/ko not_active Application Discontinuation
-
2019
- 2019-01-17 JP JP2019006124A patent/JP7437117B2/ja active Active
- 2019-01-25 CN CN201910075226.0A patent/CN110119425A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI819943B (zh) * | 2022-12-30 | 2023-10-21 | 康和綜合證券股份有限公司 | 資料索引值產生裝置、資料索引值產生方法及其電腦程式產品 |
Also Published As
Publication number | Publication date |
---|---|
KR20190095089A (ko) | 2019-08-14 |
US11392544B2 (en) | 2022-07-19 |
JP7437117B2 (ja) | 2024-02-22 |
JP2019139759A (ja) | 2019-08-22 |
CN110119425A (zh) | 2019-08-13 |
US20190243906A1 (en) | 2019-08-08 |
TWI778157B (zh) | 2022-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI778157B (zh) | 固態驅動器、分散式資料儲存系統和利用鍵值儲存的方法 | |
US10891055B2 (en) | Methods, systems and devices relating to data storage interfaces for managing data address spaces in data storage devices | |
US10523786B2 (en) | I/O bandwidth reduction using storage-level common page information | |
JP6664218B2 (ja) | 効率的なデータオブジェクトストレージ及び検索 | |
US7676628B1 (en) | Methods, systems, and computer program products for providing access to shared storage by computing grids and clusters with large numbers of nodes | |
US8285967B1 (en) | Method for on-demand block map generation for direct mapped LUN | |
US9026737B1 (en) | Enhancing memory buffering by using secondary storage | |
CN107180092B (zh) | 一种文件***的控制方法、装置及终端 | |
US11301421B2 (en) | Scalable multi-tier storage structures and techniques for accessing entries therein | |
KR20170008153A (ko) | 비휘발성 장치에서 데이터 속성 기반 데이터 배치를 활용하기 위해 컴퓨터를 구동하는 경험적 인터페이스 | |
US10169124B2 (en) | Unified object interface for memory and storage system | |
US9842114B2 (en) | Peer to peer network write deduplication | |
US20140074776A1 (en) | Re-trim of free space within vhdx | |
US10503693B1 (en) | Method and system for parallel file operation in distributed data storage system with mixed types of storage media | |
US9430492B1 (en) | Efficient scavenging of data and metadata file system blocks | |
US11567680B2 (en) | Method and system for dynamic storage scaling | |
KR100622130B1 (ko) | 객체 기반 스토리지 시스템에서 고속의 데이터 입출력을위한 객체 저장소 관리 시스템 및 방법 | |
US11210230B2 (en) | Cache retention for inline deduplication based on number of physical blocks with common fingerprints among multiple cache entries | |
CN104426965B (zh) | 自管理存储方法和*** | |
WO2022262381A1 (zh) | 一种数据压缩方法及装置 | |
US9646012B1 (en) | Caching temporary data in solid state storage devices | |
US11360691B2 (en) | Garbage collection in a storage system at sub-virtual block granularity level | |
US20210334247A1 (en) | Group based qos policies for volumes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |