本发明涉及存储技术领域,具体涉及一种数据写入方法、装置和存储设备。
背景技术:
在存储系统如云存储系统中,通常需要管理存储介质如磁盘上的存储空间。比如,标识哪些区域是被使用的,哪些区域是未被使用,以及被使用的区域对应到用户磁盘的哪些空间。
其中,用于管理存储空间的数据称之为元数据。元数据的特点字节数少,通常几十字节的量级,且需要频繁更新。元数据需要持久化到存储介质上,如固态硬盘(solidstatedrives,ssd)、机械硬盘(hdd)等等。
因此,急需一种将元数据持久化写入存储介质的方案。
技术实现要素:
本发明实施例提供一种数据写入方法、装置和存储设备,可以实现元数据持久化写入。
本发明实施例提供一种数据写入方法,包括:
获取需要存储的元数据;
将所述元数据写入存储介质中的中转存储区域;
确定所述中转存储区域中需要持久化存储的待存储元数据;
将所述待存储元数据写入所述存储介质中元数据区域的相应存储位置。
相应的,本发明实施例还提供了一种数据存储装置,包括:
获取模块,用于获取需要存储的元数据;
中转写入模块,用于将所述元数据写入存储介质中的中转存储区域;
确定模块,用于确定所述中转存储区域中需要持久化存储的待存储元数据;
持久化存储模块,用于将所述待存储元数据写入所述存储介质中元数据区域的相应存储位置。
相应的,本发明实施例还提供了一种存储设备,所述存储设备用于储存多条指令,所述指令适于由处理器加载并执行本发明实施例所提供的数据写入方法。
本发明实施例可以获取需要存储的元数据;将元数据写入存储介质中的中转存储区域;确定中转存储区域中需要持久化存储的待存储元数据;将待存储元数据写入存储介质中元数据区域的相应存储位置。该方案可以先将需要存储的元数据存储至存储介质的中转存储区域内,然后,然将中转存储区域内的元数据持久化写入存储介质的元数据区域如合并写入存储介质的元数据区域;该方案可以减少元数据读写操作和元数据的写入时间,降低了对存储系统读写能力如iops能力的占用,提升了存储系统的性能和元数据存储效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的存储系统的场景示意图;
图1b是本发明实施例提供的数据写入方法的流程示意图。
图1c是本发明实施例提供的元数据持久化存储的架构示意图;
图1d是本发明实施例提供的元数据合示意图;
图2是本发明实施例提供的数据写入方法的另一流程示意图;
图3是本发明实施例提供的数据写入方法的又一流程示意图;
图4a是本发明实施例提供的数据存储装置的结构示意图;
图4b是本发明实施例提供的数据存储装置的另一结构示意图;
图5是本发明实施例提供的服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种存储系统,该系统包括本发明实施例任一提供的数据存储装置,该数据存储装置可以集成服务器中,如云服务器、社交服务器等。此外,该系统还可以包括其他设备,比如,还可以终端等设备,该终端可以为手机、平板电脑等。
参考图1a,本发明实施例提供了一种存储系统,包括:终端11和服务器12,终端11与服务器12通过网络13连接。其中,网络13中包括路由器、网关等等网络实体,图中并为示意出。终端11可以通过有线网络或无线网络与服务器12进行信息交互,比如可以从服务器12下载应用(如云服务应用)和/或应用更新数据包和/或与应用相关的数据信息或业务信息。其中,终端11可以为手机、平板电脑、笔记本电脑等设备,图1a是以终端11为手机为例。该终端11中可以安装有各种用户所需的应用,比如具备娱乐功能的应用(如网络云盘应用,音频播放应用,游戏应用),又如具备服务功能的应用(如地图导航应用、团购应用等)。
基于上述图1a所示的系统,以云服务应用,终端11可以通过网络12从服务器12中按照需求下载云服务应用云服务应用更新数据包、和/或与云服务应用相关的数据信息或业务信息。具体地,元数据存储过程如下:
终端11向服务器发送数据操作请求(读、写、更新等操作),服务器12根据数据操作请求获取相应的元数据,即需要存储的元数据;服务器12将元数据写入存储介质中的中转存储区域;确定中转存储区域中需要持久化存储的待存储元数据;将待存储元数据写入存储介质中元数据区域的相应存储位置。此外,当元数据成功写入中转存储区域时,服务器12还可以将元数据存储至内存元数据区域中相应的存储位置。
上述图1a示例仅为实现本发明实施例的一个系统架构实例,本发明实施例并不限于上述图1a所示的系统结构,基于该系统架构,提出本发明各个实施例。
在一实施例中,提供了一种数据写入方法,可以由服务器的处理器执行,如图1b所示,该数据写入方法包括:
101、获取需要存储的元数据。
其中,元数据为用于管理存储介质如磁盘的存储空间的数据,比如,标识使用、未使用存储空间等等。
比如,当接收到数据操作请求时,可以根据数据操作请求获取需要存储的元数据。其中,数据操作请求可以包括数据读写请求、数据修改请求、数据更新请求等等。
例如,在接收到数据读写请求时,可以根据数据读写请求针对存储介质中的存储单元执行相应的读写操作,获取物理存储单元的元数据,等等。102、将元数据写入存储介质中的中转存储区域。
其中,中转存储区域为存储介质中的一个物理存储区域,如append(添加)区域。其中,append区域不要求元数据必须处于同一个元数据区域,同时也不要求元数据在物理位置上连续。
在一实施例中,为了减少对存储系统读写能力如iops(input/outputoperationspersecond,每秒的读写次数)能力的占用,可以将所有元数据并发地或并行地写入存储介质中的中转存储区域。例如,当存储100个元数据时,可以将100个元数据并发写入中转存储区域,即通过一次并发写操作将原数据写入中转存储区域,减少数据写操作,从而减少了对存储系统读写能力的占用。
在一实施例中,为了进一步地减少对存储系统读写能力的占用,可以获取元数据的数量,当元数据数量大于预设数量时,将所有元数据并发地写入所述中转存储区域。例如,当元数据的数量达到200时,将所有元数据并发写入中转存储区域。
在一实施例中,为了便于元数据写入,中转存储区域可以包括物理存储队列,物理存储队列包括多个连续的物理存储单元;可选地,物理存储队列中一个物理存储单元存储一个元数据。
此时,在获取到元数据之后,可以将元数据依次或者并发写入中转存储区域的物理存储队列。
具体地,可以确定物理存储队列的当前写入位置,然后,以当前写入位置为起始点依次或并发地向物理存储队列写入需要存储的元数据。
比如,参考图1c,append区域包括一个由多个连续的物理存储单元构成的存储队列,图1c中一个方格代表一个物理存储单元,在获取到元数据后,可以将元数据并发地写入中转存储区域的物理存储队列中。例如,存在元数据a、b、c,可以向物理存储队列中并发地写入元数据a、b、c。
在一实施例中,还可以当所有元数据成功写入中转存储区域时,将元数据写入内存元数据区域中相应的存储位置;比如,可以一次性地将所有元数据写入内存元数据区域中相应的存储位置。
其中,内存元数据区域为内存中的元数据区域,用于存储元数据。其中,内存元数据区域与存储介质如磁盘上的元数据区域对应。
其中,内存包括多个元数据区域,每个元数据区域包括多个物理存储单元,每个物理存储单元包括多个子存储单元如字节单元,比如,参考图1c所示的内存中的元数据区域,每个元数据区域包括多个物理存储单元,每个物理存储单元包括多个字节单元如四个字节单元。,也即四个字节单元组成一个物理存储单元
为保证能够实现对存储空间的正常管理,可以将元数据更新存储至内存元数据区域,例如,参考图1c在将元数据a、b、c依次写入append区域后,将元数据a、b、c存储至内存元数据区域中相应的存储位置。比如,将元数据存储至内存中相应元数据区域中相应物理存储单元中的相应字节单元。
103、确定中转存储区域中需要持久化存储的待存储元数据。
在一实施例中,为了避免实时对数据进行持久化存储,降低元数据读取操作,减少对存储系统读写能力的占用,可以设置一个数据持久化存储条件;当数据持久化存储条件被触发时,将中转存储区域内的元数据写入存储介质中的元数据区域。也即,步骤“确定中转存储区域中需要持久化存储的待存储元数据”可以包括:当数据持久化存储条件被触发时,确定中转存储区域中需要持久化存储的待存储元数据。
其中,数据持久化存储条件可以根据实际需求设定,比如,可以包括:
当中转存储区域的存储空间使用率达到一定阈值时,触发数据持久化存储;
当设备如服务器处于空闲状态时,触发数据持久化存储;
又比如,还可以设置数据持久化存储的周期;在当前时间到达该周期时,触发数据持久化存储,等等。
其中,确定需要持久化存储的元数据方式有多种,比如,当元数据存储在中转存储区域的物理存储队列时,可以基于队列中当前写入位置和历史数据持久化存储的起始位置来确定需要持久化存储的元数据。也即,步骤“确定中转存储区域中需要持久化存储的待存储元数据”,可以包括:
确定物理存储队列中的当前写入位置以及数据持久化存储的起始位置;
根据起始位置和当前写入位置确定物理存储队列中需要持久化存储的待存储元数据。
其中,数据持久化存储的起始位置可以根据实际需求在队列中设定,比如,数据持久化存储的起始位置可以基于之前数据持久化时在物理存储队列设置的数据持起始位置(即历史数据持久化存储的起始位置,如上一次数据持久化存储的起始位置)设定,比如可以与历史数据持久化存储的起始位置相同,也可以加上位置偏移重新得到起始位置。
比如,在一实施例中,该数据持持久化存储的起始位置还可以为物理存储队列的队首位置。
在确定起始位置和当前写入位置后,可选地,可以确定物理存储队列中起始位置与当前写入位置之间的元数据为需要持久化存储的元数据。即当前写入位置即为数据持久化存储的结束位置。
例如,参考图1d,当数据持久化存储条件被触发时,可以确定上次数据持久化存储的起始位置lastcheckpoint和当前的写入位置currentlogoffset;然后,将lastcheckpoint与currentlogoffset之间的元数据(如a1、b1、c1、a2、c2、a3、e1)作为需要持久化存储的待存储元数据。
104、将待存储元数据写入存储介质中元数据区域的相应存储位置。
比如,将待存储元数据存储至相应元数据区域中相应的物理存储单元内。
在一实施例中,为了减少元数据读取操作,可以将待存储元数据合并写入存储介质中元数据区域的相应存储位置。例如,将多个待存储元数据合并写入存储介质中元数据区域的相应存储位置。
在一实施例中,为了节省中转存储区域的存储空间,提升空间利用率,还可以删除中转存储区域内的待存储元数据,以便对中转存储区域的存储空间进行回收。比如,在完成数据持久化存储时,可以将删除中转存储区域内的待存储元数据。
此时,数据持久化存储条件即为存储空间回收条件。历史数据持久化存储的起始位置如lastcheckpoint即为历史空间回收位置。
在一实施例中,当删除中转存储区域内的待存储元数据后,还可以将历史数据持久化存储的起始位置变更为当前写入位置,如将lastcheckpoint变更为currentlogoffset,以便可以从之前的lastcheckpoint开始写入元数据,重新利用lastcheckpoint与currentlogoffset之间的存储空间。
考虑到,需要持久化存储的元数据中存在需要写入到相同存储位置的元数据,为了进一步减少数据的读写操作,减少数据存储对存储系统读写能力的占用,可以对需要存储到相同存储位置的元数据进行合并。也即,步骤“将待存储元数据写入存储介质中元数据区域的相应存储位置”,可以包括:
将需要写入到相同存储位置上的待存储元数据进行合并处理,得到合并后元数据;
将合并后元数据写入存储介质中元数据区域的相应存储位置。
本发明实施例可以将相同或重复位置的数据写入合并成一次写入,比如,当元数据区域的某个位置需要写入多个元数据时,需要将多个元数据进行合并处理,将合并后的数据一次写入该位置,因此,该方案可以进一步减少元数据的读写操作,从而减少数据存储对存储系统读写能力的占用,提升了存储系统的性能。
其中,合并处理可以包括:将多个需要写入到相同存储位置上的待存储元数据选取相应的元数据进行合并然后去重;或者,从需要写入到相同存储位置上的待存储元数据选取相应的元数据,比如,最新元数据等等;
例如,参考图1d,需要持久化存储的待存储元数据包括a1、b1、c1、a2、c2、a3、e1,那么,a1、a2、a3需要写入到的存储介质的存储位置相同,c1、c2需要存储到的存储介质的存储位置也相同。此时,可以对元数据a1、a2、a3进行合并处理,得到合并后的数据a’,然后,将合并后的数据a’写入存储介质中元数据区域的相应存储位置。同理,可以对元数据c1、c2进行合并处理,得到c’,然后,将合并后的数据c’写入存储介质中元数据区域的相应存储位置。
在对a3、b1、c3、e1存储完之后,删除中转存储区域内中的a1、b1、c1、a2、c2、a3、e1,然后,将历史数据持久化存储的起始位置变更为当前写入位置,如将lastcheckpoint变更为currentlogoffset。
在一实施例中,合并处理可以对从需要写入到相同存储位置上的待存储元数据进行合并得到该存储位置上的最新元数据,在一些情况下,可以对需要写入到相同存储位置上的待存储元数据进选取操作来实现。比如,步骤“将需要写入到相同存储位置上的待存储元数据进行合并处理”,可以包括:
从待存储元数据中确定需要写入到相同存储位置上的同位置元数据;
根据同位置元数据的写入时间从同位置元数据中选取最新元数据。
此时,步骤“将合并后元数据写入存储介质中元数据区域的相应存储位置”,可以包括:将最新元数据写入存储介质中元数据区域的相应存储位置。
其中,最新元数据为需要存储到某个存储位置上最新的元数据,或者最完整的元数据。
比如,可以选择距离当前时间最近的写入时间所对应的同位置元数据作为最新元数据
例如,参考图1d,需要持久化存储的待存储元数据包括a1、b1、c1、a2、c2、a3、e1,那么,a1、a2、a3需要存储到的存储介质的存储位置相同,c1、c2需要存储到的存储介质的存储位置也相同。此时,可以根据写入时间可以从元数据a1、a2、a3中选取最新数据为a3,也即合并后数据a’=a3,然后,将最新数据a3存储至存储介质中元数据区域的相应存储位置。同理,根据写入时间可以从元数据c1、c2选取最新数据为c2,也即合并后数据c’=c2,然后,将最新数据c’存储至存储介质中元数据区域的相应存储位置。
在一实施例中,当中转存储区域包括物理存储队列时,由于以队列形式写入,因此,元数据的写入时间与在队列中的存储位置相关,因此,可以基于需要写入到相同存储位置上的元数据在队列中的存储位置来选取最新元数据。比如,步骤“需要写入到相同存储位置上的待存储元数据进行合并处理”可以包括:
从待存储元数据中确定需要写入到相同存储位置上的同位置元数据;
根据同位置元数据在物理存储队列的存储位置与当前写入位置之间的距离,从同位置元数据中选取最新元数据;
此时,步骤“将合并后元数据写入存储介质中元数据区域的相应存储位置”,可以包括:将最新元数据写入存储介质中元数据区域的相应存储位置。
其中,存储位置与当前写入位置之间的距离越小,表明该存储位置上的元数据写入时间越晚;存储位置与当前写入位置之间的距离越大,表明该存储位置上的元数据写入时间越早。
本发明实施例中,可以选取存储位置与当前写入位置之间的距离最短的元数据作为最新元数据。
例如,参考图1d,需要持久化存储的待存储元数据包括a1、b1、c1、a2、c2、a3、e1,那么,a1、a2、a3需要存储到的存储介质的存储位置相同,c1、c2需要存储到的存储介质的存储位置也相同。此时,由于,a1、a2、a3中a3距离写入位置currentlogoffset最近,此时,可以选取最新数据为a3,也即合并后数据a’=a3,然后,将最新数据a3存储至存储介质中元数据区域的相应存储位置。同理,由于c1、c2中c2距离写入位置currentlogoffset最近,可以从元数据c1、c2选取最新数据为c2,也即合并后数据c’=c2,然后,将最新数据c’存储至存储介质中元数据区域的相应存储位置。
在一实施例中,为了提升元数据持久化写入的效率,以及减少元数据的读写操作次数,可以将相同物理存储单元的元数据合并进行写入。也即,元数据区域可以包括多个物理存储单元;步骤“将合并后元数据写入存储介质中元数据区域的相应存储位置”,可以包括:
从合并后元数据中确定需要写入到元数据区域中目标物理存储单元的至少一个目标元数据;
将至少一个目标元数据合并写入至目标物理存储单元。
其中,存储介质的元数据区域可以包括多个物理存储单元,参考图1c和图1d,该物理存储单元可以连续排布。此时,可以从合并后元数据中确定需要存储到相同物理存储单元的元数据,然后,将这些元数据合并存储至该物理存储单元。
其中,合并写入指的是:将至少一个目标元数据合并成一个数据单元,然后,将该数据单元写入物理存储单元中,即一次性将所有目标元数据写入物理存储单元。
在一实施例中,步骤“将至少一个目标元数据合并写入至物理存储单元”,可以包括:
从目标物理存储单元中获取除目标元数据以外的剩余数据;
将至少一个目标元数据和剩余数据合并后写入目标物理存储单元。
由于本发明实施例方案可以在同一个存储单元发生两次不同的数据更新存储时,可以先确定属于相同物理存储单元中需要更新存储的元数据,然后,将这些元数据合并写入该物理存储单元,相比现有方案,无需进行复杂的逻辑互斥控制,提升了元数据存储效率,并且减少了元数据的读写操作次数,更进一步地减少了对存储系统读写能力的占用,提升了存储系统的性能。
例如,参考图1d,需要持久化存储的待存储元数据包括a1、b1、c1、a2、c2、a3、e1,那么,a1、a2、a3需要存储到的存储介质的存储位置相同,c1、c2需要存储到的存储介质的存储位置也相同。此时,可以对元数据a1、a2、a3进行合并处理,得到合并后的数据a’=a3。同理,可以对元数据c1、c2进行合并处理,得到c’=c2。此时,合并后的数据包括:a3、b1、c1、e1;根据合并后数据的存储位置信息可以确定a3、b1、c1为需要存储到相同物理存储单元的目标元数据,便可以将a3、b1、c1合并写入该物理存储单元。例如,从物理存储单元中读取d,与a3、b1、c1合并后,得到a3、b1、c1、d,然后,写入该物理存储单元。
由上可知,本发明实施例可以获取需要存储的元数据;将元数据写入存储介质中的中转存储区域;当元数据成功写入中转存储区域时,将元数据存储至内存元数据区域中相应的存储位置;当数据持久化存储条件被触发时,确定中转存储区域中需要持久化存储的待存储元数据;将待存储元数据存储至存储介质中元数据区域的相应存储位置。该方案可以先将需要存储的元数据存储至存储介质的中转存储区域内,然后,将中转存储区域内的元数据持久化写入存储介质的元数据区域如合并写入存储介质的元数据区域;该方案可以减少元数据读写操作和元数据的写入时间,降低了对存储系统读写能力如iops能力的占用,提升了存储系统的性能和元数据存储效率。
该方案还可以在数据存储条件被触发时,将中转存储区域内的数据持久化存储至存储介质的元数据区域(比如,在设备空闲时进行数据持久化存储);该方案无需实时对数据进行持久化存储,从而无需实时进行大量的元数据读写操作,避免了元数据存储实时占用较高的存储系统读写能力如iops能力,提升了存储系统的性能;并且该方案还可以在数据持久化存储后对中转存储区域的空间进行回收,提升了存储介质的空间利用率。
该方案还可以对中转存储区域内重复位置或相同位置待存储元数据进行合并,减少了元数据读写操作和元数据的写入时间,降低了对存储系统读写能力的占用,提升了存储系统的性能和元数据存储效率。
进一步地,由于每次持久化数据存储的有效元数据增多了,并且还可以将相同物理存储单元的数据合并写入,因此,降低了对存储介质的数据写入量(现有技术中对于每个元数据的写入都需要放大到存储单元的大小进行写入)。
基于上述的描述,下面将对本发明的数据写入方法作进一步介绍。
在一实施例中,以数据写入装置集成在服务器来介绍本发明的数据写入方法。
其中,服务器包括处理器、内存和存储介质如磁盘等。
参考图2,一种数据写入方法,由服务器的处理器执行,具体流程如下:
201、服务器获取需要存储的元数据。
其中,元数据为用于管理存储介质如磁盘的存储空间的数据,比如,标识使用、未使用存储空间等等。
比如,当服务器接收到数据操作请求时,服务器可以根据数据操作请求获取需要存储的元数据。其中,数据操作请求可以包括数据读写请求、数据修改请求、数据更新请求等等。
202、服务器将元数据并发地写入存储介质上中转存储区域的物理存储队列。
其中,中转存储区域为存储介质中的一个物理存储区域,如append(添加)区域。其中,append区域不要求元数据必须处于同一个元数据区域,同时也不要求元数据在物理位置上连续。
其中,为了便于元数据写入,中转存储区域可以包括物理存储队列,物理存储队列包括多个连续的物理存储单元。
203、当所有元数据成功写入中转存储区域时,服务器将所有元数据写入内存元数据区域中相应的存储位置。
比如,服务器可以一次性地将所有元数据写入内存元数据区域中相应的存储位置。
其中,内存元数据区域为内存中的元数据区域,用于存储元数据。其中,内存元数据区域与存储介质如磁盘上的元数据区域对应。
其中,内存包括多个元数据区域,每个元数据区域包括多个物理存储单元,每个物理存储单元包括多个子存储单元如字节单元,比如,参考图1c所示的内存中的元数据区域,每个元数据区域包括多个物理存储单元10,每个物理存储单元10包括多个字节单元101。
204、当中转存储区域的存储空间回收条件被触发时,服务器确定物理存储队列中的历史空间回收位置以及当前写入位置。
其中,存储空间回收条件也即数据持久化存储条件,比如,可以包括:
当中转存储区域的存储空间使用率达到一定阈值时,触发数据持久化存储,以及回收中转存储区域的存储空间;
当设备如服务器处于空闲状态时,触发数据持久化存储以及回收中转存储区域的存储空间;
又比如,还可以设置数据持久化存储的周期;在当前时间到达该周期时,触发数据持久化存储以及回收中转存储区域的存储空间,等等。
其中,历史空间回收位置为历史触发空间回收时物理存储队列中的数据写入位置,可以记为lastcheckpoint。
其中,当前的写入位置可以为当前待写入数据的物理存储单元在物理存储队列中的位置,可以记为currentlogoffset。
205、服务器根据历史空间回收位置与当前写入位置确定物理存储队列中需要持久化存储的待存储元数据。
比如,服务器可以将物理存储队列中历史空间回收位置与当前写入位置之间的元数据作为需要持久化存储的元数据。
例如,参考图1d,当存储空间回收条件被触发时,可以确定上次回收空间的回收位置lastcheckpoint和当前的写入位置currentlogoffset;然后,将lastcheckpoint与currentlogoffset之间的元数据(如a1、b1、c1、a2、c2、a3、e1)作为需要持久化存储的待存储元数据。
206、服务器将需要写入到相同存储位置上的待存储元数据进行合并处理,得到合并后元数据。
为了进一步减少数据的读写操作,减少数据存储对存储系统读写能力的占用,可以对需要存储到相同存储位置的元数据进行合并。
其中,合并处理可以包括:将多个需要写入到相同存储位置上的待存储元数据选取相应的元数据进行合并然后去重;或者,从需要写入到相同存储位置上的待存储元数据选取相应的元数据,比如,最新元数据等等。
例如,参考图1d,需要持久化存储的待存储元数据包括a1、b1、c1、a2、c2、a3、e1,那么,a1、a2、a3需要写入到的存储介质的存储位置相同,c1、c2需要存储到的存储介质的存储位置也相同。此时,可以对元数据a1、a2、a3进行合并处理,得到合并后的数据a’,然后,将合并后的数据a’存储至存储介质中元数据区域的相应存储位置。同理,可以对元数据c1、c2进行合并处理,得到c’,然后,将合并后的数据c’存储至存储介质中元数据区域的相应存储位置。
在一实施例中,服务器可以从待存储元数据中确定需要写入到相同存储位置上的同位置元数据;根据同位置元数据的写入时间从同位置元数据中选取最新元数据。
从待存储元数据中确定需要写入到相同存储位置上的同位置元数据;
根据同位置元数据的写入时间从同位置元数据中选取最新元数据。
在一实施例中,当中转存储区域包括物理存储队列时,由于以队列形式写入,因此,元数据的写入时间与在队列中的存储位置相关,因此,可以基于需要存储到相同存储位置上的元数据在队列中的存储位置来选取最新元数据。
服务器从待存储元数据中确定需要写入到相同存储位置上的同位置元数据;根据同位置元数据在物理存储队列的存储位置与当前写入位置之间的距离,从同位置元数据中选取最新元数据。
207、服务器将合并后元数据写入存储介质中元数据区域的相应存储位置。
比如,将合并后元数据写入相应元数据区域中相应的物理存储单元内。
在一实施例中,为了提升元数据持久化写入的效率,以及减少元数据的读写操作次数,可以将合并后元数据合并写入元数据区域,比如,可以将相同物理存储单元的元数据合并进行写入。服务器可以从合并后元数据中确定需要写入到元数据区域中目标物理存储单元的至少一个目标元数据;将至少一个目标元数据合并写入至目标物理存储单元。
其中,存储介质的元数据区域可以包括多个物理存储单元,参考图1c和图1d,该物理存储单元可以连续排布。此时,可以从合并后元数据中确定需要存储到相同物理存储单元的元数据,然后,将这些元数据合并存储至该物理存储单元。
其中,合并写入指的是:将至少一个目标元数据合并成一个数据单元,然后,将该数据单元写入物理存储单元中,即一次性将所有目标元数据写入物理存储单元。
比如,服务器可以从目标物理存储单元中获取除目标元数据以外的剩余数据;将至少一个目标元数据和剩余数据合并后写入目标物理存储单元。
例如,参考图1d,需要持久化存储的待存储元数据包括a1、b1、c1、a2、c2、a3、e1,那么,a1、a2、a3需要存储到的存储介质的存储位置相同,c1、c2需要存储到的存储介质的存储位置也相同。此时,可以对元数据a1、a2、a3进行合并处理,得到合并后的数据a’=a3。同理,可以对元数据c1、c2进行合并处理,得到c’=c2。此时,合并后的数据包括:a3、b1、c1、e1;根据合并后数据的存储位置信息可以确定a3、b1、c1为需要存储到相同物理存储单元的目标元数据,便可以将a3、b1、c1合并写入该物理存储单元。例如,从物理存储单元中读取d,与a3、b1、c1合并后,得到a3、b1、c1、d,然后,写入该物理存储单元。
208、当数据持久化存储完成时,删除物理存储队列中的待存储元数据,并将历史空间回收位置更新为当前写入位置。
比如,在将历史回收位置与当前写入位置之间的元数据删除后,可以将lastcheckpoint变更为currentlogoffset,以便可以从之前的lastcheckpoint开始写入元数据,重新利用lastcheckpoint与currentlogoffset之间的存储空间
由上可知,本发明实施例提供的方案可以先将需要存储的元数据存储至存储介质的中转存储区域内,并在存储空间回收调节被触发时,将中转存储区域内的数据持久化存储至存储介质的元数据区域(比如,在设备空闲时进行数据持久化存储);该方案无需实时对数据进行持久化存储,从而无需实时进行大量的元数据读写操作,避免了元数据存储实时占用较高的存储系统读写能力,提升了存储系统的性能;并且该方案还可以在数据持久化存储后对中转存储区域的空间进行回收,提升了存储介质的空间利用率。
该方案还可以对中转存储区域内重复位置或相同位置待存储元数据进行合并,减少了元数据读写操作和元数据的写入时间,降低了对存储系统读写能力的占用,提升了存储系统的性能和元数据存储效率。
此外,由于每次持久化数据存储的有效元数据增多了,并且还可以将相同物理存储单元的数据合并写入,因此,降低了对存储介质的数据写入量(现有技术中对于每个元数据的写入都需要放大到存储单元的大小进行写入)。
在一实施例中,基于上述对数据写入方法的描述,下面将进一步介绍本发明的数据写入方法。
参考图3,一种数据写入方法,具体流程如下:
301、终端向云服务器发送数据读写请求。
比如,终端可以基于用户针对云服务应用界面的操作,向云服务器发送数据读写请求。
例如,终端开启云服务应用,显示云服务界面,当用户需要下载或者打开云盘上某个文件时,可以针对云服务界面进行相应的操作,此时,终端将会检测到用户针对云服务界面中某个文件的下载操作或者打开操作,可以触发向云服务器发送数据读操作请求。其中,读操作请求可以携带需要读数据的目标位置信息、以及需要读取数据的数据标识信息。
又例如,终端开启云服务应用,显示云服务界面,当用户需要向云盘上传文件时,可以针对云服务界面进行相应的上传操作,此时,终端将会检测到用户的上传操作,可以触发向云服务器发送数据写操作请求。其中,写操作请求可以携带需要写入的数据、以及需要写入的目标位置信息。
302、云服务器根据数据读写请求针对存储介质中相应的目标物理存储单元执行相应的读写操作,并获取目标物理存储单元对应的元数据。
例如,当接收到数据读操作请求时,可以根据目标位置信息确定存储介质中相应的目标物理存储单元,并从该目标物理存储单元中读取相应的数据。
当接收到数据写操作请求时,可以根据目标位置信息确定存储介质中相应的目标物理存储单元,并向该目标物理存储单元写入数据。
其中,目标物理存储单元的元数据,用于管理目标物理存储单元存储。
此外,云服务器还可以将读写操作结果发送给终端,并在终端的云服务界面中显示。
303、云服务器将元数据并发地写入存储介质上中转存储区域的物理存储队列。
其中,中转存储区域为存储介质中的一个物理存储区域,如append(添加)区域。其中,append区域不要求元数据必须处于同一个元数据区域,同时也不要求元数据在物理位置上连续。
其中,为了便于元数据写入,中转存储区域可以包括物理存储队列,物理存储队列包括多个连续的物理存储单元。
304、当所有元数据成功写入中转存储区域时,云服务器将所有元数据写入内存元数据区域中相应的存储位置。
比如,服务器可以一次性地将所有元数据写入内存元数据区域中相应的存储位置。
其中,内存元数据区域为内存中的元数据区域,用于存储元数据。其中,内存元数据区域与存储介质如磁盘上的元数据区域对应。
305、当中转存储区域的存储空间回收条件被触发时,云服务器确定物理存储队列中的历史空间回收位置以及当前写入位置。
其中,存储空间回收条件也即数据持久化存储条件,比如,可以包括:
当中转存储区域的存储空间使用率达到一定阈值时,触发数据持久化存储,以及回收中转存储区域的存储空间;
当设备如服务器处于空闲状态时,触发数据持久化存储以及回收中转存储区域的存储空间;
又比如,还可以设置数据持久化存储的周期;在当前时间到达该周期时,触发数据持久化存储以及回收中转存储区域的存储空间,等等。
其中,历史空间回收位置为历史触发空间回收时物理存储队列中的数据写入位置,可以记为lastcheckpoint。
其中,当前的写入位置可以为当前待写入数据的物理存储单元在物理存储队列中的位置,可以记为currentlogoffset。
306、云服务器根据历史空间回收位置与当前写入位置确定物理存储队列中需要持久化存储的待存储元数据。
比如,服务器可以将物理存储队列中历史空间回收位置与当前写入位置之间的元数据作为需要持久化存储的元数据。
例如,参考图1d,当存储空间回收条件被触发时,可以确定上次回收空间的回收位置lastcheckpoint和当前的写入位置currentlogoffset;然后,将lastcheckpoint与currentlogoffset之间的元数据(如a1、b1、c1、a2、c2、a3、e1)作为需要持久化存储的待存储元数据。
307、云服务器可以将待存储元数据合并写入存储介质中元数据区域的相应存储位置。
比如,服务器将需要写入到相同存储位置上的待存储元数据进行合并处理,得到合并后元数据。服务器将合并后元数据合并写入存储介质中元数据区域的相应存储位置。
为了进一步减少数据的读写操作,减少数据存储对存储系统读写能力的占用,可以对需要存储到相同存储位置的元数据进行合并。
其中,合并处理可以包括:将多个需要写入到相同存储位置上的待存储元数据选取相应的元数据进行合并然后去重;或者,从需要写入到相同存储位置上的待存储元数据选取相应的元数据,比如,最新元数据等等。
在一实施例中,为了提升元数据持久化写入的效率,以及减少元数据的读写操作次数,可以将合并后元数据合并写入元数据区域,比如,可以将相同物理存储单元的元数据合并进行写入。服务器可以从合并后元数据中确定需要写入到元数据区域中目标物理存储单元的至少一个目标元数据;将至少一个目标元数据合并写入至目标物理存储单元。
308、当数据持久化存储完成时,云服务器删除物理存储队列中的待存储元数据,并将历史空间回收位置更新为当前写入位置。
由上可知,本发明实施例提供的方案可以先将需要存储的元数据存储至存储介质的中转存储区域内,并在存储空间回收调节被触发时,将中转存储区域内的数据持久化存储至存储介质的元数据区域(比如,在设备空闲时进行数据持久化存储);该方案无需实时对数据进行持久化存储,从而无需实时进行大量的元数据读写操作,避免了元数据存储实时占用较高的存储系统读写能力,提升了存储系统的性能;并且该方案还可以在数据持久化存储后对中转存储区域的空间进行回收,提升了存储介质的空间利用率。
该方案还可以对中转存储区域内重复位置或相同位置待存储元数据进行合并,减少了元数据读写操作和元数据的写入时间,降低了对存储系统读写能力的占用,提升了存储系统的性能和元数据存储效率。
此外,由于每次持久化数据存储的有效元数据增多了,并且还可以将相同物理存储单元的数据合并写入,因此,降低了对存储介质的数据写入量(现有技术中对于每个元数据的写入都需要放大到存储单元的大小进行写入)。为了便于更好的实施本发明实施例提供的数据写入方法,在一实施例中还提供了一种的数据写入装置。其中名词的含义与上述的数据写入方法中相同,具体实现细节可以参考方法实施例中的说明。
在一实施例中,还提供了一种的数据写入装置,如图4a所示,该的数据写入装置可以包括:获取模块401、中转写入模块402、确定模块403以及持久化存储模块404,如下:
获取模块401,用于获取需要存储的元数据;
中转写入模块402,用于将所述元数据写入存储介质中的中转存储区域;
确定模块403,用于确定所述中转存储区域中需要持久化存储的待存储元数据;
持久化存储模块404,用于将所述待存储元数据写入所述存储介质中元数据区域的相应存储位置。
在一实施例中,中转写入模块402,可以用于:获取元数据的数量;当所述数量大于预设数量时,将所有元数据并发地写入所述中转存储区域
在一实施例中,持久化存储模块404,还用于删除所述中转存储区域内的待存储元数据。
在一实施例中,参考图4b,所述持久化存储模块403,可以包括:
合并子模块4041,用于将需要写入到相同存储位置上的待存储元数据进行合并处理,得到合并后元数据;
写入子模块4042,用于将所述合并后元数据写入所述存储介质中元数据区域的相应存储位置。
在一实施例中,所述中转存储区域包括物理存储队列,所述物理存储队列包括多个连续的物理存储单元;
所述中转写入模块402,用于将元数据写入所述中转存储区域的物理存储队列中;
所述确定模块403,可以用于:
确定所述物理存储队列中的当前写入位置以及数据持久化存储的起始位置;
根据所述起始位置和所述当前写入位置确定所述物理存储队列中需要持久化存储的待存储元数据。
在一实施例中,合并子模块4041,可以用于:
从待存储元数据中确定需要写入到相同存储位置上的同位置元数据;
根据同位置元数据的写入时间从同位置元数据中选取最新元数据;
所述写入子模块4042,用于将所述最新元数据写入所述存储介质中元数据区域的相应存储位置。
在一实施例中,合并子模块4041,可以用于:
从待存储元数据中确定需要写入到相同存储位置上的同位置元数据;
根据同位置元数据在物理存储队列的存储位置与所述当前写入位置之间的距离,从同位置元数据中选取最新元数据;
所述写入子模块4042,用于将所述最新元数据写入所述存储介质中元数据区域的相应存储位置。
在一实施例中,所述元数据区域包括多个物理存储单元;写入子模块4042可以用于:
从合并后元数据中确定需要写入到所述元数据区域中目标物理存储单元的至少一个目标元数据;
将至少一个目标元数据合并写入至所述目标物理存储单元。
具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个模块的具体实施可参见前面的方法实施例,在此不再赘述。
该数据写入装置具体可以集成在终端,比如以客户端的形式集成在终端中,该终端可以为手机、平板电脑等设备。
由上可知,本发明实施例的数据写入装置,采用获取模块401获取需要存储的元数据;由中转写入模块402将所述元数据写入存储介质中的中转存储区域;由确定模块403确定所述中转存储区域中需要持久化存储的待存储元数据;由持久化存储模块404将所述待存储元数据存储至所述存储介质中元数据区域的相应存储位置。该方案可以先将需要存储的元数据存储至存储介质的中转存储区域内,然后,然将中转存储区域内的元数据持久化写入存储介质的元数据区域如合并写入存储介质的元数据区域;该方案可以减少元数据读写操作和元数据的写入时间,降低了对存储系统读写能力如iops能力的占用,提升了存储系统的性能和元数据存储效率。
本发明实施例还提供一种服务器,如图5所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
服务器500可以包括一个或者一个以上处理核心的处理器501、一个或一个以上计算机可读存储介质的存储器502、射频(radiofrequency,rf)电路503、电源504、输入单元505等部件。本领域技术人员可以理解,图5中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器501是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器501可包括一个或多个处理核心;优选的,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。
存储器502可用于存储软件程序以及模块,处理器501通过运行存储在存储器502的软件程序以及模块,从而执行各种功能应用以及数据处理。
rf电路503可用于收发信息过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器501处理;另外,将涉及上行的数据发送给基站。
服务器还包括给各个部件供电的电源504(比如电池),优选的,电源可以通过电源管理系统与处理器501逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源504还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入单元505,该输入单元505可用于接收输入的数字或字符信息。
具体在本实施例中,服务器中的处理器501会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现各种功能,如下:
获取需要存储的元数据;将所述元数据写入存储介质中的中转存储区域;确定所述中转存储区域中需要持久化存储的待存储元数据;将所述待存储元数据写入所述存储介质中元数据区域的相应存储位置。
在一实施例中,在将所述元数据写入存储介质中的中转存储区域时,处理器501具体用于执行以下步骤:
获取元数据的数量;
当所述数量大于预设数量时,将所有元数据并发地写入所述中转存储区域。
在一实施例中,在将所述待存储元数据写入所述存储介质中元数据区域的相应存储位置时,处理器501具体用于执行以下步骤:
将需要写入到相同存储位置上的待存储元数据进行合并处理,得到合并后元数据;
将所述合并后元数据存储至所述存储介质中元数据区域的相应存储位置。
在一实施例中,所述中转存储区域包括物理存储队列,所述物理存储队列包括多个连续的物理存储单元;
在将所述待存储元数据存储至所述存储介质中元数据区域的相应存储位置时,处理器501具体用于执行步骤:将元数据写入所述中转存储区域的物理存储队列中
在确定所述中转存储区域中需要持久化存储的待存储元数据时,处理器501具体用于执行以下步骤:
确定所述物理存储队列中的当前写入位置以及数据持久化存储的起始位置;
根据所述起始位置和所述当前写入位置确定所述物理存储队列中需要持久化存储的待存储元数据。
在一实施例中,在将需要写入到相同存储位置上的待存储元数据进行合并处理时,处理器501具体用于执行步骤:
从待存储元数据中确定需要写入到相同存储位置上的同位置元数据;
根据同位置元数据的写入时间从同位置元数据中选取最新元数据;
在将所述合并后元数据存储至所述存储介质中元数据区域的相应存储位置时,处理器501具体用于执行步骤:
将所述最新元数据写入所述存储介质中元数据区域的相应存储位置。
在一实施例中,在将需要写入到相同存储位置上的待存储元数据进行合并处理时,处理器501具体用于执行步骤:
从待存储元数据中确定需要存储到相同存储位置上的同位置元数据;
根据同位置元数据在物理存储队列的存储位置与所述当前写入位置之间的距离,从同位置元数据中选取最新元数据;
在将所述合并后元数据写入所述存储介质中元数据区域的相应存储位置时,处理器501具体用于执行步骤:
将所述最新元数据写入所述存储介质中元数据区域的相应存储位置。
在一实施例中,所述元数据区域包括多个物理存储单元;在将所述合并后元数据存储至所述存储介质中元数据区域的相应存储位置时,处理器501具体用于执行步骤:
从合并后元数据中确定需要写入到所述元数据区域中目标物理存储单元的至少一个目标元数据;
将至少一个目标元数据合并写入至所述目标物理存储单元。
本发明实施例的服务器,可以获取需要存储的元数据;将元数据写入存储介质中的中转存储区域;确定中转存储区域中需要持久化存储的待存储元数据;将待存储元数据写入存储介质中元数据区域的相应存储位置。该方案可以先将需要存储的元数据存储至存储介质的中转存储区域内,然后,然将中转存储区域内的元数据持久化写入存储介质的元数据区域如合并写入存储介质的元数据区域;该方案可以减少元数据读写操作和元数据的写入时间,降低了对存储系统读写能力如iops能力的占用,提升了存储系统的性能和元数据存储效率。
本申请实施例还提供一种存储设备,所述存储设备存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行上述任一实施例中的会话信息处理方法,比如:获取需要存储的元数据;将元数据写入存储介质中的中转存储区域;确定中转存储区域中需要持久化存储的待存储元数据;将待存储元数据写入存储介质中元数据区域的相应存储位置。
在本申请实施例中,存储设备可以是磁碟、光盘、只读存储器(readonlymemory,rom,)、或者随机存取记忆体(randomaccessmemory,ram)等。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对本申请实施例的数据写入方法而言,本领域普通决策人员可以理解实现本申请实施例的数据写入方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,所述计算机程序可存储于一计算机可读取存储介质中,如存储在电子设备的存储器中,并被该电子设备内的至少一个处理器执行,在执行过程中可包括如数据写入方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储器、随机存取记忆体等。
对本申请实施例的数据写入装置而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,所述存储介质譬如为只读存储器,磁盘或光盘等。
以上对本申请实施例所提供的一种数据写入方法、装置及存储设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。