CN110199265B - 存储装置和存储区域管理方法 - Google Patents
存储装置和存储区域管理方法 Download PDFInfo
- Publication number
- CN110199265B CN110199265B CN201780083601.5A CN201780083601A CN110199265B CN 110199265 B CN110199265 B CN 110199265B CN 201780083601 A CN201780083601 A CN 201780083601A CN 110199265 B CN110199265 B CN 110199265B
- Authority
- CN
- China
- Prior art keywords
- pool
- size
- new data
- storage area
- data
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Abstract
在已对虚拟卷中的写目标虚拟区域分配实际区域的情况下,存储装置判定压缩新数据的大小是否比已分配的实际区域的大小更大。在其判定结果是真的情况下,存储装置判定是否存在大小在压缩新数据的大小以上且包括作为垃圾的实际区域即垃圾区域的1个以上实际区域。在其判定结果是真的情况下,存储装置选择包括垃圾区域的1个以上实际区域,将选择的1个以上实际区域代替已分配的实际区域地分配给写目标虚拟区域,将已分配的实际区域作为垃圾区域管理。
Description
技术领域
本发明主要涉及存储区域的管理。
背景技术
已知对于虚拟卷(逻辑地址空间)中的写目标虚拟区域(逻辑地址范围)从池(实际区域组)中分配实际区域(逻辑存储区域)并在该实际区域中写入数据的存储装置。在实际区域中写入的数据,被写入对该实际区域分配的物理存储区域。另外,如果已对写目标虚拟区域分配了实际区域,则存储装置进行覆盖写处理,即将新数据(本次的写对象数据)覆盖在旧数据(上次的写对象数据)上。
但是,存储装置将数据压缩并保存在实际区域中的情况下,因为数据大小因压缩而变化,所以在覆盖写处理中,压缩新数据(压缩后的新数据)的大小可能比压缩旧数据(压缩后的旧数据)的大小更大。该情况下,不能在压缩旧数据存在的区域内覆盖压缩旧数据。因此,存储装置代替已分配实际区域地从池中对写目标虚拟区域分配更大的实际区域,在该更大的实际区域中写入压缩新数据。已分配实际区域(保存了压缩旧数据的实际区域)成为垃圾,被作为无效实际区域管理。存储装置不将垃圾的容量作为空闲容量管理,不能在垃圾中新写入数据。专利文献1公开了在垃圾积累了一定量后,通过执行垃圾回收处理(以下称为GC处理),而使垃圾成为空闲容量的技术。
现有技术文献
专利文献
专利文献1:美国专利第8527544号说明书
发明内容
发明要解决的课题
GC处理需要开销。如果压缩新数据的大小在已分配实际区域的大小以下,则能够将压缩新数据覆盖至已分配实际区域,因此,能够避免产生垃圾。但是,新数据的压缩后的大小由新数据的属性和压缩的方式(例如压缩算法)决定,所以不一定能够避免产生垃圾。
用于解决课题的方法
在已对虚拟卷中的写目标虚拟区域分配实际区域的情况下,存储装置判定压缩新数据的大小是否比已分配的实际区域的大小更大。在其判定结果是真的情况下,存储装置判定是否存在大小在压缩新数据的大小以上且包括作为垃圾的实际区域即垃圾区域的1个以上实际区域。在其判定结果是真的情况下,存储装置选择包括垃圾区域的1个以上实际区域,将选择的1个以上实际区域代替已分配的实际区域地分配给写目标虚拟区域,将已分配的实际区域作为垃圾区域管理。
发明的效果
能够在将数据压缩后保存在实际区域中,并且即使压缩新数据的大小超过已分配实际区域的大小,也能够降低垃圾区域增加的可能性。
附图说明
图1是表示在压缩新数据的大小超过已分配的子池页的大小的情况下进行的实施例1的覆盖写处理的一例的概要的示意图。
图2表示实施例1的计算机系统的结构例。
图3表示存储系统具有的程序和管理信息的例子。
图4表示虚拟卷表的结构例。
图5表示池管理表的结构例。
图6表示池卷表的结构例。
图7表示存储系统中的存储层级的例子。
图8表示池与池卷的关系的第1例。
图9表示池与池卷的关系的第2例。
图10是写处理的流程图。
图11是实施例1的子池页选择处理的流程图。
图12是实施例2的子池页选择处理的流程图。
图13是实施例3的子池页选择处理的流程图。
图14是表示压缩新数据的大小在已分配的子池页的大小以下的情况下的覆盖写处理的一例的概要的示意图。
图15是表示压缩新数据的大小超过已分配的子池页的大小的情况下的覆盖写处理的一例的概要的示意图。
图16是表示压缩新数据的大小超过已分配的子池页的大小的情况下进行的一个比较例的覆盖写处理的一例的概要的示意图。
具体实施方式
以下参考附图说明实施例。但是,本实施例只是用于实现发明的一例,并不限定发明的技术范围。另外,对于各图中共通的结构,附加同一参考编号。
另外,此后的说明中,有时用“aaa表”或“aaa队列”的表达说明各种信息,但各种信息也可以用表或队列以外的数据结构表达。为了表示不依赖于数据结构,能够将“aaa表”或“aaa队列”称为“aaa信息”。
另外,此后的说明中,“接口部”可以包括1个以上接口设备,具体而言,包括用户接口部、和通信接口部中的至少1个。用户接口部可以包括1个以上I/O设备(例如输入设备(例如键盘和指点设备)和输出设备(例如显示设备))和显示用计算机中的至少1个I/O设备。通信接口部可以包括1个以上通信接口设备。1个以上通信接口设备可以是1个以上相同种类的通信接口设备(例如1个以上NIC(Network Interface Card)),也可以是2个以上不同种类的通信接口设备(例如NIC和HBA(Host Bus Adapter))。
另外,此后的说明中,“存储部”包括1个以上存储器。关于存储部,至少1个存储器可以是易失性存储器。存储部主要在处理器部进行的处理时使用。
另外,此后的说明中,“处理器部”包括1个以上处理器。至少1个处理器典型而言是CPU(Central Processing Unit)这样的微处理器。1个以上处理器分别可以是单核心的也可以是多核心的。处理器可以包括进行处理的一部分或全部的硬件电路。处理器部可以包括进行处理的一部分或全部的硬件电路(例如FPGA(Field-Programmable Gate Array)或ASIC(Application Specific Integrated Circuit))。
另外,此后的说明中,“PDEV”指的是物理存储设备,典型而言可以是非易失性的存储设备(例如辅助存储设备)。PDEV例如可以是HDD(Hard Disk Drive)或SSD(Solid StateDrive)。存储系统中可以同时存在不同种类的PDEV。
另外,此后的说明中,“RAID”是Redundant Array of Independent (orInexpensive)Disks的简称。
另外,此后的说明中,“RAID组”可以是由多个PDEV构成并按照关联的RAID级别(RAID结构)存储数据的组,也可以是由多个物理存储区域构成并按照关联的RAID级别(RAID结构)存储数据的组。
另外,此后的说明中,使用编号作为要素的识别信息,但能够代替编号或在此之外使用其他种类的识别信息。
另外,以下说明中,对相同种类的要素不区分地进行说明的情况下,使用附图标记中的共通部分,对相同种类的要素区分地进行说明的情况下,有时使用要素的附图标记(包括副编号)。
另外,此后的实施例的说明中,存储装置的一例是具有1个以上PDEV的存储系统,但也能够采用PDEV作为存储装置的一例。存储装置是PDEV(例如闪存设备)的情况下,存储装置具有1个以上物理存储介质(例如闪存芯片)、和控制对1个以上物理存储介质的I/O的控制器。PDEV和物理存储介质分别是物理存储资源的一例。
(实施例1)
如之后参考图2详细说明一般,存储系统30具有1个以上PDEV34、和控制对1个以上PDEV34的数据I/O(Input/Output)的控制器31。控制器31进行数据的压缩和解压缩。
如图14所示,控制器31管理1个以上池600。池600是逻辑存储空间。池600的至少一部分可以基于多个PDEV34中的至少一部分,池600的至少一部分也可以基于存储系统30外部的存储系统(未图示)提供的存储区域。池600由大小不同的多个子池页(逻辑存储区域)641构成。
控制器31对主机计算机10这样的上级装置提供虚拟卷501(逻辑地址空间)。假设如图14所示,对虚拟卷501中的虚拟页(逻辑地址范围)52-1、52-2和52-3分别分配了子池页61-1、61-2和61-3,在子池页61-1、61-2和61-3中分别保存了压缩旧数据A、B和C。
在该状况下,假设如图14所示,控制器31接收了以虚拟页52-1为写目标的新数据D的写请求。控制器31对新数据D进行压缩,判断压缩新数据D的大小是否在对写目标虚拟页52-1分配的子池页61-1的大小(或该子池页61-1中保存的压缩旧数据A的大小)以下。在其判断结果是真的情况下,如图14所示,控制器31将压缩新数据D覆盖在已分配子池页61-1上。
另一方面,在上述状况下,假设如图15所示,控制器31接收了以虚拟页52-1为写目标的新数据E的写请求。控制器31对新数据E进行压缩,判断压缩新数据E的大小是否在对写目标虚拟页52-1分配的子池页61-1的大小(或该子池页61-1中保存的压缩旧数据A的大小)以下。在其判断结果是假的情况下,如图15所示,控制器31对于写目标虚拟页52-1,代替子池页61-1地分配大小更大的子池页61-4,在子池页61-4中写入压缩新数据E。结果,子池页61-1成为垃圾。
这样,在池600中产生垃圾。本实施例如下所述地抑制池600中的垃圾总量,结果能够减轻垃圾回收处理(GC处理)的负荷。
例如,假设在图15所示的状况、即子池页61-1作为垃圾存在的状况下,如图1所示,控制器31接收了以虚拟页52-3为写目标的新数据F的写请求。控制器31对新数据F进行压缩,进行压缩新数据F的大小是否在对写目标虚拟页52-3分配的子池页61-3的大小(或该子池页61-3中保存的压缩旧数据C的大小)以下的第1判断。在第1判断的结果是假的情况下,控制器31进行压缩新数据F的大小是否在某个垃圾(此处是子池页61-1)(或该垃圾内的压缩数据的大小)以下的第2判断。在第2判断的结果是真的情况下,如图1所示,控制器31对于写目标虚拟页52-3,代替子池页61-3地分配作为垃圾的子池页61-1,在该分配的子池页61-1中写入压缩新数据F。结果,子池页61-3成为垃圾,但能够避免增加垃圾的数量。即,根据本实施例,因为使用垃圾作为覆盖写处理的对象的压缩新数据的写目标(换言之,因为即使不进行开销成为性能降低的原因的GC处理也能够重新利用垃圾),所以能够期待提高存储系统30的性能。
另一方面,根据图16所示的一个比较例,不进行上述第2判断。即,第1判断的结果是假的情况下,对于写目标虚拟页52-3,代替子池页61-3地分配大小更大的子池页61-5,在子池页61-5中写入压缩新数据F。结果,在子池页61-1之外子池页61-3也成为垃圾。即,垃圾的数量增加。
以下详细说明本实施例。
图2表示本实施例的计算机系统的结构例。
计算机系统1具有至少1台主机计算机10(例如由通用大型计算机或服务器或通用的硬件组件构成的装置或通用服务器等)、和至少1个管理装置20(例如由管理计算机或服务器或通用的硬件组件构成的装置或通用服务器等)、和它们连接至的存储系统30。
主机计算机10对存储系统30的逻辑存储资源(例如逻辑地址空间)进行访问。管理装置20管理存储系统30的存储区域的结构。存储系统30在基于1个以上PDEV34的存储区域中保存数据。主机计算机10和管理装置20的至少一方可以是多台。
存储系统30具有多个PDEV34、和控制器31。控制器31在外部具有至少1个缓存存储器32、和至少1个共享存储器33。缓存存储器32、共享存储器33和控制器31的至少一方可以冗余化。另外,控制器31内部的硬件结构也可以冗余化。
控制器31控制对基于PDEV34的存储区域的数据保存。缓存存储器32暂时保存对PDEV34读写的数据。共享存储器33保存关于控制器31和PDEV34的结构信息。
PDEV34可以是任意的物理存储设备,例如可以是HDD也可以是SSD。
控制器31具有主机适配器310、网络适配器320、非易失性存储器(NVMe)330、存储器350、存储适配器370、共享存储器适配器380、压缩解压缩电路(C/D)390、和与它们连接的处理器360。主机适配器310、网络适配器320、存储适配器370和共享存储器适配器380中的至少一方是接口部的一例。非易失性存储器330、存储器350、缓存存储器32和共享存储器33的至少一方是存储部的一例。处理器360是处理器部的一例。
主机适配器310经由存储区域网络(SAN)121与主机计算机10之间发送接收数据。网络适配器320经由网络108(例如LAN(Local Area Network))与主机计算机10或管理装置20之间发送接收系统管理上必要的数据(例如管理信息)。
非易失性存储器330例如由硬盘或闪存构成,保存在控制器31中运行的程序和结构信息等。
存储器350例如可以是RAM(Random Access Memory)等易失性存储器,保存程序和数据等。
处理器360将非易失性存储器330中保存的程序读取至存储器350,执行由该程序规定的处理。
存储适配器370与PDEV34和缓存存储器32之间发送接收数据。共享存储器适配器380与共享存储器33之间发送接收数据。
压缩解压缩电路390是硬件电路,对输入的数据进行压缩或解压缩并输出。压缩和解压缩的至少一方也可以代替硬件电路地通过用处理器360执行计算机程序而进行。
也可以从网络适配器320(或未图示的其他适配器)经由网络121(或其他网络)连接未图示的外部的存储系统。由该外部的存储系统提供的存储区域的至少一部分可以是上述池600的至少一部分存储区域。
另外,也可以是不连接管理装置20的结构。
另外,存储系统30可以是包括1台以上物理计算机(例如通用计算机)的计算机系统。至少1台物理计算机可以运行虚拟计算机(例如VM(Virtual Machine))、也可以运行SDx(Software-Defined anything)。作为SDx,例如能够采用SDS(Software Defined Storage)(虚拟存储系统)或SDDC(Software-Defined Datacenter)。另外,该情况下,主机计算机10也可以是在该计算机系统中运行的虚拟计算机。
图3表示存储系统30具有的程序和管理信息的例子。
程序和管理信息例如保存在存储器350中。程序被处理器360执行。作为程序,例如有I/O处理程序352和池管理程序354。管理信息例如包括虚拟卷表510、池管理表610和池卷表660。通过用处理器360执行I/O处理程序352和池管理程序354而对控制器31的动作的至少一部分进行控制。
I/O处理程序352是用于进行在页中保存压缩数据等关于I/O的处理的程序。池管理程序354是用于进行页的选择等关于池管理的处理的程序。虚拟卷表510是保持关于虚拟卷的信息的表。池管理表610是保持关于池600的信息的表。池卷表660是保持关于池卷的信息的表。这些程序和表可以保存在非易失性存储器330中,该情况下它们被加载至存储器350中。
图4表示虚拟卷表510的结构例。
虚拟卷表510对于每个虚拟页具有条目。各条目保存虚拟卷#511、虚拟页#512、压缩后大小513、池#514、子池#515和子池页#516等信息。以下,以1个虚拟页(图4的说明中称为“对象虚拟页”)为例。
虚拟卷#511是识别包括对象虚拟页的虚拟卷的编号。虚拟页#512是用于识别对象虚拟页的编号。压缩后大小513表示写对象的数据被压缩解压缩电路390压缩后的数据的大小。通过参照压缩后大小513,能够选择池600内的适当的子池(后述)。池#514是用于识别包括对对象虚拟页分配的子池页的池的编号。子池#515是用于识别包括对对象虚拟页分配的子池页的子池的编号。子池页#516是用于识别对对象虚拟页分配的子池页的编号。另外,如果未对虚拟页分配子池页,则压缩后大小513、池#514、子池#515和子池页#516各值是表示无数据的值(例如“N/A”)。
虚拟卷表510也可以具有未图示的对于每个虚拟卷表示是否支持压缩的信息。由此,能够按虚拟卷单位区分是否支持压缩功能地进行处理。对于不支持压缩的虚拟卷,控制器31可以将数据不压缩地写入子池页(实际页)中。
图5表示池管理表610的结构例。
存储系统30具有1个以上池,至少1个池由子池页大小不同的多个子池构成。各子池是子池页大小相同的多个子池页的集合。池管理表610对于每个子池具有条目。各条目保存池#611、子池#612、子池页613、使用指针(对使用页队列的指针)614、和未使用指针(对位使用页队列的指针)615等信息。此后,以1个子池(图5的说明中称为“对象子池”)为例。
池#611是用于识别包括对象子池的池的编号。子池#612是用于识别对象子池的编号。子池页大小613表示对象子池内的子池页的大小(长度)。
对于各子池,在本实施例中使用队列管理多个子池页。使用指针614表示管理对象子池中的使用子池页(已对某个虚拟页分配的子池页)的队列620(此后称为使用队列)的起始地址。未使用指针615表示管理对象子池中的未使用子池页(未对任何虚拟页分配的子池页)的队列630(此后称为未使用队列)的起始地址。使用队列620和未使用队列630是管理子池页(实际页)的,在本实施例中采用了使用队列进行的管理,但也可以用使用队列以外的方法进行管理。
使用队列620对于每个使用子池页具有条目。各条目保存子池页#621、池卷#622和实际页#623等信息。此后,以1个使用子池页(图5的说明中称为“对象使用子池页”)为例。子池页#621是用于识别对象使用子池页的编号。池卷#622是用于识别具有与对象使用子池页关联的实际页的池卷的编号。实际页#623是用于识别与对象使用子池页关联(映射)的实际页的编号。
未使用队列630对于每个未使用子池页具有条目。各条目保存子池页#631、池卷#632、实际页#633和垃圾标志634等信息。此后,以1个使用子池页(图5的说明中称为“对象未使用子池页”)为例。子池页#631是用于识别对象未使用子池页的编号。池卷#632是用于识别具有与对象未使用子池页关联的实际页的池卷的编号。实际页#623是用于识别与对象未使用子池页关联(映射)的实际页的编号。垃圾标志634表示对象未使用子池页是否垃圾。不是垃圾的对象未使用子池页是空闲子池页。另外,控制器31通过进行GC处理,而将与作为垃圾的未使用子池页对应的垃圾标志634从“垃圾”(表示垃圾的值)更新为“-”(表示空闲的值)。
图6表示池卷表660的结构例。
池卷表660对于每个实际池具有条目。各条目保存池卷#661、实际页#662、实际页大小663和物理地址664等信息。此后,以1个实际页(图6的说明中称为“对象实际页”)为例。
池卷#661是用于识别具有对象实际页的池卷的编号。实际页#662是用于识别对象实际页的编号。实际页大小663表示对象实际页的大小。对象实际页的大小与关联了对象实际页的子池页的大小典型而言是相同的。物理地址664表示关联了(映射了)对象实际页的物理存储区域的地址(例如PDEV34提供的逻辑地址空间的地址)。
图7表示存储系统30中的存储层级的例子。以下,从下级的层起顺次说明存储区域。
多个PDEV34构成RAID组301。存在跨该多个PDEV34的条带307。
在RAID组301的上级,存在基于RAID组301的作为虚拟存储资源的虚拟设备303。通过对虚拟设备303(存储空间)进行划分,而在虚拟设备303中形成多个逻辑设备306。虚拟设备303也可以是1个逻辑设备306。此后将逻辑设备作为逻辑卷进行说明。
在虚拟设备303的上级存在池600。池600由多个子池601(例如n个子池601-1~601-n)构成。各子池601具有多个子池页61。子池页61的长度(大小)按每个子池601定义。在1个子池601内,全部子池页的长度相同。
子池页641与多个池卷650的实际页651关联。子池页61和实际页651的组(或子池页61)可以是实际区域的一例。池卷650与某一个逻辑卷关联。池卷650是离线卷,所以不与从上级装置即主机计算机10指定的目标设备关联。池卷650由多个实际页651构成。图7的例子中,实际页651与条带307一对一地对应。实际页651中保存的数据,被保存在与该实际页651对应的条带307中。也可以是多个条带307与1个实际页651对应。
虚拟卷501是对主机计算机10提供的逻辑地址空间、即在线卷。虚拟卷501由多个虚拟页52构成。对于未分配子池页61的写目标的虚拟页52,分配池600内的子池601中存在的未使用子池页61(垃圾或空闲子池页)。
在虚拟卷501的上级存在目标设备316。1个以上目标设备316与某个通信接口设备具有的通信端口314关联,对于目标设备316关联虚拟卷501。
图8表示池600与池卷650的关系的第1例。
池卷650由全部相同大小的实际页651构成。子池601与池卷651一对一地对应。
图9表示池600与池卷650的关系的第2例。
池卷650由多个不同大小的实际页构成。子池601与池卷651多对多地对应。
图10是接受了写请求的情况下进行的写处理的流程图。
在写请求中,指定了包括虚拟卷识别编号(例如LUN(Logical Unit Number))和逻辑地址范围(例如LBA(Logical Block Address)和数据长度)的写目标信息。控制器31确定符合写目标信息的写目标虚拟页(S410)。控制器31参照虚拟卷表510,判定是否已对写目标虚拟页分配了子池页(S420)。
S420的判定结果是假的情况下(S420:NO),控制器31进行S540、即以下步骤。
(S420-1)控制器31对写对象数据(符合写请求的数据)用压缩解压缩电路390进行压缩。
(S420-2)控制器31将压缩数据(用压缩解压缩电路390压缩后的数据)保存在缓存存储器32中。
(S420-3)控制器31参照池管理表610,确定大小在压缩数据的大小以上的空闲子池页。确定的空闲子池页的大小,例如可以是压缩数据的大小以上的大小中最小的大小。
(S420-4)如果压缩数据的大小与确定的空闲子池页的大小具有差异,则控制器31通过对压缩数据追加相当于该差异的零数据(填充用数据的一例),而在缓存存储器32中生成写入用的压缩数据。
(S420-5)控制器31将确定的空闲子池页分配给写目标虚拟页(例如,将该子池页的信息从未使用队列630移动至使用队列620)。结果,该子池页成为使用子池页。
(S420-6)控制器31在对主机计算机10返回对于写请求完成之后的任意时机(或者返回完成之前),将缓存存储器32中的写入用的压缩数据写入分配的子池页。此时,控制器31参照池管理表610和池卷表660,在与该子池页对应的物理地址中写入压缩数据。
在S420的判定结果是真的情况下(S420:YES),控制器31进行包括S430~S460的覆盖写处理。
具体而言,在S430中,控制器31进行以下步骤。
(S430-1)控制器31参照池卷表660,从对写目标虚拟页分配的子池页(此后在图10的说明中称为“已分配子池页”)将压缩旧数据读取至缓存存储器32,对读取的压缩旧数据用压缩解压缩电路390解压缩从而在缓存存储器32中得到旧数据。
(S430-2)控制器31在缓存存储器32中的旧数据上覆盖新数据(符合写请求的写对象数据)。
(S430-3)控制器31通过对新数据用压缩解压缩电路390进行压缩而在缓存存储器32中得到压缩新数据。
接着,控制器31在S440中,判定压缩新数据的大小是否超过已分配子池页的大小(或者压缩旧数据的大小)。
在S440的判定结果是假的情况下(S440:NO),在S450中,控制器31进行以下步骤。
(S450-1)控制器31参照池管理表610,确定大小在压缩新数据的大小以上的空闲子池页。确定的空闲子池页的大小,例如可以是压缩新数据的大小以上的大小中最小的大小。
(S450-2)如果压缩新数据的大小与确定的空闲子池页的大小具有差异,则控制器31通过对压缩新数据追加相当于该差异的零数据(填充用数据的一例),而在缓存存储器32中生成写入用的压缩新数据。
(S450-3)控制器31将确定的空闲子池页代替已分配子池页地分配给写目标虚拟页。具体而言,例如控制器31将该子池页的信息从未使用队列630移动至使用队列620,将已分配子池页的信息从使用队列620移动至未使用队列630,将与已分配子池页对应的垃圾标志634设为“垃圾”。结果,该子池页成为使用子池页,已分配子池页成为垃圾。
(S450-4)控制器31在对主机计算机10返回对于写请求完成之后的任意时机(或者返回完成之前),将缓存存储器32中的写入用的压缩新数据写入分配的子池页。
在S440的判定结果是真的情况下(S440:YES),在S460中,控制器31进行以下步骤。
(S460-1)控制器31进行子池页选择处理。
(S460-2)如果压缩新数据的大小与子池页选择处理中选择的子池页(垃圾或空闲子池页)的大小具有差异,则控制器31通过对压缩新数据追加相当于该差异的零数据(填充用数据的一例),而在缓存存储器32中生成写入用的压缩新数据。
(S460-3)控制器31在选择的子池页是空闲子池页的情况下,进行与(S450-3)和(S450-4)同样的处理。
(S460-4)控制器31在选择的子池页是垃圾的情况下,进行以下处理。即,控制器31将选择的子池页代替已分配子池页地分配给写目标虚拟页。具体而言,例如控制器31将该子池页(垃圾)的信息从未使用队列630移动至使用队列620,将已分配子池页的信息从使用队列620移动至未使用队列630,将与已分配子池页对应的垃圾标志634设为“垃圾”。结果,该垃圾成为使用子池页,已分配子池页成为垃圾。之后,控制器31进行与(S450-4)同样的处理。
图11是本实施例的子池页选择处理的流程图。
控制器31参照池管理表610,从池600中选择子池(S461)。此处,例如选择包括大小在压缩新数据的大小以上的子池页并且在S461中未选择的子池中、包括大小最小的子池页的子池。
控制器31参照池管理表610,判定S461中选择的子池中是否存在垃圾(S462)。
在S462的判定结果是真的情况下(S462:YES),控制器31从S461中选择的子池中选择某个垃圾(S463)。
S462的判定结果是假的情况下(S462:NO),控制器31判定是否存在具有大小在压缩新数据的大小以上的子池页并且在S461中未选择的子池(S464)。在S464的判定结果是真的情况下(S464:YES),进行S461。在S464的判定结果是假的情况下(S464:NO),控制器31从最初的S461中选择的子池(例如具有压缩新数据的大小以上的大小中最小的大小的子池页的子池)中选择空闲子池页(S465)。
根据本实施例,控制器31将数据压缩后写入子池页中,并且即使压缩新数据的大小超过已分配子池页的大小,也可以重新利用垃圾(可以将垃圾选择为对写目标虚拟页分配的子池页),所以能够降低垃圾增加的可能性。另外,因为重新利用大小与压缩新数据的大小尽量接近的垃圾,所以能够减少容量效率降低的情况。
(实施例2)
对实施例2进行说明。此时,主要说明与实施例1的不同点,对于与实施例1的共通点省略或简化说明(这一点对于实施例3以后也是同样的)。
图12是实施例2的子池页选择处理的流程图。
实施例2的写目标子池页选择处理在不进行S464这一点上与实施例1不同。即,在S462的判定结果是假的情况下(S462:NO),控制器31从S461中选择的子池中选择空闲子池页(S465)。
根据实施例2,虽然与实施例1相比重新利用垃圾的可能性降低,但能够减少垃圾增加的可能性。换言之,如果不存在压缩新数据的大小以上的大小中最小的大小的垃圾,则选择空闲子池页,所以与实施例1相比,优先避免容量效率降低。
(实施例3)
图13是实施例3的子池页选择处理的流程图。
控制器31参照池管理表610,判定池总使用量是否超过阈值(S610)。“池总使用量”是池总使用容量或池总使用比例。“池总使用容量”是使用子池页的总容量。“池总使用比例”是池总使用容量相对于池容量的比例。
在S610的判定结果是真的情况下(S610:YES),控制器31进行图11或图12所示的子池页选择处理(S620)。
在S610的判定结果是假的情况下(S610:NO),控制器31参照池管理表610,从池600中选择子池(例如包括压缩新数据的大小以上的大小中最小的大小的子池页的子池),从选择的子池中选择空闲子池页(S630)。
可以认为在空闲子池页充足的情况下,即使不选择垃圾也没有问题。换言之,可以认为只要避免因为垃圾增加、虽然实际存在空闲容量、但如果不实施GC处理、能够分配的子池页就会枯竭的状况即可。在池内垃圾较少的情况下,可能找不到大小与压缩新数据的大小接近的垃圾。在这样的情况下也要重新利用垃圾,认为例如存在以下课题。
(x)寻找垃圾的处理导致处理成本的增加。
(y)执行图11时,在(x)之外,也存在重新利用大小不必要地大的垃圾的可能性,所以存在子池页内无用的区域增加的风险。
根据实施例3,因为在作为候选的垃圾累积到一定程度时进行垃圾的重新利用,所以能够削减开销,并且提高容量效率。另外,“池总使用量”也能够改为“垃圾总量”。“垃圾总量”是垃圾总容量或垃圾比例。“垃圾总容量”是垃圾的总容量。“垃圾比例”是垃圾总容量相对于池容量的比例。
(实施例4)
实施例4中,代替未使用队列630地,准备垃圾队列。垃圾队列是垃圾的信息的队列。垃圾队列可以对于每个子池页大小准备,也可以对于全部子池页大小存在1个,也可以对于每个子池页大小范围准备。
以上说明了几个实施例,但它们是用于说明本发明的示例,并不将本发明的范围仅限定于这些实施例。本发明也能够用其他各种方式实施。
例如可以将2个以上实施例组合。
另外,例如可以对于1个虚拟页分配多个子池页,压缩新数据被写入该多个子池页中。例如,控制器31可以以总大小在压缩新数据的大小以上的方式选择多个子池页,将选择的多个子池页分配给写目标虚拟页。该多个子池页可以是多个垃圾,也可以是多个空闲子池页,也可以是1个以上垃圾与1个以上子池页的组合。
附图标记说明
30…存储系统。
Claims (12)
1.一种存储装置,其特征在于,具有:
1个以上物理存储设备;和
控制器,其控制对于所述1个以上物理存储设备的I/O(Input/Output),
所述控制器,
提供虚拟卷,所述虚拟卷为逻辑地址空间,
对池进行管理,所述池为基于所述物理存储设备的逻辑存储空间,
将被写入到所述虚拟卷中的数据压缩后写入所述池中,
在将对在所述池中已分配存储区域的数据进行更新的新数据被写入到了所述虚拟卷中的情况下,所述控制器,
将所述新数据压缩而生成压缩新数据,
判定所述压缩新数据的大小是否比已对旧数据分配的所述池中的存储区域的大小大,其中,所述旧数据为更新前的数据,
在比所述已分配的存储区域的大小大的情况下,在已对所述旧数据分配的存储区域以外的存储区域中写入所述压缩新数据,在不比所述已分配的存储区域的大小大的情况下,将所述新数据写入已对所述旧数据分配的存储区域中。
2.如权利要求1所述的存储装置,其特征在于:
在比所述已分配的存储区域的大小大、且在所述已分配的存储区域以外的存储区域中写入了所述压缩新数据的情况下,使已对所述旧数据分配的存储区域成为垃圾区域,
在其他压缩新数据比该旧数据的已分配的存储区域的大小大的情况下,写入到大小比所述其他压缩新数据大的所述垃圾区域中。
3.如权利要求2所述的存储装置,其特征在于:
写入所述其他压缩新数据的垃圾区域,是大小在所述其他压缩新数据的大小以上的垃圾区域中、大小最小的垃圾区域。
4.如权利要求2所述的存储装置,其特征在于:
在找不到大小在所述其他压缩新数据的大小以上的垃圾区域的情况下,在未分配的存储区域中写入所述其他压缩新数据。
5.如权利要求1所述的存储装置,其特征在于:
写入所述压缩新数据的已对所述旧数据分配的存储区域以外的存储区域,是未分配的存储区域。
6.如权利要求2所述的存储装置,其特征在于:
所述控制器,在池总使用量超过阈值的情况下,将所述其他压缩新数据写入所述垃圾区域中,在池总使用量未超过阈值的情况下,将所述其他压缩新数据写入未分配的存储区域中。
7.一种存储装置的存储区域管理方法,其特征在于:
在将对在池中已分配存储区域的数据进行更新的新数据写入虚拟卷中的情况下,将所述新数据压缩而生成压缩新数据,
判定所述压缩新数据的大小是否比已对旧数据分配的所述池中的存储区域的大小大,其中,所述旧数据为更新前的数据,
在比所述已分配的存储区域的大小大的情况下,在已对所述旧数据分配的存储区域以外的存储区域中写入所述压缩新数据,在不比所述已分配的存储区域的大小大的情况下,将所述新数据写入已对所述旧数据分配的存储区域中。
8.如权利要求7所述的存储区域管理方法,其特征在于:
在比所述已分配的存储区域的大小更大、且在所述已分配的存储区域以外的存储区域中写入了所述压缩新数据的情况下,使已对所述旧数据分配的存储区域成为垃圾区域,
在其他压缩新数据比该旧数据的已分配的存储区域的大小大的情况下,写入到大小比所述其他压缩新数据大的所述垃圾区域中。
9.如权利要求8所述的存储区域管理方法,其特征在于:
写入所述其他压缩新数据的垃圾区域,是大小在所述其他压缩新数据的大小以上的垃圾区域中、大小最小的垃圾区域。
10.如权利要求8所述的存储区域管理方法,其特征在于:
在找不到大小在所述其他压缩新数据的大小以上的垃圾区域的情况下,在未分配的存储区域中写入所述其他压缩新数据。
11.如权利要求7所述的存储区域管理方法,其特征在于:
所述压缩新数据的已对所述旧数据分配的存储区域以外的存储区域,是未分配的存储区域。
12.如权利要求8所述的存储区域管理方法,其特征在于:
在池总使用量超过阈值的情况下,将所述其他压缩新数据写入所述垃圾区域中,在池总使用量没有超过阈值的情况下,将所述其他压缩新数据写入未分配的存储区域中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2017/022613 WO2018235149A1 (ja) | 2017-06-20 | 2017-06-20 | ストレージ装置及び記憶領域管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110199265A CN110199265A (zh) | 2019-09-03 |
CN110199265B true CN110199265B (zh) | 2022-11-01 |
Family
ID=64736915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780083601.5A Active CN110199265B (zh) | 2017-06-20 | 2017-06-20 | 存储装置和存储区域管理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10846023B2 (zh) |
JP (1) | JP6696052B2 (zh) |
CN (1) | CN110199265B (zh) |
WO (1) | WO2018235149A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11907206B2 (en) * | 2021-07-19 | 2024-02-20 | Charles Schwab & Co., Inc. | Memory pooling in high-performance network messaging architecture |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5450577A (en) * | 1993-12-14 | 1995-09-12 | At&T Corp. | Zero-defect data integrity in high-capacity transaction systems |
US5537658A (en) * | 1995-06-07 | 1996-07-16 | International Business Machines Corporation | Distributed directory method and structure for direct access storage device (DASD) data compression |
JP2002207634A (ja) * | 2001-01-10 | 2002-07-26 | Fuji Xerox Co Ltd | 記憶領域管理方法及び記憶装置 |
CN102334093A (zh) * | 2009-03-18 | 2012-01-25 | 株式会社日立制作所 | 存储控制装置以及虚拟卷的控制方法 |
CN102929884A (zh) * | 2011-08-10 | 2013-02-13 | 阿里巴巴集团控股有限公司 | 一种收缩虚拟磁盘镜像文件的方法及装置 |
WO2015128955A1 (ja) * | 2014-02-26 | 2015-09-03 | 株式会社日立製作所 | 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5764880A (en) * | 1996-09-10 | 1998-06-09 | International Business Machines Corporation | Method and system for rebuilding log-structured arrays |
JP5080611B2 (ja) * | 2010-05-14 | 2012-11-21 | 株式会社日立製作所 | ThinProvisioningが適用されたストレージ装置 |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
-
2017
- 2017-06-20 WO PCT/JP2017/022613 patent/WO2018235149A1/ja active Application Filing
- 2017-06-20 JP JP2019524735A patent/JP6696052B2/ja active Active
- 2017-06-20 CN CN201780083601.5A patent/CN110199265B/zh active Active
- 2017-06-20 US US16/330,944 patent/US10846023B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5450577A (en) * | 1993-12-14 | 1995-09-12 | At&T Corp. | Zero-defect data integrity in high-capacity transaction systems |
US5537658A (en) * | 1995-06-07 | 1996-07-16 | International Business Machines Corporation | Distributed directory method and structure for direct access storage device (DASD) data compression |
JP2002207634A (ja) * | 2001-01-10 | 2002-07-26 | Fuji Xerox Co Ltd | 記憶領域管理方法及び記憶装置 |
CN102334093A (zh) * | 2009-03-18 | 2012-01-25 | 株式会社日立制作所 | 存储控制装置以及虚拟卷的控制方法 |
CN102929884A (zh) * | 2011-08-10 | 2013-02-13 | 阿里巴巴集团控股有限公司 | 一种收缩虚拟磁盘镜像文件的方法及装置 |
WO2015128955A1 (ja) * | 2014-02-26 | 2015-09-03 | 株式会社日立製作所 | 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110199265A (zh) | 2019-09-03 |
JPWO2018235149A1 (ja) | 2019-11-07 |
US10846023B2 (en) | 2020-11-24 |
JP6696052B2 (ja) | 2020-05-20 |
WO2018235149A1 (ja) | 2018-12-27 |
US20190243582A1 (en) | 2019-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108021510B (zh) | 操作对多重名称空间进行管理的存储装置的方法 | |
US11669444B2 (en) | Computing system and method for controlling storage device | |
JP7091203B2 (ja) | メモリシステムおよび制御方法 | |
CN109542333B (zh) | 存储器系统及控制非易失性存储器的控制方法 | |
US11467955B2 (en) | Memory system and method for controlling nonvolatile memory | |
JP6524039B2 (ja) | メモリシステム及び制御方法 | |
CN109725846B (zh) | 存储器系统及控制方法 | |
US8832371B2 (en) | Storage system with multiple flash memory packages and data control method therefor | |
TWI424316B (zh) | 控制器、資料儲存裝置、及程式產品 | |
US9747298B2 (en) | Inline garbage collection for log-structured file systems | |
US8447918B2 (en) | Garbage collection for failure prediction and repartitioning | |
JP2019057172A (ja) | メモリシステムおよび制御方法 | |
US20140189203A1 (en) | Storage apparatus and storage control method | |
JP6785204B2 (ja) | メモリシステムおよび制御方法 | |
US10310984B2 (en) | Storage apparatus and storage control method | |
JP2019057178A (ja) | メモリシステムおよび制御方法 | |
US9081692B2 (en) | Information processing apparatus and method thereof | |
CN1289419A (zh) | 压缩存储自由空间管理 | |
US20190243758A1 (en) | Storage control device and storage control method | |
US11836381B2 (en) | Memory system and method of controlling nonvolatile memory using namespace attributes | |
CN110199265B (zh) | 存储装置和存储区域管理方法 | |
JP6430039B2 (ja) | 記憶装置および記憶装置の制御方法 | |
JP2022036263A (ja) | 制御方法 | |
KR20200034560A (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
JP2022111330A (ja) | メモリシステムおよび制御方法 |
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 |