CN117453632B - 一种数据存储方法及装置 - Google Patents
一种数据存储方法及装置 Download PDFInfo
- Publication number
- CN117453632B CN117453632B CN202311785000.2A CN202311785000A CN117453632B CN 117453632 B CN117453632 B CN 117453632B CN 202311785000 A CN202311785000 A CN 202311785000A CN 117453632 B CN117453632 B CN 117453632B
- Authority
- CN
- China
- Prior art keywords
- file
- cluster
- directory entry
- data
- information
- 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 45
- 238000013500 data storage Methods 0.000 title claims abstract description 19
- 239000007787 solid Substances 0.000 claims abstract description 61
- 230000004044 response Effects 0.000 claims abstract description 9
- 125000004122 cyclic group Chemical group 0.000 claims description 42
- 238000005192 partition Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000012005 ligant binding assay Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 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/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/17—Details of further file system functions
-
- 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/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据存储方法及装置,所述方法包括:响应于获取到的待存储文件对应的待存储文件数据,从文件目录项表中确定出目标目录项,并根据文件分配表中记录的簇索引的信息确定文件起始簇信息;簇索引与固态硬盘中的簇一一对应;根据文件起始簇信息和待存储文件数据生成待存储文件的文件信息,并将文件信息存储至目标目录项;根据所述文件起始簇信息确定所述固态硬盘中的目标存储地址,并以所述目标存储地址为存储所述待存储文件数据的起始地址,对所述待存储文件数据进行存储;更新文件分配表中记录的簇索引的信息;文件信息和更新的簇索引的信息为对应于待存储文件数据的元数据。
Description
技术领域
本发明涉及文件存储系统领域,尤其涉及一种数据存储方法及装置。
背景技术
随着我国航天事业的发展,目前航天领域对数据存储、数据缓存的容量及性能要求越来越高。星载传感器精度在不断提高,前端传感器采集的原始数据流带宽远远超过了后端的数据处理能力,因此要将海量的待处理数据以文件形式缓存在文件系统中,文件系统需要支持海量数据的存储功能并实现循环覆盖。此外天地链路带宽的限制较大,加上卫星过顶时间短,待传回地面的数据同样需要经文件系统缓存。
目前,无论是元数据还是文件数据,全部存储在挂载通用文件系统的硬盘介质中,当单粒子翻转事件发生在文件系统关键元数据中时,可能会导致文件系统损坏,此时文件系统功能将丧失。
相关技术中,为避免这种情况的发生,为了提高文件系统的可靠性,通常使用宇航级高可靠硬盘,或组成RAID磁盘冗余阵列的方法。然而,这两种方案均需要耗费大量成本。
发明内容
有鉴于此,本发明提供一种数据存储方法及装置,以解决相关技术中的不足。
具体地,本发明是通过如下技术方案实现:
根据本发明的第一方面,提供了一种数据存储方法,应用于文件存储系统,所述文件存储系统包括MRAM芯片和固态硬盘,所述MRAM芯片用于存储元数据,所述元数据包括文件目录项表和文件分配表,所述固态硬盘用于存储所述元数据对应的文件数据,所述固态硬盘以簇为存储单元存储所述文件数据,所述方法包括:
响应于获取到的待存储文件对应的待存储文件数据,从所述文件目录项表中确定出目标目录项,并根据所述文件分配表中记录的簇索引的信息确定文件起始簇信息;其中,所述簇索引与所述固态硬盘中的簇一一对应;
根据所述文件起始簇信息和所述待存储文件数据生成所述待存储文件的文件信息,并将所述文件信息存储至所述目标目录项;
根据所述文件起始簇信息确定所述固态硬盘中的目标存储地址,并以所述目标存储地址为存储所述待存储文件数据的起始地址,对所述待存储文件数据进行存储;
更新所述文件分配表中记录的簇索引的信息;其中,所述文件信息和更新的簇索引的信息为对应于所述待存储文件数据的元数据。
根据本发明的第二方面,提供了一种数据存储装置,应用于文件存储系统,所述文件存储系统包括MRAM芯片和固态硬盘,所述MRAM芯片用于存储元数据,所述元数据包括文件目录项表和文件分配表,所述固态硬盘用于存储所述元数据对应的文件数据,所述固态硬盘以簇为存储单元存储所述文件数据,所述装置包括:
第一确定单元,用于响应于获取到的待存储文件对应的待存储文件数据,从所述文件目录项表中确定出目标目录项,并根据所述文件分配表中记录的簇索引的信息确定文件起始簇信息;其中,所述簇索引与所述固态硬盘中的簇一一对应;
第一存储单元,用于根据所述文件起始簇信息和所述待存储文件数据生成所述待存储文件的文件信息,并将所述文件信息存储至所述目标目录项;
第二存储单元,用于根据所述文件起始簇信息确定所述固态硬盘中的目标存储地址,并以所述目标存储地址为存储所述待存储文件数据的起始地址,对所述待存储文件数据进行存储;
更新单元,用于更新所述文件分配表中记录的簇索引的信息;其中,所述文件信息和更新的簇索引的信息为对应于所述待存储文件数据的元数据。
根据本发明的第三方面,提供了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面中任一项所述的方法。
根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现第一方面中任一所述方法的步骤。
本发明的实施例提供的技术方案可以包括以下有益效果:
在本发明的实施例中,文件存储系统将元数据和文件数据分开存储,通过MRAM芯片存储元数据,通过固态硬盘存储文件数据,一方面,由于MRAM芯片具有抗单粒子翻转的物理特性,使得文件存储系统可以避免单粒子翻转事件的影响,此外,由于MRAM芯片的成本较低,且相对于全部数据而言,元数据的数据量极小,因此一个MRAM芯片可以存储大量文件数据对应的元数据,从而进一步的减小了存储成本;另一方面,MRAM的访问是通过CPU直接地址映射访问,无需如硬盘一样缓存至内存中,簇索引、目录项的更新均可在1个CPU指令周期下完成,属于原子操作,若写入数据被异常掉电打断也至多损失1个簇的数据,不会出现文件损坏或文件系统整体损坏的情况。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明公开实施例示出的一种文件存储系统的架构图;
图2是本发明公开实施例示出的一种数据存储方法的流程图;
图3是本发明公开实施例示出的一种文件分配表的示意图;
图4是本发明公开实施例示出的一种确定目标目录项方法的流程图;
图5是本发明公开实施例示出的一种文件的访问方法的流程图;
图6是本发明公开实施例示出的一种电子设备的示意结构图;
图7是本发明公开实施例示出的一种数据存储装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面结合附图对本发明的一种数据存储方法的实施例进行详细描述。
随着我国航天事业的发展,目前航天领域对数据存储、数据缓存的容量及性能要求越来越高。星载传感器精度在不断提高,前端传感器采集的原始数据流带宽远远超过了后端的数据处理能力,因此要将海量的待处理数据以文件形式缓存在文件系统中,文件系统需要支持海量数据的存储功能并实现循环覆盖。此外天地链路带宽的限制较大,加上卫星过顶时间短,待传回地面的数据同样需要经文件系统缓存。
目前,无论是元数据还是文件数据,全部存储在挂载通用文件系统的硬盘介质中,当单粒子翻转事件发生在文件系统关键元数据中时,可能会导致文件系统损坏,此时文件系统功能将丧失。
相关技术中,为避免这种情况的发生,为了提高文件系统的可靠性,通常使用宇航级高可靠硬盘,或组成RAID磁盘冗余阵列的方法。然而,这两种方案均需要耗费大量成本。
为解决相关技术中存在的不足,本说明书提出了一种数据存储方法。该数据存储方法应用于如图1所示的文件存储系统10中,该文件存储系统10包括MRAM芯片101和固态硬盘102,其中,MRAM芯片101用于存储元数据,固态硬盘102用于存储元数据对应的文件数据。
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data aboutdata),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须描述并收藏数据的内容或特色,进而达成协助数据检索的目的。
MRAM芯片101是一种新型非易失存储器,采用电子的自旋属性表征数据信息的存储及传输,具备高速读写、低功耗、高密度、耐擦写、宽温区、抗辐照和抗单粒子翻转等优势。固态硬盘(Solid State Disk或Solid State Drive,简称SSD)102,又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘。
文件存储系统10可以接收CPU20发送的多种请求,例如存储请求、访问请求等等,文件存储系统10在接收到存储请求时,可以对该存储请求指定的待存储文件进行存储;文件存储系统10在接收到访问请求时,可以对该访问请求指定的目标文件进行读取,并反馈读取的内容。
本发明提出的文件存储系统将元数据和文件数据分开存储,通过MRAM芯片存储元数据,通过固态硬盘存储文件数据,一方面,由于MRAM芯片具有抗单粒子翻转的物理特性,使得文件存储系统可以避免单粒子翻转事件的影响;另一方面,由于MRAM芯片的成本较低,且相对于全部数据而言,元数据的数据量极小,因此一个MRAM芯片可以存储大量文件数据对应的元数据,从而进一步的减小了存储成本。
图2是本发明公开示例性实施例示出的一种数据存储方法的流程图,该方法应用于文件存储系统,所述文件存储系统包括MRAM芯片和固态硬盘,所述MRAM芯片用于存储元数据,所述元数据包括文件目录项表和文件分配表,所述固态硬盘用于存储所述元数据对应的文件数据,所述固态硬盘以簇为存储单元存储所述文件数据,具体可以包括如下步骤:
步骤202,响应于获取到的待存储文件对应的待存储文件数据,从所述文件目录项表中确定出目标目录项,并根据所述文件分配表中记录的簇索引的信息确定文件起始簇信息;其中,所述簇索引与所述固态硬盘中的簇一一对应。
文件目录项表中记录有文件对应的文件标识号,文件标识号用于唯一标识文件存储系统存储的每一文件。文件标识号可以为文件目录项表的位置序号。如图3所示,文件分配表记录的簇索引与固态硬盘的簇一一对应,每一簇索引均对应有文件标识号。该文件分配表中表项的数据结构可以如表1所示,表1中包含3个字段,分别为:文件标识号、循环覆盖标识、其他索引。其中,文件标识号为文件的唯一标识信息;循环覆盖标识将在后文进行详细说明。
表1
如前所述,文件存储系统可以接收CPU发送的存储请求,存储请求中包含待存储文件对应的待存储文件数据。文件存储系统解析存储请求、并获取到待存储文件数据的操作可以触发目标目录项的确定操作。
在一实施例中,所述从所述文件目录项表中确定出目标目录项,包括:在所述文件目录项表中存在空闲目录项的情况下,将所述空闲目录项确定为所述目标目录项;在所述文件目录项表中不存在空闲目录项的情况下,从已有目录项中确定出可覆盖目录项,并将所述可覆盖目录项中的文件信息删除,将所述可覆盖目录项确定为目标目录项。
具体的,所述文件分配表记录有簇索引对应的循环覆盖标识,所述从已有目录项中确定出可覆盖目录项,包括:遍历所述文件分配表,并确定出第一文件;其中,所述第一文件对应的循环覆盖标识与排在所述第一文件前的第二文件对应的循环覆盖标识不同;在所述第一文件可覆盖的情况下,将所述第一文件对应的已有目录项确定为所述可覆盖目录项;在所述第一文件不可覆盖的情况下,将排在所述第一文件后的第三文件确定为新的第一文件,直至确定所述第一文件可覆盖;将所述第一文件以及所述第一文件之前的文件(不可覆盖的文件除外)对应的循环覆盖标识更新为与所述第二文件对应的循环覆盖标识一致。
下面结合图4对确定目标目录项的过程进行详细介绍,图4是本发明公开示例性实施例示出的一种确定目标目录项方法的流程图,具体可以包括如下步骤:
步骤401,判断文件目录项表中是否存在空闲目录项。若存在,则进入步骤402,将空闲目录项确定为目标目录项。
若不存在,则进入步骤403,遍历文件分配表,确定第一文件。如图3所示,文件分配表中还记录有簇索引对应的循环覆盖标识,该循环覆盖标识可以用于确定文件是否可覆盖,以及确定文件分配表中最早写入的可覆盖文件对应的簇索引。因为,如表1所示,每次簇被覆盖时,该簇对应的循环覆盖标识可以加1,在循环覆盖标识为4时重置为0。所以,最新更新的文件的循环覆盖标识与处于该文件后的第一文件的循环覆盖标识一定不同,而最新更新的文件的循环覆盖标识与该文件之前的文件(不可覆盖文件除外)的循环覆盖标识是相同的。因此,可以基于该循环覆盖标识确定最早写入的可覆盖文件对应的簇索引。图3中文件A对应的循环覆盖标识与文件D不同(文件B不参与循环覆盖),因此可以将文件A作为第一文件。
步骤406,确定第一文件是否可覆盖。不可覆盖的文件对应的循环覆盖标识为“00”,可覆盖的文件对应的循环覆盖标识存在四种情况,分别为“0、1、2、3”。若是,如图3中的文件A参与循环覆盖,则进入步骤406,将第一文件对应的目录项确定为可覆盖目录项。步骤407,删除可覆盖目录项中的文件信息,将该可覆盖目录项确定为目标目录项。若否,即第一文件不可覆盖,如文件B所示,则将排在第一文件后的第三文件确定为新的第一文件。假设:文件A不可覆盖,则可以将文件B作为第一文件,继续对是否可覆盖进行判断。由于文件B不可覆盖,则可以将文件C作为第一文件,对文件C是否可覆盖进行判断,直至确定可覆盖的第一文件。
在步骤407中,需要删除可覆盖目录项中的文件信息。具体的,文件目录项中存在文件属性,文件存储系统在删除文件信息前会对文件属性进行确认,若将文件属性为已删除,则将删除文件信息。因此,可以在一个目录项被确定为可覆盖目录项时,该可覆盖目录项中的文件属性将被修改为已删除。
在该实施例中,通过在文件分配表中设置循环覆盖标识,使得文件存储系统具备循环覆盖功能。
由于文件存储系统具备循环覆盖功能,因此新写入的文件的起始簇是根据循环覆盖标识确定的。具体的,文件起始簇信息为所述第一文件对应的簇索引所指向的所述固态硬盘中的第一个簇的信息。
实际上,文件存储系统中设置有写入指针,该写入指针所指向的簇即为起始簇,该写入指针每次写入文件数据完毕后,将指向上次存储文件数据对应的尾簇的下一簇。由于写入文件数据将对循环覆盖标识进行更新,因此写入指针所指向的簇,其实是第一文件对应的簇索引所指向的固态硬盘中的第一个簇。循环覆盖标识可以用于确定写入指针的位置。
步骤204,根据所述文件起始簇信息和所述待存储文件数据生成所述待存储文件的文件信息,并将所述文件信息存储至所述目标目录项。
文件信息可以包括下述至少之一:文件名称、文件标识号、文件起始簇信息、文件属性信息。该文件信息本质上为待存储文件数据对应的元数据。
步骤206,根据所述文件起始簇信息确定所述固态硬盘中的目标存储地址,并以所述目标存储地址为存储所述待存储文件数据的起始地址,对所述待存储文件数据进行存储。
目标存储地址指的是固态硬盘中簇的逻辑地址。该逻辑地址可以为逻辑区块地址(Logical Block Address,LBA)是描述计算机存储设备上数据所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备。LBA可以意指一个簇包含的其中一个数据区块的地址,因此LBA与簇为多对一的关系。文件起始簇信息中记录的目标存储地址为簇中第一个数据区块的地址。
在一实施例中,所述以所述目标存储地址对应的簇作为起始簇,将所述待存储文件数据存储至所述固态硬盘中,包括:在所述起始簇不足以存储所述待存储文件数据的情况下,确定在所述固态硬盘中所述起始簇的下一簇对应的待覆盖文件,并确定所述待覆盖文件是否可覆盖;在确定所述待覆盖文件可覆盖的情况下,删除所述下一簇原先存储的文件数据,并继续将所述待存储文件数据存储至所述下一簇中;以及,更新所述待覆盖文件在所述文件目录项中的文件起始簇信息;在确定所述待覆盖文件不可覆盖的情况下,将所述文件分配表中排在所述待覆盖文件后的文件作为新的待覆盖文件,直至所述待存储文件数据存储完毕。
若起始簇的存储空间不足以存储待存储文件数据,那么文件存储系统将对固态硬盘中起始簇的下一簇对应的待覆盖文件是否可覆盖进行判断,若待覆盖文件可覆盖,则文件存储系统可以继续将未完成存储的待存储文件数据存储至该下一簇中;若待覆盖文件不可覆盖,则文件存储系统可以跳过该不可覆盖的文件,将该不可覆盖的文件的下一文件作为待覆盖文件,继续对待覆盖文件是否可覆盖进行判断,直至待存储文件数据存储完毕。
在存储待存储文件数据时,待覆盖文件对应的簇被待存储文件的文件数据占用,那么该待覆盖文件对应的文件起始簇信息也应更新,例如:若待覆盖文件对应的簇被占用两簇,则该待覆盖文件对应的文件起始簇信息也应后移两簇;若待覆盖文件对应的簇被全部占用,则该待覆盖文件对应的目录项中的属性一栏将会被修改为已删除。
当然,存在一种情况,起始簇的下一簇与该起始簇对应的文件是同一文件,此时,无需对该文件是否可覆盖进行判断,因为起始簇对应的文件可覆盖已在确定目标目录项的过程中确认过了。
在该实施例中,一方面,在起始簇存储空间不足的情况下,继续将待存储文件数据存储至固态硬盘中排在起始簇后面的簇里,从而实现了对待存储文件数据的存储;另一方面,通过对起始簇后面的簇对应的文件是否可覆盖进行判断,避免将待存储文件数据存储在那些不可覆盖的文件对应的簇中。
步骤208,更新所述文件分配表中记录的簇索引的信息;其中,所述文件信息和更新的簇索引的信息为对应于所述待存储文件数据的元数据。
在完成对于待存储文件数据的存储后,需要对文件分配表记录的簇索引进行更新,包括更新待存储文件的文件标识号和循环覆盖标识。
在该实施例中,文件存储系统将元数据和文件数据分开存储,通过MRAM芯片存储元数据,通过固态硬盘存储文件数据,一方面,由于MRAM芯片具有抗单粒子翻转的物理特性,使得文件存储系统可以避免单粒子翻转事件的影响,此外,由于MRAM芯片的成本较低,且相对于全部数据而言,元数据的数据量极小,因此一个MRAM芯片可以存储大量文件数据对应的元数据,从而进一步的减小了存储成本;另一方面,MRAM的访问是通过CPU直接地址映射访问,无需如硬盘一样缓存至内存中,簇索引、目录项的更新均可在1个CPU指令周期下完成,属于原子操作,若写入数据被异常掉电打断也至多损失1个簇的数据,不会出现文件损坏或文件系统整体损坏的情况。
在一实施例中,所述方法还包括:响应于针对目标文件的访问请求,确定所述访问请求中包含的所述目标文件对应的目标文件标识号,并从所述文件目录项表中确定出与所述目标文件标识号匹配的目标文件起始簇信息;其中,所述文件标识号为所述文件目录项表的位置序号;从所述文件分配表中确定与所述目标文件起始簇信息相匹配的目标簇索引,并在确定所述目标簇索引对应的文件标识号与所述目标文件标识号一致的情况下,读取所述固态硬盘中的所述目标文件标识号对应的簇中的文件数据。
下面结合图5对文件的访问过程进行详细介绍,图5是本发明公开示例性实施例示出的一种文件的访问方法的流程图,具体可以包括如下步骤:
步骤501,确定目标文件标识号和目标文件起始簇信息。文件存储系统接收到的访问请求中包含目标文件对应的目标文件标识号,根据目标文件标识号可以确定文件目录项表中与该目标文件标识号匹配的目录项,目录项中记录有目标文件起始簇信息。
步骤502,根据目标文件起始簇信息确定目标簇索引。文件分配表中记录的簇索引与固态硬盘中的簇一一对应,根据匹配于目标文件起始簇信息的固态硬盘中的目标簇,再根据目标簇确定目标簇索引。
步骤503,判断目标簇索引对应的文件标识号是否与目标文件标识号一致。簇索引记录有文件标识号,若目标簇索引对应的文件标识号与目标文件对应的目标文件标识号一致,则表明目标簇索引对应的文件为目标文件,进入步骤504,读取固态硬盘中的目标文件标识号对应的簇中的文件数据。
若目标簇索引对应的文件标识号与目标文件对应的目标文件标识号不一致,则表明目标簇索引对应的文件不是目标文件,且文件分配表记录的簇索引和文件标识号不匹配。文件存储系统可以将该情况通知系统管理员。当然,如图5所示,文件存储系统可以执行步骤505,将目标簇索引的下一簇索引作为新的目标簇索引,即以此遍历后续的簇索引,直至找到与目标文件标识号匹配的簇索引。若文件分配表记录的所有簇索引均与目标文件标识号不匹配,则可以将该情况通知系统管理员。
在该实施例中,通过本发明提出的文件存储系统对指向目标文件的访问请求进行响应,从而实现对目标文件对应的文件数据的读取。
在一实施例中,所述文件目录项表包括:卷标目录项表、文件分配表目录项表、数据文件属性目录项表;所述方法还包括:响应于接收到的挂载请求,依次读取所述MRAM芯片存储的所述卷标目录项表、文件分配表目录项表、数据文件属性目录项表;其中,所述卷标目录项表记录有所述文件存储系统所在存储分区的盘符名称,所述文件分配目录项表记录有所述文件存储系统所在存储分区的簇索引长度和簇索引数量,所述数据文件属性目录项表记录有所述文件存储系统所存储文件的文件属性信息,所述文件属性信息包括下述至少之一:文件名称、文件标识号、文件起始簇信息;遍历所述文件分配表的所有簇索引。
表2卷标目录项
表3文件分配目录项表
表2为卷标目录项表中目录项的数据结构,表3为文件分配表目录项表中目录项的数据结构,表4-表6为3种数据文件属性目录项表中目录项的数据结构。如表2所示,卷标目录项表中记录有卷标,该卷标为操作系统中文件存储系统所挂载的存储分区的盘符名称;如表3所示,文件分配表目录项表记录有文件存储系统所在存储分区的簇索引长度和簇索引数量;如表4-表6所示,文件属性信息包括下述至少之一:文件名称、文件标识号、文件起始簇信息、文件属性、文件创建时间、文件修改时间。
表4数据文件属性目录项表1
表5数据文件属性目录项表2
表6数据文件属性目录项表3
具体的文件存储系统的挂载过程如下所示:
步骤601,读取MRAM中的卷标目录项表(固定为首个目录项表),确定当前存储分区的盘符名称;
步骤602,读取MRAM中的文件分配目录项表(固定为第二个目录项表),确定当前存储分区内的簇索引长度和簇索引总数;
步骤603,继续读取文件目录项表,遍历所有目录项,识别并记录所有文件的信息,将文件信息数据结构暂存在内存中,文件信息包含:文件名称、文件标识、文件起始簇信息等信息。
步骤604,读取MRAM中的文件分配表,遍历所有分配表项信息,记录每个有效文件(文件属性不为已删除的文件)所占用的分配表项数量,最后一个表项所映射的硬盘簇即当前文件尾所在的簇。
步骤605,遍历文件分配表中的循环覆盖标识,依据循环覆盖标识发生变化的簇位置,当前写入指针指向该簇下一个簇(循环覆盖标识在循环覆盖文件写入过程中是全局循环递增的,只要找到相邻的两个标记不同的文件簇索引即可找到写入指针)。
在该实施例中,一方面,实现了文件存储系统的挂载;另一方面,在挂载文件存储系统时确定写入指针的位置,以及将文件信息暂存在内存中,使得后续接收到访问请求时可以快速对访问请求进行处理。
与前述方法的实施例相对应,本发明还提供了电子设备以及装置的实施例。
图6是本发明实施例示出的一种电子设备的示意结构图。请参考图6,在硬件层面,该设备包括处理器601、网络接口602、内存603、非易失性存储器604以及内部总线605,当然还可能包括其他业务所需要的硬件。本发明一个或多个实施例可以基于软件方式来实现,比如由处理器601从非易失性存储器604中读取对应的计算机程序到内存603中然后运行。当然,除了软件实现方式之外,本发明一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
图7本发明实施例示出的一种数据存储装置的框图。请参考图7,该装置可以应用于如图7所示的设备中,应用于文件存储系统,所述文件存储系统包括MRAM芯片和固态硬盘,所述MRAM芯片用于存储元数据,所述元数据包括文件目录项表和文件分配表,所述固态硬盘用于存储所述元数据对应的文件数据,所述固态硬盘以簇为存储单元存储所述文件数据,以实现本发明所述的技术方案,该装置包括:
第一确定单元702,用于响应于获取到的待存储文件对应的待存储文件数据,从所述文件目录项表中确定出目标目录项,并根据所述文件分配表中记录的簇索引的信息确定文件起始簇信息;其中,所述簇索引与所述固态硬盘中的簇一一对应;
第一存储单元704,用于根据所述文件起始簇信息和所述待存储文件数据生成所述待存储文件的文件信息,并将所述文件信息存储至所述目标目录项;
第二存储单元706,用于根据所述文件起始簇信息确定所述固态硬盘中的目标存储地址,并以所述目标存储地址为存储所述待存储文件数据的起始地址,对所述待存储文件数据进行存储;
更新单元708,用于更新所述文件分配表中记录的簇索引的信息;其中,所述文件信息和更新的簇索引的信息为对应于所述待存储文件数据的元数据。
可选的,所述确定单元702具体用于:
在所述文件目录项表中存在空闲目录项的情况下,将所述空闲目录项确定为所述目标目录项;
在所述文件目录项表中不存在空闲目录项的情况下,从已有目录项中确定出可覆盖目录项,并将所述可覆盖目录项中的文件信息删除,将所述可覆盖目录项确定为目标目录项。
可选的,所述文件分配表记录有簇索引对应的循环覆盖标识,所述确定单元702具体用于:
遍历所述文件分配表,并确定出第一文件;其中,所述第一文件对应的循环覆盖标识与排在所述第一文件前的第二文件对应的循环覆盖标识不同;
在所述第一文件可覆盖的情况下,将所述第一文件对应的已有目录项确定为所述可覆盖目录项;在所述第一文件不可覆盖的情况下,将排在所述第一文件后的第三文件确定为新的第一文件,直至确定可覆盖的第一文件;
将确定出的可覆盖的第一文件以及所述可覆盖的第一文件之前的文件对应的循环覆盖标识更新为与所述第二文件对应的循环覆盖标识一致。
可选的,所述文件起始簇信息为所述第一文件对应的簇索引所指向的所述固态硬盘中的第一个簇的信息。
可选的,所述第二存储单元706具体用于:
在所述起始簇不足以存储所述待存储文件数据的情况下,确定在所述固态硬盘中所述起始簇的下一簇对应的待覆盖文件,并确定所述待覆盖文件是否可覆盖;
在确定所述待覆盖文件可覆盖的情况下,删除所述下一簇原先存储的文件数据,并继续将所述待存储文件数据存储至所述下一簇中;以及,更新所述待覆盖文件在所述文件目录项中的文件起始簇信息;
在确定所述待覆盖文件不可覆盖的情况下,将所述文件分配表中排在所述待覆盖文件后的文件作为新的待覆盖文件,直至所述待存储文件数据存储完毕。
可选的,所述方法还包括:
第二确定单元710,用于响应于针对目标文件的访问请求,确定所述访问请求中包含的所述目标文件对应的目标文件标识号,并从所述文件目录项表中确定出与所述目标文件标识号匹配的目标文件起始簇信息;其中,所述文件标识号为所述文件目录项表的位置序号;
第一读取单元712,用于从所述文件分配表中确定与所述目标文件起始簇信息相匹配的目标簇索引,并在确定所述目标簇索引对应的文件标识号与所述目标文件标识号一致的情况下,读取所述固态硬盘中的所述目标文件标识号对应的簇中的文件数据。
可选的,所述文件目录项表包括:卷标目录项表、文件分配目录项表、数据文件属性目录项表;所述方法还包括:
第二读取单元714,用于响应于接收到的挂载请求,依次读取所述MRAM芯片存储的所述卷标目录项表、文件分配目录项表、数据文件属性目录项表;其中,所述卷标目录项表记录有所述文件存储系统所在存储分区的盘符名称,所述文件分配目录项表记录有所述文件存储系统所在存储分区的簇索引长度和簇索引数量,所述数据文件属性目录项表记录有所述文件存储系统所存储文件的文件属性信息,所述文件属性信息包括下述至少之一:文件名称、文件标识号、文件起始簇信息;
遍历单元716,用于遍历所述文件分配表的所有簇索引。
虽然本发明包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本发明内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (8)
1.一种数据存储方法,其特征在于,应用于文件存储系统,所述文件存储系统包括MRAM芯片和固态硬盘,所述MRAM芯片用于存储元数据,所述元数据包括文件目录项表和文件分配表,所述固态硬盘用于存储所述元数据对应的文件数据,所述固态硬盘以簇为存储单元存储所述文件数据,所述方法包括:
响应于获取到的待存储文件对应的待存储文件数据,在所述文件目录项表中存在空闲目录项的情况下,将所述空闲目录项确定为目标目录项;
在所述文件目录项表中不存在空闲目录项的情况下,遍历所述文件分配表,并确定出第一文件;其中,所述文件分配表记录有簇索引对应的循环覆盖标识,所述第一文件对应的循环覆盖标识与排在所述第一文件前的第二文件对应的循环覆盖标识不同;在所述第一文件可覆盖的情况下,将所述第一文件对应的已有目录项确定为可覆盖目录项;在所述第一文件不可覆盖的情况下,将排在所述第一文件后的第三文件确定为新的第一文件,直至确定可覆盖的第一文件;将确定出的可覆盖的第一文件以及所述可覆盖的第一文件之前的文件对应的循环覆盖标识更新为与所述第二文件对应的循环覆盖标识一致;将所述可覆盖目录项中的文件信息删除,并将所述可覆盖目录项确定为目标目录项;
根据所述文件分配表中记录的簇索引的信息确定文件起始簇信息;其中,所述簇索引与所述固态硬盘中的簇一一对应;
根据所述文件起始簇信息和所述待存储文件数据生成所述待存储文件的文件信息,并将所述文件信息存储至所述目标目录项;
根据所述文件起始簇信息确定所述固态硬盘中的目标存储地址,并以所述目标存储地址为存储所述待存储文件数据的起始地址,对所述待存储文件数据进行存储;
更新所述文件分配表中记录的簇索引的信息;其中,所述文件信息和更新的簇索引的信息为对应于所述待存储文件数据的元数据。
2.根据权利要求1所述的方法,其特征在于,所述文件起始簇信息为所述第一文件对应的簇索引所指向的所述固态硬盘中的第一个簇的信息。
3.根据权利要求1所述的方法,其特征在于,所述以所述目标存储地址对应的簇作为起始簇,将所述待存储文件数据存储至所述固态硬盘中,包括:
在所述起始簇不足以存储所述待存储文件数据的情况下,确定在所述固态硬盘中所述起始簇的下一簇对应的待覆盖文件,并确定所述待覆盖文件是否可覆盖;
在确定所述待覆盖文件可覆盖的情况下,删除所述下一簇原先存储的文件数据,并继续将所述待存储文件数据存储至所述下一簇中;以及,更新所述待覆盖文件在所述文件目录项中的文件起始簇信息;
在确定所述待覆盖文件不可覆盖的情况下,将所述文件分配表中排在所述待覆盖文件后的文件作为新的待覆盖文件,直至所述待存储文件数据存储完毕。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于针对目标文件的访问请求,确定所述访问请求中包含的所述目标文件对应的目标文件标识号,并从所述文件目录项表中确定出与所述目标文件标识号匹配的目标文件起始簇信息;其中,所述文件标识号为所述文件目录项表的位置序号;
从所述文件分配表中确定与所述目标文件起始簇信息相匹配的目标簇索引,并在确定所述目标簇索引对应的文件标识号与所述目标文件标识号一致的情况下,读取所述固态硬盘中的所述目标文件标识号对应的簇中的文件数据。
5.根据权利要求1所述的方法,其特征在于,所述文件目录项表包括:卷标目录项表、文件分配目录项表、数据文件属性目录项表;所述方法还包括:
响应于接收到的挂载请求,依次读取所述MRAM芯片存储的所述卷标目录项表、文件分配目录项表、数据文件属性目录项表;其中,所述卷标目录项表记录有所述文件存储系统所在存储分区的盘符名称,所述文件分配目录项表记录有所述文件存储系统所在存储分区的簇索引长度和簇索引数量,所述数据文件属性目录项表记录有所述文件存储系统所存储文件的文件属性信息,所述文件属性信息包括下述至少之一:文件名称、文件标识号、文件起始簇信息;
遍历所述文件分配表的所有簇索引。
6.一种数据存储装置,其特征在于,应用于文件存储系统,所述文件存储系统包括MRAM芯片和固态硬盘,所述MRAM芯片用于存储元数据,所述元数据包括文件目录项表和文件分配表,所述固态硬盘用于存储所述元数据对应的文件数据,所述固态硬盘以簇为存储单元存储所述文件数据,所述装置包括:
第一确定单元,用于响应于获取到的待存储文件对应的待存储文件数据,在所述文件目录项表中存在空闲目录项的情况下,将所述空闲目录项确定为目标目录项;在所述文件目录项表中不存在空闲目录项的情况下,遍历所述文件分配表,并确定出第一文件;其中,所述文件分配表记录有簇索引对应的循环覆盖标识,所述第一文件对应的循环覆盖标识与排在所述第一文件前的第二文件对应的循环覆盖标识不同;在所述第一文件可覆盖的情况下,将所述第一文件对应的已有目录项确定为可覆盖目录项;在所述第一文件不可覆盖的情况下,将排在所述第一文件后的第三文件确定为新的第一文件,直至确定可覆盖的第一文件;将确定出的可覆盖的第一文件以及所述可覆盖的第一文件之前的文件对应的循环覆盖标识更新为与所述第二文件对应的循环覆盖标识一致;将所述可覆盖目录项中的文件信息删除,并将所述可覆盖目录项确定为目标目录项;根据所述文件分配表中记录的簇索引的信息确定文件起始簇信息;其中,所述簇索引与所述固态硬盘中的簇一一对应;
第一存储单元,用于根据所述文件起始簇信息和所述待存储文件数据生成所述待存储文件的文件信息,并将所述文件信息存储至所述目标目录项;
第二存储单元,用于根据所述文件起始簇信息确定所述固态硬盘中的目标存储地址,并以所述目标存储地址为存储所述待存储文件数据的起始地址,对所述待存储文件数据进行存储;
更新单元,用于更新所述文件分配表中记录的簇索引的信息;其中,所述文件信息和更新的簇索引的信息为对应于所述待存储文件数据的元数据。
7.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1至5中任一项所述的方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至5中任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311785000.2A CN117453632B (zh) | 2023-12-25 | 2023-12-25 | 一种数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311785000.2A CN117453632B (zh) | 2023-12-25 | 2023-12-25 | 一种数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117453632A CN117453632A (zh) | 2024-01-26 |
CN117453632B true CN117453632B (zh) | 2024-04-12 |
Family
ID=89593256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311785000.2A Active CN117453632B (zh) | 2023-12-25 | 2023-12-25 | 一种数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117453632B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1632779A (zh) * | 2003-12-24 | 2005-06-29 | 华为技术有限公司 | 一种数据存储方法及装置 |
CN1959677A (zh) * | 2006-11-29 | 2007-05-09 | 北京中星微电子有限公司 | 一种文件系统的目录项整理方法 |
CN102426586A (zh) * | 2011-10-25 | 2012-04-25 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统中的fat文件存储方法 |
CN102508784A (zh) * | 2011-11-02 | 2012-06-20 | 杭州海康威视数字技术股份有限公司 | 视频监控设备中闪存卡的数据存储方法及其系统 |
CN103902669A (zh) * | 2014-03-17 | 2014-07-02 | 华中科技大学 | 一种基于不同存储介质的分离式文件系统 |
CN106294226A (zh) * | 2016-07-27 | 2017-01-04 | 中电海康集团有限公司 | 基于嵌入式stt‑mram的ssd控制器芯片、固态硬盘 |
CN115617762A (zh) * | 2022-09-21 | 2023-01-17 | 杭州海康威视数字技术股份有限公司 | 文件存储方法及设备 |
CN115902830A (zh) * | 2022-12-04 | 2023-04-04 | 桂林理工大学 | 测水LiDAR多通道高速实时同步采集及存储系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9496018B2 (en) * | 2015-04-01 | 2016-11-15 | International Business Machines Corporation | Nonvolatile memory interface for metadata shadowing |
-
2023
- 2023-12-25 CN CN202311785000.2A patent/CN117453632B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1632779A (zh) * | 2003-12-24 | 2005-06-29 | 华为技术有限公司 | 一种数据存储方法及装置 |
CN1959677A (zh) * | 2006-11-29 | 2007-05-09 | 北京中星微电子有限公司 | 一种文件系统的目录项整理方法 |
CN102426586A (zh) * | 2011-10-25 | 2012-04-25 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统中的fat文件存储方法 |
CN102508784A (zh) * | 2011-11-02 | 2012-06-20 | 杭州海康威视数字技术股份有限公司 | 视频监控设备中闪存卡的数据存储方法及其系统 |
CN103902669A (zh) * | 2014-03-17 | 2014-07-02 | 华中科技大学 | 一种基于不同存储介质的分离式文件系统 |
CN106294226A (zh) * | 2016-07-27 | 2017-01-04 | 中电海康集团有限公司 | 基于嵌入式stt‑mram的ssd控制器芯片、固态硬盘 |
CN115617762A (zh) * | 2022-09-21 | 2023-01-17 | 杭州海康威视数字技术股份有限公司 | 文件存储方法及设备 |
CN115902830A (zh) * | 2022-12-04 | 2023-04-04 | 桂林理工大学 | 测水LiDAR多通道高速实时同步采集及存储系统 |
Non-Patent Citations (2)
Title |
---|
A Low-Latency and High-Endurance MLC STT-MRAM-Based Cache System;Wei Zhao等;《 IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems》;20220422;122 - 135 * |
基于Ceph文件系统的元数据缓存备份;詹玲;方协云;李大平;万继光;;计算机工程;20170415(04);67-72 * |
Also Published As
Publication number | Publication date |
---|---|
CN117453632A (zh) | 2024-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9043334B2 (en) | Method and system for accessing files on a storage system | |
CN110998557B (zh) | 通过分布式存储器的高可用性数据库系统及方法 | |
KR101914019B1 (ko) | 분산 데이터베이스 시스템들을 위한 고속 장애 복구 | |
KR101771246B1 (ko) | 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피 | |
US8799601B1 (en) | Techniques for managing deduplication based on recently written extents | |
CN105843551B (zh) | 高性能和大容量储存重复删除中的数据完整性和损耗电阻 | |
CN106445405B (zh) | 一种面向闪存存储的数据访问方法及其装置 | |
CN110196818B (zh) | 缓存数据的方法、缓存设备和存储系统 | |
CN109445702A (zh) | 一种块级数据去重存储系统 | |
US20120290595A1 (en) | Super-records | |
CN114281762B (zh) | 一种日志存储加速方法、装置、设备及介质 | |
CN110399333B (zh) | 删除快照的方法、设备和计算机程序产品 | |
CN109358987A (zh) | 一种基于两级数据去重的备份集群 | |
CN113094374A (zh) | 分布式存储和检索方法、装置及计算机设备 | |
WO2016192045A1 (zh) | 存储器的访问系统及方法 | |
CN107133334B (zh) | 基于高带宽存储系统的数据同步方法 | |
CN109213760A (zh) | 非关系数据存储的高负载业务存储及检索方法 | |
CN117453632B (zh) | 一种数据存储方法及装置 | |
CN108021562B (zh) | 应用于分布式文件系统的存盘方法、装置及分布式文件系统 | |
CN115469810A (zh) | 一种数据获取方法、装置、设备及存储介质 | |
CN113835613B (zh) | 一种文件读取方法、装置、电子设备和存储介质 | |
CN114879915A (zh) | 一种面向应用观测的流式存储方法及装置 | |
CN113760171A (zh) | 一种元数据存储方法及装置 | |
US10664442B1 (en) | Method and system for data consistency verification in a storage system | |
CN111444179B (zh) | 数据处理方法、装置、存储介质及服务器 |
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 |