本发明涉及数据访问技术领域,特别是涉及一种分布式SAN块存储的高效能数据访问系统及方法。
背景技术:
随着社会多元化的发展,各种存储被应用在方方面面,应用场景多元化,数据存储标签化,都要求一种存储应用的产生,而块存储可以满足这一要求,一方面,块存储要求数据分布式存储,可以实现多种服务器的结合,数据集中化,在加快数据处理速度的同时,又可以方便数据的统一管理。另一方面,块存储可以通过集中式数据管理,划分多个不同的块,然后通过相应的技术处理,映射给多个用户使用,满足了存储多元化的要求。为了更好的达到上述目的,这时就特别需要一种分布式SAN块存储数据访问系统对数据进行统一有效的高效率管理。
如图1所示,图1为现有技术中的一种分布式SAN块存储数据访问系统的结构示意图。该访问系统的工作原理为:分布式SAN存储池提供统一的块存储服务,在存储池中划分出多个不同的块存储,然后根据实际需要提供给不同的目标端使用,而目标端通过iscsi协议,被客户端发现,最终存储池中的块存储被映射到不同的客户端,被客户端使用,而在客户端,用户可以像使用本地设备一样进行数据的存储使用。但该分布式SAN块存储数据访问系统中,一方面,客户端要读取一定量的数据时需要分多次将数据从存储池中读出来,而存储池读取数据是比较慢的,因此容易造成数据访问效率偏低;另一方面,当目标端出现意外掉电等突发情况时,此时会造成目标端正在处理的客户端要读写的数据丢失,安全性能低。
因此,如何提供一种解决上述技术问题的分布式SAN块存储的高效能数据访问系统及方法是本领域技术人员目前需要解决的问题。
技术实现要素:
本发明的目的是提供一种分布式SAN块存储的高效能数据访问系统,极大地提高了数据访问的效率,减少了读取数据的时延。另外,本申请将要读取或者写入的数据填入共享内存中,即便遇到目标端停电等突发情况也能够利用目标端的残余电量将共享内存中的数据返回至客户端或者落入分布式SAN存储池,保证了数据的高质量存储,提升了数据的安全性;本发明的另一目的是提供一种分布式SAN块存储的高效能数据访问方法。
为解决上述技术问题,本发明提供了一种分布式SAN块存储的高效能数据访问系统,包括客户端、目标端、块存储接口、分布式SAN存储池以及设置在所述块存储接口和所述分布式SAN存储池之间的全局缓存保护模块,所述目标端包括从其本地内存中划分出来的共享内存,其中:
所述共享内存用于存储从所述分布式SAN存储池中获得的、供所述客户端读取的数据以及从所述客户端获得的、待落入所述分布式SAN存储池的数据;
所述目标端,用于接收所述客户端发送的数据读指令,并判断待读取的数据是否已经存在于之前读取时已被填入所述共享内存中的数据中,如果是,则所述客户端直接从所述共享内存已存在的数据中读取,否则,发送所述数据读指令至所述全局缓存保护模块;
所述全局缓存保护模块,用于接收所述数据读指令,并依据所述数据读指令实时调整所述共享内存的配额,并将从所述分布式SAN存储池中获得的数据填入所述共享内存中。
优选地,所述全局缓存保护模块包括:
内存申请模块,用于当接收到所述数据读指令时向控制模块发送共享内存地址申请消息;
所述控制模块,用于接收所述共享内存地址申请消息并确定所述目标端的共享内存;
配额更新模块,用于依据所述数据读指令实时调整所述共享内存的配额;
内存更新模块,用于将从所述分布式SAN存储池中获得的目标读数据填入所述共享内存中,并向所述控制模块发送内存状态更新消息。
优选地,该系统还包括:
内存释放模块,用于当所述客户端结束一定量的数据读写时,释放掉占用的所述共享内存;
则所述配额更新模块,还用于当所述内存释放模块将所述共享内存释放后,更新所述共享内存的配额。
优选地,所述目标端为标准x86服务器。
为解决上述技术问题,本发明还提供了一种分布式SAN块存储的高效能数据访问方法,基于如上述所述的高效能数据访问系统,该方法包括:
步骤S101:目标端接收客户端发送的数据操作指令;
步骤S102:所述目标端判断待读取的数据是否已经存在于之前读取时已被填入共享内存中的数据中,如果是,则所述客户端直接从所述共享内存已存在的数据中读取,否则,发送所述数据读指令至全局缓存保护模块;
步骤S103:所述全局缓存保护模块接收所述数据读指令,并依据所述数据读指令实时调整所述共享内存的配额,再将从所述分布式SAN存储池中获得的数据填入所述共享内存中。
优选地,所述全局缓存保护模块包括内存申请模块、控制模块、配额更新模块以及内存更新模块,则步骤S103具体包括:
所述内存申请模块在接收到所述数据读指令时向控制模块发送共享内存地址申请消息;
所述控制模块接收所述共享内存地址申请消息并确定所述目标端的共享内存;
配额更新模块依据所述数据读指令实时调整所述共享内存的配额;
内存更新模块将从所述分布式SAN存储池中获得的目标读数据填入所述共享内存中,并向所述控制模块发送内存状态更新消息。
优选地,该方法还包括:
内存释放模块在所述客户端结束一定量的数据读写时,释放掉占用的所述共享内存。
本发明提供了一种分布式SAN块存储的高效能数据访问系统及方法,本申请中,将目标端的共享内存作为缓存,客户端要读取数据时,首先查看要读取的数据是否已经存在于共享内存中之前读取时被填入的数据中,如果是,则客户端直接从共享内存中读取,否则再从分布式SAN存储池中读取。
可见,本申请在读取数据时,无需每次都从分布式SAN存储池中读取,而是充分利用一些已存在于共享内存中还未被释放的数据中进行直接读取,极大地提高了数据访问的效率,减少了读取数据的时延。另外,本申请将要读写的数据填入共享内存中,即便遇到目标端停电等突发情况也能够利用目标端的残余电量将共享内存中的数据返回至客户端或者落入分布式SAN存储池,保证了数据的高质量存储,提升了数据的安全性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的一种分布式SAN块存储数据访问系统的结构示意图;
图2为本发明提供的一种分布式SAN块存储的高效能数据访问系统的结构示意图;
图3为本发明提供的一种分布式SAN块存储的高效能数据访问方法的流程图。
具体实施方式
本发明的核心是提供一种分布式SAN块存储的高效能数据访问系统,极大地提高了数据访问的效率,减少了读取数据的时延。另外,本申请将要读取或者写入的数据填入共享内存中,即便遇到目标端停电等突发情况也能够利用目标端的残余电量将共享内存中的数据返回至客户端或者落入分布式SAN存储池,保证了数据的高质量存储,提升了数据的安全性;本发明的另一核心是提供一种分布式SAN块存储的高效能数据访问方法。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图2,图2为本发明提供的一种分布式SAN块存储的高效能数据访问系统的结构示意图,该系统包括:
客户端1、目标端2、块存储接口3、分布式SAN存储池5以及设置在块存储接口3和分布式SAN存储池5之间的全局缓存保护模块4,目标端2包括从其本地内存中划分出来的共享内存,其中:
共享内存用于存储从分布式SAN存储池5中获得的、供客户端1读取的数据以及从客户端1获得的、待落入分布式SAN存储池5的数据;
可以理解的是,目标端2(也即服务器)的本地内存被划分出一个区域作为共享内存,也是作为客户端1在进行数据读取和写入时的缓存。这里的客户端1和目标端2的个数均可以为多个,每个客户端1和目标端2在进行基于分布式SAN块存储的高效能数据访问时的工作原理是一样的。
目标端2,用于接收客户端1发送的数据读指令,并判断待读取的数据是否已经存在于之前读取时已被填入共享内存中的数据中,如果是,则客户端1直接从共享内存已存在的数据中读取,否则,发送数据读指令至全局缓存保护模块4;
需要说明的是,客户端1在进行数据读取或者写入时,可能要读取或者写入的数据量比较大,因此,客户端1一般会分多次读取或者写入。而在客户端1没有结束这一定量的数据读取或者写入前,这期间读取或者写入的数据均被保存在共享内存中。
具体地,客户端1进行第一次数据读取时,共享内存中没有数据,这时全局缓存保护模块4会从分布式SAN存储池5中获取数据并将该数据填入共享内存中供客户端1读取。客户端1在读取到数据后会继续进行第二数据读取,但目标端2会判断客户端1要读取的数据是否存在于客户端1第一次读取时已被填入共享内存中的数据中,如果是全部或者部分,则首先将已存在的数据返回给客户,如果不是或者部分没有,则发送数据读指令至全局缓存保护模块4。
全局缓存保护模块4,用于接收数据读指令,并依据数据读指令实时调整共享内存的配额,并将从分布式SAN存储池5中获得的数据填入共享内存中。
作为优选地,全局缓存保护模块4包括:
内存申请模块,用于当接收到数据读指令时向控制模块发送共享内存地址申请消息;
控制模块,用于接收共享内存地址申请消息并确定目标端2的共享内存;
配额更新模块,用于依据数据读指令实时调整共享内存的配额;
具体地,配额更新模块保证配额的数据更新,用于维护目标端2的本地内存和共享内存模式下的两种配额值,以便切换时将影响降到最小。
内存更新模块,用于将从分布式SAN存储池5中获得的目标读数据填入共享内存中,并向控制模块发送内存状态更新消息。
作为优选地,该系统还包括:
内存释放模块,用于当客户端1结束一定量的数据读写时,释放掉占用的共享内存;
则配额更新模块,还用于当内存释放模块将共享内存释放后,更新共享内存的配额。
可以理解的是,这里的内存释放模块的操作周期是人为可调的,例如在客户端1结束一定量的数据读取或者写入时或者定个周期,例如一天等。及时的将共享内存释放掉从而避免出现其他块存储无可用内存的情况。
作为优选地,目标端2为标准x86服务器。
当然,这里的目标端2还可以为其他类型的服务器,本发明在此不做特别的限定。
综上,本申请通过发送消息从控制模块申请共享内存地址,然后使用该地址构建存放数据的数据区域。当数据区域内容进行数据重写改变时,向控制模块进行申请数据状态变更,等待数据彻底返回前端后,把短时间内不再使用的冷数据向全局缓存保护机制及时发送消息释放掉所占用的共享内存,及时的等待填充新的数据,保证块存储服务接口数据的高效能数据利用。
另外,需要说明的是,当出现目标端2意外掉电等突发情况时,全局缓存保护模块4因为会把待读取或者待写入的数据保存到共享内存中,然后返回客户端1或者落到磁盘中去,由于目标端2即便主电断了,但因为目标端2仍会存在一些例如电容产生的残余电量,从而极大的保证了数据不丢失。
本发明提供了一种分布式SAN块存储的高效能数据访问系统,本申请中,将目标端的共享内存作为缓存,客户端要读取数据时,首先查看要读取的数据是否已经存在于共享内存中之前读取时被填入的数据中,如果是,则客户端直接从共享内存中读取,否则再从分布式SAN存储池中读取。
可见,本申请在读取数据时,无需每次都从分布式SAN存储池中读取,而是充分利用一些已存在于共享内存中还未被释放的数据中进行直接读取,极大地提高了数据访问的效率,减少了读取数据的时延。另外,本申请中要读写的数据填入共享内存中,即便遇到目标端停电等突发情况也能够利用目标端的残余电量将共享内存中的数据返回至客户端或者落入分布式SAN存储池,保证了数据的高质量存储,提升了数据的安全性。
请参照图3,图3为本发明提供的一种分布式SAN块存储的高效能数据访问方法的流程图,基于如上述的高效能数据访问系统,该方法包括:
步骤S101:目标端接收客户端发送的数据操作指令;
步骤S102:目标端判断待读取的数据是否已经存在于之前读取时已被填入共享内存中的数据中,如果是,则客户端直接从共享内存已存在的数据中读取,否则,发送数据读指令至全局缓存保护模块;
步骤S103:全局缓存保护模块接收数据读指令,并依据数据读指令实时调整共享内存的配额,再将从分布式SAN存储池中获得的数据填入共享内存中。
作为优选地,全局缓存保护模块包括内存申请模块、控制模块、配额更新模块以及内存更新模块,则步骤S103具体包括:
内存申请模块在接收到数据读指令时向控制模块发送共享内存地址申请消息;
控制模块接收共享内存地址申请消息并确定目标端的共享内存;
配额更新模块依据数据读指令实时调整共享内存的配额;
内存更新模块将从分布式SAN存储池中获得的目标读数据填入共享内存中,并向控制模块发送内存状态更新消息。
作为优选地,该方法还包括:
内存释放模块在客户端结束一定量的数据读写时,释放掉占用的共享内存。
对于本发明提供的高效能数据访问方法的介绍请参照上述系统实施例,本发明在此不再赘述。
本发明提供了一种分布式SAN块存储的高效能数据访问方法,本申请中,将目标端的共享内存作为缓存,客户端要读取数据时,首先查看要读取的数据是否已经存在于共享内存中之前读取时被填入的数据中,如果是,则客户端直接从共享内存中读取,否则再从分布式SAN存储池中读取,同理,客户端要写入数据时,也首先查看要写入的数据是否已经存在于共享内存中之前写入时被填入的数据中,如果是,则直接将共享内存中的待写入数据落入分布式SAN存储池。
可见,本申请在读取数据时,无需每次都从分布式SAN存储池中读取或者写入,而是充分利用一些已存在于共享内存中还未被释放的数据中进行直接读取或者写入,极大地提高了数据访问的效率,减少了读取或者写入数据的时延。另外,本申请将要读取或者写入的数据填入共享内存中,即便遇到目标端停电等突发情况也能够利用目标端的残余电量将共享内存中的数据返回至客户端或者落入分布式SAN存储池,保证了数据的高质量存储,提升了数据的安全性。
需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。