CN1331147C - 一种磁盘存储方法 - Google Patents

一种磁盘存储方法 Download PDF

Info

Publication number
CN1331147C
CN1331147C CNB031567932A CN03156793A CN1331147C CN 1331147 C CN1331147 C CN 1331147C CN B031567932 A CNB031567932 A CN B031567932A CN 03156793 A CN03156793 A CN 03156793A CN 1331147 C CN1331147 C CN 1331147C
Authority
CN
China
Prior art keywords
data
sector
storage
current
beginning flag
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB031567932A
Other languages
English (en)
Other versions
CN1595523A (zh
Inventor
赵明
陈卫华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CNB031567932A priority Critical patent/CN1331147C/zh
Publication of CN1595523A publication Critical patent/CN1595523A/zh
Application granted granted Critical
Publication of CN1331147C publication Critical patent/CN1331147C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

本发明公开了一种磁盘存储方法,该方法包含:将存储区域划分为一个以上的块;当前数据存储起始位置相对原数据存储位置偏移一个或一个以上的块作为当前偏移位置;以所述当前偏移位置开始进行数据存储。根据本发明提出的方法,将存储有起始标志的扇区作为在磁盘中存储数据时的起始位置,通过不断改变磁盘的数据存储起始位置,保证对磁盘的存储操作不会总在同一扇区,实现对磁盘的均衡存储访问,从而有效延长磁盘的使用寿命。另外,读取数据时,通过搜索起始标志扇区,找到存储数据的起始位置,然后对数据进行读取,从而保证数据读取的正确性。

Description

一种磁盘存储方法
技术领域
本发明涉及计算机应用领域,特别是指一种磁盘存储方法。
背景技术
目前,硬盘是计算机的主要存储介质之一。在通常的使用情况下,硬盘的使用寿命一般都在三年以上。如果将硬盘用于频繁存储设备时,例如一个嵌入式Linux系统采用硬盘作为存储介质,为实现系统易用性,需要设计系统可随时关机。为保证系统的可靠性,即在任何时候系统都不会遭到破坏,使整个Linux系统以只读方式启动,但一些关于应用的配置需要保存,因此通过直接存储访问硬盘扇区并进行双备份的方式存储这些数据。如果直接对硬盘扇区进行数据存储,则会导致每次存储于硬盘的同一区域,就会在短时间内对硬盘的同一扇区反复进行写操作,这样,大大增加硬盘磁道物理损坏的几率,大大缩短了硬盘的使用寿命。另外,对于软盘同样存在频繁写入同一扇区的问题。因此,如何防止对磁盘同一位置的反复写入,将成为有效延长磁盘使用寿命的首要问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种磁盘存储方法,实现对磁盘的均衡存储访问,从而有效延长磁盘的使用寿命。
为了达到上述目的,本发明提供了一种磁盘存储方法,该方法包含以下步骤:
A、将存储区域划分为一个以上的块;
B、根据用于标识数据存储起始位置的起始标志扇区确定原数据存储位置,在顺序存储数据时,将当前数据存储起始位置相对原数据存储位置偏移一个块作为当前偏移位置,或在随机存储数据时,根据系统产生的随机数偏移一个以上的块作为当前偏移位置;
C、以所述当前偏移位置开始进行数据存储。
所述步骤B进一步包括以下步骤:B11、搜索用于标识数据存储起始位置的起始标志扇区,以起始标志扇区相对存储区域起始扇区偏移的位置作为原偏移位置;B12、当前数据存储起始位置在所述原偏移位置基础上,在顺序存储时,再偏移一个块作为当前偏移位置,或在随机存储时,根据系统产生的随机数偏移一个以上的块作为当前偏移位置。
所述步骤B12之前进一步包括:删除起始标志扇区中存储的起始标志。
所述步骤B进一步包括步骤B21:搜索用于标识数据存储起始位置的起始标志扇区,根据起始扇区中存储的数据长度找到数据存储结束位置所在的块,以该块相对存储区域起始扇区偏移的位置作为当前偏移位置。
所述步骤B21之后进一步包括:删除起始标志扇区中存储的起始标志。
第一次进行数据存储时,所述起始标志扇区位于存储区域的起始扇区。
第一次进行数据存储时,所述起始标志扇区位于存储区域中第k个块的第一个扇区,k为系统随机生成的随机正整数。
所述步骤C之前进一步包括:判断当前偏移位置是否已超过存储区域的结束扇区位置,如果是,令当前偏移位置为零,然后执行步骤C;否则,直接执行步骤C。
所述步骤C进一步包括以下步骤:C1、存储数据时,判断当前数据存储位置是否已超出存储区域结束扇区位置与当前偏移位置的和,如果是,向系统报错,结束当前数据存储流程,否则,执行步骤C2;C2、判断当前数据存储位置是否已超出存储区域结束扇区位置,如果是,令实际的当前数据存储位置为当前数据存储位置与存储区域的差,然后执行步骤C3,否则,直接执行步骤C3;C3、判断是否完成当前数据存储,如果是,将起始标志存储于偏移位置之后第一个块的第一个扇区,结束当前数据存储流程,否则,返回执行步骤C1。
所述步骤C之后进一步包括步骤D:读取存储的数据。
所述步骤D进一步包括以下步骤:D1、搜索用于标识数据存储起始位置的起始标志扇区,读取起始标志扇区中存储的起始标志和当前读取的数据长度;D2、读取存储的数据时,判断当前数据读取位置是否已超出存储区域结束扇区位置,如果是,令实际的当前数据读取位置为当前数据读取位置与存储区域的差,然后执行步骤D3,否则,直接执行步骤D3;D3、判断是否完成当前数据读取,如果是,结束当前数据读取流程,否则,返回执行步骤D1。
所述起始标志扇区存储有用于标识起始标志的扇区识别字符串和当前存储数据的长度。
所述步骤A包括:将存储区域划分为20至200个块。
根据本发明提出的方法,将存储有起始标志的扇区作为在磁盘中存储数据时的起始位置,通过不断改变磁盘的数据存储起始位置,保证对磁盘的存储操作不会总在同一扇区,实现对磁盘的均衡存储访问,从而有效延长磁盘的使用寿命。另外,读取数据时,通过搜索起始标志扇区,找到存储数据的起始位置,然后对数据进行读取,从而保证数据读取的正确性。
附图说明
图1为本发明中频繁存储区域结构示意图;
图2为本发明中访问过程示意图;
图3为本发明中存储数据流程图;
图4为本发明中读取数据流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
本发明提供了一种对磁盘均衡存储访问的方法,将存储有起始标志的扇区作为在磁盘中存储数据时的起始位置,通过不断改变磁盘的数据存储起始位置,保证对磁盘的存储操作不会总在同一扇区,从而有效延长磁盘的使用寿命。另外,读取数据时,通过搜索起始标志扇区,找到存储数据的起始位置,然后对数据进行读取,从而保证数据读取的正确性。
由于随机在每一个可能的扇区中存储数据,会导致读取时的搜索效率过低,因此本发明中采用将存储数据的区域进行分块的方法,设置一个块的大小,每次的存储跳变都以设置的块为单位,这样,起始标志扇区就会出现在块的整数倍的位置;相应地,读取数据时,就能够很快搜索到起始标志扇区。例如,设置每个块的大小为100个扇区,存储数据时,起始标志扇区的位置就在1、2、3……等块的整数倍位置,即100、200、300……等100个扇区的整数倍位置;相应地,读取数据时,只需在1、2、3……等块的整数倍位置进行搜索就可找到起始标志扇区。
图1为本发明中频繁存储区域结构示意图,如图1所示,DBeginPos是存储区域的起始扇区位置,DEndPos是存储区域的结束扇区位置,DBeginPos至DEndPos之间是存储区域(DSize),将DSize划分为n个块(Block),n为正整数。根据上次存储数据的位置,相对DBeginPos偏移JumpBlock进行数据存储,JumpBlock为m个Block,m为从0到n的正整数。通过不断改变JumpBlock,实现不断改变磁盘的数据存储位置。当前存储数据的第一个Block的起始位置是起始标志扇区,即相对DBeginPos偏移JumpBlock的位置为起始标志扇区。NowPos为当前访问位置,存储数据的大小为DataSize。
在本发明中,每个块的大小的设置是非常重要的,分块的数量表示将一个存储区域划分成几个写交替。例如,如果设置分块大小为DSize,则每次的数据存储位置均为DSize的起始位置,即DBeginPos,此时根本没有达到改变磁盘数据存储起始位置的目的;如果设置分块大小为每个扇区的大小,则读取数据时,由于搜索起始标志扇区需要对每一个扇区进行搜索,会花费大量时间,导致读取效率下降。通常,分块大小由存储数据的频繁度和设置的存储区域的大小决定,可将DSize划分为20至200个块,例如,DSize为8000个扇区,则设置每个块的大小为80个扇区,将该DSize划分为100个块。
存储数据的方式包括顺序存储和随机存储两种方式。顺序存储是指连续两次存储数据的起始位置是连续的,即上一次存储数据从第m个Block开始,则当前存储数据从第m个Block的下一个Block开始。随机存储是指连续两次存储数据的起始位置会随机跳过k个Block,即上一次存储数据从第m个Block开始,则当前存储数据从第m+k个Block开始,k是随机变化的。
如果在DSize的位置中连续存储数据,则NowPos就是实际的访问位置,但由于存储数据的起始位置会不断变化,因此每次存储数据的位置并不是总在DSize的起始位置,这样,会出现数据存储至DSize的DEndPos时,当前的数据存储还未结束,此时需要跳转至DSize的DBeginPos继续存储数据。
图2为本发明中访问过程示意图,如图2所示,NowPos实际为原当前访问位置,即数据进行连续位置存储时的NowPos,如果NowPos已超出DSize的DEndPos,即NowPos大于或等于DSize的DEndPos,则实际的当前访问位置应为NowPos与DSize的差,即将当前访问位置移至DSize的头部,实际的当前访问位置相对DBeginPos的偏移位置等于NowPos相对DEndPos的偏移位置。存储数据时,相当于将应该在DEndPos后面存储的数据移至DBeginPos后进行存储;相应地,读取数据时,如果读取至DEndPos处还未结束当前数据读取,则返回至DBeginPos处继续读取数据。
图3为本发明中存储数据流程图,如图3所示,以顺序存储数据为例,存储数据过程的包括以下步骤:
步骤301:通过搜索起始标志找到起始标志扇区,获取上次存储数据的原JumpBlock。如果通过上次读取数据已得到JumpBlock,则步骤301中不需要再搜索起始标志。第一次存储数据时,可从DSize的起始位置进行数据存储,即将DSize的DBeginPos作为起始标志扇区;也可随机地从DSize中任意选取一个Block开始进行数据存储,即将选取Block的第一个扇区作为起始标志扇区。
步骤302~步骤303:搜索到起始标志后,将该起始标志清除,并且在原JumpBlock的基础上增加一个Block,作为当前JumpBlock。
步骤304:判定当前JumpBlock是否小于DEndPos,如果是,执行步骤306;否则,执行步骤305。步骤304是对相对DBeginPos偏移JumpBlock的存储数据起始位置是否已超出DSize的DEndPos进行判断。
步骤305:令当前JumpBlock为0,即如果相对DBeginPos偏移JumpBlock的位置已超出DSize的DEndPos,则当前存储数据的起始位置为DSize的DBeginPos。
步骤306:进行数据存储。
步骤307:判断原NowPos是否小于DendPos与JumpBlock的和,如果是,执行步骤308;否则,执行步骤312。步骤307是为防止本次数据存储的过程中,当前存储的数据覆盖已经存储了的数据,即本次进行存储的DataSize不能大于Dsize减一的值。
步骤308:判断原NowPos是否小于DEndPos,如果是,执行步骤310;否则,执行步骤309。步骤308是对当前存储数据位置是否已超过DEndPos进行判断。
步骤309:令实际NowPos为原NowPos与Dsize的差。
步骤310:判断是否完成本次数据存储,如果是,执行步骤311;否则,返回执行步骤306。
步骤311:在相对DBeginPos偏移当前JumpBlock位置的第一个扇区写入起始标志,该扇区即为起始标志扇区,起始标志扇区中还存储有扇区识别字符串、存储数据的大小等,结束本次数据存储。
步骤312:向系统报错。
图4为本发明中读取数据流程图,如图4所示,读取数据过程包括以下步骤:
步骤401~步骤404:通过搜索起始标志找到起始标志扇区,获取上次存储数据的JumpBlock;然后读取起始标志扇区中存储的数据,获取上次存储数据的大小,从JumpBlock开始读取数据。可通过多种方式搜索起始标志扇区,例如顺序查找、二分法查找等方式。
步骤405:判断原NowPos是否小于DEndPos,如果是,执行步骤407;否则,执行步骤406。步骤405是对当前读取数据位置是否已超过DEndPos进行判断。
步骤406:令实际NowPos为原NowPos与Dsize的差。
步骤407:判断是否完成本次数据读取,如果是,结束本次数据读取;否则,返回执行步骤405。
以上描述的是当前数据存储的起始位置相对上次数据存储的起始位置进行偏移的方法,实际应用中,还可使当前数据存储的起始位置相对上次数据存储的结束位置进行偏移,搜索起始标志找到起始标志扇区后,读取起始标志扇区中存储的数据长度,然后根据数据长度搜索到上次数据存储的结束位置,以上次数据存储的结束位置所在Block的位置作为原JumpBlock,如果为顺序存储,则在JumpBlock的基础上增加一个Block,如果为随机存储,则在JumpBlock的基础上增加k个Block,k为随机数,然后进行数据存储,后续的数据存储和数据读取过程与上述的数据存储和数据读取过程基本相同,在此不再赘述。
例如一个嵌入式Linux系统采用硬盘作为存储介质,为实现系统易用性,需要设计系统可随时关机。为保证系统的可靠性,即在任何时候系统都不会遭到破坏,使整个Linux系统以只读方式启动,但一些关于应用的配置需要保存,因此通过直接存储访问硬盘扇区并进行双备份的方式存储这些数据。如果直接对硬盘扇区进行数据存储,则会导致每次存储于硬盘的同一区域,大大增加硬盘物理损坏的几率,此时就可采用本发明提出的存储方法,对硬盘采用均衡的访问方式,在硬盘某个存储空间内,将每次需要存储的数据存储于不同的起始位置,从而有效延长磁盘的使用寿命。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (13)

1、一种磁盘存储方法,其特征在于该方法包含以下步骤:
A、将存储区域划分为一个以上的块;
B、根据用于标识数据存储起始位置的起始标志扇区确定原数据存储位置,在顺序存储数据时,将当前数据存储起始位置相对原数据存储位置偏移一个块作为当前偏移位置,或在随机存储数据时,根据系统产生的随机数k偏移k个块作为当前偏移位置;
C、以所述当前偏移位置开始进行数据存储。
2、根据权利要求1所述的方法,其特征在于,所述步骤B进一步包括以下步骤:
B11、搜索用于标识数据存储起始位置的起始标志扇区,以起始标志扇区相对存储区域起始扇区偏移的位置作为原偏移位置;
B12、当前数据存储起始位置在所述原偏移位置基础上,在顺序存储时,再偏移一个块作为当前偏移位置,或在随机存储时,根据系统产生的随机数偏移一个以上的块作为当前偏移位置。
3、根据权利要求2所述的方法,其特征在于,所述步骤B12之前进一步包括:删除起始标志扇区中存储的起始标志。
4、根据权利要求1所述的方法,其特征在于,所述步骤B进一步包括:
B21、搜索用于标识数据存储起始位置的起始标志扇区,根据起始扇区中存储的数据长度找到数据存储结束位置所在的块,以该块相对存储区域起始扇区偏移的位置作为当前偏移位置。
5、根据权利要求4所述的方法,其特征在于,所述步骤B21之后进一步包括:删除起始标志扇区中存储的起始标志。
6、根据权利要求2或4所述的方法,其特征在于,第一次进行数据存储时,所述起始标志扇区位于存储区域的起始扇区。
7、根据权利要求2或4所述的方法,其特征在于,第一次进行数据存储时,所述起始标志扇区位于存储区域中第k个块的第一个扇区,k为系统随机生成的随机正整数。
8、根据权利要求1所述的方法,其特征在于,所述步骤C之前进一步包括:判断当前偏移位置是否已超过存储区域的结束扇区位置,如果是,令当前偏移位置为零,然后执行步骤C;否则,直接执行步骤C。
9、根据权利要求1所述的方法,其特征在于,所述步骤C进一步包括以下步骤:
C1、存储数据时,判断当前数据存储位置是否已超出存储区域结束扇区位置与当前偏移位置的和,如果是,向系统报错,结束当前数据存储流程,否则,执行步骤C2;
C2、判断当前数据存储位置是否已超出存储区域结束扇区位置,如果是,令实际的当前数据存储位置为当前数据存储位置与存储区域的差,然后执行步骤C3,否则,直接执行步骤C3;
C3、判断是否完成当前数据存储,如果是,将起始标志存储于偏移位置之后第一个块的第一个扇区,结束当前数据存储流程,否则,返回执行步骤C1。
10、根据权利要求2或4所述的方法,其特征在于,所述步骤C之后进一步包括:
D、读取存储的数据。
11、根据权利要求10所述的方法,其特征在于,所述步骤D进一步包括以下步骤:
D1、搜索用于标识数据存储起始位置的起始标志扇区,读取起始标志扇区中存储的起始标志和当前读取的数据长度;
D2、读取存储的数据时,判断当前数据读取位置是否已超出存储区域结束扇区位置,如果是,令实际的当前数据读取位置为当前数据读取位置与存储区域的差,然后执行步骤D3,否则,直接执行步骤D3;
D3、判断是否完成当前数据读取,如果是,结束当前数据读取流程,否则,返回执行步骤D1。
12、根据权利要求2、4或11所述的方法,其特征在于,所述起始标志扇区存储有用于标识起始标志的扇区识别字符串和当前存储数据的长度。
13、根据权利要求1所述的方法,其特征在于,所述步骤A包括:将存储区域划分为20至200个块。
CNB031567932A 2003-09-12 2003-09-12 一种磁盘存储方法 Expired - Fee Related CN1331147C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB031567932A CN1331147C (zh) 2003-09-12 2003-09-12 一种磁盘存储方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB031567932A CN1331147C (zh) 2003-09-12 2003-09-12 一种磁盘存储方法

Publications (2)

Publication Number Publication Date
CN1595523A CN1595523A (zh) 2005-03-16
CN1331147C true CN1331147C (zh) 2007-08-08

Family

ID=34660083

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031567932A Expired - Fee Related CN1331147C (zh) 2003-09-12 2003-09-12 一种磁盘存储方法

Country Status (1)

Country Link
CN (1) CN1331147C (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102651674B (zh) * 2012-03-30 2015-06-24 北京经纬恒润科技有限公司 一种反射内存网数据传输方法
CN105068917B (zh) * 2015-08-11 2018-02-02 浪潮(北京)电子信息产业有限公司 一种输入输出io特性分析方法和系统
CN111158606B (zh) * 2019-12-31 2020-11-03 广州鼎甲计算机科技有限公司 存储方法、装置、计算机设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003015095A1 (en) * 2001-08-02 2003-02-20 Matsushita Electric Industrial Co., Ltd. Information recording medium, information recording method, information recording apparatus, information reproduction method, and information reproduction apparatus
CN1399266A (zh) * 1999-05-08 2003-02-26 三星电子株式会社 记录和/或再现装置、处理缺陷区的方法及记录介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1399266A (zh) * 1999-05-08 2003-02-26 三星电子株式会社 记录和/或再现装置、处理缺陷区的方法及记录介质
WO2003015095A1 (en) * 2001-08-02 2003-02-20 Matsushita Electric Industrial Co., Ltd. Information recording medium, information recording method, information recording apparatus, information reproduction method, and information reproduction apparatus

Also Published As

Publication number Publication date
CN1595523A (zh) 2005-03-16

Similar Documents

Publication Publication Date Title
RU2008140263A (ru) Способы и устройства для упреждающего управления памятью
KR101613678B1 (ko) 전력 손실 이후의 비-휘발성 메모리에 대한 복원
US8225029B2 (en) Data storage processing method, data searching method and devices thereof
CN101937374B (zh) 存储存储器重映射信息的非易失性存储器
CN101527142B (zh) 一种磁盘冗余阵列中数据的读写方法和设备
CN102024034B (zh) 一种面向高清媒体的嵌入式文件系统的碎片处理方法
CN101706822B (zh) 提高挂载日志式文件系统速度的方法及设备
CN102841852A (zh) 磨损均衡方法、存储装置及信息系统
US9070378B2 (en) Partial write system
CN104049908A (zh) 基于动态颗粒的中间存储
CN106201774B (zh) 一种nand flash存储芯片数据存储结构分析方法
CN102737715A (zh) 用于nor闪存的数据掉电保护方法
CN103226965A (zh) 基于时间位图的音视频数据存取方法
US9373347B2 (en) Data write management
CN102243884B (zh) 一种存储流媒体数据的方法及装置
US5467361A (en) Method and system for separate data and media maintenance within direct access storage devices
CN102945679A (zh) 视频数据处理方法和视频数据读写设备
CN105302665A (zh) 一种改进的写时拷贝快照方法及系统
US6535995B1 (en) Prototype-based virtual in-line sparing
CN102385610A (zh) 数字硬盘录像机录像文件保存与数据恢复的方法及其系统
CN1331147C (zh) 一种磁盘存储方法
US9170747B2 (en) Storage device, control device, and control method
CN110222035A (zh) 一种基于异或校验与日志恢复的数据库页面高效容错方法
CN100403443C (zh) 分析和修复存储器的方法
CN101515253A (zh) 将文件写入存储介质与从存储介质读取文件的装置及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070808

Termination date: 20200912

CF01 Termination of patent right due to non-payment of annual fee