一种硬盘读取方法及装置制造方法及图纸

技术编号:11359804 阅读:81 留言:0更新日期:2015-04-29 10:42
本发明专利技术提供了一种硬盘读取方法及装置,属于电子信息技术领域。在本发明专利技术中,首先判断硬盘中的待读取内容是否读取至操作系统缓冲区中的目标缓存页,若是,则设置页状态参数为第一布尔值,再判断目标缓存页的内容是否与硬盘中待读取内容一致,若目标缓存页的内容与硬盘中待读取内容不一致,则将目标缓存页的最新标示位设置为第二布尔值,最后当页状态参数为第一布尔值且最新标示位设置为第二布尔值时,返回读取硬盘失败信息。本发明专利技术通过所述硬盘读取方法及装置,缩短了硬盘坏块故障处理流程,提高了存在坏块的硬盘的可用性。

【技术实现步骤摘要】
一种硬盘读取方法及装置
本专利技术涉及电子信息
,特别涉及一种硬盘读取方法及装置。
技术介绍
应用程序通过操作系统(如Linux和Windows等)提供的通用读操作系统调用,读取硬盘数据。通用SCSI(SmallComputerSystemInterface,小型计算机系统接口)驱动层经由更底层的设备驱动和硬盘打交道,从硬盘获取数据。在系统调用层和通用SCSI驱动层之间以及通用SCSI驱动层和硬盘之间还有其他操作系统中间层,与系统调用层和通用SCSI驱动层一起构成操作系统完整的硬盘IO(Input/Output,输入/输出)处理逻辑。这些中间层与本专利技术专利无关,可简单视为在系统调用层和通用SCSI驱动层之间传递IO请求和数据,在此不作累述。当读操作遇到硬盘坏块,通用SCSI驱动层得到读操作失败的结果后,会对硬盘执行重置操作,然后再重新执行读操作。在Linux操作系统中,对硬盘的重置操作重复尝试次数由内核常量SD_MAX_RETRIES定义,缺省值为5。通用SCSI驱动层反复重试SD_MAX_RETRIES次后,失败的结果最终传递到系统调用层。系统调用层得到失败的结果后,会认为“可能是暂时的故障”,并重新尝试再执行一次读操作。通用SCSI驱动层收到重试的第二次读操作命令后,再次读硬盘,得到失败的结果后,又重复尝试SD_MAX_RETRIES次。这样“读”系统调用执行过程,遇到硬盘坏块,总共会导致12次的SCSI驱动读硬盘操作失败,以及12次的重置硬盘操作。硬盘坏块读操作需耗时1秒多才返回失败结果,重置硬盘耗时不少于1.5秒。12次的重试操作总共耗时超过40秒。在视频监控领域,应用程序需要及时把每时每刻都在不断产生的监控视频数据保存到存储设备(如硬盘)。读操作阻塞40多秒,会导致在这段时间内产生的监控视频数据无法及时写入硬盘,积压在用户空间的缓存中,并最终被更新的监控视频数据覆盖,造成严重的监控录像丢失事故。
技术实现思路
本专利技术提供了一种硬盘读取方法及装置,旨在解决读硬盘操作遇到硬盘坏块时硬盘长时间不可访问的问题。一方面,本专利技术提供了一种硬盘读取方法,所述方法包括:判断硬盘中的待读取内容是否读取至操作系统缓冲区中的目标缓存页;若所述硬盘中的待读取内容读取至所述操作系统缓冲区中的目标缓存页,则设置页状态参数为第一布尔值;判断所述目标缓存页的内容是否与所述硬盘中待读取内容一致;若所述目标缓存页的内容与所述硬盘中待读取内容不一致,则将所述目标缓存页的最新标示位设置为第二布尔值;当页状态参数为第一布尔值且所述最新标示位设置为第二布尔值时,返回读取硬盘失败信息。第二方面,本专利技术提供了一种硬盘读取装置,所述装置包括:第一判断模块,用于判断硬盘中的待读取内容是否读取至操作系统缓冲区中的目标缓存页;第一设置模块,用于若所述硬盘中的待读取内容读取至所述操作系统缓冲区中的目标缓存页,则设置页状态参数为第一布尔值;第二判断模块,用于判断所述目标缓存页的内容是否与所述硬盘中待读取内容一致;第二设置模块,用于若所述目标缓存页的内容与所述硬盘中待读取内容不一致,则将所述目标缓存页的最新标示位设置为第二布尔值;返回模块,用于当页状态参数为第一布尔值且所述最新标示位设置为第二布尔值时,返回读取硬盘失败信息。在本专利技术中,由于首先判断硬盘中的待读取内容是否读取至操作系统缓冲区中的目标缓存页,若是,则设置页状态参数为第一布尔值,再判断目标缓存页的内容是否与硬盘中待读取内容一致,若目标缓存页的内容与硬盘中待读取内容不一致,则将目标缓存页的最新标示位设置为第二布尔值,最后当页状态参数为第一布尔值且最新标示位设置为第二布尔值时,返回读取硬盘失败信息,因此,缩短了硬盘坏块故障处理流程,提高了存在坏块的硬盘的可用性。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例一提供的硬盘读取方法一种流程图;图2为本专利技术实施例一提供的硬盘读取方法另一种流程图;图3为本专利技术实施例二提供的硬盘读取装置一种结构示意图;图4为本专利技术实施例二提供的硬盘读取装置另一种结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。实施例一:本专利技术实施例一提供了一种硬盘读取方法,参见图1,硬盘读取方法包括以下步骤:101.判断硬盘中的待读取内容是否读取至操作系统缓冲区中的目标缓存页。判断硬盘中的待读取内容是否读取至操作系统缓冲区中的目标缓存页具体为:判断目标缓存页的预读标识位是否被置位。102.若硬盘中的待读取内容读取至操作系统缓冲区中的目标缓存页,则设置页状态参数为第一布尔值。103.判断目标缓存页的内容是否与硬盘中待读取内容一致。判断目标缓存页的内容是否与硬盘中待读取内容一致具体为:判断目标缓存页的最新标示位是否被置位。104.若目标缓存页的内容与硬盘中待读取内容不一致,则将目标缓存页的最新标示位设置为第二布尔值。105.当页状态参数为第一布尔值且最新标示位设置为第二布尔值时,返回读取硬盘失败信息。可选的,如图2所示,在步骤105之前还包括步骤104-2和步骤104-3。104-2.对目标缓存页进行加锁。104-3.判断目标缓存页的地址与硬盘中的待读取内容的地址是否存在映射关系。步骤104-2和步骤104-3用于防止和确认该目标缓存页是否被其它视频监控线程更新,如没有被其他视频监控线程更新,则返回读取硬盘失败信息。可选的,如图2所示,在步骤105之后还包括步骤105-2。105-2.对目标缓存页进行解锁。可选的,如图2所示,在步骤101之前还包括步骤100-1和步骤100-2。100-1.将通用SCSI驱动层的重读硬盘参数设置为0。本步骤用于设置通用SCSI驱动层读取硬盘失败时不再重读硬盘。100-2.设置页状态参数为第三布尔值,第三布尔值与第一布尔值不相同。本步骤用于初始化页状态参数。例如,当系统为Linux操作系统时,修改内核常量SD_MAX_RETRIES值为0,添加设置页状态参数PAGE_CACHED,初始化为FALSE,判断硬盘中的待读取内容是否读取至操作系统缓冲区中的目标缓存页,即判断目标缓存页的预读标识位(PageReadahead)是否被置位,若被置位,则页状态参数PAGE_CACHED被置为TRUE,判断目标缓存页的内容是否与硬盘中待读取内容是否一致,若目标缓存页的内容与硬盘中待读取内容不一致,则将目标缓存页的最新标示位(PageUptodate)设置为true,对目标缓存页进行加锁,待加锁成功后,判断目标缓存页的地址与硬盘中的待读取内容的地址是否存在映射关系,若存在映射关系,若此时当页状态参数PAGE_CACHED为true且最新标示位PageUptodate设置为true,则返回读取硬盘失败信息给用户,最后,对目标缓存页进行解锁。本实施例通过首先判断硬盘中的待读取内容是否读取至操作系统缓冲区中的目标缓存页,若是,则设置页状态参数为第一布尔值,再判断目标缓存页的内容是否与硬盘中待读本文档来自技高网
...
一种硬盘读取方法及装置

【技术保护点】
一种硬盘读取方法,其特征在于,所述方法包括:判断硬盘中的待读取内容是否读取至操作系统缓冲区中的目标缓存页;若所述硬盘中的待读取内容读取至所述操作系统缓冲区中的目标缓存页,则设置页状态参数为第一布尔值;判断所述目标缓存页的内容是否与所述硬盘中待读取内容一致;若所述目标缓存页的内容与所述硬盘中待读取内容不一致,则将所述目标缓存页的最新标示位设置为第二布尔值;当页状态参数为第一布尔值且所述最新标示位设置为第二布尔值时,返回读取硬盘失败信息。

【技术特征摘要】
1.一种硬盘读取方法,其特征在于,所述方法包括:判断硬盘中的待读取内容是否读取至操作系统缓冲区中的目标缓存页;若所述硬盘中的待读取内容读取至所述操作系统缓冲区中的目标缓存页,则设置页状态参数为第一布尔值;判断所述目标缓存页的内容是否与所述硬盘中待读取内容一致;若所述目标缓存页的内容与所述硬盘中待读取内容不一致,则将所述目标缓存页的最新标示位设置为第二布尔值;当页状态参数为第一布尔值且所述最新标示位设置为第二布尔值时,返回读取硬盘失败信息;所述判断所述目标缓存页的内容是否与所述硬盘中待读取内容一致具体为:判断所述目标缓存页的最新标示位是否被置位;所述当页状态参数为第一布尔值且所述最新标示位设置为第二布尔值时,返回读取硬盘失败信息的步骤之前还包括:对所述目标缓存页进行加锁;判断所述目标缓存页的地址与硬盘中的待读取内容的地址是否存在映射关系。2.根据权利要求1所述的方法,其特征在于,所述当页状态参数为第一布尔值且所述最新标示位设置为第二布尔值时,返回读取硬盘失败信息的步骤之后还包括:对所述目标缓存页进行解锁。3.根据权利要求1所述的方法,其特征在于,所述判断硬盘中的待读取内容是否读取至操作系统缓冲区中的目标缓存页的步骤之前还包括:将通用SCSI驱动层的重读硬盘参数设置为0。4.根据权利要求1所述的方法,其特征在于,所述判断硬盘中的待读取内容是否读取至操作系...

【专利技术属性】
技术研发人员:黄凯明刘文涛
申请(专利权)人:深圳市锐明视讯技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1