CN109032533A - 一种数据存储方法、装置和设备 - Google Patents
一种数据存储方法、装置和设备 Download PDFInfo
- Publication number
- CN109032533A CN109032533A CN201810995420.6A CN201810995420A CN109032533A CN 109032533 A CN109032533 A CN 109032533A CN 201810995420 A CN201810995420 A CN 201810995420A CN 109032533 A CN109032533 A CN 109032533A
- Authority
- CN
- China
- Prior art keywords
- index
- forwarding
- logical device
- table item
- shared drive
- 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
Classifications
-
- 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/0608—Saving storage space on storage systems
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据存储方法、装置和设备,该方法包括:在接收到数据存储请求时,从索引范围的所有索引中选择状态为未占用的第一索引;其中,所述索引范围的每个索引对应共享内存中的一个转发表项;从所述共享内存中确定与所述第一索引对应的转发表项,并在所述转发表项中记录所述数据存储请求对应的数据,将所述第一索引的状态更新为占用;在逻辑设备的数据结构中记录所述第一索引;其中,所述数据结构用于记录所述共享内存中被所述逻辑设备使用的转发表项的索引。通过本申请的技术方案,可以节省内存资源,避免内存空间的浪费,提高内存空间的利用率。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种数据存储方法、装置和设备。
背景技术
MDC(Multitenant Device Context,多租户设备环境)虚拟化技术,能够将一个物理设备划分成多个逻辑设备,每个逻辑设备拥有自己的软硬件资源,能够独立运行、独立转发、独立提供业务。而且,在创建、启动、重启或者删除一个逻辑设备时,只操作该逻辑设备的资源,不会影响其它逻辑设备的运行。
当物理设备被虚拟成多个逻辑设备时,所有逻辑设备共享整机资源。例如,物理设备支持n个转发表项,所有逻辑设备共享这n个转发表项,每个逻辑设备最多申请n个转发表项,且所有逻辑设备申请的转发表项总和不超过n个。
在逻辑设备被创建时,该逻辑设备需要申请用于存储转发表项的内存,由于逻辑设备最多申请n个转发表项,因此,该内存的大小需要能够存储n个转发表项。例如,在物理设备被虚拟成逻辑设备1和逻辑设备2时,该逻辑设备1申请内存1,且该内存1能够存储n个转发表项,该逻辑设备2申请内存2(内存2的大小与内存1的大小相同),且该内存2能够存储n个转发表项。
由于所有逻辑设备申请的转发表项总和不超过n个,假设逻辑设备1和逻辑设备2均申请n/2个转发表项,则逻辑设备1的转发表项只占用内存1总空间的一半,逻辑设备2的转发表项只占用内存2总空间的一半。显然,上述方式导致内存1和内存2空闲,造成内存资源的浪费,即浪费系统的内存空间。
发明内容
本申请提供一种数据存储方法,物理设备被虚拟成至少一个逻辑设备,所述物理设备包括共享内存,所述共享内存用于存储所有逻辑设备的转发表项,所述方法应用于所有逻辑设备中任一的逻辑设备,所述方法包括:
在接收到数据存储请求时,从索引范围的所有索引中选择状态为未占用的第一索引;其中,所述索引范围的每个索引对应共享内存中的一个转发表项;
从所述共享内存中确定与所述第一索引对应的转发表项,并在所述转发表项中记录所述数据存储请求对应的数据,并将所述第一索引的状态更新为占用;
在所述逻辑设备的数据结构中记录所述第一索引;其中,所述数据结构用于记录所述共享内存中被所述逻辑设备使用的转发表项的索引。
本申请提供一种数据存储方法,所述方法应用于物理设备,所述物理设备被虚拟成至少一个逻辑设备,所述方法包括:
申请共享内存,所述共享内存用于存储所有逻辑设备的转发表项;
生成索引信息表,并将所述索引信息表存储到所述共享内存中;
生成优先级信息表,并将所述优先级信息表存储到所述共享内存中;
其中,所述索引信息表用于记录索引与状态的对应关系,且所述索引信息表中的每个索引对应所述共享内存中的一个转发表项;所述优先级信息表包括公共索引范围,所述优先级信息表还包括预留索引范围与逻辑设备的对应关系;所述预留索引范围内的每个索引对应的转发表项被所述逻辑设备独占,所述公共索引范围内的每个索引对应的转发表项被所有逻辑设备共享。
本申请提供一种数据存储装置,物理设备被虚拟成至少一个逻辑设备,所述物理设备包括共享内存,所述共享内存用于存储所有逻辑设备的转发表项,所述装置应用于所有逻辑设备中任一的逻辑设备,所述装置包括:
选择模块,用于在接收到数据存储请求时,从索引范围的所有索引中选择状态为未占用的第一索引;其中,所述索引范围的每个索引对应共享内存中的一个转发表项;
处理模块,用于从所述共享内存中确定与所述第一索引对应的转发表项,并在所述转发表项中记录所述数据存储请求对应的数据,并将所述第一索引的状态更新为占用;
记录模块,用于在所述逻辑设备的数据结构中记录所述第一索引;所述数据结构用于记录所述共享内存中被所述逻辑设备使用的转发表项的索引。
本申请提供一种物理设备,所述物理设备被虚拟成至少一个逻辑设备,所述物理设备包括:处理器;其中,所述处理器用于:
申请共享内存,所述共享内存用于存储所有逻辑设备的转发表项;
生成索引信息表,并将所述索引信息表存储到所述共享内存中;
生成优先级信息表,并将所述优先级信息表存储到所述共享内存中;
其中,所述索引信息表用于记录索引与状态的对应关系,且所述索引信息表中的每个索引对应所述共享内存中的一个转发表项;所述优先级信息表包括公共索引范围,所述优先级信息表还包括预留索引范围与逻辑设备的对应关系;所述预留索引范围内的每个索引对应的转发表项被所述逻辑设备独占,所述公共索引范围内的每个索引对应的转发表项被所有逻辑设备共享。
基于上述技术方案,本申请实施例中,物理设备可以包括共享内存,该共享内存用于存储所有逻辑设备的转发表项,在逻辑设备被创建时,该逻辑设备不再申请用于存储转发表项的内存,而是直接使用共享内存的转发表项,从而节省内存资源,避免内存空间的浪费,可以提高内存空间的利用率。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1是本申请一种实施方式中的应用场景示意图;
图2是本申请一种实施方式中的数据存储方法的流程图;
图3是本申请一种实施方式中的数据查询方法的流程图;
图4是本申请一种实施方式中的数据存储装置的结构图;
图5是本申请一种实施方式中的逻辑设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例提出一种数据存储方法,参见图1所示,为本实施例的应用场景示意图,通过MDC虚拟化技术,可以将物理设备10(如路由器、交换机等)虚拟成逻辑设备11和逻辑设备12,图1以两个逻辑设备为例,物理设备10还可以被虚拟成一个、三个、甚至更多的逻辑设备,对此数量不做限制。
本实施例中,物理设备10可以申请共享内存,该共享内存用于存储所有逻辑设备的转发表项,即所有逻辑设备共同使用共享内存中的转发表项,各逻辑设备不再申请用于存储转发表项的内存。例如,假设物理设备10支持n个转发表项,所有逻辑设备共享这n个转发表项,则共享内存能够存储n个转发表项。
参见表1所示,为通过共享内存存储转发表项的一个示例,以n为100为例,在实际应用中,n还可以为其它取值,对此不做限制。在表1中,是以转发表项用于记录目的IP地址、出接口、下一跳、路由开销为例,当然,转发表项还可以记录其它内容,表1只是一个示例,对于转发表项的内容不做限制。
表1
索引 | 目的IP地址 | 下一跳 | 路由开销 | 出接口 |
1 | IP地址1 | IP地址A | 3 | 接口1 |
2 | IP地址2 | IP地址B | 4 | 接口2 |
… | … | … | … | … |
100 |
综上所述,通过共享内存来存储所有逻辑设备的转发表项,在逻辑设备被创建时,该逻辑设备不再申请用于存储转发表项的内存,而是使用共享内存的转发表项,从而节省内存资源,避免内存空间的浪费,提高内存空间的利用率。
例如,在传统方式中,假设物理设备10被虚拟成逻辑设备11和逻辑设备12,则逻辑设备11申请大小为K*n的内存,逻辑设备12也申请大小为K*n的内存,显然,逻辑设备的数量越多,则申请的内存也就越大。本实施例中,无论物理设备10被虚拟成几个逻辑设备,物理设备10均可以申请共享内存,而各逻辑设备不再申请大小为K*n的内存,从而可以节省内存资源。
在一个例子中,可以将所有转发表项划分为预留转发表项和公共转发表项,预留转发表项被逻辑设备独占,而公共转发表项可以被所有逻辑设备共享。例如,将索引1-索引20的转发表项作为逻辑设备11的预留转发表项,也就是说,只有逻辑设备11能够使用这些转发表项,其它逻辑设备不能使用这些转发表项。此外,将索引21-索引40的转发表项作为逻辑设备12的预留转发表项,也就是说,只有逻辑设备12能够使用这些转发表项,其它逻辑设备不能使用这些转发表项。此外,将索引41-索引100的转发表项作为公共转发表项,也就是说,所有逻辑设备(如逻辑设备11和逻辑设备12等)均能够使用这些转发表项。
进一步的,为了使逻辑设备获知预留转发表项和公共转发表项,则物理设备还可以生成优先级信息表,并将优先级信息表存储到共享内存中,逻辑设备可以从共享内存中读取优先级信息表,从而获知预留转发表项和公共转发表项。
其中,优先级信息表可以包括公共索引范围,且优先级信息表还可以包括预留索引范围与逻辑设备的对应关系。预留索引范围内的每个索引对应的转发表项被该逻辑设备独占,公共索引范围内的每个索引对应的转发表项被所有逻辑设备共享。参见表2所示,为优先级信息表的一个示例。逻辑设备11对应的预留索引范围是索引1-索引20,也就是说,索引1-索引20的转发表项是逻辑设备11的预留转发表项,逻辑设备12的预留索引范围是索引21-索引40,也就是说,索引21-索引40的转发表项是逻辑设备12的预留转发表项。此外,公共索引范围可以是索引41-索引100,也就是说,索引41-索引100的转发表项是公共转发表项,逻辑设备11和逻辑设备12均可以使用公共转发表项。
表2
类型 | 索引范围 | 逻辑设备 |
预留 | 索引1-索引20 | 逻辑设备11 |
预留 | 索引21-索引40 | 逻辑设备12 |
公共 | 索引41-索引100 |
在一个例子中,为获知哪些转发表项被占用,哪些转发表项未被占用,继而使用未被占用的转发表项存储数据,则物理设备还可以生成索引信息表,并将索引信息表存储到共享内存中,逻辑设备可以从共享内存中读取索引信息表,从而获知哪些转发表项被占用,哪些转发表项未被占用。
其中,该索引信息表用于记录索引与状态的对应关系,或者,该索引信息表用于记录索引、状态与逻辑设备的对应关系,该索引信息表中的每个索引对应共享内存中的一个转发表项。参见表3和表4所示,为索引信息表的示例。
表3
索引 | 状态 |
1 | 占用 |
2 | 占用 |
3 | 未占用 |
… | … |
100 | 未占用 |
表4
索引 | 状态 | 逻辑设备 |
1 | 占用 | 逻辑设备11 |
2 | 占用 | 逻辑设备11 |
3 | 未占用 | |
… | … | … |
100 | 未占用 |
在一个例子中,针对索引信息表中的每个索引,可以对应共享内存中的一个转发表项,例如,索引1对应共享内存中的第一个转发表项,索引2对应共享内存中的第二个转发表项,以此类推。其中,当共享内存的表项规格确定后,共享内存存在多少转发表项就已经确定,如存在N个转发表项,因此,索引信息表就可以包括N个索引,这N个索引与共享内存中的N个转发表项一一对应。
为了方便描述,后续以表4为例进行说明,在初始状态下,所有索引的状态均为未占用,表示该索引的转发表项还没有使用,可以使用该转发表项存储数据。进一步的,若使用转发表项存储数据,则将该转发表项的索引对应的状态修改为占用,表示该索引的转发表项已经被使用,并将使用该转发表项的逻辑设备记录到索引信息表中,表示该逻辑设备使用该转发表项存储数据。
在上述应用场景下,参见图2所示,为本申请实施例中提出的数据存储方法的流程示意图,该方法可以应用于任一的逻辑设备,该方法可以包括:
步骤201,在接收到数据存储请求时,从索引范围的所有索引中选择状态为未占用的第一索引,该索引范围的每个索引对应共享内存中的一个转发表项。
其中,从索引范围的所有索引中选择状态为未占用的第一索引,可以包括但不限于:若本逻辑设备的预留索引范围内存在状态为未占用的索引,则可以从该预留索引范围的所有索引中选择状态为未占用的第一索引;或者,若本逻辑设备的预留索引范围内不存在状态为未占用的索引,即所有索引的状态均为占用,则可以从公共索引范围的所有索引中选择状态为未占用的第一索引。
其中,预留索引范围内的每个索引对应的转发表项可以被本逻辑设备独占,而公共索引范围内的每个索引对应的转发表项可以被所有逻辑设备共享。
其中,从索引范围的所有索引中选择状态为未占用的第一索引,可以包括但不限于:通过该索引范围(如预留索引范围或公共索引范围)的索引查询索引信息表(用于记录索引与状态的对应关系),得到该索引的状态,该状态为占用或者未占用;然后,根据每个索引的状态,选择状态为未占用的第一索引。
以下结合具体应用场景,对上述步骤201的处理过程进行详细说明。
例如,逻辑设备11在接收到数据存储请求时,查询表2所示的优先级信息表,获知逻辑设备11的预留索引范围是索引1-索引20,针对索引1-索引20的每个索引,可以通过该索引查询表4所示的索引信息表,得到该索引的状态,假设索引1-索引2的状态为占用,索引3-索引20的状态为未占用,由于预留索引范围内存在状态为未占用的索引,则可以从状态为未占用的索引3-索引20中选择第一索引,如选择第一个索引作为第一索引,或选择最后一个索引作为第一索引,或随机选择一个索引作为第一索引,如将索引3确定为第一索引。
在另一个例子中,若通过查询表4所示的索引信息表,获知索引1-索引20的状态均为占用,即逻辑设备11的预留索引范围内不存在状态为未占用的索引,则还可以查询表2所示的优先级信息表,获知公共索引范围是索引41-索引100。针对索引41-索引100的每个索引,可以通过该索引查询表4所示的索引信息表,得到该索引的状态,假设索引41-索引50的状态为占用,索引51-索引100的状态为未占用,由于公共索引范围内存在状态为未占用的索引,则可以从状态为未占用的索引51-索引100中选择第一索引,如可以将索引51确定为第一索引。
步骤202,从共享内存中确定与该第一索引对应的转发表项,并在该转发表项中记录该数据存储请求对应的数据,并将该第一索引的状态更新为占用。
在一个例子中,由于索引范围(如预留索引范围或公共索引范围)的每个索引对应共享内存中的一个转发表项,因此在确定第一索引后,可以从共享内存中确定与第一索引对应的转发表项。假设第一索引为索引3,则共享内存中的第3个转发表项,就对应索引为3的转发表项,在索引为3的转发表项中记录数据存储请求对应的数据,如目的IP地址、下一跳、路由开销、出接口等。然后,将索引3的状态更新为占用,并记录逻辑设备为逻辑设备11,如表5所示。
表5
索引 | 状态 | 逻辑设备 |
1 | 占用 | 逻辑设备11 |
2 | 占用 | 逻辑设备11 |
3 | 占用 | 逻辑设备11 |
… | … | … |
100 | 未占用 |
步骤203,在本逻辑设备的数据结构中记录第一索引;其中,该数据结构用于记录所述共享内存中被本逻辑设备使用的转发表项的索引。
其中,每个逻辑设备可以创建一个数据结构,如逻辑设备11创建数据结构1,逻辑设备12创建数据结构2,数据结构1用于记录共享内存中被逻辑设备11使用的每个转发表项的索引,数据结构2用于记录共享内存中被逻辑设备12使用的每个转发表项的索引。例如,逻辑设备11将数据存储到索引为3的转发表项后,就在数据结构1中记录索引3,表示索引为3的转发表项被逻辑设备11使用。逻辑设备11将数据存储到索引为4的转发表项后,就在数据结构1中记录索引4,表示索引为4的转发表项被逻辑设备11使用,以此类推。
在一个例子中,在从共享内存的转发表项中删除数据(如目的IP地址、下一跳、路由开销、出接口的对应关系)之后,还可以将该转发表项的索引的状态更新为未占用,并从本逻辑设备的数据结构中删除该转发表项的索引。
例如,逻辑设备11从共享内存的索引为3的转发表项中删除数据之后,可以在表5所示的索引信息表中,将索引3的状态更新为未占用,并删除索引3对应的逻辑设备11。此外,还可以从逻辑设备11的数据结构1中删除索引3。
综上所述,本申请实施例中,对于每个逻辑设备来说,在接收到数据存储请求时,可以从预留索引范围或公共索引范围的所有索引中选择状态为未占用的第一索引,从共享内存中确定与第一索引对应的转发表项,并在该转发表项中记录数据存储请求对应的数据。上述方式可以保证逻辑设备正常使用共享内存的转发表项,节省内存资源,避免内存空间的浪费,提高内存空间的利用率。
而且,对于每个逻辑设备来说,可以使用该逻辑设备的预留索引范围对应的转发表项,而其它逻辑设备不能使用该预留索引范围对应的转发表项,这样,可以为每个逻辑设备预留部分转发表项,保证每个逻辑设备都有可用的转发表项,优先保证每个逻辑设备的基础通信业务。此外,当预留索引范围对应的转发表项均被使用时,则逻辑设备还可以使用公共索引范围对应的转发表项。
在上述实施例中,针对每个逻辑设备的数据结构,可以包括但不限于:资源占用链(即链式数据结构);或者,资源占用位图(即位图数据结构)。
在一个例子中,当共享内存的转发表项规格大于预设阈值(可以根据经验进行配置)时,则数据结构可以为资源占用链;或者,当共享内存的转发表项规格不大于预设阈值,则数据结构为资源占用位图。
具体的,当共享内存的转发表项规格较大时,如n的取值较大,则创建逻辑设备时,该逻辑设备可以申请资源占用链,并使用资源占用链记录共享内存中被本逻辑设备使用的每个转发表项的索引,也就是说,本逻辑设备使用共享内存中的转发表项存储数据后,将该转发表项的索引记录到资源占用链。此外,在从转发表项中删除数据后,将该转发表项的索引从资源占用链摘除。
其中,资源占用链是链式数据结构,每个结点由数据域和指针域组成,每个结点的数据域用于记录转发表项的索引,该结点的指针域用于记录下一个结点的存储位置。而且,通过使用资源占用链,可以记录大量转发表项的索引。
此外,当共享内存的转发表项规格较小时,如n的取值较小,则创建逻辑设备时,该逻辑设备可以申请资源占用位图,并使用资源占用位图记录共享内存中被本逻辑设备使用的每个转发表项的索引,也就是说,本逻辑设备使用共享内存中的转发表项存储数据后,将该转发表项的索引对应的比特置位。在从转发表项中删除数据后,将该转发表项的索引对应的比特位清除。
其中,资源占用位图是位图数据结构,假设n的取值为10,则初始状态的资源占用位图参见表6所示,第一个比特对应索引1的转发表项,第二个比特对应索引2的转发表项,以此类推。逻辑设备使用索引2的转发表项存储数据后,将第二个比特置位(从0到1),参见表7所示。在从转发表项中删除数据后,则可以将该转发表项的索引对应的比特位清除(从1到0)。而且,通过使用资源占用位图,由于资源占用位图的空间较小,从而可以节省内存空间。
表6
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
表7
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
在上述应用场景下,参见图3所示,为本申请实施例中提出的数据查询方法的流程示意图,该方法可以应用于任一逻辑设备,该方法可以包括:
步骤301,在接收到数据查询请求时,从本逻辑设备的数据结构中获取索引。
步骤302,根据该索引确定共享内存中被本逻辑设备使用的转发表项。
步骤303,从确定的转发表项中查询与该数据查询请求对应的数据,如目的IP地址、下一跳、路由开销、出接口等内容,对此数据不做限制。
例如,逻辑设备11在接收到数据查询请求时,可以从逻辑设备11的数据结构1(如资源占用链或者资源占用位图)中获取索引,如索引1-索引20、索引61-索引70等。然后,可以根据索引1-索引20、索引61-索引70确定共享内存中被逻辑设备11使用的转发表项,即索引1-索引20的转发表项、索引61-索引70的转发表项。然后,可以从索引1-索引20的转发表项、索引61-索引70的转发表项中,查询到与该数据查询请求对应的数据,对此查询过程不做限制。
例如,数据查询请求可以携带目的IP地址,可以通过该目的IP地址查询索引1-索引20的转发表项、索引61-索引70的转发表项,得到与该目的IP地址匹配的转发表项,并从该转发表项中得到下一跳、路由开销、出接口等数据。
综上所述,在进行数据查询时,逻辑设备可以从本逻辑设备对应的转发表项中查询数据,而不是从所有逻辑设备对应的转发表项中查询数据,从而实现转发表项的独立管理,且不用遍历所有转发表项,从而提高数据查询效率。
基于与上述方法同样的申请构思,本申请实施例还提出一种数据存储装置,物理设备被虚拟成至少一个逻辑设备,物理设备包括共享内存,所述共享内存用于存储所有逻辑设备的转发表项,所述装置应用于所有逻辑设备中任一的逻辑设备,如图4所示,为所述装置的结构图,所述装置包括:选择模块401,用于在接收到数据存储请求时,从索引范围的所有索引中选择状态为未占用的第一索引;所述索引范围的每个索引对应共享内存中的一个转发表项;处理模块402,用于从所述共享内存中确定与所述第一索引对应的转发表项,并在所述转发表项中记录所述数据存储请求对应的数据,并将所述第一索引的状态更新为占用;记录模块403,用于在所述逻辑设备的数据结构中记录所述第一索引;所述数据结构用于记录所述共享内存中被所述逻辑设备使用的转发表项的索引。
所述选择模块401从索引范围的所有索引中选择状态为未占用的第一索引时具体用于:若所述逻辑设备的预留索引范围内存在状态为未占用的索引,则从所述预留索引范围的所有索引中选择所述第一索引;若所述预留索引范围内不存在状态为未占用的索引,则从公共索引范围的所有索引中选择所述第一索引;其中,所述预留索引范围内的每个索引对应的转发表项被所述逻辑设备独占,所述公共索引范围内的每个索引对应的转发表项被所有逻辑设备共享。
所述选择模块401从索引范围的所有索引中选择状态为未占用的第一索引时具体用于:通过所述索引范围的索引查询索引信息表,得到所述索引的状态,所述状态为占用或者未占用;根据每个索引的状态,选择状态为未占用的第一索引;其中,所述索引信息表用于记录索引与状态的对应关系。
在一个例子中,所述处理模块402还用于:
在从所述共享内存的转发表项中删除数据后,则将所述转发表项的索引的状态更新为未占用,并从所述逻辑设备的数据结构中删除所述转发表项的索引。
在一个例子中,当所述共享内存的转发表项规格大于预设阈值时,则所述数据结构为资源占用链;或者,当所述共享内存的转发表项规格不大于预设阈值,则所述数据结构为资源占用位图。
在一个例子中,所述装置还包括(在图中未视出):
查询模块,用于在接收到数据查询请求时,从所述逻辑设备的数据结构中获取索引;根据获取的索引确定所述共享内存中被所述逻辑设备使用的转发表项;从确定的转发表项中查询所述数据查询请求对应的数据。
本申请实施例提供的逻辑设备,从硬件层面而言,硬件架构示意图具体可以参见图5所示,包括:机器可读存储介质和处理器,其中:
机器可读存储介质:存储指令代码。
处理器:与机器可读存储介质通信,读取和执行机器可读存储介质中存储的所述指令代码,实现本申请上述示例公开的数据存储操作。
这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(RadomAccess Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
基于与上述方法同样的申请构思,本申请实施例中还提出一种物理设备,所述物理设备被虚拟成至少一个逻辑设备,所述物理设备包括:处理器;其中,所述处理器用于:申请共享内存,所述共享内存用于存储所有逻辑设备的转发表项;生成索引信息表,并将所述索引信息表存储到所述共享内存中;生成优先级信息表,并将所述优先级信息表存储到所述共享内存中;其中,所述索引信息表用于记录索引与状态的对应关系,且所述索引信息表中的每个索引对应所述共享内存中的一个转发表项;所述优先级信息表包括公共索引范围,所述优先级信息表还包括预留索引范围与逻辑设备的对应关系;所述预留索引范围内的每个索引对应的转发表项被所述逻辑设备独占,所述公共索引范围内的每个索引对应的转发表项被所有逻辑设备共享。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种数据存储方法,其特征在于,物理设备被虚拟成至少一个逻辑设备,所述物理设备包括共享内存,所述共享内存用于存储所有逻辑设备的转发表项,所述方法应用于所有逻辑设备中任一的逻辑设备,所述方法包括:
在接收到数据存储请求时,从索引范围的所有索引中选择状态为未占用的第一索引;其中,所述索引范围的每个索引对应共享内存中的一个转发表项;
从所述共享内存中确定与所述第一索引对应的转发表项,并在所述转发表项中记录所述数据存储请求对应的数据,并将所述第一索引的状态更新为占用;
在所述逻辑设备的数据结构中记录所述第一索引;其中,所述数据结构用于记录所述共享内存中被所述逻辑设备使用的转发表项的索引。
2.根据权利要求1所述的方法,其特征在于,
所述从索引范围的所有索引中选择状态为未占用的第一索引,包括:
若所述逻辑设备的预留索引范围内存在状态为未占用的索引,则从所述预留索引范围的所有索引中选择所述第一索引;若所述预留索引范围内不存在状态为未占用的索引,则从公共索引范围的所有索引中选择所述第一索引;
其中,所述预留索引范围内的每个索引对应的转发表项被所述逻辑设备独占,所述公共索引范围内的每个索引对应的转发表项被所有逻辑设备共享。
3.根据权利要求1所述的方法,其特征在于,
所述从索引范围的所有索引中选择状态为未占用的第一索引,包括:
通过所述索引范围的索引查询索引信息表,得到所述索引的状态,所述状态为占用或者未占用;根据每个索引的状态,选择状态为未占用的第一索引;
其中,所述索引信息表用于记录索引与状态的对应关系。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在从所述共享内存的转发表项中删除数据后,则将所述转发表项的索引的状态更新为未占用,并从所述逻辑设备的数据结构中删除所述转发表项的索引。
5.根据权利要求1所述的方法,其特征在于,当所述共享内存的转发表项规格大于预设阈值时,则所述数据结构为资源占用链;或者,当所述共享内存的转发表项规格不大于预设阈值,则所述数据结构为资源占用位图。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
在接收到数据查询请求时,从所述逻辑设备的数据结构中获取索引;
根据获取的索引确定所述共享内存中被所述逻辑设备使用的转发表项;
从确定的转发表项中查询所述数据查询请求对应的数据。
7.一种数据存储方法,其特征在于,所述方法应用于物理设备,所述物理设备被虚拟成至少一个逻辑设备,所述方法包括:
申请共享内存,所述共享内存用于存储所有逻辑设备的转发表项;
生成索引信息表,并将所述索引信息表存储到所述共享内存中;
生成优先级信息表,并将所述优先级信息表存储到所述共享内存中;
其中,所述索引信息表用于记录索引与状态的对应关系,且所述索引信息表中的每个索引对应所述共享内存中的一个转发表项;所述优先级信息表包括公共索引范围,所述优先级信息表还包括预留索引范围与逻辑设备的对应关系;所述预留索引范围内的每个索引对应的转发表项被所述逻辑设备独占,所述公共索引范围内的每个索引对应的转发表项被所有逻辑设备共享。
8.一种数据存储装置,其特征在于,物理设备被虚拟成至少一个逻辑设备,所述物理设备包括共享内存,所述共享内存用于存储所有逻辑设备的转发表项,所述装置应用于所有逻辑设备中任一的逻辑设备,所述装置包括:
选择模块,用于在接收到数据存储请求时,从索引范围的所有索引中选择状态为未占用的第一索引;其中,所述索引范围的每个索引对应共享内存中的一个转发表项;
处理模块,用于从所述共享内存中确定与所述第一索引对应的转发表项,并在所述转发表项中记录所述数据存储请求对应的数据,并将所述第一索引的状态更新为占用;
记录模块,用于在所述逻辑设备的数据结构中记录所述第一索引;所述数据结构用于记录所述共享内存中被所述逻辑设备使用的转发表项的索引。
9.根据权利要求8所述的装置,其特征在于,所述选择模块从索引范围的所有索引中选择状态为未占用的第一索引时具体用于:
若所述逻辑设备的预留索引范围内存在状态为未占用的索引,则从所述预留索引范围的所有索引中选择所述第一索引;若所述预留索引范围内不存在状态为未占用的索引,则从公共索引范围的所有索引中选择所述第一索引;
其中,所述预留索引范围内的每个索引对应的转发表项被所述逻辑设备独占,所述公共索引范围内的每个索引对应的转发表项被所有逻辑设备共享。
10.根据权利要求8所述的装置,其特征在于,所述选择模块从索引范围的所有索引中选择状态为未占用的第一索引时具体用于:
通过所述索引范围的索引查询索引信息表,得到所述索引的状态,所述状态为占用或者未占用;根据每个索引的状态,选择状态为未占用的第一索引;
其中,所述索引信息表用于记录索引与状态的对应关系。
11.根据权利要求8所述的装置,其特征在于,所述处理模块还用于:
在从所述共享内存的转发表项中删除数据后,则将所述转发表项的索引的状态更新为未占用,并从所述逻辑设备的数据结构中删除所述转发表项的索引。
12.根据权利要求8所述的装置,其特征在于,当所述共享内存的转发表项规格大于预设阈值时,则所述数据结构为资源占用链;或者,当所述共享内存的转发表项规格不大于预设阈值,则所述数据结构为资源占用位图。
13.根据权利要求8-12任一项所述的装置,其特征在于,还包括:
查询模块,用于在接收到数据查询请求时,从所述逻辑设备的数据结构中获取索引;根据获取的索引确定所述共享内存中被所述逻辑设备使用的转发表项;从确定的转发表项中查询所述数据查询请求对应的数据。
14.一种物理设备,其特征在于,所述物理设备被虚拟成至少一个逻辑设备,所述物理设备包括:处理器;其中,所述处理器用于:
申请共享内存,所述共享内存用于存储所有逻辑设备的转发表项;
生成索引信息表,并将所述索引信息表存储到所述共享内存中;
生成优先级信息表,并将所述优先级信息表存储到所述共享内存中;
其中,所述索引信息表用于记录索引与状态的对应关系,且所述索引信息表中的每个索引对应所述共享内存中的一个转发表项;所述优先级信息表包括公共索引范围,所述优先级信息表还包括预留索引范围与逻辑设备的对应关系;所述预留索引范围内的每个索引对应的转发表项被所述逻辑设备独占,所述公共索引范围内的每个索引对应的转发表项被所有逻辑设备共享。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810995420.6A CN109032533B (zh) | 2018-08-29 | 2018-08-29 | 一种数据存储方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810995420.6A CN109032533B (zh) | 2018-08-29 | 2018-08-29 | 一种数据存储方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109032533A true CN109032533A (zh) | 2018-12-18 |
CN109032533B CN109032533B (zh) | 2021-02-26 |
Family
ID=64625237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810995420.6A Active CN109032533B (zh) | 2018-08-29 | 2018-08-29 | 一种数据存储方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109032533B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096453A (zh) * | 2019-04-11 | 2019-08-06 | 北京华三通信技术有限公司 | 数据处理方法及装置 |
CN111314222A (zh) * | 2020-02-12 | 2020-06-19 | 杭州涂鸦信息技术有限公司 | 一种适用于负载均衡的路由数据调度方法及系统 |
CN111356094A (zh) * | 2020-01-07 | 2020-06-30 | 北京简约纳电子有限公司 | 一种sim短消息处理方法及装置 |
CN111782561A (zh) * | 2020-09-07 | 2020-10-16 | 新华三半导体技术有限公司 | 一种sram的存储空间分配方法、装置及芯片 |
WO2022063185A1 (zh) * | 2020-09-27 | 2022-03-31 | 中兴通讯股份有限公司 | 数据采集、上报方法、系统、芯片、cpu及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105113A (en) * | 1997-08-21 | 2000-08-15 | Silicon Graphics, Inc. | System and method for maintaining translation look-aside buffer (TLB) consistency |
CN1812376A (zh) * | 2006-02-20 | 2006-08-02 | 杭州华为三康技术有限公司 | 一种表项的存储方法、装置及查询方法 |
CN101043428A (zh) * | 2006-05-30 | 2007-09-26 | 华为技术有限公司 | 一种路由转发的方法和系统 |
CN103279423A (zh) * | 2013-05-15 | 2013-09-04 | 华为技术有限公司 | 一种内容寻址存储器的寻址方法及设备 |
CN108255912A (zh) * | 2017-08-17 | 2018-07-06 | 新华三技术有限公司 | 一种表项数据存储、查询方法及其装置 |
-
2018
- 2018-08-29 CN CN201810995420.6A patent/CN109032533B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105113A (en) * | 1997-08-21 | 2000-08-15 | Silicon Graphics, Inc. | System and method for maintaining translation look-aside buffer (TLB) consistency |
CN1812376A (zh) * | 2006-02-20 | 2006-08-02 | 杭州华为三康技术有限公司 | 一种表项的存储方法、装置及查询方法 |
CN101043428A (zh) * | 2006-05-30 | 2007-09-26 | 华为技术有限公司 | 一种路由转发的方法和系统 |
CN103279423A (zh) * | 2013-05-15 | 2013-09-04 | 华为技术有限公司 | 一种内容寻址存储器的寻址方法及设备 |
CN108255912A (zh) * | 2017-08-17 | 2018-07-06 | 新华三技术有限公司 | 一种表项数据存储、查询方法及其装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096453A (zh) * | 2019-04-11 | 2019-08-06 | 北京华三通信技术有限公司 | 数据处理方法及装置 |
CN110096453B (zh) * | 2019-04-11 | 2020-01-03 | 北京华三通信技术有限公司 | 数据处理方法及装置 |
CN111356094A (zh) * | 2020-01-07 | 2020-06-30 | 北京简约纳电子有限公司 | 一种sim短消息处理方法及装置 |
CN111356094B (zh) * | 2020-01-07 | 2021-09-03 | 北京简约纳电子有限公司 | 一种sim短消息处理方法及装置 |
CN111314222A (zh) * | 2020-02-12 | 2020-06-19 | 杭州涂鸦信息技术有限公司 | 一种适用于负载均衡的路由数据调度方法及系统 |
CN111782561A (zh) * | 2020-09-07 | 2020-10-16 | 新华三半导体技术有限公司 | 一种sram的存储空间分配方法、装置及芯片 |
CN111782561B (zh) * | 2020-09-07 | 2020-12-04 | 新华三半导体技术有限公司 | 一种sram的存储空间分配方法、装置及芯片 |
WO2022063185A1 (zh) * | 2020-09-27 | 2022-03-31 | 中兴通讯股份有限公司 | 数据采集、上报方法、系统、芯片、cpu及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109032533B (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109032533A (zh) | 一种数据存储方法、装置和设备 | |
JP6542909B2 (ja) | ファイル操作方法及び装置 | |
KR102486243B1 (ko) | 데이터 저장소를 파티셔닝하고 리밸런싱하는 기법 | |
US10068033B2 (en) | Graph data query method and apparatus | |
CN109684099B (zh) | 消息处理方法及装置 | |
CN106503058B (zh) | 一种数据加载方法、终端和计算集群 | |
CN109753231A (zh) | 键值存储设备及操作其的方法 | |
US20150169570A1 (en) | Method and device for managing data | |
US20170330193A1 (en) | Geographic mobile customer relations management with bespoke graphical selection and query modes | |
CN106970958B (zh) | 一种流文件的查询与存储方法和装置 | |
WO2017058705A1 (en) | Partitioning of geographic data | |
CN108628894A (zh) | 数据仓库中的数据指标查询方法及装置 | |
US20180300330A1 (en) | Proactive spilling of probe records in hybrid hash join | |
TW202008763A (zh) | 資料處理方法和裝置、用戶端 | |
CN108259346A (zh) | 一种等价路由表项建立方法和装置 | |
US9679014B2 (en) | Generating and accessing a data table | |
CN108595346A (zh) | 一种特征库文件管理方法和装置 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
US9740721B2 (en) | Generating and accessing a data table | |
CN103077214A (zh) | 文件存储方法及装置 | |
CN108959330A (zh) | 一种数据库的处理、数据查询方法及设备 | |
CN112307272B (zh) | 确定对象之间关系信息的方法、装置、计算设备及存储介质 | |
CN109697234A (zh) | 实体的多属性信息存储、查询方法、装置、服务器和介质 | |
US11416490B2 (en) | Prioritization and optimization of database workloads | |
CN104378396A (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 |