数据处理方法、装置、系统和固态硬盘与流程

文档序号:20188701发布日期:2020-03-27 19:25阅读:143来源:国知局
数据处理方法、装置、系统和固态硬盘与流程
本发明涉及固态硬盘领域,具体而言,涉及一种数据处理方法、装置、系统和固态硬盘。
背景技术
:目前,固态硬盘通常作为机械硬盘的缓存使用,当在固态硬盘缓存数据或者从固态硬盘读取数据时,数据的加密和解密需要另外设置一张加密卡来实现,从而引入了额外的开销。技术实现要素:本发明的目的包括,例如,提供了一种数据处理方法、装置、系统和固态硬盘,其能够在保存数据或者读取数据的同时实现数据的加密或解密,且没有引入额外的开销。本发明的实施例可以这样实现:第一方面,本发明实施例提供一种数据处理方法,应用于固态硬盘,所述方法包括:接收主机的数据处理指令,所述数据处理指令包括加解密字段以及密钥字段;依据所述加解密字段的值和所述密钥字段的值保存或读取数据;其中,所述加解密字段的值用于指示是否对所述主机写入的明文数据进行加密或者是否对从所述固态硬盘读出的密文数据进行解密,所述密钥字段的值用于在所述固态硬盘中确定加密密钥和解密密钥。第二方面,本发明实施例提供一种数据处理装置,应用于固态硬盘,所述装置包括:接收模块,用于接收主机的数据处理指令,所述数据处理指令包括加解密字段以及密钥字段;处理模块,用于依据所述加解密字段的值和所述密钥字段的值保存或读取数据;其中,所述加解密字段的值用于指示是否对所述主机写入的明文数据进行加密或者是否对从所述固态硬盘读出的密文数据进行解密,所述密钥字段的值用于在所述固态硬盘中确定加密密钥和解密密钥。第三方面,本发明实施例提供一种固态硬盘,包括主控芯片及存储介质,所述存储介质存储有能够被所述主控芯片执行的计算机程序,所述计算机程序被所述主控芯片执行时实现如前述实施方式中任一项所述的方法。第四方面,本发明实施例提供一种数据处理系统,包括机械硬盘和前述实施方式所述的固态硬盘,所述固态硬盘为所述机械硬盘的缓存,所述固态硬盘和所述机械硬盘均与所述主机通信。本发明实施例的有益效果包括,例如:由于主机的数据处理指令包括加解密字段以及密钥字段,且该加解密字段用于指示是否对主机写入的明文数据进行加密或者是否对从固态硬盘读出的密文数据进行解密,该密钥字段的值用于在固态硬盘中确定加密密钥和解密密钥,故固态硬盘基于该数据处理命令进行数据的保存或读取时,能够自动完成数据的加密或解密,实现了将数据的加解密与数据的读写融为一体,且没有引入额外的开销。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1为本实施例提供的数据处理方法及装置的应用环境示意图;图2为本实施例提供的固态硬盘的一种结构框图;图3为本实施例提供的数据处理方法的一种流程示意图;图4为直写数据的示意图;图5为缓存写数据的示意图;图6为直读数据的示意图;图7为缓存读数据的示意图;图8为本实施例提供的数据处理方法的另一种流程示意图;图9为cache直写数据的示意图;图10为cache直读数据的示意图;图11为本实施例提供的数据处理装置的功能模块示意图。图标:10-数据处理系统;100-主机;200-固态硬盘;300-机械硬盘;400-数据处理装置;210-主控芯片;220-存储介质;410-接收模块;420-处理模块。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。请参考图1,为本实施例提供的数据处理系统10的组成示意图。该数据处理系统10包括固态硬盘200和机械硬盘300,固态硬盘200和机械硬盘300均可与主机100通信,固态硬盘200为机械硬盘300的缓存。在本实施例中,该固态硬盘200可以采用sata(serialata,串行ata)接口与主机100之间传输数据或指令。其中,用户可以对主机100进行操作,例如,控制主机100发送指令到固态硬盘200或者机械硬盘300,实现数据的读写;固态硬盘200可以作为机械硬盘300的缓存使用,在不引入额外开销的情况下,能够将数据的加解密与数据的读写融为一体,即在进行数据的保存或读取的同时,自动完成数据的加密或解密。在本实施例中,该主机100可以为笔记本电脑、台式电脑、服务器等设备。请参考图2,为本实施例提供的固态硬盘200的一种结构框图。固态硬盘200包括主控芯片210和存储介质220,主控芯片210和存储介质220电连接。其中,存储介质220用于存储程序或者数据。主控芯片210用于读/写存储介质220中存储的数据或程序,并执行相应的功能。例如,当存储介质220存储的计算机程序被主控芯片210执行时,可实现本发明各实施例所揭示的数据处理方法。应当理解的是,图2所示的结构仅为固态硬盘200的结构示意图,固态硬盘200还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。请参考图3,为本实施例提供的数据处理方法的一种流程示意图。需要说明的是,本实施例所提供的数据处理方法,并不以图3以及以下所述的具体顺序为限制,应当理解,在其他实施例中,本实施例所述的数据处理方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。该数据处理方法应用于上述的固态硬盘200中,下面结合图3对该数据处理方法的具体流程进行详细阐述。步骤s101,接收主机的数据处理指令,数据处理指令包括加解密字段以及密钥字段。在本实施例中,主机100通过响应用户的操作,可向固态硬盘200下发对应的数据处理指令。例如,该数据处理指令可以为读指令或者写指令,其中,读指令表示主机100将从固态硬盘200中读取数据,写指令表示主机100将向固态硬盘200写入数据。步骤s102,依据加解密字段的值和密钥字段的值保存或读取数据;其中,加解密字段的值用于指示是否对主机写入的明文数据进行加密或者是否对从固态硬盘读出的密文数据进行解密,密钥字段的值用于在固态硬盘中确定加密密钥和解密密钥。在本实施例中,当固态硬盘200接收到数据读取指令后,由于该数据处理指令中包括加解密字段以及密钥字段,且该加解密字段用于指示是否对主机100写入的明文数据进行加密或者是否对从固态硬盘200读出的密文数据进行解密,该密钥字段的值用于在固态硬盘200中确定加密密钥和解密密钥,故固态硬盘200基于该数据处理命令进行数据的保存或读取时,能够自动完成数据的加密或解密,在没有引入额外开销的情况下,实现将数据的加解密与数据的读写融为一体。假设本实施例提供的固态硬盘200支持64位的地址范围,但实际使用容量不超过2tb。由于一个地址为表示一个sector(扇区),即512byte(字节),因此,可以将0-31位用于表示lba(logicalblockaddress,逻辑区块地址),将32-63位用于表示控制标记(本实施例使用的32-47位),基于此,可采用如下表1所示的结构来实现上述的数据处理指令。表1functionrsvenc/decenkeygroupidrsvlbawidth316632其中,表1中的rsv为保留字段;enc/decen为数据处理指令中的加解密字段,用于加解密使能或禁止,例如,可设定置“1”使能,清零禁止,即当enc/decen的值为“1”时,表明需对主机100写入的明文数据进行加密或者对从固态硬盘200读出的密文数据进行解密,当enc/decen的值为“0”时,表明对主机100写入的明文数据不加密或者对从固态硬盘200读出的密文数据不解密;keygroupid为数据处理指令中的密钥字段,keygroupid的值在加解密使能时,可指示加解密使用的keygroup(密钥组,包括加密密钥和解密密钥),当加解密禁止时,keygroupid的值无效;lba为数据处理指令中的地址字段,lba的值用于表示数据写入或读取的起始地址。在本实施例中,加密密钥和解密密钥可以预先存储在固态硬盘200的闪存颗粒上,也可以在读写数据之前通过从外部导入的方式暂时保存到固态硬盘200的内存芯片上,固态硬盘200在接收到数据处理指令后,根据keygroupid的值可确定一组加密密钥和解密密钥,用于对主机100写入的明文数据进行加密或者对从固态硬盘200读出的密文数据进行解密。由于keygroupid采用6位地址来表示,因此,本实施例中一共支持配置26=64组不同的加密密钥和解密密钥。基于上述表1所示的数据处理指令的结构,主机100可以创建以下几种具有不同功能的数据处理指令:enc_write,表示需要加密主机100写入的明文数据并持久化至固态硬盘200的闪存颗粒上,并反馈主机100请求完成;normal_write,表示不加密主机100写入的明文数据并持久化至固态硬盘200的闪存颗粒上,并反馈主机100请求完成;normal_read,表示从固态硬盘200读出密文数据,并返回密文数据;dec_read,表示从固态硬盘200读出密文数据,并返回明文数据。当固态硬盘200接收到主机100下发的数据处理指令后,可进行相应的数据读取或数据保存操作。可选地,该步骤s102包括:若数据处理指令为写指令且加解密字段的值为第一预设值,则根据加密密钥对主机100写入的明文数据进行加密,得到第一密文数据,将第一密文数据持久化至固态硬盘200的闪存颗粒。例如,当固态硬盘200接收到主机100发送的数据处理指令enc_write后,通过解析发现其加解密字段(enc/decen)的值为“1”(即第一预设值),则利用密钥字段(keygroupid)的值所确定的加密密钥对主机100写入的明文数据进行加密,得到第一密文数据,然后将该第一密文数据保存到固态硬盘200的闪存颗粒上。可选地,该固态硬盘200可以作为机械硬盘300的缓存使用,在固态硬盘200将第一密文数据持久化至闪存颗粒上后,可以向主机100发送数据缓存完成指令,以便主机100根据数据缓存完成指令从固态硬盘200的闪存颗粒读出第一密文数据,并将第一密文数据写入机械硬盘300中。其中,主机100可以在接收到数据缓存完成指令后立即从固态硬盘200读出第一密文数据,然后写入机械硬盘300;也可以在接收到数据缓存完成指令后,由缓存模块选择合适的时机从固态硬盘200读出第一密文数据,然后写入机械硬盘300。可选地,该步骤s102具体包括:若数据处理指令为读指令且加解密字段的值为第一预设值,则根据解密密钥对从固态硬盘200的闪存颗粒上读出的密文数据进行解密,得到第一明文数据,将第一明文数据返回至主机100。例如,当固态硬盘200接收到主机100发送的数据处理指令dec_read后,通过解析发现其加解密字段(enc/decen)的值为“1”(即第一预设值),则利用密钥字段(keygroupid)的值所确定的解密密钥对读出的密文数据进行解密,得到第一明文数据,然后将该第一明文数据返回至主机100。可选地,该步骤s102具体包括:若数据处理指令为写指令且加解密字段的值为第二预设值,则将主机100写入的明文数据持久化至固态硬盘200的闪存颗粒。例如,当固态硬盘200接收到主机100发送的数据处理指令normal_write后,通过解析发现其加解密字段(enc/decen)的值为“0”(即第二预设值),则不对主机100写入的明文数据进行加密,直接将主机100写入的明文数据持久化至固态硬盘200的闪存颗粒,并向主机100反馈请求完成。可选地,该步骤s102具体包括:若数据处理指令为读指令且加解密字段的值为第二预设值,则将从固态硬盘200的闪存颗粒上读出的密文数据返回至主机100。例如,当固态硬盘200接收到主机100发送的数据处理指令normal_read后,通过解析发现其加解密字段(enc/decen)的值为“0”(即第二预设值),则从固态硬盘200的闪存颗粒读出密文数据后,不对读出的密文数据进行解密,而是直接将密文数据返回至主机100。在实际应用中,主机100在接收到用户的操作请求后,会根据固态硬盘200的实际情况选择数据读写方式,包括:直写、缓存写、直读和缓存读。如图4所示,为直写数据的示意图。主机100首先使用数据处理指令enc_write将明文数据送至固态硬盘200进行加密并持久化至固态硬盘200的闪存颗粒,当接收到固态硬盘200反馈的数据缓存完成指令后,使用数据处理指令normal_read从固态硬盘200读出密文数据,再将读出的密文数据写至机械硬盘300中,完成后反馈数据写入完成(即io完成)。如图5所示,为缓存写数据的示意图。主机100首先使用数据处理指令enc_write将明文数据送至固态硬盘200进行加密并持久化至固态硬盘200的闪存颗粒,然后固态硬盘200反馈数据缓存完成指令,表征数据写入完成(即io完成)。之后,由主机100内的缓存模块选择合适的时机下发数据处理指令normal_read,以从固态硬盘200读出密文数据,再将读出的密文数据写至机械硬盘300。如图6所示,为直读数据的示意图。主机100先将机械硬盘300中的密文数据读出,再使用数据处理指令normal_write将读出的密文数据写入至固态硬盘200,当接收到固态硬盘200的反馈消息后,使用数据处理指令dec_read从固态硬盘200读出明文数据,完成后反馈数据读取完成(即io完成)。如图7所示,为缓存读数据的示意图。主机100在确定请求读取的数据在固态硬盘200中时,直接使用数据处理指令dec_read从固态硬盘200读出明文数据,完成后反馈数据读取完成(即io完成)。在实际应用中,由于固态硬盘200的一些固有特性,会导致特定场景下的性能损耗。例如,当固态硬盘200的使用容量超过gc(garbagecollection,垃圾回收)阈值时,会触发gc,出现明显掉速,此时再用固态硬盘200缓存数据反而带来额外的性能开销;当固态硬盘200的io(inputoutput,输入输出)比较大(比如io大小大于512k)时,数据传输的时间将远远大于寻道时间,此时固态硬盘200在读写速度上不再具备优势(即缓存读、缓存写均无法明显提速),故选择固态硬盘200进行缓存也会造成性能浪费。基于此,本实施例还提出另一种数据处理方法,请参照图8,该数据处理方法包括:步骤s201,接收主机的数据处理指令,数据处理指令包括加解密字段、密钥字段、缓存字段以及内存区域字段。也即是说,该数据处理指令相比于图3所示的数据处理指令,新增了两个字段,即缓存字段以及内存区域字段。步骤s202,依据加解密字段的值、密钥字段的值、缓存字段的值和内存区域字段的值保存或读取数据;其中,缓存字段的值用于指示是否将数据持久化至固态硬盘的闪存颗粒上或者是否从固态硬盘的内存芯片读取数据,内存区域字段的值用于指示数据在固态硬盘的内存芯片上的保存位置。例如,该数据处理指令可以采用如下表2所示的结构实现。表2functionrsvenc/decenkeygroupidcacheencacheidlbawidth3161532可见,表2的结构与表1所示的结构相比,是将表1的其中一个保留字段(rsv)拆分为两个字段,即缓存字段(cacheen)以及内存区域字段(cacheid),其余字段没有发生变化。其中,缓存字段用于cacheio使能或禁止,例如,可设定置“1”使能,清零禁止,即当cacheen的值为“1”时,表明数据只保存在固态硬盘200的内存芯片上,不持久化至固态硬盘200的闪存颗粒,或者从固态硬盘200的内存芯片读取数据,当cacheen的值为“0”时,表明数据需持久化至固态硬盘200的闪存颗粒,或者从固态硬盘200的闪存颗粒读取数据;cacheid的值在cacheio使能时,指定数据在固态硬盘200的内存芯片上的保存位置,当cacheio禁止时,cacheid的值无效。基于上述表2所示的数据处理指令的结构,主机100还可以创建以下几种具有不同功能的数据处理指令:enc_cache_write,表示加密主机100写入的明文数据至固态硬盘200的内存芯片,不持久化至固态硬盘200的闪存颗粒;cache_write,表示不加密主机100写入的明文数据,将明文数据保存到固态硬盘200的内存芯片,不持久化至固态硬盘200的闪存颗粒;cache_read,表示从固态硬盘200的内存芯片中读出密文数据,并返回密文数据;dec_cache_read,表示从固态硬盘200的内存芯片中读出密文数据,并返回明文数据。当固态硬盘200接收到主机100下发的数据处理指令后,可进行相应的数据读取或数据保存操作。可选地,该步骤s202具体包括:若数据处理指令为写指令且加解密字段的值为第一预设值,则根据加密密钥对主机100写入的明文数据进行加密,得到第二密文数据,若缓存字段的值为第三预设值,则根据内存区域字段的值将第二密文数据保存在固态硬盘200的内存芯片上,不持久化至固态硬盘200的闪存颗粒。例如,当固态硬盘200接收到主机100发送的数据处理指令enc_cache_write后,通过解析发现其加解密字段(enc/decen)的值为“1”(即第一预设值),缓存字段(cacheen)的值为“1”(即第三预设值),则利用密钥字段(keygroupid)的值所确定的加密密钥对主机100写入的明文数据进行加密,得到第二密文数据,然后根据内存区域字段(cacheid)的值将第二密文数据保存在固态硬盘200的内存芯片上,不持久化至固态硬盘200的闪存颗粒。可选地,固态硬盘200在根据内存区域字段的值将第二密文数据保存在固态硬盘200的内存芯片上,不持久化至固态硬盘200的闪存颗粒后,可以向主机100发送数据加密完成指令,以便主机100根据数据加密完成指令从固态硬盘200的内存芯片读出第二密文数据,并将第二密文数据写入机械硬盘300中。也即是说,固态硬盘200反馈数据加密完成指令后,主机100随即从固态硬盘200的内存芯片读出该第二密文数据,再写入机械硬盘300中。可选地,该步骤s202具体包括:若数据处理指令为读指令且缓存字段的值为第三预设值,则根据内存区域字段的值从固态硬盘200的内存芯片上读出密文数据,若加解密字段的值为第一预设值,则根据解密密钥对密文数据进行解密,得到第二明文数据,将第二明文数据返回至主机100。例如,当固态硬盘200接收到主机100发送的数据处理指令dec_cache_read后,通过解析发现其缓存字段(cacheen)的值为“1”(即第三预设值),加解密字段(enc/decen)的值为“1”(即第一预设值),则根据内存区域字段(cacheid)的值从固态硬盘200的内存芯片上读出密文数据,并根据密钥字段(keygroupid)的值所确定的解密密钥对读出的密文数据进行解密,得到第二明文数据,将第二明文数据返回至主机100。可选地,该步骤s202具体包括:若数据处理指令为写指令、加解密字段的值为第二预设值且缓存字段的值为第三预设值,则根据内存区域字段的值将主机100写入的明文数据保存到固态硬盘200的内存芯片上,不持久化至固态硬盘200的闪存颗粒。例如,当固态硬盘200接收到主机100发送的数据处理指令cache_write后,通过解析发现其加解密字段(enc/decen)的值为“0”(即第二预设值),缓存字段(cacheen)的值为“1”(即第三预设值),则不对主机100写入的明文数据进行加密,并根据内存区域字段(cacheid)的值直接将主机100写入的明文数据保存到固态硬盘200的内存芯片上,不持久化至固态硬盘200的闪存颗粒。可选地,该步骤s202具体包括:若数据处理指令为读指令、加解密字段的值为第二预设值且缓存字段的值为第三预设值,则根据内存区域字段的值从固态硬盘200的内存芯片上读出密文数据,并将密文数据返回至主机100。例如,当固态硬盘200接收到主机100发送的数据处理指令cache_read后,通过解析发现其加解密字段(enc/decen)的值为“0”(即第二预设值),缓存字段(cacheen)的值为“1”(即第三预设值),则根据内存区域字段(cacheid)的值从固态硬盘200的内存芯片读出密文数据后,不对读出的密文数据进行解密,而是直接将密文数据返回至主机100。可以理解,当cacheio禁止(即缓存字段(cacheen)的值为“0”)时,则固态硬盘200保存或读取数据的流程可以参考前述图3~图7的相应内容,此处不再赘述。在实际应用中,主机100在接收到用户的操作请求后,若发现固态硬盘200的使用容量超过gc阈值或者固态硬盘200的io压力较大,则可以使用cache直写与cache直读的方式进行数据读写,在不影响数据的正常读写的情况下,还能有效降低固态硬盘200的io压力。待固态硬盘200的gc完成后,固态硬盘200可以恢复至正常的缓存读写流程。如图9所示,为cache直写数据的示意图。主机100首先使用数据处理指令enc_cache_write将明文数据送至固态硬盘200进行加密,密文数据不持久化至固态硬盘200的闪存颗粒,而是保存在固态硬盘200的内存芯片上;当接收到固态硬盘200反馈的数据加密完成指令后,主机100使用数据处理指令cache_read从固态硬盘200的内存芯片上读出密文数据,再将读出的密文数据写至机械硬盘300中,完成后反馈数据写入完成(即io完成)。如图10所示,为cache直读数据的示意图。主机100先将机械硬盘300中的密文数据读出,再使用数据处理指令cache_write将读出的密文数据写入固态硬盘200的内存芯片,不持久化至固态硬盘200的闪存颗粒,当接收到固态硬盘200的反馈消息后,再使用数据处理指令dec_cache_read从固态硬盘200的内存芯片上读出明文数据,完成后反馈数据读取完成(即io完成)。需要说明的是,在本实施例中,主机100的数据处理指令可以采用ncq(nativecommandqueuing,原生命令队列)方式进行传输,其中,ncq是sata协议提供的一种并发传送机制,一次性最多可以传送32条命令,从而最大限度地利用传输带宽。此外,本实施例的固态硬盘200中的加密芯片对明文数据加密或对密文数据进行解密时,其加解密效率高于sata3.0的前端带宽总线速度。为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种数据处理装置的实现方式。请参照图11,为本实施例提供的数据处理装置400的功能模块示意图。需要说明的是,本实施例所提供的数据处理装置400,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该数据处理装置400包括:接收模块410和处理模块420。可选地,上述的接收模块410及处理模块420可以软件或固件(firmware)的形式存储于固态硬盘200的存储介质220或固化于该固态硬盘200的操作系统(operatingsystem,os)中,并可由固态硬盘200的主控芯片210执行。同时,执行上述模块所需的数据、程序的代码等可以存储在固态硬盘200的存储介质220中。该接收模块410用于接收主机100的数据处理指令,数据处理指令包括加解密字段以及密钥字段。可以理解,该接收模块410可以执行上述步骤s101和步骤s201。该处理模块420用于依据加解密字段的值和密钥字段的值保存或读取数据;其中,加解密字段的值用于指示是否对主机100写入的明文数据进行加密或者是否对从固态硬盘200读出的密文数据进行解密,密钥字段的值用于在固态硬盘200中确定加密密钥和解密密钥。可选地,该处理模块420具体用于若数据处理指令为写指令且加解密字段的值为第一预设值,则根据加密密钥对主机100写入的明文数据进行加密,得到第一密文数据,将第一密文数据持久化至固态硬盘200的闪存颗粒。可选地,该处理模块420具体用于在将第一密文数据持久化至固态硬盘200的闪存颗粒之后,向主机100发送数据缓存完成指令,以便主机100根据数据缓存完成指令从固态硬盘200的闪存颗粒读出第一密文数据,并将第一密文数据写入机械硬盘300中。可选地,该处理模块420具体用于若数据处理指令为读指令且加解密字段的值为第一预设值,则根据解密密钥对从固态硬盘200的闪存颗粒上读出的密文数据进行解密,得到第一明文数据,将第一明文数据返回至主机100。可选地,该处理模块420具体用于若数据处理指令为写指令且加解密字段的值为第二预设值,则将主机100写入的明文数据持久化至固态硬盘200的闪存颗粒。可选地,该处理模块420具体用于若数据处理指令为读指令且加解密字段的值为第二预设值,则将从固态硬盘200的闪存颗粒上读出的密文数据返回至主机100。可选地,该数据处理指令还可以包括缓存字段以及内存区域字段,该处理模块420还用于依据加解密字段的值、密钥字段的值、缓存字段的值和内存区域字段的值保存或读取数据;其中,缓存字段的值用于指示是否将数据持久化至固态硬盘200的闪存颗粒上或者是否从固态硬盘200的内存芯片读取数据,内存区域字段的值用于指示数据在固态硬盘200的内存芯片上的保存位置。可选地,该处理模块420具体用于若数据处理指令为写指令且加解密字段的值为第一预设值,则根据加密密钥对主机100写入的明文数据进行加密,得到第二密文数据,若缓存字段的值为第三预设值,则根据内存区域字段的值将第二密文数据保存在固态硬盘200的内存芯片上,不持久化至固态硬盘200的闪存颗粒。可选地,该处理模块420具体用于在根据内存区域字段的值将第二密文数据保存在固态硬盘200的内存芯片上,不持久化至固态硬盘200的闪存颗粒之后,向主机100发送数据加密完成指令,以便主机100根据数据加密完成指令从固态硬盘200的内存芯片读出第二密文数据,并将第二密文数据写入机械硬盘300中。可选地,该处理模块420具体用于若数据处理指令为读指令且缓存字段的值为第三预设值,则根据内存区域字段的值从固态硬盘200的内存芯片上读出密文数据,若加解密字段的值为第一预设值,则根据解密密钥对密文数据进行解密,得到第二明文数据,将第二明文数据返回至主机100。可选地,该处理模块420具体用于若数据处理指令为写指令、加解密字段的值为第二预设值且缓存字段的值为第三预设值,则根据内存区域字段的值将主机100写入的明文数据保存到固态硬盘200的内存芯片上,不持久化至固态硬盘200的闪存颗粒。可选地,该处理模块420具体用于若数据处理指令为读指令、加解密字段的值为第二预设值且缓存字段的值为第三预设值,则根据内存区域字段的值从固态硬盘200的内存芯片上读出密文数据,并将密文数据返回至主机100。可以理解,该处理模块420可以执行上述步骤s102和步骤s202。综上所述,本发明实施例提供了一种数据处理方法、装置、系统和固态硬盘,该方法包括:接收主机的数据处理指令,数据处理指令包括加解密字段以及密钥字段,依据加解密字段的值和密钥字段的值保存或读取数据;其中,加解密字段的值用于指示是否对主机写入的明文数据进行加密或者是否对从固态硬盘读出的密文数据进行解密,密钥字段的值用于在固态硬盘中确定加密密钥和解密密钥。可见,该固态硬盘基于该数据处理命令进行数据的保存或读取时,能够自动完成数据的加密或解密,实现了将数据的加解密与数据的读写融为一体,且没有引入额外的开销。此外,主机还可以在固态硬盘进行gc或者io大小比较大时,通过cache直写与cache直读的方式降低固态硬盘的io压力,同时不影响数据的正常读写。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1