修复磁盘挂载的方法及装置转让专利

申请号 : CN201610552880.2

文献号 : CN107632774B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 覃敏黄成勇

申请人 : 深圳市大迈科技有限公司

摘要 :

本发明适用于存储技术领域,提供了一种修复磁盘挂载的方法及装置,包括:从磁盘用户数据区读取其起始扇区内的第一数据;判断所述第一数据是否满足预设的字节条件;若所述第一数据不满足所述预设的字节条件,则对所述磁盘0扇区的用户数据区表项进行更新。本发明在不破坏用户数据区、不修改硬件接口的情况下使得格式化后的用户数据区能够被设备成功识别并挂载,从而解决通过OTG格式化后的用户数据区可能生成新的主引导记录,导致设备无法正常识别并挂载该用户数据区的问题。

权利要求 :

1.一种应用于不破坏用户数据区、不修改硬件接口的场景下的更新磁盘挂载的方法,其特征在于,包括:从磁盘用户数据区读取其起始扇区内的第一数据,包括:读取所述磁盘的0扇区内的第二数据;从所述第二数据中获取所述用户数据区的起始位置;跳转至所述用户数据区的起始位置,读取第一个扇区内的所述第一数据;其中,所述第一数据中会记录格式化后的用户数据区的实际情况;

判断所述第一数据是否满足预设的字节条件;

若所述第一数据不满足所述预设的字节条件,代表格式化工具在磁盘格式化过程中在用户数据区写入了主引导记录,但用户数据区的DBR数据只是发生了偏移,DBR数据没有遭到破坏,则获取所述起始扇区的第一个分区表内记录的分区起始位置;

跳转至所述分区起始位置,读取第一个扇区内的第三数据;

判断所述第三数据是否满足所述预设的字节条件;

若所述第三数据满足所述预设的字节条件,则对所述磁盘0扇区的用户数据区表项进行更新。

2.如权利要求1所述的方法,其特征在于,所述预设的字节条件包括:数据中的第1字节为0xEB,第3字节为0x90,第511字节是0x55且第512个字节是0xAA。

3.如权利要求1所述的方法,其特征在于,所述对所述磁盘0扇区的用户数据区表项进行更新包括:将所述磁盘0扇区的用户数据区表项中的文件系统类型更新为所述起始扇区的第一个分区表内记录的文件系统类型;

将所述磁盘0扇区的用户数据区表项中的分区起始扇区位置更新为所述用户数据区的起始位置与所述分区起始位置之和;

将所述磁盘0扇区的用户数据表项中的分区总扇区数更新为所述起始扇区的第一个分区表内记录的分区总扇区数。

4.一种应用于不破坏用户数据区、不修改硬件接口的场景下的更新磁盘挂载的装置,其特征在于,包括:读取单元,用于从磁盘用户数据区读取其起始扇区内的第一数据;其中,所述第一数据中会记录格式化后的用户数据区的实际情况;

判断单元,用于判断所述第一数据是否满足预设的字节条件;

修复单元,用于若所述第一数据不满足所述预设的字节条件,则对所述磁盘0扇区的用户数据区表项进行更新;

所述修复单元包括:

第一获取子单元,用于若所述第一数据不满足所述预设的字节条件,代表格式化工具在磁盘格式化过程中在用户数据区写入了主引导记录,但用户数据区的DBR数据只是发生了偏移,DBR数据没有遭到破坏,则获取所述起始扇区的第一个分区表内记录的分区起始位置;

第一读取子单元,用于跳转至所述分区起始位置,读取第一个扇区内的第三数据;

判断子单元,用于判断所述第三数据是否满足所述预设的字节条件;

修复子单元,用于若所述第三数据满足所述预设的字节条件,则对所述磁盘0扇区的用户数据区表项进行更新;

所述读取单元包括:

第二读取子单元,用于读取所述磁盘的0扇区内的第二数据;

第二获取子单元,用于从所述第二数据中获取所述用户数据区的起始位置;

第三读取子单元,用于跳转至所述用户数据区的起始位置,读取第一个扇区内的所述第一数据。

5.如权利要求4所述的装置,其特征在于,所述预设的字节条件包括:数据中的第1字节为0xEB,第3字节为0x90,第511字节是0x55且第512个字节是0xAA。

6.如权利要求4所述的装置,其特征在于,所述修复单元具体用于:将所述磁盘0扇区的用户数据区表项中的文件系统类型更新为所述起始扇区的第一个分区表内记录的文件系统类型;

将所述磁盘0扇区的用户数据区表项中的分区起始扇区位置更新为所述用户数据区的起始位置与所述分区起始位置之和;

将所述磁盘0扇区的用户数据表项中的分区总扇区数更新为所述起始扇区的第一个分区表内记录的分区总扇区数。

说明书 :

修复磁盘挂载的方法及装置

技术领域

[0001] 本发明属于存储技术领域,尤其涉及修复磁盘挂载的方法及装置。

背景技术

[0002] 随着平板、智能手机、数码相机、打印机等消费类产品的普及,用于这些设备与电脑,或者用于这些设备之间的高速数据传输技术越来越受到市场的关注,而通用串行总线(Universal Serial Bus,USB)因其具有热插拔、数据传输可靠性强、扩展方便、成本低等技术优势,被广泛应用于有线数据传输场合。
[0003] On-The-Go(OTG)标准作为USB技术的扩展标准,可以实现无主设备(Host)时设备之间点对点的数据传输。在智能手机、无线存储等诸多带磁盘的嵌入式产品中,如图1所示,会将磁盘分为多个分区,包括主引导记录(Main Boot Record,MBR)分区、用户数据区和其他分区:
[0004] 1、主引导记录是位于磁盘最前边的一段引导(Loader)代码,负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别,以及负责分区引导信息的定位,其由磁盘操作系统在对磁盘进行初始化时产生。由于磁盘的主引导记录不属于任何一个操作系统,因此不能用操作系统提供的磁盘操作命令来读取它。此外,主引导记录也不属于磁盘上的任何分区,因而分区内的格式化命令也不会清除主引导记录的任何信息。
[0005] 2、用户数据区内一般包括磁盘操作系统引导记录(DOS Boot Record,DBR)和用户数据,磁盘操作系统引导记录中存放着对用户数据进行读写操作时所必需的参数,包括用户数据区的分区起始扇区位置、分区总扇区数和文件系统类型等,通过这些参数,用户数据区中的用户数据才能被电脑等主机设备正常读写。
[0006] 当上述带磁盘的嵌入式产品连接电脑等主机设备的时候,需要通过OTG将用户数据区映射成移动磁盘,为电脑等主机设备提供读写用户数据区的接口。由于OTG映射的起始地址是用户数据区的起始地址,因此,当电脑等设备通过OTG挂载用户数据区后,可以读写用户数据区的数据,但是却无法读取到磁盘的主引导记录。
[0007] 然而,目前市面上许多格式化工具在对通过OTG映射的用户数据区进行格式化的过程中,可能会重写主引导记录,即格式化后可能会在用户数据区位置创建一个新的主引导记录,使得用户数据区的磁盘操作系统引导记录的地址发生偏移,进而导致设备无法识别出用户数据区,无法实现对用户数据区的读写。

发明内容

[0008] 有鉴于此,本发明实施例提供了修复磁盘挂载的方法及装置,以解决现行的格式化工具在对通过OTG映射的用户数据区进行格式化时,可能会在用户数据区重写主引导记录,导致设备无法识别出用户数据区的问题。
[0009] 第一方面,提供了一种修复磁盘挂载的方法,包括:
[0010] 从磁盘用户数据区读取其起始扇区内的第一数据;
[0011] 判断所述第一数据是否满足预设的字节条件;
[0012] 若所述第一数据不满足所述预设的字节条件,则对所述磁盘0扇区的用户数据区表项进行更新。
[0013] 第二方面,提供了一种修复磁盘挂载的装置,包括:
[0014] 读取单元,用于从磁盘用户数据区读取其起始扇区内的第一数据;
[0015] 判断单元,用于判断所述第一数据是否满足预设的字节条件;
[0016] 修复单元,用于若所述第一数据不满足所述预设的字节条件,则对所述磁盘0扇区的用户数据区表项进行更新。
[0017] 本发明实施例可以通过标准的linux块设备读写接口和扇区读写命令修复并更新磁盘0扇区主引导记录中的用户数据区表项,在不破坏用户数据区、不修改硬件接口的情况下使得格式化后的用户数据区能够被设备成功识别并挂载,从而解决通过OTG格式化后的用户数据区可能生成新的主引导记录,导致设备无法正常识别并挂载该用户数据区的问题。

附图说明

[0018] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0019] 图1是现有技术提供的磁盘分区情况示意图;
[0020] 图2是本发明实施例提供的修复磁盘挂载的方法的实现流程图;
[0021] 图3是本发明实施例提供的修复磁盘挂载的方法S201的具体实现流程图;
[0022] 图4是本发明实施例提供的修复磁盘挂载的方法S203的具体实现流程图;
[0023] 图5是本发明实施例提供的磁盘挂载的装置的结构框图。

具体实施方式

[0024] 以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
[0025] 图2示出了本发明实施例提供的修复磁盘挂载的方法的实现流程,详述如下:
[0026] 在S201中,从磁盘用户数据区读取其起始扇区内的第一数据。
[0027] 具体地,对第一数据的获取操作如图3所示:
[0028] S301,读取所述磁盘的0扇区内的第二数据。
[0029] 其中,磁盘0扇区是磁盘的头一个扇区,磁盘的主引导记录即存储在该扇区中,而由于磁盘的格式化并不会清除主引导记录的任何信息,磁盘操作命令也无法读取主引导记录,因此,通过读取磁盘0扇区中记录的用户数据区表项,可以获取到磁盘在格式化前的用户数据区信息。具体地,从磁盘的0扇区内读取1个扇区的数据,在此称S301中读取到的数据为第二数据,读取到的第二数据中,包括了磁盘用户数据区的文件系统类型、分区起始扇区位置及分区总扇区数等信息。
[0030] S302,从所述第二数据中获取所述起始扇区的地址。
[0031] 从第二数据中读取出用户数据区的分区起始扇区位置。
[0032] S303,根据所述地址跳转至所述起始扇区,读取所述起始扇区内的所述第一数据。
[0033] 根据S302中读取到的用户数据区的分区起始扇区位置,跳转至用户数据区的起始扇区,从中读取1个扇区的数据,在此称S303中读取到的数据为第一数据。
[0034] 在S202中,判断所述第一数据是否满足预设的字节条件。
[0035] 由背景技术中的阐述并结合图1可知,用户数据区的起始扇区内存储的是DBR,对于DBR来说,其固定格式如下:DBR中的第1字节为0xEB、第3字节为0x90、第511字节为0x55且第512字节为0xAA。若在磁盘格式化过程中,用户数据区没有被写入主引导记录,用户数据区的DBR不会发生偏移,而是仍然会位于用户数据区的起始扇区内,即,用户数据区的起始扇区内存储的第一数据会满足上述固定格式。基于上述原理,本发明实施例通过判断第一数据是否满足预设的字节条件:DBR中的第1字节为0xEB、第3字节为0x90、第511字节为0x55且第512字节为0xAA,来确定磁盘格式化过程中格式化工具是否在用户数据区内写入了主引导记录。
[0036] 在S203中,若所述第一数据不满足所述预设的字节条件,则对所述磁盘0扇区内的用户数据区表项进行更新。
[0037] 若S202的判断结果为,第一数据满足所述预设的字节条件,那么代表格式化工具在磁盘格式化过程中没有在用户数据区写入主引导记录,通常情况下,此时磁盘可以通过OTG映射被移动设备正常挂载;若S202的判断结果为,第一数据不满足所述预设的字节条件,那么代表格式化工具在磁盘格式化过程中在用户数据区写入了主引导记录,此时,磁盘无法通过OTG映射被移动设备正常挂载,需要进行修复操作,即对磁盘0扇区内的用户数据区表项进行更新,以使用于表示用户数据区相关信息的数据能够与格式化后用户数据区的实际情况相符,从而完成对磁盘挂载的修复,以使磁盘能够被移动设备正常读写。
[0038] 在此,为了进一步地确认格式化后的用户数据区,作为本发明的一个实施例,如图4所示,S203的具体实现方式如下:
[0039] S401,若所述第一数据不满足所述预设的字节条件,获取所述起始扇区的第一个分区表内记录的分区起始扇区的地址。
[0040] S402,跳转至所述分区起始扇区,读取所述分区起始扇区内的第三数据。
[0041] S403,判断所述第三数据是否满足所述预设的字节条件。
[0042] S404,若所述第三数据满足所述预设的字节条件,则对所述磁盘0扇区的用户数据区表项进行更新。
[0043] 若格式化过程中在用户数据区写入了主引导记录,那么第一数据应当是MBR信息,相应地,第一数据中会记录格式化后的用户数据区的实际情况,包括文件系统类型、起始扇区位置、分区总扇区数等,上述信息会记录在格式化之前用户数据区起始扇区的第一个分区表中,因此,在本发明实施例中,读取该第一个分区表中记录的分区起始扇区的地址,该地址实际上是格式化后用户数据区的实际起始扇区的地址。读取该分区起始扇区中的数据,在此,称之为第三数据,并将第三数据与预设的字节条件进行判断,若第三数据满足预设的字节条件,表明第三数据是DBR,那么便可以进一步确定,该分区起始扇区即为格式化后地址发生了偏移的用户数据区的起始扇区。
[0044] 在本实施例中,对磁盘0扇区的用户数据区表项进行更新包括:
[0045] 将所述磁盘0扇区的用户数据区表项中的文件系统类型更新为所述起始扇区的第一个分区表内记录的文件系统类型;
[0046] 将所述磁盘0扇区的用户数据区表项中的分区起始扇区位置更新为所述用户数据区的起始位置与所述分区起始位置之和;以及
[0047] 将所述磁盘0扇区的用户数据表项中的分区总扇区数更新为所述起始扇区的第一个分区表内记录的分区总扇区数。
[0048] 更新后的磁盘主引导记录记录了格式化后磁盘内用户数据区的真实情况,因此通过上述修复方案,移动终端在进行OTG映射时,可以正确地确定出用户数据区在磁盘中的起始位置,从而顺利完成磁盘读写。
[0049] 本发明实施例可以通过标准的linux块设备读写接口和扇区读写命令,判断用户数据区在格式化过程中是否被写入了新的主引导记录,如果是,则修复并更新磁盘0扇区主引导记录中的用户数据区表项,在不破坏用户数据区、不修改硬件接口的情况下使得格式化后的用户数据区能够被设备成功识别并挂载,从而解决通过OTG格式化后的用户数据区可能生成新的主引导记录,导致设备无法正常识别并挂载该用户数据区的问题。
[0050] 应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0051] 对应于上文实施例所述的修复磁盘挂载的方法,图5示出了本发明实施例提供的修复磁盘挂载的装置的结构框图,为了便于说明,仅示出了与本实施例相关的部分。
[0052] 参照图5,该装置包括:
[0053] 读取单元51,从磁盘用户数据区读取其起始扇区内的第一数据;
[0054] 判断单元52,判断所述第一数据是否满足预设的字节条件;
[0055] 修复单元53,若所述第一数据不满足所述预设的字节条件,则对所述磁盘0扇区的用户数据区表项进行更新。
[0056] 可选地,所述修复单元53包括:
[0057] 第一获取子单元,若所述第一数据不满足所述预设的字节条件,获取所述起始扇区的第一个分区表内记录的分区起始位置;
[0058] 第一读取子单元,跳转至所述分区起始位置,读取第一个扇区内的第三数据;
[0059] 判断子单元,判断所述第三数据是否满足所述预设的字节条件;
[0060] 修复子单元,若所述第三数据满足所述预设的字节条件,则对所述磁盘0扇区的用户数据区表项进行更新
[0061] 可选地,所述预设的字节条件包括:
[0062] 数据中的第1字节为0xEB,第3字节为0x90,第511字节是0x55且第512个字节是0xAA。
[0063] 可选地,所述读取单元51包括:
[0064] 第二读取子单元,读取所述磁盘的0扇区内的第二数据;
[0065] 第二获取子单元,从所述第二数据中获取所述用户数据区的起始位置;
[0066] 第三读取子单元,跳转至所述用户数据区的起始位置,读取第一个扇区内的所述第一数据。
[0067] 可选地,所述修复单元具体用于:
[0068] 将所述磁盘0扇区的用户数据区表项中的文件系统类型更新为所述起始扇区的第一个分区表内记录的文件系统类型;
[0069] 将所述磁盘0扇区的用户数据区表项中的分区起始扇区位置更新为所述用户数据区的起始位置与所述分区起始位置之和。
[0070] 将所述磁盘0扇区的用户数据表项中的分区总扇区数更新为所述起始扇区的第一个分区表内记录的分区总扇区数。
[0071] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0072] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0073] 在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0074] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0075] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0076] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0077] 以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。