一种面向多共享目录树的控制方法及系统技术方案

技术编号:24573877 阅读:23 留言:0更新日期:2020-06-21 00:06
本申请公开了一种面向多共享目录树的控制方法及系统,该方法包括:根据待共享目录的个数,在服务端Samba配置文件中设置环形队列数和worker执行单元个数;在服务端运行Samba主进程;获取来自客户端的数据读写测试请求;根据所述数据读写测试请求,利用基于SMB报文头部数据的自适应均衡控制算法,将不同目录的请求任务定向至不同的worker执行单元。该系统包括:一个IO执行单元、多个worker执行单元、设置单元、请求获取单元以及并发控制单元。通过本申请,能够有效提高Samba服务端的数据处理效率以及客户端的数据处理效率。

A control method and system for multi shared directory tree

【技术实现步骤摘要】
一种面向多共享目录树的控制方法及系统
本申请涉及信息化共享
,特别是涉及一种面向多共享目录树的控制方法及系统。
技术介绍
在云数据中心逐渐盛行的时代,越来越多的企业都在企业内部搭建自己的云办公平台,且在云办公平台上配置NAS(NetworkAttachedStorage,网络附加存储,表示从网络端挂载到本地的一个存储设备)存储设备,从而能够便捷地为企业内部员工提供海量存储空间和备份功能。其中,NAS存储设备所采用的NAS存储方式,只要将网络路径节点映射到本地一个盘符或目录即可实现。目前,在云办公平台中采用的协议主要是SMB(ServerMessageBlock,协议名称,微软公司对其进行重大修改后用于不同网络节点间的共享传输协议)共享协议,SMB共享协议是微软为不同设备网络间共享提出的一个统一标准,Linux平台上Samba开源组织遵循该共享协议实现了Linux系统目录到Windows客户端的挂载;Samba(实现SMB协议,用于从Linux服务端向Windows客户端提供共享服务的应用)在用户空间实现,缺省提供多进程的目录共享方式。因此,如何设计一种面向多共享目录树的控制方法,是个重要问题。目前面向多共享目录树的控制方法主要是,根据现有的SMB协议,使一个服务端可提供多个共享目录,一个客户端就可以挂载多个共享目录。运行过程中,客户端通过判断服务端共享目录的IP地址和TCP(TransmissionControlProtocol传输控制协议)端口号,判断是否为自身需要的共享目录。如果是自身所需要的共享目录,再进行数据交互。然而,目前面向多共享目录树的控制方法中,客户端对服务端共享目录进行判断时,在一个客户端挂载多个共享目录的情况下,会判定服务端多个共享目录的IP地址和TCP端口号一致,因此各个命令请求都写入了同一SOCKET套接字,相应地,服务端也是同一个smbd(smbdaemon,由Samba代码编译产生的smb服务端后台进程)子进程处理。因此,客户端中,其中一个目录读写大量数据文件时,另外的挂载目录响应就会相对较慢,从而导致客户端数据处理效率较低。
技术实现思路
本申请提供了一种面向多共享目录树的控制方法及系统,以解决现有技术中客户端数据处理效率较低的问题。为了解决上述技术问题,本申请实施例公开了如下技术方案:一种面向多共享目录树的控制方法,所述方法包括:根据待共享目录的个数,在服务端Samba配置文件中设置环形队列数和worker执行单元个数,其中,worker执行单元用于在Samba进程中进行计算处理,环形队列用于在IO执行单元和worker执行单元之间进行数据交换,所述IO执行单元用于获取目录请求并将所述目录请求定向至相应的worker执行单元中;在服务端运行Samba主进程;获取来自客户端的数据读写测试请求;服务端根据所述数据读写测试请求,利用基于SMB报文头部数据的自适应均衡控制算法,将不同目录的请求任务定向至不同的worker执行单元,其中,一个IO执行单元与多个worker执行单元相匹配。可选地,所述服务端根据所述数据读写测试请求,利用基于SMB报文头部数据的自适应均衡控制算法,将不同目录的请求任务定向至不同的worker执行单元,包括:根据服务端实际共享目录的个数,设定针对TREEID的散列表长度和除留余数法使用的除数N,所述除留余数法用于计算散列表索引;提取输入口SMB报文中的TREEID字段;判断所述TREEID字段是否为0;如果是,在IO执行单元内执行原有的Samba处理逻辑;如果否,利用SMB报文头部数据的TREEID字段作为关键字,通过散列表计算并确定相应的环形队列;IO执行单元根据当前接收的所述输入口SMB报文和最近一次相同TREEID报文之间的时间间隔,计算流入速率;判断所述流入速率是否超过设定的流入速率阈值;如果是,开启新的worker执行单元;将所述新的worker执行单元并与所述TREEID字段对应的输入输出环形队列相关联。可选地,所述方法还包括:采用无锁原子操作队列,对IO执行单元和worker执行单元进行并发控制。可选地,所述无锁原子操作队列为CAS(CompareAndSwap,比较与交换,CPU指令中的一个比较交换技术,用来解决线程冲突,达到多并发条件下无锁处理的目的)原子操作队列。可选地,所述采用无锁原子操作队列,对IO执行单元和worker执行单元进行并发控制,包括:在输入方向,I0执行单元和每个worker执行单元之间设置一并发无锁原子操作队列,且当SMB报文流速增大时,启动新的worker执行单元;在输出方向,每个worker执行单元和IO执行单元之间设置一并发无锁原子操作队列;进行数据存储时,Samba内部将输入报文封装为定长request对象;进行数据并发处理时,设定输入方向的环形队列采用单生产者多消费者模型,输出方向的环形队列采用多生产者单消费者模型;生产者不断写入数据并修改写指针的位置,且消费者不断读出数据并修改读指针的位置。一种面向多共享目录树的控制系统,所述系统设置于服务端,所述系统包括:一个IO执行单元、多个worker执行单元、设置单元、请求获取单元以及并发控制单元,一个IO执行单元与多个worker执行单元相匹配;所述worker执行单元,用于在Samba进程中进行计算处理;所述设置单元,用于根据待共享目录的个数,在服务端Samba配置文件中设置环形队列数和worker执行单元个数,其中,环形队列用于在IO执行单元和worker执行单元之间进行数据交换;所述请求获取单元,用于获取来自客户端的数据读写测试请求;所述IO执行单元,用于根据所述数据读写测试请求,利用基于SMB报文头部数据的自适应均衡控制算法,将不同目录的请求任务定向至不同的worker执行单元;所述并发控制单元,用于采用无锁原子操作队列,对IO执行单元和worker执行单元进行并发控制。可选地,所述IO执行单元包括:输入输出模块,用于获取SMB报文数据,以及在TREEID字段不为0时,以TREEID字段作为关键字,通过散列表计算并确定相应的环形队列和worker执行单元;监控模块,用于计算每个TREEID报文的流入速率,并判断所述流入速率是否超过设定的流入速率阈值。可选地,所述输入输出模块包括:设定子模块,用于根据服务端实际共享目录的个数,设定针对TREEID的散列表长度和除留余数法使用的除数N;提取子模块,用于提取输入口SMB报文中的TREEID字段;第一判断子模块,用于判断所述TREEID字段是否为0;第一执行子模块,用于当所述TREEID字段为0时,在IO执行单元内执行原有的Samba处理逻辑;第二执行子模块,用于当所述TREEID字段不为0时本文档来自技高网
...

【技术保护点】
1.一种面向多共享目录树的控制方法,其特征在于,所述方法包括:/n根据待共享目录的个数,在服务端Samba配置文件中设置环形队列数和worker执行单元个数,其中,worker执行单元用于在Samba进程中进行计算处理,环形队列用于在IO执行单元和worker执行单元之间进行数据交换,所述IO执行单元用于获取目录请求并将所述目录请求定向至相应的worker执行单元中;/n在服务端运行Samba主进程;/n获取来自客户端的数据读写测试请求;/n根据所述数据读写测试请求,利用基于SMB报文头部数据的自适应均衡控制算法,将不同目录的请求任务定向至不同的worker执行单元,其中,一个IO执行单元与多个worker执行单元相匹配。/n

【技术特征摘要】
1.一种面向多共享目录树的控制方法,其特征在于,所述方法包括:
根据待共享目录的个数,在服务端Samba配置文件中设置环形队列数和worker执行单元个数,其中,worker执行单元用于在Samba进程中进行计算处理,环形队列用于在IO执行单元和worker执行单元之间进行数据交换,所述IO执行单元用于获取目录请求并将所述目录请求定向至相应的worker执行单元中;
在服务端运行Samba主进程;
获取来自客户端的数据读写测试请求;
根据所述数据读写测试请求,利用基于SMB报文头部数据的自适应均衡控制算法,将不同目录的请求任务定向至不同的worker执行单元,其中,一个IO执行单元与多个worker执行单元相匹配。


2.根据权利要求1所述的一种面向多共享目录树的控制方法,其特征在于,所述服务端根据所述数据读写测试请求,利用基于SMB报文头部数据的自适应均衡控制算法,将不同目录的请求任务定向至不同的worker执行单元,包括:
根据服务端实际共享目录的个数,设定针对TREEID的散列表长度和除留余数法使用的除数N,所述除留余数法用于计算散列表索引;
提取输入口SMB报文中的TREEID字段;
判断所述TREEID字段是否为0;
如果是,在IO执行单元内执行原有的Samba处理逻辑;
如果否,利用SMB报文头部数据的TREEID字段作为关键字,通过散列表计算并确定相应的环形队列;
IO执行单元根据当前接收的所述输入口SMB报文和最近一次相同TREEID报文之间的时间间隔,计算流入速率;
判断所述流入速率是否超过设定的流入速率阈值;
如果是,开启新的worker执行单元;
将所述新的worker执行单元并与所述TREEID字段对应的输入输出环形队列相关联。


3.根据权利要求1或2所述的一种面向多共享目录树的控制方法,其特征在于,所述方法还包括:
采用无锁原子操作队列,对IO执行单元和worker执行单元进行并发控制。


4.根据权利要求3所述的一种面向多共享目录树的控制方法,其特征在于,所述无锁原子操作队列为CAS原子操作队列。


5.根据权利要求3所述的一种面向多共享目录树的控制方法,其特征在于,所述采用无锁原子操作队列,对IO执行单元和worker执行单元进行并发控制,包括:
在输入方向,I0执行单元和每个worker执行单元之间设置一并发无锁原子操作队列,且当SMB报文流速增大时,启动新的worker执行单元;
在输出方向,每个worker执行单元和IO执行单元之间设置一并发无锁原子操作队列;
进行数据存储时,Samba内部将输入报文封装为定长request对象;
进行数据并发处理时,设定输入方向的环形队列采用单生产者多消费者模型,输出方向的环形队列采用多生产者单消费者模型;
生产者不断写入数据并修改写指针的位置,且消费者不断读出数据并修改读指针的位置。


6.一种面向多共享目录树的控制系统,其特征在于,所述系统设置于服务端,所述系统包括:一个IO执行单元、多个worker执行单元、设置单元、请求获取单元以及并发控制单元,一个IO执行单元与多个worker执行单元相匹配;
所述work...

【专利技术属性】
技术研发人员:李世杰张端
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1