JP5215434B2 - Storage device having a plurality of nonvolatile memories, storage controller, and logical disk generation method - Google Patents
Storage device having a plurality of nonvolatile memories, storage controller, and logical disk generation method Download PDFInfo
- Publication number
- JP5215434B2 JP5215434B2 JP2011111424A JP2011111424A JP5215434B2 JP 5215434 B2 JP5215434 B2 JP 5215434B2 JP 2011111424 A JP2011111424 A JP 2011111424A JP 2011111424 A JP2011111424 A JP 2011111424A JP 5215434 B2 JP5215434 B2 JP 5215434B2
- Authority
- JP
- Japan
- Prior art keywords
- logical disk
- block
- flash memory
- chunk
- memories
- 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
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本発明の実施形態は、複数の不揮発性メモリを備えたストレージ装置、ストレージコントローラ及び論理ディスク生成方法に関する。 Embodiments described herein relate generally to a storage apparatus including a plurality of nonvolatile memories, a storage controller, and a logical disk generation method.
従来から、データの読み出し/書き込みの性能を向上させるため、或いは耐障害性を向上させるために、RAID(Redundant Arrays of Independent Disks)構成のストレージ装置が開発されている。RAIDは複数のHDD(Hard Disk Drive)を用いて構成されるのが一般的である。つまりRAIDは、HDDに最適化した技術である。このため、HDDに代えて、SSD(Solid State Drive)やフラッシュメモリモジュールのような、書き換え可能な不揮発性記憶素子から構成される記憶媒体(以下、不揮発性メモリと称する)をRAIDに適用する場合には工夫が必要となる。 Conventionally, a storage device having a RAID (Redundant Arrays of Independent Disks) configuration has been developed to improve data read / write performance or to improve fault tolerance. The RAID is generally configured using a plurality of HDDs (Hard Disk Drives). That is, RAID is a technology optimized for HDDs. For this reason, instead of the HDD, a storage medium (hereinafter referred to as a nonvolatile memory) composed of a rewritable nonvolatile storage element such as an SSD (Solid State Drive) or a flash memory module is applied to RAID. Ingenuity is required.
例えば、上述の記憶素子のデータ保持力は書き込み回数の増加に伴って低下する。このため、上述の記憶素子の書き込み可能回数は決まっているのが一般的である。もし、書き込み可能回数を超える書き込みが行われるならば、データ保持力の低下のために、記憶素子はデータを正常に保持できなくなる。このような状態に陥ると、データの読み出し/書き込み不良が発生するおそれがある。 For example, the data retention capacity of the memory element described above decreases as the number of writes increases. For this reason, the number of writable times of the above memory element is generally determined. If writing is performed exceeding the number of times that data can be written, the storage element cannot hold data normally due to a decrease in data holding power. If such a state occurs, there is a risk of data read / write failure.
一方、複数のHDDを用いて構成されるRAIDでは、当該複数のHDDへの書き込みの回数は均一化される傾向にあることが知られている。このため、複数のHDDに代えて複数の不揮発性メモリを用いてRAIDを構成する場合、当該複数の不揮発性メモリへの書き込みの回数もほぼ均一化される。つまり、RAIDを構成する全ての不揮発性メモリへの書き込みの回数がほぼ同一となる。このようなRAIDでは、上記全ての不揮発性メモリの書き込み回数が同時に上限を越える可能性が高くなり、当該全ての不揮発性メモリの同時故障の確率が高くなる。 On the other hand, in a RAID configured using a plurality of HDDs, it is known that the number of times of writing to the plurality of HDDs tends to be uniform. For this reason, when a RAID is configured using a plurality of nonvolatile memories instead of a plurality of HDDs, the number of times of writing to the plurality of nonvolatile memories is substantially uniform. That is, the number of times of writing to all the nonvolatile memories constituting the RAID is almost the same. In such a RAID, there is a high possibility that the number of times of writing to all the nonvolatile memories simultaneously exceeds the upper limit, and the probability of simultaneous failure of all the nonvolatile memories is increased.
そこで従来技術では、RAIDを構成する全ての不揮発性メモリのストライプブロック毎に書き込み回数をカウントし、ストライプブロック毎の書き込み回数に基づいて、ストライプグループ内でストライプブロックが入れ替えられる。この入れ替えにより、全ての不揮発性メモリの同時故障の確率を低減できる。 Therefore, in the prior art, the number of times of writing is counted for each stripe block of all the nonvolatile memories constituting the RAID, and the stripe block is replaced in the stripe group based on the number of times of writing for each stripe block. By this replacement, the probability of simultaneous failure of all the nonvolatile memories can be reduced.
上述したように、従来技術では、RAIDを構成する複数の不揮発性メモリの同時故障の確率を低減するために、ストライプブロック毎の書き込み回数に基づいて、ストライプグループ内でストライプブロックが入れ替えられる。つまり、不揮発性メモリ間でデータが移動される。このデータの移動は、ストレージ装置の処理性能の低下を招く。 As described above, in the prior art, in order to reduce the probability of simultaneous failure of a plurality of nonvolatile memories constituting a RAID, stripe blocks are replaced in a stripe group based on the number of writes for each stripe block. That is, data is moved between nonvolatile memories. This data movement causes a decrease in processing performance of the storage apparatus.
本発明が解決しようとする課題は、処理性能を低下させることなく、複数の不揮発性メモリの同時不良の発生を抑制することができる、複数の不揮発性メモリを備えたストレージ装置、ストレージコントローラ及び論理ディスク生成方法を提供することにある。 A problem to be solved by the present invention is to provide a storage device, a storage controller, and a logic including a plurality of nonvolatile memories capable of suppressing the occurrence of simultaneous failures of a plurality of nonvolatile memories without degrading the processing performance. It is to provide a disk generation method.
実施形態によれば、ストレージ装置は、書き込み回数に上限がある複数の書き換え可能な不揮発性メモリと、ホスト計算機からのアクセス要求に基づいて、論理ディスクを構成する前記不揮発性メモリへのアクセスを制御するストレージコントローラとを具備する。前記ストレージコントローラは、メモリプール生成手段と、論理ディスク生成手段とを具備する。前記メモリプール生成手段は、グループ化手段と、ブロック分割手段と、チャンク生成手段とを具備する。前記グループ化手段は、前記複数の不揮発性メモリのうちの第1の数の不揮発性メモリをグループ化して、前記第1の数の不揮発性メモリが順序付けて配置されたメモリプールを生成する。前記ブロック分割手段は、前記第1の数の不揮発性メモリの記憶領域を一定サイズのブロックに分割する。前記チャンク生成手段は、前記第1の数の不揮発性メモリの配置順に従い、前記第1の数の不揮発性メモリのうち、前記第1の数未満である第2の数の不揮発性メモリのそれぞれから順に1つのブロックを選択して組み合わせた第2の数のブロックから構成される複数のチャンクを生成する。前記論理ディスク生成手段は、前記複数のチャンクを組み合わせて割り当てることにより前記論理ディスクを生成する。 According to the embodiment, the storage device, access the nonvolatile memory a plurality of rewritable there is an upper limit to the number of writing, based on the access request from the host computer, to the nonvolatile memory which constitutes a logical disk A storage controller for controlling the storage. Wherein the storage controller comprises a memory pool generation means, and a logical disk generating means. The memory pool generating means includes grouping means, block dividing means, and chunk generating means. The grouping unit groups a first number of nonvolatile memories of the plurality of nonvolatile memories, and generates a memory pool in which the first number of nonvolatile memories are arranged in order. Wherein the block dividing means divides the pre-term memory area of the nonvolatile memory of the first number into blocks of a predetermined size. The chunk generation means is configured to arrange each of the second number of non-volatile memories less than the first number among the first number of non-volatile memories according to the arrangement order of the first number of non-volatile memories. A plurality of chunks composed of a second number of blocks are generated by selecting and combining one block in order . The logical disk generation means generates the logical disk by allocating the plurality of chunks in combination .
以下、実施の形態につき図面を参照して説明する。
図1は実施形態に係るストレージシステムの構成を示すブロック図である。
Hereinafter, embodiments will be described with reference to the drawings.
FIG. 1 is a block diagram illustrating a configuration of a storage system according to the embodiment.
図1に示すストレージシステムは、ホスト計算機100及びストレージ装置200から構成される。ホスト計算機100及びストレージ装置200は、例えば、FC(Fibre Channel)等によりSCSI(Small Computer System Interface)規格に準拠して接続されている。
The storage system shown in FIG. 1 includes a
ホスト計算機100は、設定ツール101及びホストI/F(インターフェイス)102を備えている。設定ツール101は、論理ディスク(つまり論理的なボリューム)の生成等のためにユーザが入力した情報を、ホストI/F102を介してストレージ装置200に伝える。そのため設定ツール101は、例えば論理ディスクのサイズやタイプなどのパラメータをユーザがホスト計算機100の入力装置(図示せず)を用いて入力するためのインターフェイスを備える。ホストI/F102は、ストレージ装置200に実装されたコントローラ(ストレージコントローラ)210と通信する。ホストI/F102は、例えば設定ツール101を用いてユーザによって入力された情報をストレージ装置200のコントローラ210に伝える。コントローラ210は、このユーザによって入力された情報が、論理ディスクのサイズやタイプなどのパラメータである場合、当該パラメータに基づいて論理ディスクを生成する。
The
ホスト計算機100は、ストレージ装置200に構築された論理ディスクに対して読み出し/書き込みが可能である。これはストレージ装置200が生成する論理ディスクをホスト計算機100のオペレーティングシステム(OS)がSCSI規格に準拠したディスクとして検出し、ホスト計算機100で動作するプログラムが当該ディスクに対して読み出し/書き込みできることを指す。
The
ストレージ装置200は、コントローラ210と、複数のフラッシュメモリ、例えば5つのフラッシュメモリ220-0〜220-4とを備えている。コントローラ210はホスト計算機100からの読み出し/書き込み要求に基づいて、対応する論理ディスクを構成するフラッシュメモリ220-i(i=0〜4)に対してデータの読み出し/書き込みを行う。コントローラ210はまた、ホスト計算機100(設定ツール101)からの要求に応じて論理ディスクを生成し、且つ生成された論理ディスクを管理する。
The
フラッシュメモリ220-iは、SSDやフラッシュメモリモジュール(例えばNAND型フラッシュメモリモジュール)のような、書き換え可能な不揮発性記憶素子から構成される記憶媒体(不揮発性記憶媒体)、つまり書き換え可能な不揮発性メモリである。フラッシュメモリ220-iは、書き換え可能な不揮発性半導体記憶素子と当該半導体記憶素子を制御するFW(Firmware)とを含む。このFWは、半導体記憶素子への書き込みの回数を平準化する周知のウェアレベリング処理を行う。また、フラッシュメモリ220-iは、外部インターフェイスを含む。フラッシュメモリ220-iが例えばSSDである場合、外部インターフェイスとしてSAS(Serial Attached SCSI)を適用するのが一般的である。なお、SSDは一例であり、フラッシュメモリ220-iがSSDである必要はない。また、ストレージ装置200が備える記憶媒体(不揮発性メモリ)がフラッシュメモリである必要もなく、書き換えが可能な不揮発性記憶素子から構成される記憶媒体(不揮発性メモリ)であればよい。
The flash memory 220-i is a storage medium (nonvolatile storage medium) composed of a rewritable nonvolatile storage element such as an SSD or a flash memory module (for example, a NAND flash memory module), that is, a rewritable nonvolatile memory. It is memory. The flash memory 220-i includes a rewritable nonvolatile semiconductor memory element and FW (Firmware) that controls the semiconductor memory element. This FW performs a well-known wear leveling process for leveling the number of writes to the semiconductor memory element. The flash memory 220-i includes an external interface. When the flash memory 220-i is, for example, an SSD, a SAS (Serial Attached SCSI) is generally applied as an external interface. Note that the SSD is an example, and the flash memory 220-i does not need to be an SSD. In addition, the storage medium (nonvolatile memory) included in the
ストレージ装置200が備える全てのフラッシュメモリ220-iには、例えば0番からの通し番号(以下、メディア番号と称する)が付与されているものとする。このメディア番号は、フラッシュメモリ220-iがストレージ装置200に初めて実装されたときに、コントローラ210によって付与される。メディア番号は、管理情報の一部として管理情報記憶部230に記憶され、一度番号が付与されると変更できないものとする。また、以降の説明を簡単にするために全てのフラッシュメモリ220-iのサイズ(メモリ容量)は同一であるものとする。
For example, it is assumed that serial numbers from 0 (hereinafter referred to as media numbers) are assigned to all flash memories 220-i included in the
次に、ストレージ装置200のコントローラ210によって生成・管理される、フラッシュメモリプールについて説明する。フラッシュメモリプールは、複数のフラッシュメモリ220-iをグループ化することにより構成される。つまり、フラッシュメモリプールをフラッシュメモリ220-iの集合と見なすこともできる。
Next, a flash memory pool generated and managed by the
図2は、フラッシュメモリプールの構成の一例を示す。
図2の例では、フラッシュメモリプールは、5つのフラッシュメモリ220-0〜220-4の集合を1グループとして備えている。つまり、図2に示すフラッシュメモリプールは、ストレージ装置200が有する全てのフラッシュメモリ220-0〜220-4から構成されている。しかし、フラッシュメモリプールが、フラッシュメモリ220-0〜220-4のうちの3つ以上のフラッシュメモリから構成されていてもよい。フラッシュメモリ220-0〜220-4には、それぞれメディア番号0〜5が付与されている。フラッシュメモリプールには、メディア番号0〜5の順番でフラッシュメモリ220-0〜220-4が配置(論理的に配置)されている。
FIG. 2 shows an example of the configuration of the flash memory pool.
In the example of FIG. 2, the flash memory pool includes a set of five flash memories 220-0 to 220-4 as one group. That is, the flash memory pool shown in FIG. 2 is composed of all the flash memories 220-0 to 220-4 that the
フラッシュメモリプール内の各フラッシュメモリ220-iの記憶領域は一定サイズのブロック(物理ブロック)0,1,2,…に分割して管理される。ブロック0,1,2,…には、それぞれ、ブロック番号0,1,2,…が付与される。
The storage area of each flash memory 220-i in the flash memory pool is divided into blocks (physical blocks) 0, 1, 2,.
ここで、フラッシュメモリプール内で隣接するフラッシュメモリ220-iのブロックをある一定の個数でグループ化した集合をチャンク(chunk)と定義する。フラッシュメモリ220-4及び220-0も互いに隣接しているものとする。図2の例では、チャンクを構成するブロックの数(以下、チャンク数と称する)は4であり、A0,B0,C0,D0,E0,A1…のようにチャンク(チャンク領域)が構成されている。 Here, a set in which a certain number of blocks of adjacent flash memories 220-i in the flash memory pool are grouped is defined as a chunk. The flash memories 220-4 and 220-0 are also adjacent to each other. In the example of FIG. 2, the number of blocks constituting the chunk (hereinafter referred to as the number of chunks) is 4, and chunks (chunk areas) are configured as A0, B0, C0, D0, E0, A1,. Yes.
本実施形態において、チャンク数は、フラッシュメモリプールを構成するフラッシュメモリの数より小さく且つフラッシュメモリの数と互いに素な数であるとする。本実施形態のように、フラッシュメモリプールを構成するフラッシュメモリの数が5の場合、適用可能なチャンク数は、2、3または4のいずれかである。図2に示すフラッシュメモリプールにおいて、チャンクをメディア番号が0のフラッシュメモリ220-0から順に割り当てるものとする。この場合、全フラッシュメモリ220-0〜220-4がチャンク数に一致する数のブロックを消費すると、次のチャンクが再びメディア番号が0のフラッシュメモリ220-0から割り当てられることになる。
In the present embodiment, the number of chunks is assumed to be smaller than the number of flash memories constituting the flash memory pool and relatively prime to the number of flash memories. As in the present embodiment, when the number of flash memories constituting a flash memory pool is 5, the number of applicable chunks is either 2, 3 or 4. In the flash memory pool shown in FIG. 2, chunks are assigned in order from the flash memory 220-0 with the
図2の例ではフラッシュメモリの数がフラッシュメモリ220-0〜220-4の5で、チャンク数が4である。この場合、先頭ブロック0から4ブロック単位でチャンクA0〜E0が割り当てられ、後続の4ブロック単位でチャンクA1〜E1が割り当てられるというように、先頭のフラッシュメモリ220-0の先頭ブロック0から順に4ブロック単位でチャンクが割り当てられる。
In the example of FIG. 2, the number of flash memories is 5 of the flash memories 220-0 to 220-4, and the number of chunks is 4. In this case, chunks A0 to E0 are allocated in units of 4 blocks from the
つまり、フラッシュメモリ220-0,220-1,220-2,220-3のそれぞれブロック0にチャンクA0が割り当てられ、フラッシュメモリ220-4のブロック0及びフラッシュメモリ220-0,220-1,220-2のそれぞれブロック1にチャンクB0が割り当てられる。次に、フラッシュメモリ220-3,220-4のそれぞれブロック1及びフラッシュメモリ220-0,220-1のそれぞれブロック2にチャンクC0が割り当てられ、フラッシュメモリ220-2,220-3,220-4のそれぞれブロック2及びフラッシュメモリ220-0のブロック3にチャンクD0が割り当てられる。次に、フラッシュメモリ220-1,220-2,220-3,220-4のそれぞれブロック3にチャンクE0が割り当てられる。以下、同様に、フラッシュメモリ220-0〜220-4のそれぞれブロック4〜7の合計20ブロックに、4ブロック単位で、チャンクA1〜E1が割り当てられる。
That is, chunk A0 is allocated to block 0 of each of flash memories 220-0, 220-1, 220-2, and 220-3, and block 0 of flash memory 220-4 and flash memories 220-0, 220-1, and 220 are allocated. Chunk B0 is allocated to each
ここで、フラッシュメモリ220-0〜220-4の各々に注目すると、当該フラッシュメモリ220-0〜220-4にそれぞれ割り当てられるチャンクの集合におけるチャンクの組み合わせは、フラッシュメモリ毎に全て異なるという特徴があることが分かる。例えば、フラッシュメモリ220-0に割り当てられるチャンクの集合は(A0,B0,C0,D0,A1…)の組み合わせ、フラッシュメモリ220-1に割り当てられるチャンクの集合は(A0,B0,C0,E0,A1…)の組み合わせ、フラッシュメモリ220-2に割り当てられるチャンクの集合は(A0,B0,D0,E0,A1…)の組み合わせ、というように全てのフラッシュメモリでチャンクの組み合わせが異なる。 Here, when attention is paid to each of the flash memories 220-0 to 220-4, the combination of chunks in the set of chunks respectively allocated to the flash memories 220-0 to 220-4 is different for each flash memory. I understand that there is. For example, the set of chunks assigned to the flash memory 220-0 is a combination of (A0, B0, C0, D0, A1,...), And the set of chunks assigned to the flash memory 220-1 is (A0, B0, C0, E0, The combinations of chunks are different for all flash memories, such as the combination of A1... And the set of chunks assigned to the flash memory 220-2 is a combination of (A0, B0, D0, E0, A1...).
この特徴は、それぞれのチャンクへの書き込み回数が異なれば、全てのフラッシュメモリ220-0〜220-4への書き込み回数が異なる可能性が高いということを表す。本実施形態では、この特徴を利用して論理ディスクが生成(構成)される。本実施形態で適用される論理ディスクは、タイプ1の論理ディスクとタイプ2の論理ディスクとに分類される。
This feature indicates that if the number of times of writing to each chunk is different, the number of times of writing to all the flash memories 220-0 to 220-4 is likely to be different. In this embodiment, a logical disk is generated (configured) using this feature. Logical disks applied in this embodiment are classified into
図3は、タイプ1の論理ディスクの例を2つの論理ディスクについて示す。図3(a)は論理ディスク221aの例を示し、図3(b)は論理ディスク221bの例を示す。
図3(a)に示す論理ディスク221aは、フラッシュメモリプール内のフラッシュメモリ220-0〜220-4のうち、フラッシュメモリ220-0〜220-3のチャンク、つまりチャンクA0,A1,A2…(のブロック)を論理ブロック(論理ディスク221aの論理ブロック)に割り当てることにより構成される。図3(b)に示す論理ディスク221bは、フラッシュメモリプール内のフラッシュメモリ220-0〜220-4のうち、フラッシュメモリ220-4,220-0〜220-2のチャンク、つまりチャンクB0,B1,B2…(のブロック)を論理ブロックに割り当てることにより構成される。
図3(a)に示す論理ディスク221aは、フラッシュメモリプール内のフラッシュメモリ220-0〜220-4のうち、チャンクを構成する先頭のブロックがフラッシュメモリ220-0に存在するブロックであるチャンクだけを割り当てることにより、構成されている。
フラッシュメモリ220-0のブロック番号0に該当するブロックA0と、フラッシュメモリ220-1のブロック番号0に該当するブロックA0と、フラッシュメモリ220-2のブロック番号0に該当するブロックA0と、フラッシュメモリ220-3のブロック番号0に該当するブロックA0との4つのブロックで構成されるチャンクの先頭ブロックは、フラッシュメモリ220-0に存在する。
フラッシュメモリ220-0のブロック番号4に該当するブロックA1と、フラッシュメモリ220-1のブロック番号4に該当するブロックA1と、フラッシュメモリ220-2のブロック番号4に該当するブロックA1と、フラッシュメモリ220-3のブロック番号4に該当するブロックA1との4つのブロックで構成されるチャンクの先頭ブロックは、フラッシュメモリ220-0に存在する。
同様に、詳細な説明は省略するが、図3(b)に示す論理ディスク221bは、フラッシュメモリ220-4に存在するブロックが先頭ブロックとなっているチャンクだけを割り当てることにより、構成されている。
FIG. 3 shows an example of a
The
The
Block A0 corresponding to block
A block A1 corresponding to block
Similarly, although detailed description is omitted, the
このように、タイプ1の論理ディスクは、フラッシュメモリプール内のフラッシュメモリ220-0〜220-4のうち、チャンク数に一致する数の予め定められたフラッシュメモリのチャンクを割り当てることによって構成される。このタイプ1の論理ディスクは、同一論理ディスクの記憶領域内で書き込み回数の偏りが少ないが、論理ディスク毎に書き込み回数が異なる場合に、各フラッシュメモリに書き込みを分散させることができる、つまり各フラッシュメモリの書き込み回数が均一化するのを抑制できるという特徴がある。このタイプ1の論理ディスクは、論理ディスク毎に用途が異なるようなシステムへの適用が想定される。例えば、データベース用、バックアップ用、或いはファイルサーバ用等の論理ディスクを混在させる場合のように、各論理ディスクの書き込み回数が異なることが想定される場合に効果が高い。
As described above, the
図4は、タイプ2の論理ディスクの例を2つの論理ディスクについて示す。図4(a)は論理ディスク222aの例を示し、図4(b)は論理ディスク222bの例を示す。
図4(a)に示す論理ディスク222aは、フラッシュメモリプール内の全てのフラッシュメモリ220-0〜220-4に均等にまたがるように、チャンクA0,B1,C2…(のブロック)を論理ブロック(論理ディスク222aの論理ブロック)に割り当てることにより構成される。図4(b)に示す論理ディスク222bは、フラッシュメモリプール内の全てのフラッシュメモリ220-0〜220-4に均等にまたがるように、つまりチャンクB0,C1,D2…(のブロック)を論理ブロックに割り当てることにより構成される。
図4(a)に示す論理ディスク222aに対して初めに割り当てられているチャンクは、次のように構成されている。この初めに割り当てられているチャンクは、先頭ブロックとしてのフラッシュメモリ220-0のブロック番号0に該当するブロックA0と、フラッシュメモリ220-1のブロック番号0に該当するブロックA0と、フラッシュメモリ220-2のブロック番号0に該当するブロックA0と、最後のブロックとしてのフラッシュメモリ220-3のブロック番号0に該当するブロックA0とから構成されている。
2番目に割り当てられているチャンクは、次のように構成されている。2番目に割り当てられているチャンクは、初めに割り当てられたチャンクの最後のブロックA0が存在するフラッシュメモリ220-3の次のフラッシュメモリ220-4に存在するブロックが先頭ブロックとして構成されているチャンクが割り当てられている。
この2番目に割り当てられているチャンクの先頭ブロックとしては、フラッシュメモリ220-4のブロック番号4に該当するブロックB1と、フラッシュメモリ220-0のブロック番号5に該当するブロックB1と、フラッシュメモリ220-1のブロック番号5に該当するブロックB1と、最後のブロックとしてのフラッシュメモリ220-2のブロック番号5に該当するブロックB1とから構成されている。
同様に、3番目に割り当てられているチャンクは、2番目に割り当てられたチャンクの最後のブロックB1が存在するフラッシュメモリ220-2の次のフラッシュメモリ220-3に存在するブロックが先頭ブロックとして構成されているチャンクが割り当てられている。つまり、3番目に割り当てられているチャンクの先頭ブロックC2は、図2において図示が省略されているがフラッシュメモリ220-3のブロック番号9に存在する
図4(b)に示す論理ディスク222bでは、フラッシュメモリ220-4のブロック番号0に該当するブロックB0が先頭ブロックとして構成されているチャンクが初めに割り当てられている。
2番目に割り当てられているチャンクは、初めに割り当てられたチャンクの最後のブロックB0が存在するフラッシュメモリ220-2の次のフラッシュメモリ220-3に存在するブロック番号5に該当するブロックC1が先頭ブロックとして構成されている。
同様に、図2において図示が省略されているが、3番目に割り当てられているチャンクは、2番目に割り当てられたチャンクの最後のブロックC1が存在するフラッシュメモリ220-1の次のフラッシュメモリ220-2に存在するブロック番号10に該当するブロックD2が先頭ブロックとして構成されている。
FIG. 4 shows an example of a
The
The chunks initially allocated to the
The second allocated chunk is configured as follows. The second allocated chunk is a chunk in which the block existing in the flash memory 220-4 next to the flash memory 220-3 in which the last block A0 of the first allocated chunk exists is configured as the first block. Is assigned.
As the first block of the second allocated chunk, block B1 corresponding to block
Similarly, the third allocated chunk is configured such that the block existing in the flash memory 220-3 next to the flash memory 220-2 in which the last block B1 of the second allocated chunk exists is the first block. Assigned chunks are assigned. In other words, the first block C2 of the third allocated chunk exists in
In the logical disk 222b shown in FIG. 4B, the chunk in which the block B0 corresponding to the
The second allocated chunk is the block C1 corresponding to the
Similarly, although not shown in FIG. 2, the third allocated chunk is the flash memory 220 next to the flash memory 220-1 in which the last block C1 of the second allocated chunk exists. The block D2 corresponding to the block number 10 existing in -2 is configured as the head block.
このように、タイプ2の論理ディスクは、フラッシュメモリプール内の全フラッシュメモリ220-0〜220-4にまたがってチャンクを割り当てることによって構成される。このタイプ2の論理ディスクは、各論理ディスクの書き込み回数は殆ど同じであるが、同一論理ディスクの記憶領域内で書き込み回数の偏りがある場合に、各フラッシュメモリに書き込みを分散させることができる、つまり各フラッシュメモリの書き込み回数が均一化するのを抑制できるという特徴がある。このタイプ2の論理ディスクは、例えば、ランダムアクセスが多くデータ書き込みが局所化しているようなデータベースに適用される論理ディスクを複数生成する場合に効果が高い。
As described above, the
以上、各フラッシュメモリの書き込み回数が均一化するのを抑制するための論理ディスクの構成について説明した。 The configuration of the logical disk for suppressing the number of writes in each flash memory from being uniformed has been described above.
次に、図1に示されるストレージ装置200のコントローラ210の構成について説明する。
図5は、ストレージ装置200の主としてコントローラ210の構成を示すブロック図である。コントローラ210は、ホストI/F処理部211、コマンド処理部212、I/O処理部213、アドレス処理部214、フラッシュメモリI/F処理部215、ディスク管理部216、初期化処理部217及び管理情報記憶部230を備えている。
Next, the configuration of the
FIG. 5 is a block diagram mainly showing the configuration of the
ホストI/F処理部211は、ホスト計算機100のホストI/F102と通信するためのインターフェイスである。本実施形態では、このインターフェイスとしてSCSIインターフェイスを想定している。
The host I / F processing unit 211 is an interface for communicating with the host I /
コマンド処理部212は、ホスト計算機100のホストI/F102によって転送されるコマンをホストI/F処理部211を介して受信する。本実施形態において、このコマンドはSCSIコマンドである。SCSI規格では、SCSIコマンドを用いてホスト計算機とストレージ装置間でデータ転送が行われる。SCSIコマンドはI/O系のSCSIコマンド(I/O系コマンド)と制御系のSCSIコマンド(制御系コマンド)に分類される。
The command processing unit 212 receives a command transferred by the host I /
I/O系コマンドは、ホスト計算機上で動作するプログラムがストレージ装置の論理ディスクに対して読み出し/書き込みを要求した場合に、ホスト計算機のオペレーティングシステムによって当該読み出し/書き込み要求から変換されてストレージ装置に発行されるSCSIコマンドである。制御系コマンドは、ストレージ装置に関する情報を取得し、或いはストレージ装置に当該ストレージ装置に関する情報を設定するためのSCSIコマンドである。ストレージ装置ベンダーは当該ストレージ装置ベンダー固有のSCSI拡張コマンドを定義することができる。そこでホスト計算機100上で動作する設定ツール101は、ユーザが入力した情報(パラメータ)に応じてSCSI拡張コマンドを生成し、当該生成したSCSI拡張コマンドをコントローラ210に発行することで、ストレージ装置200に対する情報の参照或いは情報の設定を行う。
The I / O command is converted from the read / write request by the host computer's operating system when a program operating on the host computer requests the logical disk of the storage device to read / write, and is transferred to the storage device. This is a SCSI command to be issued. The control command is a SCSI command for acquiring information related to the storage device or setting information related to the storage device in the storage device. The storage device vendor can define a SCSI expansion command unique to the storage device vendor. Therefore, the setting tool 101 operating on the
コマンド処理部212は受信したSCSIコマンドがI/O系コマンドであるか、或いは制御系コマンドであるかを判別する。I/O系コマンドの場合、コマンド処理部212は受信したSCSIコマンドをI/O処理部213に渡す。I/O処理部213は、アドレス処理部214を用いて論理ディスクに対する読み出し/書き込み処理を行う。一方、制御系コマンドの場合、コマンド処理部212は受信したSCSIコマンドをディスク管理部216または初期化処理部217に渡してユーザの要求に応じた処理を行わせる。
The command processing unit 212 determines whether the received SCSI command is an I / O command or a control command. In the case of an I / O command, the command processing unit 212 passes the received SCSI command to the I /
管理情報記憶部230は不揮発記憶領域を備えており、当該不揮発性記憶領域に各種の管理情報を格納する。本実施形態において管理情報記憶部230は、フラッシュメモリプールテーブル231(図8参照)とブロック割り当てテーブル232(図9参照)を含むブロック割り当てテーブル群とを、管理情報として格納する。管理情報記憶部230はまた、生成された論理ディスクの数に対応するマッピングテーブル群、例えばマッピングテーブル233(図10参照)を含むマッピングテーブル群を管理情報として格納する。
The management
ディスク管理部216は、論理ディスクの生成、生成された論理ディスクの管理など、ユーザの要求に応じた処理を、管理情報記憶部230を用いて行う。そのためディスク管理部216は、管理情報記憶部230に対する情報の参照及び情報の書き換えが可能なように構成されている。より詳細に述べるならば、ディスク管理部216は、論理ディスクの生成のために、フラッシュメモリプールテーブルの参照、ブロック割り当てテーブルの更新、マッピングテーブルの生成等を行う。初期化処理部217は、フラッシュメモリプールテーブルの生成、及びブロック割り当てテーブルの生成等の初期化処理を行う。
The
図6はディスク管理部216の構成を示すブロック図である。
ディスク管理部216は、論理ディスク生成部2160を含む。論理ディスク生成部2160は、論理ディスクの生成のために、フラッシュメモリプールからチャンク(チャンク領域)の群を選択する。論理ディスク生成部2160は、選択されたチャンク領域の群を結合することにより、選択されたチャンク領域の群から構成される論理ディスクを生成する。この論理ディスクの生成は、後述するように、当該論理ディスクに対応するマッピングテーブルを生成することにより実現される。
FIG. 6 is a block diagram showing the configuration of the
The
図7は初期化処理部217の構成を示すブロック図である。
初期化処理部217は、フラッシュメモリプールを生成するためのフラッシュメモリプール生成部2170を含む。フラッシュメモリプール生成部2170は、グループ化部2171、ブロック分割部2172、チャンク生成部2173及び論理ディスクタイプ設定部2174から構成される。初期化処理部217は更に、ブロック割り当てテーブルを生成するためのブロック割り当てテーブル生成部2175を含む。
FIG. 7 is a block diagram showing the configuration of the
The
グループ化部2171は、複数のフラッシュメモリをグループ化することにより。当該グループ化されたフラッシュメモリの集合からなるフラッシュメモリプールを生成する。ブロック分割部2172は、グループ化されたフラッシュメモリの各々の記憶領域を一定サイズのブロックに分割する。
The
チャンク生成部2173は、グループ化されたフラッシュメモリの集合に基づき、グループ化されたフラッシュメモリの個数未満のブロックであって且つ異なるフラッシュメモリのブロックを結合することによってチャンク(チャンク領域)を生成する。論理ディスクタイプ設定部2174は、フラッシュメモリプールを用いて生成することが可能な論理ディスクのタイプを設定する。
The
次に、本実施形態で適用される論理ディスクを生成するための処理について説明する。本実施形態において論理ディスクを生成するためには、論理ディスク生成処理300(図13参照)に加えて、論理ディスクの生成に用いられるフラッシュメモリの集合から構成されるフラッシュメモリプールを生成するための初期化処理120(図12参照)が必要となる。 Next, processing for generating a logical disk applied in this embodiment will be described. In order to generate a logical disk in the present embodiment, in addition to the logical disk generation process 300 (see FIG. 13), a flash memory pool configured by a set of flash memories used for logical disk generation is generated. Initialization processing 120 (see FIG. 12) is required.
まず、初期化処理120について説明する。
ユーザは、ホスト計算機100の設定ツール101を用いて、フラッシュメモリプールを生成するための入力操作を行う。フラッシュメモリプールの生成のためにユーザが最低限入力する必要があるパラメータは、フラッシュメモリプールのサイズとフラッシュメモリ群から生成される論理ディスクのタイプである。論理ディスクのタイプは、2つのタイプ(タイプ1またはタイプ2)の中からユーザによって選択される。設定ツール101は、ユーザによる上記サイズ及びタイプの入力操作に従い、フラッシュメモリプールの生成を要求するための第1のSCSI拡張コマンド(制御系コマンド)を生成する。第1のSCSI拡張コマンドは、ユーザが入力したパラメータ、つまりサイズ(フラッシュメモリプールサイズ)及びタイプ(論理ディスクタイプ)を含む。設定ツール101は、第1のSCSI拡張コマンドを、ホストI/F102を介してストレージ装置200のコントローラ210に転送することで、当該コントローラ210に対してフラッシュメモリプールの生成を要求する。
First, the initialization process 120 will be described.
The user uses the setting tool 101 of the
コントローラ210に転送された第1のSCSI拡張コマンドは、ホストI/F処理部211を介してコマンド処理部212で受信される。コマンド処理部212は、第1のSCSI拡張コマンド(つまりフラッシュメモリプールの生成を要求するSCSI拡張コマンド)を受信した場合、当該第1のSCSI拡張コマンドを初期化処理部217に渡す。すると初期化処理部217は、図12のフローチャートに従って、フラッシュメモリプールの生成を含む初期化処理120を実行する。
The first SCSI extended command transferred to the
以下、初期化処理120の手順について、図12のフローチャートを参照して説明する。
初期化処理120において、初期化処理部217のフラッシュメモリプール生成部2170は、第1のSCSI拡張コマンドに含まれているパラメータ(フラッシュメモリプールサイズ及び論理ディスクタイプ)とコントローラ210に接続されているフラッシュメモリ(ここではフラッシュメモリ220-0〜220-4)に関する情報とに基づき、図8に示すフラッシュメモリプールテーブル231を生成する。
Hereinafter, the procedure of the initialization process 120 will be described with reference to the flowchart of FIG.
In the initialization processing 120, the flash memory
フラッシュメモリプールテーブル231は、フラッシュメモリプールを管理するためのフラッシュメモリプール管理情報を保持する。このフラッシュメモリプール管理情報は、図8に示すように、開始メディア番号、メディア数、ブロックサイズ、チャンク数及び論理ディスクタイプから構成される。 The flash memory pool table 231 holds flash memory pool management information for managing the flash memory pool. As shown in FIG. 8, the flash memory pool management information includes a start media number, a media number, a block size, a chunk number, and a logical disk type.
フラッシュメモリプール生成部2170は、フラッシュメモリプールテーブル231を次のように生成する。まずフラッシュメモリプール生成部2170のグループ化部2171は、コントローラ210に接続されているフラッシュメモリを検索する(ステップ121)。ここでは、5つのフラッシュメモリ220-0〜220-4が検索される。
The flash memory
グループ化部2171はまた、管理情報記憶部230からブロック割り当てテーブル(検索されたフラッシュメモリ220-0〜220-4にそれぞれ対応するブロック割り当てテーブル)を検索する(ステップ122)。本実施形態において、図9に示すブロック割り当てテーブル232のようなブロック割り当てテーブルは、フラッシュメモリプールに所属する全てのフラッシュメモリにそれぞれ対応付けて生成されて、管理情報記憶部230に格納される。フラッシュメモリプールに所属しないフラッシュメモリ対応するブロック割り当てテーブルは存在しない。
The
図9に示すブロック割り当てテーブル232は、対応するフラッシュメモリのブロック(物理ブロック)毎に、当該ブロックが論理ディスクのブロック(論理ブロック)に割り当てられているか、つまり使用されているか、或いは割り当てられていないか、つまり使用されていないかを示す情報を保持する。本実施形態において、この情報はフラグであり、“0”で対応するブロックが使用されていないことを、“1”で対応するブロックが使用されていることを示す。 In the block allocation table 232 shown in FIG. 9, for each corresponding flash memory block (physical block), the block is allocated to a logical disk block (logical block), that is, is used or allocated. It holds information indicating whether it is not used, that is, not used. In this embodiment, this information is a flag, and “0” indicates that the corresponding block is not used, and “1” indicates that the corresponding block is used.
本実施形態では、グループ化部2171がブロック割り当てテーブルを検索した時点では、管理情報記憶部230にブロック割り当てテーブルはひとつも格納されていないものとする。グループ化部2171は、ブロック割り当てテーブル検索の結果に基づき、対応するブロック割り当てテーブルが存在しないフラッシュメモリのメディア番号のうち、最も小さいメディア番号を、図8に示すフラッシュメモリプールテーブル231に開始メディア番号として登録する(ステップ123)。ここでは、フラッシュメモリ220-0〜220-4のメディア番号0〜4のうちのメディア番号0が、図8に示すように開始メディア番号として登録される。
In this embodiment, it is assumed that no block allocation table is stored in the management
次にグループ化部2171は、フラッシュメモリサイズと第1のSCSI拡張コマンドに含まれているフラッシュメモリプールサイズとに基づき、フラッシュメモリプールを構成するのに必要なフラッシュメモリの数を求め、この数をフラッシュメモリプールテーブル231にメディア数として登録する(ステップ124)。このメディア数は、フラッシュメモリプールサイズをフラッシュメモリサイズで除することにより求められる。ここでは図8に示すように、メディア数として5が登録されたものとする。この場合、コントローラ210に接続されている全てのフラッシュメモリ220-0〜220-4がフラッシュメモリプールを構成することになる。つまりグループ化部2171は、フラッシュメモリ220-0〜220-4をグループ化し、当該グループ化されたフラッシュメモリ220-0〜220-4によりフラッシュメモリプールを構成する。
Next, the
すると、フラッシュメモリプール生成部2170のブロック分割部2172が起動される。ブロック分割部2172は、フラッシュメモリプールテーブル231に、ブロックサイズとして、デフォルトの値、例えば1MB(メガバイト)を登録する(ステップ125)。このブロックサイズの登録により、ブロック分割部2172は等価的に、グループ化部2171によってグループ化されたフラッシュメモリの各々の記憶領域を当該ブロックサイズのブロックに分割したことになる。なお、ブロックサイズの登録のために、設定ツール101のオプションとしてユーザが別の値を指定することも可能とする。
Then, the
次にフラッシュメモリプール生成部2170のチャンク生成部2173が起動される。チャンク生成部2173は、グループ化部2171によってステップ124で求められたメディア数より小さな数で且つ当該メディア数と互いに素な数を求め、この数をフラッシュメモリプールテーブル231にチャンク数として登録する(ステップ126)。このような条件を満たす数(チャンク数)を取得するためには、メディア数が3以上であればよい。つまりフラッシュメモリプールを構成するフラッシュメモリの数が3以上であればよい。
Next, the
チャンク数の登録により、チャンク生成部2173は等価的に、チャンク数に一致するブロックであって且つ異なるフラッシュメモリのブロックを結合することによってチャンク(チャンク領域)を生成したことになる。チャンク数は、上述の説明から明らかなように、メディア数(グループ化されたフラッシュメモリの個数)未満の数であり、より詳細には、メディア数より小さな数で且つ当該メディア数と互いに素な数である。
By registering the number of chunks, the
チャンク数として複数の候補がある場合、初期化処理部217は、例えば最大の数を選択する。本実施形態のようにメディア数が5の場合、2、3または4が候補となるので、最大値4が選択される。なお、複数の候補のうちの最大の数以外(例えば中間の数)が選択される構成であっても構わない。また、設定ツール101のオプションとして複数の候補からユーザにチャンク数を選択させることも可能である。
When there are a plurality of candidates as the number of chunks, the
次にグループ化部2171の論理ディスクタイプ設定部2174が起動される。論理ディスクタイプ設定部2174は、第1のSCSI拡張コマンドに含まれている論理ディスクタイプを、フラッシュメモリプールテーブル231に登録する(ステップ127)。次に初期化処理部217のブロック割り当てテーブル生成部2175が起動される。ブロック割り当てテーブル生成部2175は、フラッシュメモリプールテーブル231によって示されるフラッシュメモリプールに所属するフラッシュメモリ(ここではフラッシュメモリ220-0〜220-4)にそれぞれ対応付けられるブロック割り当てテーブル(初期ブロック割り当てテーブル)を生成する(ステップ128)。このブロック割り当てテーブルのエントリ数は、対応するフラッシュメモリのブロック数に一致し、各エントリには、対応するブロックが未使用であることを示すフラグ(0)が登録される。
Next, the logical disk
フラッシュメモリプール生成部2170及びブロック割り当てテーブル生成部2175は、それぞれ、生成されたフラッシュメモリプールテーブル231及びブロック割り当てテーブルの群を管理情報記憶部230に格納する(ステップ129)。これにより、論理ディスク生成のための初期化処理120は終了し、フラッシュメモリプールテーブル231によって示されるフラッシュメモリプールが生成されたことになる。なお、コントローラ210に接続されるフラッシュメモリの数が本実施形態と異なって5を超えている場合、例えば8の場合、フラッシュメモリ220-0〜220-4から構成されるフラッシュメモリプール以外に、残りの3つのフラッシュメモリから構成されるフラッシュメモリプールを生成することも可能である。
The flash memory
フラッシュメモリテーブルが生成されると、ユーザは当該フラッシュメモリテーブルによって示されるフラッシュメモリプールから領域を切り出して論理ディスクを生成することを、設定ツール101を操作することによってコントローラ210に要求することができる。具体的には、ユーザは設定ツール101を操作することによって、生成されるべき論理ディスクのサイズと、論理ディスクの生成の要求とを入力する。また、フラッシュメモリプールが複数存在する場合、ユーザは、例えば生成されるべき論理ディスクのサイズを入力する前に、論理ディスク生成の対象となるフラッシュメモリプールを選択する。
When the flash memory table is generated, the user can request the
設定ツール101は、上述したユーザの入力操作に従い、論理ディスクの生成を要求するための第2のSCSI拡張コマンド(制御系コマンド)を生成する。第2のSCSI拡張コマンドは、ユーザが入力した論理ディスクのサイズ、更にはユーザが選択したフラッシュメモリプールを示すパラメータを含む。設定ツール101は、第2のSCSI拡張コマンドを、ホストI/F102を介してストレージ装置200のコントローラ210に転送することで、当該コントローラ210に対して論理ディスクの生成を要求する。
The setting tool 101 generates a second SCSI extended command (control command) for requesting generation of a logical disk in accordance with the above-described user input operation. The second SCSI expansion command includes a parameter indicating the size of the logical disk input by the user and the flash memory pool selected by the user. The setting tool 101 requests the
コントローラ210に転送された第2のSCSI拡張コマンドは、ホストI/F処理部211を介してコマンド処理部212で受信される。コマンド処理部212は、第2のSCSI拡張コマンド(つまり論理ディスクの生成を要求するSCSI拡張コマンド)を受信した場合、当該第2のSCSI拡張コマンドをディスク管理部216に渡す。するとディスク管理部216の論理ディスク生成部2160は、図13のフローチャートに従って、第2のSCSI拡張コマンドによって要求された論理ディスクを生成するための論理ディスク生成処理300を実行する。
The second SCSI extended command transferred to the
以下、論理ディスク生成処理300の手順について、図13のフローチャートを参照して説明する。
まず論理ディスク生成部2160は、第2のSCSI拡張コマンドに基づき、生成すべき論理ディスク及び対象となるフラッシュメモリプール(対象フラッシュメモリプール)に関する情報を取得する(ステップ310)。ステップ310において論理ディスク生成部2160は、取得した情報に基づいて、変数SIZE、CHUNK、BLK_SIZE及びN_MEDIAの値を設定する。
Hereinafter, the procedure of the logical disk generation process 300 will be described with reference to the flowchart of FIG.
First, the logical
具体的には、論理ディスク生成部2160は、生成すべき論理ディスクに関する情報として、当該論理ディスクのサイズを、第2のSCSI拡張コマンドから取得する。論理ディスク生成部2160は、取得した論理ディスクのサイズを変数SIZEとして設定する。また論理ディスク生成部2160は、対象フラッシュメモリプールに関する情報(管理情報)を、第2のSCSI拡張コマンドに含まれているフラッシュメモリプールを示すパラメータに基づいて、管理情報記憶部230に格納されている対応するフラッシュメモリプールテーブルを参照することにより取得する。ここでは、フラッシュメモリプールテーブル231が参照されたものとする。この場合、論理ディスク生成部2160は、フラッシュメモリプールテーブル231から、対象フラッシュメモリプールに関する情報として、当該フラッシュメモリプールのチャンク数、ブロックサイズ及びメディア数(図8参照)を取得する。論理ディスク生成部2160は、取得したチャンク数、ブロックサイズ及びメディア数を、それぞれ変数CHUNK、BLK_SIZE及びN_MEDIAとして設定する。
Specifically, the logical
次に論理ディスク生成部2160は、対象フラッシュメモリプールに所属する全てのフラッシュメモリ(メディア)にそれぞれ対応するブロック割り当てテーブルを参照することにより、未使用ブロックのブロック番号のうちの最小のブロック番号(最小未使用ブロック番号)と、当該最小のブロック番号のブロックを含むフラッシュメモリのメディア番号とを取得する(ステップ320)。具体的には、論理ディスク生成部2160は上記対応するブロック割り当てテーブル毎に、未使用ブロックのブロック番号のうちの最小のブロック番号を取得し、それらの最小のブロック番号の中で最も小さなブロック番号を目的のブロック番号とする。もし、該当する未使用ブロックが複数ある場合、論理ディスク生成部2160は、該当する未使用ブロックを含む同数のフラッシュメモリのうち、最もメディア番号の小さなフラッシュメモリの当該メディア番号を目的のメディア番号とする。
Next, the logical
ステップ320において論理ディスク生成部2160は、取得したメディア番号及びブロック番号を、それぞれ最初のメディア番号を表す変数NM_FIRST及び最初のブロック番号を表す変数NB_FIRSTとして設定する。論理ディスク生成部2160はまた、変数NM_FIRST及びNB_FIRSTを、それぞれメディア番号を表す変数NM及びブロック番号を表す変数NBとして設定する。
In
次に論理ディスク生成部2160は、フラッシュメモリプールテーブル231に保持されている論理ディスクタイプを判別する(ステップ330)。もし、論理ディスクタイプがタイプ1であるならば、論理ディスク生成部2160は、当該タイプ1の論理ディスクに対応するマッピングテーブルを生成するための論理ディスク(タイプ1)マッピングテーブル生成処理を行う(ステップ340)。これに対し、論理ディスクタイプがタイプ2であるならば、論理ディスク生成部2160は、当該タイプ2の論理ディスクに対応するマッピングテーブルを生成するための論理ディスク(タイプ2)マッピングテーブル生成処理を行う(ステップ340)。
Next, the logical
マッピングテーブルは、対応する論理ディスクの構成を管理(定義)するためのテーブルである。そのためマッピングテーブルは、対応する論理ディスクのそれぞれの論理アドレスのデータ領域(論理ブロック)に、いずれのフラッシュメモリ(メディア)のいずれのブロックがマッピングされているかを登録したエントリ群を有する。図10は、図3(a)に示されるタイプ1の論理ディスク221aに対応するマッピングテーブル233の例を示し、図11は、図4(a)に示されるタイプ2の論理ディスク222aに対応するマッピングテーブル234の例を示す。マッピングテーブル233及び234の各エントリは、論理アドレス、メディア番号及びブロック番号がそれぞれ登録されるフィールドを有する。
The mapping table is a table for managing (defining) the configuration of the corresponding logical disk. Therefore, the mapping table has an entry group in which which block of which flash memory (media) is mapped to the data area (logical block) of each logical address of the corresponding logical disk. FIG. 10 shows an example of the mapping table 233 corresponding to the
次に、論理ディスク生成部2160によって実行される論理ディスク(タイプ1)マッピングテーブル生成処理(ステップ340)の詳細な手順について、図14のフローチャートを参照して説明する。
Next, a detailed procedure of the logical disk (type 1) mapping table generation process (step 340) executed by the logical
まず論理ディスク生成部2160は、論理アドレスを示す変数ADDRを0(より詳細には00000000H)に、ブロック数(より詳細にはブロック数のカウント値)を示す変数COUNTを0に、それぞれ初期設定する(ステップ3401)。末尾のHは、周知のように16進表現であることを示す。このステップ3401において、ADDR=0(00000000H)は、マッピングテーブルの先頭エントリの論理アドレスフィールドに登録される。次に論理ディスク生成部2160は、所定のループA(ステップ3402)を、終了条件が成立するまで繰り返す。この終了条件は、ADDR≧SIZEを満足することである。
First, the logical
論理ディスク生成部2160はループAにおいて、まず、ADDR(=0)が登録されたマッピングテーブルのエントリ(ADDRエントリ)のメディア番号フィールド及びブロック番号フィールドに、それぞれNM及びNBを登録する(ステップ3403)。ステップ3403において論理ディスク生成部2160は更に、メディア番号がNMのフラッシュメモリに対応するブロック割り当てテーブル232のブロック番号がNBのエントリに“1”(“1”のフラグ)を登録する。
In the loop A, the logical
次に論理ディスク生成部2160は、COUNTがCHUNK未満であるかを判定する(ステップ3404)。もし、COUNTがCHUNK未満であるならば(ステップ3404のYes)、つまりカウントしたブロック数がチャンク数未満であるならば、論理ディスク生成部2160は、1つのチャンク(チャンク領域)についての処理(論理ディスクの対応する領域への割り当て)が終了していないものと判断する。この場合、論理ディスク生成部2160は、現在処理中のチャンクにおける次のブロックについての処理(対応する論理ブロックへの割り当て)のためにCOUNTを1インクリメントする(ステップ3405)。
Next, the logical
これに対し、COUNTがCHUNK未満でないならば(ステップ3404のNo)、つまりカウントしたブロック数がチャンク数未満でないならば、論理ディスク生成部2160は、1つのチャンクについての処理が終了したものと判断する。この場合、論理ディスク生成部2160は、次のチャンク(チャンク領域)の先頭のブロックについての処理のために、NMをNM_FIRSTに、NBをNB+CHUNKに、そしてCOUNTを0に、それぞれ更新する(ステップ3406)。
On the other hand, if COUNT is not less than CHUNK (No in step 3404), that is, if the counted number of blocks is not less than the number of chunks, the logical
ここで、NM_FIRSTが0、CHUNKが4、対象フラッシュメモリプールがフラッシュメモリ220-0〜220-4から構成される図2に示すフラッシュメモリプールであるものとする。この場合、上述のように1つのチャンクについての処理が終了する毎に、NMをNM_FIRSTに戻すことにより(ステップ3406)、論理ディスク生成部2160は、フラッシュメモリ220-0〜220-4のうちのCHUNKに一致する数のフラッシュメモリ220-0〜220-3のチャンクを割り当てることになる。
Here, it is assumed that NM_FIRST is 0, CHUNK is 4, and the target flash memory pool is the flash memory pool shown in FIG. 2 composed of flash memories 220-0 to 220-4. In this case, each time processing for one chunk is completed as described above, the logical
論理ディスク生成部2160はステップ3405または3406のいずれかを実行すると、NM+1がN_MEDIA+NM_FIRSTに一致するかを判定する(ステップ3407)。N_MEDIA+NM_FIRSTは、対応するフラッシュメモリプールを構成するフラッシュメモリ群のメモリ番号のうちの最大メモリ番号+1を示す。最大メモリ番号+1のフラッシュメモリは、対応するフラッシュメモリプールに存在しない。したがって、NM+1がN_MEDIA+NM_FIRSTに一致する場合、NMの次のメディア番号をNM_FIRST(最小メディア番号)とする必要がある。一方、NM+1がN_MEDIA+NM_FIRSTに一致しない場合、NMの次のメディア番号はNM+1となる。
When executing either
そこで、NM+1がN_MEDIAに一致しないならば(ステップ3407のNo)、論理ディスク生成部2160はNMを1インクリメントする(ステップ3408)。このインクリメント後のNMは、次に処理されるべきブロック(ブロック番号がNBのブロック)が存在するフラッシュメモリのメディア番号を示す。これに対し、NM+1がN_MEDIAに一致するならば(ステップ3407のYes)、論理ディスク生成部2160はNMをNM_FIRSTに戻す(ステップ3409)。このNM_FIRSTに戻された後のNMは、次に処理されるべきブロック(ブロック番号がNBのブロック)が存在するフラッシュメモリのメディア番号を示す。
Therefore, if NM + 1 does not match N_MEDIA (No in step 3407), the logical
論理ディスク生成部2160はステップ3408または3409のいずれかを実行すると、ADDRをBLK_SIZEだけインクリメントする(ステップ3410)。このとき、ADDR=00000000H、BLK_SIZE=1MB(=00100000H)であるとするならば、ADDRは00000000Hから00100000Hに更新される。このステップ3410において、ADDR=00100000Hは、マッピングテーブルの次のエントリ(ここでは2番目のエントリ)の論理アドレスフィールドに登録される。これにより、1回のループAが完了し、1つのチャンク(チャンク領域)を構成する、チャンク数(=CHUNK)に一致する数のブロックのうち、COUNT番目のブロックの対応する論理ブロックへの割り当てが完了する。このとき、COUNT<CHUNKでなければ(ステップ3404のNo)、1つのチャンクを構成する全ブロックの割り当てが完了したことになり、次のチャンクの処理のために、上述のようにステップ3406が行われる。
When executing either
ADDR=00100000Hは、SIZE(つまり、生成されるべき論理ディスクのサイズ)未満であり、ループA(ステップ3402)の終了条件を満たさない。この場合、当該ループAが再び実行される。明らかなように、ループAがCHUNK(チャンク数)で示される回数繰り返されることにより、1つのチャンク(チャンク領域)を構成する、チャンク数に一致する数のブロックの対応する論理ブロックへの割り当てが完了する。 ADDR = 00100000H is less than SIZE (that is, the size of the logical disk to be created), and does not satisfy the termination condition of loop A (step 3402). In this case, the loop A is executed again. As is apparent, loop A is repeated the number of times indicated by CHUNK (number of chunks), so that the allocation of the number of blocks that constitute one chunk (chunk area) to the corresponding logical block is equal to the number of chunks. Complete.
やがて、ADDRがBLK_SIZE以上となったならば、論理ディスク生成部2160はループAから抜けて、論理ディスク(タイプ1)マッピングテーブル生成処理を終了する。これにより、例えば図10に示すタイプ1の論理ディスクのマッピングテーブル233が生成される。
Eventually, when ADDR becomes equal to or greater than BLK_SIZE, the logical
本実施形態において、マッピングテーブルの生成は、論理ディスク生成部2160の作業領域(図示せず)用いて行われる。この作業領域上で生成されたマッピングテーブル、つまりタイプ1の論理ディスクに対応するマッピングテーブルは、マッピングテーブル生成処理の終了時に、管理情報記憶部230に格納される。マッピングテーブルの生成が、管理情報記憶部230内で行われても構わない。
In the present embodiment, the mapping table is generated using a work area (not shown) of the logical
次に、論理ディスク生成部2160によって実行される論理ディスク(タイプ2)マッピングテーブル生成処理(ステップ350)の詳細な手順について、図15のフローチャートを参照して説明する。
Next, the detailed procedure of the logical disk (type 2) mapping table generation process (step 350) executed by the logical
まず論理ディスク生成部2160は、論理ディスク(タイプ1)マッピングテーブル生成処理におけるステップ3401と同様のステップ3501を実行する。次に論理ディスク生成部2160は、所定のループB(ステップ3502)を、終了条件が成立するまで繰り返す。この終了条件は、ADDR≧SIZEを満足することである。
First, the logical
論理ディスク生成部2160はループBにおいて、まず上記ステップ3403と同様のステップ3503を実行し、しかる後に上記ステップ3404と同様に、COUNTがCHUNK未満であるかを判定する(ステップ3504)。もし、COUNTがCHUNK未満であるならば(ステップ3504のYes)、論理ディスク生成部2160は、現在処理中のチャンクにおける次のブロックについての処理(対応する論理ブロックへの割り当て)のためにCOUNTを1インクリメントする(ステップ3505)。これに対し、COUNTがCHUNK未満でないならば(ステップ3504のNo)、論理ディスク生成部2160は、次のチャンク(チャンク領域)の先頭のブロックについての処理のために、NBをNB+CHUNKに、そしてCOUNTを0に、それぞれ更新する(ステップ3506)。このステップ3506では、前述したタイプ1の論理ディスクを作成する場合のステップ3406と異なり、NMがNM_FIRSTに戻されることはない。
In the loop B, the logical
ここで、NM_FIRSTが0、CHUNKが4、対象フラッシュメモリプールがフラッシュメモリ220-0〜220-4から構成される図2に示すフラッシュメモリプールであるものとする。この場合、上述のように1つのチャンクについての処理が終了しても、NMをNM_FIRSTに戻さないことにより(ステップ3506)、論理ディスク生成部2160は、フラッシュメモリ220-0〜220-4に均等にまたがるように、CHUNKに一致する数の異なる組み合わせのフラッシュメモリ(つまりフラッシュメモリ220-0,220-1,220-2,220-3、フラッシュメモリ220-4,220-0,220-1,220-2、フラッシュメモリ220-3,220-4,220-0,220-1、フラッシュメモリ220-2,220-3,220-4,220-0、フラッシュメモリ220-1,220-2,220-3,220-4)のチャンクを割り当てることになる。
Here, it is assumed that NM_FIRST is 0, CHUNK is 4, and the target flash memory pool is the flash memory pool shown in FIG. 2 composed of flash memories 220-0 to 220-4. In this case, even if the processing for one chunk is completed as described above, the NM is not returned to NM_FIRST (step 3506), so that the logical
論理ディスク生成部2160はステップ3505または3506のいずれかを実行すると、上記ステップ3407と同様に、NM+1がN_MEDIA+NM_FIRSTに一致するかを判定する(ステップ3507)。もし、NM+1がN_MEDIA+NM_FIRSTに一致しないならば(ステップ3507のNo)、論理ディスク生成部2160はNMを1インクリメントする(ステップ3508)。これに対し、NM+1がN_MEDIA+NM_FIRSTに一致するならば(ステップ3507のYes)、論理ディスク生成部2160はNMをNM_FIRSTに戻す(ステップ3509)。
When executing either
論理ディスク生成部2160はステップ3508または3509のいずれかを実行すると、ステップ3410と同様に、ADDRをBLK_SIZEだけインクリメントする(ステップ3510)。このステップ3510において論理ディスク生成部2160は、インクリメント後のADDRをマッピングテーブルの次のエントリの論理アドレスフィールドに登録する。これにより、1回のループBが完了する。論理ディスク生成部2160は、終了条件(ADDR≧BLK_SIZE)が成立するまでループBを繰り返す。やがて、終了条件が成立したならば、論理ディスク生成部2160はループBから抜けて、論理ディスク(タイプ2)マッピングテーブル生成処理を終了する。これにより、例えば図11に示すタイプ2の論理ディスクのマッピングテーブル234が生成される。生成されたタイプ2の論理ディスクに対応するマッピングテーブルは、タイプ1の論理ディスクに対応するマッピングテーブルと同様に、管理情報記憶部230に格納される。
When executing either
マッピングテーブルが生成されたことは、当該マッピングテーブルによって管理(定義)される論理ディスクが生成されたことと等価である。コントローラ210が論理ディスクを生成した後、ユーザがホスト計算機100を再起動する。するとホスト計算機100のオペレーティングシステムは、ストレージ装置200に構築されている論理ディスクに関する情報等、ストレージ装置200に関する情報を検出(取得)するために、例えば、SCSI規格に準拠した問い合わせ(INQUIRY)コマンドをホストI/F102を介してコントローラ210に発行する。
The generation of the mapping table is equivalent to the generation of a logical disk managed (defined) by the mapping table. After the
コントローラ210は、ホスト計算機100からのINQUIRYコマンドに応答することで、論理ディスクがストレージ装置200内に生成されたことを当該ホスト計算機100通知する。ホスト計算機100のオペレーティングシステムは、この通知に基づき、生成された論理ディスクを読み出し/書き込みが可能なディスクとして検出する。これによりホスト計算機100上のプログラムは、検出された論理ディスクに対して読み出し/書き込みできるようになる。
The
次に、ストレージ装置200のコントローラ210におけるアドレス処理部214の動作について説明する。前述したようにコントローラ210のコマンド処理部212がホスト計算機100によって発行されるI/O系のSCSIコマンドを受信した場合、I/O処理部213は、アドレス処理部214を用いて論理ディスクに対する読み出し/書き込み処理を行う。
Next, the operation of the
ホスト計算機100によって発行されるI/O系のSCSIコマンド、例えばホスト計算機100のオペレーティングシステムによって発行される読み出し/書き込み要求は、読み出し/書き込みデータの位置を示すセクタアドレスを含む。本実施形態において、セクタアドレスで指定されるセクタは、512バイトで構成されるものとする。この場合、アドレス処理部214は、セクタアドレスに512を乗ずることにより、セクタアドレスをバイトアドレスに変換する。
An I / O-related SCSI command issued by the
アドレス処理部214は、変換されたバイトアドレスからブロックサイズ−1に対応するビット部分を切り捨てる(補数の論理積)ことで、読み出し/書き込みされるべき論理ディスク(目的論理ディスク)内のブロックの論理アドレスを取得する。アドレス処理部214は、取得した論理アドレスが登録された、目的論理ディスクに対応するマッピングテーブルのエントリを検索する。アドレス処理部214は、検索されたマッピングテーブルのエントリに登録されているメディア番号及びブロック番号に基づき、読み出し/書き込みされるべき論理ディスク内のブロックを特定する。アドレス処理部214は更に、切り捨て前のバイトアドレスにブロックサイズ−1でマスク(論理積)することにより、読み出し/書き込みが開始されるべきブロック内の位置(オフセット)を取得する。
The
アドレス処理部214は、読み出し/書き込みが開始されるべきブロック内の位置を特定したならば、フラッシュメモリI/F処理部215に対して、該当するフラッシュメモリを対象にデータを読み出し/書き込みするための読み出し/書き込み要求を発行することにより、データの読み出し/書き込みを行う。
When the
アドレス処理部214によるデータの読み出し/書き込みが完了すると、ホストI/F処理部211は、その旨を、ホスト計算機100に対して例えば割り込みにより通知する。ホスト計算機100のオペレーティングシステムはコントローラ210からの割り込みを検出すると、その旨を対応するプログラムに返して終了する。
When the reading / writing of data by the
以上に述べた論理ディスクの構成(図3及び図4参照)はRAID0(RAIDレベル0のRAID)に相当する。このような構成の論理ディスクでは、フラッシュメモリへの並列な読み書きが行われるので、RAID0と同様の高速化が見込める。
The logical disk configuration described above (see FIGS. 3 and 4) corresponds to RAID 0 (
次に、本実施形態で適用されるRAID1相当の冗長化について説明する。
RAID1と同様のミラーは、フラッシュメモリプールの複製を生成することで構成できる。例えば論理ディスク生成部2160は、全く同一サイズの2つのフラッシュメモリプールの一方をマスター、他方をスレーブとして、マスターのフラッシュメモリプールを用いて前述したような論理ディスクを生成する。アドレス処理部214は、論理ディスクへの書き込み時に、マスター側のフラッシュメモリにデータを書き込んだ後、スレーブ側のフラッシュメモリプールの同一位置にもデータを書き込む。またアドレス処理部214は、データの読み込みはマスター側のみから行う。マスター側に対する読み出し/書き込みでエラーが発生した場合、アドレス処理部214は、エラーが発生したフラッシュメモリのブロック割り当てテーブルの該当ブロックにエラーを示すフラグ(例えば値が2のフラグ)を書き込む。この場合、アドレス処理部214は、スレーブ側のフラッシュメモリを対象に読み出し/書き込みを行う。
Next, redundancy equivalent to
A mirror similar to
次に、本実施形態で適用されるRAID5相当の冗長化について説明する。
論理ディスク生成部2160は、チャンクの中の1つのブロックをパリティ専用のブロック、つまり当該チャンクの他のブロックに格納されるデータの冗長データとしてのパリティデータを保持するパリティブロック(冗長ブロック)に割り当てる。これにより、RAID5と同等の冗長化を実現することができる。例えば、チャンクを構成する複数のブロックのうち最後の1個のブロックをパリティブロックとすることで、RAID5と同様の冗長化を実現できる。但し、パリティブロックを導入する場合、マッピングテーブルの生成アルゴリズム及び読み出し/書き込み処理は次のように変更される必要がある。
Next, redundancy equivalent to
The logical
チャンクの最後のブロックの場合、論理ディスク生成部2160は、当該ブロックをマッピングテーブルに登録せず、論理アドレスの加算(ステップ3410または3510)も抑止する。一方、アドレス処理部214は、書き込み処理においてチャンクの最後のブロックにパリティを書き込み、読み出し処理においてパリティチェックする。読み出し/書き込みでエラーが発生した場合、アドレス処理部214は、エラーが発生したフラッシュメモリのブロック割り当てテーブルの該当ブロックにエラーを示すフラグ(例えば値が2のフラグ)を書き込む。また、エラーが発生したブロックからデータを読むことができない場合、アドレス処理部214はパリティを利用してデータを復元する。
In the case of the last block of the chunk, the logical
また、論理ディスクを構成するフラッシュメモリに不良が発生した場合、論理ディスク生成部2160は当該不良が発生したフラッシュメモリのブロック割り当てテーブルを参照して、ホスト計算機100の設定ツール101を通して、フラッシュメモリが故障したことをユーザに通知する。
In addition, when a failure occurs in the flash memory constituting the logical disk, the logical
以上、フラッシュメモリプールの生成、論理ディスクの生成及び論理ディスクに対する読み出し/書き込みについて説明した。
本実施形態によれば、論理ディスクを構成するフラッシュメモリ群に書き込みを分散させることが、ブロックの入れ替えを行うことなくできる。つまりフラッシュメモリ群への書き込みの回数が均一になるのを、ブロックの入れ替えを行うことなく抑制できる。このため、フラッシュメモリ群への書き込みの回数の上限値を同時に越えることが、簡単に回避できる。つまり、フラッシュメモリが同時に故障することによる障害を、処理性能を低下させることなく減らすことができる。特に本実施形態においては、チャンクを構成するブロック数を、フラッシュメモリプールを構成するフラッシュメモリの数と「互いに素」にすることにより、フラッシュメモリ群への書き込みの回数が均一になることを、より効果的に抑制できる。
The generation of the flash memory pool, the generation of the logical disk, and the read / write with respect to the logical disk have been described above.
According to this embodiment, it is possible to distribute writing to the flash memory group constituting the logical disk without performing block replacement. That is, it is possible to prevent the number of times of writing to the flash memory group from becoming uniform without performing block replacement. For this reason, it is easy to avoid exceeding the upper limit of the number of times of writing to the flash memory group at the same time. That is, failures caused by simultaneous failure of the flash memory can be reduced without reducing the processing performance. In particular, in the present embodiment, by making the number of blocks constituting the chunk "disjoint" with the number of flash memories constituting the flash memory pool, it is possible to make the number of writes to the flash memory group uniform. It can suppress more effectively.
また、本実施形態によれば、上述のフラッシュメモリプールを利用してタイプ1の論理ディスクを生成することにより、論理ディスク毎に書き込み回数(頻度)が異なる場合に、各フラッシュメモリの書き込み回数が均一化するのを効果的に抑制できる。また、本実施形態によれば、上述のフラッシュメモリプールを利用してタイプ2の論理ディスクを生成することにより、各論理ディスクの書き込み回数(頻度)は同程度だが、同一論理ディスクの記憶領域内で書き込み回数の偏りがある場合に、各フラッシュメモリの書き込み回数が均一化するのを効果的に抑制できる。
In addition, according to the present embodiment, when a
以上説明した少なくとも1つの実施形態によれば、処理性能を低下させることなく、複数の不揮発性メモリの同時不良の発生を抑制することができる、複数の不揮発性メモリを備えたストレージ装置、ストレージコントローラ及び論理ディスク生成方法を提供することができる。 According to at least one embodiment described above, a storage device and a storage controller having a plurality of nonvolatile memories that can suppress the occurrence of simultaneous failures of the plurality of nonvolatile memories without degrading the processing performance In addition, a logical disk generation method can be provided.
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 Although several embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the invention described in the claims and the equivalents thereof.
100…ホスト計算機、101…設定ツール、102…ホストI/F、200…ストレージ装置、210…コントローラ(ストレージコントローラ)、211…ホストI/F処理部、212…コマンド処理部、213…I/O処理部、214…アドレス処理部、215…フラッシュメモリI/F処理部、216…ディスク管理部、217…初期化処理部、220-0〜220-4…フラッシュメモリ(不揮発性メモリ)、221a,221b…論理ディスク(タイプ1の論理ディスク)、222a,222b…論理ディスク(タイプ2の論理ディスク)、230…管理情報記憶部、231…フラッシュメモリプールテーブル、232…ブロック割り当てテーブル、233,234…マッピングテーブル、2160…論理ディスク生成部、2170…フラッシュメモリプール生成部、2171…グループ化部、2172…ブロック分割部、2173…チャンク生成部、2174…論理ディスクタイプ設定部、2175…ブロック割り当てテーブル生成部。
DESCRIPTION OF
Claims (6)
ホスト計算機からのアクセス要求に基づいて、論理ディスクを構成する前記不揮発性メモリへのアクセスを制御するストレージコントローラとを具備し、
前記ストレージコントローラは、
メモリプール生成手段と、
論理ディスク生成手段とを具備し、
前記メモリプール生成手段は、
前記複数の不揮発性メモリのうちの第1の数の不揮発性メモリをグループ化して、前記第1の数の不揮発性メモリが順序付けて配置されたメモリプールを生成するグループ化手段と、
前記第1の数の不揮発性メモリの記憶領域を一定サイズのブロックに分割するブロック分割手段と、
前記第1の数の不揮発性メモリの配置順に従い、前記第1の数の不揮発性メモリのうち、前記第1の数未満である第2の数の不揮発性メモリのそれぞれから順に1つのブロックを選択して組み合わせた第2の数のブロックから構成される複数のチャンクを生成するチャンク生成手段とを具備し、
前記論理ディスク生成手段は、前記複数のチャンクを組み合わせて割り当てることにより前記論理ディスクを生成する
ストレージ装置。 A non-volatile memory a plurality of rewritable there is an upper limit on the number of writes,
Based on the access request from the host computer, comprising a storage controller that controls access to the nonvolatile memory which constitutes a logical disk,
The storage controller
A memory pool generation means;
; And a logical disk generating means,
The memory pool generation means includes
Grouping means for grouping a first number of nonvolatile memories of the plurality of nonvolatile memories to generate a memory pool in which the first number of nonvolatile memories are arranged in order;
A block dividing means for dividing the pre-term memory area of the nonvolatile memory of the first number to the blocks of a predetermined size,
In accordance with the arrangement order of the first number of nonvolatile memories , one block is sequentially arranged from each of the second number of nonvolatile memories less than the first number among the first number of nonvolatile memories. A chunk generation means for generating a plurality of chunks composed of a second number of blocks selected and combined ;
The logical disk generation means generates the logical disk by combining and assigning the plurality of chunks.
メモリプール生成手段と、
論理ディスク生成手段とを具備し、
前記メモリプール生成手段は、
前記複数の不揮発性メモリのうちの第1の数の不揮発性メモリをグループ化して、前記第1の数の不揮発性メモリが順序付けて配置されたメモリプールを生成するグループ化手段と、
前記第1の数の不揮発性メモリの記憶領域を一定サイズのブロックに分割するブロック分割手段と、
前記第1の数の不揮発性メモリの配置順に従い、前記第1の数の不揮発性メモリのうち、前記第1の数未満である第2の数の不揮発性メモリのそれぞれから順に1つのブロックを選択して組み合わせた第2の数のブロックから構成される複数のチャンクを生成するチャンク生成手段とを具備し、
前記論理ディスク生成手段は、前記複数のチャンクを組み合わせて割り当てることにより前記論理ディスクを生成する
ストレージコントローラ。 Is connected to a plurality of rewritable nonvolatile memory in which there is an upper limit to the number of writing, based on the access request from the host computer, in a storage controller that controls access to the nonvolatile memory which constitutes a logical disk,
A memory pool generation means;
; And a logical disk generating means,
The memory pool generation means includes
Grouping means for grouping a first number of nonvolatile memories of the plurality of nonvolatile memories to generate a memory pool in which the first number of nonvolatile memories are arranged in order;
A block dividing means for dividing the pre-term memory area of the nonvolatile memory of the first number to the blocks of a predetermined size,
In accordance with the arrangement order of the first number of nonvolatile memories , one block is sequentially arranged from each of the second number of nonvolatile memories less than the first number among the first number of nonvolatile memories. A chunk generation means for generating a plurality of chunks composed of a second number of blocks selected and combined ;
The logical disk generation unit is a storage controller that generates the logical disk by combining and assigning the plurality of chunks.
前記グループ化手段が、前記複数の不揮発性メモリのうちの第1の数の不揮発性メモリをグループ化して、前記第1の数の不揮発性メモリが順序付けて配置されたメモリプールを生成するステップと、
前記ブロック分割手段が、前記第1の数の不揮発性メモリの記憶領域を一定サイズのブロックに分割するステップと、
前記チャンク生成手段が、前記第1の数の不揮発性メモリの配置順に従い、前記第1の数の不揮発性メモリのうち、前記第1の数未満である第2の数の不揮発性メモリのそれぞれから順に1つのブロックを選択して組み合わせた第2の数のブロックから構成される複数のチャンクを生成するステップと、
前記論理ディスク生成手段が、前記複数のチャンクを組み合わせて割り当てることにより前記論理ディスクを生成するステップと
を具備する論理ディスク生成方法。 Comprising grouping means, a memory pool generation means including block dividing means and chunk generating means, and a logical disk generating means, based on an access request from the host computer, there is an upper limit on the number of writes to configure the logical disk more A logical disk generation method applied to a storage controller that controls access to a rewritable nonvolatile memory,
The grouping means groups a first number of nonvolatile memories of the plurality of nonvolatile memories to generate a memory pool in which the first number of nonvolatile memories are arranged in order; ,
A step wherein the block dividing means, for dividing the pre-term memory area of the nonvolatile memory of the first number to the blocks of a predetermined size,
Each of the second number of non-volatile memories less than the first number among the first number of non-volatile memories in accordance with the arrangement order of the first number of non-volatile memories; Generating a plurality of chunks composed of a second number of blocks selected and combined in order from one block ;
A logical disk generating method comprising: the logical disk generating unit generating the logical disk by combining and assigning the plurality of chunks.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011111424A JP5215434B2 (en) | 2011-05-18 | 2011-05-18 | Storage device having a plurality of nonvolatile memories, storage controller, and logical disk generation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011111424A JP5215434B2 (en) | 2011-05-18 | 2011-05-18 | Storage device having a plurality of nonvolatile memories, storage controller, and logical disk generation method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012243018A JP2012243018A (en) | 2012-12-10 |
JP5215434B2 true JP5215434B2 (en) | 2013-06-19 |
Family
ID=47464686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011111424A Active JP5215434B2 (en) | 2011-05-18 | 2011-05-18 | Storage device having a plurality of nonvolatile memories, storage controller, and logical disk generation method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5215434B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103688248B (en) | 2013-06-29 | 2015-09-30 | 华为技术有限公司 | A kind of management method of storage array, device and controller |
US8990523B1 (en) | 2013-09-02 | 2015-03-24 | Hitachi, Ltd. | Storage apparatus and its data processing method |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5131271B2 (en) * | 2007-04-20 | 2013-01-30 | 富士通株式会社 | Combination determination program, combination determination device, and combination determination method |
JP4467624B2 (en) * | 2008-03-24 | 2010-05-26 | 富士通株式会社 | Software update management program, software update management apparatus, and software update management method |
JP5242264B2 (en) * | 2008-07-07 | 2013-07-24 | 株式会社東芝 | Data control apparatus, storage system, and program |
-
2011
- 2011-05-18 JP JP2011111424A patent/JP5215434B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2012243018A (en) | 2012-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10977124B2 (en) | Distributed storage system, data storage method, and software program | |
US10089026B1 (en) | Virtual drive based RAID groups | |
JP5593577B2 (en) | Storage system and control method thereof | |
JP5525605B2 (en) | Flash memory module | |
EP2112598B1 (en) | Storage system | |
JP4818812B2 (en) | Flash memory storage system | |
KR20150105323A (en) | Method and system for data storage | |
JP5362123B1 (en) | Storage device, storage controller and method for managing error correction code block arrangement position in array | |
US20080201392A1 (en) | Storage system having plural flash memory drives and method for controlling data storage | |
JP6216897B2 (en) | Storage system | |
JP6062060B2 (en) | Storage device, storage system, and storage device control method | |
JP2008015769A (en) | Storage system and writing distribution method | |
US10649891B2 (en) | Storage device that maintains mapping data therein | |
CN111857552A (en) | Storage management method, electronic device and computer program product | |
JP2020071583A (en) | Data management device, data management method, and data management program | |
US20180307427A1 (en) | Storage control apparatus and storage control method | |
JP5730446B1 (en) | Hierarchical storage system with trial area, storage controller and program | |
US9235472B2 (en) | Drive array apparatus, controller, data storage apparatus and method for rebuilding drive array | |
JP5215434B2 (en) | Storage device having a plurality of nonvolatile memories, storage controller, and logical disk generation method | |
JP6022116B1 (en) | Hierarchical storage system, storage controller, and replication initialization method | |
WO2018142622A1 (en) | Computer | |
WO2019026221A1 (en) | Storage system and storage control method | |
JP2013089225A (en) | Hierarchy changing method and device | |
US20230214134A1 (en) | Storage device and control method therefor | |
US11544005B2 (en) | Storage system and processing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120918 |
|
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: 20130205 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130228 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5215434 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160308 Year of fee payment: 3 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |