CN102449607A - 具有多个闪存封装的存储系统 - Google Patents

具有多个闪存封装的存储系统 Download PDF

Info

Publication number
CN102449607A
CN102449607A CN2009801595026A CN200980159502A CN102449607A CN 102449607 A CN102449607 A CN 102449607A CN 2009801595026 A CN2009801595026 A CN 2009801595026A CN 200980159502 A CN200980159502 A CN 200980159502A CN 102449607 A CN102449607 A CN 102449607A
Authority
CN
China
Prior art keywords
encapsulation
unit
flash memory
data
actual
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.)
Granted
Application number
CN2009801595026A
Other languages
English (en)
Other versions
CN102449607B (zh
Inventor
山本彰
杉本定广
荒木亮彦
山本政行
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 CN102449607A publication Critical patent/CN102449607A/zh
Application granted granted Critical
Publication of CN102449607B publication Critical patent/CN102449607B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0647Migration mechanisms
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

具有多个闪存封装(230)的存储系统(100)具有减少闪存封装(230)内的各个块的删除次数的不平衡的功能和块单位的容量虚拟化功能,另一方面,具有计算各个闪存封装(230)的删除次数、数据占有率,并基于这些删除次数和数据占有率的值在闪存封装(230)间移动数据的功能,由此,在存储系统(100)全体中高效率地实现删除次数的不平衡的减轻和数据存储容量的削减。

Description

具有多个闪存封装的存储系统
技术领域
本发明涉及存储系统。
背景技术
闪速存储器,在存储器的特性上,当想要改写数据时无法在原来存储了该数据的物理区域上直接覆盖该数据。在进行数据的改写时,需要在以作为闪速存储器的删除单位的、被称为块的单位执行删除处理后改写数据。对该块的删除处理的执行次数,由于物理的制约而存在极限。闪速存储器的块具有当删除次数超过该极限数时无法在该块中存储数据的性质。
因此,当采取对闪速存储器的各个块固定地分配存储数据的地址的方式时,通常针对每个地址改写频度不同,因此,针对每个块产生了删除次数的波动。因此,当某个特定的块的删除次数超过极限数时,无法存储分配给该块的地址的数据。为了解决以上的问题,作为减少该波动的技术而公开了被称为损耗平衡(wear leveling)的技术(例如专利文献1)。损耗平衡的基本的思路是,作为外侧可见的地址层,在物理的地址之外设置逻辑地址层,通过对被分配给物理地址的逻辑地址进行适当变更,例如对被频繁存取的逻辑地址分配删除次数少的地址,来削减物理块的删除次数的不平衡。另外,即使物理地址进行了变更,由于逻辑地址不改变,因此,从外侧能够以同一地址进行数据存取,因此也可以维持良好的使用便利性。
接着,说明存储容量削减技术。近年来,在存储系统中削减存储容量的技术受到了关注。其代表性的技术之一是容量的虚拟化技术。所谓容量的虚拟化技术,是使主机侧看到比存储系统具有的物理容量大的虚拟容量的技术。这利用了以下特性:在用户实际使用存储系统的情况下,对于由用户定义的用户卷(从用户看到的存储装置)的容量,实际存储的数据的量不轻易达到该定义容量。即,在没有容量虚拟化技术时,在定义卷时确保了所定义的物理的容量,与此相对,在应用了容量虚拟化技术时,当在存储系统中实际存储了数据时,初次确保容量。由此,可以削减存储容量,并且用户不需要严格地定义卷容量,简单定义具有较大余量的值即可,因此,还可以提高使用便利性。在该技术中,当写入数据时确保的物理存储区域被称为页。一般来说,页的大小具有多样性,但是在本发明中,假定页的大小大于作为闪速存储器的删除单位的块的大小。另一方面,在闪速存储器中,一般删除的单位如前所述称为块,与此相对,将块中的读写单位称为页。当然,在闪速存储器中,块的大小大于页的大小。但是,在本发明中,页的表述是指容量虚拟化中的页。另外,如前所述,在本发明中设页的大小大于闪速存储器的块的大小。
但是,成为本发明的对象的存储系统具有上述的容量虚拟化技术未必是必要条件。另一方面,在具有容量虚拟化技术的存储系统中,公开了以页单位使页在存储装置(典型的是HDD(Hard Disk Drive))间移动,实现性能提高的技术(专利文献2)。而且,公开了在性能价格比不同的存储装置间移动页,提高性能价格比的技术。另一方面,通常在HDD中存储用户的数据前以特定的模式、例如全0等进行格式化。还公开了此时在存储系统中检测出由主机写入的该特定模式,释放已经分配的页的技术(专利文献3)。
现有技术文献
专利文献
专利文献1:日本国专利3507132
专利文献2:日本特开2007-66259号公报
专利文献3:日本特开2007-199922号公报
发明内容
发明要解决的课题
在将成为本发明的对象的闪速存储器作为存储介质的大容量存储系统中,闪速存储器芯片的数量例如达到数万。因此,在存储系统的控制器上连接数百个搭载了数百个芯片的闪存封装成为典型的结构。
关于在本发明中要解决的课题,第一是在将大量的闪速存储器芯片作为存储介质而构成的大规模存储系统中,在存储系统全体中高效率地减少闪速存储器的删除次数的不平衡,第二是削减对闪速存储器的存储数据容量。首先,描述第一课题。在搭载了闪速存储器的存储系统中损耗平衡技术变得十分重要。但是,在具有数万个成为本发明的对象的闪速存储器的存储系统中,当直接应用以往的损耗平衡的思路时,由于要减少数万个的全部闪速存储器芯片的块删除次数的不平衡,因此存在损耗平衡的控制开销增大的课题。
对第二课题进行说明。在应用了容量虚拟化技术的存储系统中,在进行数据的写入时确保页。因此,减小页大小的话,容量的削减效果增大。但是,当应用本技术时,从主机看来连续的卷的地址,针对每个页有可能在HDD上分散存储。通常,向HDD的连续的区域的存取(顺序存取),与向分散的区域的存取(随机存取)相比,速度非常高,因此,考虑该性能差别而构建主机上的应用程序软件。因此,即使引入容量虚拟化,当想要维持针对顺序存取的性能时,也需要使页的大小大于一定程度。因此,存在容量的削减效率不够的课题(如前所述,在本发明中,页的大小比闪速存储器的块的大小要大)。
用于解决课题的手段
用于解决所述第一课题的本发明的第一特征是进行层次化的损耗平衡。即,特征在于由上位等级的损耗平衡和下位等级的损耗平衡构成。通过层次化,可以高效率地减少存储系统全体的数万个的全部闪速存储器芯片的块删除次数的不平衡。在本发明的第一特征中,由于进行层次化的损耗平衡,因此不特别规定上位等级的损耗平衡的单位。(是任意的单位)。下位等级的损耗平衡是要减少搭载了多个芯片(例如数百个芯片)的闪存封装上的块删除次数的不平衡的损耗平衡,可以应用专利文献1那样的公知技术。基本上,下位等级的损耗平衡的单位一般是作为闪速存储器的删除单位的块。此外,即使将一个闪存封装作为一个SSD(Solid State Drive),本发明也有效。在闪存封装具有处理器的情况下,关于下位等级的损耗平衡,由该处理器减少该封装内的闪速存储器的块的删除次数的不平衡是一种方法。但是,也可以通过存储系统的控制器处理器进行下位等级的损耗平衡。另一方面,本发明的第二特征是,以为了存储系统的容量虚拟化而导入的页单位,来进行上位等级的损耗平衡。(这意味着若仅实现本发明的第一特征,存储系统的控制器具有容量虚拟化功能不是必需的条件)另一方面,在实现了容量虚拟化的存储系统中,以页单位进行移动控制成为今后的潮流,通过将闪速存储器的上位等级的损耗平衡设为页,可以作为该页单位控制的一环的好处很大。另外,通过以页这样比块大的大小进行损耗平衡,可以减小开销。
另外,在本发明中的上位等级的损耗平衡中,可以减小块删除次数的不平衡,也可以进行控制以使块删除次数达到极限数之前的预测时间达到一定时间以上。
用于解决第二课题的本发明的第三特征是实现层次化的容量虚拟化。上位等级的容量虚拟化像以往那样通过存储系统的控制器实现,在主机中应用虚拟容量。因此,解决第二课题的本发明的第三特征是下位等级的容量虚拟化,对闪存封装的容量进行虚拟化,将比实际上闪存封装具有的闪速存储器的容量大的容量定义为虚拟容量,在下位等级中,当要写入数据时检查是否分配了块,当未分配时初次分配块,这是本发明的特征。由此,可以使实际分配的时机更晚,分配的容量也与页相比可以成为块那样的较小的大小。另外,作为闪速存储器的特质,随机存取和顺序存取都几乎没有性能差异,因此,即使减小分配大小也几乎没有性能上的问题。
另外,作为解决本发明的第二课题的第四特征,在识别出全0等格式信息的情况下,也通过下位等级的容量虚拟化功能进行块单位的释放,能够达到容量的削减效果。但是,作为闪速存储器的特性,为了把进行释放的块分配给其它区域需要一次删除。此外,通过通常的写(Write)命令写入了全0等格式模式时,在存储系统中也能够识别格式模式,释放对应的块,实现容量削减。关于下位等级的容量虚拟化,在闪存封装具有处理器的情况下,由该处理器对该封装内的容量进行虚拟化是一种方法。但是,也可以通过存储系统的控制器处理器进行下位等级的容量虚拟化。另外,可以没有现有的上位等级的容量虚拟化功能而向主机提供将存储介质设为闪速存储器、具有比实际容量大的虚拟容量、把作为删除单位的块设为分配单位的容量虚拟化功能。
发明的效果
根据本发明,在连接了多个各自安装了大量闪速存储器的闪存封装而得的大容量存储系统中,可以实现高效率的损耗平衡。而且,与现有技术相比,也能够几乎不导致性能劣化地削减数据存储容量。
附图说明
图1是表示具有本发明的一个实施方式的存储系统100的信息系统的图。
图2是表示存储系统100的结构的图。
图3是表示闪存封装230的结构的图。
图4是表示在共享存储器220中存储的信息的图。
图5是表示逻辑卷信息2000的图。
图6是表示调度信息2700的图。
图7是表示实际页信息2100的图。
图8是表示本发明的一个实施方式中的多个种类的存储区域的对应关系的图。
图9是表示通过空闲页管理信息指针2200管理的空闲页的集合的图。
图10是表示封装组信息2300的图。
图11是表示闪存封装信息2500的图。
图12是表示在封装存储器320中存储的管理信息的图。
图13是表示在共享存储器160中存储了与图12所示的管理信息相同的管理信息的例子的图。
图14是表示封装信息3000的图。
图15是表示芯片信息3100的图。
图16是表示虚拟块信息3200的图。
图17是表示实际块信息3300的图。
图18是表示通过空闲块信息指针3400管理的空闲块的集合的图。
图19是表示在存储器270中存储的程序的图。
图20是表示读处理执行部4000的处理流程的图。
图21是表示写请求接受部4100的处理流程的图。
图22是表示写后处理执行部4200的处理流程的图。
图23是表示写同命令处理执行部4300的处理流程的图。
图24是表示页移动调度部4400的处理流程的图。
图25是表示页移动处理执行部4500的处理流程的图。
图26是表示封装存储器320中存储的程序的图。
图27是表示在存储器270中存储了下位等级的程序的例子的图。
图28是表示数据读处理执行部12000的处理流程的图。
图29是表示数据写处理执行部12100的处理流程的一部分的图。
图30是表示数据写处理执行部12100的处理流程的剩余部分的图。
图31是表示实际块释放处理执行部12200的处理流程的图。
图32是表示虚拟块移动处理执行部12300的处理流程的图。
图33是表示虚拟块存储处理执行部12400的处理流程的图。
具体实施方式
以下,参照附图详细说明本实施方式。
图1是表示具有本发明的一个实施方式的存储系统的信息系统的图。
信息系统具有存储系统100、主机110和连接它们的SAN(Storage AreaNetwork)120。主机110经由SAN120对存储系统100进行数据的读写。在图1中虽未表示,但是存储系统100经由SAN与别的存储系统100连接,在存储系统100之间可以执行与灾难恢复对应的远程复制功能。
主机110是用户应用程序运行的系统(例如计算机)。主机110经由SAN120对由存储系统100提供的逻辑卷进行存取。逻辑卷可以是遵从所述上位等级的容量虚拟化的逻辑卷(由多个虚拟页构成的卷),也可以是通常的逻辑卷。但是,以下以遵从容量虚拟化的逻辑卷为前提进行说明。此外,在SAN120中使用可以传输SCSI(Small Computer System Interface)命令的协议(例如FibreChannel等协议)。
关于本实施方式,在将大量的闪速存储器作为存储介质而构成的存储系统100中,作为第一技术,实现减少闪速存储器的删除次数的不平衡的技术,作为第二技术,实现向闪速存储器的存储数据容量削减技术。第一技术是层次型损耗平衡技术,第二技术是层次型容量虚拟化技术。在本实施方式中实现了层次型损耗平衡技术、层次型容量虚拟化技术两者,但是本发明即使分别单独地仅实现层次型损耗平衡技术、或仅实现层次型容量虚拟化技术也是有效的。另外,在本实施方式中,上位等级的损耗平衡技术、容量虚拟化技术的控制单位是被称为页的单位。本实施方式中的页,是在现有的专利文献2所示的容量虚拟化技术中公开的页。在以下的说明中,层次型损耗平衡中的上位等级的控制单位是页,但即使该控制单位不是页,本发明也有效。例如,为使上位等级的损耗平衡的控制单位与下位等级的控制单位相同,可以把作为闪速存储器的删除单位的块作为基础。在本实施方式中,页的大小比闪速存储器中的删除单位、即块大。通常,在闪速存储器中将读/写的单位称为页,因此,页比块小。但是,如上所述,在本实施方式中,页表示容量虚拟化技术中所示的页,其大小比块大。另外,下位等级的损耗平衡技术、容量虚拟化技术的控制单位基本上是作为闪速存储器的删除单位的一个块,但是也可以是块的整数倍的单位。但是,在本实施方式中,在将一个块作为控制单位的前提下进行说明。另外,即使单独地把将存储介质设为闪速存储器、具有比实际容量大的虚拟容量、把作为删除单位的块设为分配单位的下位等级的容量虚拟化功能提供给主机110、而没有现有的上位等级的容量虚拟化功能地,本发明也有效。另外,在本实施方式中,除了减小闪速存储器的删除次数的不平衡的技术以外,还实现了将闪速存储器的寿命自预定的期间延长的技术。因此,关于损耗平衡功能,考虑到增加了更广的技术,也称为长寿命化控制。
图2表示存储系统100的结构。
存储系统100具有:多个闪存封装230;一个以上的存储控制器200;高速缓冲存储器210;共享存储器220;计时器240;将这些构成要素连接起来的一个以上的连接装置250。即使一个闪存封装230是一个SSD(Solid StateDrive),本发明也有效。另外,除了闪存封装230还可以具备硬盘驱动器(HDD)等。在本发明中,上位等级的长寿命化控制(损耗平衡功能)和容量虚拟化功能由存储控制器200执行。另一方面,下位等级的长寿命化控制(损耗平衡功能)和容量虚拟化功能可以由存储控制器200执行,也可以由闪存封装230执行。但是,在本实施方式中以闪存封装230实施的形态为中心进行说明。
计时器240能够供全部存储控制器200参照。计时器240表示的信息不需要是时刻,例如可以表示与经过时间相当的值或是计数值。
全部闪存封装230的存储容量(实际块的总存储容量)没必要相等(即,也可以是存储容量不同的闪存封装230共存),但是在本实施方式中假定全部闪存封装230的存储容量(实际块的总存储容量)相等。
存储控制器200通过SAN120从主机110接受写请求及其附带的数据、或读请求。存储控制器200具有存储器270和处理器260。存储器270存储程序以及信息。处理器260执行在存储器270中存储的计算机程序。
连接装置250是连接存储系统100内的各构成要素的装置(例如交叉开关(crossbar switch))。在本实施方式中,各存储控制器200以及各闪存封装230与多个连接装置250连接。但是,不一定要与多个连接装置250连接,例如也可以一个闪存封装230和/或一个存储控制器200仅与一个连接装置250连接。
高速缓冲存储器210以及共享存储器220由易失性存储器(例如DRAM(Dynamic Random Access Memory))构成,但是通过电池等被非易失化。但是,即使不将高速缓冲存储器210非易失化,本发明也有效,即使不将共享存储器220非易失化,本发明也有效。另外,可以将高速缓冲存储器210二重化,可以将共享存储器220二重化。在高速缓冲存储器210中例如存储在闪存封装230中存储的数据中的、从存储控制器200被频繁存取的数据。存储控制器200,可以在把从主机110接受的写请求所附带的数据写入高速缓冲存储器210的时刻,作为写处理的完成,也可以在将该数据从高速缓冲存储器210存储到闪存封装230的时刻,作为写处理的完成。共享存储器220存储高速缓冲存储器210的控制信息、与存储系统100相关的管理信息等。
闪存封装230从存储控制器200看来是一台存储装置。存储控制器200为了提高可靠性而具有这样的RAID(Redundant Array of Independent(orInexpensive)Disks)功能:即使预定数量(例如一台或两台)闪存封装230故障也可以恢复该闪存封装230的数据。(‘RAID’的术语中的‘D’是‘Disk’的缩写,当某个存储装置中发生了故障时,根据别的存储装置的冗余数据等将故障的装置的数据复原的功能也可应用于Disk以外的存储装置。)当有RAID功能时,由多个闪存封装230构建一个RAID结构。以下,将遵从该RAID结构的组称为“封装组”。存储系统100也可以不具有RAID结构。
图3表示闪存封装230的结构。
闪存封装230具有多个闪存芯片300和封装控制器315。
封装控制器315具有封装处理器310、封装存储器320、缓冲存储器330、封装总线340、以及封装总线传输装置350。封装处理器310处理来自存储控制器200的写指示以及读指示。
缓冲存储器330存储在存储控制器200和闪存芯片300之间读写的数据。在本实施方式中,缓冲存储器330是易失性存储器。从存储控制器200接受的写指示的处理,在遵从该写指示的数据被写入闪存芯片300的时刻完成。但是,即使缓冲存储器330被非易失化,在向存储控制器200的写指示的完成报告后将数据写入闪存芯片300,本发明也有效。在封装存储器320中存储由封装处理器310执行的计算机程序、以及闪存封装230的管理信息。但是,即使封装存储器320被非易失化,本发明也有效。
封装总线340是在缓冲存储器330和闪存芯片300之间进行数据传输的总线,存在一条以上。在一条封装总线340上连接一个以上的闪存芯片300。
封装总线传输装置350对应于封装总线340而存在,封装总线传输装置350按照封装处理器310的指示,在缓冲存储器330和闪存芯片300之间执行数据传输。
图4表示在共享存储器220中存储的信息。
共享存储器220例如存储逻辑卷信息2000、调度时间信息2700、实际页信息2100、空闲页管理信息指针2200、封装组信息2300、闪存封装信息2500以及虚拟页容量2600。这些信息对于上位等级的长寿命化控制和上位等级的容量虚拟化功能来说是必要的。
虚拟页容量2600是表示虚拟页的容量的信息。此外,有时虚拟页的容量(大小)和实际页的容量(大小)不相等。例如,虚拟页的容量和实际页的容量的关系取决于RAID结构。具体来说,例如如RAID1那样二重地写入数据的情况下,实际页的容量成为虚拟页的容量的2倍。另外,例如如RAID5那样对于N台存储装置的容量存储1台的量的存储装置的容量的冗余数据的情况下,实际页的容量是虚拟页的容量的(N+1)/N的容量。另外,例如如RAID0那样没有冗余性的情况下,实际页的容量与虚拟页的容量相等。此外,在本实施方式中,虚拟页容量2600在存储系统100中相同,但是即使存储系统100中虚拟页容量2600有差异,本发明也有效。
在本实施方式中,存储系统100具有所述的上位等级的容量虚拟化功能,但是也可以不一定具有该功能。关于上位等级的容量虚拟化功能,存储区域的分配单位为“页”,关于下位等级的容量虚拟化功能,存储区域的分配单位为“块”。
图8表示多个种类的存储区域的对应关系。
在本实施方式中,各个闪存封装230具有容量虚拟化功能,对于存储控制器200提供了看起来比实际的物理容量大的容量。闪存封装230的容量虚拟化的单位,在本实施方式中设为作为闪速存储器的删除单位的块。以下,将从存储控制器200看到的块称为“虚拟块”,把闪存封装230实际分配的块称为“实际块”。因此,在本实施方式中,实际页由虚拟块构成。另外,在本实施方式中,由虚拟块构成的容量空间比由实际块构成的容量空间大。图8表示虚拟页、实际页、虚拟块、实际块的关系。如上所述,在实际页中包含在虚拟页中没有的冗余数据。另一方面,虚拟块、实际块中包含的数据相同。另外,在本实施方式中,在存储控制器200看来,闪存封装230具有比实际块数多的虚拟块。但是,在本实施方式中,存储控制器200考虑实际上闪存封装230具有几个实际块来进行实际页的再配置。在本实施方式中特征在于,闪存封装230在接受了写入请求时,对尚未分配实际块的虚拟块分配实际块。
以下,说明从存储控制器200向实际块的存取的流程。此外,存储控制器200管理向哪个虚拟页分配哪个实际页的对应关系(页对应关系)。但是,以下以由闪存封装230实施下位等级的长寿命化控制(损耗平衡功能)和容量虚拟化功能的形态进行说明。
存储控制器200在从主机110接受了写请求时,基于页对应关系判断是否向根据该写请求确定的虚拟页(写目的地虚拟页)分配了实际页。当该判断的结果为否定时,存储控制器200向写目的地虚拟页分配未分配的实际页,向所分配的实际页写入写请求所附带的数据。
存储控制器200在向实际页中写入数据的情况下,将指定了基于该实际页的地址的写指示发送到管理该地址的封装控制器315。接受了该写指示的封装控制器315根据块对应关系,判断是否对具有由该写指示所指定的地址的虚拟块(写目的地虚拟块)分配了实际块。当该判断的结果为否定时,封装控制器315向写目的地虚拟块分配未分配的实际块(空闲的实际块),在所分配的实际块中写入该写指示的对象数据。
存储控制器200在从主机110接受了读请求时,根据页对应关系确定被分配给根据该读请求而确定的虚拟页(作为读源的虚拟页)的实际页。存储控制器200从所确定的实际页中读出数据,并将读出的数据发送给主机110。
存储控制器200在从实际页读出数据时,将指定了基于该实际页的地址的读指示发送给管理该地址的封装控制器315。接受了该读指示的封装控制器315根据块对应关系,确定被分配给具有由该读指示所指定的地址的虚拟块的实际块。封装控制器315从所确定的实际块中读出数据,并将该数据发送给存储控制器200。
例如在NAND型的闪速存储器中,一般将删除单位称为“块”,将写入单位称为“页”。具体来说,由多个物理扇区构成一个物理页,由多个物理页构成一个实际块。但是,在本实施方式中所说的“页”显然是进行上位等级的容量虚拟化功能的区域分配的单位,无论如何不会发生混淆。
以下,详细说明图4所示的各种信息。
图5表示逻辑卷信息2000。
逻辑卷是从主机110进行存取的逻辑的存储装置。从主机110发出的存取请求包含:逻辑卷的ID(例如LUN(Logical Unit Number))、逻辑卷内的地址(例如LBA(Logical Block Address))、以及写入或读出的数据的长度。根据逻辑卷的ID确定存取目的地逻辑卷,根据地址和数据的长度确定该逻辑卷中的作为存取目的地的一个以上的虚拟页。
逻辑卷信息2000是针对每个逻辑卷而存在的信息。以下,采用一个逻辑卷(在图5的说明中是指“对象卷”)为例,说明信息2000。
信息2000包含逻辑卷ID2001、逻辑容量2002、逻辑RAID类型2003、实际页指针2004以及格式信息2005。
逻辑卷ID2001是对象卷的ID。
逻辑容量2002表示从主机110看到的对象卷的容量。
逻辑RAID类型2003是表示与对象卷对应的RAID结构的类型(RAID类型(例如RAID0、RAID1))的信息。当RAID类型是对N台存储装置存储了预定台数的量的冗余数据的类型(例如RAID5、RAID6)时,在信息2003中包含N的具体数值。但是,并非可以指定任意的RAID类型,需要是至少一个封装组280具有的RAID类型。
实际页指针2004是针对被分配给对象卷的虚拟页的实际页信息2100的指针。实际页指针2004的数量是对象卷具有的虚拟页的数量(例如将逻辑卷容量2002除以虚拟页容量2006而得的数,如果有余数则加1)。最初的实际页指针2004对应的实际页是被分配给对象卷的先头的虚拟页的实际页。以后,在下一实际页指针2004中存储与被分配给下一虚拟页的实际页对应的指针。根据上位等级的容量虚拟化功能分配实际页,不是以定义了对象卷为契机,而是以接受到指定了虚拟页的写请求为契机(以在虚拟页中发生了写处理为契机)。因此,与尚未发生写处理的虚拟页对应的实际页指针2004成为表示未分配的信息(例如空值)。
格式信息2005也是针对对象卷的每个虚拟页而存在的信息。主机110大多在存储应用程序的数据前,用特定的信息(例如所述模式数据)对存储装置(例如逻辑卷)进行初始化。模式数据有时由一般的写请求附带,也有时由明示的请求(以下称为写同命令)附带。通过在格式信息2005中包含模式数据(重复信息),可以识别出在与该信息2005对应的虚拟页中存储了该模式数据。因此,可以解除对于存储了模式数据的虚拟页的实际页的分配(释放该实际页)。在本实施方式中,在存储控制器200接收到写同命令时,向下位等级的容量虚拟化功能(例如封装控制器315)通知与被分配给由写同命令指定的虚拟页的实际页对应的虚拟块(具体来说,发送指定了该虚拟块的释放指示)。对于用该释放指示指定的虚拟块的实际块的分配被解除(被释放)。由此,节约了消耗存储容量。此外,在应答通常的写请求、写入模式数据(例如全0等格式数据)时,存储控制器200也可以识别模式数据,使下位等级的容量虚拟化功能释放与模式数据的写目的地逻辑块对应的实际块。另外,在设定了格式信息2005的情况下,不需要向与该格式信息2005对应的虚拟页分配实际页,因此,与该虚拟页对应的实际页指针2004成为表示未分配的信息(例如空值)。在格式信息2005中存储的模式数据以外的数据为写对象时,对写目的地的虚拟页分配了实际页,因此,格式信息2005变为无效的信息(例如空值)。
图6表示调度信息2700。
在本实施方式中,按照预定的调度来开始上位等级的长寿命化控制。信息2700包含上次调度时刻2701和下次调度时刻2702。
上次调度时刻2701是最近执行了上位等级的长寿命化控制的时刻(过去)。
下次调度时刻2702是下次执行上位等级的长寿命化控制的预定时刻(将来)。
此外,可以代替预定的调度或者除此以外在任意的时刻执行上位等级的长寿命化控制。例如,可以在从用户对存储控制器200请求了执行上位等级的长寿命化控制时、以及对实际页的写(对实际块的写)失败时等的至少一个时刻执行。
图7表示实际页信息2100。
信息2100是实际页的管理信息,其针对每个实际页而存在。以下,以一个实际页(在图7的说明中为“对象实际页”)为例详细说明信息2100。
信息2100包含:封装组2101、实际页地址2102、空闲页指针2103、实际块分配数2104、追加实际块分配数2105、累计实际块分配时间2106、累计实际块删除次数2107、追加实际块分配时间2108、移动中标志2109、移动目的地实际页信息2110、移动等待标志2111以及累计写数据量2112。
封装组2101是表示对象实际页是基于哪个封装组280的实际页的信息,例如是成为对象实际页的基础的封装组280的识别符(封装组ID)。
实际页地址2102是表示对成为对象实际页的基础的封装组280中的哪个相对地址分配了对象实际页的信息。
空闲页指针2103是在对象实际页未被分配给虚拟页时有效的值。在这种情况下,该有效的值是指与未被分配给虚拟页的别的物理页对应的空闲页信息2100。在对对象实际页分配了虚拟页时,空闲页指针2103成为空值。
实际块分配数2104以及追加实际块分配数2105,以成为对象实际页的基础的封装组280具有的闪存封装230的数量存在。
在本实施方式中,各个闪存封装230的封装控制器315具有下位等级的容量虚拟化功能。因此,向存储控制器200提供了看起来比实际的物理容量大的虚拟容量。闪存封装230的容量虚拟化的单位如上所述为“块”。如图8中说明的那样,对实际页分配多个虚拟块,对各虚拟块分配实际块。因此,可以说实际页由多个虚拟块构成。另外,在本实施方式中,由虚拟块构成的容量空间比由实际块构成的容量空间大。
如前所述,在本实施方式中,有时在实际页中存储在与虚拟页对应的数据中不包含的冗余数据。另一方面,与虚拟块对应的数据和实际块中存储的数据相同。另外,在本实施方式中,在存储控制器200看来,闪存封装230具有比实际块数多的虚拟块。但是,在本实施方式中,存储控制器200考虑闪存封装230实际上具有几个实际块来进行实际页的再配置。
在由闪存封装230实施下位等级的长寿命化控制(损耗平衡功能)和容量虚拟化功能的形态的情况下,存储控制器200在向对象实际页中写入数据时,将指定了分配给对象实际页的虚拟块内的地址的写指示,发送到管理该虚拟块的闪存封装230。闪存封装230在尚未对该写指示中指定的虚拟块分配实际块的情况下,对该虚拟块分配实际块。在新分配了实际块的情况下,封装控制器315向存储控制器200通知已新分配了实际块。由此,存储控制器200检测出对对象实际页分配了实际块,并更新实际块分配数2104或者追加实际块数2105。
实际块分配数2104是与该信息2104对应的闪存封装230具有的被分配给对象实际页的实际块中的、在上次调度时刻2701以前被分配给对象实际页的实际块的数量。所谓“上次调度时刻2701以前”,可以包含上次调度时刻2701,也可以不包含。
追加实际块数2105是与该信息2105对应的闪存封装230具有的被分配给对象实际页的实际块中的、在上次调度时刻2701以后被分配给对象实际页的实际块的数量。所谓“上次调度时刻2701以后”,可以包含上次调度时刻2701,也可以不包含。例如在“上次调度时刻2701以前”包含上次调度时刻2701的情况下,“上次调度时刻2701以后”则不包含上次调度时刻2701,另一方面,在“上次调度时刻2701以前”不包含上次调度时刻2701的情况下,“上次调度时刻2701以后”则包含上次调度时刻2701。
累计实际块分配时间2106、累计实际块删除次数2107、以及追加实际块分配时间2108、累计写数据量2112也分别以成为对象实际页的基础的封装组280具有的闪存封装230的数量存在。但是,这些信息不是对象实际页中包含的虚拟块的属性信息,而是与针对对象实际页的分配目的地的虚拟页的数据相关的属性信息。因此,在对该虚拟页代替对象实际页而分配别的实际页,对象实际页内的数据被移动到该别的实际页时,累计实际块分配时间2106、累计实际块删除次数2107、以及追加实际块分配时间2108、累计写数据量2112也作为该别的实际页的管理信息而被交接。
累计实际块分配时间2106是关于被分配给对象实际页的全部虚拟块的经过时间的合计。在此所说的“经过时间”是从对被分配给对象实际页的虚拟块分配了实际块的契机到上次调度时间2701为止的、关于该虚拟块的时间。此外,该契机也有可能不针对对象实际页,而在过去针对别的实际页而产生。
累计实际块删除次数2107是关于被分配给对象实际页的全部虚拟块的删除次数的合计。在此所说的“删除次数”是从对被分配给对象实际页的虚拟块分配了实际块的契机开始的该实际块的删除次数。
累计写数据量2112是代替累计实际块删除次数2107(或除此以外)在实际页信息2100中包含的信息。累计写数据量2112以成为对象实际页的基础的封装组280具有的闪存封装230的数量而存在,是与针对对象实际页的分配目的地虚拟页的数据相关的属性信息。累计写数据量2112是关于被分配给对象实际页的全部虚拟块的写数据量的合计。在此所说的“写数据量”,是从对被分配给对象实际页的虚拟块分配了实际块的契机开始的、被分配了虚拟块的实际块的写对象数据的量(大小)。基于累计写数据量2112能够计算出相当于累计实际块删除次数2107的值。在后面详细描述。
追加实际块分配时间2108是在上次调度时间2701以后对分配给虚拟块的实际块进行分配的时间长度。当新分配一个实际块时,在追加实际块分配时间2108上加上与下次调度时间2702和进行了分配的时刻的差分相当的时间长度(差分时间)。在后面说明对该差分时间进行加法运算的理由。
移动中标志2109、移动目的地实际页信息2110以及移动等待标志2111是将对象实际页内的数据移动到别的实际页时所使用的信息。移动中标志2109是将对象实际页内的数据向别的实际页移动过程中变为开(ON)的标志。移动目的地实际页信息2110是表示对象实际页内的数据的移动目的地实际页的地址的信息。移动等待标志2111是决定移动对象实际页内的数据时变为开(ON)的标志。
图9表示通过空闲页管理信息指针2200管理的空闲页的集合。
空闲页管理信息指针2200是针对每个封装组280而设置的信息。
所谓“空闲页”,是未被分配给虚拟页的实际页(未分配的实际页)。另外,将与空闲页对应的实际页信息2100称为“空闲页信息”。空闲页管理信息指针2200指向先头的空闲页信息的地址。然后,先头的实际页信息2100中的空闲页指针2103指向下一空闲页信息。图9中,最后的空闲页信息的空闲页指针2103表示空闲页管理信息指针2200,但是也可以是空值。存储控制器200在从主机110接收了指定了未被分配实际页的虚拟页的写请求时,根据空闲页管理信息指针2200,从具有与逻辑RAID类型2003相同的RAID类型的某个封装组280(例如空闲页数最多的封装组280)中搜索空闲页,将找到的空闲页分配给虚拟页。
图10表示封装组信息2300。
封装组信息2300针对每个封装组280而存在。以下,以一个封装组280(在图10的说明中称为“对象封装组280”)为例,说明封装组信息2300。
封装组信息2300包含:封装组ID2301、封装组RAID类型2302、实际页数2303、空闲页数2304以及闪存封装指针2305。
封装组ID2301是对象封装组280的识别符。
封装组RAID类型2302是对象封装组280的RAID类型。本实施方式中的RAID类型如关于逻辑RAID类型2003的说明中所述那样。
实际页数2303表示对象封装组280具有的实际页的数量,空闲页数2304表示对象封装组280具有的空闲页的数量。
闪存封装指针2305是针对属于对象封装组280的闪存封装230的闪存封装信息2500的指针。闪存封装指针2305的数量与对象封装组280具有的闪存封装230的数量相同,但是,它是根据封装组RAID类型2302而决定的值。
图11表示闪存封装信息2500。
闪存封装信息2500针对每个闪存封装230而存在。以下,以一个闪存封装(在图11的说明中称为“对象闪存封装”)为例,说明信息2500。
信息2500包含:闪存封装ID2501、闪存封装虚拟容量2502、块容量2503、封装内可分配实际块数2504、封装内实际块分配数2505、封装内追加实际块分配数2506、封装内累计实际块分配时间2507、封装内累计实际块删除次数2508、封装内追加实际块分配时间2509、封装内累计写数据量2510、保证期间结束时刻2511以及极限删除次数2512。
闪存封装ID2501是对象闪存封装230的识别符。
闪存封装虚拟容量2502是对象闪存封装230的虚拟容量。
块容量2503是虚拟块以及实际块中包含的数据的容量。与虚拟块对应的数据和实际块中存储的数据相同。因此,将闪存封装容量2502除以块容量2503而得的值成为对象闪存封装230具有的虚拟块的数量。
可分配实际块数2504是对象闪存封装230中可分配的实际块的数量。在闪存封装230中,例如当x个实际块成为故障状态(不良块)时,从可分配实际块数2504表示的值中减去x。在由闪存封装230实施下位等级的长寿命化控制(损耗平衡功能)和容量虚拟化功能的情况下,当可分配的实际块数减少时,从封装控制器315向存储控制器200通知可分配的实际块数已减少。
封装内实际块分配数2505是关于基于对象封装组280的全部实际页的实际块分配数2104的合计。
封装内追加实际块分配数2506是关于基于对象封装组280的全部实际页的追加实际块分配数2105的合计。
封装内累计实际块分配时间2507是关于基于对象封装组280的全部实际页的累计实际块分配时间2106的合计。
封装内累计实际块删除次数2508是关于基于对象封装组280的全部实际页的累计实际块删除次数2107的合计。
封装内追加实际块分配时间2509是关于基于对象封装组280的全部实际页的追加实际块分配时间2108的合计。
封装内累计写数据量2510是关于基于对象封装组280的全部实际页的累计写数据量2112的合计。但是,累计写数据量2512是代替累计实际块删除次数2107而存在的信息,并非是必定存在的信息。
保证期间结束时刻2511是对象闪存封装230的保障期间结束的时间(时刻)。
删除极限数2512表示对象闪存封装230的实际块的极限删除次数。闪速存储器有若干种,极限删除次数分别不同。例如,一般来说SLC(Single LevelCell)约为10万次,MLC(Multi Level Cell)约为5千~1万次。
接着,说明在闪存封装230的封装存储器320中存储的、闪存封装230的管理信息。
图12表示在封装存储器320中存储的管理信息。
该管理信息包含:封装信息3000、芯片信息3100、虚拟块信息3200、实际块信息3300以及空闲块信息指针3400。该管理信息是下位等级的损耗平衡控制以及容量虚拟化功能所利用的信息。在本实施方式中,闪存封装230进行下位等级的长寿命化控制(损耗平衡功能),并且具有下位等级的容量虚拟化功能。下位等级的长寿命化控制(损耗平衡功能)以及容量虚拟化功能可以由存储控制器200实现。在这种情况下,例如如图13所示,与图12所示的管理信息大致相同的管理信息被存储在共享存储器220中。图13所示的管理信息由存储控制器200参照以及更新,因此与图12所示的管理信息可以有一些不同。
在本实施方式中,如前所述,闪存封装230实现下位等级的长寿命化控制(损耗平衡控制)以及容量虚拟化功能,保持图12所示的管理信息。以下,详细说明该管理信息中包含的信息3000、3100、3200、3300以及3400。
图14表示封装信息3000。
以下,以一个闪存封装230(在图14的说明中称为“对象闪存封装”)为例,说明封装信息3000。
封装信息3000包含:封装ID3001、虚拟封装容量3002、实际封装容量3003、闪存块容量3004、封装块容量3005、封装可分配块数3006、封装空闲块数3007、故障块数3008、内部信息存储块数3009以及内部信息存储地址3010。
封装ID3001是对象闪存封装230的识别符。
虚拟封装容量3002表示从存储控制器200看到的对象闪存封装230的虚拟存储容量。
实际封装容量3003表示对象封装组280内、存储控制器200实际可以存储数据的存储容量。
闪存块容量3004是作为闪速存储器的删除单位的块的物理容量。另一方面,封装块容量3005是所述的虚拟块以及实际块中存储的数据的容量。两个容量3004以及3005中存在差异,主要是为了高性能化或块的长寿命化。以下说明该理由。假设两个容量3004以及3005相同。在这种情况下,在闪速存储器的全部实际块中存储数据。此时,假定封装控制器315从存储控制器200取得了改写实际块内的一部分数据的指示(普通的写指示)。由于闪速存储器的实际块无法改写,因此,封装控制器315必须将该实际块的全部数据读出到缓冲存储器330中,仅更新改写部分,在将该实际块一次删除后,将更新后的全部数据存储在该实际块中。若每当闪存封装230取得写指示时执行这种处理,则处理时间延长。为了解决该问题,在本实施方式中将封装块容量3005的值设为比闪存块容量3004小的值。由此,在实际块中存在空闲区域,若改写数据放入空闲区域,则对空闲区域进行追加写入。此外,在进行了该追加写入的情况下,对写入了对应的虚拟块内的哪个地址(可以是相对地址)的数据进行管理。在空闲区域减小,无法放入改写数据的情况下进行删除处理。由此,针对n次(n为1以上的整数)的写指示执行一次删除处理即可,因此可以使性能提高。另外,删除处理的次数的削减也与闪速存储器的长寿命化有关。
封装可分配块数3006表示对象闪存封装230具有的多个实际块中的、能够存储从存储控制器200取得的数据的实际块的数量。
封装空闲块数3007表示能够存储来自存储控制器300的数据的实际块中的、未被分配给虚拟块的实际块(空闲块)的数量。
故障块数3008表示成为故障状态而无法存储数据的实际块(不良块)的数量。
内部信息存储块数3009表示成为在封装存储器320中存储的封装信息3000、芯片信息3100、虚拟块信息3200、实际块信息3300以及空闲块指针3400的保存目的地(例如在停电或故障发生时的保存目的地)的实际块的数量。内部信息存储地址3010表示保存目的地实际块的地址。封装信息3000、芯片信息3100、虚拟块信息3200、实际块信息3300以及空闲块指针3400是重要的信息,因此可以将保存的信息n重化(n为2以上的整数)。另外,考虑到被保存的次数不太多,因此认为实际块的删除次数等也不成为问题。封装可分配块数3006、故障块数3008以及内部信息存储块数3009的合计,是对象闪存封装230具有的实际块的数量。
图15表示芯片信息3100。
芯片信息3100是针对每个闪存芯片300而存在的信息。以下,以一个闪存芯片(在图15的说明中称为“对象芯片”)为例,说明芯片信息3100。
芯片信息3100包含芯片ID3101、芯片内实际块数3102、芯片内空闲块数3103以及连接总线ID3104。
芯片ID3101是对象芯片300的识别符。
芯片内实际块数3102表示对象芯片300具有的实际块的数量。
芯片内空闲块数3103表示对象芯片300具有的空闲块的数量。
连接总线ID3104是连接了对象芯片300的封装总线340的识别符。
图16表示虚拟块信息3200。
虚拟块信息3200是针对每个虚拟块而存在的信息。以下,以一个虚拟块(在图16的说明中称为“对象虚拟块”)为例,说明虚拟块信息3200。假定虚拟块信息3200以虚拟块的地址顺序排列。最初的虚拟块信息3200对应于先头的虚拟块。
虚拟块信息3200包含:虚拟块ID3201、虚拟块信息指针3202、虚拟块分配时间3203以及虚拟块删除次数3204。
虚拟块ID3201是对象虚拟块的识别符。
实际块信息指针3202是针对被分配给对象虚拟块的实际块的实际块信息3300的指针。
虚拟块分配时刻3203是从存储控制器200接受指定了未被分配实际块的对象虚拟块内的地址的写指示的时刻。
虚拟块删除次数3204是在虚拟块分配时刻3203以后被分配给对象虚拟块的实际块的删除次数。为了执行层次型的长寿命化控制以及层次型的容量虚拟化,当包含对象虚拟块的实际页内的数据被移动到别的实际页时,对移动目的地实际页交接虚拟块分配时刻3203以及虚拟块删除次数3204。该交接处理中,存储控制器200读出关于被分配给移动源实际页的各个虚拟块的虚拟块分配时刻3203以及虚拟块删除次数3204,交接给被分配给移动目的地实际页的各个虚拟块的虚拟块分配时刻3203以及虚拟块删除次数3204。
图17表示实际块信息3300。
实际块信息3300是针对每个实际块而存在的信息。以下,以一个实际块(在图17的说明中称为“对象实际块”)为例,说明信息3300。
实际块信息3300包含:实际块ID3301、空闲块指针3302、实际块故障标志3303、实际块内空闲容量3304、追加写入数据地址信息3305以及实际块删除次数3306。
实际块ID3301是对象实际块的识别符。该ID3301表示是相当于哪个闪存芯片300的哪个地址的实际块。
空闲块指针3302在对象实际块为空闲块的情况下(未分配给任何虚拟块的情况下)是指下一空闲块的实际块信息3300。
实际块故障标志3303在对象实际块成为故障状态、无法存储数据时被设为开(ON)。
实际块内空闲容量3304表示对象实际块的当前的空闲容量。该值最初例如是(闪存块容量3004-封装块容量3005)。封装处理器310从存储控制器200接受针对对象实际块写入该空闲容量以下的数据的写指示,在该空闲区域中写入写指示的对象数据。在写入后,将实际块内空闲容量3304的值减小所写入的数据量。
追加写入数据地址信息3305是在最初的空闲区域(((闪存块容量3304-封装块3305))的容量的区域)中进行了追加写入的全部数据的虚拟块内的相对地址和数据长度的集合值。
实际块删除次数3306表示对象实际块的到当前为止的删除次数。
图18表示通过空闲块信息指针3400管理的空闲块的集合。
空闲块管理信息指针3400指向先头的空闲块的实际块信息3300的地址。接着,先头的空闲块的实际块信息3300中的空闲块指针3302表示下一空闲块的实际块信息3300。在图18中,最后的空闲块的实际块信息3300的空闲块指针2103表示空闲块信息指针3400,但是也可以是空值。封装处理器310当接受指定了未被分配实际块的虚拟块内的地址的写指示时,从某个闪存芯片300(例如空闲块数最多的芯片)中基于与该芯片对应的空闲块信息指针3400搜索空闲块,将找到的空闲块(实际块)分配给虚拟块。
接着,说明由存储控制器200以及封装控制器315进行的处理。
首先,说明存储控制器200进行的处理。存储控制器200进行的处理,通过由处理器260执行在存储器270内存储的程序而实现。以下,以存储器270内的程序为主语来说明的处理,实际上是由处理器260进行的处理。
图19表示在存储器270中存储的程序。
作为程序,例如有读处理执行部4000、写请求接受部4100、写后(writeafter)处理执行部4200、写同(write same)命令处理执行部4300、页移动调度部4400以及页移动处理执行部4500。这些程序包含上位等级的长寿命化控制以及容量虚拟化功能。此外,如上所述,本实施方式实现下位等级的长寿命化控制以及容量虚拟化功能的是封装控制器315,但是,下位等级的长寿命化控制以及容量虚拟化功能也可以通过存储控制器200实现。在这种情况下,上位等级的程序和下位等级的程序双方由存储控制器200执行,因此,程序间的接口不同,但是,上位等级的程序执行的内容基本上没有大的差别。因此,在本实施方式中,以由封装控制器315实现下位等级的长寿命化控制以及容量虚拟化功能为前提,详细说明读处理执行部4000、写请求接受部4100、写后处理执行部4200、写同命令处理执行部4300、页移动调度部4400、页移动处理执行部4500分别进行的处理的流程。
图20表示读处理执行部4000的处理流程。
当存储控制器200从主机110接受读请求时执行读处理执行部4000。在图20的说明中,将读请求的对象数据称为“读对象数据”,将从读请求确定的逻辑卷、虚拟页以及该虚拟页中的区域称为“读源逻辑卷”、“读源虚拟页”以及“读源区域”。
步骤5000:执行部4000根据由所取得的读请求指定的设为读对象的地址,计算读源虚拟页和读源区域的相对地址。
步骤5001:执行部4000判断读对象数据是否存在于高速缓冲存储器210中(是否快取成功(cache hit))。若快取成功,则进行步骤5010,若快取失败(cache miss),则进行步骤50002。
步骤5002:在快取失败的情况下,首先,执行部4000判断与读源虚拟页对应的格式信息2005是否是有效的值。若不是有效,则跳转到步骤5004。
步骤5003:在格式信息2005有效的情况下,执行部4000在读源区域中存储了该模式数据(重复信息)。因此,执行部4000在高速缓冲存储器210中存储该信息2005具有的模式数据,并跳转到步骤5010。
步骤5004:在此,需要将读对象数据载入高速缓冲存储器210。首先,执行部4000从与读源逻辑卷对应的信息2000内的实际页指针2004获得与被分配给读源虚拟页的实际页(以下,在图20的说明中称为“读源实际页”)对应的实际页信息2100。
步骤5005:执行部4000从所获得的实际页管理信息2100内的封装组2101以及实际页地址2102,得到读源实际页所属的封装组280和读源实际页的封装组280内的先头地址。
步骤5006:执行部4000从读源虚拟页内的相对地址和封装组RAID类型2302计算读源实际页内的相对地址。执行部4000基于计算出的实际页内相对地址、与读源实际页对应的封装组RAID类型2302以及闪存封装指针2305,确定存取哪个闪存封装230的哪个地址。
步骤5007:执行部4000对在步骤5006中确定的闪存封装230发送指定了在该步骤5006中确定的地址的读指示。
步骤5008:执行部4000等待从读指示的发送目的地闪存封装230发送来读指示的对象数据。
步骤5009:执行部4000将从闪存封装230发送来的数据存储在高速缓冲存储器150中。
步骤5010:执行部4000向主机110发送在高速缓冲存储器210中存储的读对象数据。
图21表示写请求接受部4100的处理流程。
当存储控制器200从主机110接受了写请求时执行写请求接受部4100。在图21的说明中,将写请求附带的数据称为“写对象数据”,将从写请求确定的逻辑卷、虚拟页以及该虚拟页中的区域称为“写目的地逻辑卷”、“写目的地虚拟页”以及“写目的地区域”。
步骤6000:接受部4100根据取得的写请求设为写对象的地址,计算对应的写目的地虚拟页和写目的地区域的相对地址。
步骤6001:接受部4100参照与写目的地虚拟页对应的实际页指针(与写目的地逻辑卷对应的信息2000内的指针)2004,判断是否对步骤6000中得到的写目的地虚拟页分配了实际页。在未分配的情况下进行步骤6002,在已分配的情况下跳转到步骤6003。
步骤6002:接受部4100向写目的地虚拟页分配空闲页。具体来说,例如接受部4100进行以下的(a)~(e):
(a)参照与写目的地逻辑卷对应的信息2000内的RAID类型2002、和封装组信息2300内的封装组RAID类型2303以及空闲页数2304等,决定将成为哪个封装组280的基础的实际页分配给写目的地虚拟页;
(b)参照与决定的封装组280对应的空闲页管理信息指针2400,将与写目的地虚拟页对应的实际页指针2004更新为表示先头的空闲页信息2100(由此,向写目的地虚拟页分配了空闲页);
(c)将空闲页管理信息指针2400更新为表示下一实际页信息2100(被分配给虚拟页的实际页的实际页信息2100中的空闲页指针2103表示的实际页信息2100);
(d)将分配给写目的地虚拟页的实际页的实际页信息2100中的空闲页指针2103设为空值;
(e)减去与所分配的实际页对应的封装组信息2300的空闲页数2304表示的值。
在本实施方式中,当接受了写请求时执行向虚拟页分配空闲页的处理,但只要在向闪存封装230存储数据之前执行该分配处理即可。此后,跳转到步骤6005。
步骤6003:接受部4100判断与写目的地虚拟页对应的格式信息2005是否是有效的值。若不是有效,则跳转到步骤6005。
步骤6004:通过该写请求的执行,与写目的地虚拟页对应的格式信息2005变为无效的值。因此,需要通过该写请求,在写目的地虚拟页中的写目的地区域以外的区域中写入与写目的地虚拟页对应的此前的格式信息2005。因此,在此,接受部4100在高速缓冲存储器210中存储与写目的地虚拟页对应的格式信息2005具有的模式数据(通过该写请求,在下面的步骤6005中取得写对象数据)。另外,接受部4100在该模式数据上附加表示写入哪个闪存封装230的哪个地址的信息。为了获得这些信息,在此接受部4100也执行图20的步骤5004以及5005的处理。此后,与写目的地虚拟页对应的格式信息2005被设为无效的值。
步骤6005:接受部4100将来自主机110的写对象数据存储在高速缓冲存储器210中。在步骤6004中将模式数据存储在高速缓冲存储器210中的情况下,将写目的地区域的重复模式替换为此时取得的写对象数据。此时,也对该写对象数据附加表示应该在哪个闪存封装230的哪个地址写入的信息。为了获得这些信息,在此也执行图20的步骤5004以及5005的处理。
封装组280具有RAID结构。因此,在高速缓冲存储器210上存储的写对象数据中有时必须生成冗余数据。另外,实际页具有存储冗余数据的区域,因此也唯一地决定与写对象数据对应的冗余数据的实际页内的写目的地地址。冗余数据也被一次存储在高速缓冲存储器210中。此外,高速缓冲存储器210上的冗余数据也与写对象数据同样地附加了表示应该在哪个闪存封装230的哪个地址进行写入的信息。写对象数据以及冗余数据通过写后处理执行部5200被写入闪存封装230。从写后处理执行部5200来看,这些数据都是向闪存封装230写入的数据,因此不需要区别二者(即是写对象数据还是冗余数据)。同样,闪存封装230也不需要区别二者。
图22表示写后处理执行部4200的处理流程。
写后处理执行部4200被适当地(例如定期地)执行。执行部4200进行将高速缓冲存储器210内的写对象数据以及冗余数据写入闪存封装230的写后处理。但是,执行部4200将写对象数据以及冗余数据的二者作为应该写入闪存封装230的数据(在图22的说明中称为“降级(destage)对象数据”),不区别二者地进行处理。
步骤7000:执行部4200在高速缓冲存储器210中查找,决定降级对象数据。
步骤7001:执行部4200取得被赋予了所找到的降级对象数据的地址信息,向基于地址信息而确定的闪存封装230发送指定了基于地址信息而确定的写目的地地址的写指示和降级对象数据。此外,当与写目的地实际页(被分配了具有写目的地地址的虚拟块的实际页)对应的移动中标志2109为ON时,写目的地实际页内的数据在移动过程中。在这种情况下,执行部4200中止在步骤7000中决定的降级对象数据的写处理,搜索别的降级对象数据。另外,执行部4200向发送给闪存封装230的指示赋予从计时器240取得的当前时刻(可以是存储系统100内唯一决定的计数器等)。被赋予写指示的时刻,被用于后述的平均删除次数的计算(具体来说,被用于累计实际页分配时间2106、封装内累计实际页分配时间2507的更新)。
步骤7002:执行部4200等待从闪存封装230接受写完成报告(针对写指示的完成报告)。
步骤7003:执行部4200执行以下的(a)~(c):
(a)根据来自闪存封装230的写完成报告,判断是否向具有通过写指示所指定的地址的虚拟块(写目的地虚拟块)分配了实际块;
(b)若分配了实际块((a)的判断结果为肯定),则将所分配的实际块的数量(在图22的说明中称为“此次分配数”)、与写目的地实际页对应的追加实际块分配数2105、以及与写目的地封装(成为写目的地实际页的基础的闪存封装)230对应的封装内追加实际块分配数2506相加;
(c)在此次分配数上乘以(下次调度时刻2701-当前时刻(当前的计时器240的值)),将该乘法运算值、与写目的地实际页对应的追加实际块分配时间2108、与写目的地封装230对应的封装内追加实际块分配时间2509相加。
在(c)中,例如若此次分配数为3,(下次调度时刻2701-当前时刻)为40分钟,则120分钟成为乘法运算值,将120分钟分别和与写目的地实际页对应的时间2108、以及与写目的地封装230对应的时间2509相加。
步骤7004:执行部4200执行以下的(a)以及(b):
(a)根据来自闪存封装230的写完成报告,判断是否发生了针对实际块的删除处理;
(b)若发生了删除处理((a)的判断结果为肯定),则将发生的删除次数(例如若在2个实际块中发生了一次删除处理,则删除次数为2)加到与写目的地实际页对应的累计实际块删除次数2107、与写目的地封装对应的封装内累计实际块删除次数2508上(当存在累计写数据量2112以及封装内累计写数据量2510时,将通过本写后处理写入的降级对象数据的量,分别加到这些信息2112以及2510上)。
步骤7005:执行部4200执行以下的(a)以及(b):
(a)根据来自闪存封装230的写完成报告,判断是否存在删除次数达到一定值以上(成为故障状态)的实际块;
(b)若存在成为故障状态的实际块((a)的判断结果为肯定),则从与写目的地封装对应的可分配实际块数2504中减去成为故障状态的实际块的数量。
图23表示写同命令处理执行部4300的处理流程。
在存储控制器200从主机110取得了写同命令时,执行写同命令处理执行部4300。写同命令是将模式数据(例如短模式数据)重复写入某个存储区域的请求。存储控制器200存储不将该模式数据写入通过写同命令指定的存储区域(虚拟页内的存储区域),而在所指定的存储区域对应的虚拟页中存储了模式数据的情况,释放被分配给该虚拟页的实际页(解除实际页的分配)。由此,节约消耗存储容量。此外,为了将分配给与所释放的实际页对应的虚拟块的实际块(在图23的说明中称为“释放实际块”)分配给其它虚拟块,需要针对释放实际块的删除处理。在本实施方式中,存储控制器200在取得写同命令时,向闪存封装230指示释放实际块的删除处理。写同命令从存储控制器200被发送到封装控制器315,封装控制器315也可以应答该请求,进行实际块的释放以及删除处理。此外,在对通常的写请求进行应答,写入全0等模式数据(例如格式数据)时,存储控制器200或者封装控制器315也可以识别模式数据,使释放实际块释放。
步骤8000:执行部4300确定与通过接受的写同命令指定的存储区域(以下称为写指定区域)有关的虚拟页的集合。写指定区域例如相当于虚拟页的一部分区域(以下称为虚拟部分区域)、一个以上的虚拟页全部区域、或者它们的组合。
步骤8001:在本实施方式中,若指定了虚拟页全体,则对应的实际页成为释放的对象。另外,若指定了虚拟块全体,则有可以释放闪存封装160中的实际块的可能性。在RAID0或RAID1的情况下,若指定了虚拟块全体则可以释放对应的实际块。但是,即使指定了虚拟块全体,如RAID5那样在由N个数据生成1个冗余数据时也无法单纯地释放对应的实际块。在本实施方式中,假定在指定了构成RAID5的N个虚拟块全体的情况下释放存储了对应的N个实际块和该冗余数据的1个实际块。在指定了虚拟块的一部分区域或构成RAID5的N个虚拟块的一部分区域的情况下,需要在所指定的存储区域中写入所指定的信息模式。在该步骤中,执行部4300对需要在闪存封装230中写入信息模式的区域、和能够释放实际块的闪存封装230内的区域进行分类。在不需要向闪存封装230写入信息模式的情况下跳转到步骤8003。
步骤8002:执行部4300将写入闪存封装230的模式数据存储在高速缓冲存储器210中。此时,对该模式数据赋予在哪个闪存封装230的哪个区域中写入的地址信息,此后,该模式数据被写入闪存封装230,以便与写请求附带的写对象数据相同。
步骤8003:执行部4300判断是否存在可释放的实际块以及实际页。在都不存在的情况下结束本处理流程。
步骤8004:执行部4300将指定了在步骤8001中判别出的闪存封装230的存储区域的释放指示发送到该闪存封装230。该释放指示有可能被发送到构成封装组280的一个以上的闪存封装230。
步骤8005:执行部4300从释放指示的发送目的地的全部闪存封装230等待处理报告。
步骤8006:各闪存封装230内的封装控制器315,作为该释放指示的应答,关于各虚拟块向存储控制器200报告实际所释放的虚拟块的个数(=实际块的个数)、和针对各虚拟块分配了实际块的时刻和虚拟块的删除次数。在本步骤中,执行部4300判断每个虚拟块的实际块分配时刻,分类为具有上次调度时刻2701以前的值的虚拟块、具有上次调度时刻2701以后的值的虚拟块。在以下的步骤8007以及8008中,从实际页信息2100以及闪存封装信息2500所具有的信息中削减与所释放的实际块相关的属性(例如分配时间)。
步骤8007:本步骤的处理是针对具有上次调度时刻2701以前的值的虚拟块的集合的处理。执行部4300执行以下的(a)~(f):
(a)针对各个实际块分配时刻的每一个,计算(实际块分配时刻-上次调度时刻2701),将该值与对应的实际页以及闪存封装230的每个相加(实际块分配时刻,例如是由存储控制器200的写指示赋予的时刻);
(b)从对应的全部实际页信息2100内的累计实际页分配时间2106、和对应的全部闪存封装管理信息2500内的封装内累计实际页分配时间2507中,减去各个加法运算出的值;
(c)针对每个对应的实际页以及闪存封装230,将各个虚拟块的删除次数相加;
(d)从对应的全部实际页信息2100内的累计实际页删除次数2107、和对应的全部闪存封装管理信息2500内的封装内累计实际页删除次数2508减去各个加法运算出的值;
(e)针对每个实际页以及闪存封装230分别计数存在多少个具有实际块分配时刻的虚拟块;
(f)从对应的全部实际页信息2100内的累计实际页分配书2104、和对应的全部闪存封装管理信息2500内的封装内实际页分配数2505削减各个计数值。
步骤8008:本步骤的处理是针对具有上次调度时刻2701以后的值的虚拟块的集合的处理。执行部4300执行以下的(a)~(f):
(a)针对各个实际块分配时刻的每一个,计算(下次调度时刻2701-实际块分配时刻),针对每个对应的实际页以及闪存封装230将该值相加。
(b)从对应的全部实际页信息2100内的追加实际页分配时间2108、和对应的全部闪存封装管理信息2500内的封装内追加实际页时间2509中,减去各个加法运算出的值;
(c)针对每个对应的实际页以及闪存封装230,将各个虚拟块的删除次数相加;
(d)从对应的全部实际页信息2100内的追加实际页删除次数2109、和对应的全部闪存封装管理信息2500内的封装内追加页删除次数2510中,减去各个加法运算出的值。
(e)针对每个实际页以及闪存封装230分别对存在多少个具有实际块分配时刻的虚拟块进行计数(此外,该处理由于在步骤8007中进行,因此可以省略);
(f)从对应的全部实际页信息2100内的追加实际块分配数2105、和对应的全部闪存封装管理信息2500内的封装内追加实际页分配数2506中,减去各个计数值。
步骤8009:执行部4300通过上述接受的写同命令,判断是否存在可以从虚拟页释放的实际页。如果不存在,则结束本处理流程。
步骤8010:本步骤的处理是从虚拟页释放实际页的处理。执行部4300执行(a)~(e):
(a)将与可释放的实际页对应的实际页信息2100登录在空闲页管理信息指针2200的队列中;
(b)针对每个成为可释放的实际页的基础的闪存封装组280计算可以释放的实际页数;
(c)从对应的封装组信息2300内的空闲页数2304中减去针对每个封装组280而计算出的值;
(d)针对每个释放的实际页,将逻辑卷信息2000内的实际页指针2004设为空值;
(e)将写同命令附带的模式数据包含在格式信息2005中。
由此,存储控制器200可以识别在与写指定区域相关的虚拟页中存储了在格式信息2005中包含的模式数据。
图24表示页移动调度部4400的处理流程。
当计时器240达到下次调度时刻2702时开始执行页移动调度部4400。
步骤10000:调度部4400关于各闪存封装230执行以下的(a)~(e):
(a)在封装内累计实际块分配时间2507上,加上在封装内实际块分配数2505上乘以(下次调度时刻2702-上次调度时刻2701)所得的值;
(b)在封装内累计实际块分配时间2507上,加上封装内追加实际块分配时间2509;
(c)将块封装内追加实际块分配时间2509设为0;
(d)在封装内实际块分配数2505上加上封装内追加实际块数2506;
(e)将封装内追加实际块数2506设为0。
通过(a)和(b)反映(加法运算)了上次调度时刻2701以后被分配的实际块的分配时间。原因在于,在封装内追加实际块分配时间2509上,针对上次调度时刻2701以后被分配的该闪存封装的每个实际块,相加了(下次调度实际时刻2702-实际块分配时刻)。
步骤10001:调度部4400关于各实际页执行以下的(a)~(e):
(a)在累计实际块分配时间2106上,加上在实际块分配数2104上乘以(下次调度时刻2702-上次调度时刻2701)所得的值;
(b)在累计实际块分配时间2106上,加上追加实际块分配时间2108;
(c)将追加实际块分配时间2108设为0;
(d)在实际块分配数2104上,加上追加实际块数2105;
(e)将追加实际块数2105设为0。
通过(a)和(b)能够反映(加法运算)在上次调度时刻2701以后被分配的实际块的分配时间。原因在于,在追加实际块分配时间2108上,针对上次调度时刻2701以后被分配的该实际页的每个实际块,相加了(下次调度实际时刻2702-实际块分配时刻)。
步骤10002:调度部4400关于各闪存封装230执行以下的(a)~(d):
(a)将封装内累计实际块删除次数2508除以封装内累计实际块分配时间2507;
(b)将封装内实际块分配数2505除以可分配实际块数2504;
(c)从多个封装组280中决定移动源封装组;
(d)从多个封装组280中决定移动目的地封装组。
在(a)中得到的值成为在未进行实际页的分配的变更时的各个闪存封装230的实际块的单位时间的平均删除次数(以下简称为“平均删除次数”)。此外,在代替封装内累计实际块删除次数2508而具有封装内累计写数据量2510时,从该写数据量2510推测封装内累计实际块删除次数2508的值。具体来说,例如通过封装内累计写数据量2510/(闪存块容量3004-封装块容量3005)而计算出的值,是封装内累计实际块删除次数2508的推测值。这是因为最初(闪存块容量3004-封装块容量3005)成为空闲容量,当该空闲容量消失时发生删除处理。
调度部4400可以将剩余寿命短的封装组决定为移动源封装组,但是“剩余寿命”根据平均删除次数和删除极限数2512来计算。具体来说,例如通过计算{(删除极限数2512-封装内累计实际块删除次数2508)/平均删除次数}+当前时刻(从计时器240取得的时刻),得到关于一个封装组230的剩余寿命。
在(b)中得到的值成为在未进行实际页的分配的变更的情况下的各个闪存封装230的实际块的占有率。
在本实施方式中,根据该平均删除次数或实际块的占有率决定移动源封装组。以下说明各个情况。
<平均删除次数>
调度部4400例如将平均删除次数多、或剩余寿命短的封装组决定为移动源封装组。具体来说,例如,调度部4400将包含适合于下述(A1)~(A3)的至少一个的闪存封装的封装组决定为移动源封装组:
(A1)平均删除次数超过预定的第一阈值;
(A2)剩余寿命比保障期间结束时刻2511短;
(A3)平均删除次数与其它闪存封装230相比多到一定的比例以上(即,在闪存封装230间,平均删除次数的不平衡大)。
调度部4400,例如将平均删除次数少或者剩余寿命长的封装组决定为移动目的地封装组。具体来说,例如调度部4400将包含适合与下述(B1)~(B3)的至少一个的闪存封装的封装组决定为移动目的地封装组:
(B1)平均删除次数在预定的第二阈值以下(第二阈值在所述第一阈值以下);
(B2)剩余寿命比保障期间结束时刻2511长;
(B3)平均删除次数与其它闪存封装230相比,少到不足一定的比例。
更具体来说,例如对于包含上述(A1)的闪存封装230的移动源封装组,将包含(B1)的闪存封装230的封装组280决定为移动目的地,对于包含上述(A2)的闪存封装230的移动源封装组,将包含(B2)的闪存封装230的封装组280决定为移动目的地,对于包含上述(A3)的闪存封装230的移动源封装组,将包含(B3)的闪存封装230的封装组280决定为移动目的地。此时,成为移动目的地的封装组280,例如根据与移动源的平均删除次数的差、或剩余寿命的差被决定。
<实际块的占有率>
调度部4400例如将包含适合于下述(X1)以及(X2)的至少一个的闪存封装的封装组280决定为移动源封装组:
(X1)实际块的占有率超过预定的第三阈值(闪存封装230有装满的可能性);
(X2)可分配实际块数2504不满足某基准(例如在预定的第五阈值以下)。
调度部4400例如将包含适合于下述(Y1)以及(Y2)的至少一个的闪存封装的封装组决定为移动目的地封装组:
(Y1)平均删除次数在预定的第四阈值以下(第四阈值在所述第三阈值以下);
(Y2)可分配实际块数2504满足某基准(例如超过预定的第六阈值(第六阈值在所述第五阈值以上))。
步骤10003:调度部4400执行:
(a)决定移动源页(数据的移动源实际页)和移动目的地页(数据的移动目的地实际页)(即,调度部4400从基于移动源封装组的多个实际页决定移动源页,并且从基于移动目的地封装组的多个实际页决定移动目的地页);
(b)将与所决定的全部移动源页对应的移动等待标志2111更新为ON;
(c)将与分配移动目的地页的封装组280对应的空闲页管理信息指针2200所指的实际页信息2100设定为移动源页的复制目的地实际页信息指针2110;
(d)将空闲页管理信息指针2200更新为表示下一处于空闲状态的页管理信息2100。
关于所决定的全部移动源页执行上述(c)以及(d)。由此决定了移动源页和移动目的地页的配对。
在(a)中,调度部4400例如基于属于移动源封装组280的各实际块信息2100的累计实际块分配时间2106、累计实际块删除次数2107(取而代之,累计写数据量2112)、实际块分配数2104等中的至少一个,决定移动源页。具体来说,例如调度部4400所决定的移动源页具有下述(x)或(y)的特征:
(x)所决定的移动源页的累计实际块删除次数2107尽量接近该移动源页的累计实际块删除次数2107和移动目的地页(移动目的地的实际页)的累计实际块删除次数2107的差(最好相等);
(y)所决定的移动源页的实际块占有率尽量接近该移动源页的实际块占有率和移动目的地页的实际块占有率的差(最好相等)。
例如在移动源封装组是与上述(A1)~(A3)的某一个对应的组的情况下,决定具有(x)的特征的移动源页。在移动源封装组是与上述(B1)或(B2)对应的组的情况下,决定具有(y)的特征的移动源页。
步骤10004:调度部4400,在针对每个封装组160而存在的页移动处理执行部4500中,启动与具有至少一个移动源页的封装组280对应的页移动处理执行部4500。
步骤10005:调度部4400执行以下的(a)以及(b):
(a)将下次调度时刻2701复制到上次调度时刻2701;
(b)在下次调度时刻2701中设定下一调度时间(例如,将下次调度时刻2701更新为在当前的下次调度时刻2701中加上预定的时间而得的时刻)。
图25表示页移动处理执行部4500的处理流程。
页移动处理执行部4500针对每个封装组280而存在。另外,如图24的步骤10004中所述那样,与具有至少一个移动源页的封装组280对应的页移动处理执行部4500由页移动调度部4400启动。
步骤11000:执行部4500搜索包含成为了ON的移动等待标志2111的实际页信息2100。与该实际页信息2100对应的实际页是移动源页。如果没有包含成为了ON的移动等待标志2111的实际页信息2100,则本处理流程结束。
步骤11001:执行部4500将找到的实际页信息2100内的移动等待标志2111设为OFF,将移动中标志2109设为ON。
步骤11002:执行部4500确定被分配给移动源页的虚拟块的集合。与移动源页对应的封装组2101表示的封装组信息2300是相应的封装组信息2300。与该封装组信息2300内的闪存封装指针2305表示的闪存封装信息2500对应的闪存封装230是成为移动源页的基础的闪存封装(移动源封装)230。执行部4500根据与移动源页对应的实际页地址2102、与移动源封装对应的块容量2503,关于全部闪存封装230确定各个闪存封装230中的成为移动对象的虚拟块的集合。
步骤11003:执行部4500向构成移动源组(成为移动源页的基础的封装组)280的各闪存封装230的封装控制器315发送在所确定的虚拟块的集合中存储的数据的读指示。
步骤11004:执行部4500从步骤11003中的指示的发送目的地的全部闪存封装230等待完成报告。
步骤11005:执行部4500将来自闪存封装230的完成报告中包含的信息存储在高速缓冲存储器210中。此外,在该完成报告中包含表示是否对通过在步骤11003中发送的指示所指定的各虚拟块(读源虚拟块)分配了实际块的信息。在对读源虚拟块分配了实际块的情况下,在完成报告中包含以下的信息(A)~(C):
(A)在被分配给读源虚拟块的实际块中存储的数据;
(B)从没有对读源虚拟块分配实际块的状态初次分配了实际块(不限于当前已分配的实际块)的时刻;
(C)在(D)的时刻以后的被分配给读源虚拟块的实际块的删除次数。
步骤11006:执行部4500确定被分配给移动目的地页的虚拟块的集合。在这种情况下,与移动源页对应的实际页信息2100内的移动目的地页指针2110表示的实际页信息2100是与移动目的地页对应的实际页信息2100。
步骤11007:执行部4500向构成移动目的地组(成为移动目的地页的基础的封装组)280的各闪存封装230的封装控制器315发送在所确定的虚拟块(写目的地虚拟块)中存储数据的写指示。此时,被发送到各封装控制器315的信息是在步骤1105中存储在高速缓冲存储器210中的信息(从移动源封装230发送的信息)。
步骤11008:执行部4500从写指示的发送目的地的全部闪存封装230等待完成报告。
步骤11009:执行部4500执行以下的(a)~(c):
(a)将移动源页更新为空闲页,并且将移动目的地页分配给此前未被分配移动源页的虚拟页(具体来说,对于与移动源页对应的实际页信息2100关联空闲页管理指针2200,使此前表示移动源页的实际页指针2004表示与移动目的地页对应的实际页信息2100);
(b)将与移动源页对应的实际页信息2100中的实际块分配数2104、追加实际块分配数2105、累计实际块分配时间2106、累计实际块删除次数2107(累计写数据量2112)、追加实际块分配时间2108复制到与移动目的地页对应的实际页信息2100;
(c)在与移动源页对应的实际页信息2100中清除信息2104~2111。
步骤11010:执行部4500更新与移动源对应的全部封装组信息2300和与移动目的地对应的全部封装组2300。具体来说,执行部4500从与移动源对应的封装组信息2300内的实际页数2303中减去移动源页的数量(例如1),在与移动目的地对应的封装组信息2300内的实际页数2303上加上移动目的地页的数量。
步骤11011:执行部4500更新与移动源对应的全部闪存封装信息2500和与移动目的地对应的全部闪存封装信息2500。具体来说,执行部4500例如执行以下的(a)以及(b):
(a)从与移动源对应的各个闪存封装信息2500内的下述(A)~(F)的各个值中,减去与移动目的地页对应的实际页信息2100中的、与各个闪存封装230对应的下述(U)~(Z)的各个值(即,进行(A)-(U)、(B)-(V)、(C)-(W)、(D)-(X)、(E)-(Y)以及(F)-(Z))。
(A)封装内实际块分配数2505、
(B)封装内追加实际块分配数2506、
(C)封装内累计实际块分配时间2507、
(D)封装内累计实际块删除次数2508、
(E)封装内追加实际块分配时间2509、
((F)封装内累计写数据量2510)
(U)实际块分配数2104、
(V)追加实际块分配数2105、
(W)累计实际块分配时间2106、
(X)累计实际块删除次数2107、
(Y)追加实际块分配时间2108、
((Z)累计写数据量2112)
(封装内累计写数据量2510和累计写数据量2112有时不存在,在这种情况下,不执行从封装内累计写数据量2510中减去累计写数据量2112的处理。)、
(b)在与移动源对应的各个闪存封装信息2500内的下述(G)~(L)的各个值上,分别加上与移动目的地页对应的实际页信息2100中的、与各个闪存封装230对应的下述(O)~(T)的各个值(即,进行(G)+(O)、(H)+(P)、(I)+(Q)、(J)+(R)、(K)+(S)、以及(L)+(T));
(G)封装内实际块分配数2505、
(H)封装内追加实际块分配数2506、
(I)封装内累计实际块分配时间2507、
(J)封装内累计实际块删除次数2508、
(K)封装内追加实际块分配时间2509、
((L)封装内累计写数据量2510)
(O)实际块分配数2104、
(P)追加实际块分配数2105、
(Q)累计实际块分配时间2106、
(R)累计实际块删除次数2107、
(S)追加实际块分配时间2108、
((T)累计写数据量2112)
(封装内累计写数据量2510和累计写数据量2112有时不存在,在这种情况下,不执行在封装内累计写数据量2510上加上累计写数据量2112的处理。)。此后,返回步骤11000。
可以比本实施方式更简单地管理(a)的累计分配时间。例如,在从进行前一次的上位等级的长寿命化控制后到进行此次的上位等级的长寿命化控制为止的期间,即使被分配的实际块的数量有变更,也可以适当地忽视该变更。
存储控制器200例如可以根据从闪存封装230接受的信息确定实际块的删除次数或分配时间,可以将所确定的删除次数以及分配时间反映到每个闪存封装的累计分配时间或全体删除次数。
接着,说明闪存封装230执行的动作。闪存封装230的动作由封装控制器315(典型的是封装处理器310)执行,其程序被存储在封装存储器320内。
图26表示在封装存储器320中存储的程序。
作为程序,例如有数据读处理执行部12000、数据写处理执行部12100、实际块释放处理执行部12200、虚拟块移动处理执行部12300以及虚拟块存储处理执行部12400。这些程序是用于实现下位等级的损耗平衡控制以及容量虚拟化功能的程序。如前所述,在本实施方式中,闪存封装230实现下位等级的损耗平衡控制以及容量虚拟化功能,但是它们也可以通过存储控制器200来执行。在这种情况下如图27所示,与图26所示的程序大致相同的程序被存储在共享存储器220中。在图27所示的结构中,这些信息由存储控制器200执行,因此与图26所示的各个程序产生一些差异。
以下,以封装存储器320内的程序12000、12100、12200、12300以及12400为主语来说明的处理,实际上是由封装处理器310进行的处理。
图28表示数据读处理执行部12000的处理流程。
在从存储控制器200取得读指示时,执行数据读处理执行部12000。在以下的说明中,以从一个虚拟块读出数据为例,但是即使从多个虚拟块读出数据,图28的处理流程也有效。
步骤13000:执行部12000根据接收到的读指示所指定的地址、和封装块容量3005,计算成为读源的虚拟块和读源虚拟块内的相对地址。
步骤13001:执行部12000从与读源虚拟块对应的虚拟块信息3200内的实际块信息指针3202获得与被分配给读源的虚拟块的实际块(读源实际块)对应的实际块信息3300。
步骤13002:执行部12000执行以下的(a)以及(b):
(a)从所获得的实际块信息3300内的实际块ID3301,确定与该ID3301对应的实际块的先头是哪个闪存芯片300的哪个地址;
(b)根据在(a)中确定的地址、上述获得的实际块信息3300内的追加写入数据地址信息3305、在步骤13000中得到的读指示中成为存取对象的虚拟块内的相对地址,计算从该读指示确定的虚拟块被存储在该闪存芯片300的哪个该地址。
步骤13003:执行部12000参照与存储了读对象的数据的闪存芯片300对应的芯片信息3100,识别连接该闪存芯片300的封装总线340,并识别对应的封装总线传输装置350。
步骤13004:执行部12000对在步骤13003中识别出的封装总线传输装置350指示从哪个闪存芯片300的哪个地址(实际块的地址)向缓冲存储器330传输数据。
步骤13005:执行部12000等待传输完成。
步骤13006:执行部12000将存储在缓冲存储器330中的数据(来自存储控制器200的读指示的对象数据)发送给存储控制器200。
图29和图30表示数据写处理执行部12100的处理流程。
当闪存封装230从存储控制器200接受写指示时,执行数据写处理执行部12100。在以下的说明中采用向一个虚拟块写入数据为例,但是,图29和图30的处理流程即使向多个虚拟块写入数据也有效。
步骤14000:执行部12100根据接受的写指示所指定的地址、和封装块容量3005,计算写目的地的虚拟块和该虚拟块的相对地址。
步骤14001:执行部12100将上述写指示附带的写对象数据存储在缓冲存储器330中。
步骤14002:执行部12100参照与写目的地虚拟块对应的虚拟块信息3200内的实际块信息指针3202。执行部12100判断该指针3202的值是否为空值,即是否分配了实际块。若已分配(该判断的结果为肯定)则跳转到步骤14005。
步骤14003:本步骤是对写目的地虚拟块分配空闲块的步骤。此外,在此假定被分配的空闲块被删除,数据未被存储。执行部12100执行以下的(a)~(e):
(a)参照各芯片信息3100的芯片内空闲块数3103等,决定分配哪个闪存芯片300的空闲块;
(b)参照与具有所决定的空闲块的闪存芯片300对应的空闲块管理信息指针3400,将与写目的地虚拟块对应的实际块信息指针3302更新为表示先头的实际块信息3300(由此,对写目的地虚拟块分配了实际块);
(c)将空闲块管理信息指针3400更新为表示下一实际块信息3300(与被分配给虚拟块的实际块对应的实际块信息3300内的空闲块指针3302所表示的实际块信息3300);
(d)将与被分配各写目的地虚拟块的实际块对应的实际块信息3300内的空闲块指针3302设为空值;
(e)从与该被分配的实际块对应的芯片信息3100内的芯片内空闲块数3103的值中减去已被分配的实际块的数量(例如1)。
步骤14004:执行部12100执行以下的(a)~(c):
(a)将上述写指示所赋予的时刻信息设定为与写目的地虚拟块对应的虚拟块信息3200内的虚拟页分配时刻3203;
(b)将与写目的地虚拟块对应的虚拟块删除次数3204设定为0;
(c)在缓冲存储器330上生成封装块容量3005的量的初始模式(表示未从存储控制器200取得对象数据(在图29以及图30的说明中为写指示所附带的数据)的模式)。
在此,在被分配给写目的地虚拟块的实际块(在图29以及图30的说明中称为“写目的地实际块”)中,除了写对象数据以外写入该初始模式。为了执行该处理,跳转到图30的步骤14016。
步骤14005:执行部12100参照与写目的地实际块对应的实际块信息3300内的实际块ID3301,确定写目的地实际块的先头是哪个闪存芯片300的哪个地址。
步骤14006:执行部12100根据与写目的地实际块对应的实际块内空闲区域3304和写对象数据的长度,判断是否将写对象数据写入写目的地实际块的空闲区域。在不写入的情况下(该判断的结果为否定时)跳转到图30的步骤14011。
步骤14007:执行部12100参照与具有写目的地实际块的闪存芯片300对应的芯片信息3100,识别连接了该闪存芯片300的封装总线340,并识别对应的封装总线传输装置350。
步骤14008:执行部12100对在步骤14007中识别出的封装总线传输装置350指示从缓冲存储器330向哪个闪存芯片300的哪个地址写入写对象数据。
步骤14009:执行部12100等待写入完成。
步骤14010:执行部12100执行以下的(a)~(c):
(a)从与写目的地实际块对应的实际块内空闲区域3304减去写对象数据的量;
(b)在与写目的地实际块对应的追加写入数据地址信息3305中,加入写目的地实际块内的相对地址和写对象数据的长度;
(c)向存储控制器200发送写指示已完成的完成报告。
步骤14011:本步骤是在写对象数据的长度比写目的地实际块的空闲区域大的情况下执行的步骤。在这种情况下,在写目的地实际块中不执行删除处理,无法存储写对象数据。在本实施方式中,为了减少实际块的删除次数的不平衡,将写对象数据存储在别的实际块中。因此,在本步骤中,执行部12100调用下位等级的损耗平衡控制部。执行部12100从下位等级的损耗平衡控制部取得与应该存储写对象数据的实际块对应的实际块信息3300的地址。下位等级的损耗平衡控制,为了减少实际块的删除次数的不平衡而选择新的实际块。设该实际块例如处于被删除的状态,是可直接写入数据的状态。此外,下位等级的损耗平衡技术应用专利文献1那样的公知技术即可,因此在此不详细说明。
步骤14012:执行部12100不仅需要在新指定的实际块中写入写对象数据,还需要写入原本被分配给写目的地虚拟块的实际块(在图29以及图30的说明中称为“原来的实际块”)内的全部数据(封装块容量3005的量的数据)。因此,执行部12100参照与原来的实际块对应的追加写入数据地址信息3205,将原来的实际块的封装块容量3005的量的容量的数据,按照虚拟块的地址顺序存储在缓冲存储器330中,因此,生成对闪存芯片300的指示。
步骤14013:执行部12100参照与在步骤14005中识别出的闪存芯片300对应的芯片信息3100,识别连接了该闪存芯片300的封装总线340,并识别对应的封装总线传输装置350。
步骤14014:执行部12100按照在步骤140011中生成的指示,指示在步骤14007中识别出的封装总线传输装置350从哪个闪存芯片300的哪个地址向缓冲存储器330写入数据。
步骤14015:执行部12100等待向缓冲存储器330的读入完成。
步骤14016:执行部12100在新分配的实际块中写入封装块容量3005的量的数据。具体来说,本步骤中,执行部12100对于在步骤14004或者步骤14014中存储在缓冲存储器330中的封装块容量3005的量的数据(步骤14004中存储的是初始模式的数据),将从存储控制器200接受的写对象数据从步骤14000中识别出的相对地址进行覆盖。
步骤14017:接着,执行部12100参照与新分配的实际块对应的实际块信息3300内的实际块ID3301,确定新分配的实际块存储在哪个闪存芯片300的哪个地址。
步骤14018:执行部12100参照与在步骤14017中识别出的存储写对象数据的闪存芯片300相对应的芯片信息3100,识别连接了该闪存芯片300的封装总线340,并识别对应的封装总线传输装置350。
步骤14019:执行部12100向在步骤14018中识别出的封装总线传输装置350指示从缓冲存储器330向哪个闪存芯片300的哪个地址写入封装块容量3005的量的数据。
步骤14020:执行部12100等待从缓冲存储器的写入完成。
步骤14021:执行部12100,在由于在原来的实际块中无法存储写对象数据,因此分配了新的实际块的情况下,进行步骤14022以及14023。否则,跳转到步骤14024。
步骤14022:本步骤是执行部12100将实际块设为空闲的状态的步骤。执行部12100执行以下的(a)~(f):
(a)对原来的实际块进行删除处理;
(b)在与原来的实际块对应的实际块删除次数3306的值上加1;
(c)当实际块删除次数3306超过上限值时,将与原来的实际块对应的实际块故障标志3303设为ON,存储由于上述写指示而产生了成为故障状态的实际块的情况;
(d)在与被分配了原来的实际块的虚拟块对应的虚拟块删除次数3204的值上加1;
(e)在与原来的实际块对应的空闲块指针3302中,设定空闲块管理信息指针3400表示的实际块信息3300的地址;
(f)在空闲块管理信息指针3400中设定与原来的实际块对应的实际块信息3300的地址。
步骤14023:本步骤是将新的实际块分配给写目的地虚拟块的步骤。具体来说,执行部12100将写目的地虚拟块对应实际块信息指针3202更新为表示与新的实际块对应的实际块信息3300的值。
步骤14024:执行部12100对存储控制器200发送写完成报告。该完成报告,例如若存在伴随来自存储控制器200的写指示而实施了删除处理的实际块,则包含该实际块的数量。另外,该完成报告,若存在伴随该写指示而成为故障状态的实际块,则包含该实际块的数量。另外,在步骤14004中,在从未向虚拟块分配实际块的状态新分配了实际块的情况下,该分配的个数和写指示中包含的时刻信息也被包含在针对存储控制器200的完成报告中。
图31表示实际块释放处理执行部12200的处理流程。
在从存储控制器200接受释放区域的范围(虚拟块的集合)的释放指示时,执行实际块释放处理执行部12200。
步骤15000:执行部12200根据通过释放指示所指定的区域的范围和封装块容量3005,计算被指示了释放的虚拟块的集合。
步骤15001:执行部12200对于在步骤15000中确定的虚拟块的集合,参照与各个虚拟块对应的虚拟块信息3200的实际块信息指针3202,判断是否被分配了实际块。在此,执行部12200对于所指定的全部虚拟块生成表示是否对各个虚拟块分配了实际块的信息。执行部12200为了将所生成的信息发送到存储控制器200而写入缓冲存储器330。
步骤15002:执行部12200搜索在步骤15000中确定的虚拟块的集合中的、被分配了实际块的虚拟块。若没有,则跳转到步骤15006。
步骤15003:执行部12200进行与实际块信息3300对应的实际块的释放处理,该实际块信息3300是与所找到的虚拟块对应的实际块信息指针3202所表示的实际块信息。因此,执行部12200解析该实际块信息3300内的实际块ID3301,确定释放的实际块存在于哪个闪存芯片1302的哪个地址。
步骤15004:本步骤是使实际块成为空闲状态的步骤。成为对象的实际块是在步骤15003中确定的实际块,但是处理内容与图30的步骤14003相同。因此,在此省略说明。
步骤15005:执行部12200向缓冲存储器330复制与被分配给设为空闲状态的实际块的虚拟块(空闲虚拟块)对应的虚拟块分配时刻3203以及虚拟块删除次数3204。用于将这些信息3203以及3204发送到存储控制器200。复制后,执行部12220对与空闲块对应的虚拟块信息2000内的虚拟页分配时刻3203以及虚拟块删除次数3204进行初始化。此后,返回步骤15002。
步骤15006:执行部12200向存储控制器2000发送包含下述信息(A)以及(B)的信息的释放完成报告:
(A)针对每个属于在释放指示中指定的区域的范围的虚拟块,表示是否分配了实际块的信息;
(B)被分配了所释放的实际块的每个虚拟块的虚拟块分配时刻3203和虚拟块删除次数3204。
图32表示虚拟块移动处理执行部12300的处理流程。
当从存储控制器200接收将所指定的虚拟块的集合中存储的数据发送到存储控制器200的指示时,执行虚拟块移动处理执行部12300。存储了被移动的数据的实际块被释放,因此与图31的不同点是将存储在实际块中的数据发送到存储控制器200。因此,引用图31的处理流程的各步骤来进行图32的说明。
步骤16000:与步骤15000相同。执行部12300确定被指示了释放的虚拟块的集合。
步骤16001:与步骤15001相同。执行部12300针对所指定的全部虚拟块生成表示是否被分配了实际块的信息,并将该信息复制到缓冲存储器330。
步骤16002:与步骤15002相同。执行部12300搜索被分配了实际块的虚拟块。若没有,则跳转到步骤16010。
步骤16003:基本上与步骤15003相同。因此,执行部12300解析与移动源实际块对应的实际块ID3301,确定移动源实际块从哪个闪存芯片300的哪个地址开始存在。
步骤16004:执行部12300根据与移动源实际块对应的实际块信息3300的先头地址、该信息3300内的追加写入数据地址信息3305、在步骤16003中得到的存储目的地地址,生成地址列表。该地址列表作为关于移动源实际块的地址的列表,是存储了应该发送给存储控制器200的封装块容量3005量的数据的地址的列表。
步骤16005:执行部12300参照与具有移动源实际块的闪存芯片300对应的芯片3100信息,识别连接了该闪存芯片300的封装总线340,并识别对应的封装总线传输装置350。
步骤16006:执行部12300指示在步骤16005中识别的封装总线传输装置350向具有移动源实际块的闪存芯片300传递地址列表,并且按照该地址列表向缓冲存储器330传输数据。
步骤16007:执行部12300等待传输完成。
步骤16008:本步骤是使空闲块为空闲状态的步骤。成为对象的实际块是移动源实际块,但是处理内容与图30的步骤14022相同。因此,在此省略说明。
步骤16009:与步骤15005相同。执行部12300向缓冲存储器330复制与被分配给设为空闲状态的实际块的虚拟块(空闲虚拟块)对应的虚拟块分配时刻3203以及虚拟块删除次数3204。在复制后,执行部12300对与空闲虚拟块对应的虚拟块信息2000内的虚拟页分配时刻3203以及虚拟块删除次数3204进行初始化。此后,返回步骤16002。
步骤16010:执行部12300向存储控制器200发送在缓冲存储器330中存储的数据。具体来说,例如执行部12300将包含下述信息(A)~(C)的信息发送到存储控制器200:
(A)针对移动源的每个虚拟块,表示是否分配了实际块的信息;
(B)被分配了所释放的实际块的每个虚拟块的、虚拟页分配时刻3203和虚拟块删除次数3204;
(C)在缓冲存储器330中存储的数据(被分配给移动源的虚拟块的实际块内的数据)。
图33表示虚拟块存储处理执行部12400的处理流程。
当接收到向所指定的虚拟块的集合分别分配实际块,并且存储从存储控制器200发送的数据的写指示时,执行虚拟块存储处理执行部12400。数据的流向与虚拟块移动处理执行部12300相反,但是共同点很多,因此,引用图32的处理流程的各步骤来进行说明。
步骤17000:与步骤16000相同。执行部12400计算被指示了存储的虚拟块的集合。
步骤17001:闪存封装230内的封装控制器315从存储控制器200接受包含以下的(A)~(C)的信息:
(A)关于存储目的地的虚拟块的集合中的各虚拟块,表示是否分配了实际块的信息;
(B)关于被分配了实际块的全部虚拟块,该虚拟块全体的数据(具体来说,被分配给该虚拟块的实际块内的数据);
(C)与被分配了实际块的虚拟块对应的虚拟页分配时刻3203以及虚拟块删除次数3204。
该信息被存储在缓冲存储器330中。而且,封装控制器315(封装处理器310)从缓冲存储器330取得每个虚拟块的信息(表示是否被分配实际块的信息)。
步骤17002:与步骤16002相同。执行部12400根据所取得的信息搜索被分配了实际块的虚拟块。若没有,则跳转到步骤17010。
步骤17003:执行部12400向步骤17002中找到的虚拟块分配空闲块。该处理与图29的步骤14003相同,因此省略详细的说明。
步骤17004:执行部12400将缓冲存储器330中存储的(C)的信息(被分配了实际块的虚拟页分配时刻3203以及虚拟块删除次数3204)复制到与空闲块的分配目的地的虚拟块对应的虚拟块信息3200内的虚拟页分配时刻3203以及虚拟块删除3204。
步骤17005:基本上与步骤16004相同。执行部12400解析与所分配的实际块对应的实际块ID3301,并确定在步骤17003中分配的实际块从哪个闪存芯片300的哪个地址开始存在。
步骤17006:基本上与步骤16005相同。执行部12400参照与存储了所确定的实际块的闪存芯片300对应的芯片信息3100,识别连接了该闪存芯片300的封装总线340,并识别对应的封装总线传输装置350。
步骤17007:执行部12400向步骤17006中识别出的封装总线传输装置350指示从哪个闪存芯片300的哪个地址开始写入缓冲存储器330内的数据(步骤17001中的(B)的数据)。
步骤17008:执行部12400等待传输完成。
步骤17009:返回步骤17002。
步骤17010:执行部12400向存储控制器200发送完成报告。
以上,说明了本发明的一个实施方式,但其是用于说明本发明的例子,主旨不是将本发明的范围仅限定于该实施方式。本发明也能够通过其它各种形态来实施。
例如,封装控制器315也可以设置在闪存封装230的外部。在该情况下,封装控制器315的数量可以比闪存封装230的数量多,也可以比闪存封装230的数量少。具体来说,例如可以针对X个(X为2以上的整数)的闪存封装230设置一个封装控制器315。在该情况下,一个封装控制器315针对X个闪存封装230中的每一个,管理逻辑地址与物理地址的对应关系等。
另外,例如封装组间的数据移动(页单位的数据移动)也可以不经由存储控制器200来进行。具体来说,例如存储控制器200将移动源地址以及移动目的地地址通知给与移动源和/或移动目的地对应的封装控制器315,在与移动源对应的封装控制器315和与移动目的地对应的封装控制器315之间,可以不经由存储控制器200地,把被分配给与移动源页对应的虚拟块的实际块内的数据移动到被分配给与移动目的地页对应的虚拟块的实际块。
符号说明
100:存储系统

Claims (20)

1.一种存储系统,具有收纳形成了块组的多个闪存芯片(300)的多个闪存封装(230),所述块组是数据的删除单位,所述存储系统的特征在于,具有:
针对各个所述闪存封装中的每一个闪存封装,执行减少所述闪存封装内包含的各个块的删除次数的不平衡的功能的单元;
针对每个所述闪存封装(230)计算所述闪存封装(230)的块删除次数,在符合条件的情况下决定在封装单元间移动数据的移动决定单元(4400);以及
按照所述移动决定单元(4400)的决定,在所述封装单元间移动数据的移动单元(4500),
所述封装单元是一个或多个闪存封装。
2.一种存储系统,具有收纳形成了块组的多个闪存芯片(300)的多个闪存封装(230),所述块组是数据的删除单位,所述存储系统的特征在于,
所述闪存封装(230)具有执行减少所述闪存封装(230)内包含的各个块的删除次数的不平衡的功能的单元,
所述存储系统(100)具有:
针对每个所述闪存封装(230),计算所述闪存封装(230)全体的块删除次数,在符合条件的情况下决定在封装单元间移动数据的移动决定单元(4400);以及
按照所述移动决定单元(4400)的决定,在所述封装单元间移动数据的移动单元(4500),
所述封装单元是一个或多个闪存封装。
3.一种存储系统,具有收纳形成了块组的多个闪存芯片(300)的多个闪存封装(230),所述块组是数据的删除单位,使主机(110)看起来具有比实际的存储容量大的存储容量,提供以页单位构成数据空间的容量虚拟化功能,所述存储系统的特征在于,具有:
对应于各个所述闪存封装(230),执行减少所述闪存封装内包含的块的删除次数的不平衡的功能的单元;
针对每个所述闪存封装(230),计算所述闪存封装(230)全体的块删除次数,在符合条件的情况下决定在封装单元间移动所述页单位的数据的移动决定单元(4400);以及
按照所述移动决定单元(4400)的决定,在所述封装单元间移动所述页单位的数据的移动单元(4500),
所述封装单元是一个或多个闪存封装。
4.一种存储系统,具有收纳形成了块组的多个闪存芯片(300)的多个闪存封装(230),所述块组是数据的删除单位,使主机(110)看起来具有比实际的存储容量大的存储容量,提供以页单位构成数据空间的容量虚拟化功能,所述存储系统的特征在于,
所述闪存封装(230)具有执行减少在所述闪存封装(230)内包含的块的删除次数的不平衡的功能的单元,
所述存储系统(100)具有:
针对每个所述闪存封装(230),计算所述闪存封装(230)全体的块删除次数,在符合条件的情况下决定在封装单元间移动所述页单位的数据的移动决定单元(4400);以及
按照所述移动决定单元(4400)的决定,在所述封装单元间移动所述页单位的数据的移动单元(4500),
所述封装单元是一个或多个闪存封装。
5.一种存储系统,具有收纳形成了块组的多个闪存芯片(300)的多个闪存封装(230),所述块组是数据的删除单位,所述存储系统的特征在于,具有:
定义比所述闪存封装(230)上的闪存芯片(300)的容量的合计值看起来大的容量,当要在所述闪存封装(230)中存储数据时,检查是否已分配了应该存储数据的所述块,当没有分配时分配所述块的单元。
6.根据权利要求5所述的存储系统,其特征在于,
所述存储系统具有:
针对每个所述闪存封装(230)计算所述闪存封装(230)全体的块内存储了数据的块的数量,在符合条件的情况下决定在封装单元间移动所述页单位的数据的移动决定单元(4400);以及
按照所述移动决定单元(4400)的决定,在所述封装单元间移动所述页单位的数据的移动单元(4500),
所述封装单元是一个或多个闪存封装。
7.根据权利要求5所述的存储系统,其特征在于,具有:
当从主机(110)接收到要在指定区域中重复写入某特定的模式的请求时,删除与所述指定区域对应的所述闪存封装(230)的块的单元。
8.根据权利要求5所述的存储系统,其特征在于,具有:
识别从主机(110)写入的数据是否已成为某特定的重复模式的单元;以及
当识别出所识别的所述特定的重复模式时,删除与写入了所述特定的重复模式的区域对应的所述闪存封装(230)的块的单元。
9.一种存储系统,具有收纳形成了块组的多个闪存芯片(300)的多个闪存封装(230),所述块组是数据的删除单位,所述存储系统的特征在于,
所述闪存封装(230)具有:定义比所述闪存封装(230)上的闪存芯片(300)的容量的合计值看起来大的容量,当所述闪存封装(230)要存储接收到的写数据时,检查是否已分配了应该存储数据的所述块,当没有分配时分配所述块的单元。
10.根据权利要求9所述的存储系统,其特征在于,
所述存储系统具有:
针对每个所述闪存封装(230)计算所述闪存封装(230)全体的块内存储了数据的块的数量,在符合条件的情况下决定在封装单元间移动数据的移动决定单元(4400);以及
按照所述移动决定单元(4400)的决定,在所述封装单元间移动数据的移动单元(4500),
所述封装单元是一个或多个闪存封装。
11.根据权利要求9所述的存储系统,其特征在于,
所述存储系统具有:当从所述主机(110)接收到要在指定区域中重复写入某特定的模式的请求时,通知所述闪存封装(230)删除根据所述指定区域而得到的封装内区域的块的单元,
所述闪存封装(230)具有按照所述通知来识别与所述封装内区域对应的块,并删除识别出的块的单元。
12.根据权利要求9所述的存储系统,其特征在于,
所述存储系统具有:
识别从主机(110)写入的数据是否已成为某特定的重复模式的单元;以及
当识别出所识别的所述特定的重复模式时,通知删除根据写入了所述特定的重复模式的区域而得到的封装内区域的块的单元,
所述闪存封装(230)具有按照所述通知来识别与所述封装内区域对应的块,并删除识别出的块的单元。
13.一种存储系统,具有收纳形成了块组的多个闪存芯片(300)的多个闪存封装(230),所述块组是数据的删除单位,使主机(110)看起来具有比实际的存储容量大的存储容量,提供以页单位构成数据空间的容量虚拟化功能,所述存储系统的特征在于,具有:
定义比所述闪存封装(230)上的闪存芯片的容量的合计值看起来大的容量,当要在所述闪存封装(230)中存储数据时,检查是否已分配了应该存储数据的所述块,当没有分配时分配所述块的单元。
14.根据权利要求13所述的存储系统,其特征在于,具有:
针对每个所述闪存封装(230),计算所述闪存封装(230)全体的块内存储了数据的块的数量,在符合条件的情况下决定在封装单元间移动数据的移动决定单元(4400);以及
按照所述移动决定单元(4400)的决定,在所述封装单元间移动数据的移动单元(4500),
所述封装单元是一个或多个闪存封装。
15.根据权利要求13所述的存储系统,其特征在于,具有:
当从主机(110)接收到要在指定区域中重复写入某特定的模式的请求时,删除与所述指定区域对应的所述闪存封装(230)的块的单元。
16.根据权利要求13所述的存储系统,其特征在于,具有:
识别从主机写入的数据是否已成为某个特定的重复模式的单元;以及
当识别出所识别的所述特定的重复模式时,删除与写入了所述特定的重复模式的区域对应的所述闪存封装(230)的块的单元。
17.一种存储系统,具有收纳形成了块组的多个闪存芯片(300)的多个闪存封装(230),所述块组是数据的删除单位,使主机(110)看起来具有比实际的存储容量大的存储容量,提供以页单位构成数据空间的容量虚拟化功能,所述存储系统的特征在于,
所述闪存封装具有:定义比所述闪存封装(230)上的闪速存储器芯片的容量的合计值看起来大的容量,当所述闪存封装(230)要存储接收到的写数据时,检查是否分配了应该存储数据的所述块,当没有分配时分配所述块的单元。
18.根据权利要求17所述的存储系统,其特征在于,
所述存储系统具有:
针对每个所述闪存封装,计算所述闪存封装全体的块内存储了数据的块的数量,在符合条件的情况下决定在封装单元间移动数据的移动决定单元(4400);以及
按照所述移动决定单元的决定,在所述封装单元间移动数据的移动单元(4500),
所述封装单元是一个或多个闪存封装。
19.根据权利要求17所述的存储系统,其特征在于,
所述存储系统具有:当从主机(110)接收到要在指定区域中重复写入某特定的模式的请求时,向所述闪存封装(230)通知删除根据所述指定区域而得到的封装内区域的块的单元,
所述闪存封装(230)具有按照所述通知来识别与所述封装内区域对应的块,并删除识别出的块的单元。
20.根据权利要求17所述的存储系统,其特征在于,
所述存储系统具有:
识别从主机(110)写入的数据是否已成为某特定的重复模式的单元;以及
当识别出所识别的所述特定的重复模式时,通知删除根据写入了所述特定的重复模式的区域而得到的封装内区域的块的单元,
所述闪存封装(230)具有:按照所述通知来识别与所述封装内区域对应的块,并删除识别出的块的单元。
CN200980159502.6A 2009-07-22 2009-07-22 具有多个闪存封装的存储系统 Active CN102449607B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/003437 WO2011010344A1 (ja) 2009-07-22 2009-07-22 複数のフラッシュパッケージを有するストレージシステム

Publications (2)

Publication Number Publication Date
CN102449607A true CN102449607A (zh) 2012-05-09
CN102449607B CN102449607B (zh) 2015-05-27

Family

ID=43498835

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980159502.6A Active CN102449607B (zh) 2009-07-22 2009-07-22 具有多个闪存封装的存储系统

Country Status (5)

Country Link
US (5) US8392648B2 (zh)
EP (1) EP2413245B1 (zh)
JP (1) JP5437373B2 (zh)
CN (1) CN102449607B (zh)
WO (1) WO2011010344A1 (zh)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5917163B2 (ja) * 2011-01-27 2016-05-11 キヤノン株式会社 情報処理装置、その制御方法及びプログラム並びに記憶媒体
US8595415B2 (en) * 2011-02-02 2013-11-26 Micron Technology, Inc. At least semi-autonomous modules in a memory system and methods
JP5712713B2 (ja) 2011-03-18 2015-05-07 富士通株式会社 制御装置、制御方法およびストレージ装置
CN103384877B (zh) * 2011-06-07 2016-03-23 株式会社日立制作所 包括闪存的存储系统和存储控制方法
US9021226B2 (en) 2011-06-10 2015-04-28 International Business Machines Corporation Moving blocks of data between main memory and storage class memory
US9058275B2 (en) 2011-06-10 2015-06-16 International Business Machines Corporation Data returned responsive to executing a start subchannel instruction
US9116634B2 (en) 2011-06-10 2015-08-25 International Business Machines Corporation Configure storage class memory command
US9116788B2 (en) 2011-06-10 2015-08-25 International Business Machines Corporation Using extended asynchronous data mover indirect data address words
US9116789B2 (en) 2011-06-10 2015-08-25 International Business Machines Corporation Chaining move specification blocks
US9021179B2 (en) * 2011-06-10 2015-04-28 International Business Machines Corporation Store storage class memory information command
US9037907B2 (en) 2011-06-10 2015-05-19 International Business Machines Corporation Operator message commands for testing a coupling facility
US9058243B2 (en) 2011-06-10 2015-06-16 International Business Machines Corporation Releasing blocks of storage class memory
US9323668B2 (en) 2011-06-10 2016-04-26 International Business Machines Corporation Deconfigure storage class memory command
US9021180B2 (en) 2011-06-10 2015-04-28 International Business Machines Corporation Clearing blocks of storage class memory
WO2013038442A1 (en) 2011-09-13 2013-03-21 Hitachi, Ltd. Storage system comprising flash memory, and storage control method
IN2014DN05977A (zh) * 2012-02-08 2015-06-26 Hitachi Ltd
WO2013140446A1 (en) * 2012-03-21 2013-09-26 Hitachi, Ltd. Storage apparatus and method thereof for fast creation of a eager zeroed virtual disk by allocation of pre -zeroed storage areas
US20130290541A1 (en) * 2012-04-25 2013-10-31 Hitachi ,Ltd. Resource management system and resource managing method
WO2013175529A1 (en) 2012-05-23 2013-11-28 Hitachi, Ltd. Storage system and storage control method for using storage area based on secondary storage as cache area
CN103858114A (zh) 2012-09-12 2014-06-11 株式会社东芝 对阵列中的纠错编码区块配置位置进行管理的存储装置、存储控制器以及方法
US9578098B2 (en) * 2012-11-19 2017-02-21 Hitachi, Ltd. Management system and management method
US9448883B1 (en) * 2012-12-04 2016-09-20 Cadence Design Systems, Inc. System and method for allocating data in memory array having regions of varying storage reliability
US9417917B1 (en) * 2012-12-14 2016-08-16 Amazon Technologies, Inc. Equitable resource allocation for storage object deletion
US9195585B2 (en) 2013-01-23 2015-11-24 Vmware, Inc. Techniques for allocating and surfacing host-side storage capacity to virtual machines
US11036392B2 (en) * 2013-02-26 2021-06-15 Pure Storage, Inc. Determining when to use convergent encryption
WO2014141411A1 (ja) 2013-03-13 2014-09-18 株式会社日立製作所 ストレージシステムおよびストレージシステム制御方法
US20140351521A1 (en) * 2013-05-27 2014-11-27 Shintaro Kudo Storage system and method for controlling storage system
JP6055544B2 (ja) * 2013-06-03 2016-12-27 株式会社日立製作所 ストレージ装置およびストレージ装置制御方法
JP6017032B2 (ja) * 2013-06-13 2016-10-26 株式会社日立製作所 ストレージシステム及びストレージ制御方法
WO2015008338A1 (ja) * 2013-07-16 2015-01-22 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法
US9727255B2 (en) 2013-07-19 2017-08-08 Hitachi, Ltd. Storage apparatus and storage control method
WO2015042778A1 (zh) * 2013-09-24 2015-04-02 华为技术有限公司 数据迁移方法、数据迁移装置和存储设备
JP6209926B2 (ja) * 2013-10-09 2017-10-11 富士通株式会社 ストレージ制御装置、およびストレージ装置の制御プログラム
JP6062060B2 (ja) * 2013-10-11 2017-01-18 株式会社日立製作所 ストレージ装置、ストレージシステム、及びストレージ装置制御方法
US9025380B1 (en) * 2013-12-06 2015-05-05 Intel Corporation Management of data storage in a non-volatile memory system
US20170003890A1 (en) * 2013-12-12 2017-01-05 Fixstars Corporation Device, program, recording medium, and method for extending service life of memory
JP6307962B2 (ja) * 2014-03-19 2018-04-11 日本電気株式会社 情報処理システム、情報処理方法、及び、情報処理プログラム
US10120592B2 (en) 2014-09-26 2018-11-06 Hitachi, Ltd. Storage device and maintenance/operation system therefor
TWI539282B (zh) * 2014-10-13 2016-06-21 慧榮科技股份有限公司 非揮發性儲存裝置與控制器
US9921750B2 (en) 2014-11-20 2018-03-20 Samsung Electronics Co., Ltd. Solid state drive (SSD) memory cache occupancy prediction
KR102368071B1 (ko) 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
JP6739185B2 (ja) 2015-02-26 2020-08-12 株式会社半導体エネルギー研究所 ストレージシステム、およびストレージ制御回路
US20160378352A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Efficient solid state drive data compression scheme and layout
CN107025066A (zh) 2016-09-14 2017-08-08 阿里巴巴集团控股有限公司 在基于闪存的存储介质中写入存储数据的方法和装置
JP6805110B2 (ja) 2017-11-06 2020-12-23 株式会社日立製作所 ストレージシステム及びその制御方法
US10956048B2 (en) * 2017-11-21 2021-03-23 Distech Controls Inc. Computing device and method for inferring a predicted number of physical blocks erased from a flash memory
US11037056B2 (en) 2017-11-21 2021-06-15 Distech Controls Inc. Computing device and method for inferring a predicted number of data chunks writable on a flash memory before wear out
US11301151B2 (en) * 2020-05-08 2022-04-12 Macronix International Co., Ltd. Multi-die memory apparatus and identification method thereof
US11941287B2 (en) * 2020-06-17 2024-03-26 EMC IP Holding Company, LLC System and method for near-instant unmapping and write-same in a log-structured storage cluster
US11513974B2 (en) * 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101046771A (zh) * 2006-03-29 2007-10-03 株式会社日立制作所 使用闪存的存储系统及其平均读写方法和平均读写程序

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3507132B2 (ja) 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
JP3421581B2 (ja) 1998-06-29 2003-06-30 株式会社日立製作所 不揮発性半導体メモリを用いた記憶装置
JP4426262B2 (ja) * 2003-11-26 2010-03-03 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の障害回避方法
JP4237648B2 (ja) * 2004-01-30 2009-03-11 株式会社東芝 不揮発性半導体記憶装置
JP2007066259A (ja) 2005-09-02 2007-03-15 Hitachi Ltd 計算機システムとストレージシステム並びにボリューム容量拡張方法
JP4927408B2 (ja) 2006-01-25 2012-05-09 株式会社日立製作所 記憶システム及びそのデータ復元方法
JP2007213721A (ja) * 2006-02-10 2007-08-23 Hitachi Ltd ストレージシステム及びその制御方法
JP2008015769A (ja) 2006-07-05 2008-01-24 Hitachi Ltd ストレージシステム及び書き込み分散方法
JP4863814B2 (ja) * 2006-08-04 2012-01-25 株式会社日立製作所 記憶媒体グループの故障を抑えるストレージシステム
JP4932427B2 (ja) * 2006-10-20 2012-05-16 株式会社日立製作所 記憶装置及び記憶方法
JP5171840B2 (ja) * 2006-11-24 2013-03-27 サンドフォース インコーポレイテッド メモリの寿命を縮める動作を遅延させる方法及びストレージシステム
JP5014821B2 (ja) 2007-02-06 2012-08-29 株式会社日立製作所 ストレージシステム及びその制御方法
JP2009129070A (ja) * 2007-11-21 2009-06-11 Hitachi Ltd フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム
US20100017649A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation Data storage system with wear-leveling algorithm
JP5192352B2 (ja) * 2008-10-30 2013-05-08 株式会社日立製作所 記憶装置及びデータ格納領域管理方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101046771A (zh) * 2006-03-29 2007-10-03 株式会社日立制作所 使用闪存的存储系统及其平均读写方法和平均读写程序

Also Published As

Publication number Publication date
EP2413245A1 (en) 2012-02-01
US8635400B2 (en) 2014-01-21
JP5437373B2 (ja) 2014-03-12
US20160103629A1 (en) 2016-04-14
JPWO2011010344A1 (ja) 2012-12-27
US20150100728A1 (en) 2015-04-09
US8954659B2 (en) 2015-02-10
US8392648B2 (en) 2013-03-05
US9569130B2 (en) 2017-02-14
US20140108713A1 (en) 2014-04-17
US20130151763A1 (en) 2013-06-13
EP2413245B1 (en) 2017-08-23
CN102449607B (zh) 2015-05-27
US20120005402A1 (en) 2012-01-05
US9244622B2 (en) 2016-01-26
WO2011010344A1 (ja) 2011-01-27
EP2413245A4 (en) 2013-07-03

Similar Documents

Publication Publication Date Title
CN102449607B (zh) 具有多个闪存封装的存储系统
US11487619B2 (en) Distributed storage system
US11829617B2 (en) Virtual storage system
US10558383B2 (en) Storage system
CN104115109A (zh) 具有多个非易失性半导体存储单元的存储装置及其用于在具有较高残留寿命长度的存储单元中放置热数据而在具有较低残留寿命长度的存储单元中放置冷数据的控制方法
CN104317742B (zh) 一种优化空间管理的自动精简配置方法
US8069191B2 (en) Method, an apparatus and a system for managing a snapshot storage pool
US9658779B2 (en) Computer system and control method for computer system
CN104285214B (zh) 混合储存集合块跟踪
CN102511030B (zh) 计算机系统及其控制方法
US9037828B2 (en) Transferring storage resources between snapshot storage pools and volume storage pools in a data storage system
JP5816303B2 (ja) フラッシュメモリを含むストレージシステム、及び記憶制御方法
US10503424B2 (en) Storage system
CN103384877A (zh) 包括闪存的存储系统和存储控制方法
JP2015517697A (ja) 二次記憶装置に基づく記憶領域をキャッシュ領域として用いるストレージシステム及び記憶制御方法
JP7353934B2 (ja) メモリシステムおよび制御方法
CN101566931A (zh) 虚拟磁盘驱动系统和方法
CN102576330A (zh) 具有持久化无用单元收集机制的存储系统
US9760292B2 (en) Storage system and storage control method
CN103761053A (zh) 一种数据处理方法和装置
CN105787037B (zh) 一种重复数据的删除方法及装置
CN101566930A (zh) 虚拟磁盘驱动系统和方法
US11079956B2 (en) Storage system and storage control method
JP5768118B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JP6138318B2 (ja) 複数のフラッシュパッケージを有するストレージシステム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant