CN106062703B - 存储系统 - Google Patents
存储系统 Download PDFInfo
- Publication number
- CN106062703B CN106062703B CN201480076664.4A CN201480076664A CN106062703B CN 106062703 B CN106062703 B CN 106062703B CN 201480076664 A CN201480076664 A CN 201480076664A CN 106062703 B CN106062703 B CN 106062703B
- Authority
- CN
- China
- Prior art keywords
- defragmentation
- data block
- dielectric
- data
- content
- 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
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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- 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/1016—Performance 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的一个例子的存储系统取得包含于内容并保存在介质区域中的参照请求数据块的参照请求。存储系统决定包含参照请求数据块在内的在内容内连续的多个数据块在介质区域上的地址中的间隙数。存储系统基于间隙数,判断基于多个数据块的碎片整理是否有效。存储系统在判断为碎片整理有效的情况下,将从介质区域读出到存储区域的多个数据块写出至介质区域的连续地址区域。
Description
技术领域
本发明涉及一种存储系统的碎片整理。
背景技术
作为本技术领域的背景技术有专利文献1。专利文献1中披露的存储装置响应来自主机的参照请求而进行通常的参照处理,取得在内容内连续的数据(称为逻辑上连续的数据)。此时,在数据的物理位置非连续的情况下,存储装置在将这些数据写出至下一张磁盘时,写出至连续物理区域。进一步地,专利文献1披露了如下的方法:在有主机更新请求时不仅将该写数据读出之后写入磁盘,还将该写数据的偏移量周围的逻辑上连续的数据之后写入磁盘。
现有技术文献
专利文献
专利文献1:美国专利8359430号
发明内容
专利文献1的存储装置在有主机参照请求时,若读出的数据块数很少,则将它们写出至磁盘的新建区域。因此,内容整体上的随机性增大,从磁盘读出的性能变差。进一步地,在有主机更新请求时,由于专利文献1的存储装置必定从磁盘读出周围数据,所以因I/O(输入/输出)等待而导致主机请求响应性能变差。因此,希望既抑制主机I/O请求的处理性能的下降,又使碎片整理处理高速化。
本发明的一个实施方式是一种存储系统,该存储系统具有:介质区域,其由一个或者多个存储设备提供,并保存内容的数据;以及控制器,其包含临时保存所述介质区域的数据的存储区域。所述控制器取得包含于内容并保存在所述介质区域中的参照请求数据块的参照请求。所述控制器决定包含所述参照请求数据块在内的在所述内容内连续的多个数据块在所述介质区域上的地址中的间隙数。所述控制器基于所述间隙数,判断基于所述多个数据块的碎片整理是否有效。所述控制器在判断为所述碎片整理有效的情况下,将从所述介质区域读出到所述存储区域的所述多个数据块写出至所述介质区域的连续地址区域。
发明效果
若采用本发明的一个实施方式,则既能够抑制主机I/O请求的处理性能下降,又能够使碎片整理处理高速化。
附图说明
图1是说明实施例1的概要的图。
图2A是示出文件存储系统的结构例的图。
图2B是示出文件存储系统的结构例的图。
图3是示出参照请求时碎片整理判断表的结构例的图。
图4是示出更新请求时碎片整理判断表的结构例的图。
图5是示出主机参照请求时的碎片整理方法的概要的图。
图6是主机参照请求时碎片整理处理的流程图。
图7是示出主机更新请求时的碎片整理方法的概要的图。
图8是主机更新请求时碎片整理处理的流程图。
图9是脱机(offline)碎片整理处理的流程图。
图10是示出实施例2的概要的图。
图11是页面回收处理的流程图。
图12是示出实施例3的概要的图。
图13是释放块回收处理的流程图。
具体实施方式
参照附图来说明几个实施例。此外,以下说明的实施例并不限定权利要求的范围的发明,另外用实施例说明的各要素及其组合的全部并不一定是发明的解决方式所必须的。
此外,在以下的说明中,有时用“XX表”的表达方式来说明各种信息,但是各种信息也可以用除了表以外的数据结构来表达。为了表示不取决于数据结构,可以将“XX表”称为“XX信息”。
另外,在以下的说明中,有时以程序作为主语来说明处理,但通过利用硬件本身或者硬件所具有的处理器(例如,MP(Micro Processor,微处理器))来执行程序,来一边适当地使用存储资源(例如存储器)和/或通信接口设备(例如端口)一边进行决定了的处理,因此,也可以以硬件作为处理的主语。另外,程序来源也可以是例如程序分发服务器或者存储介质。
以下,披露了一种文件存储系统的碎片整理技术。文件存储系统具有一个以上存储设备。以下,将一个以上存储设备所赋予的存储区域称为介质区域。
文件存储系统中的介质区域的输入输出性能受限于对所保存的数据进行随机以及循序存取的模式。向介质区域的访问使用在介质区域中定义的地址。在介质区域中定义的地址例如是逻辑块地址(LBA)。
随机存取的性能比循序存取的性能低。因此,循序存取请求以尽量不进行随机存取的方式配置数据,这样有助于提高存储系统的输入输出性能。
文件存储系统按照内容来管理数据,内容是逻辑地归纳起来的数据。作为内容,除了通常的文件以外,还有如存档文件、备份文件、虚拟计算机的卷文件这样的将通常的文件汇集而成的文件。内容也可以是文件的一部分。
同样地,数据的存取也是按照内容而发生的。因此,构成内容的数据被要求保存于在介质区域中连续的地址区域。但是,根据数据的更新请求(覆写、追加、删除),内容的数据的介质区域中的保存地址成为随机的,输入输出性能变差。
作为对策而应用碎片整理。但是,碎片整理需要从介质区域读出(随机存取)全部内容并将该数据写入介质区域的新的地址区域,负荷很大,降低系统的性能。
以下说明的文件存储系统执行联机(online)碎片整理。联机碎片整理是来自主机的参照请求(主机参照请求)和/或更新请求(主机更新请求)的处理的碎片整理。
在一个例子中,文件存储系统在有主机参照请求时,判断利用被参照请求的数据和在内容内与被参照请求的数据连续的数据进行的碎片整理是否有效。文件存储系统基于包含参照请求数据在内的内容内的连续数据在介质区域中所具有的间隙(gap)数,来判断碎片整理是否有效。
此处,根据偏移量来表示内容内的数据位置。在本次披露的发明中,有时将在内容内的数据位置称为逻辑位置。同样地,有时将在内容内偏移量连续的数据称为逻辑上连续的数据。与此相对,有时将在介质区域中保存于连续地址的数据称为在物理上连续的数据。如上述,介质区域中的地址例如是用LBA表示的。
内容内的连续数据分成多个数据块地保存于介质区域。文件存储系统基于该多个数据块(块区域)的地址间的间隙数,来判断碎片整理是否有效。在地址是非连续的情况下,它们之间存在间隙。以下,将介质区域中的数据保存单位区域简称为块。
在判断为碎片整理有效的情况下,文件存储系统将上述多个数据块写出至介质区域中的连续地址区域(由连续块组成的区域)。省略基于间隙数判断为不需要的碎片整理,由此减少因碎片整理导致负荷的增大。
在一个例子中,文件存储系统仅对预先指定的内容执行有主机参照请求时的联机碎片整理。文件存储系统在有针对内容的主机更新请求时,判断是否需要对该内容进行碎片整理。对判断为需要进行碎片整理的内容赋予表示需要进行碎片整理的标志。
文件存储系统在有主机参照请求时,根据上述标志,判断对象内容是否需要进行联机碎片整理。仅在标志表示需要进行联机碎片整理的情况下,文件存储系统才执行联机碎片整理。通过这样,能够进一步地省略不需要的碎片整理。
在一个例子中,文件存储系统在主机更新请求下,执行联机碎片整理。在高速缓存有由主机发出更新请求的数据和在内容内连续的数据时,文件存储系统将包含更新请求数据在内的连续数据汇总并写出至介质区域中的连续地址区域。
在一个例子中,文件存储系统与联机碎片整理一起执行脱机碎片整理。脱机碎片整理是与主机请求不同步的碎片整理。文件存储系统在脱机碎片整理中选择利用联机碎片整理未完成碎片整理的内容,应用碎片整理。由于联机碎片整理使内容内随机的数据配置减少,所以脱机碎片整理的处理负荷减轻,能够抑制系统输入输出性能的下降。
实施例1
图1示意地示出本实施例的计算机系统以及文件存储系统的处理的概要。计算机系统具有文件存储系统100、多个主机计算机14和管理计算机15。它们通过网络2连接。
主机计算机14是存取文件存储系统100的资源并执行业务的计算机。网络2是主机计算机14与文件存储系统100之间的用户数据以及管理计算机15与其他装置之间的管理数据的通信用网络,在一个例子中是IP网络。
在图1中,文件系统由文件存储系统100构成。文件存储系统100包含文件系统,并接受主机计算机14对所保持的文件的访问。
文件存储系统100的存储区域103保存有碎片整理控制程序300。碎片整理控制程序300含有联机碎片整理处理模块301和脱机碎片整理处理模块302。
联机碎片整理处理模块301在从主机计算机14接收到参照请求时,参照该参照请求的参照目的地内容的内容管理表200,检查碎片整理执行标志202是否被设定为有效。内容管理表200保持有关于一个内容的管理信息。
在碎片整理执行标志202被设定为有效的情况下,联机碎片整理处理模块301执行联机碎片整理。通过这样,能够避免用于无用的联机碎片整理进行处理。具体地,联机碎片整理处理模块301在从介质区域104读出参照请求数据的基础上,还从介质区域104读出在内容内与参照请求数据连续的数据(逻辑上连续的数据)。从介质区域104读出的数据块数K是2以上的整数。K是固定值或者可变值。
在图1的例子中,参照数据是内容B中的B1,从介质区域104读出的数据块数K是3。内容B由数据块B0、B1、B2、B3构成,在内容B中数据块B0、B1、B2、B3按照该顺序连续地配置。即,数据块B0、B1、B2、B3的偏移量是连续的。介质区域104保存内容B的数据,用粗线表示最新数据的数据块。
对应于针对数据B1的参照请求,从介质区域104读出块141、143、145的数据。块141、143、145分别保存有数据块B0、B1、B2。内容中的逻辑上连续的数据的选择方法取决于设计。例如,联机碎片整理处理模块301可以仅选择参照数据之前的数据,也可以仅选择参照数据之后的数据,也可以选择前后双方的数据。
联机碎片整理处理模块301对读出了数据的数据块的介质区域104中的地址(物理的数据配置)的间隙数进行计数。在图1的例子中,联机碎片整理处理模块301能够参照将内容内偏移量与介质区域内地址相关联起来的地址映射表260,根据内容内的偏移量来识别介质区域104中的地址。联机碎片整理处理模块301参照参照请求时碎片整理判断表220来判断在该计数中碎片整理是否有效。
若判断为碎片整理有效,则联机碎片整理处理模块301将数据写出至介质区域104的连续地址区域(物理上的连续块)。通过这样,利用物理上连续的数据块构成在逻辑上连续的数据。
在图1的例子中,块141、143、145(数据块B0、B1、B2)的间隙数是2。在块141与块143之间存在间隙142,在块143与块145之间存在间隙144。
在本例中,参照请求时碎片整理判断表220示出碎片整理有效。联机碎片整理处理模块301将数据B0、B1、B3写出至在介质区域104中连续的块146~147。内容B的间隙数从2减少到1。
间隙数的计数以及对碎片整理是否有效的判断也可以在从介质区域104读出数据之前。在判断出了碎片整理无效的情况下,联机碎片整理处理模块301可以从介质区域104仅读出参照数据,而不读出其他连续周围数据。
以下,说明与来自主机计算机14的更新请求对应的联机碎片整理。联机碎片整理处理模块301在接收到更新请求时,在高速缓存有与更新数据在逻辑上连续的数据的情况下,将更新数据与高速缓存数据一起写出至物理上连续的区域。
在图1的例子中示出,主机更新请求对于内容D,覆写更新数据D1*。内容D由数据块D0、D1、D2、D3构成,在内容B中数据块D0、D1、D2、D3按照该顺序连续地配置。主机更新请求指示利用数据块D1*覆写数据块D1。介质区域104保存内容D的数据,用粗线表示最新数据的数据块。
联机碎片整理处理模块301在接收到利用数据块D1*的主机更新请求时,参照高速缓存管理表240,判断是否高速缓存有与数据块D1*在逻辑上连续的数据。在图1的例子中,高速缓存有与数据块D1*在逻辑上连续的数据块D0、D2。脱机碎片整理处理模块302将数据块D0、D1*、D2写出至介质区域104的连续的块171~173。内容D的间隙数从2减少到1。
联机碎片整理处理模块301还基于更新请求时碎片整理判断表230来判断更新后的内容D是否有碎片,是否需要进行碎片整理。在判断出了需要进行碎片整理的情况下,脱机碎片整理处理模块302在内容D的内容管理表200中将碎片整理执行标志202设定为有效。
以下,说明脱机碎片整理。脱机碎片整理处理模块302参照脱机碎片整理管理表210,调查高速执行标志212是否被设定为有效。在高速执行标志212未被设定为有效的情况下,脱机碎片整理处理模块302针对介质区域104内的全部内容来执行脱机碎片整理。
在设定有高速执行标志212的情况下,脱机碎片整理处理模块302选择在内容管理表200中设定有碎片整理执行标志202的内容,仅针对选择出的内容来执行脱机碎片整理。
采用本结构,由于在联机碎片整理处理中连续地改写读出的数据的物理配置,所以能够提高读出性能。进一步地,利用联机碎片整理使物理上的数据配置为连续的数据增加,由此脱机碎片整理处理的负荷减轻。
基于数据块的间隙数来判断有无执行联机碎片整理,由此省略碎片整理的效果小或者碎片整理没效果的联机碎片整理处理,能够减少联机碎片整理处理对主机I/O请求的处理性能的影响。
图2A示出本实施例的文件存储装置10的结构例。文件存储系统100由文件存储装置10构成。文件存储装置10经由网络2与管理计算机15、多个主机计算机14连接。网络2可以是例如WAN(Wide Area Network,广域网)、LAN(Local Area Network,局域网)、互联网、公共线路或者专用线路等。
文件存储装置10具有处理器102、存储器107、存储设备106以及网络接口105。它们经由系统总线108连接。
处理器102按照存储器107中保存的程序,使用存储区域103中保存的信息来工作,由此作为文件存储装置10的各种各样的功能部来工作。例如,处理器102作为碎片整理控制部以及空白块管理部来工作。
存储器107保存有程序组350以及管理信息250。程序组350含有碎片整理控制程序300、空白块管理程序310。管理信息250包含程序组350所使用的信息。管理信息250包含内容管理表200、脱机碎片整理管理表210、参照请求时碎片整理判断表220、更新请求时碎片整理判断表230、高速缓存管理表240和地址映射表260。
进一步地,存储器107除了用于保存用于使文件存储装置10工作的信息以外,还用作临时保存主机计算机14的用户数据的高速缓存器,还用作处理器102的工作存储器。存储器107提供图1中的存储区域103。使用DRAM等易失性半导体存储器或者快闪存储器等非易失性半导体存储器作为存储器107,与介质区域104相比能够进行更高速的数据存取。
为了便于说明,程序组350以及管理信息250被示出在存储区域103内,但是在通常情况下,程序组350以及管理信息250是从存储设备106加载的。
存储设备106除了保存为了实现规定的功能所需要的程序、管理信息和元数据以外,在本例中还保存主机计算机14的用户数据。存储设备106提供介质区域104。例如,存储设备106也可以是具有非易失性的非临时性存储介质的存储设备,并经由网络连接。
如上述,碎片整理控制程序300含有在有主机I/O请求时执行碎片整理的联机碎片整理处理模块301和与主机I/O请求不同步地执行碎片整理的脱机碎片整理处理模块302。
空白块管理程序310管理作为保存用户数据的介质区域104(存储设备106)的数据保存单位的块的使用/未使用情况。空白块管理程序310保持表示空白块的介质区域内地址的空白块管理信息,与介质区域104中的数据更新对应地更新该管理信息。
碎片整理控制程序300与空白块管理程序310协作,来决定从介质区域读出的内容数据的物理连续区域的写出目的地。空白块管理程序310在应用碎片整理后,将保存有内容数据的块作为空白块来进行管理。
图2B示出文件存储系统100的另一结构例。在本例中,文件存储系统100由文件服务器11和块存储装置12构成。图2A的结构中的除了存储设备106以外的结构要素包含于文件服务器11中。块存储装置12与存储设备106对应。
网络4是将文件服务器11与块存储装置12相互连接起来的网络,例如是SAN(Storage Area Network,存储区域网)。文件服务器11经由存储接口119与网络4连接,块存储装置12经由存储接口129与网络4连接。文件服务器11以及块存储装置12为了更新以及参照用户数据,而经由网络4发送接收命令以及用户数据。
块存储装置12向文件服务器11提供用户数据的保存目的地和存取以块为单位的数据的存取I/F。块存储装置12搭载用于与文件服务器11通信的存储I/F129、执行在存储器123中保存的程序的处理器122、保存数据的存储设备124以及保存程序或者数据的存储器123,通过内部的通信线路(例如总线)128来连接它们。
文件服务器11具有处理器112、存储器113、网络接口115以及存储接口119,通过系统总线118来连接它们。处理器112、存储器113、网络接口115与文件存储装置10中的对应要素是同样的。存储器113保存有程序组350以及管理信息250。
如图1所示,文件存储系统100具有内容管理表200。内容管理表200是按照每个内容而创建的。内容管理表200在未图示的以往的管理信息的基础上,还包含碎片整理执行标志202。以往的管理信息是例如构成inode的信息,并含有与内容的长度、内容所有用户、内容的更新等相关的信息。
在内容需要进行碎片整理的情况下,碎片整理执行标志202被设定为有效,在内容不需要进行碎片整理的情况下,碎片整理执行标志202被设定为无效。在构成内容的数据保存于在介质区域104中连续的地址区域的情况下,碎片整理执行标志202被设定为无效。
在本实施例中,联机碎片整理处理模块301在主机更新请求的处理中,基于更新请求时碎片整理判断表230,判断该内容是否需要进行碎片整理。在判断为需要进行碎片整理的情况下,联机碎片整理处理模块301将该内容的碎片整理执行标志202设定为有效。
进一步地,在根据主机参照请求时碎片整理判断表220的判断结果或者脱机碎片整理的应用,判断出构成内容的数据配置于物理上连续的区域的情况下,联机碎片整理处理模块301将碎片整理执行标志202设定为无效。
脱机碎片整理管理表210由高速执行标志212构成。高速执行标志212是由管理计算机15设定的值。在高速执行标志212有效时,将应用脱机碎片整理的内容限制为碎片整理执行标志202有效的内容,来执行高速的碎片整理。
在高速执行标志212无效时,对全部的内容应用碎片整理,对全部的内容实现最佳的数据配置。系统管理者经由管理计算机15设定这些控制。
图3示出主机参照请求时碎片整理判断表220的结构例。主机参照请求时碎片整理判断表220包括:列222,示出从介质区域读出的逻辑上连续的K个数据块在内容内所占的范围的种类;列223,示出K个数据块的间隙数;以及列224,示出碎片整理执行判断结果。
像这样,主机参照请求时碎片整理判断表220示出K个数据块在内容内所占的范围的种类以及K个数据块的间隙数的组合与碎片整理执行判断结果之间的关系。
在内容内所占的范围的种类有内容整体、包含内容的首部数据在内的内容的一部分、包含内容的尾部数据在内的内容的一部分、仅由中间数据组成的内容的一部分。仅由中间数据组成的内容的一部分是由除了首部数据以及尾部数据以外的数据构成的。
根据在内容内所占的范围与间隙数的关系来进行碎片整理执行判断,由此能够针对碎片整理效果进行更加适当的判断。在图3的例子中,在根据在内容内所占的范围与间隙数的关系判断出有没有碎片整理效果的可能性的情况下,碎片整理判断结果无效。此外,在参照请求时的联机碎片整理执行判断结果也可以不取决于在内容内数据块所占的范围,而是仅由间隙数来决定。
图4示出更新请求时碎片整理判断表230的结构例。更新请求时碎片整理判断表230包含:列232,示出主机更新请求的种类;列233,示出介质区域104内可否进行连续块分配;列234,示出是否需要进行碎片整理的判断结果。
此处,说明如下的文件存储系统中发生碎片整理的判断方法,该文件存储系统搭载了采用Log-structured File System(LFS,日志结构文件系统)的文件系统。此外,本实施例的碎片整理发生的判断方法并不限定于LFS,也能够适当变更地应用于搭载了其他文件系统的文件存储系统。
LFS追踪内容的用户数据以及管理信息这两者的更新,并将更新数据记录于文件系统的日志部分。将记录的更新时间点称为检查点(check point)。LFS将从以前的检查点中选择出的一部分或者全部的检查点的更新数据保存为快照(snapshot),由此能够自动且连续地生成文件系统的快照。
LFS在更新文件时,不使更新数据覆写与文件的更新位置对应的介质区域104上的块的数据,而是将更新数据写入到介质区域104上的其他块。通过这样,能够恢复任意检查点的数据。在存储区域103上,利用更新数据覆写与文件的更新位置对应的块的数据。
通过LFS的上述工作,在主机更新请求是已有内容内的数据的覆写处理时,在该内容中发生碎片化,需要进行碎片整理。在主机更新请求是新建内容的追加请求或者向已有内容追加数据的请求时,在无法将包含已有数据和新建追加数据在内的全部数据都保存到介质区域104内的连续块时,就会发生碎片化,需要进行碎片整理。在能够将全部的数据都保存到介质区域104内的连续块的情况下,不需要进行碎片整理。
最后,在主机更新请求是数据的删除请求时,不发生碎片整理。根据这些判断结果,来判断是否将内容管理表200的碎片整理执行标志202设置为有效。
此外,在向同一个块覆写更新数据的文件系统中,在主机更新请求是数据的删除请求时发生碎片整理,在是数据的覆写处理时不发生碎片整理。针对数据的追加也与LFS同样。
图5示出在有主机参照请求时的碎片整理方法的概要。内容C(400)由数据块C0、C1、C2、C3、C4、C5、C6、C6,C7构成。内容C的内容管理表410的碎片整理执行标志412有效。数据块C0、C1、C2、C3、C4、C5、C6、C6、C7被保存于介质区域104。在图5中,介质区域104的粗线的数据块表示内容C的最新的数据。
在图5的例子中,发布了数据块C1的参照请求。例如,在数据块C1未高速缓存于存储区域103中的情况下,需要从介质区域104读出数据块C1。高速缓存管理表240示出是否高速缓存有数据块C1。
由于碎片整理执行标志412有效,所以联机碎片整理处理模块301从介质区域104的块401~403读出包含参照请求数据块C1在内的逻辑上连续的数据块C0、C1、C2。此处,选择数据块C1的前后的数据块C0、C2来作为在内容内与数据块C1逻辑连续的周围数据块。联机碎片整理处理模块301使用OS所提供的功能,从介质区域104读出数据。
与此不同的是,也可以仅选择数据块C1之前的数据块或者仅选择数据块C1之后的连续数据块。数据块C1之前的数据块数与之后的数据块数也可以不同。另外,在本例中,选择的数据块数K是3,但是也可以是除此以外的数值。
以下,联机碎片整理处理模块301对介质区域104中的数据块C0、C1、C2(块401~403)的间隙数进行计数。联机碎片整理处理模块301能够参照地址映射表260,获知与数据块C0、C1、C2在内容内的偏移量对应的介质区域内地址。联机碎片整理处理模块301根据数据块C0、C1、C2的介质区域内地址来对间隙数进行计数。此外,间隙数的计数也可以在读出数据块C0、C1、C2之前执行。
在参照图5的例子时,在介质区域104中,在数据块C0(块401)与数据块C1(块402)之间存在间隙404,在数据块C1(块402)与数据块C2(块403)之间存在间隙405。
因此,介质区域104中的数据块C0(块401)、数据块C1(块402)与数据块C2(块403)的间隙数是2。
联机碎片整理处理模块301参照主机参照请求时碎片整理判断表220,来判断是否使用数据块C0、C1、C2进行碎片整理。联机碎片整理处理模块301根据数据块C0、C1、C2在内容C(400)中所占的范围和它们的间隙数,来决定有无执行碎片整理。
数据块C0是内容C(400)的首部数据。因此,数据块C0、C1、C2包含内容C(400)的首部数据,是内容C(400)的一部分。此外,通过数据块的偏移量来表示数据块在内容内的位置。
主机参照请求时碎片整理判断表220示出,在数据块在内容内所占的范围是“包含内容的首部数据的内容的一部分”且该数据块的间隙数是“2”的情况下,碎片整理执行判断是“有效”。因此,联机碎片整理处理模块301判断为将数据块C0、C1、C2写出至物理上连续的区域,由此进行碎片整理。
联机碎片整理处理模块301在高速缓存管理表240中,将这些数据块(的保存页面)的高速缓存状态设定为脏(dirty)。此外,取代表示脏状态的高速缓存状态或在该表示脏状态的高速缓存状态智商,还可以准备表示碎片整理用的处理的特别的写出专用位(bit)。
然后,将数据块C0、C1、C2写出至介质区域104的文件系统程序在写出时,从空白块管理程序310取得写出目的地新建地址区域,将数据块C0、C1、C2写出至介质区域104内的新建地址区域。
新建地址区域是连续的空白块,写出至介质区域104的文件系统程序能够从空白块管理程序310取得空白块的信息。在图5的例子中,数据块C0、C1、C2分别被写出至连续的块401*、402*、403*。
此外,取代写出至介质区域104的文件系统程序,联机碎片整理处理模块301也可以在写出时,从空白块管理程序310取得写出目的地地址,并将该写出目的地地址设定于高速缓存管理表240。此时,写出至介质区域104的文件系统程序将数据块写出至在高速缓存管理表240中设定的写出目的地地址。
空白块管理程序310取得脱机碎片整理处理模块302的处理结果,以块401、402、403作为空白块,并以块401*、402*、403*作为非空白区域来进行管理。
以下,说明针对数据块C5的参照请求的处理。与数据块C1同样地,在数据块C5未高速缓存于存储区域103的情况下,需要从介质区域104读出数据块C5。
联机碎片整理处理模块301除了参照数据块C5以外,还从介质区域104读出参照数据块C5的周围连续数据块。本例是从介质区域104读出参照数据块C5的前后各一个数据块C4、C6。
数据块C4、C5、C6在介质区域104中保存有块406~408。在介质区域104中,在数据块C4(块406)与数据块C5(块407)之间存在间隙409。
因此,在介质区域104中的数据块C4(块406)、数据块C5(块407)与数据块C6(块408)的间隙数是1。进一步地,数据块C4、C5、C6是内容C(400)的一部分,并仅由中间数据组成。
主机参照请求时碎片整理判断表220示出,在数据块在内容内所占的范围是“仅由中间数据组成的内容的一部分”且该数据块的间隙数是“1”的情况下,碎片整理执行判断是“无效”。因此,联机碎片整理处理模块301不必将高速缓存管理表240中的数据块C4、C5、C6的高速缓存状态设定为脏就结束处理。数据块C4、C5、C6未被写出至介质区域104。
此外,间隙数的计数也可以在读出数据块C4、C5、C6之前执行。如本例这样,在判断为不需要进行碎片整理的情况下,也可以不读出参照数据的周围连续数据。
如以上所述,联机碎片整理处理模块301仅在碎片整理有效时才执行碎片整理,构成内容的数据在介质区域104中是连续的。
图6是在有主机参照请求时碎片整理处理的流程图。未图示的文件系统程序接受来自主机计算机14的参照请求或者因系统内部的处理而产生的参照请求(S101)。请求处理模块参照高速缓存管理表240,来判断是否需要从介质区域104读出参照数据(S102)。
在存储区域103上高速缓存有数据,不需要从介质区域104读出参照数据的情况(S102:否)下,请求处理模块向请求源应答存储区域103上的高速缓存数据(S110)。省略高速缓存命中时的联机碎片整理,由此减少联机碎片整理的负荷。
在需要从介质区域104读出参照数据的情况下(S102:是),联机碎片整理处理模块301参照参照目的地内容的内容管理表200,来判断碎片整理执行标志202是否有效(S103)。
在碎片整理执行标志202无效的情况下(S103:否),联机碎片整理处理模块301使用OS内的介质区域I/O模块,从介质区域104读出参照请求数据,并将该参照请求数据保存于存储区域103(S105)。请求处理模块向请求源应答被写出至存储区域103的参照数据(S110)。
在碎片整理执行标志202有效的情况下(S103:是),联机碎片整理处理模块301根据地址映射表260取得读出的K个数据块在介质区域104中的地址信息(物理的位置关系的信息)(S104)。
联机碎片整理处理模块301判断是否应该执行K个数据块的联机碎片整理(S106)。联机碎片整理处理模块301确定出K个数据块在内容内所占的位置,进一步地,对该K个数据块的间隙数进行计数。联机碎片整理处理模块301根据K个数据块在内容内的偏移量值以及介质区域104内地址,来确定它们在内容内所占的位置以及间隙数。此外,联机碎片整理处理模块301也可以在读出了K个数据块之后进行判断S106。
联机碎片整理处理模块301使用介质区域I/O模块,从介质区域104读出包含请求数据块在内的的逻辑上连续的K个数据块(S111)。
联机碎片整理处理模块301参照主机参照请求时碎片整理判断表220,取得在上述内容内所占的位置以及间隙数的组所对应的碎片整理执行判断结果列204的值。在碎片整理执行判断结果是无效的情况下(S106:否),联机碎片整理处理模块301将从介质区域104读出的参照数据返回至主机计算机14,并结束处理。
在碎片整理执行判断结果是有效的情况下(S106:是),联机碎片整理处理模块301执行联机碎片整理。具体地,联机碎片整理处理模块301以存储区域103的K个块的数据在接着这些数据之后写出时进行物理上连续的块写出的方式进行处理。
例如,联机碎片整理处理模块301将K个块数据的高速缓存状态设定为脏。针对这些脏页面,介质区域I/O模块根据空白块管理程序310来取得到新建地址区域,将脏状态的K个块数据写出至指定的连续块。
K个块数据的写出目的地也可以是由联机碎片整理处理模块301决定的。取代表示脏状态的高速缓存状态或在表示脏状态的高速缓存状态的基础上,还可以准备表示碎片整理用的处理的特别的写出专用位(bit)。也可以对写出至连续块的数据块的数量定义最大值m。在K比最大值m大的情况下,将从K个数据块中选择出的m个连续数据块写出至连续地址。针对块数据的写出,与其他流程图是同样的。
联机碎片整理处理模块301更新地址映射表260。进一步地,联机碎片整理处理模块301参照地址映射表260,判断在上述碎片整理后,内容整体(内容的全部数据块)是否被配置于介质区域104的连续地址块(物理连续块)(S108)。
在内容被配置于物理连续块的情况下(S108:是),联机碎片整理处理模块301将该内容的碎片整理执行标志202设定为无效(S109),将读出到存储区域103上的参照数据返回至主机计算机14(S110),并结束处理。在内容未被配置于物理连续块的情况下(S108:否),跳过步骤S109。
图7示出主机更新请求时的碎片整理方法的概要。此处,说明覆写请求作为主机更新请求的例子和新建内容追加请求作为主机更新请求的例子。覆写请求的对象内容是内容D(420)。内容D(420)由数据块D0、D1、D2、D3构成,并保存于介质区域104。
主机更新请求是请求用数据块D1*覆写数据块D1。存储区域103保存从主机计算机14接收到的数据块D1*。文件系统程序在高速缓存管理表240中将数据块D1(的保存页面)的高速缓存状态设置为脏。
联机碎片整理处理模块301为了判断是否需要进行碎片整理,而参照更新请求时碎片整理判断表230。此处的主机更新请求是覆写请求,更新请求时碎片整理判断表230示出需要进行碎片整理。联机碎片整理处理模块301将内容D管理表430的碎片整理执行标志332设置为有效。
在作为数据块D1*的逻辑上连续的周围数据的数据块D0和数据块D2已经被高速缓存于存储区域103上的情况下,联机碎片整理处理模块301以使数据块D0、D1*、D2在下一次对这些数据块进行写出时写出至连续块的方式进行处理。
例如,联机碎片整理处理模块301在高速缓存管理表240中将数据块D0、D1*、D2的(保存页面的)高速缓存状态设定为脏。介质区域写出程序从空白块管理程序310取得空白连续块的地址来作为写出目的地地址。介质区域I/O模块将数据块D0、D1*、D2写出至指定的连续块。
取代介质区域I/O模块,联机碎片整理处理模块301也可以从空白块管理程序310取得空白连续块的地址。取代赋予数据块D0、D2的脏状态或者在赋予数据块D0、D2的脏状态的基础上,还可以准备表示碎片整理用的处理的特别的写出专用位(bit)。
在作为数据块D1*的逻辑上连续的周围数据的数据块D0或者数据块D2未被高速缓存于存储区域103上的情况下,不必从介质区域104读出该数据块。仅将已经被高速缓存的连续周围数据块与数据块D1*一起写出。
在图7的例子中,在主机更新请求之前,块421、422、423、424保存有数据块D0、D1、D2、D3。在碎片整理之后,块421*、422*、423*、424保存有数据块D0、D1*、D2、D3。空白块管理程序310在碎片整理之后,将块421、422、423作为空白块来进行管理。
以下,使用内容E440来说明主机更新请求为追加请求的例子的概要。内容E440由数据块E0、E1、E2构成。在新建追加内容E的情况下,将上述数据块E0、E1、E2分别高速缓存于存储区域103上,分别设置为脏。
主机更新请求是内容新建追加请求,逻辑上连续的周围数据不在文件存储系统100内。介质区域I/O模块将上述数据块E0、E1、E2分别写出至空白块管理程序310所分配的物理上连续的区域。
在未写到介质区域104中连续的区域的情况下,联机碎片整理处理模块301将内容E管理表450的碎片整理执行标志设定为有效。在图7的例子中,数据块E0、E1、E2被写出至物理上连续的区域,碎片整理执行标志452仍为无效。
图8示出主机更新请求时碎片整理处理的流程图。请求处理模块接受因来自主机计算机14的更新请求或者系统内部的处理而产生的更新请求(S201)。请求处理模块将更新数据高速缓存于存储区域103,并在高速缓存管理表240中将这些数据块(的保存页面)的高速缓存状态设定为脏(S202)。
联机碎片整理处理模块301参照更新请求时碎片整理判断表230,根据主机更新请求的种类来判断是否需要进行碎片整理(S203)。在判断为不需要进行碎片整理的情况下(S203:否),联机碎片整理处理模块301进入步骤S205。
在判断为需要进行碎片整理的情况下(S203:是),联机碎片整理处理模块301将该内容的内容管理表200的碎片整理执行标志202设定为有效(S204)。
联机碎片整理处理模块301参照高速缓存管理表240,检查在存储区域103上是否存在与更新请求数据块在逻辑上连续的已有数据块(更新请求数据以外的数据块)(S205)。
在存储区域103上不存在逻辑上连续的周围数据的情况下(S205:否),跳过步骤S207。在存储区域103上存在逻辑上连续的周围数据的情况下(S205:是),联机碎片整理处理模块301在高速缓存管理表240中将周围数据(的保存页面)的高速缓存状态设定为脏(S207)。
介质区域I/O模块将脏数据写出至空白块管理程序310所分配的介质区域104内的空白块(S208)。如上所述,由联机碎片整理处理模块301以及介质区域I/O模块中的任一者来取得更新请求数据以及周围数据的写出目的地空白块的地址信息都可以。
联机碎片整理处理模块301参照映射表270,来判断是否将包含主机更新请求数据在内的写出至介质区域104的数据分配给了连续的块(连续物理区域)(S209)。
在数据被分配给连续的块的情况下(S209:否),联机碎片整理处理模块301将内容管理表200的碎片整理执行标志202设定为有效(S210),并结束处理。
在数据被分配给连续的块的情况下(S209:是),联机碎片整理处理模块301参照映射表270,来判断内容整体是否被分配给连续的块(S211)。
在内容整体被分配给连续的块的情况下(S211:是),联机碎片整理处理模块301将碎片整理执行标志202设定为无效(S212),并结束处理。在内容整体未被分配给连续的块的情况下(S211:否),跳过步骤S212。
图9示出脱机碎片整理处理的流程图。脱机碎片整理处理模块302根据内容管理表200,来生成在介质区域104中保存的内容的列表(S301)。脱机碎片整理处理模块302选择内容(S302),判断脱机碎片整理管理表210的高速执行标志212是否被设定为有效(S303)。高速执行标志212可以由管理者通过管理计算机15来设定。
在高速执行标志212有效的情况下(S303:是),脱机碎片整理处理模块302判断内容管理表200的碎片整理执行标志202是否有效(S304)。在高速执行标志212无效的情况下(S303:否),跳过步骤S304。
在碎片整理执行标志202无效的情况下(S304:否),脱机碎片整理处理模块302进入步骤S308。在碎片整理执行标志202有效的情况下,脱机碎片整理处理模块302执行该内容的碎片整理(S305)。
脱机碎片整理处理模块302在进行碎片整理后,参照映射表270来判断是否已将内容整体配置到了连续的块(S306)。在内容整体被配置到连续的块的情况下(S306:是),脱机碎片整理处理模块302将该内容的碎片整理执行标志202设定为无效(S307)。在内容整体未被配置到连续的块的情况下(S306:否),跳过步骤S307。
在步骤S308中,脱机碎片整理处理模块302判断是否存在下一个内容。在存在下一个内容的情况下(S308:是),脱机碎片整理处理模块302返回到步骤S202。在不存在下一个内容的情况下(S308:否),脱机碎片整理处理模块302结束脱机碎片整理。
此外,存储系统100也可以不执行脱机碎片整理和/或更新请求时的联机碎片整理。存储系统100还可以不参照碎片整理执行标志地执行整个内容的脱机碎片整理。存储系统100也可以在参照请求的高速缓存命中(hit)时执行联机碎片整理。还可以不使用碎片整理执行标志。
实施例2
本实施例说明与高速缓存扩展装置协作的碎片整理方法。如图10所示,相对于文件存储装置10以及服务器11连接高速缓存扩展装置18,能够扩展存储区域103。利用高速缓存扩展装置18所赋予的高速缓存扩展区域可以由以快闪存储器为代表的Non VolatileMemory(NVM,非易失性存储器)等存储介质构成。另外,高速缓存扩展区域可以当作临时保存存储区域的数据的交换区域来使用,也可以直接当作存储区域来使用。
在将高速缓存扩展区域看作与通常的存储区域同样的情况下,由于与实施例1相比没有变更部分,故省略说明。以下,针对高速缓存扩展区域被当作二次高速缓存器区域或者交换(swap)区域使用的情况进行说明。
在图10中,内容B由数据块B0、B1、B2、B3构成。数据块B0、B1、B2、B3在介质区域104中保存于非连续的块。主机参照请求请求参照数据块B1。
联机碎片整理处理模块301将数据块B0和B2与数据块B1一起读出。由于存储区域103是有限的,所以无法将全部的数据都保持在存储器上。此时,若存储器吃紧(不足)则OS的页面回收处理模块动作。例如,在逻辑上连续的数据块B0、B1、B2中的某个成为恢复对象的情况下,以保持它们的连续性不变地在高速缓存扩展装置18内连续的方式配置数据块B0、B1、B2。通过这样,从高速缓存扩展装置读出数据块B0、B1、B2的性能上升。
另外,在执行碎片整理时,碎片整理控制程序300不从介质区域104读出在高速缓存扩展区域中保存的数据,而将该数据写出至介质区域104内的连续地址。通过这样,不需要从介质区域104读出的I/O,能够提高碎片整理性能。
以与存储区域103中保存的数据同样的方式处理高速缓存扩展区域中保存的数据。在由OS管理的存储器管理信息中仅记录数据的保存目的地。因此,与在实施例1中说明的联机碎片整理处理以及脱机碎片整理处理没有变化。
此处,针对页面回收处理进行说明。页面是存储区域103中的数据保存单位。图11示出本实施例中的存储区域103上的页面回收处理。页面回收处理模块参照对页面的参照频率进行管理的存储器管理信息,选择参照频率低的页面(S401)。页面回收处理模块判断在选择页面所指向的内容管理表200中碎片整理执行标志202是否有效(S402)。
在碎片整理执行标志202无效的情况下(S402:否),页面回收处理部进行选择页面的回收处理(S403)。在碎片整理执行标志202有效的情况下(S402:是),页面回收处理部判断在存储器中是否存在选择页面周围的逻辑上连续的数据(S404)。
在不存在逻辑上连续的数据的情况下(S404:否),页面回收处理部将选择页面决定为向二次高速缓存器区域或者交换区域移动的移动对象(S405)。在存在逻辑上连续的数据的情况下(S404:是),页面回收处理部将包含选择页面在内的连续数据的页面决定为移动对象(S406)。
页面回收处理部移动移动对象页面的数据,并回收移动前的页面(S407)。页面回收处理部对存储管理信息进行变更,以使存储器管理信息被移动了的数据的参照目的地为参照页面的移动目的地(S408),然后结束处理。通过以上的处理,能够提高被移动了的页面数据的访问性能。
实施例3
为了使碎片整理处理高速化,需要向物理上连续的区域高速地写入数据。特别地,在使用快闪存储器的情况下,向曾经写入过数据的数据区域的覆写的性能很低。
在创建存储池并仅分配实际使用大小的存储设备的物理区域的情况下,通过碎片整理而被移动了数据的区域在空白块管理程序310中是空白区域,但是在未进行存储池的释放处理的情况下,在存储池中是使用区域。即,通过应用碎片整理,使存储池的使用区域增加,导致物理存储区域的使用效率变差。本实施例解决了这些问题。
以下,说明搭载了采用LFS的文件系统的文件存储系统的例子。以下说明的方法并不限定于LFS,在搭载了未采用LFS的文件系统的存储系统中,能够用于对已经没有在使用的块的释放(修整(Trim)处理)未被使用的块。
LFS自动且连续地生成文件系统的快照。LFS在更新内容时,不覆写与内容的更新位置对应的介质区域104上的块的数据,而是将更新数据写入至介质区域104上的其他块。通过这样,能够恢复以前的任意时间点的数据。在存储区域103上,与内容的更新位置对应的块的数据被覆写。将该任意时间点称为检查点(checkpoint)。
图12示出实施例3的概要。向实施例1的结构追加了维持检查点数管理表500和释放块列表510。管理者能够通过管理计算机15来设定维持检查点数管理表500中的维持检查点数502。
在维持检查点数管理表500中,维持检查点数502示出维持了从现在处理的最新的检查点起到多久以前的检查点。维持检查点数502不包含快照。一部分检查点的数据被保存为快照。能够通过管理计算机15指定被选择为快照的检查点。
维持从最新的检查点到除了快照以外的维持检查点数为止的数据。保存有更加以前的检查点的数据的块如后述那样被释放。
释放块列表510示出伴随碎片整理或者增加检查点而使在某个检查点变为了能够释放的介质区域104的块地址。在创建某个检查点时,释放块回收处理模块也可以将该释放块列表510与检查点建立链接地保存于介质区域104。在这种结构中,针对每一个检查点创建释放块列表510。
释放块回收处理模块针对每一个检查点读出释放块列表510,直到(最新检查点-维持检查点数N)的检查点为止进行包含了修整(Trim)处理等在内的释放处理。
在图11中创建存储池150。存储池150的存储区域由一个或者多个NVM等高速存储装置151的存储区域以及一个或者多个HDD等低速存储设备152的存储区域构成。
释放块回收处理模块与主机请求处理同步或者不同步地工作。释放块回收处理模块基于到维持检查点数管理表500的维持检查点数502为止被登记的释放块列表,对高速缓存扩展装置18或者存储池150中的块进行释放处理(修整(Trim)处理)。通过这样,高速缓存扩展装置18或者存储池150能够进行区域释放处理。
图13示出释放块回收处理模块的流程图。文件存储系统100保持有将检查点和块地址建立关联的未图示的检查点管理信息。释放块回收处理模块在检查点管理信息中搜索并选择最早的检查点(S501),判断选择检查点是否是(最新检查点-维持检查点数N)以前的检查点(S502)。如上述,从计数中减去快照。
在步骤S502的判断结果为否定的情况下(S502:否),释放块回收处理模块结束处理。在步骤S502的判断结果为肯定的情况下(S502:是),释放块回收处理模块读出选择检查点的释放块列表510(S503)。
空白块管理程序310将释放块列表510的释放块地址变更到空白块(S504)。释放块回收处理模块进行释放块的释放处理(剪裁处理)(S505),并返回到步骤S501。通过以上的处理,能够释放不使用的块来实现存储区域的有效利用。
以上,针对维持来自主机装置的I/O性能不变地使碎片整理处理高速化的本发明,按照实施例进行了说明,但是本发明并不限定于上述的实施例,而是包含各种各样的变形例。例如,上述的实施例为了易于理解地说明本发明而进行了详细的说明,并不限定于说明了的全部结构。另外,能够将一个实施例的结构的一部分替换成其他实施例的结构,另外,也能够将一个实施例的结构加上其他实施例的结构。另外,针对各实施例的结构的一部分,能够追加、删除、替换其他结构。
另外,上述各结构、功能、处理部等的一部分或者全部例如也可以通过利用集成电路进行设计等由硬件来实现。另外,上述各结构、功能等还可以通过由处理器对实现各个功能的程序进行解译并执行而由软件来实现。实现各功能的程序、表、文件等的信息能够容置于存储器、硬磁盘、SSD(Solid State Drive,固态硬磁盘驱动器)等记录装置,或者IC卡、SD卡等记录介质中。
Claims (12)
1.一种存储系统,其特征在于,具有:
介质区域,其由一个或者多个存储设备提供,并保存内容的数据,以及
控制器,其包括临时保存所述介质区域的数据的存储区域,
所述控制器取得包含于内容并保存在所述介质区域中的参照请求数据块的参照请求,
读取数量比所述参照请求数据块多且与所述参照请求数据块连续的数据块,
决定包含所述参照请求数据块在内的在所述内容内连续的多个数据块在所述介质区域上的地址中的间隙数,
基于所述间隙数,判断基于所述多个数据块的碎片整理是否有效,
在判断为所述碎片整理有效的情况下,将从所述介质区域读出到所述存储区域的所述多个数据块写出至所述介质区域的连续地址区域,
将所述参照请求数据块发送至所述参照请求的请求源。
2.如权利要求1所述的存储系统,其特征在于,
所述控制器在所述参照请求数据块没有高速缓存在所述存储区域中的情况下,将包含所述参照请求数据块在内的所述多个数据块从所述介质区域读出到所述存储区域,
基于所述读出的多个数据块的间隙数,判断基于所述多个数据块的碎片整理是否有效,
在所述参照请求数据块高速缓存在所述存储区域中的情况下,不从所述介质区域读出所述多个数据块,返回被高速缓存的所述参照请求数据块。
3.如权利要求1所述的存储系统,其特征在于,
所述控制器在伴随着更新请求数据块的所述内容的更新请求的处理中,在所述内容内连续且包含所述更新请求数据块在内的多个数据块高速缓存在所述存储区域中的情况下,将包含所述更新请求数据块在内的多个数据块写出至所述介质区域的连续地址区域。
4.如权利要求1所述的存储系统,其特征在于,
所述控制器基于所述多个数据块在所述内容内所占的范围,来判断基于所述多个数据块的碎片整理是否有效。
5.如权利要求1所述的存储系统,其特征在于,
所述控制器包括对所述内容的碎片整理的执行进行控制的碎片整理执行控制信息,
在所述内容内的全部数据在所述介质区域内被保存于连续地址区域的情况下,将所述碎片整理执行控制信息设定为碎片整理无效,
在所述碎片整理执行控制信息表示碎片整理有效的情况下,基于所述间隙数,判断基于所述多个数据块的碎片整理是否有效。
6.如权利要求5所述的存储系统,其特征在于,
所述控制器基于所述内容的更新请求的种类,判断是否将所述碎片整理执行控制信息设定为碎片整理无效。
7.如权利要求5所述的存储系统,其特征在于,
所述控制器在所述碎片整理执行控制信息表示碎片整理有效的情况下,对所述内容执行脱机碎片整理,在所述碎片整理执行控制信息表示碎片整理无效的情况下,省略脱机碎片整理。
8.如权利要求1所述的存储系统,其特征在于,
所述控制器包括存储器扩展区域,所述存储器扩展区域与所述存储区域连接来扩展所述存储区域,
将保存于所述存储区域并在所述内容内连续的数据块移动到所述存储器扩展区域中的连续地址区域。
9.如权利要求1所述的存储系统,其特征在于,
所述控制器保持释放块管理信息,所述释放块管理信息对在所述介质区域中保存有以前的数据且应该释放的数据块进行管理,
在所述介质区域中,执行对所述释放块管理信息中登记的数据块的释放处理。
10.如权利要求1所述的存储系统,其特征在于,
所读取的所述数据块的数量为固定值或者可变值。
11.一种存储系统的控制方法,其中,所述存储系统具有:
介质区域,其由一个或者多个存储设备提供,并保存内容的数据;以及
存储区域,其临时保存所述介质区域的数据;
所述控制方法的特征在于,
取得包含于内容并保存在所述介质区域中的参照请求数据块的参照请求,
读取数量比所述参照请求数据块多且与所述参照请求数据块连续的数据块,
决定包含所述参照请求数据块在内的在所述内容内连续的多个数据块在所述介质区域上的地址中的间隙数,
基于所述间隙数,判断基于所述多个数据块的碎片整理是否有效,
在判断为所述碎片整理有效的情况下,将保存于所述存储区域的所述多个数据块写出至所述介质区域的连续地址区域,
将所述参照请求数据块发送至所述参照请求的请求源。
12.如权利要求11所述的存储系统的控制方法,其特征在于,
所读取的所述数据块的数量为固定值或者可变值。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/058878 WO2015145667A1 (ja) | 2014-03-27 | 2014-03-27 | ストレージシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106062703A CN106062703A (zh) | 2016-10-26 |
CN106062703B true CN106062703B (zh) | 2019-08-02 |
Family
ID=54194260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480076664.4A Active CN106062703B (zh) | 2014-03-27 | 2014-03-27 | 存储系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10649691B2 (zh) |
JP (1) | JP6171084B2 (zh) |
CN (1) | CN106062703B (zh) |
WO (1) | WO2015145667A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017212515A1 (ja) * | 2016-06-06 | 2017-12-14 | 株式会社日立製作所 | ストレージシステム、計算機、およびストレージ制御方法 |
US10430081B2 (en) | 2016-06-28 | 2019-10-01 | Netapp, Inc. | Methods for minimizing fragmentation in SSD within a storage system and devices thereof |
US11119654B2 (en) * | 2018-07-10 | 2021-09-14 | International Business Machines Corporation | Determining an optimal storage environment for data sets and for migrating data sets |
CN109815162A (zh) * | 2019-01-28 | 2019-05-28 | Oppo广东移动通信有限公司 | 内存管理方法、装置、移动终端及存储介质 |
CN112558878B (zh) * | 2020-12-16 | 2023-07-04 | 北京华弘集成电路设计有限责任公司 | 一种基于不同类型存储机制的空间调换方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102483683A (zh) * | 2009-12-24 | 2012-05-30 | 株式会社日立制作所 | 提供虚拟卷的存储系统 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3421898B2 (ja) * | 1995-04-10 | 2003-06-30 | ソニー株式会社 | データ記録装置およびデータ管理方法 |
US5819290A (en) | 1995-04-10 | 1998-10-06 | Sony Corporation | Data recording and management system and method for detecting data file division based on quantitative number of blocks |
JP2001188658A (ja) | 1999-12-28 | 2001-07-10 | Toshiba Corp | ディスク制御システムおよびデータ再配置方法 |
JP3629216B2 (ja) * | 2001-03-08 | 2005-03-16 | 株式会社東芝 | デフラグメンテーション機能を有するディスク記憶システム、及び同システムにおけるデフラグメンテーション方法 |
US6934802B2 (en) * | 2002-04-19 | 2005-08-23 | Seagate Technology Llc | Band detection and performance optimization for a data storage device |
JP4470471B2 (ja) * | 2003-12-03 | 2010-06-02 | ソニー株式会社 | 記録再生装置及び方法、並びに記録再生システム |
US7702870B2 (en) * | 2006-01-19 | 2010-04-20 | Network Appliance Inc. | Method and apparatus for defragmentation and for detection of relocated blocks |
JP2008305313A (ja) * | 2007-06-11 | 2008-12-18 | Nec Corp | リモートデフラグ方式、サービス装置、プログラム、及びリモートデフラグ方法 |
US8359430B1 (en) * | 2007-08-30 | 2013-01-22 | Network Appliance, Inc. | Techniques for efficient mass storage layout optimization |
US8448004B2 (en) * | 2008-10-27 | 2013-05-21 | Netapp, Inc. | Power savings using dynamic storage cluster membership |
US8190811B2 (en) * | 2009-06-09 | 2012-05-29 | Seagate Technology, Llc | Defragmentation of solid state memory |
US8788755B2 (en) * | 2010-07-01 | 2014-07-22 | Infinidat Ltd. | Mass data storage system and method of operating thereof |
-
2014
- 2014-03-27 CN CN201480076664.4A patent/CN106062703B/zh active Active
- 2014-03-27 WO PCT/JP2014/058878 patent/WO2015145667A1/ja active Application Filing
- 2014-03-27 JP JP2016509754A patent/JP6171084B2/ja not_active Expired - Fee Related
- 2014-03-27 US US15/122,310 patent/US10649691B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102483683A (zh) * | 2009-12-24 | 2012-05-30 | 株式会社日立制作所 | 提供虚拟卷的存储系统 |
Also Published As
Publication number | Publication date |
---|---|
US10649691B2 (en) | 2020-05-12 |
JPWO2015145667A1 (ja) | 2017-04-13 |
WO2015145667A1 (ja) | 2015-10-01 |
JP6171084B2 (ja) | 2017-07-26 |
US20160371035A1 (en) | 2016-12-22 |
CN106062703A (zh) | 2016-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101717644B1 (ko) | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 | |
CN106062703B (zh) | 存储系统 | |
CN105872040B (zh) | 一种利用网关节点缓存优化分布式块存储写性能的方法 | |
US9489239B2 (en) | Systems and methods to manage tiered cache data storage | |
US8909887B1 (en) | Selective defragmentation based on IO hot spots | |
CN108604165B (zh) | 存储装置 | |
CN101189584B (zh) | 内存页面管理 | |
CN105930282B (zh) | 一种用于nand flash的数据缓存方法 | |
US20040186900A1 (en) | Method of maintaining a plurality of snapshots, server apparatus and storage apparatus | |
CN106527974B (zh) | 一种写数据的方法、设备及系统 | |
CN106326229B (zh) | 一种嵌入式系统的文件存储方法和装置 | |
CN105339910B (zh) | 在混合驱动器中的虚拟nand容量扩展 | |
CN107491523A (zh) | 存储数据对象的方法及装置 | |
KR20150104434A (ko) | 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법 | |
KR20100115090A (ko) | 버퍼를 고려한 가비지 컬렉션 기법 | |
CN110196818A (zh) | 缓存数据的方法、缓存设备和存储系统 | |
US11630779B2 (en) | Hybrid storage device with three-level memory mapping | |
CN110147331A (zh) | 缓存数据处理方法、系统及可读存储介质 | |
CN109408416B (zh) | 一种地址映射表项页管理方法及装置 | |
CN114327270A (zh) | 一种请求处理方法、装置、设备及可读存储介质 | |
CN108733584B (zh) | 用于优化数据缓存的方法和设备 | |
CN109002400A (zh) | 一种内容感知型计算机缓存管理系统及方法 | |
CN106502584B (zh) | 一种提高固态硬盘写缓存的利用率的方法 | |
CN106407409A (zh) | 基于das架构存储服务器的虚拟文件系统及其文件管理方法 | |
US9842061B2 (en) | Implementing advanced caching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |