一种路由器外接存储设备的控制方法_2

文档序号:8415523阅读:来源:国知局
文件系统有异常(比如有坏块),则调用修复指令进行修复。最终达到稳定状态时会将设备统一挂载到文件系统的目录/tmp/storage/$storagename下,并在存储数据区中新建一些基本目录和文件。当接收到存储设备移除消息时,会自动清理系统中残留的相关数据。这些操作执行过程中都会更新设备链表中的状态信息。
[0053]2,状态监测和自动故障排除。
[0054]存储设备不稳定会对系统造成极大危害,但是存储系统的不稳定和不确定性因素较多,设计了多种机制以对存储设备的状态进行检测。首先,在存储设备驱动中设置了统计机制,当发现设备读写报错达到一定次数的时候,会通过hotplug通知storaged,storaged取出对应的消息类型和故障原因,会将设备重新mount成ι.ο类型的分区或者卸载并禁用,以避免继续对磁盘进行操作造成更大的危害。其次,storaged会定期对设备进行扫描,调用文件系统检查工具对文件系统进行扫描,如果发现有严重异常,比如超级块损坏,则自动卸载设备并执行修复程序,如果修复成功则重新挂载磁盘,如果修复失败,则记录相关状态。
[0055]3,对外提供接口。
[0056]storaged同时对外提供基于unixsocket的设备信息的查询和操作接口。数据以json格式输出,方便解析和处理。用户可以通过storaged对存储设备状态进行查询,也可以对storaged下发指令完成对存储设备的卸载、弹出、格式化等操作,避免直接操作存储设备造成的不可预知的后果。storaged对接收到的操作请求进行管理,在内部按照时间顺序维护一个链表,每次只调用一个接口,一个动作执行完成之后,再调用下一个接口,实现接口调用的序列化,保证同一时刻对某个设备只有一个操作,防止同时对设备进行操作造成不可知的结果。storaged维护了设备的相关状态,这样可以加快接口查询的速度。
[0057]4,防止自身被磁盘异常阻塞
[0058]当存储设备损坏时,如果对存储设备进行一些操作,比如读取信息,查看状态等,进程可能被卡主,这样就无法实现对设备的管理,自身也会成为系统的负担。为解决该问题,storaged中专门设计了一个防止被阻塞的机制,storaged在执行命令时会先检测同样的指令是否有被阻塞住,如果有,则直接返回相应的错误码,这样可以保证系统中同样的指令只有一个会被阻塞住;另一方面,storaged先fork —个子进程,由子进程来调用相关操作指令,父进程对子进程进行监控,读取子进程的标准输出stdout和标准错误输出stderr,如果子进程超过预先设定的时间依然没有退出,则对子进程发送kill信号,并记录错误状态。这个部分可以保证storaged能够对外提供服务,而不会自己被卡住。
[0059]更进一步的说明如下:
[0060]1.系统运行在申请人的路由器上,该系统包含一个sd卡扩展口和USB扩展口
[0061]2.路由器启动时自动启动守护进程storaged,storaged负责对设备进行管理和状态维护。
[0062]3.storaged会定期对设备状态进行扫描,保证存储设备工作在正常状态,如果发现异常则迅速作出处理。
[0063]4.storaged保证自身不会被阻塞,并可对外提供服务。
[0064]5.路由器后台界面通过调用storaged提供的接口来展示存储设备的大小,文件系统类型等信息。通过调用storaged的接口来对存储设备进行操作,比如安全弹出,格式化等。
[0065]本发明的有益效果体现在:
[0066]1.自动存储管理的方便性。用户插入设备后,正常情况下,storaged会完成所有的初始化工作,使得存储设备直接即可使用。
[0067]2.问题发现及时性。系统通过多种机制对存储设备的工作状态进行监测,发现异常马上采取措施。
[0068]3.保证路由器系统工作的稳定性。storaged发现系统异常之后,会采取相关措施降低或者消除对系统的影响。
[0069]4.接口调用的便捷性和易用性。storaged对外提供基于unixsocket的接口调用机制,并封装了一个调用工具storage, sh用户可根据需要调用接口通知storaged,由storaged负责完成系统的操作任务,避免误操作。
[0070]5.系统的健壮性。storaged设计了防止自身阻塞和超时退出的机制,保证自身工作的稳定可靠。
[0071]以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明技术方案的保护范围。
【主权项】
1.一种路由器外接存储设备的控制方法,其特征在于:该方法利用linux udev体系和hotplug热插拔机制对存储设备进行监控,当存储设备接入或者移除路由器系统时,驱动路由器系统初始化并触发内核的hotplug事件,内核通过netlink socket与用户态hotplugd进程进行通信,storaged进程在hotplugd进程设置回调钩子,每当有存储设备事件发生就通知storaged进程,storaged进程执行以下步骤: (1)接收存储设备插入路由器的信息; (2)判断存储设备的磁盘是否需要格式化,是则执行步骤(3),否则执行步骤(9); (3)磁盘未格式化; (4)是否确认格式化,是则执行步骤(5),否则执行步骤(3); (5)将磁盘格式化; (6)磁盘正在格式化; (7)判断格式化是否成功,是则执行步骤(9),否则执行步骤(8); (8)格式化失败,跳转到步骤(15); (9)将存储设备自动挂载到路由器; (10)判断是否挂载成功,是则执行步骤(11),否则执行步骤(15); (11)存储设备被挂载; (12)判断存储设备是否移除,是则执行步骤(13);否则执行步骤(11); (13)将存储设备卸载,跳转到步骤(15); (14)挂载失败,跳转到步骤(15); (15)结束。
2.根据权利要求1所述的路由器外接存储设备的控制方法,其特征在于:该控制方法还包括状态监测和自动故障排除步骤:在存储设备驱动中设置统计机制,当发现存储设备读写报错达到指定次数的时候,通过hotplug通知storaged,storaged取出对应的消息类型和故障原因,将设备重新挂载成ro类型的分区或者卸载并禁用,以避免继续对磁盘进行操作造成更大的危害。
3.根据权利要求2所述的路由器外接存储设备的控制方法,其特征在于:所述状态监测和自动故障排除步骤还包括=Storaged定期对存储设备进行扫描,调用文件系统检查工具对文件系统进行扫描,如果发现超级块损坏,则自动卸载存储设备并执行修复;如果修复成功则重新挂载存储设备的磁盘,如果修复失败则记录相关状态。
4.根据权利要求1所述的路由器外接存储设备的控制方法,其特征在于:该控制方法还包括对外提供查询和操作接口步骤:数据以json格式输出,方便解析和处理;通过storaged对存储设备状态进行查询;对storaged下发指令完成对存储设备的卸载、弹出、格式化,storaged对接收到的指令进行控制,按照时间顺序维护一个链表,每次只调用一个接口,一个动作执行完成之后,再调用下一个接口,实现接口调用的序列化。
5.根据权利要求1所述的路由器外接存储设备的控制方法,其特征在于:该控制方法还包括防止自身被磁盘异常阻塞步骤:storaged在执行命令时先检测是否有同样的指令被阻塞住,如果有,则返回相应的错误码。
6.根据权利要求5所述的路由器外接存储设备的控制方法,其特征在于:所述防止自身被磁盘异常阻塞步骤还包括=Storaged先调用叉子函数fork生成一个子进程,由子进程来调用相关操作指令,父进程对子进程进行监控,读取子进程的标准输出Stdout和标准错误输出Stderr,如果子进程超过预先设定的时间依然没有退出,通过杀进程指令kill杀死子进程,并记录错误状态。
【专利摘要】本发明公开一种路由器外接存储设备的控制方法,该方法利用linux udev体系和hotplug热插拔机制对存储设备进行监控,当存储设备接入或者移除路由器系统时,驱动路由器系统初始化并触发内核的hotplug事件,内核通过netlink socket与用户态hotplugd进程进行通信,storaged进程在hotplugd进程设置回调钩子,每当有存储设备事件发生就通知storaged进程,storaged进程执行存储设备的磁盘格式化、将存储设备自动挂载到路由器、或将存储设备卸载。
【IPC分类】G06F3-06, H04L12-771
【公开号】CN104734979
【申请号】CN201510160742
【发明人】乔龙飞
【申请人】北京极科极客科技有限公司
【公开日】2015年6月24日
【申请日】2015年4月7日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1