JP2018185584A - Storage device, control program of storage device, and control method of storage device - Google Patents
Storage device, control program of storage device, and control method of storage device Download PDFInfo
- Publication number
- JP2018185584A JP2018185584A JP2017085537A JP2017085537A JP2018185584A JP 2018185584 A JP2018185584 A JP 2018185584A JP 2017085537 A JP2017085537 A JP 2017085537A JP 2017085537 A JP2017085537 A JP 2017085537A JP 2018185584 A JP2018185584 A JP 2018185584A
- Authority
- JP
- Japan
- Prior art keywords
- storage device
- storage
- ssd
- data
- firmware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
Description
本発明はストレージ装置、ストレージ装置の制御プログラムおよびストレージ装置の制御方法に関する。 The present invention relates to a storage apparatus, a storage apparatus control program, and a storage apparatus control method.
現在、データの保存にストレージ装置が利用されている。ストレージ装置は、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの記憶装置を複数有し、大容量の記憶領域を提供する。ストレージ装置は、RAID(Redundant Arrays of Independent Disks)技術により、複数の記憶装置それぞれの記憶領域を用いて論理的な記憶領域を提供することもある。RAIDを用いることで、データアクセスの高速化やデータ記憶の高信頼化を図れる。また、ストレージ装置では、論理的な記憶領域を複数設け、データアクセスに対する信頼性の向上や、シンプロビジョニング(Thin Provisioning)の技術による記憶容量の利用の効率化を図ることもある。 Currently, storage devices are used to store data. The storage device has a plurality of storage devices such as HDD (Hard Disk Drive) and SSD (Solid State Drive), and provides a large-capacity storage area. The storage apparatus may provide a logical storage area by using the storage areas of each of the plurality of storage apparatuses by RAID (Redundant Arrays of Independent Disks) technology. By using RAID, the speed of data access and the high reliability of data storage can be achieved. In addition, in a storage apparatus, a plurality of logical storage areas may be provided to improve the reliability of data access and to make efficient use of storage capacity by thin provisioning technology.
ところで、ストレージ装置の運用では、ストレージ装置の制御に用いられる制御プログラムであるファームウェアの更新が行われることがある。例えば、複数のディスク装置と、ディスク装置へのアクセス制御を行うコントローラモジュールとを有するストレージシステムにおいてファームウェアの更新を行う方法が提案されている(特許文献1)。この提案では、ストレージシステムは、コントローラモジュールの入出力制御チップのファームウェアのダウンロード処理を、ディスク装置に対する入出力処理と並行して実行しても、入出力処理が滞ることを防止することができる。 By the way, in the operation of the storage apparatus, firmware that is a control program used to control the storage apparatus may be updated. For example, a method for updating firmware in a storage system having a plurality of disk devices and a controller module for controlling access to the disk devices has been proposed (Patent Document 1). In this proposal, the storage system can prevent the input / output process from being delayed even if the firmware download process of the input / output control chip of the controller module is executed in parallel with the input / output process for the disk device.
なお、フラッシュメモリなどの不揮発性メモリへのデータ書き込み時に、データ書き込みに伴い無効にすべきページが属するブロックの有効ページ数をカウントし、有効ページ数が所定数以下のブロックをコンパクション処理の対象とするコントローラの提案がある(特許文献2)。 When writing data to a non-volatile memory such as a flash memory, the number of valid pages of the block to which the page to be invalidated along with the data writing belongs is counted, and blocks with the number of valid pages equal to or less than a predetermined number are targeted for compaction processing There is a proposal of a controller to perform (Patent Document 2).
記憶装置には、内蔵の不揮発性メモリに制御プログラム(例えば、ファームウェア)を記憶し、制御プログラムにより自装置の動作を制御するものがある。例えば、SSDではウェアレベリングやエラー訂正などの管理機能が制御プログラムによって実現されることもある。一方、記憶装置の制御プログラムは、不具合の解消やアルゴリズムの改善などのために、制御プログラムの配信元によって更新されることがある。制御プログラムが更新されると、更新後の制御プログラムを記憶装置に適用する(記憶装置上の制御プログラムを更新する)ことになる。 Some storage devices store a control program (for example, firmware) in a built-in nonvolatile memory, and control the operation of the device by the control program. For example, in SSD, management functions such as wear leveling and error correction may be realized by a control program. On the other hand, the control program for the storage device may be updated by the distribution source of the control program in order to solve the problem or improve the algorithm. When the control program is updated, the updated control program is applied to the storage device (the control program on the storage device is updated).
しかし、記憶装置における制御プログラムの更新中は、当該記憶装置に対するデータアクセスを行えなくなる。このため、任意のタイミングで記憶装置の制御プログラムの更新を行うと、制御プログラムの更新期間と衝突した場合、該当の記憶装置に対するデータアクセスに遅延が発生し、性能に影響を及ぼす可能性があるという問題がある。 However, while the control program in the storage device is being updated, data access to the storage device cannot be performed. For this reason, if the control program of the storage device is updated at an arbitrary timing, if there is a collision with the update period of the control program, a data access to the corresponding storage device may be delayed, which may affect performance. There is a problem.
1つの側面では、本発明は、制御プログラムの更新に伴う性能への影響を抑えることを目的とする。 In one aspect, an object of the present invention is to suppress an influence on performance associated with updating a control program.
1つの態様では、複数の記憶装置を有するストレージ装置が提供される。ストレージ装置は、記憶部と処理部とを有する。記憶部は、記憶装置に対するコマンドを記憶する。処理部は、記憶装置を制御する制御プログラムの更新指示を受信すると、記憶部が記憶するコマンドの数に基づいて、記憶装置が不要な領域を開放するガベージコレクションを実行中であると判定した場合、制御プログラムの更新を記憶装置に指示する。 In one aspect, a storage device having a plurality of storage devices is provided. The storage device includes a storage unit and a processing unit. The storage unit stores a command for the storage device. When the processing unit receives an update instruction for a control program that controls the storage device, the processing unit determines that the storage device is executing garbage collection to release an unnecessary area based on the number of commands stored in the storage unit Instruct the storage device to update the control program.
1つの側面では、制御プログラムの更新に伴う性能への影響を抑えることができる。 In one aspect, it is possible to suppress the influence on performance associated with the update of the control program.
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージ装置を示す図である。ストレージ装置1は、記憶部1a、処理部1bおよび記憶装置1c,1d,1e,1fを有する。記憶装置1c,1d,1e,1fをまとめて、記憶装置群A1と称する。ストレージ装置1は、情報処理装置2に接続される。ストレージ装置1および情報処理装置2は、所定のケーブルによって直接接続されてもよいし、ネットワークを介して接続されてもよい。ストレージ装置1は、情報処理装置2の業務処理により用いられる各種のデータ(業務データ)を記憶する。
Hereinafter, the present embodiment will be described with reference to the drawings.
[First Embodiment]
FIG. 1 illustrates a storage apparatus according to the first embodiment. The
ストレージ装置1は、記憶装置1c,1d,1e,1fそれぞれの記憶領域を用いて論理的な記憶領域を提供可能であり、制御プログラムであるファームウェアにより制御される。例えば、ストレージ装置1は、記憶装置1c,1dにより第1のRAIDグループ(RAID1)を構築し、記憶装置1e,1fにより第2のRAIDグループ(RAID1)を構築する。そして、例えば、ストレージ装置1は、第1のRAIDグループに属する第1の記憶領域、および、第2のRAIDグループに属する第2の記憶領域を組み合わせることで、情報処理装置2によりアクセス可能な論理的な記憶領域を提供する。あるいは、ストレージ装置1は、3以上の記憶装置によるRAIDグループ(例えば、RAID5)を複数作成し、各RAIDグループの記憶領域を組み合わせて、情報処理装置2によりアクセス可能な論理的な記憶領域を提供することもできる。
The
記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、フラッシュメモリなどの不揮発性記憶装置でもよい。処理部1bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部1bはプログラムを実行するプロセッサでもよい。「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
The
記憶装置1c,1d,1e,1fは、例えばSSDである。SSDは、フラッシュメモリを内蔵し、フラッシュメモリに業務データを格納する。記憶装置1cは、フラッシュメモリなどの業務データの格納用の記憶デバイスの他にも、ファームウェア保存用の不揮発性メモリ、ファームウェア実行用のRAMおよびプロセッサを内蔵する(図1では図示を省略している)。記憶装置1cのプロセッサは、当該不揮発性メモリに記憶されたファームウェアを記憶装置1cのRAMにロードして実行し、記憶装置1cの動作を制御する。記憶装置1d,1e,1fも記憶装置1cと同様に、業務データの格納用の記憶デバイス、ファームウェア保存用の不揮発性メモリ、ファームウェア実行用のRAMおよびプロセッサを内蔵する。
The
処理部1bは、記憶装置1c,1d,1e,1fのファームウェアの更新を制御する。具体的には、次の通りである。
処理部1bは、記憶装置群A1に記憶されたデータに対するアクセス要求を情報処理装置2から受信する。処理部1bは、受信したアクセス要求(例えば、データの書き込み要求)に応じてアクセス先の記憶装置を決定し、該当の記憶装置に対するアクセスコマンド(アクセス要求に応じたコマンド)を生成し、記憶部1aに格納する。記憶部1aは、各記憶装置に対するアクセスコマンドを記憶する。記憶部1aに格納されるアクセスコマンドは、アクセス待ち(または実行待ち)のコマンドであり、アクセス待ちコマンド(または実行待ちコマンド)と呼ばれる。
The
The
ここで、記憶部1aは、記憶装置1c,1d,1e,1fごとにアクセスコマンドを保持するキューを備える。例えば、記憶装置1cのキューは、キュー番号“1”のキューである。ここで、キュー番号“1”を、“#1”のように表記することがある。記憶装置1dのキューは、“#2”のキューである。記憶装置1eのキューは、“#3”のキューである。記憶装置1fのキューは、“#4”のキューである。
Here, the
例えば、処理部1bは、記憶装置1cに対する書き込みコマンドを“#1”のキューに格納する。処理部1bは、記憶装置1dに対する書き込みコマンドを“#2”のキューに格納する。処理部1bは、記憶装置1eに対する書き込みコマンドを“#3”のキューに格納する。処理部1bは、記憶装置1fに対する書き込みコマンドを“#4”のキューに格納する。こうして、処理部1bは、記憶部1aをキャッシュとして利用し、一端、記憶部1aにデータを格納し、情報処理装置2に対する応答を行ってから、アクセス要求とは非同期に記憶装置1c,1d,1e,1fへの書き込みを行う(ライトバックと呼ばれる)。これにより、処理部1bは、記憶部1aにデータを格納した時点で情報処理装置2に対する応答を行えるので、書き込みなどのアクセス要求に対する応答を早めることができる。
For example, the
処理部1bは、記憶装置1c,1d,1e,1fのファームウェアの更新指示を受信すると、記憶部1aに記憶された記憶装置1c,1d,1e,1fそれぞれに対するアクセス待ちコマンドの数を監視する。例えば、処理部1bは、情報処理装置2からファームウェアの更新指示を受信してもよいし、ユーザによるファームウェアの更新指示の操作入力を受け付けてもよい。記憶装置に適用する更新後のファームウェアのプログラムは、情報処理装置2によりストレージ装置1に提供されてもよい。あるいは、当該ファームウェアのプログラムは、所定の記録媒体を用いて、ストレージ装置1に提供されてもよい。処理部1bは、提供されたファームウェアのプログラムを記憶部1aに格納しておいてもよい。
When the
処理部1bは、アクセス待ちコマンドの数に基づいて、記憶装置1c,1d,1e,1fそれぞれがガベージコレクションを実行中であるか否かを判定する。
ここで、ガベージコレクションは、データの消去が可能な単位領域におけるデータを消去して、当該単位領域を再利用可能にする不要領域開放機能である。具体的には、ガベージコレクションでは、フラッシュメモリなどにおいて有効データおよび無効データが混在する第1の単位領域(例えば、ブロック)における有効データを、第2の単位領域に複製し、第1の単位領域のデータを一括して消去する。なお、「データの消去」は、「当該データが格納された記憶領域の解放」ともいえる。
The
Here, the garbage collection is an unnecessary area releasing function that erases data in a unit area where data can be erased, and makes the unit area reusable. Specifically, in garbage collection, valid data in a first unit area (for example, a block) in which valid data and invalid data are mixed in a flash memory or the like is copied to the second unit area, and the first unit area Erase all data at once. Note that “erasing data” can also be said to “release the storage area in which the data is stored”.
ガベージコレクションは、記憶装置1c,1d,1e,1fそれぞれにより自律的に実行される。ガベージコレクションは、各記憶装置が独自に実行する処理であり、例えば、数時間から数日に一回程度の頻度で発生する。ただし、前述のように、ガベージコレクションは、記憶装置1c,1d,1e,1fにより自律的に実行されるため、処理部1bにより、各記憶装置でガベージコレクションが発生するタイミングを予測することは困難である。
Garbage collection is autonomously executed by each of the
一方、記憶装置によりガベージコレクションが実行されている間は、該当の記憶装置に対するアクセス性能が低下する。すなわち、記憶装置がガベージコレクションを行っている間は、該当の記憶装置に対するアクセスコマンドによるアクセスが遅延する。このため、該当の記憶装置に対応するキューに保持されているアクセス待ちコマンドが処理されずに、キューに残存する。したがって、ガベージコレクションの実行中は、該当の記憶装置に対応するキューに保持されるアクセス待ちコマンドの数が過大になる可能性が高い。 On the other hand, while the garbage collection is being executed by the storage device, the access performance to the corresponding storage device is degraded. That is, while the storage device is performing garbage collection, access by the access command to the corresponding storage device is delayed. For this reason, the access waiting command held in the queue corresponding to the relevant storage device remains in the queue without being processed. Therefore, during the execution of garbage collection, there is a high possibility that the number of commands waiting for access held in the queue corresponding to the relevant storage device becomes excessive.
そこで、処理部1bは、例えば、アクセス待ちコマンドの数が、所定の閾値を超えた記憶装置について、ガベージコレクションを実行中であると判定する。一方、処理部1bは、例えば、アクセス待ちコマンドの数が所定の閾値以下の記憶装置について、ガベージコレクションを実行中でないと判定する。
Therefore, for example, the
例えば、図1のグラフは、処理部1bがファームウェアの更新指示を受け付けた後のある時点における、記憶装置1c,1d,1e,1fそれぞれに対するアクセス待ちコマンドの数(アクセス待ちコマンド数)を示す。記憶装置1cに対するアクセス待ちコマンド数は、閾値を超過している。記憶装置1d,1e,1fに対するアクセス待ちコマンド数は閾値を超過していない。この場合、処理部1bは、記憶装置1cがガベージコレクションを実行中であると判定する。一方、処理部1bは、記憶装置1d,1e,1fがガベージコレクションを実行中でないと判定する。
For example, the graph of FIG. 1 shows the number of commands waiting for access (number of commands waiting for access) for each of the
処理部1bは、ある記憶装置についてガベージコレクションを実行中であると判定された場合に、ファームウェアの更新を当該記憶装置に指示する。上記の例でいえば、処理部1bは、ガベージコレクションを実行中であると判定された記憶装置1cに対してファームウェアの更新を指示する。このとき、処理部1bは、適用すべきファームウェアのプログラムを記憶装置1cに提供する。一方、処理部1bは、この段階では、記憶装置1d,1e,1fに対してファームウェアの更新を指示しない。
When it is determined that garbage collection is being executed for a storage device, the
例えば、ファームウェアの更新の指示を受け付けた記憶装置1cは、ガベージコレクションの実行を一時中断して、記憶装置1cにより保持されるファームウェアの更新を行い、更新完了後にガベージコレクションの実行を再開する。
For example, the
こうして、処理部1bは、記憶装置1c,1d,1e,1fに対して、ファームウェアの更新を順次行う。
これにより、ファームウェアの更新に伴う性能への影響を抑えることができる。具体的には次の通りである。
Thus, the
Thereby, it is possible to suppress the influence on the performance due to the firmware update. Specifically, it is as follows.
記憶装置におけるファームウェアの更新中は、当該記憶装置に対するデータアクセスを行えなくなる。このため、任意のタイミングで記憶装置のファームウェアの更新を行うと、該当の記憶装置に対するデータアクセスに遅延が発生し、性能に影響を及ぼす可能性があるという問題がある。 During the firmware update in the storage device, data access to the storage device cannot be performed. Therefore, if the firmware of the storage device is updated at an arbitrary timing, there is a problem that a delay occurs in data access to the corresponding storage device, which may affect the performance.
そこで、処理部1bは、記憶装置によりガベージコレクションが実行中である期間を利用して、該当の記憶装置によるファームウェアの更新も実行させる。ガベージコレクション中は、そもそも記憶装置のアクセス性能が低下する期間であるため、ファームウェアの更新も当該期間において実行してしまう方が、業務運用への影響を低減できる。なぜなら、ガベージコレクション中でない通常運用中にファームウェア更新を行うと、ガベージコレクションとは別に、記憶装置へのアクセスを行えない時間帯が発生することになるからである。ガベージコレクションの期間中にファームウェア更新も併せて行うことで、記憶装置へのアクセスを行えない時間帯が余計に発生することを抑えられ、性能への影響を抑えられる。
Therefore, the
また、複数のRAIDグループを用いて、シンプロビジョニングにより論理的な記憶領域をユーザに割り当てる場合に、ファームウェア更新中の記憶装置を避けたアクセス制御を実現できる。具体的には次の制御が考えられる。 In addition, when a logical storage area is allocated to a user by thin provisioning using a plurality of RAID groups, it is possible to realize access control that avoids a storage device during firmware update. Specifically, the following control can be considered.
第1に、処理部1bは、ファームウェア更新中の記憶装置が属する第1のRAIDグループへの新規データの書き込み要求に対して、第1のRAIDグループ以外の第2のRAIDグループの記憶領域を当該新規データの書き込み先に割り当てる。
First, in response to a request for writing new data to the first RAID group to which the storage device whose firmware is being updated belongs, the
第2に、処理部1bは、ファームウェア更新中の記憶装置が属する第1のRAIDグループに格納された既存データの更新要求に対し、既存データの格納先の記憶領域の割り当てを第1のRAIDグループから第2のRAIDグループに変更する。処理部1bは、その上で、第2のRAIDグループに属する他の記憶装置に対して書き込み(既存データに対する更新後のデータの書き込み)を実行する。
Second, in response to an update request for existing data stored in the first RAID group to which the storage device whose firmware is being updated belongs, the
第3に、処理部1bは、ファームウェア更新中の記憶装置が属するRAIDグループに格納された既存データの読み出し要求に対し、ファームウェア更新中の記憶装置以外の他の記憶装置により当該既存データを構築し、応答する。例えば、処理部1bは、RAID1であれば、ミラーとなる他の記憶装置から既存データを取得し、応答する。あるいは、処理部1bは、RAID5であれば、パリティなどを記憶する複数の他の記憶装置から既存データを取得し、応答する。
Third, in response to a request to read existing data stored in the RAID group to which the storage device whose firmware is being updated belongs, the
このようにして、処理部1bは、ファームウェア(制御プログラム)の更新に伴う性能への影響を抑えて、記憶装置群A1に記憶されたデータに対するアクセスを行うことができる。
In this way, the
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムの例を示す図である。第2の実施の形態の情報処理システムは、ストレージ装置10およびサーバ20を含む。ストレージ装置10およびサーバ20は、例えば、SAN(Storage Area Network)などのネットワークを介して接続される。ストレージ装置10およびサーバ20は、所定のケーブルによって直接接続されてもよい。
[Second Embodiment]
FIG. 2 is a diagram illustrating an example of an information processing system according to the second embodiment. The information processing system according to the second embodiment includes a
ストレージ装置10は、複数のSSD(複数の記憶装置の一例)を備える。ストレージ装置10は、複数のSSDにより、大容量の記憶領域をサーバ20に提供する。ストレージ装置10は、2以上のSSDを1つのグループ(RAIDグループ)とする。ストレージ装置10は、1つのRAIDグループに属する2以上のSSDを用いて、RAID(RAIDレベルは1以上であるとする)を構築する。複数のRAIDグループのRAIDレベルは同じである。
The
ストレージ装置10は、複数のRAIDグループにおける記憶領域を組み合わせることで、サーバ20によりアクセス可能な仮想的なボリューム(仮想ボリューム)を提供する。仮想ボリュームに対する実容量は、シンプロビジョニングの技術により割り当てられる。これにより、ストレージ装置10における記憶容量の効率的な利用が図られる。
The
ストレージ装置10は、第1の実施の形態のストレージ装置1の一例である。
サーバ20は、ユーザの業務処理を行う業務アプリケーションを実行するサーバコンピュータである。サーバ20は、ストレージ装置10に記憶されたデータを用いて業務処理を行う。サーバ20は、新たなデータをストレージ装置10に書き込むことがある。サーバ20は、ストレージ装置10に記憶されているデータを更新することもある。また、サーバ20は、ストレージ装置10に記憶されているデータを読み出すこともある。更に、サーバ20は、ストレージ装置10に記憶されているデータを削除することもある。
The
The
図3は、ストレージ装置のハードウェア例を示す図である。ストレージ装置10は、コントローラモジュール(CM:Controller Module)100およびドライブ収納部200を有する。
FIG. 3 is a diagram illustrating a hardware example of the storage apparatus. The
CM100は、ドライブ収納部200に収納されている各SSDに対するデータアクセスを制御するストレージ制御装置である。CM100は、RAIDコントローラ、または、単にコントローラと呼ばれることもある。ストレージ装置10は、複数のCMを備えてもよい。複数のCMによりデータアクセス機能を冗長化させることで、データアクセス機能の可用性の向上やデータアクセス性能の向上を図ることもある。
The
ドライブ収納部200は、SSD50,50a,50b,・・・を収納する収納装置である。ドライブ収納部200は、ドライブエンクロージャと呼ばれることもある。SSD50,50a,50b,・・・は、フラッシュメモリを備える記憶装置である。
The
ここで、サーバ20により発行された新規データの書き込みのアクセス要求や、既存データの更新のアクセス要求は、CM100のキャッシュメモリを用いたライトバック方式で処理される。具体的には次の通りである。
Here, an access request for writing new data or an access request for updating existing data issued by the
(1)CM100は、サーバ20から書き込みのアクセス要求を受信する。書き込みのアクセス要求は、書き込み対象のデータを含む。(2)CM100は、CM100のキャッシュメモリに、書き込み対象のデータを書き込む。(3)CM100は、書き込みが完了した旨の通知をサーバ20に送信する。(4)CM100は、キャッシュメモリに蓄積された書き込み対象のデータを、サーバ20によるアクセス要求とは非同期に、SSD50,50a,50b,・・・に書き込む。
(1) The
このように、ライトバック方式では、一連の手順の中にキャッシュメモリを介在させる。これにより、サーバ20およびCM100の間のデータの転送速度と、CM100からSSD50,50a,50b,・・・へのデータの書き込み速度との差によるCM100からサーバ20への応答遅延を低減する。
As described above, in the write back method, the cache memory is interposed in a series of procedures. This reduces the response delay from the
図4は、CMのハードウェア例を示す図である。CM100は、プロセッサ101、RAM102、キャッシュメモリ103、媒体リーダ104、NVRAM(Non-Volatile RAM)105、DI(Drive Interface)106、CA(Channel Adaptor)107、NA(Network Adaptor)108を有する。各ハードウェアはCM100のバスに接続されている。
FIG. 4 is a diagram illustrating an example of CM hardware. The
プロセッサ101は、CM100の情報処理を制御するハードウェアである。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
The
RAM102は、CM100の主記憶装置である。RAM102は、プロセッサ101に実行させるファームウェアのプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
The
キャッシュメモリ103は、ライトバック方式によるSSDへのデータ書き込みに用いられる揮発性の半導体メモリである。キャッシュメモリ103は、ライトバックの処理に用いられるため、ライトバックキャッシュと呼ばれてもよい。キャッシュメモリ103は、プロセッサ101による書き込み制御に用いられる各種データも記憶する。
The
媒体リーダ104は、記録媒体11に記録されたプログラムやデータを読み取る装置である。記録媒体11として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用できる。媒体リーダ104は、例えば、プロセッサ101からの命令に従って、記録媒体11から読み取ったプログラムやデータをRAM101またはNVRAM105に格納する。
The
NVRAM105は、CM100の動作制御に用いられるファームウェアを記憶する不揮発性メモリである。プロセッサ101は、NVRAM105に記憶されたファームウェアのプログラムをRAM102にロードすることで、各種の機能を発揮する。
The
DI106は、ドライブ収納部200との接続に用いられるインタフェースである。DI106としては、例えば、SAS(Serial Attached SCSI(SCSIはSmall Computer System Interfaceの略))やファイバチャネル(FC:Fibre Channel)などのインタフェースを用いることができる。
The
CA107は、SAN30を介してサーバ20と通信する通信インタフェースである。CA107として、例えばFCのインタフェースを用いることができる。CA107として、FC以外のインタフェース(例えば、iSCSI(Internet Small Computer System Interface)など)が用いられることもある。
The
NA108は、LAN30aを介してサーバ20や、LAN30aを介してアクセス可能な他のサーバコンピュータと通信する通信インタフェースである。NA108として、例えば、イーサネット(登録商標)のインタフェースを用いることができる。
The
図5は、SSDのハードウェア例を示す図である。SSD50は、コントローラ51、NVRAM52、接続IF(InterFace)53およびフラッシュメモリ54を有する。各ハードウェアは、SSD50のバスに接続されている。SSD50a,50b,・・・もSSD50と同様のハードウェアにより実現される。
FIG. 5 is a diagram illustrating an example of SSD hardware. The
コントローラ51は、フラッシュメモリ54に対するデータの書き込みや読み出しなどのアクセス制御を行う。コントローラ51は、プロセッサおよびRAM(図5では図示を省略している)を内蔵し、当該RAMにロードされたファームウェアf1を、プロセッサにより実行することで、所定の機能を実現する。ファームウェアf1により実現される機能としては、例えば、エラー訂正、ウェアレベリング、エラーブロックの管理およびガベージコレクションなどが挙げられる。
The
また、コントローラ51は、CM100によるファームウェアf1の更新の指示に応じて、NVRAM52に記憶されているファームウェアf1を更新する。具体的には、コントローラ51は、改版後のファームウェアをCM100から取得して、NVRAM52に書き込む。コントローラ51は、1世代前のファームウェアf1をNVRAM52に残した状態で、改版後のファームウェアをNVRAM52に書き込んでもよい。あるいは、コントローラ51は、ファームウェアf1を改版後のファームウェアにより上書きしてもよい。
Further, the
NVRAM52は、ファームウェアf1を記憶する不揮発性メモリである。前述のように、NVRAM52により記憶されるファームウェアは、コントローラ51により更新される。NVRAM52は、コントローラ51に内蔵されてもよい。
The
接続IF53は、ドライブ収納部200に接続するためのインタフェースである。接続IF53としては、例えば、SASのインタフェースを用いることができる。
フラッシュメモリ54は、ユーザの業務処理に用いられる各種のデータを記憶する。フラッシュメモリ54は、コントローラ51の制御により、フラッシュメモリ54に内蔵される記憶素子に対して電気的にデータの書き込みを行う。
The connection IF 53 is an interface for connecting to the
The
ここで、フラッシュメモリ54の記憶領域は、複数のブロックに区分される。ブロックは複数のページを含む。ページは、データの読み出しや書き込みが行われる記憶領域の単位である。一方、フラッシュメモリ54では、ブロック単位でデータが消去される。したがって、ブロック内の無効データが格納されたページを再利用可能にするためには当該無効データを消去することになるが、この場合、無効データのみを消去することはできず、該当のブロック内の全てのページのデータを消去することになる。コントローラ51は、ガベージコレクションと呼ばれる処理により、ブロック単位のデータの消去を行う。以下の説明では、ガベージコレクションを、GC(Garbage Collection)と略記することがある。
Here, the storage area of the
図6は、ガベージコレクションの例を示す図である。図6(A)、図6(B)、図6(C)は、フラッシュメモリ54におけるブロック54a,54b,54c,54dを例示している。ブロック54aは、ページP11,P12,P13,P14を含む。ブロック54bは、ページP21,P22,P23,P24を含む。ブロック54cは、ページP31,P32,P33,P34を含む。ブロック54dは、ページP41,P42,P43,P44を含む。
FIG. 6 is a diagram illustrating an example of garbage collection. FIGS. 6A, 6B, and 6C illustrate
図6(A)において、ページP11,P12,P13,P14,P21,P23,P24,P31,P33,P41,P44は、有効なデータ(有効データ)を記憶しているページである。また、ページP22は、無効なデータ(無効データ)を記憶しているページである。更に、ページP32,P34,P42,P43は、データを記憶していない空きページである。 In FIG. 6A, pages P11, P12, P13, P14, P21, P23, P24, P31, P33, P41, and P44 are pages that store valid data (valid data). The page P22 is a page that stores invalid data (invalid data). Furthermore, pages P32, P34, P42, and P43 are empty pages that do not store data.
例えば、コントローラ51は、ページP22を再利用可能にするために、ブロック54bに属するページP21,P23,P24に記憶されている有効データを空きページに複製する。具体的には、コントローラ51は、ページP21に記憶されている有効データを複製し、複製された有効データをページP32に格納する。コントローラ51は、ページP23に記憶されている有効データを複製し、複製された有効データをページP43に格納する。コントローラ51は、ページP24に記憶されている有効データを複製し、複製された有効データをページP34に格納する。
For example, the
図6(B)は、コントローラ51による上記の有効データの複製後のブロック54a,54b,54c,54dを示している。具体的には、空きページであったページP32に、ページP21の有効データの複製が格納されている。また、空きページであったページP34に、ページP24の有効データの複製が格納されている。更に、空きページであったページP43に、ページP23の有効データの複製が格納されている。
FIG. 6B shows the
コントローラ51は、ブロック54bに格納されているデータ(すなわち、ページP21,P22,P23,P24に記憶されているデータ)を消去する(あるいは、「ブロック54bを解放する」といってもよい)。
The
図6(C)は、コントローラ51によるブロック54bに格納されているデータの消去後のブロック54a,54b,54c,54dを示している。こうして、コントローラ51は、ページP22の無効データを消去する場合でも、ガベージコレクションにより、ブロック54bの単位でデータを消去し、ブロック54b全体を再利用可能にする。
FIG. 6C shows the
ここで、ガベージコレクションは、コントローラ51により、例えば、数時間から数日に一回程度の頻度で実行される。ガベージコレクションの実行中には、該当のSSDのアクセス性能が低下する。ガベージコレクションの所要時間は、数分(例えば、5分)程度である。ガベージコレクションは、SSD50においてコントローラ51により自律的に実行されるため、CM100側でガベージコレクションが発生するタイミングを予測することは困難である。
Here, the garbage collection is executed by the
図7は、CMの機能例を示す図である。CM100は、ファームウェア更新制御部110およびIO(Input / Output)制御部120を有する。ファームウェア更新制御部110およびIO制御部120は、例えば、RAM102に記憶されたプログラムを、プロセッサ101により実行することで、プロセッサ101により発揮される機能である。ただし、ファームウェア更新制御部110およびIO制御部120は、FPGAやASICなどのハードワイヤードロジックにより実現されてもよい。
FIG. 7 is a diagram illustrating an example of CM functions. The
ファームウェア更新制御部110は、キャッシュメモリ103に記憶される情報に基づいて、SSD50,50a,50b,・・・によるファームウェアの更新のタイミングを制御する。具体的には、ファームウェア更新制御部110は、SSD50,50a,50b,・・・のファームウェアの更新指示の入力を受け付ける。当該更新指示は、管理者によりCM100に入力されてもよいし、サーバ20または他のサーバコンピュータによりLAN30aを介して、CM100に入力されてもよい。更新指示が管理者によりCM100に入力される場合、記録媒体11を用いて、更新後のファームウェアのプログラムが、CM100に提供される。あるいは、更新指示がサーバ20または他のサーバコンピュータによりCM100に入力される場合、サーバ20または他のサーバコンピュータによりLAN30aを介して、更新後のファームウェアのプログラムが、CM100に提供される。
Based on information stored in the
そして、ファームウェア更新制御部110は、サーバ20によるストレージ装置10へのアクセス状況や、SSD50,50a,50b,・・・それぞれに対するアクセス待ちコマンドを監視する。ファームウェア更新制御部110は、当該監視に応じて、SSD毎に、ファームウェアの更新のタイミングを決定する。ファームウェア更新制御部110は、あるSSDにおいてファームウェアの更新を行うと決定すると、該当のSSDに対して更新後のファームウェアを提供し、ファームウェアの更新を指示する。ファームウェア更新制御部110は、ファームウェアを更新中であるSSDの識別情報を、キャッシュメモリ103に格納する。なお、SSDによるファームウェアの更新の所要時間は、数秒(例えば、5秒)程度である。
Then, the firmware
IO制御部120は、キャッシュメモリ103に記憶される情報に基づいて、ファームウェア更新中のSSDに対するIOを制御する。具体的には、ファームウェア更新中のSSDに対するIOを、別のSSDに振り替えたり、ファームウェア更新中のSSDが属するRAIDグループにおける他のSSDを用いて処理したりする。例えば、IO制御部120は、ファームウェア更新制御部110によりキャッシュメモリ103に格納されたファームウェアを更新中であるSSDの識別情報を参照することで、ファームウェア更新中のSSDを特定する。
Based on information stored in the
図8は、チャンクの例を示す図である。RAIDグループにおける各SSDの記憶領域はチャンクと呼ばれる単位で管理される。例えば、SSD50は、チャンクa,b,c,d,eを含む(SSD50には更に多くのチャンクが含まれ得る)。ここで、識別情報“a”で表されるチャンクを、“チャンクa”のように表記している。
FIG. 8 is a diagram illustrating an example of chunks. The storage area of each SSD in the RAID group is managed in units called chunks. For example, the
図9は、チャンク割り当て管理テーブルの例を示す図である。チャンク割り当て管理テーブル111は、キャッシュメモリ103に記憶される。チャンク割り当て管理テーブル111は、Writeデータ(書き込み対象のデータ)と、チャンクとの対応関係を管理するためのテーブルである。チャンク割り当て管理テーブル111は、Writeデータおよびチャンクの項目を含む。
FIG. 9 is a diagram illustrating an example of the chunk allocation management table. The chunk allocation management table 111 is stored in the
Writeデータの項目には、Writeデータの識別情報が登録される。チャンクの項目には、当該Writeデータの書き込み先のチャンクの識別情報が登録される。例えば、チャンク割り当て管理テーブル111には、Writeデータが“1”、チャンクが“a,b”というレコードが登録されている。これは、識別情報“1”に対応するWriteデータの書き込み先が、チャンクa,bであることを示す。チャンク割り当て管理テーブル111には、他のWriteデータに対しても同様に、書き込み先のチャンクの識別情報が対応付けられている。 The write data identification information is registered in the write data item. In the chunk item, the identification information of the chunk to which the write data is written is registered. For example, in the chunk allocation management table 111, a record in which Write data is “1” and chunks are “a, b” is registered. This indicates that the write data write destination corresponding to the identification information “1” is chunks a and b. In the chunk allocation management table 111, similarly to other write data, identification information of the write destination chunk is associated.
ここで、チャンク割り当て管理テーブル111は、キャッシュメモリ103に、SSD毎に格納される(チャンク割り当てテーブルは、該当のSSDの識別情報と対応付けられてキャッシュメモリ103に格納される)。各SSDのチャンク割り当て管理テーブルは、ストレージ装置10の電源をオフにする際(当該電源がオフになる直前)に、プロセッサ101により、SSD50,50a,50b,・・・の所定の記憶領域(不揮発性の記憶領域)に格納される。また、各SSDのチャンク割り当て管理テーブルは、ストレージ装置10の電源をオンにする際(例えば、当該電源のオンのための処理の間)に、プロセッサ101により、SSD50,50a,50b,・・・の所定の記憶領域から読み出されて、キャッシュメモリ103に格納される。
Here, the chunk allocation management table 111 is stored in the
図10は、サーバのIO数の監視例を示す図である。ファームウェア更新制御部110は、サーバ20によるストレージ装置10へのIO数を監視することで、サーバ20によるアクセス状況を監視する。サーバ20によるIO数は、プロセッサ101が受け付けたサーバ20による書き込みや読み出しのアクセス要求の数である。例えば、ファームウェア更新制御部110は、サーバ20から単位時間当たりに受け付けたIO数を得ることで、現在、サーバ20によるアクセス要求が規定数よりも多いか、または、規定数以下かを判定し得る。サーバ20によるアクセス要求が規定数よりも多い場合、サーバ20では、ユーザの業務処理が活発に行われていると推定される。また、サーバ20によるアクセス要求が規定数以下の場合、サーバ20では、ユーザの業務処理の実行が不活発であると推定される。ファームウェア更新制御部110は、RAIDグループ毎に、IO数を監視してもよい。
FIG. 10 is a diagram illustrating an example of monitoring the number of IOs of the server. The firmware
なお、アクセス要求は、前述のライトバックの方法により、キャッシュメモリ103に保持される(具体的な保持方法は、図11において説明される)。そして、プロセッサ101は、キャッシュメモリ103に保持された当該アクセス要求に応じて、所定のRAIDグループ(例えば、SSD50,50aが属するRAIDグループG1)に対するアクセスを行う。
The access request is held in the
図11は、SSDに対するアクセス待ちコマンドの監視例を示す図である。前述のように、プロセッサ101は、ライトバック方式によって、サーバ20からのアクセス要求を処理する。このため、ファームウェア更新制御部110は、サーバ20から受け付けたアクセス要求に基づいて、SSD50,50a,50b,・・・それぞれに対するアクセスコマンドをキャッシュメモリ103に格納する。キャッシュメモリ103に格納された各SSDに対するアクセスコマンドは、アクセス待ちとなっているコマンドである。このため、キャッシュメモリ103に格納されたアクセスコマンドを、アクセス待ちコマンドと称する。
FIG. 11 is a diagram illustrating an example of monitoring an access wait command for the SSD. As described above, the
キャッシュメモリ103には、SSD50,50a,50b,・・・それぞれのキューが設けられ、各キューにアクセス待ちコマンドが格納される。例えば、SSD50(図中“SSDx”と表記)に対応するキューに、SSD50に対する複数のアクセス待ちコマンド(アクセス待ちコマンド群)が格納される。また、SSD50a(図中“SSDy”と表記)に対応するキューに、SSD50aに対する複数のアクセス待ちコマンド(アクセス待ちコマンド群)が格納される。
The
例えば、ファームウェア更新制御部110は、SSD50に対応するキューに格納されたアクセス待ちコマンドの数を求めることで、SSD50に対するアクセス待ちコマンドの数を得る。同様に、ファームウェア更新制御部110は、SSD50aに対応するキューに格納されたアクセス待ちコマンドの数を求めることで、SSD50aに対するアクセス待ちコマンドの数を得る。ファームウェア更新制御部110は、他のSSDに対しても同様にして、アクセス待ちコマンドの数を求めることができる。
For example, the firmware
次に、CM100によるSSDのファームウェア更新の処理手順を説明する。
図12は、ファームウェア更新例を示すフローチャートである。以下、図12に示す手順をステップ番号に沿って説明する。
Next, an SSD firmware update processing procedure by the
FIG. 12 is a flowchart illustrating an example of firmware update. In the following, the procedure illustrated in FIG. 12 will be described in order of step number.
(S11)ファームウェア更新制御部110は、SSD50,50a,50b,・・・のファームウェア更新の指示(更新指示)を受け付ける。前述のように、ファームウェア更新制御部110は、記録媒体11やLAN30aを介して、更新後のファームウェアのプログラムを取得し、RAM102またはキャッシュメモリ103に格納する。
(S11) The firmware
(S12)ファームウェア更新制御部110は、IO数を監視し、各SSDについてIO数が規定数以下であるか否かを判定する。ファームウェア更新制御部110によるIO数の監視方法は、図10で例示した通りである。例えば、ファームウェア更新制御部110は、サーバ20から受け付けるIO数の頻度(単位時間当たりのIO数)を取得し、IO数の頻度を、規定数(規定の頻度)以下であるか否かを、RAIDグループ単位に判定する。あるRAIDグループについてIO数(IO数の頻度)が規定数以下である場合、ファームウェア更新制御部110は、ステップS13に処理を進める。何れのRAIDグループについてもIO数(IO数の頻度)が規定数よりも大きい場合、ファームウェア更新制御部110は、ステップS14に処理を進める。ここで、ステップS12の判定に用いられる規定数は、運用に応じて予め定められ、ファームウェア更新制御部110に対して予め設定される。
(S12) The firmware
(S13)ファームウェア更新制御部110は、IO数(IO数の頻度)が規定数以下のRAIDグループに属するSSDのファームウェア更新を実施するように、該当のSSDに対して指示する。例えば、ファームウェア更新制御部110は、1つのSSDずつ順番にファームウェア更新を行うよう指示する。このとき、ファームウェア更新制御部110は、更新後のファームウェアのプログラムを該当のSSDに対して提供する。該当のSSDのコントローラは、当該指示に応じて、更新後のファームウェアのプログラムを該当のSSDのNVRAMに格納し、自SSDを再起動させ、更新後のファームウェアでの動作を開始し、更新完了をファームウェア更新制御部110に応答する。そして、ファームウェア更新制御部110は、ステップS16に処理を進める。
(S13) The firmware
(S14)ファームウェア更新制御部110は、キャッシュメモリ103に格納されたSSD毎のアクセス待ちコマンドの数に基づいて、何れかのSSDにおいてガベージコレクション(GC)を検出したか否かを判定する。何れかのSSDにおいてガベージコレクションを検出した場合、ファームウェア更新制御部110は、ステップS15に処理を進める。ガベージコレクションを検出していない場合、ファームウェア更新制御部110は、ステップS12に処理を進める。
(S14) The firmware
ここで、図11で例示したように、ファームウェア更新制御部110は、キャッシュメモリ103を参照し、あるSSDにおいて、アクセス待ちコマンドの数が所定の閾値以上になった場合に、該当のSSDにおけるガベージコレクションを検出する。一方、ファームウェア更新制御部110は、各SSDについて、アクセス待ちコマンドの数が所定の閾値未満である場合に、ガベージコレクションを検出しない。ステップS14の判定に用いられる閾値は、運用に応じて予め定められ、ファームウェア更新制御部110に対して予め設定される。
Here, as illustrated in FIG. 11, the firmware
(S15)ファームウェア更新制御部110は、ガベージコレクションが検出されたSSDのファームウェア更新を実施するように、該当のSSDに対して指示する。このとき、ファームウェア更新制御部110は、更新後のファームウェアのプログラムを該当のSSDに対して提供する。該当のSSDのコントローラは、当該指示に応じて、更新後のファームウェアのプログラムを該当のSSDのNVRAMに格納し、ガベージコレクションを一時中断し、自SSDを再起動させ、更新後のファームウェアでの動作を開始する。該当のSSDのコントローラは、更新後のファームウェアでの動作開始後に、一時中断したガベージコレクションを再開する。また、該当のSSDのコントローラは、ファームウェアの更新完了を、ファームウェア更新制御部110に応答する。
(S15) The firmware
(S16)ファームウェア更新制御部110は、全SSDのファームウェアの更新を完了したか否かを判定する。全SSDのファームウェアの更新を完了した場合、ファームウェア更新制御部110は、ステップS17に処理を進める。全SSDのファームウェアの更新を完了していない場合、ファームウェア更新制御部110は、ステップS12に処理を進める。
(S16) The firmware
(S17)ファームウェア更新制御部110は、各SSDのファームウェア更新の完了を通知する。具体的には、ファームウェア更新制御部110は、ファームウェア更新の完了を示すメッセージを、更新指示を行ったサーバ20または他のサーバコンピュータに送信してもよい。あるいは、ファームウェア更新制御部110は、ストレージ装置10に接続された表示装置に、ファームウェア更新の完了を示すメッセージを表示させてもよい。そして、ファームウェア更新制御部110は、ファームウェア更新処理を終了する(CM100は通常時の処理に復帰する)。
(S17) The firmware
このように、ファームウェア更新制御部110は、各SSDのファームウェアの更新指示を受信すると、サーバ20から受信するアクセス要求の頻度(IO数の頻度)を監視する。そして、ファームウェア更新制御部110は、当該アクセス要求の頻度が規定数以下の場合に、アクセス待ちコマンドの数に拘わらずにファームウェアの更新を各SSDに指示する。この場合、例えば、ファームウェア更新制御部110は、各SSDに対して1つずつ順番にファームウェアの更新を指示する。例えば、1つのRAIDグループにおいて、1回にファームウェア更新を行うSSDは1つとする。また、ファームウェア更新制御部110は、アクセス要求の頻度が規定数よりも大きい場合に、アクセス待ちコマンドの数に応じて、ファームウェアの更新をSSDに指示する。この場合も、1つのRAIDグループにおいて1回にファームウェア更新を行うSSDは1つとする。
As described above, when the firmware
なお、ステップS14の判定では、他の方法によりガベージコレクションを検出してもよい。例えば、ファームウェア更新制御部110は、単位時間におけるアクセス待ちコマンドの数の増分が所定の閾値以上になった(比較的短期間にアクセス待ちコマンド数が急増した)場合に、該当のSSDにおけるガベージコレクションを検出してもよい。このとき、ファームウェア更新制御部110は、各SSDについて、単位時間におけるアクセス待ちコマンドの数の増分が所定の閾値未満の場合に、ガベージコレクションを検出しないことになる。
In the determination in step S14, garbage collection may be detected by another method. For example, when the increment of the number of commands waiting for access in a unit time exceeds a predetermined threshold (the number of commands waiting for access increases rapidly in a relatively short time), the firmware
こうして、ファームウェア更新制御部110は、SSD50,50a,50b,・・・それぞれに対して、ファームウェアの更新を順次行う。これにより、ファームウェアの更新に伴う性能への影響を抑えることができる。具体的には次の通りである。
Thus, the firmware
SSDにおけるファームウェアの更新中は、当該SSDに対するデータアクセスを行えなくなる。このため、任意のタイミングでSSDのファームウェアの更新を行うと、該当のSSDに対するデータアクセスに遅延が発生し、性能に影響を及ぼす可能性があるという問題がある。 During firmware update in the SSD, data access to the SSD cannot be performed. For this reason, if the firmware of the SSD is updated at an arbitrary timing, there is a problem that a delay occurs in data access to the corresponding SSD, which may affect the performance.
そこで、ファームウェア更新制御部110は、SSDによりガベージコレクションが実行中である期間を利用して、該当のSSDによるファームウェアの更新も実行させる。ガベージコレクション中は、そもそもSSDのアクセス性能が低下する期間であるため、ファームウェアの更新も当該期間において実行してしまう方が、業務運用への影響を低減できる。なぜなら、ガベージコレクション中でない通常運用中にファームウェア更新を行うと、ガベージコレクションとは別に、SSDへのアクセスを行えない時間帯が発生することになるからである。ガベージコレクションの期間中にファームウェア更新も併せて行うことで、SSDへのアクセスを行えない時間帯が余計に発生することを抑えられ、性能への影響を抑えられる。
Therefore, the firmware
特に、ファームウェア更新制御部110は、上記のように、サーバ20からのIO数が比較的多い場合でも、ガベージコレクション中と判断された場合には、該当のSSDのファームウェア更新を行う。これにより、サーバ20によるIO数が比較的少なくなる時間帯を待たなくてもよく、早いタイミングで更新後のファームウェアを適用することができる。更に、管理者が、サーバ20によるIO数を監視して、ファームウェア更新のタイミングを決定する場合よりも、管理者の運用管理の負担を低減できる。
In particular, the firmware
また、ガベージコレクションは、各SSDによって自律的に実行され、CM100側で各SSDによるガベージコレクションが実行されるタイミングを予測することは困難である。そこで、ファームウェア更新制御部110は、キャッシュメモリ103におけるアクセス待ちコマンドの数を監視することで、各SSDによりガベージコレクションが実行されているか否かを適切に判定可能となる。なぜなら、SSDによりガベージコレクションが実行されている間は、該当のSSDに対するアクセス性能が低下し、該当のSSDに対応するキューに保持されるアクセス待ちコマンドの数が過大になる可能性が高いからである。
Further, garbage collection is autonomously executed by each SSD, and it is difficult to predict the timing at which garbage collection by each SSD is executed on the
また、複数のRAIDグループを用いて、シンプロビジョニングにより論理的な記憶領域をユーザに割り当てる場合に、ファームウェア更新およびガベージコレクションを行っているSSDを避けたアクセス制御を実現できる。具体的には以下に示す制御が考えられる。まず、CM100によるファームウェア更新中の書き込み処理の手順を説明する。
In addition, when a logical storage area is allocated to a user by thin provisioning using a plurality of RAID groups, it is possible to realize access control that avoids SSDs performing firmware update and garbage collection. Specifically, the following control can be considered. First, the procedure of the writing process during firmware update by the
図13は、ファームウェア更新中の書き込み処理例を示すフローチャートである。以下、図13に示す手順をステップ番号に沿って説明する。
(S21)IO制御部120は、ファームウェア更新中のSSDに対するWriteアクセス(データの書き込みコマンド)の発生を検出する。例えば、IO制御部120は、ファームウェア更新中のSSDについて、キャッシュメモリ103におけるキューからデータの書き込みに相当するアクセス待ちコマンドを取得することで、当該Writeアクセスの発生を検出する。
FIG. 13 is a flowchart illustrating an example of a writing process during firmware update. Hereinafter, the procedure illustrated in FIG. 13 will be described in order of step number.
(S21) The
(S22)IO制御部120は、書き込み対象のデータが新規データであるか否かを判定する。新規データとは、該当のSSDが属するRAIDグループに既に格納されている既存データに対する更新後のデータ以外のデータである。書き込み対象のデータが新規データである場合、IO制御部120は、ステップS23に処理を進める。書き込み対象のデータが新規データでない場合、IO制御部120は、ステップS24に処理を進める。
(S22) The
(S23)IO制御部120は、今回の書き込み対象である新規データについて、対象SSD(すなわち、ファームウェア更新中のSSD)を含まない別のRAIDグループへチャンクを割り当てる。IO制御部120は、チャンクの割り当て変更に応じて、キャッシュメモリ103に記憶されたチャンク割り当て管理テーブル111を更新する。そして、IO制御部120は、ステップS25に処理を進める。
(S23) The
(S24)IO制御部120は、対象SSD(すなわち、ファームウェア更新中のSSD)を含まない別のRAIDグループへ既存データを移す。その上で、IO制御部120は、今回の書き込み対象のデータ(更新後のデータ)について、当該別のRAIDグループへチャンクを割り当てる(既存データの移行先のチャンクを割り当てる)。IO制御部120は、チャンクの割り当て変更に応じて、キャッシュメモリ103に記憶されたチャンク割り当て管理テーブル111を更新する。なお、既存データを取得する際、IO制御部120は、対象SSDが属するRAIDグループにおける対象SSD以外のSSDから既存データを取得する(例えば、RAID1であればミラー、RAID5であればパリティなどを用いて既存データを取得する)。
(S24) The
(S25)IO制御部120は、割り当てたRAIDグループ(ステップS23またはステップS24における別のRAIDグループ)に属するSSDに対して書き込みを実行する。
(S25) The
図14は、ファームウェア更新中の書き込みの具体例を示す図である。例えば、ストレージ装置10において、RAIDグループG1,G2が存在している。SSD50,50aは、RAIDグループG1に属する。SSD50b,50cは、RAIDグループG2に属する。RAIDグループG1,G2それぞれにおけるRAIDレベルは、例えば、RAID1である。そして、RAIDグループG2に属するSSD50bは、ファームウェアを更新中である。このとき、IO制御部120(プロセッサ101)が、SSD50bに対するWriteアクセスの発生を検出したとする。例えば、検出されたWriteアクセスは、既存データに対する更新データの書き込みを要求するものであるとする。
FIG. 14 is a diagram illustrating a specific example of writing during firmware update. For example, in the
この場合、まず、IO制御部120は、(1)別RAIDにデータを再配置する。別RAIDとは、RAIDグループG2とは異なるRAIDグループG1を意味する。すなわち、IO制御部120は、RAIDグループG2に記憶された該当の既存データを、RAIDグループG1に格納する(該当の既存データに対するチャンクの割り当て変更を行う)。そして、IO制御部120は、(2)別RAIDに対して、該当の更新データを書き込む。すなわち、IO制御部120は、RAIDグループG1に再配置した既存データを、更新データにより更新する。
In this case, first, the IO control unit 120 (1) rearranges the data in another RAID. Another RAID means a RAID group G1 different from the RAID group G2. That is, the
このように、ファームウェア更新中のSSDに対してWriteアクセスが発生した場合には、該当のSSDが属するRAIDグループとは別のRAIDグループにアクセス先を振り替えることで、ファームウェア更新に伴う書き込み遅延を低減できる。 In this way, when a write access occurs to an SSD whose firmware is being updated, the write destination associated with the firmware update is reduced by transferring the access destination to a RAID group different from the RAID group to which the relevant SSD belongs. it can.
次に、CM100によるファームウェア更新中の読み出し処理の手順を説明する。
図15は、ファームウェア更新中の読み出し処理例を示すフローチャートである。以下、図15に示す手順をステップ番号に沿って説明する。
Next, a procedure of a read process during firmware update by the
FIG. 15 is a flowchart illustrating an example of read processing during firmware update. Hereinafter, the procedure illustrated in FIG. 15 will be described in order of step number.
(S31)IO制御部120は、ファームウェア更新中のSSDに対するReadアクセス(データの読み出しコマンド)の発生を検出する。例えば、IO制御部120は、ファームウェア更新中のSSDについて、キャッシュメモリ103におけるキューからデータの読み出しに相当するアクセス待ちコマンドを取得することで、当該Readアクセスの発生を検出する。
(S31) The
(S32)IO制御部120は、該当のSSD(ファームウェア更新中のSSD)が属するRAIDグループ内の該当のSSD以外のSSDにアクセスする。例えば、RAIDグループのRAIDレベルがRAID1の場合、該当のSSD以外のSSDは、該当のSSDに対するミラーのSSDである。あるいは、RAIDグループのRAIDレベルがRAID5の場合、該当のSSD以外のSSD(読み出し対象のデータの断片またはパリティを記憶するSSD)は、複数存在することになる。
(S32) The
(S33)IO制御部120は、ステップS32のアクセス結果により、読み出し対象のデータを構築する。例えば、RAID1であれば、IO制御部120は、ミラーのSSDにアクセスすることで、読み出し対象のデータを取得できる。あるいは、RAID5であれば、例えば、IO制御部120は、他のSSDから取得したパリティなどにより該当のSSDに記憶されたデータを復元できる。また、IO制御部120は、他のSSDから取得したデータと復元したデータとを用いて、読み出し対象のデータを取得できる。あるいは、ファームウェア更新中のSSDにパリティが記憶されている場合、IO制御部120は、他のSSDに記憶されたデータ(データの断片)を用いて、読み出し対象のデータを取得できる。
(S33) The
(S34)IO制御部120は、ステップS33において構築した読み出し対象のデータをサーバ20に応答する。
図16は、ファームウェア更新中の読み出しの具体例を示す図である。図16(A)は、RAIDレベルがRAID1であるRAIDグループG1に対するReadアクセスの処理例を示している。SSD50,50aは、RAIDグループG1に属する。そして、SSD50は、ファームウェアを更新中である。このとき、IO制御部120(プロセッサ101)が、SSD50に対するReadアクセスの発生を検出したとする。
(S34) The
FIG. 16 is a diagram illustrating a specific example of reading during firmware update. FIG. 16A shows a read access processing example for the RAID group G1 whose RAID level is RAID1. The
この場合、IO制御部120は、SSD50のミラーであるSSD50aから、読み出し対象のデータを取得し、サーバ20に応答する。
図16(B)は、RAIDレベルがRAID5であるRAIDグループG3に対するReadアクセスの処理例を示している。SSD50d,50e,50f,50gは、RAIDグループG3に属する。そして、SSD50dは、ファームウェアを更新中である。このとき、IO制御部120(プロセッサ101)が、SSD50dに対するReadアクセスの発生を検出したとする。
In this case, the
FIG. 16B shows an example of read access processing for the RAID group G3 whose RAID level is RAID5. The
この場合、IO制御部120は、RAIDグループG3に属するSSD50d以外のSSD50e,50f,50g(残りのSSD)に格納されたデータ(パリティなど)を用いて読み出し対象のデータを構築し、サーバ20に応答する。
In this case, the
このように、ファームウェア更新中のSSDに対してReadアクセスが発生した場合には、該当のSSDが属するRAIDグループにおける他のSSDを用いて、読み出し対象のデータを取得することで、ファームウェア更新に伴う読み出し遅延を低減できる。 As described above, when a Read access occurs to the SSD whose firmware is being updated, the data to be read is acquired by using another SSD in the RAID group to which the corresponding SSD belongs, thereby accompanying the firmware update. Read delay can be reduced.
なお、第1の実施の形態の情報処理は、処理部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。CM100は、プロセッサ101とRAM102(メモリ)とを含むコンピュータであると考えることもできる。プログラムは、コンピュータ読み取り可能な記録媒体11に記録できる。
The information processing according to the first embodiment can be realized by causing the
例えば、プログラムを記録した記録媒体11を配布することで、プログラムを流通させることができる。プログラムの流通に利用可能な記録媒体11としては、前述のフラッシュメモリカードなどの半導体メモリ以外のものを用いることもできる。例えば、記録媒体11として、フレキシブルディスク(FD:Flexible Disk)、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用してもよい。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体11に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やNVRAM105などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
For example, the program can be distributed by distributing the
1 ストレージ装置
1a 記憶部
1b 処理部
1c,1d,1e,1f 記憶装置
2 情報処理装置
A1 記憶装置群
DESCRIPTION OF
Claims (10)
記憶装置に対するコマンドを記憶する記憶部と、
前記記憶装置を制御する制御プログラムの更新指示を受信すると、前記記憶部が記憶するコマンドの数に基づいて、前記記憶装置が不要な領域を開放するガベージコレクションを実行中であると判定した場合、前記制御プログラムの更新を前記記憶装置に指示する処理部と、
を有するストレージ装置。 In a storage device having a plurality of storage devices,
A storage unit for storing commands for the storage device;
When receiving an update instruction of a control program for controlling the storage device, based on the number of commands stored in the storage unit, if it is determined that the storage device is executing garbage collection to release an unnecessary area, A processing unit that instructs the storage device to update the control program;
A storage device.
前記処理部は、前記複数のグループのうち、第1のグループに属するとともに前記制御プログラムを更新中である記憶装置に対する書き込みコマンドを受け付けた場合、前記複数のグループのうち第2のグループに属する他の記憶装置に対して前記書き込みコマンドに応じたデータの書き込みを実行する、
請求項1記載のストレージ装置。 The plurality of storage devices are divided into a plurality of groups each including a storage device,
When the processing unit accepts a write command to the storage device belonging to the first group and updating the control program among the plurality of groups, the processing unit may belong to the second group among the plurality of groups. Writing data to the storage device according to the write command,
The storage apparatus according to claim 1.
請求項2記載のストレージ装置。 When the write command indicates update of existing data stored in the first group, the processing unit allocates the storage area of the storage destination of the existing data from the first group to the second group. After the change, write data according to the write command to the other storage device belonging to the second group,
The storage apparatus according to claim 2.
請求項2または3記載のストレージ装置。 When the processing unit receives a read command for a storage device that is updating the control program among the plurality of storage devices, the processing unit responds to the read command from a storage device other than the storage devices belonging to the first group. Read the data
The storage apparatus according to claim 2 or 3.
請求項1乃至4の何れか一項に記載のストレージ装置。 The processing unit determines that the storage device is executing the garbage collection when the number of commands stored in the storage unit is greater than or equal to a threshold, and the number of commands stored in the storage unit is less than the threshold And determining that the storage device is not performing the garbage collection.
The storage device according to any one of claims 1 to 4.
請求項1乃至5の何れか一項に記載のストレージ装置。 When the processing unit receives the update instruction, the processing unit monitors the frequency of access requests received from the information processing apparatus. When the frequency of the access requests is equal to or less than a predetermined number, the processing unit stores the number of commands stored in the storage unit. Instructing the storage device to update the control program, and if the frequency of the access request is greater than the specified number, the storage device updates the control program according to the number of commands stored in the storage unit. Instruct
The storage device according to any one of claims 1 to 5.
請求項2乃至4の何れか一項に記載のストレージ装置。 Each of the plurality of groups is a RAID group of the same RAID (Redundant Arrays of Independent Disks) level.
The storage device according to any one of claims 2 to 4.
請求項1乃至7の何れか一項に記載のストレージ装置。 The storage device includes a flash memory, and performs the garbage collection on the flash memory.
The storage apparatus according to any one of claims 1 to 7.
前記ストレージ装置が有する処理部に、
前記記憶装置を制御する第1の制御プログラムの更新指示を受信すると、前記記憶部が記憶するコマンドの数に基づいて、前記記憶装置が不要な領域を開放するガベージコレクションを実行中であるかを判定させ、
前記ガベージコレクションを実行中であると判定した場合、前記第1の制御プログラムの更新を前記記憶装置に指示させるストレージ装置の制御プログラム。 In a storage device control program having a plurality of storage devices and a storage unit for storing commands for the storage devices,
In the processing unit of the storage device,
When receiving an update instruction of the first control program for controlling the storage device, based on the number of commands stored in the storage unit, it is determined whether the storage device is executing garbage collection for releasing an unnecessary area. Let me judge
A storage apparatus control program that instructs the storage apparatus to update the first control program when it is determined that the garbage collection is being executed.
前記ストレージ装置が有する処理部が、
前記記憶装置を制御する制御プログラムの更新指示を受信すると、前記記憶部が記憶するコマンドの数に基づいて、前記記憶装置が不要な領域を開放するガベージコレクションを実行中であるかを判定し、
前記ガベージコレクションを実行中であると判定した場合、前記制御プログラムの更新を前記記憶装置に指示するストレージ装置の制御方法。 In a control method of a storage device having a plurality of storage devices and a storage unit for storing commands for the storage devices,
The processing unit included in the storage device
When receiving an update instruction of a control program for controlling the storage device, based on the number of commands stored in the storage unit, it is determined whether the storage device is executing garbage collection to release an unnecessary area,
A storage apparatus control method for instructing the storage apparatus to update the control program when it is determined that the garbage collection is being executed.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017085537A JP6867586B2 (en) | 2017-04-24 | 2017-04-24 | Storage device, storage device control program, and storage device control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017085537A JP6867586B2 (en) | 2017-04-24 | 2017-04-24 | Storage device, storage device control program, and storage device control method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018185584A true JP2018185584A (en) | 2018-11-22 |
JP6867586B2 JP6867586B2 (en) | 2021-04-28 |
Family
ID=64356029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017085537A Active JP6867586B2 (en) | 2017-04-24 | 2017-04-24 | Storage device, storage device control program, and storage device control method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6867586B2 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008046791A (en) * | 2006-08-14 | 2008-02-28 | Fujitsu Ltd | Storage device, firmware update method and control device |
JP2010061288A (en) * | 2008-09-02 | 2010-03-18 | Hitachi Ltd | Storage device and method of instructing to update firmware |
JP2015111334A (en) * | 2013-12-06 | 2015-06-18 | 富士通株式会社 | Storage controller, storage control program and storage control method |
WO2016013202A1 (en) * | 2014-07-25 | 2016-01-28 | 日本電気株式会社 | Storage device, computer system, access control method, and recording medium |
-
2017
- 2017-04-24 JP JP2017085537A patent/JP6867586B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008046791A (en) * | 2006-08-14 | 2008-02-28 | Fujitsu Ltd | Storage device, firmware update method and control device |
JP2010061288A (en) * | 2008-09-02 | 2010-03-18 | Hitachi Ltd | Storage device and method of instructing to update firmware |
JP2015111334A (en) * | 2013-12-06 | 2015-06-18 | 富士通株式会社 | Storage controller, storage control program and storage control method |
WO2016013202A1 (en) * | 2014-07-25 | 2016-01-28 | 日本電気株式会社 | Storage device, computer system, access control method, and recording medium |
Also Published As
Publication number | Publication date |
---|---|
JP6867586B2 (en) | 2021-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10019364B2 (en) | Access-based eviction of blocks from solid state drive cache memory | |
JP6517684B2 (en) | Memory system and control method | |
US9430161B2 (en) | Storage control device and control method | |
JP5937697B2 (en) | Storage system | |
JP4961319B2 (en) | A storage system that dynamically allocates real areas to virtual areas in virtual volumes | |
US7975168B2 (en) | Storage system executing parallel correction write | |
EP2557494B1 (en) | Storage apparatus and data copy method between thin-provisioning virtual volumes | |
US20150286439A1 (en) | Computer system and method of controlling computer system | |
US20140122818A1 (en) | Storage apparatus and method for controlling storage apparatus | |
US20080120459A1 (en) | Method and apparatus for backup and restore in a dynamic chunk allocation storage system | |
US9658796B2 (en) | Storage control device and storage system | |
JP2008015768A (en) | Storage system and data management method using the same | |
JP2008276646A (en) | Storage device and data management method for storage device | |
US20120011326A1 (en) | Storage system and method for changing configuration of cache memory for storage system | |
US20180307426A1 (en) | Storage apparatus and storage control method | |
US10664193B2 (en) | Storage system for improved efficiency of parity generation and minimized processor load | |
JP2011209892A (en) | Storage system, control method of the same, switch device and storage device | |
US20110022889A1 (en) | Disk array apparatus and physical disk restoration method | |
US8938596B2 (en) | Storage apparatus, control apparatus, and storage apparatus control method | |
JP2021114264A (en) | Storage control device and storage control program | |
JP5712535B2 (en) | Storage device, control unit, and storage device control method | |
US20180307427A1 (en) | Storage control apparatus and storage control method | |
JP6867586B2 (en) | Storage device, storage device control program, and storage device control method | |
JP6976237B2 (en) | Storage system, data management method, and data management program | |
US11966590B2 (en) | Persistent memory with cache coherent interconnect interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200213 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20200225 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20200225 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210216 |
|
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: 20210309 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210322 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6867586 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |