CN106372183A - 文件写入方法及装置 - Google Patents

文件写入方法及装置 Download PDF

Info

Publication number
CN106372183A
CN106372183A CN201610789003.7A CN201610789003A CN106372183A CN 106372183 A CN106372183 A CN 106372183A CN 201610789003 A CN201610789003 A CN 201610789003A CN 106372183 A CN106372183 A CN 106372183A
Authority
CN
China
Prior art keywords
block
file
size
identification
written
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
CN201610789003.7A
Other languages
English (en)
Other versions
CN106372183B (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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software 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 Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201610789003.7A priority Critical patent/CN106372183B/zh
Publication of CN106372183A publication Critical patent/CN106372183A/zh
Application granted granted Critical
Publication of CN106372183B publication Critical patent/CN106372183B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/182Distributed file systems
    • 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

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

本公开是关于一种文件写入方法及装置,属于互联网技术领域。所述方法包括:在未确定块尺寸Block Size的前提下,将待写入的文件完整地写入到数据节点的块Block中;如果所述Block当前的尺寸小于预设阈值,则将所述Block的块标识添加至可用块标识池,所述可用块标识池中的块标识是指可用于写入文件的Block的块标识;如果所述Block当前的尺寸不小于所述预设阈值,则取消将所述Block的块标识添加至所述可用块标识池的操作,以保证不再向所述Block写入文件。本公开通过不预先确定Block Size,而是将文件完整地写入到Block中之后再根据预设阈值确定是否要继续向Block中写入文件,保证了无论要写入的文件尺寸多大,该文件均能够完整地存放在一个Block中,便于该文件的读写。

Description

文件写入方法及装置
技术领域
本公开是关于互联网技术领域,具体来说是关于一种文件写入方法及装置。
背景技术
随着互联网中数据量的成倍增长,采用硬盘存储文件的方式已不足以满足大量文件的存储需求,而分布式文件系统有效解决了这一存储难题。分布式文件系统包括数据节点,客户端可以在数据节点中创建Block(块),在Block中写入文件的数据。
通常情况下会预先确定Block Size(块尺寸),当要写入的文件尺寸大于该固定的块尺寸时,一个Block不足以存放完整的文件,此时会将该文件划分为多个子文件,分别写入到多个Block中。那么,当要读取该文件时,需要从该多个Block中分别读取子文件,直至将整个文件读取完成。
发明内容
为了解决相关技术中存在的问题,本公开提供了一种文件写入方法及装置。所述技术方案如下:
根据本公开实施例的第一方面,提供了一种文件写入方法,所述方法包括:
在未确定块尺寸Block Size的前提下,将待写入的文件完整地写入到数据节点的块Block中;
如果所述Block当前的尺寸小于预设阈值,则将所述Block的块标识添加至可用块标识池,所述可用块标识池中的块标识是指可用于写入文件的Block的块标识;
如果所述Block当前的尺寸不小于所述预设阈值,则取消将所述Block的块标识添加至所述可用块标识池的操作,以保证不再向所述Block写入文件。
在另一实施例中,所述将待写入的文件完整地写入到数据节点的块Block中,包括:
从所述可用块标识池中提取一个块标识,将所述文件完整地写入到所述块标识指示的Block中;或者,
在所述数据节点中创建一个Block,将所述文件完整地写入到创建的所述Block中。
在另一实施例中,所述将待写入的文件完整地写入到数据节点的块Block中,包括:
向所述数据节点发送文件写入请求,所述文件写入请求携带所述Block的块标识对应的位置信息以及待写入的文件,所述数据节点用于根据所述位置信息,将所述文件写入到所述Block中。
在另一实施例中,所述方法还包括:
获取所述Block在写入所述文件之前的尺寸以及所述文件的尺寸;
计算所述Block在写入所述文件之前的尺寸与所述文件的尺寸之和,得到所述Block当前的尺寸。
在另一实施例中,所述方法还包括:
获取待读取的文件对应的块标识、第一偏移地址和第二偏移地址,所述第一偏移地址用于确定所述文件在Block中的位置,所述第二偏移地址用于确定本次待读取的文件数据在所述文件中的位置;
向所述数据节点发送文件读取请求,所述文件读取请求携带所述块标识、所述第一偏移地址和所述第二偏移地址,所述数据节点用于根据所述块标识确定所述文件所在的Block,根据所述第一偏移地址和所述第二偏移地址,确定所述文件中待读取的文件数据;
接收所述数据节点返回的文件数据。
根据本公开实施例的第二方面,提供了一种文件写入装置,所述装置包括:
写入模块,用于在未确定块尺寸Block Size的前提下,将待写入的文件完整地写入到数据节点的块Block中;
添加模块,用于如果所述Block当前的尺寸小于预设阈值,则将所述Block的块标识添加至可用块标识池,所述可用块标识池中的块标识是指可用于写入文件的Block的块标识;
所述添加模块,用于如果所述Block当前的尺寸不小于所述预设阈值,则取消将所述Block的块标识添加至所述可用块标识池的操作,以保证不再向所述Block写入文件。
在另一实施例中,所述写入模块还用于从所述可用块标识池中提取一个块标识,将所述文件完整地写入到所述块标识指示的Block中;或者,在所述数据节点中创建一个Block,将所述文件完整地写入到创建的所述Block中。
在另一实施例中,所述写入模块还用于向所述数据节点发送文件写入请求,所述文件写入请求携带所述Block的块标识对应的位置信息以及待写入的文件,所述数据节点用于根据所述位置信息,将所述文件写入到所述Block中。
在另一实施例中,所述装置还包括:
第一获取模块,用于获取所述Block在写入所述文件之前的尺寸以及所述文件的尺寸;
计算模块,用于计算所述Block在写入所述文件之前的尺寸与所述文件的尺寸之和,得到所述Block当前的尺寸。
在另一实施例中,所述装置还包括:
第二获取模块,用于获取待读取的文件对应的块标识、第一偏移地址和第二偏移地址,所述第一偏移地址用于确定所述文件在Block中的位置,所述第二偏移地址用于确定本次待读取的文件数据在所述文件中的位置;
发送模块,用于向所述数据节点发送文件读取请求,所述文件读取请求携带所述块标识、所述第一偏移地址和所述第二偏移地址,所述数据节点用于根据所述块标识确定所述文件所在的Block,根据所述第一偏移地址和所述第二偏移地址,确定所述文件中待读取的文件数据;
接收模块,用于接收所述数据节点返回的文件数据。
根据本公开实施例的第三方面,提供了一种文件写入装置,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在未确定块尺寸Block Size的前提下,将待写入的文件完整地写入到数据节点的块Block中;
如果所述Block当前的尺寸小于预设阈值,则将所述Block的块标识添加至可用块标识池,所述可用块标识池中的块标识是指可用于写入文件的Block的块标识;
如果所述Block当前的尺寸不小于所述预设阈值,则取消将所述Block的块标识添加至所述可用块标识池的操作,以保证不再向所述Block写入文件。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开提供的方法和装置,通过在未确定Block Size的前提下,将待写入的文件完整地写入到数据节点的Block中,并在该Block当前的尺寸不小于该预设阈值时,取消将该Block的块标识添加至该可用块标识池的操作,从而保证了不再向该Block写入文件。本公开提供了一种新的写入文件的方式,不预先确定Block Size,而是直接将文件完整地写入到Block中,在写入之后再根据预设阈值确定是否要继续向Block中写入文件,保证了无论要写入的文件尺寸多大,该文件均能够完整地存放在一个Block中,便于文件的读写。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种文件写入方法的流程图;
图2是根据一示例性实施例示出的一种文件写入方法的流程图;
图3是根据一示例性实施例示出的一种文件写入装置的框图;
图4是根据一示例性实施例示出的一种文件写入装置的框图;
图5是根据一示例性实施例示出的一种文件写入装置的框图;
图6是根据一示例性实施例示出的一种文件写入装置的框图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本公开做进一步详细说明。在此,本公开的示意性实施方式及其说明用于解释本公开,但并不作为对本公开的限定。
本公开实施例提供一种文件写入方法及装置,以下结合附图对本公开进行详细说明。
图1是根据一示例性实施例示出的一种文件写入方法的流程图,如图1所示,文件写入方法用于客户端中,该文件写入方法包括以下步骤:
在步骤101中,在未确定块尺寸Block Size的前提下,将待写入的文件完整地写入到数据节点的块Block中。
在步骤102中,如果该Block当前的尺寸小于预设阈值,则将该Block的块标识添加至可用块标识池,该可用块标识池中的块标识是指可用于写入文件的Block的块标识。
在步骤103中,如果该Block当前的尺寸不小于该预设阈值,则取消将该Block的块标识添加至该可用块标识池的操作,以保证不再向该Block写入文件。
相关技术中,在创建文件系统时会先确定Block Size,Block Size表示Block的最大尺寸,其作用在于:在向任一Block中写入文件的过程中,如果Block当前的尺寸还未达到该Block Size,则可以继续写入文件,而一旦Block当前的尺寸达到了该Block Size,将停止在该Block中的写入过程,而将该文件剩余的数据写入到下一个Block中。
而本实施例中并未确定Block Size,当要写入文件时不会受到Block Size的限制,而是直接将该文件完整地写入到某一个Block中,只要文件中的数据未写入完成就不会停止写入过程。当整个文件写入完成之后再根据预设阈值来决定是否要继续向该Block中写入其他的文件。那么,无论该文件是较大尺寸的文件还是较小尺寸的文件,均会完整地存放在一个Block中,而不会出现一个文件存放于多个Block的情况。
本实施例提供的方法,通过在未确定Block Size的前提下,将待写入的文件完整地写入到数据节点的Block中,之后在该Block当前的尺寸不小于该预设阈值时,取消将该Block的块标识添加至该可用块标识池的操作,从而保证了不再向该Block写入文件。本公开提供了一种新的写入文件的方式,摆脱了Block Size的限制,而是将文件完整地写入到Block中之后再根据预设阈值确定是否要继续向Block中写入文件,保证了无论要写入的文件尺寸多大,该文件均能够完整地存放在一个Block中,便于该文件的读写。
在一种可能的实现方式中,该将待写入的文件完整地写入到数据节点的Block中,包括:
从该可用块标识池中提取一个块标识,将该文件完整地写入到该块标识指示的Block中;或者,
在该数据节点中创建一个Block,将该文件完整地写入到创建的该Block中。
在另一种可能的实现方式中,该将待写入的文件完整地写入到数据节点的块Block中,包括:
向该数据节点发送文件写入请求,该文件写入请求携带根据该Block的块标识对应的位置信息以及待写入的文件,该数据节点用于根据该位置信息,将该文件写入到该Block中。
在另一种可能的实现方式中,该方法还包括:
获取该Block在写入该文件之前的尺寸以及该文件的尺寸;
计算该Block在写入该文件之前的尺寸与该文件的尺寸之和,得到该Block当前的尺寸。
在另一种可能的实现方式中,该方法还包括:
获取待读取的文件对应的块标识、第一偏移地址和第二偏移地址,该第一偏移地址用于确定该文件在Block中的位置,该第二偏移地址用于确定本次待读取的文件数据在该文件中的位置;
向该数据节点发送文件读取请求,该文件读取请求携带该块标识、该第一偏移地址和该第二偏移地址,该数据节点用于根据该块标识确定该文件所在的Block,根据该第一偏移地址和该第二偏移地址,确定该文件中待读取的文件数据;
接收该数据节点返回的文件数据。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
图2是根据一示例性实施例示出的一种文件写入方法的流程图,如图2所示,文件写入方法用于客户端(Client)中,该文件写入方法包括以下步骤:
在步骤201中,客户端在未确定块尺寸Block Size的前提下,将待写入的文件完整地写入到数据节点(DataNode)的块Block中。
本实施例中,数据节点用于存储文件,客户端可以访问数据节点,向该数据节点写入文件,或者读取该数据节点上存储的文件,或者删除该数据节点上存储的文件。其中,数据节点上可以创建Block(块),在Block中写入文件时,随着写入的文件数据越来越多,Block的尺寸越来越大。
相关技术中,为每个Block设置了Block Size,Block Size是指Block的最大尺寸,在写入文件的过程中Block的尺寸不能超过Block Size,即在写入文件的过程中,只要Block的尺寸达到了Block Size就要停止写入过程,将文件剩余的数据写入其他的Block中,导致一个文件可能会被存放于多个Block中。
而为了避免一个文件存放于多个Block的情况,本实施例中,客户端在未确定Block Size的前提下写入文件,也即是不再设置Block Size,每当客户端要向Block写入文件时,不会再受到Block Size的限制,而可以将一个文件完整地写入到一个Block中。其中,将该文件完整地写入Block中是指:一个文件可以包含多项的数据,不管这个文件的尺寸是多大,都将该文件的多项数据按照顺序写入到一个Block中,直至将多项数据全部写入完成为止。
该步骤201可以包括以下步骤2011至2013中的任一项:
2011、客户端从可用块标识池中提取一个块标识(block_id),将待写入的文件完整地写入到数据节点中该块标识指示的块Block中。
该客户端维护有可用标识池,该可用块标识池中的块标识是指可用于写入文件的Block的块标识,其中,块标识用于唯一确定对应的Block,可以为Block的名称、序号等,本实施例对此不做限定。可用于写入文件的Block是指当前的尺寸还未超过预设阈值、仍然可以继续写入文件的Block,也即是在该可用块标识池中的块标识对应的Block即可认为是可用于写入文件的Block,而不在该可用块标识池中的块标识对应的Block即可认为是不能再写入文件的Block。在应用过程中,该客户端可以根据每个Block当前的尺寸确定Block是否还能够写入文件,从而确定是否要将该Block的块标识重新添加至该可用块标识池中。
当客户端需要向数据节点写入新的文件时,可以从该可用块标识池中提取一个块标识,将文件写入到该块标识对应的Block中。其中,该提取一个块标识是指将该块标识从该可用块标识池中移出,以保证在写入该文件的过程中,该可用块标识池中将不再包括该提取的块标识,其他客户端要写入文件时不会写入到该块标识对应的Block中,避免了由于同时向同一Block中写入不同文件而导致的错误。
该写入过程可以包括:客户端向数据节点发送文件写入请求(Write DataRequest),该文件写入请求携带该Block的块标识对应的位置信息及待写入的文件,数据节点在接收到该客户端发送的文件写入请求后,根据该位置信息,将文件写入至该Block中。
其中,该待写入文件是由客户端确定,可以包括音频文件、视频文件、文本文件等,本实施例对此不做限定。该位置信息用于确定该Block在该数据节点中的位置,可以由该客户端从主节点(master)获取,该主节点用于存储每个块标识对应的位置信息,当该客户端获取到块标识时,在该主节点中查询该块标识对应的位置信息,再向数据节点发送文件写入请求。
2012、客户端在该数据节点中创建一个Block,将该文件完整地写入到该创建的Block中。
该创建Block的过程包括:客户端向数据节点发送Block创建请求(Creat BlockRequest),当该数据节点接收该Block创建请求时,根据该Block创建请求,创建Block,并向该客户端发送该Block的位置信息。该客户端接收到该位置信息后,为该Block分配块标识,并向主节点发送该块标识和该位置信息。之后,该主节点接收该Block的块标识和位置信息,并建立该Block标识和该位置信息之间的映射关系,以便后续可以根据该映射关系查询到该块标识对应的位置信息。
在上述创建Block的过程事实上仅确定了Block的块标识和位置信息,而并未确定Block的尺寸,也未确定Block的最大尺寸,保证了后续写入文件时不会受到限制。
2013、客户端判断该可用块标识池中是否存在块标识,当确定该可用块标识池中存在块标识时,从该可用块标识池中提取一个块标识,将待写入的文件完整地写入到数据节点中该块标识指示的块Block中。而当确定该可用块标识池中不存在块标识时,在该数据节点中创建一个Block,将该文件完整地写入到该创建的Block中。写入完成之后如果该Block还可用,则可以将该Block的块标识添加至该可用块标识池中。
上述写入过程保证了一个文件完整地写入到了一个Block中,那么在后续过程中,当客户端要从数据节点读取文件时,获取待读取的文件对应的块标识、第一偏移地址(Block Offset)和第二偏移地址(Read Offset),并向该数据节点发送文件读取请求(ReadData Request),该文件读取请求包括该块标识、该第一偏移地址和该第二偏移地址。
其中,该第一偏移地址用于确定该文件在Block中的位置,该第二偏移地址用于确定本次待读取的文件数据在该文件中的位置。该数据节点接收到文件读取请求时,根据该块标识确定该文件所在的Block,根据该第一偏移地址和第二偏移地址确定该文件中待读取的文件数据,并将该文件数据发送给客户端,客户端接收该数据节点返回的文件数据。之后,客户端重新确定下一次要读取的文件数据对应的第二偏移地址,继续重复上述读取步骤,直至读取到文件的全部数据。在该读取过程中,无需对多个Block进行读取,节省了读取流程,提升了读取性能。
在步骤202中,客户端获取该Block在写入该文件之前的尺寸以及该文件的尺寸,并计算该Block在写入该文件之前的尺寸与该文件的尺寸之和,得到该Block当前的尺寸。
在步骤203中,客户端判断该Block当前的尺寸是否小于预设阈值,如果是,执行步骤204,如果否,执行步骤205。
本实施例中为了保证一个文件能够完整地写入到一个Block中,并未设置BlockSize,然而这可能会导致一个Block中写入多个文件,从而导致Block的尺寸过大。为了避免尺寸过大的问题,本实施例中确定了预设阈值,该预设阈值用于确定Block在写入完整文件之后是否还能继续写入其他的文件。
那么,在步骤201写入文件完成之后,该客户端获取该Block当前的尺寸,判断当前的尺寸是否大于该预设阈值。
其中,在本次向Block写入文件之前,可能已经在该Block中写入了文件,因此,该Block当前的尺寸不仅取决于该文件的尺寸,还取决于该Block在写入该文件之前的尺寸。为此,该客户端获取该Block在写入该文件之前的尺寸以及该文件的尺寸,并计算该Block在写入该文件之前的尺寸与该文件的尺寸之和,得到该Block当前的尺寸。
实际应用中,对于每个Block来说,该客户端将Block的初始尺寸设置为0,每次向Block中写入文件时,都会根据写入文件之前的尺寸和写入的文件的尺寸计算出当前的尺寸,并记录下当前的尺寸。那么,在要向Block中写入下一个文件时,即可直接获取所记录的该Block在写入下一个文件之前的尺寸。
另外,该预设阈值可以由客户端确定,可以根据对Block的尺寸需求确定,本实施例对此不做限定,当然,根据所写入文件尺寸的不同,每个Block的尺寸可以小于该预设阈值、等于该预设阈值或者大于该预设阈值。
在步骤204中,客户端将该Block的块标识添加至可用块标识池。
如果该Block当前的尺寸小于预设阈值,表示该Block还可写入其他的文件,则客户端将该Block的块标识重新添加至可用块标识池中,那么,后续过程中,客户端仍可从该可用块标识池中提取到块标识,进而继续向该Block中写入其他的文件。
例如,假设该预设阈值为512MB,客户端选择了一个Block来写入文件,该Block的尺寸为400MB,要写入的文件尺寸为100MB,则当完整地写入该文件后,该Block当前的尺寸为500MB,小于该预设阈值512MB,则客户端将该Block的块标识重新添加至该可用块标识池中。
在步骤205中,客户端取消将该Block的块标识添加至该可用块标识池的操作,以保证不再向该Block写入文件。
如果该Block当前的尺寸不小于预设阈值,表示该Block的尺寸过大,不能再写入其他文件,则客户端不再将该Block的块标识添加至该可用块标识池中,那么,当客户端要写入文件时,就不能从该可用标识池中提取该Block的块标识,也就无法再向该Block中写入文件。
例如,假设该预设阈值为512MB,客户端选择了一个Block来写入文件,该Block的尺寸为500MB,要写入的文件尺寸为100MB,则当完整地写入该文件后,该Block当前的尺寸为600MB,不小于该预设阈值512MB,则客户端不再将该Block的块标识添加至该可用块标识池中,以保证该Block中不能再写入其他文件。
需要说明的是,在应用过程中,还可以从Block中删除已经写入的文件,该删除操作会导致该Block的尺寸变小,因此,该客户端可以根据Block在删除文件之前的尺寸和所删除文件的尺寸,计算出Block在删除文件之后的尺寸,判断该尺寸是否小于预设阈值,如果该尺寸小于预设阈值,则将该Block的块标识重新添加至该可用标识池中。
例如,假设该预设阈值为512MB,在删除文件之前,Block的尺寸为600MB,该Block的块标识不在可用块标识池中,当在该Block中删除100MB的文件之后,该Block的尺寸变为500MB,小于该预设阈值512MB,因此,客户端又重新将该Block的块标识添加至该可用块标识池中。
本实施例提供的方法,通过在未确定Block Size的前提下,将待写入的文件完整地写入到数据节点的Block中,之后在该Block当前的尺寸不小于该预设阈值时,取消将该Block的块标识添加至该可用块标识池的操作,从而保证了不再向该Block写入文件。本公开提供了一种新的写入文件的方式,摆脱了Block Size的限制,而是将文件完整地写入到Block中之后再根据预设阈值确定是否要继续向Block中写入文件,保证了无论要写入的文件尺寸多大,该文件均能够完整地存放在一个Block中,便于该文件的读写。
图3是根据一示例性实施例示出的一种文件写入装置的框图。参见图3,该装置包括写入模块301,添加模块302。
该写入模块301被配置为用于在未确定块尺寸Block Size的前提下,将待写入的文件完整地写入到数据节点的块Block中;
该添加模块302被配置为用于如果所述Block当前的尺寸小于预设阈值,则将所述Block的块标识添加至可用块标识池,所述可用块标识池中的块标识是指可用于写入文件的Block的块标识;
该添加模块302还被配置为用于如果所述Block当前的尺寸不小于所述预设阈值,则取消将所述Block的块标识添加至所述可用块标识池的操作,以保证不再向所述Block写入文件。
本实施例提供的装置,通过在未确定Block Size的前提下,将待写入的文件完整地写入到数据节点的Block中,并在该Block当前的尺寸不小于该预设阈值时,取消将该Block的块标识添加至该可用块标识池的操作,从而保证了不再向该Block写入文件。实施例提供了一种新的写入文件的装置,不预先确定Block Size,而是直接将文件完整地写入到Block中,在写入之后再根据预设阈值确定是否要继续向Block中写入文件,保证了无论要写入的文件尺寸多大,该文件均能够完整地存放在一个Block中,便于文件的读写。
在另一实施例中,该写入模块301还被配置为用于从该可用块标识池中提取一个块标识,将该文件完整地写入到该块标识指示的Block中;或者,在该数据节点中创建一个Block,将该文件完整地写入到创建的该Block中。
在另一实施例中,该写入模块301还被配置为用于向所述数据节点发送文件写入请求,所述文件写入请求携带所述Block的块标识对应的位置信息以及待写入的文件,所述数据节点用于根据所述位置信息,将所述文件写入到所述Block中。
参见图4,在另一实施例中,该装置还包括:
第一获取模块303,用于获取该Block在写入该文件之前的尺寸以及该文件的尺寸;
计算模块304,用于计算该Block在写入该文件之前的尺寸与该文件的尺寸之和,得到该Block当前的尺寸。
参见图5,在另一实施例中,该装置还包括:
第二获取模块305,被配置为用于获取待读取的文件对应的块标识、第一偏移地址和第二偏移地址,该第一偏移地址用于确定该文件在Block中的位置,该第二偏移地址用于确定本次待读取的文件数据在该文件中的位置;
发送模块306,被配置为用于向该数据节点发送文件读取请求,该文件读取请求携带该块标识、该第一偏移地址和该第二偏移地址,该数据节点用于根据该块标识确定该文件所在的Block,根据该第一偏移地址和该第二偏移地址,确定该文件中待读取的文件数据;
接收模块307,被配置为用于接收该数据节点返回的文件数据。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是:上述实施例提供的文件写入装置在写入文件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将客户端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的文件写入装置与文件写入方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6是根据一示例性实施例示出的一种文件写入的装置600的框图。例如,装置600可以被提供为一服务器。参照图6,装置600包括处理组件622,其进一步包括一个或多个处理器,以及由存储器632所代表的存储器资源,用于存储可由处理组件622的执行的指令,例如应用程序。存储器632中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件622被配置为执行指令,以执行上述文件写入方法。
装置600还可以包括一个电源组件626被配置为执行装置600的电源管理,一个有线或无线网络接口650被配置为将装置600连接到网络,和一个输入输出(I/O)接口658。装置600可以操作基于存储在存储器632的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (11)

1.一种文件写入方法,其特征在于,所述方法包括:
在未确定块尺寸Block Size的前提下,将待写入的文件完整地写入到数据节点的块Block中;
如果所述Block当前的尺寸小于预设阈值,则将所述Block的块标识添加至可用块标识池,所述可用块标识池中的块标识是指可用于写入文件的Block的块标识;
如果所述Block当前的尺寸不小于所述预设阈值,则取消将所述Block的块标识添加至所述可用块标识池的操作,以保证不再向所述Block写入文件。
2.根据权利要求1所述的方法,其特征在于,所述将待写入的文件完整地写入到数据节点的块Block中,包括:
从所述可用块标识池中提取一个块标识,将所述文件完整地写入到所述块标识指示的Block中;或者,
在所述数据节点中创建一个Block,将所述文件完整地写入到创建的所述Block中。
3.根据权利要求1所述的方法,其特征在于,所述将待写入的文件完整地写入到数据节点的块Block中,包括:
向所述数据节点发送文件写入请求,所述文件写入请求携带所述Block的块标识对应的位置信息以及待写入的文件,所述数据节点用于根据所述位置信息,将所述文件写入到所述Block中。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述Block在写入所述文件之前的尺寸以及所述文件的尺寸;
计算所述Block在写入所述文件之前的尺寸与所述文件的尺寸之和,得到所述Block当前的尺寸。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取待读取的文件对应的块标识、第一偏移地址和第二偏移地址,所述第一偏移地址用于确定所述文件在Block中的位置,所述第二偏移地址用于确定本次待读取的文件数据在所述文件中的位置;
向所述数据节点发送文件读取请求,所述文件读取请求携带所述块标识、所述第一偏移地址和所述第二偏移地址,所述数据节点用于根据所述块标识确定所述文件所在的Block,根据所述第一偏移地址和所述第二偏移地址,确定所述文件中待读取的文件数据;
接收所述数据节点返回的文件数据。
6.一种文件写入装置,其特征在于,所述装置包括:
写入模块,用于在未确定块尺寸Block Size的前提下,将待写入的文件完整地写入到数据节点的块Block中;
添加模块,用于如果所述Block当前的尺寸小于预设阈值,则将所述Block的块标识添加至可用块标识池,所述可用块标识池中的块标识是指可用于写入文件的Block的块标识;
所述添加模块,用于如果所述Block当前的尺寸不小于所述预设阈值,则取消将所述Block的块标识添加至所述可用块标识池的操作,以保证不再向所述Block写入文件。
7.根据权利要求6所述的装置,其特征在于,所述写入模块还用于从所述可用块标识池中提取一个块标识,将所述文件完整地写入到所述块标识指示的Block中;或者,在所述数据节点中创建一个Block,将所述文件完整地写入到创建的所述Block中。
8.根据权利要求6所述的装置,其特征在于,所述写入模块还用于向所述数据节点发送文件写入请求,所述文件写入请求携带所述Block的块标识对应的位置信息以及待写入的文件,所述数据节点用于根据所述位置信息,将所述文件写入到所述Block中。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第一获取模块,用于获取所述Block在写入所述文件之前的尺寸以及所述文件的尺寸;
计算模块,用于计算所述Block在写入所述文件之前的尺寸与所述文件的尺寸之和,得到所述Block当前的尺寸。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取待读取的文件对应的块标识、第一偏移地址和第二偏移地址,所述第一偏移地址用于确定所述文件在Block中的位置,所述第二偏移地址用于确定本次待读取的文件数据在所述文件中的位置;
发送模块,用于向所述数据节点发送文件读取请求,所述文件读取请求携带所述块标识、所述第一偏移地址和所述第二偏移地址,所述数据节点用于根据所述块标识确定所述文件所在的Block,根据所述第一偏移地址和所述第二偏移地址,确定所述文件中待读取的文件数据;
接收模块,用于接收所述数据节点返回的文件数据。
11.一种文件写入装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在未确定块尺寸Block Size的前提下,将待写入的文件完整地写入到数据节点的块Block中;
如果所述Block当前的尺寸小于预设阈值,则将所述Block的块标识添加至可用块标识池,所述可用块标识池中的块标识是指可用于写入文件的Block的块标识;
如果所述Block当前的尺寸不小于所述预设阈值,则取消将所述Block的块标识添加至所述可用块标识池的操作,以保证不再向所述Block写入文件。
CN201610789003.7A 2016-08-31 2016-08-31 文件写入方法及装置 Active CN106372183B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610789003.7A CN106372183B (zh) 2016-08-31 2016-08-31 文件写入方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610789003.7A CN106372183B (zh) 2016-08-31 2016-08-31 文件写入方法及装置

Publications (2)

Publication Number Publication Date
CN106372183A true CN106372183A (zh) 2017-02-01
CN106372183B CN106372183B (zh) 2020-02-07

Family

ID=57899566

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610789003.7A Active CN106372183B (zh) 2016-08-31 2016-08-31 文件写入方法及装置

Country Status (1)

Country Link
CN (1) CN106372183B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185665B1 (en) * 1997-02-28 2001-02-06 Matsushita Electric Industrial Co., Ltd. File management apparatus, file management method, and recording medium containing file management program
CN103514053A (zh) * 2013-09-22 2014-01-15 中国科学院信息工程研究所 一种基于共享内存的进程间通讯方法
CN104065906A (zh) * 2014-07-09 2014-09-24 珠海全志科技股份有限公司 数字录像设备的录像方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185665B1 (en) * 1997-02-28 2001-02-06 Matsushita Electric Industrial Co., Ltd. File management apparatus, file management method, and recording medium containing file management program
CN103514053A (zh) * 2013-09-22 2014-01-15 中国科学院信息工程研究所 一种基于共享内存的进程间通讯方法
CN104065906A (zh) * 2014-07-09 2014-09-24 珠海全志科技股份有限公司 数字录像设备的录像方法及装置

Also Published As

Publication number Publication date
CN106372183B (zh) 2020-02-07

Similar Documents

Publication Publication Date Title
US8250033B1 (en) Replication of a data set using differential snapshots
CN104461390B (zh) 将数据写入叠瓦状磁记录smr硬盘的方法及装置
CN102779180B (zh) 数据存储系统的操作处理方法,数据存储系统
CN107436725A (zh) 一种数据写、读方法、装置及分布式对象存储集群
CN109101516B (zh) 一种数据查询方法和服务器
CN104301360A (zh) 一种日志数据记录的方法、日志服务器及系统
CN106776375A (zh) 一种磁盘内部的数据缓存方法及装置
CN106354840A (zh) 文件处理方法、装置及分布式文件系统
US20140359012A1 (en) Non-transitory computer readable medium, information sharing support system, and information sharing support method
CN102984357B (zh) 一种联系人信息管理方法及装置
CN104899161B (zh) 一种基于云存储环境的连续数据保护的缓存方法
CN103744875B (zh) 基于文件系统的数据快速迁移方法及系统
CN104346373A (zh) 分区日志队列同步管理方法及设备
CN110399348A (zh) 文件重删方法、装置、系统及计算机可读存储介质
CN105824846A (zh) 数据迁移方法及装置
CN103309446B (zh) 以人类双手为载体的虚拟数据获取与传递系统
JP5381713B2 (ja) 仮想マシン向けデータ格納システム、データ格納方法およびデータ格納用プログラム
CN106817388A (zh) 虚拟机、宿主机获取数据的方法、装置及访问数据的系统
CN103383698A (zh) 数据删除的方法及其移动终端
CN100594480C (zh) 复制设备、复制方法和块标识数据获取方法
WO2017206436A1 (zh) 网络硬盘空间的回收方法、装置和系统
CN104462403B (zh) 文件截断方法和装置
CN101799820B (zh) 闪存、文件系统挂载方法及装置、数据管理方法及装置
CN107786670A (zh) 一种本地存储数据和云存储结合运用的系统和方法
CN106372183A (zh) 文件写入方法及装置

Legal Events

Date Code Title Description
C06 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