[发明专利]一种基于netlink的linux服务器集群统一外设事件监听方法有效
申请号: | 201410287655.1 | 申请日: | 2014-06-24 |
公开(公告)号: | CN104038390B | 公开(公告)日: | 2017-10-10 |
发明(设计)人: | 汪敏 | 申请(专利权)人: | 汪敏 |
主分类号: | H04L12/26 | 分类号: | H04L12/26;H04L29/08;G06F9/46 |
代理公司: | 南京苏高专利商标事务所(普通合伙)32204 | 代理人: | 柏尚春 |
地址: | 225264 江苏省扬*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 netlink linux 服务器 集群 统一 外设 事件 监听 方法 | ||
技术领域
本发明涉及计算机领域,具体涉及一种基于netlink的linux服务器集群统一外设事件监听方法。
背景技术
在linux服务器集群中,通常存在多台服务器终端,而在大型的服务器架构中,许多服务器终端是分布在不同的地理位置的,在服务器运行过程中,对于像未经允许的可拔插设备访问事件、未经允许的外部存储设备分区挂载事件等外设异步事件缺乏有效而又实时的远程的、统一的监听方法。
目前,现有技术中还不存在一种在linux服务器集群内部统一的外设事件监听方法。
而且,对于单个的服务器内部的外设事件监听而言,主要依靠用户空间的设备文件系统守护进程udevd来搜集外设事件来动态的改变设备文件系统目录/dev下的设备节点信息,不存在其他的、单独的外设事件用户空间接收程序,而设备文件系统守护进程udevd可定制性较差,难以实现通过改变现有的udevd守护进程来统一的监听服务器集群内部的所有重要外设事件的方法。
实现对于内核空间消息的监听以及内核空间与用户空间的信息传递有很多种方法,但是相比较于增加系统调用等方法去实现外设事件监听接口,采用netlink去实现通讯接口,有很多优点,比如说不需要增加内核静态编译代码,不需要重复编译内核,只需要在启动系统的时候动态加载相应的内核模块,而且netlink协议本身实现了事件的异步通知,所以能够保证内核事件接收的实时性,
发明内容
发明目的:本发明的目的在于解决上述技术的不足,提供了一种基于netlink的linux服务器集群统一外设事件监听方法,用以实现对于linux集群内部重要的外设事件的监听,具有多终端同时监听、统一和实时接收服务器内部外设事件且编程方法简单易实现等优点。
技术方案:本发明的一种基于netlink的linux服务器集群统一外设事件监听方法,包括以下步骤:
(1)被监控服务器端在系统启动过程中加载外设事件内核接收模块,并且开启监控进程远程服务进程,等待多个监控服务器端监控进程发送登录请求;
(2)监控服务器端的监控进程向被监控服务器端的远程服务进程发送登录请求;
(3)被监控服务器端远程服务进程接收登录请求并利用fork()系统调用函数创建子进程,子进程验证登陆帐户信息,并由父进程继续监控端口,查看是否有新的登录请求;
(4)被监控服务器端远程服务进程接收到登录请求后,其创建的子进程开启外设事件处理进程,外设事件处理进程监听相关的netlink多播组;
(5)外设事件内核接收模块通过内核线程统一接收相关外设事件,并按照外设事件先后顺序以及优先级发送给相关的netlink多播组;
(6)外设事件处理进程将外设事件通过子进程发送给父进程进而通过网络发送给监控服务器端监控进程。
进一步的,所述的被监控服务器端在linux开机启动时,启动服务进程,监听通讯端口,等待监控服务器端的监控进程通过TCP/IP协议发出登录请求。
进一步的,所述的被监控服务器端远程服务进程通过伪终端与其创建的子进程进行全双工的通讯;所述的被监控服务器端远程服务进程的子进程通过共享内存与其开启的外设事件处理进程进行全双工的通讯。
进一步的,所述步骤(3)中父进程打开伪终端主设备,子进程打开伪终端从设备,父子进程之间的通讯,通过伪终端来实现。
进一步的,所述步骤(4)中子进程通过linux文件系统目录下的/bin/login登录程序验证登录账户信息,子进程首先将监控服务器端发送来的登录账户信息与本地存储的账户信息进行对比验证,如果不一致,则向父进程返回出错信息,由父进程返回给监控服务器端,子进程销毁;如果用户信息一致,子进程开启相应的外设事件处理程序。
进一步的,所述步骤(5)的具体步骤为:外设事件内核接收模块通过对in_interrupt()的判断,如果外设事件是在中断上下文中发出的,那么直接通过netlink_broadcast()广播,若广播失败,则再挂接到内核线程处理队列中去;内核线程将按照外设事件的优先级以及事件触发顺序,通过netlink_broadcast()函数将外设事件广播到相关的多播组。
进一步的,所述步骤(6)中各个子进程所开启的特定的外设事件处理进程接收其所关注的外设事件消息,并且通过被监控服务器端的远程服务模块将外设事件消息发送到相关的监控服务器端集群,实现服务器外设事件统一、实时的监听过程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汪敏,未经汪敏许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410287655.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种采煤机行走轮轴装置
- 下一篇:一种吸盘结构