一种实现移动存储挂载的方法及装置的制造方法

文档序号:9826057阅读:203来源:国知局
一种实现移动存储挂载的方法及装置的制造方法
【技术领域】
[0001]本申请涉及移动存储技术,尤指一种在Linux系统实现移动存储挂载的方法及装置。
【背景技术】
[0002]目前,Linux系统在工业方面已经得到广泛的应用,自内核2.6版本开始支持实时性后,军方也考虑使用Linux系统来替代昂贵的实时操作系统VxWorks系统(美国WindRiver System公司(简称风河公司)推出的一个实时操作系统)。然而,Linux系统对于移动存储,例如U盘、移动硬盘的支持仍不如Windows系统那样完美,需要用户进行挂载操作。在Linux系统下通用的识别与挂载U盘、移动硬盘的方法是通过脚本或者C程序来实现的,其通用流程大致如下:首先,获取USB热插拔事件;然后,依据USB热插拔事件判别移动存储是否为存储设备;接着,如果判别出移动存储是存储设备,且为插入事件,进而获取存储设备的分区信息,查询存储设备分区文件系统类型,依据存储设备分区的文件系统,挂载存储设备分区到指定的目录,实现存储设备的挂载;如果为拔出事件,则卸载存储设备。
[0003]移动终端如手机终端作为随身携带的通信设备,其一般拥有较大的存储空间,除了用于安装手机操作系统和应用外,在实际使用过程中,剩余的存储空间通常被用作虚拟存储。手机还支持SD卡扩容,当手机终端通过USB连接到计算机设备时(例如PC),手机终端上的虚拟存储和SD卡都相当于一个U盘。对于不同的计算机设备的操作系统,手机终端的接入模式是不同的,如Windows下要求选择“U盘”模式,Linux下要求选择“大容量存储”模式;只有选择了恰当的模式,计算机操作系统才可以探测到设备的存储空间,进而获取存储设备分区信息,查询存储设备分区文件系统类型,实现挂载。然而,选择模式有四五种之多,用户只能通过多次尝试,才可能实现手机在Linux系统上的挂载。
[0004]当手机作为USB设备接入Linux系统中时,需要手工或者通过守护进程来触发上述的通用流程来完成挂载,才可以在Linux上正常使用手机上的虚拟存储或者SD卡。然而在Linux上挂载手机终端的虚拟存储或者SD卡,这个通用流程容易出现以下问题:
[0005]1、通用流程要求用户在判别移动存储是否为存储设备且是否为插入事件前,完成“大容量存储”模式的选择。如果未完成“大容量存储”模式的选择,虽然Linux系统能识别到手机终端的存储设备,但由于手机终端的存储设备的驱动加载过程并未完成,无法识别存储设备分区。
[0006]2、用户在完成手机“大容量存储”模式选择下,Linux系统仍需要一段时间查询到存储设备分区文件系统类型,并在Linux系统内核中对存储设备及存储设备分区文件系统类型等相关记录进行更新,更无法查询出文件系统类型。
[0007]3、假如用户在判别移动存储是否为存储设备且是否为插入事件之后,完成手机“大容量存储”模式选择;如果Linux系统不能识别存储设备分区文件系统类型,就不会更新Linux系统内核中存储设备及存储设备分区文件系统类型等相关记录;除非用户或者系统再次调用底层的接口查询该存储设备。
[0008]4、SD卡的热插拔事件比较特殊,Linux系统不会自动给出存储设备分区热插拔事件,也就是说只给出SD卡作为移动存储热插拔事件,需要额外处理(例如:再次挂载或调用底层接口强行检测)才能触发系统给出存储设备分区名相关的事件。
[0009]5、虚拟存储空间的热插拔事件也很特殊,系统根本就不会给出存储设备分区名相关的事件。
[0010]6、在Linux下直接格式化未分区的U盘或移动硬盘,再重新插入也会出现系统不给出存储设备分区名的情况。另外,在挂载过程中,Linux系统只会识别出存储空间,而不会识别出存储设备分区,存储空间无法实现挂载。
[0011]综上,在Linux系统实现手机虚拟存储及SD卡的挂载在实现上存在诸多问题,在Linux下直接格式化未分区的U盘或移动硬盘,在挂载上也存在问题,根据现有挂载的通用流程,用户无法实现良好的挂载。

【发明内容】

[0012]为了解决上述问题,本发明提供一种实现移动存储挂载的方法及装置,能够解决Linux环境下,通用流程进行移动存储挂载存在的问题,实现对移动存储的良好挂载。
[0013]为了达到本发明的目的,本申请提供一种实现移动存储挂载的方法;包括:
[0014]当根据USB热插拔事件判定移动存储为存储设备且为插入事件时,在预定时长内周期性查询存储设备是否存在多媒体空间;
[0015]当存在多媒体空间且多媒体空间存在存储空间时,查询存储空间的文件系统类型;
[0016]根据查询到的文件系统类型进行移动存储的挂载。
[0017]进一步地,当未查询到所述存储设备存在多媒体空间,该方法还包括:
[0018]创建新的线程,周期性查询所述存储设备是否存在多媒体空间,当存在多媒体空间且多媒体空间存在存储空间时,继续执行所述查询存储空间的文件系统类型。
[0019]进一步地,查询存储空间的文件系统类型具体包括:
[0020]根据所述存储空间的存储空间名判断是否为存储设备分区,
[0021]当存储空间为存储设备分区时,根据存储设备分区名查询所述存储空间的文件系统类型;
[0022]当存储空间不是存储设备分区时,根据所述存储空间名查询所述存储空间的文件系统类型。
[0023]进一步地,当存储空间的文件系统类型是根据所述存储设备分区名查询获得时,所述根据查询到的文件系统类型进行移动存储的挂载具体包括:
[0024]根据查询到的所述文件系统类型将存储设备分区挂载到指定的目录;
[0025]当所述存储空间的文件系统类型是根据存储空间的存储空间名查询获得,所述根据查询到的文件系统类型进行移动存储的挂载具体包括:
[0026]根据查询到的文件系统类型将存储空间挂载到指定的目录。
[0027]进一步地,当查询不到存储空间的文件系统类型时,该方法还包括:提示用户进行格式化处理;
[0028]进行格式化处理:当所述存储空间为存储设备分区时,根据外部指令格式化存储设备分区,继续挂载存储设备分区到指定的目录;或,当所述存储空间不是存储设备分区时,根据外部指令格式化所述存储空间,继续挂载存储空间到指定的目录。
[0029]进一步地,当根据USB热插拔事件判定所述移动存储为存储设备且为卸载事件时,该方法还包括:卸载所述移动存储;
[0030]当根据所述USB热插拔事件判定所述移动存储不是存储设备时,该方法还包括:结束挂载。
[0031]进一步地,在完成移动存储的挂载后,该方法还包括:串行的记录移动存储的挂载信息到预先设定的文件或共享内存中,并进行更新。
[0032]进一步地,USB热插拔事件为:由Linux系统内核产生的、包含有设备路径信息、设备名、存储设备分区名、子系统信息的相应的事件。
[0033]进一步地,根据USB热插拔事件判定移动存储为存储设备具体包括:根据USB热插拔事件的所述移动存储的设备路径信息、子系统信息、存储设备分区名和设备名与存储设备的标识参数进行匹配获得。
[0034]进一步地,存储空间为:可存放文件的硬件存储体;
[0035]可存放文件的硬件存储体为:可格式化或已被格式化的空间。
[0036]进一步地,串行的记录移动存储的挂载信息到预先设定的文件或共享内存中具体包括:
[0037]通过单线程方式来串行的记录所述移动存储的挂载信息到预先设定的文件或共享内存中;或,
[0038]采用互斥锁、读写锁或信号量来实现多线程、和/或多进程的串行的记录所述移动存储的挂载信息到预先设定的文件或共享内存中。
[0039]进一步地,挂载为:根据系统命令或者相对应的API实现的所述移动存储的挂载;
[0040]卸载为:根据系统命令或者相对应的API实现的所述移动存储的卸载。
[0041]另一方面,本申请还提供一种实现移动存储挂载的装置,包括:第一查询单元、第二查询单元和挂载单元;其中,
[0042]第一查询单元,用于根据USB热插拔事件判定的移动存储为存储设备且为插入事件,在预定时长内周期性查询存储设备是否存在多媒体空间;
[0043]第二查询单元,用于判定存在多媒体空间且多媒体空间存在存储空间时,查询存储空间的文件系统类型;
[0044]挂载单元,用于根据查询到的文件系统类型进行移动存储的挂载。
[0045]进一步地,该装置还包括第三查询单元,为新创建的线程,用于在第一查询单元未查询到所述存储设备存在多媒体空间时,周期性查询所述存储设备是否存在多媒体空间,当存在多媒体空间且多媒体空间存在存储空间时,调用第二查询单元及挂载单元进行挂载操作。
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1