一种文件锁实现方法及装置制造方法

文档序号:6633265阅读:152来源:国知局
一种文件锁实现方法及装置制造方法
【专利摘要】本发明公开一种文件锁实现方法及装置,当第一协议访问文件系统时,该方法包括:将所述第一协议的打开open对象映射为第一文件锁,其中,open对象是指一次打开open请求所产生的协议数据;根据预设的互斥规则将所述第一文件锁和上一次访问文件系统的第二协议对应的第二文件锁做冲突判断,根据冲突判断结果返回创建open请求失败或者允许第一协议访问文件系统。本发明所提供的方法和装置解决多个协议共存于一个网络附属存储时,由于协议壁垒导致数据不能得到保护,文件数据容易被改写的问题。
【专利说明】一种文件锁实现方法及装置

【技术领域】
[0001] 本发明涉及电子【技术领域】,尤其涉及一种文件锁实现方法及装置。

【背景技术】
[0002] 目前,网络附属存储(Network Attached Storage, NAS)支持服务器信息块 (Server Message Block,SMB),网络文件系统(Network File System,NFS),文件传输协议 (File Transfer Protocol,FTP),超文本传输协议(Hyper Text Transfer Protocol,HTTP) 等多种协议,当多种协议的客户端同时工作在一个服务器上时,由于协议之间的壁垒,只能 实现协议内的协议一致性,不能实现跨协议的协议一致性。基于上述原因会出现某一协议 访问了一个已经被其他协议设置拒绝访问的文件或者目录,例如:用SMB协议创建的文件 在设置了排他访问的时候依然可以被NFS协议打开或者删除,两个协议对文件系统操作的 流程如图1所示,当SMB客户端先打开一个文件filel并设置排他修改时,NFS客户端的写 请求就会直接修改filel,这就造成协议规则被破坏,数据不能得到保护,文件数据容易被改 写,使得用户体验不好等问题。


【发明内容】

[0003] 本发明提供一种文件锁实现方法及装置,本发明所提供的方法和装置解决多个协 议共存于一个网络附属存储时,由于协议壁垒导致数据不能得到保护,文件数据容易被改 写的问题。
[0004] 第一方面,本发明提供一种文件锁实现方法,第一协议访问文件系统时,该方法包 括:
[0005] 将所述第一协议的打开open对象映射为第一文件锁,其中,open对象是指一次打 开open请求所产生的协议数据;
[0006] 根据预设的互斥规则将所述第一文件锁和上一次访问文件系统的第二协议对应 的第二文件锁做冲突判断,根据冲突判断结果返回创建open请求失败或者允许第一协议 访问文件系统。
[0007] 结合第一方面,在第一种可能的实现方式中,所述冲突判断包括;
[0008] 根据所述第二文件锁确定所述第二协议是否允许其他open对象操作所述文件系 统;和/或
[0009] 根据所述第二文件锁确定所述第二协议是否允许其他open对象缓存数据到所述 文件系统。
[0010] 结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,根据冲突 判断结果返回创建open请求失败或者允许第一协议访问文件系统包括:
[0011] 当所述冲突判断结果为所述第二协议不允许其他open对象操作所述文件系统, 则返回创建open请求失败;否则允许第一协议访问文件系统;
[0012] 当所述冲突判断结果为所述第二协议不允许其他open对象缓存数据到所述文件 系统,则在召回第一协议已缓存的数据后,访问所述文件系统。
[0013] 结合第一方面,或者第一方面的第一至二种可能的实现方式,在第三种可能的实 现方式中,根据预设的互斥规则将所述第一文件锁和上一次访问文件系统的第二协议对应 的第二文件锁做冲突判断包括:
[0014] 确定所述第二文件锁中的第一标志位与所述第一文件锁中对应的第二标志位不 相同,则以所述第一标志位所指示的内容作为冲突判断的结果。
[0015] 结合第一方面,或者第一方面的第一至三种可能的实现方式,在第三种可能的实 现方式中,当第一协议内部能够生成open对象,则将所述第一协议的open对象映射为第一 文件锁包括:
[0016] 确定第一协议的open对象是否有对文件系统的操作请求,如果有任一类型的操 作请求,则将所述第一文件锁中与任一类型的操作对应的标志位置位;
[0017] 确定第一协议的open对象是否允许其他open对象操作所述文件系统,如果允许 任一类型的操作,则将所述第一文件锁中与任一类型的操作对应的标志位置位;
[0018] 确定第一协议的open对象是否请求客户端缓存,如果是,则将所述第一文件锁中 与缓存对应的标志位置位。
[0019] 结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,当第一协 议内部不会生成open对象,则确定第一协议的open对象是否有对文件系统的操作请求之 前,该方法还包括:
[0020] 生成临时的协议open对象,并将所述临时的协议open对象作为所述第一协议的 open对象。
[0021] 第二方面,本发明提供一种文件锁实现装置,第一协议访问文件系统时,该装置包 括:
[0022] 映射单元,用于将所述第一协议的打开open对象映射为第一文件锁,其中,open 对象是指一次打开open请求所产生的协议数据;
[0023] 冲突判断单元,用于根据预设的互斥规则将所述第一文件锁和上一次访问文件系 统的第二协议对应的第二文件锁做冲突判断,根据冲突判断结果返回创建open请求失败 或者允许第一协议访问文件系统。
[0024] 结合第二方面,在第一种可能的实现方式中,冲突判断单元具体用于根据所述第 二文件锁确定所述第二协议是否允许其他open对象操作所述文件系统;和/或,根据所述 第二文件锁确定所述第二协议是否允许其他open对象缓存数据到所述文件系统。
[0025] 结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,冲突判断 单元具体用于当所述冲突判断结果为所述第二协议不允许其他open对象操作所述文件系 统,则返回创建open请求失败;否则允许第一协议访问文件系统;当所述冲突判断结果为 所述第二协议不允许其他open对象缓存数据到所述文件系统,则在召回第一协议已缓存 的数据后,访问所述文件系统。
[0026] 结合第二方面,或者第二方面的第一至二种可能的实现方式,在第三种可能的实 现方式中,冲突判断单元具体用于确定所述第二文件锁中的第一标志位与所述第一文件锁 中对应的第二标志位不相同,则以所述第一标志位所指示的内容作为冲突判断的结果。
[0027] 结合第二方面,或者第二方面的第一至三种可能的实现方式,在第三种可能的实 现方式中,当第一协议内部能够生成open对象,则映射单元具体用于确定第一协议的open 对象是否有对文件系统的操作请求,如果有任一类型的操作请求,则将所述第一文件锁中 与任一类型的操作对应的标志位置位;确定第一协议的open对象是否允许其他open对象 操作所述文件系统,如果允许任一类型的操作,则将所述第一文件锁中与任一类型的操作 对应的标志位置位;确定第一协议的open对象是否请求客户端缓存,如果是,则将所述第 一文件锁中与缓存对应的标志位置位。
[0028] 结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,当第一协 议内部不会生成open对象,则映射单元还用于生成临时的协议open对象,并将所述临时的 协议open对象作为所述第一协议的open对象。
[0029] 上述技术方案中的一个或两个,至少具有如下技术效果:
[0030] 本发明实施例所提供的方法和装置,每次open请求都会根据对应的open对象生 成一个文件锁,所以每个文件锁是与每个open对象对应的,不管第一协议和第二协议是否 相同,只要前一次open请求对文件系统进行了加锁处理,则当前的open请求就需要依据互 斥规则做互斥判断,只有当前的open请求对应的操作是文件系统已加文件锁允许的操作 才能进行。所以本发明实施例提供的方法和装置,可以融合异种协议,做到多种协议客户端 对文件系统访问的数据一致,从而保证了协议的完整性。

【专利附图】

【附图说明】
[0031] 图1为现有技术中不同的两个协议对文件系统操作的流程示意图;
[0032] 图2为本发明实施例提供的一种文件锁实现方法的流程示意图;
[0033] 图3为本发明实施例中生成open对象的方法流程示意图;
[0034] 图4为本发明实施例中一种文件锁实现装置的结构示意图。

【具体实施方式】
[0035] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0036] 下面结合说明书附图对本发明实施例作进一步详细描述。
[0037] 如图2所示,本发明实施例提供一种文件锁实现方法,第一协议访问文件系统时, 该方法包括:
[0038] 步骤201,将所述第一协议的打开open对象映射为第一文件锁,其中,open对象是 指一次打开open请求所产生的协议数据;
[0039] 本发明实施例所提供的文件锁(或称为open锁)用来整合异种协议的访问排他 权限以及其他高级特性,即当各种协议要访问某一个文件或者目录时,都需要先生成一个 open锁,每次open请求对应的open锁标示了该open请求所要进行的操作以及对其他操作 的排他选项;然后用open锁来做跨协议的互斥判断。
[0040] 步骤202,根据预设的互斥规则将所述第一文件锁和上一次访问文件系统的第二 协议对应的第二文件锁做冲突判断,根据冲突判断结果返回创建open请求失败或者允许 第一协议访问文件系统。
[0041] 在本发明实施例中,每次open请求都会根据对应的open对象生成一个open锁, 所以每个open锁是与每个open对象对应的,不管第一协议和第二协议是否相同,只要前一 次open请求对文件系统进行了加锁处理,则当前的open请求就需要依据互斥规则做互斥 判断,只有当前的open请求对应的操作是文件系统已加 open锁允许的操作才能进行。
[0042] 在本发明实施例中,通过open锁可以对用户的多种操作进行互斥判断,根据冲突 判断结果返回创建open请求失败或者允许第一协议访问文件系统,可选的冲突判断包括:
[0043] A,当所述冲突判断结果为第二协议不允许其他open对象操作所述文件系统,则 返回创建open请求失败;否则允许第一协议访问文件系统;
[0044] 在该实施例中,对文件系统的操作包括修改、删除、插入等一切协议可对文件系统 进行的操作。
[0045] B,当所述冲突判断结果为所述第二协议不允许其他open对象缓存数据到所述文 件系统,则在召回第一协议已缓存的数据后,访问所述文件系统。
[0046] 在该实施例中,第二协议相对于第一协议而言,是先对文件系统进行操作的协议, 所以在一般情况下,第一协议要对文件系统进行操作之前,都需要根据第二文件锁中的标 示确定第二协议是否允许其他协议对文件系统进行操作,如果第二文件锁标示不允许执行 的操作,第一协议则不能执行。
[0047] 上述对文件系统的操作以及数据缓存的判断可以是同时进行的也可以有选择的 进行。
[0048] 为了更清楚详细的说明本发明实施例所提供文件锁,以下对文件锁的一种可实现 的生成方法做具体的说明,具体包括:
[0049] 在该实施例中,文件锁可以包括3部分:用来做访问排他的互斥的sharelock,用 来做客户端缓存互斥的lease和做保留待后续扩充的reserved,可以用一个32bit的整数 标示,如表1 :
[0050]

【权利要求】
1. 一种文件锁实现方法,其特征在于,第一协议访问文件系统时,该方法包括: 将所述第一协议的打开open对象映射为第一文件锁,其中,open对象是指一次打开 open请求所产生的协议数据; 根据预设的互斥规则将所述第一文件锁和上一次访问文件系统的第二协议对应的第 二文件锁做冲突判断,根据冲突判断结果返回创建open请求失败或者允许第一协议访问 文件系统。
2. 如权利要求1所述的方法,其特征在于,所述冲突判断包括; 根据所述第二文件锁确定所述第二协议是否允许其他open对象操作所述文件系统; 和/或 根据所述第二文件锁确定所述第二协议是否允许其他open对象缓存数据到所述文件 系统。
3. 如权利要求2所述的方法,其特征在于,根据冲突判断结果返回创建open请求失败 或者允许第一协议访问文件系统包括: 当所述冲突判断结果为所述第二协议不允许其他open对象操作所述文件系统,则返 回创建open请求失败;否则允许第一协议访问文件系统; 当所述冲突判断结果为所述第二协议不允许其他open对象缓存数据到所述文件系 统,则在召回第一协议已缓存的数据后,访问所述文件系统。
4. 如权利要求1?3任一所述的方法,其特征在于,根据预设的互斥规则将所述第一文 件锁和上一次访问文件系统的第二协议对应的第二文件锁做冲突判断包括: 确定所述第二文件锁中的第一标志位与所述第一文件锁中对应的第二标志位不相同, 则W所述第一标志位所指示的内容作为冲突判断的结果。
5. 如权利要求1?4任一所述的方法,其特征在于,当第一协议内部能够生成open对 象,则将所述第一协议的open对象映射为第一文件锁包括: 确定第一协议的open对象是否有对文件系统的操作请求,如果有任一类型的操作请 求,则将所述第一文件锁中与任一类型的操作对应的标志位置位; 确定第一协议的open对象是否允许其他open对象操作所述文件系统,如果允许任一 类型的操作,则将所述第一文件锁中与任一类型的操作对应的标志位置位; 确定第一协议的open对象是否请求客户端缓存,如果是,则将所述第一文件锁中与缓 存对应的标志位置位。
6. 如权利要求5所述的方法,其特征在于,当第一协议内部不会生成open对象,则确定 第一协议的open对象是否有对文件系统的操作请求之前,该方法还包括: 生成临时的协议open对象,并将所述临时的协议open对象作为所述第一协议的open 对象。
7. -种文件锁实现装置,其特征在于,第一协议访问文件系统时,该装置包括: 映射单元,用于将所述第一协议的打开open对象映射为第一文件锁,其中,open对象 是指一次打开open请求所产生的协议数据; 冲突判断单元,用于根据预设的互斥规则将所述第一文件锁和上一次访问文件系统的 第二协议对应的第二文件锁做冲突判断,根据冲突判断结果返回创建open请求失败或者 允许第一协议访问文件系统。
8. 如权利要求7所述的装置,其特征在于,冲突判断单元具体用于根据所述第二文件 锁确定所述第二协议是否允许其他open对象操作所述文件系统;和/或,根据所述第二文 件锁确定所述第二协议是否允许其他open对象缓存数据到所述文件系统。
9. 如权利要求8所述的装置,其特征在于,冲突判断单元具体用于当所述冲突判断结 果为所述第二协议不允许其他open对象操作所述文件系统,则返回创建open请求失败;否 则允许第一协议访问文件系统;当所述冲突判断结果为所述第二协议不允许其他open对 象缓存数据到所述文件系统,则在召回第一协议已缓存的数据后,访问所述文件系统。
10. 如权利要求7?9任一所述的装置,其特征在于,冲突判断单元具体用于确定所述 第二文件锁中的第一标志位与所述第一文件锁中对应的第二标志位不相同,则W所述第一 标志位所指示的内容作为冲突判断的结果。
11. 如权利要求7?10任一所述的装置,其特征在于,当第一协议内部能够生成open 对象,则映射单元具体用于确定第一协议的open对象是否有对文件系统的操作请求,如果 有任一类型的操作请求,则将所述第一文件锁中与任一类型的操作对应的标志位置位;确 定第一协议的open对象是否允许其他open对象操作所述文件系统,如果允许任一类型的 操作,则将所述第一文件锁中与任一类型的操作对应的标志位置位;确定第一协议的open 对象是否请求客户端缓存,如果是,则将所述第一文件锁中与缓存对应的标志位置位。
12. 如权利要求11所述的装置,其特征在于,当第一协议内部不会生成open对象,则映 射单元还用于生成临时的协议open对象,并将所述临时的协议open对象作为所述第一协 议的open对象。
【文档编号】G06F21/62GK104463010SQ201410616691
【公开日】2015年3月25日 申请日期:2014年10月31日 优先权日:2014年10月31日
【发明者】梁建业, 向光友, 刘军 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1