远程数据存储的数据读写方法、装置及其系统的制作方法

文档序号:6340857阅读:300来源:国知局
专利名称:远程数据存储的数据读写方法、装置及其系统的制作方法
技术领域
本申请涉及弹性计算云技术领域和远程数据存储技术领域,尤其是涉及一种在弹性计算云系统中实现远程数据存储的数据读写方法、装置及其系统。
背景技术
弹性计算云(Elastic Computing Cloud)是一种云计算服务,即基于虚拟化技术, 将本地的物理服务器虚拟化成多个虚拟服务器来使用,以此来提高资源的使用率,压缩成本。传统技术上,通常会对本地的物理服务器中的本地磁盘空间进行划分,进而将划分得到的每个磁盘空间分配给一个虚拟出来的块设备使用。这样就会导致将本地的物理服务器虚拟化成虚拟服务器的数量受制于本地物理服务器中的本地磁盘空间大小的限制,进而使得弹性计算云技术的发展和实施出现了瓶颈。为了解决上述问题,业界提出了基于远程网络存储技术来为弹性计算云系统中虚拟化出来的虚拟服务器提供数据存储服务,即弹性计算云系统中的不同虚拟服务器可以分别占用远程存储资源池中的不同存储空间来进行数据存储服务,由于远程存储资源池一般都是共享资源池,其存储空间也相对本地的物理服务器中的本地磁盘空间要大得多,这样就可以使本地的物理服务器虚拟化成虚拟服务器的数量不再受制于本地物理服务器中的本地磁盘空间大小的限制,从而较好的推动了弹性计算云技术的发展和实施。但是基于远程存储资源池提供的数据存储服务,一般都需要服务提供商购买或者租用存储资源池提供者提供的存储资源,通常情况下存储资源的购买或租用成本很高,因此对于服务提供商而言,亟待找到一种基于远程存储资源池提供数据存储服务时的数据存储方案,以较好的节约对远程存储资源的占用,进而节约租用或购买远程存储资源的成本。

发明内容
本申请实施例提供一种在弹性计算云系统中实现远程数据存储的数据读写方法、 装置及其系统,以节约弹性计算云系统对远程存储资源的占用,进而降低租用或购买远程存储资源的成本。为解决上述问题,本申请实施例提出了一种在弹性计算云系统中实现远程数据存储的写数据方法,其特征在于包括接收写数据请求和请求写入的数据;根据所述写数据请求中包含的用于确定扇区号的参数,确定用于存储请求写入的数据的各扇区分别对应的扇区号;针对确定的每个扇区号分别执行根据针对所述写数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,将该扇区号对应的标志位置位;其中未置位的标志位对应的扇区号标志的扇区存储该块设备的原始数据或者未存储数据,置位的标志位对应的扇区号标志的扇区存储该块设备的更新数据;根据所述块设备标识、该扇区号和用于指向块设备的更新数据的指向标记,生成对应的键值;将生成的各个键值和请求写入的数据对应存储到远程存储资源池中。
为解决上述问题,本申请实施例还提出了一种在弹性计算云系统中实现远程数据存储的写数据装置,其特征在于包括请求接收单元,用于接收写数据请求和请求写入的数据;扇区号确定单元,用于根据所述请求接收单元接收到的写数据请求中包含的用于确定扇区号的参数,确定用于存储请求写入的数据的各扇区分别对应的扇区号;置位单元,用于针对扇区号确定单元确定的每个扇区号分别执行根据针对所述请求接收单元接收到的写数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,将该扇区号对应的标志位置位;其中未置位的标志位对应的扇区号标志的扇区存储该块设备的原始数据或者未存储数据,置位的标志位对应的扇区号标志的扇区存储该块设备的更新数据; 键值生成单元,用于针对扇区号确定单元确定的每个扇区号分别执行根据所述请求接收单元接收到的写数据请求中包含的块设备标识、该扇区号和用于指向块设备的更新数据的指向标记,生成对应的键值;和数据写入单元,用于将所述键值生成单元生成的各个键值和所述请求写入的数据对应存储到远程存储资源池中。为解决上述问题,本申请实施例还提出了一种在弹性计算云系统中实现远程数据存储的读数据方法,包括接收读数据请求;根据所述读数据请求中包含的用于确定扇区号的参数,确定存储有待读取的数据的各扇区分别对应的扇区号;针对确定的每个扇区号分别执行根据针对所述读数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,查询该扇区号对应的标志位是否被置位;其中未置位的标志位对应的扇区号标志的扇区存储该块设备的原始数据或者未存储数据,置位的标志位对应的扇区号标志的扇区存储该块设备的更新数据;如果是,根据所述块设备标识、该扇区号和用于指向该块设备的更新数据的第一指向标记,生成对应的键值;否则根据所述块设备标识、该扇区号和用于指向该块设备的原始数据的第二指向标记,生成对应的键值;从对应存储键值与数据内容的远程存储资源池中,读取生成的各个键值分别对应的数据内容。为解决上述问题,本申请实施例还提出了一种在弹性计算云系统中实现远程数据存储的读数据装置,其特征在于包括请求接收单元,用于接收读数据请求;扇区号确定单元,用于根据所述请求接收单元接收到的读数据请求中包含的用于确定扇区号的参数,确定存储有待读取的数据的各扇区分别对应的扇区号;置位查询单元,用于针对扇区号确定单元确定的每个扇区号分别执行根据针对所述请求接收单元接收到的读数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,查询该扇区号对应的标志位是否被置位;其中未置位的标志位对应的扇区号标志的扇区存储该块设备的原始数据或者未存储数据,置位的标志位对应的扇区号标志的扇区存储该块设备的更新数据;键值生成单元,用于在置位查询单元的查询结果为是时,根据所述块设备标识、该扇区号和用于指向该块设备的更新数据的第一指向标记,生成对应的键值;否则根据所述块设备标识、该扇区号和用于指向该块设备的原始数据的第二指向标记,生成对应的键值;数据读取单元,用于从对应存储键值与数据内容的远程存储资源池中,读取键值生成单元生成的各个键值分别对应的数据内容。为解决上述问题,本申请实施例还提出了一种在弹性计算云系统中实现远程数据存储的系统,包括远程存储资源池,用于对应存储键值与数据内容;至少一个本地物理服务器,用于接收写数据请求和请求写入的数据,并根据写数据请求中包含的用于确定扇区号的参数,确定用于存储请求写入的数据的各扇区分别对应的扇区号;以及针对确定的每个
7扇区号分别执行根据针对写数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,将该扇区号对应的标志位置位,其中未置位的标志位对应的扇区号标志的扇区存储该块设备的原始数据或者未存储数据,置位的标志位对应的扇区号标志的扇区存储该块设备的更新数据;根据所述块设备标识、该扇区号和用于指向该块设备的更新数据的第一指向标记,生成对应的键值;并将生成的各个键值和请求写入的数据对应存储到远程存储资源池中;以及接收读数据请求,并根据读数据请求中包含的用于确定扇区号的参数,确定存储有待读取的数据的各扇区分别对应的扇区号;针对确定的每个扇区号分别执行根据针对所述读数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,查询该扇区号对应的标志位是否被置位,如果是,根据所述块设备标识、该扇区号和用于指向该块设备的更新数据的第一指向标记,生成对应的键值;否则根据所述块设备标识、该扇区号和用于指向该块设备的原始数据的第二指向标记,生成对应的键值; 以及从所述远程存储资源池中,读取生成的各个键值分别对应的数据内容。本申请实施例通过将写时复制(CoW,Copy On Write)理念较好的实现并应用到弹性计算云系统中的虚拟服务器数据远程存储过程中,较好的实现了将相对于原始数据变化的更新数据进行增量备份或增量存储,优化了弹性计算云系统的远程存储服务,从而节约了弹性计算云系统对远程存储资源的占用,进而降低了服务提供商购买或租用远程存储资源池的成本。


图1为本申请实施例提出的技术方案所应用在的基于块设备存储服务实现数据存储的弹性计算云系统的拓扑结构图;图2为本申请实施例所应用在的远程网络存储服务的架构示意图;图3为本申请实施例中服务端维护bitmap的维护状态示意图;图4为本申请实施例提出的写数据处理的处理流程图;图5为本申请实施例提出的写数据处理装置的具体组成结构示意图;图6为本申请实施例提出的读数据处理的处理流程图;图7为本申请实施例提出的读数据处理装置的具体组成结构示意图;图8为具备本申请实施例提出的数据读写功能的用户态服务端装置的具体组成结构示意图;图9为本申请实施例实现原理的系统处理过程示意图。
具体实施例方式如图1所示,为本申请实施例提出的技术方案应用在的基于块设备存储服务实现数据存储的弹性计算云系统的拓扑结构图,其中,弹性计算云系统中包括若干基于弹性计算云技术将本地的物理服务器虚拟出来的虚拟服务器(图中所示为虚拟服务器1、虚拟服
务器2、虚拟服务器3.......虚拟服务器η),各个虚拟服务器本地提供的数据存储服务通
过基于块设备存储服务技术使用远程的存储资源池或本地的存储资源池来实现,即各个虚拟服务器会将本地需要保存的数据存储到远程的存储资源池或本地设置的存储资源池中存储,并在后续有读取数据的需求时,从远程的存储资源池或本地设置的存储资源池中读取相关数据。这样各个虚拟服务器就可以共享远程或本地设置的存储资源池,而无需占用本地物理服务器本身的存储资源,从而较好地提高了弹性计算云系统的资源利用率。具体地,写时复制(CoW,Copy On Write)机制是指将对数据的复制延迟到对该数据被修改的时刻,将Copy on Write机制运用于远程存储服务中,可以实现将对原始数据的复制延迟到对该原始数据的修改时刻,从而在数据备份领域、数据存储领域可以实现增量备份或增量存储。为了节约弹性计算云系统对远程存储资源的占用,本申请实施例提出将 Copy On Write技术应用到弹性计算云系统中的远程存储处理过程中,以使更新数据相对于原始数据基于增量存储或增量备份的方式进行存储,从而降低对远程存储资源的大量占用,并基于该设计思想提出适应性的数据读写方案,使得Copy On Write技术在弹性计算云系统中的远程存储处理过程中切实的实现。如图2所示,为本申请实施例所应用在的远程网络存储服务的架构示意图,具体包括内核态的块设备驱动20、用户态的客户端21和至少一个服务端22、以及远程 Key-Value存储资源池23,其中内核态的块设备驱动20,其接收来自物理服务器底层的读写(R/W,Reading/ Writing)调度层的读写请求,并将读写请求通过与用户态的服务端22之间预先定义的协议(例如TCP协议)等转发到用户态的服务端22。块设备驱动20在接收到的相应的读写请求后,先对接收到的读写请求进行封装,再将封装后的读写请求发送给用户态的服务端 22。块设备驱动20接收到的读写请求和封装后的读写请求有两个重要的信息,一个是请求数据的起始地址偏移量(offset),一个是请求数据的长度值(length)。用户态的服务端22,其通过与内核态的块设备驱动20预先约定的协议(例如TCP 协议)等接收来自内核态的块设备驱动20转发过来的读写请求。收到读写请求后,先对读写请求进行解析,解析过程包括验证读写请求是否合法、具体是读请求还是写请求,请求数据的起始地址偏移量offset和请求数据的长度值length等,并根据解析结果向远程键值(Key-Value)存储资源池23进行数据的读写操作。具体地,如果是读请求,则从远程 Key-Value存储资源池23中将对应的数据读取出来,并将读取到的数据及其处理结果通过 TCP协议等返回给内核态的块设备驱动20 ;如果是写请求,则将请求写入的数据存储到远程Key-Value存储资源池23中,并通过TCP协议等将写请求的处理结果返回给内核态的块设备驱动20。用户态的客户端21,其可以通过内核态的块设备驱动20控制各个服务端22启动工作或停止工作。在控制服务端22启动工作时,用户通过客户端21发起创建块设备的请求后,客户端21会先与服务端22建立TCP连接,然后在把创建好的TCP Socket句柄通过 ioctl指令传递给块设备驱动20,此后客户端21就可以关闭该TCP Socket套接字,这样客户端21就实现了在内核态的块设备驱动20与用户态的服务端22之间建立起了 TCP连接, 后续所有发向块设备驱动20的数据读写请求都可以通过TCP连接转发给服务端22。在控制服务端22停止工作时,用户通过客户端21发起停止某个块设备的请求后,客户端21会通过ioctl指令向块设备驱动20发起停止请求,块设备驱动20接收到该请求后,会先向服务端22发送停止请求,服务端22接收到该请求后关闭TCP Socket套接字后安全退出,块设备驱动20收到服务端22的停止反应后就可以停止工作了。客户端21发起创建块设备的请求时,会通过内核态的块设备驱动20向服务端22传送一个用于实施本申请技术方案的重要参数devicejd,用于标识客户端21请求创建的块设备,即创建的不同块设备使用devicejd来唯一区分。远程Key-Value存储资源池23,其具体为远程分布式键值对(Key-Value)存储系统,其通常包括多台作为存储服务器的PC机,且每个数据都会有若干个备份(默认为3个备份),且每个备份分别存储在不同的存储服务器上。在基于分布式的键值对(Key-Value) 存储系统中,通常将磁盘扇区号作为键值Key,磁盘扇区中的数据内容作为Value值,这样当给定一个Key值时,就可以在磁盘空间中读取该Key值对应的Value值或者将对应的 Value值存储到该Key值对应的扇区中。从上面对本申请实施例所应用在的远程网络存储服务的架构进行介绍后可以看出,本申请实施例中的远程Key-Value存储资源池为远程分布式键值对(Key-Value) 存储系统,针对不同块设备的数据都是以key-value的键值对形式存储在远程分布式 key-value存储系统中的,其中key用于标识与其对应存储的数据具体是属于哪个块设备的哪个扇区,value则是指具体存储的数据内容。因此,为实施本申请技术方案,需要在键值key中包含块设备标识(devicejd)和扇区号(sectorjd)等信息,这样就能够实现当给定一个key值时,准确的确定相应的块设备及其相应的扇区号。首先,下面给出本申请实施例中确定Key值的具体实施方案可以定义一个函数generate—key,用于计算在key-value存储系统中的key值,该函数的表达式可以如下generate_key (device_id, sector_id, base_id, flag)=,,device_id: sector_id:base_id: flag,,其中devicejd为块设备标识,其中虚拟服务器对应的磁盘与块设备是一一对应的,虚拟服务器的一个磁盘对应于一个块设备,所以数据读写请求均是针对每个磁盘而言的,也就是针对每个块设备而言的;sector_id 为扇区号;base_id为块设备所运行的操作系统镜像的类型标识,例如Windows操作系统和 Linux操作系统可以对应不同的操作系统类型标识;flag为指向标识,如果flag的值为0时,用于指向块设备对应的原始数据(即创建块设备时的基本镜像文件Base Image)或者Base Image中没有数据被存储的情况;如果flag的值为1时,用于指向块设备对应的更新数据(即块设备的写时复制文件Copy On Write),表示请求读写的数据为修改数据或者是新增、删除的数据,且在Base Image中没有被存储。当然若整个弹性计算云系统中的服务器的操作系统类型均相同,例如均为 Windows操作系统,或者为Linux操作系统,则上述的basejd也可以省略。例如在弹性计算云系统中的服务器的操作系统类型均相同的情况下,基于上述的函数generate_key的表达式,如果devicejd值为10,sector_id值为99,flag值为1 时,则生成的在key-value存储系统中的key值为“ 10 99 0”,该键值会指向块设备对应的 Base Image文件(存储块设备原始数据的区域);而如果flag值为1时,则生成的key值为“10:99:1”,该键值会指向块设备对应的Copy on Write文件(存储块设备更新数据的区域)。
再次,下面给出本申请实施例中确定扇区号sectorjd值的具体实施方案基于上面已经介绍的本申请实施例所应用在的远程网络存储服务的架构,内核态的块设备驱动20将物理服务器底层发来的数据读写请求转发给用户态的一个服务端22 时,数据读写请求中会包含两个重要的信息,一个是偏移量offset 请求数据在磁盘的起始位置相对于对应块设备起始位置的偏移量,另一个是请求数据的长度值length。具体地,根据数据读写请求中包含的offset信息,按照下述公式就可以计算出请求数据在对应块设备占用的磁盘空间中的起始扇区号start_sector_id start—sector—id = offset/sector—size ;其中sect0r_size为单位扇区的存储容量大小值,一般默认情况下是512字节;具体地,再根据length信息,按照下述公式就可以计算出本次请求数据在对应块设备占用的磁盘空间中所连续占用的扇区个数SeCt0r_num sector_num = length/sector_size ;根据上述已经计算出的start_sector_id与sector_num,就可以计算出本次请求数据在对应块设备占用的磁盘空间中所连续占用的扇区对应的扇区号集合SeCt0r_Set, 即sector—set = {start—sector—id,......,start—sector—id+sector—num-1}。然后,基于上述已经确定的扇区号集合SeCt0r_Set,根据上面已经阐述的确定 Key值的确定方式,就可以确定出请求数据在远程key-value存储系统中的键值集合key_ set,艮口 key_set = {generate_key (device_id, sector_id, flag), sector_id e sector_ set} 0这样,针对每次数据读写请求,都可以计算出对应请求数据的键值集合key_Set, 具体地如果是数据写请求,就可以将计算出的各个key值与请求写入的数据对应存储到远程存储资源池的磁盘空间中,如果是数据读请求,则可以从远程Key-Value存储资源池中读取出各个key值分别对应的value值(即具体的数据内容)。此外,由于本申请实施例的设计思想是在弹性计算云系统的远程存储服务中引用 Copy On Write技术,也就是说要实现将对扇区中存储数据的复制延迟到对该扇区中存储的数据进行修改的时刻,从而减少对远程存储资源池中磁盘空间的占用。因此为了表示每次请求的数据具体是原始数据(Base Image文件数据)还是更新数据(Copy On Write文件数据),还需要在每个用户态的服务端维护一个bitmap,该bitmap记载了扇区号与标志位的映射关系,其中未被置位的标志位对应的扇区号标志的扇区用于存储块设备的原始数据或者未存储数据,被置位的标志位对应的扇区号标志的扇区存储块设备的修改数据或者是新增、删除的数据(即更新数据)。如图3所示,为本申请实施例中服务端维护bitmap的维护状态示意图,如果一个扇区号sectorjd对应的bitmap的bit位没有被置位(即为0,表示该扇区号sectorjd对应的扇区用于存储原始数据或者未存储任何数据),则对该扇区号sectorjd的读请求,请求结果将直接从Base Image文件中返回,根据该扇区号sectorjd生成对应的key时,flag 取值为0 ;针对该扇区号sectorjd的写请求,会先将该扇区号sectorjd对应的bitmap 的bit位置位(即为1,表示该扇区号sectorjd对应的扇区用于存储更新数据),并根据
11该扇区号sectorjd生成对应的key时,将flag取值为1,并将生成的key与对应请求写入的数据内容value以键值对的形式存储到远程的key-value存储系统中。如果一个扇区号sectorjd对应的bitmap的bit位已经被置位(即为1,表示该扇区号sectorjd对应的扇区用于存储更新数据),则对该扇区号sectorjd的读请求,请求结果将直接从Copy on Write文件中返回,根据该扇区号sectorjd在生成对应的key 时,flag取值为1 ;对该扇区号sectorjd的写请求,根据该扇区号sectorjd在生成对应的key时,将flag取值为1,并将生成的Key与请求写入的数据内容value以键值对的形式存储到远程的key-value存储系统中。按照上述针对数据读写请求确定对应的扇区号集合SeCt0r_Set和键值集合key_ set的方式,以及针对不同块设备分别维护的bitmap,下面将分别详细介绍本申请中数据读写过程的具体实施例。实施例一,写数据流程如图4所示,为本申请实施例提出的写数据处理的处理流程图,具体如下步骤40,用户态的服务端接收内核态的块设备驱动转发来的写数据请求和请求写入的数据;步骤41,服务端根据接收到的写数据请求中包含的offset值和length值,根据上述已经介绍的针对数据读写请求确定对应的扇区号集合SeCt0r_Set的方式,确定用于存储请求写入的数据的各扇区分别对应的扇区号构成的扇区号集合sector—set ;步骤42,服务端遍历上述确定的扇区号集合SeCtor_Set中的每一个扇区号 sector_id ;步骤43,服务端针对遍历到的每一个扇区号sector_id,将该扇区号sectorjd对应的bitmap的bit位置位(即为1);步骤44、服务端将指向标记flag置为1 ;步骤45,服务端根据接收到的写数据请求中包含的块设备标识devicejd、遍历到的该扇区号sectorjd和指向标记,按照上述已经介绍的针对数据读写请求确定对应的键值Key的方式生成对应的键值Key,具体为Key = device_id:sector_id:1当然,如果弹性计算云系统中的不同块设备所使用的操作系统的类型不一致,在生成对应的Key时还可以进而增加用于标识块设备所使用的操作系统镜像类型的标识 kisejd,具体生成对应的键值Key为Key = device_id:sector_id:base_id:1步骤46,将按照上述处理生成的各个键值Key构成的键值集合Key_Set和请求写入的数据(作为Value)对应存储到远程的Key Value存储系统中。实施例二,写数据装置写数据装置可以运行在用户态的服务端中,其可以由计算机程序来实现,也可以由相关功能的硬件进行逻辑设计而实现。如图5所示,为本申请实施例提出的写数据处理装置的具体组成结构示意图,具体包括请求接收单元50,用于接收内核态的块设备驱动转发来的写数据请求和请求写入的数据。扇区号确定单元51,用于根据请求接收单元50接收到的写数据请求中包含的用于确定扇区号sectorjd的参数,确定用于存储请求写入的数据的各扇区分别对应的扇区号sectored ;具体地扇区号确定单元51可以包括起始扇区号确定子单元511,用于根据请求接收单元50接收到的写数据请求中包含的offset值、单位磁盘扇区的存储容量值seCt0r_SiZe,确定用于存储请求写入的数据的起始扇区号start_ sectorjd,扇区数目确定子单元512,用于根据请求接收单元50接收到的请求写入的数据的长度length值、单位磁盘扇区的存储容量值sectoi^size,确定存储请求写入的数据将连续占用扇区的数目SeCtor_nUm,扇区号集合确定子单元513,用于根据起始扇区号确定子单元511确定出的起始扇区号start_sector_id和扇区数目确定子单元512确定的连续占用扇区的数目SeCtor_nUm,确定用于存储请求写入的数据的各扇区分别对应的扇区号 sectorjd。置位单元52,用于针对扇区号确定单元51确定的每个扇区号sectorjd分别执行根据针对请求接收单元50接收到的写数据请求中包含的devicejd标志的块设备维护的扇区号和标志位的对应关系(bitmap),将该扇区号sectorjd对应的标志位bit置位为1。键值生成单元53,用于针对扇区号确定单元51确定的每个扇区号sectored分别执行根据请求接收单元50接收到的写数据请求中包含的devicejd、该扇区号sector id和用于指向块设备的更新数据的指向标记(取值为1的flag),生成对应的键值Key = devicejd: sectorjd: f Iag(I),另外在不同块设备所使用的操作系统的类型不一致时,生成的 Key 具体为 Key = device_id: sector_id:base_id: f lag (1),其中 base_id 用于标识不同的操作系统镜像类型。数据写入单元M,用于将键值生成单元53生成的各个键值Key 和请求写入的数据对应存储到远程的key value存储系统中。实施例三,读数据流程如图6所示,为本申请实施例提出的读数据处理的处理流程图,具体如下步骤60,用户态的服务端接收内核态的块设备驱动转发来的读数据请求;步骤61,服务端根据接收到的读数据请求中包含的offset值和length值,根据上述已经介绍的针对数据读写请求确定对应的扇区号集合SeCt0r_Set的方式,确定请求读取的数据所存储在的各扇区分别对应的扇区号构成的扇区号集合sector—set ;步骤62,服务端遍历上述确定的扇区号集合SeCtor_Set中的每一个扇区号 sector_id ;步骤63,服务端针对遍历到的每一个扇区号sectorjd,查询该扇区号sectorjd 对应的bitmap的bit位是否被置位为1 ;如果是,执行步骤64,否则执行步骤66 ;步骤64,服务端将指向标记flag置为1 ;步骤65,服务端根据接收到的读数据请求中包含的块设备标识devicejd、遍历到的该扇区号sectorjd和指向标记flag(为1),按照上述已经介绍的针对数据读写请求确定对应的键值Key的方式生成对应的键值Key,具体为Key = device_id:sector_id:1当然,如果弹性计算云系统中的不同块设备所使用的操作系统的类型不一致,在生成对应的Key时还可以进而增加用于标识块设备所使用的操作系统镜像类型的标识 kisejd,具体生成对应的键值Key为Key = device_id:sector_id:base_id:1然后继续执行步骤68 ;步骤66,服务端将指向标记flag置为0 ;
步骤67,服务端根据接收到的读数据请求中包含的块设备标识devicejd、遍历到的该扇区号sectored和指向标记flag(为0),按照上述已经介绍的针对数据读写请求确定对应的键值Key的方式生成对应的键值Key,具体为Key = device_id:sector_id:0当然,如果弹性计算云系统中的不同块设备所使用的操作系统的类型不一致,在生成对应的Key时还可以进而增加用于标识块设备所使用的操作系统镜像类型的标识 kisejd,具体生成对应的键值Key为Key = device_id:sector_id:base_id:0然后继续执行步骤68 ;步骤68,服务端从远程的Key Value存储系统中读取上述确定出的键值Key对应的Value值(具体数据内容)。实施例四,读数据装置读数据装置可以运行在用户态的服务端中,其可以由计算机程序来实现,也可以由相关功能的硬件进行逻辑设计而实现。如图7所示,为本申请实施例提出的读数据处理装置的具体组成结构示意图,具体包括请求接收单元70,用于接收内核态的块设备驱动转发来的读数据请求。扇区号确定单元71,用于根据请求接收单元70接收到的读数据请求中包含的用于确定扇区号的参数,确定存储有待读取的数据的各扇区分别对应的扇区号;其中扇区号确定单元71的具体组成与上述写数据装置中的扇区号确定单元的具体组成结构相同,这里不再重复赘述。置位查询单元72,用于针对扇区号确定单元71确定的每个扇区号分别执行根据针对请求接收单元70接收到的读数据请求中包含的devicejd标志的块设备维护的扇区号和标志位的对应关系(bitmap),查询该扇区号sectored对应的标志位 bit是否被置位为1。键值生成单元73,用于在置位查询单元72的查询结果为是时,根据请求接收单元70接收到的读数据请求中包含的devicejd、该遍历到的扇区号sectorjd和用于指向该块设备的更新数据的第一指向标记(取值为1的flag),生成对应的键值Key = device_id:sector_id:flag(l);否则根据请求接收单元70接收到的读数据请求中包含的 devicejd、该遍历到的扇区号sectored和用于指向该块设备的原始数据的第二指向标记(取值为0的flag),生成对应的键值Key = devicejd: sector_id: flag (0);另外在不同块设备所使用的操作系统的类型不一致时,生成的Key具体为Key = devicejd: SeCtor_ id:base_id: flag(1)或 Key = device_id: sector_id:base_id: flag(0),其中 base_id 用于标识不同的操作系统镜像类型。数据读取单元74,用于从远程的key value存储系统中, 读取键值生成单元73生成的各个键值key分别对应的value (数据内容)。当然,在本申请实施例中,用户态的服务端可以同时支持本申请上述提出的数据读写功能,这样同时支持本申请实施例提出的数据读写功能的服务端装置要同时包含上述介绍的写数据装置和读数据装置,具体组成结构如图8所示,其中包含的各个组成部分的功能与上述已经介绍的读数据装置和写数据装置中包含的相应功能单元的具体工作原理类似,这里不再过多重复赘述。此外,上述图8所示的服务端装置在置于弹性计算云系统中的本地物理服务器中,具有上述已经介绍的数据读写功能的本地物理服务器也处于本申请的保护范围之内。当具备上述已经介绍的数据读写功能的多个本地物理服务器与远程采用键值对(key
14value)形式存储数据的分布式存储资源池构成弹性计算云系统的远程数据存储系统时,同样这个基于弹性计算云系统的远程存储系统也处于本申请的保护范围之内。综上阐述可见,本申请实施例提出将Copy On Write理念实现并应用到弹性计算云系统中的远程存储处理过程中,以使更新数据相对于原始数据基于增量存储或增量备份的方式进行存储,从而降低对远程存储资源的大量占用。如图9所示,本地宿主机(相当于上述的本地物理服务器)被从逻辑上划分为多个虚拟机WM(相当于上述的块设备)后,在远程的KV (key value)存储服务系统中,Base Image Set中存储着VMl和VM2中的原始数据,而对应于VMl的更新数据则存储在Copy on Write ktl中,对应于VM2的更新数据则存储在 Copy on Write Set2 中,即 Copy on Write Setl 和 Copy on Write Set2 以增量存储或增量备份的方式存储着各个虚拟机的更新数据。这样每次VM可能会从Baselmage Set 中读取数据(读取原始数据),也有可能从Copy on Write Set中读取数据(读取更新数据),而每次VM在写入数据时,而是将请求写入的数据存储到Copy on Write Set中,从而实现了针对每个虚拟机而言,使其更新数据相对于原始数据基于增量存储或增量备份的方式进行存储,达到了降低对远程存储资源的大量占用的目的。本领域的技术人员应明白,本申请的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
权利要求
1.一种在弹性计算云系统中实现远程数据存储的写数据方法,其特征在于,包括 接收写数据请求和请求写入的数据;根据所述写数据请求中包含的用于确定扇区号的参数,确定用于存储请求写入的数据的各扇区分别对应的扇区号;针对确定的每个扇区号分别执行根据针对所述写数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,将该扇区号对应的标志位置位;其中未置位的标志位对应的扇区号标志的扇区存储该块设备的原始数据或者未存储数据,置位的标志位对应的扇区号标志的扇区存储该块设备的更新数据;根据所述块设备标识、该扇区号和用于指向块设备的更新数据的指向标记,生成对应的键值;将生成的各个键值和请求写入的数据对应存储到远程存储资源池中。
2.如权利要求1所述的方法,其特征在于,根据所述写数据请求中包含的用于确定扇区号的参数,确定用于存储请求写入的数据的各扇区分别对应的扇区号,包括根据所述写数据请求中包含的偏移量,以及单位磁盘扇区的存储容量值,确定用于存储请求写入的数据的起始扇区号,其中所述偏移量为请求写入的数据将写入磁盘的起始位置相对于所述写数据请求中包含的块设备标识标志的块设备起始位置的偏移量;根据所述请求写入的数据的长度值和单位磁盘扇区的存储容量值,确定存储请求写入的数据将连续占用扇区的数目;根据确定出的起始扇区号和连续占用扇区的数目,确定用于存储请求写入的数据的各扇区分别对应的扇区号。
3.如权利要求1所述的方法,其特征在于,生成对应的键值,具体包括 按照以下形式构成对应的键值所述块设备标识该扇区号用于指向该块设备的更新数据的指向标记。
4.如权利要求1、2或3所述的方法,其特征在于,生成对应的键值,具体包括 按照以下形式构成对应的键值所述块设备标识该扇区号所述块设备的操作系统镜像类型标识用于指向该块设备的更新数据的指向标记。
5.一种在弹性计算云系统中实现远程数据存储的写数据装置,其特征在于,包括 请求接收单元,用于接收写数据请求和请求写入的数据;扇区号确定单元,用于根据所述请求接收单元接收到的写数据请求中包含的用于确定扇区号的参数,确定用于存储请求写入的数据的各扇区分别对应的扇区号;置位单元,用于针对扇区号确定单元确定的每个扇区号分别执行根据针对所述请求接收单元接收到的写数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,将该扇区号对应的标志位置位;其中未置位的标志位对应的扇区号标志的扇区存储该块设备的原始数据或者未存储数据,置位的标志位对应的扇区号标志的扇区存储该块设备的更新数据;键值生成单元,用于针对扇区号确定单元确定的每个扇区号分别执行根据所述请求接收单元接收到的写数据请求中包含的块设备标识、该扇区号和用于指向块设备的更新数CN 102541461 A据的指向标记,生成对应的键值;和数据写入单元,用于将所述键值生成单元生成的各个键值和所述请求写入的数据对应存储到远程存储资源池中。
6.如权利要求5所述的装置,其特征在于,所述扇区号确定单元包括起始扇区号确定子单元,用于根据所述请求接收单元接收到的写数据请求中包含的偏移量、以及单位磁盘扇区的存储容量值,确定用于存储请求写入的数据的起始扇区号,其中所述偏移量为请求写入的数据将写入磁盘的起始位置相对于所述写数据请求中包含的块设备标识标志的块设备起始位置的偏移量;扇区数目确定子单元,用于根据所述请求接收单元接收到的请求写入的数据的长度值、以及单位磁盘扇区的存储容量值,确定存储请求写入的数据将连续占用扇区的数目;扇区号集合确定子单元,用于根据起始扇区号确定子单元确定出的起始扇区号和扇区数目确定子单元确定的连续占用扇区的数目,确定用于存储请求写入的数据的各扇区分别对应的扇区号。
7.如权利要求5所述的装置,其特征在于,所述键值生成单元具体按照以下形式构成对应的键值所述块设备标识该扇区号用于指向块设备的更新数据的指向标记。
8.如权利要求5所述的装置,其特征在于,所述键值生成单元具体按照以下形式构成对应的键值所述块设备标识该扇区号所述块设备的操作系统镜像类型标识用于指向块设备的更新数据的指向标记。
9.一种在弹性计算云系统中实现远程数据存储的读数据方法,其特征在于,包括 接收读数据请求;根据所述读数据请求中包含的用于确定扇区号的参数,确定存储有待读取的数据的各扇区分别对应的扇区号;针对确定的每个扇区号分别执行根据针对所述读数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,查询该扇区号对应的标志位是否被置位;其中未置位的标志位对应的扇区号标志的扇区存储该块设备的原始数据或者未存储数据,置位的标志位对应的扇区号标志的扇区存储该块设备的更新数据;如果是,根据所述块设备标识、该扇区号和用于指向该块设备的更新数据的第一指向标记,生成对应的键值;否则根据所述块设备标识、该扇区号和用于指向该块设备的原始数据的第二指向标记,生成对应的键值;从对应存储键值与数据内容的远程存储资源池中,读取生成的各个键值分别对应的数据内容。
10.如权利要求9所述的方法,其特征在于,根据所述读数据请求中包含的用于确定扇区号的参数,确定存储有待读取的数据的各扇区分别对应的扇区号,包括根据所述读数据请求中包含的偏移量、以及单位磁盘扇区的存储容量值,确定存储待读取的数据的起始扇区号,所述偏移量为请求读取的数据所存储在磁盘的起始位置相对于所述读数据请求中包含的块设备标识标志的块设备起始位置的偏移量;根据所述读数据请求中包含的待读取的数据的长度值、以及单位磁盘扇区的存储容量值,确定存储待读取的数据连续占用扇区的数目;根据确定出的起始扇区号和连续占用扇区的数目,确定存储待读取的数据的各扇区分别对应的扇区号。
11.如权利要求9所述的方法,其特征在于,生成对应的键值,具体包括 按照以下形式构成对应的键值所述块设备标识该扇区号第一指向标记;以及按照以下形式构成对应的键值 所述块设备标识该扇区号第二指向标记。
12.如权利要求9所述的方法,其特征在于,生成对应的键值,具体包括 按照以下形式构成对应的键值所述块设备标识该扇区号所述块设备的操作系统镜像类型标识第一指向标记;以及按照以下形式构成对应的键值所述块设备标识该扇区号所述块设备的操作系统镜像类型标识第二指向标记。
13.一种在弹性计算云系统中实现远程数据存储的读数据装置,其特征在于,包括 请求接收单元,用于接收读数据请求;扇区号确定单元,用于根据所述请求接收单元接收到的读数据请求中包含的用于确定扇区号的参数,确定存储有待读取的数据的各扇区分别对应的扇区号;置位查询单元,用于针对扇区号确定单元确定的每个扇区号分别执行根据针对所述请求接收单元接收到的读数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,查询该扇区号对应的标志位是否被置位;其中未置位的标志位对应的扇区号标志的扇区存储该块设备的原始数据或者未存储数据,置位的标志位对应的扇区号标志的扇区存储该块设备的更新数据;键值生成单元,用于在置位查询单元的查询结果为是时,根据所述块设备标识、该扇区号和用于指向该块设备的更新数据的第一指向标记,生成对应的键值;否则根据所述块设备标识、该扇区号和用于指向该块设备的原始数据的第二指向标记,生成对应的键值;数据读取单元,用于从对应存储键值与数据内容的远程存储资源池中,读取键值生成单元生成的各个键值分别对应的数据内容。
14.如权利要求13所述的装置,其特征在于,所述扇区号确定单元包括起始扇区号确定子单元,用于根据所述请求接收单元接收到的读数据请求中包含的偏移量、以及单位磁盘扇区的存储容量值,确定存储待读取的数据的起始扇区号,所述偏移量为请求读取的数据所存储在磁盘的起始位置相对于所述读数据请求中包含的块设备标识标志的块设备起始位置的偏移量;扇区数目确定子单元,用于根据所述请求接收单元接收到的读数据请求中包含的待读取的数据的长度值、以及单位磁盘扇区的存储容量值,确定存储待读取的数据连续占用扇区的数目;扇区号集合确定子单元,用于根据起始扇区号确定子单元确定出的起始扇区号和扇区数目确定子单元确定的连续占用扇区的数目,确定存储待读取的数据的各扇区分别对应的扇区号。
15. 一种在弹性计算云系统中实现远程数据存储的系统,其特征在于,包括 远程存储资源池,用于对应存储键值与数据内容;至少一个本地物理服务器,用于接收写数据请求和请求写入的数据,并根据写数据请求中包含的用于确定扇区号的参数,确定用于存储请求写入的数据的各扇区分别对应的扇区号;以及针对确定的每个扇区号分别执行根据针对写数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,将该扇区号对应的标志位置位,其中未置位的标志位对应的扇区号标志的扇区存储该块设备的原始数据或者未存储数据,置位的标志位对应的扇区号标志的扇区存储该块设备的更新数据;根据所述块设备标识、该扇区号和用于指向该块设备的更新数据的第一指向标记,生成对应的键值;并将生成的各个键值和请求写入的数据对应存储到远程存储资源池中;以及接收读数据请求,并根据读数据请求中包含的用于确定扇区号的参数,确定存储有待读取的数据的各扇区分别对应的扇区号;针对确定的每个扇区号分别执行根据针对所述读数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,查询该扇区号对应的标志位是否被置位,如果是,根据所述块设备标识、该扇区号和用于指向该块设备的更新数据的第一指向标记,生成对应的键值;否则根据所述块设备标识、该扇区号和用于指向该块设备的原始数据的第二指向标记,生成对应的键值;以及从所述远程存储资源池中,读取生成的各个键值分别对应的数据内容。
全文摘要
本申请公开了一种实现远程数据存储的写数据方法,包括接收写数据请求和请求写入的数据;根据写数据请求中包含的用于确定扇区号的参数,确定用于存储请求写入的数据的各扇区分别对应的扇区号;针对确定的每个扇区号分别执行根据针对所述写数据请求中包含的块设备标识标志的块设备维护的扇区号和标志位的对应关系,将该扇区号对应的标志位置位;其中未置位的标志位对应的扇区号标志的扇区存储该块设备的原始数据或者未存储数据,置位的标志位对应的扇区号标志的扇区存储该块设备的更新数据;根据块设备标识、该扇区号和用于指向块设备的更新数据的指向标记,生成对应的键值;将生成的各个键值和请求写入的数据对应存储到远程存储资源池中。
文档编号G06F3/06GK102541461SQ20101061702
公开日2012年7月4日 申请日期2010年12月31日 优先权日2010年12月31日
发明者王倩, 陈伟才, 陈波 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1