一种数据操作的方法、设备和系统的制作方法
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种数据操作的方法、设备和系统。
【背景技术】
[0002]UAS(Unified Accessing Storage, 一体化存储)系统中包括多种不同特性的存储设备,如 DRAM (Dynamic Random Access Memory,动态随机访问存储器)、NVM (Non-Vo I at i I eMemory,非易失性存储器)、Flash-based SSD (Flash-based Solid State Disk,基于 Flash的固态硬盘)和HDD (Hard Disk,磁盘)。其中,DRAM和NVM为字符设备,此类设备支持按字节/字符来读写数据,一般用作内存flash-based SSD和HDD为块设备,此类设备的数据读写只能以块粒度进行,一般用作外存,块设备并不支持基于字节的寻址,通常一个块粒度为 512B(Byte,字节)。
[0003]现有技术中,对于粒度较小的数据访问,如元数据访问和数据库访问,CPU (Central Processing Unit,中央处理器)不能通过load指令和store指令直接访问块设备中的数据,而需要先通过一系列的操作指令调用内核中的应用程序将块设备中的数据以块粒度读到DRAM内存中,CPU再通过load指令和store指令来访问DRAM内存中的该数据,例如,CPU需要向块设备写入非块粒度的SB的数据,则该CPU根据该待写入数据的目的地址确定该块设备中对应的数据,并通过一系列的操作指令调用内核中的应用程序将该数据以块粒度,如512B,读取到DRAM内存中,该CPU再通过store指令将该非块粒度的8B的数据与该DRAM内存中的该块粒度的512B的数据相合并,并最终将该合并后的数据以块粒度写回该块设备。
[0004]由上可知,该CPU在发送操作指令对块设备中的数据进行操作之前,需要通过一系列指令将该块设备中待操作的指令读取到内存中,操作过程复杂,降低了 CPU对块设备进行数据操作的效率。
【发明内容】
[0005]本发明提供一种数据操作的方法、设备和系统,以解决现有技术中CPU对块设备进行数据操作的效率低的问题。
[0006]为达到上述目的,本发明采用如下技术方案:
[0007]第一方面,提供一种数据操作的方法,所述方法包括:
[0008]存储控制设备接收中央处理器CPU发送的读指令;所述读指令用于对块设备进行数据读取操作;
[0009]将所述块设备中包括待读取数据的第一数据块读取到所述存储控制设备的缓存中;
[0010]将所述第一数据块中的所述待读取数据返回至CPU。
[0011]在第一方面的第一种可能的实现方式中,所述将所述块设备中包括待读取数据的第一数据块读取到所述存储控制设备的缓存中包括:
[0012]从所述读指令中获取所述待读取数据在所述块设备中的读取地址信息;
[0013]根据所述读取地址信息将所述块设备中对应所述读取地址的第一数据块读取到所述缓存中;
[0014]所述将所述第一数据块中的所述待读取数据返回至CPU包括:
[0015]在所述缓存的所述第一数据块中确定所述待读取数据,并将所述待读取数据返回至所述CPU。
[0016]第二方面,提供一种数据操作的方法,所述方法包括:
[0017]存储控制设备接收中央处理器CPU发送的写指令;所述写指令用于对块设备进行数据写入操作;
[0018]将所述写指令指示的待写入数据写入到所述存储控制设备的缓存中;
[0019]生成包括所述待写入数据的第二数据块,并将所述第二数据块写入所述块设备。
[0020]在第二方面的第一种可能的实现方式中,所述写指令包括所述待写入数据的数据内容和所述待写入数据在块设备中的写入地址信息;
[0021]在所述将所述写指令指示的待写入数据写入到所述存储控制设备的缓存中之前包括:
[0022]获取所述待写入数据的所述数据内容和所述写入地址信息;
[0023]所述将所述写指令指示的待写入数据写入到所述存储控制设备的缓存中包括:
[0024]将所述待写入数据的所述数据内容以及所述写入地址信息存储到所述缓存中。
[0025]结合第二方面或者第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述生成包括所述待写入数据的第二数据块包括:
[0026]确定所述缓存中存储的历史待写入数据与所述待写入数据满足数据块生成条件;所述历史待写入数据为在向所述缓存写入所述待写入数据之前所述缓存存储的未写入所述块设备的待写入数据;
[0027]将所述历史待写入数据与所述待写入数据组成所述第二数据块。
[0028]结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述确定所述缓存中存储的历史待写入数据与所述待写入数据满足数据块生成条件包括:
[0029]确定所述历史待写入数据的写入地址信息与所述待写入数据的写入地址信息连续,且所述历史待写入数据与所述待写入数据总的数据大小符合向所述块设备写入数据的块粒度。
[0030]结合第二方面的第一种可能的实现方式,在第四种可能的实现方式中,所述生成包括所述待写入数据的第二数据块包括:
[0031]根据所述待写入数据的写入地址信息,从所述块设备中读取对应所述写入地址的数据块,将所述数据块与所述待写入数据合并为所述第二数据块,所述数据块为所述块设备存储的将要写入所述待写入数据的数据块。
[0032]结合第二方面、第二方面的第一至第四种可能的实现方式中的任一种可能的实现方式,在第五种可能的实现方式中,在所述将所述写指令指示的待写入数据写入到所述存储控制设备的缓存中之前,所述方法还包括:
[0033]在所述缓存中不存在空闲空间时,确定所述缓存中的待替换数据,并将所述待替换数据写入所述块设备,所述待替换数据为所述缓存中存储的历史待写入数据。
[0034]第三方面,提供一种存储控制设备,所述存储控制设备包括缓存,所述存储控制设备还包括:
[0035]接收单元,用于接收中央处理器CPU发送的读指令;所述读指令用于对块设备进行数据读取操作;
[0036]数据操作单元,用于将所述块设备中包括待读取数据的第一数据块读取到所述存储控制设备的缓存中;
[0037]发送单元,用于将所述第一数据块中的所述待读取数据返回至CPU。
[0038]在第三方面的第一种可能的实现方式中,所述存储控制设备还包括获取单元,用于从所述读指令中获取所述待读取数据在所述块设备中的读取地址信息;
[0039]所述数据操作单元具体用于,根据所述读取地址信息将所述块设备中对应所述读取地址的第一数据块读取到所述缓存中;
[0040]所述发送单元具体用于,在所述缓存的所述第一数据块中确定所述待读取数据,并将所述待读取数据返回至所述CPU。
[0041]第四方面,提供一种存储控制设备,所述存储控制设备包括缓存,所述存储控制设备还包括:
[0042]接收单元,用于接收中央处理器CPU发送的写指令;所述写指令用于对块设备进行数据写入操作;
[0043]数据操作单元,用于将所述写指令指示的待写入数据写入到所述缓存中;
[0044]数据处理单元,用于生成包括所述待写入数据的第二数据块;
[0045]所述数据操作单元还用于,将所述第二数据块写入所述块设备。
[0046]在第四方面的第一种可能的实现方式中,所述写指令包括所述待写入数据的数据内容和所述待写入数据在块设备中的写入地址信息;
[0047]所述存储控制设备还包括获取单元,用于获取所述待写入数据的所述数据内容和所述写入地址信息;
[0048]所述数据操作单元具体用于,将所述待写入数据的所述数据内容以及所述写入地址信息存储到所述缓存中。
[0049]结合第四方面或者第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述存储控制设备还包括确定单元,用于确定所述缓存中存储的历史待写入数据与所述待写入数据满足数据块生成条件;所述历史待写入数据为在向所述缓存写入所述待写入数据之前所述缓存存储的未写入所述块设备的待写入数据;
[0050]所述数据处理单元具体用于,将所述历史待写入数据与所述待写入数据组成所述第二数据块。
[0051]结合第四方面的第二种可能的实现方式,在第三种可能的实现方式中,所述确定单元具体用于,确定所述历史待写入数据的写入地址信息与所述待写入数据的写入地址信息连续,且所述历史待写入数据与所述待写入数据总的数据大小符合向所述块设备写入数据的块粒度。
[0052]结合第四方面的第一种可能的实现方式,在第四种可能的实现方式中,所述数据操作单元具体用于:
[0053]根据所述待写入数据的写入地址信息,从所述块设备中读取对应所述写入地址信息的数据块;所述数据块为所述块设备存储的将要写入所述待写入数据的数据块;
[0054]所述数据处理单元具体用于,将所述数据块与所述待写入数据合并为所述第二数据块。
[0055]结合第四方面、第四方面的第一至第四种可能的实现方式中的任一种可能的实现方式,在第五种可能的实现方式中,所述存储控制设备包括确定单元,用于在所述缓存中不存在空闲空间时,确定所述缓存中的待替换数据;
[0056]所述数据操作单元还用于,将所述待替换数据写入所述块设备,所述待替换数据为所述缓存中存储的历史待写入数据。
[0057]第五方面,提供一种数据操作系统,所述数据操作系统包括:存储控制设备、中央处理器CPU、块设备,其中,所述CPU与所述存储控制设备相连,所述存储控制设备与所述块设备相连;
[0058]所述存储控制设备包括第三方面或第三方面的第一种可能的实现方式所述的存储控制设备,和/或,
[0059]所述存储控制设备包括第四方面至第四方面的五种可能的实现方式中的任一种可能的实现方式所述的存储控制设备;
[0060]所述CPU,用于向所述存储控制设备发送操作指令,以便所述存储控制设备根据所述操作指令对所述块设备进行数据操作;