CN114443598A - 写数据方法、装置、计算机设备及存储介质 - Google Patents

写数据方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN114443598A
CN114443598A CN202011187762.9A CN202011187762A CN114443598A CN 114443598 A CN114443598 A CN 114443598A CN 202011187762 A CN202011187762 A CN 202011187762A CN 114443598 A CN114443598 A CN 114443598A
Authority
CN
China
Prior art keywords
data
block
index
file
information
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.)
Pending
Application number
CN202011187762.9A
Other languages
English (en)
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.)
XFusion Digital Technologies Co Ltd
Original Assignee
XFusion Digital 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 XFusion Digital Technologies Co Ltd filed Critical XFusion Digital Technologies Co Ltd
Priority to CN202011187762.9A priority Critical patent/CN114443598A/zh
Publication of CN114443598A publication Critical patent/CN114443598A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/181Append-only file systems, e.g. using logs or journals to store data providing write once read many [WORM] semantics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种写数据方法、装置、计算机设备及存储介质,属于计算机存储技术领域。在本申请实施例中,在第一数据和第二数据为相同的数据,且第二数据已经存储在文件系统中的目标数据块中的情况下,可以无需重复存储第一数据,通过将目标数据块的标识作为第一数据的索引信息中即可,如此后续通过第一数据的索引信息便可查询到目标数据块,也即是读取到第一数据。这样可以避免存储介质的浪费。因此,在复制文件的场景中,无需将文件的全部数据重新存储到文件系统中,只需将原文件整个文件的索引信息存储到复制后的文件的索引信息即可。这样存储介质上只需要存储一个文件的数据即可,因此提高了存储介质的利用率。

Description

写数据方法、装置、计算机设备及存储介质
技术领域
本申请实施例涉及计算机存储技术领域,特别涉及一种写数据方法、装置、计算机设备及存储介质。
背景技术
为了便于对计算机设备上的存储介质中存储的数据进行管理,目前基于计算机设备上的存储介质提供的存储空间构建有文件系统。文件系统具体可以理解为将存储介质中的存储的数据组织起来的一个系统。计算机设备中的任何数据均以文件为单位写入文件系统,后续通过文件系统便可从存储介质上读取数据。
相关技术中,文件系统包括用于存储文件的数据块(data block)以及各个文件的索引节点(inode),任一文件的索引节点中存储该文件对应的数据块的物理地址,该文件对应的数据块是指存储该文件中的数据的数据块。对于待写入的任一文件,为该文件分配未使用的数据块以写入该文件包括的数据。并为该文件分配一个索引节点(inode)。该索引节点中存储了前述分配的数据块的物理地址,以便于后续通过索引节点查询文件中的数据。
上述写入文件的方法容易导致存储介质上存放大量的重复数据,进而使得存储介质的利用率较低。
发明内容
本申请实施例提供了一种写数据方法、装置、计算机设备及存储介质,可以提高挂载文件系统的存储介质的利用率。所述技术方案如下:
第一方面,提供了一种写数据方法,该方法应用于计算机设备,该计算机设备上挂载有文件系统。在该方法中,获取待写入的第一文件。其中,第一文件包括第一数据,第一数据和该文件系统中存储的第二文件中的第二数据为相同的数据,第二数据存储在该文件系统的目标数据块中,该文件系统中还包括与第一文件对应的第一索引节点,第一索引节点用于存储第一文件包括的各个数据的索引信息,任一数据的索引信息指示存储相应数据的数据块的标识。然后将目标数据块的标识作为第一数据的索引信息写入第一索引节点中。
由于第一数据和第二数据为相同的数据,且第二数据已经存储在文件系统中的目标数据块中了,因此在本申请实施例中,可以无需重复存储第一数据。通过将目标数据块的标识作为第一数据的索引信息中即可,如此后续通过第一数据的索引信息便可查询到目标数据块,从而获取到目标数据块中的数据,也即是读取到第一数据。这样可以避免存储介质的浪费。此外目标数据块的标识可以指示目标数据块在存储介质上的具体位置,也即是,目标数据块的标识可以作为目标数据块中存储的数据的索引信息,因此,在复制文件的场景中,无需将文件的全部数据重新存储到文件系统中,只需将原文件整个文件的索引信息存储到复制后的文件的索引信息即可。这样存储介质上只需要存储一个文件的数据即可,因此提高了存储介质的利用率。
基于第一方面提供的方法,在一种可能的实现方式中,第一索引节点中包括第一索引块,第一索引块中包括与第一文件中的多个数据分别对应的区块,任一数据对应的区块用于存储指示相应数据的索引信息。这种场景下,上述将目标数据块的标识作为第一数据的索引信息写入第一索引节点中的实现过程为:将目标数据块的标识写入与第一数据对应的区块中。此外,该文件系统中还包括与第二文件对应的第二索引节点,第二索引节点中包括第二索引块,第二索引块中包括与第二文件中多个数据分别对应的区块。这种场景下,在该方法中,在与第一数据对应的区块中写入第一共享区块信息,第一共享区块信息指示与第二数据对应的区块的标识。
在本申请实施例中,由于可以将不同文件中相同的数据存储在同一数据块中,因此不同文件可以共享同一数据块。为了便于后续对共享同一数据块的各个文件进行统一管理,还可以对文件的索引节点中内容进行扩展。扩展索引节点中的内容的目的是为了能够实现通过索引节点查到哪些文件共享了该数据块。上述共享区块信息即为扩展的一种信息。
基于第一方面提供的方法,在一种可能的实现方式中,第一共享区块信息包括第二索引块的标识以及第二索引块中与第二数据对应的区块在第二索引块中的序号。
第一共享区块信息指示与第二数据对应的区块的标识。如此,通过第一数据对应的区块便可查询到其他文件中和第一数据为相同数据的数据对应的区块的相关信息,提高了通过共享区块信息查询其他文件的索引节点的效率。
基于第一方面提供的方法,在一种可能的实现方式中,在该方法中,更新第二索引块中与第二数据对应的区块中的第二共享区块信息,第二共享区块信息指示与第二数据为同一数据的其他数据对应的区块的标识。
由于第一文件中的第一数据和第二文件中的第二数据为相同的数据,因此,如果第一索引节点中存储了指示第二文件中和第一数据为相同数据的数据对应的区块的相关信息,那么第二文件的索引节点中也相应存储了指示其他文件中和第二数据为相同数据的数据对应的区块的相关信息,如此共享同一数据块的各个区块中存储的信息可以形成一个环形链。进一步便于后续对共享数据的统一管理。
基于第一方面提供的方法,在一种可能的实现方式中,在该方法中,在与第一数据对应的区块中写入第一共享数量信息,第一共享数量信息指示除第一文件外数据中包括目标数据块中的数据的文件的数量。
扩展该共享数量信息的目的在于:后续需要修改文件时,可以基于该共享数量信息快速确定是否存在其他文件中的区块和该区块指向相同的数据块,以便于确定是否需要执行其他操作,提高了后续管理数据的便捷性。
基于第一方面提供的方法,在一种可能的实现方式中,在该方法中,更新第二索引块中与第二数据对应的区块中的第二共享数量信息,第二共享数量信息指示除第二文件外数据中包括目标数据块中的数据的文件的数量。
同样地,基于上环形链的配置,在与第一数据对应的区块中写入第一共享数量信息之后,还可以更新第二索引块中与第二数据对应的区块中的第二共享数量信息,第二共享数量信息指示除第二文件外数据中包括目标数据块中的数据的文件的数量。以使共享数量之间也形成了环形链。进一步便于后续对共享数据的统一管理。
基于第一方面提供的方法,在一种可能的实现方式中,在该方法中,在检测到基于第一数据的数据修改指令的情况下,获取为修改后的第一数据配置的数据块;将修改后的第一数据写入为配置的数据块中;基于配置的数据块的标识更新第一数据的索引信息。
在通过本申请实施例提供的方法将第一文件写入文件系统后,如果后续需要对第一文件中的第一数据进行修改,这样修改后的第一数据和第二文件中的第二数据将不再为相同的数据,因此需要重新写入修改后的第一数据,并对第一数据的索引信息进行相应修改。以保持第一文件的索引节点能够实时表征第一文件中的数据的真实存储位置,从而提高了后续查询数据的准确率。
基于第一方面提供的方法,在一种可能的实现方式中,第一索引节点中包括第一索引块,第一索引块中包括与第一文件中的多个数据分别对应的区块,任一数据对应的区块用于存储指示相应数据的索引信息,文件系统中还包括与第二文件对应的第二索引节点,第二索引节点中包括第二索引块,第二索引块中包括与第二文件中多个数据分别对应的区块。这种场景下,在该方法中,清除与第一数据对应的区块中的第一共享区块信息,第一共享区块信息指示与第二数据对应的区块的标识。
基于上述内容可知,各个文件的索引节点中还可以扩展共享区块信息。这种场景下,在写入修改后的第一数据后,由于修改后的第一数据和第二文件中的第二数据将不再为相同的数据,因此,还需清除与第一数据对应的区块中的第一共享区块信息,第一共享区块信息指示与第二数据对应的区块的标识。从而提高了文件系统中存储的数据的时效性。
基于第一方面提供的方法,在一种可能的实现方式中,在该方法中,更新第二索引块中与第二数据对应的区块中的第二共享区块信息,第二共享区块信息指示与第二数据为同一数据的其他数据对应的区块的标识。
新后的第二共享区块信息中将不再包括与第一数据对应的区块的相关信息,从而来指示第二数据和第一数据不再是相同的数据。提高了文件系统中存储的数据的时效性。
基于第一方面提供的方法,在一种可能的实现方式中,在该方法中,清除与第一数据对应的区块中的第一共享数量信息,第一共享数量信息指示除第一文件外数据中包括目标数据块中的数据的文件的数量。
基于上述内容可知,各个文件的索引节点中还可以扩展共享数量信息。这种场景下,在写入修改后的第一数据后,由于修改后的第一数据和第二文件中的第二数据将不再为相同的数据,因此,还需清除与第一数据对应的区块中的第一共享数量信息,第一共享数量信息指示除第一文件外数据中包括目标数据块中的数据的文件的数量。从而提高了文件系统中存储的数据的时效性。
基于第一方面提供的方法,在一种可能的实现方式中,在该方法中,更新第二索引块中与第二数据对应的区块中的第二共享数量信息,第二共享数量信息指示除第二文件外数据中包括目标数据块中的数据的文件的数量。
更新第二索引块中与第二数据对应的区块中的第二共享数量信息,第二共享数量信息指示除第二文件外数据中包括目标数据块中的数据的文件的数量。提高了文件系统中存储的数据的时效性。
第二方面,提供了一种写数据装置,所述写数据装置具有实现上述第一方面中写数据方法行为的功能。所述写数据装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的写数据方法。
第三方面,提供了一种计算机设备,该计算机设备的结构中包括处理器和存储器,所述存储器用于存储支持该计算机设备执行上述第一方面所提供的写数据方法的程序,以及存储用于实现上述第一方面所提供的写数据方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的写数据方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的写数据方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
图1是本申请实施例提供的一种文件系统的架构示意图;
图2是本申请实施例提供的一种索引节点中的索引树的示意图;
图3是本申请实施例提供的一种写数据的方法流程图;
图4是本申请实施例提供的一种复制文件场景中的写入数据的示意图;
图5是本申请实施例提供的一种扩展区块中的数据域的示意图;
图6是本申请实施例提供的一种更新扩展区块中的数据域的示意图;
图7是本申请实施例提供的一种复制文件的流程示意图;
图8是本申请实施例提供的另一种更新扩展区块中的数据域的示意图;
图9是本申请实施例提供的一种修改复制文件中的数据的流程示意图;
图10是本申请实施例提供的一种写数据的装置框图;
图11是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细解释说明之前,先对本申请实施例的应用场景进行解释说明。
本申请实施例提供的方法应用于将数据以文件的方式写入文件系统的场景中,为了后续便于说明,在此先对文件系统的架构进行解释说明。
为了便于构建文件系统,预先将诸如磁盘等存储介质中各个分区划分为一个一个块(block),每个块对应存储介质中一段连续的存储空间,基于存储介质上的块便可构建文件系统。图1是本申请实施例提供的一种文件系统的架构示意图。该文件系统对应存储介质上的一个分区。如图1所示,该文件系统包括启动块(boot block)以及各个块组(blockgroup)。图1中将各个块组标记为块组0、块组1、…、块组N。其中,启动块用于存储分区的操作系统类型、分区起始地址、标准中规定的分区的大小等信息,磁盘的每个分区中只有一个启动块。
各个块组包括的信息均可以如图1中的块组0包括的信息所示。如图1所示,块组0中包括超级块(super block)、块组描述符(group descriptions)、数据块位图(datablock bitmap)、索引节点位图(inode bitmap)、索引节点表(inode table)、以及数据块(data blocks)。
其中,超级块占用存储介质上的1个块,用于存储文件系统的相关信息。比如,文件系统的挂载时间,最近一次向文件系统写入文件的时间等等。块组描述符占用存储介质上多个块,用于存储各个块组的描述信息,比如各个块组开始的块的编号等。数据块位图占用存储介质上的1个块,数据块位图中每个比特位表示一个数据块是否被使用,其中1表示相应数据块已使用,0表示相应数据块未使用。索引节点位图占用存储介质上的1个块,索引节点位图中每一个比特位表示一个索引节点是否被使用,其中1表示相应索引节点已使用,0表示相应索引节点未使用。索引节点表占用存储介质上的多个块,用于存储各个索引节点(inode),每个索引节点对应一个文件,索引节点用于存储相应文件中的数据在存储介质上的存储位置信息,也即是索引节点中存储了文件中的数据的索引信息,后续通过索引节点中的数据的索引信息便可从存储介质上读取数据。数据块用于存储文件的内容,也即是存储文件中的数据。
索引节点中包括多个索引块(i_block),为了避免由于索引节点自身容量大小限制导致文件大小的上限过低,索引块可以存储文件中的数据的索引信息,索引块中还可以存储其他索引块的索引信息。
其中,任一数据的索引信息指示存储相应数据的数据块的标识,基于该数据块的标识便可查询到该数据块在存储介质上的具体地址,也即是该数据块的物理地址,从而读取到该数据块中的数据。数据块的标识可以为该数据块的逻辑块号或该数据块在硬盘等存储介质上的位置编号,该位置编号也称为该数据块对应的物理块号。
此外,前述其他索引块的索引信息具体可以理解为:能够基于该索引信息查找到该索引块,进而通过其他索引块来指示数据的索引信息。因此,索引块可以存储数据的索引信息,还可以用于其他索引块的索引信息。
此外,为了便于对索引块中存储的信息进行管理,预先在索引块中存放多个区块(cxtent)以及索引区块(extent-idx),每个区块用于存储数据的索引信息,且每个区块仅用于存储一条数据的索引信息或者一条其他索引块的索引信息。索引区块用于存储一条其他索引块的索引信息,如此索引块中可以通过区块(extent)和索引区块(extent-idx)来区分存储的信息的不同。通过引入索引区块,文件中各个数据的索引信息便可以索引树的形式来存储,也即是索引节点中的索引信息是以索引树的形式存储的。其中,索引树中每个节点代表一个索引块,索引树中叶子节点对应存储数据的索引信息的索引块,索引树除叶子节点之外的其他节点对应存储其他索引块的索引信息的索引块。
为了后续便于说明,在此对文件系统中的区块(extent)和索引区块(extent-idx)中存储的索引信息的数据格式简单说明下。
区块(extent)的数据结构:
Figure BDA0002751833640000061
上述第一行代码指示区块指向的多个连续的数据块中第一个数据块的逻辑编号,逻辑编号是指数据块在整个文件的内容按块分割后的序号。上述第二行代码指示区块指向的多个连续的数据块的数量。上述第三行代码和第四行代码分别指示该区块指向多个数据块对应的物理块号的高16位的比特位和低32位的比特位。
索引区块(extent-idx)的数据结构:
Figure BDA0002751833640000062
上述第一行代码指示索引区块指向的索引块的逻辑编号。上述第二行代码和第三行代码分组合的块号指示索引区块指向的索引块的的物理块号,该索引块的物理块号能够指示索引块在硬盘等存储介质上的具体物理位置。
需要说明的是,上述两个数据格式仅仅是以ext4为例进行说明,并且在文件系统为ext4时,上述区块还可以表征为ext4_extent,上述索引区块可以表征为ext4_extent_idx。其他类型的文件系统中索引节点中的具体数据格式就不再一一举例说明了。
图2是本申请实施例提供的一种索引节点中的索引树的示意图。如图2所示,索引节点中索引块1中包括一个索引区块,该索引区块指向索引块2,该索引区块指向索引块2是指:该索引区块中存储是索引块2的索引信息,后续的“指向索引块”均可以参考该解释。索引块2中包括两个索引区块,这两个索引区块分别指向索引块3和索引块4。索引块3包括多个区块,每个区块指向多个连续的数据块(图2中索引块3中的第一个区块指向标号为1的多个数据块),这多个连续的数据块用于存储一条数据,也即是每个区块用于存储一条数据的索引信息。索引块4中也包括多个区块,每个区块指向多个连续数据块(图2中索引块4中的第一个区块指向标号为2的多个数据块)。
需要说明的是,图2所示的索引树仅仅用于举例说明,并不构成对本申请实施例提供的索引树的具体结构的限定。
本申请实施例提供的方法就应用于上述文件系统中。需要说明的是,本申请实施例中的文件系统可以为第四代扩展文件系统(fourth extended files-ystem,ext4),也可以为其他类型的文件系统,在此不再一一举例说明。
目前,随着信息技术及网络技术的发展,数据量呈现出爆炸式增长。数据存储需求越来越大,导致数据存储需求与存储介质成本之间的矛盾越发激烈,进而使得数据缩减技术显得尤为重要。比如,在通过上述文件系统存储数据后,存储介质上通常存放着大量的重复数据,造成存储介质的大量浪费。比如:由于文件的版本更迭,在文件系统上存放多个文件副本,而这多个文件副本中通常包括相同的数据,从而造成存储介质的大量浪费。基于该技术问题,本申请实施例提供的方法目的在于提供一种能够提高存储介质利用率的写数据的方法。
下面对本申请实施例提供的写数据方法进行详细解释说明。
图3是本申请实施例提供的一种写数据的方法流程图。该方法应用于挂载有文件系统的计算机设备中。如图3所示,该方法包括如下步骤。
步骤301:计算机设备获取待写入的第一文件,第一文件包括第一数据,第一数据和文件系统中存储的第二文件中的第二数据为相同的数据,第二数据存储在文件系统的目标数据块中,文件系统中还包括与第一文件对应的第一索引节点,第一索引节点用于存储第一文件包括的各个数据的索引信息,任一数据的索引信息指示存储相应数据的数据块的标识。
在一种可能的实现方式中,步骤301可以应用在复制文件的场景中。比如,在文件版本更迭过程中,需要复制文件的场景中。此时,待写入的第一文件即为已经存储在文件系统中的第二文件。这种场景下,第一数据为第一文件中的任一数据。
在另一种可能的实现方式中,步骤301还可以应用在写入一个新的文件的场景中。此时,对于待写入的第一文件,遍历文件系统中已经存储的各个文件,然后查询文件系统中是否存在和第一文件中某个数据为相同数据的数据。如果存在相同的数据,则将第一文件中的该相同的数据确定为第一数据,将文件系统中存储的该相同的数据称为第二数据,将第二数据所在的文件称为第二文件。
需要说明的是,上述两种场景仅仅用于举例说明,并不构成对本申请实施例提供的写数据方法的应用场景的限定。本申请实施例提供的写数据方法可以应用在任意存储文件系统中已经存在的数据的场景中。
在通过上述任一场景确定出第一数据后,由于第一数据和第二数据为相同的数据,且第二数据已经存储在文件系统中的目标数据块中了,因此为了避免存储介质的浪费,在本申请实施例中,可以无需重复存储第一数据。通过下述步骤302将第二数据的索引信息作为第一数据的索引信息中即可,如此后续通过第一数据的索引信息便可查询到目标数据块,从而获取到目标数据块中的数据,也即是读取到第一数据。
步骤302:计算机设备将目标数据块的标识作为第一数据的索引信息写入第一索引节点中。
在一种可能的实现方式中,第一索引节点中包括第一索引块,第一索引块中包括与第一文件中的多个数据分别对应的区块,任一数据对应的区块用于存储指示相应数据的索引信息。此时,将目标数据块的标识作为第一数据的索引信息写入第一索引节点中的实现过程可以为:将目标数据块的标识写入第一索引块中与第一数据对应的区块中。
需要说明的是,在写入第一文件之前,已经为第一文件配置有第一索引节点,且第一文件中的各个数据均在第一索引节点有对应的索引块以及区块。因此,在写入第一数据的索引信息时,直接将第一数据的索引信息写入与第一数据对应的第一索引块中的相应区块即可。至于第一索引节点中的各个索引块是否以索引树的方式存储,本申请实施例并不限定。
另外,上述目标数据块的标识在一种可能的实现方式中可以包括上述区块(extent)的数据结构中四行代码所指示的信息。也即是,目标数据块的标识可以通过四个方面的信息来指示。这四个方面的信息包括:存储第一数据的多个连续的数据块中第一个数据块的逻辑编号、这多个连续的数据块的数量、这多个数据块对应的物理块号的高16位的比特位和低32位的比特位。
需要说明的是,上述将目标数据块的标识写入与第一索引块中第一数据对应的区块中仅仅是以ext4为例进行说明。可选地,在其他类型的文件系统中,同样可以基于其他类型的文件系统的索引节点中的数据组织方式,将目标数据块的标识写入用于存储第一数据的索引信息的相应位置处,在此不再一一举例说明。
此外,在上述复制第二文件得到第一文件的场景中,第一文件中每个数据的索引信息均可以参考上述第一数据的索引信息的确定方式,从而实现将第二文件中整个文件的索引信息存储到第一文件的索引节点中。
图4是本申请实施例提供的一种复制文件场景中的写入数据的示意图。当前需要将第二文件复制一份作为第一文件再次存储在文件系统中。如图4所示,将第二文件整个文件的索引信息复制到第一文件的索引节点之后,第一文件的索引节点中各个索引块的区块中最终指向的数据块即为存储第二文件中各个数据的数据块。也即是第一文件的索引节点的索引树的叶子节点指向的数据块和第二文件的索引节点的索引树的叶子节点指向的数据块为同一数据块。比如,图4中第二文件的索引节点中的索引块aaa中第一个区块和第一文件的索引节点中的索引块ccc中第一个区块均指向标号为1的数据块。图4中第二文件的索引节点中的索引块bbb中第一个区块和第一文件的索引节点中的索引块ddd中第一个区块均指向标号为2的数据块。通过这种方式,便可无需将第一文件中的各个数据重新存储在文件系统中,从而节省了计算机设备上的存储介质的存储空间,提高了存储介质的利用率。
在本申请实施例中,由于可以将不同文件中相同的数据存储在同一数据块中,因此不同文件可以共享同一数据块。为了便于后续对共享同一数据块的各个文件进行统一管理,还可以对文件的索引节点中内容进行扩展。扩展索引节点中的内容的目的是为了能够实现通过索引节点查到哪些文件共享了该数据块。下面对本申请实施例的扩展内容进行详细解释说明。
(1)在存储文件的数据的索引信息的区块中扩展共享区块信息,该共享区块信息指示与该区块指向的数据块共享同一数据块的其他数据对应的区块的标识。
这种场景下,由于文件系统中还包括与第二文件对应的第二索引节点,第二索引节点中包括第二索引块,第二索引块中包括与第二文件中多个数据分别对应的区块,因此,在向第一索引块中与第一数据对应的区块中写入第一数据的索引信息之后,还可以向第一索引块中与第一数据对应的区块中写入第一共享区块信息。其中,第一共享区块信息指示与第二数据对应的区块的标识。如此,通过第一数据对应的区块便可查询到其他文件中和第一数据为相同数据的数据对应的区块的相关信息。
在一种可能的方式中,第二数据对应的区块的标识可以通过第二索引块的标识以及第二索引块中与第二数据对应的区块在第二索引块中的序号来指示。也即是,上述第一共享区块信息包括第一共享区块信息包括第二索引块的标识以及第二索引块中与第二数据对应的区块在第二索引块中的序号。
在上述实现方式中,当文件系统为ext4时,相当于在ext4的区块(ext4_extent)中扩展了两个数据域。这两个数据域分别标记为ee_sm_block和ee_index。其中,ee_sm_block中用于存储索引块块号(该索引块中也存在ext4_extent指向相同的数据块)。ee_index中用于存储ee_sm_block中所指示的索引块中第几个ext4_extent和当前ext4_extent指向同一个数据块。比如,对于上述步骤301和步骤302,ee_sm_block中用于存储第二索引块的标识,ee_index中用于存储第二索引块中与第二数据对应的区块在第二索引块中的序号。
可选地,第二数据对应的区块的标识还可以直接为第二数据对应的区块在存储介质上的物理地址,比如为区块对应的物理块的块号。本申请实施例对此不做具体限定。
由于第一文件中的第一数据和第二文件中的第二数据为相同的数据,因此,如果第一索引节点中存储了指示第二文件中和第一数据为相同数据的数据对应的区块的相关信息,那么第二文件的索引节点中也相应存储了指示其他文件中和第二数据为相同数据的数据对应的区块的相关信息,如此共享同一数据块的各个区块中存储的信息可以形成一个环形链。
基于上述场景,在向第一索引块中与第一数据对应的区块中写入第一共享区块信息之后,还可以更新第二索引块中与第二数据对应的区块中的第二共享区块信息,第二共享区块信息指示与第二数据为同一数据的其他数据对应的区块的标识。假设该其他数据仅仅包括上述第一数据,则第二共享区块信息指示上述第一数据对应的区块的标识。关于第一数据对应的区块的标识在此不再重复说明。
(2)在存储数据的索引信息的区块中扩展共享数量信息,该共享数量信息指示除当前文件外数据中包括该区块指向的数据块中的数据的文件的数量。
扩展该共享数量信息的目的在于:后续需要修改文件时,可以基于该共享数量信息快速确定是否存在其他文件中的区块和该区块指向相同的数据块,以便于确定是否需要执行其他操作,具体内容将在后续修改第一文件的实施例中详细说明,在此先不展开阐述。
此时,在向第一数据对应的区块中写入第一数据的索引信息之后,还可以在与第一数据对应的区块中写入第一共享数量信息,第一共享数量信息指示除第一文件外数据中包括目标数据块中的数据的文件的数量。
在上述实现方式中,当文件系统为ext4时,相当于在ext4的区块(ext4_extent)中扩展了另一个数据域,该数据域可以标记为ee_count。其中,ee_count表征该共享数据,ee_count表示ee_count+1个文件共享该数据块,ee_count为0表示当前文件独占该数据块。
同样地,基于上环形链的配置,在与第一数据对应的区块中写入第一共享数量信息之后,还可以更新第二索引块中与第二数据对应的区块中的第二共享数量信息,第二共享数量信息指示除第二文件外数据中包括目标数据块中的数据的文件的数量。以使共享数量之间也形成了环形链。
需要说明的是,上述在索引节点中扩展的内容(1)和内容(2)可以同时配置,也可以仅仅配置其中的一个,本申请实施例对此不做限定。当仅仅扩展上述内容(1)时,可以基于扩展的共享区块信息解析出共享数量,在此不再详细说明。当仅仅扩展上述内容(2)时,可以通过遍历各个文件的索引节点来查询到共享区块信息,在此同样不再详细说明。
当上述在索引节点中扩展的内容(1)和内容(2)同时配置时,如果文件系统为ext4,相当于在ext4的区块(ext4_extent)中扩展了三个数据域。这三个数据域分别为上述的ee_sm_block、ee_index以及ee_count。
此时,扩展后的区块(ext4_extent)的数据结构如下:
Figure BDA0002751833640000101
上述加粗的四行代码中第二行代码和第三行代码用于表征ee_sm_block中的索引块编号的高比特位和低比特位。上述除了加粗外其他代码前述已经解释说明,在此不再赘述。
假设同时扩展了共享区块信息和共享数量信息,下面以复制第二文件中的数据到第一文件为例来说明,对上述过程进一步进行详细说明。
在写入第二文件时,在指向各个数据块的区块(extent)中将上述扩展的三个数据域置位为0,表明当前没有其他文件共享该数据块。如图5所示,在第二文件的索引节点中,任一指向数据块的区块(extent)中除了包括该数据块的相关信息(该相关信息具体是指存储的数据的索引信息,索引信息已经在前述区块的数据结构中已经解释说明),还包括三个数据域,分别为“block:0”“index:0”“count:0”,指示当前没有其他文件中数据和该区块指向的数据块中的数据一致。图5中的“0,0,0”分别和前述“block:0”“index:0”“count:0”对应,图5中仅仅是为了描述方便进行了简写。
当复制第二文件中的数据到第一文件时,除了将第二文件的第二索引节点中的索引信息全部复制到第一文件的第一索引节点中,还分别更新了第一索引节点中区块中扩展的三个数据域中的信息和第二索引节点中区块中扩展的三个数据域。如图6所示,第二文件的索引块aaa中的第一个区块和第二文件的索引块ccc中第一个区块指向相同的数据块。因此,第二文件的索引块aaa中的第一个区块中的“block:0”“index:0”“count:0”更新为“block:ccc”“index:1”“count:1”。第一文件的索引块ccc中的第一个区块中的“block:0”“index:0”“count:0”更新为“block:aaa”“index:1”“count:1”。
此外,如图6所示,第二文件的索引块bbb中的第一个区块和第二文件的索引块ddd中第一个区块指向相同的数据块。因此,第二文件的索引块bbb中的第一个区块中的“block:0”“index:0”“count:0”更新为“block:ddd”“index:1”“count:1”。第一文件的索引块ddd中的第一个区块中的“block:0”“index:0”“count:0”更新为“block:bbb”“index:1”“count:1”。
此时,如图6中点画连接线所示,扩展这三个数据域在索引树中形成了一个环形链。
上述内容还可以通过图7所示的流程图来表示。关于图7中的内容在此就不再详细说明了。
需要说明的是,上述实施例是以复制第二文件中的数据到第一文件为例进行说明。可选地,在待写入的第一文件中仅仅部分数据和第二文件中的数据相同的情况下,对于相同的数据参考上述方式写入。对于不同的数据为该不同的数据分配未使用的数据块来写入即可,具体实现方式在此不再详细说明。
此外,在通过图3所示的实施例将第一文件写入文件系统后,如果后续需要对第一文件中的第一数据进行修改,这样修改后的第一数据和第二文件中的第二数据将不再为相同的数据,因此需要重新写入修改后的第一数据,并对第一数据的索引信息进行相应修改。
在一种可能的实现方式中,上述重新写入修改后的第一数据,并对第一数据的索引信息进行相应修改的实现过程为:在检测到基于第一数据的数据修改指令的情况下,获取为修改后的第一数据配置的数据块,将修改后的第一数据写入为该配置的数据块中,基于该配置的数据块的标识更新第一数据的索引信息。
上述基于该配置的数据块的标识更新第一数据的索引信息是指:将原先目标数据块的标识替换为该配置的数据块的标识来作为第一数据的索引信息。如此,后续基于第一数据的索引信息,查找到的是修改后的第一数据。
此外,基于上述内容可知,各个文件的索引节点中还可以扩展共享区块信息。这种场景下,在写入修改后的第一数据后,由于修改后的第一数据和第二文件中的第二数据将不再为相同的数据,因此,还需清除与第一数据对应的区块中的第一共享区块信息,第一共享区块信息指示与第二数据对应的区块的标识。
此外,还需对第二文件中原有的共享区块信息进行更新。具体地,更新第二索引块中与第二数据对应的区块中的第二共享区块信息,第二共享区块信息指示与第二数据为同一数据的其他数据对应的区块的标识。更新后的第二共享区块信息中将不再包括与第一数据对应的区块的相关信息,从而来指示第二数据和第一数据不再是相同的数据。
另外,基于上述内容可知,各个文件的索引节点中还可以扩展共享数量信息。这种场景下,在写入修改后的第一数据后,由于修改后的第一数据和第二文件中的第二数据将不再为相同的数据,因此,还需清除与第一数据对应的区块中的第一共享数量信息,第一共享数量信息指示除第一文件外数据中包括目标数据块中的数据的文件的数量。
此外,还需对第二文件中原有的共享数量信息进行更新。具体地,更新第二索引块中与第二数据对应的区块中的第二共享数量信息,第二共享数量信息指示除第二文件外数据中包括目标数据块中的数据的文件的数量。
需要说明的是,上述更新共享区块信息或共享数量信息均是基于前述在区块中扩展的内容来定的,在此就不再一一详细说明。
假设同时扩展了共享区块信息和共享数量信息,下面以修改图6中的第一文件中索引块ccc中的第一个区块对应的数据为例详细说明上述过程。
如图8所示,修改后的第一数据存储在重新分配的数据块(图8中标记为3的数据块)中。此时,如图8所示,索引块ccc中第一个区块将不再指向原来的数据块(图8中标记为1的数据块),而是指向重新分配的数据块(图8中标记为3的数据块),从而表征修改后的第一数据存储在重新分配的数据块中。
此时,上述清除第一共享区块信息和第一共享数量信息具体是指:将第一文件的索引块ccc中的第一个区块中的“block:aaa”“index:1”“count:1”更新为“block:0”“index:0”“count:0”。
上述更新第二共享区块信息和第二共享数量信息是指:将第二文件的索引块aaa中的第一个区块中的“block:ccc”“index:1”“count:1”更新为“block:0”“index:0”“count:0”。
此时,如图8所示,相对于图6中的索引块aaa中第一个区块和索引块ccc中第一个区块之间的环形链,图8中索引块aaa中第一个区块和索引块ccc中第一个区块之间不再有环形链了。
此外,在修改第一文件的过程中,为了便于快速确定第一文件中哪些数据和其他文件的数据共享相同的数据块,以便于确定是否需要执行上述清除和更新共享区块信息以及共享数量信息。对于第一文件中任一数据,先基于该数据对应的区块中的共享数量信息中确定共享数量是否大于0,如果大于0,则执行上述清除和更新的相关操作。如果该共享数量等于0,则直接将该修改后的数据写入新分配的数据块之后即可。
上述内容还可以通过图9所示的流程图来表示。关于图9中的内容在此就不再详细说明了。
综上所述,在本申请实施例中,由于第一数据和第二数据为相同的数据,且第二数据已经存储在文件系统中的目标数据块中了,因此在本申请实施例中,可以无需重复存储第一数据。通过将目标数据块的标识作为第一数据的索引信息中即可,如此后续通过第一数据的索引信息便可查询到目标数据块,从而获取到目标数据块中的数据,也即是读取到第一数据。这样可以避免存储介质的浪费。此外目标数据块的标识可以指示目标数据块在存储介质上的具体位置,也即是,目标数据块的标识可以作为目标数据块中存储的数据的索引信息,因此,在复制文件的场景中,无需将文件的全部数据重新存储到文件系统中,只需将原文件整个文件的索引信息存储到复制后的文件的索引信息即可。这样存储介质上只需要存储一个文件的数据即可,因此提高了存储介质的利用率。
图10是本申请实施例提供的一种写数据装置的示意图。该装置部署在计算机设备中,该装置计算机设备上挂载有文件系统。如图10所示,该装置1000包括如下几个模块。
获取模块1001,用于获取待写入的第一文件。具体实现方式可以参考图3实施例中的步骤301。
其中,该装置第一文件包括第一数据,该装置第一数据和该装置文件系统中存储的第二文件中的第二数据为相同的数据,该装置第二数据存储在该装置文件系统的目标数据块中,该装置文件系统中还包括与该装置第一文件对应的第一索引节点,该装置第一索引节点用于存储该装置第一文件包括的各个数据的索引信息,任一数据的索引信息指示存储相应数据的数据块的标识;
写入模块1002,用于将该装置目标数据块的标识作为该装置第一数据的索引信息写入该装置第一索引节点中。具体实现方式可以参考图3实施例中的步骤302。
可选地,该装置第一索引节点中包括第一索引块,该装置第一索引块中包括与该装置第一文件中的多个数据分别对应的区块,任一数据对应的区块用于存储指示相应数据的索引信息;该装置写入模块用于:
将该装置目标数据块的标识写入与该装置第一数据对应的区块中;
该装置文件系统中还包括与该装置第二文件对应的第二索引节点,该装置第二索引节点中包括第二索引块,该装置第二索引块中包括与该装置第二文件中多个数据分别对应的区块,该装置写入模块还用于:
在与该装置第一数据对应的区块中写入第一共享区块信息,该装置第一共享区块信息指示与该装置第二数据对应的区块的标识。
可选地,该装置第一共享区块信息包括该装置第二索引块的标识以及该装置第二索引块中与该装置第二数据对应的区块在该装置第二索引块中的序号。
可选地,该装置还包括:
更新模块,用于更新该装置第二索引块中与该装置第二数据对应的区块中的第二共享区块信息,该装置第二共享区块信息指示与该装置第二数据为同一数据的其他数据对应的区块的标识。
可选地,该装置写入模块还用于:
在与该装置第一数据对应的区块中写入第一共享数量信息,该装置第一共享数量信息指示除该装置第一文件外数据中包括该装置目标数据块中的数据的文件的数量。
可选地,该装置还包括:
更新模块,用于更新该装置第二索引块中与该装置第二数据对应的区块中的第二共享数量信息,该装置第二共享数量信息指示除该装置第二文件外数据中包括该装置目标数据块中的数据的文件的数量。
可选地,其特征在于,
该装置获取模块,还用于在检测到基于该装置第一数据的数据修改指令的情况下,获取为修改后的第一数据配置的数据块;
该装置写入模块,还用于将该装置修改后的第一数据写入为配置的数据块中;
该装置还包括更新模块,用于基于该装置配置的数据块的标识更新该装置第一数据的索引信息。
可选地,该装置第一索引节点中包括第一索引块,该装置第一索引块中包括与该装置第一文件中的多个数据分别对应的区块,任一数据对应的区块用于存储指示相应数据的索引信息,该装置文件系统中还包括与该装置第二文件对应的第二索引节点,该装置第二索引节点中包括第二索引块,该装置第二索引块中包括与该装置第二文件中多个数据分别对应的区块;
该装置还包括:
清除模块,用于清除与该装置第一数据对应的区块中的第一共享区块信息,该装置第一共享区块信息指示与该装置第二数据对应的区块的标识。
可选地,该装置更新模块还用于:
更新该装置第二索引块中与该装置第二数据对应的区块中的第二共享区块信息,该装置第二共享区块信息指示与该装置第二数据为同一数据的其他数据对应的区块的标识。
可选地,该装置还包括:
清除与该装置第一数据对应的区块中的第一共享数量信息,该装置第一共享数量信息指示除该装置第一文件外数据中包括该装置目标数据块中的数据的文件的数量。
可选地,该装置清除模块还用于:
更新该装置第二索引块中与该装置第二数据对应的区块中的第二共享数量信息,该装置第二共享数量信息指示除该装置第二文件外数据中包括该装置目标数据块中的数据的文件的数量。
综上所述,在本申请实施例中,由于第一数据和第二数据为相同的数据,且第二数据已经存储在文件系统中的目标数据块中了,因此在本申请实施例中,可以无需重复存储第一数据。通过将目标数据块的标识作为第一数据的索引信息中即可,如此后续通过第一数据的索引信息便可查询到目标数据块,从而获取到目标数据块中的数据,也即是读取到第一数据。这样可以避免存储介质的浪费。此外目标数据块的标识可以指示目标数据块在存储介质上的具体位置,也即是,目标数据块的标识可以作为目标数据块中存储的数据的索引信息,因此,在复制文件的场景中,无需将文件的全部数据重新存储到文件系统中,只需将原文件整个文件的索引信息存储到复制后的文件的索引信息即可。这样存储介质上只需要存储一个文件的数据即可,因此提高了存储介质的利用率。
需要说明的是:上述实施例提供的写数据装置在写数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的写数据装置与写数据方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图11是本申请施例提供的一种计算机设备的结构示意图。前述实施例中的文件系统可以挂载在图11所示的计算机设备上,从而使得图11所示的计算机设备来实现本申请实施例提供的写数据方法。参见图11,该计算机设备包括至少一个处理器1101,通信总线1102、存储器1103以及至少一个通信接口1104。
处理器1101可以是一个通用中央处理器(central processing unit,CPU)、特定应用集成电路(application-specific integrated circuit,ASIC)或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线1102可包括一通路,在上述组件之间传送信息。
存储器1103可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器1103可以是独立存在,通过通信总线1102与处理器1101相连接。存储器1103也可以和处理器1101集成在一起。
其中,存储器1103用于存储执行本申请方案的程序代码,并由处理器1101来控制执行。处理器1101用于执行存储器1103中存储的程序代码。程序代码中可以包括一个或多个软件模块。
通信接口1104,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
在具体实现中,作为一种实施例,计算机设备可以包括多个处理器,例如图11中所示的处理器1101和处理器1105。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
上述的计算机设备可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,计算机设备可以是台式机、便携式电脑、网络服务器、掌上电脑(personaldigital assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备或者嵌入式设备。本申请实施例不限定计算机设备的类型。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,DVD))、或者半导体介质(例如:固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述为本申请提供的实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。

Claims (24)

1.一种写数据方法,其特征在于,应用于计算机设备,所述计算机设备上挂载有文件系统,所述方法包括:
获取待写入的第一文件;
其中,所述第一文件包括第一数据,所述第一数据和所述文件系统中存储的第二文件中的第二数据为相同的数据,所述第二数据存储在所述文件系统的目标数据块中,所述文件系统中还包括与所述第一文件对应的第一索引节点,所述第一索引节点用于存储所述第一文件包括的各个数据的索引信息,任一数据的索引信息指示存储相应数据的数据块的标识;
将所述目标数据块的标识作为所述第一数据的索引信息写入所述第一索引节点中。
2.如权利要求1所述的方法,其特征在于,所述第一索引节点中包括第一索引块,所述第一索引块中包括与所述第一文件中的多个数据分别对应的区块,任一数据对应的区块用于存储指示相应数据的索引信息;所述将所述目标数据块的标识作为所述第一数据的索引信息写入所述第一索引节点中,包括:
将所述目标数据块的标识写入与所述第一数据对应的区块中;
所述文件系统中还包括与所述第二文件对应的第二索引节点,所述第二索引节点中包括第二索引块,所述第二索引块中包括与所述第二文件中多个数据分别对应的区块,所述方法还包括:
在与所述第一数据对应的区块中写入第一共享区块信息,所述第一共享区块信息指示与所述第二数据对应的区块的标识。
3.如权利要求2所述的方法,其特征在于,所述第一共享区块信息包括所述第二索引块的标识以及所述第二索引块中与所述第二数据对应的区块在所述第二索引块中的序号。
4.如权利要求2或3所述的方法,其特征在于,所述方法还包括:
更新所述第二索引块中与所述第二数据对应的区块中的第二共享区块信息,所述第二共享区块信息指示与所述第二数据为同一数据的其他数据对应的区块的标识。
5.如权利要求2至4任一所述的方法,其特征在于,所述方法还包括:
在与所述第一数据对应的区块中写入第一共享数量信息,所述第一共享数量信息指示除所述第一文件外数据中包括所述目标数据块中的数据的文件的数量。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
更新所述第二索引块中与所述第二数据对应的区块中的第二共享数量信息,所述第二共享数量信息指示除所述第二文件外数据中包括所述目标数据块中的数据的文件的数量。
7.如权利要求1至6任一所述的方法,其特征在于,所述方法还包括:
在检测到基于所述第一数据的数据修改指令的情况下,获取为修改后的第一数据配置的数据块;
将所述修改后的第一数据写入为配置的数据块中;
基于所述配置的数据块的标识更新所述第一数据的索引信息。
8.如权利要求7所述的方法,其特征在于,所述第一索引节点中包括第一索引块,所述第一索引块中包括与所述第一文件中的多个数据分别对应的区块,任一数据对应的区块用于存储指示相应数据的索引信息,所述文件系统中还包括与所述第二文件对应的第二索引节点,所述第二索引节点中包括第二索引块,所述第二索引块中包括与所述第二文件中多个数据分别对应的区块;
所述方法还包括:
清除与所述第一数据对应的区块中的第一共享区块信息,所述第一共享区块信息指示与所述第二数据对应的区块的标识。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
更新所述第二索引块中与所述第二数据对应的区块中的第二共享区块信息,所述第二共享区块信息指示与所述第二数据为同一数据的其他数据对应的区块的标识。
10.如权利要求8或9任一所述的方法,其特征在于,所述方法还包括:
清除与所述第一数据对应的区块中的第一共享数量信息,所述第一共享数量信息指示除所述第一文件外数据中包括所述目标数据块中的数据的文件的数量。
11.如权利要求10所述的方法,其特征在于,所述方法还包括:
更新所述第二索引块中与所述第二数据对应的区块中的第二共享数量信息,所述第二共享数量信息指示除所述第二文件外数据中包括所述目标数据块中的数据的文件的数量。
12.一种写数据装置,其特征在于,所述装置部署在计算机设备中,所述计算机设备上挂载有文件系统,所述装置包括:
获取模块,用于获取待写入的第一文件;
其中,所述第一文件包括第一数据,所述第一数据和所述文件系统中存储的第二文件中的第二数据为相同的数据,所述第二数据存储在所述文件系统的目标数据块中,所述文件系统中还包括与所述第一文件对应的第一索引节点,所述第一索引节点用于存储所述第一文件包括的各个数据的索引信息,任一数据的索引信息指示存储相应数据的数据块的标识;
写入模块,用于将所述目标数据块的标识作为所述第一数据的索引信息写入所述第一索引节点中。
13.如权利要求12所述的装置,其特征在于,所述第一索引节点中包括第一索引块,所述第一索引块中包括与所述第一文件中的多个数据分别对应的区块,任一数据对应的区块用于存储指示相应数据的索引信息;所述写入模块用于:
将所述目标数据块的标识写入与所述第一数据对应的区块中;
所述文件系统中还包括与所述第二文件对应的第二索引节点,所述第二索引节点中包括第二索引块,所述第二索引块中包括与所述第二文件中多个数据分别对应的区块,所述写入模块还用于:
在与所述第一数据对应的区块中写入第一共享区块信息,所述第一共享区块信息指示与所述第二数据对应的区块的标识。
14.如权利要求13所述的装置,其特征在于,所述第一共享区块信息包括所述第二索引块的标识以及所述第二索引块中与所述第二数据对应的区块在所述第二索引块中的序号。
15.如权利要求13或14所述的装置,其特征在于,所述装置还包括:
更新模块,用于更新所述第二索引块中与所述第二数据对应的区块中的第二共享区块信息,所述第二共享区块信息指示与所述第二数据为同一数据的其他数据对应的区块的标识。
16.如权利要求13至15任一所述的装置,其特征在于,所述写入模块还用于:
在与所述第一数据对应的区块中写入第一共享数量信息,所述第一共享数量信息指示除所述第一文件外数据中包括所述目标数据块中的数据的文件的数量。
17.如权利要求16所述的装置,其特征在于,所述装置还包括:
更新模块,用于更新所述第二索引块中与所述第二数据对应的区块中的第二共享数量信息,所述第二共享数量信息指示除所述第二文件外数据中包括所述目标数据块中的数据的文件的数量。
18.如权利要求12至17任一所述的装置,其特征在于,
所述获取模块,还用于在检测到基于所述第一数据的数据修改指令的情况下,获取为修改后的第一数据配置的数据块;
所述写入模块,还用于将所述修改后的第一数据写入为配置的数据块中;
所述装置还包括更新模块,用于基于所述配置的数据块的标识更新所述第一数据的索引信息。
19.如权利要求18所述的装置,其特征在于,所述第一索引节点中包括第一索引块,所述第一索引块中包括与所述第一文件中的多个数据分别对应的区块,任一数据对应的区块用于存储指示相应数据的索引信息,所述文件系统中还包括与所述第二文件对应的第二索引节点,所述第二索引节点中包括第二索引块,所述第二索引块中包括与所述第二文件中多个数据分别对应的区块;
所述装置还包括:
清除模块,用于清除与所述第一数据对应的区块中的第一共享区块信息,所述第一共享区块信息指示与所述第二数据对应的区块的标识。
20.如权利要求19所述的装置,其特征在于,所述更新模块还用于:
更新所述第二索引块中与所述第二数据对应的区块中的第二共享区块信息,所述第二共享区块信息指示与所述第二数据为同一数据的其他数据对应的区块的标识。
21.如权利要求19或20任一所述的装置,其特征在于,所述装置还包括:
清除与所述第一数据对应的区块中的第一共享数量信息,所述第一共享数量信息指示除所述第一文件外数据中包括所述目标数据块中的数据的文件的数量。
22.如权利要求21所述的装置,其特征在于,所述清除模块还用于:
更新所述第二索引块中与所述第二数据对应的区块中的第二共享数量信息,所述第二共享数量信息指示除所述第二文件外数据中包括所述目标数据块中的数据的文件的数量。
23.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器;
所述存储器用于存储支持所述计算机设备执行权利要求1-11任一项所述的方法的程序,以及存储用于实现权利要求1-11任一项所述的方法所涉及的数据;
所述处理器被配置为用于执行所述存储器中存储的程序。
24.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行权利要求1-11任一项所述的方法。
CN202011187762.9A 2020-10-30 2020-10-30 写数据方法、装置、计算机设备及存储介质 Pending CN114443598A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011187762.9A CN114443598A (zh) 2020-10-30 2020-10-30 写数据方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011187762.9A CN114443598A (zh) 2020-10-30 2020-10-30 写数据方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN114443598A true CN114443598A (zh) 2022-05-06

Family

ID=81358291

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011187762.9A Pending CN114443598A (zh) 2020-10-30 2020-10-30 写数据方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN114443598A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023237047A1 (zh) * 2022-06-10 2023-12-14 华为技术有限公司 数据处理方法及电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023237047A1 (zh) * 2022-06-10 2023-12-14 华为技术有限公司 数据处理方法及电子设备

Similar Documents

Publication Publication Date Title
CN108090168B (zh) 一种通用f2fs文件系统解析方法、终端设备及存储介质
US11003625B2 (en) Method and apparatus for operating on file
EP2577515A1 (en) Method and apparatus for eventually consistent delete in a distributed data store
CN112565325B (zh) 镜像文件管理方法、装置及系统、计算机设备、存储介质
WO2017050064A1 (zh) 共享内存数据库的内存管理方法及装置
CN113553300B (zh) 文件的处理方法、装置、可读介质和电子设备
CN107798063B (zh) 快照处理方法和快照处理装置
CN115774703A (zh) 信息处理方法及装置
CN110569218B (zh) 一种ext文件系统离线修改方法、装置及存储介质
CN115840731A (zh) 文件处理方法、计算设备及计算机存储介质
CN112650692A (zh) 堆内存分配方法、装置及存储介质
CN116662019B (zh) 请求的分配方法、装置、存储介质及电子装置
CN114443598A (zh) 写数据方法、装置、计算机设备及存储介质
WO2016192057A1 (zh) 索引表的更新方法和设备
CN112115521B (zh) 数据访问方法及装置
US10311026B2 (en) Compressed data layout for optimizing data transactions
CN112000850A (zh) 进行数据处理的方法、装置、系统及设备
US10146791B2 (en) Open file rebalance
CN116010345A (zh) 一种实现流批一体数据湖的表服务方案的方法、装置及设备
CN111339061B (zh) 一种分布式数据库的数据迁移方法及系统
CN115904211A (zh) 一种存储系统、数据处理方法及相关设备
US20220365905A1 (en) Metadata processing method and apparatus, and a computer-readable storage medium
CN114297196A (zh) 元数据存储方法、装置、电子设备及存储介质
CN109857719B (zh) 分布式文件处理方法、装置、计算机设备以及存储介质
US10853320B1 (en) Scavenging directories for free space

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