掌桥专利:专业的专利平台
掌桥专利
首页

防止硬盘写入数据时掉电导致数据损坏的方法

文献发布时间:2024-04-18 19:52:40



技术领域

本发明涉及电数字处理领域,具体涉及一种防止硬盘写入数据时掉电导致数据损坏的方法。

背景技术

电脑硬盘是计算机最主要的数据存储设备,主要功能是存储操作系统、应用程序以及用户数据等。在Linux操作系统运行过程中,应用程序产生的临时文件,复制拷贝的程序数据,或者系统日志等数据需要存储到硬盘上。通常情况下,Linux操作系统需要写入数据到硬盘时,先将硬盘上的数据映射到内存的缓存页中,当Linux操作系统修改这些数据时,先在缓存页中修改,同时这些缓存页添加脏页标志,Linux操作系统会将有脏页标志的缓存页数据写入到硬盘上,写入完毕后,缓存页去掉脏页标志,在此过程中,如果主机掉电,数据写入硬盘不完整,这将导致硬盘上出现损坏的数据。为了避免硬盘上出现损坏的数据,Linux操作系统自带文件系统修复机制,对这种由于掉电导致的数据损坏进行处理,方法是:在Linux操作系统的下次开机过程中,将运行硬盘自检程序,对硬盘整个分区数据进行检测,并修复以下五种类型的数据损坏:

1、未被引用的inode;2、超大链接数;3、没有记录在硬盘块映射表中的未用数据块;4、列出的空闲数据块还在某个文中使用;5、超级块中不正确的汇总信息。最后对这些不完整的数据进行修复,以保证硬盘上不存在缺失的损坏数据。流程图如下图1所示。

Linux操作系统自带的文件系统修复机制只有在重新启动机器,在重启过程中才会触发硬盘自检程序,如果硬盘重新插入系统或者硬盘重新上电,但是操作系统没有重启,此时不会触发硬盘自检程序,无法对硬盘中损坏的数据进行处理。

Linux操作系统自带的文件系统修复机制无法快速定位存在损坏数据的位置,需要对整个操作系统分区进行全盘扫描检查,对于大容量分区,硬盘自检需要持续很长时间,会长时间卡在Linux系统启动阶段,影响Linux系统的开机速度。

发明内容

本发明的主要目的是在Linux操作系统中,当硬盘因掉电出现数据写入不完整时,在硬盘重新上电后,能够解决硬盘上出现受损数据的情况,同时解决因硬盘容量过大导致自检时间过长问题,避免因操作系统没有重启而无法触发硬盘自检的问题。

为了完成上述目的,本发明提供了一种防止硬盘写入数据时掉电导致数据损坏的方法,该方法应用于Linux操作系统,包括以下步骤:

S1:Linux操作系统出现缓存脏页,发出写入数据到硬盘的请求;

S2:Linux操作系统在硬盘空白区域上创建临时文件区域,并初始化临时文件区域;

S3:Linux操作系统将缓存脏页中的目标数据写入临时文件区域内,并修改临时文件区域的状态;

S4:Linux操作系统将临时文件区域内的目标数据写入硬盘文件系统内,并修改临时文件区域的状态;

S5:写入结束。

优选的,在步骤S2中,初始化临时文件区域过程如下:

格式化临时文件区域,将临时文件区域内的数据清空;

设置写入/擦除标志位,并将写入/擦除标志位标志为写入数据标志;

设置区块写入完成标志位,并将区块写入完成标志位标志为否;

设置目标数据写入硬盘完成标志位,并将目标数据写入硬盘完成标志位标志为否;

临时文件区域通过硬盘文件系统获取空白区域的位置信息,并将位置信息记录并写入到临时文件区域的目标数据位置信息。

进一步优选的,在步骤S3中,当目标数据写入临时文件区域后,执行以下操作:

修改区块写入完成标志位标志为是;

修改目标数据写入硬盘完成标志位标志为是。

更进一步优选的,当硬盘掉电重启后,Linux操作系统执行以下操作:

Linux操作系统首先检测是否存在临时文件区域,若不存在,则结束操作,若存在,则硬盘自检程序继续检测临时文件区域的区块写入完成标志位的标志;

如果区块写入完成标志位的标志为否,则删除硬盘临时文件区域,并结束操作;

如果区块写入完成标志位的标志为是,则继续检测目标数据写入硬盘完成标志位;

如果检测到目标数据写入硬盘完成标志位为是,则删除硬盘临时文件区域,并结束操作,

如果检测到目标数据写入硬盘完成标志位为否,则继续执行从临时文件区域写入数据到硬盘的操作。

本发明的有益效果为:

本发明通过在硬盘上划分出临时文件区域,同时也设定了标志位,在写入数据时,缓存脏页数据不会直接写入到硬盘文件系统,只要临时文件区域的标志位正常,就表明临时文件区域数据未曾损坏。本发明将写入硬盘的操作分成两个阶段:第一个阶段是把缓存脏页的数据先存放到临时文件区域,第二个阶段是从临时文件区域再写入到硬盘区块中。如果硬盘在第一阶段掉电,硬盘上电后直接舍弃临时文件区域的数据;如果硬盘在第二阶段掉电,硬盘上电后检测到临时文件区域的标志位正常时就能够继续完成第二阶段的写入操作。因此硬盘掉电不会导致硬盘文件系统数据出现损坏现象。

本发明的硬盘掉电后再次上电,不需要操作系统重启,不需要对硬盘做自检操作,Linux操作系统只需要检测硬盘临时文件区域的标志位,然后选择是继续写入数据到硬盘文件系统或者舍弃硬盘临时文件区域的数据,能够方便快速恢复硬盘正常状态,解决磁盘上出现受损数据的情况,解决因磁盘容量过大导致自检时间过长问题,避免因操作系统没有重启而无法触发磁盘自检的问题。

附图说明

下面结合附图和具体实施方式对本发明作进一步详细的说明。

图1是现有技术中的缓存脏页中数据写入硬盘的流程图;

图2是本发明的缓存脏页中的数据写入硬盘的流程图。

具体实施方式

下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。

如图2所示,本实施例提供了一种防止硬盘写入数据时掉电导致数据损坏的方法,该方法应用于Linux操作系统,包括以下步骤:

S1:Linux操作系统出现缓存脏页,发出写入数据到硬盘的请求。

S2:Linux操作系统在硬盘空白区域上创建临时文件区域,并初始化临时文件区域。临时文件区域即是在硬盘上划分的一段存储空间,以便存储以下五部分内容:写入/擦除标志位、目标数据区块、区块写入完成标志位、目标数据位置信息、目标数据写入硬盘完成标志位。写入/擦除标志位用来标志操作是写入数据还是擦除数据,因为对硬盘数据修改分为硬盘写入数据和硬盘擦除数据两种操作,本实施例只针对硬盘写入数据的操作,硬盘擦除数据作为硬盘的另一种数据变更操作,在本实施例中不涉及硬盘擦除数据,所以本实施例中的写入/擦除标志位为写入标志。目标数据区块用来存放缓存脏页的数据,区块写入完成标志位用来标志缓存脏页数据写入硬盘临时文件区域的目标数据区块的状态。目标数据位置信息是从硬盘的文件系统上获取和目标数据区块相同容量的空白硬盘区域的位置信息,并将该信息写入到临时文件区域的目标数据位置信息中。目标数据写入硬盘完成标志位是用来标记将目标数据区块内容写入硬盘文件系统完成的标志。

因此,根据上文所述,在本步骤中,初始化临时文件区域过程如下:

格式化临时文件区域,将临时文件区域内的数据清空;需要说明的是,硬盘空白区域并非这块区域的二进制数据都是0或者1,而仅仅是操作系统标记这块硬盘区域是空白的,没有被占用,是可以写入数据的,但是这块存储区域仍然存在数据信息。因此,当在这块存储区域创建临时文件区域,为防止数据干扰,所以这块区域再次使用的时候需要全部清空,即从二进制角度来看,这块区域的磁盘数据全部重置为“0” 。

设置写入/擦除标志位,并将写入/擦除标志位标志为写入数据标志;

设置区块写入完成标志位,并将区块写入完成标志位标志为否;

设置目标数据写入硬盘完成标志位,并将目标数据写入硬盘完成标志位标志为否;

临时文件区域通过硬盘文件系统获取空白区域的位置信息,并将位置信息记录并写入到临时文件区域的目标数据位置信息。

S3:Linux操作系统将缓存脏页中的目标数据写入临时文件区域内,并修改临时文件区域的状态。

具体的在本步骤中,当目标数据从缓存脏页写入临时文件区域后,执行以下操作:

修改区块写入完成标志位标志为是。

S4:Linux操作系统将临时文件区域内的目标数据写入硬盘文件系统内,并修改临时文件区域的状态。

具体的在本步骤中,当目标数据从临时文件区域写入硬盘后,执行以下操作:修改目标数据写入硬盘完成标志位标志为是。

将数据从临时文件区域写入到磁盘文件系统时,首先检查磁盘临时区域中写入/擦除标志位,确认是写入操作,然后检查区块写入完成标志位,确认临时区域文件完整性,最后读取目标数据位置信息,把磁盘临时文件区域的目标数据区块的数据复制到磁盘文件系统的空白存储空间,复制完成后,设置目标数据写入磁盘完成标志位为是,从磁盘临时文件区域写入磁盘文件系统操作结束。

S5:写入结束。

通过上述操作,当硬盘掉电重启后,Linux操作系统执行以下操作:

首先检测是否存在临时文件区域,若不存在,则表明硬盘掉电前没有在写入数据,也不存在损坏的数据,若存在,则继续检测临时文件区域的区块写入完成标志位,而由于区块写入完成标志位是用来标志缓存脏页数据写入硬盘临时文件区域的目标数据区块的状态,预设默认值为否,写入完成后区块写入完成标志位则标记为是,因此,如果检测到区块写入完成标志位为否,则表明硬盘掉电前临时文件区域的目标数据区块未写入完整,则删除硬盘临时文件区域,并结束操作。如果检测到区块写入完成标志位为是,则表明硬盘掉电前临时文件区域的目标数据区块已经写入完成,则继续检测目标数据写入硬盘完成标志位,目标数据写入硬盘完成标志位是用来标记将目标数据区块内容写入硬盘文件系统完成的标志,预设默认值为否,写入完成则标记为是。若检测到目标数据写入硬盘完成标志位为是,则表明临时文件区域数据已经写入到硬盘文件系统,则删除硬盘临时文件区域,并结束操作,若检测到目标数据写入硬盘完成标志位为否,则表明临时文件区域的数据尚未完全写入到硬盘文件系统,则继续执行从临时文件区域的目标数据区块写入数据到硬盘文件系统的操作。

显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

相关技术
  • 基于用户行为特征的身份识别方法、装置及设备
  • 一种电力用户用电量异常识别方法、装置及终端设备
  • 异常用户的识别方法及装置、存储介质、电子设备
  • 多设备的角度定位和用户识别方法
  • 用户设备UE的定位方法、定位装置及用户设备
技术分类

06120116334277