一种面向网络存储系统的通用权限与配额管理系统与方法与流程

文档序号:24648481发布日期:2021-04-13 16:26阅读:114来源:国知局
一种面向网络存储系统的通用权限与配额管理系统与方法与流程

1.本发明涉及计算机网络存储技术,尤其涉及一种面向网络存储系统的通用权限与配额管理系统与方法。


背景技术:

2.随着计算机网络技术及其相关应用的飞速发展,网络上的信息资产呈爆炸性增长趋势。网络中的数据量之大、并发访问用户数之多、应用场景之复杂,导致了nas网络存储技术的出现,并得到了显著的发展。在nas存储结构中,存储系统不再通过i/o总线附属于某个特定的服务器或客户机,而是通过网络接口与网络直接相连,由用户通过网络访问,与附属于服务器的存储系统相比,nas具有非常好的可扩展性,非常适用于在文件粒度对数据进行管控或加密存储的应用场景。
3.常用的nas存储接入协议(例如cifs和nfs)通常提供不同的配置方式对nas存储文件进行读写访问控制。cifs提供用户共享目录配置并赋予用户不同的访问权限,通过用户登录身份验证的方式进行权限控制。而nfs则通过配置访问授权ip地址,并借助操作系统权限管理方案进行权限控制。两种方式在权限的配置管理上存在较大的差异,在需要同时提供cifs和nfs接入协议的nas存储场景下,导致了部署的复杂性,且不利于提供统一的用户配置视图。另外,无论是cifs还是nfs存储协议,都在一定程度上借用了操作系统的文件访问权限管理机制,并在其上采取了不同的应用策略,这进一步增加了权限控制的管理和维护成本,也带来了使用上的局限性,难以适应各种精细化、定制化的权限控制要求。此外,随着分布式存储系统的大量应用,甚至出现了nas存储的二级或多级的级联挂载,而分布式存储系统和传统本地文件系统的差异,进一步放大了nas存储系统在权限控制上的缺陷,亟待一种统一而又灵活的方法来实现nas存储系统的权限控制。
4.nas存储系统通常结合quota来进行用户磁盘配额管理,但受限于底层文件系统对于quota的支撑能力,并且越来越多的文件系统实现了各自独立的磁盘配额管理方案,导致在nas需要对接不同的底层文件系统时,需要分别对磁盘配额管理接口进行适配,这显著地增加了系统实现、部署和维护的工作量,降低了系统稳定性。而在nas存储的二级或多级的级联挂载和集群化部署场景下,结合quota的方案甚至难以实现。
5.因此,在nas存储系统应用日益广泛,使用场景日益复杂,底层文件系统日益多样化,集群化部署日益普遍的情况下,如何在保证稳定性、可扩展性和性能的条件下,从技术方案上提出一种通用的权限和配额管理方法,是现有技术中有待解决的问题。


技术实现要素:

6.本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种面向网络存储系统的通用权限与配额管理系统与方法,可以适应各种复杂的应用场景、对接不同的存储后端、提供精细化的权限控制和配额管理、简化管理流程。
7.为解决上述技术问题,本发明提出的技术方案为:
8.一种面向网络存储系统的通用权限与配额管理系统,包括客户机和网络存储协议服务端,所述客户机和网络存储协议服务端连接,所述网络存储协议服务端包括:
9.nfs/cifs服务,用于向客户机提供nfs或cifs接入服务;
10.后端存储,用于供nfs/cifs服务进行读写访问操作;
11.用户态文件系统抽象层,用于统一nfs/cifs服务对于底层文件系统的访问操作,屏蔽文件系统之间的差异,定义文件访问操作对于权限及配额的处理逻辑;
12.权限及配额检查模块,用于配合用户态文件系统抽象层规范化后的访问动作进行权限或配额的检查、配额的计算及更新和集群数据库信息同步;
13.配置管理模块,用于完成用户权限及配额信息的添加、删除和变更操作,还用于配额校准;
14.集群数据库,用于存储用户权限和配额的配置信息;
15.所述用户态文件系统抽象层设置于nfs/cifs服务单元和后端存储之间,所述用户态文件系统抽象层、配置管理模块和集群数据库分别和权限及配额检查模块连接。
16.进一步的,所述用户态文件系统抽象层包括:
17.io截获层,用于拦截nfs/cifs服务涉及权限及配额检查相关的io请求,还用于将系统层发送的处理结果返回nfs/cifs服务;
18.权限及配额解析层,用于获取io截获层拦截的io请求,根据具体的io操作类型、操作数据量等信息,计算本次操作要求的处理权限以及配额用量,然后将相关信息封装成rpc请求;
19.rpc客户端,用于获取io请求和rpc请求,并将rpc请求通过rpc协议转发给权限及配额检查模块进行合法性检查,如果检查通过则将io请求转发至系统层;
20.系统层,用于将io请求发送给内核态执行相应的io操作,等待内核态完成io操作,获取处理结果并返回给io截获层。
21.进一步的,所述权限及配额检查模块包括:
22.配置处理服务,用于接收配置管理模块发来的配置变更请求,完成配置解析及合法性检查后将配置信息推送到集群数据库;
23.集群监控服务,用于接收集群数据库通知并配置变更事件,将新的配置信息同步到权限配额缓存表;
24.rpc服务端,用于接收用户态文件系统抽象层发来的rpc请求,解析请求信息并转发给权限配额处理服务,还用于接收用户态文件系统抽象层发来的变更信息,解析变更信息并转发给权限配额处理服务;
25.权限配额处理服务,用于获取解析后的rpc请求信息,计算并检查是否满足本次操作所需要的权限和配额要求,并将结果通过rpc协议返回给用户态文件系统抽象层,还用于获取解析后的变更信息并对权限配额缓存表进行更新;
26.权限配额缓存表,用于接收集群监控服务和权限配额处理服务的信息并更新;
27.同步服务,用于在权限配额缓存表更新后将更新信息推送到集群数据库。
28.本发明还提出一种面向网络存储系统的通用权限与配额管理方法,应用于所述的面向网络存储系统的通用权限与配额管理系统,包括以下步骤:
29.1)管理员通过配置管理模块创建允许访问网络存储协议服务端的用户,并按需分
配用户权限及磁盘配额用量,权限及配额检查模块构建用户配置信息表项,将用户配置信息表项中的信息添加到集群数据库,并通知更新权限及配额检查模块的权限配额缓存表;
30.2)网络存储协议服务端各节点的权限及配额检查模块批量检索集群数据库,将当前所有用户权限及配额配置信息备份到权限配额缓存表;
31.3)网络存储协议服务端接收到客户机的存储访问请求,通过用户态文件系统抽象层识别具体访问类型,根据访问类型判定是否需要进行权限检查、配额检查及更新操作,如需要则向权限及配额检查模块发送权限及配额验证消息并根据检查结果确定是否执行对应的访问请求,否则直接执行对应的访问请求;
32.权限及配额检查模块接收到用户态文件系统抽象层发来的权限及配额验证消息后,查询权限配额缓存表,根据操作类型验证是否具有相应的操作权限,同时根据访问数据量检查是否满足配额要求,并将检查结果同步返回给用户态文件系统抽象层;
33.4)权限及配额检查模块检查磁盘配额用量需要更新时,根据活跃文件表计算用户磁盘配额用量,计入配额用量脏表并更新集群数据库中用户磁盘配额用量。
34.进一步的,步骤1)具体包括以下步骤:
35.1.1)配置管理模块将用户配置信息发送到权限及配额检查模块的配置处理服务,配置处理服务判断如果是针对用户权限及配额配置变更请求则跳转执行步骤1.2),如果是用户配额校准请求则跳转执行步骤1.5);
36.1.2)配置处理服务封装用户配置信息表项,所述用户配置信息包括用户id、权限掩码、配额用量,并将用户配置信息表项推送到集群数据库,更新集群数据库中对应用户配置信息;
37.1.3)集群数据库更新用户配置信息后,将变更状态通知给权限及配额检查模块的集群监控服务;
38.1.4)集群配置监控服务接收到用户配置信息变更通知后,通过用户配置信息表项中的信息更新权限配额缓存表,完成配置请求处理并退出;
39.1.5)根据请求配额校准的用户根目录,遍历并统计文件系统中用户根目录所占磁盘配额大小,如果统计成功则更新用户配额用量并跳转执行步骤1.2)将校准结果更新到集群数据库,否则结束并退出。
40.进一步的,步骤3)具体包括以下步骤:
41.3.1)网络存储协议服务端接收到来自客户机的存储访问请求,将存储访问请求发送到用户态文件系统抽象层;
42.3.2)用户态文件系统抽象层识别存储访问请求中的用户及其操作类型,将用户及其访问请求信息封装为权限及配额验证消息,通过rpc协议发送权限及配额验证消息到权限及配额检查模块;
43.3.3)权限及配额检查模块接收到用户态文件系统抽象层发送的权限及配额验证消息并解析得到用户及其访问请求信息,查询权限配额缓存表判断用户是否为合法用户,如果用户不合法则向用户态文件系统抽象层返回权限验证失败的失败消息,然后跳转执行步骤3.4),否则跳转执行步骤3.5);
44.3.4)用户态文件系统抽象层接收到权限及配额检查模块返回的失败消息,根据失败消息类型返回对应错误信息,结束并退出;
45.3.5)权限及配额检查模块将访问请求信息的请求类型和权限配额缓存表中对应用户配置信息的权限掩码进行匹配,如果请求类型与权限掩码不匹配,则向用户态文件系统抽象层返回权限验证失败的失败消息,然后跳转执行步骤3.4),否则检查集群数据库中对应用户配置信息的配额用量判断本次存储访问请求是否具有足够的磁盘配额;
46.3.6)如果磁盘配额不满足本次存储访问请求的操作,则权限及配额检查模块向用户态文件系统抽象层返回磁盘配额不足的失败消息,然后跳转执行步骤3.4),否则权限及配额检查模块向用户态文件系统抽象层返回磁盘配额检查成功消息;
47.3.7)用户态文件系统抽象层接收到权限及配额检查模块返回的磁盘配额检查成功消息后根据存储访问请求中的操作类型执行文件系统存储访问处理,如果处理失败,网络存储协议服务端向客户机返回请求失败消息,结束并退出,如果处理成功,则检查磁盘配额用量变更;
48.3.8)根据存储访问请求中的操作类型判断是否需要更新磁盘配额用量,如果无需更新则返回执行成功;如果需要更新磁盘配额用量,则用户态文件系统抽象层向权限及配额检查模块发送磁盘配额用量更新消息;
49.3.9)权限及配额检查模块接收到磁盘配额用量更新消息后,根据存储访问请求中的操作类型更新磁盘配额用量,并向用户态文件系统抽象层返回更新成功消息;
50.3.10)用户态文件系统抽象层接收到更新成功消息后,返回执行成功并完成存储访问请求操作。
51.进一步的,步骤3.8)中根据存储访问请求中的操作类型判断是否需要更新磁盘配额用量包括:
52.如果操作类型为open类相关操作,检查存储访问请求对应的访问文件是否存在于活跃文件列表,若不存在则添加文件到活跃文件表,记录当前活跃文件大小,增加活跃文件计数,磁盘配额用量不需要更新;
53.如果操作类型为update类相关操作,查找存储访问请求对应的访问文件是否存在于活跃文件列表中,若不存在则报错退出,向用户态文件系统抽象层返回磁盘配额检查失败并结束,否则计算磁盘配额增量,更新权限配额缓存表中的相应用户磁盘配额用量,并将该用户信息表象添加到用户信息脏表;
54.如果操作类型为pwrite类相关操作,查找存储访问请求对应的访问文件是否存在于活跃文件列表中,若不存在则报错退出,向用户态文件系统抽象层返回磁盘配额检查失败并结束,否则根据本次写请求数据量和存储访问请求对应的用户当前磁盘配额用量检查是否超过用户磁盘配额,同步更新用户磁盘配额用量以及活跃文件列表中该文件大小,并将该用户信息表象添加到用户信息脏表;
55.如果操作类型为truncate类相关操作,查找存储访问请求对应的访问文件是否存在于活跃文件列表中,若不存在则报错退出,向用户态文件系统抽象层返回磁盘配额检查失败并结束,否则根据活跃文件大小和存储访问请求对应的用户当前磁盘配额用量检查是否超过用户磁盘配额,同步更新用户磁盘配额用量以及活跃文件列表中该文件大小,并将该用户信息表象添加到用户信息脏表;
56.如果操作类型为close类相关操作,查找存储访问请求对应的访问文件是否存在于活跃文件列表中,若不存在直接返回并结束,否则减少活跃文件计数,如果活跃文件计数
为0则删除该活跃文件表项,磁盘配额用量不需要更新。
57.进一步的,步骤4)具体包括以下步骤:
58.4.1)权限及配额检查模块根据活跃文件表计算用户磁盘配额用量并更新权限配额缓存表中用户配置信息的磁盘配额用量,将用户磁盘配额用量信息加入配额用量脏表;
59.4.2)配额用量脏表更新后,采用非阻塞方式通知权限及配额检查模块的同步服务更新用户磁盘配额用量信息;
60.4.3)同步服务接收到更新请求后,遍历配额用量脏表,将表中所有用户配额信息更新到集群数据库。
61.与现有技术相比,本发明的优点在于:
62.一、本发明的系统在网络存储接入协议服务端构建用户态文件系统抽象层,接管所有文件系统访问相关动作,能够适应各种精细化或自定义的权限和配额管理方案需要,用户态文件系统抽象层屏蔽了后端存储承载的不同文件系统类型之间的差异,降低了开发难度,更适合企业级应用的部署和开发;
63.二、本发明的方法梳理并统一了不同接入协议用户态文件系统抽象层文件系统访问操作,整理成open、update、pwrite、truncate和close五类与权限控制及配额管理相关的操作,并详细定义了各自对于权限控制及配额管理的操作行为,使得权限检查及控制模块逻辑一致的基础上能够适应多种网络存储接入协议;
64.三、本发明的系统中,网络存储接入协议服务端的用户态文件系统抽象层与权限及配额检查模块之间通过rpc协议通信,由服务端统一管理权限和磁盘配额,在保证性能的基础上更好地适应并发读写和多用户操作共享存储的业务场景;
65.四、本发明的系统中,采用集群数据库存储用户的权限及配额配置信息,且提供权限配额缓存表作为本地缓存,在保证性能的基础上,能够更好地适应高可用场景集群化部署,同时更利于对主主、主备存储模式的支持;
66.五、本发明的方法采用独立于操作系统和文件系统之外的权限与配额管理方案,摒除了操作系统对权限管理的制约和限制,也避免了不同文件系统配额管理方案互不兼容的问题,极大地适应了后端存储类型的多样性,能同时适应后端挂接san和nas存储,支持与加密文件系统堆叠或进行nas级联部署等。
附图说明
67.图1为本发明实施例的系统结构示意图。
68.图2为本发明实施例的用户态文件系统抽象层的结构示意图。
69.图3为本发明实施例的权限及配额检查模块的结构示意图。
70.图4为本发明实施例的方法的步骤示意图。
具体实施方式
71.以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
72.如图1所示,本发明提出一种面向网络存储系统的通用权限与配额管理系统,包括客户机和网络存储协议服务端,所述客户机和网络存储协议服务端连接,所述网络存储协
议服务端包括:
73.nfs/cifs服务,用于向客户机提供nfs或cifs接入服务;
74.后端存储,用于供nfs/cifs服务进行读写访问操作,后端存储支持san和nas两种形态,支持常用的文件系统如ext4、xfs、gfs2或nfs(级联)等;
75.用户态文件系统抽象层,用于统一nfs/cifs服务对于底层文件系统的访问操作,屏蔽文件系统之间的差异,定义文件访问操作对于权限及配额的处理逻辑;
76.权限及配额检查模块,用于配合用户态文件系统抽象层规范化后的访问动作进行权限或配额的检查、配额的计算及更新和集群数据库信息同步;
77.配置管理模块,用于完成用户权限及配额信息的添加、删除和变更操作,还用于配额校准;
78.集群数据库,用于存储用户权限和配额的配置信息,提供持久化存储能力,便于高可用分布式场景下的权限与配额管理;
79.所述用户态文件系统抽象层设置于nfs/cifs服务单元和后端存储之间,所述用户态文件系统抽象层、配置管理模块和集群数据库分别和权限及配额检查模块连接。
80.用户态文件系统抽象层和权限及配额检查模块是本实施例的系统中最重要的两个功能模块,构建用户态文件系统抽象层,接管所有文件系统访问相关动作,能够适应各种精细化或自定义的权限和配额管理方案需要,用户态文件系统抽象层屏蔽了后端存储承载的不同文件系统类型之间的差异,降低了开发难度,更适合企业级应用的部署和开发,用户态文件系统抽象层与权限及配额检查模块之间通过自定义的高速同步rpc协议进行权限和配额控制管理,有效地降低用户态文件系统抽象层控制逻辑复杂度,将验证请求统一交由权限及配额检查模块能更好地适应分布式部署场景以及网络存储系统的并发访问。
81.如图2所示,本实施例的用户态文件系统抽象层包括:
82.io截获层,用于拦截nfs/cifs服务涉及权限及配额检查相关的io请求,还用于将系统层发送的处理结果返回nfs/cifs服务;
83.权限及配额解析层,用于获取io截获层拦截的io请求,根据具体的io操作类型、操作数据量等信息,计算本次操作要求的处理权限以及配额用量,然后将相关信息封装成rpc请求;
84.rpc客户端,用于获取io请求和rpc请求,并将rpc请求通过rpc协议转发给权限及配额检查模块进行合法性检查,如果检查通过则将io请求转发至系统层;
85.系统层,用于将io请求发送给内核态执行相应的io操作,等待内核态完成io操作,获取处理结果并返回给io截获层。
86.当用户通过nfs/cifs服务提供的nfs或cifs协议执行涉及权限及配额检查相关的io请求时,请求被io截获层拦截后转至权限及配额解析层,权限及配额解析层根据具体的io操作类型、操作数据量等信息,计算本次操作要求的处理权限以及配额用量,然后将相关信息封装成rpc消息,通过rpc客户端发送给权限及配额检查模块进行合法性检查,如果检查通过则将请求转至系统层,最后进入内核态执行相应的io操作。内核态完成io操作后,返回系统层,系统层直接将处理结果返回到io截获层,io截获层则将结果返回到nfs/cifs协议完成本轮操作。
87.如图3所示,本实施例的权限及配额检查模块包括:
88.配置处理服务,用于接收配置管理模块发来的配置变更请求,完成配置解析及合法性检查后将配置信息推送到集群数据库;
89.集群监控服务,用于接收集群数据库通知并配置变更事件,将新的配置信息同步到权限配额缓存表;
90.rpc服务端,用于接收用户态文件系统抽象层发来的rpc请求,解析请求信息并转发给权限配额处理服务,还用于接收用户态文件系统抽象层发来的变更信息,解析变更信息并转发给权限配额处理服务;
91.权限配额处理服务,用于获取解析后的rpc请求信息,计算并检查是否满足本次操作所需要的权限和配额要求,并将结果通过rpc协议返回给用户态文件系统抽象层,还用于获取解析后的变更信息并对权限配额缓存表进行更新;
92.权限配额缓存表,用于接收集群监控服务和权限配额处理服务的信息并更新;
93.同步服务,用于在权限配额缓存表更新后将更新信息推送到集群数据库。
94.当用户通过配置管理模块进行配置变更时,配置处理服务负责接收配置管理模块发来的配置变更请求,完成配置解析及合法性检查后将配置信息推送到集群数据库,集群数据库通知集群监控服务配置变更事件,集群监控服务将新的配置信息同步到权限配额缓存表完成配置流程。rpc客户端负责接收用户态文件系统抽象层发来的rpc请求,解析请求信息并将信息转发给权限配额处理服务,权限配额处理服务计算并检查是否满足本次操作所需要的权限和配额要求,并将结果返回给用户态文件系统抽象层,用户态文件系统抽象层据此判断用户是否具有操作权限。另外,如果文件系统操作导致配额变更,则用户态文件系统抽象层将变更信息发送给rpc服务端,rpc服务端解析后转交给权限配额处理服务对权限配额缓存表进行更新,同步服务感知到权限配额缓存表更新后,将更新信息推送到集群数据库完成整个变更流程。
95.如图4所示,本实施例还提出一种面向网络存储系统的通用权限与配额管理方法,应用于所述的面向网络存储系统的通用权限与配额管理系统,包括以下步骤:
96.1)管理员通过配置管理模块创建允许访问网络存储协议服务端的用户,并按需分配用户权限及磁盘配额用量,权限及配额检查模块构建用户配置信息表项,将用户配置信息表项中的信息添加到集群数据库,并通知更新权限及配额检查模块的权限配额缓存表;
97.2)网络存储协议服务端各节点的权限及配额检查模块批量检索集群数据库,将当前所有用户权限及配额配置信息备份到权限配额缓存表,供后续权限及配额检查使用;
98.3)网络存储协议服务端接收到客户机的存储访问请求,通过用户态文件系统抽象层识别具体访问类型,根据访问类型判定是否需要进行权限检查、配额检查及更新操作,如需要则向权限及配额检查模块发送权限及配额验证消息并根据检查结果确定是否执行对应的访问请求,否则直接执行对应的访问请求;
99.权限及配额检查模块接收到用户态文件系统抽象层发来的权限及配额验证消息后,查询权限配额缓存表,根据操作类型验证是否具有相应的操作权限,同时根据访问数据量检查是否满足配额要求,并将检查结果同步返回给用户态文件系统抽象层,若权限及配额检查通过,即具有相应的操作权限且满足配额要求,则执行对应的访问请求,若权限及配额检查不通过,即不具有相应的操作权限或不满足配额要求,则拒绝对应的访问请求。
100.本实施例的方法采用独立于操作系统和文件系统之外的权限与配额管理方案,摒
除了操作系统对权限管理的制约和限制,也避免了不同文件系统配额管理方案互不兼容的问题,极大地适应了后端存储类型的多样性,能同时适应后端挂接san和nas存储,支持与加密文件系统堆叠或进行nas级联部署等。
101.本实施例在步骤3)之后还包括访问类型为配额更新时的后续操作,具体包括:
102.4)判断权限及配额检查模块检查磁盘配额用量是否需要更新,权限及配额检查模块检查磁盘配额用量需要更新时,根据活跃文件表计算用户磁盘配额用量,计入配额用量脏表并更新集群数据库中用户磁盘配额用量,若不需要更新,则结束并退出。
103.本实施例的步骤1)具体包括以下步骤:
104.1.1)配置管理模块将用户配置信息发送到权限及配额检查模块的配置处理服务,配置处理服务判断如果是针对用户权限及配额配置变更请求则跳转执行步骤1.2),如果是用户配额校准请求则跳转执行步骤1.5);
105.1.2)配置处理服务封装用户配置信息表项,所述用户配置信息包括用户id、权限掩码、配额用量,并将用户配置信息表项推送到集群数据库,更新集群数据库中对应用户配置信息;
106.1.3)集群数据库更新用户配置信息后,将变更状态通知给权限及配额检查模块的集群监控服务;
107.1.4)集群配置监控服务接收到用户配置信息变更通知后,通过用户配置信息表项中的信息更新权限配额缓存表,完成配置请求处理并退出;
108.1.5)根据请求配额校准的用户根目录,遍历并统计文件系统中用户根目录所占磁盘配额大小,如果统计成功则更新用户配额用量并跳转执行步骤1.2)将校准结果更新到集群数据库,否则结束并退出。
109.本实施例的步骤3)具体包括以下步骤:
110.3.1)网络存储协议服务端接收到来自客户机的存储访问请求,将存储访问请求发送到用户态文件系统抽象层;
111.3.2)用户态文件系统抽象层识别存储访问请求中的用户及其操作类型,将用户及其访问请求信息封装为权限及配额验证消息,通过rpc协议发送权限及配额验证消息到权限及配额检查模块;
112.3.3)权限及配额检查模块接收到用户态文件系统抽象层发送的权限及配额验证消息并解析得到用户及其访问请求信息,查询权限配额缓存表判断用户是否为合法用户,如果用户不合法则向用户态文件系统抽象层返回权限验证失败的失败消息,然后跳转执行步骤3.4),否则跳转执行步骤3.5);
113.3.4)用户态文件系统抽象层接收到权限及配额检查模块返回的失败消息,根据失败消息类型返回对应错误信息,结束并退出;
114.3.5)权限及配额检查模块将访问请求信息的请求类型和权限配额缓存表中对应用户配置信息的权限掩码进行匹配,如果请求类型与权限掩码不匹配,则向用户态文件系统抽象层返回权限验证失败的失败消息,然后跳转执行步骤3.4),否则检查集群数据库中对应用户配置信息的配额用量判断本次存储访问请求是否具有足够的磁盘配额;
115.3.6)如果磁盘配额不满足本次存储访问请求的操作,则权限及配额检查模块向用户态文件系统抽象层返回磁盘配额不足的失败消息,然后跳转执行步骤3.4),否则权限及
配额检查模块向用户态文件系统抽象层返回磁盘配额检查成功消息;
116.3.7)用户态文件系统抽象层接收到权限及配额检查模块返回的磁盘配额检查成功消息后根据存储访问请求中的操作类型执行文件系统存储访问处理,如果处理失败,网络存储协议服务端向客户机返回请求失败消息,结束并退出,如果处理成功,则检查磁盘配额用量变更;
117.3.8)根据存储访问请求中的操作类型判断是否需要更新磁盘配额用量,如果无需更新则返回执行成功;如果需要更新磁盘配额用量,则用户态文件系统抽象层向权限及配额检查模块发送磁盘配额用量更新消息;
118.3.9)权限及配额检查模块接收到磁盘配额用量更新消息后,根据存储访问请求中的操作类型更新磁盘配额用量,并向用户态文件系统抽象层返回更新成功消息;
119.3.10)用户态文件系统抽象层接收到更新成功消息后,返回执行成功并完成存储访问请求操作。
120.我们梳理并统一了不同接入协议(cifs/nfs)下用户态文件系统抽象层文件系统访问操作,整理成open、update、pwrite、truncate和close五类与权限控制及配额管理相关的操作,并详细定义了各自对于权限控制及配额管理的操作行为,使得权限检查及控制模块逻辑一致的基础上能够适应多种网络存储接入协议,基于上述内容,步骤3.8)中根据存储访问请求中的操作类型判断是否需要更新磁盘配额用量包括:
121.如果操作类型为open类相关操作,检查存储访问请求对应的访问文件是否存在于活跃文件列表,若不存在则添加文件到活跃文件表,记录当前活跃文件大小,增加活跃文件计数,磁盘配额用量不需要更新,磁盘用量不超配额;
122.如果操作类型为update类相关操作,查找存储访问请求对应的访问文件是否存在于活跃文件列表中,若不存在则报错退出,向用户态文件系统抽象层返回磁盘配额检查失败并结束本次操作,否则计算磁盘配额增量,不作磁盘用量是否超配额检查,更新权限配额缓存表中的相应用户磁盘配额用量,并将该用户信息表象添加到用户信息脏表;
123.如果操作类型为pwrite类相关操作,查找存储访问请求对应的访问文件是否存在于活跃文件列表中,若不存在则报错退出,向用户态文件系统抽象层返回磁盘配额检查失败并结束本次操作,否则根据本次写请求数据量和存储访问请求对应的用户当前磁盘配额用量检查是否超过用户磁盘配额,同步更新用户磁盘配额用量以及活跃文件列表中该文件大小,并将该用户信息表象添加到用户信息脏表;
124.如果操作类型为truncate类相关操作,查找存储访问请求对应的访问文件是否存在于活跃文件列表中,若不存在则报错退出,向用户态文件系统抽象层返回磁盘配额检查失败并结束本次操作,否则根据活跃文件大小和存储访问请求对应的用户当前磁盘配额用量检查是否超过用户磁盘配额,同步更新用户磁盘配额用量以及活跃文件列表中该文件大小,并将该用户信息表象添加到用户信息脏表;
125.如果操作类型为close类相关操作,查找存储访问请求对应的访问文件是否存在于活跃文件列表中,若不存在直接返回并结束本次操作,否则减少活跃文件计数,如果活跃文件计数为0则删除该活跃文件表项,磁盘配额用量不需要更新,磁盘用量不超配额。
126.本实施例的步骤4)具体包括以下步骤:
127.4.1)权限及配额检查模块根据活跃文件表计算用户磁盘配额用量并更新权限配
额缓存表中用户配置信息的磁盘配额用量,将用户磁盘配额用量信息加入配额用量脏表;
128.4.2)配额用量脏表更新后,采用非阻塞方式通知权限及配额检查模块的同步服务更新用户磁盘配额用量信息;
129.4.3)同步服务接收到更新请求后,遍历配额用量脏表,将表中所有用户配额信息更新到集群数据库。
130.对比例一
131.本对比例与实施例基本相同,其主要不同点为用户态文件系统抽象层未针对不同的存储访问接入协议类型(cifs/nfs)将文件系统访问相关操作统一为上述5种操作(open、update、pwrite、truncate、close),而是分别在通过cifs和nfs进行文件访问操作时进行权限控制和配额管理,而权限及配额检查模块识别不同协议的不同访问请求动作分别进行特定处理,但是其相对于上述实施方式而言,权限及配额检查模块对于文件系统请求处理过于繁杂,不利于权限及配额检查模块的逻辑统一,提高了开发和维护成本。
132.对比例二
133.本对比例与实施例基本相同,其主要不同点为用户态文件系统抽象层不通过自定义轻量级高速rpc协议与权限及配额检查模块进行通信,权限及配额检查直接在文件系统抽象层进行处理,这种方式在实现上更为直观,但是更容易受到接入协议类型(cifs/nfs)的制约,而且难以适应多用户访问共享存储的业务场景。
134.对比例三
135.本对比例与实施例基本相同,其主要不同点为借助于fuse构建用户态文件系统,在用户态文件系统实现接口中接管权限与配额管理操作,这种实施方式的缺点是每次文件系统访问操作可能进行多次核内外通信,软件栈难以管理,性能较低,同时fuse框架的加入导致难以与其他文件系统(例如加密文件系统等)进行堆叠,业务场景适应性降低。
136.上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1