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 PDF

Info

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
Application number
JP2011111424A
Other languages
Japanese (ja)
Other versions
JP2012243018A (en
Inventor
康雄 柳瀬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2011111424A priority Critical patent/JP5215434B2/en
Publication of JP2012243018A publication Critical patent/JP2012243018A/en
Application granted granted Critical
Publication of JP5215434B2 publication Critical patent/JP5215434B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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.

特開2010−015516号公報JP 2010-015516 A

上述したように、従来技術では、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の数の不揮発性メモリの配置順に従い、前記第の数の不揮発性メモリのうち、前記第の数未満である第2の数の不揮発性メモリのそれぞれから順に1つのブロックを選択して組み合わせたの数のブロックから構成される複数のチャンクを生成する。前記論理ディスク生成手段は、前記複数のチャンクを組み合わせて割り当てることにより前記論理ディスクを生成する。 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 is a block diagram showing a configuration of a storage system according to an embodiment. 同実施形態で適用されるフラッシュメモリプールの構成の一例を示す図。2 is a diagram showing an example of the configuration of a flash memory pool applied in the embodiment. FIG. 同実施形態で適用されるタイプ1の論理ディスクの例を2つの論理ディスクについて示す図。2 is a diagram showing an example of a type 1 logical disk applied in the embodiment for two logical disks. FIG. 同実施形態で適用されるタイプ2の論理ディスクの例を2つの論理ディスクについて示す図。2 is a diagram showing an example of a type 2 logical disk applied in the embodiment for two logical disks. FIG. 図1に示されるストレージ装置の主としてコントローラの構成を示すブロック図。FIG. 2 is a block diagram mainly showing a configuration of a controller of the storage apparatus shown in FIG. 図5に示されるディスク管理部の構成を示すブロック図。FIG. 6 is a block diagram showing a configuration of a disk management unit shown in FIG. 5. 図5に示される初期化処理部の構成を示すブロック図。The block diagram which shows the structure of the initialization process part shown by FIG. 同実施形態で適用されるフラッシュメモリプールテーブルの例を示す図。The figure which shows the example of the flash memory pool table applied in the embodiment. 同実施形態で適用されるブロック割り当てテーブルの例を示す図。The figure which shows the example of the block allocation table applied in the embodiment. 同実施形態で適用される、タイプ1の論理ディスクに対応するマッピングテーブルの例を示す図。6 is a diagram showing an example of a mapping table corresponding to a type 1 logical disk applied in the embodiment. FIG. 同実施形態で適用される、タイプ2の論理ディスクに対応するマッピングテーブルの例を示す図。6 is a diagram showing an example of a mapping table corresponding to a type 2 logical disk applied in the embodiment. FIG. 同実施形態で適用される、フラッシュメモリプールの生成を含む初期化処理の手順を示すフローチャート。6 is an exemplary flowchart illustrating a procedure of initialization processing including generation of a flash memory pool, which is applied in the embodiment. 同実施形態で適用される、論理ディスク生成処理の手順を示すフローチャート。6 is a flowchart showing a procedure of logical disk generation processing applied in the embodiment. 同実施形態で適用される、論理ディスク(タイプ1)マッピングテーブル生成処理の手順を示すフローチャート。9 is a flowchart showing a procedure of logical disk (type 1) mapping table generation processing applied in the embodiment. 同実施形態で適用される、論理ディスク(タイプ2)マッピングテーブル生成処理の手順を示すフローチャート。9 is a flowchart showing a procedure of logical disk (type 2) mapping table generation processing applied in the embodiment.

以下、実施の形態につき図面を参照して説明する。
図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 host computer 100 and a storage apparatus 200. The host computer 100 and the storage device 200 are connected in accordance with, for example, an SCSI (Small Computer System Interface) standard by FC (Fibre Channel) or the like.

ホスト計算機100は、設定ツール101及びホストI/F(インターフェイス)102を備えている。設定ツール101は、論理ディスク(つまり論理的なボリューム)の生成等のためにユーザが入力した情報を、ホストI/F102を介してストレージ装置200に伝える。そのため設定ツール101は、例えば論理ディスクのサイズやタイプなどのパラメータをユーザがホスト計算機100の入力装置(図示せず)を用いて入力するためのインターフェイスを備える。ホストI/F102は、ストレージ装置200に実装されたコントローラ(ストレージコントローラ)210と通信する。ホストI/F102は、例えば設定ツール101を用いてユーザによって入力された情報をストレージ装置200のコントローラ210に伝える。コントローラ210は、このユーザによって入力された情報が、論理ディスクのサイズやタイプなどのパラメータである場合、当該パラメータに基づいて論理ディスクを生成する。   The host computer 100 includes a setting tool 101 and a host I / F (interface) 102. The setting tool 101 transmits information input by the user for generating a logical disk (that is, a logical volume) to the storage apparatus 200 via the host I / F 102. Therefore, the setting tool 101 includes an interface for allowing the user to input parameters such as the size and type of the logical disk using an input device (not shown) of the host computer 100. The host I / F 102 communicates with a controller (storage controller) 210 mounted on the storage apparatus 200. For example, the host I / F 102 transmits information input by the user to the controller 210 of the storage apparatus 200 using the setting tool 101. When the information input by the user is a parameter such as the size or type of the logical disk, the controller 210 generates a logical disk based on the parameter.

ホスト計算機100は、ストレージ装置200に構築された論理ディスクに対して読み出し/書き込みが可能である。これはストレージ装置200が生成する論理ディスクをホスト計算機100のオペレーティングシステム(OS)がSCSI規格に準拠したディスクとして検出し、ホスト計算機100で動作するプログラムが当該ディスクに対して読み出し/書き込みできることを指す。   The host computer 100 can read / write data from / to the logical disk built in the storage apparatus 200. This means that the operating system (OS) of the host computer 100 detects a logical disk generated by the storage apparatus 200 as a disk compliant with the SCSI standard, and a program operating on the host computer 100 can read / write data on the disk. .

ストレージ装置200は、コントローラ210と、複数のフラッシュメモリ、例えば5つのフラッシュメモリ220-0〜220-4とを備えている。コントローラ210はホスト計算機100からの読み出し/書き込み要求に基づいて、対応する論理ディスクを構成するフラッシュメモリ220-i(i=0〜4)に対してデータの読み出し/書き込みを行う。コントローラ210はまた、ホスト計算機100(設定ツール101)からの要求に応じて論理ディスクを生成し、且つ生成された論理ディスクを管理する。   The storage apparatus 200 includes a controller 210 and a plurality of flash memories, for example, five flash memories 220-0 to 220-4. Based on the read / write request from the host computer 100, the controller 210 reads / writes data to / from the flash memory 220-i (i = 0 to 4) constituting the corresponding logical disk. The controller 210 also creates a logical disk in response to a request from the host computer 100 (setting tool 101) and manages the created logical disk.

フラッシュメモリ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 storage device 200 does not need to be a flash memory, and may be a storage medium (nonvolatile memory) configured by rewritable nonvolatile storage elements.

ストレージ装置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 storage apparatus 200. This media number is given by the controller 210 when the flash memory 220-i is first installed in the storage apparatus 200. The media number is stored in the management information storage unit 230 as part of the management information, and cannot be changed once the number is assigned. In order to simplify the following description, it is assumed that all flash memories 220-i have the same size (memory capacity).

次に、ストレージ装置200のコントローラ210によって生成・管理される、フラッシュメモリプールについて説明する。フラッシュメモリプールは、複数のフラッシュメモリ220-iをグループ化することにより構成される。つまり、フラッシュメモリプールをフラッシュメモリ220-iの集合と見なすこともできる。   Next, a flash memory pool generated and managed by the controller 210 of the storage apparatus 200 will be described. The flash memory pool is configured by grouping a plurality of flash memories 220-i. That is, the flash memory pool can be regarded as a set of flash memories 220-i.

図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 storage apparatus 200 has. However, the flash memory pool may be composed of three or more flash memories among the flash memories 220-0 to 220-4. Media numbers 0 to 5 are assigned to the flash memories 220-0 to 220-4, respectively. In the flash memory pool, flash memories 220-0 to 220-4 are arranged (logically arranged) in the order of media numbers 0 to 5.

フラッシュメモリプール内の各フラッシュメモリ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,. Block numbers 0, 1, 2,... Are assigned to 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 media number 0. In this case, when all the flash memories 220-0 to 220-4 consume a number of blocks corresponding to the number of chunks, the next chunk is again allocated from the flash memory 220-0 with the media number 0.

図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 top block 0, and chunks A1 to E1 are allocated in units of subsequent 4 blocks, so that 4 in order from the top block 0 of the top flash memory 220-0. Chunks are allocated in blocks.

つまり、フラッシュメモリ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 block 1 of -2. Next, chunk C0 is allocated to each block 1 of the flash memories 220-3 and 220-4 and each block 2 of the flash memories 220-0 and 220-1, and the flash memories 220-2, 220-3 and 220-4 are allocated. Chunk D0 is allocated to each block 2 and block 3 of the flash memory 220-0. Next, the chunk E0 is allocated to each block 3 of the flash memories 220-1, 220-2, 220-3, and 220-4. Similarly, chunks A1 to E1 are allocated in units of 4 blocks to a total of 20 blocks of blocks 4 to 7 in the flash memories 220-0 to 220-4.

ここで、フラッシュメモリ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 type 1 logical disks and type 2 logical disks.

図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 type 1 logical disk for two logical disks. FIG. 3A shows an example of the logical disk 221a, and FIG. 3B shows an example of the logical disk 221b.
The logical disk 221a shown in FIG. 3A includes chunks of the flash memories 220-0 to 220-3 among the flash memories 220-0 to 220-4 in the flash memory pool, that is, chunks A0, A1, A2,. Are allocated to logical blocks (logical blocks of the logical disk 221a). The logical disk 221b shown in FIG. 3B is a chunk of the flash memories 220-4 and 220-0 to 220-2 among the flash memories 220-0 to 220-4 in the flash memory pool, that is, chunks B0 and B1. , B2... (Block) are assigned to logical blocks.
The logical disk 221a shown in FIG. 3A is only a chunk in which the first block constituting the chunk exists in the flash memory 220-0 among the flash memories 220-0 to 220-4 in the flash memory pool. Is configured by assigning
Block A0 corresponding to block number 0 of flash memory 220-0, block A0 corresponding to block number 0 of flash memory 220-1, block A0 corresponding to block number 0 of flash memory 220-2, and flash memory The head block of the chunk composed of four blocks with the block A0 corresponding to the block number 0 of 220-3 exists in the flash memory 220-0.
A block A1 corresponding to block number 4 of the flash memory 220-0, a block A1 corresponding to block number 4 of the flash memory 220-1, a block A1 corresponding to block number 4 of the flash memory 220-2, and a flash memory The first block of the chunk composed of four blocks with the block A1 corresponding to the block number 4 of 220-3 exists in the flash memory 220-0.
Similarly, although detailed description is omitted, the logical disk 221b shown in FIG. 3B is configured by allocating only the chunk in which the block existing in the flash memory 220-4 is the first block. .

このように、タイプ1の論理ディスクは、フラッシュメモリプール内のフラッシュメモリ220-0〜220-4のうち、チャンク数に一致する数の予め定められたフラッシュメモリのチャンクを割り当てることによって構成される。このタイプ1の論理ディスクは、同一論理ディスクの記憶領域内で書き込み回数の偏りが少ないが、論理ディスク毎に書き込み回数が異なる場合に、各フラッシュメモリに書き込みを分散させることができる、つまり各フラッシュメモリの書き込み回数が均一化するのを抑制できるという特徴がある。このタイプ1の論理ディスクは、論理ディスク毎に用途が異なるようなシステムへの適用が想定される。例えば、データベース用、バックアップ用、或いはファイルサーバ用等の論理ディスクを混在させる場合のように、各論理ディスクの書き込み回数が異なることが想定される場合に効果が高い。   As described above, the type 1 logical disk is configured by allocating a predetermined number of chunks of flash memory corresponding to the number of chunks among the flash memories 220-0 to 220-4 in the flash memory pool. . This type 1 logical disk has a small number of writing biases within the storage area of the same logical disk, but when the number of writing is different for each logical disk, the writing can be distributed to each flash memory. There is a feature that the number of times of writing to the memory can be suppressed. This type 1 logical disk is assumed to be applied to a system whose use differs for each logical disk. For example, this is highly effective when it is assumed that the number of times of writing to each logical disk is different, such as when a logical disk for database, backup, or file server is mixed.

図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 type 2 logical disk for two logical disks. 4A shows an example of the logical disk 222a, and FIG. 4B shows an example of the logical disk 222b.
The logical disk 222a shown in FIG. 4A divides the chunks A0, B1, C2,... (Blocks) into logical blocks (so that the blocks A0, B1, C2. The logical block 222a is assigned to a logical block). The logical disk 222b shown in FIG. 4 (b) logically blocks chunks B0, C1, D2,... (Blocks) so as to evenly span all the flash memories 220-0 to 220-4 in the flash memory pool. Configured by assigning to
The chunks initially allocated to the logical disk 222a shown in FIG. 4A are configured as follows. The first allocated chunk includes block A0 corresponding to block number 0 of flash memory 220-0 as the first block, block A0 corresponding to block number 0 of flash memory 220-1, and flash memory 220-. The block A0 corresponds to the block number 0 of 2, and the block A0 corresponds to the block number 0 of the flash memory 220-3 as the last block.
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 number 4 of flash memory 220-4, block B1 corresponding to block number 5 of flash memory 220-0, and flash memory 220 The block B1 corresponding to the block number 5 of -1 and the block B1 corresponding to the block number 5 of the flash memory 220-2 as the last 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 block number 9 of the flash memory 220-3, although not shown in FIG.
In the logical disk 222b shown in FIG. 4B, the chunk in which the block B0 corresponding to the block number 0 of the flash memory 220-4 is configured as the first block is allocated first.
The second allocated chunk is the block C1 corresponding to the block number 5 existing in the flash memory 220-3 next to the flash memory 220-2 in which the last block B0 of the first allocated chunk exists. It is configured as a block.
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 type 2 logical disk is configured by allocating chunks across all the flash memories 220-0 to 220-4 in the flash memory pool. In this type 2 logical disk, each logical disk has almost the same number of writes, but when there is a bias in the number of writes within the storage area of the same logical disk, the writing can be distributed to each flash memory. That is, there is a feature that the number of times of writing in each flash memory can be suppressed. This type 2 logical disk is highly effective when, for example, a plurality of logical disks to be applied to a database having many random accesses and local data writing are generated.

以上、各フラッシュメモリの書き込み回数が均一化するのを抑制するための論理ディスクの構成について説明した。   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 controller 210 of the storage apparatus 200 shown in FIG. 1 will be described.
FIG. 5 is a block diagram mainly showing the configuration of the controller 210 of the storage apparatus 200. The controller 210 includes a host I / F processing unit 211, a command processing unit 212, an I / O processing unit 213, an address processing unit 214, a flash memory I / F processing unit 215, a disk management unit 216, an initialization processing unit 217, and a management. An information storage unit 230 is provided.

ホストI/F処理部211は、ホスト計算機100のホストI/F102と通信するためのインターフェイスである。本実施形態では、このインターフェイスとしてSCSIインターフェイスを想定している。   The host I / F processing unit 211 is an interface for communicating with the host I / F 102 of the host computer 100. In this embodiment, a SCSI interface is assumed as this interface.

コマンド処理部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 / F 102 of the host computer 100 via the host I / F processing unit 211. In the present embodiment, this command is a SCSI command. In the SCSI standard, data transfer is performed between the host computer and the storage apparatus using a SCSI command. The SCSI commands are classified into I / O system SCSI commands (I / O system commands) and control system SCSI commands (control system commands).

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 host computer 100 generates a SCSI extended command in accordance with information (parameters) input by the user, and issues the generated SCSI extended command to the controller 210, whereby the storage tool 200 is processed. Information reference or information setting is performed.

コマンド処理部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 / O processing unit 213. The I / O processing unit 213 uses the address processing unit 214 to perform read / write processing on the logical disk. On the other hand, in the case of a control command, the command processing unit 212 passes the received SCSI command to the disk management unit 216 or the initialization processing unit 217 to perform processing according to a user request.

管理情報記憶部230は不揮発記憶領域を備えており、当該不揮発性記憶領域に各種の管理情報を格納する。本実施形態において管理情報記憶部230は、フラッシュメモリプールテーブル231(図8参照)とブロック割り当てテーブル232(図9参照)を含むブロック割り当てテーブル群とを、管理情報として格納する。管理情報記憶部230はまた、生成された論理ディスクの数に対応するマッピングテーブル群、例えばマッピングテーブル233(図10参照)を含むマッピングテーブル群を管理情報として格納する。   The management information storage unit 230 includes a nonvolatile storage area, and stores various types of management information in the nonvolatile storage area. In the present embodiment, the management information storage unit 230 stores, as management information, a block allocation table group including a flash memory pool table 231 (see FIG. 8) and a block allocation table 232 (see FIG. 9). The management information storage unit 230 also stores a mapping table group corresponding to the number of generated logical disks, for example, a mapping table group including a mapping table 233 (see FIG. 10) as management information.

ディスク管理部216は、論理ディスクの生成、生成された論理ディスクの管理など、ユーザの要求に応じた処理を、管理情報記憶部230を用いて行う。そのためディスク管理部216は、管理情報記憶部230に対する情報の参照及び情報の書き換えが可能なように構成されている。より詳細に述べるならば、ディスク管理部216は、論理ディスクの生成のために、フラッシュメモリプールテーブルの参照、ブロック割り当てテーブルの更新、マッピングテーブルの生成等を行う。初期化処理部217は、フラッシュメモリプールテーブルの生成、及びブロック割り当てテーブルの生成等の初期化処理を行う。   The disk management unit 216 uses the management information storage unit 230 to perform processing in response to a user request, such as generation of a logical disk and management of the generated logical disk. Therefore, the disk management unit 216 is configured to be able to refer to and rewrite information with respect to the management information storage unit 230. More specifically, the disk management unit 216 performs reference to the flash memory pool table, update of the block allocation table, generation of a mapping table, and the like in order to generate a logical disk. The initialization processing unit 217 performs initialization processing such as generation of a flash memory pool table and generation of a block allocation table.

図6はディスク管理部216の構成を示すブロック図である。
ディスク管理部216は、論理ディスク生成部2160を含む。論理ディスク生成部2160は、論理ディスクの生成のために、フラッシュメモリプールからチャンク(チャンク領域)の群を選択する。論理ディスク生成部2160は、選択されたチャンク領域の群を結合することにより、選択されたチャンク領域の群から構成される論理ディスクを生成する。この論理ディスクの生成は、後述するように、当該論理ディスクに対応するマッピングテーブルを生成することにより実現される。
FIG. 6 is a block diagram showing the configuration of the disk management unit 216.
The disk management unit 216 includes a logical disk generation unit 2160. The logical disk generation unit 2160 selects a group of chunks (chunk areas) from the flash memory pool in order to generate a logical disk. The logical disk generation unit 2160 generates a logical disk composed of the selected chunk area group by combining the selected chunk area groups. As will be described later, the logical disk is generated by generating a mapping table corresponding to the logical disk.

図7は初期化処理部217の構成を示すブロック図である。
初期化処理部217は、フラッシュメモリプールを生成するためのフラッシュメモリプール生成部2170を含む。フラッシュメモリプール生成部2170は、グループ化部2171、ブロック分割部2172、チャンク生成部2173及び論理ディスクタイプ設定部2174から構成される。初期化処理部217は更に、ブロック割り当てテーブルを生成するためのブロック割り当てテーブル生成部2175を含む。
FIG. 7 is a block diagram showing the configuration of the initialization processing unit 217.
The initialization processing unit 217 includes a flash memory pool generation unit 2170 for generating a flash memory pool. The flash memory pool generation unit 2170 includes a grouping unit 2171, a block division unit 2172, a chunk generation unit 2173, and a logical disk type setting unit 2174. The initialization processing unit 217 further includes a block allocation table generation unit 2175 for generating a block allocation table.

グループ化部2171は、複数のフラッシュメモリをグループ化することにより。当該グループ化されたフラッシュメモリの集合からなるフラッシュメモリプールを生成する。ブロック分割部2172は、グループ化されたフラッシュメモリの各々の記憶領域を一定サイズのブロックに分割する。   The grouping unit 2171 groups a plurality of flash memories. A flash memory pool composed of the grouped flash memory is generated. The block division unit 2172 divides each storage area of the grouped flash memories into blocks of a certain size.

チャンク生成部2173は、グループ化されたフラッシュメモリの集合に基づき、グループ化されたフラッシュメモリの個数未満のブロックであって且つ異なるフラッシュメモリのブロックを結合することによってチャンク(チャンク領域)を生成する。論理ディスクタイプ設定部2174は、フラッシュメモリプールを用いて生成することが可能な論理ディスクのタイプを設定する。   The chunk generation unit 2173 generates a chunk (chunk area) by combining blocks of less than the number of grouped flash memories and different flash memory based on the group of grouped flash memories. . The logical disk type setting unit 2174 sets the type of logical disk that can be created using the flash memory pool.

次に、本実施形態で適用される論理ディスクを生成するための処理について説明する。本実施形態において論理ディスクを生成するためには、論理ディスク生成処理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 host computer 100 to perform an input operation for generating a flash memory pool. The parameters that the user needs to input at least for creating the flash memory pool are the size of the flash memory pool and the type of logical disk created from the flash memory group. The type of the logical disk is selected by the user from two types (type 1 or type 2). The setting tool 101 generates a first SCSI extended command (control command) for requesting generation of a flash memory pool in accordance with the input operation of the size and type by the user. The first SCSI extended command includes parameters input by the user, that is, the size (flash memory pool size) and type (logical disk type). The setting tool 101 requests the controller 210 to create a flash memory pool by transferring the first SCSI extension command to the controller 210 of the storage apparatus 200 via the host I / F 102.

コントローラ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 controller 210 is received by the command processing unit 212 via the host I / F processing unit 211. When the command processing unit 212 receives a first SCSI extended command (that is, a SCSI extended command that requests generation of a flash memory pool), the command processing unit 212 passes the first SCSI extended command to the initialization processing unit 217. Then, the initialization processing unit 217 executes initialization processing 120 including generation of a flash memory pool according to the flowchart of FIG.

以下、初期化処理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 pool generation unit 2170 of the initialization processing unit 217 is connected to the parameters (flash memory pool size and logical disk type) included in the first SCSI extended command and the controller 210. The flash memory pool table 231 shown in FIG. 8 is generated based on the information related to the flash memory (here, the flash memories 220-0 to 220-4).

フラッシュメモリプールテーブル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 pool generation unit 2170 generates the flash memory pool table 231 as follows. First, the grouping unit 2171 of the flash memory pool generation unit 2170 searches for a flash memory connected to the controller 210 (step 121). Here, five flash memories 220-0 to 220-4 are searched.

グループ化部2171はまた、管理情報記憶部230からブロック割り当てテーブル(検索されたフラッシュメモリ220-0〜220-4にそれぞれ対応するブロック割り当てテーブル)を検索する(ステップ122)。本実施形態において、図9に示すブロック割り当てテーブル232のようなブロック割り当てテーブルは、フラッシュメモリプールに所属する全てのフラッシュメモリにそれぞれ対応付けて生成されて、管理情報記憶部230に格納される。フラッシュメモリプールに所属しないフラッシュメモリ対応するブロック割り当てテーブルは存在しない。   The grouping unit 2171 also searches the management information storage unit 230 for a block allocation table (a block allocation table corresponding to each of the searched flash memories 220-0 to 220-4) (step 122). In the present embodiment, a block allocation table such as the block allocation table 232 shown in FIG. 9 is generated in association with all the flash memories belonging to the flash memory pool and stored in the management information storage unit 230. There is no block allocation table corresponding to the flash memory that does not belong to the flash memory pool.

図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 information storage unit 230 when the grouping unit 2171 searches the block allocation table. Based on the block allocation table search result, the grouping unit 2171 assigns the smallest media number among the flash memory media numbers for which no corresponding block allocation table exists to the start media number in the flash memory pool table 231 shown in FIG. (Step 123). Here, media number 0 among media numbers 0 to 4 in flash memories 220-0 to 220-4 is registered as a start media number as shown in FIG.

次にグループ化部2171は、フラッシュメモリサイズと第1のSCSI拡張コマンドに含まれているフラッシュメモリプールサイズとに基づき、フラッシュメモリプールを構成するのに必要なフラッシュメモリの数を求め、この数をフラッシュメモリプールテーブル231にメディア数として登録する(ステップ124)。このメディア数は、フラッシュメモリプールサイズをフラッシュメモリサイズで除することにより求められる。ここでは図8に示すように、メディア数として5が登録されたものとする。この場合、コントローラ210に接続されている全てのフラッシュメモリ220-0〜220-4がフラッシュメモリプールを構成することになる。つまりグループ化部2171は、フラッシュメモリ220-0〜220-4をグループ化し、当該グループ化されたフラッシュメモリ220-0〜220-4によりフラッシュメモリプールを構成する。   Next, the grouping unit 2171 obtains the number of flash memories necessary to configure the flash memory pool based on the flash memory size and the flash memory pool size included in the first SCSI extension command, and this number Is registered in the flash memory pool table 231 as the number of media (step 124). The number of media is obtained by dividing the flash memory pool size by the flash memory size. Here, as shown in FIG. 8, it is assumed that 5 is registered as the number of media. In this case, all the flash memories 220-0 to 220-4 connected to the controller 210 constitute a flash memory pool. That is, the grouping unit 2171 groups the flash memories 220-0 to 220-4 and configures a flash memory pool with the grouped flash memories 220-0 to 220-4.

すると、フラッシュメモリプール生成部2170のブロック分割部2172が起動される。ブロック分割部2172は、フラッシュメモリプールテーブル231に、ブロックサイズとして、デフォルトの値、例えば1MB(メガバイト)を登録する(ステップ125)。このブロックサイズの登録により、ブロック分割部2172は等価的に、グループ化部2171によってグループ化されたフラッシュメモリの各々の記憶領域を当該ブロックサイズのブロックに分割したことになる。なお、ブロックサイズの登録のために、設定ツール101のオプションとしてユーザが別の値を指定することも可能とする。   Then, the block division unit 2172 of the flash memory pool generation unit 2170 is activated. The block dividing unit 2172 registers a default value, for example, 1 MB (megabytes) as the block size in the flash memory pool table 231 (step 125). By this block size registration, the block dividing unit 2172 equivalently divides each storage area of the flash memory grouped by the grouping unit 2171 into blocks of the block size. Note that it is also possible for the user to specify another value as an option of the setting tool 101 for registering the block size.

次にフラッシュメモリプール生成部2170のチャンク生成部2173が起動される。チャンク生成部2173は、グループ化部2171によってステップ124で求められたメディア数より小さな数で且つ当該メディア数と互いに素な数を求め、この数をフラッシュメモリプールテーブル231にチャンク数として登録する(ステップ126)。このような条件を満たす数(チャンク数)を取得するためには、メディア数が3以上であればよい。つまりフラッシュメモリプールを構成するフラッシュメモリの数が3以上であればよい。   Next, the chunk generation unit 2173 of the flash memory pool generation unit 2170 is activated. The chunk generation unit 2173 obtains a number that is smaller than the number of media obtained by the grouping unit 2171 in step 124 and is relatively prime to the number of media, and registers this number as the number of chunks in the flash memory pool table 231 ( Step 126). In order to acquire the number (chunk number) satisfying such conditions, the number of media may be three or more. That is, it is sufficient that the number of flash memories constituting the flash memory pool is three or more.

チャンク数の登録により、チャンク生成部2173は等価的に、チャンク数に一致するブロックであって且つ異なるフラッシュメモリのブロックを結合することによってチャンク(チャンク領域)を生成したことになる。チャンク数は、上述の説明から明らかなように、メディア数(グループ化されたフラッシュメモリの個数)未満の数であり、より詳細には、メディア数より小さな数で且つ当該メディア数と互いに素な数である。   By registering the number of chunks, the chunk generation unit 2173 equivalently generates a chunk (chunk area) by combining blocks that match the number of chunks and different flash memory blocks. As is apparent from the above description, the number of chunks is a number less than the number of media (the number of grouped flash memories), and more specifically, a number smaller than the number of media and relatively prime to the number of media. Is a number.

チャンク数として複数の候補がある場合、初期化処理部217は、例えば最大の数を選択する。本実施形態のようにメディア数が5の場合、2、3または4が候補となるので、最大値4が選択される。なお、複数の候補のうちの最大の数以外(例えば中間の数)が選択される構成であっても構わない。また、設定ツール101のオプションとして複数の候補からユーザにチャンク数を選択させることも可能である。   When there are a plurality of candidates as the number of chunks, the initialization processing unit 217 selects, for example, the maximum number. When the number of media is 5 as in the present embodiment, 2, 3 or 4 is a candidate, so the maximum value 4 is selected. Note that a configuration other than the maximum number of candidates (for example, an intermediate number) may be selected. In addition, as an option of the setting tool 101, the user can select the number of chunks from a plurality of candidates.

次にグループ化部2171の論理ディスクタイプ設定部2174が起動される。論理ディスクタイプ設定部2174は、第1のSCSI拡張コマンドに含まれている論理ディスクタイプを、フラッシュメモリプールテーブル231に登録する(ステップ127)。次に初期化処理部217のブロック割り当てテーブル生成部2175が起動される。ブロック割り当てテーブル生成部2175は、フラッシュメモリプールテーブル231によって示されるフラッシュメモリプールに所属するフラッシュメモリ(ここではフラッシュメモリ220-0〜220-4)にそれぞれ対応付けられるブロック割り当てテーブル(初期ブロック割り当てテーブル)を生成する(ステップ128)。このブロック割り当てテーブルのエントリ数は、対応するフラッシュメモリのブロック数に一致し、各エントリには、対応するブロックが未使用であることを示すフラグ(0)が登録される。   Next, the logical disk type setting unit 2174 of the grouping unit 2171 is activated. The logical disk type setting unit 2174 registers the logical disk type included in the first SCSI extended command in the flash memory pool table 231 (step 127). Next, the block allocation table generation unit 2175 of the initialization processing unit 217 is activated. The block allocation table generation unit 2175 has a block allocation table (initial block allocation table) associated with each flash memory (here, flash memories 220-0 to 220-4) belonging to the flash memory pool indicated by the flash memory pool table 231. ) Is generated (step 128). The number of entries in this block allocation table matches the number of blocks in the corresponding flash memory, and a flag (0) indicating that the corresponding block is unused is registered in each entry.

フラッシュメモリプール生成部2170及びブロック割り当てテーブル生成部2175は、それぞれ、生成されたフラッシュメモリプールテーブル231及びブロック割り当てテーブルの群を管理情報記憶部230に格納する(ステップ129)。これにより、論理ディスク生成のための初期化処理120は終了し、フラッシュメモリプールテーブル231によって示されるフラッシュメモリプールが生成されたことになる。なお、コントローラ210に接続されるフラッシュメモリの数が本実施形態と異なって5を超えている場合、例えば8の場合、フラッシュメモリ220-0〜220-4から構成されるフラッシュメモリプール以外に、残りの3つのフラッシュメモリから構成されるフラッシュメモリプールを生成することも可能である。   The flash memory pool generation unit 2170 and the block allocation table generation unit 2175 store the generated flash memory pool table 231 and block allocation table group in the management information storage unit 230, respectively (step 129). As a result, the initialization process 120 for logical disk generation is completed, and the flash memory pool indicated by the flash memory pool table 231 is generated. Note that when the number of flash memories connected to the controller 210 exceeds 5 unlike this embodiment, for example, in the case of 8, in addition to the flash memory pool composed of the flash memories 220-0 to 220-4, It is also possible to generate a flash memory pool composed of the remaining three flash memories.

フラッシュメモリテーブルが生成されると、ユーザは当該フラッシュメモリテーブルによって示されるフラッシュメモリプールから領域を切り出して論理ディスクを生成することを、設定ツール101を操作することによってコントローラ210に要求することができる。具体的には、ユーザは設定ツール101を操作することによって、生成されるべき論理ディスクのサイズと、論理ディスクの生成の要求とを入力する。また、フラッシュメモリプールが複数存在する場合、ユーザは、例えば生成されるべき論理ディスクのサイズを入力する前に、論理ディスク生成の対象となるフラッシュメモリプールを選択する。   When the flash memory table is generated, the user can request the controller 210 to operate the setting tool 101 to create a logical disk by extracting an area from the flash memory pool indicated by the flash memory table. . Specifically, the user operates the setting tool 101 to input the size of the logical disk to be generated and a request for generating the logical disk. Further, when there are a plurality of flash memory pools, the user selects a flash memory pool that is a target of logical disk generation, for example, before inputting the size of the logical disk to be generated.

設定ツール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 controller 210 to create a logical disk by transferring the second SCSI extension command to the controller 210 of the storage apparatus 200 via the host I / F 102.

コントローラ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 controller 210 is received by the command processing unit 212 via the host I / F processing unit 211. When the command processing unit 212 receives the second SCSI extended command (that is, the SCSI extended command that requests generation of a logical disk), the command processing unit 212 passes the second SCSI extended command to the disk management unit 216. Then, the logical disk generation unit 2160 of the disk management unit 216 executes a logical disk generation process 300 for generating a logical disk requested by the second SCSI extension command according to the flowchart of FIG.

以下、論理ディスク生成処理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 disk generation unit 2160 obtains information on the logical disk to be generated and the target flash memory pool (target flash memory pool) based on the second SCSI extension command (step 310). In step 310, the logical disk generation unit 2160 sets values of variables SIZE, CHUNK, BLK_SIZE, and N_MEDIA based on the acquired information.

具体的には、論理ディスク生成部2160は、生成すべき論理ディスクに関する情報として、当該論理ディスクのサイズを、第2のSCSI拡張コマンドから取得する。論理ディスク生成部2160は、取得した論理ディスクのサイズを変数SIZEとして設定する。また論理ディスク生成部2160は、対象フラッシュメモリプールに関する情報(管理情報)を、第2のSCSI拡張コマンドに含まれているフラッシュメモリプールを示すパラメータに基づいて、管理情報記憶部230に格納されている対応するフラッシュメモリプールテーブルを参照することにより取得する。ここでは、フラッシュメモリプールテーブル231が参照されたものとする。この場合、論理ディスク生成部2160は、フラッシュメモリプールテーブル231から、対象フラッシュメモリプールに関する情報として、当該フラッシュメモリプールのチャンク数、ブロックサイズ及びメディア数(図8参照)を取得する。論理ディスク生成部2160は、取得したチャンク数、ブロックサイズ及びメディア数を、それぞれ変数CHUNK、BLK_SIZE及びN_MEDIAとして設定する。   Specifically, the logical disk generation unit 2160 acquires the size of the logical disk from the second SCSI extension command as information on the logical disk to be generated. The logical disk generation unit 2160 sets the size of the acquired logical disk as a variable SIZE. The logical disk generation unit 2160 stores information (management information) related to the target flash memory pool in the management information storage unit 230 based on the parameter indicating the flash memory pool included in the second SCSI extended command. It is obtained by referring to the corresponding flash memory pool table. Here, the flash memory pool table 231 is referred to. In this case, the logical disk generation unit 2160 acquires the number of chunks, the block size, and the number of media (see FIG. 8) of the flash memory pool as information related to the target flash memory pool from the flash memory pool table 231. The logical disk generation unit 2160 sets the acquired number of chunks, block size, and number of media as variables CHUNK, BLK_SIZE, and N_MEDIA, respectively.

次に論理ディスク生成部2160は、対象フラッシュメモリプールに所属する全てのフラッシュメモリ(メディア)にそれぞれ対応するブロック割り当てテーブルを参照することにより、未使用ブロックのブロック番号のうちの最小のブロック番号(最小未使用ブロック番号)と、当該最小のブロック番号のブロックを含むフラッシュメモリのメディア番号とを取得する(ステップ320)。具体的には、論理ディスク生成部2160は上記対応するブロック割り当てテーブル毎に、未使用ブロックのブロック番号のうちの最小のブロック番号を取得し、それらの最小のブロック番号の中で最も小さなブロック番号を目的のブロック番号とする。もし、該当する未使用ブロックが複数ある場合、論理ディスク生成部2160は、該当する未使用ブロックを含む同数のフラッシュメモリのうち、最もメディア番号の小さなフラッシュメモリの当該メディア番号を目的のメディア番号とする。   Next, the logical disk generation unit 2160 refers to a block allocation table corresponding to each of all flash memories (media) belonging to the target flash memory pool, so that the smallest block number of the block numbers of unused blocks ( (Minimum unused block number) and the media number of the flash memory including the block with the smallest block number are acquired (step 320). Specifically, the logical disk generation unit 2160 obtains the smallest block number among the block numbers of unused blocks for each of the corresponding block allocation tables, and the smallest block number among those smallest block numbers. Is the target block number. If there are a plurality of corresponding unused blocks, the logical disk generation unit 2160 uses the media number of the flash memory with the smallest media number as the target media number among the same number of flash memories including the corresponding unused block. To do.

ステップ320において論理ディスク生成部2160は、取得したメディア番号及びブロック番号を、それぞれ最初のメディア番号を表す変数NM_FIRST及び最初のブロック番号を表す変数NB_FIRSTとして設定する。論理ディスク生成部2160はまた、変数NM_FIRST及びNB_FIRSTを、それぞれメディア番号を表す変数NM及びブロック番号を表す変数NBとして設定する。   In step 320, the logical disk generation unit 2160 sets the acquired media number and block number as a variable NM_FIRST representing the first media number and a variable NB_FIRST representing the first block number, respectively. The logical disk generation unit 2160 also sets the variables NM_FIRST and NB_FIRST as a variable NM representing a media number and a variable NB representing a block number, respectively.

次に論理ディスク生成部2160は、フラッシュメモリプールテーブル231に保持されている論理ディスクタイプを判別する(ステップ330)。もし、論理ディスクタイプがタイプ1であるならば、論理ディスク生成部2160は、当該タイプ1の論理ディスクに対応するマッピングテーブルを生成するための論理ディスク(タイプ1)マッピングテーブル生成処理を行う(ステップ340)。これに対し、論理ディスクタイプがタイプ2であるならば、論理ディスク生成部2160は、当該タイプ2の論理ディスクに対応するマッピングテーブルを生成するための論理ディスク(タイプ2)マッピングテーブル生成処理を行う(ステップ340)。   Next, the logical disk generation unit 2160 determines the logical disk type held in the flash memory pool table 231 (step 330). If the logical disk type is type 1, the logical disk generation unit 2160 performs a logical disk (type 1) mapping table generation process for generating a mapping table corresponding to the type 1 logical disk (step 1). 340). On the other hand, if the logical disk type is type 2, the logical disk generation unit 2160 performs a logical disk (type 2) mapping table generation process for generating a mapping table corresponding to the type 2 logical disk. (Step 340).

マッピングテーブルは、対応する論理ディスクの構成を管理(定義)するためのテーブルである。そのためマッピングテーブルは、対応する論理ディスクのそれぞれの論理アドレスのデータ領域(論理ブロック)に、いずれのフラッシュメモリ(メディア)のいずれのブロックがマッピングされているかを登録したエントリ群を有する。図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 type 1 logical disk 221a shown in FIG. 3A, and FIG. 11 corresponds to the type 2 logical disk 222a shown in FIG. 4A. An example of the mapping table 234 is shown. Each entry of the mapping tables 233 and 234 has fields for registering logical addresses, media numbers, and block numbers, respectively.

次に、論理ディスク生成部2160によって実行される論理ディスク(タイプ1)マッピングテーブル生成処理(ステップ340)の詳細な手順について、図14のフローチャートを参照して説明する。   Next, a detailed procedure of the logical disk (type 1) mapping table generation process (step 340) executed by the logical disk generation unit 2160 will be described with reference to the flowchart of FIG.

まず論理ディスク生成部2160は、論理アドレスを示す変数ADDRを0(より詳細には00000000H)に、ブロック数(より詳細にはブロック数のカウント値)を示す変数COUNTを0に、それぞれ初期設定する(ステップ3401)。末尾のHは、周知のように16進表現であることを示す。このステップ3401において、ADDR=0(00000000H)は、マッピングテーブルの先頭エントリの論理アドレスフィールドに登録される。次に論理ディスク生成部2160は、所定のループA(ステップ3402)を、終了条件が成立するまで繰り返す。この終了条件は、ADDR≧SIZEを満足することである。   First, the logical disk generation unit 2160 initializes a variable ADDR indicating a logical address to 0 (more specifically, 00000000H) and a variable COUNT indicating the number of blocks (more specifically, a count value of the number of blocks) to 0, respectively. (Step 3401). The H at the end indicates a hexadecimal representation as is well known. In this step 3401, ADDR = 0 (00000000H) is registered in the logical address field of the first entry of the mapping table. Next, the logical disk generation unit 2160 repeats a predetermined loop A (step 3402) until an end condition is satisfied. This termination condition is to satisfy ADDR ≧ SIZE.

論理ディスク生成部2160はループAにおいて、まず、ADDR(=0)が登録されたマッピングテーブルのエントリ(ADDRエントリ)のメディア番号フィールド及びブロック番号フィールドに、それぞれNM及びNBを登録する(ステップ3403)。ステップ3403において論理ディスク生成部2160は更に、メディア番号がNMのフラッシュメモリに対応するブロック割り当てテーブル232のブロック番号がNBのエントリに“1”(“1”のフラグ)を登録する。   In the loop A, the logical disk generation unit 2160 first registers NM and NB in the media number field and block number field of the entry (ADDR entry) of the mapping table in which ADDR (= 0) is registered (step 3403). . In step 3403, the logical disk creation unit 2160 further registers “1” (“1” flag) in the entry with the block number NB in the block allocation table 232 corresponding to the flash memory with the media number NM.

次に論理ディスク生成部2160は、COUNTがCHUNK未満であるかを判定する(ステップ3404)。もし、COUNTがCHUNK未満であるならば(ステップ3404のYes)、つまりカウントしたブロック数がチャンク数未満であるならば、論理ディスク生成部2160は、1つのチャンク(チャンク領域)についての処理(論理ディスクの対応する領域への割り当て)が終了していないものと判断する。この場合、論理ディスク生成部2160は、現在処理中のチャンクにおける次のブロックについての処理(対応する論理ブロックへの割り当て)のためにCOUNTを1インクリメントする(ステップ3405)。   Next, the logical disk generation unit 2160 determines whether COUNT is less than CHUNK (step 3404). If COUNT is less than CHUNK (Yes in step 3404), that is, if the counted number of blocks is less than the number of chunks, the logical disk generation unit 2160 performs processing (logical logic) for one chunk (chunk area). It is determined that the allocation to the corresponding area of the disk has not been completed. In this case, the logical disk generation unit 2160 increments COUNT by 1 for processing (assignment to the corresponding logical block) for the next block in the currently processed chunk (step 3405).

これに対し、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 disk generation unit 2160 determines that the processing for one chunk has been completed. To do. In this case, the logical disk generation unit 2160 updates NM to NM_FIRST, NB to NB + CHUNK, and COUNT to 0 for processing on the first block of the next chunk (chunk area) (step 3406). ).

ここで、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 disk generation unit 2160 returns the NM to NM_FIRST (step 3406), so that the logical disk generation unit 2160 can select one of the flash memories 220-0 to 220-4. The number of chunks of the flash memories 220-0 to 220-3 corresponding to CHUNK are allocated.

論理ディスク生成部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 step 3405 or 3406, the logical disk generation unit 2160 determines whether NM + 1 matches N_MEDIA + NM_FIRST (step 3407). N_MEDIA + NM_FIRST indicates the maximum memory number +1 among the memory numbers of the flash memory group constituting the corresponding flash memory pool. The flash memory with the maximum memory number +1 does not exist in the corresponding flash memory pool. Therefore, when NM + 1 matches N_MEDIA + NM_FIRST, the next media number of NM needs to be NM_FIRST (minimum media number). On the other hand, if NM + 1 does not match N_MEDIA + NM_FIRST, the media number next to NM is NM + 1.

そこで、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 disk generation unit 2160 increments NM by 1 (step 3408). The incremented NM indicates the media number of the flash memory in which the block to be processed next (block whose block number is NB) exists. On the other hand, if NM + 1 matches N_MEDIA (Yes in step 3407), the logical disk generation unit 2160 returns NM to NM_FIRST (step 3409). NM after being returned to NM_FIRST indicates the media number of the flash memory in which the block to be processed next (block whose block number is NB) exists.

論理ディスク生成部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 step 3408 or 3409, the logical disk generation unit 2160 increments ADDR by BLK_SIZE (step 3410). At this time, if ADDR = 00000000H and BLK_SIZE = 1 MB (= 00100000H), ADDR is updated from 00000000H to 00100000H. In this step 3410, ADDR = 00100000H is registered in the logical address field of the next entry (here, the second entry) in the mapping table. As a result, one loop A is completed, and among the blocks corresponding to the number of chunks (= CHUNK) constituting one chunk (chunk area), the COUNT-th block is assigned to the corresponding logical block. Is completed. At this time, if COUNT <CHUNK is not satisfied (No in step 3404), all blocks constituting one chunk have been allocated, and step 3406 is executed as described above for processing the next chunk. Is called.

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 disk generation unit 2160 exits from the loop A and ends the logical disk (type 1) mapping table generation process. Thereby, for example, the mapping table 233 of the type 1 logical disk shown in FIG. 10 is generated.

本実施形態において、マッピングテーブルの生成は、論理ディスク生成部2160の作業領域(図示せず)用いて行われる。この作業領域上で生成されたマッピングテーブル、つまりタイプ1の論理ディスクに対応するマッピングテーブルは、マッピングテーブル生成処理の終了時に、管理情報記憶部230に格納される。マッピングテーブルの生成が、管理情報記憶部230内で行われても構わない。   In the present embodiment, the mapping table is generated using a work area (not shown) of the logical disk generation unit 2160. The mapping table generated on the work area, that is, the mapping table corresponding to the type 1 logical disk is stored in the management information storage unit 230 at the end of the mapping table generation process. The generation of the mapping table may be performed in the management information storage unit 230.

次に、論理ディスク生成部2160によって実行される論理ディスク(タイプ2)マッピングテーブル生成処理(ステップ350)の詳細な手順について、図15のフローチャートを参照して説明する。   Next, the detailed procedure of the logical disk (type 2) mapping table generation process (step 350) executed by the logical disk generation unit 2160 will be described with reference to the flowchart of FIG.

まず論理ディスク生成部2160は、論理ディスク(タイプ1)マッピングテーブル生成処理におけるステップ3401と同様のステップ3501を実行する。次に論理ディスク生成部2160は、所定のループB(ステップ3502)を、終了条件が成立するまで繰り返す。この終了条件は、ADDR≧SIZEを満足することである。   First, the logical disk generation unit 2160 executes step 3501 similar to step 3401 in the logical disk (type 1) mapping table generation process. Next, the logical disk generation unit 2160 repeats a predetermined loop B (step 3502) until an end condition is satisfied. This termination condition is to satisfy ADDR ≧ SIZE.

論理ディスク生成部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 disk generation unit 2160 first executes step 3503 similar to step 3403, and then determines whether COUNT is less than CHUNK as in step 3404 (step 3504). If COUNT is less than CHUNK (Yes in step 3504), the logical disk generation unit 2160 selects COUNT for processing (assignment to the corresponding logical block) for the next block in the currently processed chunk. Increment by 1 (step 3505). On the other hand, if COUNT is not less than CHUNK (No in step 3504), the logical disk generation unit 2160 changes NB to NB + CHUNK and COUNT for processing on the first block of the next chunk (chunk area). Are updated to 0 (step 3506). In step 3506, unlike step 3406 in the case of creating the type 1 logical disk described above, NM is not returned to NM_FIRST.

ここで、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 disk generation unit 2160 is equalized to the flash memories 220-0 to 220-4. The number of different combinations of flash memories corresponding to CHUNK (that is, flash memories 220-0, 220-1, 220-2, 220-3, flash memories 220-4, 220-0, 220-1, 220-2, flash memories 220-3, 220-4, 220-0, 220-1, flash memories 220-2, 220-3, 220-4, 220-0, flash memories 220-1, 220-2, 220-3, 220-4) chunks are allocated.

論理ディスク生成部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 step 3505 or 3506, the logical disk generation unit 2160 determines whether NM + 1 matches N_MEDIA + NM_FIRST as in step 3407 (step 3507). If NM + 1 does not match N_MEDIA + NM_FIRST (No in step 3507), the logical disk generation unit 2160 increments NM by 1 (step 3508). On the other hand, if NM + 1 matches N_MEDIA + NM_FIRST (Yes in step 3507), the logical disk creation unit 2160 returns NM to NM_FIRST (step 3509).

論理ディスク生成部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 step 3508 or 3509, the logical disk generation unit 2160 increments ADDR by BLK_SIZE as in step 3410 (step 3510). In step 3510, the logical disk generation unit 2160 registers the incremented ADDR in the logical address field of the next entry in the mapping table. Thereby, one loop B is completed. The logical disk generation unit 2160 repeats the loop B until the end condition (ADDR ≧ BLK_SIZE) is satisfied. If the end condition is satisfied, the logical disk generation unit 2160 exits from the loop B and ends the logical disk (type 2) mapping table generation process. Thereby, for example, the mapping table 234 of the type 2 logical disk shown in FIG. 11 is generated. The generated mapping table corresponding to the type 2 logical disk is stored in the management information storage unit 230 in the same manner as the mapping table corresponding to the type 1 logical disk.

マッピングテーブルが生成されたことは、当該マッピングテーブルによって管理(定義)される論理ディスクが生成されたことと等価である。コントローラ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 controller 210 creates a logical disk, the user restarts the host computer 100. Then, the operating system of the host computer 100 detects, for example, an inquiry (INQUIRY) command conforming to the SCSI standard in order to detect (acquire) information about the storage device 200 such as information about the logical disk constructed in the storage device 200. Issued to the controller 210 via the host I / F 102.

コントローラ210は、ホスト計算機100からのINQUIRYコマンドに応答することで、論理ディスクがストレージ装置200内に生成されたことを当該ホスト計算機100通知する。ホスト計算機100のオペレーティングシステムは、この通知に基づき、生成された論理ディスクを読み出し/書き込みが可能なディスクとして検出する。これによりホスト計算機100上のプログラムは、検出された論理ディスクに対して読み出し/書き込みできるようになる。   The controller 210 notifies the host computer 100 that a logical disk has been created in the storage device 200 by responding to the INQUIRY command from the host computer 100. Based on this notification, the operating system of the host computer 100 detects the generated logical disk as a readable / writable disk. As a result, the program on the host computer 100 can be read / written to the detected logical disk.

次に、ストレージ装置200のコントローラ210におけるアドレス処理部214の動作について説明する。前述したようにコントローラ210のコマンド処理部212がホスト計算機100によって発行されるI/O系のSCSIコマンドを受信した場合、I/O処理部213は、アドレス処理部214を用いて論理ディスクに対する読み出し/書き込み処理を行う。   Next, the operation of the address processing unit 214 in the controller 210 of the storage apparatus 200 will be described. As described above, when the command processing unit 212 of the controller 210 receives an I / O system SCSI command issued by the host computer 100, the I / O processing unit 213 uses the address processing unit 214 to read data from the logical disk. / Write processing.

ホスト計算機100によって発行されるI/O系のSCSIコマンド、例えばホスト計算機100のオペレーティングシステムによって発行される読み出し/書き込み要求は、読み出し/書き込みデータの位置を示すセクタアドレスを含む。本実施形態において、セクタアドレスで指定されるセクタは、512バイトで構成されるものとする。この場合、アドレス処理部214は、セクタアドレスに512を乗ずることにより、セクタアドレスをバイトアドレスに変換する。   An I / O-related SCSI command issued by the host computer 100, for example, a read / write request issued by the operating system of the host computer 100 includes a sector address indicating the position of read / write data. In the present embodiment, it is assumed that the sector specified by the sector address is composed of 512 bytes. In this case, the address processing unit 214 converts the sector address into a byte address by multiplying the sector address by 512.

アドレス処理部214は、変換されたバイトアドレスからブロックサイズ−1に対応するビット部分を切り捨てる(補数の論理積)ことで、読み出し/書き込みされるべき論理ディスク(目的論理ディスク)内のブロックの論理アドレスを取得する。アドレス処理部214は、取得した論理アドレスが登録された、目的論理ディスクに対応するマッピングテーブルのエントリを検索する。アドレス処理部214は、検索されたマッピングテーブルのエントリに登録されているメディア番号及びブロック番号に基づき、読み出し/書き込みされるべき論理ディスク内のブロックを特定する。アドレス処理部214は更に、切り捨て前のバイトアドレスにブロックサイズ−1でマスク(論理積)することにより、読み出し/書き込みが開始されるべきブロック内の位置(オフセット)を取得する。   The address processing unit 214 truncates the bit part corresponding to the block size −1 from the converted byte address (complement logical product), thereby performing the logic of the block in the logical disk to be read / written (target logical disk). Get the address. The address processing unit 214 searches for a mapping table entry corresponding to the target logical disk in which the acquired logical address is registered. The address processing unit 214 specifies a block in the logical disk to be read / written based on the media number and block number registered in the searched mapping table entry. The address processing unit 214 further obtains a position (offset) within the block from which reading / writing is to be started by masking (logical product) the byte address before truncation with a block size of -1.

アドレス処理部214は、読み出し/書き込みが開始されるべきブロック内の位置を特定したならば、フラッシュメモリI/F処理部215に対して、該当するフラッシュメモリを対象にデータを読み出し/書き込みするための読み出し/書き込み要求を発行することにより、データの読み出し/書き込みを行う。   When the address processing unit 214 identifies the position in the block where reading / writing is to be started, the address processing unit 214 reads / writes data from / to the flash memory I / F processing unit 215 for the corresponding flash memory. Data is read / written by issuing a read / write request.

アドレス処理部214によるデータの読み出し/書き込みが完了すると、ホストI/F処理部211は、その旨を、ホスト計算機100に対して例えば割り込みにより通知する。ホスト計算機100のオペレーティングシステムはコントローラ210からの割り込みを検出すると、その旨を対応するプログラムに返して終了する。   When the reading / writing of data by the address processing unit 214 is completed, the host I / F processing unit 211 notifies the host computer 100 to that effect by an interrupt, for example. When the operating system of the host computer 100 detects an interrupt from the controller 210, it returns that fact to the corresponding program and ends.

以上に述べた論理ディスクの構成(図3及び図4参照)はRAID0(RAIDレベル0のRAID)に相当する。このような構成の論理ディスクでは、フラッシュメモリへの並列な読み書きが行われるので、RAID0と同様の高速化が見込める。   The logical disk configuration described above (see FIGS. 3 and 4) corresponds to RAID 0 (RAID level 0 RAID). Since the logical disk having such a configuration reads and writes data in parallel to the flash memory, the same high speed as RAID 0 can be expected.

次に、本実施形態で適用されるRAID1相当の冗長化について説明する。
RAID1と同様のミラーは、フラッシュメモリプールの複製を生成することで構成できる。例えば論理ディスク生成部2160は、全く同一サイズの2つのフラッシュメモリプールの一方をマスター、他方をスレーブとして、マスターのフラッシュメモリプールを用いて前述したような論理ディスクを生成する。アドレス処理部214は、論理ディスクへの書き込み時に、マスター側のフラッシュメモリにデータを書き込んだ後、スレーブ側のフラッシュメモリプールの同一位置にもデータを書き込む。またアドレス処理部214は、データの読み込みはマスター側のみから行う。マスター側に対する読み出し/書き込みでエラーが発生した場合、アドレス処理部214は、エラーが発生したフラッシュメモリのブロック割り当てテーブルの該当ブロックにエラーを示すフラグ(例えば値が2のフラグ)を書き込む。この場合、アドレス処理部214は、スレーブ側のフラッシュメモリを対象に読み出し/書き込みを行う。
Next, redundancy equivalent to RAID 1 applied in the present embodiment will be described.
A mirror similar to RAID 1 can be configured by creating a replica of the flash memory pool. For example, the logical disk generation unit 2160 generates a logical disk as described above using one of two flash memory pools of the same size as a master and the other as a slave, using the master flash memory pool. The address processing unit 214 writes data to the flash memory pool on the master side after writing data to the flash memory on the master side when writing to the logical disk. The address processing unit 214 reads data from only the master side. When an error occurs in reading / writing on the master side, the address processing unit 214 writes a flag (for example, a flag having a value of 2) indicating an error in the corresponding block of the block allocation table of the flash memory where the error has occurred. In this case, the address processing unit 214 performs reading / writing on the slave flash memory.

次に、本実施形態で適用されるRAID5相当の冗長化について説明する。
論理ディスク生成部2160は、チャンクの中の1つのブロックをパリティ専用のブロック、つまり当該チャンクの他のブロックに格納されるデータの冗長データとしてのパリティデータを保持するパリティブロック(冗長ブロック)に割り当てる。これにより、RAID5と同等の冗長化を実現することができる。例えば、チャンクを構成する複数のブロックのうち最後の1個のブロックをパリティブロックとすることで、RAID5と同様の冗長化を実現できる。但し、パリティブロックを導入する場合、マッピングテーブルの生成アルゴリズム及び読み出し/書き込み処理は次のように変更される必要がある。
Next, redundancy equivalent to RAID 5 applied in the present embodiment will be described.
The logical disk generation unit 2160 assigns one block in the chunk to a block dedicated to parity, that is, a parity block (redundant block) that holds parity data as redundant data of data stored in another block of the chunk. . Thereby, redundancy equivalent to RAID5 can be realized. For example, redundancy similar to RAID 5 can be realized by using the last one block among a plurality of blocks constituting a chunk as a parity block. However, when a parity block is introduced, the mapping table generation algorithm and read / write processing need to be changed as follows.

チャンクの最後のブロックの場合、論理ディスク生成部2160は、当該ブロックをマッピングテーブルに登録せず、論理アドレスの加算(ステップ3410または3510)も抑止する。一方、アドレス処理部214は、書き込み処理においてチャンクの最後のブロックにパリティを書き込み、読み出し処理においてパリティチェックする。読み出し/書き込みでエラーが発生した場合、アドレス処理部214は、エラーが発生したフラッシュメモリのブロック割り当てテーブルの該当ブロックにエラーを示すフラグ(例えば値が2のフラグ)を書き込む。また、エラーが発生したブロックからデータを読むことができない場合、アドレス処理部214はパリティを利用してデータを復元する。   In the case of the last block of the chunk, the logical disk generation unit 2160 does not register the block in the mapping table, and also suppresses the addition of the logical address (step 3410 or 3510). On the other hand, the address processing unit 214 writes parity in the last block of the chunk in the writing process, and checks the parity in the reading process. When an error occurs in reading / writing, the address processing unit 214 writes a flag indicating an error (for example, a flag having a value of 2) in the corresponding block of the block allocation table of the flash memory in which the error has occurred. When data cannot be read from the block in which an error has occurred, the address processing unit 214 restores the data using parity.

また、論理ディスクを構成するフラッシュメモリに不良が発生した場合、論理ディスク生成部2160は当該不良が発生したフラッシュメモリのブロック割り当てテーブルを参照して、ホスト計算機100の設定ツール101を通して、フラッシュメモリが故障したことをユーザに通知する。   In addition, when a failure occurs in the flash memory constituting the logical disk, the logical disk generation unit 2160 refers to the block allocation table of the flash memory in which the failure has occurred, and the flash memory is stored through the setting tool 101 of the host computer 100. Notify the user that a failure has occurred.

以上、フラッシュメモリプールの生成、論理ディスクの生成及び論理ディスクに対する読み出し/書き込みについて説明した。
本実施形態によれば、論理ディスクを構成するフラッシュメモリ群に書き込みを分散させることが、ブロックの入れ替えを行うことなくできる。つまりフラッシュメモリ群への書き込みの回数が均一になるのを、ブロックの入れ替えを行うことなく抑制できる。このため、フラッシュメモリ群への書き込みの回数の上限値を同時に越えることが、簡単に回避できる。つまり、フラッシュメモリが同時に故障することによる障害を、処理性能を低下させることなく減らすことができる。特に本実施形態においては、チャンクを構成するブロック数を、フラッシュメモリプールを構成するフラッシュメモリの数と「互いに素」にすることにより、フラッシュメモリ群への書き込みの回数が均一になることを、より効果的に抑制できる。
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 type 1 logical disk is generated using the above-described flash memory pool, the number of times of writing to each flash memory is different when the number of times of writing (frequency) differs for each logical disk. Uniformity can be effectively suppressed. Also, according to the present embodiment, by creating a type 2 logical disk using the above-described flash memory pool, the number of writes (frequency) of each logical disk is the same, but within the storage area of the same logical disk Thus, when there is a bias in the number of times of writing, it is possible to effectively prevent the number of times of writing in each flash memory from becoming uniform.

以上説明した少なくとも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 SYMBOLS 100 ... Host computer, 101 ... Setting tool, 102 ... Host I / F, 200 ... Storage apparatus, 210 ... Controller (storage controller), 211 ... Host I / F processing part, 212 ... Command processing part, 213 ... I / O Processing unit 214 ... Address processing unit, 215 ... Flash memory I / F processing unit, 216 ... Disk management unit, 217 ... Initialization processing unit, 220-0 to 220-4 ... Flash memory (nonvolatile memory), 221a, 221b ... Logical disk (type 1 logical disk), 222a, 222b ... Logical disk (type 2 logical disk), 230 ... Management information storage unit, 231 ... Flash memory pool table, 232 ... Block allocation table, 233, 234 ... Mapping table, 2160 ... logical disk generation unit, 2170 ... Flash memory pool generation unit, 2171 ... grouping unit, 2172 ... block division unit, 2173 ... chunk generation unit, 2174 ... logical disk type setting unit, 2175 ... block allocation table generation unit.

Claims (6)

書き込み回数に上限がある複数の書き換え可能な不揮発性メモリと、
ホスト計算機からのアクセス要求に基づいて、理ディスクを構成する前記不揮発性メモリへのアクセスを制御するストレージコントローラとを具備し、
前記ストレージコントローラは、
メモリプール生成手段と、
理ディスク生成手段とを具備し、
前記メモリプール生成手段は、
前記複数の不揮発性メモリのうちの第の数の不揮発性メモリをグループ化して、前記第の数の不揮発性メモリが順序付けて配置されたメモリプールを生成するグループ化手段と、
記第の数の不揮発性メモリの記憶領域を一定サイズのブロックに分割するブロック分割手段と、
前記第1の数の不揮発性メモリの配置順に従い、前記第の数の不揮発性メモリのうち、前記第の数未満である第2の数の不揮発性メモリのそれぞれから順に1つのブロックを選択して組み合わせたの数のブロックから構成される複数のチャンクを生成するチャンク生成手段とを具備し、
前記論理ディスク生成手段は、前記複数のチャンクを組み合わせて割り当てることにより前記論理ディスクを生成する
ストレージ装置。
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記載のストレージ装置。 The second number is pre Symbol storage apparatus according to claim 1 wherein the relatively prime to the first number. 前記論理ディスク生成手段は、前記チャンクを構成する先頭のブロックが前記第2の数の不揮発性メモリのうちの第1の不揮発性メモリに存在するブロックで構成されているチャンクを割り当てて前記論理ディスクを生成する請求項1記載のストレージ装置。The logical disk generation means allocates a chunk composed of a block in which a first block constituting the chunk is present in a first nonvolatile memory among the second number of nonvolatile memories, and allocates the logical disk. The storage device according to claim 1, wherein the storage device is generated. 前記論理ディスク生成手段は、初めに第1のチャンクを前記論理ディスクに割り当てた場合、次に前記第1のチャンクを構成するブロックのうち、最後のブロックが存在する不揮発性メモリの次の不揮発性メモリから選択したブロックが先頭のブロックを構成する第2のチャンクを前記論理ディスクに割り当てる請求項1記載のストレージ装置。When the first chunk is first allocated to the logical disk, the logical disk generation means is the next non-volatile memory of the non-volatile memory in which the last block is present among the blocks constituting the first chunk. The storage apparatus according to claim 1, wherein a second chunk in which a block selected from a memory constitutes a first block is allocated to the logical disk. 書き込み回数に上限がある複数の書き換え可能な不揮発性メモリと接続され、ホスト計算機からのアクセス要求に基づいて、理ディスクを構成する前記不揮発性メモリへのアクセスを制御するストレージコントローラにおいて、
メモリプール生成手段と、
理ディスク生成手段とを具備し、
前記メモリプール生成手段は、
前記複数の不揮発性メモリのうちの第の数の不揮発性メモリをグループ化して、前記第の数の不揮発性メモリが順序付けて配置されたメモリプールを生成するグループ化手段と、
記第の数の不揮発性メモリの記憶領域を一定サイズのブロックに分割するブロック分割手段と、
前記第1の数の不揮発性メモリの配置順に従い、前記第の数の不揮発性メモリのうち、前記第の数未満である第2の数の不揮発性メモリのそれぞれから順に1つのブロックを選択して組み合わせたの数のブロックから構成される複数のチャンクを生成するチャンク生成手段とを具備し、
前記論理ディスク生成手段は、前記複数のチャンクを組み合わせて割り当てることにより前記論理ディスクを生成する
ストレージコントローラ。
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の数の不揮発性メモリの配置順に従い、前記第の数の不揮発性メモリのうち、前記第の数未満である第2の数の不揮発性メモリのそれぞれから順に1つのブロックを選択して組み合わせたの数のブロックから構成される複数のチャンクを生成するステップと、
前記論理ディスク生成手段が、前記複数のチャンクを組み合わせて割り当てることにより前記論理ディスクを生成するステップと
を具備する論理ディスク生成方法。
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.
JP2011111424A 2011-05-18 2011-05-18 Storage device having a plurality of nonvolatile memories, storage controller, and logical disk generation method Active JP5215434B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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