CN101582084B - 一种数据存储的方法及装置 - Google Patents
一种数据存储的方法及装置 Download PDFInfo
- Publication number
- CN101582084B CN101582084B CN 200910142177 CN200910142177A CN101582084B CN 101582084 B CN101582084 B CN 101582084B CN 200910142177 CN200910142177 CN 200910142177 CN 200910142177 A CN200910142177 A CN 200910142177A CN 101582084 B CN101582084 B CN 101582084B
- Authority
- CN
- China
- Prior art keywords
- data
- storage card
- size
- file system
- storage
- 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
Links
Images
Abstract
本申请公开了一种数据存储的方法,该方法为:确定需要存储的数据的大小;将所述数据的大小与设定阈值进行比较,获得比较结果;根据所述比较结果确定所述数据的大小不大于设定阈值时,在存储卡内的保留扇区中以线性方式对所述数据进行存储。这样,便充分利用了存储卡内的保留扇区,把频繁读写的小块数据直接存储在保留扇区上,而不是以文件的形式存储,那么,仅仅一次的存储卡访问操作即可完成数据的调度,从而减少了操作步骤,提高了存储卡的读写效率,并且由于被读写的扇区数目大大减少,也有效延长了存储卡的使用寿命。本申请同时公开了一种存储数据的设备。
Description
技术领域
本申请涉及计算机领域,特别涉及一种数据存储的方法及装置。
背景技术
存储卡〔如Compact Flash Card(CF卡)、Secure Digital Memory Card(SD卡)、TransFLash Card(TF卡)等〕作为一类通用大容量存储介质,在很多嵌入式设备中都有所应用;例如,在对稳定性要求很高的通讯系统设备上,CF卡的应用很广泛,而在便携设备中,SD卡和TF卡应用比较广泛。存储卡通常由卡控制器和Flash单元两部分组成,其中的Flash单元都是采用与非型Flash(NAND Flash),有读写次数(即使用寿命)的限制,一般在1-10万次左右。
现有技术下,存储卡普遍的应用方法为:系统首先将存储卡格式化出某种文件系统〔如,pHILE文件系统(pSOS操作系统提供的一种文件系统)、FAT文件系统(微软开发的一种文件系统)、FAT32文件系统(微软开发的一种文件系统)、ext2文件系统(Linux下的一种文件系统)或ext3文件系统(Linux下的一种文件系统)等等〕,其中,以FAT32文件系统的应用最为广泛);接着,系统以文件的形式对存储卡进行读写操作。这种方法对于存储卡的管理很方便。
但是,在实际应用中,经常需要在存储卡上创建很多小容量(如1K或几K字节)的数据,例如,数据库文件、日志文件、时隙配置文件和告警文件等等,而且这些小块数据都需要被频繁读写;那么,针对上述应用场景,现有的存储卡应用方法存在以下缺陷:
(1)系统每次需要读写文件时,无论文件大小均采用文件的形式对存储卡进行读写操作。以存储卡格式化为FAT32文件系统为例,系统以文件形式对存储卡进行读写操作时,需要针对位于DOS启动分区(DBR)、主文件分配表分区(FAT1)、备份文件分配表分区(FAT2)、目录区以及数据区中的多个扇区进行读写操作,这使得读写效率难以提高。
(2)系统访问文件的过程中,多个扇区(如,FAT32文件系统中位于DBR、FAT1、FAT2和目录区中的扇区)被频繁读写,而频繁读写的扇区最容易损坏,这种方式降低了存储卡的使用寿命。
有鉴于此,需要提供一种新的存储卡应用方法,以克服上述各缺陷。
发明内容
本申请实施例提供一种数据存储的方法及装置,用以提高存储卡的访问效率,以及延长存储卡的使用寿命。
本申请实施例提供的具体技术方案如下:
一种数据存储的方法,包括:
确定需要存储的数据的大小,
将所述数据的大小与设定阈值进行比较,获得比较结果;
根据所述比较结果确定所述数据的大小不大于设定阈值时,在存储卡内的保留扇区中以线性方式对所述数据进行存储;
根据所述比较结果确定所述数据的大小大于设定阈值时,在存储卡内的数据区中以文件形式对所述数据进行存储。
一种存储数据的设备,包括:
确定单元,用于确定需要存储的数据的大小;
比较单元,用于将所述数据的大小与设定阈值进行比较,获得比较结果;
处理单元,用于根据所述比较结果确定所述数据的大小不大于设定阈值时,在存储卡内的保留扇区中以线性方式对所述数据进行存储,以及用于根据所述比较结果确定所述数据的大小大于设定阈值时,在存储卡内的数据区中以文件形式对所述数据进行存储。
本申请实施例中,在设备中应用存储卡时,充分利用了存储卡内的保留扇区,把频繁读写的小块数据直接存储在保留扇区上,而不是以文件的形式存储。这样,那么,仅仅一次的存储卡访问操作即可完成数据的调度(相当于仅仅读写文件系统下该文件的数据区),从而减少了操作步骤,提高了存储卡的读写效率,并且由于被读写的扇区数目大大减少,也有效延长了存储卡的使用寿命。本申请同时公开了一种应用存储卡的设备。
附图说明
图1为本申请实施例中应用存储卡的设备功能结构示意图;
图2为本申请实施例中存储卡格式化为FAT32文件系统后一个分区的结构框图;
图3为本申请实施例中设备在存储卡内进行数据存储流程图。
具体实施方式
针对使用存储卡的各种设备,为了提高存储卡的访问效率以及延长存储卡的使用寿命,本申请实施例中,在通过存储卡内格式化后的文件系统管理存储卡上文件的同时,充分利用存储卡上文件系统未使用的保留扇区来执行小块数据的读写操作,其中,保留扇区是一个广义的概念,包含存储卡上文件系统未使用以及未索引到的所有扇区。
本申请实施例中,对于频繁读写的小块数据,如,数据库文件、日志文件、时隙配置文件和告警文件等等,不采用文件的形式进行管理,而是直接在保留扇区上进行线性存储和访问(类似于RAM或Flash的访问方式),而对于非频繁读写的大块数据,依然采用文件形式进行管理,这样,通过上述两种管理方式的有机结合,便可以提高存储卡的访问效率,提升存储卡的使用便利性,并且,由于频繁被读写的扇区数目大大减少,从而有效延长了存储卡的使用寿命。
下面结合附图对本申请优选的实施方式进行详细说明。
参阅图1所示,使用存储卡的设备(可以是通讯系统设备或者便携式设备等等)包括存储卡10、确定单元11、比较单元12和处理单元13,其中
存储卡10,用于保存数据,可以是CF卡、SD卡、TF卡等等;
确定单元11,用于确定需要存储的数据的大小,
比较单元12,将所述数据的大小与设定阈值进行比较,获得比较结果;
处理单元13,用于根据所述比较结果确定所述数据的大小不大于设定阈值时,在存储卡内的保留扇区中以线性方式对所述数据进行存储。
基于上述设备,本实施例中,在使用一块存储卡之前,设备先要对其进行格式化,以确定其文件系统,下面以将存储卡格式化为FAT32文件系统为例进行介绍。
参阅图2所示,当一块存储卡被格式化成FAT32文件系统之后,假设仅格式化成一个分区,那么,存储卡内的各扇区的分布方式如下:
主引导扇区(Master Boot ecord,MBR),用于保存存储卡的启动代码以及硬盘分区表(Disk Partition Table,DPT):其中,DPT内记录了本存储卡格式化后划分出的磁盘的数目,每个磁盘的大小,以及每个磁盘的起始地址。
保留扇区1,根据相关规定必须预留出的存储区域,以备存储卡功能后续扩展时使用,本实施例中,将保留扇区1的大小预定为62个扇区,一个扇区的大小为512字节。
操作系统引导扇区(DOS BOOT RECORD,DBR),用于记录文件系统标识(OEM)、引导代码,以及BIOS参数块(BIOS Parameter Block,BPB),其中,磁盘属性包含了本磁盘内划分出的分区的数目以及第个分区的起始地址。
DBR后的第一个扇区,用于记录磁盘当前剩余容量和下一个空闲簇的起始地址,其中,一簇包含N个扇区,通常情况下,N=16。
保留扇区2,通过DBR中BPB内的指定字节设置其大小,同样为预留出的存储区域,以备存储卡功能后续扩展时使用。
主文件分配表分区(FAT1),用于记载文件系统内保存的每份数据的存储地址,因为,以文件形式进行管理时,每份数据的存储地址通常不是连续的,所以,需要把同一份数据保存时涉及到的多个存储地址进行统一管理,以便于后续对数据进行读取。
备份文件分配表(FAT1),用于备份FAT1中记录的内容,以便在FAT1内的数据丢失时,根据备份数据对FAT1进行恢复。
目录区,用于保存文件系统的根目录。
数据区,用于记录保存的各种数据。
实际应用中,各根目录下的子目录通常保存在数据区中。
保留扇区3,格式化后剩余的磁盘空间。
以文件形式进行管理时,若设备在存储卡内创建或修改一个文件,则需要按照DBR后的第一个扇区→FAT1→FAT2→目录区→数据区的顺序进行相关操作,这一点将在后续流程中进行详细说明。
另一方面,存储卡在进行格式化的时候,保留扇区的大小是可以控制的,例如,如图2所示,保留扇区2的大小可以通过改变DBR内BPB段中的0x0e字段来进行更改,可以实现0到32M字节的保留空间设置;而保留扇区3的大小可以通过格式化磁盘时的容量限制来决定,可以预留更大的保留扇区空间。
本发明实施例中,在对存储卡格式化之前,需要对系统需求进行分析评估,预测出需要创建多少频繁读写的数据块,从而确定需要预留出的保留扇区的数目和大小。确定需求后,以某种文件系统对存储卡进行格式化,按照预测出的系统需求对存储卡内的保留扇区的数目和大小进行设置。接着,规划出使用的保留扇区所位于的空间区域,以FAT32文件系统为例,如图2,设置出需要使用保留扇区1、保留扇区2和保留扇区中的一个或任意组合。最后,确定将使用的保留扇区的地址。其中,BIOS板级支持包(Board Support Package,BSP)中提供对保留扇区进行操作时使用的底层接口函数,供上层软件调用,在底层函数中,首先将保留扇区的磁头、柱面、扇区三个定位基准转化为一个线性的LBA地址,并且去掉偏移量,从而给上层软件提供一个从0地址开始的线性访问空间,便于管理和操作。
完成上述准备工作后,设备即可以开始对存储卡进行读写操作了,参阅图3所示,本申请实施例中,设备在存储卡中对数据1进行存储的详细流程如下:
步骤300:确定需要存储的数据的大小。
步骤310:将数据1的大小与设定阈值进行比较,判断数据1的大小是否不大于该设定阈值,若是,则进行步骤320;否则,进行步骤330。
本实施例中,所谓设定阈值即是指数据大小的取值范围,符合该取值范围的即是小块数据,不符合的即是非小块数据,设定阈值的具体取值可以根据具体的应用环境而自行设置,例如,“≤1K bytes”或者“≤2K bytes”或者“≤3K bytes”等等。
步骤320:根据扇区的规划方式确定使用的保留扇区的基址和大小,并以线性方式对使用的保留扇区进行写操作,以完成数据1的存储。
本申请实施例中,以线性方式对保留扇区进行写操作时,可以调用BSP底层函数,所谓线性方式即是指数据1被存储的物理位置顺序与数据1被接收的顺序是完全一致。
显然,以线性方式对数据1进行保存,避免了以文件形式进行管理时产生的繁琐流程,从而有效提高了数据1的存储效率。相应的,由于数据1以线性方式进行保存,那么,设备在需要读取数据1时,同样使用线性方式对其进行访问,这也在一定程度上提高了数据1的读取效率。
步骤330:采用文件系统提供的文件操作函数,以文件形式对数据1进行存储。
如图2所示,以文件形式对数据1进行存储时,要先根据DBR内包含的信息确定磁盘当前剩余容量和下一个空闲簇的起始地址,接着,将数据1存储时涉及到的存储地址保存在FAT1中,以及备份在FAT2中,然后,在目录区中记录相应的根目录,最后,在数据区内按照FAT1中建立的存储地址对数据1进行保存。
以文件形式对数据1进行读取时,要先确定FAT1内记录的数据1存储地址,以及目录区内记录的数据1的根目录,接着,在数据区中按照FAT1中保存的存储地址对数据1进行读取。
在上述实施例步骤320中,如果用于读取小块数据的保留扇区是固定的,则也可以不确定保留扇区的基址和大小,直接在固定的保留扇区内对数据进行读取。例如,如图2所示,假设保留扇区的规划方式为:仅允许在保留扇区1内对小块数据进行读取,则设备在接收到小块数据时,直接在保留扇区1内进行读写操作;又例如,如图2所示,假设保留扇区的规划方式为:允许在保留扇区1、保留扇区2和保留扇区3内对小块数据进行读取,则设备在接收到小块数据时,先从上述各保留扇区内选择保留扇区2,再确定保留扇区2的基址以及大小,接着,再在保留扇区2内进行读写操作,在此不再赘述。
另一方面,本实施例中,仅以FAT32文件系统为例进行介绍,存储卡格式化为其他文件系统时,例如,pHILE文件系统、FAT文件系统、ext2文件系统或ext3文件系统等等,同样可以采用与上述实施例相同的方式,在保留扇区内对小块数据进行存储,而在数据区内对非小块数据进行存储,在此亦不再赘述。
综上所述,本申请实施例中,在设备中应用存储卡时,充分利用了存储卡内的保留扇区,把频繁读写的小块数据直接存储在保留扇区上,而不是以文件的形式存储。这样,仅仅一次的存储卡写操作(相当于仅仅写文件系统下该文件的数据区),即可完成数据的调度,从而减少了操作步骤,提高了数据的读写效率,同时由于读写的扇区数目大大减少,也延长了存储卡的使用寿命。
以具体数据为例:以文件形式读取1K数据时,需要对至少12个扇区(和簇的大小有关系)进行读写操作,并且需要占用6ms的时间,而以线性方式读取1K数据时,仅需要对2个扇区进行读写操作,并且仅需要占用1ms的时间,显而易见,将以文件形式存储数据和以线性方式存储数据的方法进行有机结合,可以大大避免存储小块数据时带来的频繁读写操作,从而提高了存储卡的读写效率,也有效延长了存储卡的使用寿命。
显然,本领域的技术人员可以对本申请中的实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例中的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请中的实施例也意图包含这些改动和变型在内。
Claims (8)
1.一种数据存储的方法,其特征在于,包括:
确定需要存储的数据的大小;
将所述数据的大小与设定阈值进行比较,获得比较结果;
根据所述比较结果确定所述数据的大小不大于设定阈值时,在存储卡内的保留扇区中以线性方式对所述数据进行存储;
根据所述比较结果确定所述数据的大小大于设定阈值时,在存储卡内的数据区中以文件形式对所述数据进行存储。
2.如权利要求1所述的方法,其特征在于,根据所述比较结果确定所述数据的大小不大于设定阈值时,在以线性方式对存储卡内的保留扇区进行读写操作之前,先根据扇区的规划方式确定使用的保留扇区的基址和大小。
3.如权利要求1或2所述的方法,其特征在于,所述存储卡内的保留扇区包含存储卡内文件系统未使用以及未索引到的所有扇区。
4.如权利要求3所述的方法,其特征在于,所述存储卡的文件系统为pHILE文件系统、FAT文件系统、FAT32文件系统、ext2文件系统或ext3文件系统。
5.一种存储数据的设备,其特征在于,包括:
确定单元,用于确定需要存储的数据的大小;
比较单元,用于将所述数据的大小与设定阈值进行比较,获得比较结果;
处理单元,用于根据所述比较结果确定所述数据的大小不大于设定阈值时,在存储卡内的保留扇区中以线性方式对所述数据进行存储,以及用于根据所述比较结果确定所述数据的大小大于设定阈值时,在存储卡内的数据区中以文件形式对所述数据进行存储。
6.如权利要求5所述的设备,其特征在于,所述处理单元根据所述比较结果确定所述数据的大小不大于设定阈值时,在以线性方式对存储卡内的保留扇区进行读写操作之前,先根据扇区的规划方式确定使用的保留扇区的基址和大小。
7.如权利要求5或6所述的设备,其特征在于,所述存储卡内的保留扇区包含存储卡内文件系统未使用以及未索引到的所有扇区。
8.如权利要求7所述的设备,其特征在于,所述存储卡的文件系统为pHILE文件系统、FAT文件系统、FAT32文件系统、ext2文件系统或ext3文件系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910142177 CN101582084B (zh) | 2009-06-03 | 2009-06-03 | 一种数据存储的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910142177 CN101582084B (zh) | 2009-06-03 | 2009-06-03 | 一种数据存储的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101582084A CN101582084A (zh) | 2009-11-18 |
CN101582084B true CN101582084B (zh) | 2012-12-19 |
Family
ID=41364231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910142177 Expired - Fee Related CN101582084B (zh) | 2009-06-03 | 2009-06-03 | 一种数据存储的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101582084B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107506253A (zh) * | 2017-08-11 | 2017-12-22 | 北京东土科技股份有限公司 | 一种操作系统异常信息保存方法及装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346889B (zh) * | 2010-08-04 | 2014-04-30 | 中国移动通信有限公司 | 基于销售点终端的脱机交易方法、系统以及相关装置 |
CN102541925A (zh) * | 2010-12-21 | 2012-07-04 | 中国移动通信集团山西有限公司 | 一种实现详细话单的快速存储和检索的方法及装置 |
CN103617007B (zh) * | 2013-12-04 | 2017-06-23 | 深圳市华云中盛科技有限公司 | 多级智能存储实现方法和系统 |
JP2016189042A (ja) * | 2015-03-30 | 2016-11-04 | 株式会社クボタ | カード発行機およびカード購入システム |
CN106844236A (zh) * | 2016-12-27 | 2017-06-13 | 北京五八信息技术有限公司 | 终端设备的数据存储方法和装置 |
CN106951301B (zh) * | 2017-04-27 | 2018-07-13 | 腾讯科技(深圳)有限公司 | 文件预读方法及装置 |
TWI650660B (zh) * | 2017-09-21 | 2019-02-11 | 和碩聯合科技股份有限公司 | 交易式檔案存取方法與電子裝置 |
CN110941843B (zh) * | 2019-11-22 | 2022-03-29 | 北京明略软件系统有限公司 | 一种加密实现方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1350415A (zh) * | 2000-10-23 | 2002-05-22 | 日本电气株式会社 | 图像数据存储方法 |
CN1618101A (zh) * | 2002-01-29 | 2005-05-18 | 皇家飞利浦电子股份有限公司 | 数据存储设备和在数据存储设备中处理数据的方法 |
CN1735855A (zh) * | 2002-09-05 | 2006-02-15 | 英特尔公司 | 用于处理数据传送的方法和装置 |
-
2009
- 2009-06-03 CN CN 200910142177 patent/CN101582084B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1350415A (zh) * | 2000-10-23 | 2002-05-22 | 日本电气株式会社 | 图像数据存储方法 |
CN1618101A (zh) * | 2002-01-29 | 2005-05-18 | 皇家飞利浦电子股份有限公司 | 数据存储设备和在数据存储设备中处理数据的方法 |
CN1735855A (zh) * | 2002-09-05 | 2006-02-15 | 英特尔公司 | 用于处理数据传送的方法和装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107506253A (zh) * | 2017-08-11 | 2017-12-22 | 北京东土科技股份有限公司 | 一种操作系统异常信息保存方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101582084A (zh) | 2009-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101582084B (zh) | 一种数据存储的方法及装置 | |
JP4206688B2 (ja) | データ処理装置及びデータ処理方法 | |
US20050080985A1 (en) | Data storage device | |
US7529971B2 (en) | Composite memory device, data wiring method and program | |
US7802072B2 (en) | Data storage device, memory management method and program for updating data recorded in each of a plurality of physically partitioned memory areas | |
CN108628542B (zh) | 一种文件合并方法及控制器 | |
US9009440B2 (en) | Adjustment of data storage capacity provided by a storage system | |
JP2012113789A (ja) | ハードディスクドライブ装置およびその処理装置 | |
US20060004969A1 (en) | High-speed accessible memory featuring reduced data movement | |
CN104133640B (zh) | 从休眠快速恢复 | |
CN101241469B (zh) | 一种在嵌入式系统中存储、读取数据的方法及装置 | |
US8595426B2 (en) | Handling commands within a write-once read-many storage device configuration | |
KR100954603B1 (ko) | 파일 시스템의 로그 파일 및 상기 파일 시스템의 오류 복구방법 | |
CN110764694B (zh) | 一种存储空间控制的方法和系统 | |
KR101258589B1 (ko) | 저널링 파일 시스템에 따라 데이터를 기록한 정보저장매체,저널링 파일 시스템을 이용해서 데이터를 기록/복구하는방법 및 장치 | |
CN101404034A (zh) | 文件存储和查找的方法及装置 | |
CN111949212B (zh) | 基于自定义开放通道ssd的文件系统及文件管理方法 | |
CN101673242A (zh) | 硬盘格式化方法和装置 | |
CN102541957A (zh) | 一种基于数据流磁带操作数据文件的方法及装置 | |
CN101625902B (zh) | 半导体存储介质的寿命获取方法、系统及装置 | |
CN111831224B (zh) | 一种擦除exFAT分区文件剩余空间的方法,系统及设备 | |
JP2011215871A (ja) | 書き込み装置、書き込み方法、及び書き込みプログラム | |
CN108776596B (zh) | 一种基于Windows To Go的增强方法及系统 | |
CN100389396C (zh) | 一种fat文件系统差错处理方法及其装置 | |
CN102023925A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121219 Termination date: 20170603 |