CN112558884B - 数据保护方法以及基于NVMe的存储设备 - Google Patents

数据保护方法以及基于NVMe的存储设备 Download PDF

Info

Publication number
CN112558884B
CN112558884B CN202011542222.8A CN202011542222A CN112558884B CN 112558884 B CN112558884 B CN 112558884B CN 202011542222 A CN202011542222 A CN 202011542222A CN 112558884 B CN112558884 B CN 112558884B
Authority
CN
China
Prior art keywords
component
detection
metadata
data
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011542222.8A
Other languages
English (en)
Other versions
CN112558884A (zh
Inventor
刘海亮
施楠
黄泰然
刘洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan Goke Microelectronics Co Ltd
Original Assignee
Hunan Goke Microelectronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hunan Goke Microelectronics Co Ltd filed Critical Hunan Goke Microelectronics Co Ltd
Priority to CN202011542222.8A priority Critical patent/CN112558884B/zh
Publication of CN112558884A publication Critical patent/CN112558884A/zh
Application granted granted Critical
Publication of CN112558884B publication Critical patent/CN112558884B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供一种数据保护方法以及基于NVMe的存储设备,该数据保护方法应用于基于NVMe的存储设备,该方法包括:获取目标设备上的用户数据以及元数据,所述目标设备为主机终端或所述存储设备;根据计算得到的循环冗余校验值、所述用户数据和所述元数据确定所述存储设备的状态机的下一位置,以及确定需要进行的保护检测和检测结果,所述保护检测包括:更新所述循环冗余校验信息值、守卫检测、应用标签检测和参考标签检测中的至少一种;在所述检测结果表示通过所述保护检测时,将所述用户数据和所述元数据存储在所述目标设备上。因此,能够解决在数据传输中容易出现数据被破坏的问题,以提高NVMe存储设备数据传输的安全性。

Description

数据保护方法以及基于NVMe的存储设备
技术领域
本申请涉及信息安全技术领域,具体而言,涉及一种数据保护方法以及基于NVMe的存储设备。
背景技术
随着云计算,人工智能和物联网的高速发展,终端产品和服务器对存储的需求越来越大,在一些注重安全性的应用领域,如企业级存储、金融、经济、保密等相关领域,对数据的可靠性要求很高。因此,NVMe(NonVolatile Memory express)固态硬盘(Solid StateDisk,SSD)以其低延迟、低功耗、高带宽等诸多优势,在存储领域中受到越来越多的关注,也成为了存储设备发展的新风向。
在某知名存储厂商写的《An Analysis of Latent Sector Errors in DiskDrives》一书中,对153万块硬盘进行了长达41个月的统计,一共出现了40万次以上的数据被破坏情况,分布在3855块磁盘上,上述数据说明了在数据传输的过程中,数据被破坏并不是一个小概率事件。因此,目前在终端与硬盘之间的端到端数据传输中,容易出现数据被破坏而导致传输数据的可靠性降低的问题。
发明内容
有鉴于此,本申请实施例的目的在于提供一种数据保护方法和基于NVMe的存储设备,用以解决上述在数据传输中容易出现数据被破坏而导致传输数据的可靠性降低的问题,以提高在终端与存储设备之间端到端的数据传输中的可靠性。
为了解决上述技术问题,第一方面,本申请实施例的目的在于提供一种数据保护方法,应用于基于NVMe的存储设备,包括:
获取目标设备上的用户数据以及元数据,所述目标设备为终端或所述存储设备;
根据计算得到的循环冗余校验值、所述用户数据和所述元数据确定所述存储设备的状态机的下一位置,以及确定需要进行的保护检测和检测结果,所述保护检测包括:更新所述循环冗余校验值、守卫检测、应用标签检测和参考标签检测中的至少一种;
在所述检测结果表示通过所述保护检测时,将所述用户数据和所述元数据存储在所述目标设备上。
在上述实现过程中,通过获取到的用户数据、元数据以及循环冗余校验(CyclicRedundancy Check,CRC)值确定存储设备中的状态机的下一位置,以根据状态机的下一位置,对获取的用户数据和元数据进行保护检测并得到检测结果,其中,对数据进行的保护检测可以包括:更新循环冗余校验值、守卫检测、应用标签检测和参考标签检测中的至少一种,在数据通过保护检测之后,能够确定数据完整,并将用户数据以及元数据保存至目标设备。当目标设备为终端时,通过上述实现过程能够对待写入存储设备的数据进行检测,当目标设备为存储设备,能够对终端从存储设备读取的数据进行检测。由此可见,可以通过上述实现过程,能够检测数据在终端与硬盘之间的端到端传输过程中是否被破坏,在数据完整时再将用户数据以及元数据保存至相应的位置。因此,解决了目前在终端与存储设备端到端的数据传输中容易出现数据被破坏,导致传输数据的可靠性降低的问题,提高了数据传输的安全性。
可选的,所述存储设备包括写保护架构,所述写保护架构包括第一DMA缓存、第一缓存控制组件、第一数据传输组件、第一检验组件和第一数据存储组件,所述读取目标设备上的用户数据以及元数据,包括:
通过所述第一缓存控制组件在检测到所述第一DMA缓存非空时,读取所述第一DMA缓存中的DMA命令以及与所述DMA命令相关的CMD,并对所述DMA与所述CMD进行合法性检测,在所述DMA命令与所述CMD通过合法性检测时,保存所述CMD,并向所述第一数据传输组件、所述第一检验组件以及所述第一数据存储组件发起传输请求;
在所述第一数据传输组件接收到所述传输请求后,通过所述第一数据传输组件从所述目标设备上获取所述用户数据和所述元数据,并将所述用户数据和所述元数据存储在所述第一数据传输组件的内部缓存中。
在上述实现过程中,通过写保护架构实现终端对存储设备的写操作中的数据保护,通过对DMA与CMD进行合法性检测,并向各个组件发起传输请求。能够确保DMA命令安全且有效,并通过传输请求能够使各个组件联动,使得第一数据传输组件接收到传输请求后,将从目标设备上获取用户数据和元数据暂存在第一数据传输组件的内部缓存中,以供第一检验组件对该暂存的用户数据和元数据进行验证,从而能够实现对数据进行合法性检测,能够防止错误非法的数据进入存储设备。
可选的,所述存储设备还包括NVMe控制器以及所述终端为所述NVMe控制器创建的命名空间,所述根据计算得到的循环冗余校验值、所述用户数据和所述元数据确定所述存储设备的状态机的下一位置,以及确定需要进行的保护检测和检测结果,包括:
在所述第一检验组件接收到所述传输请求后,通过所述第一检验组件判断是否需要读取所述循环冗余校验信息;
在确定需要读取所述循环冗余校验信息时,通过所述第一检验组件读取所述循环冗余校验信息,并检测所述存储设备与所述目标设备之间的端到端检测是否使能;
在检测到所述端到端检测没有使能时,通过所述第一检验组件从所述第一数据传输组件的内部缓存中读取所述用户数据以及所述元数据,并将所述用户数据以及所述元数据存储至所述第一数据存储组件的内部缓存中;
在检测到所述端到端检测使能时,且所述状态机的当前位置处于逻辑区块地址LBA位置时,通过所述第一检验组件跳转至LBA状态,以从所述第一数据传输组件的内部缓存中读取所述用户数据以及所述元数据,并根据所述用户数据、所述元数据以及循环冗余校验信息计算所述循环冗余校验值;
通过所述第一检验组件,基于所述循环冗余校验值、所述用户数据、所述元数据,以及所述命名空间的配置信息确定所述状态机的下一位置,以确定所述状态机的下一状态;
通过所述第一检验组件,基于所述状态机的下一状态,执行所述守卫检测、所述应用标签检测和所述参考标签检测中的至少一种以及对应的检测结果,并跳转至循环冗余校验信息值的第一更新状态,以确定是否更新所述循环冗余校验值。
在上述实现过程中,通过读取所述循环冗余校验信息,并检测所述存储设备与所述目标设备之间的端到端检测是否使能,使第一检验组件确认是否对数据进行端到端的保护检测。在不需要进行保护检测时,在确定不需要进行保护检测时对数据进行透传;在需要进行保护检测时,基于读取到的循环冗余校验信息、用户数据以及元数据计算循环冗余校验值,并基于这些信息确定状态机的下一状态,由于不同的状态,对应执行的保护检测不同,因此确定状态机的下一状态,能够确定需要执行的保护检测,并在执行保护检测得到对应的检测结果,能够提高数据在终端和存储设备之间的传输过程中的灵活性以及安全性。
可选的,所述存储设备还包括:加密组件,所述根据计算得到的循环冗余校验值、所述用户数据和所述元数据确定所述存储设备的状态机的下一位置,以及确定需要进行的保护检测和检测结果,还包括:
在所述检测结果表示通过所述保护检测时,通过所述第一存储组件判断是否需要通过所述加密组件对所述用户数据以及所述元数据进行加密;
如果需要进行加密,则通过所述加密组件对所述用户数据以及所述元数据基于指定加密算法进行加密,并将加密后的所述用户数据以及所述元数据存储在所述第一数据存储组件的内部缓存中,所述指定加密算法包括AES或SM4。
在上述实现过程中,可以通过对用户数据以及元数据进行加密,能够进一步提高数据的安全性。通过使用SM4算法或AES算法对用户数据以及元数据进行加密,能够在保证安全级别高的情况下,保持较快的运算速度以及较低的计算资源消耗。
可选的,所述存储设备包括读保护架构,所述读保护架构包括第二DMA缓存、第二缓存控制组件、第二数据传输组件、第二检验组件和第二数据存储组件,所述读取目标设备上的用户数据以及元数据,包括:
通过所述第二缓存控制组件在检测到所述第二DMA缓存非空时,读取所述第二DMA缓存中的DMA命令以及与所述DMA命令相关的CMD,并对所述DMA与所述CMD进行合法性检测,在所述DMA命令与所述CMD通过合法性检测时,保存所述CMD,并向所述第二数据传输组件、所述第二检验组件以及所述第二数据存储组件发起传输请求;
在所述第二数据存储组件接收到所述传输请求后,通过所述第二数据存储组件从所述存储设备获取所述用户数据以及所述元数据,并将所述用户数据以及所述元数据存储在所述第二数据存储组件的内部缓存中。
在上述实现过程中,通过写保护架构实现终端对存储设备的读操作中的数据保护,通过对DMA与CMD进行合法性检测,并向各个组件发起传输请求,能够确保DMA命令安全且有效,并通过传输请求能够使各个组件联动,使得第二数据存储传输组件接收到传输请求后,将从存储设备上获取用户数据和元数据暂存在第二数据存储组件的内部缓存中,以供第二检验组件对该暂存的用户数据和元数据进行验证,从而能够实现对数据进行合法性检测,能够防止错误非法的数据进入终端。
可选的,所述存储设备还包括NVMe控制器以及所述主机终端为所述NVMe控制器创建的命名空间,所述根据计算得到的循环冗余校验值、所述用户数据和所述元数据确定所述存储设备的状态机的下一位置,以及确定需要进行的保护检测和检测结果,包括:
在所述第二检验组件接收到所述传输请求后,通过所述第二检验组件判断是否需要读取循环冗余校验信息;
在确定需要读取所述循环冗余校验信息时,通过所述第二检验组件读取所述循环冗余校验信息,并检测所述存储设备与所述目标设备之间的端到端检测是否使能;
在检测到所述端到端检测没有使能时,通过所述第二检验组件从所述第二数据存储组件的内部缓存中读取所述用户数据以及所述元数据,并将所述用户数据以及所述元数据存储至所述第二数据传输组件的内部缓存中;
在检测到所述端到端检测使能时,且所述状态机的当前位置处于逻辑区块地址LBA位置时,通过所述第二检验组件跳转至LBA状态,以从所述第二数据存储组件的内部缓存中读取所述用户数据以及所述元数据,并根据所述用户数据、所述元数据以及循环冗余校验信息计算所述循环冗余校验值;
通过所述第二检验组件,基于所述循环冗余校验值、所述用户数据、所述元数据,以及所述命名空间的配置信息确定所述状态机的下一位置,以确定所述状态机的下一状态;
通过所述第二检验组件,基于所述状态机的下一状态,执行所述守卫检测、所述应用标签检测和所述参考标签检测中的至少一种以及对应的检测结果,并跳转至循环冗余校验值的第一更新状态,以确定是否更新所述循环冗余校验值。
在上述实现过程中,通过读取所述循环冗余校验信息,并检测所述存储设备与所述目标设备之间的端到端检测是否使能,使第二检验组件确认是否对数据进行端到端的保护检测。在不需要进行保护检测时,在确定不需要进行保护检测时对数据进行透传;在需要进行保护检测时,基于读取到的循环冗余校验信息、用户数据以及元数据计算循环冗余校验值,并基于这些信息确定状态机的下一状态,由于不同的状态,对应执行的保护检测不同,因此确定状态机的下一状态,能够确定需要执行的保护检测,并在执行保护检测得到对应的检测结果,能够提高数据在主机和存储设备之间的传输过程中的灵活性以及安全性。
可选的,所述存储设备还包括:解密组件,所述通过所述第二数据存储组件从所述存储设备获取所述用户数据以及所述元数据,并将所述用户数据以及所述元数据存储在所述第二数据存储组件的内部缓存中,包括:
通过所述第二数据存储组件判断是否需要通过所述解密组件对所述用户数据以及所述元数据进行解密;
如果需要进行解密,则通过所述解密组件对所述用户数据以及所述元数据基于指定算法进行解密,并将解密后的所述用户数据以及所述元数据存储在所述第二数据存储组件的内部缓存中,所述指定算法包括AES或SM4。
在上述实现过程中,可以通过解密组件对加密的用户数据以及元数据进行解密。通过使用SM4算法或AES算法对用户数据以及元数据进行解密,能够在保证安全级别高的情况下,保持较快的运算速度以及较低的计算资源消耗。
可选的,所述下一状态包括PI0状态和MATE状态,所述基于所述状态机的下一状态,执行所述守卫检测、所述应用标签检测和所述参考标签检测中的至少一种以及对应的检测结果,并跳转至循环冗余校验值的第一更新状态,以确定是否更新所述循环冗余校验值,包括:
在所述PI0状态时,进行所述守卫检测和所述应用标签检测;其中,当在所述PI0状态检测到所述DMA命令的数据长度传输完毕时,跳转到所述第一更新状态,以确定是否更新所述循环冗余校验值;当在所述PI0状态未检测到所述DMA命令的数据长度传输完毕,且完成所述守卫检测和所述应用标签检测完成后,跳转至PI1状态;
在所述PI1状态时,进行所述参考标签检测;其中,当在所述PI1状态检测到所述DMA命令的数据长度传输完毕时,跳转到所述第一更新状态,以确定是否更新所述循环冗余校验值;其中,当在所述PI1状态未检测到所述DMA命令的数据长度传输完毕,且完成所述参考标签检测完成后,如果保护信息的当前模式为第一模式,跳转到所述MATE状态,如果所述当前模式为第二模式,跳转回所述LBA状态,所述第一模式为保护信息在前元数据在后,所述第二模式为保护信息在后元数据在前;
在所述MATE状态时,如果所述当前模式为所述第一模式,则跳转回所述LBA状态,如果所述当前模式为所述第二模式,则跳转至所述PI0状态;
在所述第一更新状态时,如果处于第一情况下,则不更新所述循环冗余校验值,跳转至完成状态,所述第一情况包括:所述存储设备与所述目标设备之间的端到端保护功能未开启,或当前处于一个LBA传输完毕,且处于一个新的循环冗余校验值的开始位置;如果处于除所述第一情况外的其他情况下,跳转至循环冗余校验值的第二更新状态;
在所述第二更新状态时,更新所述循环冗余校验值并保存新的循环冗余校验值,以供下一DMA命令使用,并跳转至完成状态。
在上述实现过程中,能够通过第一检验组件基于状态机的不同状态对用户数据以及元数据进行保护检测,并更新CRC的值。能够完成终端对存储设备的写操作中的数据保护,并能够更新CRC供下一个DMA使用,提高了检验数据的效率。
可选的,所述方法还包括:
在进行所述守卫检测、所述应用标签检测或所述参考标签检测时,如果存在至少一种检测未通过时,结束所述保护检测,并向所述终端发送中断报告。
在上述实现过程中,可以在检测到数据保护过程中出现错误时,结束保护检验并向终端发送中断报告,以提示数据存在异常。
第二方面,本申请实施例提供一种基于NVMe的存储设备,包括:其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法的步骤。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种数据保护方法;
图2为本申请实施例提供的一种存储设备的示意图;
图3为本申请实施例提供的一种终端对存储设备的写操作中的数据保护检测的步骤;
图4为本申请实施例提供的另一种存储设备的示意图;
图5为本申请实施例提供的一种终端对存储设备的读操作中的数据保护检测的步骤。
图标:20-存储设备;21-写保护架构;210-第一寄存组件;211-第一DMA缓存;212-第一缓存控制组件;213-第一数据传输组件;214-第一检验组件;215-第一数据存储组件;216-加密组件;41-读保护架构;410-第二寄存组件;411-第二DMA缓存;412-第二缓存控制组件;413-第二数据传输组件;414-第二检验组件;415-第二数据存储组件;416-解密组件。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
请参看图1,图1为本申请实施例提供的一种数据保护方法,应用于基于NVMe的存储设备,包括:
在步骤S101中,获取目标设备上的用户数据以及元数据,所述目标设备为终端或所述存储设备。
其中,终端可以是服务器或者计算机的主机,存储设备可以是基于NVMe的硬盘,例如NVMe固态硬盘,也可以是基于NVMe的存储系统。
其中,获取到的用户数据以及元数据可以暂时存储在存储设备中的内部缓存中,并执行步骤S102,对暂时存储的用户数据以及元数据进行保护检测,然后根据检测结果执行步骤S103。其中,该内部缓存可以是静态随机存取存储器(Static Random-AccessMemory,SRAM)。
在步骤S102中,根据计算得到的循环冗余校验值、所述用户数据和所述元数据确定所述存储设备的状态机的下一位置,以及确定需要进行的保护检测和检测结果,所述保护检测包括:更新所述循环冗余校验值、守卫检测、应用标签检测和参考标签检测中的至少一种;
其中,循环冗余校验(Cyclie Redundancy Check,CRC)可以是通过预先指定的数学运算来建立数据位和校验位的约定关系的,可以通过将传输的数据当做一个位数很长的数,将这个数除以一个约定校验的数,将得到的余数作为校验数据附加到传输的数据后面,通过对CRC的计算,能够检测出数据在传输中是否出现错误。
由此可见,通过对传输的数据进行保护检测以及计算循环冗余校验值,能够解决在数据传输中,容易出现数据被破坏而导致传输数据的可靠性降低的问题。
在步骤S103中,在所述检测结果表示通过所述保护检测时,将所述用户数据和所述元数据存储在所述目标设备上。
其中,在终端以及存储设备之间的读操作以及写操作对应的储存位置不同,当目标设备为终端时,存储设备执行的是读操作,即计算机的主机从该存储设备读取数据的操作,对应的存储位置位于终端上;当目标设备为存储设备时,存储设备执行的是写操作,即计算机的主机向该存储设备写入数据的操作,对应的存储位置位于存储设备中。
示例性的,在写操作中,可以将用户数据缓存在存储设备的第一SRAM中,将元数据以及对应的保护信息缓存在存储设备的第二SRAM中,之后,在通过上述的保护检测后,将用户数据以及元数据以一个逻辑区块地址(Logical Block Address,LBA)为单位写到下一级缓存器中。在读操作中,获取存储设备上的用户数据以及元数据时,可以将用户数据以及元数据从双倍速率同步动态随机存储器(Double Data Rate SDRAM,DDR)或固态硬盘(SolidState Disk或Solid State Drive,SSD)控制器的片上缓存写入到存储设备的第三SRAM中,并在通过上述的保护检测后,通过获取的终端的物理地址信息,将用户数据以及元数据写入到对应的终端物理地址中。
由此可见,可以通过上述步骤检测出数据在传输过程中是否被破坏,在数据完整时将用户数据以及元数据保存至相应的位置。因此,解决了目前在终端与存储设备端到端的数据传输中容易出现数据被破坏,导致传输数据的可靠性降低的问题,提高了数据传输的安全性。
请参看图2,图2为本申请实施例提供的一种存储设备20的示意图。
所述存储设备20可以包括:写保护架构(DMA_IN_CTRL)21,所述写保护架构21可以包括第一寄存组件(dma_reg组件)210:第一DMA缓存(DMA_DLVQ缓存)211、第一缓存控制组件(DLVQ_CTRL组件)212、第一数据传输组件(包括用于传输用户数据的HOST_LBA_IN组件和用于传输元数据的HOST_META_IN组件)213、第一检验组件(E2E_CHK组件)214和第一数据存储组件(DEV_DATA_OUT组件)215。
相应的,步骤S101所述读取目标设备上的用户数据以及元数据,可以包括以下步骤:
通过所述第一缓存控制组件212在检测到所述第一DMA缓存211非空时,读取所述第一DMA缓存211中的DMA命令以及与所述DMA命令相关的CMD,并对所述DMA与所述CMD进行合法性检测,在所述DMA命令与所述CMD通过合法性检测时,保存所述CMD,并向所述第一数据传输组件213、所述第一检验组件214以及所述第一数据存储组件215发起传输请求。
在所述第一数据传输组件213接收到所述传输请求后,通过所述第一数据传输组件213从所述目标设备上获取所述用户数据和所述元数据,并将所述用户数据和所述元数据存储在所述第一数据传输组件213的内部缓存中。
示例的,根据NVMe协议,在传输数据时,一个命令提示符(Command,CMD)可能被拆分成多个直接存储器访问(Direct Memory Access,DMA)命令执行,故一个CMD对应的数据可能被拆分成多个DMA对应的数据进行传输。另外,用户数据和元数据是分别通过HOST_LBA_IN组件和用于HOST_META_IN组件获取的。
在获取用户数据和元数据的方法之前,先对NVMe协议中元数据的模式进行介绍。根据NVMe协议定义,根据元数据(Metadata)在主机内存中的存储方式将端到端数据保护分为两种模式:第一种是元数据在用户数据后面,二者存放于相同的主机内存区域;第二种是元数据和用户数据放在不同的主机内存区域(即元数据与用户数据是分离模式)。上述的每一种模式又可以分为保护信息(Protect Information)在元数据之前,或者保护信息在元数据之后。根据协议,保护信息的种类共3种,每一种保护信息均为8个比特,均包含三个域段:守卫(Guard)域段,应用标签域段(Application Tag)、参考标签域段(Reference Tag)。守卫域段为CRC-16校验域段,共4个比特,用于对一个NVMe命令的数据进行CRC校验。三种保护信息的区别在于:对于第一种或第二种保护信息,如果NVMe命令中参考标签检测域段为1,那么NVMe控制器会将计算的参考标签值与主机发送的参考标签值比较,起始的参考标签值在NVMe命名中给出,随后每次逻辑块加1,则参考标签值加1,对于第一种保护信息,初始的参考标签的值为第一个逻辑块地址(Logic Block Address,LBA)的低四个倍特的值。对于第二种保护信息,主机可以随意指定初始的参考标签值。对于第三种保护信息,参考标签的值一直保持不变。三种保护信息的相同点是守卫域段的检测及应用标签的检测方法相同。
在HOST_LBA_IN组件内部具有一个缓存SRAM,在接收到上述传输请求,并检测到当前的DMA命令对应的用户数据传输未完毕,且SRAM有存储空间可用时,每次从终端读取512字节(Byte,B)用户数据或最后一笔不足512B的用户数据暂存至SRAM中。
在HOST_META_IN组件内部具有一个缓存SRAM,在接收到上述传输请求,并检测到当前的DMA命令对应的用户数据传输未完毕,且SRAM有存储空间可用时,确定元数据与用户数据是分离模式或者是元数据存放于用户数据后的模式,当元数据与用户数据是分离模式且SRAM存储空间有大于512B的空间可用或当前剩余元数据传输长度小于512B时,每次从终端读取512B元数据或实际剩余的元数据长度;当为元数据存放于用户数据后的模式时,每次从终端读取一个元数据的长度。
另外,还需要说明的是,第一寄存组件210是提供命令控制部分所需要的由CPU配置的寄存器,如第一DMA缓存211相关的配置如大小、起始地址、读写指针等,DMA完成命令状态缓存相关的配置如大小、起始地址、读写指针等,DMA控制寄存器、DMA中断寄存器等。第一DMA缓存211可以是一个DMA缓存空间,其中存储着DMA命令以及与所述DMA命令相关的CMD;第一缓存控制组件212可以是一个状态机,可以由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,协调相关信号动作、完成特定操作;第一数据传输组件213可以包含状态机和SRAM,第一检验组件214可以是一个状态机,也可以是一个服务器状态机,第一数据存储组件215中可以包含状态机和SRAM。
进一步,存储设备20还包括NVMe控制器,以及所述终端为所述NVMe控制器创建的命名空间(namespace)。
请参看图3,图3为本申请实施例提供的一种终端对存储设备的写操作中的数据保护检测方法的流程图,如图3所示,步骤102可以包括如下步骤:
在步骤S301中,在所述第一检验组件接收到所述传输请求后,通过所述第一检验组件判断是否需要读取循环冗余校验信息。
在步骤S302中,在确定需要读取所述循环冗余校验信息时,通过所述第一检验组件读取所述循环冗余校验信息,并检测所述存储设备与所述目标设备之间的端到端检测是否使能。
在步骤S303中,在检测到所述端到端检测没有使能时,通过所述第一检验组件从所述第一数据传输组件的内部缓存中读取所述用户数据以及所述元数据,并将所述用户数据以及所述元数据存储至所述第一数据存储组件的内部缓存中。
在步骤S304中,在检测到所述端到端检测使能时,且所述状态机的当前位置处于LBA位置时,通过所述第一检验组件跳转至LBA状态,以从所述第一数据传输组件的内部缓存中读取所述用户数据以及所述元数据,并根据所述用户数据、所述元数据以及循环冗余校验信息计算所述循环冗余校验值。
在步骤S305中,通过所述第一检验组件,基于所述循环冗余校验值、所述用户数据、所述元数据,以及所述命名空间的配置信息确定所述状态机的下一位置,以确定所述状态机的下一状态。
在步骤S306中,通过所述第一检验组件,基于所述状态机的下一状态,执行所述守卫检测、所述应用标签检测和所述参考标签检测中的至少一种以及对应的检测结果,并跳转至循环冗余校验值的第一更新状态,以确定是否更新所述循环冗余校验值。
示例性的,下面基于图2所示的写保护架构中的结构,对上述步骤S301-306进行说明:
第一检验组件214在待机(IDLE)状态下,接收到第一缓存控制组件212的传输请求后,判断是否读取CRC信息,当需要读取CRC信息时,向第一缓存控制组件212发起读取CRC信息的请求,从第一数据传输组件213中读取CRC信息。
第一检验组件214在读取CRC信息之后,第一检验组件214的状态机跳转到确认(ACK_ST)状态,在此状态下检测存储设备与终端之间的数据检测是否有使能信号,在检测到没有使能信号时,确定端到端检测没有使能,则该状态机跳转至通过(PASSTHR)状态,在此状态数据进行透传,即第一检验组件214从第一数据传输组件213的SRAM中以LBA为单位读取用户数据以及元数据(具体的,从HOST_LBA_IN组件的SRAM中读取用户数据,从HOST_META_IN组件的SRAM中读取元数据),将用户数据以及元数据存储至第一数据存储组件215的SRAM中(DEV_DATA_OUT组件的SRAM0中)。
由此可见,可以通过在检测到没有使能信号时,直接将数据存储到对应位置,能够在判定数据不需要保护时,对数据进行透传,提高了数据在终端以及存储设备的传输过程中的灵活性。
当第一检验组件214检测到使能信号且第一检验组件214中的状态机处于LBA位置时,则in_lba_range信号有效,状态机跳转至LBA状态,可以以LBA为单位将用户数据以及元数据从第一数据传输组件的SRAM中读取出来(同上,从HOST_LBA_IN组件的SRAM中读取用户数据,从HOST_META_IN组件的SRAM中读取元数据),并依据读取到的CRC信息、用户数据和元数据计算CRC的值,而后再根据CRC的值、NVMe控制器以及上述NVMe控制器的命名空间中对端到端保护模式的设定、保护信息相对元数据的位置、保护信息种类等信息确定LBA传输后在状态机中的下一个位置,以确定状态机在当前LBA状态下的下一个状态。其中,下一个状态可以是PI0状态,也可以是META状态,除此以外,当第一检验组件214的状态机在LBA状态DMA的传输长度为0时,此时跳转到循环冗余校验的第一更新(CRC_UPD1)状态,更新CRC的值。
另外,当第一检验组件214检测到使能信号且第一检验组件214中的状态机处于ACK_ST状态下也可以根据DMA传输的长度确认跳转至PI0、PI1以及META中的任一状态,若当前位置处于DMA中的PI0位置时,跳转至PI0状态,进行守卫检测和应用标签检测;若当前位置处于DMA中的PI1位置时,跳转至PI1状态,进行参考标签检测;若当前位置处于DMA中的META位置时,跳转至META状态。
由此可见,通过上述实施步骤,能够有效地提高数据在终端以及存储设备的端到端的传输之间的安全性。
其中,在终端对存储设备的NVMe控制器创建每个命名空间时,就已经确定了该命名空间的元数据大小、逻辑块的大小、是否使能端到端数据保护、元数据是否储存在用户数据之后、保护信息和元数据的相对位置、端到端保护信息的种类等信息。在每个具体的NVMe命令中确定了是否进行守卫域段检测、是否进行应用标签域段检测、是否进行参考标签域段检测以及确定保护信息行动位的值。从而,在NVMe控制器得到这些具体的信息便可以通过上述写保护架构执行对应的端到端数据保护。
进一步的,步骤S306具体可以包括:
在所述PI0状态时,进行所述守卫检测和所述应用标签检测;其中,当在所述PI0状态检测到所述DMA命令的数据长度传输完毕时,跳转到所述第一更新状态,以确定是否更新所述循环冗余校验值;当在所述PI0状态未检测到所述DMA命令的数据长度传输完毕,且完成所述守卫检测和所述应用标签检测完成后,跳转至PI1状态。
在所述PI1状态时,进行所述参考标签检测;其中,当在所述PI1状态检测到所述DMA命令的数据长度传输完毕时,跳转到所述第一更新状态,以确定是否更新所述循环冗余校验值;其中,当在所述PI1状态未检测到所述DMA命令的数据长度传输完毕,且完成所述参考标签检测完成后,如果保护信息的当前模式为第一模式,跳转到所述MATE状态,如果所述当前模式为第二模式,跳转回所述LBA状态,所述第一模式为保护信息在前元数据在后,所述第二模式为保护信息在后元数据在前。
在所述MATE状态时,如果所述当前模式为所述第一模式,则跳转回所述LBA状态,如果所述当前模式为所述第二模式,则跳转至所述PI0状态。
在所述第一更新状态时,如果处于第一情况下,则不更新所述循环冗余校验值,跳转至完成状态,所述第一情况包括:所述存储设备与所述目标设备之间的端到端保护功能未开启,或当前处于一个LBA传输完毕,且处于一个新的循环冗余校验值的开始位置;如果处于除所述第一情况外的其他情况下,跳转至循环冗余校验值的第二更新状态。
在所述第二更新状态时,更新所述循环冗余校验值并保存新的循环冗余校验值,以供下一DMA命令使用,并跳转至完成状态。
下面基于图2所示的写保护架构中的结构,对上述步骤进行说明:
第一检验组件214的状态机跳转至PI0状态时,进行守卫检测和应用标签检测,其中,如果状态机在检测到当前DMA对应的数据已传输完毕,则跳转至CRC_UPD1状态。
当守卫检测和应用标签检测通过之后,状态机跳转至PI1状态,进行参考标签校验,状态机在PI1状态校验完毕后,如果当前用户数据与元数据是用户数据中的保护信息在前,元数据在后的模式,跳转至META状态,如果当前是保护信息在后,元数据在前的模式,则跳转至LBA状态。其中,如果状态机在检测到当前DMA已传输完毕,则同样的跳转至CRC_UPD1状态。
状态机在META状态下,如果当前用户数据与元数据是用户数据中的保护信息在前,元数据在后的模式,状态机跳转至LBA状态;如果当前是保护信息在后,元数据在前的模式,状态机跳转至PI0状态。其中,如果状态机在检测到当前DMA已传输完毕,则同样的跳转至CRC_UPD1状态。
其中,当状态机处于CRC_UPD1状态时,若判断当前没有开启守卫检测或者在当前状态下一个LBA传输完毕,处于一个新的CRC的开始位置时,则不更新CRC的值。在其他的情况下,状态机跳转至CRC_UPD状态,更新并保存新的CRC的值,之后跳转至DONE状态,发出当前DMA处理完毕的信息,跳转至IDLE状态。
其中,CRC的值可以用于检测数据传输或保存过程中可能出现的错误,从终端获取的数据中包含一个CRC值,由终端计算得到。存储设备获取该数据后,依据得到的数据进行与终端相同的计算也得到一个CRC值,如果这两个CRC结果不一致,则说明数据发送过程中出现了差错,第一检验组件214可要求终端重新发送数据。
由此可见,通过上述实施步骤,能够通过第一检验组件对用户数据以及元数据进行保护检测。
另外,通过上述实施过程可以看出,通过允许DMA停在状态机中的LBA、PI0、PI1以及META位置的任一位置,能够防止DMA出现BUG导致程序无限循环,较大程度的调高了固件设计的灵活性。
可选的,所述存储设备20还可以包括:加密组件(Crypt enc组件)216,步骤S102所述的根据计算得到的循环冗余校验值、所述用户数据和所述元数据确定所述存储设备的状态机的下一位置,以及确定需要进行的保护检测和检测结果,还可以包括:
在所述检测结果表示通过所述保护检测时,通过所述第一存储组件判断是否需要通过所述加密组件对所述用户数据以及所述元数据进行加密。
如果需要进行加密,则通过所述加密组件对所述用户数据以及所述元数据基于指定算法进行加密,并将加密后的所述用户数据以及所述元数据存储在所述第一数据存储组件的内部缓存中,所述指定算法包括AES或SM4。
示例的,第一数据存储组件215,即DEV_DATA_OUT组件中包括三个缓存SRAM0-2,上述步骤具体为:
检测结果表示通过所述保护检测后,DEV_DATA_OUT组件将用户数据缓存在DEV_DATA_OUT组件的SRAM0中,将元数据和保护信息缓存在DEV_DATA_OUT组件的SRAM1中,在DEV_DATA_OUT组件中进行判断是否需要通过Crypt enc组件进行SM4或AES加密操作。如不需要加密操作,则将用户数据和元数据及保护信息以LBA为单位保存在DEV_DATA_OUT组件的SRAM2中,并发起写DDR或SSD控制器片上缓存的请求,以将户数据和元数据及保护信息以LBA为单位写到下一级存储器中。如需要进行SM4或AES加密操作,则将用户数据进行加密,将加密后的用户数据及元数据及保护信息以LBA为单位保存在DEV_DATA_OUT组件的SRAM2中,并发起写DDR或SSD控制器片上缓存的请求,以将户数据和元数据及保护信息以LBA为单位写到下一级存储器中。
由此可见,可以通过对用户数据以及元数据进行加密,能够进一步提高数据的安全性。通过使用SM4算法或AES算法对用户数据以及元数据进行加密,能够在保证安全级别高的情况下,保持较快的运算速度以及较低的计算资源消耗。
请参看图4,图4为本申请实施例提供的另一种存储设备的示意图。
所述存储设备20除了包含上述写保护架构21之外,还可以包括读保护架构41。该所述读保护架构41包括第二寄存组件(dma_reg组件)410,第二DMA缓存(DMA_DLVQ缓存)411、第二缓存控制组件(DLVQ_CTRL组件)412、第二数据传输组件(包括用于传输用户数据的HOST_LBA_OUT组件和用于传输元数据的HOST_META_OUT组件)413、第二检验组件(E2E_CHK组件)414和第二数据存储组件(DEV_DATA_IN组件)415。
相应的,步骤S101所述读取目标设备上的用户数据以及元数据,可以包括以下步骤:
通过所述第二缓存控制组件412在检测到所述第二DMA缓存411非空时,读取所述第二DMA缓存411中的DMA命令以及与所述DMA命令相关的CMD,并对所述DMA与所述CMD进行合法性检测,在所述DMA命令与所述CMD通过合法性检测时,保存所述CMD,并向所述第二数据传输组件413、所述第二检验组件414以及所述第二数据存储组件415发起传输请求。
在所述第二数据传输组件413接收到所述传输请求后,通过所述第二数据存储组件415从所述存储设备获取所述用户数据以及所述元数据,并将所述用户数据以及所述元数据存储在所述第二数据存储组件415的内部缓存中。
其中,第二DMA缓存411可以是一个DMA缓存空间,其中存储着DMA命令以及与所述DMA命令相关的CMD;第二缓存控制组件412可以是一个状态机,可以由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,协调相关信号动作、完成特定操作;第二数据传输组件413可以包含状态机和SRAM,第二检验组件414可以是一个状态机,也可以是一个服务器状态机,第二数据存储组件415中可以包含状态机和SRAM。
值得说明的是,在终端对存储设备的写操作以及终端对存储设备的读操作中,可以共用一个寄存组件、DMA缓存(DMA_DLVQ缓存)、缓存控制组件(DLVQ_CTRL组件)以及检验组件(E2E_CHK组件),即第一寄存组件210与第二寄存组件410可以是同一个寄存组件、第一DMA缓存211与第二DMA缓存411可以是同一个DMA缓存;第一缓存控制组件212与第二缓存控制组件412可以是同一个缓存控制组件;第一检验组件214与第二检验组件414可以是同一个检验组件。
请参看图5,图5为本申请实施例提供的一种终端对存储设备的读操作中的数据保护检测方法的流程图,如图5所示,步骤102可以包括如下步骤:
在步骤S501中,在所述第二检验组件接收到所述传输请求后,通过所述第二检验组件判断是否需要读取循环冗余校验信息。
在步骤S502中,在确定需要读取所述循环冗余校验信息时,通过所述第二检验组件读取所述循环冗余校验信息,并检测所述存储设备与所述目标设备之间的端到端检测是否使能。
在步骤S503中,在检测到所述端到端检测没有使能时,通过所述第二检验组件从所述第二数据存储组件的内部缓存中读取所述用户数据以及所述元数据,并将所述用户数据以及所述元数据存储至所述第二数据传输组件的内部缓存中。
在步骤S504中,在检测到所述端到端检测使能时,且所述状态机的当前位置处于LBA位置时,通过所述第二检验组件跳转至LBA状态,以从所述第二数据存储组件的内部缓存中读取所述用户数据以及所述元数据,并根据所述用户数据、所述元数据以及循环冗余校验信息计算所述循环冗余校验值。
其中,通过使能控制信号的输入以及输出,相当于一个允许信号,存储设备只有检测到有使能时,才能对传输或保存的数据进行保护,进行之后的步骤。
在步骤S505中,通过所述第二检验组件,基于所述循环冗余校验值、所述用户数据、所述元数据,以及所述命名空间的配置信息确定所述状态机的下一位置,以确定所述状态机的下一状态。
在步骤S506中,通过所述第二检验组件,基于所述状态机的下一状态,执行所述守卫检测、所述应用标签检测和所述参考标签检测中的至少一种以及对应的检测结果,并跳转至循环冗余校验值的第一更新状态,以确定是否更新所述循环冗余校验值。
在上述种终端对存储设备的读操作中的数据保护检测的步骤,与终端对存储设备的写操作中的数据保护检测的步骤相似,区别在于:在写操作中,第一检验组件读取用户数据、元数据及保护信息来源是终端,通过保护检测后,数据的去向是写入第一存储组件的内部缓存中,以便进一步存储到存储设备的下一级缓存。在读操作的中,第二检验组件读取用户数据、元数据及保护信息来源是第二存储组件,第二存储组件中存储有从存储设备中读取的用户数据、元数据及保护信息,数据的去向是终端。而第一检验组件和第二检验组件进行保护检测的方法相同(可参照步骤S301-306),此处不再赘述。
可选的,所述存储设备20还可以包括解密组件(Crypt dec组件)416,所述通过所述第二数据存储组件从所述存储设备获取所述用户数据以及所述元数据,并将所述用户数据以及所述元数据存储在所述第二数据存储组件的内部缓存中,包括:
通过所述第二数据存储组件415判断是否需要通过所述解密组件对所述用户数据以及所述元数据进行解密。
如果需要进行解密,则通过所述解密组件对所述用户数据以及所述元数据基于指定算法进行解密,并将解密后的所述用户数据以及所述元数据存储在所述第二数据存储组件415的内部缓存中,所述指定算法包括AES或SM4。
示例的,第二数据存储组件415,即DEV_DATA_IN组件中包括三个缓存SRAM0-2,以存储设备为DDR或SSD为例,上述步骤具体为:
从DDR或SSD控制器片上的缓存中将用户数据和元数据读取出来,写入到DEV_DATA_IN的SRAM0中,判断当前LBA大小及元数据大小及是否需要在Crypt dec组件进行AES或SM4解密操作。若需要进行SM4或AES解密,则仅将用户数据进行解密,并将元数据及保护信息保存在SRAM2中,将解密之后的用户数据保存在SRAM3中。另外,如果若当前没有开启端到端保护功能,则从DDR或SSD控制器片上的缓存中读取的数据仅包含用户数据,若要在Crypt dec组件进行SM4或AES解密,则仅将用户数据进行解密,并将解密后的用户数据存储在SRAM3中。
由此可见,可以通过对用户数据以及元数据进行解密,能够进一步提高数据的安全性。通过使用SM4算法或AES算法对用户数据以及元数据进行解密,能够在保证安全级别高的情况下,保持较快的运算速度以及较低的计算资源消耗。
可选的,在进行检测到发生所述守卫检测、所述应用标签检测和或所述参考标签检测时,如果存在的至少一种检测未通过错误时,结束所述保护检验检测,并向所述主机终端发送中断报告。
由此可见,通过读取循环冗余校验信息,检测针对读取所述用户数据以及所述元数据的使能,能够有效地提高了数据在终端以及存储设备的端到端的传输之间的安全性;可以通过对用户数据进行加密,能够进一步提高数据的安全性;可以通过检测到数据保护过程中出现错误时,结束保护检验以及发送中断报告,能够提高数据传输效率,维持数据正常传输。
值得一提的是,在终端对存储设备的读操作中的数据保护检测中,第二数据传输组件413可以包含两个状态机,可以通过其中一个状态机将用户数据写入到终端主机对应的主机物理地址中,可以通过另一个状态机将元数据及保护信息写入到终端主机对应的主机物理地址中。
另外,存储设备20还可以包括:命令控制架构,该命令控制架构可以包括:
寄存组件(CMD_REG组件),可以用于提供命令控制部分所需要的由CPU配置的寄存器,如存储设备缓存相关的配置如大小、起始地址和读写指针,CMD完成命令状态缓存相关的配置如大小、起始地址和读写指针,每个NVMe命令空间的属性如LBA最大地址,端到端保护信息的模式和种类,物理区页(Physical Region Page,PRP)和分散聚合表(ScatterGather List,SGL)的配置及控制。
命令缓存组件(CMD_MEM组件),可以用于存放从存储设备缓存(CMD_DLVQ缓存)中加载的命令信息,并处理每次DMA命令执行前需要的命令信息及结束后更新的命令信息。
CMD控制组件(CMD_DLVQ_CTRL组件),可以用于检测到存储设备缓存为非空时,自动的将缓存里的命令信息读取出来加载到命令存放组件中。
PRP/SGL控制组件,可以用于对NVMe命令的PRP或SGL的管理。
其中,当第一数据传输组件213和第一数据存储组件215需要终端的PRP或SGL信息时,可以从PRP/SGL控制组件获得。示例的,PRP/SGL控制组件可以对第一数据传输组件213相关的PRP或SGL管理和第一数据存储组件215相关的PRP或SGL进行统一或分散管理,能够提高存储设备使用时的灵活性和传输速度。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
需要说明的是,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种数据保护方法,其特征在于,应用于基于NVMe的存储设备,包括:
获取目标设备上的用户数据以及元数据,所述目标设备为终端或所述存储设备,所述存储设备包括NVMe控制器以及所述终端为所述NVMe控制器创建的命名空间;
根据计算得到的循环冗余校验值、所述用户数据、所述元数据和所述命名空间的配置信息确定所述存储设备的状态机的下一位置,以及确定需要进行的保护检测和检测结果,所述保护检测包括:更新所述循环冗余校验值、守卫检测、应用标签检测和参考标签检测中的至少一种;其中,所述配置信息包括所述存储设备的大小、起使地址和读写指针;
在所述检测结果表示通过所述保护检测时,将所述用户数据和所述元数据存储在对应的所述目标设备上,当所述目标设备为所述终端时,所述对应的所述目标设备为所述存储设备;当所述目标设备为所述存储设备时,所述对应的所述目标设备为所述终端。
2.根据权利要求1所述的方法,其特征在于,所述存储设备还包括写保护架构,所述写保护架构包括第一DMA缓存、第一缓存控制组件、第一数据传输组件、第一检验组件和第一数据存储组件,所述获取目标设备上的用户数据以及元数据,包括:
通过所述第一缓存控制组件在检测到所述第一DMA缓存非空时,读取所述第一DMA缓存中的DMA命令以及与所述DMA命令相关的CMD,并对所述DMA与所述CMD进行合法性检测,在所述DMA命令与所述CMD通过合法性检测时,保存所述CMD,并向所述第一数据传输组件、所述第一检验组件以及所述第一数据存储组件发起传输请求;
在所述第一数据传输组件接收到所述传输请求后,通过所述第一数据传输组件从所述目标设备上获取所述用户数据和所述元数据,并将所述用户数据和所述元数据存储在所述第一数据传输组件的内部缓存中。
3.根据权利要求2所述的方法,其特征在于,所述根据计算得到的循环冗余校验值、所述用户数据、所述元数据和所述命名空间的配置信息确定所述存储设备的状态机的下一位置,以及确定需要进行的保护检测和检测结果,包括:
在所述第一检验组件接收到所述传输请求后,通过所述第一检验组件判断是否需要读取循环冗余校验信息;
在确定需要读取所述循环冗余校验信息时,通过所述第一检验组件读取所述循环冗余校验信息,并检测所述存储设备与所述目标设备之间的端到端检测是否使能;
在检测到所述端到端检测没有使能时,通过所述第一检验组件从所述第一数据传输组件的内部缓存中读取所述用户数据以及所述元数据,并将所述用户数据以及所述元数据存储至所述第一数据存储组件的内部缓存中;
在检测到所述端到端检测使能时,且所述状态机的当前位置处于逻辑区块地址LBA位置时,通过所述第一检验组件跳转至LBA状态,以从所述第一数据传输组件的内部缓存中读取所述用户数据以及所述元数据,并根据所述用户数据、所述元数据以及循环冗余校验信息计算所述循环冗余校验值;
通过所述第一检验组件,基于所述循环冗余校验值、所述用户数据、所述元数据,以及所述命名空间的配置信息确定所述状态机的下一位置,以确定所述状态机的下一状态;
通过所述第一检验组件,基于所述状态机的下一状态,执行所述守卫检测、所述应用标签检测和所述参考标签检测中的至少一种以及对应的检测结果,并跳转至循环冗余校验值的第一更新状态,以确定是否更新所述循环冗余校验值。
4.根据权利要求3所述的方法,其特征在于,所述存储设备还包括:加密组件,所述根据计算得到的循环冗余校验值、所述用户数据、所述元数据和所述命名空间的配置信息确定所述存储设备的状态机的下一位置,以及确定需要进行的保护检测和检测结果,还包括:
在所述检测结果表示通过所述保护检测时,通过所述第一存储组件判断是否需要通过所述加密组件对所述用户数据以及所述元数据进行加密;
如果需要进行加密,则通过所述加密组件对所述用户数据以及所述元数据基于指定算法进行加密,并将加密后的所述用户数据以及所述元数据存储在所述第一数据存储组件的内部缓存中,所述指定算法包括AES或SM4。
5.根据权利要求1所述的方法,其特征在于,所述存储设备包括读保护架构,所述读保护架构包括第二DMA缓存、第二缓存控制组件、第二数据传输组件、第二检验组件和第二数据存储组件,所述获取目标设备上的用户数据以及元数据,包括:
通过所述第二缓存控制组件在检测到所述第二DMA缓存非空时,读取所述第二DMA缓存中的DMA命令以及与所述DMA命令相关的CMD,并对所述DMA与所述CMD进行合法性检测,在所述DMA命令与所述CMD通过合法性检测时,保存所述CMD,并向所述第二数据传输组件、所述第二检验组件以及所述第二数据存储组件发起传输请求;
在所述第二数据存储组件接收到所述传输请求后,通过所述第二数据存储组件从所述存储设备获取所述用户数据以及所述元数据,并将所述用户数据以及所述元数据存储在所述第二数据存储组件的内部缓存中。
6.根据权利要求5所述的方法,其特征在于,所述存储设备还包括NVMe控制器以及所述终端为所述NVMe控制器创建的命名空间,所述根据计算得到的循环冗余校验值、所述用户数据、所述元数据和所述命名空间的配置信息确定所述存储设备的状态机的下一位置,以及确定需要进行的保护检测和检测结果,包括:
在所述第二检验组件接收到所述传输请求后,通过所述第二检验组件判断是否需要读取循环冗余校验信息;
在确定需要读取所述循环冗余校验信息时,通过所述第二检验组件读取所述循环冗余校验信息,并检测所述存储设备与所述目标设备之间的端到端检测是否使能;
在检测到所述端到端检测没有使能时,通过所述第二检验组件从所述第二数据存储组件的内部缓存中读取所述用户数据以及所述元数据,并将所述用户数据以及所述元数据存储至所述第二数据传输组件的内部缓存中;
在检测到所述端到端检测使能时,且所述状态机的当前位置处于逻辑区块地址LBA位置时,通过所述第二检验组件跳转至LBA状态,以从所述第二数据存储组件的内部缓存中读取所述用户数据以及所述元数据,并根据所述用户数据、所述元数据以及循环冗余校验信息计算所述循环冗余校验值;
通过所述第二检验组件,基于所述循环冗余校验值、所述用户数据、所述元数据,以及所述命名空间的配置信息确定所述状态机的下一位置,以确定所述状态机的下一状态;
通过所述第二检验组件,基于所述状态机的下一状态,执行所述守卫检测、所述应用标签检测和所述参考标签检测中的至少一种以及对应的检测结果,并跳转至循环冗余校验值的第一更新状态,以确定是否更新所述循环冗余校验值。
7.根据权利要求5所述的方法,其特征在于,所述存储设备还包括:解密组件,所述通过所述第二数据存储组件从所述存储设备获取所述用户数据以及所述元数据,并将所述用户数据以及所述元数据存储在所述第二数据存储组件的内部缓存中,包括:
通过所述第二数据存储组件判断是否需要通过所述解密组件对所述用户数据以及所述元数据进行解密;
如果需要进行解密,则通过所述解密组件对所述用户数据以及所述元数据基于指定算法进行解密,并将解密后的所述用户数据以及所述元数据存储在所述第二数据存储组件的内部缓存中,所述指定算法包括AES或SM4。
8.根据权利要求3或6所述的方法,其特征在于,所述下一状态包括PI0状态和MATE状态,所述基于所述状态机的下一状态,执行所述守卫检测、所述应用标签检测和所述参考标签检测中的至少一种以及对应的检测结果,并跳转至循环冗余校验值的第一更新状态,以确定是否更新所述循环冗余校验值,包括:
在所述PI0状态时,进行所述守卫检测和所述应用标签检测;其中,当在所述PI0状态检测到所述DMA命令的数据长度传输完毕时,跳转到所述第一更新状态,以确定是否更新所述循环冗余校验值;当在所述PI0状态未检测到所述DMA命令的数据长度传输完毕,且完成所述守卫检测和所述应用标签检测完成后,跳转至PI1状态;
在所述PI1状态时,进行所述参考标签检测;其中,当在所述PI1状态检测到所述DMA命令的数据长度传输完毕时,跳转到所述第一更新状态,以确定是否更新所述循环冗余校验值;其中,当在所述PI1状态未检测到所述DMA命令的数据长度传输完毕,且完成所述参考标签检测完成后,如果保护信息的当前模式为第一模式,跳转到所述MATE状态,如果所述当前模式为第二模式,跳转回所述LBA状态,所述第一模式为保护信息在前元数据在后,所述第二模式为保护信息在后元数据在前;
在所述MATE状态时,如果所述当前模式为所述第一模式,则跳转回所述LBA状态,如果所述当前模式为所述第二模式,则跳转至所述PI0状态;
在所述第一更新状态时,如果处于第一情况下,则不更新所述循环冗余校验值,跳转至完成状态,所述第一情况包括:所述存储设备与所述目标设备之间的端到端保护功能未开启,或当前处于一个LBA传输完毕,且处于一个新的循环冗余校验值的开始位置;如果处于除所述第一情况外的其他情况下,跳转至循环冗余校验值的第二更新状态;
在所述第二更新状态时,更新所述循环冗余校验值并保存新的循环冗余校验值,以供下一DMA命令使用,并跳转至完成状态。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在进行所述守卫检测、所述应用标签检测或所述参考标签检测时,如果存在至少一种检测未通过时,结束所述保护检测,并向所述终端发送中断报告。
10.一种基于NVMe的存储设备,其特征在于,包括:其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现权利要求1至9中任一项所述方法的步骤。
CN202011542222.8A 2020-12-23 2020-12-23 数据保护方法以及基于NVMe的存储设备 Active CN112558884B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011542222.8A CN112558884B (zh) 2020-12-23 2020-12-23 数据保护方法以及基于NVMe的存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011542222.8A CN112558884B (zh) 2020-12-23 2020-12-23 数据保护方法以及基于NVMe的存储设备

Publications (2)

Publication Number Publication Date
CN112558884A CN112558884A (zh) 2021-03-26
CN112558884B true CN112558884B (zh) 2023-03-14

Family

ID=75031839

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011542222.8A Active CN112558884B (zh) 2020-12-23 2020-12-23 数据保护方法以及基于NVMe的存储设备

Country Status (1)

Country Link
CN (1) CN112558884B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113660179B (zh) * 2021-07-30 2023-12-08 山东华芯半导体有限公司 一种PCIe SSD多虚拟功能设备的带宽协同控制装置及方法
US11893248B2 (en) 2022-02-11 2024-02-06 Western Digital Technologies, Inc. Secure metadata protection

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103164298A (zh) * 2011-12-15 2013-06-19 西部数据技术公司 产生用于奇偶校验扇区的数据通路保护的冗余的数据存储装置
CN109992444A (zh) * 2019-03-25 2019-07-09 深圳忆联信息系统有限公司 一种基于硬件的端对端数据保护方法、装置、计算机设备及存储介质
CN112115068A (zh) * 2019-06-21 2020-12-22 慧荣科技股份有限公司 多命名空间的数据存取及计算机可读取存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938201B2 (en) * 2002-09-05 2005-08-30 Agilent Technologies, Inc. Error detection system for a FIFO memory
US8285923B2 (en) * 2008-12-08 2012-10-09 Western Digital Technologies, Inc. Disk drive and method using native command queuing tags to identify logical block size and implement protection information
US8495469B2 (en) * 2011-05-16 2013-07-23 International Business Machines Corporation Implementing enhanced IO data conversion with protection information model including parity format of data integrity fields
KR102146037B1 (ko) * 2013-11-14 2020-08-19 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
US20160342463A1 (en) * 2015-05-20 2016-11-24 Kabushiki Kaisha Toshiba Data protection in a namespace
US20170097771A1 (en) * 2015-10-01 2017-04-06 Netapp, Inc. Transaction log layout for efficient reclamation and recovery

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103164298A (zh) * 2011-12-15 2013-06-19 西部数据技术公司 产生用于奇偶校验扇区的数据通路保护的冗余的数据存储装置
CN109992444A (zh) * 2019-03-25 2019-07-09 深圳忆联信息系统有限公司 一种基于硬件的端对端数据保护方法、装置、计算机设备及存储介质
CN112115068A (zh) * 2019-06-21 2020-12-22 慧荣科技股份有限公司 多命名空间的数据存取及计算机可读取存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《NVMe高速存储的FPGA实现》;崔丹丹等;《微电子学与计算机》;20190630;全文 *

Also Published As

Publication number Publication date
CN112558884A (zh) 2021-03-26

Similar Documents

Publication Publication Date Title
US10325108B2 (en) Method and apparatus for range based checkpoints in a storage device
US9817582B2 (en) Offload read and write offload provider
CN100489805C (zh) 运行时间安全保证的自动存储器检测器及其方法
US20090271536A1 (en) Descriptor integrity checking in a dma controller
US11194486B2 (en) Storage data sanitization
TWI610182B (zh) 用於提供儲存裝置上動態檔案系統的察知之系統及方法
US8751817B2 (en) Data processing apparatus and validity verification method
JP6984710B2 (ja) コンピュータ装置およびメモリ管理方法
CN112558884B (zh) 数据保护方法以及基于NVMe的存储设备
US20170364679A1 (en) Instrumented versions of executable files
US10091213B2 (en) Systems and methods to provide secure storage
US11263350B2 (en) Cryptographic apparatus and self-test method of cryptographic apparatus
EP4116851A1 (en) Trusted measurement method and related apparatus
US8898807B2 (en) Data protecting method, mobile communication device, and memory storage device
CN118132000A (zh) 透明附接的闪存存储器安全性
EP2339499A1 (en) Storage device, information processing device, and program
KR102478392B1 (ko) 최저 테일 레이턴시를 갖는 ssd들을 식별하기 위한 시스템 및 방법
US8990589B1 (en) System and method for robust full-drive encryption
US8751898B2 (en) Utilizing error correcting code data associated with a region of memory
EP3454216B1 (en) Method for protecting unauthorized data access from a memory
CN111061591B (zh) 基于存储器完整性检查控制器实现数据完整性检查的系统和方法
US10691586B2 (en) Apparatus and method for software self-test
US9836340B2 (en) Safe management of data storage using a volume manager
Cui et al. Towards trustable storage using SSDs with proprietary FTL
Cui et al. Towards trustworthy storage using SSDs with proprietary FTL

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant