CN115292266B - 一种基于存储器的高可靠日志存储方法 - Google Patents
一种基于存储器的高可靠日志存储方法 Download PDFInfo
- Publication number
- CN115292266B CN115292266B CN202210600877.9A CN202210600877A CN115292266B CN 115292266 B CN115292266 B CN 115292266B CN 202210600877 A CN202210600877 A CN 202210600877A CN 115292266 B CN115292266 B CN 115292266B
- Authority
- CN
- China
- Prior art keywords
- sector
- data
- memory
- effective
- starting
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000000750 progressive effect Effects 0.000 claims description 3
- 238000007493 shaping process Methods 0.000 claims description 2
- 238000013500 data storage Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 3
- 238000001491 hyper Rayleigh scattering spectroscopy Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/144—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于存储器的高可靠日志存储方法,包括:初始化识别存储器中已记录日志信息的起始数据和末尾数据的位置,记起始数据所在扇区为起始扇区,末尾数据所在扇区为末尾扇区,具体如下:遍历全部扇区,判断魔术字是否为预设编码,若是,认为当前扇区为有效扇区,记录当前扇区的索引号,否则,认为当前扇区不是有效扇区,跳过;判断是否存在有效扇区,确定起始扇区和末尾扇区的位置以及索引号;解析起始扇区的元数据,确定读指针位置;解析末尾扇区的元数据,遍历末尾扇区的全部位图,判断是否存在空数据块,确定写指针和读指针位置;对存储器进行写操作或读操作。该方法可大幅提高数据存储可靠性,且软件和硬件实现成本低,便于部署。
Description
技术领域
本发明属于计算机存储技术领域,具体涉及一种基于存储器的高可靠日志存储方法。
背景技术
在计算机设备中,会存在一些小规模的数据记录需求,例如设备运行时产生的日志信息能反馈设备运行的实时状态、故障信息以及一些关键性的事件,这些日志信息需要被存储,日志信息的数据总量不大,对存储容量要求不高,但在恶劣环境中工作的设备,***随时可能因供电中断或其他原因导致工作停止,因此日志存储***需要具备较高的存储可靠性。
目前市面上常见的方案是将日志信息存储在挂载FAT或extFAT等文件***的磁盘或Flash等存储介质中。现有方案中用于日志存储的FAT、extFAT等通用文件***,它们用于文件管理的数据结构使用的是中心化管理策略,FAT表被在集中存储在存储介质的某个区域中,在恶劣条件下存放该数据结构的区域可能会发生写入出错或物理介质损坏的情况,这将导致部分文件无法读取,严重的情况下会导致整个文件***损坏,进而导致有效数据无法被解析读取。且通用文件***结构复杂,在FLASH存储介质上构建文件***需要程序实现驱动层、FTL层、块设备层、文件***层,程序量较大,从而对处理器处理能力要求高,一般在CPU处理器下才能挂载通用文件***,硬件实现成本较高。
因此,为可靠记录计算机设备在极端恶劣环境中的工作情况,并降低对硬件的性能要求,从而降低成本,提出一种基于存储器的高可靠日志存储方法。
发明内容
本发明的目的在于针对上述问题,提出一种基于存储器的高可靠日志存储方法,可大幅度提高了数据存储的可靠性,且软件和硬件实现成本低,便于部署。
为实现上述目的,本发明所采取的技术方案为:
本发明提出的一种基于存储器的高可靠日志存储方法,用于实现存储器的读写,存储器划分为编号0至N-1的N个扇区,每个扇区包括用于存放元数据的元数据区和顺序标记序号的多个数据块,元数据包括魔术字、索引号以及与数据块一一对应的位图,基于存储器的高可靠日志存储方法包括如下步骤:
S1、初始化识别存储器中已记录日志信息的起始数据和末尾数据在存储器中的位置,记起始数据所在扇区为起始扇区Sstart,末尾数据所在扇区为末尾扇区Send,具体如下:
S11、读取i号扇区的元数据,i=0~N-1,判断魔术字是否为预设编码,若是,认为当前扇区为有效扇区,存在有效数据,记录当前扇区的索引号,否则,认为当前扇区不是有效扇区,不存在有效数据,跳过当前扇区,置i=i+1,循环执行,直至遍历完所有扇区;
S12、判断是否存在有效扇区,若有效扇区的数量为一个,则将该有效扇区同时作为起始扇区Sstart和末尾扇区Send,并将该有效扇区的索引号记为Idx,若有效扇区的数量为两个以上,则将记录的所有索引号中最小索引号所在扇区作为起始扇区Sstart,最大索引号所在扇区作为末尾扇区Send,并将末尾扇区Send的索引号记为Idx,否则,将起始扇区Sstart和末尾扇区Send均指向0号扇区,置索引号Idx=0;
S13、解析起始扇区Sstart的元数据,标记起始扇区Sstart中第一个数据块的起始地址为读指针Pr;
S14、解析末尾扇区Send的元数据,遍历末尾扇区Send的全部位图,判断是否存在空数据块,若是,标记序号最小的空数据块的起始地址为写指针Pw,否则,更新末尾扇区Send为下一个扇区,对更新后的末尾扇区Send执行擦除操作后写入新的索引号Idx+1,标记更新后的末尾扇区Send中第一个数据块的起始地址为写指针Pw,且若此时末尾扇区Send和起始扇区Sstart为同一扇区,则更新起始扇区Sstart为起始扇区Sstart的下一个扇区,标记更新后的起始扇区Sstart中第一个数据块的起始地址为读指针Pr,其中,所有扇区均按编号递增方向进行,超出最大扇区编号后默认返回0号扇区;
S2、对存储器进行写操作或读操作,其中:
写操作具体如下:
S21、采集计算机的日志信息形成有效数据;
S22、向写指针Pw所在位置写入一个数据块的有效数据,写入完成后将该数据块对应的位图表示为存在有效数据,并将写指针Pw后移至下一个数据块;
S23、判断写指针Pw是否到达当前扇区的末尾,若是,对下一个扇区执行擦除操作后,置Idx=Idx+1,写入新的索引号和魔术字,并将读指针Pr后移至下一个扇区,执行步骤S24,否则,直接执行步骤S24;
S24、判断是否存在剩余待写入日志信息,若是,返回执行步骤S21,否则,结束写操作;
读操作具体如下:
S31、根据外部设备下发的读取请求,从读指针Pr所在位置向后读取有效数据,读取时跳过每个扇区的元数据区,直到读到写指针Pw所在位置的上一个数据块的末尾;
S32、解析读取的有效数据为原始日志信息,将原始日志信息传输至外部设备。
优选地,存储器为NorFlash、NandFlash、SD卡和SSD盘其中一种。
优选地,数据块和位图数量均为16,且每个位图采用8位二进制数据表示。
优选地,步骤S22中,将该数据块对应的位图表示为存在有效数据,即位图置为0xFF。
优选地,索引号采用32位无符号整形数。
优选地,步骤S21中,有效数据为格式转换后的日志信息。
与现有技术相比,本发明的有益效果为:
1)通过将元数据去中心化处理,不集中存放而是分布在每个扇区中,使得任意扇区的数据损毁都不会影响到其他扇区,剩余扇区内的日志数据依然可以按记录的时间先后顺序取出,可靠性强,尤其适用于极端恶劣环境下的计算机工作情况记录;
2)掉电安全性高,记录过程在任意时刻因掉电异常中止,仅可能造成当前时刻正在记录的少量数据丢失;
3)相比现有技术中的通用文件***,数据结构简单,无需开发FTL层、块设备层等中间层驱动,直接读写存储介质,且小型MCU处理器即可实现,有助于软件和硬件实现低成本,便于部署;
4)存储空间利用率较高,如可达到99.21%以上,尤其适用于小型Norflash存储器(大小在256MB以下),可用于日志数据或其他类型数据的记录与读取。
附图说明
图1为本发明基于存储器的高可靠日志存储方法的流程图;
图2为本发明的日志记录***结构示意图;
图3为本发明的存储器划分示意图;
图4为本发明的元数据示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本申请。
如图1-4所示,一种基于存储器的高可靠日志存储方法,用于实现存储器的读写,存储器划分为编号0至N-1的N个扇区,每个扇区包括用于存放元数据的元数据区和顺序标记序号的多个数据块,元数据包括魔术字、索引号以及与数据块一一对应的位图,基于存储器的高可靠日志存储方法包括如下步骤:
S1、初始化识别存储器中已记录日志信息的起始数据和末尾数据在存储器中的位置,记起始数据所在扇区为起始扇区Sstart,末尾数据所在扇区为末尾扇区Send,具体如下:
S11、读取i号扇区的元数据,i=0~N-1,判断魔术字是否为预设编码,若是,认为当前扇区为有效扇区,存在有效数据,记录当前扇区的索引号,否则,认为当前扇区不是有效扇区,不存在有效数据,跳过当前扇区,置i=i+1,循环执行,直至遍历完所有扇区;
S12、判断是否存在有效扇区,若有效扇区的数量为一个,则将该有效扇区同时作为起始扇区Sstart和末尾扇区Send,并将该有效扇区的索引号记为Idx,若有效扇区的数量为两个以上,则将记录的所有索引号中最小索引号所在扇区作为起始扇区Sstart,最大索引号所在扇区作为末尾扇区Send,并将末尾扇区Send的索引号记为Idx,否则,将起始扇区Sstart和末尾扇区Send均指向0号扇区,置索引号Idx=0;
S13、解析起始扇区Sstart的元数据,标记起始扇区Sstart中第一个数据块的起始地址为读指针Pr;
S14、解析末尾扇区Send的元数据,遍历末尾扇区Send的全部位图,判断是否存在空数据块,若是,标记序号最小的空数据块的起始地址为写指针Pw,否则,更新末尾扇区Send为下一个扇区,对更新后的末尾扇区Send执行擦除操作后写入新的索引号Idx+1,标记更新后的末尾扇区Send中第一个数据块的起始地址为写指针Pw,且若此时末尾扇区Send和起始扇区Sstart为同一扇区,则更新起始扇区Sstart为起始扇区Sstart的下一个扇区,标记更新后的起始扇区Sstart中第一个数据块的起始地址为读指针Pr,其中,所有扇区均按编号递增方向进行,超出最大扇区编号后默认返回0号扇区;
S2、对存储器进行写操作或读操作,其中:
写操作具体如下:
S21、采集计算机的日志信息形成有效数据;
S22、向写指针Pw所在位置写入一个数据块的有效数据,写入完成后将该数据块对应的位图表示为存在有效数据,并将写指针Pw后移至下一个数据块;
S23、判断写指针Pw是否到达当前扇区的末尾,若是,对下一个扇区执行擦除操作后,置Idx=Idx+1,写入新的索引号和魔术字,并将读指针Pr后移至下一个扇区,执行步骤S24,否则,直接执行步骤S24;
S24、判断是否存在剩余待写入日志信息,若是,返回执行步骤S21,否则,结束写操作;
读操作具体如下:
S31、根据外部设备下发的读取请求,从读指针Pr所在位置向后读取有效数据,读取时跳过每个扇区的元数据区,直到读到写指针Pw所在位置的上一个数据块的末尾;
S32、解析读取的有效数据为原始日志信息,将原始日志信息传输至外部设备。
在一实施例中,存储器为NorFlash、NandFlash、SD卡和SSD盘其中一种。或还可为现有技术中的其他存储器。
在一实施例中,数据块和位图数量均为16,且每个位图采用8位二进制数据表示。
在一实施例中,步骤S22中,将该数据块对应的位图表示为存在有效数据,即位图置为0xFF。使用字节而不是比特位作位图,可防止单字节写入存储器的流程出错,导致单字节写入后实际写入的值不是期望的值,使用字节后,只要写入后位图非0xFF即判为数据有效。
在一实施例中,索引号采用32位无符号整形数。32位索引号耗尽时所消耗的时间远超过***使用寿命,需要说明的是,索引号的设置还可根据实际需求调整。
在一实施例中,步骤S21中,有效数据为格式转换后的日志信息。
其中,本申请所描述的日志存储方法可运用至日志记录***中,如日志记录***包括存储器和处理器,存储器即用于记录计算机的运行日志信息,日志信息指的是计算机运行时通过串口或网络等接口输出的字符信息,通常为ASCII码或其他编码格式的字符串。处理器即用于搭载本申请所描述的日志存储方法,通过使用本发明所描述的日志存储方法将计算机的运行日志信息存储至存储器。
具体地,如图2所示,本实施例中日志记录***由MCU处理器和NorFlash存储器组成,MCU处理器和NorFlash存储器通过SPI总线连接,MCU处理器对外有两路串口连接,且MCU处理器中运行日志记录程序,该日志记录程序实现了本申请所描述的全部步骤,分别用于日志采集和日志导出,对NorFlash存储器实施写入、读取、擦除操作,实现了日志信息的高可靠记录。如两路串口包括日志采集接口和日志导出接口,MCU处理器从日志采集接口获取日志信息,将其以特定数据格式(日志为字符串格式,一般是ASCII码,也可以是其他编码,比如UTF-8、UTF-16等。如果原始日志信息为字符串,则不需要转换)存储在NorFlash存储器中,当外部设备需要获取日志信息时,MCU处理器中运行日志记录程序会解析NorFlash存储器中的数据得到原始日志信息并通过日志导出接口对外传输原始日志信息。
NorFlash存储器擦除操作(erase)的最小单位为1扇区(Sector),该日志记录***将数据的存储空间以扇区大小(4096字节)为单位进行管理,编号为0到N-1共N个扇区。每个扇区由元数据区和数据块构成。扇区头部的32字节是元数据区,剩余4064个字节被均分为16个数据块,用于存放有效数据(如进行格式转换后的日志信息),如图3所示。
元数据采用了去中心化处理,不集中存放而是分布在每个扇区中,元数据中存储着用于描述扇区内有效数据在全部有效数据中的位置信息(通过索引号去识别的,索引号越大,则记录时间越晚)以及描述扇区内的有效数据量(通过位图描述扇区内各数据块是否被占用),日志记录程序通过识别这些信息来解析存储器中的有效数据。元数据包括魔术字、索引号以及与数据块一一对应的位图,且元数据还可留有预留字段,如图4所示,其中:
魔术字:用于在读取时以此区分有效扇区和无效扇区,判别元数据是否有效可用,魔术字为4字节,是预先设定好的字符串,如限定为HRLS,或根据实际需求确定。如为ASCII码“HRLS”,即认为元数据有效,对应扇区为有效扇区,否则,认为元数据无效,对应扇区不是有效扇区。
索引号:32位无符号整形数,表示对应扇区内有效数据在全部已存储有效数据中的位置信息,数值从0开始按记录的时间先后顺序+1递增。容易理解的是,32位索引号耗尽时所消耗的时间远超过***使用寿命,因此索引号不考虑归0情况。
位图:由位图0~位图15共16个字节组成,每个位图按序号依次对应当前所在扇区的数据块0~数据块15;位图数据为8位二进制数据,位图n=0xFF表示其所对应的数据块n中不含有效数据,位图n≠0xFF表示其所对应的数据块n中含有效数据,n=0~15。NorFlash存储器的扇区擦除后,位图将变为0xFF全高状态。
本实施例中基于存储器的高可靠日志存储方法执行如下操作:
日志记录程序在初始化时首先执行对整个存储器的存储区识别,目的是识别出已记录数据的起始数据和末尾数据在存储区中的位置,以便后续继续写入有效数据或读取有效数据。所有扇区操作均按扇区号递增方向进行,若扇区号达到N-1即超出最大扇区范围,此时默认返回0号扇区,下面描述具体步骤:
步骤1:依次读取所有扇区的元数据,判断魔术字是否为ASCII码‘HRLS’,若是,则对应扇区为有效扇区,记录对应扇区的索引号,否则,跳过该扇区继续返回执行步骤1,遍历完所有扇区后执行步骤2,遍历时直接从0遍历到N-1,不存在返回0号扇区情况;
步骤2:在记录的所有索引号中标记最小的索引号所在扇区为已记录有效数据的起始扇区Sstart,最大的扇区号所在扇区为已记录有效数据的末尾扇区Send,末尾扇区Send的索引号记为Idx;记录的索引号数量仅为一个,即有效扇区的数量为一个时,则将该有效扇区同时作为起始扇区Sstart和末尾扇区Send,并将该有效扇区的索引号记为Idx;若没有搜索到有效扇区则将起始扇区Sstart和末尾扇区Send均指向0号扇区,表示无任何有效数据,索引号Idx=0,这种情况是指找不到任何有效扇区的情况,此时直接将索引号归0,从第0号扇区重新开始分配;
步骤3:解析起始扇区Sstart的元数据,标记有效数据读指针Pr为该扇区第一个数据块的起始地址;
步骤4:解析末尾扇区Send的元数据,依次检查16个位图找到序号最小的一个空数据块,若找到则标记该数据块的起始地址为当前有效数据写指针Pw;若所有数据块均被占用,则标记末尾扇区Send的下一个扇区为新的末尾扇区Send,对新的末尾扇区Send执行擦除操作后写入新的索引号(Idx+1),写指针Pw指向新的末尾扇区Send的第一个数据块的起始地址,且若此时Send=Sstart,则将起始扇区Sstart的后一个扇区标记为新的起始扇区Sstart,记录新的起始扇区Sstart的第一个数据块的起始地址为读指针Pr。
初始化后,对所述存储器进行写操作或读操作,其中:
写操作具体如下:
步骤1:采集计算机的日志信息,并将日志信息进行格式转换形成有效数据;
步骤2:向写指针Pw所在位置写入一个数据块的有效数据,写入完成后将该数据块所对应的位图置为0x00,并将写指针Pw后移至下一个数据块;
步骤3:判断写指针Pw是否已到达当前扇区末尾,即当前扇区所有数据块已经写满,若是则对下一个扇区进行擦除,置Idx=Idx+1,擦除后写入新的索引号和魔术字,读指针Pr向后移动到下一个扇区,执行步骤4,否则,直接执行步骤4;
步骤4:判断是否还有剩余有效数据待写入,若是,返回执行步骤1,否则,结束写操作。
读操作具体如下:
步骤1:根据外部设备下发的读取请求,从读指针Pr所在位置向后读取有效数据,读取时需跳过每个扇区的元数据区,直到读到写指针Pw所在位置的上一个数据块的末尾;
步骤2:解析读取的有效数据为原始日志信息,将原始日志信息传输至外部设备。
需要说明的是,本实施例使用NorFlash存储器作为存储介质,同样在NandFlash、SD卡、SSD盘等存储介质适用。且本实施例中NorFlash存储器的扇区大小按4KB管理,也可以按其他大小(如8K、16K)管理,同步调整扇区内的数据块大小即可。
在本实施例中,通过4000次异常掉电测试,未出现日志数据整体无法解析或大量丢失数据的情况,仅会丢失掉电瞬间正在记录的少量数据,数据量小于等于254字节;并通过测试程序人为将已经存储了有效数据的NorFlash存储器的部分扇区进行随机擦除,模拟恶劣情况下存储介质部分区域被损毁,测试结果表明剩余未被损毁扇区内的日志数据依旧可以正确的被识别并按记录的先后顺序读取出来,验证了该方法的可靠性。
本申请通过将元数据去中心化处理,不集中存放而是分布在每个扇区中,使得任意扇区的数据损毁都不会影响到其他扇区,剩余扇区内的日志数据依然可以按记录的时间先后顺序取出,可靠性强,尤其适用于极端恶劣环境下的计算机工作情况记录;掉电安全性高,记录过程在任意时刻因掉电异常中止,仅可能造成当前时刻正在记录的少量数据丢失;相比现有技术中的通用文件***,数据结构简单,无需开发FTL层、块设备层等中间层驱动,直接读写存储介质,且小型MCU处理器即可实现,有助于软件和硬件实现低成本,便于部署;存储空间利用率较高,如可达到99.21%以上,尤其适用于小型Norflash存储器(大小在256MB以下),可用于日志数据或其他类型数据的记录与读取。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请描述较为具体和详细的实施例,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种基于存储器的高可靠日志存储方法,用于实现存储器的读写,其特征在于:所述存储器划分为编号0至N-1的N个扇区,每个扇区包括用于存放元数据的元数据区和顺序标记序号的多个数据块,所述元数据包括魔术字、索引号以及与数据块一一对应的位图,所述基于存储器的高可靠日志存储方法包括如下步骤:
S1、初始化识别所述存储器中已记录日志信息的起始数据和末尾数据在所述存储器中的位置,记起始数据所在扇区为起始扇区Sstart,末尾数据所在扇区为末尾扇区Send,具体如下:
S11、读取i号扇区的元数据,i=0~N-1,判断魔术字是否为预设编码,若是,认为当前扇区为有效扇区,存在有效数据,记录当前扇区的索引号,否则,认为当前扇区不是有效扇区,不存在有效数据,跳过当前扇区,置i=i+1,循环执行,直至遍历完所有扇区;
S12、判断是否存在有效扇区,若有效扇区的数量为一个,则将该有效扇区同时作为起始扇区Sstart和末尾扇区Send,并将该有效扇区的索引号记为Idx,若有效扇区的数量为两个以上,则将记录的所有索引号中最小索引号所在扇区作为起始扇区Sstart,最大索引号所在扇区作为末尾扇区Send,并将末尾扇区Send的索引号记为Idx,否则,将起始扇区Sstart和末尾扇区Send均指向0号扇区,置索引号Idx=0;
S13、解析起始扇区Sstart的元数据,标记起始扇区Sstart中第一个数据块的起始地址为读指针Pr;
S14、解析末尾扇区Send的元数据,遍历末尾扇区Send的全部位图,判断是否存在空数据块,若是,标记序号最小的空数据块的起始地址为写指针Pw,否则,更新末尾扇区Send为下一个扇区,对更新后的末尾扇区Send执行擦除操作后写入新的索引号Idx+1,标记更新后的末尾扇区Send中第一个数据块的起始地址为写指针Pw,且若此时末尾扇区Send和起始扇区Sstart为同一扇区,则更新起始扇区Sstart为起始扇区Sstart的下一个扇区,标记更新后的起始扇区Sstart中第一个数据块的起始地址为读指针Pr,其中,所有扇区均按编号递增方向进行,超出最大扇区编号后默认返回0号扇区;
S2、对所述存储器进行写操作或读操作,其中:
所述写操作具体如下:
S21、采集计算机的日志信息形成有效数据;
S22、向写指针Pw所在位置写入一个数据块的有效数据,写入完成后将该数据块对应的位图表示为存在有效数据,并将写指针Pw后移至下一个数据块;
S23、判断写指针Pw是否到达当前扇区的末尾,若是,对下一个扇区执行擦除操作后,置Idx=Idx+1,写入新的索引号和魔术字,并将读指针Pr后移至下一个扇区,执行步骤S24,否则,直接执行步骤S24;
S24、判断是否存在剩余待写入日志信息,若是,返回执行步骤S21,否则,结束写操作;
所述读操作具体如下:
S31、根据外部设备下发的读取请求,从读指针Pr所在位置向后读取有效数据,读取时跳过每个扇区的元数据区,直到读到写指针Pw所在位置的上一个数据块的末尾;
S32、解析读取的有效数据为原始日志信息,将原始日志信息传输至外部设备。
2.如权利要求1所述的基于存储器的高可靠日志存储方法,其特征在于:所述存储器为NorFlash、NandFlash、SD卡和SSD盘其中一种。
3.如权利要求1所述的基于存储器的高可靠日志存储方法,其特征在于:所述数据块和位图数量均为16,且每个位图采用8位二进制数据表示。
4.如权利要求3所述的基于存储器的高可靠日志存储方法,其特征在于:步骤S22中,所述将该数据块对应的位图表示为存在有效数据,即位图置为0xFF。
5.如权利要求1所述的基于存储器的高可靠日志存储方法,其特征在于:所述索引号采用32位无符号整形数。
6.如权利要求1所述的基于存储器的高可靠日志存储方法,其特征在于:步骤S21中,所述有效数据为格式转换后的日志信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210600877.9A CN115292266B (zh) | 2022-05-30 | 2022-05-30 | 一种基于存储器的高可靠日志存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210600877.9A CN115292266B (zh) | 2022-05-30 | 2022-05-30 | 一种基于存储器的高可靠日志存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115292266A CN115292266A (zh) | 2022-11-04 |
CN115292266B true CN115292266B (zh) | 2024-05-14 |
Family
ID=83821007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210600877.9A Active CN115292266B (zh) | 2022-05-30 | 2022-05-30 | 一种基于存储器的高可靠日志存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115292266B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185563B (zh) * | 2022-12-27 | 2024-04-16 | 上海千顾汽车科技有限公司 | 一种基于车规级微控制器数据闪存的软件模拟算法 |
CN116149577B (zh) * | 2023-04-24 | 2023-07-07 | 杭州炬华科技股份有限公司 | 基于轮转池的数据处理方法、***和可读存储介质 |
CN116701282A (zh) * | 2023-06-12 | 2023-09-05 | 深圳市安保医疗科技股份有限公司 | Vcp数据传输方法、装置、设备及介质 |
CN117251386A (zh) * | 2023-11-20 | 2023-12-19 | 西安图为电气技术有限公司 | 一种嵌入式***的日志管理方法及嵌入式*** |
CN117420962B (zh) * | 2023-12-14 | 2024-05-14 | 深圳市德兰明海新能源股份有限公司 | 数据存取管理方法、单片机产品及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5473761A (en) * | 1991-12-17 | 1995-12-05 | Dell Usa, L.P. | Controller for receiving transfer requests for noncontiguous sectors and reading those sectors as a continuous block by interspersing no operation requests between transfer requests |
US6173291B1 (en) * | 1997-09-26 | 2001-01-09 | Powerquest Corporation | Method and apparatus for recovering data from damaged or corrupted file storage media |
CN101499026A (zh) * | 2008-02-01 | 2009-08-05 | 凯迈(洛阳)测控有限公司 | 基于flash rom的数据采集***小型数据备份方法 |
CN101903866A (zh) * | 2007-11-21 | 2010-12-01 | 提琴存储器公司 | 非易失存储介质中的数据存储的方法和*** |
CN108021513A (zh) * | 2016-11-02 | 2018-05-11 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法及装置 |
CN108090168A (zh) * | 2017-12-14 | 2018-05-29 | 厦门市美亚柏科信息股份有限公司 | 一种通用f2fs文件***解析方法、终端设备及存储介质 |
CN108287665A (zh) * | 2017-01-10 | 2018-07-17 | 华邦电子股份有限公司 | 快闪存储器装置及存取控制方法 |
CN110175001A (zh) * | 2019-05-27 | 2019-08-27 | 牧星机器人(江苏)有限公司 | 一种nor-flash数据存储方法、计算机设备及存储介质 |
CN112650718A (zh) * | 2020-12-30 | 2021-04-13 | 四川效率源信息安全技术股份有限公司 | 一种基于写时复制的btrfs文件***数据的解析及提取方法 |
CN113220239A (zh) * | 2021-05-24 | 2021-08-06 | 厦门四信通信科技有限公司 | 一种flash存储的擦写方法、装置、设备及可读存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100550288B1 (ko) * | 2003-12-02 | 2006-02-08 | 주식회사 하우리 | Ext2파일 시스템의 데이터 복구방법과 그 프로그램을기록한 기록매체 |
US10152412B2 (en) * | 2014-09-23 | 2018-12-11 | Oracle International Corporation | Smart flash cache logger |
US20170097771A1 (en) * | 2015-10-01 | 2017-04-06 | Netapp, Inc. | Transaction log layout for efficient reclamation and recovery |
US10936441B2 (en) * | 2017-12-15 | 2021-03-02 | Microsoft Technology Licensing, Llc | Write-ahead style logging in a persistent memory device |
-
2022
- 2022-05-30 CN CN202210600877.9A patent/CN115292266B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5473761A (en) * | 1991-12-17 | 1995-12-05 | Dell Usa, L.P. | Controller for receiving transfer requests for noncontiguous sectors and reading those sectors as a continuous block by interspersing no operation requests between transfer requests |
US6173291B1 (en) * | 1997-09-26 | 2001-01-09 | Powerquest Corporation | Method and apparatus for recovering data from damaged or corrupted file storage media |
CN101903866A (zh) * | 2007-11-21 | 2010-12-01 | 提琴存储器公司 | 非易失存储介质中的数据存储的方法和*** |
CN101499026A (zh) * | 2008-02-01 | 2009-08-05 | 凯迈(洛阳)测控有限公司 | 基于flash rom的数据采集***小型数据备份方法 |
CN108021513A (zh) * | 2016-11-02 | 2018-05-11 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法及装置 |
CN108287665A (zh) * | 2017-01-10 | 2018-07-17 | 华邦电子股份有限公司 | 快闪存储器装置及存取控制方法 |
CN108090168A (zh) * | 2017-12-14 | 2018-05-29 | 厦门市美亚柏科信息股份有限公司 | 一种通用f2fs文件***解析方法、终端设备及存储介质 |
CN110175001A (zh) * | 2019-05-27 | 2019-08-27 | 牧星机器人(江苏)有限公司 | 一种nor-flash数据存储方法、计算机设备及存储介质 |
CN112650718A (zh) * | 2020-12-30 | 2021-04-13 | 四川效率源信息安全技术股份有限公司 | 一种基于写时复制的btrfs文件***数据的解析及提取方法 |
CN113220239A (zh) * | 2021-05-24 | 2021-08-06 | 厦门四信通信科技有限公司 | 一种flash存储的擦写方法、装置、设备及可读存储介质 |
Non-Patent Citations (5)
Title |
---|
FLogFS: A Lightweight Flash Log File System;Benjamin Nahill 等;《2015 IEEE 12th International Conference on Wearable and Implantable Body Sensor Networks (BSN)》;20151019;1-6 * |
NTFS文件***的FILE结构;解浩 等;《佳木斯大学学报(自然科学版)》;20070715;第25卷(第4期);513-513 * |
Windows CE下Nor flash块驱动的开发和研究;江德明 等;《科学技术与工程》;20071115(第22期);5931-5934 * |
基于Flash控制器的FPGA在线加载功能设计;林天静 等;《电子技术应用》;20190106;第45卷(第01期);88-91 * |
面向固态存储设备的混合文件***研究;付曼迪;《中国优秀硕士学位论文全文数据库 信息科技辑》;20200315(第03期);I137-142 * |
Also Published As
Publication number | Publication date |
---|---|
CN115292266A (zh) | 2022-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115292266B (zh) | 一种基于存储器的高可靠日志存储方法 | |
EP2115595B1 (en) | Memory device performance enhancement through pre-erase mechanism | |
US7146455B2 (en) | System and method for optimized access to memory devices requiring block writing | |
CN101446921B (zh) | 一种Flash存储器的动态存储方法 | |
US5684986A (en) | Embedded directory method and record for direct access storage device (DASD) data compression | |
US7725646B2 (en) | Method of using a flash memory for a circular buffer | |
CN106201774B (zh) | 一种nand flash存储芯片数据存储结构分析方法 | |
KR101077904B1 (ko) | 페이지 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
EP2026184B1 (en) | Device, method, and program for selecting data storage destination from a plurality of tape recording devices | |
CN108829342B (zh) | 一种日志存储方法、***及存储装置 | |
CN108228479B (zh) | 一种嵌入式flash数据存储方法及*** | |
CN113419675B (zh) | 用于存储器的写操作方法及读操作方法 | |
CN112463020A (zh) | 基于Flash的数据存取方法、装置及设备 | |
CN110222035A (zh) | 一种基于异或校验与日志恢复的数据库页面高效容错方法 | |
US20190026033A1 (en) | Method and system for hardware accelerated cache flush | |
CN116594557A (zh) | 星载码流数据的循环读写控制方法及*** | |
CN112269549B (zh) | 一种轻型嵌入式***的闪存管理方法 | |
CN115525605A (zh) | 一种文件***的传输***、方法 | |
CN108304331B (zh) | 基于NorFlash的环形队列式数据存储方法及装置 | |
CN113204316A (zh) | 一种使用flash进行高效数据存储的方法 | |
CN114556283A (zh) | 一种数据写入、一致性检查和读取的方法及装置 | |
CN112597074B (zh) | 数据处理方法及装置 | |
CN113934371B (zh) | 一种存储器及其数据管理方法和计算机存储介质 | |
CN103092730A (zh) | 一种信息存储与读取方法 | |
US20180189185A1 (en) | Media cache band cleaning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |