CN108628542B - 一种文件合并方法及控制器 - Google Patents
一种文件合并方法及控制器 Download PDFInfo
- Publication number
- CN108628542B CN108628542B CN201710175180.0A CN201710175180A CN108628542B CN 108628542 B CN108628542 B CN 108628542B CN 201710175180 A CN201710175180 A CN 201710175180A CN 108628542 B CN108628542 B CN 108628542B
- Authority
- CN
- China
- Prior art keywords
- data
- file
- controller
- keywords
- solid state
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 239000007787 solid Substances 0.000 claims abstract description 58
- 230000015654 memory Effects 0.000 claims description 34
- 238000004891 communication Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims 1
- 238000013500 data storage Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1724—Details of de-fragmentation performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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]
-
- 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/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种文件合并方法。该方法应用于存储系统中。所述存储系统包括控制器、固态硬盘和机械硬盘。所述控制器读取所述固态硬盘中的第一文件和第二文件。第一文件中保存有第一数据以及所述第一数据的关键字,第二文件中保存有第二数据以及所述第二数据的关键字。所述控制器判断所述第一数据的关键字与所述第二数据的关键字是否相同,当所述第一数据的关键字与所述第二数据的关键字相同时,所述控制器在所述机械硬盘上创建第三文件。然后,所述控制器合并所述第一数据和所述第二数据,并将所述合并后的数据写入所述第三文件。可以提高读文件的效率。
Description
技术领域
本发明实施例涉及存储技术领域,尤其涉及一种文件合并方法及控制器。
背景技术
日志结构合并树(log structured merge tree,LSMtree)是相对应B+树的一种数据结构,其主要是为了克服B+树的大量随机IO导致性能低的问题,本质是实现读写之前取得平衡,牺牲读性能来大幅度提高写性能。
业界有很多基于LSMtree原理实现的KV存储引擎,这些存储引擎被广泛应用各种数据存储系统中。这些应用实现KV存储引擎的核心思想都是将随机IO转化为顺序IO写入,数据再通过内存整理为局部有序的文件存储到文件系统,最后再对多个文件系统中的文件进行合并和排序提升读取性能。然而,如何提高这些文件的读数据的效率是当前需要解决的问题。
发明内容
本发明第一方面提供了一种文件合并方法。该方法应用于存储系统中。所述存储系统包括控制器、固态硬盘和机械硬盘。所述控制器读取所述固态硬盘中的第一文件和第二文件。第一文件中保存有第一数据以及所述第一数据的关键字,第二文件中保存有第二数据以及所述第二数据的关键字。所述控制器判断所述第一数据的关键字与所述第二数据的关键字是否相同,当所述第一数据的关键字与所述第二数据的关键字相同时,所述控制器在所述机械硬盘上创建第三文件。然后,所述控制器合并所述第一数据和所述第二数据,并将所述合并后的数据写入所述第三文件。
按照本发明第一方面提供的文件合并方法,将合并前的文件存储在固态硬盘中,将合并后的文件存储在机械硬盘中。由于合并前的文件中的数据属于新数据,被读取的可能性较大,将其存储在固态硬盘中可以提高读数据的效率。而合并后的文件中的数据属于旧数据,被读取的可能性较小,将其存储在机械硬盘中,可以降低成本。
在第一方面中,也可以将合并后的文件,即第三文件保存在固态硬盘中,虽然不能达到降低成本的目的,但可以进一步提高读数据的效率。
基于第一方面,在第一方面的第一种实现方式中,所述控制器的缓存中保存有至少两个不可变跳表和一个可变跳表,所述第一数据来自于所述至少两个不可变跳表中一个不可变跳表中的数据,所述第二数据来自于所述至少两个不可变跳表中另一个不可变跳表中的数据,所述可变跳表用于接收主机发送的数据。
基于第一方面,在第一方面的第二种实现方式中,所述控制器监控所述固态硬盘中的文件的数量是否达到预设阈值,当所述固态硬盘中的文件的数量已达到所述预设阈值时,所述控制器读取所述固态硬盘中的所述第一文件和所述第二文件。这里是给文件合并设置了一个触发条件,即,当固态硬盘中的文件的数量达到预设阈值时,开始执行文件合并。关于如何选择待合并的文件,可以是将所述固态硬盘中的所有文件作为待合并文件,也可以是由用户指定待合并的文件等方式。
基于第一方面,在第一方面的第三种实现方式中,所述存储系统还包括储存级存储器,所述储存级存储器中还保存有日志文件。所述控制器接收主机发送的第一写数据指令,将所述第一写数据指令写入所述日志文件,所述第一写数据指令包括所述第一数据以及所述第一数据的关键字。所述控制器接收主机发送的第二写数据指令,将所述第二写数据指令写入所述日志文件中,所述第二写数据指令包括所述第二数据以及所述第二数据的关键字。所述控制器回放所述日志文件,得到所述第一数据以及所述第一数据的关键字以及所述第二数据以及所述第二数据的关键字。所述控制器在所述固态硬盘中创建所述第一文件,将所述第一数据以及所述第一数据的关键字写入所述第一文件,在所述固态硬盘中创建所述第二文件,将所述第二数据以及所述第二数据的关键字写入所述第二文件。由于储存级存储器是一种读写效率较高的新型存储介质,将日志文件保存在储存级存储器中,通过所述日志文件回放得到数据的效率会更高
结合第一方面的第三种实现方式,在第一方面的第四种实现方式中将所述第一写数据指令写入所述日志文件中具体是采用追加写的方式。采用追加写的方式可以提高写日志文件的效率。
结合第一方面的第三种或第四种实现方式,在第一方面的第五种实现方式中,所述日志文件还包括其他写数据指令,所述方法还包括:所述控制器对所述日志文件中的所有写数据指令按照每个写数据指令中携带的关键字进行排序。经过排序后的日志文件,经回放生成文件数据之后,数据的关键字也是按照从小到大或者从大到小的顺序进行排序的,方便查找。
本发明第二方面提供了一种控制器。所述控制器位于存储系统中,所述存储系统包括所述控制器、固态硬盘和机械硬盘。所述控制器包括通信接口和处理器。其中,通信接口,用于与所述固态硬盘,以及所述机械硬盘通信。所述处理器用于执行第一方面任意一种实现方式的方法。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的一种存储系统的组成图;
图2为本发明实施例提供的一种控制器11的结构示例图;
图3为本发明实施例提供的一种控制器11组织数据的结构图;
图4为本发明实施例提供的一种文件合并方法的流程图。
具体实施方式
下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
KV(key-value)存储系统的数据存储采用LSM-Tree的结构实现。LSM-Tree将硬盘的随机写转化为顺序写,从而提高了写数据的速度。本发明实施例将LSM-Tree应用于包含固态硬盘的存储系统中。下面结合图1和图2,对本实施例所描述的存储系统进行介绍。
如图1所示,存储系统包括至少一个控制器11、至少一个固态硬盘44和至少一个机械硬盘45。
控制器11通过存储区域网络(英文:storage area network,SAN)与主机(图中未示出)连接。控制器11可以是一种计算设备,如服务器、台式计算机等等。在控制器11上安装有写入系统以及应用程序。控制器11可以接收来自主机的输入输出(I/O)请求。控制器11还可以存储I/O请求中携带的数据,并且将该数据写入固态硬盘44中。控制器11属于系统控制器,系统控制器是独立的设备,不同于固态硬盘44中的控制芯片。本实施例将固态硬盘44的控制芯片称为固态硬盘控制器。如无特别指明,本实施例中的控制器都是指系统控制器。
固态硬盘44(英文:Solid State Disk,SSD)是以闪存(英文:flash memory)芯片为存储介质的存储器,又名固态驱动器(Solid State Drive,SSD)。
图2是控制器11的结构示例图,如图2所示,控制器11包括接口卡110、处理器112、存储器111和接口卡113。
接口卡110,用于和主机通信,控制器11可以通过接口卡110接收主机的写数据指令。例如,写数据指令包括关键字(英文:key)和值(英文:value),所述值是指待写入所述存储系统的数据(以下简称为数据),所述关键字是所述值的标识。举一个具体的例子,所述值可以是学生的各种信息,所述关键字可以是该学生的学号,或者其他表示该学生某一方面属性的标识。
接口卡113,用于和固态硬盘44通信,控制器11可以通过接口卡113将写数据请求(包括上面描述的写数据指令中的关键字和数据,以及控制器11为所述数据分配的逻辑地址)发送给固态硬盘44存储。
处理器112,可能是一个中央处理器(英文:central processing unit,CPU)。在本发明实施例中,处理器112可以用于接收来自主机的写数据指令或者读取指令并且处理这些指令。处理器112还可以将所述写数据指令中的数据发送给固态硬盘44。此外,处理器112,还可以用于在一定条件时,执行文件的合并操作。存储器111,1包括易失性存储器,非易失性存储器或其组合。易失性存储器例如为随机访问存储器(英文:random-accessmemory,RAM)。非易失性存储器例如软盘、硬盘、固态硬盘44(solid state disk,SSD)、光盘等各种可以存储程序代码的机器可读介质。存储器111具有保电功能,保电功能是指系统发生掉电又重新上电时,存储器111中存储的数据也不会丢失。存储器111可以有一个或者多个,用于临时存储从主机接收的数据或从固态硬盘44读取的数据,例如控制器11接收主机发送的多个写数据请求时,可以将所述多个写数据请求中的数据暂时保存在存储器111中。此外,存储器111还保存有可变存储表(英文:memtable)和不可变存储表(immutablememtable)。根据LSM-Tree机制,memtable用于接收一段时间内主机发送的写数据指令。示例性的,memtable中存储的写数据指令可以如表1所示:
Key | Value | Version |
0001 | 张三 | 2017.3 |
0003 | 李四 | 2017.3 |
…… | …… | …… |
0002 | 王五 | 2017.3 |
表1
如表1所示,memtable中保存有多组数据,每组数据都包括关键字、值和版本信息。关键字和值已在上面的段落中进行了介绍,这里不再赘述。版本信息是指数据写入的时间信息,或者其他用以标识数据写入的先后顺序的信息。可以理解的是,本实施例中版本信息可以精确到月,也可以精确到日、时、分、秒。本实施例并不对版本信息的形式和精确度进行任何限定。另外,只要在这段时间内写入的数据都会保存在所述memtable中。所述版本信息是控制器11接收写数据指令时为所述写数据指令分配的。
根据LSM-Tree机制,当memtable中保存的所有数据的数据量达到预设阈值时,所述memtable将转化为immutable memtable。immutable memtable会不再接收新的数据,同时存储器111中会再创建一个新的memtable。所述新的memtable将继续接收数据。因此存储器111中可能保存有一个或多个immutable memtable,但只有一个memtable。每个immutable memtable中的数据是固化的,而memtable可以不断接收新写入的数据。immutable memtable中的数据需要按照关键字从小到大或者从大到小进行排序,如表2所示:
Key | Value | Version |
0001 | 张三 | 2017.3 |
0001 | 张三 | 2017.4 |
0002 | 王五 | 2017.3 |
0002 | 王五 | 2017.4 |
…… | …… | …… |
0003 | 李四 | 2017.3 |
在LSM-Tree机制中,每个immutable memtable中的数据被倾倒(英文:dump)在一个分类线表(Sorted String Table,SST)文件(以下简称为文件)中。可以理解的是,所述存储系统中包含多个文件,每个文件与一个immutable memtable对应,用于接收由所述immutable memtable倾倒而来的数据。本实施例中将直接由immutable memtable倾倒而来的文件(也就是未经过合并的文件)作为第一层级的文件。
本实施例中,控制器11包含文件系统,因此可以以文件的形式组织数据。具体的,控制器11组织数据的结构如图3所示。如图3所示,key-value数据保存在固态硬盘的44的擦除块(英文:block)中,该数据保存在擦除块中的实际地址为该数据的物理地址。控制器11将一个或多个擦除块映射为一个逻辑空间,举例来说,所述逻辑空间可以是逻辑单元(logical unit,LU)。控制器11和固态硬盘44都保存有该数据的逻辑地址,以及所述逻辑地址与物理地址之间的对应关系。该数据的逻辑地址是指该数据所在的逻辑单元的标识(例如,LU ID)、该数据位于该逻辑单元内的起始位置(例如,Logical block Address)和长度。另外,由于控制器11在逻辑空间的上层还具有文件系统,因此用户可以以文件的形式访问数据。控制器11还保存有所述逻辑地址与文件的标识之间的对应关系,以及所述物理地址与文件的标识之间的对应关系。
由上面的描述可知,每个immutable memtable中包含不同关键字的数据,那么,相应地,与immutable memtable对应的文件中保存的也是不同关键字的数据。也就是说,同样的关键字所对应的数据会分布在不同的文件中。因此,当接收读取指令要求读取数据时,固态硬盘44需要根据读取指令携带的关键字从不同的文件中获取所述关键字对应的各个数据,并根据版本信息确认出最新的数据返回给用户。这样的过程会影响读取数据的效率,因此有必要对文件进行合并。合并的目的是对不同文件中,关键字相同的数据进行合并,合并后同一个关键字只对应一个数据或少量的几个数据(根据系统设置或者用户需求设定)。
具体的,当第一层级的文件的总量达到一定阈值时,需要将第一层级中的文件进行合并。其合并方式可以是,对于第一层级中的所有文件进行合并,也可以是第一层级中的部分文件进行合并,还可以是由用户指定第一层级中待合并的文件。合并后生成的新的文件,就是第二层级的文件。依此类推,当第二层级的文件的总量达到一定阈值时,可以对其进行再次规定,建立第三层级的文件。对文件进行合并可以减少重复的数据或者无效的数据,提高读数据的效率。例如,在一个时间段内file1中写入了键范围为[1-10]的数据,file4更新了键范围为[5-20]的数据,file7又删除了[10-20]的部分数据。
另外,在SST文件中,每个数据的存储格式为键值(Key-Value,KV),通过键值中的关键字标识文件中的每个数据,每个文件保存的所有关键字是有序排列的,通过起始关键字与终止关键字的组合标识每个文件的键范围。
一般来说,第一层级的文件中的数据被读取的可能性更大,因为这些数据是新接收的数据,而其他层级的文件中的数据属于旧数据,被读取的可能性相对较小。因此,在本实施例中,将第一层级的文件部署在固态硬盘44中,将除第一层级以外的其他层级的文件部署在机械硬盘45中。由于固态硬盘读写数据的效率高于机械硬盘,因此采用这样的文件部署,可以进一步提高读数据的效率。
另外,图1所示的存储系统还可以包含储存级存储器(storageclass memory,SCM)46,用于保存日志文件,控制器11在接收写数据指令之后,首先将写数据指令携带的信息写入所述日志文件,再将所述写数据指令写入memtable。上面介绍了将immutable memtable中的数据倾倒在固态硬盘44中,生成一个SST文件。另外,本实施例还提供了另一种数据存储的方式,即,直接根据所述日志文件中的记录生成SST文件。具体的,控制器11在接收主机发送的多个写数据指令之后,采用追加写的方式将每个写数据指令写入所述日志文件。因此,所述日志文件中保存有多个写数据指令,其中每个写数据指令都携带有关键字。所述日志文件按照每个写数据指令的关键字进行排序。另外,所述日志文件中还包括控制信息,例如操作类型、全局序列号等信息。这些信息用于日志文件回放后生成数据以及数据的关键字,以及保证回放时的顺序和操作的可靠性。操作类型用于指示写数据指令或者删除指令等操作。全局序列号可以是日志序列号(log sequence number,LSN)。
另外,存储系统中还保存有一个或多个管理文件(图3中未示出),用于记录各个文件所在的层级,单个文件最大的关键字以及最小的关键字,每个文件的标识,每个文件所包含的关键字的区间以及其他元数据信息。其他元数据信息包括但不限于:数据在固态硬盘44中的实际地址,逻辑地址和对数据进行写入的写入记录,以及实际地址与所属文件的标识的对应关系等,数据的逻辑地址可以是数据所属的文件的标识,也可以是数据所属的文件的标识和数据在文件中的偏移位置的组合,也可以是数据所属的文件的标识,数据在文件中的偏移位置和数据的长度的组合。写入记录包括对用户对数据进行写入的方式和时间,通过版本信息对数据进行写入的时间。所述管理文件可以保存在固态硬盘44中,也可以保存在机械硬盘45中,还可以保存在储存级存储器46中。
下面结合图1所示的存储系统,以及图2所示的控制器11的结构,对本发明实施例公开的文件合并方法进行具体的描述。请参见图4,图4为本发明实施例提供的一种文件合并方法的流程图。如图4所示,所述数据的存储方法由控制器11中的处理器112执行,具体包括如下步骤。
S301,控制器11读取固态硬盘44中的第一文件和第二文件。
一种情况下,第一文件中的数据和第二文件中的数据均来自控制器11的存储器111。具体的,第一文件是由存储器111中的一个immutable memtable倾倒而来的,第二文件是由存储器111中的另一个immutable memtable倾倒而来的。由于immutable memtable中的数据是按照关键字从小到大或者从大到小的顺序进行排序的,因此第一文件和第二文件中的数据也是按照关键字排序的。这是为了提高读数据的效率。
另一种情况下,第一文件中的数据和第二文件中的数据均是由日志文件回放而来的。由于日志文件中保存有多个写数据指令,以及操作类型、全局序列号等信息。因此,可以由日志文件回放生成第一文件的数据和第二文件的数据。其中,每个文件的尺寸是预先设置的,可以和一个immutable memtable的尺寸相同,也可以和一个immutable memtable的尺寸不同。在这种情况下,日志文件通常保存在储存级存储器中,以利用更加快速地从所述日志文件获取数据。
无论第一文件的数据和第二文件的数据是来自存储器111还是来自日志文件,当所述第一文件的数据和所述第二文件的数据在固态硬盘44中进行持久化存储之后,可以将日志文件中对应的内容删掉,以节省日志文件所占用的存储空间。
以控制器11读取第一文件为例,控制器11根据第一文件的标识在文件的标识与文件所包含的数据的逻辑地址的对应关系中查询,获取第一文件所包含的数据(例如,第一数据)的逻辑地址;控制器11将所述逻辑地址发送给固态硬盘44,固态硬盘44根据所述逻辑地址和物理地址的对应关系,从所述逻辑地址对应的物理地址中获取数据并发送给控制器11。同理,控制器11也按照这样的方式读取第二文件。
为了方便描述,本实施例中第一文件包含第一数据以及第一数据的关键字,第二文件包含第二数据以及第二数据的关键字。
S302,控制器11判断所述第一数据的关键字与所述第二数据的关键字是否相同。
数据的关键字是用来标识所述数据的,判断第一数据的关键字与所述第二数据的关键字是否相同是为了确定是否需要对第一文件和第二文件进行合并。
S303,当所述第一数据的关键字与所述第二数据的关键字相同时,控制器11在所述机械硬盘45上创建第三文件。
如果第一数据的关键字与所述第二数据的关键字相同,则说明第一文件和第二文件需要合并,合并后的文件为第三文件。由于合并后的文件中的数据属于旧数据,被读取的可能性比第一文件、第二文件的可能性小,因此从节省成本的角度考虑,控制器11将合并后的数据写入机械硬盘45。具体的,控制器11创建第三文件,为所述第三文件分配标识,并且为所述第三文件分配一段逻辑地址区间,所述逻辑地址区间与机械硬盘45的一段物理地址区间对应。控制器11保存所述第三文件的标识与所述逻辑地址区间的对应关系,以及所述逻辑地址区间与所述物理地址区间之间的对应关系。
S304,所述控制器11合并所述第一数据和所述第二数据,并且将所述合并后的数据写入所述第三文件。
具体的,控制器11将所述合并后的数据写入所述分配的逻辑地址区间所对应的物理地址中。
如果第一数据的关键字与第二数据的关键字不相同,则不需要对所述第一文件与所述第二文件进行合并。那么控制器11在机械硬盘45上创建第三文件,分别将第一文件所包含的数据和第二文件所包含的数据写入第三文件。其具体的写入第三文件的过程与将合并后的数据写入所述第三文件的过程相同,这里不再赘述。
本发明实施例提供的文件合并方法,将合并前的文件存储在固态硬盘中,将合并后的文件存储在机械硬盘中。由于合并前的文件中的数据属于新数据,被读取的可能性较大,将其存储在固态硬盘中可以提高读数据的效率。而合并后的文件中的数据属于旧数据,被读取的可能性较小,将其存储在机械硬盘中,可以降低成本。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。
Claims (13)
1.一种文件合并方法,其特征在于,所述方法应用于存储系统中,所述存储系统包括控制器、固态硬盘和机械硬盘,所述方法包括:
所述控制器读取所述固态硬盘中的第一文件和第二文件,其中,所述第一文件中保存有第一数据以及所述第一数据的关键字,所述第二文件中保存有第二数据以及所述第二数据的关键字;
判断所述第一数据的关键字与所述第二数据的关键字是否相同;当所述第一数据的关键字与所述第二数据的关键字相同时,所述控制器在所述机械硬盘上创建第三文件;所述控制器合并所述第一数据和所述第二数据,并将所述合并后的数据写入所述第三文件;
其中,
所述存储系统还包括储存级存储器,所述储存级存储器中还保存有日志文件,所述方法还包括:
所述控制器回放所述日志文件,得到被写入到所述日志文件中的所述第一数据以及所述第一数据的关键字以及所述第二数据以及所述第二数据的关键字;
所述控制器在所述固态硬盘中创建所述第一文件,将所述第一数据以及所述第一数据的关键字写入所述第一文件;所述控制器在所述固态硬盘中创建所述第二文件,将所述第二数据以及所述第二数据的关键字写入所述第二文件。
2.根据权利要求1所述的方法,其特征在于,所述控制器的缓存中保存有至少两个不可变跳表和一个可变跳表,所述第一数据来自于所述至少两个不可变跳表中一个不可变跳表中的数据,所述第二数据来自于所述至少两个不可变跳表中另一个不可变跳表中的数据,所述可变跳表用于接收主机发送的数据。
3.根据权利要求1所述的方法,其特征在于,还包括:所述控制器监控所述固态硬盘中的文件的数量是否达到预设阈值,当所述固态硬盘中的文件的数量已达到所述预设阈值时,所述控制器读取所述固态硬盘中的所述第一文件和所述第二文件。
4.根据权利要求1所述的方法,其特征在于,所述回放所述日志文件之前还包括:
所述控制器接收主机发送的第一写数据指令,将所述第一写数据指令写入所述日志文件中,所述第一写数据指令包括所述第一数据以及所述第一数据的关键字;
所述控制器接收主机发送的第二写数据指令,将所述第二写数据指令写入所述日志文件中,所述第二写数据指令包括所述第二数据以及所述第二数据的关键字。
5.根据权利要求4所述的方法,其特征在于,所述将所述第一写数据指令写入所述日志文件中包括采用追加写的方式将所述第一写数据指令写入所述日志文件。
6.根据权利要求4或5所述的方法,其特征在于,所述日志文件还包括其他写数据指令,所述方法还包括:所述控制器对所述日志文件中的所有写数据指令按照每个写数据指令中携带的关键字进行排序。
7.一种控制器,其特征在于,所述控制器位于存储系统中,所述存储系统包括所述控制器、固态硬盘和机械硬盘,所述控制器包括:
通信接口,用于与所述固态硬盘通信,以及用于与所述机械硬盘通信;
处理器,用于所述固态硬盘中的第一文件和第二文件,其中,所述第一文件中保存有第一数据以及所述第一数据的关键字,所述第二文件中保存有第二数据以及所述第二数据的关键字;判断所述第一数据的关键字与所述第二数据的关键字是否相同;当所述第一数据的关键字与所述第二数据的关键字相同时,在所述机械硬盘上创建第三文件;合并所述第一数据和所述第二数据,并将所述合并后的数据写入所述第三文件;
所述存储系统还包括储存级存储器,所述储存级存储器中还保存有日志文件,
其中,所述处理器还用于回放所述日志文件,得到被写入到所述日志文件中的所述第一数据以及所述第一数据的关键字以及所述第二数据以及所述第二数据的关键字;在所述固态硬盘中创建所述第一文件,将所述第一数据以及所述第一数据的关键字写入所述第一文件;在所述固态硬盘中创建所述第二文件,将所述第二数据以及所述第二数据的关键字写入所述第二文件。
8.根据权利要求7所述的控制器,其特征在于,所述控制器还包括缓存,所述缓存中保存有至少两个不可变跳表和一个可变跳表,所述第一数据来自于所述至少两个不可变跳表中一个不可变跳表中的数据,所述第二数据来自于所述至少两个不可变跳表中另一个不可变跳表中的数据,所述可变跳表用于接收主机发送的数据。
9.根据权利要求7所述的控制器,其特征在于,所述处理器还用于监控所述固态硬盘中的文件的数量是否达到预设阈值,当所述固态硬盘中的文件的数量已达到所述预设阈值时,所述控制器读取所述固态硬盘中的所述第一文件和所述第二文件。
10.根据权利要求7所述的控制器,其特征在于,所述处理器,还用于回放所述日志文件之前,接收主机发送的第一写数据指令,将所述第一写数据指令写入所述日志文件中,所述第一写数据指令包括所述第一数据以及所述第一数据的关键字;
接收主机发送的第二写数据指令,将所述第二写数据指令写入所述日志文件中,所述第二写数据指令包括所述第二数据以及所述第二数据的关键字。
11.根据权利要求10所述的控制器,其特征在于,所述将所述第一写数据指令写入所述日志文件中包括采用追加写的方式将所述第一写数据指令写入所述日志文件。
12.根据权利要求10或11所述的控制器,其特征在于,所述日志文件还包括其他写数据指令,所述处理器还用于,对所述日志文件中的所有写数据指令按照每个写数据指令中携带的关键字进行排序。
13.一种计算机可读取存储介质,其特征在于,
所述计算机可读取存储介质存储有计算机程序,所述计算机程序被处理器执行时能够实现权利要求1至6任意一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710175180.0A CN108628542B (zh) | 2017-03-22 | 2017-03-22 | 一种文件合并方法及控制器 |
PCT/CN2018/071929 WO2018171296A1 (zh) | 2017-03-22 | 2018-01-09 | 一种文件合并方法及控制器 |
US16/579,349 US11403021B2 (en) | 2017-03-22 | 2019-09-23 | File merging method and controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710175180.0A CN108628542B (zh) | 2017-03-22 | 2017-03-22 | 一种文件合并方法及控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108628542A CN108628542A (zh) | 2018-10-09 |
CN108628542B true CN108628542B (zh) | 2021-08-03 |
Family
ID=63586223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710175180.0A Active CN108628542B (zh) | 2017-03-22 | 2017-03-22 | 一种文件合并方法及控制器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11403021B2 (zh) |
CN (1) | CN108628542B (zh) |
WO (1) | WO2018171296A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115521B (zh) * | 2019-06-19 | 2023-02-07 | 华为技术有限公司 | 数据访问方法及装置 |
CN111352908B (zh) * | 2020-02-28 | 2023-10-10 | 北京奇艺世纪科技有限公司 | 基于lsm的数据存储方法、装置、存储介质及计算机设备 |
CN113495871B (zh) * | 2020-04-04 | 2023-06-23 | 厦门网宿有限公司 | 一种基于LSM-Tree存储引擎的文件管理方法和装置 |
CN112667644B (zh) * | 2021-01-20 | 2023-02-21 | 浪潮云信息技术股份公司 | 一种混合索引内存数据库存储引擎管理方法 |
CN113010107B (zh) * | 2021-02-26 | 2023-08-29 | 深圳忆联信息系统有限公司 | 数据存储管理方法、装置、计算机设备及存储介质 |
KR102512571B1 (ko) * | 2021-12-06 | 2023-03-22 | 성균관대학교산학협력단 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN114691039A (zh) * | 2022-03-22 | 2022-07-01 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN116820326A (zh) * | 2023-03-30 | 2023-09-29 | 北京火山引擎科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186350A (zh) * | 2011-12-31 | 2013-07-03 | 北京快网科技有限公司 | 混合存储系统及热点数据块的迁移方法 |
CN103593436A (zh) * | 2013-11-12 | 2014-02-19 | 华为技术有限公司 | 文件合并方法和装置 |
CN103744628A (zh) * | 2014-01-27 | 2014-04-23 | 北京奇虎科技有限公司 | SSTable文件存储方法及装置 |
CN103812877A (zh) * | 2014-03-12 | 2014-05-21 | 西安电子科技大学 | 基于Bigtable分布式存储系统的数据压缩方法 |
CN105447059A (zh) * | 2014-09-29 | 2016-03-30 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN106156070A (zh) * | 2015-03-31 | 2016-11-23 | 华为技术有限公司 | 一种查询方法、文件合并方法与相关装置 |
WO2017020576A1 (zh) * | 2015-07-31 | 2017-02-09 | 华为技术有限公司 | 一种键值存储系统中文件压实的方法和装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6912549B2 (en) * | 2001-09-05 | 2005-06-28 | Siemens Medical Solutions Health Services Corporation | System for processing and consolidating records |
US20080177994A1 (en) * | 2003-01-12 | 2008-07-24 | Yaron Mayer | System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows |
US20070128899A1 (en) * | 2003-01-12 | 2007-06-07 | Yaron Mayer | System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows |
US7873607B1 (en) * | 2005-07-07 | 2011-01-18 | Knutson Stanley G | Model driven consolidator of database information |
US8776038B2 (en) * | 2008-08-07 | 2014-07-08 | Code Systems Corporation | Method and system for configuration of virtualized software applications |
US8370835B2 (en) * | 2009-03-12 | 2013-02-05 | Arend Erich Dittmer | Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device |
US8983983B2 (en) * | 2010-02-04 | 2015-03-17 | Network State, LLC | State operating system |
US8806160B2 (en) * | 2011-08-16 | 2014-08-12 | Pure Storage, Inc. | Mapping in a storage system |
CN103678405B (zh) * | 2012-09-21 | 2016-12-21 | 阿里巴巴集团控股有限公司 | 邮件索引建立方法及系统、邮件搜索方法及系统 |
CN103838681B (zh) * | 2012-11-27 | 2017-10-27 | 北京联想核芯科技有限公司 | 存储装置和数据文件存取方法 |
US9658924B2 (en) * | 2014-12-12 | 2017-05-23 | Schneider Electric Software, Llc | Event data merge system in an event historian |
US9324367B1 (en) * | 2015-05-05 | 2016-04-26 | Futurewei Technologies, Inc. | SMR-aware append-only file system |
CN104809237B (zh) * | 2015-05-12 | 2018-12-14 | 百度在线网络技术(北京)有限公司 | LSM-tree索引的优化方法和装置 |
US20160350302A1 (en) * | 2015-05-27 | 2016-12-01 | Hedvig, Inc. | Dynamically splitting a range of a node in a distributed hash table |
US20170193041A1 (en) * | 2016-01-05 | 2017-07-06 | Sqrrl Data, Inc. | Document-partitioned secondary indexes in a sorted, distributed key/value data store |
-
2017
- 2017-03-22 CN CN201710175180.0A patent/CN108628542B/zh active Active
-
2018
- 2018-01-09 WO PCT/CN2018/071929 patent/WO2018171296A1/zh active Application Filing
-
2019
- 2019-09-23 US US16/579,349 patent/US11403021B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186350A (zh) * | 2011-12-31 | 2013-07-03 | 北京快网科技有限公司 | 混合存储系统及热点数据块的迁移方法 |
CN103593436A (zh) * | 2013-11-12 | 2014-02-19 | 华为技术有限公司 | 文件合并方法和装置 |
CN103744628A (zh) * | 2014-01-27 | 2014-04-23 | 北京奇虎科技有限公司 | SSTable文件存储方法及装置 |
CN103812877A (zh) * | 2014-03-12 | 2014-05-21 | 西安电子科技大学 | 基于Bigtable分布式存储系统的数据压缩方法 |
CN105447059A (zh) * | 2014-09-29 | 2016-03-30 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN106156070A (zh) * | 2015-03-31 | 2016-11-23 | 华为技术有限公司 | 一种查询方法、文件合并方法与相关装置 |
WO2017020576A1 (zh) * | 2015-07-31 | 2017-02-09 | 华为技术有限公司 | 一种键值存储系统中文件压实的方法和装置 |
Non-Patent Citations (1)
Title |
---|
"SSDKV:一种SSD友好的键值对存储系统";梅飞;《计算机工程与科学》;20160731;第38卷(第7期);第1329-1308页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2018171296A1 (zh) | 2018-09-27 |
US20200019331A1 (en) | 2020-01-16 |
US11403021B2 (en) | 2022-08-02 |
CN108628542A (zh) | 2018-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108628542B (zh) | 一种文件合并方法及控制器 | |
US11640353B2 (en) | Memory system, data storage device, user device and data management method thereof | |
CN108733306B (zh) | 一种文件合并方法及装置 | |
US9256542B1 (en) | Adaptive intelligent storage controller and associated methods | |
US9069673B2 (en) | Memory system configured to perform segment cleaning and related method of operation | |
CN108268219B (zh) | 一种处理io请求的方法及装置 | |
US10423339B2 (en) | Logical block address mapping for hard disk drives | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
US9772790B2 (en) | Controller, flash memory apparatus, method for identifying data block stability, and method for storing data in flash memory apparatus | |
JP2011209973A (ja) | ディスクアレイ構成プログラム、計算機、計算機システム | |
US20100332717A1 (en) | Access device, information recording device, controller, and information recording system | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN107329692A (zh) | 一种数据重删的方法及存储设备 | |
US11269771B2 (en) | Storage device for improving journal replay, operating method thereof, and electronic device including the storage device | |
CN108021562B (zh) | 应用于分布式文件系统的存盘方法、装置及分布式文件系统 | |
US11366609B2 (en) | Technique for encoding deferred reference count increments and decrements | |
CN116414304B (zh) | 基于日志结构化合并树的数据存储装置和存储控制方法 | |
KR101247388B1 (ko) | 하이브리드-매핑 ftl에서 trim 명령어를 처리하기 위한 방법 및 장치 | |
EP2381354A2 (en) | Data recording device | |
CN111949212A (zh) | 基于自定义开放通道ssd的文件系统及文件管理方法 | |
CN110609817A (zh) | 一种防止文件碎片化的文件存储系统 | |
CN113703671B (zh) | 一种数据块擦除方法及相关装置 | |
US11237738B2 (en) | Managing operation of a data storage system with reservation of metadata space | |
JP2008134777A (ja) | ファイル割当テーブルのキャッシュ方法 | |
WO2024060944A1 (zh) | 键值存储方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |