一种硬盘坏块信息的获取方法及装置的制造方法

文档序号:8339337阅读:162来源:国知局
一种硬盘坏块信息的获取方法及装置的制造方法
【技术领域】
[0001]本发明属于计算机技术领域,尤其涉及一种硬盘坏块信息的获取方法及装置。
【背景技术】
[0002]应用程序通过调用文件系统的接口来实现文件读写操作,而文件系统对物理硬盘的读写操作则是通过调用操作系统系统调用层的对应接口来实现。由于操作系统缓存机制的存在,文件系统只要把数据成功写入操作系统的缓存,就能得到“写操作成功”的结果,当积累的写缓存数据量达到设定阈值,或者写缓存数据在缓存中停留时间达到设定阈值,操作系统会将写缓存数据同步进硬盘。
[0003]通常,称无法通过写操作修复的硬盘坏块为不可修复坏快,在写操作过程中,若遇到不可修复坏块,ATA (Advanced Technology Attachment)驱动会得到“写操作失败”的结果,然而,由于文件系统的写操作早已结束,并已得到了“写操作成功”的结果,操作系统无法向文件系统反馈写硬盘失败的结果,因此,文件系统无法知悉硬盘的不可修复坏块信息。

【发明内容】

[0004]本发明实施例的目的在于提供一种硬盘坏块信息的获取方法及装置,旨在解决现有技术中文件系统无法获知硬盘的不可修复坏块信息的问题。
[0005]本发明实施例是这样实现的,一种硬盘坏块信息的获取方法,包括:
[0006]在操作系统的用户空间运行一个独立的文件系统守护线程;
[0007]在所述用户空间与所述操作系统的内核空间之间建立通讯通道;
[0008]当获知块设备1请求失败后,判断所述块设备1请求是否为写请求;
[0009]若所述块设备1请求为写请求,则由所述内核空间将所述块设备1请求对应的块设备的坏块位置通过所述通讯通道发送至所述守护线程。
[0010]本发明实施例的另一目的在于提供一种硬盘坏块信息的获取装置,包括:
[0011]运行单元,用于在操作系统的用户空间运行一个独立的文件系统守护线程;
[0012]建立单元,用于在所述用户空间与所述操作系统的内核空间之间建立通讯通道;
[0013]判断单元,用于当获知块设备1请求失败后,判断所述块设备1请求是否为写请求;
[0014]发送单元,用于若所述块设备1请求为写请求,则由所述内核空间将所述块设备1请求对应的块设备的坏块位置通过所述通讯通道发送至所述守护线程。
[0015]在本发明实施例中,写硬盘操作失败的结果会从操作系统的内核传递至文件系统,以使文件系统获知到写硬盘操作失败的结果,同时获知到硬盘中不可修复坏块的位置,以便于采取进一步的处理措施,避免把数据存储到已发生过写错误的坏块中。
【附图说明】
[0016]图1是本发明实施例提供的硬盘坏块信息的获取方法的实现流程图;
[0017]图2是本发明另一实施例提供的硬盘坏块信息的获取方法的实现流程图;
[0018]图3是本发明另一实施例提供的硬盘坏块信息的获取方法的实现流程图;
[0019]图4是本发明另一实施例提供的硬盘坏块信息的获取方法的实现流程图;
[0020]图5是本发明实施例提供的硬盘坏块信息的获取装置的结构框图。
【具体实施方式】
[0021]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0022]图1示出了本发明实施例提供的硬盘坏块信息的获取方法的实现流程,详述如下:
[0023]在SlOl中,在操作系统的用户空间运行一个独立的文件系统守护线程。
[0024]在S102中,在所述用户空间与所述操作系统的内核空间之间建立通讯通道。
[0025]在Linux系统中,一部分核心软件独立于普通应用程序,运行在较高的特权级别上,它们驻留在被保护的内存空间上,拥有访问硬件设备的所有权限,在Linux系统中将此部分内存空间称为内核空间;相对地,运行应用程序的内存空间被称为用户空间,运行在用户空间的应用程序只能看到允许它们使用的部分系统资源,并且不能使用某些特定的系统功能,也不能直接访问内核空间和硬件设备。
[0026]在本实施例中,在操作系统的用户空间中运行一个独立的文件系统守护线程(Daemon),并在操作系统的用户空间与内核空间之间建立起通讯通道,以用于本实施例中用户空间与内核空间之间的通信。
[0027]在S103中,当获知块设备1请求失败后,判断所述块设备1请求是否为写请求。
[0028]具体地,可以通过在内核空间定义变量来获知块设备1请求是否失败。如图2所示,在S102之前,所述方法还包括:
[0029]S201,在所述内核空间添加初始化为第一取值的变量。
[0030]S202,当所述块设备1请求失败后,置所述变量为第二取值。
[0031]例如,在Linux系统的内核空间添加变量ATA_CMD_WRITE_FAIL,并将该变量初始化为FALSE。当ATA驱动得到写硬盘操作失败的结果,则将该变量置为TRUE。
[0032]则如图2所示,S103具体通过图2中的S203实现:
[0033]S203,当读取到所述变量为第二取值时,确定所述块设备1请求失败,并判断所述块设备1请求是否为写请求。
[0034]在S104中,若所述块设备1请求为写请求,则由所述内核空间将所述块设备1请求对应的块设备的坏块位置通过所述通讯通道发送至所述守护线程。
[0035]针对图2所示实施例,S卩,当变量ATA_CMD_WRITE_FAIL = = TRUE时,由内核空间将块设备的坏块位置通过建立好的通讯通道发送给守护线程,以使文件系统能够得知硬盘中不可修复坏块的坏块位置。
[0036]通过上述方案,写硬盘操作失败的结果会从操作系统的内核传递至文件系统,以使文件系统获知到写硬盘操作失败的结果,同时获知到硬盘中不可修复坏块的位置,以便于采取进一步的处理措施,避免把数据存储到已发生过写错误的坏块中。
[0037]如图3所示,在S104之后,所述方法还包括:
[0038]S105,触发文件系统索引修复操作,对所述块设备的坏块位置进行修复。
[0039]通常,一个硬盘的物理块用于存放文件系统索引,其存储的索引涉及的文件可能有数百个,一个块的损坏会造成数百个文件丢失,尤其在视频监控领域,录像文件的丢失会造成严重的后果,因此,在本实施例中,一旦获知了坏块位置,就立即触发执行文件系统索引修复操作,并采取措施,避免把修复结果再次写入硬盘坏块。
[0040]作为本发明的一个实施例,在执行S103之前,如图4所示,所述方法还包括:
[0041 ] S106,在
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1