CN104461384A - 一种数据写入方法及存储设备 - Google Patents

一种数据写入方法及存储设备 Download PDF

Info

Publication number
CN104461384A
CN104461384A CN201410712344.5A CN201410712344A CN104461384A CN 104461384 A CN104461384 A CN 104461384A CN 201410712344 A CN201410712344 A CN 201410712344A CN 104461384 A CN104461384 A CN 104461384A
Authority
CN
China
Prior art keywords
data
data blocks
index
data block
block
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.)
Granted
Application number
CN201410712344.5A
Other languages
English (en)
Other versions
CN104461384B (zh
Inventor
叶茂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410712344.5A priority Critical patent/CN104461384B/zh
Publication of CN104461384A publication Critical patent/CN104461384A/zh
Priority to PCT/CN2015/083885 priority patent/WO2016082559A1/zh
Application granted granted Critical
Publication of CN104461384B publication Critical patent/CN104461384B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种数据写入方法及存储设备,所述方法应用于存储设备中,所述存储设备包括处理器、内存和存储介质,所述存储介质中的数据块以树结构组织,所述树的叶子节点用于保存数据块,所述树的父节点和根节点用于保存索引数据,所述索引数据用于索引所述数据块,所述方法由所述处理器执行,包括:接收多个数据块,写入所述内存;在所述内存中修改所述多个数据块;从所述修改后的多个数据块中确定至少两个数据块,所述至少两个数据块的索引数据相同;为所述至少两个数据块分配在所述存储介质中的存储地址,根据所述分配的存储地址,将所述至少两个数据块写入所述存储介质;修改指向所述至少两个数据块的索引数据。

Description

一种数据写入方法及存储设备
技术领域
本发明涉及电子技术领域,尤其涉及一种数据写入方法及存储设备。
背景技术
SSD(英文:Solid State Drive;中文:固态硬盘)相比于传统的机械硬盘,具有读写速度快、防震、体积小,零噪音等优点,被人们广泛使用。一般SSD的写入次数有限。
现有技术中,修改SSD上的数据块采用ROW(英文:Redirection On Write;中文:写时重定向)技术。现有基于ROW技术在SSD上构建文件系统一般会把整个文件系统组织成一棵树状结构。树状结构中的叶子节点用于保存数据块,父节点及根为索引数据,索引数据用于索引数据块。
当修改SSD上的数据块时,首先在内存中修改,然后为修改后的数据块在SSD上分配存储地址,为了能够索引到修改后的数据块,需要对修改后的数据块的索引数据进行更新。更新完毕后,文件系统会产生一个新的树根,以替换掉旧的树根。
现有技术中,每次修改数据块,都会导致索引数据被改写。当修改的数据量大时,会导致大量索引数据被改写,对于SSD来说会造成很大的写开销,导致SSD性能及寿命下降。并且现有技术中必须等文件系统产生新的树根后才能将修改后的数据块从内存中删除,内存利用率低。
因此,现有技术存在的技术问题是:每次修改数据块都会相应地修改它的索引数据,对SSD造成较大的写开销,导致SSD性能及寿命下降。
发明内容
本发明实施例提供一种数据写入方法及存储设备,用于解决现有技术中存在的每次修改数据块都会相应地修改它的索引数据,对SSD造成较大的写开销,导致SSD性能及寿命下降的技术问题,实现了减小修改数据块对SSD造成的写开销,提高SSD性能,延长SSD的寿命的技术效果。
本发明实施例第一方面提供了一种数据写入方法,所述方法应用于存储设备中,所述存储设备包括处理器、内存和存储介质,所述存储介质中的数据块以树结构组织,所述树的叶子节点用于保存数据块,所述树的父节点和根节点用于保存索引数据,所述索引数据用于索引所述数据块,所述方法由所述处理器执行,包括:
接收多个数据块,写入所述内存;
在所述内存中修改所述多个数据块;
从所述修改后的多个数据块中确定至少两个数据块,所述至少两个数据块的索引数据相同;
为所述至少两个数据块分配在所述存储介质中的存储地址,根据所述分配的存储地址,将所述至少两个数据块写入所述存储介质;
修改指向所述至少两个数据块的索引数据。
结合第一方面,在第一种可能的实现方式中,在所述修改指向所述至少两个数据块的索引数据之前,所述方法还包括:
将所述至少两个数据块从所述内存中删除。
结合第一方面,在第二种可能的实现方式中,所述修改指向所述至少两个数据块的索引数据,具体包括:
为所述至少两个数据块创建记录表,记录所述至少两个数据块在所述存储介质中的存储地址;
根据所述记录表,在所述内存中修改指向所述至少两个数据块的索引数据,修改后的所述至少两个数据块的索引数据指向所述至少两个数据块的存储地址;
将所述修改后的所述至少两个数据块的索引数据写入所述存储介质。
本发明实施例第二方面提供了一种存储设备,所述存储设备包括处理器、内存和存储介质,所述存储介质中的数据块以树结构组织,所述树的叶子节点用于保存数据块,所述树的父节点和根节点用于保存索引数据,所述索引数据用于索引所述数据块,所述处理器用于:
接收多个数据块,写入所述内存;
在所述内存中修改所述多个数据块;
从所述修改后的多个数据块中确定至少两个数据块,所述至少两个数据块的索引数据相同;
为所述至少两个数据块分配在所述存储介质中的存储地址,根据所述分配的存储地址,将所述至少两个数据块写入所述存储介质;
修改指向所述至少两个数据块的索引数据。
结合第二方面,在第一种可能的实现方式中,所述处理器还用于:
在所述修改指向所述至少两个数据块的索引数据之前,将所述至少两个数据块从所述内存中删除。
结合第二方面,在第二种可能的实现方式中,处理器具体用于:
为所述至少两个数据块创建记录表,记录所述至少两个数据块在所述存储介质中的存储地址;
根据所述记录表,在所述内存中修改指向所述至少两个数据块的索引数据,修改后的索引数据指向所述至少两个数据块的存储地址;
将所述修改后的所述至少两个数据块的索引数据写入所述存储介质。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本发明实施例中,首先在内存中修改多个数据块,然后从修改后的多个数据块中确定索引数据相同的至少两个数据块,接着将至少两个数据块写入到存储介质,最后修改指向至少两个数据块的索引数据。
相比现有技术中每次将修改后的数据块从内存写入存储介质后,都要对修改后的数据块的索引数据进行更新的技术方案,本发明实施例中从修改后的数据块中确定索引数据相同的至少两个数据块,将索引数据相同的至少两个数据块从内存写入存储介质后,对至少两个数据块共同的索引数据进行批量更新,所以减小了对索引数据进行更新的次数,实现了减小修改数据块对存储设备造成的写开销。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对本发明或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的信息处理方法适用的文件系统的示意图;
图2为本发明实施例提供的信息处理方法的流程图;
图3为本发明实施例中更新索引数据的流程图;
图4为本发明实施例提供的存储设备的硬件结构示意图。
具体实施方式
本发明实施例提供一种数据写入方法及存储设备,用于解决现有技术中存在的每次修改数据块都会相应地修改它的索引数据,对SSD造成较大的写开销,导致SSD性能及寿命下降的技术问题,实现了减小修改数据块对SSD造成的写开销,提高SSD性能,延长SSD的寿命的技术效果。
本发明实施例中,首先在内存中修改多个数据块,然后从修改后的多个数据块中确定索引数据相同的至少两个数据块,接着将至少两个数据块写入到存储介质,最后修改指向至少两个数据块的索引数据。
相比现有技术中每次将修改后的数据块从内存写入存储介质后,都要对修改后的数据块的索引数据进行更新的技术方案,本发明实施例中从修改后的数据块中确定索引数据相同的至少两个数据块,将索引数据相同的至少两个数据块从内存写入存储介质后,对至少两个数据块共同的索引数据进行批量更新,所以减小了对索引数据进行更新的次数,实现了减小修改数据块对存储设备造成的写开销。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图对本发明的实施方式进行详细说明。
本发明实施例提供一种数据写入方法,应用于存储设备中。请参考图4,图4为存储设备40的硬件结构示意图。存储设备40可以是SSD(英文:Solid StateDrive;中文:固态硬盘)包括:处理器41、内存42和存储介质43,存储介质43可以为Flash颗粒或其他类型的硬盘。在存储介质43中可以存储数据。具体地,存储介质43中的数据块以树结构组织。请参考图1,图1为存储介质43中的树结构的示意图。树的叶子节点用于保存数据块,树的父节点和根节点用于保存索引数据,索引数据用于索引数据块。图1中,树根用于保存索引数据A,父节点用于保存索引数据B和索引数据C,叶子节点用于保存数据块D、数据块E、数据块F、数据块H。
如图4所示,在实际应用过程中,存储设备40可以作为一个独立的电子设备,与服务器400相连,存储设备40还可以作为服务器400的一个元件,服务器400向存储设备40发送写入数据的请求,存储设备40接收到写入数据的请求后,响应写入数据的请求,存储设备40的处理器41执行本发明实施例提供的写入方法。
请参考图2,图2为本发明实施例提供的数据写入方法的流程图。本发明实施例提供的数据写入方法,所述方法可以应用在图4所述的存储设备40中,由处理器41执行,包括以下步骤:
步骤21:接收多个数据块,写入所述内存;
步骤22:在所述内存中修改所述多个数据块;
步骤23:从所述修改后的多个数据块中确定至少两个数据块,所述至少两个数据块的索引数据相同;
步骤24:为所述至少两个数据块分配在所述存储介质中的存储地址,根据所述分配的存储地址,将所述至少两个数据块写入所述存储介质;
步骤25:修改指向所述至少两个数据块的索引数据。
当服务器400想要向存储设备40中写入数据时,会向存储设备40发送写入数据的请求,存储设备40接收到写入数据的请求后,存储设备的处理器41响应写入数据的请求,接收服务器发送的多个数据块,然后写入内存。如图1所示,处理器41接收数据块D、数据块E、数据块F、数据块H,写入内存42中,分别保存在树的叶子节点中。
当服务器400想要修改存储设备40中的数据块时,会向存储设备40发送修改数据的请求,存储设备40接收到修改数据的请求后,存储设备的处理器41响应修改数据的请求,首先在内存中修改数据块,产生脏数据块,其中脏数据块即为在内存中修改后的,且未写入存储介质中的数据块。
以对图1中的数据块D修改为例。在内存中由树根保存的索引数据A,经父节点保存的索引数据B索引到数据块D,然后将数据块D修改为数据块S,将数据块S存储在内存中,由于数据块S仅在内存中修改,还未将数据块S写入存储介质中,所以数据块S为脏数据块,脏数据块S的索引数据为:索引数据B。按照相同的修改方法,可以对数据块E进行修改,产生脏数据块H,脏数据块H的索引数据为:索引数据B。
本发明实施例为了避免每次在将脏数据块从内存中写入到存储介质中后,都立即更新脏数据块的索引数据,提出了一种批量更新索引数据的方法,在为脏数据块创建脏数据块记录之后,可以执行步骤23,从修改后的多个数据块中确定至少两个数据块,至少两个数据块的索引数据相同。
继续沿用上述例子,脏数据块S的索引数据为:索引数据B,脏数据块H的索引数据为:索引数据B,则可以确定脏数据块S和脏数据块H为两个索引数据相同的数据块。
接着可以执行步骤24,将索引数据相同的至少两个脏数据块从内存中写入到存储介质中。
为了将脏数据块从内存写入存储介质中,首先要为脏数据块分配在存储介质中的存储地址,存储介质中存储地址与物理块号相对应,通常用物理块号表征存储地址。只要一个脏数据块产生,即可为产生的脏数据块分配物理块号。
继续沿用上述例子,内存中有脏数据块S和脏数据块H,则为脏数据块S分配的物理块号为01,为脏数据块H分配的物理块号为02,物理块号01及物理块号02分别表征存储介质的存储地址为a和b。然后,将脏数据块S从内存中写入到物理块号01表征的存储地址a,将脏数据块H从内存中写入到物理块号02表征的存储地址b。
在将索引数据相同的至少两个脏数据块从内存中写入到存储介质中之后,就可以执行步骤25:修改指向索引数据相同的至少两个脏数据块的索引数据。
请参考图3,图3为本发明实施例中更新索引数据的流程图。更新索引数据具体包括以下步骤:
步骤31:为所述至少两个数据块创建记录表,记录所述至少两个数据块在所述存储介质中的存储地址;
步骤32:根据所述记录表,在所述内存中修改指向所述至少两个数据块的索引数据,修改后的索引数据指向所述至少两个数据块的存储地址;
步骤33:将所述修改后的所述至少两个数据块的索引数据写入所述存储介质。
首先对步骤31进行解释说明。继续沿用上述例子,在为脏数据块分配物理块号后,本发明实施例中,为了直接将脏数据块从内存中写入到存储介质中后,能够索引到脏数据块,需要在内存中存储脏数据块的索引数据及物理块号的对应关系。也就是为脏数据块创建脏数据块记录,具体的,可以在非易失性内存中为脏数据块创建脏数据块记录。
由于脏数据块记录的作用是索引脏数据块,所以为了避免断电后脏数据块记录丢失,导致无法索引到脏数据块,可以在非易失性内存中存储脏数据块记录,保证脏数据块记录的存储安全性。
继续沿用上述例子,在为脏数据块S分配物理块号01之后,为脏数据块S创建脏数据块记录,记录脏数据块S的索引数据为:索引数据B,对应的物理块号为01。同样的,在为脏数据块H分配物理块号02之后,为脏数据块H创建脏数据块记录,记录脏数据块H的索引数据为:索引数据B,对应的物理块号为02。
本发明实施例中,在非易失性内存中为脏数据块创建脏数据块记录的同时,还可以在内存中建立映射表,映射表用于记录脏数据块的逻辑块号与物理块号的映射关系,逻辑块号可以根据索引数据获得的。
由于脏数据块记录是在非易失性内存中顺序存储的,所以如果要索引到一个脏数据块,就必须在脏数据块记录形成的记录表中顺序查找,查找耗时。为了方便快速查找到脏数据块,可以根据脏数据块的索引数据获得脏数据块的逻辑块号,然后建立逻辑块号到物理块号的映射。索引一个脏数据块时,根据映射关系能够迅速确定脏数据块的物理块号,方便快捷。
继续沿用上述例子,脏数据块S的索引数据为:索引数据B,脏数据块H的索引数据为:索引数据B,原本索引数据B能够索引到数据块D和数据块E,数据块D的逻辑块号为111,数据块E的逻辑块号为222,所以可以确定脏数据块S的逻辑块号为111,脏数据块H的逻辑块号为222,即原数据块与修改后得到的脏数据块的逻辑块号相同。
然后建立映射表,表中逻辑块号111映射到物理块号01,逻辑块号222映射到物理块号02。索引逻辑块号为111的脏数据块时,根据映射表,能够迅速确定对应的物理块号为01。而如果根据多个脏数据块记录形成的记录表,就需要在记录表中顺序查找,如果逻辑块号为111的脏数据块的记录位于记录表的末端,则需要耗费很长时间才能索引到逻辑块号为111的脏数据块。
虽然使用映射表索引脏数据块方便快捷,但是因为映射表只存储在内存中,一旦断电,映射表就会消失。所以可以在断电之后,根据多个脏数据块记录形成的记录表,再生成映射表。通常使用映射表来索引脏数据块。
接着执行步骤32及步骤33。继续沿用上述例子,索引数据B原本记录数据块D的物理块号03和数据块E的物理块号04,由于分别对数据块D和数据块E进行修改,产生了脏数据块S和脏数据块H,所以,索引数据B要相应的改为记录脏数据块S的物理块号01和脏数据块H的物理块号02。因此,在内存中修改索引数据B,产生了脏数据块M,脏数据块M记录了脏数据块S的物理块号01和脏数据块H的物理块号02。
索引数据C原本记录数据块F的物理块号05和数据块K的物理块号06,假设在对数据块D和数据块E进行修改之后,还对数据块F和数据块K进行修改,产生了脏数据块W和脏数据块R,为脏数据块W和脏数据块R分配的物理块号为07和08,而脏数据块W和脏数据块R的索引数据为:索引数据C,两者共同的索引数据为索引数据C。所以索引数据C要相应的改为记录脏数据块W和脏数据块R的物理块号07和08。因此,在内存中修改索引数据C,产生了脏数据块N,脏数据块N记录了脏数据块W的物理块号07和脏数据块R的物理块号08。
具体更新索引数据B和索引数据C的过程为:在内存中对索引数据B和索引数据C分别进行修改,产生了脏数据块M和脏数据块W。然后为脏数据块M和脏数据块W分别分配在存储介质中的物理块号为09和10,将脏数据块M和脏数据块W分别从内存中写入到物理块号为09和10所代表的存储地址中。
最后更新索引数据A。由于脏数据块M的索引数据为:索引数据A,脏数据块W的索引数据为:索引数据A。所以两者共同对应的索引数据为索引数据A。索引数据A原本记录索引数据B的物理块号11和索引数据C的物理块号12,由于在内存中对索引数据B和索引数据C分别进行修改,产生了脏数据块M和脏数据块W。所以,索引数据A要相应的改为记录脏数据块M的物理块号09和脏数据块W的物理块号10。在内存中对索引数据A进行修改,产生了脏数据块T。然后为脏数据块T分配在存储介质中的物理块号为13,将脏数据块T从内存中写入到物理块号为13所代表的存储地址中。
本发明实施例中,在将修改后的索引数据从所述内存中写入所述存储介质中之后,所述方法还包括:
将非易失性内存中的脏数据块记录表及内存中的映射表删除;
将修改后的索引数据从所述内存中删除。
具体来讲,在将修改后的索引数据从内存中写入到存储介质中后,可以在存储介质中索引到修改后的索引数据,内存中的修改后的数据就没必要存储了,所以可以为了提高内存利用率,可以在将修改后的索引数据从内存中写入到存储介质中后,将修改后的索引数据从内存中删除。
另外,在将脏数据块及修改后的索引数据从内存中写入到存储介质中后,可以直接从存储介质中索引到脏数据块及修改后的索引数据,非易失性内存中的脏数据块记录表及内存中的映射表也没必要存储了,所以可以为了提高内存利用率,可以在将修改后的索引数据从内存中写入到存储介质中后,将修改后的索引数据从内存中删除。
本发明实施例中,当需要读取指定脏数据块时,所述方法还包括:
接收读取指定脏数据块的读请求;
响应所述读请求,在所述内存中查找所述指定脏数据块;
若所述内存中存在所述指定脏数据块,则从所述内存中读出所述指定脏数据块;
若所述内存中不存在所述指定脏数据块,根据所述指定脏数据块的指定逻辑块号,从所述映射表中查找到所述指定逻辑块号对应的指定物理块号;
按照所述指定物理块号从所述存储介质中读出所述指定脏数据块。
具体来讲,当读取指定脏数据块时,可以首先从内存中查找指定脏数据块,如果指定脏数据块没有从内存中写入到存储介质中,那么从内存中可以直接查找到指定脏数据块,然后从内存中读出指定脏数据块。如果脏数据块从内存中写入到存储介质中,那么脏数据块就会从内存中删除,此时可以利用映射表,从映射表中查找到指定脏数据块的逻辑块号,进而找到对应的物理块号,从物理块号表征的存储地址中读出指定脏数据块。
基于同一发明构思,本发明实施例还提供了一种存储设备。请参考图4,图4为存储设备40的硬件结构示意图。存储设备40可以是SSD(英文:Solid StateDrive;中文:固态硬盘)包括:处理器41、内存42和存储介质43,存储介质43可以为Flash颗粒或其他类型的硬盘。存储介质43中的数据块以树结构组织,树的叶子节点用于保存数据块,树的父节点和根节点用于保存索引数据,索引数据用于索引数据块。图4所示的存储设备涉及到的术语的含义以及具体实现,可以参考前述图1至图3以及实施例的相关描述。
如图4所示,在实际应用过程中,存储设备40可以作为一个独立的电子设备,与服务器400相连,存储设备40还可以作为服务器400的一个元件,服务器400向存储设备40发送写入数据的请求,存储设备40接收到写入数据的请求后,响应写入数据的请求,存储设备40的处理器41执行本发明实施例提供的写入方法。所述处理器41用于:
接收多个数据块,写入所述内存;
在所述内存中修改所述多个数据块;
从所述修改后的多个数据块中确定至少两个数据块,所述至少两个数据块的索引数据相同;
为所述至少两个数据块分配在所述存储介质中的存储地址,根据所述分配的存储地址,将所述至少两个数据块写入所述存储介质;
修改指向所述至少两个数据块的索引数据。
可选的,所述处理器41还用于:
在所述修改指向所述至少两个数据块的索引数据之前,将所述至少两个数据块从所述内存中删除。
可选的,处理器41具体用于:
为所述至少两个数据块创建记录表,记录所述至少两个数据块在所述存储介质中的存储地址;
根据所述记录表,在所述内存中修改指向所述至少两个数据块的索引数据,修改后的索引数据指向所述至少两个数据块的存储地址;
将所述修改后的所述至少两个数据块的索引数据写入所述存储介质。
前述图1-图3实施例中的数据写入方法中的各种变化方式和具体实例同样适用于本实施例的存储设备,通过前述对数据写入方法的详细描述,本领域技术人员可以清楚的知道本实施例中存储设备的实施方法,所以为了说明书的简洁,在此不再详述。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本发明实施例中,首先在内存中修改多个数据块,然后从修改后的多个数据块中确定索引数据相同的至少两个数据块,接着将至少两个数据块写入到存储介质,最后修改指向至少两个数据块的索引数据。
相比现有技术中每次将修改后的数据块从内存写入存储介质后,都要对修改后的数据块的索引数据进行更新的技术方案,本发明实施例中从修改后的数据块中确定索引数据相同的至少两个数据块,将索引数据相同的至少两个数据块从内存写入存储介质后,对至少两个数据块共同的索引数据进行批量更新,所以减小了对索引数据进行更新的次数,实现了减小修改数据块对存储设备造成的写开销。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (6)

1.一种数据写入方法,所述方法应用于存储设备中,所述存储设备包括处理器、内存和存储介质,所述存储介质中的数据块以树结构组织,所述树的叶子节点用于保存数据块,所述树的父节点和根节点用于保存索引数据,所述索引数据用于索引所述数据块,所述方法由所述处理器执行,包括:
接收多个数据块,写入所述内存;
在所述内存中修改所述多个数据块;
从所述修改后的多个数据块中确定至少两个数据块,所述至少两个数据块的索引数据相同;
为所述至少两个数据块分配在所述存储介质中的存储地址,根据所述分配的存储地址,将所述至少两个数据块写入所述存储介质;
修改指向所述至少两个数据块的索引数据。
2.如权利要求1所述的方法,其特征在于,在所述修改指向所述至少两个数据块的索引数据之前,所述方法还包括:
将所述至少两个数据块从所述内存中删除。
3.如权利要求1所述的方法,其特征在于,所述修改指向所述至少两个数据块的索引数据,包括:
为所述至少两个数据块创建记录表,记录所述至少两个数据块在所述存储介质中的存储地址;
根据所述记录表,在所述内存中修改指向所述至少两个数据块的索引数据,修改后的所述至少两个数据块的索引数据指向所述至少两个数据块的存储地址;
将所述修改后的所述至少两个数据块的索引数据写入所述存储介质。
4.一种存储设备,所述存储设备包括处理器、内存和存储介质,所述存储介质中的数据块以树结构组织,所述树的叶子节点用于保存数据块,所述树的父节点和根节点用于保存索引数据,所述索引数据用于索引所述数据块,所述处理器用于:
接收多个数据块,写入所述内存;
在所述内存中修改所述多个数据块;
从所述修改后的多个数据块中确定至少两个数据块,所述至少两个数据块的索引数据相同;
为所述至少两个数据块分配在所述存储介质中的存储地址,根据所述分配的存储地址,将所述至少两个数据块写入所述存储介质;
修改指向所述至少两个数据块的索引数据。
5.如权利要求4所述的存储设备,其特征在于,所述处理器还用于:
在所述修改指向所述至少两个数据块的索引数据之前,将所述至少两个数据块从所述内存中删除。
6.如权利要求4所述的存储设备,其特征在于,处理器具体用于:
为所述至少两个数据块创建记录表,记录所述至少两个数据块在所述存储介质中的存储地址;
根据所述记录表,在所述内存中修改指向所述至少两个数据块的索引数据,修改后的索引数据指向所述至少两个数据块的存储地址;
将所述修改后的所述至少两个数据块的索引数据写入所述存储介质。
CN201410712344.5A 2014-11-28 2014-11-28 一种数据写入方法及存储设备 Active CN104461384B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410712344.5A CN104461384B (zh) 2014-11-28 2014-11-28 一种数据写入方法及存储设备
PCT/CN2015/083885 WO2016082559A1 (zh) 2014-11-28 2015-07-13 一种数据写入方法及存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410712344.5A CN104461384B (zh) 2014-11-28 2014-11-28 一种数据写入方法及存储设备

Publications (2)

Publication Number Publication Date
CN104461384A true CN104461384A (zh) 2015-03-25
CN104461384B CN104461384B (zh) 2017-11-24

Family

ID=52907513

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410712344.5A Active CN104461384B (zh) 2014-11-28 2014-11-28 一种数据写入方法及存储设备

Country Status (2)

Country Link
CN (1) CN104461384B (zh)
WO (1) WO2016082559A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105117415A (zh) * 2015-07-30 2015-12-02 西安交通大学 一种优化的ssd数据更新方法
WO2016082559A1 (zh) * 2014-11-28 2016-06-02 华为技术有限公司 一种数据写入方法及存储设备
CN107885803A (zh) * 2017-10-31 2018-04-06 中国地质大学(武汉) 一种大数据写入、读取速度耦合的方法、设备及存储设备
CN108763239A (zh) * 2018-03-22 2018-11-06 厦门欣旅通科技有限公司 一种网络访问次数计算方法及装置
CN109977078A (zh) * 2019-03-26 2019-07-05 广州荔支网络技术有限公司 一种数据的处理方法、装置、计算机设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130326121A1 (en) * 2012-05-30 2013-12-05 Silicon Motion, Inc. Data-storage device and flash memory control method
CN103455437A (zh) * 2012-05-30 2013-12-18 慧荣科技股份有限公司 数据储存装置与数据储存装置操作方法
CN103518364A (zh) * 2013-03-19 2014-01-15 华为技术有限公司 分布式存储系统的数据更新方法及服务器
CN103544124A (zh) * 2012-07-16 2014-01-29 上海塞尚通信技术有限公司 Nand Flash存储器的访问方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722449B (zh) * 2012-05-24 2015-01-21 中国科学院计算技术研究所 基于SSD的Key-Value型本地存储方法及系统
US8768977B2 (en) * 2012-07-31 2014-07-01 Hewlett-Packard Development Company, L.P. Data management using writeable snapshots in multi-versioned distributed B-trees
CN103677670A (zh) * 2013-12-11 2014-03-26 华为技术有限公司 读数据的方法及装置
CN104461384B (zh) * 2014-11-28 2017-11-24 华为技术有限公司 一种数据写入方法及存储设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130326121A1 (en) * 2012-05-30 2013-12-05 Silicon Motion, Inc. Data-storage device and flash memory control method
CN103455437A (zh) * 2012-05-30 2013-12-18 慧荣科技股份有限公司 数据储存装置与数据储存装置操作方法
CN103544124A (zh) * 2012-07-16 2014-01-29 上海塞尚通信技术有限公司 Nand Flash存储器的访问方法
CN103518364A (zh) * 2013-03-19 2014-01-15 华为技术有限公司 分布式存储系统的数据更新方法及服务器

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016082559A1 (zh) * 2014-11-28 2016-06-02 华为技术有限公司 一种数据写入方法及存储设备
CN105117415A (zh) * 2015-07-30 2015-12-02 西安交通大学 一种优化的ssd数据更新方法
CN105117415B (zh) * 2015-07-30 2018-07-03 西安交通大学 一种优化的ssd数据更新方法
CN107885803A (zh) * 2017-10-31 2018-04-06 中国地质大学(武汉) 一种大数据写入、读取速度耦合的方法、设备及存储设备
CN107885803B (zh) * 2017-10-31 2020-05-01 中国地质大学(武汉) 一种大数据写入、读取速度耦合的方法、设备及存储设备
CN108763239A (zh) * 2018-03-22 2018-11-06 厦门欣旅通科技有限公司 一种网络访问次数计算方法及装置
CN109977078A (zh) * 2019-03-26 2019-07-05 广州荔支网络技术有限公司 一种数据的处理方法、装置、计算机设备和存储介质
CN109977078B (zh) * 2019-03-26 2020-06-02 广州荔支网络技术有限公司 一种数据的处理方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN104461384B (zh) 2017-11-24
WO2016082559A1 (zh) 2016-06-02

Similar Documents

Publication Publication Date Title
CN102741843B (zh) 从数据库中读取数据的方法及装置
US8799601B1 (en) Techniques for managing deduplication based on recently written extents
US7761652B2 (en) Mapping information managing apparatus and method for non-volatile memory supporting different cell types
JP6416591B2 (ja) 更新されたファイルへのアクセスを提供する方法及びそれを実行させるためのプログラム命令語を含むコンピュータ読み取り可能な記録媒体に格納された実行可能なソフトウェア製品
US8650379B2 (en) Data processing method for nonvolatile memory system
CN102096561B (zh) 分层数据存储处理方法、装置以及存储设备
CN104461384A (zh) 一种数据写入方法及存储设备
CN103229164B (zh) 数据访问方法和装置
JP2014071905A (ja) コンピュータシステム及びコンピュータシステムのデータ管理方法
CN103955433A (zh) 盖瓦磁记录硬盘、盖瓦磁记录硬盘写数据的方法及装置
US9262096B2 (en) Dynamic address mapping for finish in the field
KR20120081351A (ko) Ftl을 수행하는 비휘발성 메모리 장치 및 그의 제어 방법
US20150193489A1 (en) Representing dynamic trees in a database
US20170160940A1 (en) Data processing method and apparatus of solid state disk
CN109902034A (zh) 快照创建方法、装置、电子设备及机器可读存储介质
CN103559139A (zh) 一种数据存储方法及装置
US7822940B2 (en) Apparatus and method for managing mapping information of nonvolatile memory
CN104281535A (zh) 一种映射表在内存中的处理方法和装置
CN104182436A (zh) 一种清理数据库的方法及装置
US20230342054A1 (en) Method, electronic device and computer program product for processing data
US20160070648A1 (en) Data storage system and operation method thereof
CN104572492A (zh) 一种烧录数据到fat32分区的方法和装置
CN104133640B (zh) 从休眠快速恢复
CN104268097A (zh) 一种元数据处理方法及系统
CN103530067A (zh) 一种数据操作的方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant