CN111124950A - 数据管理装置、数据管理方法和存储介质 - Google Patents

数据管理装置、数据管理方法和存储介质 Download PDF

Info

Publication number
CN111124950A
CN111124950A CN201910719465.5A CN201910719465A CN111124950A CN 111124950 A CN111124950 A CN 111124950A CN 201910719465 A CN201910719465 A CN 201910719465A CN 111124950 A CN111124950 A CN 111124950A
Authority
CN
China
Prior art keywords
data
memory
cache
segment
type memory
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.)
Withdrawn
Application number
CN201910719465.5A
Other languages
English (en)
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of CN111124950A publication Critical patent/CN111124950A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/0622Securing storage systems in relation to access
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种数据管理装置、数据管理方法和存储介质,其能够容易且适当地提高访问性能。存储系统(20)包括存储器(SCM32和DRAM34)和与存储器连接的CPU(33),存储器用于缓存对存储设备(40、41)输入的数据和从存储设备(40、41)输出的数据,存储系统(20)构成为:具有访问性能高的DRAM(34)和访问性能比DRAM(34)低的SCM(32),SCM(32)的访问单位与DRAM(34)相同,CPU(33)基于对存储设备(40、41)输入的数据和从存储设备(40、41)输出的数据,决定使DRAM(34)和SCM(32)的哪一者缓存数据,并将数据缓存至所决定的DRAM(34)或SCM(32)。

Description

数据管理装置、数据管理方法和存储介质
技术领域
本发明涉及数据的缓存控制的技术。
背景技术
作为存储器的一例,已知作为半导体非易失性存储器的NAND型闪存。NAND型闪存与DRAM等易失性存储器相比能够提高存储密度、降低单位容量的成本(比特成本)。
但是,闪存中存在如下所述的限制。在改写数据之前,例如需要按4MB这样大小较大的块单位进行数据消去。另外,数据的读写需要按页这一单位进行。各块由多个页构成,页的大小例如是8KB或16KB。进而,块的消去次数存在上限(改写寿命),例如是数千次程度。
现有技术中公开了一种存储系统,其利用NAND型闪存的低成本的优点、除了搭载以DRAM为介质的缓存存储器之外、还搭载以NAND型闪存为介质的缓存存储器(例如参考专利文献1)。
这样的存储系统中,在将按8B或16B等较小的单位改写的数据(例如管理数据)保存在以NAND型闪存为介质的缓存存储器中时,也需要同时改写占据页内的99%以上的更新对象外的数据。因为NAND型闪存改写寿命短,所以这样的使用方法下寿命会较快地耗尽。对此,专利文献1中公开了这样的技术,将管理数据优先地保存在以DRAM为介质的缓存存储器中。
另一方面,最近,作为NAND型闪存以外的半导体非易失性存储器,也开发了相变存储器、磁阻存储器、电阻可变存储器等称为SCM(Storage Class Memory:存储级存储器)的非易失性半导体存储器。SCM与DRAM相比存储密度也更高。与NAND型闪存不同,不需要进行数据消去,能够与DRAM同样地按字节单位访问,改写寿命也较长,易于使用。另外,与DRAM相比更廉价,能够以相同的成本提供大容量的存储器。但是,SCM一般而言具有与DRAM相比访问性能更低这一特征。
现有技术文献
专利文献1:国际公开第2014/103489号
发明内容
发明要解决的技术问题
在存储系统中,为了提高用户数据的读/写性能,减小对盘读或写用于管理用户数据的管理数据的频率是有效的,为此,需要将管理数据尽可能多地缓存在存储器中。例如,在将管理数据缓存至DRAM中时,存在系统成本高的技术问题。
不限于管理数据,对于其他数据将其缓存至DRAM中时,也存在系统成本高这一技术问题。另一方面,当缓存至闪存中时,存在闪存的寿命缩短的技术问题和访问性能降低这一技术问题。
本发明是鉴于上述情况而完成的,其目的在于提供一种能够容易且适当地提高访问性能的技术。
用于解决技术问题的技术手段
为了实现上述目的,本发明的一个观点的数据管理装置包括存储器部和与该存储器部连接的处理器部,其中,所述存储器部用于缓存对存储设备输入的数据和从存储设备输出的数据,存储器部具有访问性能高的第一类存储器和访问性能低于该第一类存储器的第二类存储器,第二类存储器的访问单位与第一类存储器的访问单位相同,处理器部基于对存储设备输入的数据和从存储设备输出的数据,决定使第一类存储器和第二类存储器的哪一者缓存数据,并将数据缓存至所决定的第一类存储器或第二类存储器。
本发明的另一观点是一种存储介质,其存储了由构成数据管理装置的计算机执行的数据管理程序,所述数据管理装置包括存储器部和与该存储器部连接的处理器部,其中,所述存储器部用于缓存对存储设备输入的数据和从存储设备输出的数据,所述存储器部具有访问性能高的第一类存储器和访问性能低于该第一类存储器的第二类存储器,所述第二类存储器的访问单位与所述第一类存储器的访问单位相同,所述数据管理程序用于使所述计算机实现下述的功能:基于对所述存储设备输入的数据和从所述存储设备输出的数据,决定使第一类存储器和第二类存储器的哪一者缓存数据的功能;和将所述数据缓存至所决定的所述第一类存储器或所述第二类存储器的功能。
依照本发明,能够容易且适当地提高访问性能。
附图说明
图1是表示一个实施方式的信息系统的第一结构例的图。
图2是表示一个实施方式的信息系统的第二结构例的图。
图3是对存储器介质的特征进行比较的图。
图4是一个实施方式的存储控制器的DRAM的结构图。
图5是一个实施方式的存储控制器的SCM的结构图。
图6是表示一个实施方式的缓存目标选择处理的概要的图。
图7是表示一个实施方式的逻辑卷、槽和段的关系的图。
图8是表示一个实施方式的缓存管理数据结构的图。
图9是表示一个实施方式的缓存管理数据的一部分的数据结构的图。
图10是表示一个实施方式的脏队列(Dirty queue)和干净队列(Clean queue)的数据结构的图8。
图11是表示一个实施方式的SCM空闲队列(Free queue)和DRAM空闲队列的数据结构的图。
图12是表示一个实施方式的压缩模式下的逻辑地址的对应关系的图。
图13是表示一个实施方式的压缩模式下的管理数据结构的图。
图14是一个实施方式的读命令处理的流程图。
图15是一个实施方式的用户数据读处理的流程图。
图16是一个实施方式的段分配处理的流程图。
图17是一个实施方式的SCM优先段分配处理的流程图。
图18是一个实施方式的DRAM优先段分配处理的流程图。
图19是一个实施方式的登台(staging)处理的流程图。
图20是一个实施方式的数据发送处理的流程图。
图21是一个实施方式的写命令处理的流程图。
图22是一个实施方式的用户数据写处理的流程图。
图23是一个实施方式的管理数据访问处理的流程图。
图24是一个实施方式的脏数据写回处理的流程图。
图25是一个实施方式的离台(destaging)处理的流程图。
附图标记的说明
1A、1B……信息系统,20……存储系统,30……存储控制器,32……SCM,34……DRAM,40……HDD,41……SSD
具体实施方式
参考附图对实施方式进行说明。下面说明的实施方式并不限定权利要求书记载的发明,实施方式中说明的各要素及其全部组合对于发明的解决手段而言不一定是必要的。
在以后的说明中,有时用“aaa表”等表述来说明信息,但这些信息也可以用表等数据结构以外来表达。因此,为了表示不依赖于数据结构,对于“aaa表”等能够称为“aaa信息”。
另外,在以后的说明中,有时以“程序”为动作的主体进行说明,但程序通过由包括处理器(典型而言是CPU(Central Processing Unit:中央处理器))的控制设备执行而使用存储器和I/F(接口)进行规定的处理,因此也可以以处理器或控制设备为动作主体进行说明。控制设备可以是处理器,也可以包括处理器和硬件电路。另外,以程序为动作主体记载的处理,可以是主机计算机、存储系统进行的处理。另外,程序的一部分或全部也可以用专用硬件实现。另外,各种程序可以通过程序发布服务器或计算机能够读取的存储介质安装在各计算机中。存储介质例如可以是IC卡、SD卡、DVD等。
另外,在以下说明中,“存储器部”包括1个以上存储器。至少1个存储器可以是易失性存储器,也可以是非易失性存储器。
另外,在以下说明中,“处理器部”包括1个以上处理器。至少1个处理器典型而言是CPU(Central Processing Unit)这样的微处理器。1个以上处理器各自可以是单核的也可以是多核的。处理器可以包括进行处理的一部分或全部的硬件电路。
图1是表示一个实施方式的信息系统的第一结构例的图。
信息系统1A具有主机计算机10、和直接或经由网络与主机计算机10连接的存储系统20(数据管理装置的一例)。存储系统20具有存储控制器30、和与存储控制器30连接的HDD(Hard Disk Drive:硬盘驱动器)40和/或SSD(Solid State Drive:固态驱动器)41。HDD40和/或SSD41是存储设备的一例。HDD40和/或SSD41可以内置在存储控制器30中。
存储控制器30包括1个以上的前端接口(FE I/F)31、1个以上的后端接口(BE I/F)35、1个以上的SCM(Storage Class Memory)32、CPU33、和DRAM(Dynamic Random AccessMemory:动态随机存储器)34。SCM32和DRAM34是访问单位是字节单位、即能够按字节单位进行读写的存储器(存储器设备)。此处,DRAM34相当于第一类存储器,SCM32相当于第二类存储器。另外,DRAM34和SCM32相当于存储器部。
存储控制器30由多个存储设备(HDD40、SSD41)形成1个以上逻辑卷(实体的逻辑卷(Logical volume)),提供给主机计算机10。即,主机计算机10能够识别所形成的逻辑卷。或者,存储控制器30对主机计算机10提供用所谓的精简配置(Thin Provisioning)技术形成的逻辑卷(是虚拟的逻辑卷,且是对逻辑卷内的各区域动态地分配存储区域的卷)。
主机计算机10发出指定了由存储系统20提供的逻辑卷(实体的逻辑卷或虚拟的逻辑卷)和逻辑卷内的位置(逻辑块编号。有时简记作LBA)的I/O命令(写命令或读命令),对逻辑卷进行数据的读/写处理。另外,即使是存储控制器30不提供逻辑卷的结构,例如存储系统20将各HDD40、各SSD41分别作为单一的存储设备提供给主机计算机10的结构,本发明也是有效的。另外,有时将主机计算机10识别的逻辑卷称为逻辑单元(Logical Unit。有时简记作LU),本说明书中只要没有特别声明,逻辑卷和逻辑单元(LU)的词语就用于表示同一概念。
FE I/F31是用于与主机计算机10通信的接口设备。BE I/F35是用于与HDD40或SSD41通信的接口设备。BE I/F35例如是SAS或Fibre Channel(光纤信道)的接口设备。
CPU33执行后述的各种处理。DRAM34存储CPU33执行的程序、CPU33使用的控制信息、缓冲数据。SCM32例如是相变存储器、磁阻存储器、电阻可变存储器等,可存储数据。SCM32和DRAM34包括缓存存储器区域。缓存存储器区域由多个缓存段构成。缓存段是由CPU33管理的单位区域。例如,在缓存存储器区域中,可以按缓存段单位进行区域分配、数据的读取和数据的写入。在缓存存储器区域中,缓存(暂时性地保存)从最终存储设备读取的数据、和对最终存储设备写入的数据(符合来自主机计算机10的I/O命令(典型而言是写命令或读命令)的数据即用户数据)。最终存储设备指的是,按照用I/O命令指定的I/O目标由存储控制器30进行I/O的数据被保存的存储设备。具体而言,例如,符合I/O命令(写命令)的数据暂且被保存在缓存存储器区域中,之后被保存在构成用I/O命令指定的逻辑单元(逻辑卷)的存储设备的区域(在逻辑卷是虚拟的逻辑卷的情况下,是对该逻辑卷的区域分配的存储设备的区域)中。最终存储设备指的是形成该逻辑卷的存储设备。本实施方式中,最终存储设备是HDD40或SSD41,但也可以是其他种类的存储设备、例如具有多个存储设备的外部存储系统。
另外,在缓存存储器区域中,能够缓存管理数据。管理数据例如是用于存储系统20对将用户数据按规定单位分割得到的数据部分进行管理的、与各数据部分对应的大小较小的数据。管理数据仅在存储系统20内部使用,不被主机计算机10读写。管理数据也与用户数据同样地被保存在最终存储设备中。
图1的信息系统1A中的构成要素各设置了1个,但也可以为了冗余化、高性能化、或大容量化,而将各构成要素设置多个。另外,各构成要素之间可以经由网络连接。网络可以包括交换机(switch)和扩展器等。考虑冗余化和高性能化时,信息系统例如可以改为如图2所示的结构。
图2是表示一个实施方式的信息系统的第二结构例的图。
信息系统1B包括主机计算机10、存储系统20和将主机计算机10与存储系统20连接的网络50。网络50可以是Fibre Channel、Ethernet(以太网)、Infiniband(无限带宽)等,在本实施方式中,将网络50总称为SAN(Storage Area Network:存储区域网络)。
存储系统20包括2个存储控制器30(存储控制器A、存储控制器B)和驱动器外壳60。
存储控制器30包括多个FE I/F31、多个BE I/F35、多个SCM32、多个CPU33、多个DRAM34和节点接口(节点I/F)36。节点接口36例如可以是Infiniband、Fibre Channel(FC)、Ethernet(注册商标)等网络接口的设备,也可以是PCI Express这样的总线的接口的设备。2个存储控制器30经由节点接口36连接。此处,DRAM34相当于第一类存储器,SCM32相当于第二类存储器。另外,DRAM34和SCM32相当于存储器部。
驱动器外壳60收纳多个HDD40、SSD41。多个HDD40、SSD41与驱动器外壳60内的扩展器(Expander)连接。扩展器42与各存储控制器30的BE I/F35连接。在BE I/F35是SAS的接口设备的情况下,扩展器42例如是SAS Expander,在BE I/F35是Fibre Channel的接口设备的情况下,扩展器42例如是FC交换机。
其中,存储系统20包括1个驱动器外壳60,但也可以包括多个驱动器外壳60。在此情况下,可以使各驱动器外壳60与BE I/F35的多个端口的各个端口直接连接,也可以使多个驱动器外壳60经由交换机与BE I/F35的端口连接。另外,也可以构成为,通过将各驱动器外壳60的扩展器42之间级联连接(Cascade connection)而将驱动器外壳60链式连接(数珠繋ぎ),并与BE I/F35的端口连接。
接着,对存储介质的特征进行说明。
图3是对存储介质的特征进行比较的图。
DRAM具有访问性能非常高、能够按字节单位读写、是易失性的这些特性。因此,一般用作主存装置和缓冲存储器。但是,因为比特成本高,所以具有大量搭载时系统变得昂贵这一缺点。
SCM例如是PRAM(相变存储器)、MRAM(磁阻存储器)、ReRAM(电阻可变存储器)。SCM具有与DRAM相比访问性能低、但比特成本低的特性。SCM与DRAM同样地能够按字节单位读写。因此,在访问性能所容许的范围内,能够代替DRAM地用于主存装置和缓冲存储器。因此,具有这样的优点:如果考虑在相同成本下信息系统中能够搭载的量,则比DRAM更多。另外,因为具有非易失性,所以也能够用作驱动器的介质。
NAND是NAND型闪存。NAND具有与SCM相比访问性能低、但比特成本低的特性。NAND与DRAM以及SCM不同,需要以与字节相比非常大的页这一单位进行读写。页大小例如是8KB或16KB。另外,再次写入之前,需要消去,消去单位是将多个页汇总在一起的大小(例如4MB)。因为比特成本非常低、且具有非易失性,所以主要用作驱动器的介质。另外,NAND具有改写寿命较短这一缺点。
图4是一个实施方式的存储控制器的DRAM的结构图。
DRAM34保存CPU33执行的存储控制程序340、缓存控制信息341和用户数据缓冲342。另外,DRAM34能够保存用于将数据缓存而管理的多个缓存段343。能够在该缓存段343中缓存HDD40或SSD41中保存的用户数据和管理数据、以及从HDD40或SSD41读取的用户数据和管理数据。
存储控制程序340是数据管理程序的一例,执行关于缓存的各种控制处理。另外,处理的详情在后文中叙述。缓存控制信息341包括缓存目录100(参考图8)、干净队列(参考图10)、脏队列(参考图10)、SCM空闲队列(Free queue)200(参考图8)和DRAM空闲队列300(参考图8)。关于缓存控制信息341的数据结构在后文中叙述。
作为DRAM34的安装方法,例如可以构成在电路板上搭载了多个DRAM的存储器芯片的DIMM这样的存储器模块,使该存储器模块与存储控制器30的主板上的存储器插槽连接。通过采用在与存储控制器30的主板不同的电路板上搭载DRAM34的结构,能够与存储控制器30的主板独立地进行维护交换和DRAM容量增设。另外,在发生了停电等意外的故障的情况下,为了避免DRAM34中的存储内容消失,可以设置电池,使得在停电时等也能够维持DRAM34中的存储内容。
图5是一个实施方式的存储控制器的SCM的结构图。
SCM32保存用于将数据缓存而管理的多个缓存段325。在该缓存段325中,能够缓存HDD40或SSD41中保存的用户数据和管理数据、从HDD40或SSD41读取的用户数据和管理数据。
接着,对本实施方式的存储系统进行的选择数据的缓存目标的缓存目标选择处理的概要进行说明。
图6是表示一个实施方式的缓存目标选择处理的概要的图。
存储系统20的存储控制器30将HDD40、SSD41中管理的数据缓存在SCM32和DRAM34的任一者。存储控制器30基于缓存对象的数据(缓存对象数据)的种类决定数据的缓存目标。具体的缓存目标选择处理(段分配处理)在后文中叙述。
接着,为了说明管理缓存的缓存管理数据的结构,对卷(逻辑卷)与缓存管理数据的关系的概要进行说明。
图7是表示一个实施方式的逻辑卷、槽以及段的关系的图。
在HDD40、SSD41中,保存可由主机计算机10访问的逻辑卷1000。主机计算机10访问逻辑卷1000时,最小访问单位是块(例如512字节)。逻辑卷1000的各块能够用逻辑块地址(LBA:也称为逻辑地址)识别。与块对应的逻辑地址,例如能够如逻辑地址1010所示地表示。
在存储系统20中,在对逻辑卷中的存储区域访问时等进行互斥控制(exclusioncontrol,也称为排斥控制),作为互斥控制的单位,定义了槽1100。槽1100的大小例如是256KB,例如是包括512块的大小。其中,槽1100的大小不限于此,也可以是其他大小。
各槽1100能够用唯一的识别编号(槽ID)识别。槽ID例如能够如槽ID1110所示地表示。在图7中,逻辑地址1010的各逻辑地址表示与槽ID1110的各槽ID对应的槽的起始的块的逻辑地址。
在本实施方式中,例如用从主机计算机10接收到的I/O命令指定的逻辑块地址除以512(进行除法运算)得到的值是与逻辑块地址对应的块所属的槽的槽ID。在进行该除法运算时的余数是0的情况下,表示由用I/O命令指定的逻辑块地址确定的块是由计算出的槽ID确定的槽的起始的块,在余数是非0的值(此处设其值为R)的情况下,该R表示由逻辑块地址确定的块是存在于由计算出的槽ID确定的槽的从起始块起第R个位置的块(此处将R称为槽内相对地址)。
存储控制器30在缓存逻辑卷1000中的数据的情况下,分配DRAM34或SCM32中的存储区域作为缓存区域。存储控制器30按缓存段(段)(1201、1202、1203、1204:下面,在总称缓存段1201、1202、1203、1204的情况下,记作“缓存段1200”)这一区域单位分配缓存区域。在本实施方式中,例如缓存段1200的大小是64KB,使4个缓存段1200(例如1201、1202、1203、1204)与各槽对应。
存储系统20按照每个槽1100具有槽控制表110(参考图8)作为管理槽1100的信息。在槽控制表110中,保存与槽1100对应的缓存段1200的信息(正确而言是指向用于管理缓存段1200的信息的指针)。存储系统20通过生成、管理该槽控制表110,而对槽1100与缓存段1200的对应(关联)进行管理。其中,缓存段1200的大小也可以为64KB以外的大小,并且也可以使与1个槽1100对应的缓存段1200的数量为4以外的值。
接着,对主机计算机10访问(读或写等)逻辑卷1000中的区域时的、与缓存区域的管理关联的处理的概要进行说明。
主机计算机10访问用户数据时,对存储系统20发出指定了访问目标的逻辑单元编号(用于确定逻辑单元/逻辑卷的编号:记作LUN(Logical Unit Number:逻辑单元编号))和逻辑块地址1010的I/O命令。存储系统20的存储控制器30将接收到的I/O命令中包含的逻辑块地址转换为槽ID1110与槽内相对地址的组,参照由通过转换得到的槽ID1110确定的槽控制表110。然后,存储控制器30基于槽控制表110的信息,判断对用I/O命令指定的逻辑卷的1000中的区域(用逻辑块地址确定的区域)是否已分配(确保)缓存段1200,如果尚未分配缓存段1200,则新进行分配缓存段1200的处理。
接着,对缓存管理数据结构进行说明。
图8是表示一个实施方式的缓存管理数据结构的图。
缓存管理数据包括缓存目录100、SCM空闲队列200、DRAM空闲队列300、脏队列和干净队列(参考图10)。本实施方式中,能够在DRAM34、SCM32中管理缓存段(343、325)。能够用段控制表120(SGCT:Segment Control Table)管理各缓存段。SGCT120能够与在DRAM34和SCM32中管理的全部缓存段分别一对一对应地管理。
缓存目录100是用于管理缓存对象数据的逻辑地址(作为缓存段中保存的数据的保存目标的、逻辑卷的逻辑块地址)与存储器(DRAM34和SCM32)中的物理地址的对应关系的数据。缓存目录100例如是以缓存对象数据的缓存段所属的槽ID(能够根据逻辑块地址确定)为键(key,也称为“关键码”)的哈希表,保存了指向与槽ID的槽对应的槽控制表110(SLCT:Slot Control Table)的指针作为条目(entry)。SLCT110管理指向属于槽的缓存段的SGCT120的指针。SGCT120管理指向与该SGCT120对应的缓存段(325、343)的指针。
因此,根据缓存目录100,能够基于缓存对象数据的逻辑地址,确定与该逻辑地址对应的数据缓存着的缓存段。SLCT110、SGCT120的详细结构在后文中叙述。在本实施方式中,缓存目录100将DRAM34的缓存段343和SCM32的缓存段325全部统一管理。因此,通过参照缓存目录100,能够容易地进行DRAM34和SCM32中的缓存的命中判断。
SCM空闲队列200是管理SCM32的空闲段、即未保存任何数据的缓存段325的控制信息。SCM空闲队列200例如构成为在条目中具有与SCM32的空闲段对应的SGCT120的双向链表。其中,管理空闲段的控制信息的数据结构不需要是队列,也可以使用堆栈等。
DRAM空闲队列300是管理DRAM34的空闲段的控制信息。DRAM空闲队列300例如构成为在条目中具有与DRAM34的空闲段对应的SGCT120的双向链表。其中,管理空闲段的控制信息的数据结构不需要是队列,也可以使用堆栈等。
关于SGCT120,取决于与该SGCT120对应的缓存段的状态和种类,该SGCT120成为与缓存目录100、SCM空闲队列200和DRAM空闲队列300中的任一者连接的状态。具体而言,与SCM32的缓存段325对应的SGCT120,在该缓存段325未使用时,与SCM空闲队列200连接,当该缓存段325被分配为数据保存用时,与缓存目录100连接。另一方面,与DRAM34的缓存段343对应的SGCT120,在该缓存段343未使用时,与DRAM空闲队列300连接,在该缓存段343被分配为数据保存用时,与缓存目录100连接。
图9是表示一个实施方式的缓存管理数据的一部分的数据结构的图。
缓存目录100例如是以槽ID为键的哈希表。缓存目录100的条目(目录条目)100a保存表示与槽ID对应的SLCT110的目录条目指针。此处,槽是进行互斥控制的数据的单位(锁定单位)。例如,1个槽能够包括多个缓存段。另外,在槽内仅一部分保存了数据的情况下,槽中可能仅包括1个缓存段。
SLCT110包括目录条目指针110a、前方指针110b、后方指针110c、槽ID110d、槽状态110e和SGCT指针110f。目录条目指针110a是指向与同一哈希值的其他键对应的SLCT110的目录条目指针。前方指针110b是表示干净队列或脏队列中的顺序在前的SLCT110的指针。后方指针110c是表示干净队列或脏队列中的顺序在后的SLCT110的指针。槽ID110d是与SLCT110对应的槽的识别信息(槽ID)。槽状态110e是表示槽的状态的信息。作为槽的状态,例如有表示槽正在被锁定的“锁定着”等。SGCT指针110f是指向与该槽中包括的缓存段对应的SGCT120的指针。未对该槽分配缓存段时,SGCT指针110f成为表示指针(地址)无效的值(例如NULL)。另外,槽中包括的缓存段存在多个的情况下,各SGCT120被作为链表(Linklist)管理,SGCT指针110f是指向链表中的与起始的缓存段对应的SGCT120的指针。
SGCT120包括SGCT指针120a、段ID120b、存储器种类120c、段地址120d、登台位图120e和脏位图120f。
SGCT指针120a是指向与同一槽中包括的下一个缓存段对应的SGCT120的指针。段ID120b是缓存段的识别信息,是表示是位于槽内的第几个位置的缓存段的信息。本实施方式中,因为对1个槽分配最多4个缓存段,所以在各缓存段的段ID120b中,保存0、1、2、3中的任一个值。位于槽的起始处的缓存段的段ID120b是0,后面按顺序赋予1、2、3的段ID120b。例如,以图7中的缓存段1201~1204为例时,与槽1100的起始处对应的缓存段1201的段ID120b是0,后面的缓存段1202、1203、1204的段ID120b分别是1、2、3。存储器种类120c是构成保存着与该SGCT120对应的缓存段的缓存存储器的存储器的种类。作为存储器的种类,有SCM和DRAM中的任一者。
段地址120d是缓存段的地址。登台位图120e是表示在缓存段中缓存了干净数据、即与驱动器(40、41)的数据一致的数据的区域的位图(bitmap,也称为“比特图”)。登台位图120e中,各比特(bit,也称为“位”)与缓存段中的各区域对应,与缓存了有效的数据(与驱动器相同的数据)的区域对应的比特被设定为ON(1),与未缓存有效的数据的区域对应的比特被设定为OFF(0)。脏位图120f是表示在缓存段中缓存了脏数据、即与驱动器的数据不一致的数据(尚未反映至驱动器的数据)的区域的位图。脏位图120f中,各比特与缓存段中的各区域对应,与缓存了脏数据的区域对应的比特被设定为ON(1),与未缓存脏数据的区域对应的比特被设定为OFF(0)。
图10是表示一个实施方式的脏队列和干净队列的数据结构的图。
脏队列是连接着与包括脏数据的槽对应的SLCT110的队列。干净队列是连接着与仅包括干净数据的槽对应的SLCT110的队列。脏队列和干净队列用于缓存替换和离台的调度等,取决于各自的缓存替换和离台的调度方式等可以采用各种结构。
在本实施方式中,将缓存替换和离台的调度(Scheduling)中使用的算法作为LRU(Least Recently Used:最近最少使用算法)进行说明。脏队列和干净队列只是连接的SLCT110不同,队列的基本结构是同样的,因此此处以脏队列为例进行说明。
脏队列构成为SLCT110的双向链表(Link list)。即,脏队列将与包括最近使用的脏数据的槽(最终使用时刻的最新的槽)对应的SLCT110连接至MRU(Most Recently Used:最近使用)端150的前方指针,在所连接的SLCT110的前方指针110b连接顺序在下一个的槽(包括其次近使用的脏数据的槽)的SLCT110,这样将SLCT110按照脏数据的使用顺序依次连接,将LRU端160连结至顺序在最后的SCLT110的前方指针110b,另一方面,对LRU端160的后方指针连接顺序在最后的SCLT110,对连接的顺序在后的SCLT110的后方指针110c,依次连接顺序在其前一个的槽的SLCT110,使顺序在第一个的SLCT110与MRU端150连接。在脏数据中,从MRU端150一侧起,SLCT110按最终使用时刻从新到旧的顺序排列。
图11是表示一个实施方式的SCM空闲队列和DRAM空闲队列的数据结构的图。
SCM空闲队列200是用于管理SCM32中保存的空闲缓存段325的队列。DRAM空闲队列300是用于管理DRAM34的空闲缓存段343的队列。SCM空闲队列200和DRAM空闲队列300分别是用指针连接了空闲缓存段的SGCT120的链表。SCM空闲队列200和DRAM空闲队列300只是管理的SGCT120不同,结构是相同的。
SCM空闲队列200(DRAM空闲队列300)的空闲队列指针201(301)指向队列的起始的SGCT120。SGCT120的SGCT指针120a指向下一个空闲缓存段的SGCT120。
接着,对存储系统20的处理动作进行说明。
存储系统20能够进行将用户数据压缩并保存在最终存储设备(40、41)中的动作。此处,将设定为存储系统20将用户数据压缩并保存的状态称为压缩模式,将并非这样设定的状态称为通常模式。
存储系统20在压缩模式下,通过使用可逆压缩算法对按照写命令从主机计算机10接收到的用户数据进行加工,使用户数据的大小减小,并保存在最终存储设备中。另外,存储系统20按照读命令,将最终存储设备的压缩了的用户数据(压缩用户数据)解压缩(还原加工),恢复为原本的用户数据,发送至主机计算机10。
在该压缩模式下,因为能够削减最终存储设备的存储区域的消耗量,所以能够保存更多的用户数据。但是,因为CPU33进行用户数据的压缩和解压缩,所以一般而言处理性能与通常模式相比降低。
存储系统20的动作模式的切换(例如从压缩模式切换至通常模式、或者从通常模式切换至压缩模式),能够用来自主机计算机10的模式设定命令、或者经存储系统20的管理用I/F(未图示)传递的管理命令进行。存储控制器30的CPU33按照这些命令切换存储系统20的动作模式。另外,CPU33管理模式设定状态(是压缩模式和通常模式中的哪一个)。
接着,对压缩模式下的逻辑地址进行说明。
图12是表示一个实施方式的压缩模式下的逻辑地址的对应关系的图。
在压缩模式下,对于主机计算机10用写命令输入的用户数据,存储系统20在存储系统20内将其压缩并保存,另一方面,对于主机计算机10用读命令请求的用户数据,存储系统20在存储系统20内将其解压缩并输出。因此,主机计算机10感知的逻辑卷与不压缩地保存用户数据的通常模式是相同的。在压缩模式下,将该逻辑卷称为明文逻辑卷2000。与此相对,将存储系统20在最终存储设备(40、41)中保存压缩用户数据时感知的逻辑的数据区域称为压缩逻辑卷2100。
在存储系统20中,CPU33将明文逻辑卷2000的用户数据分割为规定的管理单位(例如8KB),将各个管理单位压缩并个别地保存。在压缩逻辑卷2100中保存压缩后的用户数据时,能够形成表示两个逻辑卷的数据保存空间的地址之间的对应关系的地址映射(addressmap)。即,主机计算机10在明文逻辑卷2000的地址X中写入用户数据,将其压缩而得到的数据被保存在压缩逻辑卷2100的地址Y中的情况下,形成X与Y之间的地址映射。
将用户数据压缩时,压缩后的数据长度与其数据内容相应地变化。例如,包含大量相同的字符时数据长度小,包含大量随机的图案时数据长度大。因此,地址映射中的地址Y的信息,不仅包含保存目标的起始位置,还包含从该位置起的有效数据长度。
图12中示出了这样的情况:主机计算机10在明文逻辑卷2000的地址0x271910写入的8KB的用户数据部分2010,被压缩而使大小缩小至4KB,保存在压缩逻辑卷2100的从地址0x29D131起4KB的范围2110中,并且主机计算机10在明文逻辑卷2000的地址0x3C2530写入的8KB的用户数据部分2020,被压缩而使大小缩小至3KB,保存在压缩逻辑卷2100的从地址0x15A012起3KB的范围2120中。
在将用户数据压缩并保存的情况下,尽可能无间隙地存满数据更能够减少最终存储设备的存储区域的消耗量。因此,压缩后的用户数据的保存目标,根据从主机计算机10写入的顺序、以及压缩后大小与空闲区域大小的大小关系而动态地变化。即,地址映射也因用户数据的写入而动态地变化。
在图12所示的例子中,在明文逻辑卷地址空间2030与压缩逻辑卷地址空间2130之间,能够形成地址映射2210、2220。例如,地址映射2210包括压缩逻辑卷2100的范围2110的地址(0x29D131)和有效数据长度(4KB),地址映射2220包括压缩逻辑卷2100的范围2120的地址(0x15A012)和有效数据长度(3KB)。
这些地址映射是为了管理用户数据的保存目标、对于将用户数据分割了的每个管理单位(此处是8KB)而言必要的少量的辅助数据,在本实施方式中,称为管理数据。管理数据也与用户数据同样地被保存在最终存储设备(40、41)中。
另外,在SCM32或DRAM34的缓存存储器区域中,能够缓存压缩状态的用户数据。因此,在缓存区域管理段的分配时的逻辑地址,是压缩逻辑卷中的地址。另外,管理数据也能够被缓存在SCM32或DRAM 34的缓存存储器区域中。
接着,对管理数据的数据结构和地址映射信息的变更处理进行说明。
图13是表示一个实施方式的压缩模式下的管理数据结构的图。
管理数据是指明文逻辑卷与压缩逻辑卷之间的地址映射信息。在本实施方式中,地址映射信息2210(2210a、2210b等)的1个单位的大小例如是16B。各AMTB(Address MapTable Block:地址映射表块)2400(2400a、2400b等)是管理多个地址映射信息2210的块,其大小例如是512B,能够保存32个地址映射信息2210。AMTB2400中的地址映射信息2210的保存顺序与明文逻辑卷的地址顺序相同。因为1个地址映射信息对应于8KB的用户数据,所以能够用1个AMTB2400管理逻辑地址连续的256KB的用户数据(即,相当于1个槽)。
各AMTD(Address Map Table Directory:地址映射表目录)2300是管理AMTB2400的地址(AMTB地址)2310的块,其大小例如是512B,能够保存64个单个大小是8B的AMTB地址2310。AMTD2300中的AMTB地址2310的保存顺序与明文逻辑卷的槽ID顺序相同。因为1个AMTB2400对应于256KB的用户数据,所以能够用1个AMTD2300管理逻辑地址连续的16MB的用户数据。
在设定为压缩模式的情况下,在后述的写命令处理(参考图21)时实施地址映射信息的变更(即,改变)。
CPU33在变更地址映射信息2210a的内容的情况下,生成新的AMTB2400b,写入地址映射信息2210b。接着,CPU33将包括地址映射信息2210a的AMTB2400a内的、不变更的其他地址映射信息复制至AMTB2400b的其余部分。然后,CPU33在AMTD2300内将指向AMTB2400a的AMTB地址2310改写为指向AMTB2400b。
此处,下面对在变更AMTB2400a内的地址映射信息时、不直接覆盖2210a、而是生成另外的新的AMTB2400b并保存地址映射信息的理由,进行说明。
如上所述,管理数据被缓存在缓存存储器区域中。伴随地址映射信息的变更而逐次生成的AMTB2400,被作为脏块(横条纹部)追加地保存在缓存段2600中。另外,AMTB地址变更后的AMTD2300也成为缓存段2500的脏块(横条纹部)。其结果是,在缓存存储器区域中,脏块易于在局部的缓存段内聚集。一般而言,在缓存存储器管理中,脏块局部化,在离台时能够减少存储控制器30与最终存储设备(40、41)之间的数据传输处理的次数。如果采用覆盖AMTB2400的方法,则在对于随机的逻辑地址请求写入用户数据的情况下,AMTB2400的脏块会分散在大量的缓存段中,在离台时存储控制器30与最终存储设备(40、41)之间的数据传输处理的次数增多,导致CPU33的处理负荷增大。
接着,对本实施例的信息系统1B中的处理动作进行说明。
图14是一个实施方式的读命令处理的流程图。
读命令处理是存储系统20从主机计算机10接收了读命令时执行的处理。
CPU33从主机计算机10接收读命令时,判断是否设定为了压缩模式(S100),在未设定为压缩模式的情况(S100:否)下,CPU33使处理前进至步骤S103。
另一方面,在设定为了压缩模式的情况(S100:是)下,CPU33通过管理数据访问处理(参考图23)执行对AMTD2300的参照(S101)。具体而言,CPU33根据用读命令指定的、明文逻辑卷中的地址X,确定与其对应的AMTD2300的管理数据的保存目标地址,从AMTD2300取得管理数据。
接着,CUP33通过管理数据访问处理(参考图23)执行对AMTB2400的参照(S102),使处理前进至步骤S103。具体而言,CPU33根据从AMTD2300取得的管理数据确定AMTB2400的管理数据的保存目标地址,从AMTB2400取得管理数据(步骤S102)。
在步骤S103中,CPU33在未设定为压缩模式的情况下,根据读命令确定逻辑卷中的地址Y,另一方面,在设定为了压缩模式的情况下,根据取得的AMTB2300的管理数据确定压缩逻辑卷中的地址Y(起始位置和数据长度),对于确定到的地址Y进行用户数据读处理(参考图15)(步骤S103)。
接着,对用户数据读处理(图14的步骤S103)进行说明。
图15是一个实施方式的用户数据读处理的流程图。
首先,存储控制器30的CPU33判断与读对象的用户数据的逻辑卷的逻辑块地址(下面称为读地址)对应的缓存段是否已分配(步骤S1)。具体而言,CPU33将逻辑块地址转换(也称为“变换”)为槽ID与槽内相对地址的组,参照通过转换得到的槽ID保存在槽ID110d中的SLCT110的SGCT指针110f。在SGCT指针110f是无效(例如NULL)值的情况下,CPU33判断缓存段未分配。另一方面,在SGCT指针110f中包括有效的值的情况下,可以得知至少分配了1个缓存段,因此CPU33沿着SGCT指针110f的指针,确认是否对用槽内相对地址确定的槽内的位置分配了缓存段。具体而言,通过确认是否存在具有保存了与“槽内相对地址÷128”得到的结果(整数值)相同的段ID的段ID120b的SGCT120,能够判断是否对读地址分配了缓存段。此处,通过进行槽内相对地址÷128的计算,能够得到0~3中的某一个整数值,因此能够知道槽内相对地址是与赋予了0~3中的哪一个段ID的缓存段对应的地址。
其结果是,如果缓存段已分配(步骤S1:是),则CPU33使处理前进至步骤S3,另一方面,如果缓存段未分配(步骤S1:否),则CPU33执行段分配处理(参考图16)(步骤S2),使处理前进至步骤S3。在段分配处理中,按照被缓存的数据的种类,分配SCM32的缓存段和DRAM34的缓存段中的任一者的缓存段。
在步骤S3中,CPU33将包括与读地址对应的缓存段的槽锁定。此处,锁定指的是为了使CPU33的其他进程(process)不变更该槽的状态而互斥(即,排他)。具体而言,CPU33通过使与包括该缓存段的槽对应的SLCT110的槽状态110e中保存的表示“锁定着”的比特(bit,也称为“位”)为ON(例如1),而表示该槽被锁定。
接着,CPU33判断读对象的用户数据是否保存在缓存段中、即是否缓存命中(Cachehit)(步骤S4)。具体而言,CPU33调查与读对象的缓存段对应的SGCT120的登台位图120e和脏位图120f,关于读对象的全部块,如果与各块对应的登台位图120e的比特和脏位图120f的比特中的任一者是ON(例如1),则判断缓存命中。另一方面,CPU33在读对象的范围内存在1个以上与脏位图120f和登台位图120e对应的比特都是OFF(例如0)的块的情况下,判断为缓存未命中。
其结果是,在缓存命中的情况(步骤S4:是)下,CPU33使处理前进至步骤S6,另一方面,在缓存未命中的情况(步骤S4:否)下,执行登台处理(参考图19)(步骤S5),使处理前进至步骤S6。在登台处理中,将数据从驱动器(HDD40或SSD41)读取至缓存段(325或343)。登台处理完成时,成为这样的状态,即,读对象的数据保存在缓存段(325或343)中的状态。
在步骤S6中,CPU33执行将缓存段中保存的数据发送至主机计算机10的数据发送处理(参考图20)。
接着,CPU33对主机计算机10发送完成状态(步骤S7)。具体而言,CPU33在发生错误而读处理并未正常完成的情况下,返送回错误状态(例如CHECK CONDITION),另一方面,在读处理正常完成了的情况下返送回正常状态(GOOD)。
之后,CPU33将锁定的槽释放(解锁),即,使SLCT110的槽状态110e中保存的表示“锁定着”的比特成为OFF(步骤S8),使槽的状态称为能够变更的状态,结束用户数据读处理。
接着,对段分配处理(图15的步骤S2)进行说明。另外,段分配处理也对应于后述的图22的步骤S62、图23的步骤S82、图24的步骤S112的处理。
图16是一个实施方式的段分配处理的流程图。
在段分配处理中,CPU33对于要缓存的数据,按照该数据的种类(也称为数据的特性)分配SCM32的缓存段(也称为SCM段)325或DRAM34的缓存段(也称为DRAM段)343。
此处,对于选择对数据分配的缓存段的存储器种类、即SCM32或DRAM34时的判断基准的一例进行说明。SCM32具有访问性能比DRAM34低、但成本比DRAM34低廉的特性,所以在本实施方式中,进行这样的控制,对于适合DRAM34的特性的数据(要求高性能的数据)选择使用了DRAM34的缓存段,对于适合SCM的特性的数据(不要求高性能的数据,例如想要缓存的量较多的数据)选择使用了SCM32的缓存段。具体而言,按如下所述的基准选择分配的缓存段的存储器种类。
(a)在缓存对象是要求高吞吐量(throughput)的用户数据的情况下,CPU33优先地选择DRAM34。当将这样的数据保存在SCM32的缓存段中时,会使存储系统20的性能降低。因此,对于用户数据,优先地选择DRAM34较好。此处,优先地选择DRAM34指的是,例如在能够在DRAM34确保缓存段的情况下,将DRAM34选择为分配目标。
(b)在缓存对象是访问单位小的数据的情况下,CPU33优先地选择SCM32。例如,通常1个管理数据是8B或16B左右的大小,与用户数据相比要求的吞吐量较低,所以缓存在低成本的SCM32中较好。这是因为,SCM32在相同成本下能够提供比DRAM34更大容量的缓存段,具有这样的效果,即,能够缓存的管理数据的数据量增加,驱动器(40、41)中的管理数据的读取频率减小,存储系统20的响应性能得到提高。
(c)在上述以外的数据是缓存对象的情况下,CPU33优先地选择DRAM34。
首先,CPU33判断访问对象的数据(访问对象数据)是否是用户数据(步骤S31)。如果该判断的结果是真(步骤S31:是),则CPU33使处理前进至步骤S34,另一方面,如果是假(步骤S31:否),则使处理前进至步骤S32。
在步骤S32中,CPU33判断访问对象数据是否是管理数据。如果该判断的结果是真(步骤S32:是),则CPU33使处理前进至步骤S33,另一方面,如果是假(步骤S32:否),则CPU33使处理前进至步骤S34。
在步骤S33中,CPU33执行优先分配SCM32的缓存段325的SCM优先段分配处理(参考图17),结束段分配处理。
在步骤S34中,CPU33执行优先分配DRAM34的缓存段343的DRAM优先段分配处理(参考图18),结束段分配处理。
当段分配处理完成时,对访问对象数据分配了SCM32和DRAM34中的任一者的缓存段。
接着,对SCM优先段分配处理(图16的步骤S33)进行说明。
图17是一个实施方式的SCM优先段分配处理的流程图。
首先,CPU33判断是否存在可用的SCM32的缓存段325(步骤S41)。此处,可用的SCM32的缓存段325,指的是空闲、或者干净并且未被锁定的缓存段325。其中,是否存在可用的SCM32的缓存段325,能够通过参照SCM空闲队列200和SGCT120而判断。
在判断结果是真的情况(步骤S41:是)下,CPU33使处理前进至步骤42,另一方面,在判断结果是假的情况(步骤S41:否)下,使处理前进至步骤S43。
在步骤S42中,CPU33进行SCM32的缓存段的分配(SCM段分配)。此处,在分配干净的缓存段325的情况下,CPU33在使该缓存段325从SCM空闲队列200和缓存目录100断开而成为空闲段之后再进行分配。
在SCM段分配中,首先,CPU33在SGCT120的段ID120b和存储器种类120c设定与确保的缓存段对应的段ID和存储器种类(此处是SCM)。接着,CPU33在与包括该缓存段325的槽对应的SLCT110的SGCT指针110f设定指向该缓存段的SGCT120的指针。如果对应的SLCT110尚未与缓存目录100连接,则CPU33首先设定SLCT110的内容,然后将该SLCT110与缓存目录100连接,之后将SGCT120连接至SLCT110。另外,如果与确保的缓存段325对应的SGCT120以外的SGCT120已经与SLCT110连接,则CPU33在与该SLCT110连接的末端的SGCT120处连接所确保的缓存段325的SGCT120。在SCM段分配结束之后,结束SCM优先段分配处理。
在步骤S43中,CPU33判断是否存在可用的DRAM34的缓存段343。在判断结果是真的情况(步骤S43:是)下,CPU33使处理前进至步骤S45,另一方面,在判断结果是假的情况(步骤S43:否)下,等待至某一个缓存段325、343成为可用(步骤S44),使处理前进至步骤S41。
在步骤S45中,CPU33进行DRAM34的缓存段的分配(DRAM段分配)。DRAM段分配是将在步骤S42的SCM段分配中分配SCM32的缓存段325,改为分配DRAM34的缓存段343。在DRAM段分配结束之后,结束SCM优先段分配处理。
在该SCM优先段分配处理中,优先分配SCM32的缓存段325。
接着,对DRAM优先段分配处理(图16的步骤S34)进行说明。
图18是一个实施方式的DRAM优先段分配处理的流程图。
DRAM优先段分配处理是将图17所示的SCM优先段分配处理中的SCM32的缓存段325与DRAM34的缓存段343交换了的处理,此处简单地进行说明。
首先,CPU33判断是否存在可用的DRAM34的缓存段343(步骤S51)。在判断结果是真的情况(步骤S51:是)下,CPU33使处理前进至步骤S52,另一方面,在判断结果是假的情况(步骤S51:否)下,使处理前进至步骤S53。
在步骤S52中,CPU33进行DRAM段分配。该DRAM段分配是与图17的步骤S45同样的处理。在DRAM段分配结束之后,结束DRAM优先段分配处理。
在步骤S53中,CPU33判断是否存在可用的SCM段325。在判断结果是真的情况(步骤S53:是)下,CPU33使处理前进至步骤S55,另一方面,在判断结果是假的情况(步骤S53:否)下,等待至某一个缓存段325、343成为可用(步骤S54),使处理前进至步骤S51。
在步骤S55中,CPU33进行SCM段分配。该SCM段分配是与图17的步骤S42同样的处理。在SCM段分配结束之后,结束DRAM优先段分配处理。
在该DRAM优先段分配处理中,优先分配DRAM段343。
接着,对登台处理(图15的步骤S5)进行说明。
图19是一个实施方式的登台处理的流程图。
首先,CPU33调查与读地址对应的缓存段的存储器的种类,判断缓存段是否是DRAM段343(步骤S11)。此处,成为缓存段的基础的存储器的种类,能够通过参照对应的SGCT120的存储器种类120c而确定。
其结果是,如果缓存段是DRAM段343(步骤S11:是),则CPU33使处理前进至步骤S12,另一方面,如果缓存段不是DRAM段343(步骤S11:否),则CPU33使处理前进至步骤S13。
在步骤S12中,CPU33从驱动器(HDD40或SSD41)读取读对象(登台对象)的数据,将该数据保存在DRAM段343中,结束登台处理。
在步骤S13中,CPU33从驱动器(HDD40或SSD41)读取读对象(登台对象)的数据,将其保存在SCM段325中,结束登台处理。
通过该登台处理,能够对所分配的缓存段适当地读取读对象的数据。
接着,对数据发送处理(图15的步骤S6)进行说明。
图20是一个实施方式的数据发送处理的流程图。
首先,CPU33调查成为与读地址对应的缓存段的基础的存储器(缓存存储器)的种类,判断缓存段是否是DRAM段343(步骤S21)。此处,成为缓存段的基础的存储器的种类,能够通过参照与缓存段对应的SGCT120的存储器种类120c而确定。
其结果是,如果缓存段是DRAM段343(步骤S21:是),则CPU33使处理前进至步骤S22,另一方面,如果缓存段不是DRAM段343(步骤S21:否),则使处理前进至步骤S23。
在步骤S22中,CPU33将读对象(发送对象)的数据从DRAM段343传输至用户数据缓冲342,使处理前进至步骤S24。
在步骤S23中,CPU33将读对象(发送对象)的数据从SCM段325传输至用户数据缓冲342,使处理前进至步骤S24。
在步骤S24中,CPU33调查存储系统20是否被设定为了压缩模式,如果是压缩模式(步骤S24:是),则CPU33使处理前进至步骤S25,另一方面,如果未被设定为压缩模式(步骤S24:否),则使处理前进至步骤S26。
在步骤S25中,CPU33在用户数据缓冲342中将压缩了的用户数据解压缩,还原为压缩前(原本的大小)的用户数据。之后,使处理前进至步骤S26。
在步骤S26中,CPU33将用户数据缓冲342中的用户数据传输至主机计算机10,结束数据发送处理。
通过该数据发送处理,能够将读对象的用户数据适当地发送至主机计算机10。
接着,对写数据命令处理进行说明。
图21是一个实施方式的写命令处理的流程图。
写命令处理是存储系统20从主机计算机10接收到写命令时执行的处理。
CPU33从主机计算机10接收到写命令时,CPU33选择压缩逻辑卷中的空闲地址Y,进行用于对该地址写入与写命令对应的写对象的数据(写数据)的用户数据写处理(参考图22)(步骤S104)。
接着,CPU33判断存储系统20是否被设定为了压缩模式(S105),在未被设定为压缩模式的情况(S105:否)下,结束写命令处理,另一方面,在被设定为了压缩模式的情况(S105:是)下,使处理前进至步骤S106。
在步骤S106中,CPU33通过管理数据访问处理(参考图23)执行对AMTD2300的参照(S106)。具体而言,CPU33根据用读命令指定的、明文逻辑卷中的地址X,确定与其对应的AMTD2300的管理数据的保存目标地址,从AMTD2300取得管理数据。
接着,CPU33通过管理数据访问处理(参考图23)执行对AMTB2400的参照(S107),使处理前进至步骤S108。具体而言,CPU33根据从AMTD2300取得的管理数据确定AMTB2400的管理数据的保存目标地址(也称为“保存目的地地址”),从AMTB2400取得管理数据。
在步骤S108中,CPU33通过管理数据访问处理(参考图23)执行AMTB2400的更新。具体而言,CPU33将AMTB2400的管理数据变更为使地址X新与地址Y对应的信息(例如起始位置和数据长度)。
接着,CPU33通过管理数据访问处理(参考图23)执行AMTD2300的更新(S109),结束处理。具体而言,CPU33将AMTD2300的管理数据变更为表示步骤S108中更新了的AMTB2400的管理数据的保存目标地址的信息,结束处理。
通过该写数据命令处理,能够适当地保存写数据,在为压缩模式的情况下,能够适当地更新与写数据对应的管理数据。
接着,对用户数据写处理(图21的步骤S104)进行说明。
图22是一个实施方式的用户数据写处理的流程图。
存储控制器30的CPU33判断与写入用户数据的逻辑卷的逻辑块地址(下面称为写地址)对应的缓存段是否已分配(步骤S61)。该处理与用户数据读处理中的处理步骤(图15的S1)是同样的,所以省略详细说明。
其结果是,如果缓存段已分配(步骤S61:是),则使处理前进至步骤S63,另一方面,如果缓存段未分配(步骤S61:否),则执行段分配处理(参考图16)(步骤S62),使处理前进至步骤S63。在段分配处理中,对于写地址,从DRAM34或SCM32分配缓存段。另外,为了通过使写入的数据双重化而确保可靠性,也可以分配2个缓存段。
在步骤S63中,CPU33将包括与写地址对应的缓存段的槽锁定。具体而言,CPU33通过使包括该缓存段的槽的SLCT110的槽状态110e的表示“锁定着”的比特为ON,而表示该槽被锁定。
接着,CPU33例如通过对主机计算机10发送XFER_RDY,通知完成了数据接受准备(步骤S64)。与此相应地,主机计算机10发送用户数据。
接着,CPU33接收从主机计算机10发送的用户数据,接受至用户数据缓冲342(步骤S65)。
接着,CPU33判断存储系统20是否被设定为了压缩模式(步骤S66),如果被设定为了压缩模式(步骤S66:是),则使处理前进至步骤S67,另一方面,如果未被设定为压缩模式(步骤S66:否),则使处理前进至步骤S68。
在步骤S67中,CPU33在用户数据缓冲342中将用户数据压缩,转换为压缩了的(原本的大小以下的)用户数据,使处理前进至步骤S68。
在步骤S68中,CPU33判断分配的缓存段是否是DRAM段343。其结果是,如果分配的缓存段是DRAM段343(步骤S68:是),则CPU33将用户数据写入DRAM段343中(步骤S69),使处理前进至步骤S71。另一方面,如果分配的缓存段是SCM段325(步骤S68:否),则CPU33将用户数据写入SCM段325中(步骤S70),使处理前进至步骤S71。
在步骤S71中,CPU33设定写入了的数据是脏数据。即,CPU33将与写入了的缓存段对应的SGCT120的脏位图120f中的与写入了数据的块对应的比特设定为ON。
接着,CPU33对主机计算机10发送完成状态(status)(步骤S72)。即,CPU33在发生错误而写处理并未正常完成的情况下,返送回错误状态(例如CHECK CONDITION),另一方面,在写处理正常完成了的情况下返送回正常状态(GOOD)。
接着,CPU33将锁定着的槽释放(解锁)(步骤S73),使该槽的状态为能够变更的状态,结束用户数据写处理。
接着,对管理数据访问处理(图14的S101、S102、图21的S106~S109)进行说明。
图23是一个实施方式的管理数据访问处理的流程图。
管理数据访问处理包括参照管理数据的处理(管理数据参照处理)和更新管理数据的处理(管理数据更新处理),执行的处理根据是进行管理数据参照处理、还是进行管理数据更新处理而变化。
关于管理数据参照处理,例如在存储系统20被设定为了压缩模式的状态下接收到读命令时,为了参照与用读命令指定的明文逻辑卷中的读地址对应的、压缩逻辑卷中的读地址(起始位置和数据长度)而执行管理数据参照处理(图12的S101)。
另一方面,关于管理数据更新处理,例如在存储系统20被设定为了压缩模式的状态下接收到写命令时,为了使由写命令指定的明文逻辑卷中的写地址新与压缩逻辑卷中的写地址(起始位置和数据长度)对应而执行管理数据更新处理(图21的S108)。
首先,CPU33确定用于保存要访问的管理数据的最终存储设备(40、41)中的地址(下面称为管理数据地址),判断对管理数据地址是否已分配缓存段(步骤S81)。该处理与用户数据读处理的处理步骤(图15的S1)是相同的,所以省略详细说明。另外,管理数据地址例如是AMTD2300中的管理数据的地址、AMTB2400的管理数据的地址。
其结果是,如果缓存段已分配(步骤S81:是),则CPU33使处理前进至步骤S83,另一方面,如果缓存段未分配(步骤S81:否),则执行段分配处理(参考图16)(步骤S82),使处理前进至步骤S83。
在步骤S83中,CPU33将包括与管理数据地址对应的缓存段的槽锁定。具体而言,CPU33通过使包括该缓存段的槽的SLCT110的槽状态110e的表示“锁定着”的比特为ON,而表示该槽被锁定。
接着,CPU33判断管理数据是否保存在缓存段中、即是否缓存命中(步骤S84)。具体而言,CPU33调查与管理数据的缓存段对应的SGCT120的登台位图120e和脏位图120f,关于参照的管理数据的全部块,如果与各块对应的登台位图120e的比特和脏位图120f的比特的任一者是ON,则判断缓存命中。另一方面,CPU33在参照的范围内存在脏位图120f和登台位图120e的对应的比特都是OFF的1个以上的块的情况下,判断缓存未命中。
其结果是,在缓存命中的情况(步骤S84:是)下,CPU33使处理前进至步骤S86,在缓存未命中的情况(步骤S84:否)下,执行登台处理(参考图19)(步骤S85),使处理前进至步骤S86。在登台处理中,将管理数据从驱动器(HDD40或SSD41)读取至缓存段(325或343)。当登台处理完成时,成为管理数据被保存在缓存段(325或343)中的状态。
接着,CPU33判断对管理数据的访问的种类是什么(参照或更新中的哪一方)(步骤S86)。其结果是,在访问的种类是“参照”的情况(步骤S86:参照)下,CPU33参照缓存段中保存的管理数据(步骤S87),使处理前进至步骤S90。
另一方面,在访问种类是“更新”的情况(步骤S86:更新)下,CPU33将缓存段中的管理数据的块更新(步骤S88)。接着,CPU33设定更新了的块是脏数据(步骤S89),使处理前进至步骤S90。即,CPU33将与包括更新了的块的缓存段对应的SGCT120的脏位图120f中的与更新块对应的比特设定为ON,使处理前进至步骤S90。
在步骤S90中,CPU33将锁定着的槽释放(解锁),使该槽的状态成为能够变更的状态,结束管理数据访问处理。
通过该管理数据访问处理,能够参照或更新管理数据。
接着,对脏数据写回处理进行说明。
图24是一个实施方式的脏数据写回处理(也称为“回写处理”)的流程图。
脏数据写回处理是基于LRU(Least Recently Used)算法选择存储器的缓存区域内的脏数据,将该数据写回(也称为“回写”)至最终存储设备,使其干净化的处理。通过使数据干净化,能够从缓存区域中使该数据正在使用的缓存段随时成为空闲(未分配)状态。脏数据写回处理例如在存储器中用于缓存新数据的空闲缓存段不足的情况下进行。脏数据写回处理优选在存储系统20的CPU33的使用率低时,作为后台处理执行。这是因为,在来自主机计算机10的读/写命令的时机检测到空闲缓存段不足之后执行脏数据写回处理时,与该处理进行的脏数据的写回耗费的时间相应地,响应性能降低。
最终存储设备(40、41)中保存的用户数据和管理数据,为了防止设备故障引起的数据损失,可以在实施基于RAID(Redundant Arrays of Independent Disks:独立磁盘冗余阵列)技术的冗余化之后记录在设备中。例如,如果最终存储设备的台数是N台,则将写回的数据均等地分配记录在(N-1)台中,在其余1台中记录计算该写回的数据的逻辑异或(Exclusive OR)而生成的奇偶校验。由此,即使N台中的1台发生故障,也能够还原数据。例如,N=4时,在3台设备中记录相等大小的数据D1、D2、D3,在其余1台设备中记录按照P=D1+D2+D3(+表示逻辑异或)计算的奇偶校验P。在记录D2的设备发生了故障的情况下,能够利用P+D1+D3=D2的性质,还原D2。进行这样的管理的情况下,CPU33为了暂时性地将奇偶校验保存在缓存存储器中,而使用缓存段。
在图24中,首先,CPU33判断用于保存要写回至最终存储设备(40、41)的数据(写回对象数据)的奇偶校验的缓存段是否已分配(步骤S111)。该处理与用户数据读处理的处理步骤(图15的S1)是相同的,所以省略详细的说明。
其结果是,如果缓存段已分配(步骤S111:是),则使处理前进至步骤S113,另一方面,如果缓存段未分配(步骤S111:否),则执行段分配处理(参考图16)(步骤S112),使处理前进至步骤S113。在段分配处理中,对于奇偶校验的记录目标地址,从DRAM34或SCM32分配缓存段。在本实施方式中,对于奇偶校验,与用户数据同样地进行缓存段的分配。另外,为了通过使奇偶校验双重化而确保可靠性,也可以分配2个缓存段。
在步骤S113中,CPU33将包括保存奇偶校验的缓存段的槽锁定。具体而言,CPU33通过使包括该缓存段的槽的SLCT110的槽状态110e的表示“锁定着”的比特为ON,而表示该槽被锁定。
接着,CPU33根据写回对象数据生成奇偶校验并保存在已分配的段中(步骤S114)。
接着,CPU33对于写回对象数据和生成的奇偶校验,进行离台处理(参考图25)(步骤S115)。离台处理的详情在后文中叙述。
接着,CPU33设定完成了离台的写回对象数据和奇偶校验是干净数据。即,CPU33将与缓存段对应的SGCT120的脏位图120f中的与写入了数据的块对应的比特设定为OFF(步骤S116)。
接着,CPU33将锁定着的槽释放(解锁)(步骤S117),使该槽的状态为能够变更的状态,结束脏数据写回处理。
通过脏数据写回处理,能够适当地增加可用于缓存的缓存段。
接着,对离台处理(图24的步骤S115)进行说明。
图25是一个实施方式的离台处理的流程图。
该离台处理分别以写回对象数据和奇偶校验为对象执行。首先,CPU33判断对于对象数据(写回对象数据/生成的奇偶校验)分配的缓存段是否是DRAM段343(步骤S121)。
其结果是,如果分配的缓存段是DRAM段343(步骤S121:是),则CPU33从DRAM段343读取写回对象数据/奇偶校验并写入存储设备(HDD40或SSD41)中(步骤S122),结束离台处理。另一方面,如果分配的缓存段是SCM段325(步骤S121:否),则CPU33从SCM段325读取写回数据/奇偶校验并写入存储设备(HDD40或SSD41)中(步骤S123),结束离台处理。
上面说明了本发明的一个实施方式,但这是用于说明本发明的示例,并不将本发明的范围仅限定于该实施例。即,本发明也能够以其他各种方式实施。
例如,在上述实施方式中,对于用户数据,在DRAM段343不可用的情况下,如果SCM段325可用则使用(将用户数据保存在SCM段325中),但在本实施方式中,不限于此,例如,对于用户数据,在DRAM段343不可用的情况下,也可以等待至DRAM段343成为可用。具体而言,可以构成为,在图18的DRAM优先段分配处理的步骤S51为“否”的情况下,CPU33使处理前进至步骤S54,在步骤S54中等待至DRAM段343成为可用。这样,能够总是将用户数据保存在DRAM段343中,能够将对用户数据的访问性能维持为较高。
另外,在上述实施方式中,对于管理数据,在SCM段325不可用的情况下,如果DRAM段343可用则使用(将管理数据保存在DRAM段343中),但在本实施方式中,不限于此,例如,对于管理数据,在SCM段325不可用的情况下,也可以等待至SCM段325成为可用。具体而言,也可以构成为,在图17的SCM优先段分配处理的步骤S41为“否”的情况下,CPU33使处理前进至步骤S44,在步骤S44中等待至SCM段25成为可用。这样,能够防止将管理数据保存在DRAM段343中,能够适当地确保DRAM343的空闲区域。
另外,在上述实施方式中,将用户数据优先地缓存在DRAM34中,将管理数据优先地缓存在SCM32中,但在DRAM34中缓存、还是在SCM32中缓存的数据的缓存目标的分类不限于此。例如,也可以构成为,具有要求比较高的性能的特性的用户数据,缓存在DRAM34中,除此以外的用户数据,缓存在SCM32中,总而言之,将要求比较高的性能的特性的数据缓存在高性能的存储器中、将除此以外的特性的数据缓存在低性能的存储器中即可。例如,对于是否是要求比较高的性能的特性的数据,预先设定能够确定这样的数据的信息(例如数据种类名、保存目标的LU、LU的LBA等),基于该信息判断即可。
另外,在上述实施方式中,作为访问性能不同的存储器,以DRAM34和SCM32为例进行了说明,但例如也可以准备访问性能较高的DRAM和访问性能较低的DRAM,使用它们,根据数据种类控制进行缓存的存储器。另外,作为访问性能不同的存储器,设置了2种存储器,但也可以设置访问性能不同的3种以上的存储器。在此情况下,按照数据的种类控制进行缓存的存储器即可。

Claims (10)

1.一种数据管理装置,其包括存储器部和与该存储器部连接的处理器部,其中,所述存储器部用于缓存对存储设备输入的数据和从存储设备输出的数据,所述数据管理装置的特征在于:
所述存储器部具有访问性能高的第一类存储器和访问性能低于该第一类存储器的第二类存储器,所述第二类存储器的访问单位与所述第一类存储器的访问单位相同,
所述处理器部基于对所述存储设备输入的数据和从所述存储设备输出的数据,决定使所述第一类存储器和所述第二类存储器的哪一者缓存所述数据,并将所述数据缓存至所决定的所述第一类存储器或所述第二类存储器。
2.如权利要求1所述的数据管理装置,其特征在于:
对所述存储设备输入的数据和从所述存储设备输出的数据包括:符合来自主机计算机的I/O请求的用户数据;和用于管理所述用户数据的管理数据,
所述处理器部决定使所述第一类存储器缓存所述用户数据,使所述第二类存储器缓存所述管理数据。
3.如权利要求2所述的数据管理装置,其特征在于:
所述处理器部在使所述第一类存储器缓存所述用户数据时,在所述第一类存储器中不存在空闲区域的情况下,决定使所述第二类存储器缓存所述用户数据。
4.如权利要求2所述的数据管理装置,其特征在于:
所述处理器部在使所述第一类存储器缓存所述用户数据时,在所述第一类存储器中不存在空闲区域的情况下,等待至所述第一类存储器中产生空闲区域之后,使所述第一类存储器缓存所述用户数据。
5.如权利要求2所述的数据管理装置,其特征在于:
所述处理器部在使所述第二类存储器缓存所述管理数据时,在所述第二类存储器中不存在空闲区域的情况下,决定使所述第一类存储器缓存所述管理数据。
6.如权利要求2所述的数据管理装置,其特征在于:
所述处理器部在使所述第二类存储器缓存所述管理数据时,在所述第二类存储器中不存在空闲区域的情况下,等待至所述第二类存储器中产生空闲区域之后,使所述第二类存储器缓存所述用户数据。
7.如权利要求2所述的数据管理装置,其特征在于:
所述管理数据是能够确定将所述用户数据压缩后保存在所述存储设备中的地址的地址数据。
8.如权利要求1所述的数据管理装置,其特征在于:
所述第一类存储器是动态随机存储器,所述第二类存储器是存储级存储器。
9.一种数据管理装置的数据管理方法,该数据管理装置包括用于缓存对存储设备输入的数据和从存储设备输出的数据的存储器部,所述数据管理方法的特征在于:
所述存储器部具有访问性能高的第一类存储器和访问性能低于该第一类存储器的第二类存储器,所述第二类存储器的访问单位与所述第一类存储器的访问单位相同,
基于对所述存储设备输入的数据和从所述存储设备输出的数据,决定使所述第一类存储器和所述第二类存储器的哪一者缓存所述数据,
将所述数据保存至所决定的所述第一类存储器或所述第二类存储器。
10.一种存储介质,其存储了由构成数据管理装置的计算机执行的数据管理程序,所述数据管理装置包括存储器部和与该存储器部连接的处理器部,其中,所述存储器部用于缓存对存储设备输入的数据和从所述存储设备输出的数据,所述存储介质的特征在于:
所述存储器部具有访问性能高的第一类存储器和访问性能低于该第一类存储器的第二类存储器,所述第二类存储器的访问单位与所述第一类存储器的访问单位相同,
所述数据管理程序用于使所述计算机实现下述的功能:
基于对所述存储设备输入的数据和从所述存储设备输出的数据,决定使所述第一类存储器和所述第二类存储器的哪一者缓存所述数据的功能;和
将所述数据缓存至所决定的所述第一类存储器或所述第二类存储器的功能。
CN201910719465.5A 2018-10-30 2019-08-05 数据管理装置、数据管理方法和存储介质 Withdrawn CN111124950A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018203851A JP2020071583A (ja) 2018-10-30 2018-10-30 データ管理装置、データ管理方法、及びデータ管理プログラム
JP2018-203851 2018-10-30

Publications (1)

Publication Number Publication Date
CN111124950A true CN111124950A (zh) 2020-05-08

Family

ID=70326966

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910719465.5A Withdrawn CN111124950A (zh) 2018-10-30 2019-08-05 数据管理装置、数据管理方法和存储介质

Country Status (3)

Country Link
US (1) US20200133836A1 (zh)
JP (1) JP2020071583A (zh)
CN (1) CN111124950A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116719485A (zh) * 2023-08-09 2023-09-08 苏州浪潮智能科技有限公司 基于fpga的数据读写方法及读写单元与fpga
CN116991339A (zh) * 2023-09-28 2023-11-03 深圳大普微电子股份有限公司 基于scm和ssd的混合存储器、混合存储系统及方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11687443B2 (en) * 2013-05-15 2023-06-27 EMC IP Holding Company LLC Tiered persistent memory allocation
US11221954B2 (en) * 2019-11-18 2022-01-11 International Business Machines Corporation Storing metadata in heterogeneous cache to improve I/O performance
KR20230008021A (ko) 2020-04-13 2023-01-13 에이지씨 가부시키가이샤 함불소 공중합체 조성물 및 가교 고무 물품
US11416407B2 (en) * 2020-05-22 2022-08-16 Dell Products, L.P. Method and apparatus for cache slot allocation based on data origination location or final data destination location
US11586360B2 (en) * 2021-05-14 2023-02-21 International Business Machines Corporation Hybrid memory mirroring using storage class memory

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110271048A1 (en) * 2009-12-17 2011-11-03 Hitachi, Ltd. Storage apapratus and its control method
US20140189204A1 (en) * 2012-12-28 2014-07-03 Hitachi, Ltd. Information processing apparatus and cache control method
CN104956312A (zh) * 2013-12-12 2015-09-30 株式会社日立制作所 存储装置及存储装置的控制方法
JP2018014129A (ja) * 2017-09-14 2018-01-25 株式会社日立製作所 ストレージ装置及びストレージ装置の制御方法
US20190205035A1 (en) * 2016-11-08 2019-07-04 Hitachi, Ltd. Flash memory module and control method of flash memory module

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110271048A1 (en) * 2009-12-17 2011-11-03 Hitachi, Ltd. Storage apapratus and its control method
US20140189204A1 (en) * 2012-12-28 2014-07-03 Hitachi, Ltd. Information processing apparatus and cache control method
CN104956312A (zh) * 2013-12-12 2015-09-30 株式会社日立制作所 存储装置及存储装置的控制方法
US20160004642A1 (en) * 2013-12-12 2016-01-07 Hitachi, Ltd. Storage device and method for controlling storage device
CN108108311A (zh) * 2013-12-12 2018-06-01 株式会社日立制作所 存储装置及存储装置的控制方法
US20190205035A1 (en) * 2016-11-08 2019-07-04 Hitachi, Ltd. Flash memory module and control method of flash memory module
JP2018014129A (ja) * 2017-09-14 2018-01-25 株式会社日立製作所 ストレージ装置及びストレージ装置の制御方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116719485A (zh) * 2023-08-09 2023-09-08 苏州浪潮智能科技有限公司 基于fpga的数据读写方法及读写单元与fpga
CN116719485B (zh) * 2023-08-09 2023-11-03 苏州浪潮智能科技有限公司 基于fpga的数据读写方法及读写单元与fpga
CN116991339A (zh) * 2023-09-28 2023-11-03 深圳大普微电子股份有限公司 基于scm和ssd的混合存储器、混合存储系统及方法
CN116991339B (zh) * 2023-09-28 2023-12-22 深圳大普微电子股份有限公司 基于scm和ssd的混合存储器、混合存储系统及方法

Also Published As

Publication number Publication date
US20200133836A1 (en) 2020-04-30
JP2020071583A (ja) 2020-05-07

Similar Documents

Publication Publication Date Title
JP6000376B2 (ja) 特性の異なる複数種類のキャッシュメモリを有する情報処理装置
US20220414002A1 (en) Memory system and method for controlling nonvolatile memory
US20230259452A1 (en) Computing system and method for controlling storage device
CN111124950A (zh) 数据管理装置、数据管理方法和存储介质
JP6073471B2 (ja) ストレージ装置
US9128847B2 (en) Cache control apparatus and cache control method
US10884630B2 (en) Storage system
US9792073B2 (en) Method of LUN management in a solid state disk array
US11747989B2 (en) Memory system and method for controlling nonvolatile memory
KR20150105323A (ko) 데이터 스토리지 방법 및 시스템
US20170192903A1 (en) Storage apparatus and storage control method
US11093134B2 (en) Storage device, management method, and program in tiered storage system
US10891057B1 (en) Optimizing flash device write operations
JP6817340B2 (ja) 計算機
CN115437554A (zh) 用于存储器系统中页迁移的系统、方法和装置
CN111625477A (zh) 访问擦除块的读请求的处理方法与装置
KR20210142863A (ko) 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법
WO2018002999A1 (ja) 記憶デバイス及びストレージ装置
US11663128B1 (en) Techniques for performing metadata updates for cache consistency
EP4303735A1 (en) Systems, methods, and devices for reclaim unit formation and selection in a storage device
US20240176741A1 (en) Caching techniques using a two-level read cache
CN116662217A (zh) 持久性存储器装置及应用持久性存储器装置的方法
CN117369718A (zh) 在存储装置中形成和选择回收单元的系统、方法和装置
KR20230040057A (ko) 시스템의 읽기 성능을 개선하기 위한 장치 및 방법

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
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20200508