CN107710140B - 存储*** - Google Patents
存储*** Download PDFInfo
- Publication number
- CN107710140B CN107710140B CN201580081270.2A CN201580081270A CN107710140B CN 107710140 B CN107710140 B CN 107710140B CN 201580081270 A CN201580081270 A CN 201580081270A CN 107710140 B CN107710140 B CN 107710140B
- Authority
- CN
- China
- Prior art keywords
- storage
- mode
- block
- controller
- storage device
- 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
- 230000015654 memory Effects 0.000 claims abstract description 70
- 230000008859 change Effects 0.000 claims description 115
- 238000000034 method Methods 0.000 claims description 75
- 230000008569 process Effects 0.000 claims description 62
- 238000012545 processing Methods 0.000 claims description 59
- 230000003247 decreasing effect Effects 0.000 claims description 11
- 238000013403 standard screening design Methods 0.000 description 129
- 238000004364 calculation method Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 238000012790 confirmation Methods 0.000 description 11
- 230000007423 decrease Effects 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000011144 upstream manufacturing Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/008—Reliability or availability analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/0653—Monitoring storage devices or 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
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)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
本发明的一个观点的存储***搭载了多个用闪存作为存储介质的存储设备。另外,存储设备中使用的闪存,是能够将各单元作为能够保存n‑bit信息的单元或者能够保存m‑bit(n<m)信息的单元中的一者使用的闪存。存储***定期地从存储设备取得剩余可擦除次数,使用取得的剩余可擦除次数和存储设备的运转时间预测存储设备的寿命。预测的寿命大于规定值(耐用年数)的情况下,将规定数量的单元变更为能够保存m‑bit信息的单元。
Description
技术领域
本发明涉及使用非易失性半导体存储器的存储***。
背景技术
非易失性半导体存储器与磁存储设备相比更省电、性能更高,价格也更高。这样的非易失性半导体存储器例如是NAND型的闪存。近年来随着半导体技术的进步,低价格化有进展,作为代替HDD的主流的存储设备逐渐受到关注。
闪存具有用于存储数据的多个存储单元(以下简记作“单元”)。在单元中,在能够存储1比特信息的单元(称为SLC)之外,也存在能够存储2比特以上信息的单元(称为MLC。另外也将能够存储3比特以上信息的单元称为TLC)。在闪存中使用MLC型单元时,与使用SLC型单元的情况相比,能够降低比特成本。进而,在MLC型单元中,如果使用能够存储3比特以上信息的单元(TLC),则与使用能够存储2比特信息的单元相比,能够降低比特成本。
另外,近年来,也出现了能够变更单元中可保存的信息量(比特数)的技术。例如在专利文献1中,公开了能够设定某一区域以能够在1个存储器单元晶体管中写入1比特数据的模式应用、另一个区域以能够写入多比特数据的模式应用的存储器。
现有技术文献
专利文献
专利文献1:美国专利申请公开第2008/0250220号说明书
发明内容
发明要解决的课题
但是,存在单元中保存越多的信息(比特数)其寿命(耐用年数)越短的趋势。因此,需要进行在重视可靠性、耐久性的情况下使用可保存比特数少的单元(SLC或MLC),在重视成本(价格)的情况下使用可保存比特数多的单元(TLC)等区别使用。
使用专利文献1中公开的、使可保存比特数少的单元和可保存比特数多的单元混用的技术时,存在与现有的闪存相比能够实现成本与耐久性的平衡较好的存储设备的可能性。但是,闪存(单元)的寿命因其擦除频度而变动,所以难以预先决定可保存比特数少的单元与可保存比特数多的单元的混合比率。
擦除频度低的情况下,该闪存能够承受长时间的使用。但是,擦除频度较大依赖于存储***的运转状态(存取频度)。因此,以较多包含可保存比特数多的单元的方式设定存储设备,但与当初设想相比存取频度可能更高。该情况下,存在经过预先设想的存储设备的寿命(耐用年数)之前存储设备变得不能使用的可能性。
反之,以较多包含可保存比特数少的单元的方式设定存储设备,但与当初设想相比存取频度可能更低。该情况下存储设备的寿命变长,但存储容量较少,所以会导致存储***的成本增加。
因此,要求能够与存储***的运转状态相应地、适当地变更可保存比特数少的单元与可保存比特数多的单元的混合比例的技术。
用于解决课题的技术方案
本发明的一个观点的存储***,搭载多个以闪存作为存储介质的存储设备。另外,存储设备中使用的闪存,是能够将各单元用作可保存n-bit信息的单元和可保存m-bit(n<m)信息的单元中的一者的单元的闪存。
存储***定期地从存储设备取得剩余可擦除次数,使用取得的剩余可擦除次数和存储设备的运转时间预测存储设备的寿命。在预测的寿命大于规定值(耐用年数)的情况下,将规定数量的单元变更为可保存m-bit信息的单元。
发明效果
根据本发明,能够实现可兼顾大存储容量和高耐久性的存储***。
附图说明
图1是表示实施例的存储***的结构例的图。
图2是表示SSD的结构例的图。
图3是说明块管理表的结构的图。
图4是RAID组的说明图。
图5是表示虚拟卷与RAID组、池的关系的图。
图6是说明RAID组管理表的结构的图。
图7是说明处理的整体流程的图。
图8是单元模式变更要否判断处理的流程图(1)。
图9是单元模式变更要否判断处理的流程图(2)。
图10是用于说明寿命预测值的计算方法的图。
图11是接收到容量确认命令的SSD进行的处理的流程图。
图12是接收到单元模式变更命令的SSD进行的处理的流程图。
图13是单元模式变更处理的流程图。
图14是确认用画面的一例。
具体实施方式
以下实施例中,设存储设备中使用的非易失半导体存储介质是闪存(FM)。该闪存是以页单位进行读取/写入的种类的闪存,典型地是NAND型的闪存。但是,闪存也可以代替NAND型地是其他种类的闪存。另外,也可以代替闪存采用其他种类的非易失半导体存储介质、例如相变存储器等。
实施例
以下说明实施例的存储装置1的结构和动作的详情。图1是表示包括存储***1(或称为“存储装置1”)的计算机***的结构例的图。
存储装置1具有存储控制器10和与存储控制器10连接的多个存储设备(SSD21、HDD25)。
SSD21是用于保存来自主机(主机计算机)2等外部装置的写入数据的存储设备,是采用闪存等非易失性半导体存储器作为存储介质的存储设备。SSD21的内部结构在后文中叙述。SSD21例如通过符合SAS(Serial Attached SCSI:串行SCSI)规格的传输线(SAS链路)、符合PCI(Peripheral Component Interconnect:***设备互联)规格的传输线(PCI链路)等与存储控制器10连接。
另外,如图1所示,本实施例的存储装置1在SSD21之外也能够使用HDD(Hard DiskDrive:硬盘驱动器)25作为存储设备。HDD25是用磁盘作为存储介质的存储设备。HDD25也与SSD21同样地与存储控制器10连接。另外,与SSD21同样,HDD25也通过SAS链路等与存储控制器10连接。但是,以下以本实施例的存储装置1中仅连接了SSD21作为存储设备的结构为中心进行说明。
存储控制器10是接受来自主机2的数据存取请求并响应接受的存取请求来进行对SSD21和HDD25的处理(读取处理和写入处理)的组件。以下也将存储控制器10简记作DKC10。1台以上主机2与存储控制器10连接。另外,管理主机5与存储控制器10连接。存储控制器10与主机2例如经由用光纤通道形成的SAN(Storage Area Network:存储区域网络)3连接。存储控制器10与管理主机5例如经由用以太网形成的LAN(Local Area Network:局域网)6连接。
存储控制器10至少具有处理器(CPU)11、主机接口(图中记作“主机I/F”)12、设备接口(图中记作“设备I/F”)13、存储器14、管理用I/F15。然后,处理器11、主机I/F12、设备I/F13、存储器14、管理用I/F15经由内部切换器(内部SW)16彼此连接。图1中这些构成要素仅分别示出了1个,但为了确保高性能化和高可用性,这些构成要素分别也可以在存储控制器10内搭载多个。另外,也可以采用不是经由内部SW16而是经由共用总线将各构成要素彼此连接的结构。
设备I/F13至少具有接口控制器和传输电路(未图示)。接口控制器是用于将SSD21使用的协议(例如SAS)变换至存储控制器10内部使用的通信协议(例如PCI-Express)的组件。传输电路在存储控制器10对SSD21进行数据传输(读取、写入)时使用。
主机I/F12与设备I/F13同样,至少具有接口控制器和传输电路(未图示)。主机I/F12具有的接口控制器用于对主机2与存储控制器10之间的数据传输通路中使用的通信协议(例如光纤通道)和存储控制器10内部使用的通信协议进行变换。
处理器11进行存储装置1的各种控制。存储器14用于存储处理器11执行的程序和处理器11使用的存储装置1的各种管理信息。在存储器14中例如保存结构管理程序141、单元模式控制程序142和I/O程序143。这些程序的详情在后文中叙述。另外,存储器14用于暂时存储对SSD21的I/O对象数据。以下将用于暂时存储对SSD21的I/O对象数据的、存储器14中的存储区域称为“缓存”。存储器14由DRAM、SRAM等易失性存储介质构成,但作为其他实施方式,也可以用非易失性存储器构成存储器14。
管理主机5是用于进行存储装置1的管理操作的计算机。管理主机5具备键盘和显示器等输入输出设备(未图示),用户(管理者)能够使用输入输出设备进行对存储装置1的设定指示。另外,管理主机5也能够在显示器等输出设备上显示存储装置1的状态等信息。
图2是表示SSD21的结构例的图。另外,SSD21是具备多个闪存和控制它们的控制器的存储设备即可,形状(form factor)等也可以不与公知的HDD等相同。
SSD21具有SSD控制器200和多个FM芯片210。SSD控制器200具有处理器(CPU)201、上游I/F(upstream I/F)202、下游I/F(downstream I/F)203和存储器204,它们经由内部连接切换器(内部连接SW)205彼此连接。
上游I/F202是用于进行SSD21与存储控制器10之间的通信的接口控制器。上游I/F202经由传输线(SAS链路、PCI链路)与存储控制器10的设备IF13连接。另一方面,下游I/F203是用于进行SSD控制器200与FM芯片210之间的通信的接口控制器。
CPU201进行关于从存储控制器10到来的各种命令的处理等。存储器204存储CPU201执行的程序和各种管理信息。在存储器204中例如保存单元模式变更程序242、FM I/O程序243。这些程序的详情在后文中叙述。另外,存储器204的一部分区域也用作暂时保存从存储控制器10与写入命令一起发送来的写入数据、和从FM芯片210读取的数据用的缓冲。使用DRAM等易失性存储器作为存储器204。但是,也可以使用非易失性存储器作为存储器204。
FM芯片210例如是NAND型闪存等非易失性半导体存储器芯片。FM芯片210具有多个裸片213,各裸片213中存在多个单元214。单元214是由晶体管等构成的存储元件,各单元214能够保持1或多比特的数据。来自SSD控制器200的写入数据被保存在该单元214中。另外,本实施例中的FM芯片210具有的单元214,能够按照来自SSD控制器200的指示变更单元中可保存的数据量(比特数)。众所周知,闪存的数据读取/写入不能以单元214单位进行。按多个单元214的集合的、称为页的规定大小(例如8KB等)的区域进行。另外,数据擦除按页的集合即块211进行。
本实施例的SSD21对各FM芯片210附加唯一的识别编号进行管理,将该识别编号称为芯片编号(芯片#)。另外,对FM芯片210内的各裸片213也附加在FM芯片210内唯一的识别编号,将该识别编号称为裸片#。进而,对裸片213内的各块211附加在裸片213内唯一的识别编号,将该识别编号称为块#。SSD控制器200存取FM芯片210的块211时,通过指定芯片#、裸片#、块#,而唯一地确定SSD21内的块211。
另一方面,本实施例的SSD21(SSD控制器200)对DKC10等发起端(initiator)提供的存储地址空间(称为逻辑地址空间或LBA空间),是独立于芯片#、裸片#、块#的空间。因此,DKC10对SSD21发出存取请求(读取命令、写入命令)时,不需要指定FM芯片210和块211等。在LBA空间中区域中,按规定大小(例如512字节)分配地址,将该地址称为Logical BlockAddress(LBA,逻辑区块地址)。DKC10通过发出指定了逻辑地址空间中的区域(用LBA和存取对象区域的大小确定的区域)的命令,能够从SSD21读取数据或者对SSD21写入数据。对LBA空间中的区域的写入命令从DKC10到来时,SSD控制器200对该区域分配页。写入数据被保存在分配的页(中的单元214)中。对已分配了页的LBA空间中区域的写入请求(即覆盖请求)到来时,SSD控制器200对该区域分配新的未使用页(尚未保存数据的页),将写入数据保存在新分配的未使用页中。
SSD控制器200具有用于管理LBA空间中区域、与对该LBA空间中区域分配的页的关系(映射)的管理信息(映射表)。这与公知的闪存具有的信息相同,所以本说明书省略说明。
如上所述,单元214中可保存的比特数是可变的。本实施例中,在各单元214能够以可保存n比特数据的模式、或者可保存m比特(成n<m的关系)数据的模式中的任一者应用这一前提下进行说明。另外,以下只要没有特别提示,就对n=2、m=3的情况进行说明。另外,将单元214可保存n比特(2比特)数据的模式称为MLC(Multi-Level Cell,多层单元)模式,将单元214可保存m比特(3比特)数据的模式称为TLC(Triple-Level Cell,三层单元)模式。另外,将MLC模式和TLC模式合称为“单元模式”或“模式”。
本实施例中,在各SSD21的初始状态(使用开始后)下全部单元214都被设定为MLC模式的前提下进行说明。使用开始后经过短时间后,存储控制器10考虑SSD21的运转状况,使SSD21变更某些单元214的模式(从MLC模式变更为TLC模式)。
另外,单元模式的变更的前提是以块211单位进行。即1块中包括的单元214全部被设定为相同模式。然后,SSD控制器200对FM芯片210指示了对于FM芯片210内的某一块变更单元模式的情况下,该块211内的全部单元214被变更为TLC模式。以下在块211内的全部单元214被设定为MLC模式的情况下,表达为“块是MLC模式”。同样,在块211内的全部单元214被设定为TLC模式的情况下,表达为“块是TLC模式”。但是,不一定要按每个块211变更模式。作为其他实施方式,也可以按每个裸片213进行模式变更,或者按每个页、每个单元214进行模式变更。
本实施例的SSD21能够改变对DKC10提供的LBA空间的大小。将对DKC10提供的LBA空间的大小称为“逻辑容量”。本实施例的SSD21中,逻辑容量等于SSD21内的全部单元214的合计存储容量。例如SSD21内的单元214的数量是N个、全部单元214被设定为MLC模式的情况下,SSD21的逻辑容量是N×2(bit)。之后,SSD21内单元214中10%的单元214被变更为TLC模式的情况下,SSD21的逻辑容量成为(0.1×N)×3+(0.9×N)×2=N×2.1(bit),逻辑容量增加。但是,作为其他实施方式,也可以将SSD21内的单元214中的一部分确保为代替单元(因故障而不能使用的单元214的代替),将除去代替单元后的单元214的合计存储容量定义为逻辑容量。
用图3说明SSD21管理的块管理表1150的内容。块管理表1150保存在存储器204中。在块管理表1150的各行(记录)中,保存关于SSD21内的各块211的信息。块管理表1150的栏中,有芯片#1151、裸片#1152、块#1153是用于保存块211的芯片#、裸片#、块#的栏。通过指定芯片#1151、裸片#1152、块#1153,而唯一地确定SSD21内的块211。
模式1154是用于保存表示块211是MLC模式还是TLC模式的信息的栏。在模式1154中保存了0时,表示块211是MLC模式,在模式1154中保存了1时,表示块211是TLC模式。
在剩余可擦除次数1155中保存表示块211还可以进行多少次擦除处理的信息。SSD21的块211的擦除次数有限,对块211进行规定次数(此处将其称为“可擦除次数”)的擦除处理时,该块211不能再使用。可擦除次数是由闪存的提供商等决定的值,MLC型的闪存的情况下一般是数万次程度。剩余可擦除次数是通过将块211的可擦除次数减去实际对该块211进行擦除处理的次数(称为擦除次数)而求出的值。因此,在初始状态(尚未进行擦除处理的状态)下,剩余可擦除次数与可擦除次数相等。
例如,将块211的可擦除次数决定为30000次的情况下,假设对某一块211进行了20000次擦除处理。该情况下,该块211的剩余可擦除次数是10000(30000-20000=10000)。
初始状态下,在各块211的剩余可擦除次数1155中保存了可擦除次数(例如数万)。另外,SSD21内的各块的可擦除次数相等。SSD控制器200进行1次块211的擦除处理时,SSD控制器200对该块211的剩余可擦除次数1155减去1。块211的剩余可擦除次数1155成为0时,禁止对该块211写入和擦除。
另外,TLC型闪存的情况下,可擦除次数比MLC型闪存更小。因此,在闪存的使用中变更了块211的模式时,剩余可擦除次数1155的值也被变更。本实施例中,在剩余可擦除次数1155是n(n是0以上的整数)、并且设定为MLC模式的块211被变更为TLC模式时、该块211的剩余可擦除次数1155被变更为n/c的前提进行以下说明。其中,c是2以上的值,在以下说明中只要没有特别提示,就对c=10的情况进行说明。即,块211的模式被从MLC模式变更为TLC模式时,该块211的剩余可擦除次数1155的值成为模式变更前的值的10分之1。
对LBA空间分配块211(内的页)时,SSD21通过参考块管理表1150的剩余可擦除次数1155,而选择剩余可擦除次数1155最大的块211,将该块211内的页对LBA空间分配。因为采用了这样的块211的选择方法,所以难以发生SSD21内的仅特定的块211擦除次数增多(剩余可擦除次数减少)的现象。但是,即使如此也可能在各块211的剩余可擦除次数中产生不均衡,所以本实施例的SSD21也可以与公知的闪存同样地,进行用于使各块21的剩余可擦除次数尽量均等的处理(所谓损耗均衡处理)。损耗均衡是公知的处理,所以此处省略说明。
接着,用图4、图5说明本实施例的存储装置1对主机2提供的卷(虚拟卷)、RAID组、和SSD21对DKC10提供的LBA空间的关系。存储装置1通过使用RAID(Redundant Arrays ofInexpensive/Independent Disks:磁盘阵列)技术,而由多个SSD21形成逻辑的1个存储空间。RAID技术中将用于形成1个逻辑存储空间的SSD21的组称为RAID组。
RAID技术中,在RAID组中保存数据时,使用该数据生成冗余信息(奇偶校验),将数据和奇偶校验保存在RAID组内的不同的SSD21中。因此,在RAID组内1个(或者2个)SSD21中发生故障而不能进行数据存取的情况下,存储装置1能够使用其余SSD21内的数据(和奇偶校验)将发生故障的SSD21中保存的数据还原。
图4是用于说明RAID组30的存储空间的概念图。图4中示出了RAID组30由4台SSD21构成的例子。另外,图4中,SSD#0(20-0)~SSD#3(20-3)分别表示SSD21对存储控制器10提供的逻辑地址空间(LBA空间)。SSD#0(20-0)~SSD#3(20-3)的上端表示逻辑地址空间的起始地址(LBA=0),下端表示逻辑地址空间的末端。
另外,图4中表示了RAID组30的RAID级别(表示RAID技术中的数据冗余方式,一般而言有RAID1~RAID6的RAID级别)是RAID5的情况的例子。图4中,RAID组30内的“0”、“1”、“P”等框表示条块,条块(stripe block)的大小例如是64KB、256KB、512KB等。另外,将对各条块附加的“1”等编号称为“条块编号”。
图4中,条块中记载为“P”的条块是保存冗余数据(奇偶校验)的条块,将其称为“奇偶校验条”。另一方面,记载了数字(0、1等)的条块是保存从主机2等外部装置写入的数据(不是冗余数据的数据)的条块。将该条块称为“数据条”。
保存在奇偶校验条中的冗余数据使用数据条内的数据生成。以下将奇偶校验条和用于生成该奇偶校验条中保存的冗余数据的数据条的组(例如图4中的要素300)称为“条带”。本实施例的存储装置1的情况下,如图4所示的条带300那样,按属于1个条带的各条块存在于SSD#0(20-0)~SSD#3(20-3)中的相同位置(LBA)的规则构成条带。
进而,存储控制器10按称为“大块(chunk)”的管理单位管理RAID组内连续配置的多个条带。如图4所示,1个大块31具有多个条带。各大块的大小相同。但是,也可以是1个大块31仅具有1个条带的结构。
对各大块附加在RAID组内唯一的识别编号,将该识别编号称为大块编号。将包括RAID组的起始的条带(由位于SSD#0(20-0)~SSD#3(20-3)的开头的条块构成的条带)的大块的大块编号设为1,对位于此后的各大块附加连续的整数值。
各大块如上所述,在RAID组内规则地配置,所以能够根据大块编号用比较简单的计算求出属于该大块的SSD21的LBA空间中的地址(的范围)。反之,也可以根据SSD21的LBA空间中地址通过计算求出该地址属于的大块的大块编号。
图5是表示虚拟卷与RAID组、池的关系的图。存储控制器10对主机2提供与RAID组的存储区域不同的1个以上的虚拟的存储空间。将该虚拟的存储空间称为“虚拟卷”。虚拟卷的存储空间也按规定大小的区域分割管理。将该规定大小的区域称为“虚拟大块”。虚拟大块是虚拟卷的存储区域的分割单位。
对1个虚拟大块映射1个大块,存在从主机2对虚拟大块的数据写入时,在映射的大块中保存数据。但是,对虚拟大块映射大块时,仅映射大块内的数据条。因此,虚拟大块的大小等于大块中包括的全部数据条的合计大小。存储控制器10具有记录虚拟大块与大块的映射的管理表,使用该管理表管理对虚拟大块分配的存储区域(大块)。
刚定义了虚拟卷后,尚未对虚拟卷的各虚拟大块映射大块。存储控制器10在从主机2接收了对虚拟大块中的区域的写入请求时,才对该区域决定写入的数据应当写入的SSD21的逻辑地址空间中的存储区域(大块)。此处对于决定的大块,从尚未分配虚拟大块的大块(未使用大块)中决定1个大块。
本实施例中,将具有能够对虚拟大块分配(映射)的存储区域(大块)的RAID组的集合称为池。对虚拟卷的虚拟大块分配大块时,存储装置1从池中管理的RAID组中选择1个未使用大块,将选择的大块分配至虚拟大块。
如上所述,SSD21内的单元的单元模式被从MLC模式变更为TLC模式时,逻辑容量增加。图5表示SSD#0的逻辑容量扩大的情况的例子。这样,SSD21的逻辑容量增加时,能够从包括该SSD21的RAID组形成的大块31的数量也增加。但是,大块31是由1个以上的条带构成的存储区域,所以即使RAID组内的仅1个SSD21的逻辑容量增加,大块31的数量也不增加。RAID组内的各SSD21中逻辑容量最小的SSD21的逻辑容量增加的情况下,大块31可能增加。
接着,对于存储控制器10中使用的管理信息进行说明。存储控制器10具有多种管理信息,以下以本实施例中作为主要的说明对象的、关于单元模式的变更处理的管理信息为中心进行说明。
图6是说明RAID组管理表的结构的图。
RAID组管理表650是用于管理存储装置1管理的RAID组和属于RAID组的SSD21的属性信息的表,保存在存储器14中。在RAID组管理表650的各行(记录)中,保存管理对象的RAID组的属性信息、或者属于管理对象的RAID组的SSD21的属性信息。RAID组管理表650具有RG#651、RAID级别652、驱动器编号653、逻辑容量654、剩余可擦除次数655、开始日656、差值比657、寿命预测值658、T.Cell659、上次实施日660、大块数661的栏。
在RG#651中保存RAID组的识别编号(RAID组编号),RAID级别652表示RAID组的RAID级别。在驱动器编号653中保存属于RAID组的SSD21的识别符。
在逻辑容量654中保存由驱动器编号653确定的存储设备(SSD21)的逻辑容量。本实施例中,设属于各个RAID组的各SSD21的逻辑容量的初始值(在存储装置1中安装时的逻辑容量)相等,但作为其他实施方式,也可以使用不同逻辑容量的SSD21形成RAID组。如上所述,逻辑容量654的值可能随时间经过而变化。
在剩余可擦除次数655中保存由驱动器编号653确定的存储设备(SSD21)的剩余可擦除次数。如上所述,SSD21也在内部管理剩余可擦除次数,但SSD21对于SSD21内的块的剩余可擦除次数按每个块进行管理。另一方面,剩余可擦除次数655中保存的值,是各块的剩余可擦除次数的总和。以下将“SSD的剩余可擦除次数”用作表示SSD21内的全部块的剩余可擦除次数的合计值的表述。本实施例的SSD21具有从DKC10等发起端接受取得剩余可擦除次数的请求时,对发起端返回SSD21的剩余可擦除次数的功能。DKC10通过对SSD21发出取得剩余可擦除次数的请求,而从SSD21得到剩余可擦除次数的信息,保存在剩余可擦除次数655中。
在开始日656中保存SSD21运转开始的日期(称为运转开始日)。具体而言,在SSD21被安装在存储装置1中、由管理者定义包括该SSD21的RAID组时,DKC10将此时的日期保存在开始日656中。
差值比657是本实施例中DKC10为了预测各SSD21的运转状态的变化而使用的指标值。差值比的计算方法在后文中叙述。DKC10在每规定时间(例如1个月等)计算各SSD21的差值比。在RAID组管理表650中也记录过去计算出的差值比657。DKC10计算出差值比时,将计算出的值保存在D0(657-0)中。然后,在D0(657-0)中保存值的时间点的1个单位时间前(例如1个月前)计算出的差值比被保存在D1(657-1)中。同样,在D0(657-0)中保存值的时间点的2个单位时间前(例如2个月前)计算出的差值比被保存在D2(657-2)中,在D0(657-0)中保存值的时间点的3个单位时间前(例如3个月前)计算出的差值比被保存在D3(657-3)中。
T.Cell659是关于可否变更单元模式的信息。记录的T.Cell659中保存了0的情况下,DKC10对于与该记录对应的RAID组内的SSD21不进行单元模式变更处理。另一方面,在Cell659中保存了“1”的情况下,DKC10进行与该记录对应的RAID组内的SSD21的单元模式变更处理。在T.Cell659中,在存储装置1的用户(管理者)定义RAID组时,保存值。
在上次实施日660中,保存过去对属于管理对象的RAID组的SSD21进行了单元模式变更处理的日期中最近的日期。初始状态(刚定义了RAID组后)下,在上次实施日660中保存NULL(无效值,例如0等不用作日期的值)。
在寿命预测值658中保存DKC10基于SSD21的剩余可擦除次数的变化率计算出的SSD21的寿命的预测值。本实施例的存储***1中的寿命的定义,是定义为SSD21的剩余可擦除次数成为0的情况下,该SSD21达到寿命。因此,预测SSD21的剩余可擦除次数成为0的日期(时刻)是寿命预测值。DKC10基于SSD21的剩余可擦除次数的变化率,预测SSD21的剩余可擦除次数成为0的时期。寿命预测值的计算方法的详情在后文中叙述。另外,也可以不将SSD21的剩余可擦除次数成为0的日期(时刻)定义为寿命,而是改为将SSD21的剩余可擦除次数降至低于预先决定的阈值(该阈值是0以上的值)的日期(时刻)作为寿命。
另外,RAID组管理表650中,也可以包括以上说明的信息以外的信息。例如,RAID组管理表650中也可以保存各RAID组内能够定义的大块的数量等。
DKC10也具有RAID组管理表650以外的管理信息。例如是用于管理存储装置1内定义的各虚拟卷内的虚拟大块与大块的映射关系的表、管理池内的大块的使用状况的表等。但是,这些与具有对主机提供虚拟卷的功能的公知的存储装置通常具有的信息相同,所以此处省略说明。
此后,对各处理的流程进行说明。首先,说明用存储控制器10执行的程序。在存储装置1的存储器14中,例如保存结构管理程序141、单元模式控制程序142和I/O程序143。存储控制器10的CPU11通过执行这些程序而执行以下说明的各种处理。但是,为了避免说明变得冗长,在以下说明各处理时,有时以程序为主语进行各处理的说明。
结构管理程序141是用于进行存储装置1定义的虚拟卷和RAID组的管理的程序。用户使用管理主机5对存储装置1发出RAID组的定义指示时,在存储装置1(的CPU11)中执行结构管理程序141。结构管理程序141基于来自用户的指示,在RAID组管理表650中保存信息(例如属于RAID组的SSD21的识别符等)。
另外,定义RAID组时,用户也对于是否允许属于该RAID组的SSD21进行单元模式变更进行指定。用户允许属于RAID组的SSD21进行单元模式变更的情况下,结构管理程序141在RAID组管理表650内的记录中,在关于定义对象的RAID组的记录的T.Cell659中保存“1”,并非如此的情况下在T.Cell659中保存“0”。
I/O程序143是用于处理来自主机2的I/O请求(读取命令和写入命令)的程序。I/O程序143执行的具体的处理内容与本实施例并不直接相关,所以省略说明。
单元模式控制程序142是基于SSD21的运转状况判断是否要变更单元模式,根据需要使SSD21进行单元模式变更处理的程序。
用图7说明存储装置1中实施的单元模式变更处理的整体处理的流程。另外,在图7之后的各图中,在参考编号前附加的字母“S”表示“步骤”。
步骤1、步骤2是定义RAID组时进行的处理的一部分,结构管理程序141执行这些步骤。另外,此处省略定义RAID组的处理的说明。在步骤1中用户使用管理主机5对存储装置1发出允许属于RAID组的SSD21进行单元模式变更的指示。然后,结构管理程序141接受该指示。
接着,在步骤2中,结构管理程序141在关于定义对象的RAID组的记录的T.Cell659中保存“1”。该处理结束时,结构管理程序141对用户通知完成了RAID组的定义,并且在用户允许单元模式变更的情况下,对用户通知进行了单元模式变更的设定。
RAID组由I/O程序143进行存取(读取或写入)。例如步骤1、步骤2中的定义的RAID组被登记在池中时,响应主机2对虚拟卷发出写入命令的情况,I/O程序143将定义的RAID组内的大块映射至虚拟卷的虚拟大块,执行对映射的大块的I/O处理。但是,I/O程序143的处理的具体内容与本实施例并不直接相关,所以省略说明。
另外,定义了RAID组之后,单元模式控制程序142对该RAID组定期地(例如1个月1次)进行处理(步骤3~步骤6)。此处,以在存储控制器10与SSD21之间进行的交换、以及用户与存储控制器10之间进行的交换为中心进行说明。
单元模式控制程序142按每个RAID组执行。但是,仅对RAID组管理表650的T.Cell659中设定了“1”的RAID组进行步骤3~步骤6的处理。以下例如说明以RG#n(n是非负的整数值)为对象执行单元模式控制程序142的例子。单元模式控制程序142开始时,首先单元模式控制程序142对于属于RG#n的各SSD21发出取得剩余可擦除次数的请求(步骤3)。接收到取得剩余可擦除次数的请求的SSD21对存储控制器10返回SSD21的剩余可擦除次数(步骤4)。
之后,单元模式控制程序142使用步骤4中接受的SSD21的剩余可擦除次数等,进行变更要否单元模式的判断(步骤5)。另外,在步骤5中,判断为需要变更单元模式的情况下,单元模式控制程序142计算出属于RG#n的SSD21能够运转规定年数的剩余可擦除次数,实施单元模式变更处理(步骤6)。另外,本实施例中,说明期待的SSD21的耐用年数最低为5年的例子。步骤5、6的详情在后文中叙述。另外,本实施例中,步骤6的单元模式变更处理也称为“T.Cell”。另外,步骤5中判断为不需要变更单元模式的情况下,单元模式控制程序142不进行步骤6,结束处理。
接着,用图8、图9说明图7的步骤3~步骤5的处理的详情。其中,图8、图9中记载的处理是相当于图7的步骤3~步骤5的处理。另外,步骤6的详情记载在图13中。
步骤1010:单元模式控制程序142计算出属于RG#n的各SSD21的运转时间。本实施例中,SSD21的运转时间表示从SSD21开始运转起的经过时间,是通过将当前的日期(时刻)减去SSD21的运转开始日(RAID组管理表650的开始日656中保存的值)得到的值。
另外,在步骤1010中,单元模式控制程序142为了取得属于RG#n的各SSD21的剩余可擦除次数,而对各SSD21发出取得剩余可擦除次数的请求。接收到取得剩余可擦除次数的请求的SSD21参考块管理表1150,计算出SSD21具有的全部块的剩余可擦除次数1155的合计值。然后,SSD21对存储控制器10(单元模式控制程序142)返回计算出的合计值(即SSD21的剩余可擦除次数)。
步骤1020:单元模式控制程序142计算出属于RG#n的各SSD21的寿命预测值和差值比。以下说明寿命预测值和差值比的定义和计算方法。
用图10说明寿命预测值的计算方法的概念。图10的点(a1)、(a2)是对某一SSD21的剩余可擦除次数作图得到的。图10中记载的坐标系中,横轴表示时刻(日期时间),纵轴表示剩余可擦除次数。点(a2)表示当前时刻(T2)下的SSD21的剩余可擦除次数(N2),点(a1)表示上次执行单元模式控制程序142时(T1)的SSD21的剩余可擦除次数(N1)。另外,在以下步骤1020的说明中,当前时刻(日期时间)指的是本次执行单元模式控制程序142的时间(瞬间)的时刻(日期时间)。
该情况下,时刻T1到时刻T2之间的、SSD21的剩余可擦除次数的(平均)变化率,等于图10的直线(A)的斜率(以下也将该斜率记作G),G能够用以下式(1)表达。
[式1]
在计算寿命预测值时,基于SSD21的剩余可擦除次数以用式(1)求出的变化率逐渐减少这一假设进行计算。如上所述,寿命预测值指的是SSD21的剩余可擦除次数成为0的时刻。因此,图10的直线(A)的延长线上与横轴的交点(图10中的点(a3))表示寿命预测值。设寿命预测值为T3时,T3用以下式(2)表达。
[式2]
单元模式控制程序142通过使用式(2)计算出T3,而得到SSD21的寿命预测值。
接着说明差值比。以上说明的SSD21的寿命预测值是基于SSD21的剩余可擦除次数的变化率固定这一假设计算出的值,但剩余可擦除次数的变化率可能变动。因此,基于剩余可擦除次数的变化率导出的寿命预测值也可能变动。差值比是表示寿命预测值的变动趋势的指标值。
单元模式控制程序142使用以下所示的式(3)计算出差值比。另外,以下式(3)中,将SSD21的运转开始日(开始日656)记作L0,将最新的寿命预测值(本次执行单元模式控制程序142时计算出的寿命预测值)记作L1,将上次执行单元模式控制程序142时计算出的寿命预测值记作L2,并且将差值比记作D。
[式3]
差值比D是正值的情况,表示寿命预测值(L1)处于增加趋势(与过去的寿命预测值(L2)相比增加)。该情况下,例如可以认为对SSD21的写入频度处于减少趋势。反之,差值比D是负值的情况,表示寿命预测值(L1)处于减少趋势(与过去的寿命预测值(L2)相比减小),该情况下例如可以认为对SSD21的写入频度处于增加趋势。
另外,差值比是0的情况、或者是非常接近0的值的情况,表示L1与L2几乎没有差异(没有寿命预测值的变动),该情况下能够推测对SSD21的写入频度没有变化(是固定的写入频度)。
在步骤1020中,单元模式控制程序142使用以上叙述的式(2)~式(3),计算出属于RG#n的各SSD21的寿命预测值和差值比。另外,单元模式控制程序142将计算出差值比后的属于RG#n的各SSD21的剩余可擦除次数和寿命预测值保存在RAID组管理表650的剩余可擦除次数655、寿命预测值658中。因此,在步骤1020的执行开始时,在剩余可擦除次数655、寿命预测值658中保存了上次执行单元模式控制程序142时的SSD21的剩余可擦除次数、寿命预测值。
例如,对于属于RG#n的某一SSD21(以下将其记作“SSD#k”)计算寿命预测值、差值比的情况下,按以下流程计算即可。单元模式控制程序142对式(2)的N2代入步骤1010中得到的SSD#k的剩余可擦除次数,并且对N1代入RAID组管理表650的记录中与SSD#k对应的记录的剩余可擦除次数655。进而,单元模式控制程序142对T2代入当前时刻(日期时间),并且对T1代入上次执行单元模式控制程序142的时刻(日期时间)。单元模式控制程序142定期地(例如1个月1次)执行。因此,例如1个月执行1次单元模式控制程序142的情况下,单元模式控制程序142对T1代入从当前时刻(日期时间)起1个月前的日期时间即可。单元模式控制程序142通过对属于RG#n的各SSD21实施该计算,而计算出各SSD21的寿命预测值。
接着,单元模式控制程序142将用式(2)得到的寿命预测值代入式(3)的L1,将上次执行单元模式控制程序142时计算出的寿命预测值(保存在RAID组管理表650的记录中的、与SSD#k对应的记录的寿命预测值658中)代入式(3)的L2,然后将运转开始日(保存在RAID组管理表650的记录中的、与SSD#k对应的记录的开始日656中)代入式(3)的L0,由此计算SSD#k的差值比D。
计算出差值比D之后,单元模式控制程序142将RAID组管理表650的记录中的、与SSD#k对应的记录的D0(657-0)、D1(657-1)、D2(657-2)中保存的值分别移动至D1(657-1)、D2(657-2)、D3(657-3)。之后,单元模式控制程序142将之前用式(3)计算出的差值比D的值保存在D0(657-0)中。由此,在D0(657-0)、D1(657-1)、D2(657-2)、D3(657-3)中分别保存最新的差值比D、1个月前计算出的差值比、2个月前计算出的差值比、3个月前计算出的差值比。
步骤1030:单元模式控制程序142判断上次单元模式控制程序142对属于RG#n的SSD21进行单元模式变更处理后是否经过了规定期间。此处的“规定期间”指的是比以RG#n为对象执行单元模式控制程序142的周期更长的期间。本实施例中说明该“规定期间”是6个月的例子,但“规定期间”不一定要是6个月。“规定期间”只要是比执行单元模式控制程序142的周期更长的期间即可。在步骤1030中,具体而言,单元模式控制程序142判断RAID组管理表650的记录中的、保存关于RG#n的信息的记录(RG#651是“n”的记录)的上次实施日660与当前时刻相比是否在6个月以上前。
但是,至今尚未对属于RG#n的SSD21进行单元模式变更处理的情况下(例如相当于RG#n被导入存储***1中不久的情况),在上次实施日660中保存了NULL。该情况下,单元模式控制程序142判断从属于RG#n的全部SSD21的运转开始日(开始日656)起是否经过了规定期间(例如6个月)。
从上次执行单元模式变更处理时起未经过6个月以上的情况下(步骤1030:否),单元模式控制程序142决定不进行属于RG#n的全部SSD21的单元模式的变更,结束处理(步骤1150)。另外,在步骤1150中,单元模式控制程序142将步骤1010中取得的各SSD21的剩余可擦除次数保存在RAID组管理表650的剩余可擦除次数655中,将步骤1020中计算出的寿命预测值保存在RAID组管理表650的寿命预测值658中之后,结束处理。
另一方面,步骤1030的判断是肯定的情况下,进行步骤1060之后的处理。另外,步骤1060之后的处理,按属于RG#n的每个SSD21进行。以下说明对于属于RG#n的某1个SSD21(将其称为“SSD#k”)进行步骤1060~步骤1270的事例。
步骤1060:单元模式控制程序142参考SSD#k的D0(657-0)(D0(657-0)是步骤1020中计算出的差值比D)。然后,单元模式控制程序142判断SSD#k的D0(657-0)相当于以下(a)~(c)中的哪一者。
(a)非常接近0的值
(b)负值
(c)正值
此处,在D0(657-0)处于-α~α的范围中的情况下,单元模式控制程序142判断为D0(657-0)是“非常接近0的值”(相当于(a))。另外,α是处于0<α<1的关系的值,是接近0的值(例如0.05等)。以下只要没有特别提示,就说明α=0.05的情况的例子。
另外,D0(657-0)是小于-α的值的情况下,单元模式控制程序142判断为D0(657-0)是负值(相当于(b))。然后,D0(657-0)是大于α的值的情况下,单元模式控制程序142判断为D0(657-0)是正值(相当于(c))。
SSD#k的D0(657-0)相当于(b)的情况下(步骤1060:D0=负值),单元模式控制程序142决定对于RG#n内的全部SSD21不执行单元模式变更处理(步骤1150),结束处理。该情况下,如上所述推测对SSD21的写入频度处于增加趋势。对于SSD#k的今后的写入频度增加的情况下,存在实际寿命变得比步骤1020中求出的寿命预测值更短的可能性。因此,单元模式控制程序142在该情况下决定不执行单元模式变更处理。
SSD#k的D0(657-0)相当于(c)的情况下(步骤1060:D0=正值),单元模式控制程序142接着执行步骤1070。另外,SSD#k的D0(657-0)相当于(a)的情况下(步骤1060:D0=约零值),单元模式控制程序142接着执行步骤1210(图9)。
步骤1070:单元模式控制程序142判断SSD#k的运转时间(步骤1010中计算出的值)是否不足1年。SSD#k的运转时间在1年以上的情况下(步骤1070:否),单元模式控制程序142决定对于RG#n内的全部SSD21不执行单元模式变更处理(步骤1150),结束处理。SSD#k的运转时间不足1年的情况下(步骤1070:是),单元模式控制程序142接着执行步骤1080。SSD#k的D0(657-0)相当于(c)的情况下,如上所述推测对SSD#k的写入频度处于减少趋势。因此,存在SSD#k的实际寿命变得比步骤1020中求出的寿命预测值更长的可能性,所以可能可以进行单元模式变更处理。但是,一般而言,对卷或存储设备的存取趋势(主机等进行的读取或写入的频度)在应用开始后短时间内(例如半年)变动较大,时间进一步经过时存取趋势逐渐稳定。因此,单元模式控制程序142也考虑SSD#k的运转时间地,决定可否执行单元模式变更处理。SSD#k的运转时间不足1年、且写入频度处于单调减少趋势的情况下,单元模式控制程序142判断进入了SSD#k的存取趋势开始稳定的时期,判断为可以进行单元模式变更处理。但是,因为SSD#k的运转时间较短,所以仅在寿命预测值充分长(例如设想的耐用年数的两倍以上)的情况下,进行单元模式变更处理。另一方面,写入频度处于减少趋势但SSD#k的运转时间在1年以上的情况下,推测对SSD#k的存取趋势与一般的趋势不同。例如存在SSD#k中保存的数据的种类因来自主机的更新而变化等情况。该情况下进行单元模式变更处理存在风险(未等到耐用年数SSD#k就达到寿命的风险)。因此,单元模式控制程序142在该情况下决定不执行单元模式变更处理。
步骤1080:单元模式控制程序142判断是否SSD#k的寿命预测值是从运转开始日起11年后以上、并且SSD#k的差值比的历史(D0(657-0)~D3(657-3))处于D0≤D1≤D2≤D3的关系。步骤1080的判断是否定的情况下(步骤1080:否),即SSD#k的寿命预测值是从运转开始日起不足11年、或者差值比的历史不处于D0≤D1≤D2≤D3的关系的情况下,单元模式控制程序142决定对于RG#n内的全部SSD21不执行单元模式变更处理(步骤1150),结束处理。步骤1080的判断是肯定的情况下(步骤1080:是),单元模式控制程序142接着执行步骤1090。
步骤1090:步骤1080的判断是肯定的情况,是SSD#k的寿命预测值(从运转开始日起11年以上)比设想的SSD21的耐用年数(例如5年)长的情况。另外,可以认为DKC10对SSD#k的写入频度处于单调减少趋势。该情况下,单元模式控制程序142判断为即使属于RG#n的SSD21的寿命(寿命预测值)减少,也应当增加SSD21的逻辑容量。于是,单元模式控制程序142估算减小SSD#k的寿命预测值的情况下的剩余可擦除次数(也能够改称为增加SSD#k的逻辑容量的情况下的剩余可擦除次数)。以下将增加逻辑容量的情况下的SSD21的寿命预测值称为“目标寿命值”,并且将此时的剩余可擦除次数称为“目标剩余可擦除次数”。另外,在步骤1090中,单元模式控制程序142将SSD#k的目标寿命值设为运转开始后10年后,求出剩余可擦除次数。此处,将SSD#k的目标寿命值设定为运转开始后10年后、即期待的耐用年数的两倍这样较长的值的理由,在于SSD#k的运转时间较短(运转开始后不足1年),存在今后对SSD#k的写入频度(更新频度)变动的可能性。单元模式控制程序142通过使目标寿命值较大,而防止过剩地进行SSD#k的单元模式的变更。
对步骤1090(或者后述的步骤1230、步骤1250、步骤1270)中进行的目标剩余可擦除次数的计算方法进行说明。此处,再次使用步骤1020中使用的信息。以下设当前的时刻(本次执行单元模式控制程序142的时间点)为T2,并且设上次执行单元模式控制程序142的时刻为T1。另外,设步骤1020中使用的时刻T2(当前的时刻)下的SSD#k的剩余可擦除次数为N2,并且设时刻T1下的SSD#k的剩余可擦除次数为N1。
此处,设目标寿命值为T3’,设目标剩余可擦除次数为N2’。此时,目标剩余可擦除次数(N2’)可以通过使用以下式(4)而求出。
[式4]
再次用图10说明目标剩余可擦除次数的计算方法。单元模式控制程序142计算目标剩余可擦除次数时,与在步骤1020中计算寿命预测值时同样地,基于SSD21的剩余可擦除次数按用式(1)表示的变化率推移的假设进行计算。在步骤1020中,进行计算剩余可擦除次数成为0时的时刻,将其作为寿命预测值的处理。在步骤1090中,相反地假设寿命预测值(即剩余可擦除次数成为0时的时刻)是规定值(例如在步骤1090中是从运转开始日起10年后的时刻),求出为了满足该寿命预测值所需的、当前的剩余可擦除次数的最小值。直线(A)是步骤1020中进行的寿命预测值的计算中使用的直线。
此处的剩余可擦除次数的计算中,与步骤1020中的寿命预测值的计算同样,基于SSD21的剩余可擦除次数按用式(1)求出的变化率逐渐减少的假设进行计算。步骤1080的判断是肯定的情况,是图10的T3被判断为11年以上的情况。另外,该情况下,SSD21的寿命(寿命预测值)过剩地长,所以是寿命可以略短而要增加逻辑容量的事例。
图10的直线(B)是与直线(A)平行的直线(即斜率与用式(1)表示的值相等的直线),并且是通过坐标(T3’,0)的直线(处于T3’<T3的关系)。另外,直线(B)上的点(b1)的坐标值中,横轴(时刻)的值是T2,纵轴(剩余可擦除次数)的值是N2’。假设SSD21的剩余可擦除次数按用式(1)求出的变化率逐渐减少时,如果时刻T2(当前时刻)下的剩余可擦除次数(N2’)存在于直线(B)上(图10中的点(b1)),则寿命预测值(目标寿命值)成为T3’(在时间T3’时剩余可擦除次数成为0)。式(4)是用于求出直线(B)的时刻T2下的剩余可擦除次数(即N2’)的式子。
在步骤1090中,单元模式控制程序142对式(4)的N1、N2、T1、T2代入与步骤1020中代入的值相同的值,并且对T3’(目标寿命值)代入从SSD#k的运转开始日起10年后的日期,由此求出N2’。
步骤1095:单元模式控制程序142在尚未对于属于RG#n的全部SSD21进行处理(步骤1060~步骤1090、或者步骤1210~步骤1270的处理)的情况下,对未处理的SSD21执行步骤1060的处理。对于属于RG#n的全部SSD21完成了处理的情况下,单元模式控制程序142接着进行步骤1100。
步骤1100:单元模式控制程序142决定使用步骤1090等中求出的目标剩余可擦除次数,进行SSD#k的单元模式变更处理。另外,此处单元模式控制程序142将步骤1010中取得的各SSD21的剩余可擦除次数保存在RAID组管理表650的剩余可擦除次数655中,将步骤1020中计算出的寿命预测值保存在RAID组管理表650的寿命预测值658中。之后,单元模式控制程序142执行步骤6(单元模式变更处理)。步骤6的详情在后文中叙述。
接着,说明在步骤1060的判断中SSD#k的D0(657-0)是非常接近0的值的情况下(步骤1060:D0=约零值)的处理(图9中记载的步骤1210之后的处理)。该情况下,推测对SSD#k的写入频度没有变化(是固定的写入频度),所以单元模式控制程序142判断为原则上可以进行单元模式变更处理。详情在后文中叙述。
步骤1210:单元模式控制程序142判断SSD#k的运转时间是不足1年、还是1年以上不足3年、还是3年以上。
在步骤1210中判断为运转时间不足1年的情况下,执行步骤1240。在步骤1240中单元模式控制程序142判断是否SSD#k的寿命预测值在从运转开始日起7年以上、并且过去计算出的差值比(D1、D2、D3)都是非常接近0的值(-α~α的范围的值)。步骤1240的判断是否定的情况下(步骤1240:否),单元模式控制程序142决定对于RG#n内的全部SSD21不执行单元模式变更处理(步骤1150),结束处理。在步骤1240中单元模式控制程序142判断D1、D2、D3是否都是-α~α的范围的值的理由,在于确认是否对SSD21的写入频度没有变化、即处于对SSD21的存取趋势稳定的状态。对SSD21的存取趋势尚未稳定的状态的情况下,存在今后写入频度(擦除频度)增加等风险,所以单元模式控制程序142不执行单元模式变更处理。
步骤1240的判断是肯定的情况下(步骤1240:是),单元模式控制程序142对于SSD#k进行剩余可擦除次数决定处理(步骤1250)。步骤1250的处理与步骤1090相同。但是,此处决定将SSD#k的目标寿命值设为从运转开始日起7年的情况下的目标剩余可擦除次数。即,对式(4)的T3’代入从运转开始日起7年后的日期计算出寿命预测值这一点与步骤1090不同。
之后,单元模式控制程序142在尚未对于属于RG#n的全部SSD21完成步骤1210~步骤1270的处理的情况下(步骤1275:否),对于未处理的SSD21从步骤1060起反复处理。步骤1275的判断是肯定的情况下,接着执行步骤1100。
步骤1210中判断为运转时间是1年以上不足3年的情况下,执行步骤1260。在步骤1260中,单元模式控制程序142判断是否SSD#k的寿命预测值在从运转开始日起6年以上、并且D1、D2、D3都是非常接近0的值(-α~α的范围的值)。步骤1240的判断是否定的情况下(步骤1260:否),单元模式控制程序142决定对于RG#n内的全部SSD21不执行单元模式变更处理(步骤1150),结束处理。
步骤1260的判断是肯定的情况下(步骤1260:是),单元模式控制程序142对于SSD#k进行剩余可擦除次数决定处理(步骤1270)。步骤1270的处理与步骤1090相同。但是,此处决定将SSD#k的目标寿命值设为从运转开始日起6年的情况下的剩余可擦除次数。即,对式(4)的T3’代入从运转开始日起6年后的日期计算出寿命预测值这一点与步骤1090不同。
之后,单元模式控制程序142在尚未对于属于RG#n的全部SSD21完成步骤1210~步骤1270的处理的情况下(步骤1275:否),对于未处理的SSD21从步骤1060起反复处理。步骤1275的判断是肯定的情况下,接着执行步骤1100。
步骤1210中判断为运转时间是3年以上的情况下,执行步骤1220。在步骤1220中,单元模式控制程序142判断是否SSD#k的寿命预测值在从运转开始日起5.5年以上、并且D1、D2、D3都是非常接近0的值(-α~α的范围的值)。步骤1220的判断是否定的情况下(步骤1220:否),单元模式控制程序142决定对于RG#n内的全部SSD21不执行单元模式变更处理(步骤1150),结束处理。
步骤1220的判断是肯定的情况下(步骤1220:是),单元模式控制程序142对于SSD#k进行剩余可擦除次数决定处理(步骤1230)。步骤1230的处理与步骤1090相同。但是,此处决定将SSD#k的目标寿命值设为从运转开始日起5.5年的情况下的剩余可擦除次数。即,对式(4)的T3’代入从运转开始日起5.5年后的日期计算出寿命预测值这一点与步骤1090不同。
之后,单元模式控制程序142在尚未对于属于RG#n的全部SSD21完成步骤1210~步骤1270的处理的情况下(步骤1275:否),对于未处理的SSD21从步骤1060起反复处理。步骤1275的判断是肯定的情况下,接着执行步骤1100。
接着,用图13、图11、图12说明相当于图7的步骤6的处理(单元模式变更处理)的详情。
首先,参考图13说明步骤6的处理的概要。单元模式控制程序142对属于RG#n的各SSD21发出容量确认命令(步骤7)。容量确认命令中包括剩余可擦除次数的信息。此处包括的剩余可擦除次数的信息,是单元模式控制程序142执行图8、图9所示的处理(相当于图7的步骤3~步骤5的处理)结果得到的、SSD21的目标剩余可擦除次数。
将SSD21的一部分或全部块211从MLC模式变更为TLC模式时,SSD21的逻辑容量增加但剩余可擦除次数减少。接收到该命令的SSD21使用命令中包括的剩余可擦除次数的信息求出能够变更为TLC模式的块211的数量,进而基于它计算出将块211变更为TLC模式的情况下的逻辑容量(步骤8),SSD21对存储控制器10返回计算出的逻辑容量(步骤9)。另外,此处SSD21执行的处理的详情在后文中叙述。
参考图11说明步骤8中SSD21执行的处理的流程。图11的处理由SSD21具有的单元模式变更程序242执行。
步骤2010:单元模式变更程序242从DKC10接受容量确认命令时,提取容量确认命令中包括的剩余可擦除次数的信息。
步骤2020:单元模式变更程序242生成块管理表1150的复制。将此处生成的块管理表1150的复制称为“复制表”。另外,复制表的各栏与块管理表1150同样,称为芯片#1151、裸片#1152、块#1153、模式1154、剩余可擦除次数1155。然后,单元模式变更程序242对于复制表的各记录,按剩余可擦除次数1155从大到小的顺序排序。
步骤2030:单元模式变更程序242从复制表中选择1条记录。此处选择的记录是尚未进行以下说明的步骤2040之后的处理的记录,并且是剩余可擦除次数1155最大的记录。
步骤2040:单元模式变更程序242基于复制表的内容计算SSD21的剩余可擦除次数。此时,单元模式变更程序242在用步骤2030中选择的记录管理的块从MLC模式变更为TLC模式的前提下,计算出SSD21的剩余可擦除次数。具体而言,按以下流程进行计算。
首先,单元模式变更程序242计算出复制表中的、除步骤2030中选择的记录外的全部记录的剩余可擦除次数1155的合计值。接着,单元模式变更程序242计算出对步骤2030中选择的记录的剩余可擦除次数乘以0.1的值,将此处计算出的值加至之前计算出的剩余可擦除次数1155的合计值。
然后,单元模式变更程序242判断此处计算出的SSD21的剩余可擦除次数是否在步骤2010中接受的剩余可擦除次数以下。计算出的SSD21的剩余可擦除次数在步骤2010中接受的剩余可擦除次数以下的情况下(步骤2040:是),接着进行步骤2050。计算出的SSD21的剩余可擦除次数大于步骤2010中接受的剩余可擦除次数的情况下(步骤2040:否),单元模式变更程序242跳过步骤2050~步骤2070的处理,接着进行步骤2080。
另外,在步骤2040中,如果步骤2030中选择的记录的模式1154是“1”的情况下(即用选择的记录管理的块已经是TLC模式的情况下),也跳过步骤2050~步骤2070的处理,进行步骤2080。
步骤2050:单元模式变更程序242变更步骤2030中选择的记录的剩余可擦除次数1155(乘以0.1),并且将该记录的模式1154变更为“1”。
步骤2070:单元模式变更程序242判断复制表中是否存在未处理的记录(未进行步骤2030、步骤2040等处理的记录)。存在未处理的记录的情况下(步骤2070:是),单元模式变更程序242再次进行步骤2030的处理。不存在未处理的记录的情况下(步骤2070:否),接着进行步骤2080。
步骤2080:单元模式变更程序242计算出某些块被变更为TLC模式的情况下的、SSD21的逻辑容量。具体而言进行以下计算。
单元模式变更程序242对复制表的记录中的、模式1154是“0”的记录的数量(设其为M)和模式1154是“1”的记录的数量(设其为T)进行计数。计数得到的值(M、T)分别相当于SSD21内的某些块221被变更为TLC模式的情况下的、MLC模式的块数、TLC模式的块数。然后,单元模式变更程序242通过计算出M×MLC模式的块的大小+T×TLC模式的块的大小,而求出SSD21的逻辑容量。另外,TLC模式的块的大小处于MLC模式的块的1.5倍的关系(因为TLC在1个单元214中能够保存的比特数是MLC的1.5倍)。
步骤2090:单元模式变更程序242对DKC10通知步骤2080中计算出的SSD21的逻辑容量,丢弃复制表,结束处理。
返回图13的说明、即用DKC10的单元模式控制程序142执行的处理的说明。
从各SSD21返回逻辑容量之后,单元模式控制程序142决定属于RG#n的SSD21的最小容量(步骤10)。具体而言,单元模式控制程序142确定从属于RG#n的各SSD21返回的逻辑容量的最小值。确定的值是属于RG#n的SSD21的最小容量。之后,单元模式控制程序142对用户确认可否变更单元模式(步骤11)。例如,单元模式控制程序142使管理主机5在管理主机5的显示器上显示如图14所示的确认用画面,得到来自用户的是否允许变更单元模式的回答。用户按下了图14的确认用画面中的“实施”按钮的情况下,管理主机5对单元模式控制程序142返回该消息(步骤12)。
用户不允许变更单元模式的情况下,即用户按下了确认用画面的“不实施”按钮的情况下,单元模式控制程序142结束处理。
用户允许变更单元模式的情况下,即用户按下了确认用画面的“实施”按钮的情况下,单元模式控制程序142对属于RG#n的各SSD21发出单元模式变更命令。单元模式变更命令中包括容量信息。单元模式控制程序142,对各SSD21发出将步骤10中决定的SSD21的最小容量设定为容量信息的单元模式变更命令。接收到该命令的SSD21使用命令中包括的容量信息,将SSD21内的某些块的单元模式从MLC模式变更为TLC模式(步骤14)。
用图12说明接收到单元模式变更命令的SSD21实施的处理(步骤14)的详情。
步骤2510:单元模式变更程序242从DKC10接受单元模式变更命令时,提取单元模式变更命令中包括的容量信息。如上所述,该容量信息是步骤10中决定的、属于RG#n的SSD21的最小容量。
步骤2520:单元模式变更程序242从块管理表1150中选择1条记录。此处选择的记录是尚未进行以下说明的步骤2530之后的处理的记录,并且是剩余可擦除次数1155最大的记录。
步骤2530:单元模式变更程序242基于用步骤2520中选择的记录管理的块被变更为TLC模式的设想,计算SSD21的逻辑容量。计算方法如下所述。
单元模式变更程序242计算块管理表1150的记录中的、模式1154是“0”的记录的数量减去1得到的值。以下将该值记作“m”。另外,单元模式变更程序242计算块管理表1150的记录中的、模式1154是“1”的记录的数量加上1得到的值。以下将该值记作“m”。m和t是假设用步骤2520中选择的记录管理的块(即1个块)被变更为TLC模式的情况下的、SSD21内的MLC模式的块数、TLC模式的块数。
然后,单元模式变更程序242通过计算m×MLC模式的块的大小+t×TLC模式的块的大小,来求出单元模式变更后的SSD21的逻辑容量。
此处求出的单元模式变更后的SSD21的逻辑容量在步骤2510中取得的容量信息以下的情况下(步骤2530:是),接着进行步骤2540。另一方面,单元模式变更后的SSD21的逻辑容量大于步骤2510中取得的容量信息的情况下(步骤2530:否),单元模式变更程序242跳过步骤2540~步骤2550的处理,接着进行步骤2560。
步骤2540:单元模式变更程序242对FM芯片210发出用步骤2520中选择的记录管理的块211的单元模式变更的指示,将该块211变更为TLC模式。之后,单元模式变更程序242将块管理表1150的记录(步骤2520中选择的记录)的模式1154变更为“1”,并且变更剩余可擦除次数1155(乘以0.1)。
步骤2550:单元模式变更程序242判断块管理表1150中是否存在未处理的记录(未进行步骤2520、步骤2530等处理的记录)。存在未处理的记录的情况下(步骤2550:是),单元模式变更程序242再次进行步骤2520的处理。不存在未处理的记录的情况下(步骤2550:否),接着进行步骤2560。
步骤2560:单元模式变更程序242对DKC10通知处理已完成的消息,结束处理。此时,单元模式变更程序242对DKC10通知变更后的SSD21的逻辑容量。
步骤14(图12的处理)结束时(从属于RG#n的全部SSD21接受处理完成的响应时),单元模式控制程序142将从SSD21返回的SSD21的逻辑容量保存在RAID组管理表650(逻辑容量654)中,并且在上次实施日660中保存当前的日期(时刻),结束处理。
以上是本实施例的存储***中进行的处理。本实施例的存储***中,根据SSD21的剩余可擦除次数的变化率预测SSD21的寿命,在预测的寿命大于规定值(耐用年数)的情况下,将一部分块(单元)的模式从MLC模式变更为TLC模式,使SSD21的存储容量增加。具体而言,存储控制器计算出满足目标寿命的SSD21的剩余可擦除次数(目标剩余可擦除次数)。然后,SSD21决定在SSD21的剩余可擦除次数被变更为目标剩余可擦除次数的情况下,能够以TLC模式使用多少个块,对于决定的数量的块变更单元模式。由此,存储***能够维持SSD21的寿命(耐用年数)、同时对用户提供更大的存储容量。
以上说明了本发明的实施例,但它们是用于说明本发明的举例,并不是将本发明的范围仅限定于这些实施例。即,本发明也能够用其他各种方式实施。
以上说明的实施例中,说明了SSD21的各单元能够保存2比特或3比特数据的例子,但本发明不限定于此。例如也能够应用于SSD21的各单元能够从能够保存n比特(n是2以上的整数)数据的模式变更为能够保存m比特(m是满足n<m的整数)数据的模式的情况。另外,以上实施例中,说明了在某一块的单元模式被从MLC模式变更为TLC模式时,该块的剩余可擦除次数被变更为单元模式变更前的剩余可擦除次数的1/c(例如c=10)的例子,但这是一例,也可以使用此外的例子。
另外,以上说明的实施例中,说明了存储***将多个SSD21作为RAID组应用的例子,但SSD21作为RAID组应用的结构不是必需的。例如,存储***也可以将单个SSD21提供的存储地址空间登记在池中应用,也可以将SSD21提供的存储地址空间直接对主机2提供。
另外,以上说明的实施例中,SSD21通过从存储控制器10接受容量确认命令来取得剩余可擦除次数(目标剩余可擦除次数)时,先对存储控制器10返回计算出的容量的信息。然后,从存储控制器10接受容量信息(包括在单元模式变更命令中)时,基于该容量信息将某些单元(块)的模式从MLC模式变更为TLC模式。即,在进行单元模式变更前,在存储控制器10与SSD21之间进行2次命令交换。但是,作为其他实施方式,SSD21也可以在从存储控制器10给出目标剩余可擦除次数时不先对存储控制器10返回响应而进行单元模式的变更。具体而言,例如用直到图11的步骤2070的处理,决定可以变更为TLC模式的块,所以SSD21将步骤2080中决定的块变更为TLC模式即可。
另外,以上说明的实施例中为了推测变更为TLC模式后的单元的剩余寿命而使用了剩余可擦除次数,但剩余寿命的推测方法不限定于该方法。例如,已知单元的寿命不仅依赖于擦除次数,也依赖于擦除间隔(从上次擦除起的经过时间)。于是,也可以代替剩余可擦除次数地,对考虑了擦除间隔的点数进行管理,基于该点数的变化率计算(推测)剩余寿命(例如代替剩余可擦除次数地,最初对全部块赋予固定的点数。然后,进行块的擦除时,与擦除间隔相应地从块中减去规定量的值,但擦除间隔较短的情况下使减去的量较多即可)。由此,可以认为能够更加正确地推测剩余寿命。
附图标记说明
1:存储装置,2:主机计算机,3:SAN,5:管理主机,10:存储控制器,11:CPU,12:主机I/F,13:设备I/F,14:存储器,15:管理用I/F,21:SSD,25:HDD,200:SSD控制器,201:CPU,202:上游I/F,203:下游I/F,204:存储器,205:内部连接切换器,210:FM芯片,211:块,213:裸片,214:单元。
Claims (12)
1.一种具有存储控制器和与所述存储控制器连接的多个存储设备的存储***,其特征在于:
所述存储设备包括设备控制器和具有多个作为数据擦除单位的块的非易失性存储介质,所述块包括多个单元,所述块各自能够将所述块内的所述单元从以能够保存n比特信息的第一模式使用中的状态变更为能够保存m比特信息的第二模式,其中,n<m,
所述设备控制器按每个所述块管理剩余可擦除次数,
所述块的模式从所述第一模式变更成为所述第二模式时,所述设备控制器减少所述块的剩余可擦除次数,
所述存储控制器,
从所述存储设备取得所述存储设备的剩余可擦除次数,计算所述存储设备的剩余可擦除次数的变化率,
使用所述存储设备的剩余可擦除次数的变化率,计算所述存储设备的寿命预测值,
在所述寿命预测值大于目标寿命的情况下,
通过将以所述第一模式使用中的所述块中的规定数量的所述块的模式变更为所述第二模式,来增加所述存储设备的存储容量,
所述存储控制器通过计算表示所述寿命预测值的变动趋势的差值比,来判断所述寿命预测值是否为减少趋势,
在所述寿命预测值为减少趋势时不进行所述块的模式变更。
2.如权利要求1所述的存储***,其特征在于:
所述规定数量,是以所述第一模式使用的所述块中的、即使所述块的模式变更为所述第二模式也能够满足所述目标寿命的数量的所述块的数量。
3.如权利要求2所述的存储***,其特征在于:
所述存储控制器使用所述存储设备的剩余可擦除次数的变化率计算目标剩余可擦除次数,所述目标剩余可擦除次数是能够满足所述目标寿命的所述存储设备的剩余擦除次数。
4.如权利要求3所述的存储***,其特征在于:
所述存储控制器对所述存储设备通知所述目标剩余可擦除次数,
所述存储设备使用所述目标剩余可擦除次数来计算所述存储设备的增加后的存储容量。
5.如权利要求4所述的存储***,其特征在于:
在所述存储***中,由所述多个存储设备构成多个RAID组,
所述存储控制器取得属于所述RAID组的各所述存储设备计算出的所述存储设备的增加后的存储容量,
对属于所述RAID组的各所述存储设备通知所述取得的各所述存储设备的增加后的存储容量的最小值,
接收到所述通知的所述存储设备反复进行将以所述第一模式使用中的所述块的模式变更为所述第二模式的处理,直到所述存储容量达到通知的所述最小值。
6.如权利要求5所述的存储***,其特征在于:
所述块中能够保存的信息量可否变更能够按每个所述RAID组设定,
所述存储控制器仅对属于设定为能够变更所述块的模式的所述RAID组的所述存储设备,增加所述存储设备的存储容量。
7.如权利要求1所述的存储***,其特征在于:
所述存储控制器定期地计算所述差值比,记录规定个数的过去计算出的所述差值比,
在所述规定个数的所述差值比都是收敛在规定范围内的值的情况下进行所述块的模式变更。
8.一种与存储控制器连接的存储设备,其特征在于:
所述存储设备包括设备控制器和具有多个作为数据擦除单位的块的非易失性存储介质,所述块包括多个单元,所述块各自能够将所述块内的所述单元从以能够保存n比特信息的第一模式使用中的状态变更为能够保存m比特信息的第二模式,其中,n<m,
所述设备控制器按每个所述块管理剩余可擦除次数,
所述块的模式从所述第一模式变更成为所述第二模式时,所述设备控制器减少所述块的剩余可擦除次数,
所述设备控制器在从所述存储控制器接收到目标剩余可擦除次数时,
基于所述目标剩余可擦除次数,确定所述块中能够以所述第二模式使用的块的数量,
对存储控制器返回将确定出的所述块变更成为所述第二模式时的所述存储设备的存储容量,
对于使用所述存储设备的剩余可擦除次数的变化率计算得到的寿命预测值,通过计算表示所述寿命预测值的变动趋势的差值比,来判断所述寿命预测值是否为减少趋势,
在所述寿命预测值为减少趋势时不进行所述块的模式变更。
9.如权利要求8所述的存储设备,其特征在于:
所述设备控制器将满足所述存储设备的剩余可擦除次数在所述目标剩余可擦除次数以下这一条件的情况下的、以所述第二模式使用的所述块的上限数作为所述块中能够以所述第二模式使用的块的数量。
10.如权利要求8所述的存储设备,其特征在于:
所述设备控制器在从所述存储控制器接收到单元模式变更命令时,反复进行将以所述第一模式使用中的所述块变更为所述第二模式的处理,直到所述存储设备的存储容量达到所述单元模式变更命令中包含的容量。
11.如权利要求8所述的存储设备,其特征在于:
所述设备控制器在从所述存储控制器接收到剩余可擦除次数的取得请求时,将所述块各自的剩余可擦除次数的合计值作为所述存储设备的剩余可擦除次数返回给所述存储控制器。
12.一种具有存储控制器和与所述存储控制器连接的多个存储设备的存储***的控制方法,其特征在于:
所述存储设备包括设备控制器和具有多个作为数据擦除单位的块的非易失性存储介质,所述块包括多个单元,所述块各自能够将所述块内的所述单元从以能够保存n比特信息的第一模式使用中的状态变更为能够保存m比特信息的第二模式,其中,n<m,
所述设备控制器按每个所述块管理剩余可擦除次数,
所述块的模式从所述第一模式变更成为所述第二模式时,所述设备控制器减少所述块的剩余可擦除次数,
所述存储控制器执行:
1)从所述存储设备取得所述存储设备的剩余可擦除次数,计算所述存储设备的剩余可擦除次数的变化率的步骤;
2)使用所述存储设备的剩余可擦除次数的变化率,计算所述存储设备的寿命预测值的步骤;和
3)在所述寿命预测值大于目标寿命的情况下,通过将以所述第一模式使用中的所述块中的规定数量的所述块变更为所述第二模式,来增加所述存储设备的存储容量的步骤,
其中,所述存储控制器通过计算表示所述寿命预测值的变动趋势的差值比,来判断所述寿命预测值是否为减少趋势,
在所述寿命预测值为减少趋势时不进行所述块的模式变更。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/083369 WO2017090176A1 (ja) | 2015-11-27 | 2015-11-27 | ストレージシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107710140A CN107710140A (zh) | 2018-02-16 |
CN107710140B true CN107710140B (zh) | 2020-07-14 |
Family
ID=58763266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580081270.2A Active CN107710140B (zh) | 2015-11-27 | 2015-11-27 | 存储*** |
Country Status (4)
Country | Link |
---|---|
US (1) | US10387062B2 (zh) |
JP (1) | JP6286622B2 (zh) |
CN (1) | CN107710140B (zh) |
WO (1) | WO2017090176A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6721491B2 (ja) * | 2016-11-18 | 2020-07-15 | キオクシア株式会社 | 記憶システム |
WO2018154669A1 (ja) * | 2017-02-23 | 2018-08-30 | 株式会社日立製作所 | ストレージシステム |
WO2019022633A1 (en) * | 2017-07-27 | 2019-01-31 | EMC IP Holding Company LLC | DATA MANAGEMENT WITHIN INTEGRATED CIRCUIT DISK STORAGE |
JP7030463B2 (ja) | 2017-09-22 | 2022-03-07 | キオクシア株式会社 | メモリシステム |
US10852966B1 (en) * | 2017-10-18 | 2020-12-01 | EMC IP Holding Company, LLC | System and method for creating mapped RAID group during expansion of extent pool |
US10852951B1 (en) * | 2017-10-18 | 2020-12-01 | EMC IP Holding Company, LLC | System and method for improving I/O performance by introducing extent pool level I/O credits and user I/O credits throttling on Mapped RAID |
JP6805110B2 (ja) * | 2017-11-06 | 2020-12-23 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
US11132133B2 (en) * | 2018-03-08 | 2021-09-28 | Toshiba Memory Corporation | Workload-adaptive overprovisioning in solid state storage drive arrays |
US10796729B2 (en) * | 2019-02-05 | 2020-10-06 | Micron Technology, Inc. | Dynamic allocation of a capacitive component in a memory device |
CN110007857B (zh) * | 2019-03-08 | 2022-08-19 | 北京星网锐捷网络技术有限公司 | 一种闪存芯片的寿命预测方法及装置 |
CN111767006B (zh) | 2019-04-02 | 2021-03-16 | 英韧科技(上海)有限公司 | 数据处理方法及装置 |
JP7248495B2 (ja) * | 2019-05-15 | 2023-03-29 | ファナック株式会社 | 数値制御測装置、数値制御システム、及びプログラム |
US10942881B2 (en) * | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Parallel operations in aggregated and virtualized solid state drives |
CN111142796A (zh) * | 2019-12-20 | 2020-05-12 | 北京浪潮数据技术有限公司 | 一种ssd寿命预测方法、装置、设备及可读存储介质 |
JP7451809B2 (ja) | 2022-02-17 | 2024-03-18 | キオクシア株式会社 | 方法 |
CN117785072B (zh) * | 2024-02-27 | 2024-05-28 | 南京扬贺扬微电子科技有限公司 | 一种基于eMMC协议的存储控制***及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6075723A (en) * | 1997-12-15 | 2000-06-13 | Sony Corporation | Nonvolatile semiconductor memory device and IC memory card using same |
CN101446885A (zh) * | 2005-09-05 | 2009-06-03 | 株式会社日立制作所 | 存储***以及存储***的访问控制方法 |
CN102473140A (zh) * | 2009-07-17 | 2012-05-23 | 株式会社东芝 | 存储器管理装置 |
CN104951247A (zh) * | 2014-03-27 | 2015-09-30 | 京瓷办公信息***株式会社 | 信息处理装置以及存储器管理方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080250220A1 (en) | 2007-04-06 | 2008-10-09 | Takafumi Ito | Memory system |
JP5778779B2 (ja) * | 2011-12-21 | 2015-09-16 | 株式会社日立製作所 | 計算機システム、及び管理システム |
JP6104676B2 (ja) * | 2013-04-01 | 2017-03-29 | 株式会社東芝 | メモリシステム、制御システムおよび寿命予測方法 |
-
2015
- 2015-11-27 US US15/744,671 patent/US10387062B2/en active Active
- 2015-11-27 WO PCT/JP2015/083369 patent/WO2017090176A1/ja active Application Filing
- 2015-11-27 CN CN201580081270.2A patent/CN107710140B/zh active Active
- 2015-11-27 JP JP2017552630A patent/JP6286622B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6075723A (en) * | 1997-12-15 | 2000-06-13 | Sony Corporation | Nonvolatile semiconductor memory device and IC memory card using same |
CN101446885A (zh) * | 2005-09-05 | 2009-06-03 | 株式会社日立制作所 | 存储***以及存储***的访问控制方法 |
CN102473140A (zh) * | 2009-07-17 | 2012-05-23 | 株式会社东芝 | 存储器管理装置 |
CN104951247A (zh) * | 2014-03-27 | 2015-09-30 | 京瓷办公信息***株式会社 | 信息处理装置以及存储器管理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017090176A1 (ja) | 2017-06-01 |
JP6286622B2 (ja) | 2018-02-28 |
JPWO2017090176A1 (ja) | 2018-02-15 |
US20180203631A1 (en) | 2018-07-19 |
US10387062B2 (en) | 2019-08-20 |
CN107710140A (zh) | 2018-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107710140B (zh) | 存储*** | |
US11693568B2 (en) | Workload-adaptive overprovisioning in solid state storage drive arrays | |
US10372331B2 (en) | Storage system, information processing system and method for controlling nonvolatile memory | |
US9298534B2 (en) | Memory system and constructing method of logical block | |
US10095443B2 (en) | Storage system, information processing system and method for controlling nonvolatile memory | |
US10162749B2 (en) | Storage system and information processing system for controlling nonvolatile memory | |
JP5844473B2 (ja) | 複数の不揮発性の半導体記憶媒体を有し、ホットデータを長寿命記憶媒体に配置しコールドデータを短寿命記憶媒体に配置するストレージ装置、及び、記憶制御方法 | |
JP6073471B2 (ja) | ストレージ装置 | |
JP6381529B2 (ja) | ストレージ装置および記憶制御方法 | |
US8775723B2 (en) | Storage system and control method of storage system | |
WO2014141411A1 (ja) | ストレージシステムおよびストレージシステム制御方法 | |
TWI428739B (zh) | 記憶卡之壽命終點恢復及尺寸重整 | |
US10545684B2 (en) | Storage device | |
JP2008015769A (ja) | ストレージシステム及び書き込み分散方法 | |
US20150143021A1 (en) | Equalizing wear on storage devices through file system controls | |
US10642525B2 (en) | Multiple-stage data lifetime management for storage devices | |
US10684785B2 (en) | Storage system | |
WO2017022082A1 (ja) | フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム | |
JP2012058770A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US20140181437A1 (en) | Equalizing wear on mirrored storage devices through file system controls | |
US20230067208A1 (en) | Workload-Adaptive Overprovisioning in Solid State Storage Drive Arrays | |
WO2018167890A1 (ja) | 計算機システム及び管理方法 | |
TWI846532B (zh) | 資料儲存裝置與非揮發式記憶體控制方法 | |
JP2019121129A (ja) | 不揮発性メモリモジュール |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |