CN107844261B - 向磁盘写入文件的方法及装置 - Google Patents
向磁盘写入文件的方法及装置 Download PDFInfo
- Publication number
- CN107844261B CN107844261B CN201610835844.7A CN201610835844A CN107844261B CN 107844261 B CN107844261 B CN 107844261B CN 201610835844 A CN201610835844 A CN 201610835844A CN 107844261 B CN107844261 B CN 107844261B
- Authority
- CN
- China
- Prior art keywords
- chunk
- data
- disk
- written
- data 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种向磁盘写入文件的方法及装置,用以解决读取磁盘的数据或者再次覆盖写入数据到磁盘时数据定位时延较大的问题,该方法包括:判断缓存数据块待存入的条带CHUNK当前是否是第一次写入数据;如果CHUNK当前是第一次写入数据,则预占一个CHUNK最大配置长度的连续磁盘空间,然后将缓存数据块写入到CHUNK中,如果CHUNK当前不是第一次写入数据,则将缓存数据块写入到CHUNK中,该方案减小XFS读取磁盘数据时的数据定位时延和磁头转动时延,提升了IO效率。
Description
技术领域
本发明涉及通讯领域,特别是涉及一种向磁盘写入文件的方法及装置。
背景技术
DFS(Distributed file system,分布式文件系统)分为文件访问客户端(FAC)、文件访问服务器(FAS)和文件元数据定位服务器(FLR)三个大的功能模块,一个文件的数据内容在FAS被写入磁盘中,并且在FAS是以条带(CHUNK)的形式存储在磁盘上的磁盘类型有SATA串口机械磁盘和SSD(Solid State Drives,固态磁盘),CHUNK的大小一般设置为64MB,并且一个CHUNK存储多个副本。FAS在把缓存上的数据写入磁盘或从磁盘上读取数据到缓存时,为了减少磁盘IO,是以块(BLOCK)为单位操作的(块大小一般设置为512KB),因此一个CHUNK的数据在FAS上要分多次写入磁盘或者多次从磁盘上读取,对于目前Linux的XFS(XFS文件系统是SGI开发的高级日志文件系统)文件系统在写入数据到磁盘时,虽然有延迟分配的策略,能够对同一个CHUNK的缓存块进行聚合后再分配磁盘的存储块空间,但是这种聚合的能力有限,基本上很难让一个CHUNK的所有缓存块数据聚合后分配到磁盘上连续的一段空间进行存储,这样导致了FAS的一个CHUNK的数据在磁盘上存放的空间是不连续的。
这种数据在磁盘上存放空间的不连续性,对于SATA(串行先进技术接口)机械磁盘来说,在读取磁盘的数据或者再次覆盖写入数据到磁盘的时候,磁盘的磁头需要在磁盘上不同的位置来回转动,会大大增加磁盘的寻道时间,即读写磁盘上的数据时会大大增加数据定位时延,特别是对于用sendfile每次读取一大块连续的数据(一般是1MB)的方式,表现出的性能很差,具体表现在平均每次磁盘IO等待的时间await指标值较高。
对于SSD固态磁盘来说,因为它是NAND Flash闪存作为存储介质,不用磁头,寻道时间几乎为0,不会导致上述的磁盘IO等待时间高的问题,但由于SSD固态磁盘的容量一般较小、可擦写次数有限导致的使用寿命短以及价格昂贵的原因,目前在每个FAS节点只有少量的几块SSD固态磁盘,主要用于存储热点文件数据内容,因此SSD固态磁盘需要与SATA机械磁盘区别对待。
发明内容
本发明提供一种向磁盘写入文件的方法及装置,用以解决由于数据在磁盘上存放空间的不连续性,在读取磁盘的数据或者再次覆盖写入数据到磁盘的时候,磁盘的磁头需要在磁盘上不同的位置来回转动,导致读写磁盘上的数据时会大大增加数据定位时延的问题。
根据本发明的第一个方面,提供了一种向磁盘中写入文件的方法,包括:判断缓存数据块待存入的条带CHUNK当前是否是第一次写入数据;如果CHUNK当前是第一次写入数据,则预占一个CHUNK最大配置长度的连续磁盘空间,然后将缓存数据块写入到CHUNK中,如果CHUNK当前不是第一次写入数据,则将缓存数据块写入到CHUNK中。
进一步的,上述方法还包括:在判断缓存数据块待存入的CHUNK当前是否是第一次写入数据之前,在读取到数据写入请求消息后,在文件访问服务器FAS的卷表中查询缓存数据块待写入的磁盘的类型是否是预设磁盘类型,如果缓存数据块待写入的磁盘的类型是预设磁盘类型,则执行判断缓存数据块待存入的条带CHUNK当前是否是第一次写入数据的步骤,否则将缓存数据块写入其待写入的磁盘。
其中,判断缓存数据块待存入的CHUNK当前是否是第一次写入数据,包括:查看缓存数据块待存入的CHUNK中的数据的长度;如果CHUNK中的数据的长度为零,确定CHUNK第一次写入数据;如果CHUNK中的数据的长度不为零,确定CHUNK并非第一次写入数据。
其中,查看缓存数据块待存储的CHUNK中的数据的长度,包括:根据CHUNK的全路径名查询缓存数据块待写入的CHUNK中的数据的长度。
进一步的,上述方法还包括:在将缓存数据块中的数据写入到CHUNK中之后,如果一个数据写入请求消息所对应的文件被写入的多个CHUNK中的最后一个CHUNK的数据不足64MB,则根据接收到的文件访问客户端FAC发送的截短指令把最后一个CHUNK预占的多余存储空间以1MB大小对齐的方式截短。
根据本发明的第二个方面,提供了一种向磁盘中写入文件的方法,包括:将待写入磁盘的文件提交到文件待写入的磁盘所在的分布式文件系统FAS;根据文件的大小向FAS发送截短指令,截短指令用于指示FAS把写入文件的多个条带CHUNK中的最后一个CHUNK预占的多余的存储空间以1MB大小对齐的方式截短。
根据本发明的第三个方面,提供了一种向磁盘中写入文件的装置,包括:判断模块,用于判断缓存数据块待存入的条带CHUNK当前是否是第一次写入数据;写入模块,用于如果CHUNK当前是第一次写入数据,则预占一个CHUNK最大配置长度的连续磁盘空间,然后将缓存数据块写入到CHUNK中,如果CHUNK当前不是第一次写入数据,则将缓存数据块写入到CHUNK中。
进一步的,上述装置还包括:查询模块,用于在判断缓存数据块待存入的CHUNK当前是否是第一次写入数据之前,在读取到数据写入请求消息后,在文件访问服务器FAS的卷表中查询缓存数据块待写入的磁盘的类型是否是预设磁盘类型,如果缓存数据块待写入的磁盘的类型是预设磁盘类型,则执行判断缓存数据块待存入的条带CHUNK当前是否是第一次写入数据的步骤,否则将缓存数据块写入其待写入的磁盘。
其中,上述判断模块包括:查看单元,用于查看缓存数据块待存入的CHUNK中的数据的长度;第一确定单元,用于如果CHUNK中的数据的长度为零,确定CHUNK第一次写入数据;第二确定单元,用于如果CHUNK中的数据的长度不为零,确定CHUNK并非第一次写入数据。
其中,上述查看单元具体用于:根据CHUNK的全路径名查询缓存数据块待写入的CHUNK中的数据的长度。
进一步的,上述装置还包括:截短模块,用于在将缓存数据块中的数据写入到CHUNK中之后,如果一个数据写入请求消息所对应的文件被写入的多个CHUNK中的最后一个CHUNK的数据不足64MB,则根据接收到的文件访问客户端FAC发送的截短指令把最后一个CHUNK预占的多余存储空间以1MB大小对齐的方式截短。
根据本发明的第四个方面,提供了一种向磁盘中写入文件的装置,包括:提交模块,用于将待写入磁盘的文件提交到文件待写入的磁盘所在的分布式文件系统FAS;发送模块,用于根据文件的大小向FAS发送截短指令,截短指令用于指示FAS把写入文件的多个条带CHUNK中的最后一个CHUNK预占的多余的存储空间以1MB大小对齐的方式截短。
本发明提供的方案在缓存数据块的数据第一次写入CHUNK的时候,先预占一个64MB大小的连续的磁盘空间,之后再写入(包括覆盖写)数据到这个CHUNK上时,直接把数据写入到预占的磁盘空间上,不需要XFS再分配磁盘数据块空间,提高数据块分配的效率;在读取SATA机械磁盘上CHUNK的一段连续数据时,磁盘磁头不需要来回转动,磁头往一个方向移动,大大减小XFS读取磁盘数据时的数据定位时延和磁头转动时延,减小XFS读写数据的IO等待时间,显著提升了IO效率。
附图说明
图1是本发明实施例中第一实施例中提供的向磁盘中写入文件的方法的流程图;
图2是本发明实施例中第二实施例中提供的向磁盘中写入文件的方法的流程图;
图3是本发明第三实施例中DFS预占磁盘空间的流程图;
图4是本发明第三实施例中涉及到的SATA机械磁盘的数据写入的流程示意图;
图5是本发明第三实施例中涉及到的SSD固态磁盘的数据写入的流程示意图;
图6是本发明第四实施例中向磁盘中写入文件的装置的结构框图;
图7是本发明第五实施例中向磁盘中写入文件的装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一实施例
本实施例提供了一种向磁盘中写入文件的方法,该方法可以由分布式文件系统FAS来执行,用于将FAC发送的文件写入磁盘(可以是SATA磁盘,也可以是SSD磁盘),图1是该方法的流程图,如图1所示,该方法包括如下处理:
步骤101:判断缓存数据块待存入的CHUNK当前是否是第一次写入数据;
其中,在本实施例中,判断缓存数据块待存入的CHUNK当前是否是第一次写入数据,具体可以包括:查看缓存数据块待存入的CHUNK中的数据的长度;如果CHUNK中的数据的长度为零,确定该CHUNK第一次写入数据;如果CHUNK中的数据的长度不为零,确定该CHUNK并非第一次写入数据。
在本实施例中,查看缓存数据块待存储的CHUNK中的数据长度具体可以包括:根据CHUNK的全路径名查询缓存数据块待写入的CHUNK中的数据长度。
步骤102:如果待存入的CHUNK当前是第一次写入数据,则预占一个CHUNK最大配置长度的连续磁盘空间,然后将缓存数据块写入到CHUNK中,如果CHUNK当前不是第一次写入数据,则将缓存数据块写入到所述CHUNK中。
本实施例提供的方法还可以包括以下操作:
在判断缓存数据块待存入的CHUNK当前是否是第一次写入数据之前,在读取到数据写入请求消息后,在文件访问服务器FAS的卷表中查询缓存数据块待写入的磁盘的类型是否是预设磁盘类型(优选的,在本实施例中,预设磁盘类型为SATA硬盘),如果缓存数据块待写入的磁盘的类型是预设磁盘类型,则执行判断缓存数据块待存入的条带CHUNK当前是否是第一次写入数据的步骤,否则将缓存数据块写入其待写入的磁盘(例如,SSD固态硬盘)。优选的,在本实施例中,判断缓存数据块待写入的磁盘的类型是否是SATA磁盘,具体可以包括:在读取到数据写入请求消息后,在文件访问服务器FAS的卷表中查询缓存数据块待写入的磁盘的类型是否是SATA磁盘。为了在写入文件后不产生磁盘碎片,本实施例提供的方法还可以包括以下操作:
在将缓存数据块中的数据写入到CHUNK中之后,如果一个数据写入请求消息所对应的文件被写入的多个CHUNK中的最后一个CHUNK的数据不足64MB,则根据接收到的文件访问客户端FAC发送的截短指令把最后一个CHUNK预占的多余存储空间以1MB大小对齐的方式截短,这样可以避免产生磁盘碎片。
第二实施例
本实施例在上述第一实施例的基础上提供了另一种向磁盘中写入文件的方法,与上述第一实施例中提供的方法不同的是该方法由FAC执行,该方法用于告知FAS何时进行截短操作。
图2是本实施例提供的方法的流程图,如图2所示,该方法包括如下处理:
步骤201:将待写入磁盘的文件提交到文件待写入的磁盘所在的分布式文件系统FAS;
步骤202:根据文件的大小向FAS发送截短指令,截短指令用于指示FAS把写入文件的多个CHUNK中的最后一个CHUNK预占的多余的存储空间以1MB大小对齐的方式截短,例如,一个文件的大小是6.5MB,则在CHUNK的7MB后进行截短。
优选的,本实施例所提供的方法可以在文件待写入的磁盘的类型为SATA磁盘的情况下执行,在文件待写入的磁盘的类型不为SATA磁盘的情况下,则直接将待写入的文件写入对应磁盘。
第三实施例
本实施例在上述第一实施例的基础上,对在向磁盘中写入文件方法的整个流程中FAS以及FAC所执行的操作进行更为详细的说明。
首先对本发明中的向磁盘写入文件的方法所涉及到的各功能实体所具备的功能进行说明。
文件访问客户端(FAC):文件访问客户端主要为业务的文件操作(比如打开文件、读写文件内容等)提供接口,并且以页(PAGE)的方式缓存用户提交的将要写入文件访问服务器(FAS)的数据、或者用户从文件访问服务器(FAS)上读取到的数据。
文件访问服务器(FAS):文件访问服务器以块(BLOCK)的方式缓存FAC提交的将要写入磁盘的数据、或者从磁盘上读取到的数据,同时进行CHUNK数据的管理,比如CHUNK副本数据的复制、修复、压缩、消重、迁移等。
文件元数据定位服务器(FLR):对文件的属性、CHUNK副本状态、分布等元数据进行管理以及对FAS上CHUNK数据分布的负载均衡。
在FAS上,每块SATA机械磁盘和SSD固态磁盘都是格式化为XFS文件系统后挂载到FAS节点上的,FAS对于FAC每次提交来的、将要写入磁盘的数据,先把数据复制到缓存块(即上述缓存数据块)中,并把数据写入请求消息放入到对应的磁盘读写工作线程的队列中,磁盘读写工作线程从队列中取到这个写入请求消息后,先到FAS的卷表中查询这个磁盘的类型,如果为SATA机械磁盘,则根据CHUNK的全路径名,查询这个缓存块将要写入的CHUNK文件的长度,如果长度为0则表示本次是第一次往这个CHUNK上写入数据,则先预占一个64MB大小的连续的磁盘空间(此处,一个CHUNK的最大数据长度配置为64MB),然后再往CHUNK上写入数据,如果长度不为0,则表示非第一次写入数据,已经预占了64MB连续的磁盘空间,不需要再预占磁盘空间,直接把缓存块(BLOCK)的数据写入CHUNK中;如果磁盘读写工作线程查询到磁盘类型为SSD固态磁盘,则没有必要预占64MB大小的连续磁盘空间,直接把缓存块(BLOCK)的数据写入到磁盘上的CHUNK上。
对于SATA机械磁盘每次预占64MB大小的、连续的磁盘空间的方式,如果文件最后一个CHUNK的数据不足64MB,则会引起磁盘空间浪费的问题,在文件的数据写入磁盘后,关闭这个文件操作时,FAC发消息给FAS,根据文件的大小把最后一个64MB的CHUNK以1MB大小对齐的方式进行截短。
以下结合本实施例中所涉及的各功能模块所具有的上述功能来对本发明提供的向磁盘中写入文件的方法的整个处理流程进行简要阐述。
图3为DFS预占磁盘空间的流程图,如图3所示,该流程包括如下处理:
FAS把FAC提交来的、将要写入磁盘的数据复制到缓存块(BLOCK)上,并且打上数据为脏(dirty)的标记,FAS的脏缓存块扫描线程扫描到一个脏缓存块后放入到它对应的磁盘读写工作线程的队列中,唤醒工作队列上的磁盘读写工作线程,然后磁盘读写工作线程对这个写入请求消息进行处理。具体处理流程包括:先判断这个缓存块数据将要写入的磁盘的类型(SATA机械磁盘或SSD固态磁盘),如果为SSD固态磁盘,则根据这个缓存块在CHUNK中的位置,直接把数据写入到CHUNK上的对应位置中;如果为SATA机械磁盘,则再查看这个缓存块对应的CHUNK的数据长度,如果长度为0,则表示本次是第一次往这个CHUNK上写入数据,则先预占一个64MB大小的连续的磁盘空间,然后把数据写入到CHUNK上的对应位置中,如果长度不为0,则表示非第一次写入数据,不需要预占磁盘空间,根据这个缓存块在CHUNK中的位置,直接把数据写入到CHUNK上的对应位置中。
假设FAC的页缓存PAGE大小配置为256KB,FAS缓存BLOCK大小配置为512KB,CHUNK大小配置为64MB,下面以SATA机械磁盘和SSD固态磁盘分别写入数据为例来说明具体的流程:
对于SATA机械磁盘的数据写入,流程示意图如图4所示:
业务应用程序通过分布式文件系统(DFS)提供的接口把将要写入DFS的数据提交到FAC的页PAGE缓存中;
FAC把页PAGE缓存中的数据提交到将要写入的磁盘所在的FAS上;
FAS的读写工作线程把FAC提交过来的数据复制到FAS缓存块中,并把块的脏标记置上;FAS的脏缓存块扫描线程扫描到这个脏缓存块后,向这个脏缓存块对应的磁盘读写线程的消息队列中放入写入请求消息;FAS的这个磁盘读写工作线程被唤醒,从消息队列中取出写入请求消息,查看这个脏缓存块对应的CHUNK的数据长度,如果数据长度为0,则预占64MB大小连续的磁盘空间,然后将这个脏缓存块块中的数据通过xfs的write接口写入磁盘中;
业务应用程序关闭文件,FAC根据文件的实际数据长度向FAS发送最后一个CHUNK截短的消息,FAS读写工作线程把最后一个CHUNK预占的多余空间以1MB大小对齐的方式截短(以1MB大小对齐截短是为了防止产生磁盘碎片)。
对于SSD固态磁盘的数据写入,流程示意图如图5:
业务应用程序通过分布式文件系统(DFS)提供的接口把将要写入DFS的数据提交到FAC的页PAGE缓存中;
FAC把页PAGE缓存中的数据提交到将要写入的磁盘所在的FAS上;
FAS的读写工作线程把FAC提交过来的数据复制到FAS缓存BLOCK中,并把BLOCK的脏标记置上;FAS的脏缓存BLOCK扫描线程扫描到这个脏缓存BLOCK后,向这个脏缓存BLOCK对应的磁盘读写线程的消息队列中放入写入请求消息;FAS的这个磁盘读写工作线程被唤醒,从消息队列中取出写入请求消息,然后将这个脏缓存块BLOCK中的数据通过xfs的write接口写入磁盘中。
第四实施例
本实施例提供了一种向磁盘中写入文件的装置,该装置用于实现上述第一实施例以及第三实施例中所涉及到的在FAS侧实现的方法,该装置具体可以设置于FAS中,图6是该装置的结构框图,如图6所示,该装置60包括以下组成部分:
判断模块61,用于判断缓存数据块待存入的CHUNK当前是否是第一次写入数据;
写入模块62,用于如果CHUNK当前是第一次写入数据,则预占一个CHUNK最大配置长度的连续磁盘空间,然后将缓存数据块写入到CHUNK中,如果CHUNK当前不是第一次写入数据,则将缓存数据块写入到CHUNK中。
其中,上述装置60还可以包括:查询模块,用于在判断缓存数据块待存入的CHUNK当前是否是第一次写入数据之前,在读取到数据写入请求消息后,在文件访问服务器FAS的卷表中查询缓存数据块待写入的磁盘的类型是否是预设磁盘类型,如果缓存数据块待写入的磁盘的类型是预设磁盘类型,则执行判断缓存数据块待存入的条带CHUNK当前是否是第一次写入数据的步骤,否则将缓存数据块写入其待写入的磁盘。
其中,上述判断模块61具体可以包括:查看单元,用于查看缓存数据块待存入的CHUNK中的数据的长度;第一确定单元,用于如果CHUNK中的数据的长度为零,确定CHUNK第一次写入数据;第二确定单元,用于如果CHUNK中的数据的长度不为零,确定CHUNK并非第一次写入数据。其中,查看单元具体可以用于:根据CHUNK的全路径名查询缓存数据块待写入的CHUNK中的数据的长度。
进一步,上述装置60还可以包括:截短模块,用于在将缓存数据块中的数据写入到CHUNK中之后,如果一个数据写入请求消息所对应的文件被写入的多个CHUNK中的最后一个CHUNK的数据不足64MB,则根据接收到的文件访问客户端FAC发送的截短指令把最后一个CHUNK预占的多余存储空间以1MB大小对齐的方式截短。
第五实施例
本实施例提供了一种向磁盘中写入文件的装置,该装置用于实现上述第二实施例以及第三实施例中FAC所执行的方法,图7为该装置的结构框图,如图7所示,该装置70包括如下组成部分:
提交模块71,用于将待写入磁盘的文件提交到文件待写入的磁盘所在的FAS;
发送模块72,用于根据文件的大小向FAS发送截短指令,截短指令用于指示FAS把写入文件的多个CHUNK中的最后一个CHUNK预占的多余的存储空间以1MB大小对齐的方式截短。
本发明针对SATA机械磁盘IO性能要求较高的场景,主要具如下有益效果:
在缓存块(BLOCK)的数据第一次写入CHUNK的时候,先预占一个64MB大小的连续的磁盘空间,之后再写入(包括覆盖写)数据到这个CHUNK上时,直接把数据写入到预占的磁盘空间上,不需要XFS再分配磁盘数据块空间,提高数据块分配的效率;在读取SATA机械磁盘上CHUNK的一段段连续数据时,磁盘磁头不需要来回转动,磁头往一个方向移动,大大减小XFS读取磁盘数据时的数据定位时延和磁头转动时延,减小XFS读写数据的IO等待时间,显著提升了IO效率。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (10)
1.一种向磁盘中写入文件的方法,用于文件访问服务器FAS,其特征在于,包括:
判断缓存数据块待存入的条带CHUNK当前是否是第一次写入数据;
如果所述CHUNK当前是第一次写入数据,则预占一个CHUNK最大配置长度的连续磁盘空间,然后将所述缓存数据块写入到所述CHUNK中,如果所述CHUNK当前不是第一次写入数据,则将所述缓存数据块写入到所述CHUNK中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在判断所述缓存数据块待存入的CHUNK当前是否是第一次写入数据之前,在读取到数据写入请求消息后,在文件访问服务器FAS的卷表中查询所述缓存数据块待写入的磁盘的类型是否是预设磁盘类型,如果所述缓存数据块待写入的磁盘的类型是预设磁盘类型,则执行判断缓存数据块待存入的条带CHUNK当前是否是第一次写入数据的步骤,否则将所述缓存数据块写入其待写入的磁盘。
3.根据权利要求1所述的方法,其特征在于,判断缓存数据块待存入的CHUNK当前是否是第一次写入数据,包括:
查看所述缓存数据块待存入的CHUNK中的数据的长度;
如果所述CHUNK中的数据的长度为零,确定所述CHUNK第一次写入数据;
如果所述CHUNK中的数据的长度不为零,确定所述CHUNK并非第一次写入数据。
4.根据权利要求3所述的方法,其特征在于,所述查看所述缓存数据块待存储的CHUNK中的数据的长度,包括:
根据所述CHUNK的全路径名查询所述缓存数据块待写入的CHUNK中的数据的长度。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述方法还包括:
在将所述缓存数据块中的数据写入到所述CHUNK中之后,如果一个数据写入请求消息所对应的文件被写入的多个CHUNK中的最后一个CHUNK的数据不足64MB,则根据接收到的文件访问客户端FAC发送的截短指令把最后一个CHUNK预占的多余存储空间以1MB大小对齐的方式截短。
6.一种向磁盘中写入文件的装置,用于文件访问服务器FAS,其特征在于,包括:
判断模块,用于判断缓存数据块待存入的条带CHUNK当前是否是第一次写入数据;
写入模块,用于如果所述CHUNK当前是第一次写入数据,则预占一个CHUNK最大配置长度的连续磁盘空间,然后将所述缓存数据块写入到所述CHUNK中,如果所述CHUNK当前不是第一次写入数据,则将所述缓存数据块写入到所述CHUNK中。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
查询模块,用于在判断所述缓存数据块待存入的CHUNK当前是否是第一次写入数据之前,在读取到数据写入请求消息后,在文件访问服务器FAS的卷表中查询所述缓存数据块待写入的磁盘的类型是否是预设磁盘类型,如果所述缓存数据块待写入的磁盘的类型是预设磁盘类型,则执行判断缓存数据块待存入的条带CHUNK当前是否是第一次写入数据的步骤,否则将所述缓存数据块写入其待写入的磁盘。
8.根据权利要求6所述的装置,其特征在于,所述判断模块包括:
查看单元,用于查看所述缓存数据块待存入的CHUNK中的数据的长度;
第一确定单元,用于如果所述CHUNK中的数据的长度为零,确定所述CHUNK第一次写入数据;
第二确定单元,用于如果所述CHUNK中的数据的长度不为零,确定所述CHUNK并非第一次写入数据。
9.根据权利要求7所述的装置,其特征在于,所述查看单元具体用于:
根据所述CHUNK的全路径名查询所述缓存数据块待写入的CHUNK中的数据的长度。
10.根据权利要求6至9任意一项所述的装置,其特征在于,所述装置还包括:
截短模块,用于在将所述缓存数据块中的数据写入到所述CHUNK中之后,如果一个数据写入请求消息所对应的文件被写入的多个CHUNK中的最后一个CHUNK的数据不足64MB,则根据接收到的文件访问客户端FAC发送的截短指令把最后一个CHUNK预占的多余存储空间以1MB大小对齐的方式截短。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610835844.7A CN107844261B (zh) | 2016-09-20 | 2016-09-20 | 向磁盘写入文件的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610835844.7A CN107844261B (zh) | 2016-09-20 | 2016-09-20 | 向磁盘写入文件的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107844261A CN107844261A (zh) | 2018-03-27 |
CN107844261B true CN107844261B (zh) | 2022-08-09 |
Family
ID=61657481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610835844.7A Active CN107844261B (zh) | 2016-09-20 | 2016-09-20 | 向磁盘写入文件的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107844261B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1448935A (zh) * | 2002-04-01 | 2003-10-15 | 索尼株式会社 | 在存储介质上记录数据的记录方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012156995A2 (en) * | 2011-05-13 | 2012-11-22 | Melange Systems (P) Limited | Fetch less instruction processing (flip) computer architecture for central processing units (cpu) |
-
2016
- 2016-09-20 CN CN201610835844.7A patent/CN107844261B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1448935A (zh) * | 2002-04-01 | 2003-10-15 | 索尼株式会社 | 在存储介质上记录数据的记录方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107844261A (zh) | 2018-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9946642B2 (en) | Distributed multimode storage management | |
US10552317B2 (en) | Cache allocation in a computerized system | |
US8904061B1 (en) | Managing storage operations in a server cache | |
US9996473B2 (en) | Selective underlying exposure storage mapping | |
US11886704B2 (en) | System and method for granular deduplication | |
US9940028B2 (en) | Multimode storage device | |
US9990304B2 (en) | Multimode storage management system | |
US9323655B1 (en) | Location of data among storage tiers | |
US9965381B1 (en) | Indentifying data for placement in a storage system | |
US10671309B1 (en) | Predicting usage for automated storage tiering | |
US10048876B2 (en) | Method for providing nonvolatile storage write bandwidth using a caching namespace | |
US20140082323A1 (en) | Address mapping | |
US10228858B1 (en) | System and method for granular deduplication | |
KR20180017148A (ko) | 스토리지 시스템, 스토리지 관리 디바이스, 스토리지 디바이스, 하이브리드 스토리지 디바이스, 및 스토리지 관리 방법 | |
US20180113639A1 (en) | Method and system for efficient variable length memory frame allocation | |
US20160357463A1 (en) | Cache management | |
US20170199680A1 (en) | System and method of write amplification factor mitigation and flash lifespan extension | |
US10853252B2 (en) | Performance of read operations by coordinating read cache management and auto-tiering | |
US11144224B2 (en) | Locality-aware, memory-efficient, time-efficient hot data identification using count-min-sketch for flash or streaming applications | |
US11068299B1 (en) | Managing file system metadata using persistent cache | |
US9864688B1 (en) | Discarding cached data before cache flush | |
US10108350B2 (en) | Method for providing nonvolatile storage write bandwidth using a caching namespace | |
CN107844261B (zh) | 向磁盘写入文件的方法及装置 | |
US11315028B2 (en) | Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system | |
US11494303B1 (en) | Data storage system with adaptive, memory-efficient cache flushing structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180424 Address after: 518057, A building, Zhongxing building, Nanshan District science and Technology Park, Shenzhen, Guangdong, five Applicant after: ZTE Corp. Address before: 210000 68 Bauhinia Road, Yuhuatai District, Nanjing, Jiangsu Applicant before: Nanjing Zhongxing New Software Co.,Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |