CN107430546A - 一种文件更新方法及存储设备 - Google Patents
一种文件更新方法及存储设备 Download PDFInfo
- Publication number
- CN107430546A CN107430546A CN201580001153.0A CN201580001153A CN107430546A CN 107430546 A CN107430546 A CN 107430546A CN 201580001153 A CN201580001153 A CN 201580001153A CN 107430546 A CN107430546 A CN 107430546A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- read
- block number
- index node
- 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
Links
- 238000003860 storage Methods 0.000 title claims abstract description 88
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000015654 memory Effects 0.000 claims description 37
- 230000004048 modification Effects 0.000 abstract description 12
- 238000012986 modification Methods 0.000 abstract description 12
- 230000008859 change Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 239000012634 fragment Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 239000013307 optical fiber Substances 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及文件***领域,尤其涉及的是一种文件更新方法及存储设备。该方法可包括,接收文件更新请求,将第二数据写入已分配的数据块中;根据第一文件偏移量确定第一数据的文件块号;根据第一文件的文件标识确定第一文件的索引节点;在第一文件的索引节点中的第一指针指向的文件更新表中记录第一数据的文件块号与存储第二数据的数据块的逻辑块号的对应关系,逻辑块号用于指向存储第二数据的物理地址;在索引节点中的第二指针指向的文件状态表中将第一数据的状态设置为无效。通过本发明实施例方案在更新数据时由于不需要修改索引节点的任何内容和任何间接块指针,从而能够在更新文件***的文件数据时减少元数据的修改,提高文件数据的更新效率。
Description
本发明涉及文件***领域,尤其涉及的是一种文件更新方法及存储设备。
在linux操作***的文件***中,每个文件包含文件元数据和实际数据,文件元数据包括Linux中的文件权限(rxw)、文件属性(所有者,群组、时间参数等)以及保存文件实际数据存储位置。文件***通常会将这两部分数据分别存放在不同的块,权限与属性放置到索引节点中,至于实际数据则放置到数据块中。另外还有一个超级块(super block)会记录整个文件***的的整体信息。索引节点记录文件的属性,一个文件占用一个索引节点,同时记录此文件的数据所在的数据块位置。
由于每个索引节点与数据块都有编号,而每个文件都会占用一个索引节点,索引节点内设有指向用于存储文件数据的数据块的逻辑块号的指针。因此,如果能找到文件的索引节点的话,那么自然也就能获知存放数据的数据块的逻辑块号,也就能够通过逻辑块号读出物理地址上该文件的实际数据。
现有文件***以树的方式组织文件的数据块。当一个文件需要更新时,会根据要更新的文件中的更新数据分配新的数据块,并且将链接旧数据块的指针指向更新后的数据块,由于修改了指针,从而存储指针的数据块也必须进行更新。当一组一致的更新写到磁盘之后,根数据块自动更新为指向新的树,该新的树包含最新的分配信息。
然而,由于每次更新操作要强制重分配,并且进行更新更新数据后,需要将指向旧数据块的指针指向存储更新数据的数据块,空间开销大,涉及要修改的元数据比较多,比较复杂,效率低。
发明内容
本发明提供了一种文件更新方法,能够在更新文件***的文件数据时减少元数据的修改,并且方法简单,能够提高文件数据的更新效率。
本发明实施例第一方面提供了一种文件更新方法,可包括:
接收文件更新请求,所述文件更新请求中携带有第一文件的文件标识、第一文件偏移量以及第二数据,所述第二数据用于更新所述第一文件中的第一数据;根据所述第二数据的大小为所述第二数据分配空闲的数据块;
将所述第二数据写入已分配的所述数据块中;
根据所述第一文件偏移量确定所述第一数据的文件块号,所述文件块号用于标识所述第一数据的逻辑位置;
根据所述第一文件的文件标识确定所述第一文件的索引节点;
在所述第一文件的索引节点中的第一指针指向的文件更新表中记录所述第一数据的文件块号与存储所述第二数据的数据块的逻辑块号的对应关系,所述逻辑块号用于指向存储所述第二数据的物理地址;
在所述索引节点中的第二指针指向的文件状态表中将所述第一数据的状态设置为无效。
结合第一方面,在第一方面的第一种可能的实现方式中,所述方法还可包括:
接收文件读取请求,所述文件读取请求中携带有第二文件的文件标识和第二文件偏移量;
根据所述第二文件的文件标识确定所述第二文件的索引节点;
根据所述第二文件偏移量确定待读取数据的文件块号;
根据所述第二文件的索引节点中的第二指针指向的文件状态表确定所述待读取数据的状态为无效;
根据所述第二文件的所述索引节点中的第一指针指向的文件更新表确定所述待读取数据的文件块号对应的逻辑块号;
根据所述待读取数据的文件块号对应的逻辑块号确定待读取数据的物理地址;
根据所述待读取数据的物理地址读取所述待读取数据。
结合第一方面,在第一方面的第二种可能的实现方式中,所述方法还包括:
将所述第一文件的索引节点中的更新标志位设置为有更新,所述更新标志位用于确定所述第一文件的更新状态。
结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述法还包括:
所述根据所述第二文件的索引节点中的第二指针指向的文件状态表确定所述待读取数据的状态之前,所述方法还包括:
根据所述第二文件的索引节点中的更新标志位确定所述第二文件有更新,所述更新标志位用于确定所述第二文件的更新状态。
本发明实施例第二方面还提供一种设备,可包括:
接收模块,用于接收文件更新请求,所述文件更新请求中携带有第一文件的文件标识、第一文件偏移量以及第二数据,所述第二数据用于更新所述第一文件中的第一数据;
分配模块,用于根据所述第二数据的大小为所述第二数据分配空闲的数据块;
写入模块,用于将所述第二数据写入已分配的所述数据块中;
确定模块,用于根据所述第一文件偏移量确定所述第一数据的文件块号,所述文件块号用于标识所述第一数据的逻辑位置;
并根据所述第一文件的文件标识确定所述第一文件的索引节点;
记录模块,用于在所述第一文件的索引节点中的第一指针指向的文件更新表中记录所述第一数据的文件块号与存储所述第二数据的数据块的逻辑块号的对应关系,所述逻辑块号用于指向存储所述第二数据的物理地址;
状态设置模块,在所述索引节点中的第二指针指向的文件状态表中将所述第一数据的状态设置为无效。
结合第二方面,在第二方面的第一种可能的实现方式中,
所述接收模块,还用于接收文件读取请求,所述文件读取请求中携带有第二文件的文件标识和第二文件偏移量;
所述确定模块,还用于根据所述第二文件的文件标识确定所述第二文件的索引节点;
根据所述第二文件偏移量确定待读取数据的文件块号;
根据所述第二文件的索引节点中的第二指针指向的文件状态表确定所述待读取数据的状态为无效;
所述存储设备还可包括:
查找模块,用于根据所述第二文件的所述索引节点中的第一指针指向的文件更新表确定所述待读取数据的文件块号对应的逻辑块号;
读取模块,用于根据所述待读取数据的文件块号对应的逻辑块号确定待读取数据的物理地址,并根据所述待读取数据的物理地址读取所述待读取数据。
结合第二方面,在第二方面的第二种可能的实现方式中,
所述状态设置模块,还用于将所述第一文件的索引节点中的更新标志位设置为有更新,所述更新标志位用于确定所述第一文件的更新状态。
结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,
所述确定模块还用于:
根据所述第二文件的索引节点中的更新标志位确定所述第二文件有更新,所述更新标志位用于确定所述第二文件的更新状态。
本发明实施例第三方面还提供一种存储设备,该存储设备中建立有文件***,该存储设备可包括:
存储器,用于存储文件数据;
控制器,与所述存储器连接,用于接收文件更新请求,所述文件更新请求中携带有第一文件的文件标识、第一文件偏移量以及第二数据,所述第二数据用于更新所述文件中的第一数据;
在存储器中根据所述第二数据的大小为所述第二数据分配空闲的数据块;
通过缓存将所述第二数据写入存储器中已分配的所述数据块中;
根据所述文件偏移量确定存储器中所述第一数据的文件块号,所述文件块号用于标识所述第一数据的逻辑位置;
根据所述第一文件的文件标识确定存储器中所述第一文件的索引节点;
在所述第一文件的索引节点中的第一指针指向的文件更新表中记录所述第一数据的文件块号与存储所述第二数据的数据块的逻辑块号的对应关系,所述逻辑块号用于指向存储所述第二数据的物理地址;
在所述索引节点中的第二指针指向的文件状态表中将所述第一数据的状态设置为无效。
结合第三方面,在第三方面的第一种可能的实现方式中,
所述控制器还用于:
接收文件读取请求,所述文件读取请求中携带有第二文件的文件标识和第二文件偏移量;
根据所述第二文件的文件标识确定所述第二文件的索引节点;
根据所述第二文件偏移量确定待读取数据的文件块号;
根据所述第二文件的索引节点中的第二指针指向的文件状态表确定所述待读取数据的状态为无效;
根据所述第二文件的所述索引节点中的第一指针指向的文件更新表确定所述待读取数据的文件块号对应的逻辑块号;
根据所述待读取数据的文件块号对应的逻辑块号确定待读取数据的物理地址;
根据所述待读取数据的物理地址读取所述待读取数据。
结合第三方面,在第三方面的第二种可能的实现方式中,所述控制器还用于:
将所述第一文件的索引节点中的更新标志位设置为有更新,所述更新标志位用于确定所述第一文件的更新状态。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述控制器还用于:
在根据所述第二文件的索引节点中的第二指针指向的文件状态表确定所述待读取数据的状态之前,根据所述第二文件的索引节点中的更新标志位确定所述第二文件有更新,所述更新标志位用于确定所述第二文件的更新状态。
从以上技术方案可以看出,本发明实施例具有以下优点:本发明实施例由于设置了文件更新表和文件状态表,在索引节点中具有指向这两个表的第一指针和第二指针,该更新表会存储有文件的文件块号与逻辑块号的对应关系,在更新数据时,首先将将第二数据存入分配的空闲的数据块中,确定第一数据的文件块号,而后根据第一文件确定索引节点,确定文件更新表和文件状态表,而后在文件更新表中记录下第一数据的文件块号与存储所述第二数据的数据块的逻辑块号的对应关系,即可实现通过文件块号与新的逻辑块号相对应,而
后在文件状态表中将第一数据的状态设置为无效,即可完成数据的更新操作。通过本发明实施例方案在更新数据时由于不需要修改索引节点的任何内容和任何间接块指针,从而能够在更新文件***的文件数据时减少元数据的修改,减少数据块的拷贝和磁盘碎片,并且方法简单,能够提高文件数据的更新效率。
图1为适用本发明实施例中文件更新方法的存储***示意图;
图2是传统具有写时拷贝技术的文件***更新状态图;
图3为本发明实施例中文件更新方法的一个实施例图;
图4为本发明实施例中文件更新方法的另一个实施例图;
图5为本发明实施例中文件更新方法的另一个实施例图;
图6为本发明实施例中存储设备的一个实施例图;
图7为本发明实施例中存储设备的另一个实施例图;
图8为本发明实施例中存储设备的结构示意图;
图9是本发明实施例中存储设备的另一个实施例图。
本发明实施例提供了一种文件更新方法及存储设备,用于解决现有基于COW文件***更新数据时修改的元数据比较多,比较复杂,而导致效率低,并且会导致过多的磁盘碎片的问题。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、***、产品或设备不必限于清楚
地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
图2为本发明实施例提供的一种存储***结构示意图,请参阅图1,该存储***通过通道交换器102与服务器101相连接,该存储***包括至少一个存储设备103,该通道交换器102与至少一个存储设备103分别连接,其中,服务器101内还设有用于管理存储设备的文件***模块1011。该***在工作时通过服务器101内的文件***模块1011配合通道交换器102对存储设备103进行控制,如文件***模块1011通过光纤通道交换器102从存储设备103内读取数据或是向存储设备103存储数据。
本领域技术人员可以知道,该通道交换器102可以是光纤通道交换器或是其他能够支持较大带宽的通道交换器,只要保证服务器101与存储设备103之间具有足够的带宽传输数据即可。
本领域技术人员可以知道,除了图2所示的存储***之外,本发明实施例还可以应用于直连式存储(DAS Direct-Attached Storage)、存储区域网络(SAN Storage Area Network)和网络接入存储(NAS Network-Attached Storage)等类型的存储***中,在此不对本发明实施例的应用场景进行限制。
当然,除前述开放式阵列存储***外,当然还有一些非阵列存储***,简单如个人计算机也可作为一种存储***。
本领域技术人员可以知道,当这些存储***中正在运行的操作***发生***故障时,其中的文件***为了在故障恢复后能正常工作必须维持一致性。为了使文件***达到这一效果,现有技术采用写时拷贝技术进行所有数据更新操作,即在存储设备上构建一个新的文件***视图,当所有更新都安全写入磁盘后,新的文件***视图才变为有效。采用这种写时拷贝技术的文件***每次更新存储设备上数据时,先在空闲的数据块(即未使用的数据块)中分配一个新数据块块,将更新数据写入这个新的数据块,当更新数据写入成功之后,再更新相关的元数据结构指向新的数据块。
下面以一个现有技术中文件***的进行数据更新的场景进行描述,请参阅图2,图2是传统具有写时拷贝技术的文件***更新状态图,在该图中,A点是文件***树的根节点,C节点和E节点是指向文件中数据所在数据块的索引
节点,当需要对C节点指向的数据块进行更新时,更新数据会被写入空闲的新数据块中,同时会产生一个新的索引节点C’节点,该C’节点指向该新数据块,而由于写时拷贝技术,也会分配一个空闲的数据块给C’节点,而由于A节点需要指向C’节点,则A节点也需要进行修改,同样,由于写时拷贝技术,此时会产生一个新的A’节点指向C’节点,同时A’节点也指向E节点,此时文件***会为A’节点分配空闲的新数据块,最后将超级块原本指向的A节点改为指向A’节点,完成数据的更新。
需要说明的是,A节点和C节点之间还可具有间接节点B节点,该B节点的数量可以使可以是一个以上,如同时具有B节点和D节点,B节点和D节点处于同一层级,B节点同时指向C节点和E节点,D节点指向F节点,F节点与C节点和E节点同为指向文件中数据所在数据块的索引节点,此时,当需要对C节点指向的数据块进行更新时,A节点不直接指向C节点,而是首先指向B节点,再由B节点指向C节点,因此,在更新时,会从C节点开始,首先建立C’节点,而后建立指向C’节点的B’节点,同时B’节点指向E节点,最后建立指向B’节点的A’节点,同时A’节点指向D节点,最后将超级块原本指向的A节点改为指向A’节点,完成数据更新。
可见,由于用户数据每次修改会导致一批相关元数据块(如C节点、B节点和A节点)的拷贝和修改,由于写时拷贝技术,文件***不会原位更新修改索引节点(如C节点)和间接指针(如B节点),必须在一个新的位置拷贝和修改。并且在提交超级块时,文件***必须迫使所有块完全写入磁盘,这样导致更新操作延迟大、效率低,和由于每次需要分配新的数据块,旧数据块无效,这样会导致很多磁盘碎片。
为了解决上述问题,本发明实施例中提供一种文件更新方法,该方法可以应用与图1所示的应用场景中。请参阅图3,图3为本发明实施例中文件更新方法的一个流程示意图,该方法可以由图1所示的存储***中的服务器101来执行也可由存储设备内的文件***模块来执行,可包括以下内容:
301、接收文件更新请求。
在需要进行数据更新时,需要通过文件***对数据进行处理,需要向文件***发送文件更新请求,而文件***会接收到来自其他应用或是***的这种文
件更新请求,文件更新请求中携带有第一文件的文件标识、第一文件偏移量以及第二数据,第二数据用于更新文件中的第一数据。
302、根据第二数据的大小为第二数据分配空闲的数据块。
文件***在接收到文件更新请求后,会根据第二数据的大小为第二数据分配空闲的数据块以便于写入第二数据。
303、将第二数据写入已分配的数据块中。
在分配好空闲的数据块后,将第二数据写入已分配的数据块中。
304、根据文件偏移量确定第一数据的文件块号。
文件块号用于标识第一数据的逻辑位置,通过文件标识可确定更新文件,而后通过文件偏移量能够获取第一数据的文件块号。
需要说明的时,文件块号为文件在存储时按照预先设置的文件块大小的固定值将文件分为若干块文件块,如此处的第一文件即是如此,而每一文件块均设置一个文件块号,而第一文件偏移量为一个具体的值,用于确定要更新的第一数据所对应的文件块号,即在确定文件块号时,仅需获知对应的第一文件偏移量,通过该第一文件偏移量以及预先设置的固定值即可计算出对应的文件块号。
举例来说,若将文件总体作为X轴,则逻辑位置对应X轴上具体的一个点,该点作为该逻辑位置的起点,而文件块号对应X轴上的一段线段,该线段的长度为文件块的大小;而第一文件偏移量则为具体的一个点,通过判断该点具体落入的线段来判断该线段对应的文件块号。
305、根据第一文件的文件标识确定第一文件的索引节点;
由于在磁盘上存储的所有的文件都具有对应的索引节点,因此能够根据第一文件的文件标识确定第一文件的索引节点。
306、在第一文件的索引节点中的第一指针指向的文件更新表中记录第一数据的文件块号与存储第二数据的数据块的逻辑块号的对应关系。
第一文件的索引节点中设置有第一指针,该第一指针指向文件更新表,能够根据第一文件的索引节点确定索引节点中的第一指针,从而能够确定文件更新表,并且更新表中存储有文件的文件块号与逻辑块号的对应关系。
在确定更新表后,即可在文件更新表中记录下第一数据的文件块号与存储
第二数据的数据块的逻辑块号的对应关系,从而使第二数据所对应的逻辑块号与第一数据所对应的文件块号相对应。
307、在索引节点中的第二指针指向的文件状态表中将第一数据的状态设置为无效。
第一文件的索引节点中设置有第二指针,该第二指针指向文件状态表,根据第二指针确定文件状态表,文件状态表中存储有用于指示数据有效性的状态。
在确定文件状态表后,会将第一数据的状态设置为无效,以指示该第一数据已被更新。
本发明实施例由于设置了文件更新表和文件状态表,在索引节点中具有指向这两个表的第一指针和第二指针,该更新表会存储有文件的文件块号与逻辑块号的对应关系。在更新数据时,首先将第二数据存入分配的空闲的数据块中,确定第一数据的文件块号,而后根据第一文件确定索引节点,确定文件更新表和文件状态表。在文件更新表中记录下第一数据的文件块号与存储第二数据的数据块的逻辑块号的对应关系,即可实现通过文件块号与新的逻辑块号相对应,而后在文件状态表中将第一数据的状态设置为无效,即可完成数据的更新操作。通过本发明实施例方案在更新数据时由于不需要修改索引节点的任何内容和任何间接块指针,从而能够在更新文件***的文件数据时减少元数据的修改,并且方法简单,能够提高文件数据的更新效率,并且能够减少数据块的拷贝和磁盘碎片,最终达到提高更新操作效率的目的。
本发明实施例中,由于设置了文件更新表和文件状态表,在设置更新标志位后能够通过该更新标志位快速识别该索引节点对应的文件是否有更新。需要说明的是,文件状态表中状态的设置方式较为重要,其直接影响文件***是否能够快速查找定位第一数据的状态,下面介绍其中一种设置方式,能提高文件***定位第一数据的效率。
作为可选的,在文件第一次存储时,记录有各数据的状态的文件状态表按照文件块号的顺序进行排列,由于文件块号为文件存储时就确定的,不会因为文件块号对应的逻辑块号的改变而改变,因此能在获知数据的文件块号后能迅速获取数据的状态,采用文件块号的顺序对数据的状态进行排列,能在获知数
据的文件块号的情形下,快速查找数据的状态,有利于提高文件更新的效率,对于第一数据来说,能够提高文件***设置第一数据对应的状态的效率,从而提高文件更新的效率。
举例来说,在文件状态表中采用按照文件块号的顺序进行排列的数据的状态的方式,在具有第二数据替换第一数据而需要将状态设置为无效时,首先通过第一数据的文件块号查找文件状态表中对应该文件块号的第一数据的状态,再将该第一数据的状态设置为无效即可。
需要说明的是,在本发明实施例中还可在索引节点中设置更新标志位以表示该索引节点对应的数据有更新;请参阅图4,为本发明实施例中文件更新方法的另一个实施例图,如图4所示,除包含图3所示的文件更新方法,即步骤401至步骤407与步骤301至步骤307相类似,该文件更新方法还包括,
408、将第一文件的索引节点中的更新标志位设置为有更新。
其中,更新标志位用于确定第一文件的更新状态。
可以理解的是,在设置更新标志位后,在确定索引节点后,能够通过该更新标志位快速识别该索引节点对应的文件是否有更新,虽然通过文件状态表中的数据的标识也能得知是否具有数据更新,但缺点有两点,其一是需要通过第一文件的索引节点中的第二指针确定文件状态表,并确定文件状态表中的无效的标识。因此采用上述步骤408的方式,能够直接从第一文件的索引节点中获知该索引节点对应的文件是否有更新,而无需通过第二指针确定文件状态表,从而大大提高了文件***更新的执行效率。
需要说明的是,在完成文件的更新后,应用程序或是操作***需要读取文件时,会由文件***进行读取文件。
请参阅图5,为本发明实施例中文件更新方法的另一个实施例图,主要描述本发明实施例文件更新方法中数据读取的方法如图5所示,本实施例中更新方法还可包括:
501、接收文件读取请求。
文件读取请求中携带有第二文件的文件标识和第二文件偏移量,在应用程序或是操作***需要读取文件时,会向文件***发送文件读取请求。
502、根据第二文件的文件标识确定第二文件的索引节点。
接收到文件读取请求后,首先会根据第二文件确定与第二文件对应的索引节点,以便于根据该索引节点查询待读取数据的实际存储位置。
503、根据第二文件偏移量确定待读取数据的文件块号。
当确定第二文件后,即可通过第二文件偏移量确定待读取数据的文件块号,以便于后续使用。
504、根据第二文件的索引节点中的第二指针指向的文件状态表确定待读取数据的状态为无效。
在通过索引节点的第二指针确定了文件状态表后,会对文件状态表中对应待读取数据的状态进行确定,当确定待读取数据的状态为无效时,进行后续步骤。
505、根据第二文件的索引节点中的第一指针指向的文件更新表确定待读取数据的文件块号对应的逻辑块号。
在确定待读取数据对应的状态为无效时,会根据索引节点的第一指针确定文件更新表,而后通过文件更新表确定确定待读取数据的文件块号对应的逻辑块号。
506、根据待读取数据的文件块号对应的逻辑块号确定待读取数据的物理地址。
在获取到待读取数据的逻辑块号后,可根据逻辑块号与物理地址的对应关系确定待读取数据的实际存储位置的物理地址。
507、根据待读取数据的物理地址读取待读取数据。
在获取到物理地址后,即可从该物理地址读取存储在物理盘的数据,完成数据的读取过程。
需要说明的是,在实际读取数据时,需要先判断待读取数据是否为更新过的数据,即判断待读取数据的状态是否为无效,可通过第二文件的索引节点确定文件块文图表,并在其中确定待读取数据的状态,如为无效标识时,则表示此状态对应的数据通过现有读取的为错误数据,此时通过第二文件的索引节点确定文件更新表,在文件更新表中找到待读取数据对应的文件块号的位置,进而找到该待读取数据更新后的逻辑块号,并通过此逻辑块号对应的物理地址读取物理盘上的待读取数据,通过本发明实施例方案在读取时首先对待读取数据
进行判断,而后根据判断结果进行后续读取操作,由于不会直接读取索引节点上的数据存储位置,因此在读取时,不会出现数据读取错误的情况,并且通过读取更新表中的逻辑块号读取待读取数据的方式,进一步增加本发明实施例文件更新方法的可实现性。
由于设置了文件更新表和文件状态表,并且由于索引节点中具有指向这两个表的第一指针和第二指针,在读取待读取数据时,对于待读取数据的两种类型,即更新过的数据和未更新过的数据在读取方式上是不同的,即,当确定待读取数据的状态为无效和非无效时具有两种不同的方式:
其中若待读取数据为更新过的数据时,其数据的读取方式如上述步骤501至507所示,若待读取数据为未更新过的数据时,通过索引节点中的第三指针指向的数据块位置读取待读取数据。
即此处若待读取数据的状态不为无效时,文件***读取数据的方式为查找待读取数据对应的索引节点中的第三指针,由第三指针指向的数据块位置读取该待读取数据。
可以理解的是,由于在判断出待读取数据的状态不为无效时,标识待读取数据未被更新过,即可通过索引节点中的第三指针指向的数据块位置读取待读取数据。
需要说明的是,在待读取数据的状态不为无效的情况下,,首先通过索引节点确定更新表,而后从更新表中查找待读取数据的文件块号对应的逻辑块号,再通过逻辑块号读取逻辑块号对应的物理块上的待读取数据,此两种读取方式可任意设为其中一种。
其中,作为可选的,在步骤504,即在根据第二文件的索引节点中的第二指针指向的文件状态表确定待读取数据的状态之前该数据处理方法还可包括:
根据第二文件的索引节点中的更新标志位确定第二文件有更新;
更新标志位用于确定第二文件的更新状态,当确定为有更新时,触发根据第二文件的索引节点的第二指针确定文件状态表。
可以理解的是,设置此更新标志位的目的在于给仅通过对索引节点的读取,即可获知该索引节点对应的数据是否有更新,而不必先读取文件状态表,而后搜索文件状态表中待读取数据的文件块号对应的待读取数据的状态,通过
该状态判断是否有更新,从而能够节省数据读取时间,提高数据读取的效率。
作为可选的,在步骤504,即在根据第二文件的索引节点中的第二指针指向的文件状态表确定待读取数据的状态之前,该数据处理方法还可包括:
根据第二文件的索引节点中的更新标志位确定第二文件无更新。
当确定更新标志位为无更新时,则采用直接获取第二文件的索引节点中的指向数据实际位置的数据指针,并通过该指针读取物理地址上的待读取数据。
其中,在进行待读取数据的读取时,若第二文件的索引节点对应的数据较多,数据指针也可作为中间指针指向的是实际指针,再由实际指针指向实际的待读取数据。
需要说明的是,当确定更新标志位为无更新时,也可采用步骤步骤504至步骤507的方式读取待读取数据,具体根据读取数据的需求进行选择即可。
上面介绍了本发明实施例中文件更新方法的实施方式,下面对本发明实施例中的存储设备进行介绍,请参阅图6,图6是本发明实施例中存储设备的一个实施例,图6提供的一种存储设备可包括:
接收模块601,用于接收文件更新请求,文件更新请求中携带有第一文件的文件标识、第一文件偏移量以及第二数据,第二数据用于更新第一文件中的第一数据;
分配模块602,用于根据第二数据的大小为第二数据分配空闲的数据块;
写入模块603,用于将第二数据写入已分配的数据块中;
确定模块604,用于根据第一文件偏移量确定第一数据的文件块号,文件块号用于标识第一数据的逻辑位置;
并用于根据第一文件的文件标识确定第一文件的索引节点;
记录模块605,用于在第一文件的索引节点中的第一指针指向的文件更新表中记录第一数据的文件块号与存储第二数据的数据块的逻辑块号的对应关系,逻辑块号用于指向存储第二数据的物理地址;
状态设置模块606,在索引节点中的第二指针指向的文件状态表中将第一数据的状态设置为无效。
本发明实施例中存储设备中由于设置了文件更新表和文件状态表,在索引节点中具有指向这两个表的第一指针和第二指针,该更新表会存储有文件的文
件块号与逻辑块号的对应关系,在更新数据时,在通过第一接收模块601接收到文件更新请求后,首先通过分配模块602将第二数据通过写入模块603存入分配的空闲的数据块中,并由确定模块604确定第一数据的文件块号,而后根据第一文件确定索引节点确定文件更新表和文件状态表,通过记录模块605在文件更新表中记录下第一数据的文件块号与存储第二数据的数据块的逻辑块号的对应关系,即可实现通过文件块号与新的逻辑块号相对应,而后通过状态设置模块606在文件状态表中将第一数据的状态设置为无效,即可完成数据的更新操作。通过本发明实施例方案在更新数据时由于不需要修改索引节点的任何内容和任何间接块指针,从而能够在更新文件***的文件数据时减少元数据的修改,并且方法简单,能够提高文件数据的更新效率。并且能够减少数据块的拷贝和磁盘碎片,最终达到提高更新操作效率的目的。
其中,需要说明的是,
在文件第一次存储时,记录有各数据的状态的文件状态表按照文件块号的顺序进行排列,由于文件块号为文件存储时就确定的,不会因为文件块号对应的逻辑块号的改变而改变,因此能在获知数据的文件块号后能迅速获取数据的状态。采用文件块号的顺序对数据的状态进行排列,能在获知数据的文件块号的情形下,快速查找数据的状态,有利于提高文件更新的效率。对于第一数据来说,能够提高文件***设置第一数据对应的状态的效率,从而提高文件更新的效率。
作为可选的,在图6所示的存储设备的基础上,状态设置模块606,还用于将第一文件的索引节点中的更新标志位设置为有更新。
其中,更新标志位用于确定第一文件的更新状态。
由此可见,采用状态设置模块606的目的在于能够通过该更新标志位快速识别该索引节点对应的文件是否有更新,虽然通过文件状态表中的状态也能得知是否具有数据更新,但缺点有两点,其一是需要通过第一文件的索引节点中的第二指针确定文件状态表,并确定文件状态表中的无效的标识。因此采用状态设置模块606能够直接从第一文件的索引节点中获知该索引节点对应的文件是否有更新,而无需通过第二指针确定文件状态表,从而大大提高了文件***更新的执行效率。
需要说明的是,本发明实施例中的存储设备不仅在写入数据上十分方便,在读取数据时也能快速准确的读取,如图7所示,图7为本发明实施例中存储设备的另一实施例图,如图7所示提供一种存储设备,应用于数据的读取,其中,
接收模块701,还用于接收文件读取请求,文件读取请求中携带有第二文件的文件标识和第二文件偏移量;
确定模块704,还用于根据第二文件的文件标识确定第二文件的索引节点;根据第二文件偏移量确定待读取数据的文件块号;根据第二文件的索引节点中的第二指针指向的文件状态表确定待读取数据的状态为无效;
该存储设备还包括:
查找模块707,用于根据第二文件的索引节点中的第一指针指向的文件更新表确定待读取数据的文件块号对应的逻辑块号;
读取模块708,用于根据待读取数据的文件块号对应的逻辑块号确定待读取数据的物理地址,并根据待读取数据的物理地址读取待读取数据。
本发明实施例中的存储设备在实际读取数据时,首先会由接收模块704接收文件读取请求,而后,会由确定模块704根据第二文件的文件标识确定第二文件的索引节点,接下来再由确定模块704根据第二文件偏移量确定待读取数据的文件块号,在读取待读取数据之前,需要先判断待读取数据是否为更新过的数据,即判断待读取数据的状态是否为无效,可由确定模块704根据第二文件的索引节点确定文件块文图表,并在其中确定待读取数据的状态,如为无效时,则表示此状态对应的数据通过现有读取的为错误数据,此时由查找模块707根据第二文件的索引节点确定文件更新表,并在文件更新表中找到待读取数据对应的文件块号的位置,进而找到该待读取数据更新后的逻辑块号,而后由读取模块708根据待读取数据的文件块号对应的逻辑块号确定待读取数据的物理地址,并通过此逻辑块号对应的物理地址读取物理盘上的待读取数据。
由此可见,通过本发明实施例方案在读取时首先对待读取数据进行判断,而后根据判断结果进行后续读取操作,由于不会直接读取索引节点上的数据存储位置,因此在读取时,不会出现数据读取错误的情况,并且通过读取更新表中的逻辑块号读取待读取数据的方式,进一步增加本发明实施例文件更新方法
的可实现性。
需要说明的是,在图7所示的存储设备中,
确定模块704、还用于根据第二文件的索引节点中的更新标志位确定第二文件有更新。
其中,更新标志位用于确定第二文件的更新状态,当确定模块704确定为有更新时,会触发确定模块704根据第二文件的索引节点的第二指针确定文件状态表。
可以理解的是,设置此更新标志位的目的在于给仅通过对索引节点的读取,即可获知该索引节点对应的数据是否有更新,而不必先读取文件状态表,而后搜索文件状态表中的待读取数据的文件块号对应的待读取数据的状态,通过状态判断是否有更新,从而能够节省数据读取时间,提高数据读取的效率。
上面对本发明实施例中的存储设备进行了介绍,下面对本发明实施例中的另一种存储设备进行介绍,如图8所示,图8是本发明实施例中存储设备的结构示意图,该存储设备中建立有文件***,该存储设备8包括:
存储器801,用于存储文件数据;
控制器802,与所述存储器连接,用于接收文件更新请求,文件更新请求中携带有第一文件的文件标识、第一文件偏移量以及第二数据,第二数据用于更新文件中的第一数据;
在存储器中根据第二数据的大小为第二数据分配空闲的数据块;
通过缓存将第二数据写入存储器中已分配的数据块中;
根据文件偏移量确定存储器中第一数据的文件块号,文件块号用于标识第一数据的逻辑位置;
根据第一文件的文件标识确定存储器中第一文件的索引节点;
在第一文件的索引节点中的第一指针指向的文件更新表中记录第一数据的文件块号与存储第二数据的数据块的逻辑块号的对应关系,逻辑块号用于指向存储第二数据的物理地址;
在索引节点中的第二指针指向的文件状态表中将第一数据的状态设置为无效。
其中,存储器801用于存储文件数据,在更新数据时,控制器802首先将
第二数据存入分配的空闲的数据块中,并确定第一数据的文件块号,而后控制器802根据第一文件确定索引节点,确定文件更新表和文件状态表,而后控制器802在文件更新表中记录下第一数据的文件块号与存储第二数据的数据块的逻辑块号的对应关系,即可实现通过文件块号与新的逻辑块号相对应,而后控制器802在文件状态表中将第一数据的状态设置为无效,即可完成数据的更新操作,通过本发明实施例方案在更新数据时由于不需要修改索引节点的任何内容和任何间接块指针,从而减少数据块的拷贝和磁盘碎片,最终达到提高更新操作效率的目的。
需要说明的是,控制器802除上述执行数据更新的操作外,作为可选的,还可执行数据的读取操作,其中,该控制器802还可执行如下操作:
接收文件读取请求,文件读取请求中携带有第二文件的文件标识和第二文件偏移量;
根据第二文件的文件标识确定第二文件的索引节点;
根据第二文件偏移量确定待读取数据的文件块号;
根据第二文件的索引节点中的第二指针指向的文件状态表确定待读取数据的状态为无效;
根据第二文件的索引节点中的第一指针指向的文件更新表确定待读取数据的文件块号对应的逻辑块号;
根据待读取数据的文件块号对应的逻辑块号确定待读取数据的物理地址;
根据待读取数据的物理地址读取待读取数据。
可以理解的是,本发明实施例中的存储设备8在实际读取数据时,首先会由控制器802接收文件读取请求,而后,会由控制器802根据第二文件的文件标识确定第二文件的索引节点,接下来再由控制器802根据第二文件偏移量确定待读取数据的文件块号,在读取待读取数据之前,需要先判断待读取数据是否为更新过的数据,即判断待读取数据的状态是否为无效,可由控制器802根据第二文件的索引节点确定文件块文图表,并在其中确定待读取数据的状态,如为无效时,则表示此状态对应的数据通过现有读取的为错误数据,此时由控制器802根据第二文件的索引节点确定文件更新表,并在文件更新表中找到待读取数据对应的文件块号的位置,进而找到该待读取数据更新后的逻辑块
号,而后由控制器802根据待读取数据的文件块号对应的逻辑块号确定待读取数据的物理地址,并由控制器802通过此逻辑块号对应的物理地址读取物理盘上的待读取数据。
需要说明的是,控制器802除上述执行数据更新和数据读取的操作外,作为可选的,所述控制器还用于:
将第一文件的索引节点中的更新标志位设置为有更新,更新标志位用于确定所述第一文件的更新状态。
由此可见,控制器802能够通过该更新标志位快速识别该索引节点对应的文件是否有更新,虽然通过文件状态表中的数据的状态也能得知是否具有数据更新,但缺点有两点,其一是需要通过第一文件的索引节点中的第二指针确定文件状态表,并确定文件状态表中的无效的标识。因此若控制器802能够直接从第一文件的索引节点中获知该索引节点对应的文件是否有更新,而无需通过第二指针确定文件状态表,从而大大提高了文件***更新的执行效率。
需要说明的是,控制器802除上述执行数据更新和数据读取的操作外,作为可选的,所述控制器还用于:
在根据第二文件的索引节点中的第二指针指向的文件状态表确定待读取数据的状态之前,根据第二文件的索引节点中的更新标志位确定第二文件有更新,更新标志位用于确定第二文件的更新状态。
由此可见,控制器802在文件状态表确定待读取数据的状态之前,会根据第二文件的索引节点中的更新标志位确定第二文件有更新,更新标志位用于确定第二文件的更新状态。因此,采用此步骤若在更新标志位有更新时,表示第二文件已经被更新过,采用现有的读取方式可能读取不到待读取数据,因此需要先去文件状态表确定待读取数据的状态,而后在确定待读取数据的读取方式,从而能够提高文件***更新的执行效率。
作为可选的,本发明实施例中的存储设备8内还设置了通讯接口和缓存,其中:通讯接口803,用于供存储设备与外界设备进行通讯;
缓存804,用于供控制器和存储器之间进行数据交互,缓存设置于控制器和存储之间。
其中,通讯接口803与控制器802相连接,用于供存储设备与外界设备进
行通讯,其可以是以太网接口和光纤接口等物理有线接口,也可以是无线接口,具体视采用存储设备的具体应用场景而定,具体不作限定。
缓存804作为存储器801与控制器802之间的缓冲,由于控制器802文件数据的速率远大于存储器801的读取数据,因此在存储器801与控制器802之间的设置缓存804,该缓存804读取数据的速率远大于存储器801,而又小于控制器802的的读取数据的速率,因此通过设置该缓存804,将需要进行操作的数据预先从存储器801中读取至缓存804中,再由控制器801进行操作,能大大提高数据的读取效率,进而提高存储设备的运行效率。
需要说明的是,除如图8所示的存储设备的结构示意图中,多个存储器801公用一个缓存804的方式外,还可采用如图9所示的方式,图9为本发明实施例中存储设备的另一个实施例图,其中,存储设备9中的每个存储器901均分别使用一个缓存904,而后所有的缓存904均连接至控制器902。
需要说明的是,不论是采用单个缓存904还是多个缓存904,其目的都在于作为控制器与存储器之间的缓冲,当存储器901非常多时,则倾向于为每个存储器901分别配置一个缓存904,当存储器904的数量不是很多时,可采用对多个存储器904配置一个较大的缓存即可,当然,具体设置时还会根据其他条件来进行设置,如缓存904的速率分别与控制器902即存储器901的比值。
除此之外,该缓存904可以是一级缓存904,也可采用多级缓存904,其中,越靠近控制器902的缓存904存取数据的速率越高。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。例如,上述实施例中各部件的划分,实际实现时还可以有另外的划分方式。例如多个模块或组件可以结合或者可以集成到另一个设备中,或一些特征可以忽略,或不执行。另外,所显示或讨论的部件相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口、模块的间接耦合或通信连接,可以包括电性连接、机械连接或其它的连接形式。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
Claims (12)
- 一种文件更新方法,所述方法应用于建立有文件***的存储设备中,其特征在于,包括:接收文件更新请求,所述文件更新请求中携带有第一文件的文件标识、第一文件偏移量以及第二数据,所述第二数据用于更新所述第一文件中的第一数据;根据所述第二数据的大小为所述第二数据分配空闲的数据块;将所述第二数据写入已分配的所述数据块中;根据所述第一文件偏移量确定所述第一数据的文件块号,所述文件块号用于标识所述第一数据的逻辑位置;根据所述第一文件的文件标识确定所述第一文件的索引节点;在所述第一文件的索引节点中的第一指针指向的文件更新表中记录所述第一数据的文件块号与存储所述第二数据的数据块的逻辑块号的对应关系,所述逻辑块号用于指向存储所述第二数据的物理地址;在所述索引节点中的第二指针指向的文件状态表中将所述第一数据的状态设置为无效。
- 根据权利要求1所述的文件更新方法,其特征在于,所述方法还包括:接收文件读取请求,所述文件读取请求中携带有第二文件的文件标识和第二文件偏移量;根据所述第二文件的文件标识确定所述第二文件的索引节点;根据所述第二文件偏移量确定待读取数据的文件块号;根据所述第二文件的索引节点中的第二指针指向的文件状态表确定所述待读取数据的状态为无效;根据所述第二文件的所述索引节点中的第一指针指向的文件更新表确定所述待读取数据的文件块号对应的逻辑块号;根据所述待读取数据的文件块号对应的逻辑块号确定待读取数据的物理地址;根据所述待读取数据的物理地址读取所述待读取数据。
- 根据权利要求1所述的文件更新方法,其特征在于,所述方法还包括:将所述第一文件的索引节点中的更新标志位设置为有更新,所述更新标志 位用于确定所述第一文件的更新状态。
- 根据权利要求2所述的文件更新方法,其特征在于,所述根据所述第二文件的索引节点中的第二指针指向的文件状态表确定所述待读取数据的状态之前,所述方法还包括:根据所述第二文件的索引节点中的更新标志位确定所述第二文件有更新,所述更新标志位用于确定所述第二文件的更新状态。
- 一种存储设备,其特征在于,包括:接收模块,用于接收文件更新请求,所述文件更新请求中携带有第一文件的文件标识、第一文件偏移量以及第二数据,所述第二数据用于更新所述第一文件中的第一数据;分配模块,用于根据所述第二数据的大小为所述第二数据分配空闲的数据块;写入模块,用于将所述第二数据写入已分配的所述数据块中;确定模块,用于根据所述第一文件偏移量确定所述第一数据的文件块号,所述文件块号用于标识所述第一数据的逻辑位置,并根据所述第一文件的文件标识确定所述第一文件的索引节点;记录模块,用于在所述第一文件的索引节点中的第一指针指向的文件更新表中记录所述第一数据的文件块号与存储所述第二数据的数据块的逻辑块号的对应关系,所述逻辑块号用于指向存储所述第二数据的物理地址;状态设置模块,在所述索引节点中的第二指针指向的文件状态表中将所述第一数据的状态设置为无效。
- 根据权利要求5所述的存储设备,其特征在于:所述接收模块,还用于接收文件读取请求,所述文件读取请求中携带有第二文件的文件标识和第二文件偏移量;所述确定模块,还用于根据所述第二文件的文件标识确定所述第二文件的索引节点,根据所述第二文件偏移量确定待读取数据的文件块号,根据所述第二文件的索引节点中的第二指针指向的文件状态表确定所述待读取数据的状态为无效;所述存储设备还包括:查找模块,用于根据所述第二文件的所述索引节点中的第一指针指向的文件更新表确定所述待读取数据的文件块号对应的逻辑块号;读取模块,用于根据所述待读取数据的文件块号对应的逻辑块号确定待读取数据的物理地址,并根据所述待读取数据的物理地址读取所述待读取数据。
- 根据权利要求5所述的存储设备,其特征在于:所述状态设置模块,还用于将所述第一文件的索引节点中的更新标志位设置为有更新,所述更新标志位用于确定所述第一文件的更新状态。
- 根据权利要求6所述的存储设备,其特征在于,所述确定模块还用于:根据所述第二文件的索引节点中的更新标志位确定所述第二文件有更新,所述更新标志位用于确定所述第二文件的更新状态。
- 一种存储设备,其特征在于:所述存储设备中建立有文件***,所述存储设备包括:存储器,用于存储文件数据;控制器,与所述存储器连接,用于接收文件更新请求,所述文件更新请求中携带有第一文件的文件标识、第一文件偏移量以及第二数据,所述第二数据用于更新所述文件中的第一数据;在存储器中根据所述第二数据的大小为所述第二数据分配空闲的数据块;通过缓存将所述第二数据写入存储器中已分配的所述数据块中;根据所述文件偏移量确定存储器中所述第一数据的文件块号,所述文件块号用于标识所述第一数据的逻辑位置;根据所述第一文件的文件标识确定存储器中所述第一文件的索引节点;在所述第一文件的索引节点中的第一指针指向的文件更新表中记录所述第一数据的文件块号与存储所述第二数据的数据块的逻辑块号的对应关系,所述逻辑块号用于指向存储所述第二数据的物理地址;在所述索引节点中的第二指针指向的文件状态表中将所述第一数据的状态设置为无效。
- 根据权利要求9所述的存储设备,其特征在于,所述控制器还用于:接收文件读取请求,所述文件读取请求中携带有第二文件的文件标识和第二文件偏移量;根据所述第二文件的文件标识确定所述第二文件的索引节点;根据所述第二文件偏移量确定待读取数据的文件块号;根据所述第二文件的索引节点中的第二指针指向的文件状态表确定所述待读取数据的状态为无效;根据所述第二文件的所述索引节点中的第一指针指向的文件更新表确定所述待读取数据的文件块号对应的逻辑块号;根据所述待读取数据的文件块号对应的逻辑块号确定待读取数据的物理地址;根据所述待读取数据的物理地址读取所述待读取数据。
- 根据权利要求9所述的存储设备,其特征在于,所述控制器还用于:将所述第一文件的索引节点中的更新标志位设置为有更新,所述更新标志位用于确定所述第一文件的更新状态。
- 根据权利要求10所述的存储设备,其特征在于,所述控制器还用于:在根据所述第二文件的索引节点中的第二指针指向的文件状态表确定所述待读取数据的状态之前,根据所述第二文件的索引节点中的更新标志位确定所述第二文件有更新,所述更新标志位用于确定所述第二文件的更新状态。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/082442 WO2016206070A1 (zh) | 2015-06-26 | 2015-06-26 | 一种文件更新方法及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107430546A true CN107430546A (zh) | 2017-12-01 |
CN107430546B CN107430546B (zh) | 2020-04-21 |
Family
ID=57584605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580001153.0A Expired - Fee Related CN107430546B (zh) | 2015-06-26 | 2015-06-26 | 一种文件更新方法及存储设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107430546B (zh) |
WO (1) | WO2016206070A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109164977A (zh) * | 2018-07-23 | 2019-01-08 | 中国建设银行股份有限公司 | 一种数据存储***和方法、存储介质 |
CN110162525A (zh) * | 2019-04-17 | 2019-08-23 | 平安科技(深圳)有限公司 | 基于b+树的读写冲突解决方法、装置及存储介质 |
CN111444138A (zh) * | 2019-01-16 | 2020-07-24 | 深圳市茁壮网络股份有限公司 | 一种文件局部修改方法及*** |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7348752B2 (ja) * | 2019-05-31 | 2023-09-21 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62172427A (ja) * | 1986-01-24 | 1987-07-29 | Nec Corp | 二次索引装置 |
EP1619600A2 (en) * | 2004-07-19 | 2006-01-25 | Microsoft Corporation | Remote file updates through remote protocol |
CN103049539A (zh) * | 2012-12-25 | 2013-04-17 | 华为技术有限公司 | 一种文件***中文件数据的存储方法及其装置 |
CN103440204A (zh) * | 2013-08-28 | 2013-12-11 | 华为技术有限公司 | 一种更新文件***的方法和存储设备 |
CN103455437A (zh) * | 2012-05-30 | 2013-12-18 | 慧荣科技股份有限公司 | 数据储存装置与数据储存装置操作方法 |
-
2015
- 2015-06-26 CN CN201580001153.0A patent/CN107430546B/zh not_active Expired - Fee Related
- 2015-06-26 WO PCT/CN2015/082442 patent/WO2016206070A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62172427A (ja) * | 1986-01-24 | 1987-07-29 | Nec Corp | 二次索引装置 |
EP1619600A2 (en) * | 2004-07-19 | 2006-01-25 | Microsoft Corporation | Remote file updates through remote protocol |
CN103455437A (zh) * | 2012-05-30 | 2013-12-18 | 慧荣科技股份有限公司 | 数据储存装置与数据储存装置操作方法 |
CN103049539A (zh) * | 2012-12-25 | 2013-04-17 | 华为技术有限公司 | 一种文件***中文件数据的存储方法及其装置 |
CN103440204A (zh) * | 2013-08-28 | 2013-12-11 | 华为技术有限公司 | 一种更新文件***的方法和存储设备 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109164977A (zh) * | 2018-07-23 | 2019-01-08 | 中国建设银行股份有限公司 | 一种数据存储***和方法、存储介质 |
CN111444138A (zh) * | 2019-01-16 | 2020-07-24 | 深圳市茁壮网络股份有限公司 | 一种文件局部修改方法及*** |
CN111444138B (zh) * | 2019-01-16 | 2024-03-15 | 深圳市茁壮网络股份有限公司 | 一种文件局部修改方法及*** |
CN110162525A (zh) * | 2019-04-17 | 2019-08-23 | 平安科技(深圳)有限公司 | 基于b+树的读写冲突解决方法、装置及存储介质 |
CN110162525B (zh) * | 2019-04-17 | 2023-09-26 | 平安科技(深圳)有限公司 | 基于b+树的读写冲突解决方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2016206070A1 (zh) | 2016-12-29 |
CN107430546B (zh) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105224237B (zh) | 一种数据存储方法及装置 | |
US9135163B2 (en) | Maintaining versions of data in solid state memory | |
US11249664B2 (en) | File system metadata decoding for optimizing flash translation layer operations | |
CN106548789B (zh) | 用于操作叠瓦式磁记录设备的方法和装置 | |
CN102779180B (zh) | 数据存储***的操作处理方法,数据存储*** | |
US10649897B2 (en) | Access request processing method and apparatus, and computer device | |
US9298384B2 (en) | Method and device for storing data in a flash memory using address mapping for supporting various block sizes | |
KR101994021B1 (ko) | 파일 조작 방법 및 장치 | |
KR101933766B1 (ko) | 플래시 메모리 플러싱을 개선하는 방법 및 시스템 | |
CN105183839A (zh) | 一种基于Hadoop的小文件分级索引的存储优化方法 | |
KR20200122994A (ko) | 키 값 첨부 | |
CN107644056B (zh) | 一种文件存储方法、装置及*** | |
US20170160940A1 (en) | Data processing method and apparatus of solid state disk | |
CN107430546A (zh) | 一种文件更新方法及存储设备 | |
US20130262799A1 (en) | Control method and storage device | |
US9122581B2 (en) | Data versioning in solid state memory | |
US9524236B1 (en) | Systems and methods for performing memory management based on data access properties | |
WO2017113211A1 (zh) | 访问请求处理方法、装置及计算机*** | |
CN111831691B (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
US20150169668A1 (en) | Single Pass File System Repair With Copy On Write | |
US20110307525A1 (en) | Virtual storage device | |
US20180232160A1 (en) | Opportunistic Use Of Streams For Storing Data On A Solid State Device | |
CN105264497B (zh) | 一种文件管理方法及文件*** | |
CN110795031A (zh) | 一种基于全闪存储的数据重删方法、装置和*** | |
US9927996B2 (en) | Information processing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200421 |