一种存储设备挂载管理方法及装置与流程

文档序号:16400545发布日期:2018-12-25 20:06阅读:259来源:国知局
一种存储设备挂载管理方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种存储设备挂载管理方法及装置。

背景技术

移动设备中的存储设备分为内置存储和外置存储。所述内置存储是指移动设备出厂时自身的存储空间,可用于系统固件和软件的安装,所述外置存储通常为可插拔的存储卡,比如sd卡。

在linux操作系统中,所有设备被视为文件,整个设备的资源被整合成一个的文件目录,如果需要访问存储设备中的文件,则需要将该存储设备作为一个文件分区挂载到一个已存在的目录上,然后通过访问该目录来访问存储设备中的文件。

当存储设备被挂载到已存在的目录后,移动设备中的应用可以访问这些存储设备。当存储设备出现硬件损坏或者文件系统损坏时,存储设备会被重新挂载为只读状态,而应用并不能及时知道存储设备已重新挂载为只读,因此会继续对存储设备进行读写操作,进而会因存储设备当前为只读状态而导致应用对存储设备访问失败。



技术实现要素:

本申请实施例提供一种存储设备挂载管理方法及装置。

第一方面,提供一种存储设备挂载管理方法,包括:操作系统内核检测存储设备所挂载的目录的文件系统状态,并当根据检测结果判断所述存储设备被重挂载为只读时,执行如下步骤:向应用程序框架层发送第一通知消息,所述应用程序框架层根据所述第一通知消息,通知应用程序停止访问被重挂载为只读的所述存储设备。

根据本申请的上述实施例,由于操作系统内核对存储设备所挂载的目录的文件系统状态进行检测,并当判断存储设备被重挂载为只读时,向应用程序框架层发送第一通知消息,以使应用程序框架层通知应用程序停止访问被重挂载为只读的该存储设备,从而可以及时发现存储设备被重挂载为只读的情况,并可以及时使应用程序停止访问该存储设备,避免因存储设备当前为只读状态而导致应用对存储设备访问失败。

在一种可能的实现方式中,当操作系统内核根据检测结果判断所述存储设备被重挂载为只读时,还包括:检查所述存储设备的硬件寄存器,若检测到所述存储设备的硬件寄存器被硬件控制器设置为只读,则通知所述应用程序框架层所述存储设备发生硬件故障。

根据本申请的上述实施例,当操作系统内核根据检测结果判断存储设备被重挂载为只读时,还可通过检查该存储设备的硬件寄存器,判断是否是硬件故障,从而确定出故障原因,并可以进一步根据故障原因进行后续处理。

在一种可能的实现方式中,当操作系统内核根据检测结果判断所述存储设备被重挂载为只读时,还包括:向所述应用程序框架层发送第二通知消息,所述应用程序框架层根据所述第二通知消息,卸载所述存储设备,修复文件系统错误,并在文件系统修复成功后,重挂载所述存储设备;所述应用程序框架层通知应用程序恢复访问所述存储设备。

根据本申请的上述实施例,当操作系统内核根据检测结果判断存储设备被重挂载为只读时,还可通知应用程序框架层卸载该存储设备,进行文件系统恢复处理,在恢复成功后重挂载该存储设备,以使应用程序可以访问该存储设备,即,可以通过以上方式恢复文件系统错误。

在一种可能的实现方式中,若文件系统修复失败,则还包括:所述应用程序框架层通知应用程序文件系统错误。

在一种可能的实现方式中,所述第一通知消息携带所述存储设备的指示信息,或者携带所述存储设备所挂载到的目录的指示信息。

第二方面,提供一种存储设备挂载管理装置,包括:操作系统内核、应用程序框架层;所述操作系统内核,用于检测存储设备所挂载的目录的文件系统状态,并当根据检测结果判断所述存储设备被重挂载为只读时,向所述应用程序框架层发送第一通知消息;所述应用程序框架层,用于根据所述第一通知消息,通知应用程序停止访问被重挂载为只读的所述存储设备。

在一种可能的实现方式中,所述操作系统内核,还用于:当根据检测结果判断所述存储设备被重挂载为只读时,检查所述存储设备的硬件寄存器;若检测到所述存储设备的硬件寄存器被硬件控制器设置为只读,则通知所述应用程序框架层所述存储设备发生硬件故障。

在一种可能的实现方式中,所述操作系统内核,还用于:当根据检测结果判断所述存储设备被重挂载为只读时,向所述应用程序框架层发送第二通知消息;

所述应用程序框架层,还用于根据所述第二通知消息,卸载所述存储设备,修复文件系统错误,在文件系统修复成功后,重挂载所述存储设备;以及,通知应用程序恢复访问所述存储设备。

在一种可能的实现方式中,所述应用程序框架层,还用于:若文件系统修复失败,则通知应用程序文件系统错误。

在一种可能的实现方式中,所述第一通知消息携带所述存储设备的指示信息,或者携带所述存储设备所挂载到的目录的指示信息。

第三方面,提供一种装置,包括:处理器,存储器;所述处理器,用于读取存储器中的程序,执行:所述处理器中的操作系统内核检测存储设备所挂载的目录的文件系统状态,并当根据检测结果判断所述存储设备被重挂载为只读时,执行如下步骤:向应用程序框架层发送第一通知消息,所述处理器中的应用程序框架层根据所述第一通知消息,通知应用程序停止访问被重挂载为只读的所述存储设备。

第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述第一方面中任一项所述的方法。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的操作系统架构示意图;

图2为本申请实施例提供的存储设备挂载管理流程示意图;

图3为本申请实施例提供的存储设备挂载管理流程示意图;

图4为本申请实施例提供的存储设备挂载管理系统示意图;

图5为本申请实施例提供的装置的结构示意图。

具体实施方式

在linux操作系统中,挂载是指将一个存储设备挂接到一个已存在的目录上,通过访问该目录可访问该存储设备中的文件。对于一些其他类型的操作系统,挂载的含义与此类似。

当终端中的存储设备出现硬件损坏或者文件系统损坏时,存储设备会被重新挂载为只读状态。为及时将存储设备被重新挂载为只读状态通知该终端中的应用,以避免这些应用因继续对该存储设备进行读写操作而出现读写操作错误,本申请实施例提供了一种存储设备挂载管理方法及装置。

其中,所述终端中的存储设备,可包括内置存储和/或外置存储。

本申请实施例可适用于多种类型的终端。所述终端又称之为用户设备(userequipment,ue)、移动台(mobilestation,ms)、移动终端(mobileterminal,mt)等,是一种向用户提供语音和/或数据连通性的设备,例如,具有无线连接功能的手持式设备、车载设备等。目前,一些终端的举例为:手机(mobilephone)、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobileinternetdevice,mid)、可穿戴设备,虚拟现实(virtualreality,vr)设备、增强现实(augmentedreality,ar)设备、工业控制(industrialcontrol)中的无线终端、无人驾驶(selfdriving)中的无线终端、远程手术(remotemedicalsurgery)中的无线终端、智能电网(smartgrid)中的无线终端、运输安全(transportationsafety)中的无线终端、智慧城市(smartcity)中的无线终端、智慧家庭(smarthome)中的无线终端等。

下面结合附图对本申请实施例进行详细描述。

参见图1,为终端操作系统架构示意图。

如图1所示,该系统架构从底层到高层可包括操作系统内核、应用程序框架层以及应用程序层。上述各层可由软件实现,即上述各层可视为功能模块或软件模块,比如,操作系统内核也可称为操作系统内核模块,应用程序框架层也可称为应用程序框架层模块。

操作系统内核主要用于实现硬件设备驱动、进程和内存管理、网络协议栈、电源管理、无线通信等核心功能。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件。

应用程序框架层用于提供运行应用程序所需的一系列类库。以android系统为例,应用程序框架层中可包括但不限于以下类库(或称模块):

-活动管理器(activitymanager):用于管理各个应用生命周期并提供常用的导航回退功能,为所有程序的窗口提供交互的接口;

-窗口管理器(windowmanager):对所有开启的窗口程序进行管理;

-视图系统(viewsystem):创建应用程序的基本组件,包括列表(lists)、

网格(grids)、文本框(textboxes)、按钮(buttons)、可嵌入的web浏览器等;

-包管理器(packagemanager):对应用程序进行管理,提供的功能可包括按照应用程序、卸载应用程序、查询相关权限信息等;

-资源管理器(resourcemanager):提供各种非代码资源供应用程序使用,如本地化字符串、图片、音频等。

应用程序层中包括各类应用程序,例如智能手机上的短信服务(shortmessageservice,sms)、电话拨号应用、图片浏览器、日历应用、游戏、地图应用、web浏览器等程序。

基于上述架构,本申请实施例中,操作系统内核可对存储设备所挂载的目录的文件系统状态进行检测。应用程序框架层中可包括“挂载管理模块”,该模块具体可以表现为一种系统服务,可实现本申请实施例提供的存储设备挂载管理功能。

需要说明的是,本申请实施例对“挂载管理模块”的命名方式不作限制,只要能够实现本申请实施例提供的挂载管理功能,无论如何命名,均可视为本申请实施例中的“挂载管理模块”。

参见图2,为本申请实施例提供的存储设备挂载管理流程示意图。

存储设备可被挂载到已存在的目录下。在操作系统启动过程中,可自动将存储设备挂载到已存在的目录下,也可以根据挂载命令(比如mount命令)进行存储设备的挂载。存储设备可作为一个分区挂载到已存在的目录下,应用程序可通过访问该目录从而对该存储设备中的文件进行读写操作。

存储设备被挂载在目录下后,其文件系统状态一般为读写状态。但是,若该存储设备出现硬件故障或者文件系统故障,则该存储设备可能被重挂载为只读状态。

本申请实施例提供的存储设备挂载管理流程中,可通过对存储设备所挂载的目录的文件系统状态进行检测,根据检测结果判断该存储设备被重挂载为只读时,及时通知应用程序停止访问该存储设备。

如图所示,该流程可包括:

s201:操作系统内核检测存储设备所挂载到的目录的文件系统状态。

该步骤中,操作系统内核可在将存储设备以读写方式挂载到目录下后(存储设备以读写方式挂载到目录后,该目录的文件系统状态为读写状态),针对该目录检测是否因该存储设备被重挂载为只读而使文件系统状态变为只读状态。

具体实施时,当存储设备因硬件故障或文件系统故障而被重挂载为只读时,相应事件能够被操作系统内核获取到,从而使操作系统内核能够检测到存储设备所挂载到的目录的文件系统状态变化。

更具体地,以linux操作系统为例,操作系统内核可通过检测到的挂载参数来判断是否发生了存储设备被重挂载为只读的事件。比如,若操作系统内核判断存储设备的挂载参数中出现用于表明重挂载为只读的错误处理参数,比如errows=rumount-ro,则可判定存储设备被重挂载为只读。

s202:若根据检测结果判断所述存储设备被重挂载为只读,则转入s203;

s203:操作系统内核向应用程序框架层发送第一通知消息。

其中,所述第一通知消息用于指示存储设备被重挂载为只读,或者,所述第一通知消息用于指示应用程序框架层通知应用程序针对被重挂载为只读的存储设备停止访问。

可选地,所述第一通知消息可携带被重挂载为只读的存储设备的指示信息,或者携带该存储设备所挂载到的目录的指示信息,以便应用程序框架层可以通知应用程序针对该指示信息所指示的存储设备或目录停止访问。

其中,所述应用程序框架层具体可以是图1中所示的应用程序框架层中的“挂载管理模块”。

具体实施时,操作系统内核与“挂载管理模块”之间可通过进程间通信进行信息交互。

s204:应用程序框架层接收到该第一通知消息后,根据该第一通知消息通知终端中的应用程序停止访问被重挂载为只读的存储设备。

可选地,应用程序框架层可通过向应用程序层发送广播消息,通知应用程序层的应用程序停止访问被重挂载为只读的存储设备或停止访问该存储设备所挂载到的目录。

通过以上描述可以看出,操作系统内核可对存储设备所挂载的目录的文件系统状态进行检测,并在根据检测结果判断存储设备被重挂载为只读时,可向应用程序框架层发送通知消息,以使应用程序框架层根据该通知消息,通知应用程序停止访问被重挂载为只读的所述存储设备,从而可以及时检测到存储设备被重挂载为只读,并及时使应用程序停止访问该存储设备,避免了因存储设备重挂载为只读时,应用程序访问该存储设备而导致访问失败。

可选地,在上述流程的基础上,在另外的实施例中,操作系统内核检测到存储设备被重挂载为只读后,可检查该存储设备的硬件寄存器,若检测到该存储设备的硬件寄存器被硬件控制器设置为只读,则表明是因该存储设备的硬件故障导致被重挂载为只读,因此通知应用程序框架层该存储设备发生硬件故障。进一步地,应用程序框架层可将该存储设备发生硬件故障的信息通知给终端中的应用程序。根据该实施例,可检测存储设备是否因硬件寄存器原因被挂载为只读,并可将该原因通知给应用程序框架层,进一步由其通知给应用程序。

基于上述实施例,在一种可能的实现方式中,操作系统内核可在检测到存储设备被重挂载为只读后,并在向应用程序框架层发送第一通知消息之前,检查该存储设备的硬件寄存器,以判断该存储设备被重挂载为只读的原因,并在判断是因该存储设备的硬件寄存器原因导致被重挂载为只读时,向应用程序框架层发送第一通知消息,以将该存储设备发生硬件故障的信息通知给应用程序框架层,由应用程序框架层通知应用程序停止对该存储设备进行访问。

在另一种可能的实现方式中,操作系统内核可在检测到存储设备被重挂载为只读后,并在向应用程序框架层发送第一通知消息之后,检查该存储设备的硬件寄存器,以判断该存储设备被重挂载为只读的原因,并在判断是因该存储设备的硬件寄存器原因导致被重挂载为只读时,再次向应用程序框架层发送通知消息,以将故障原因通知给应用程序框架层,并由其通知给应用程序。相较于前一种实现方式,采用本实现方式可以更为及时地通知应用程序框架层,以使应用程序框架层更为及时地通知应用程序停止对该存储设备进行访问。

可选地,在上述流程的基础上,在另外的实施例中,操作系统内核检测到存储设备被重挂载为只读后,向应用程序框架层发送第二通知消息;应用程序框架层根据该第二通知消息,卸载被重挂载为只读的存储设备,修复文件系统错误,在文件系统修复成功后,重挂载该存储设备,并通知应用程序恢复访问该存储设备。进一步地,若文件系统修复失败,则应用程序框架层可通知应用程序文件系统错误。根据该实施例,可检测存储设备被挂载为只读的原因是否为文件系统故障,并可对文件系统故障进行修复,重挂载该存储设备,以恢复对该设备的访问。

基于上述实施例,在一种可能的实现方式中,操作系统内核在检测到存储设备被重挂载为只读后,可先检查该存储设备的硬件寄存器,以判断是否是因该存储设备的硬件故障导致该存储设备被重挂载为只读(具体实现方法可参见前述实施例),若判定不是该存储设备的硬件故障原因导致该存储设备被重挂载为只读,则再向应用程序框架层发送第二通知消息。

为了更清楚地理解本申请的上述实施例,下面以linux系统为例,对本申请实施例的一种实现方法进行详细说明。

参见图3,为本申请实施例提供的linux系统下的存储设备挂载管理流程示意图,如图所示,该流程可包括:

s301:操作系统内核(以下称linux内核)检测存储设备所挂载到的目录的文件系统状态,若根据检测结果判断该存储设备被重挂载为只读,则转入s302;

s302:linux内核向应用程序框架层中的挂载管理模块发送第一通知消息;

s303:应用程序框架层中的挂载管理模块接收第一通知消息,根据该第一通知消息通知应用程序层中的应用程序停止对该存储设备进行访问;

s303:linux内核检查该存储设备的硬件寄存器,若根据检查结果判断该存储设备的硬件故障导致被重挂载为只读,则转入s304,否则转入s305;

s304:linux内核通知应用程序框架层中的挂载管理模块该存储设备发生硬件故障,挂载管理模块将该信息通知给应用程序层中的应用程序;

s305:linux内核向应用程序框架层中的挂载管理模块发送第二通知消息;

s306:应用程序框架层中的挂载管理模块接收该第二通知消息,根据该通知消息卸载被重挂载为只读的存储设备,修复文件系统错误,若修复成功,则转入s307,否则,转入s308;

s307:重挂载该存储设备,并通知应用程序恢复访问该存储设备;

s308:应用程序框架层中的挂载管理模块通知应用程序层中的应用程序文件系统故障。

基于相同的技术构思,本申请实施例还提供了一种存储设备挂载管理装置,该装置可实现前述实施例中的存储设备挂载管理流程。

参见图4,为本申请实施例提供的存储设备挂载管理装置的结构示意图,如图所示,该基站可包括:操作系统内核401、应用程序框架层403。

操作系统内核401用于检测存储设备所挂载的目录的文件系统状态,并当根据检测结果判断所述存储设备被重挂载为只读时,向应用程序框架层402发送第一通知消息。应用程序框架层402用于根据所述第一通知消息,通知应用程序停止访问被重挂载为只读的所述存储设备。

可选地,操作系统内核401还用于:当根据检测结果判断所述存储设备被重挂载为只读时,检查所述存储设备的硬件寄存器;若检测到所述存储设备的硬件寄存器被硬件控制器设置为只读,则通知应用程序框架层402所述存储设备发生硬件故障。

可选地,操作系统内核401还用于:当根据检测结果判断所述存储设备被重挂载为只读时,向应用程序框架层402发送第二通知消息。应用程序框架层402还用于根据所述第二通知消息,卸载所述存储设备,修复文件系统错误,在文件系统修复成功后,重挂载所述存储设备;以及,通知应用程序恢复访问所述存储设备。

可选地,应用程序框架层402还用于:若文件系统修复失败,则通知应用程序文件系统错误。

可选地,所述第一通知消息携带所述存储设备的指示信息,或者携带所述存储设备所挂载到的目录的指示信息。

基于相同的技术构思,本申请实施例还提供了一种装置,该装置可实现前述实施例中的存储设备挂载管理流程。该装置可以是终端。

参见图5,为本申请实施例提供的装置的结构示意图,如图所示,该装置可包括:处理器501、存储器502以及总线接口503。

处理器501负责管理总线架构和通常的处理,存储器502可以存储处理器501在执行操作时所使用的数据。

总线架构可以包括任意数量的互联的总线和桥,具体由处理器501代表的一个或多个处理器和存储器502代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口504提供接口。处理器501负责管理总线架构和通常的处理,存储器502可以存储处理器501在执行操作时所使用的数据。

本发明实施例揭示的流程,可以应用于处理器501中,或者由处理器501实现。在实现过程中,处理流程的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。处理器501可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成处理流程的步骤。

具体地,处理器501,用于读取存储器502中的程序并执行:

处理器501中的操作系统内核检测存储设备所挂载的目录的文件系统状态,并当根据检测结果判断所述存储设备被重挂载为只读时,执行如下步骤:向应用程序框架层发送第一通知消息;所述处理器中的应用程序框架层根据所述第一通知消息,通知应用程序停止访问被重挂载为只读的所述存储设备。

该流程的具体实现可参见前述实施例的相关描述,在此不再重复。

基于相同的技术构思,本申请实施例还提供了一种计算机存储介质。所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行前述实施例所执行的流程。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1