CN115599704A - 一种文件***元数据分离存储方法、装置及存储介质 - Google Patents
一种文件***元数据分离存储方法、装置及存储介质 Download PDFInfo
- Publication number
- CN115599704A CN115599704A CN202211519205.1A CN202211519205A CN115599704A CN 115599704 A CN115599704 A CN 115599704A CN 202211519205 A CN202211519205 A CN 202211519205A CN 115599704 A CN115599704 A CN 115599704A
- Authority
- CN
- China
- Prior art keywords
- request
- metadata
- mapping
- user data
- address
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
-
- 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/0643—Management 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/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种文件***元数据分离存储方法、装置及存储介质,该方法步骤包括:当文件***生成元数据IO请求时,为元数据添加指定标签;通过预先注册的虚拟存储设备截获元数据IO请求以及用户数据IO请求,并当虚拟存储设备截获到IO请求时,根据是否带有标签对IO请求类型进行鉴别,根据IO请求类型进行地址映射并将请求重定向到对应存储设备,其中如果为元数据IO请求则重定向至元数据存储设备,如果为用户数据请求则重定向到用户数据存储设备。本发明具有实现方法简单、成本低、元数据存取效率高且用户数据连续IO请求不会受元数据操作影响等优点。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种文件***元数据分离存储方法、装置及存储介质。
背景技术
在存储***中,物理存储空间由文件***进行管理。文件***为实现空间管理功能,除了保存用户数据,还需要对用户数据在磁盘上的分布情况、用户数据的尺寸、修改时间等信息进行记录,这些辅助的记录信息即为元数据。
相对于用户数据,元数据通常是少量而离散的。常用的文件***,如xfs、ext3/4、btrfs等等,均是将用户数据和元数据混合记录在同一个存储设备上统一管理,如图1所示。上述元数据存储方式会存在以下问题:
1、大容量的存储***通常采用机械磁盘作为存储设备。对于离散分布在磁盘上的元数据信息,在存取时需要频繁的移动磁头进行寻道操作,致使元数据访问效率低。
2、对于同时正在进行的用户数据IO,其原本连续、大量的IO操作会被碎片化的元数据请求打断,影响整个***的性能。
若考虑在文件***中直接进行元数据分离,则需要为文件***添加多存储设备管理功能,将元数据和用户数据分别存入不同的设备,这需要对文件***进行结构性调整,不仅开发难度高、工作量大,且难以确保可靠性。因此,亟需提供一种能够实现文件***元数据分离存储的方法,同时能够降低实现复杂度以及尽可能的减少对文件***本身的调整。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、成本低、无需对文件***进行结构性调整,且元数据存取效率高、用户数据连续IO请求不会受元数据操作影响的文件***元数据分离存储方法、装置及存储介质。
为解决上述技术问题,本发明提出的技术方案为:
一种文件***元数据分离存储方法,步骤包括:
当文件***生成元数据IO请求时,为元数据添加指定标签;
通过预先注册的虚拟存储设备截获元数据IO请求以及用户数据IO请求;
当截获到IO请求时,虚拟存储设备根据是否带有所述标签对IO请求类型进行鉴别,根据所述IO请求类型进行地址映射并将请求重定向到对应存储设备,其中如果为元数据IO请求则重定向至元数据存储设备,如果为用户数据请求则重定向到用户数据存储设备。
进一步的,如果是元数据IO请求,进行地址映射的步骤包括:
搜索预先建立的元数据映射记录树,如果搜索到当前元数据IO请求对应的映射节点,则根据搜索结果修改当前IO请求的地址为对应的映射地址,所述元数据映射记录树包括元数据映射记录以及对应的父子节点信息;
如果没有在所述元数据映射记录树中搜索到对应的映射节点,则搜索预先建立的用户数据映射记录树,根据是否搜索到当前元数据IO请求对应的映射节点分配元数据映射地址,并修改当前元数据IO请求的地址为对应分配的映射地址,所述用户数据映射记录树包括用户数据映射记录以及对应的父子节点信息。
进一步的,所述根据是否搜索到对应的映射节点分配元数据映射地址包括:
判断在所述用户数据映射记录树中是否有搜索到对应的映射节点,如果有则释放用户数据映射记录以及释放用户数据映射记录树节点后分配元数据映射地址,如果没有搜索到对应的映射节点则直接分配元数据映射地址,分配完元数据映射地址后更新元数据映射记录文件。
进一步的,如果是用户IO请求,进行地址映射的步骤包括:
搜索预先建立的用户数据映射记录树,如果搜索到当前用户IO请求对应的映射节点,则根据搜索结果修改用户IO请求的地址为对应的映射地址,所述用户数据映射记录树包括用户数据映射记录以及对应的父子节点信息;
如果在所述用户数据映射记录树中没有搜索到当前用户IO请求对应的映射节点,则搜索元数据映射记录树,根据是否搜索到当前用户IO请求对应的映射节点分配用户数据映射地址,并修改当前用户数据IO请求的地址为对应分配的映射地址,所述元数据映射记录树包括元数据映射记录以及对应的父子节点信息。
进一步的,所述根据是否搜索到当前用户IO请求对应的映射节点分配用户数据映射地址包括:
判断在所述元数据映射记录树中是否有搜索到对应的映射节点,如果有则释放元数据映射记录以及释放元数据映射记录树节点后分配用户数据映射地址,如果没有搜索到对应的映射节点则直接分配用户数据映射地址,分配完用户数据映射地址后更新用户数据映射记录文件。
进一步的,所述映射记录树为以虚拟设备磁盘偏移量为索引的平衡二叉树,其中每一个节点包括虚拟设备磁盘偏移量、数据长度、物理存储器偏移量、数据映射记录编号、父节点以及子节点信息。
进一步的,所述通过预先注册的虚拟存储设备截获元数据IO请求以及用户数据IO请求前还包括启动虚拟存储设备,通过从配置文件读取物理设备信息,加载数据映射记录到虚拟存储设备后分别建立元数据映射记录树、用户数据映射记录树,所述元数据映射记录树包括元数据映射记录以及对应的父子节点信息,所述用户数据映射记录树包括用户数据映射记录以及对应的父子节点信息。
进一步的,所述虚拟存储设备预先注册在通用块设备层上,所述虚拟存储设备的映射驱动程序具有从指定位置加载预设映射规则的功能。
一种文件***元数据分离存储装置,包括:
标签添加模块,用于当文件***生成元数据IO请求时,为元数据添加指定标签;
虚拟存储设备,用于截获元数据IO请求以及用户数据IO请求,并当截获到IO请求时,根据是否带有所述标签对IO请求类型进行鉴别,根据所述IO请求类型进行地址映射并将请求重定向到对应存储设备,其中如果为元数据IO请求则重定向至元数据存储设备,如果为用户数据请求则重定向到用户数据存储设备。
一种存储有计算机程序的计算机可读存储介质,所述计算机程序执行时实现如上述方法。
与现有技术相比,本发明的优点在于:本发明通过在文件***提交IO请求的时候,针对元数据请求添加指定的标签,由一虚拟存储设备截获IO请求并进行鉴别,根据IO请求类型进行地址映射并将请求重定向到不同存储设备意分离存储与访问,实现对真实存储设备的管理和IO请求的映射、转发,能够在尽可能少的修改文件***程序的条件下实现对元数据的分离存储,使用户数据的连续IO请求不受元数据操作的影响,同时大幅提高元数据存取速度,改善整体操作性能。
附图说明
图1是传统文件***中元数据与用户数据的存储原理示意图。
图2是本实施例文件***元数据分离存储方法的实现流程示意图。
图3是本实施例中建立的数据映射记录二叉树的结构原理示意图。
图4是本实施例中存储设备数据结构及可用空间管理机制的原理示意图,其中(a)表示存储设备的磁盘空间配置,(b)表示空间位图的具体表示。
图5是本实施例中虚拟块设备加载的流程示意图。
图6是本发明具体应用实施例中拦截BIO请求的原理示意图。
图7是本发明具体应用实施例中实现文件***元数据分离存储的详细流程示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图2所示,本实施例文件***元数据分离存储方法的步骤包括:
S01.当文件***生成元数据IO请求时,为元数据添加指定标签;
S02.通过预先注册的虚拟存储设备截获元数据IO请求以及用户数据IO请求,并当虚拟存储设备截获到IO请求时,根据是否带有标签对IO请求类型进行鉴别,根据IO请求类型进行地址映射并将请求重定向到对应存储设备,其中如果为元数据IO请求则重定向至元数据存储设备,如果为用户数据请求则重定向到用户数据存储设备。
本实施例通过在文件***和真实的存储设备之间添加一个虚拟存储设备,当文件***提交IO请求的时候,针对元数据请求添加指定的标签,由该虚拟存储设备(驱动程序)截获IO请求并进行鉴别,根据IO请求类型进行地址映射并将请求重定向到不同存储设备以分离存储与访问,实现对真实存储设备的管理和IO请求的映射、转发,即由虚拟存储设备向上对文件***隐藏具体的物理设备,向下将元数据的IO请求和用户数据IO请求重定向到不同的存储设备,从而实现元数据与用户数据发往不同的设备,能够在尽可能少的修改文件***程序的条件下实现对元数据的分离存储,使用户数据的连续IO请求不受元数据操作的影响,同时大幅提高元数据存取速度,改善整体操作性能。
由虚拟存储设备的驱动程序将元数据操作映射到更小空间的高速存储器执行IO。
上述元数据存储设备具体可以为高性能的固态存储设备等,用户数据存储设备可以为大容量的机械存储设备,以使得可以将元数据操作映射到更小空间的高速存储器执行IO,用户数据操作由大容量的机械存储设备执行,平衡数据存储实现的性能和成本。
本实施例步骤S01中,具体通过简单调整修文件***,以使得在生成元数据IO请求时在请求的私有字段中附加元数据标记,用户数据IO请求则保持原样不作修改,虚拟存储设备的驱动程序在后续处理流程中根据该标记,即可鉴别出请求是元数据IO请求还是用户数据BIO请求。
本实施例虚拟存储设备具体可采用虚拟块设备(block device)实现,虚拟存储设备的映射驱动程序具有从指定位置加载预设映射规则的功能,通过虚拟块设备实现对元数据和用户数据进行拦截和重定向到不同存储设备,该虚拟存储设备事先注册到通用块设备层上。通过在文件***和真实的存储设备之间添加一个虚拟的存储设备,文件***将所有的块设备IO请求(Block IO request,BIO请求)发往该虚拟块设备,虚拟块设备接收来自文件***的元数据BIO请求和用户数据BIO请求,由虚拟存储设备代替传统流程中的真实存储设备,向文件***提供一个统一的地址空间,并管理组成该空间的真实存储设备。该虚拟块设备驱动程序按照用户设定的配置,可以将元数据IO请求重定向到所需的元数据存储设备(如小容量的高速固态存储设备),将用户数据IO请求定向到所需的用户数据存储设备(如大容量机械磁盘阵列)。
本实施例中通过虚拟块设备实现对元数据和用户数据IO请求拦截和重定向前还包括启动虚拟存储设备,通过从配置文件读取物理设备信息,加载数据映射记录到虚拟存储设备后分别建立元数据映射记录树、用户数据映射记录树,元数据映射记录树包括元数据映射记录以及对应的父子节点信息,用户数据映射记录树包括用户数据映射记录以及对应的父子节点信息,其中父子节点信息包括父节点、左子节点、右子节点信息等。
如图3所示,数据映射树(元数据映射记录树、用户数据映射记录树)是一颗以虚拟设备磁盘偏移量为索引的平衡二叉树,以用于根据虚拟设备偏移量快速搜索映射记录,数据映射树中每一个节点包含虚拟设备磁盘偏移量、数据长度、物理存储器偏移量、数据映射记录编号、父节点、左子节点、右子节点信息等。
如表1所示,在具体应用实施例中数据映射记录文件中每一条记录长度固定,包含虚拟设备磁盘偏移量、数据长度、数据存储器偏移量、数据映射记录号信息等,即为映射记录在磁盘上的存储形式。
表1:数据映射记录表
数据映射记录号 | 虚拟设备偏移量 | 数据长度 | 数据存储器偏移量 |
0 | 347136 | 4096 | 0 |
1 | 321536 | 1024 | 4096 |
2 | 470016 | 2048 | 8192 |
…… | …… | …… | …… |
1024 | 33554432 | 512 | 524288 |
如图4所示,其中,图4中(a)表示存储设备的磁盘空间配置,图4中(b)表示空间位图的具体表示,本实施例中在元数据存储设备和用户数据存储设备的前端分配有两个固定的磁盘空间,分别用来存储映射记录和空间位图,以位图的形式实现对空间的管理。空间位图具体以1个二进制位代表4096字节的存储空间,值0表示空间未使用,值1表示空间已使用。
在具体应用实施例中,如图5所示,本实施例实现虚拟块设备(虚拟存储设备)的加载过程为:
步骤1.虚拟块设备启动
步骤2.从配置文件(存储于操作***配置文件目录)读取物理设备信息,设置元数据存储设备和用户数据存储设备。
步骤3.从元数据存储设备的映射记录文件中加载元数据映射记录。
步骤4.将元数据映射记录***内存中的元数据映射二叉树。
步骤5.从用户数据存储设备的映射记录文件中加载用户数据映射记录。
步骤6.将用户数据映射记录***内存中的用户数据映射二叉树。
步骤7.虚拟块设备向操作***的注册操作完成。
上述各步骤之间并不限定时序关系,各步骤之间的先后顺序是可以调整的,例如元数据与用户数据映射二叉树可以是先后建立,也可以是同时建立的,具体执行时序可以根据实际需求配置。
由于文件***发出的请求都处于同一个地址空间,而元数据分离要求用户数据和元数据分别存储到对应的设备上,因此需要对地址空间进行修改,且针对元数据存储设备和用户数据存储设备在空间上的差异,需要将来自文件***的虚拟地址IO请求按照元数据和用户数据进行分类后,各自重新映射到真实物理设备的地址空间中。本实施例步骤S02中,在虚拟存储设备注册到通用块设备层的时候,其对应的映射驱动程序会从指定位置加载用户定义的映射规则;在读写流程中,通过启动映射驱动程序对IO请求进行鉴别,根据映射规则将请求的地址映射到对应存储设备的地址空间中,使用新的地址将元数据IO请求重定向至元数据存储设备、将用户数据重定向到用户数据存储设备。
本实施例步骤S02中如果是元数据IO请求,进行地址映射的步骤包括:
S211.搜索预先建立的元数据映射记录树,如果搜索到当前元数据IO请求对应的映射节点,则根据搜索结果修改当前IO请求的地址为对应的映射地址,元数据映射记录树包括元数据映射记录以及对应的父子节点信息;
S212.如果没有在元数据映射记录树中搜索到对应的映射节点,则搜索预先建立的用户数据映射记录树,根据是否搜索到当前元数据IO请求对应的映射节点分配元数据映射地址,并修改当前元数据IO请求的地址为对应分配的映射地址,用户数据映射记录树包括用户数据映射记录以及对应的父子节点信息。
上述步骤S212中根据是否搜索到对应的映射节点分配元数据映射地址具体包括:
判断在用户数据映射记录树中是否有搜索到对应的映射节点,如果有则释放用户数据映射记录以及释放用户数据映射记录树节点后分配元数据映射地址,如果没有搜索到对应的映射节点则直接分配元数据映射地址,分配完元数据映射地址后更新元数据映射记录文件。
本实施例具体对于元数据IO请求,如果在元数据映射记录树中找到对应的映射节点,则可以直接修改请求的地址为映射后地址(具体可通过修改请求的磁盘偏移量为映射后的磁盘偏移量),如果没有找到对应的映射节点,则进一步搜索用户数据映射记录树,如果仍然不存在相应的节点,表明当前的IO请求需要新分配空间,则可以从元数据存储器的可用空间中分配满足当前IO请求的空间;如果在用户数据映射二叉树中找到了与当前IO请求地址对应的节点,表明当前的请求地址曾用于存储用户数据,则释放用户数据映射记录(将用户数据存储设备空间位图相应位标为可用,从用户数据映射文件中删除记录,从用户数据映射记录树中删除该映射节点),然后再分配元数据映射地址,即可以实现元数据的地址映射与重定向。
本实施例步骤S02中,如果是用户IO请求,进行地址映射的步骤包括:
S221.搜索预先建立的用户数据映射记录树,如果搜索到当前用户IO请求对应的映射节点,则根据搜索结果修改用户IO请求的地址为对应的映射地址,用户数据映射记录树包括用户数据映射记录以及对应的父子节点信息;
S222.如果在用户数据映射记录树中没有搜索到当前用户IO请求对应的映射节点,则搜索元数据映射记录树,根据是否搜索到当前用户IO请求对应的映射节点分配用户数据映射地址,并修改当前用户数据IO请求的地址为对应分配的映射地址,元数据映射记录树包括元数据映射记录以及对应的父子节点信息。
上述步骤S222中根据是否搜索到当前用户IO请求对应的映射节点分配用户数据映射地址包括:
判断在元数据映射记录树中是否有搜索到对应的映射节点,如果有则释放元数据映射记录以及释放元数据映射记录树节点后分配用户数据映射地址,如果没有搜索到对应的映射节点则直接分配用户数据映射地址,分配完用户数据映射地址后更新用户数据映射记录文件。
本实施例具体对于用户数据请求,先根据用户数据请求的磁盘起点偏移量搜索用户数据映射记录树,如果找到对应的映射节点,则直接修改请求的地址为映射后地址(具体可修改请求的磁盘偏移量为映射后的磁盘偏移量);如果没有找到对应的映射节点,则进一步搜索元数据映射记录树,如果仍然不存在相应的节点,表明当前的IO请求需要新分配空间,从用户数据存储器的可用空间中分配满足当前IO请求的空间;如果在元数据映射记录树中找到了与当前IO请求地址对应的节点,表明其当前的请求地址曾用于存储元数据,则释放元数据映射记录(将元数据存储设备空间位图相应位标为可用,从元数据映射文件中删除记录,从元数据映射记录树中删除该映射节点),然后为其分配用户数据映射地址,即可以实现用户数据的地址映射与重定向。
本实施例通过上述步骤,可以使元数据和用户数据存储设备通过虚拟存储设备地址查找到真实数据所在的位置,从而使两种数据都能够正确进行存储和读取。
在具体应用实施例中,如图6所示,虚拟存储设备采用块设备,将文件***的元数据BIO请求和用户数据BIO请求发送至虚拟块设备,如图7所示,虚拟块设备中虚拟快设备驱动程采用本发明上述映射操作实现不同数据地址映射的详细步骤为:
步骤a.从操作***的BIO请求的私有数据中提取元数据标志。
步骤b.如果检测到元数据标志,则修改目标磁盘字段,将BIO请求重定向到元数据存储设备。
针对元数据请求的地址映射与重定向:
步骤c.针对元数据请求的磁盘起点偏移量搜索元数据映射二叉树,如果找到对应的映射节点,则修改请求的磁盘偏移量为映射后的磁盘偏移量。
步骤d.如果没有找到对应的映射节点,则进一步搜索用户数据映射二叉树,如果仍然不存在相应的节点,表明当前的BIO请求需要新分配空间,从元数据存储器的可用空间中分配满足当前BIO请求的空间;如果在用户数据映射二叉树中找到了与BIO请求地址对应的节点,释放用户数据映射记录以及从用户数据映射记录树中删除该映射节点,然后为其分配元数据映射地址。
步骤e.向元数据映射二叉树***新的映射记录。
步骤f.更新元数据映射记录文件。
步骤g.修改BIO请求的磁盘偏移量为映射后的磁盘偏移量。
步骤h.发送元数据BIO请求。
步骤i.如果步骤b未检测到元数据标记,修改目标磁盘为用户数据存储设备。
步骤j.针对用户数据请求的磁盘起点偏移量搜索用户数据映射二叉树,如果找到对应的映射节点,则修改请求的磁盘偏移量为映射后的磁盘偏移量。
步骤k.如果没有找到对应的映射节点,则进一步搜索元数据映射二叉树,如果仍然不存在相应的节点,说明当前的BIO请求需要新分配空间,从用户数据存储器的可用空间中分配满足当前BIO请求的空间;如果在元数据映射二叉树中找到了与BIO请求地址对应的节点,释放元数据映射记录以及从元数据映射记录树中删除该映射节点,然后为其分配用户数据映射地址。
步骤l.向用户数据映射二叉树***新的映射记录。
步骤m.更新用户数据映射记录文件。
步骤n.修改BIO请求的磁盘偏移量为映射后的磁盘偏移量。
步骤o.发送用户数据BIO请求。
本实施例文件***元数据分离存储装置包括:
标签添加模块,用于当文件***生成元数据BIO请求时,为元数据添加指定标签;
虚拟存储设备,用于截获元数据BIO请求以及用户数据BIO请求,并当截获到BIO请求时,根据是否带有标签对BIO请求类型进行鉴别,根据BIO请求类型进行地址映射并将请求重定向到对应存储设备,其中如果为元数据BIO请求则重定向至元数据存储设备,如果为用户数据请求则重定向到用户数据存储设备。
上述标签添加模块可以采用在文件***中增设标签添加功能实现,仅需要简单修改文件***,而无需结构性调整文件***,即可以实现元数据与用户数据的分离存储与访问。
本实施例文件***元数据分离存储装置与上述文件***元数据分离存储方法对应,在此不再一一赘述。
本实施例还提供存储有计算机程序的计算机可读存储介质,计算机程序执行时实现如上述方法。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (10)
1.一种文件***元数据分离存储方法,其特征在于,步骤包括:
当文件***生成元数据IO请求时,为元数据添加指定标签;
通过预先注册的虚拟存储设备截获元数据IO请求以及用户数据IO请求;
当截获到IO请求时,虚拟存储设备根据是否带有所述标签对IO请求类型进行鉴别,根据所述IO请求类型进行地址映射并将请求重定向到对应存储设备,其中如果为元数据IO请求则重定向至元数据存储设备,如果为用户数据请求则重定向到用户数据存储设备。
2.根据权利要求1所述的文件***元数据分离存储方法,其特征在于,如果是元数据IO请求,进行地址映射的步骤包括:
搜索预先建立的元数据映射记录树,如果搜索到当前元数据IO请求对应的映射节点,则根据搜索结果修改当前IO请求的地址为对应的映射地址,所述元数据映射记录树包括元数据映射记录以及对应的父子节点信息;
如果没有在所述元数据映射记录树中搜索到对应的映射节点,则搜索预先建立的用户数据映射记录树,根据是否搜索到当前元数据IO请求对应的映射节点分配元数据映射地址,并修改当前元数据IO请求的地址为对应分配的映射地址,所述用户数据映射记录树包括用户数据映射记录以及对应的父子节点信息。
3.根据权利要求2所述的文件***元数据分离存储方法,其特征在于,所述根据是否搜索到对应的映射节点分配元数据映射地址包括:
判断在所述用户数据映射记录树中是否有搜索到对应的映射节点,如果有则释放用户数据映射记录以及释放用户数据映射记录树节点后分配元数据映射地址,如果没有搜索到对应的映射节点则直接分配元数据映射地址,分配完元数据映射地址后更新元数据映射记录文件。
4.根据权利要求1所述的文件***元数据分离存储方法,其特征在于,如果是用户IO请求,进行地址映射的步骤包括:
搜索预先建立的用户数据映射记录树,如果搜索到当前用户IO请求对应的映射节点,则根据搜索结果修改用户IO请求的地址为对应的映射地址,所述用户数据映射记录树包括用户数据映射记录以及对应的父子节点信息;
如果在所述用户数据映射记录树中没有搜索到当前用户IO请求对应的映射节点,则搜索元数据映射记录树,根据是否搜索到当前用户IO请求对应的映射节点分配用户数据映射地址,并修改当前用户数据IO请求的地址为对应分配的映射地址,所述元数据映射记录树包括元数据映射记录以及对应的父子节点信息。
5.根据权利要求4所述的文件***元数据分离存储方法,其特征在于,所述根据是否搜索到当前用户IO请求对应的映射节点分配用户数据映射地址包括:
判断在所述元数据映射记录树中是否有搜索到对应的映射节点,如果有则释放元数据映射记录以及释放元数据映射记录树节点后分配用户数据映射地址,如果没有搜索到对应的映射节点则直接分配用户数据映射地址,分配完用户数据映射地址后更新用户数据映射记录文件。
6.根据权利要求2~5中任意一项所述的文件***元数据分离存储方法,其特征在于,所述映射记录树为以虚拟设备磁盘偏移量为索引的平衡二叉树,其中每一个节点包括虚拟设备磁盘偏移量、数据长度、物理存储器偏移量、数据映射记录编号、父节点以及子节点信息。
7.根据权利要求1~5中任意一项所述的文件***元数据分离存储方法,其特征在于,所述通过预先注册的虚拟存储设备截获元数据IO请求以及用户数据IO请求前还包括启动虚拟存储设备,通过从配置文件读取物理设备信息,加载数据映射记录到虚拟存储设备后分别建立元数据映射记录树、用户数据映射记录树,所述元数据映射记录树包括元数据映射记录以及对应的父子节点信息,所述用户数据映射记录树包括用户数据映射记录以及对应的父子节点信息。
8.根据权利要求1~5中任意一项所述的文件***元数据分离存储方法,其特征在于,所述虚拟存储设备预先注册在通用块设备层上,所述虚拟存储设备的映射驱动程序具有从指定位置加载预设映射规则的功能。
9.一种文件***元数据分离存储装置,其特征在于,包括:
标签添加模块,用于当文件***生成元数据IO请求时,为元数据添加指定标签;
虚拟存储设备,用于截获元数据IO请求以及用户数据IO请求,并当截获到IO请求时,根据是否带有所述标签对IO请求类型进行鉴别,根据所述IO请求类型进行地址映射并将请求重定向到对应存储设备,其中如果为元数据IO请求则重定向至元数据存储设备,如果为用户数据请求则重定向到用户数据存储设备。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序执行时实现如权利要求1~8中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211519205.1A CN115599704B (zh) | 2022-11-30 | 2022-11-30 | 一种文件***元数据分离存储方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211519205.1A CN115599704B (zh) | 2022-11-30 | 2022-11-30 | 一种文件***元数据分离存储方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115599704A true CN115599704A (zh) | 2023-01-13 |
CN115599704B CN115599704B (zh) | 2023-03-17 |
Family
ID=84853244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211519205.1A Active CN115599704B (zh) | 2022-11-30 | 2022-11-30 | 一种文件***元数据分离存储方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599704B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070094269A1 (en) * | 2005-10-21 | 2007-04-26 | Mikesell Paul A | Systems and methods for distributed system scanning |
CN104517067A (zh) * | 2014-12-30 | 2015-04-15 | 华为技术有限公司 | 访问数据的方法、装置及*** |
CN104536903A (zh) * | 2014-12-25 | 2015-04-22 | 华中科技大学 | 一种按数据属性分类存放的混合存储方法及*** |
US20170083549A1 (en) * | 2015-09-14 | 2017-03-23 | Emc Corporation | Tracing garbage collector for search trees under multi-version concurrency control |
CN109299111A (zh) * | 2018-11-14 | 2019-02-01 | 郑州云海信息技术有限公司 | 一种元数据查询方法、装置、设备及计算机可读存储介质 |
CN109359062A (zh) * | 2018-11-02 | 2019-02-19 | 郑州云海信息技术有限公司 | 一种元数据读缓存方法、装置及设备 |
CN109992708A (zh) * | 2019-04-12 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种元数据查询的方法、装置、设备以及存储介质 |
CN111125447A (zh) * | 2019-12-22 | 2020-05-08 | 北京浪潮数据技术有限公司 | 一种元数据访问方法、装置、设备及可读存储介质 |
CN113946291A (zh) * | 2021-10-20 | 2022-01-18 | 重庆紫光华山智安科技有限公司 | 数据访问方法、装置、存储节点及可读存储介质 |
-
2022
- 2022-11-30 CN CN202211519205.1A patent/CN115599704B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070094269A1 (en) * | 2005-10-21 | 2007-04-26 | Mikesell Paul A | Systems and methods for distributed system scanning |
CN104536903A (zh) * | 2014-12-25 | 2015-04-22 | 华中科技大学 | 一种按数据属性分类存放的混合存储方法及*** |
CN104517067A (zh) * | 2014-12-30 | 2015-04-15 | 华为技术有限公司 | 访问数据的方法、装置及*** |
US20170083549A1 (en) * | 2015-09-14 | 2017-03-23 | Emc Corporation | Tracing garbage collector for search trees under multi-version concurrency control |
CN109359062A (zh) * | 2018-11-02 | 2019-02-19 | 郑州云海信息技术有限公司 | 一种元数据读缓存方法、装置及设备 |
CN109299111A (zh) * | 2018-11-14 | 2019-02-01 | 郑州云海信息技术有限公司 | 一种元数据查询方法、装置、设备及计算机可读存储介质 |
CN109992708A (zh) * | 2019-04-12 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种元数据查询的方法、装置、设备以及存储介质 |
CN111125447A (zh) * | 2019-12-22 | 2020-05-08 | 北京浪潮数据技术有限公司 | 一种元数据访问方法、装置、设备及可读存储介质 |
CN113946291A (zh) * | 2021-10-20 | 2022-01-18 | 重庆紫光华山智安科技有限公司 | 数据访问方法、装置、存储节点及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
张震伟等: "基于超元数据缓存的高速数据访问***", 《广东通信技术》 * |
Also Published As
Publication number | Publication date |
---|---|
CN115599704B (zh) | 2023-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11068455B2 (en) | Mapper tree with super leaf nodes | |
JP6767115B2 (ja) | ボリューム動作のための安全装置 | |
EP3814928B1 (en) | System and method for early removal of tombstone records in database | |
CN110799960A (zh) | 数据库租户迁移的***和方法 | |
US11157299B2 (en) | Thin provisioning virtual desktop infrastructure virtual machines in cloud environments without thin clone support | |
CN109445685B (zh) | 一种用户态文件***处理方法 | |
CN103399823B (zh) | 业务数据的存储方法、设备和*** | |
US11288287B2 (en) | Methods and apparatus to partition a database | |
CN112912868A (zh) | 用于批量移除数据库中的记录的***和方法 | |
WO2023045407A1 (zh) | 一种i/o请求处理方法、装置、设备及可读存储介质 | |
CN111007990A (zh) | 一种对快照***中数据块引用进行快速定位的定位方法 | |
CN112912870A (zh) | 租户标识符的转换 | |
US20240160603A1 (en) | Data input/output method using storage node-based key-value store | |
US8239427B2 (en) | Disk layout method for object-based storage devices | |
US7509473B2 (en) | Segmented storage system mapping | |
US20210349918A1 (en) | Methods and apparatus to partition a database | |
CN111309262A (zh) | 一种分布式存储缓存读取和写入方法 | |
CN113297105A (zh) | 一种转换地址的缓存处理方法及装置 | |
CN115599704B (zh) | 一种文件***元数据分离存储方法、装置及存储介质 | |
JP2005108239A (ja) | 階層的データ構造体にデータを記憶する記憶システム | |
US20230409235A1 (en) | File system improvements for zoned storage device operations | |
US6842843B1 (en) | Digital data storage subsystem including arrangement for increasing cache memory addressability | |
US10235373B2 (en) | Hash-based file system | |
CN117873405B (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
CN111694504B (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 |