JP5768118B2 - Storage system having multiple flash packages - Google Patents
Storage system having multiple flash packages Download PDFInfo
- Publication number
- JP5768118B2 JP5768118B2 JP2013255864A JP2013255864A JP5768118B2 JP 5768118 B2 JP5768118 B2 JP 5768118B2 JP 2013255864 A JP2013255864 A JP 2013255864A JP 2013255864 A JP2013255864 A JP 2013255864A JP 5768118 B2 JP5768118 B2 JP 5768118B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- real
- package
- page
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Description
本発明は、ストレージシステムに関する。 The present invention relates to a storage system.
フラッシュメモリは、メモリの特性上、データを書き換えようとした時、そのデータが元々格納されていた物理領域上に、そのデータを、直接上書きすることは不可能である。データの書換えを行う際には、フラッシュメモリの消去単位であるブロックと呼ばれる単位で、消去処理を実行した後、データを書き換える必要がある。このブロックに対する消去処理の実行回数には、物理的な制約から限界がある。フラッシュメモリのブロックは、消去回数がこの限界数をこえると、そのブロックにはデータを格納できなくなってしまうという性質をもっている。 In the flash memory, when data is to be rewritten due to the characteristics of the memory, it is impossible to directly overwrite the data on the physical area where the data was originally stored. When rewriting data, it is necessary to rewrite the data after executing an erasing process in a unit called a block which is an erasing unit of the flash memory. There is a limit to the number of times the erase process is executed for this block due to physical restrictions. A flash memory block has the property that if the number of erases exceeds this limit, data cannot be stored in that block.
このため、フラッシュメモリの各々のブロックに対して、データを格納するアドレスを固定的に割り当てる方式をとると、通常はアドレスごとに書換え頻度が異なるので、消去回数のばらつきがブロックごとに生ずることになる。このため、ある特定のブロックの消去回数が限界数を超えると、そのブロックに割り当てたアドレスのデータを格納できなくなってしまう。以上の問題を解決するため、このばらつきを少なくする技術として、ウエアレベリングと呼ばれる技術が公開されている(例えば、特許文献1)。ウエアレベリングの基本的な考え方は、外側に見せるアドレス層として、物理的なアドレスとは別に、論理的なアドレス層を設け、物理的なアドレスに割り当てる論理的なアドレスを適宜変更していく、例えば、頻繁にアクセスされる論理的なアドレスには、消去回数の少ないアドレスを割り当てることによって、物理的なブロックの消去回数の偏りを削減しようというものである。また、物理的なアドレスが変更になっても、論理的なアドレスは変わらないので、外側からは、同一のアドレスでデータクセスが可能であるため、使い勝手の良さも維持できる。 For this reason, if a method of allocating addresses for storing data to each block of the flash memory in a fixed manner, the frequency of rewriting usually differs from one address to another, resulting in variations in the number of erasures from one block to another. Become. For this reason, when the number of times of erasure of a specific block exceeds the limit number, it becomes impossible to store the data of the address assigned to that block. In order to solve the above problems, a technique called wear leveling has been disclosed as a technique for reducing this variation (for example, Patent Document 1). The basic idea of wear leveling is that a logical address layer is provided separately from the physical address as the address layer to be shown on the outside, and the logical address assigned to the physical address is appropriately changed. An attempt is made to reduce the bias of the erase number of physical blocks by assigning an address with a small erase frequency to a frequently accessed logical address. In addition, even if the physical address is changed, the logical address does not change. Therefore, it is possible to access data from the outside at the same address, so that the usability can be maintained.
次に、格納容量削減技術について述べる。近年、ストレージシステムでは、格納容量を削減する技術が注目されている。その代表的な技術の一つが、容量の仮想化技術である。容量の仮想化技術とは、ストレージシステムがもっている物理的な容量より大きな仮想的な容量をホスト側に見せる技術である。これは、ユーザが実際にストレージを使用する場合、ユーザが定義したユーザボリューム(ユーザからみた記憶装置)の容量に対し、実際に格納するデータの量は、この定義容量には、なかなか達しないという特性を利用したものである。すなわち、容量仮想化技術がない場合には、ボリューム定義時に、定義された物理的な容量を確保していたのに対し、容量仮想化技術を適用した場合には、実際にストレージシステムにデータが格納されたとき、初めて容量を確保することになる。これによって、格納容量を削減でき、かつ、ユーザはボリューム容量を厳密に定義する必要なく、単純に大きく余裕をもった値を定義すればよいため、使い勝手も向上できる。この技術において、データが書き込まれたときに確保される物理的な記憶領域は、ページと呼ばれる。一般に、ページのサイズは、多様性にとんでいるが、本発明では、ページのサイズのほうが、フラッシュメモリの消去単位であるブロックのサイズより大きいものとする。一方、フラッシュメモリにおいては、一般的に、消去の単位は、前述したようにブロックと呼ぶのに対し、ブロックの中での読み書きの単位をページとよぶ。当然、フラッシュメモリにおいては、ブロックのサイズのほうが、ページサイズより大きくなる。しかし、本発明では、ページという言葉は、容量仮想化におけるページをさすことにする。また、繰り返しになるが、本発明においては、ページのサイズは、フラッシュメモリのブロックのサイズよりも大きいとする。 Next, storage capacity reduction technology will be described. In recent years, technologies for reducing storage capacity have attracted attention in storage systems. One of the representative technologies is capacity virtualization technology. The capacity virtualization technology is a technology that allows a host to show a virtual capacity larger than the physical capacity of a storage system. This is because when the user actually uses the storage, the amount of data that is actually stored does not easily reach the capacity of the user volume (the storage device viewed from the user) defined by the user. It uses characteristics. In other words, when there was no capacity virtualization technology, the defined physical capacity was secured at the time of volume definition, whereas when capacity virtualization technology was applied, data was actually stored in the storage system. When stored, capacity will be reserved for the first time. As a result, the storage capacity can be reduced, and the user does not need to define the volume capacity strictly, and it is only necessary to define a value with a large margin so that the usability can be improved. In this technique, a physical storage area secured when data is written is called a page. In general, the size of the page depends on diversity, but in the present invention, the size of the page is larger than the size of the block which is the erase unit of the flash memory. On the other hand, in the flash memory, the erase unit is generally called a block as described above, whereas the read / write unit in the block is called a page. Naturally, in the flash memory, the block size is larger than the page size. However, in the present invention, the term “page” refers to a page in capacity virtualization. Again, in the present invention, it is assumed that the page size is larger than the block size of the flash memory.
ただし、本発明の対象となるストレージシステムは、上記の容量仮想化技術をもっていることが必ずしも必要条件とはならない。一方、容量仮想化技術をもったストレージステムにおいては、ページ単位で、ページを記憶装置(典型的には、HDD(Hard Disk Drive))の間で移動させ、性能向上を実現させる技術が、公開されている(特許文献2)。さらに、価格性能比がことなる記憶装置間で、ページを移動させ、価格性能比を向上させる技術も公開されている。一方、通常、HDDには、ユーザのデータを格納する前に、特定のパターン、例えば、オール0などでフォーマティングする。この際、ホストが書き込むこの特定パターンを、ストレージシステムで検出して、すでに割り当てているページを解放する技術も公開されている(特許文献3)。 However, the storage system that is the subject of the present invention is not necessarily required to have the capacity virtualization technology described above. On the other hand, in the storage system with capacity virtualization technology, a technology to improve performance by moving pages between storage devices (typically HDD (Hard Disk Drive)) on a page-by-page basis has been released. (Patent Document 2). Furthermore, a technique for moving a page between storage devices having different price / performance ratios to improve the price / performance ratio has been disclosed. On the other hand, the HDD normally performs formatting with a specific pattern, for example, all zeros, before storing user data. At this time, a technique for detecting this specific pattern written by the host in the storage system and releasing the already allocated page is also disclosed (Patent Document 3).
本発明の対象となるフラッシュメモリを記憶媒体とする大容量ストレージシステムにおいては、フラッシュメモリチップの数は、例えば数万に及ぶ。このため、数百のチップを搭載したフラッシュパッケージを数百枚、ストレージシステムのコントローラに接続するのが典型的な構成となる。 In a large-capacity storage system using a flash memory as an object of the present invention, the number of flash memory chips reaches, for example, tens of thousands. For this reason, it is a typical configuration to connect hundreds of flash packages having hundreds of chips to the controller of the storage system.
本発明において解決しようとする課題は、第1に、多数のフラッシュメモリチップを記憶媒体として構成する大規模ストレージシステムにおいて、ストレージシステム全体で、フラッシュメモリの消去回数の偏りを効率的に少なくすることであり、第2に、フラッシュメモリへの格納データ容量を削減することである。まず、第1の課題について述べる。フラッシュメモリを搭載したストレージシステムにおいては、ウエアレベリング技術が大変重要になる。しかし、本発明の対象となる数万のフラッシュメモリを有するストレージシステムにおいて、従来のウエアレベリングの考え方を、そのまま適用すると、数万個のすべてのフラッシュメモリチップのブロック消去回数の偏りを少なくしようとするので、ウエアレベリングの制御オーバヘッドが大きくなってしまうという課題があった。 Problems to be solved by the present invention are as follows. First, in a large-scale storage system configured with a large number of flash memory chips as storage media, it is possible to efficiently reduce the bias in the number of erases of the flash memory in the entire storage system. Second, it is necessary to reduce the capacity of data stored in the flash memory. First, the first problem will be described. In storage systems equipped with flash memory, wear leveling technology is very important. However, in a storage system having tens of thousands of flash memories, which is the subject of the present invention, if the conventional concept of wear leveling is applied as it is, an attempt is made to reduce the bias of block erase times of all tens of thousands of flash memory chips. Therefore, there is a problem that the control overhead of wear leveling becomes large.
第2の課題について説明する。容量仮想化技術を適用したストレージシステムにおいては、データの書き込みが行われると、ページを確保することになる。したがって、ページサイズを小さくしたほうが、容量の削減効果は大きいことになる。ただ、本技術を適用すると、ホストから見て連続しているボリュームのアドレスが、ページごとに、HDD上でバラバラに格納される可能性がでてくる。通常、HDDの連続した領域へのアクセス(シーケンシャルアクセス)は、バラバラな領域へのアクセス(ランダムアクセス)に比較すると格段に高速になるので、ホスト上のアプリーションソフトは、この性能差を意識して構築される。したがって、容量仮想化を導入しても、シーケンシャルアクセスに対する性能を維持しようとすると、ページサイズをある程度より、大きくする必要があった。このため、容量の削減効率が十分でないという課題があった(すでに述べたように、本発明では、ページのサイズは、フラッシュメモリのブロックのサイズよりも大きいとしている)。 The second problem will be described. In a storage system to which the capacity virtualization technology is applied, a page is secured when data is written. Therefore, the capacity reduction effect is greater when the page size is reduced. However, when this technology is applied, there is a possibility that the addresses of volumes that are continuous when viewed from the host will be stored separately on the HDD for each page. Normally, access to consecutive areas of HDD (sequential access) is much faster than access to disjoint areas (random access), so the application software on the host is aware of this performance difference. Built. Therefore, even if capacity virtualization is introduced, it is necessary to increase the page size to some extent in order to maintain the performance for sequential access. For this reason, there has been a problem that the capacity reduction efficiency is not sufficient (as described above, in the present invention, the page size is assumed to be larger than the block size of the flash memory).
前記第1の課題を解決するための、本発明の第1の特徴は、階層的なウエアレベリングを行う点である。すなわち、上位レベルのウエアレベリングと下位レベルのウエアレベリングにより構成される点が特徴となる。階層化することで、効率的に、ストレージシステム全体の数万個のすべてのフラッシュメモリチップのブロック消去回数の偏りを少なくす
ることができる。本発明の第1の特徴では、階層的なウエアレベリングを行う点であるので、上位レベルのウエアレベリングの単位を特に規定しない。(任意の単位である。)。下位レベルのウエアレベリングは、複数のチップ(例えば数百のチップ)を搭載したフラッシュパッケージ上のブロック消去回数の偏りを少なくしようとするウエアレベリングであり、特許文献1のような公知技術を適用してよい。基本的には、下位レベルのウエアレベリングの単位は、フラッシュメモリの消去単位であるブロックであるのが一般的である。なお、一つのフラッシュパッケージを一つのSSD(Solid State Drive)としても、本発明は有効である。フラッシュパッケージがプロセッサをもつ場合、下位レベルのウエアレベリングは、当該プロセッサがそのパッケージ内のフラッシュメモリのブロックの消去回数の偏りを少なくするのが一つの方法である。ただし、ストレージシステムのコントンローラプロセッサで、下位レベルのウエアレベリングを行ってもよい。一方、本発明の第2の特徴は、上位レベルのウエアレベリングを、ストレージシステムの容量仮想化のために導入した、ベージ単位で行う点である。(これは、本発明の第1の特徴を実現するだけであれば、ストレージシステムのコントローラが、容量仮想化機能をもつことが必須の条件ではないことを意味している。)一方で、容量仮想化を実現しているストレージシステムにおいては、ページ単位での移動制御を行うのが今後の潮流となっており、フラッシュメモリの上位レベルのウエアレベリングをページとすることにより、このページ単位制御の一環とすることができるメリットが大きい。また、ページというブロックより大きなサイズでウエアレベリングを行うことにより、オーバヘッドを少なくできる。
A first feature of the present invention for solving the first problem is that hierarchical wear leveling is performed. In other words, it is characterized by comprising upper level wear leveling and lower level wear leveling. Hierarchization can effectively reduce the unevenness of the number of block erases of all tens of thousands of flash memory chips in the entire storage system. In the first feature of the present invention, since hierarchical wear leveling is performed, a unit for higher level wear leveling is not particularly defined. (Any unit.) The lower level wear leveling is wear leveling that attempts to reduce the unevenness of the number of block erasures on a flash package having a plurality of chips (for example, several hundred chips). It's okay. Basically, the unit of the lower level wear leveling is generally a block which is an erase unit of the flash memory. Note that the present invention is effective even if one flash package is used as one SSD (Solid State Drive). When a flash package has a processor, one way of lower level wear leveling is that the processor reduces the bias in the number of erases of blocks of flash memory in the package. However, lower level wear leveling may be performed by the controller of the storage system. On the other hand, the second feature of the present invention is that high-level wear leveling is performed in units of pages introduced for capacity virtualization of the storage system. (This means that it is not an essential condition for the storage system controller to have a capacity virtualization function if only the first feature of the present invention is realized.) In the storage system that realizes virtualization, the future trend is to perform movement control in units of pages. By using the upper level wear leveling of the flash memory as pages, this page unit control There is a great merit that can be part of it. In addition, overhead can be reduced by performing wear leveling with a size larger than a block called a page.
また、本発明における上位レベルのウエアレベリングでは、ブロック消去回数の偏りを少なくしてもよいし、ブロック消去回数が限界数に達するまでの予測時間がある一定時間以上になるように制御してもよい。 Further, in the higher level wear leveling in the present invention, the unevenness of the block erase count may be reduced, or the predicted time until the block erase count reaches the limit number may be controlled to be a certain fixed time or more. Good.
第2の課題の解決を狙った、本発明の第3の特徴は、階層的な容量仮想化を実現する点である。上位レベルの容量仮想化は、従来のように、ストレージシステムのコントローラで実現し、ホストに仮想容量を適用する。したがって、第2の課題を解決する本発明の第3の特徴は、下位レベルの容量仮想化であり、フラッシュパッケージの容量を仮想化し、実際、フラッシュパッケージがもっているフラッシュメモリの容量より大きな容量を仮想容量として定義し、下位レベルで、データを書き込もうとしたとき、ブロックを割り当てられているかどうかをチェックして、いないとき初めてブロックを割り当てることが本発明の特徴である。これにより、実際に割り当てる契機を遅らせることができ、割り当てる容量もページに比べブロックという小さいサイズにすることができる。また、フラッシュメモリの特質として、ランダムアクセスもシーケンシャルアクセスも性能差が、ほとんどないため、割り当てサイズを小さくしても性能上の問題がほとんどない。 A third feature of the present invention aimed at solving the second problem is to realize hierarchical capacity virtualization. High-level capacity virtualization is realized by a storage system controller as in the past, and virtual capacity is applied to a host. Therefore, the third feature of the present invention that solves the second problem is the lower level capacity virtualization, which virtualizes the capacity of the flash package, and actually has a capacity larger than the capacity of the flash memory that the flash package has. It is a feature of the present invention that a virtual capacity is defined, and when data is to be written at a lower level, it is checked whether or not a block is allocated, and when a block is not allocated, the block is allocated for the first time. As a result, the opportunity for actual allocation can be delayed, and the allocated capacity can also be reduced to a block size compared to the page. Further, as a characteristic of flash memory, there is almost no performance difference between random access and sequential access, so there is almost no performance problem even if the allocation size is reduced.
また、本発明の課題2を解決する第4の特徴として、オール0などのフォーマット情報を認識した場合も、下位レベルの容量仮想化機能で、ブロック単位の解放を行い、容量の削減効果を可能にする。ただし、フラッシュメモリの特性として、解放を行うブロックを他の領域に割り当てるには、一度、消去する必要がある。なお、通常のWriteコマンドで、オール0などのフォーマットパターンを書き込んだ場合にも、ストレージシステムで、フォーマットパターンを認識して、対応するブロックを解放させ、容量削減を図ることも可能である。下位レベルの容量仮想化は、フラッシュパッケージがプロセッサをもつ場合、当該プロセッサがそのパッケージ内の容量を仮想化するのが、一つの方法である。ただし、ストレージシステムのコントンローラプロセッサで、下位レベルの容量仮想化を行ってもよい。また、記憶媒体をフラッシュメモリとし、実容量より大きい仮想容量を持ち、消去単位であるブロックを割り当て単位とした、容量仮想化機能を、従来の上位レベルの容量仮想化機能なしに、ホストに提供してもよい。 In addition, as a fourth feature that solves the problem 2 of the present invention, even when format information such as all 0 is recognized, the lower-level capacity virtualization function releases blocks and enables the capacity reduction effect. To. However, as a characteristic of flash memory, in order to allocate a block to be released to another area, it is necessary to erase it once. Even when a format pattern such as all 0 is written by a normal Write command, the storage system can recognize the format pattern, release the corresponding block, and reduce the capacity. In the lower level capacity virtualization, when a flash package has a processor, the processor virtualizes the capacity in the package. However, the lower level capacity virtualization may be performed by the controller processor of the storage system. In addition, the storage medium is a flash memory, has a virtual capacity larger than the actual capacity, and provides a capacity virtualization function to the host without using the conventional upper-level capacity virtualization function. May be.
本発明によれば、それぞれが多数のフラッシュメモリを実装したフラッシュパッケージを多数接続した大容量のストレージシステムにおいて、効率的なウエアレベリングを実現できる。さらに、従来技術に比べ、性能劣化をほとんど招かずに、データ格納容量の削減も可能となる。 According to the present invention, efficient wear leveling can be realized in a large-capacity storage system in which a large number of flash packages each having a large number of flash memories are connected. Furthermore, the data storage capacity can be reduced with almost no performance degradation compared to the prior art.
以下、図面を参照して、本実施形態を詳細に説明する。 Hereinafter, this embodiment will be described in detail with reference to the drawings.
図1は、本発明の一実施形態に係るストレージシステムを有する情報システムを示す。 FIG. 1 shows an information system having a storage system according to an embodiment of the present invention.
情報システムは、ストレージシステム100と、ホスト110と、それらを接続するSAN(Storage Area Network)120とを有する。ホスト110は、ストレージシステム100に、SAN120経由で、データの読み書きを行う。図1には、示してはいないが、ストレージシステム100は、SAN経由で、別のストレージシステム100と接続されていて、ストレージシステム100の間で、ディザスタリカバリに対応したリモートコピー機能を実行してもよい。
The information system includes a
ホスト110は、ユーザアプリケーションが動作するシステム(例えば計算機)である。ホスト110は、SAN120を介して、ストレージステム100が提供する論理ボリュームにアクセスする。論理ボリュームは、前述した上位レベルの容量仮想化に従う論理ボリューム(複数の仮想ページで構成されたボリューム)であってもよいし、通常の論理ボボリュームであってもよい。ただし、以下では、容量仮想化にしたがう論理ボリュームを前提に説明する。なお、SAN120では、SCSI(Small Computer System Interface)コマンドが転送可能なプロトコル(例えば、Fibre Channel等のプロトコル)が用いられる。
The
本実施形態は、多数のフラッシュメモリを記憶媒体として構成するストレージシステム100において、第1の技術として、フラッシュメモリの消去回数の偏りを少なくしようとする技術、および、第2の技術として、フラッシュメモリへの格納データ容量削減技術を実現するものである。第1の技術は、階層型ウエアレベリング技術であり、第2の技術は、階層型容量仮想化技術である。本実施形態では、階層型のウエアレベリング技術、階層型の容量仮想化技術の双方を実現しているが、本発明は、それぞれ単独に、階層型のウエアレベリングング技術だけ、階層型の容量仮想化技術だけを実現しても有効である。また、本実施形態においては、上位レベルのウエアレリング技術、容量仮想化技術の制御単位は、ページとよばれる単位である。本実施形態におけるページは、従来の特許文献2に示される容量仮想化技術で開示されているページである。なお、以下の説明では、階層型ウエアレベリングにおける上位レベルの制御単位は、ページであるが、本発明は、その制御単位がページでなくとも有効である。例えば、上位レベルのウエレベリングの制御単位を、下位レベルの制御単位と同じように、フラッシュメモリの消去単位であるブロックを基本にしてもよい。本実施形態では、ページのサイズは、フラッシュメモリにおける消去単位であるブロックよりも大きい。通常、フラッシュメモリにおいては、リード・ライトの単位をページと呼ぶので、ページはブロックよりも小さい。しかし、すでに述べたように、本実施形態では、ページは、容量仮想化技術示されるページを意味しており、そのサイズは、ブロックよりも大きい。また、下位レベルのウエアレリング技術、容量仮想化技術の制御単位は、基本的には、フラッシュメモリの消去単位である1つのブロックであるが、ブロックの整数倍の単位としてもよい。ただし、本実施形態では、1つのブロックを制御単位とすることを前提にして、説明を行う。また、本発明は、記憶媒体をフラッシュメモリとし、実容量より大きい仮想容量を持ち、消去単位であるブロックを割り当て単位とした、下位レベルの容量仮想化機能を、単独に、従来の上位レベルの容量仮想化機能なしに、ホスト110に提供しても有効である。また、本実施形態においては、フラッシュメモリの消去回数の偏りを少なくしようとする技術に加えて、フラッシュメモリの寿命を所定の期間より延ばそうという技術を実現している。このため、ウエアレベリング機能については、さらに広い技術が加わったことを考慮して、長寿命化制御とも呼ぶ。
In the present embodiment, in the
図2は、ストレージシステム100の構成を示す。
FIG. 2 shows the configuration of the
ストレージシステム100は、複数のフラッシュパッケージ230と、一以上のストレージコントローラ200と、キャッシュメモリ210と、共有メモリ220と、タイマ240と、これらの構成要素を接続する一以上の接続装置250とを有する。なお、一つのフラッシュパッケージ230が、1つのSSD(Solid State Drive)であっても、本発明は有効である。また、フラッシュパッケージ230に加えて、ハードディスクドライブ(HDD)などが備えられても良い。なお、本発明において、上位レベルの長寿命化制御(ウエアレベリング機能)と容量仮想化機能は、ストレージコントローラ200が実行する。一方、下位レベルの長寿命化制御(ウエアレベリング機能)と容量仮想化機能は、ストレージコントローラ200が実行しても、フラッシュパッケージ230が実行してもよい。ただし、本実施形態では、フラッシュパッケージ230が実施する形態を、中心に説明を行う。
The
タイマ240は、すべてのストレージコントローラ200から参照可能である。タイマ240が表す情報は、時刻である必要は無く、例えば、経過時間に相当する値を示すかカウント値でもよい。
The
全てのフラッシュパッケージ230の記憶容量(実ブロックの総記憶容量)が等しい必要は無いが(すなわち、記憶容量の異なるフラッシュパッケージ230が混在していても良いが)、本実施形態では、全てのフラッシュパッケージ230の記憶容量(実ブロックの総記憶容量)が等しいとする。 Although the storage capacities of all flash packages 230 (total storage capacities of actual blocks) do not have to be equal (that is, the flash packages 230 having different storage capacities may be mixed), in the present embodiment, all the flash packages 230 Assume that the storage capacity of packages 230 (total storage capacity of real blocks) is equal.
ストレージコントローラ200は、SAN120を通じて、ホスト110から、ライト要求及びそれに付随するデータ、又は、リード要求を受け付ける。ストレージコントローラ200は、メモリ270とプロセッサ260とを有する。メモリ270は、プログラム及び情報を記憶する。プロセッサ260は、メモリ270に記憶されているコンピュータプログラムを実行する。
The
接続装置250は、ストレージシステム100内の各構成要素を接続する装置(例えばクロスバスイッチ)である。本実施形態では、各ストレージコントローラ200及び各フラッシュパッケージ230が複数の接続装置250に接続されている。しかし、必ずしも複数の接続装置250に接続されている必要はなく、例えば、一つのフラッシュパッケージ230及び/又は一つのストレージコントローラ200が一つの接続装置250にしか接続されていなくても良い。
The
キャッシュメモリ210及び共有メモリ220は、揮発メモリ(例えばDRAM(Dynamic Random Access Memory)で構成されるが、バッテリーなどにより不揮発化されている。ただし、キャッシュメモリ210が不揮発化されていなくても本発明は有効であるし、共有メモリ220が、不揮発化されていなくとも本発明は有効である。また、キャッシュメモリ210が二重化さていてもよいし、共有メモリ220が二重化されていてもよい。キャッシュメモリ210には、例えば、フラッシュパッケージ230に格納されたデータの中で、ストレージコントローラ200から頻繁にアクセスされるデータが格納される。ストレージコントローラ200は、ホスト110から受け付けたライト要求に付随するデ
ータをキャッシュメモリ210に書き込んだ時点で、ライト処理の完了としても良いし、そのデータをキャッシュメモリ210からフラッシュパッケージ230に格納した時点でライト処理の完了としても良い。共有メモリ220は、キャッシュメモリ210の制御情報、ストレージシステム100に関する管理情報などを記憶する。
The
フラッシュパッケージ230は、ストレージコントローラ200からは、一台の記憶装置に見えているものとする。ストレージコントローラ200が、高信頼化のために、所定数(例えば一台又は二台)のフラッシュパッケージ230が故障してもそのフラッシュパッケージ230のデータを回復できるRAID(Redundant Array of Independent (or Inexpensive) Disks)機能を有する。(なお、‘RAID’という用語の’D’は’Disk’の略であるが、ある記憶装置に障害が発生したときに、別の記憶装置の冗長データなどから故障した装置のデータを復元する機能は、Disk以外の記憶装置にも適用可能である。)RAID機能がある場合、複数のフラッシュパッケージ230で一つのRAID構成が構築される。そのRAID構成に従うグループを、以下、「パッケージグループ」と呼ぶ。ストレージシステム100はRAID構成を有していなくても良い。
It is assumed that the
図3は、フラッシュパッケージ230の構成を示す。
FIG. 3 shows the configuration of the
フラッシュパッケージ230は、複数のフラッシュチップ300と、パッケージコントローラ315とを有する。
The
パッケージコントローラ315は、パッケージプロセッサ310と、パッケージメモリ320と、バッファ330と、パッケージバス340と、パッケージバス転送装置350とを有する。パッケージプロセッサ310は、ストレージコントローラ200からのライト指示やリード指示を処理する。
The
バッファ330は、ストレージコントローラ200とフラッシュチップ300との間で読み書きされるデータを格納する。本実施形態では、バッファ330は揮発メモリである。ストレージコントローラ200から受けたライト指示の処理は、そのライト指示に従うデータがフラッシュチップ300に書き込まれた時点で完了となる。ただし、バッファ330が、不揮発化されていて、ストレージコントローラ200へのライト指示の完了報告の後、データをフラッシュチップ300に書き込んでも、本発明は有効である。パッケージメモリ320には、パッケージプロセッサ310が実行するコンピュータプログラム、フラッシュパッケージ230の管理情報が格納される。ただし、パッケージメモリ320が不揮発化されていても本発明は有効である。
The
パッケージバス340は、バッファ330とフラッシュチップ300との間でデータ転送を行うバスで、一本以上存在する。一本のパッケージバス340に、一つ以上のフラッシュチップ300が接続される。
The
パッケージバス転送装置350は、パッケージバス340対応に存在し、パッケージプロセッサ310の指示にしたがって、バッファ330とフラッシュチップ300との間で、データ転送を実行する。
The package
図4は、共有メモリ220に記憶される情報を示す。
FIG. 4 shows information stored in the shared
共有メモリ220は、例えば、論理ボリューム情報2000、スケジュール時間情報2700、実ページ情報2100、空きページ管理情報ポインタ2200、パッケージグループ情報2300、フラッシュパッケージ情報2500及び仮想ページ容量2600を記憶する。これらの情報は、上位レベルの長寿命化制御と、上位レベルの容量仮想化機能とに必要である。
The shared
仮想ページ容量2600は、仮想ページの容量を表す情報である。なお、仮想ページの容量(サイズ)と実ページの容量(サイズ)は等しくないことがある。例えば、仮想ページの容量と実ページの容量との関係は、RAID構成に依存する。具体的には、例えば、RAID1のようにデータを2重に書き込む場合、実ページの容量は、仮想ページの容量の2倍になる。また、例えば、RAID5のように、N台の記憶装置の容量に対し1台分の記憶装置の容量の冗長データを格納する場合、実ページの容量は、仮想ページの容量の(N+1)/Nの容量である。また、例えば、RAID0のように、冗長性がない場合、実ページの容量は、仮想ページの容量と等しい。なお、本実施形態においては、仮想ページ容量2600はストレージシステム100の中で共通であるが、ストレージシステム100に仮想ページ容量2600に異なったものがあっても、本発明は有効である。
The
本実施形態では、ストレージステム100は、前述した上位レベルの容量仮想化機能を有するが、その機能を必ずしも有していなくても良い。上位レベルの容量仮想化機能について、記憶領域の割り当て単位は「ページ」であり、下位レベルの容量仮想化機能について、記憶領域の割り当て単位は「ブロック」である。
In the present embodiment, the
図8は、複数種類の記憶領域の対応関係を示す。 FIG. 8 shows the correspondence between a plurality of types of storage areas.
本実施形態においては、それぞれのフラッシュパッケージ230は、容量仮想化機能をもっており、ストレージコントローラ200には、見かけ上、実際の物理容量より大きな容量を提供している。フラッシュパッケージ230の容量仮想化の単位は、本実施形態では、フラッシュメモリの消去単位であるブロックとする。以下、ストレージコントローラ200から見たブロックを「仮想ブロック」と呼び、フラッシュパッケージ230が、実際に割り当てているブロックを「実ブロック」と呼ぶ。したがって、本実施形態では、実ページは、仮想ブロックにより構成されることになる。また、本実施形態では、仮想ブロックにより構成される容量空間のほうが、実ブロックにより構成される容量空間より大きいことになる。図8は、仮想ページ、実ページ、仮想ブロック、実ブロックの関係を示したものである。すでに述べたように、実ページには、仮想ページにはない、冗長データが含まれている。一方、仮想ブロック、実ブロックに含まれるデータは同じである。また、本実施形態では、フラッシュパッケージ230は、実ブロック数より多くの仮想ブロックをもっているように、ストレージコントローラ200に見せていることになる。ただし、本実施形態では、ストレージコントローラ200は、実際にフラッシュパッケージ230がいくつの実ブロックをもっているかを意識して、実ページの再配置を行う。本実施形態では、フラッシュパッケージ230が、まだ実ブロックを割り当てていない仮想ブロックに、書き込み要求を受け付けたとき、実ブロックを割り当てることが特徴である。
In the present embodiment, each
以下、ストレージコントローラ200から実ブロックへのアクセスの流れを説明する。なお、ストレージコントローラ200は、どの仮想ページにどの実ページが割り当てられているかの対応関係(ページ対応関係)を管理している。ただし、以下では、下位レベルの長寿命化制御(ウエアレベリング機能)と容量仮想化機能は、フラッシュパッケージ230が実施する形態で説明を行う。
Hereinafter, a flow of access from the
ストレージコントローラ200は、ホスト110からライト要求を受けた場合、そのライト要求から特定される仮想ページ(ライト先の仮想ページ)に実ページが割り当てられているか否かをページ対応関係を基に判断する。その判断の結果が否定的の場合、ストレージコントローラ200は、ライト先の仮想ページに未割当ての実ページを割り当て、割り当てた実ページに、ライト要求に付随するデータを書き込む。
When the
ストレージコントローラ200は、実ページにデータを書き込む場合、その実ページに基づくアドレスを指定したライト指示を、そのアドレスを管理するパッケージコントローラ315に送信する。そのライト指示を受けたパッケージコントローラ315が、ブロック対応関係を基に、そのライト指示で指定されているアドレスを有する仮想ブロック(ライト先の仮想ブロック)に実ブロックが割り当てられているか否かを判断する。その判断の結果が否定的の場合に、パッケージコントローラ315は、ライト先の仮想ブロックに未割当ての実ブロック(空きの実ブロック)を割当て、割り当てた実ブロックに、そのライト指示の対象のデータを書き込む。
When writing data to a real page, the
ストレージコントローラ200は、ホスト110からリード要求を受けた場合、そのリード要求から特定される仮想ページ(リード元の仮想ページ)に割り当てられている実ページをページ対応関係を基に特定する。ストレージコントローラ200は、特定された実ページからデータを読み出し、読み出したデータをホスト110に送信する。
When the
ストレージコントローラ200は、実ページからデータを読み出す場合、その実ページに基づくアドレスを指定したリード指示を、そのアドレスを管理するパッケージコントローラ315に送信する。そのリード指示を受けたパッケージコントローラ315が、そのリード指示で指定されているアドレスを有する仮想ブロックに割り当てられている実ブロックをブロック対応関係を基に特定する。パッケージコントローラ315が、特定された実ブロックからデータを読み出し、そのデータをストレージコントローラ200に送信する。
When reading data from a real page, the
なお、例えばNAND型のフラッシュメモリでは、一般に、消去単位は「ブロック」と呼ばれ、書込み単位は「ページ」と呼ばれる。具体的には、複数の物理セクタで一つの物理ページが構成され、複数の物理ページで一つの実ブロックが構成される。しかし、本実施形態で言う「ページ」は、上位レベルの容量仮想化機能が行う領域割当ての単位であることは明らかであり、何ら混同は生じない。 For example, in a NAND flash memory, the erase unit is generally called “block” and the write unit is called “page”. Specifically, one physical page is composed of a plurality of physical sectors, and one real block is composed of a plurality of physical pages. However, it is clear that the “page” in this embodiment is a unit of area allocation performed by the higher-level capacity virtualization function, and no confusion occurs.
さて、以下、図4に示した各種情報を詳細に説明する。 The various information shown in FIG. 4 will be described in detail below.
図5は、論理ボリューム情報2000を示す。
FIG. 5 shows the
論理ボリュームは、ホスト110からアクセスされる論理的な記憶装置である。ホスト110から発行されるアクセス要求は、論理ボリュームのID(例えばLUN(Logical Unit Number))と、論理ボリューム内のアドレス(例えばLBA(Logical Block Address))と、書き込む又は読み出すデータの長さとを含む。論理ボリュームのIDからアクセス先の論理ボリュームが特定され、アドレスとデータの長さとから、その論理ボリュームにおけるアクセス先の一以上の仮想ページが特定される。
A logical volume is a logical storage device accessed from the
論理ボリューム情報2000は、論理ボリュームごとに存在する情報である。以下、一つの論理ボリューム(図5の説明において「対象ボリューム」と言う)を例に採り、情報2000を説明する。
The
情報2000は、論理ボリュームID2001、論理容量2002、論理RAIDタイプ2003、実ページポインタ2004及びフォーマット情報2005を含む。
The
論理ボリュームID2001は、対象ボリュームのIDである。
The
論理容量2002は、ホスト110から見た対象ボリュームの容量を表す。
The
論理RAIDタイプ2003は、対象ボリュームに対応したRAID構成のタイプ(RAIDタイプ(例えば、RAID0、RAID1))を表す情報である。なお、RAIDタイプが、N台の記憶装置に対し所定台数分の冗長データが格納されるタイプ(例えば、RAID5、RAID6)である場合、Nの具体的数値が情報2003に含まれる。ただし、任意のRAIDタイプが指定できるわけでなく、少なくとも一つのパッケージグループ280がもつRAIDタイプである必要がある。
The
実ページポインタ2004は、対象ボリュームの仮想ページに割り当てた実ページ情報2100へのポインタである。実ページポインタ2004の数は、対象ボリュームが有する仮想ページの数(例えば、論理ボリューム容量2002を仮想ページ容量2600で割った数、もし余りがでれば+1)である。最初の実ページポインタ2004に対応する実ページが、対象ボリュームの先頭の仮想ページに割り当てられた実ページである。以降、次の実ページポインタ2004には、次の仮想ページに割り当てられた実ページに対応するポインタが格納される。上位レベルの容量仮想化機能によれば、実ページが割り当てられるのは、対象ボリュームを定義された契機ではなく、仮想ページを指定したライト要求を受けた契機(仮想ページにライトが発生した契機)である。したがって、まだライトが発生していない仮想ページに対応した実ページポインタ2004は、未割当てを意味する情報(例えばヌル値)になっている。
The
フォーマット情報2005も、対象ボリュームの仮想ページ毎に存在する情報である。ホスト110は、アプリケーションプログラムのデータを格納する前に、特定の情報(例えば前述したパターンデータ)で記憶装置(例えば論理ボリューム)を初期化することが多い。パターンデータは、一般的なライト要求に付随することもあれば、明示的な要求(以下、ライトセイムコマンド)に付随することもある。パターンデータ(繰り返し情報)を、フォーマット情報2005に含めることで、その情報2005に対応した仮想ページにそのパターンデータが格納されていると認識することができる。このため、パターンデータが格納されている仮想ページに対する実ページの割当てを解除する(その実ページを解放する)ことができる。本実施形態では、ライトセイムコマンドをストレージコントローラ200が受信した場合、下位レベルの容量仮想化機能(例えばパッケージコントローラ315)に、ライトセイムコマンドで指定された仮想ページに割り当てられている実ページに対応した仮想ブロックを通知する(具体的には、その仮想ブロックを指定した解放指示が送信される)。その解放指示で指定された仮想ブロックに対する実ブロックの割当てが、解除される(解放される)。これにより、消費記憶容量が節約される。なお、通常のライト要求に応答してパターンデータ(例えばオール0などのフォーマットデータ)が書き込まれる場合にも、ストレージコントローラ200が、パターンデータを認識して、下位レベルの容量仮想化機能に、パターンデータのライト先の論ブロックに対する実ブロックを解放させても良い。また、フォーマット情報2005を設定した場合、そのフォーマット情報2005に対応した仮想ページに実ページを割り当てる必要はないので、その仮想ページに対応した実ページポインタ2004は、未割当てを意味する情報(例えばヌル値)となる。フォーマット情報2005に格納されたパターンデータ以外のデータがライト対象である場合には、ライト先の仮想ページに実ページが割り当てられるので、フォーマット情報2005が、無効な情報(例えばヌル値)になる。
The
図6は、スケジュール情報2700を示す。
FIG. 6 shows
本実施形態では、上位レベルの長寿命化制御は、所定のスケジュールに従って開始される。情報2700は、前回スケジュール時刻2701と次回スケジュール時刻2702とを含む。
In the present embodiment, the upper level life extension control is started according to a predetermined schedule. The
前回スケジュール時刻2701は、上位レベルの長寿命化制御が最近実行された時刻(
過去)である。
The
Past).
次回スケジュール時刻2702は、上位レベルの長寿命化制御が次に実行される予定時刻(将来)である。
The
なお、上位レベルの長寿命化制御は、所定のスケジュールに代えて又は加えて、任意の時点に実行されても良い。例えば、ストレージコントローラ200がユーザから上位レベルの長寿命化制御の実行を要求されたとき、及び、実ページに対するライト(実ブロックに対するライト)に失敗したときなどのうちの少なくとも一つのときに実行されて良い。
The upper level life extension control may be executed at an arbitrary time instead of or in addition to the predetermined schedule. For example, it is executed at least one of when the
図7は、実ページ情報2100を示す。
FIG. 7 shows
情報2100は、実ページの管理情報であり、実ページごとに存在する。以下、一つの実ページ(図7の説明において「対象実ページ」)を例に採り、情報2100を詳細に説明する。
情報2100は、パッケージグループ2101、実ページアドレス2102、空きページポインタ2103、実ブロック割り当て数2104、追加実ブロック割り当て数2105、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107、追加実ブロック割り当て時間2108、移動中フラグ2109、移動先実ページ情報2110、移動待ちフラグ2111及び累積ライトデータ量2112を含む。
パッケージグループ2101は、対象実ページがどのパッケージグループ280に基づく実ページであるかを示す情報であり、例えば、対象実ページの基になっているパッケージグループ280の識別子(パッケージグループID)である。
The
実ページアドレス2102は、対象実ページの基になっているパッケージグループ280のうちのどの相対的なアドレスに対象実ページが割り当てられているかを示す情報である。
The
空きページポインタ2103は、対象実ページが仮想ページに割り当てられていない場合に有効な値となる。この場合、その有効な値は、仮想ページに割り当てられていない別の物理ページに対応した空きページ情報2100を指している。対象実ページに仮想ページが割り当てられている場合、空きページポインタ2103はヌル値となる。
The
実ブロック割り当て数2104、及び、追加実ブロック割り当て数2105は、対象実ページの基になっているパッケージグループ280が有するフラッシュパッケージ230の数だけ存在する。
The actual
本実施形態では、それぞれのフラッシュパッケージ230のパッケージコントローラ315は、下位レベルの容量仮想化機能を有する。そのため、ストレージコントローラ200には、見かけ上、実際の物理容量より大きな仮想容量が提供されている。フラッシュパッケージ230の容量仮想化の単位は、前述の通り「ブロック」である。図8で説明した通り、実ページに複数の仮想ブロックが割り当てられ、各仮想ブロックに実ブロックが割り当てられる。したがって、実ページは複数の仮想ブロックから構成されていると言うことになる。また、本実施形態では、仮想ブロックにより構成される容量空間のほうが、実ブロックにより構成される容量空間より大きい。
In the present embodiment, the
すでに述べたように、本実施形態では、実ページには、仮想ページに対するデータには含まれてない冗長データが格納されることがある。一方、仮想ブロックに対するデータと
実ブロックに格納されるデータは同じである。また、本実施形態では、フラッシュパッケージ230は、実ブロック数より多くの仮想ブロックをもっているように、ストレージコントローラ200に見せていることになる。ただし、本実施形態では、ストレージコントローラ200は、フラッシュパッケージ230が実際にいくつの実ブロックをもっているかを意識して、実ページの再配置を行う。
As already described, in this embodiment, redundant data that is not included in the data for the virtual page may be stored in the real page. On the other hand, the data for the virtual block and the data stored in the real block are the same. In the present embodiment, the
下位レベルの長寿命化制御(ウエアレベリング機能)と容量仮想化機能を、フラッシュパッケージ230が実施する形態の場合、ストレージコントローラ200が、対象実ページにデータを書き込む際には、対象実ページに割り当てられている仮想ブロック内のアドレスを指定したライト指示を、その仮想ブロックを管理するフラッシュパッケージ230に送信する。フラッシュパッケージ230は、そのライト指示で指定されている仮想ブロックにまだ実ブロックが割り当てられていない場合、その仮想ブロックに実ブロックを割り当てる。新たに実ブロックが割り当てられた場合、パッケージコントローラ315は、新たに実ブロックが割り当てられたことを、ストレージコントローラ200に通知する。これにより、ストレージコントローラ200は、対象実ページに実ブロックが割り当てられたことを検知し、実ブロック割り当て数2104あるいは追加実ブロック数2105を更新する。
In the case where the
実ブロック割り当て数2104は、その情報2104に対応するフラッシュパッケージ230が有し、対象実ページに割り当てられている実ブロックのうちの、前回スケジュール時刻2701以前に対象実ページに割り当てられた実ブロックの数である。なお、「前回スケジュール時刻2701以前」とは、前回スケジュール時刻2701を含んでも含まなくても良い。
The real
追加実ブロック数2105は、その情報2105に対応するフラッシュパッケージ230が有し、対象実ページに割り当てられている実ブロックのうちの、前回スケジュール時刻2701以降に対象実ページに割り当てられた実ブロックの数である。なお、「前回スケジュール時刻2701以降」とは、前回スケジュール時刻2701を含んでも含まなくても良い。例えば、「前回スケジュール時刻2701以前」が前回スケジュール時刻2701を含む場合、「前回スケジュール時刻2701以降」は前回スケジュール時刻2701を含まず、一方、「前回スケジュール時刻2701以前」が前回スケジュール時刻2701を含まない場合、「前回スケジュール時刻2701以降」は前回スケジュール時刻2701を含む。
The number of additional
累積実ブロック割り当て時間2106、累積実ブロック消去回数2107、及び、追加実ブロック割り当て時間2108、累積ライトデータ量2112も、それぞれ、対象実ページの基になっているパッケージグループ280が有するフラッシュパッケージ230の数だけ存在する。ただし、これらの情報は、対象実ページに含まれる仮想ブロックの属性情報ではなく、対象実ページの割当先の仮想ページに対するデータに関する属性情報である。したがって、その仮想ページに、対象実ページに代えて別の実ページが割り当てられ、対象実ページ内のデータがその別の実ページに移動された場合、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107、及び、追加実ブロック割り当て時間2108、累積ライトデータ量2112も、その別の実ページの管理情報として引き継がれる。
The cumulative real
累積実ブロック割り当て時間2106は、対象実ページに割り当てられているすべての仮想ブロックについての経過時間の合計である。ここで言う「経過時間」とは、対象実ページに割り当てられている仮想ブロックに実ブロックが割り当てられた契機から前回スケジュール時間2701までの、その仮想ブロックについての時間である。なお、その契機は、対象実ページについてではなく、過去に別の実ページについて起こった可能性もある。
The accumulated real
累積実ブロック消去回数2107は、対象実ページに割り当てられているすべての仮想ブロックについての消去回数の合計である。ここで言う「消去回数」とは、対象実ページに割り当てられている仮想ブロックに実ブロックが割り当てられた契機からの、その実ブロックの消去回数である。
The accumulated real block erase
累積ライトデータ量2112は、累積実ブロック消去回数2107の代わりに(又は加えて)、実ページ情報2100に含まれる情報である。累積ライトデータ量2112は、対象実ページの基になっているパッケージグループ280が有するフラッシュパッケージ230の数だけ存在し、対象実ページの割当先の仮想ページに対するデータに関する属性情報である。累積ライトデータ量2112は、対象実ページに割り当てられているすべての仮想ブロックについてのライトデータ量の合計である。ここで言う「ライトデータ量」とは、対象実ページに割り当てられている仮想ブロックに実ブロックが割り当てられた契機からの、仮想ブロックが割り当てられていた実ブロックのライト対象データの量(サイズ)である。累積ライトデータ量2112を基に、累積実ブロック消去回数2107に相当する値を算出することが可能である。詳細は後述する。
The accumulated
追加実ブロック割り当て時間2108は、前回スケジュール時間2701以降に仮想ブロックに割り当てられた実ブロックが割り当てられている時間長である。実ブロックが新たに一つ割り当てられると、追加実ブロック割り当て時間2108には、次回スケジュール時間2702と割り当てを行った時刻との差分に相当する時間長(差分時間)が加算される。この差分時間を加算する理由については、後で説明する。
The additional real
移動中フラグ2109、移動先実ページ情報2110、及び、移動待ちフラグ2111は、対象実ページ内のデータを別の実ページに移動するときに使用される情報である。移動中フラグ2109は、対象実ページ内のデータを別の実ページに移動中のときにONになるフラグである。移動先実ページ情報2110は、対象実ページ内のデータの移動先の実ページのアドレスを表す情報である。移動待ちフラグ2111は、対象実ページ内のデータを移動すると決定したときにONになるフラグである。
The moving
図9は、空きページ管理情報ポインタ2200によって管理される空きページの集合を表している。
FIG. 9 shows a set of empty pages managed by the empty page
空きページ管理情報ポインタ2200は、パッケージグループ280ごとに設けられる情報である。
The empty page
「空きページ」とは、仮想ページに割り当てられていない実ページ(未割当ての実ページ)である。また、空きページに対応した実ページ情報2100を、「空きページ情報」と呼ぶ。空きページ管理情報ポインタ2200は、先頭の空きページ情報のアドレスをさす。次に、先頭の実ページ情報2100の中の空きページポインタ2103が、次の空きページ情報を指す。図9では、最後の空きページ情報の空きページポインタ2103は、空きページ管理情報ポインタ2200を示しているが、ヌル値でもよい。ストレージコントローラ200は、実ページが割り当てられていない仮想ページを指定したライト要求をホスト110から受け付けた場合、論理RAIDタイプ2003と同一のRAIDタイプを有するいずれかのパッケージグループ280(例えば、空きページ数の最も多いパッケージグループ280)から、空きページ管理情報ポインタ2200を基に空きページを探し、見つかった空きページを仮想ページに割り当てる。
“Free page” is a real page (unassigned real page) that is not assigned to a virtual page. The
図10は、パッケージグループ情報2300を示す。
FIG. 10 shows
パッケージグループ情報2300は、パッケージグループ280毎に存在する。以下、一つのパッケージグループ280(図10の説明において「対象パッケージグループ280」と言う)を例に採り、パッケージグループ情報2300を説明する。
パッケージグループ情報2300は、パッケージグループID2301、パッケージグループRAIDタイプ2302、実ページ数2303、空きページ数2304及びフラッシュパッケージポインタ2305を含む。
The
パッケージグループID2301は、対象パッケージグループ280の識別子である。
The
パッケージグループRAIDタイプ2302は、対象パッケージグループ280のRAIDタイプである。本実施形態におけるRAIDタイプは、論理RAIDタイプ2003についての説明で述べたとおりである。
The package
実ページ数2303は、対象パッケージグループ280が有する実ページの数を表し、空きページ数2304は、対象パッケージグループ280が有する空きページの数を表す。
The
フラッシュパッケージポインタ2305は、対象パッケージグループ280に属するフラッシュパッケージ230のフラッシュパッケージ情報2500へのポインタである。フラッシュパッケージポインタ2305の数は、対象パッケージグループ280が有するフラッシュパッケージ230の数と同じであるが、これは、パッケージグループRAIDタイプ2302によって決まる値である。
The
図11は、フラッシュパッケージ情報2500を示す。
FIG. 11 shows the
フラッシュパッケージ情報2500は、フラッシュパッケージ230毎に存在する。以下、一つのフラッシュパッケージ(図11の説明において「対象フラッシュパッケージ」と言う)を例に採り、情報2500を説明する。
The
情報2500は、フラッシュパッケージID2501、フラッシュパッケージ仮想容量2502、ブロック容量2503、パッケージ内割り当て可能実ブロック数2504、パッケージ内実ブロック割り当て数2505、パッケージ内追加実ブロック割り当て数2506、パッケージ内累積実ブロック割り当て時間2507、パッケージ内累積実ブロック消去回数2508、パッケージ内追加実ブロック割り当て時間2509、パッケージ内累積ライトデータ量2510、保証期間終了時刻2511及び限界消去回数2512を含む。
The
フラッシュパッケージID2501は、対象フラッシュパッケージ230の識別子である。
The
フラッシュパッケージ仮想容量2502は、対象フラッシュパッケージ230の仮想的な容量である。
The flash package
ブロック容量2503は、仮想ブロック及び実ブロックに含まれるデータの容量である。仮想ブロックに対するデータと実ブロックに格納されるデータは同じである。従って、フラッシュパッケージ容量2502をブロック容量2503で割った値が、対象プラッシュパッケージ230が有する仮想ブロックの数となる。
The
割り当て可能実ブロック数2504は、対象フラッシュパッケージ230の中で割り当て可能な実ブロックの数である。フラッシュパッケージ230中で、例えばx個の実ブロックが障害状態(不良ブロック)になると、割り当て可能実ブロック数2504が示す値からxが引かれる。下位レベルの長寿命化制御(ウエアレベリング機能)と容量仮想化機能を、フラッシュパッケージ230が実施する形態の場合、割り当て可能な実ブロックの数が減ると、パッケージコントローラ315から、ストレージコントローラ200に、割り当て可能な実ブロックの数が減ったことが通知される。
The assignable
パッケージ内実ブロック割り当て数2505は、対象パッケージグループ280に基づく全ての実ページについての実ブロック割り当て数2104の合計である。
The real
パッケージ内追加実ブロック割り当て数2506は、対象パッケージグループ280に基づく全ての実ページについての追加実ブロック割り当て数2105の合計である。
The in-package additional real
パッケージ内累積実ブロック割り当て時間2507は、対象パッケージグループ280に基づく全ての実ページについての累積実ブロック割り当て時間2106の合計である。
The cumulative real
パッケージ内累積実ブロック消去回数2508は、対象パッケージグループ280に基づく全ての実ページについての累積実ブロック消去回数2107の合計である。
The in-package cumulative real block erase
パッケージ内追加実ブロック割り当て時間2509は、対象パッケージグループ280に基づく全ての実ページについての追加実ブロック割り当て時間2108の合計である。
The in-package additional real
パッケージ内累積ライトデータ量2510は、対象パッケージグループ280に基づく全ての実ページについての累積ライトデータ量2112の合計である。ただし、累積ライトデータ量2512は、累積実ブロック消去回数2107の代わりに存在する情報で、必ずしも存在する情報ではない。
The in-package cumulative
保証期間終了時刻2511は、対象フラッシュパッケージ230の保障期間が終了する時間(時刻)である。
The guarantee
消去限界数2512は、対象フラッシュパッケージ230の実ブロックの限界消去回数を表す。フラッシュメモリには、いくつかの種類があり、それぞれ限界消去回数が異なる。例えば、一般に、SLC(Single Level Cell)は約10万回、MLC(Multi Level Cell)は5千〜1万回と言われている。
The erase
次に、フラッシュパッケージ230のパッケージメモリ320に記憶される、フラッシュパッケージ230の管理情報を説明する。
Next, management information of the
図12は、パッケージメモリ320に記憶される管理情報を示す。
FIG. 12 shows management information stored in the
その管理情報は、パッケージ情報3000、チップ情報3100、仮想ブロック情報3200、実ブロック情報3300及び空きブロック情報ポインタ3400を含む。この管理情報は、下位レベルのウエアレベリング制御及び容量仮想化機能に利用される情報である。本実施形態では、フラッシュパッケージ230が、下位レベルの長寿命化制御(ウエアレベリング機能)を行い、且つ、下位レベルの容量仮想化機能を有する。下位レベルの長寿命化制御(ウエアレベリング機能)及び容量仮想化機能は、ストレージコントローラ200で実現されてもよい。この場合、例えば、図13に示すように、図12に示した管理情報とほぼ同様の管理情報が、共有メモリ220に格納される。図13に示した管理情報は、ストレージコントローラ200が参照及び更新するので、図12に示した管理情報
とは若干違っていて良い。
The management information includes
本実施形態では、前述した通り、フラッシュパッケージ230が、下位レベルの長寿命化制御(ウエアレベリング制御)及び容量仮想化機能を実現し、図12に示した管理情報を保持する。以下その管理情報に含まれる情報3000、3100、3200、3300及び3400を詳細に説明する。
In the present embodiment, as described above, the
図14は、パッケージ情報3000を示す。
FIG. 14
以下、一つのフラッシュパッケージ230(図14の説明において「対象フラッシュパッケージ」と言う)を例に採り、パッケージ情報3000を説明する。
Hereinafter, the
パッケージ情報3000は、パッケージID3001、仮想パッケージ容量3002、実パッケージ容量3003、フラッシュブロック容量3004、パッケージブロック容量3005、パッケージ割り当て可能ブロック数3006、パッケージ空きブロック数3007、障害ブロック数3008、内部情報格納ブロック数3009及び内部情報格納アドレス3010を含む。
パッケージID3001は、対象フラッシュパッケージ230の識別子である。
The
仮想パッケージ容量3002は、ストレージコントローラ200から見た対象フラッシュパッケージ230の仮想的な記憶容量を示す。
The
実パッケージ容量3003は、対象パッケージグループ280内に、ストレージコントローラ200が実際にデータを格納できる記憶容量を示す。
The
フラッシュブロック容量3004は、フラッシュメモリの消去単位であるブロックの物理的な容量である。一方、パッケージブロック容量3005は、すでに述べた仮想ブロック及び実ブロックに格納されるデータの容量である。二つの容量3004及び3005に違いがあるのは、主に、高性能化やブロックの長寿命化のためである。以下、この理由について説明する。仮に、二つの容量3004及び3005を同じにしたとする。その場合、フラッシュメモリの実ブロックのすべてに、データが格納されることになる。このとき、実ブロック内の一部のデータを書き換える指示(普通のライト指示)を、ストレージコントローラ200からパッケージコントローラ315が受け取ったとする。フラッシュメモリの実ブロックは書き換えができないので、パッケージコントローラ315は、その実ブロックの全データをバッファ330に読み出し、書き換え部分だけ更新して、当該実ブロックを一度消去した後、更新後の全データを当該実ブロックに格納しなければならない。フラッシュパッケージ230がライト指示を受け取るたびに、このような処理を実行すると、処理時間が長くなる。これを解決するため、本実施形態では、パッケージブロック容量3005の値は、フラッシュブロック容量3004より小さい値にされる。これにより、実ブロックには、空き領域が存在することになり、書き換えデータが空き領域に入れば、空き領域に追加書き込みが行われる。なお、この追加書き込みを行った場合、対応する仮想ブロック内のどのアドレス(相対アドレスでよい)のデータを書き込んだかが管理される。空き領域が小さくなって書き換えデータが入らなくなった場合、消去処理が行われる。これにより、消去処理は、n回(nは1以上の整数)のライト指示について一回実行されればよいので、性能を向上させることができる。また、消去処理の回数の削減は、フラッシュメモリの長寿命化にもつながる。
The
パッケージ割り当て可能ブロック数3006は、対象フラッシュパッケージ230が有する複数の実ブロックのうちの、ストレージコントローラ200から受け取ったデータを格納可能な実ブロックの数を示す。
The package allocatable
パッケージ空きブロック数3007は、ストレージコントローラ300からのデータを格納可能な実ブロックのうちの、仮想ブロックに割り当てられていない実ブロック(空きブロック)の数を示す。
The number of package
障害ブロック数3008は、障害状態になってデータを格納できなくなってしまった実ブロック(不良ブロック)の数を示す。
The number of failed
内部情報格納ブロック数3009は、パッケージメモリ320に格納されているパッケージ情報3000、チップ情報3100、仮想ブロック情報3200、実ブロック情報3300及び空きブロックポインタ3400の退避先(例えば停電や障害発生時での退避先)となる実ブロックの数を示す。内部情報格納アドレス3010は、退避先の実ブロックのアドレスを示す。パッケージ情報3000、チップ情報3100、仮想ブロック情報3200、実ブロック情報3300及び空きブロックポインタ3400は、重要な情報なので、退避する情報は、n重化(nは2以上の整数)されてもよい。また、退避される回数はそう多くないと考えられるので、実ブロックの消去回数なども問題にならないと考えられる。パッケージ割り当て可能ブロック数3006、障害ブロック数3008及び内部情報格納ブロック数3009の合計が、対象フラッシュパッケージ230が有する実ブロックの数である。
The number of internal information storage blocks 3009 is the number of save destinations of
図15は、チップ情報3100を示す。
FIG. 15 shows
チップ情報3100は、フラッシュチップ300毎に存在する情報である。以下、一つのフラッシュチップ(図15の説明で「対象チップ」と言う)を例に採り、チップ情報3100を説明する。
The
チップ情報3100は、チップID3101、チップ内実ブロック数3102、チップ内空きブロック数3103及び接続バスID3104を含む。
The
チップID3101は、対象チップ300の識別子である。
The
チップ内実ブロック数3102は、対象チップ300が有する実ブロックの数を示す。
The in-chip
チップ内空きブロック数3103は、対象チップ300が有する空きブロックの数を示す。
The number of
接続バスID3104は、対象チップ300が接続されているパッケージバス340の識別子である。
The
図16は、仮想ブロック情報3200を示す。
FIG. 16 shows
仮想ブロック情報3200は、仮想ブロック毎に存在する情報である。以下、一つの仮想ブロック(図16の説明で「対象仮想ブロック」と言う)を例に採り、仮想ブロック情報3200を説明する。なお、仮想ブロック情報3200は、仮想ブロックのアドレス順に並んでいるとする。最初の仮想ブロック情報3200が、先頭の仮想ブロックに対応する。
The
仮想ブロック情報3200は、仮想ブロックID3201、仮想ブロック情報ポインタ3202、仮想ブロック割り当て時刻3203及び仮想ブロック消去回数3204を含む。
The
仮想ブロックID3201は、対象仮想ブロックの識別子である。
The
実ブロック情報ポインタ3202は、対象仮想ブロックに割り当てられた実ブロックの実ブロック情報3300へのポインタである。
The real
仮想ブロック割り当て時刻3203は、実ブロックが割り当てられていない対象仮想ブロック内のアドレスを指定したライト指示をストレージコントローラ200から受け付けた時刻である。
The virtual
仮想ブロック消去回数3204は、仮想ブロック割り当て時刻3203以降に対象仮想ブロックに割り当てられていた実ブロックの消去回数である。仮想ブロック割り当て時刻3203及び仮想ブロック消去回数3204は、階層型の長寿命化制御、及び、階層型の容量仮想化を実行するため、対象仮想ブロックを含む実ページ内のデータが別の実ページに移動されるときに、移動先の実ページに対して引き継がれる。この引継ぎ処理は、ストレージコントローラ200が、移動元の実ページに割り当てられているそれぞれの仮想ブロックについての仮想ブロック割り当て時刻3203及び仮想ブロック消去回数3204を読み出し、移動先の実ページに割り当てられているそれぞれの仮想ブロックの仮想ブロック割り当て時刻3203及び仮想ブロック消去回数3204に引き継ぐ。
The virtual block erase
図17は、実ブロック情報3300を示す。
FIG. 17 shows
実ブロック情報3300は、実ブロック毎に存在する情報である。以下、一つの実ブロック(図17の説明で「対象実ブロック」と言う)を例に採り、情報3300を説明する。
The
実ブロック情報3300は、実ブロックID3301、空きブロックポインタ3302、実ブロック障害フラグ3303、実ブロック内空き容量3304、追加書き込みデータアドレス情報3305及び実ブロック消去回数3306を含む。
The
実ブロックID3301は、対象実ブロックの識別子である。このID3301が、どのフラッシュチップ300のどのアドレスに相当する実ブロックかを示している。
The
空きブロックポインタ3302は、対象実ブロックが空きブロック場合(いずれの仮想ブロックにも割り当てられていない場合)、次の空きブロックの実ブロック情報3300を指している。
The
実ブロック障害フラグ3303は、対象実ブロックが障害状態になり、データを格納できなくなったとき、ONとされる。
The real
実ブロック内空き容量3304は、対象実ブロックの現在の空き容量を示している。この値は、当初は、例えば、(フラッシュブロック容量3004−パッケージブロック容量3005)である。パッケージプロセッサ310は、対象実ブロックに対し、この空き容量以下のデータを書くことのライト指示を、ストレージコントローラ200から受け、この空き領域に、ライト指示の対象のデータを書き込む。書き込んだ後、書き込まれたデータ量だけ、実ブロック内空き容量3304の値が小さくされる。
The real block
追加書き込みデータアドレス情報3305は、当初の空き領域(((フラッシュブロック容量3004−パッケージブロック3005))の容量の領域)に追加書き込みを行ったすべてのデータの仮想ブロック内の相対アドレスとデータ長の集合値である。
The additional write
実ブロック消去回数3306は、対象実ブロックの現在までの消去回数を示している。
The actual block erase
図18は、空きブロック情報ポインタ3400によって管理される空きブロックの集合を表している。
FIG. 18 shows a set of empty blocks managed by the empty
空きブロック管理情報ポインタ3400は、先頭の空きブロックの実ブロック情報3300のアドレスをさす。次に、先頭の空きブロックの実ブロック情報3300の中の空きブロックポインタ3302が、次の空きブロックの実ブロック情報3300を示す。図18では、最後の空きブロックの実ブロック情報3300の空きブロックポインタ2103は、空きブロック情報ポインタ3400を示しているが、ヌル値でもよい。パッケージプロセッサ310は、実ブロックが割り当てられていない仮想ブロック内のアドレスを指定したライト指示を受け付けると、いずれかのフラッシュチップ300(例えば、空きブロックの数の最も多いチップ)から、そのチップに対応する空きブロック情報ポインタ3400を基に空きブロックを探し、見つかった空きブロック(実ブロック)を仮想ブロックに割り当てる。
The empty block
次に、ストレージコントローラ200及びパッケージコントローラ315が行う処理を説明する。
Next, processing performed by the
まず、ストレージコントローラ200が行う処理を説明する。ストレージコントローラ200が行う処理は、プロセッサ260がメモリ270内に格納されているプログラムを実行することにより実現される。以下、メモリ270内のプログラムを主語として説明する処理は、実際にはプロセッサ260が行う処理である。
First, processing performed by the
図19は、メモリ270に格納されているプログラムを示す。
FIG. 19 shows programs stored in the
プログラムとして、例えば、リード処理実行部4000、ライト要求受付部4100、ライトアフタ処理実行部4200、ライトセイムコマンド処理実行部4300、ページ移動スケジュール部4400及びページ移動処理実行部4500がある。これらのプログラムが、上位レベルの長寿命化制御及び容量仮想化機能を含む。なお、すでに述べたが、本実施形態は、下位レベルの長寿命化制御及び容量仮想化機能を実現するのは、パッケージコントローラ315であるが、下位レベルの長寿命化制御及び容量仮想化機能はストレージコントローラ200によって実現されてもよい。この場合、上位レベルのプログラムと下位レベルのプログラム双方が、ストレージコントローラ200で実行されるので、プログラム間のインターフェイスが異なってくるが、上位レベルのプログラムが実行する内容は基本的に大きな相違はない。したがって、本実施形態では、下位レベルの長寿命化制御及び容量仮想化機能を実現するのはパッケージコントローラ315であることを前提に、リード処理実行部4000、ライト要求受付部4100、ライトアフタ処理実行部4200、ライトセイムコマンド処理実行部4300、ページ移動スケジュール部4400、ページ移動処理実行部4500がそれぞれ行う処理のフローを詳細に説明する。
Examples of the program include a read
図20は、リード処理実行部4000の処理フローを示す。
FIG. 20 shows a process flow of the read
リード処理実行部4000は、ストレージコントローラ200がホスト110からリード要求を受け付けたときに実行される。図20の説明において、リード要求の対象のデータを「リード対象データ」と言い、リード要求から特定される論理ボリューム、仮想ページ、及びその仮想ページにおける領域を、「リード元論理ボリューム」、「リード元仮想ページ」、及び「リード元領域」と言う。
The read
ステップ5000:実行部4000は、受け取ったリード要求で指定されたリード対象とするアドレスから、リード元仮想ページとリード元領域の相対アドレスとを計算する。
Step 5000: The
ステップ5001:実行部4000は、リード対象データが、キャッシュメモリ210に存在するか否か(キャッシュヒットしたか否か)を判断する。キャッシュヒットならば、ステップ5010が行われ、キャッシュミスならば、ステップ50002が行われる。
Step 5001: The
ステップ5002:キャッシュミスの場合、まず、実行部4000は、リード元仮想ページに対応するフォーマット情報2005が有効な値か否かを判断する。有効でなければ、ステップ5004へジャンプする。
Step 5002: In the case of a cache miss, first, the
ステップ5003:フォーマット情報2005が有効な場合、実行部4000は、リード元領域には、このパターンデータ(繰り返し情報)が格納されていることになる。このため、実行部4000は、キャッシュメモリ210に、その情報2005が有するパターンデータを格納し、ステップ5010へジャンプする。
Step 5003: When the
ステップ5004:ここでは、リード対象データをキャッシュメモリ210にロードする必要がある。ます、実行部4000は、リード元仮想ページに割り当てられている実ページ(以下、図20の説明において「リード元実ページ」と言う)に対応する実ページ情報2100を、リード元論理ボリュームに対応した情報2000内の実ページポインタ2004から獲得する。
Step 5004: Here, it is necessary to load the read target data into the
ステップ5005:実行部4000は、獲得した実ページ管理情報2100内のパッケージグループ2101及び実ページアドレス2102から、リード元実ページが属するパッケージグループ280とリード元実ページのパッケージグループ280内での先頭アドレスとを得る。
Step 5005: The
ステップ5006:実行部4000は、リード元仮想ページ内の相対アドレスとパッケージグループRAIDタイプ2302とから、リード元実ページ内の相対アドレスを計算する。実行部4000は、計算した実ページ内相対アドレスと、リード元実ページに対応するパッケージグループRAIDタイプ2302及びフラッシュパッケージポインタ2305とを基に、どのフラッシュパッケージ230のどのアドレスにアクセスするかを特定する。
Step 5006: The
ステップ5007:実行部4000は、ステップ5006で特定されたフラッシュパッケージ230に対し、そのステップ5006で特定されたアドレスを指定したリード指示を送信する。
Step 5007: The
ステップ5008:実行部4000は、リード指示の送信先のフラッシュパッケージ230から、リード指示の対象のデータが送られてくるのを待つ。
Step 5008: The
ステップ5009:実行部4000は、フラッシュパッケージ230から送られてきたデータをキャシュメモリ150に格納する。
Step 5009: The
ステップ5010:実行部4000は、キャッシュメモリ210に格納されているリード対象データをホスト110へ送る。
Step 5010: The
図21は、ライト要求受付部4100の処理フローを示す。
FIG. 21 shows a processing flow of the write
ライト要求受付部4100は、ストレージコントローラ200が、ホスト110からライト要求を受け付けたときに実行される。図21の説明において、ライト要求に付随するデータを「ライト対象データ」と言い、ライト要求から特定される論理ボリューム、仮想ページ、及びその仮想ページにおける領域を、「ライト先論理ボリューム」、「ライト先仮想ページ」、及び「ライト先領域」と言う。
The write
ステップ6000:受付部4100は、受け取ったライト要求がライト対象とするアドレスから、対応するライト先仮想ページとライト先領域の相対アドレスとを計算する。
Step 6000: The receiving
ステップ6001:受付部4100は、ステップ6000で得たライト先仮想ページに実ページが割り当てられているか否かを、ライト先仮想ページに対応した実ページポインタ(ライト先論理ボリュームに対応した情報2000内のポインタ)2004を参照して、判断する。割り当てられていない場合、ステップ6002が行われ、割り当てられている場合、ステップ6003へジャンプする。
Step 6001: The accepting
ステップ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へジャンプする。
Step 6002: The
(A) With reference to the
(B) With reference to the empty page management information pointer 2400 corresponding to the
(C) The free page management information pointer 2400 is updated to indicate the next real page information 2100 (the
(D) The
(E) Decrease the value indicated by the number of
I do. In this embodiment, the process of allocating a free page to a virtual page is executed when a write request is accepted. This allocation process may be executed until data is stored in the
ステップ6003:受付部4100は、ライト先仮想ページに対応したフォーマット情報2005が有効な値であるかを判断する。有効でなければ、ステップ6005へジャンプする。
Step 6003: The
ステップ6004:当該ライト要求の実行により、ライト先仮想ページに対応したフォーマット情報2005は無効な値となる。このため、当該ライト要求で、ライト先仮想ページにおけるライト先領域以外の領域には、ライト先仮想ページに対応したこれまでのフォーマット情報2005で、書き込む必要がある。したがって、ここでは、受付部4100は、キャッシュメモリ210に、ライト先仮想ページに対応したフォーマット情報2005が有するパターンデータを格納する(当該ライト要求で、ライト対象データは、次のステップ6005で受け取る)。また、受付部4100は、そのパターンデータには、どのフラッシュパッケージ230のどのアドレスに書き込むべきかを示す情報をつけておく。これらの情報を獲得するために、ここでも、受付部4100は、図20のステップ5004及び5005の処理を実行することになる。この後、ライト先仮想ページに対応したフォーマット情報2005が無効な値にされる。
Step 6004: By executing the write request, the
ステップ6005:受付部4100は、ホスト110からのライト対象データをキャッシュメモリ210に格納する。ステップ6004でパターンデータがキャッシュメモリ210に格納された場合、ライト先領域の繰り返しパターンが、このとき受け取ったライト対象データに置き換えられる。このときも、このライト対象データには、どのフラッシュパッケージ230のどのアドレスに書き込むべきかを示す情報をつけておく。これらの情報を獲得するために、ここでも、図20のステップ5004及び5005の処理を実行することになる。
Step 6005: The
パッケージグループ280は、RAID構成を有する。このため、キャッシュメモリ210上に格納したライト対象データに冗長データを生成しなければならない場合がある。また、実ページは、冗長データを格納する領域を有するので、ライト対象データに対応する冗長データの実ページ内のライト先アドレスも一意に定まる。冗長データも、一度、キャッシュメモリ210に格納される。なお、キャッシュメモリ210上の冗長データも、ライト対象データと同様に、どのフラッシュパッケージ230のどのアドレスに書き込むべきかを示す情報をつけておく。ライト対象データ及び冗長データは、ライトアフタ処理実行部5200によって、フラッシュパッケージ230に書き込まれる。これらのデータは、ライトアフタ処理実行部5200から見ると、いずれもフラッシュパッケージ230へ書き込むデータなので、両者(つまりライト対象データであるか冗長データであるか)を区別する必要はない。同様に、フラッシュパッケージ230も、両者を区別する必要はない。
The
図22は、ライトアフタ処理実行部4200の処理フローを示す。
FIG. 22 shows a processing flow of the write-after
ライトアフタ処理実行部4200は、適宜に(例えば定期的に)実行される。実行部4200は、キャッシュメモリ210内のライト対象データ及び冗長データをフラッシュパッケージ230に書き込むライトアフタ処理を行う。ただし、実行部4200は、ライト対象データ及び冗長データの両者を、フラッシュパッケージ230に書き込むべきデータ(図22の説明において「デステージ対象データ」と言う)として、両者を区別せずに処理する。
The write after
ステップ7000:実行部4200は、キャッシュメモリ210をサーチして、デステージ対象データを決める。
Step 7000: The
ステップ7001:実行部4200は、見つけたデステージ対象データに付与されているアドレス情報を取得し、アドレス情報を基に特定されるフラッシュパッケージ230に、アドレス情報を基に特定されるライト先アドレスを指定したライト指示とデステージ対象データとを送信する。なお、ライト先実ページ(ライト先アドレスを有する仮想ブロックが割り当てられている実ページ)に対応する移動中フラグ2109がONの場合、ライト先実ページ内のデータは移動中である。この場合、実行部4200は、ステップ7000で決定されたデステージ対象データのライトを中止し、別のデステージ対象データを探す。また、実行部4200は、フラッシュパッケージ230に送信するライト指示に、タイマ240から取得される現在時刻(ストレージシステム100内一意に定まるカウンタのようなものでもよい)を付与する。ライト指示に付与された時刻は、後述する平均消去回数の算出に使用される(具体的には、累積実ページ割り当て時間2106、パッケージ内累積実ページ割り当て時間2507の更新に使用される)。
Step 7001: The
ステップ7002: 実行部4200は、フラッシュパッケージ230からライト完了報告(ライト指示に対する完了報告)を受けるのを待つ。
Step 7002: The
ステップ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とにそれぞれ加算されることになる。
Step 7003: The
(A) Based on a write completion report from the
(B) If a real block has been allocated (if the determination result in (a) is affirmative), the number of allocated real blocks (referred to as “current allocation number” in the description of FIG. 22) is written. The number of added real blocks corresponding to the previous
(C) The current allocation number is multiplied by (next schedule time 2701-current time (
Execute. In (c), for example, if the current allocation number is 3 and (next schedule time 2701-current time) is 40 minutes, 120 minutes is the multiplication value, and 120 minutes is the
ステップ7004: 実行部4200は、以下の(a)及び(b):
(a)フラッシュパッケージ230からのライト完了報告を基に、実ブロックに対する消去処理が発生したかを判断する;
(b)消去処理が発生したのであれば((a)の判断結果が肯定的であれば)、発生した消去回数(例えば、2個の実ブロックに1回の消去処理が発生したのであれば、消去回数は2である)を、ライト先実ページに対応する累積実ブロック消去回数2107と、ライト先パッケージに対応するパッケージ内累積実ブロック消去回数2508とに加える(累積ライトデータ量2112及びパッケージ内累積ライトデータ量2510がある場合、本ライトアフタ処理で書き込んだデステージ対象データの量を、それらの情報2112及び2510にそれぞれ加える)、
を実行する。
Step 7004: The
(A) Based on the write completion report from the
(B) If an erasure process has occurred (if the determination result in (a) is affirmative), the number of erasures that occurred (for example, if one erasure process has occurred in two real blocks) Is added to the cumulative actual block erase
Execute.
ステップ7005:実行部4200は、以下の(a)及び(b):
(a)フラッシュパッケージ230からのライト完了報告を基に、ブロック消去回数が一定値以上になった(障害状態になった)実ブロックがあるか否かを判断する;
(b)障害状態になった実ブロックがあれば((a)の判断結果が肯定的であれば)、障害状態になった実ブロックの数を、ライト先パッケージに対応する割り当て可能実ブロック数2504から減算する、
を実行する。
Step 7005: The
(A) Based on the write completion report from the
(B) If there is a real block in a faulty state (if the determination result in (a) is affirmative), the number of real blocks in the faulty state is assigned to the number of real blocks that can be assigned to the write destination package. Subtract from 2504,
Execute.
図23は、ライトセイムコマンド処理実行部4300の処理フローを示す。
FIG. 23 shows a processing flow of the write same command
ライトセイムコマンド処理実行部4300は、ライトセイムコマンドを、ストレージコントローラ200が、ホスト110から受け取ったときに実行される。ライトセイムコマンドは、パターンデータ(例えば短いパターンデータ)を或る記憶領域に繰り返し書き込むことの要求である。ストレージコントローラ200は、このパターンデータを、ライトセイムコマンドで指定されている記憶領域(仮想ページ内の記憶領域)に書き込むのではなく、指定された記憶領域に対応する仮想ページにパターンデータが格納されているということを記憶して、その仮想ページに割り当てられている実ページを解放する(実ページの割当てを解除する)。これにより、消費記憶容量が節約される。なお、解放された実ページに対応する仮想ブロックに割り当てられている実ブロック(図23の説明において「解放実ブロック」という)を他の仮想ブロックに割り当てるためには、解放実ブロックに対する消去処理が必要である。本実施形態では、ストレージコントローラ200は、ライトセイムコマンドを受け取った場合、フラッシュパッケージ230に、解放実ブロックの消去処理を指示する。ライトセイムコマンドは、ストレージコントローラ200からパッケージコントローラ315に送信され、パッケージコントローラ315が、その要求に応答して、実ブロックの解放及び消去処理を行ってもよい。なお、通常のライト要求に応答してオール0などのパターンデータ(例えばフォーマットデータ)が書き込まれる場合にも、ストレージコントローラ200、あるいは、パッケージコントローラ315が、パターンデータを認識して、解放実ブロックを解放させてもよい。
The write-same command
ステップ8000:実行部4300は、受けたライトセイムコマンドで指定されている記憶領域(以下、ライト指定領域)に係る仮想ページの集合を特定する。ライト指定領域は、例えば、仮想ページの一部領域(以下、仮想一部領域)、一以上の仮想ページ全域、あるいは、それらの組合せに相当する。
Step 8000: The
ステップ8001:本実施形態では、仮想ページ全体が指定されていれば対応する実ページが解放の対象となる。また、仮想ブロック全体が指定されていれば、フラッシュパッケージ160の中の実ブロックを解放できる可能性がある。RAID0やRAID1の場合には、仮想ブロック全体が指定されていれば、対応する実ブロックを解放することができる。しかし、仮想ブロック全体が指定されていても、RAID5のように、N個のデータから1つの冗長データを生成する場合、単純に対応する実ブロックを解放することはできない。本実施形態では、RAID5を構成するN個の仮想ブロック全体が指定された場合、対応するN個の実ブロッックとその冗長データを格納した1個の実ブロックを解放するようにする。仮想ブロックの一部の領域や、RAID5を構成するN個の仮想ブロックの一部の領域が、指定された場合、指定された記憶領域には、指定された情報パターンを書き込む必要がある。当該ステップでは、実行部4300は、フラッシュパッケージ230に情報パターンを書き込む必要がある領域と実ブロックの解放が可能なフラッシュパッケージ230内の領域を分類する。情報パターンを、フラッシュパッケージ230へ書き込む必要がない場合、ステップ8003へジャンプする。
Step 8001: In the present embodiment, if the entire virtual page is designated, the corresponding real page is the target of release. Further, if the entire virtual block is designated, there is a possibility that a real block in the flash package 160 can be released. In the case of RAID 0 or RAID 1, if the entire virtual block is specified, the corresponding real block can be released. However, even if the entire virtual block is specified, when one redundant data is generated from N pieces of data as in RAID 5, the corresponding real block cannot be simply released. In the present embodiment, when the entire N virtual blocks constituting RAID 5 are designated, the corresponding N real blocks and one real block storing the redundant data are released. When a partial area of a virtual block or a partial area of N virtual blocks constituting RAID 5 is designated, it is necessary to write a designated information pattern in the designated storage area. In this step, the
ステップ8002:実行部4300は、フラッシュパッケージ230に書き込むパターンデータを、キャッシュメモリ210に格納する。その際、どのフラッシュパッケージ230のどの領域に書き込むのかというアドレス情報がそのパターンデータに付与される。この後、そのパターンデータは、ライト要求に付随するライト対象データと同じように、フラッシュパッケージ230へ書き込まれる。
Step 8002: The
ステップ8003:実行部4300は、解放できる実ブロック及び実ページがあるかを判断する。いずれもない場合、本処理フローが終了する。
Step 8003: The
ステップ8004:実行部4300は、ステップ8001で判別したフラッシュパッケージ230の記憶領域を指定した解放指示を、そのフラッシュパッケージ230に送信する。その解放指示は、パッケージグループ280を構成する一以上のフラッシュパッケージ230に送信される可能性がある。
Step 8004: The
ステップ8005:実行部4300は、解放指示の送信先のすべてのフラッシュパッケージ230から処理報告を待つ。
Step 8005: The
ステップ8006:各フラッシュパッケージ230内のパッケージコントローラ315は、その解放指示の応答として、各仮想ブロックについて、実際に解放した仮想ブロックの個数(=実ブロックの個数)と、各仮想ブロックごとに、実ブロックを割り当てた時刻と仮想ブロックの消去回数を、ストレージコントローラ200に報告する。本ステップでは、実行部4300は、仮想ブロックごとの実ブロック割り当て時刻を判断して、前回スケジュール時刻2701以前の値をもつ仮想ブロックと、前回スケジュール時刻2701以降の値をもつ仮想ブロックとに分類する。以下のステップ8007及び8008では、実ページ情報2100及びフラッシュパッケージ情報2500がもっている情報から、解放した実ブロックに関する属性(例えば、割当て時間)が削減される。
Step 8006: As a response to the release instruction, the
ステップ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から削減する、
を実行する。
Step 8007: The processing in this step is processing for a set of virtual blocks having values before the
(A) For each real block allocation time, (real block allocation time−previous schedule time 2701) is calculated, and this value is added for each corresponding real page and flash package 230 (the real block allocation time is For example, the time given to the write instruction of the storage controller 200);
(B) The respective added values are subtracted from the accumulated actual
(C) Add the number of erasures of each virtual block for each corresponding real page and
(D) The respective added values are subtracted from the accumulated actual page erase
(E) Count the number of virtual blocks having real block allocation times for each real page and
(F) The respective count values are reduced from the cumulative real
Execute.
ステップ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から減算する、
を実行する。
Step 8008: The processing in this step is processing for a set of virtual blocks having values after the
(A) For each real block allocation time, (next schedule time 2701-real block allocation time) is calculated, and this value is added for each corresponding real page and
(B) The respective added values are subtracted from the additional real
(C) Add the number of erasures of each virtual block for each corresponding real page and
(D) The respective added values are subtracted from the additional real page erase
(E) Count how many virtual blocks each have a real block allocation time for each real page and flash package 230 (this process may be omitted because it is also performed in step 8007);
(F) The respective count values are subtracted from the additional real
Execute.
ステップ8009:実行部4300は、上記受けたライトセイムコマンドで、仮想ページから実ページを解放できるものがあるかを判断する。なければ、本処理フローが終了する。
Step 8009: The
ステップ8010:本ステップの処理は、仮想ページから実ページを解放する処理である。実行部4300は、(a)〜(e):
(a)解放可能な実ページに対応する実ページ情報2100を、空きページ管理情報ポインタ2200のキューに登録する;
(b)解放可能な実ページの基になっているフラッシュパケッージグループ280ごとに、解放できる実ページ数を計算する;
(c)パッケージグループ280ごとに計算した値を、対応するパッケージグループ情報2300内の空きページ数2304から減算する;
(d)解放する実ページごとに、論理ボリューム情報2000内の実ページポインタ2004をヌル値にする;
(e)ライトセイムコマンドに付随するパターンデータを、フォーマット情報2005に含める、
を実行する。これにより、ライト指定領域に係る仮想ページにはフォーマット情報2005に含まれたパターンデータが格納されていることをストレージコントローラ200が認識することができる。
Step 8010: The processing in this step is processing for releasing a real page from a virtual page. The
(A) Register
(B) Calculate the number of real pages that can be released for each
(C) Subtract the value calculated for each
(D) The
(E) Include pattern data accompanying the write same command in the
Execute. As a result, the
図24は、ページ移動スケジュール部4400の処理フローを示す。
FIG. 24 shows a processing flow of the page
ページ移動スケジュール部4400は、タイマ240が、次回スケジュール時刻2702になったときに、実行を開始する。
The page
ステップ10000:スケジュール部4400は、各フラッシュパッケージ230について、以下の(a)〜(e):
(a)パッケージ内実ブロック割り当て数2505に(次回スケジジュ−ル時刻2702−前回スケジュール時刻2701)を乗算した値を、パッケージ内累積実ブロック割り当て時間2507に加える;
(b)パッケージ内累積実ブロック割り当て時間2507に、パッケージ内追加実ブロック割り当て時間2509を加える;
(c)ブロックパッケージ内追加実ブロック割り当て時間2509を0にする;
(d)パッケージ内実ブロック割り当て数2505に、パッケージ内追加実ブロック数2506加える、
(e)パッケージ内追加実ブロック数2506を0にする、
を実行する。(a)と(b)により、前回スケジュール時刻2701以降に割り当てられた実ブロックの割り当て時間を反映(加算)できたことになる。なぜなら、パッケージ内追加実ブロック割り当て時間2509は、前回スケジュール時刻2701以降に割り当てられた、当該フラッシュパッケージの実ブロックごとに、(次回スケジュール実時刻2702−実ブロック割り当て時刻)が加算されてきたからである。
Step 10000: The
(A) A value obtained by multiplying the actual
(B) Intra-package additional real
(C) Set the additional real
(D) The number of additional real blocks in
(E) Set the number of additional real blocks in the
Execute. From (a) and (b), the allocation time of the real block allocated after the
ステップ10001:スケジュール部4400は、各実ページについて、以下の(a)〜(e):
(a)実ブロック割り当て数2104に(次回スケジュール時刻2702−前回スケジュール時刻2701)を乗算した値を、累積実ブロック割り当て時間2106に加える;
(b)累積実ブロック割り当て時間2106に、追加実ブロック割り当て時間2108を加える;
(c)追加実ブロック割り当て時間2108を0にする;
(d)実ブロック割り当て数2104に、追加実ブロック数2105を加える;
(e)追加実ブロック数2105を0にする、
を実行する。(a)と(b)により、前回スケジュール時刻2701以降に割り当てられた実ブロックの割り当て時間を反映(加算)できたことになる。なぜなら、追加実ブロック割り当て時間2108には、前回スケジュール時刻2701以降に割り当てられた、当該実ページの実ブロックごとに、(次回スケジュール実時刻2702−実ブロック割り当て時刻)が加算されてきたからである。
Step 10001: The
(A) A value obtained by multiplying the actual
(B) Add additional real
(C) Set the additional real
(D) Add the number of additional
(E) Set the number of additional
Execute. From (a) and (b), the allocation time of the real block allocated after the
ステップ10002:スケジュール部4400は、各フラッシュパッケージ230について、以下の(a)〜(d):
(a)パッケージ内累積実ブロック消去回数2508をパッケージ内累積実ブロック割り当て時間2507で割る;
(b)パッケージ内実ブロック割り当て数2505を、割り当て可能実ブロック数2504で割る、
(c)複数のパッケージグループ280から移動元パッケージグループを決定する;
(d)複数のパッケージグループ280から移動先パッケージグループを決定する、
を実行する。
Step 10002: The
(A) Divide the cumulative real block erase
(B) Divide the actual
(C) determining a source package group from a plurality of
(D) A destination package group is determined from a plurality of
Execute.
(a)で得られた値は、実ページの割り当ての変更を行わなかった場合のそれぞれのフラシュパッケージ230の実ブロックの単位時間当りの平均消去回数(以下、単に「平均消去回数」と言う)となる。なお、パッケージ内累積実ブロック消去回数2508の代わりにパッケージ内累積ライトデータ量2510がある場合、そのライトデータ量2510からパッケージ内累積実ブロック消去回数2508の値が推測される。具体的には、例えば、パッケージ内累積ライトデータ量2510/(フラッシュブロック容量3004―パッケージブロック容量3005)で算出された値が、パッケージ内累積実ブロック消去回数2508の推測値である。これは、当初、(フラッシュブロック容量3004−パッケージブロック容量3005)が空き容量になっていて、この空き容量がなくなると、消去処理が発生するためである。
The value obtained in (a) is the average number of erasures per unit time of real blocks of each
スケジュール部4400は、余命が短いパッケージグループを移動元パッケージグループとして決定することができるが、「余命」は、平均消去回数と消去限界数2512を基に算出される。具体的には、例えば、{(消去限界数2512−パッケージ内累積実ブロック消去回数2508)/平均消去回数}+現在時刻(タイマ240から取得される時刻)を計算することにより、一つのパッケージグループ230についての余命が得られる。
The
(b)で得られた値は、実ページの割り当ての変更を行わなかった場合のそれぞれのフラシュパッケージ230の実ブロックの占有率になる。
The value obtained in (b) is the actual block occupancy ratio of each
本実施形態では、この平均消去回数や実ブロックの占有率に基づき、移動元パッケージグループが決定される。以下、それぞれのケースを説明する。 In the present embodiment, the source package group is determined based on the average number of erasures and the occupancy rate of the actual block. Each case will be described below.
<平均消去回数>。 <Average number of erasures>.
スケジュール部4400は、例えば、平均消去回数が多い或いは余命が短いパッケージグループを移動元パッケージグループとして決定する。具体的には、例えば、スケジュール部4400は、下記(A1)〜(A3)の少なくとも一つに適合するフラッシュパッケージを含んだパッケージグループ:
(A1)平均消去回数が所定の第1の閾値を超えている;
(A2)余命が保障期間終了時刻2511より短い;
(A3)平均消去回数が、他のフラッシュパッケージ230に比べて一定の割合以上に多い(すなわち、フラッシュパッケージ230間で、平均消去回数の偏りが大きい)、
を、移動元パッケージグループとして決定する。
The
(A1) The average number of erasures exceeds a predetermined first threshold;
(A2) Life expectancy is shorter than the warranty
(A3) The average number of erasures is more than a certain ratio compared to other flash packages 230 (that is, the bias of the average erasure number is large among the flash packages 230).
Are determined as the source package group.
スケジュール部4400は、例えば、平均消去回数が少ない或いは余命が長いパッケージグループを移動先パッケージグループとして決定する。具体的には、例えば、スケジュール部4400は、下記(B1)〜(B3)の少なくとも一つに適合するフラッシュパッケージを含んだパッケージグループ:
(B1)平均消去回数が所定の第2の閾値以下である(第2の閾値は前述の第1の閾値以下);
(B2)余命が保障期間終了時刻2511より長い;
(B3)平均消去回数が、他のフラッシュパッケージ230に比べて一定の割合未満に少ない、
を、移動先パッケージグループとして決定する。より具体的には、例えば、上記(A1)のフラッシュパッケージ230を含んだ移動元パッケージグループに対して、(B1)のフラッシュパッケージ230を含んだパッケージグループ280が移動先として決定され、上記(A2)のフラッシュパッケージ230を含んだ移動元パッケージグループに対して、(B2)のフラッシュパッケージ230を含んだパッケージグループ280が移動先として決定され、上記(A3)のフラッシュパッケージ230を含んだ移動元パッケージグループに対して、(B3)のフラッシュパッケージ230を含んだパッケージグループ280が移動先として決定される。その際、移動先となるパッケージグループ280は、例えば、移動元との平均消去回数の差、又は、余命の差を基に、決定される。
The
(B1) The average number of erasures is equal to or less than a predetermined second threshold (the second threshold is equal to or less than the first threshold described above);
(B2) Life expectancy is longer than the guarantee
(B3) The average number of erasures is less than a certain ratio compared to
Is determined as the destination package group. More specifically, for example, with respect to the migration source package group including the
<実ブロックの占有率>。 <Occupancy rate of real block>.
スケジュール部4400は、例えば、下記(X1)及び(X2)の少なくとも一つに適合するフラッシュパッケージを含んだパッケージグループ280:
(X1)実ブロックの占有率が所定の第3の閾値を越えている(フラッシュパッケージ230が満杯になる可能性がある);
(X2)割り当て可能実ブロック数2504がある基準を満たしていない(例えば所定の第5の閾値以下である)、
を、移動元パッケージグループとして決定する。
The
(X1) The actual block occupancy exceeds a predetermined third threshold (the
(X2) The number of real blocks that can be allocated 2504 does not satisfy a certain criterion (for example, not more than a predetermined fifth threshold),
Are determined as the source package group.
スケジュール部4400は、例えば、下記(Y1)及び(Y2)の少なくとも一つに適合するフラッシュパッケージを含んだパッケージグループ:
(Y1)平均消去回数が所定の第4の閾値以下である(第4の閾値は前述の第3の閾値以下);
(Y2)割り当て可能実ブロック数2504がある基準を満たしている(例えば所定の第6の閾値を超えている(第6の閾値は前述の第5の閾値以上))、
を、移動先パッケージグループとして決定する。
The
(Y1) The average number of erasures is equal to or less than a predetermined fourth threshold (the fourth threshold is equal to or less than the above-described third threshold);
(Y2) The number of allocatable
Is determined as the destination package group.
ステップ10003:スケジュール部4400は、
(a)移動元ページ(データの移動元の実ページ)と移動先ページ(データの移動先の実ページ)とを決定する(すなわち、スケジュール部4400は、移動元パッケージグループに基づく複数の実ページから移動元ページを決定し、且つ、移動先パッケージグループに基づく複数の実ページから移動先ページを決定する);
(b)決定されたすべての移動元ページに対応する移動待ちフラグ2111をONに更新する;
(c)移動先ページを割り当てるパッケージグループ280に対応する空きページ管理情報ポインタ2200がさす実ページ情報2100を、移動元ページのコピー先実ページ情報ポインタ2110に設定する;
(d)空きページ管理情報ポインタ2200を、次の空いた状態にあるページ管理情報2100を示すように更新する、
を実行する。上記(c)及び(d)は、決定された全ての移動元ページについて実行される。これにより、移動元ページと移動先ページのペアが決まったことになる。
Step 10003: The
(A) A source page (actual page from which data is migrated) and a destination page (actual page from which data is migrated) are determined (that is, the
(B) Update the
(C) The
(D) Update the free page
Execute. The above (c) and (d) are executed for all the determined source pages. As a result, the pair of the movement source page and the movement destination page is determined.
(a)において、スケジュール部4400は、例えば、移動元パッケージグループ280に属する各実ブロック情報2100の、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107(代わりに、累積ライトデータ量2112)、実ブロック割り当て数2104などのうちの少なくとも一つを基に、移動元ページを決定する。具体的には、例えば、スケジュール部4400が決定した移動元ページは、下記(x)又は(y)の特徴:
(x)決定された移動元ページの累積実ブロック消去回数2107は、その移動元ページの累積実ブロック消去回数2107と移動先ページ(移動先の実ページ)の累積実ブロック消去回数2107との差になるべく近い(好ましくは等しい);
(y)決定された移動元ページの実ブロック占有率は、その移動元ページの実ブロック占有率と移動先ページの実ブロック占有率との差になるべく近い(好ましくは等しい)、
を有する。(x)の特徴を有する移動元ページは、例えば、移動元パッケージグループが上記(A1)〜(A3)のいずれかに対応したグループの場合に決定される。(y)の特徴を有する移動元ページは、移動元パッケージグループが上記(B1)又は(B2)に対応したグループの場合に決定される。
In (a), the
(X) The determined cumulative actual block erase
(Y) The determined actual block occupancy of the source page is as close as possible to the actual block occupancy of the source page and the actual block occupancy of the destination page (preferably equal).
Have The source page having the feature (x) is determined, for example, when the source package group is a group corresponding to any one of (A1) to (A3). The source page having the feature (y) is determined when the source package group is a group corresponding to the above (B1) or (B2).
ステップ10004:スケジュール部4400は、パッケージグループ160ごとに存在するページ移動処理実行部4500の中で、少なくとも一つの移動元ページを有するパッケージグループ280に対応したページ移動処理実行部4500を起動する。
Step 10004: The
ステップ10005:スケジュール部4400は、以下の(a)及び(b):
(a)次回スケジュール時刻2701を前回スケジュール時刻2701にコピーする;
(b)次回スケジュール時刻2701に次のスケジュール時間を設定する(例えば、次回スケジュール時刻2701を、現在の次回スケジュール時刻2701に所定の時間を加算することにより得られた時刻に更新する)、
を実行する。
Step 10005: The
(A) Copy
(B) The next schedule time is set to the next schedule time 2701 (for example, the
Execute.
図25は、ページ移動処理実行部4500の処理フローを示す。
FIG. 25 shows a process flow of the page movement
ページ移動処理実行部4500は、パッケージグループ280毎に存在する。また、図24のステップ10004で述べたように、少なくとも一つの移動元ページを有するパッケージグループ280に対応したページ移動処理実行部4500が、ページ移動スケジュール部4400から起動される。
A page movement
ステップ11000:実行部4500は、ONになっている移動待ちフラグ2111を含んだ実ページ情報2100を探す。この実ページ情報2100に対応した実ページが移動元ページである。もし、ONになった移動待ちフラグ2111を含んだ実ページ情報2100がない場合、本処理フローは終了する。
Step 11000: The
ステップ11001:実行部4500は、見つかった実ページ情報2100内の移動待ちフラグ2111をOFFにして、移動中フラグ2109をONにする。
Step 11001: The
ステップ11002:実行部4500は、移動元ページに割り当てられている仮想ブロックの集合を特定する。移動元ページに対応するパッケージグループ2101が示すパッケージグループ情報2300が、該当するパッケージグループ情報2300である。このパッケージグループ情報2300内のフラッシュパッケージポインタ2305が示すフラッシュパッケージ情報2500に対応するフラッシュパッケージ230が、移動元ページの基になっているフラッシュパッケージ(移動元パッケージ)230である。実行部4500は、移動元ページに対応した実ページアドレス2102と、移動元パッケージに対応したブロック容量2503とを基に、それぞれのフラッシュパッケージ230の中の移動対象となる仮想ブロックの集合を、すべてのフラッシュパッケージ230に関して特定する。
Step 11002: The
ステップ11003:実行部4500は、移動元グループ(移動元ページの基になっているパッケージグループ)280を構成する各フラッシュパッケージ230のパッケージコントローラ315に、特定された仮想ブロックの集合に格納されているデータのリード指示を送信する。
Step 11003: The
ステップ11004:実行部4500は、ステップ11003での指示の送信先のすべてのフラッシュパッケージ230から、完了報告をまつ。
ステップ11005:実行部4500は、フラッシュパッケージ230からの完了報告に含まれている情報を、キャッシュメモリ210に格納する。なお、その完了報告には、ステップ11003で送信した指示で指定した各仮想ブロック(リード元仮想ブロック)に実ブロックが割りてられていたか否かを表す情報が含まれている。リード元仮想ブロックに実ブロックが割り当てられていた場合、完了報告には、以下の情報(A)〜(C);、
(A)リード元仮想ブロックに割り当てられていた実ブロックに格納されていたデータ;
(B)リード元仮想ブロックに実ブロックが割り当てられていない状態から初めて実ブロック(現在割り当てられている実ブロックとは限らない)を割り当てた時刻;
(C)(D)の時刻以降の、リード元仮想ブロックに割り当てられていた実ブロックの消去回数、
が含まれている。
Step 11004: The
Step 11005: The
(A) Data stored in a real block assigned to a read source virtual block;
(B) Time when a real block (not necessarily a real block currently assigned) is assigned for the first time from a state in which no real block is assigned to the read source virtual block;
(C) The number of erasures of the real block allocated to the read source virtual block after the time of (D),
It is included.
ステップ11006:実行部4500は、移動先ページに割り当てられている仮想ブロックの集合を特定する。この場合、移動元ページに対応した実ページ情報2100内の移動先ページポインタ2110が示す実ページ情報2100が、移動先ページに対応する実ページ情報2100である。
Step 11006: The
ステップ11007:実行部4500は、移動先グループ(移動先ページの基になっているパッケージグループ)280を構成する各フラッシュパッケージ230のパッケージコントローラ315に、特定された仮想ブロック(ライト先仮想ブロック)にデータを格納することのライト指示を送信する。このとき、各パッケージコントローラ315に送られる情報は、ステップ1105でキャッシュメモリ210に格納された情報(移動元パッケージ230から送られてきた情報)である。
Step 11007: The
ステップ11008:実行部4500は、ライト指示の送信先のすべてのフラッシュパッケージ230から、完了報告をまつ。
Step 11008: The
ステップ11009:実行部4500は、以下の(a)〜(c):
(a)移動元ページを空きページに更新し、且つ、移動先ページを、これまで移動元ページが割り当てられていた仮想ページに割り当てる(具体的には、移動元ページに対応した実ページ情報2100に空きページ管理ポインタ2200をつなぎ、これまで移動元ページを示していた実ページポインタ2004を移動先ページに対応した実ページ情報2100を示すようにする);
(b)、移動元ページに対応した実ページ情報2100のうち、実ブロック割り当て数2104、追加実ブロック割り当て数2105、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107(累積ライトデータ量2112)、追加実ブロック割り当て時間2108を、移動先ページに対応した実ページ情報2100にコピーする;
(c)移動元ページに対応した実ページ情報2100のうち、情報2104〜2111をクリアする、
を実行する。
Step 11009: The
(A) The source page is updated to an empty page, and the destination page is assigned to the virtual page to which the source page has been assigned (specifically,
(B) Of the
(C) Clear the
Execute.
ステップ11010:実行部4500は、移動元に対応したすべてのパッケージグループ情報2300と移動先に対応したすべてのパッケージグループ情報2300とを更新する。具体的には、実行部4500は、移動元に対応したパッケージグループ情報2300内の実ページ数2303から移動元ページの数(例えば1)を減らし、移動先に対応したパッケージグループ情報2300内の実ページ数2303に、移動先ページの数を加算する。
Step 11010: The
ステップ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へ戻る。
Step 11011: The
(A) From each of the following values (A) to (F) in each
(A) Real block allocation number in
(B) Number of additional real block allocation in
(C) cumulative real
(D) Cumulative actual block erase
(E) Additional real block allocation time in
((F) cumulative write data amount in package 2510))
(U) Real
(V) Additional real
(W) Cumulative real
(X) Cumulative actual block erase
(Y) Additional real
((Z) Cumulative write data amount 2112))
(In-package cumulative
(B) Each of the following (G) to (L) values in each
(G) Real block allocation number in
(H) Number of additional real block allocation in
(I) Cumulative real
(J) Cumulative actual block erase
(K) Additional real
((L) cumulative write data amount in package 2510))
(O) Real
(P) Additional real
(Q) Cumulative real
(R) Cumulative actual block erase
(S) Additional real
((T) Cumulative write data amount 2112))
(In-package cumulative
Execute. Thereafter, the process returns to step 11000.
(a)の累積割当て時間は、本実施形態よりも簡単に管理されても良い。例えば、直前回の上位レベルの長寿命化制御が行われてから今回の上位レベルの長寿命化制御が行われるまでの間に、割り当てられる実ブロックの数に変更があっても、その変更は適宜に無視されても良い。 The cumulative allocation time in (a) may be managed more easily than in the present embodiment. For example, even if there is a change in the number of real blocks allocated between the last time the upper level life extension control is performed and the current upper level life extension control is performed, the change is It may be ignored as appropriate.
ストレージコントローラ200は、実ブロックの消去回数や割当て時間を、例えば、フラッシュパッケージ230から受ける情報を基に特定することができ、特定された消去回数及び割当て時間を、フラッシュパッケージ毎の累積割当て時間や全体消去回数に反映することができる。
The
次に、フラッシュパッケージ230が実行する動作の説明を行う。フラッシュパッケージ230の動作は、パッケージコントローラ315(典型的にはパッケージプロセッサ310)が実行し、そのプログラムは、パッケージメモリ320内に格納されている。
Next, the operation executed by the
図26は、パッケージメモリ320に格納されているプログラムを示す。
FIG. 26 shows a program stored in the
プログラムとして、例えば、データリード処理実行部12000、データライト処理実行部12100、実ブロック解放処理実行部12200、仮想ブロック移動処理実行部12300及び仮想ブロック格納処理実行部12400がある。これらのプログラムは、下位レベルのウエアレベリング制御及び容量仮想化機能を実現するためのプログラムである。前述したように、本実施形態では、フラッシュパッケージ230が、下位レベルのウエアレベリング制御及び容量仮想化機能を実現するが、それらはストレージコントローラ200で実現されてもよい。その場合、図27に示すように、図26に示したプログラムとほぼ同様のプログラムが、共有メモリ220に格納される。図27に示した構成では、これらの情報は、ストレージコントローラ200が実行するので、図26に示したそれぞれのプログラムとは、若干相違が生ずる。
Examples of the program include a data read
以下、パッケージメモリ320内のプログラム12000、12100、12200、12300及び12400を主語として説明する処理は、実際にはパッケージプロセッサ310が行う処理である。
Hereinafter, the processing described with the
図28は、データリード処理実行部12000の処理フローを示す。
FIG. 28 shows a processing flow of the data read
データリード処理実行部12000は、ストレージコントローラ200から、リード指示を受け取ったときに、実行される。以下の説明では、一つの仮想ブロックからデータを読み出すことを例に採るが、図28の処理フローは、複数の仮想ブロックからデータを読み出すことにも有効である。
The data read
ステップ13000:実行部12000は、受けたリード指示が指定するアドレスと、パッケージブロック容量3005とを基に、リード元となる仮想ブロックと、リード元仮想ブロック内の相対アドレスとを計算する。
Step 13000: The
ステップ13001:実行部12000は、リード元の仮想ブロックに割り当てられている実ブロック(リード元実ブロック)に対応した実ブロック情報3300を、リード元仮想ブロックに対応した仮想ブロック情報3200内の実ブロック情報ポインタ3202から獲得する。
Step 13001: The
ステップ13002:実行部12000は、以下の(a)及び(b):
(a)獲得した実ブロック情報3300内の実ブロックID3301から、そのID3301に対応する実ブロックの先頭が、どのフラッシュチップ300のどのアドレスであるかを特定する;
(b)(a)で特定されたアドレスと、上記獲得した実ブロック情報3300内の追加書き込みデータアドレス情報3305と、ステップ13000で得たリード指示でアクセス対象となる仮想ブロック内の相対アドレスとを基に、そのリード指示から特定された仮想ブロックが、当該フラッシュチップ300のどの当該アドレスに格納されているかを算出する、
を実行する。
Step 13002: The
(A) From the
(B) The address specified in (a), the additional write
Execute.
ステップ13003: 実行部12000は、リード対象のデータが格納されているフラッシュチップ300に対応したチップ情報3100を参照し、当該フラッシュチップ300が接続されているパッケージバス340を識別し、対応するパッケージバス転送装置350を認識する。
Step 13003: The
ステップ13004: 実行部12000は、ステップ13003で認識したパッケージバス転送装置350に対して、どのフラッシュチップ300のどのアドレス(実ブロックのアドレス)からバッファ330にデータを転送するのかを、指示する。
Step 13004: The
ステップ13005:実行部12000は、転送が完了するのを待つ。
Step 13005: The
ステップ13006:実行部12000は、バッファ330に格納されたデータ(ストレージコントローラ200からのリード指示の対象のデータ)を、ストレージコントローラ200に送る。
Step 13006: The
図29と図30は、データライト処理実行部12100の処理フローを示す。
29 and 30 show a processing flow of the data write
データライト処理実行部12100は、フラッシュパッケージ230がストレージコントローラ200からライト指示を受け付けたときに実行される。以下の説明では、一つの仮想ブロックにデータを書き込むことを例に採るが、図29及び30の処理フローは、複数の仮想ブロックにデータを書き込むことにも有効である。
The data write
ステップ14000: 実行部12100は、受けたライト指示が指定するアドレスと、パッケージブロック容量3005とを基に、ライト先の仮想ブロックとその仮想ブロックの相対アドレスとを計算する。
Step 14000: The
ステップ14001:実行部12100は、上記ライト指示に付随するライト対象データを、バッファ330に格納する。
Step 14001: The
ステップ14002:実行部12100は、ライト先仮想ブロックに対応する仮想ブロック情報3200内の実ブロック情報ポインタ3202を参照する。実行部12100は、そのポインタ3202の値がヌル値かどうか、すなわち、実ブロックが割り当てられているか否かを判断する。割り当てられていれば(その判断の結果が肯定的であれば)、ステップ14005へジャンプする。
Step 14002: The
ステップ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)減算する、
を実行する。
Step 14003: This step is a step of assigning an empty block to the write destination virtual block. In this example, it is assumed that the allocated free block is erased and no data is stored. The
(A) Referring to the number of
(B) Referring to the free block
(C) The free block
(D) The
(E) The number of allocated real blocks (for example, 1) is subtracted from the value of the number of
Execute.
ステップ14004:実行部12100は、以下の(a)〜(c):
(a)上記ライト指示に付与されている時刻情報を、ライト先仮想ブロックに対応した仮想ブロック情報3200内の仮想ページ割り当て時刻3203に設定する;
(b)ライト先仮想ブロックに対応した仮想ブロック消去回数3204に0を設定する;
(c)バッファ330上に、パッケージブロック容量3005分の初期パターン(ストレージコントローラ200からライト対象データ(図29及び図30の説明において、ライト指示に付随するデータ)を受け取っていないことを意味するパターン)を生成する、
を実行する。ここで、ライト先仮想ブロックに割り当てられた実ブロック(図29及び図30の説明において「ライト先実ブロック」という)には、ライト対象データ以外は、この初期パターンが書き込まれることになる。これを実行するため、図30のステップ14016へジャンプする。
Step 14004: The
(A) The time information given to the write instruction is set to the virtual
(B) 0 is set to the virtual block erase
(C) On the
Execute. Here, in the real block assigned to the write destination virtual block (referred to as “write destination real block” in the description of FIGS. 29 and 30), this initial pattern is written except for the write target data. To do this, jump to step 14016 in FIG.
ステップ14005:実行部12100は、ライト先実ブロックに対応する実ブロック情報3300内の実ブロックID3301を参照して、ライト先実ブロックの先頭が、どのフラッシュチップ300のどのアドレスであるかを特定する。
Step 14005: The
ステップ14006:実行部12100は、ライト先実ブロックに対応する実ブロック内空き領域3304と、ライト対象データの長さとを基に、ライト対象データをライト先実ブロックの空き領域に書き込めるか否かを判断する。書き込めない場合(その判断の結果が否定的の場合)、図30のステップ14011へジャンプする。
Step 14006: The
ステップ14007: 実行部12100は、ライト先実ブロックを有するフラッシュチップ300に対応したチップ情報3100を参照し、そのフラッシュチップ300が接続されているパッケージバス340を識別し、対応するパッケージバス転送装置350を認識する。
Step 14007: The
ステップ14008: 実行部12100は、ステップ14007で認識したパッケージバス転送装置350に対して、どのフラッシュチップ300のどのアドレスにバッファ330からライト対象データを書き込むかを指示する。
Step 14008: The
ステップ14009:実行部12100は、書き込みが完了するのを待つ。
ステップ14010:実行部12100は、以下の(a)〜(c):
(a)ライト先実ブロックに対応した実ブロック内空き領域3304から、ライト対象データの量を減算する;
(b)ライト先実ブロックに対応した追加書き込みデータアドレス情報3305に、ライト先実ブロック内の相対アドレスとライト対象データの長さとを加える;
(c)ストレージコントローラ200に、ライト指示が完了したことの完了報告を送信する、
を実行する。
Step 14009: The
Step 14010: The
(A) The amount of write target data is subtracted from the
(B) The relative address in the write destination real block and the length of the write target data are added to the additional write
(C) A completion report indicating that the write instruction has been completed is transmitted to the
Execute.
ステップ14011:本ステップは、ライト先実ブロックの空き領域よりもライト対象データの長さが大きい場合に実行されるステップである。この場合、ライト対象データは、ライト先実ブロックには、消去処理を実行することなしに、格納できない。本実施形態では、実ブロックの消去回数の偏りを少なくするために、ライト対象データは別の実ブロックに格納するようにする。したがって、本ステップでは、実行部12100は、下位レベルのウエアレベリング制御部をコールする。実行部12100は、下位レベルのウエアレベリング制御部から、ライト対象データを格納すべき実ブロックに対応する実ブロック情報3300のアドレスを受け取る。下位レベルのウエアレベリング制御は、実ブロックの消去回数の偏りを少なくするように、新しい実ブロックを選択する。その実ブロックは、例えば、消去された状態にあり、直接データを書き込めるような状態であるとする。なお、下位レベルのウエアレベリング技術は、特許文献1のような公知技術を適用すればよいため、ここでは詳細に説明しない。
Step 14011: This step is a step executed when the length of the write target data is larger than the empty area of the write destination actual block. In this case, the write target data cannot be stored in the write destination real block without executing the erasure process. In the present embodiment, the write target data is stored in another real block in order to reduce the deviation in the number of erases of the real block. Therefore, in this step, the
ステップ14012:実行部12100は、新たに指定された実ブロックに、ライト対象データだけでなく、ライト先仮想ブロックに元々割り当てられていた実ブロック(図29及び図30の説明において「元の実ブロック」と言う)内の全てのデータ(パッケージブロック容量3005分のデータ)を書き込む必要がある。このため、実行部12100は、元の実ブロックに対応した追加書き込みデータアドレス情報3205を参照して、元の実ブロックのパッケージブロック容量3005分の容量のデータを仮想ブロックのアドレス順にバッファ330に格納するため、フラッシュチップ300への指示を生成する。
Step 14012: The
ステップ14013: 実行部12100は、ステップ14005で認識したフラッシュチップ300に対応したチップ情報3100を参照し、そのフラッシュチップ300が接続されているパッケージバス340を識別し、対応するパッケージバス転送装置350を認識する。
Step 14013: The
ステップ14014: 実行部12100は、ステップ14007で認識したパッケージバス転送装置350に、ステップ140011で生成した指示にしたがって、どのフラッシュチップ300のどのアドレスからバッファ330にデータを読み込むかを指示する。
Step 14014: The
ステップ14015:実行部12100は、バッファ330への読み込みが完了するのを待つ。
Step 14015: The
ステップ14016:実行部12100は、新たに割り当てた実ブロックにパッケージブロック容量3005分のデータを書き込む。具体的には、本ステップでは、実行部12100は、ステップ14004、あるいは、ステップ14014で、バッファ330に格納したパッケージブロック容量3005分のデータ(ステップ14004で格納したのは初期パターンのデータ)に対し、ストレージコントローラ200から受けたライト対象データを、ステップ14000で認識した相対アドレスから上書きする。
Step 14016: The
ステップ14017:次に、実行部12100は、新たに割り当てた実ブロックに対応する実ブロック情報3300内の実ブロックID3301を参照して、新たに割り当てた実ブロックがどのフラッシュチップ300のどのアドレスに格納するかを特定する。
Step 14017: Next, the
ステップ14018: 実行部12100は、ステップ14017で認識したライト対象データを格納するフラッシュチップ300に対応したチップ情報3100を参照し、そのフラッシュチップ300が接続されているパッケージバス340を識別し、対応するパッケージバス転送装置350を認識する。
Step 14018: The
ステップ14019: 実行部12100は、ステップ14018で認識したパッケージバス転送装置350に、どのフラッシュチップ300のどのアドレスへバッファ330からパッケージブロック容量3005分のデータを書き込むかを指示する。
Step 14019: The
ステップ14020:実行部12100は、バッファ330からの書き込みが完了するのを待つ。
Step 14020: The
ステップ14021:実行部12100は、元の実ブロックにライト対象データを格納できないために新しい実ブロックを割り当てた場合、ステップ14022及び14023を行う。そうではない場合、ステップ14024へジャンプする。
Step 14021: When the
ステップ14022:本ステップは、実行部12100は、実ブロックを空いた状態にするステップである。実行部12100は、以下の(a)〜(f):
(a)元の実ブロックに対して消去処理を行う;
(b)元の実ブロックに対応した実ブロック消去回数3306の値に1を加算する;
(c)実ブロック消去回数3306が上限値を超えた場合、元の実ブロックに対応する実ブロック障害フラグ3303をONにし、上記のライト指示に起因して障害状態になった実ブロックが発生したことを記憶する;
(d)元の実ブロックが割り当てられていた仮想ブロックに対応する仮想ブロック消去回数3204の値に1を加算する;
(e)元の実ブロックに対応する空きブロックポインタ3302に、空きブロック管理情報ポインタ3400が示していた実ブロック情報3300のアドレスを設定する;
(f)空きブロック管理情報ポインタ3400には、元の実ブロックに対応する実プロック情報3300のアドレスを設定する;
を実行する。
Step 14022: This step is a step in which the
(A) Erasing the original real block;
(B) Add 1 to the value of the real block erase
(C) When the actual block erase
(D) Add 1 to the value of the virtual block erase
(E) The address of the
(F) The empty block
Execute.
ステップ14023:本ステップは、新たな実ブロックをライト先仮想ブロックに割り当てるステップである。具体的には、実行部12100は、ライト先仮想ブロック対応する実ブロック情報ポインタ3202を、新たな実ブロックに対応した実ブロック情報3300を示す値に更新する。
Step 14023: This step is a step of assigning a new real block to the write destination virtual block. Specifically, the
ステップ14024:実行部12100は、ストレージコントローラ200に対して、ライト完了報告を送信する。その完了報告は、例えば、ストレージコントローラ200からのライト指示に伴って消去処理が施された実ブロックがあれば、その実ブロックの数を含む。また、その完了報告は、そのライト指示に伴って障害状態になった実ブロックがあれば、その実ブロックの数を含む。また、ステップ14004で、仮想ブロックに、実ブロックを割り当てていない状態から、新たに実ブロックを割り当てた場合、その割り当てた個数と、ライト指示に含まれていた時刻情報も、ストレージコントローラ200に対する完了報告に含まれる。
Step 14024: The
図31は、実ブロック解放処理実行部12200の処理フローを示す。
FIG. 31 shows the process flow of the real block release
実ブロック解放処理実行部12200は、ストレージコントローラ200から、領域の範囲(仮想ブロックの集合)を解放せよという解放指示を受け付けたときに実行する。
The real block release
ステップ15000:実行部12200は、解放指示で指定された領域の範囲とパッケージブロック容量3005とを基に、解放を指示された仮想ブロックの集合を算出する。
Step 15000: The
ステップ15001:実行部12200は、ステップ15000で特定した仮想ブロックの集合に対し、それぞれの仮想ブロックに対応する仮想ブロック情報3200の実ブロック情報ポインタ3202を参照し、実ブロックが割り当てられているか否かを判断する。ここでは、実行部12200は、指定されたすべての仮想ブロックに対して、それぞれの仮想ブロックに実ブロックが割り当てられているか否かを示す情報を作成する。実行部12200は、作成した情報を、ストレージコントローラ200に送るため、バッファ330に書き込む。
Step 15001: The
ステップ15002:実行部12200は、ステップ15000で特定した仮想ブロックの集合のうちの、実ブロックが割り当てられている仮想ブロックを探す。なければ、ステップ15006へジャンプする。
Step 15002: The
ステップ15003:実行部12200は、見つかった仮想ブロックに対応する実ブロック情報ポインタ3202が示す実ブロック情報3300に対応する実ブロックの解放処理を行う。このため、実行部12200は、その実ブロック情報3300内の実ブロックID3301を解析し、解放する実ブロックが、どのフラッシュチップ1302のどのアドレスに存在するかを特定する。
Step 15003: The
ステップ15004:本ステップは、実ブロックを空いた状態にするステップである。対象となる実ブロックは、ステップ15003で特定された実ブロックであるが、処理内容は、図30のステップ14022と同じである。このため、ここでは説明を省略する。
Step 15004: This step is a step of making the actual block empty. The target real block is the real block specified in
ステップ15005:実行部12200は、空いた状態にされた実ブロックに割り当てられていた仮想ブロック(空き仮想ブロック)に対応する仮想ブロック割り当て時刻3203及び仮想ブロック消去回数3204を、バッファ330へコピーする。それらの情報3203及び3204をストレージコントローラ200に送るためである。コピー後、実行部12200は、空き仮想ブロックに対応する仮想ブロック情報2000内の仮想ページ割り当て時刻3203及び仮想ブロック消去回数3204を初期化する。この後、ステップ15002に戻る。
Step 15005: The
ステップ15006:実行部12200は、ストレージコントローラ200に、下記情報(A)及び(B)の情報:
(A)解放指示で指定された領域の範囲に属する仮想ブロックごとに、実ブロックが割り当てられていたか否かを示す情報;
(B)解放された実ブロックが割り当てられていた仮想ブロック毎の、仮想ブロック割り当て時刻3203と仮想ブロック消去回数3204、
を含んだ解放完了報告を、ストレージコントローラ200に送る。
Step 15006: The
(A) Information indicating whether or not a real block has been allocated for each virtual block belonging to the range of the area designated by the release instruction;
(B) A virtual
Is sent to the
図32は、仮想ブロック移動処理実行部12300の処理フローを示す。
FIG. 32 shows a processing flow of the virtual block movement
仮想ブロック移動処理実行部12300は、ストレージコントローラ200から、指定された仮想ブロックの集合に格納されているデータをストレージコントローラ200に送る指示を受けたときに、実行する。移動されたデータを格納していた実ブロックは解放されるので、図31と異なるのは、実ブロックに格納されていたデータをストレージコントローラ200に送る点である。このため、図31の処理フローの各ステップを引用しながら、図32の説明を行う。
The virtual block migration
ステップ16000:ステップ15000と同様。実行部12300は、解放を指示された仮想ブロックの集合を特定する。
Step 16000: Same as
ステップ16001:ステップ15001と同様。実行部12300は、指定されたすべての仮想ブロックについて、実ブロックが割り当てられているか否かを示す情報を作成し、その情報をバッファ330にコピーする。
Step 16001: Same as
ステップ16002:ステップ15002と同様。実行部12300は、実ブロックが割り当てられている仮想ブロックを探す。なければ、ステップ16010へジャンプする。
Step 16002: Same as
ステップ16003:基本的にはステップ15003と同様。このため、実行部12300は、移動元の実ブロックに対応する実ブロックID3301を解析し、移動元の実ブロックが、どのフラッシュチップ300のどのアドレスから存在するかを特定する。
Step 16003: Basically the same as
ステップ16004:実行部12300は、移動元の実ブロックに対応する実ブロック情報3300の先頭アドレスと、その情報3300内の追加書き込みデータアドレス情報3305と、ステップ16003で得た格納先アドレスとを基に、アドレスリストを作成する。そのアドレスリストは、移動元の実ブロックについてのアドレスのリストであって、ストレージコントローラ200に送るべきパッケージブロック容量3005分のデータが格納されているアドレスのリストである。
Step 16004: The
ステップ16005: 実行部12300は、移動元の実ブロックを有するフラッシュチップ300に対応したチップ3100情報を参照し、そのフラッシュチップ300が接続されているパッケージバス340を識別し、対応するパッケージバス転送装置350を認識する。
Step 16005: The
ステップ16006: 実行部12300は、ステップ16005で認識したパッケージバス転送装置350に、移動元の実ブロックを有するフラッシュチップ300にアドレスリストを渡し、且つ、そのアドレスリストにしたがってバッファ330にデータを転送することを指示する。
Step 16006: The
ステップ16007:実行部12300は、転送が完了するのを待つ。
Step 16007: The
ステップ16008:本ステップは、実ブロックを空いた状態にするステップである。対象となる実ブロックは、移動元の実ブロックであるが、処理内容は、図30のステップ14022と同じである。このため、ここでは、説明を省略する。
Step 16008: This step is a step of making the actual block empty. The target real block is the source real block, but the processing content is the same as in
ステップ16009:ステップ15005と同様。実行部12300は、空いた状態にされた実ブロックに割り当てられていた仮想ブロック(空き仮想ブロック)に対応する仮想ブロック割り当て時刻3203及び仮想ブロック消去回数3204を、バッファ330へコピーする。コピー後、実行部12300は、空き仮想ブロックに対応する仮想ブロック情報2000内の仮想ページ割り当て時刻3203及び仮想ブロック消去回数3204を初期化する。この後、ステップ16002に戻る。
Step 16009: Same as
ステップ16010:実行部12300は、ストレージコントローラ200へ、バッファ330に格納されたデータを送る。具体的には、例えば、実行部12300は、下記情報(A)〜(C)の情報:
(A)移動元の仮想ブロックごとに、実ページが割り当てられていたか否かを示す情報;
(B)解放された実ブロックが割り当てられていた仮想ブロック毎の、仮想ページ割り当て時刻3203と仮想ブロック消去回数3204;
(C)バッファ330に格納されたデータ(移動元の仮想ブロックに割り当てられていた実ブロック内のデータ)、
を含んだ完了報告を、ストレージコントローラ200に送る。
Step 16010: The
(A) Information indicating whether or not a real page has been allocated for each virtual block of the movement source;
(B) Virtual
(C) Data stored in the buffer 330 (data in the real block assigned to the migration source virtual block),
Is sent to the
図33は、仮想ブロック格納処理実行部12400の処理フローを示す。
FIG. 33 shows a processing flow of the virtual block storage
仮想ブロック格納処理実行部12400は、指定された仮想ブロックの集合に、実ブロックをそれぞれ割り当て、且つ、ストレージコントローラ200から送られてきたデータを格納せよというライト指示を受けたときに、実行する。仮想ブロック移動処理実行部12300とは、データの流れが逆であるが、共通点が多いので、図32の処理フローの各ステップを引用しながら説明を行う。
The virtual block storage
ステップ17000:ステップ16000と同様。実行部12400は、格納を指示された仮想ブロックの集合を算出する。
Step 17000: Same as
ステップ17001:フラッシュパッケージ230内のパッケージコントローラ315が、ストレージコントローラ200から、以下の(A)〜(C)を含んだ情報:
(A)格納先の仮想ブロックの集合のうちの各仮想ブロックについて、実ブロックが割り当てられていたか否かを示す情報;
(B)実ブロックが割り当てられていたすべての仮想ブロックに関して、その仮想ブロック全体のデータ(具体的には、その仮想ブロックに割り当てられていた実ブロック内のデータ)、
(C)実ブロックが割り当てられていた仮想ブロックに対応した仮想ページ割り当て時刻3203及び仮想ブロック消去回数3204、
を受ける。その情報は、バッファ330に格納される。さらに、パッケージコントローラ315(パッケージプロセッサ310)は、仮想ブロック毎の情報(実ブロックが割り当てられるか否かを示す情報)を、バッファ330から取得する。
Step 17001: Information including the following (A) to (C) from the
(A) Information indicating whether or not a real block has been assigned to each virtual block in the set of storage destination virtual blocks;
(B) For all virtual blocks to which a real block has been assigned, data of the entire virtual block (specifically, data in the real block assigned to the virtual block),
(C) a virtual
Receive. The information is stored in the
ステップ17002:ステップ16002と同様。実行部12400は、取得した情報を基に、実ブロックが割り当てられていた仮想ブロックを探す。なければ、ステップ17010へジャンプする。
Step 17002: Same as
ステップ17003:実行部12400は、ステップ17002で見つかった仮想ブロックに空きブロックを割り当てる。この処理は、図29のステップ14003と同様であるので、詳細な説明は省略する。
Step 17003: The
ステップ17004: 実行部12400は、バッファ330に格納されている(C)の情報(実ブロックが割り当てられていた仮想ページ割り当て時刻3203及び仮想ブロック消去回数3204)を、空きブロックの割当先の仮想ブロックに対応した仮想ブロック情報3200内の仮想ページ割り当て時刻3203及び仮想ブロック消去3204にコピーする。
Step 17004: The
ステップ17005:基本的にはステップ16004と同様。実行部12400は、割り当てた実ブロックに対応する実ブロックID3301を解析し、ステップ17003で割り当てた実ブロックがどのフラッシュチップ300のどのアドレスから存在するかを特定する。
Step 17005: Basically the same as
ステップ17006:基本的にはステップ16005と同様。実行部12400は、特定された実ブロックが格納されているフラッシュチップ300に対応したチップ情報3100を参照し、そのフラッシュチップ300が接続されているパッケージバス340を識別し、対応するパッケージバス転送装置350を認識する。
Step 17006: Basically the same as
ステップ17007: 実行部12400は、ステップ17006で認識したパッケージバス転送装置350に、どのフラッシュチップ300のどのアドレスからバッファ330内のデータ(ステップ17001での(B)のデータ)を書き込むかを指示する。
Step 17007: The
ステップ17008:実行部12400は、転送が完了するのを待つ。
Step 17008: The
ステップ17009:ステップ17002に戻る。 Step 17009: Return to Step 17002.
ステップ17010:実行部12400は、ストレージコントローラ200へ、完了報告を送信する。
Step 17010: The
以上、本発明の一つの実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。 As mentioned above, although one embodiment of the present invention was described, this is an illustration for explaining the present invention and the scope of the present invention is not limited to this embodiment. The present invention can be implemented in various other forms.
例えば、パッケージコントローラ315は、フラッシュパッケージ230の外に設けられても良い。その場合、パッケージコントローラ315の数は、フラッシュパッケージ230の数よりも多くても少なくても良い。具体的には、例えば、X個(Xは二以上の整数)のフラッシュパッケージ230につき一つのパッケージコントローラ315が設けられても良い。この場合、一つのパッケージコントローラ315は、X個のフラッシュパッケージ230のそれぞれについて、論理アドレスと物理アドレスとの対応関係などを管理する。
For example, the
また、例えば、パッケージグループ間のデータ移動(ページ単位のデータ移動)は、ストレージコントローラ200を介することなく行われても良い。具体的には、例えば、ストレージコントローラ200が、移動元アドレス及び移動先アドレスを、移動元及び/又は移動先に対応したパッケージコントローラ315に通知し、移動元に対応したパッケージコントローラ315と移動先に対応したパッケージコントローラ315との間で、ストレージコントローラ200を介することなく、移動元ページに対応した仮想ブロックに割り当てられている実ブロック内のデータが、移動先ページに対応する仮想ブロックに割り当てられる実ブロックに移動されても良い。
For example, data movement between package groups (data movement in units of pages) may be performed without using the
100:ストレージシステム
100: Storage system
Claims (7)
前記複数のフラッシュパッケージはそれぞれ、データの消去単位である複数の物理ブロックを各々有する複数のフラッシュチップと、前記複数の物理ブロックの各々の消去回数を管理し、前記フラッシュパッケージ内の物理ブロック間の消去回数の偏りを少なくさせる機能を実行する第1デバイスコントローラを含み、
前記複数の第2記憶デバイスはそれぞれ、第2デバイスコントローラを含み、
前記ストレージコントローラは、
それぞれが、前記複数のフラッシュパッケージのうちの一揃えの前記フラッシュパッケージ群から成り、それぞれが該一揃えの前記フラッシュパッケージ群の各々に分割格納されている複数の第1データ領域を含む、複数の第1RAIDグループと、
それぞれが、前記複数の第2記憶デバイスのうちの一揃えの前記第2記憶デバイス群から成り、それぞれが該一揃えの前記第2記憶デバイス群の各々に分割格納されている複数の第2データ領域を含む、複数の第2RAIDグループと、
を構成し、
前記第1データ領域と前記第2データ領域の各々は、複数のデータレコードと該複数のデータレコードから生成されるパリティレコードとを含むレコードセットを少なくとも1つ格納するものであって、
前記ストレージコントローラはまた、
前記複数のフラッシュパッケージの各々から、前記第1デバイスコントローラによって管理されている消去回数に関する第1情報を取得し、
前記複数の第1RAIDグループの中から前記第1情報に基づいて、前記レコードセットの転送元となる少なくとも1つの転送元RAIDグループを選択し、
前記複数の第2RAIDグループの中から、前記レコードセットの転送先となる少なくとも1つの転送先RAIDグループを選択し、
前記転送元RAIDグループから、前記複数の第1データ領域のうちの1つの第1データ領域内の前記レコードセットを、前記転送先RAIDグループ内の前記第2データ領域へと転送する、
ことを特徴とするストレージシステム。 A storage system having a plurality of flash packages , a plurality of second storage devices, and a storage controller,
Each of the plurality of flash packages manages a plurality of flash chips each having a plurality of physical blocks, which are data erasing units, and the number of times each of the plurality of physical blocks is erased, and between the physical blocks in the flash package . Including a first device controller that executes a function of reducing bias in the number of erasures;
Each of the plurality of second storage devices includes a second device controller;
The storage controller
Each made from a Align the flash package group among the plurality of flash packages, each containing a plurality of first data area in which the is divided stored in each flash package group the one alignment, a plurality of A first RAID group;
Each of the plurality of second storage devices is composed of a set of the second storage device groups of the plurality of second storage devices, each of which is divided and stored in each of the set of the second storage device groups. A plurality of second RAID groups including a region;
Configure
Each of the first data area and the second data area stores at least one record set including a plurality of data records and a parity record generated from the plurality of data records,
The storage controller also includes
Obtaining from each of the plurality of flash packages first information on the number of times of erasure managed by the first device controller;
Selecting at least one transfer source RAID group to be a transfer source of the record set based on the first information from the plurality of first RAID groups;
Selecting at least one transfer destination RAID group to be a transfer destination of the record set from the plurality of second RAID groups;
From the transfer source RAID group, one of the record set in the first data area of the plurality of first data area, and transfers to the second data area in the transfer destination RAID group,
A storage system characterized by that.
ホストコンピュータに対し、複数の仮想データ領域を有する仮想ボリュームを提供するよう構成され、
前記複数の第1及び第2データ領域の各々は、前記仮想データ領域に割り当て可能であることを特徴とするストレージシステム。 The storage system according to claim 1, wherein the storage controller is
The host computer is configured to provide a virtual volume having a plurality of virtual data areas,
Each of the plurality of first and second data areas can be allocated to the virtual data area.
前記複数の第1及び第2データ領域についてのデータ書き込み量に関連する第2情報を取得し、
前記転送元RAIDグループの中から前記第2情報に基づいて選択された特定の第1データ領域から、前記転送先RAIDグループの中から選択され且つ前記複数の仮想データ領域のいずれにも割り当てられていない特定の第2データ領域へと前記レコードセットを転送し、
前記特定の第1データ領域が割り当てられていた前記仮想データ領域へのデータ領域の割り当てを、前記特定の第1データ領域から前記特定の第2データ領域へと変更するように構成されていることを特徴とするストレージシステム。 3. The storage system according to claim 2, wherein the storage controller is
Obtaining second information related to a data write amount for the plurality of first and second data areas;
A specific first data area selected from the transfer source RAID group based on the second information is selected from the transfer destination RAID group and assigned to any of the plurality of virtual data areas. Transfer the record set to a specific second data area not
The allocation of the data area to the virtual data area to which the specific first data area has been allocated is configured to change from the specific first data area to the specific second data area. A storage system characterized by
前記転送元RAIDグループのフラッシュパッケージの消去回数は、第1の所定の閾値より多いことを特徴とする
ストレージシステム。 The storage system according to claim 1,
The storage system, wherein the number of erases of the flash package in the transfer source RAID group is greater than a first predetermined threshold.
ホストコンピュータから、特定のパターンを有するデータについて記憶領域に書き込みする要求を受け付け、
前記記憶領域に関係する前記フラッシュパッケージを特定し、
前記特定されたフラッシュパッケージに対して消去要求を送信するよう構成され、
前記特定されたフラッシュパッケージの前記第1デバイスコントローラは、前記消去要求を受け付けると、前記消去要求で指定された複数の物理ブロックを消去することを特徴とする、ストレージシステム。 The storage system according to claim 1, wherein the storage controller is
Accepts a request from the host computer to write data having a specific pattern to the storage area,
Identifying the flash package related to the storage area;
Configured to send an erase request to the identified flash package ;
When the first device controller of the specified flash package receives the erase request, the first device controller erases a plurality of physical blocks specified by the erase request.
一の前記第1デバイスコントローラから前記ストレージコントローラに対して提供される論理ブロック群の合計記憶容量は、前記複数のフラッシュパッケージのうちの1つのフラッシュパッケージが有する全物理ブロックの合計記憶容量よりも大きいことを特徴とするストレージシステム。 The storage system according to claim 1,
The total storage capacity of the logical blocks to be provided to the storage controller one of the foregoing first device controller is greater than the total storage capacity of all the physical blocks one flash package of the plurality of flash package has A storage system characterized by that.
前記ストレージコントローラから書き込み要求を受け付け、
前記書き込み要求で指定された前記論理ブロックに物理ブロックが割り当てられていない場合には、前記指定された論理ブロックに対して前記複数の物理ブロックのうちの1つを割り当てるように構成されていることを特徴とするストレージシステム。
The storage system according to claim 6, wherein the first device controller is
Accepts a write request from the storage controller,
When a physical block is not allocated to the logical block specified by the write request, the physical block is configured to allocate one of the plurality of physical blocks to the specified logical block. A storage system characterized by
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013255864A JP5768118B2 (en) | 2013-12-11 | 2013-12-11 | Storage system having multiple flash packages |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013255864A JP5768118B2 (en) | 2013-12-11 | 2013-12-11 | Storage system having multiple flash packages |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011523489A Division JP5437373B2 (en) | 2009-07-22 | 2009-07-22 | Storage system having multiple flash packages |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015123369A Division JP5945040B2 (en) | 2015-06-19 | 2015-06-19 | Storage system having multiple flash packages |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014112377A JP2014112377A (en) | 2014-06-19 |
JP5768118B2 true JP5768118B2 (en) | 2015-08-26 |
Family
ID=51169435
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013255864A Active JP5768118B2 (en) | 2013-12-11 | 2013-12-11 | Storage system having multiple flash packages |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5768118B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6554990B2 (en) * | 2015-08-11 | 2019-08-07 | 富士通株式会社 | Storage control device and storage control program |
JP6884675B2 (en) | 2017-09-20 | 2021-06-09 | 株式会社東芝 | Video server and broadcasting system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3421581B2 (en) * | 1998-06-29 | 2003-06-30 | 株式会社日立製作所 | Storage device using nonvolatile semiconductor memory |
JP4863749B2 (en) * | 2006-03-29 | 2012-01-25 | 株式会社日立製作所 | Storage device using flash memory, erase number leveling method thereof, and erase number level program |
JP2008015769A (en) * | 2006-07-05 | 2008-01-24 | Hitachi Ltd | Storage system and writing distribution method |
JP4932427B2 (en) * | 2006-10-20 | 2012-05-16 | 株式会社日立製作所 | Storage device and storage method |
JP5014821B2 (en) * | 2007-02-06 | 2012-08-29 | 株式会社日立製作所 | Storage system and control method thereof |
US9134918B2 (en) * | 2009-12-31 | 2015-09-15 | Sandisk Technologies Inc. | Physical compression of data with flat or systematic pattern |
-
2013
- 2013-12-11 JP JP2013255864A patent/JP5768118B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2014112377A (en) | 2014-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5437373B2 (en) | Storage system having multiple flash packages | |
JP5792313B2 (en) | Storage system | |
US10956063B2 (en) | Virtual storage system | |
US8832371B2 (en) | Storage system with multiple flash memory packages and data control method therefor | |
JP5816303B2 (en) | Storage system including flash memory and storage control method | |
WO2018189858A1 (en) | Storage system | |
KR20150105323A (en) | Method and system for data storage | |
WO2015162758A1 (en) | Storage system | |
JP2008015769A (en) | Storage system and writing distribution method | |
JP2015517697A (en) | Storage system and storage control method using storage area based on secondary storage as cache area | |
WO2016056104A1 (en) | Storage device and memory control method | |
JPWO2017081811A1 (en) | Storage device, recording medium, and storage control method | |
JP6805110B2 (en) | Storage system and its control method | |
JP5768118B2 (en) | Storage system having multiple flash packages | |
JP6138318B2 (en) | Storage system having multiple flash packages | |
JP5945040B2 (en) | Storage system having multiple flash packages | |
JP6817340B2 (en) | calculator | |
JP7140807B2 (en) | virtual storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141030 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141202 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150127 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150602 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150622 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5768118 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |