一种数据写入方法.pdf

上传人:r7 文档编号:1576048 上传时间:2018-06-25 格式:PDF 页数:7 大小:386.60KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110367440.7

申请日:

2011.11.18

公开号:

CN103123575A

公开日:

2013.05.29

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 3/06申请公布日:20130529|||文件的公告送达IPC(主分类):G06F 3/06收件人:北京兴宇中科科技开发股份有限公司文件名称:视为撤回通知书|||文件的公告送达IPC(主分类):G06F 3/06收件人:北京兴宇中科科技开发股份有限公司文件名称:第一次审查意见通知书|||文件的公告送达IPC(主分类):G06F3/06收件人:北京兴宇中科科技开发股份有限公司文件名称:手续合格通知书|||著录事项变更IPC(主分类):G06F 3/06变更事项:申请人变更前:北京兴宇中科科技开发股份有限公司变更后:北京兴宇中科科技开发股份有限公司变更事项:地址变更前:100101 北京市朝阳区大屯路西奥中心A座2201室变更后:100101 北京市朝阳区大屯路枫林绿洲5号7C|||文件的公告送达IPC(主分类):G06F 3/06收件人:北京兴宇中科科技开发股份有限公司文件名称:发明专利申请公布及进入实质审查通知书|||实质审查的生效IPC(主分类):G06F 3/06申请日:20111118|||公开

IPC分类号:

G06F3/06; G06F17/30

主分类号:

G06F3/06

申请人:

北京兴宇中科科技开发股份有限公司

发明人:

林兆祥; 郭松柳; 徐涛

地址:

100101 北京市朝阳区大屯路西奥中心A座2201室

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明公开了一种数据写入方法,包括:为文件服务器的每个磁盘或磁盘组设置一个写入定时器任务;文件服务器将所有写入数据的指令缓存到内存中;分别等待属于自身的写入定时器任务后,文件服务器的磁盘或磁盘组到缓存中读取关于该磁盘或磁盘组的写入指令并执行存储操作;当缓存中的所有关于该磁盘或磁盘组的写入指令执行完后,等待属于自身的所述写入定时器任务,重复执行前一步骤。本发明实施例提供了一种高性能的数据写入方法,通过将文件服务器接收到的写入指令放入缓存,并对写入指令进行分类排序,每隔一段时间提取执行多个写入指令,将属于同一文件的写入指令按顺序执行,避免重复寻址,能够较大提升存储效率。

权利要求书

权利要求书一种数据写入方法,其特征在于,包括:
为文件服务器的每个磁盘或磁盘组设置一个写入定时器任务;
文件服务器将所有写入数据的指令缓存到内存中;
分别等待属于自身的写入定时器任务后,文件服务器的磁盘或磁盘组到缓存中读取关于该磁盘或磁盘组的写入指令并执行存储操作;
当缓存中的所有关于该磁盘或磁盘组的写入指令执行完后,等待属于自身的所述写入定时器任务,重复执行前一步骤。
根据权利要求1所述的数据写入方法,其特征在于,所述为不同磁盘或磁盘组设置的写入定时器任务相同或不同。
根据权利要求2所述的数据写入方法,其特征在于,所述到缓存中读取关于该磁盘或磁盘组的写入指令并执行存储操作的方法具体包括:
文件服务器的磁盘或磁盘组将缓存中的所有关于该磁盘或磁盘组的写入指令分类排序;
文件服务器的所述磁盘或磁盘组按所述分类排序后的顺序分别执行缓存中关于该磁盘或磁盘组的各分类写入指令的存储操作;
文件服务器的所述磁盘或磁盘组执行完缓存中的所有关于该磁盘或磁盘组的写入指令,停止存储操作。
根据权利要求3所述的数据写入方法,其特征在于,所述对缓存中所有关于该磁盘或磁盘组的写入指令分类排序具体包括:
将缓存中关于该磁盘或磁盘组的属于对同一文件的写入指令分为一类,并在同一类别写入指令中按指令写入数据的地址顺序对该类所有指令进行排序,写入地址靠前的先执行,否则后执行;针对不同类别的写入指令,按每类指令中的第一条的发送时间,先执行第一条指令发送时间最早的指令类。
根据权利要求4所述的数据写入方法,其特征在于,所述文件服务器的磁盘或磁盘组在执行缓存中的关于自身的写入指令时,如果在执行过程中有新的有关自身的写入指令进入缓存,则:
如果该新的写入指令所属文件的其它写入指令已经开始执行,则暂不执行该指令;
如果该新的写入指令所属文件的其它写入指令尚未执行,则同样对其分类排序,并顺序执行,直到缓存中关于本磁盘或磁盘组的所有写入指令执行完。
根据权利要求1‑5中任意一项所述的数据写入方法,其特征在于,该方法进一步包括:
当所述缓存中接收到了一客户端发送的针对一文件的数据写入提交commit指令时,则立即执行该客户端针对该文件的所有写入指令。
根据权利要求1‑5中任意一项所述的数据写入方法,其特征在于,该方法进一步包括:
当文件服务器中包含磁盘阵列时,对磁盘分组的方式是确保一个磁盘阵列中的磁盘不被划分到多个磁盘组中。

说明书

说明书一种数据写入方法
技术领域
本发明涉及计算机存储技术,特别是一种数据写入方法。
背景技术
在互联网中,以文件数据共享为目标,将供多台计算机共享的文件存放于一台计算机中,这台计算机就被称为文件服务器。文件服务器具有分时系统管理的全部功能,能够对全网统一管理,能够提供网络用户访问文件、目录的并发控制和安全保密措施。
对于一个大量用户同时使用的文件服务器,磁盘的速度往往是整个系统的瓶颈,尤其是磁盘的写入速度。在磁盘的性能中,读速度是最快的,写速度相对比较慢,特别是随机写,由于磁头要不断的寻址,相对于顺序写入,随机写入性能大幅度降低。
举个例子,在现有的文件服务器系统中,用户针对文件服务器中文件的存储主要采用先到先写入的方式进行,如图1所示:假如系统中有三个文件A、B和C,用户客户端按时间顺序先后向文件服务器发送了9条写入指令,分别是指令1‑指令9,其中指令1、4、7是针对同一文件A的写入操作,指令2、5、8是针对同一文件B的写入操作,以此类推,针对同一文件写入的数据会保存在一段连续的地址空间中。则文件服务器接收到这9条指令后执行的写入顺序与其接收顺序相同,分别也是指令1‑指令9。由于用户客户端所发送的针对同一文件的3条写入指令其存储的数据应保存在一段连续的地址空间中,如果这3条指令连续执行的话其存储效率是最高的,但事实上,按接收顺序执行的话,文件服务器每接收到一条新的写入指令就要重新寻址一次,导致存储效率被大幅降低。因此,现有的存储方式已经成为了提升文件服务器存储速度的主要瓶颈。
为了提高写入性能,通常服务器都会采用缓存技术,接受到数据后并不马上将数据写入到磁盘,而是缓存一段时间以后,累积了比较多的数据以后才将数据同时写入,这在一定程度上提高了磁盘的写入性能。但是这种简单的缓存方式,也不能完全发挥整个系统的io潜能。在采用缓存的系统里面,如果允许多个文件并发写入磁盘,由于不同文件可能在同一个磁盘里面,因此并发写入有上文所述的问题(磁头不断重新寻址);如果不允许并发写入,由于现有文件服务器一般由多个磁盘组成,顺序写入将导致只有部分磁盘处于工作状态,也不利于发挥服务器磁盘的最大性能。
发明内容
有鉴于此,本发明的目的在于提供一种数据写入方法,用于最大限度提高文件服务器的磁盘存储性能。
本发明的实施例提供了一种数据写入方法,包括:
为文件服务器的每个磁盘或磁盘组设置一个写入定时器任务;
文件服务器将所有写入数据的指令缓存到内存中;
分别等待属于自身的写入定时器任务后,文件服务器的磁盘或磁盘组到缓存中读取关于该磁盘或磁盘组的写入指令并执行存储操作;
当缓存中的所有关于该磁盘或磁盘组的写入指令执行完后,等待属于自身的所述写入定时器任务,重复执行前一步骤。
本发明实施例提供了一种高性能的数据写入方法,通过将文件服务器接收到的写入指令放入缓存,并对写入指令进行分类排序,每隔一段时间提取执行多个写入指令,将属于同一文件的写入指令按顺序执行,避免重复寻址,能够较大提升存储效率。
进一步地,将不同磁盘(磁盘组)的文件进行分类写入,允许不同磁盘组的数据同时写入,提高了磁盘io性能。
附图说明
图1为背景技术中用户针对文件服务器中文件的存储方式的示意图;
图2为本发明实施例提供的数据写入方法的流程图;
图3为本发明实施例提供的文件服务器到缓存中读取写入指令执行存储操作的方法流程图。
具体实施方式
本发明实施例提供了一种高性能的数据写入方法,通过将文件服务器接收到的写入指令放入缓存,并对写入指令进行分类排序,每隔一段时间提取执行多个写入指令,将属于同一文件的写入指令按顺序执行,避免重复寻址,能够较大提升存储效率;同时,将不同磁盘(磁盘组)的文件进行分类写入,允许不同磁盘组的数据同时写入,提高磁盘io性能。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
图2为本发明实施例中的数据写入方法的流程图,包括以下步骤:
步骤201、为文件服务器的每个磁盘或磁盘组设置一个写入定时器任务timer(i)(i为文件服务器中磁盘或磁盘组的编号)。所述timer(i)是指文件服务器中的第i个磁盘或磁盘组在间隔该时间段后即启动一个数据写入过程,文件服务器的第i个磁盘或磁盘组在该写入过程中到内存中读取关于本磁盘文件的写入指令,并执行相应的存储操作,直到所有写入指令都已经执行完毕,然后再进入下一个timer(i)。在系统负载高时,由于需要写入的数据比较多,一个timer过程可能执行较长时间,两个timer过程间隔的时间也就比较长,累积的数据量比较大,一次顺序写入的数据也比较多,从而导致平均写入性能提高。在一个较佳实施例中,可以设置timer间隔为200ms。为不同磁盘或磁盘组设置的timer可以相同也可以不同。
步骤202、文件服务器将所有写入数据的指令缓存到内存中。将写入指令放到内存中缓存,并分类排序后执行,这是本发明实施例针对现有技术的重大改进,避免文件服务器每接收到一条写入指令就执行一条,将多个写入指令先放入内存缓存,每隔timer(i),文件服务器中的第i个磁盘或磁盘组就到缓存中读取关于第i个磁盘或磁盘组的写入指令,并将属于用户客户端对同一文件的写入指令顺序执行,避免重复寻址,能够较大提升存储效率。
步骤203、等待timer(i)后,文件服务器的第i个磁盘或磁盘组到缓存中读取关于第i个磁盘或磁盘组的写入指令执行存储操作;同时,文件服务器的其它磁盘或磁盘组也执行该操作,即等待为自己设定的timer后,到缓存中读取属于自己的写入指令并执行存储操作。以200ms的timer(i)为例,每隔200ms,文件服务器的第i个磁盘或磁盘组到缓存中读取写入指令,其操作的步骤如图3所述,包括:
步骤2031、文件服务器的第i个磁盘或磁盘组将缓存中的所有关于第i个磁盘或磁盘组的写入指令归类排序。以图1中的情况为例,假如在等待了200ms后,文件服务器的第i个磁盘或磁盘组在缓存中读取了9条关于第i个磁盘或磁盘组的写入指令,则将该9条指令按其针对的文件进行分类,将针对同一文件的指令1、4、7分成一类,指令2、5、8分成一类,指令3、6、9分成一类。并在同类指令中,按指令写入数据的地址顺序对该类所有指令进行排序,写入地址靠前的先执行,否则后执行。之所以还要进行排序,也是为了提高存储效率,使得文件服务器尽可能对同一段地址空间连续写入,减少寻址操作。需要注意的是,文件服务器只将针对同一文件的写入指令归入一类,因为只有这类指令执行时才会对一段连续的地址空间进行写入操作,该分类并不区分用户客户端,即使不同客户端发送的对同一文件的写入指令同样会分为一类。
步骤2032、文件服务器的第i个磁盘或磁盘组顺序执行缓存中同类指令的写入操作。执行时,按每类指令所属文件的文件名或每类指令中的第一条的发送时间,先执行文件名排序靠前或第一条指令发送时间最早的指令类。在图1的例子中,其指令执行顺序为:1、4、7、2、5、8、3、6、9。文件服务器的第i个磁盘或磁盘组在缓存中的写入指令越多,则存在属于对同一文件的写入指令的概率越大,从而一次顺序写入的数据也比较多,导致平均写入性能得到较大提高。图1的例子中,只需进行3次寻址,而按现有的存储方法,则需寻址9次。
步骤2033、文件服务器的第i个磁盘或磁盘组执行完缓存中的所有关于本磁盘或磁盘组的写入指令,停止存储操作。文件服务器中的磁盘或磁盘组持续将缓存中的所有有关自己的写入指令顺序执行,如果在执行过程中有新的有关自己的写入指令进入缓存,则按两种情况处理:如果该写入指令所属文件的其它写入指令已经开始执行,则暂不执行该指令;如果该写入指令所属文件的其它写入指令尚未执行,则同样对其分类排序,并顺序执行,直到缓存中关于本磁盘或磁盘组的所有指令执行完。
步骤204、缓存中的所有写入指令执行完后,等待timer,重复执行步骤203。
通过以上方法,将缓存中的写入指令按其所针对的文件和写入的地址顺序进行分类和排序后,再顺序执行对同一文件的写入指令,使得一次顺序写入的数据更多,明显提升了存储效率,
在现有技术中,用户发送写入指令,则文件服务器即顺序执行该指令,会回复一条确认响应消息,表明响应成功,则客户端不再重复发送该写入指令。而当大量寻址导致存储速度低时,一旦服务器发生宕机,导致某写入指令未执行,则客户端在一定时间没接收到该指令的响应后,会重新发送。
而在本发明实施例所述的数据写入方法中,某用户的客户端在发送完针对同一文件的所有写入指令时,会上传一条commit(提交)指令,向服务器确认完成了写入操作;而一旦用户客户端在发送commit指令后没有得到响应确认,会将针对该文件的所有写入指令都重新发送或将未写入成功的指令重新发送。由于用户客户端发送的写入指令都存储在缓存中,只要缓存接收到某指令,即会向相应客户端返回响应确认。于是可能会存在这种情况,某客户端发送了写入指令和commit指令,也接收到了文件服务器端的响应确认,而实际上该写入指令还在缓存中等待,尚未被执行。如果此时服务器发生宕机,缓存中的指令丢失,则该指令未被执行,客户端却无法获知,因为客户端接收到了响应确认后就不再重新发送该写入指令了。
为了避免这种情况,减少宕机带来的写入指令丢失造成的损失,本发明实施例对前述数据写入方法的流程进行了补充,即在缓存接收到了客户端发送的commit指令时,会立即执行该客户端针对该文件的所有写入指令。在客户端发送的commit指令中,包含客户端信息及其针对的文件信息,文件服务器根据该信息,立即执行该客户端针对该文件的所有写入指令,避免此时文件服务器宕机,导致的指令丢失而没有被执行的情况。这样的话,即使用户客户端在发送写入指令的过程中发生宕机,由于宕机后不能对commit指令确认,使得该客户端还是会重新发送写入指令。
一般情况下,在文件服务器中都会包含多个磁盘阵列,以容纳海量的数据文件,例如,可将文件服务器中的24个磁盘划为4个磁盘阵列,每个磁盘阵列绑定6个磁盘,用于提高磁盘阵列内部的容错能力。在本发明的实施例中,对文件服务器的磁盘进行分组的依据有两个,一种是对文件服务器中的多个磁盘任意分组;另一种是在文件服务器中存在磁盘阵列的情况下,分组的方式是确保一个磁盘阵列中的磁盘不会被划分到多个磁盘组中。本实施例通过对磁盘或磁盘阵列分组,比如给每个磁盘组设置一个timer,使得多个磁盘组可以并发执行存储操作,进一步提高了存储速度。以图1情况为例,假如文件A和B在同一磁盘中,文件C在另一磁盘中,则按照磁盘分类的话,缓存中的指令1‑9除了按照文件和地址进行分类排序外,还进一步按照磁盘分组,1‑6为一组,7‑9为另一组。这样,在执行过程中,文件服务器在顺序执行指令1、4、7、2、5、8的同时,还并发执行指令3、6、9,进一步提高的存储效率。这个实施例也适合对文件服务器进行扩容时,例如要在文件服务器中增加一个新的磁盘,那么按此方案只需给新的磁盘设置一个timer即可。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

一种数据写入方法.pdf_第1页
第1页 / 共7页
一种数据写入方法.pdf_第2页
第2页 / 共7页
一种数据写入方法.pdf_第3页
第3页 / 共7页
点击查看更多>>
资源描述

《一种数据写入方法.pdf》由会员分享,可在线阅读,更多相关《一种数据写入方法.pdf(7页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103123575 A(43)申请公布日 2013.05.29CN103123575A*CN103123575A*(21)申请号 201110367440.7(22)申请日 2011.11.18G06F 3/06(2006.01)G06F 17/30(2006.01)(71)申请人北京兴宇中科科技开发股份有限公司地址 100101 北京市朝阳区大屯路西奥中心A座2201室(72)发明人林兆祥 郭松柳 徐涛(54) 发明名称一种数据写入方法(57) 摘要本发明公开了一种数据写入方法,包括:为文件服务器的每个磁盘或磁盘组设置一个写入定时器任务;文件服务器将所有写入数据的指。

2、令缓存到内存中;分别等待属于自身的写入定时器任务后,文件服务器的磁盘或磁盘组到缓存中读取关于该磁盘或磁盘组的写入指令并执行存储操作;当缓存中的所有关于该磁盘或磁盘组的写入指令执行完后,等待属于自身的所述写入定时器任务,重复执行前一步骤。本发明实施例提供了一种高性能的数据写入方法,通过将文件服务器接收到的写入指令放入缓存,并对写入指令进行分类排序,每隔一段时间提取执行多个写入指令,将属于同一文件的写入指令按顺序执行,避免重复寻址,能够较大提升存储效率。(51)Int.Cl.权利要求书1页 说明书4页 附图1页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书1页 说明书4页 附图。

3、1页(10)申请公布号 CN 103123575 ACN 103123575 A1/1页21.一种数据写入方法,其特征在于,包括:为文件服务器的每个磁盘或磁盘组设置一个写入定时器任务;文件服务器将所有写入数据的指令缓存到内存中;分别等待属于自身的写入定时器任务后,文件服务器的磁盘或磁盘组到缓存中读取关于该磁盘或磁盘组的写入指令并执行存储操作;当缓存中的所有关于该磁盘或磁盘组的写入指令执行完后,等待属于自身的所述写入定时器任务,重复执行前一步骤。2.根据权利要求1所述的数据写入方法,其特征在于,所述为不同磁盘或磁盘组设置的写入定时器任务相同或不同。3.根据权利要求2所述的数据写入方法,其特征在于。

4、,所述到缓存中读取关于该磁盘或磁盘组的写入指令并执行存储操作的方法具体包括:文件服务器的磁盘或磁盘组将缓存中的所有关于该磁盘或磁盘组的写入指令分类排序;文件服务器的所述磁盘或磁盘组按所述分类排序后的顺序分别执行缓存中关于该磁盘或磁盘组的各分类写入指令的存储操作;文件服务器的所述磁盘或磁盘组执行完缓存中的所有关于该磁盘或磁盘组的写入指令,停止存储操作。4.根据权利要求3所述的数据写入方法,其特征在于,所述对缓存中所有关于该磁盘或磁盘组的写入指令分类排序具体包括:将缓存中关于该磁盘或磁盘组的属于对同一文件的写入指令分为一类,并在同一类别写入指令中按指令写入数据的地址顺序对该类所有指令进行排序,写入。

5、地址靠前的先执行,否则后执行;针对不同类别的写入指令,按每类指令中的第一条的发送时间,先执行第一条指令发送时间最早的指令类。5.根据权利要求4所述的数据写入方法,其特征在于,所述文件服务器的磁盘或磁盘组在执行缓存中的关于自身的写入指令时,如果在执行过程中有新的有关自身的写入指令进入缓存,则:如果该新的写入指令所属文件的其它写入指令已经开始执行,则暂不执行该指令;如果该新的写入指令所属文件的其它写入指令尚未执行,则同样对其分类排序,并顺序执行,直到缓存中关于本磁盘或磁盘组的所有写入指令执行完。6.根据权利要求1-5中任意一项所述的数据写入方法,其特征在于,该方法进一步包括:当所述缓存中接收到了一。

6、客户端发送的针对一文件的数据写入提交commit指令时,则立即执行该客户端针对该文件的所有写入指令。7.根据权利要求1-5中任意一项所述的数据写入方法,其特征在于,该方法进一步包括:当文件服务器中包含磁盘阵列时,对磁盘分组的方式是确保一个磁盘阵列中的磁盘不被划分到多个磁盘组中。权 利 要 求 书CN 103123575 A1/4页3一种数据写入方法技术领域0001 本发明涉及计算机存储技术,特别是一种数据写入方法。背景技术0002 在互联网中,以文件数据共享为目标,将供多台计算机共享的文件存放于一台计算机中,这台计算机就被称为文件服务器。文件服务器具有分时系统管理的全部功能,能够对全网统一管理。

7、,能够提供网络用户访问文件、目录的并发控制和安全保密措施。0003 对于一个大量用户同时使用的文件服务器,磁盘的速度往往是整个系统的瓶颈,尤其是磁盘的写入速度。在磁盘的性能中,读速度是最快的,写速度相对比较慢,特别是随机写,由于磁头要不断的寻址,相对于顺序写入,随机写入性能大幅度降低。0004 举个例子,在现有的文件服务器系统中,用户针对文件服务器中文件的存储主要采用先到先写入的方式进行,如图1所示:假如系统中有三个文件A、B和C,用户客户端按时间顺序先后向文件服务器发送了9条写入指令,分别是指令1-指令9,其中指令1、4、7是针对同一文件A的写入操作,指令2、5、8是针对同一文件B的写入操作。

8、,以此类推,针对同一文件写入的数据会保存在一段连续的地址空间中。则文件服务器接收到这9条指令后执行的写入顺序与其接收顺序相同,分别也是指令1-指令9。由于用户客户端所发送的针对同一文件的3条写入指令其存储的数据应保存在一段连续的地址空间中,如果这3条指令连续执行的话其存储效率是最高的,但事实上,按接收顺序执行的话,文件服务器每接收到一条新的写入指令就要重新寻址一次,导致存储效率被大幅降低。因此,现有的存储方式已经成为了提升文件服务器存储速度的主要瓶颈。0005 为了提高写入性能,通常服务器都会采用缓存技术,接受到数据后并不马上将数据写入到磁盘,而是缓存一段时间以后,累积了比较多的数据以后才将数。

9、据同时写入,这在一定程度上提高了磁盘的写入性能。但是这种简单的缓存方式,也不能完全发挥整个系统的io潜能。在采用缓存的系统里面,如果允许多个文件并发写入磁盘,由于不同文件可能在同一个磁盘里面,因此并发写入有上文所述的问题(磁头不断重新寻址);如果不允许并发写入,由于现有文件服务器一般由多个磁盘组成,顺序写入将导致只有部分磁盘处于工作状态,也不利于发挥服务器磁盘的最大性能。发明内容0006 有鉴于此,本发明的目的在于提供一种数据写入方法,用于最大限度提高文件服务器的磁盘存储性能。0007 本发明的实施例提供了一种数据写入方法,包括:0008 为文件服务器的每个磁盘或磁盘组设置一个写入定时器任务;。

10、0009 文件服务器将所有写入数据的指令缓存到内存中;0010 分别等待属于自身的写入定时器任务后,文件服务器的磁盘或磁盘组到缓存中读取关于该磁盘或磁盘组的写入指令并执行存储操作;说 明 书CN 103123575 A2/4页40011 当缓存中的所有关于该磁盘或磁盘组的写入指令执行完后,等待属于自身的所述写入定时器任务,重复执行前一步骤。0012 本发明实施例提供了一种高性能的数据写入方法,通过将文件服务器接收到的写入指令放入缓存,并对写入指令进行分类排序,每隔一段时间提取执行多个写入指令,将属于同一文件的写入指令按顺序执行,避免重复寻址,能够较大提升存储效率。0013 进一步地,将不同磁盘。

11、(磁盘组)的文件进行分类写入,允许不同磁盘组的数据同时写入,提高了磁盘io性能。附图说明0014 图1为背景技术中用户针对文件服务器中文件的存储方式的示意图;0015 图2为本发明实施例提供的数据写入方法的流程图;0016 图3为本发明实施例提供的文件服务器到缓存中读取写入指令执行存储操作的方法流程图。具体实施方式0017 本发明实施例提供了一种高性能的数据写入方法,通过将文件服务器接收到的写入指令放入缓存,并对写入指令进行分类排序,每隔一段时间提取执行多个写入指令,将属于同一文件的写入指令按顺序执行,避免重复寻址,能够较大提升存储效率;同时,将不同磁盘(磁盘组)的文件进行分类写入,允许不同磁。

12、盘组的数据同时写入,提高磁盘io性能。0018 为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。0019 图2为本发明实施例中的数据写入方法的流程图,包括以下步骤:0020 步骤201、为文件服务器的每个磁盘或磁盘组设置一个写入定时器任务timer(i)(i为文件服务器中磁盘或磁盘组的编号)。所述timer(i)是指文件服务器中的第i个磁盘或磁盘组在间隔该时间段后即启动一个数据写入过程,文件服务器的第i个磁盘或磁盘组在该写入过程中到内存中读取关于本磁盘文件的写入指令,并执行相应的存储操作,直到所有写入指令都已经执行完毕,然后再进入下一个timer(i)。在系统。

13、负载高时,由于需要写入的数据比较多,一个timer过程可能执行较长时间,两个timer过程间隔的时间也就比较长,累积的数据量比较大,一次顺序写入的数据也比较多,从而导致平均写入性能提高。在一个较佳实施例中,可以设置timer间隔为200ms。为不同磁盘或磁盘组设置的timer可以相同也可以不同。0021 步骤202、文件服务器将所有写入数据的指令缓存到内存中。将写入指令放到内存中缓存,并分类排序后执行,这是本发明实施例针对现有技术的重大改进,避免文件服务器每接收到一条写入指令就执行一条,将多个写入指令先放入内存缓存,每隔timer(i),文件服务器中的第i个磁盘或磁盘组就到缓存中读取关于第i个。

14、磁盘或磁盘组的写入指令,并将属于用户客户端对同一文件的写入指令顺序执行,避免重复寻址,能够较大提升存储效率。0022 步骤203、等待timer(i)后,文件服务器的第i个磁盘或磁盘组到缓存中读取关于第i个磁盘或磁盘组的写入指令执行存储操作;同时,文件服务器的其它磁盘或磁盘组也说 明 书CN 103123575 A3/4页5执行该操作,即等待为自己设定的timer后,到缓存中读取属于自己的写入指令并执行存储操作。以200ms的timer(i)为例,每隔200ms,文件服务器的第i个磁盘或磁盘组到缓存中读取写入指令,其操作的步骤如图3所述,包括:0023 步骤2031、文件服务器的第i个磁盘或磁。

15、盘组将缓存中的所有关于第i个磁盘或磁盘组的写入指令归类排序。以图1中的情况为例,假如在等待了200ms后,文件服务器的第i个磁盘或磁盘组在缓存中读取了9条关于第i个磁盘或磁盘组的写入指令,则将该9条指令按其针对的文件进行分类,将针对同一文件的指令1、4、7分成一类,指令2、5、8分成一类,指令3、6、9分成一类。并在同类指令中,按指令写入数据的地址顺序对该类所有指令进行排序,写入地址靠前的先执行,否则后执行。之所以还要进行排序,也是为了提高存储效率,使得文件服务器尽可能对同一段地址空间连续写入,减少寻址操作。需要注意的是,文件服务器只将针对同一文件的写入指令归入一类,因为只有这类指令执行时才会。

16、对一段连续的地址空间进行写入操作,该分类并不区分用户客户端,即使不同客户端发送的对同一文件的写入指令同样会分为一类。0024 步骤2032、文件服务器的第i个磁盘或磁盘组顺序执行缓存中同类指令的写入操作。执行时,按每类指令所属文件的文件名或每类指令中的第一条的发送时间,先执行文件名排序靠前或第一条指令发送时间最早的指令类。在图1的例子中,其指令执行顺序为:1、4、7、2、5、8、3、6、9。文件服务器的第i个磁盘或磁盘组在缓存中的写入指令越多,则存在属于对同一文件的写入指令的概率越大,从而一次顺序写入的数据也比较多,导致平均写入性能得到较大提高。图1的例子中,只需进行3次寻址,而按现有的存储方。

17、法,则需寻址9次。0025 步骤2033、文件服务器的第i个磁盘或磁盘组执行完缓存中的所有关于本磁盘或磁盘组的写入指令,停止存储操作。文件服务器中的磁盘或磁盘组持续将缓存中的所有有关自己的写入指令顺序执行,如果在执行过程中有新的有关自己的写入指令进入缓存,则按两种情况处理:如果该写入指令所属文件的其它写入指令已经开始执行,则暂不执行该指令;如果该写入指令所属文件的其它写入指令尚未执行,则同样对其分类排序,并顺序执行,直到缓存中关于本磁盘或磁盘组的所有指令执行完。0026 步骤204、缓存中的所有写入指令执行完后,等待timer,重复执行步骤203。0027 通过以上方法,将缓存中的写入指令按其。

18、所针对的文件和写入的地址顺序进行分类和排序后,再顺序执行对同一文件的写入指令,使得一次顺序写入的数据更多,明显提升了存储效率,0028 在现有技术中,用户发送写入指令,则文件服务器即顺序执行该指令,会回复一条确认响应消息,表明响应成功,则客户端不再重复发送该写入指令。而当大量寻址导致存储速度低时,一旦服务器发生宕机,导致某写入指令未执行,则客户端在一定时间没接收到该指令的响应后,会重新发送。0029 而在本发明实施例所述的数据写入方法中,某用户的客户端在发送完针对同一文件的所有写入指令时,会上传一条commit(提交)指令,向服务器确认完成了写入操作;而一旦用户客户端在发送commit指令后没。

19、有得到响应确认,会将针对该文件的所有写入指令都重新发送或将未写入成功的指令重新发送。由于用户客户端发送的写入指令都存储在缓存中,只要缓存接收到某指令,即会向相应客户端返回响应确认。于是可能会存在这种情说 明 书CN 103123575 A4/4页6况,某客户端发送了写入指令和commit指令,也接收到了文件服务器端的响应确认,而实际上该写入指令还在缓存中等待,尚未被执行。如果此时服务器发生宕机,缓存中的指令丢失,则该指令未被执行,客户端却无法获知,因为客户端接收到了响应确认后就不再重新发送该写入指令了。0030 为了避免这种情况,减少宕机带来的写入指令丢失造成的损失,本发明实施例对前述数据写入。

20、方法的流程进行了补充,即在缓存接收到了客户端发送的commit指令时,会立即执行该客户端针对该文件的所有写入指令。在客户端发送的commit指令中,包含客户端信息及其针对的文件信息,文件服务器根据该信息,立即执行该客户端针对该文件的所有写入指令,避免此时文件服务器宕机,导致的指令丢失而没有被执行的情况。这样的话,即使用户客户端在发送写入指令的过程中发生宕机,由于宕机后不能对commit指令确认,使得该客户端还是会重新发送写入指令。0031 一般情况下,在文件服务器中都会包含多个磁盘阵列,以容纳海量的数据文件,例如,可将文件服务器中的24个磁盘划为4个磁盘阵列,每个磁盘阵列绑定6个磁盘,用于提高。

21、磁盘阵列内部的容错能力。在本发明的实施例中,对文件服务器的磁盘进行分组的依据有两个,一种是对文件服务器中的多个磁盘任意分组;另一种是在文件服务器中存在磁盘阵列的情况下,分组的方式是确保一个磁盘阵列中的磁盘不会被划分到多个磁盘组中。本实施例通过对磁盘或磁盘阵列分组,比如给每个磁盘组设置一个timer,使得多个磁盘组可以并发执行存储操作,进一步提高了存储速度。以图1情况为例,假如文件A和B在同一磁盘中,文件C在另一磁盘中,则按照磁盘分类的话,缓存中的指令1-9除了按照文件和地址进行分类排序外,还进一步按照磁盘分组,1-6为一组,7-9为另一组。这样,在执行过程中,文件服务器在顺序执行指令1、4、7、2、5、8的同时,还并发执行指令3、6、9,进一步提高的存储效率。这个实施例也适合对文件服务器进行扩容时,例如要在文件服务器中增加一个新的磁盘,那么按此方案只需给新的磁盘设置一个timer即可。0032 总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。说 明 书CN 103123575 A1/1页7图1图2图3说 明 书 附 图CN 103123575 A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1