CN102541869A - 写入文件的方法和装置 - Google Patents

写入文件的方法和装置 Download PDF

Info

Publication number
CN102541869A
CN102541869A CN201010589798XA CN201010589798A CN102541869A CN 102541869 A CN102541869 A CN 102541869A CN 201010589798X A CN201010589798X A CN 201010589798XA CN 201010589798 A CN201010589798 A CN 201010589798A CN 102541869 A CN102541869 A CN 102541869A
Authority
CN
China
Prior art keywords
file
written
dsb
data
data store
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
CN201010589798XA
Other languages
English (en)
Other versions
CN102541869B (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.)
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201010589798.XA priority Critical patent/CN102541869B/zh
Publication of CN102541869A publication Critical patent/CN102541869A/zh
Application granted granted Critical
Publication of CN102541869B publication Critical patent/CN102541869B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种写入文件的方法和装置,属于数据处理领域。该方法包括:接收客户端进程的写文件请求;所述写文件请求携带待写入文件的数据长度;根据所述数据长度,为所述待写入文件分配一个或一个以上数据存储块,所述一个或一个以上数据存储块的总数据长度与所述待写入文件的数据长度相同;将所述待写入文件写入所述一个或一个以上数据存储块。该装置包括:接收模块、分配模块和写入模块。

Description

写入文件的方法和装置
技术领域
本发明涉及数据处理领域,特别涉及一种写入文件的方法和装置。
背景技术
随着互联网用户的大量增加,许多应用面临海量数据存储的挑战。如何在面对海量数据的时候能够高效,稳定,安全的存取数据是各互联网服务提供商致力研究的方向。分布式文件存储是近几年非常热门的技术,能够以较为廉价的设备满足海量数据存储的需求,目前已在许多公司部署实施。
此类系统文件存储方式模拟操作系统实现,按照固定的块大小分割文件,并由块服务器把块作为linux文件保存在本地硬盘上。
在对现有技术进行分析后,发明人发现现有技术至少具有如下缺点:
现有技术的分布式文件系统在写入文件时,不足一个固定块的文件,或文件中不足一个固定块的部分会单独占用了一个固定大小的空间,使得磁盘碎片多,磁盘空间利用率低,系统性能差。
发明内容
本发明实施例提供了一种写入文件的方法和装置。所述技术方案如下:
一种写入文件的方法包括:
接收客户端进程的写文件请求;所述写文件请求携带待写入文件的数据长度;
根据所述数据长度,为所述待写入文件分配一个或一个以上数据存储块,所述一个或一个以上数据存储块的总数据长度与所述待写入文件的数据长度相同;
将所述待写入文件写入所述一个或一个以上数据存储块。
,根据所述数据长度,为所述待写入文件分配一个或一个以上数据存储块,具体包括:
判断所述待写入文件的数据长度是否小于预设数据存储块的数据长度,如果是,为所述待写入文件分配与所述数据长度相同的数据存储块;如果否,计算所述待写入文件所需的所述预设数据存储块的个数,并为计算后所述待写入文件中不足一个预设数据存储块的部分,分配与所述部分数据长度相同的数据存储块。
所述方法还包括:
保存所述待写入文件和所述一个或一个以上数据存储块之间的映射关系,并将所述映射关系发送给客户端。
将所述待写入文件写入所述一个或一个以上数据存储块,具体包括:
根据所述映射关系中的待写入文件的起始偏移量和所述多个数据存储块的文件偏移量和写入数据长度,将所述待写入文件中的数据对应的所述一个或一个以上数据存储块。
所述一个或一个以上数据存储块分布于一个或一个以上块文件服务器上。
一种写入文件的装置,包括:
接收模块,用于接收客户端进程的写文件请求;所述写文件请求携带待写入文件的数据长度;
分配模块,用于根据所述数据长度,为所述待写入文件分配一个或一个以上数据存储块,所述一个或一个以上数据存储块的总数据长度与所述待写入文件的数据长度相同;
写入模块,用于将所述待写入文件写入所述一个或一个以上数据存储块。
所述分配模块具体用于判断所述待写入文件的数据长度是否小于预设数据存储块的数据长度,如果是,为所述待写入文件分配与所述数据长度相同的数据存储块;如果否,计算所述待写入文件所需的所述预设数据存储块的个数,并为计算后所述待写入文件中不足一个预设数据存储块的部分,分配与所述部分数据长度相同的数据存储块。
所述装置还包括:
保存模块,用于保存所述待写入文件和所述一个或一个以上数据存储块之间的映射关系,并将所述映射关系发送给客户端。
所述写入模块具体用于根据所述映射关系中的待写入文件的起始偏移量和所述一个或一个以上数据存储块的文件偏移量和写入数据长度,将所述待写入文件中的数据对应的所述一个或一个以上数据存储块。
所述一个或一个以上数据存储块分布于一个或一个以上块文件服务器上。
本发明实施例提供的技术方案的有益效果是:
通过在为待写入文件分配数据存储块时,使得数据存储块的总数据长度与待写入文件的数据长度相同,充分利用磁盘空间,减少磁盘碎片产生几率,提升了系统性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种写入文件的方法的流程图;
图2是本发明实施例提供的一种写入文件的方法的流程图;
图3是本发明实施例提供的一种写入文件的装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在介绍本发明提供的写入文件的方法之前,首先对本发明的基础知识进行简要的介绍:
CL(Client,客户端进程),分布式文件系统客户端接口;
CS(CtrlServer,控制进程),分布式文件系统核心控制进程;
FS(FileServer,块文件服务器进程);
粒度:按数量级划分的文件长度;
chunk:最小数据块单位,文件可分割为多个数据单位,这是一个逻辑单位。
实施例1
为了充分利用磁盘空间,本发明实施例提供了一种写入文件的方法,参见图1,该方法包括:
101:接收客户进程的写文件请求;该写文件请求携带待写入文件的数据长度;
102:根据所述数据长度,为所述待写入文件分配一个或一个以上数据存储块,所述一个或一个以上数据存储块的总数据长度与所述待写入文件的数据长度相同;
103:将所述待写入文件写入所述一个或一个以上数据存储块。
通过在为待写入文件分配数据存储块时,使得数据存储块的总数据长度与待写入文件的数据长度相同,充分利用磁盘空间,减少磁盘碎片产生几率,提升了系统性能。
实施例2
为了充分利用磁盘空间,本发明实施例提供了一种写入文件的方法,参见图2,该方法包括:
201:客户端进程CL向控制进程CS发送写文件请求;
202:CS接收该写文件请求;
在本实施例中,该写文件请求携带待写入文件的文件名、文件偏移量、数据长度和文件属性等。
203:控制进程判断该待写入文件的数据长度是否小于预设数据存储块的数据长度,
如果是,执行步骤204;
如果否,执行步骤205;
204:为该待写入文件分配与该数据长度相同的数据存储块,执行步骤206;
在本实施例中,需根据待写入文件的粒度为为其分配数据存储块,当待写入文件的数据长度小于预设数据存储块(即一个固定chunk)的数据长度时,该待写入文件为小粒度文件,则为该待写入文件分配与该数据长度相同的数据存储块,例如,预设数据存储块(即一个固定chunk)的数据长度为XM,待写入文件的数据长度为YM,Y<X,则只为该待写入数据分配YM的数据存储块,提高了磁盘的利用率,避免了磁盘空间的浪费。
205:计算该待写入文件所需的该预设数据存储块的个数,并为计算后该待写入文件中不足一个预设数据存储块的部分,分配与该部分数据长度相同的数据存储块;
在本实施例中,需根据待写入文件的粒度为为其分配数据存储块,当待写入文件的数据长度大于或等于预设数据存储块(即一个固定chunk)的数据长度时,该待写入文件为大粒度文件,可能会占用多个数据存储块,则计算该待写入文件所需的该预设数据存储块的个数,并为计算后该待写入文件中不足一个预设数据存储块的部分,分配与该部分数据长度相同的数据存储块。
例如,预设数据存储块(即一个固定chunk)的数据长度为XM,待写入文件的数据长度为ZM,Z远远大于X,则预设数据存储块的个数为N=Z÷X的正数部分,不足一个预设数据存储块的部分L=Z-N×X,为该部分分配的数据存储块的数据长度应为L。在现有技术中,不满单个chunk空间的数据将占用整个chunk,而在本实施例中,只为该部分数据分配与其数据长度相同的数据存储块,提高了磁盘的利用率,避免了磁盘空间的浪费。
206:保存该待写入文件和该一个或一个以上个数据存储块之间的映射关系,并将该映射关系发送给CL;
在实施例中,在每个数据存储块创建的时候,服务器进程分配给它一个不变的、全球唯一的64位的块句柄对它进行标识。块服务器把块作为linux文件保存在本地硬盘上,并根据指定的块句柄和字节范围来读写块数据。进一步地,CS在为每个chunk分配全球唯一的64位chunk句柄,将包含起始偏移量,写入数据长度,chunk句柄等字段的信息发送给CL,以便CL根据该chunk句柄对文件进行写入。
207:将该待写入文件写入该一个或一个以上个数据存储块。
在本发明实施例中,根据该映射关系中的待写入文件的起始偏移量和该一个或一个以上个数据存储块的文件偏移量和写入数据长度,将该待写入文件中的数据对应的该多个数据存储块。
本领域技术人员可以获知,chunk内部文件偏移量为起始偏移量与该chunk中写入数据长度的和,例如,待写入文件为(a+b)kb,而预设数据存储块(固定chunk)为akb,则在本实施例中,需一个预设数据存储块和一个数据长度为bkb的数据存储块,chunk的起始偏移量为1000,则该chunk的内部文件偏移量为(1000+a)kb。
进一步地,为待写入文件分配的映射关系中的数据存储块可分布于映射关系中的块文件服务器上。
本领域技术人员可以获知,当保存了所述待写入文件和所述多个数据存储决之间的映射关系后,可通过该映射关系读写文件,所以一个文件可以分割存储于锁个块文件服务器上。
通过在为待写入文件分配数据存储块时,使得数据存储块的总数据长度与待写入文件的数据长度相同,充分利用磁盘空间,减少磁盘碎片产生几率,提升了系统性能。
实施例3
为了充分利用磁盘空间,本发明实施例提供了一种写入文件的装置,参见图3,该装置包括:
接收模块301,用于接收客户端进程的写文件请求;该写文件请求携带待写入文件的数据长度;
分配模块302,用于根据该数据长度,为该待写入文件分配一个或一个以上数据存储块,该一个或一个以上数据存储块的总数据长度与该待写入文件的数据长度相同;
写入模块303,用于将该待写入文件写入该一个或一个以上数据存储块
该分配模块302具体用于判断该待写入文件的数据长度是否小于预设数据存储块的数据长度,如果是,为该待写入文件分配与该数据长度相同的数据存储块;如果否,计算该待写入文件所需的该预设数据存储块的个数,并为计算后该待写入文件中不足一个预设数据存储块的部分,分配与该部分数据长度相同的数据存储块。
该装置还包括:
保存模块304,用于保存该待写入文件和该一个或一个以上数据存储块之间的映射关系,并将该映射关系发送给客户端。
该写入模块303具体用于根据该映射关系中的待写入文件的起始偏移量和该一个或一个以上数据存储块的文件偏移量和写入数据长度,将该待写入文件中的数据对应的该一个或一个以上数据存储块。
该一个或一个以上数据存储块分布于一个或一个以上块文件服务器上。
本实施例提供的装置,与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例提供的上述技术方案的全部或部分可以通过程序指令相关的硬件来完成,所述程序可以存储在可读取的存储介质中,该存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种写入文件的方法,其特征在于,包括:
接收客户端进程的写文件请求;所述写文件请求携带待写入文件的数据长度;
根据所述数据长度,为所述待写入文件分配一个或一个以上数据存储块,所述一个或一个以上数据存储块的总数据长度与所述待写入文件的数据长度相同;
将所述待写入文件写入所述一个或一个以上数据存储块。
2.根据权利要求1所述的方法,其特征在于,根据所述数据长度,为所述待写入文件分配一个或一个以上数据存储块,具体包括:
判断所述待写入文件的数据长度是否小于预设数据存储块的数据长度,如果是,为所述待写入文件分配与所述数据长度相同的数据存储块;如果否,计算所述待写入文件所需的所述预设数据存储块的个数,并为计算后所述待写入文件中不足一个预设数据存储块的部分,分配与所述部分数据长度相同的数据存储块。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
保存所述待写入文件和所述一个或一个以上数据存储块之间的映射关系,并将所述映射关系发送给客户端。
4.根据权利要求3所述的方法,其特征在于,将所述待写入文件写入所述一个或一个以上数据存储块,具体包括:
根据所述映射关系中的待写入文件的起始偏移量和所述多个数据存储块的文件偏移量和写入数据长度,将所述待写入文件中的数据对应的所述一个或一个以上数据存储块。
5.根据权利要求1所述的方法,其特征在于,所述一个或一个以上数据存储块分布于一个或一个以上块文件服务器上。
6.一种写入文件的装置,其特征在于,包括:
接收模块,用于接收客户端进程的写文件请求;所述写文件请求携带待写入文件的数据长度;
分配模块,用于根据所述数据长度,为所述待写入文件分配一个或一个以上数据存储块,所述一个或一个以上数据存储块的总数据长度与所述待写入文件的数据长度相同;
写入模块,用于将所述待写入文件写入所述一个或一个以上数据存储块。
7.根据权利要求6所述的装置,其特征在于,所述分配模块具体用于判断所述待写入文件的数据长度是否小于预设数据存储块的数据长度,如果是,为所述待写入文件分配与所述数据长度相同的数据存储块;如果否,计算所述待写入文件所需的所述预设数据存储块的个数,并为计算后所述待写入文件中不足一个预设数据存储块的部分,分配与所述部分数据长度相同的数据存储块。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
保存模块,用于保存所述待写入文件和所述一个或一个以上数据存储块之间的映射关系,并将所述映射关系发送给客户端。
9.根据权利要求8所述的装置,其特征在于,所述写入模块具体用于根据所述映射关系中的待写入文件的起始偏移量和所述一个或一个以上数据存储块的文件偏移量和写入数据长度,将所述待写入文件中的数据对应的所述一个或一个以上数据存储块。
10.根据权利要求6所述的装置,其特征在于,所述一个或一个以上数据存储块分布于一个或一个以上块文件服务器上。
CN201010589798.XA 2010-12-07 2010-12-07 写入文件的方法和装置 Active CN102541869B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010589798.XA CN102541869B (zh) 2010-12-07 2010-12-07 写入文件的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010589798.XA CN102541869B (zh) 2010-12-07 2010-12-07 写入文件的方法和装置

Publications (2)

Publication Number Publication Date
CN102541869A true CN102541869A (zh) 2012-07-04
CN102541869B CN102541869B (zh) 2016-08-10

Family

ID=46348791

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010589798.XA Active CN102541869B (zh) 2010-12-07 2010-12-07 写入文件的方法和装置

Country Status (1)

Country Link
CN (1) CN102541869B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103778149A (zh) * 2012-10-23 2014-05-07 腾讯科技(深圳)有限公司 文件系统及其对文件进行存储管理的方法
CN105528371A (zh) * 2014-09-30 2016-04-27 北京金山云网络技术有限公司 一种执行写任务的方法、装置及系统
CN105718530A (zh) * 2016-01-15 2016-06-29 上海磁宇信息科技有限公司 文件存储系统及其文件存储控制方法
CN106527958A (zh) * 2015-09-09 2017-03-22 阿里巴巴集团控股有限公司 用于分布式存储系统的写入数据、获取数据的方法和设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217571A (zh) * 2008-01-18 2008-07-09 清华大学 用于多副本数据网格系统中的写/读文件操作的方法
CN101419828A (zh) * 2008-11-20 2009-04-29 杭州海康威视数字技术股份有限公司 一种模拟磁带串行模式的硬盘视频记录及检索方法
CN101446976A (zh) * 2008-12-26 2009-06-03 中兴通讯股份有限公司 一种分布式文件系统中的文件存储方法
US20100274828A1 (en) * 2009-04-24 2010-10-28 Takuya Ootani Electronic Device, Storage Area Allocation Method for File System, and Computer Product

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217571A (zh) * 2008-01-18 2008-07-09 清华大学 用于多副本数据网格系统中的写/读文件操作的方法
CN101419828A (zh) * 2008-11-20 2009-04-29 杭州海康威视数字技术股份有限公司 一种模拟磁带串行模式的硬盘视频记录及检索方法
CN101446976A (zh) * 2008-12-26 2009-06-03 中兴通讯股份有限公司 一种分布式文件系统中的文件存储方法
US20100274828A1 (en) * 2009-04-24 2010-10-28 Takuya Ootani Electronic Device, Storage Area Allocation Method for File System, and Computer Product

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
谭子军等: "分布式存储系统中用户磁盘空间分配策略", 《计算机工程》, vol. 36, no. 9, 31 May 2010 (2010-05-31), pages 46 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103778149A (zh) * 2012-10-23 2014-05-07 腾讯科技(深圳)有限公司 文件系统及其对文件进行存储管理的方法
CN105528371A (zh) * 2014-09-30 2016-04-27 北京金山云网络技术有限公司 一种执行写任务的方法、装置及系统
CN105528371B (zh) * 2014-09-30 2019-06-07 北京金山云网络技术有限公司 一种执行写任务的方法、装置及系统
CN106527958A (zh) * 2015-09-09 2017-03-22 阿里巴巴集团控股有限公司 用于分布式存储系统的写入数据、获取数据的方法和设备
CN106527958B (zh) * 2015-09-09 2020-03-10 阿里巴巴集团控股有限公司 用于分布式存储系统的写入数据、获取数据的方法和设备
US10599337B2 (en) 2015-09-09 2020-03-24 Alibaba Group Holding Limited Method and device for writing data and acquiring data in a distributed storage system
CN105718530A (zh) * 2016-01-15 2016-06-29 上海磁宇信息科技有限公司 文件存储系统及其文件存储控制方法
CN105718530B (zh) * 2016-01-15 2020-02-04 上海磁宇信息科技有限公司 文件存储系统及其文件存储控制方法

Also Published As

Publication number Publication date
CN102541869B (zh) 2016-08-10

Similar Documents

Publication Publication Date Title
US9280683B1 (en) Multi-service cloud storage decision optimization process
US7945587B2 (en) Random allocation of media storage units
CN103593147A (zh) 一种数据读取的方法及装置
CN102971698B (zh) 快照数据处理方法及系统、存储系统、快照代理
CN101488924B (zh) 一种元数据的修改方法和元数据服务器
CN103324533A (zh) 分布式数据处理方法、装置及系统
US9898401B2 (en) Service associated with persistent storage
CN109144406B (zh) 分布式存储系统中元数据存储方法、系统及存储介质
JP2009544089A (ja) 応答集約サロゲートからの要求フラグメントの送信
CN103399823A (zh) 业务数据的存储方法、设备和系统
CN103257958A (zh) 一种基于云存储的翻译方法及系统
CN102541869A (zh) 写入文件的方法和装置
CN103699429A (zh) 虚拟机迁移方法及装置
CN102523290A (zh) 数据的处理方法、设备和系统
CN102681790B (zh) 一种数据转储设备和通过其进行数据转储的方法及系统
CN104021088A (zh) 日志存储方法和装置
CN104461378A (zh) 将数据对象写入ip硬盘的方法、装置及系统
CN105574008A (zh) 应用于分布式文件系统的任务调度方法和设备
CN105426125A (zh) 一种数据存储方法及装置
CN105260264A (zh) 一种快照实现方法及快照系统
CN112148470B (zh) 参数同步方法、计算机装置及可读存储介质
CN110427377B (zh) 数据处理方法、装置、设备和存储介质
CN103064926A (zh) 数据处理方法和装置
CN111897636A (zh) 一种基于数据计算与分析的调度方法、设备、存储介质
CN105102083A (zh) 一种处理数据的方法、装置和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180906

Address after: 100191 Beijing Haidian District Zhichun Road 49 No. 3 West 309

Patentee after: Tencent cloud computing (Beijing) limited liability company

Address before: 518000 East 403 room, Sai Ge science and Technology Park, Futian District, Shenzhen, Guangdong, 403

Patentee before: Tencent Technology (Shenzhen) Co., Ltd.

TR01 Transfer of patent right