JP2018185584A - ストレージ装置、ストレージ装置の制御プログラムおよびストレージ装置の制御方法 - Google Patents

ストレージ装置、ストレージ装置の制御プログラムおよびストレージ装置の制御方法 Download PDF

Info

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
Application number
JP2017085537A
Other languages
English (en)
Other versions
JP6867586B2 (ja
Inventor
遼 窪田
Ryo Kubota
遼 窪田
慎一 小林
Shinichi Kobayashi
慎一 小林
一郎 佐久間
Ichiro Sakuma
一郎 佐久間
謙一 小倉
Kenichi Ogura
謙一 小倉
泰宏 村松
Yasuhiro Muramatsu
泰宏 村松
金弥 齊藤
Kinya Saito
金弥 齊藤
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017085537A priority Critical patent/JP6867586B2/ja
Publication of JP2018185584A publication Critical patent/JP2018185584A/ja
Application granted granted Critical
Publication of JP6867586B2 publication Critical patent/JP6867586B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】制御プログラムの更新に伴う性能への影響を抑えること。【解決手段】ストレージ装置1は、記憶部1aと処理部1bとを有する。記憶部1aは、記憶装置1c,1d,1e,1fに対するコマンドを記憶する。処理部1bは、記憶装置1cの制御プログラムの更新指示を受信すると、記憶部1aが記憶するコマンドの数に基づいて、記憶装置1cが不要な領域を開放するガベージコレクションを実行中であると判定した場合、制御プログラムの更新を記憶装置1cに指示する。【選択図】図1

Description

本発明はストレージ装置、ストレージ装置の制御プログラムおよびストレージ装置の制御方法に関する。
現在、データの保存にストレージ装置が利用されている。ストレージ装置は、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの記憶装置を複数有し、大容量の記憶領域を提供する。ストレージ装置は、RAID(Redundant Arrays of Independent Disks)技術により、複数の記憶装置それぞれの記憶領域を用いて論理的な記憶領域を提供することもある。RAIDを用いることで、データアクセスの高速化やデータ記憶の高信頼化を図れる。また、ストレージ装置では、論理的な記憶領域を複数設け、データアクセスに対する信頼性の向上や、シンプロビジョニング(Thin Provisioning)の技術による記憶容量の利用の効率化を図ることもある。
ところで、ストレージ装置の運用では、ストレージ装置の制御に用いられる制御プログラムであるファームウェアの更新が行われることがある。例えば、複数のディスク装置と、ディスク装置へのアクセス制御を行うコントローラモジュールとを有するストレージシステムにおいてファームウェアの更新を行う方法が提案されている(特許文献1)。この提案では、ストレージシステムは、コントローラモジュールの入出力制御チップのファームウェアのダウンロード処理を、ディスク装置に対する入出力処理と並行して実行しても、入出力処理が滞ることを防止することができる。
なお、フラッシュメモリなどの不揮発性メモリへのデータ書き込み時に、データ書き込みに伴い無効にすべきページが属するブロックの有効ページ数をカウントし、有効ページ数が所定数以下のブロックをコンパクション処理の対象とするコントローラの提案がある(特許文献2)。
特開2013−134689号公報 特開2011−159044号公報
記憶装置には、内蔵の不揮発性メモリに制御プログラム(例えば、ファームウェア)を記憶し、制御プログラムにより自装置の動作を制御するものがある。例えば、SSDではウェアレベリングやエラー訂正などの管理機能が制御プログラムによって実現されることもある。一方、記憶装置の制御プログラムは、不具合の解消やアルゴリズムの改善などのために、制御プログラムの配信元によって更新されることがある。制御プログラムが更新されると、更新後の制御プログラムを記憶装置に適用する(記憶装置上の制御プログラムを更新する)ことになる。
しかし、記憶装置における制御プログラムの更新中は、当該記憶装置に対するデータアクセスを行えなくなる。このため、任意のタイミングで記憶装置の制御プログラムの更新を行うと、制御プログラムの更新期間と衝突した場合、該当の記憶装置に対するデータアクセスに遅延が発生し、性能に影響を及ぼす可能性があるという問題がある。
1つの側面では、本発明は、制御プログラムの更新に伴う性能への影響を抑えることを目的とする。
1つの態様では、複数の記憶装置を有するストレージ装置が提供される。ストレージ装置は、記憶部と処理部とを有する。記憶部は、記憶装置に対するコマンドを記憶する。処理部は、記憶装置を制御する制御プログラムの更新指示を受信すると、記憶部が記憶するコマンドの数に基づいて、記憶装置が不要な領域を開放するガベージコレクションを実行中であると判定した場合、制御プログラムの更新を記憶装置に指示する。
1つの側面では、制御プログラムの更新に伴う性能への影響を抑えることができる。
第1の実施の形態のストレージ装置を示す図である。 第2の実施の形態の情報処理システムの例を示す図である。 ストレージ装置のハードウェア例を示す図である。 CMのハードウェア例を示す図である。 SSDのハードウェア例を示す図である。 ガベージコレクションの例を示す図である。 CMの機能例を示す図である。 チャンクの例を示す図である。 チャンク割り当て管理テーブルの例を示す図である。 サーバのIO数の監視例を示す図である。 SSDに対するアクセス待ちコマンドの監視例を示す図である。 ファームウェア更新例を示すフローチャートである。 ファームウェア更新中の書き込み処理例を示すフローチャートである。 ファームウェア更新中の書き込みの具体例を示す図である。 ファームウェア更新中の読み出し処理例を示すフローチャートである。 ファームウェア更新中の読み出しの具体例を示す図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージ装置を示す図である。ストレージ装置1は、記憶部1a、処理部1bおよび記憶装置1c,1d,1e,1fを有する。記憶装置1c,1d,1e,1fをまとめて、記憶装置群A1と称する。ストレージ装置1は、情報処理装置2に接続される。ストレージ装置1および情報処理装置2は、所定のケーブルによって直接接続されてもよいし、ネットワークを介して接続されてもよい。ストレージ装置1は、情報処理装置2の業務処理により用いられる各種のデータ(業務データ)を記憶する。
ストレージ装置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によりアクセス可能な論理的な記憶領域を提供することもできる。
記憶部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はプログラムを実行するプロセッサでもよい。「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
記憶装置1c,1d,1e,1fは、例えばSSDである。SSDは、フラッシュメモリを内蔵し、フラッシュメモリに業務データを格納する。記憶装置1cは、フラッシュメモリなどの業務データの格納用の記憶デバイスの他にも、ファームウェア保存用の不揮発性メモリ、ファームウェア実行用のRAMおよびプロセッサを内蔵する(図1では図示を省略している)。記憶装置1cのプロセッサは、当該不揮発性メモリに記憶されたファームウェアを記憶装置1cのRAMにロードして実行し、記憶装置1cの動作を制御する。記憶装置1d,1e,1fも記憶装置1cと同様に、業務データの格納用の記憶デバイス、ファームウェア保存用の不揮発性メモリ、ファームウェア実行用のRAMおよびプロセッサを内蔵する。
処理部1bは、記憶装置1c,1d,1e,1fのファームウェアの更新を制御する。具体的には、次の通りである。
処理部1bは、記憶装置群A1に記憶されたデータに対するアクセス要求を情報処理装置2から受信する。処理部1bは、受信したアクセス要求(例えば、データの書き込み要求)に応じてアクセス先の記憶装置を決定し、該当の記憶装置に対するアクセスコマンド(アクセス要求に応じたコマンド)を生成し、記憶部1aに格納する。記憶部1aは、各記憶装置に対するアクセスコマンドを記憶する。記憶部1aに格納されるアクセスコマンドは、アクセス待ち(または実行待ち)のコマンドであり、アクセス待ちコマンド(または実行待ちコマンド)と呼ばれる。
ここで、記憶部1aは、記憶装置1c,1d,1e,1fごとにアクセスコマンドを保持するキューを備える。例えば、記憶装置1cのキューは、キュー番号“1”のキューである。ここで、キュー番号“1”を、“#1”のように表記することがある。記憶装置1dのキューは、“#2”のキューである。記憶装置1eのキューは、“#3”のキューである。記憶装置1fのキューは、“#4”のキューである。
例えば、処理部1bは、記憶装置1cに対する書き込みコマンドを“#1”のキューに格納する。処理部1bは、記憶装置1dに対する書き込みコマンドを“#2”のキューに格納する。処理部1bは、記憶装置1eに対する書き込みコマンドを“#3”のキューに格納する。処理部1bは、記憶装置1fに対する書き込みコマンドを“#4”のキューに格納する。こうして、処理部1bは、記憶部1aをキャッシュとして利用し、一端、記憶部1aにデータを格納し、情報処理装置2に対する応答を行ってから、アクセス要求とは非同期に記憶装置1c,1d,1e,1fへの書き込みを行う(ライトバックと呼ばれる)。これにより、処理部1bは、記憶部1aにデータを格納した時点で情報処理装置2に対する応答を行えるので、書き込みなどのアクセス要求に対する応答を早めることができる。
処理部1bは、記憶装置1c,1d,1e,1fのファームウェアの更新指示を受信すると、記憶部1aに記憶された記憶装置1c,1d,1e,1fそれぞれに対するアクセス待ちコマンドの数を監視する。例えば、処理部1bは、情報処理装置2からファームウェアの更新指示を受信してもよいし、ユーザによるファームウェアの更新指示の操作入力を受け付けてもよい。記憶装置に適用する更新後のファームウェアのプログラムは、情報処理装置2によりストレージ装置1に提供されてもよい。あるいは、当該ファームウェアのプログラムは、所定の記録媒体を用いて、ストレージ装置1に提供されてもよい。処理部1bは、提供されたファームウェアのプログラムを記憶部1aに格納しておいてもよい。
処理部1bは、アクセス待ちコマンドの数に基づいて、記憶装置1c,1d,1e,1fそれぞれがガベージコレクションを実行中であるか否かを判定する。
ここで、ガベージコレクションは、データの消去が可能な単位領域におけるデータを消去して、当該単位領域を再利用可能にする不要領域開放機能である。具体的には、ガベージコレクションでは、フラッシュメモリなどにおいて有効データおよび無効データが混在する第1の単位領域(例えば、ブロック)における有効データを、第2の単位領域に複製し、第1の単位領域のデータを一括して消去する。なお、「データの消去」は、「当該データが格納された記憶領域の解放」ともいえる。
ガベージコレクションは、記憶装置1c,1d,1e,1fそれぞれにより自律的に実行される。ガベージコレクションは、各記憶装置が独自に実行する処理であり、例えば、数時間から数日に一回程度の頻度で発生する。ただし、前述のように、ガベージコレクションは、記憶装置1c,1d,1e,1fにより自律的に実行されるため、処理部1bにより、各記憶装置でガベージコレクションが発生するタイミングを予測することは困難である。
一方、記憶装置によりガベージコレクションが実行されている間は、該当の記憶装置に対するアクセス性能が低下する。すなわち、記憶装置がガベージコレクションを行っている間は、該当の記憶装置に対するアクセスコマンドによるアクセスが遅延する。このため、該当の記憶装置に対応するキューに保持されているアクセス待ちコマンドが処理されずに、キューに残存する。したがって、ガベージコレクションの実行中は、該当の記憶装置に対応するキューに保持されるアクセス待ちコマンドの数が過大になる可能性が高い。
そこで、処理部1bは、例えば、アクセス待ちコマンドの数が、所定の閾値を超えた記憶装置について、ガベージコレクションを実行中であると判定する。一方、処理部1bは、例えば、アクセス待ちコマンドの数が所定の閾値以下の記憶装置について、ガベージコレクションを実行中でないと判定する。
例えば、図1のグラフは、処理部1bがファームウェアの更新指示を受け付けた後のある時点における、記憶装置1c,1d,1e,1fそれぞれに対するアクセス待ちコマンドの数(アクセス待ちコマンド数)を示す。記憶装置1cに対するアクセス待ちコマンド数は、閾値を超過している。記憶装置1d,1e,1fに対するアクセス待ちコマンド数は閾値を超過していない。この場合、処理部1bは、記憶装置1cがガベージコレクションを実行中であると判定する。一方、処理部1bは、記憶装置1d,1e,1fがガベージコレクションを実行中でないと判定する。
処理部1bは、ある記憶装置についてガベージコレクションを実行中であると判定された場合に、ファームウェアの更新を当該記憶装置に指示する。上記の例でいえば、処理部1bは、ガベージコレクションを実行中であると判定された記憶装置1cに対してファームウェアの更新を指示する。このとき、処理部1bは、適用すべきファームウェアのプログラムを記憶装置1cに提供する。一方、処理部1bは、この段階では、記憶装置1d,1e,1fに対してファームウェアの更新を指示しない。
例えば、ファームウェアの更新の指示を受け付けた記憶装置1cは、ガベージコレクションの実行を一時中断して、記憶装置1cにより保持されるファームウェアの更新を行い、更新完了後にガベージコレクションの実行を再開する。
こうして、処理部1bは、記憶装置1c,1d,1e,1fに対して、ファームウェアの更新を順次行う。
これにより、ファームウェアの更新に伴う性能への影響を抑えることができる。具体的には次の通りである。
記憶装置におけるファームウェアの更新中は、当該記憶装置に対するデータアクセスを行えなくなる。このため、任意のタイミングで記憶装置のファームウェアの更新を行うと、該当の記憶装置に対するデータアクセスに遅延が発生し、性能に影響を及ぼす可能性があるという問題がある。
そこで、処理部1bは、記憶装置によりガベージコレクションが実行中である期間を利用して、該当の記憶装置によるファームウェアの更新も実行させる。ガベージコレクション中は、そもそも記憶装置のアクセス性能が低下する期間であるため、ファームウェアの更新も当該期間において実行してしまう方が、業務運用への影響を低減できる。なぜなら、ガベージコレクション中でない通常運用中にファームウェア更新を行うと、ガベージコレクションとは別に、記憶装置へのアクセスを行えない時間帯が発生することになるからである。ガベージコレクションの期間中にファームウェア更新も併せて行うことで、記憶装置へのアクセスを行えない時間帯が余計に発生することを抑えられ、性能への影響を抑えられる。
また、複数のRAIDグループを用いて、シンプロビジョニングにより論理的な記憶領域をユーザに割り当てる場合に、ファームウェア更新中の記憶装置を避けたアクセス制御を実現できる。具体的には次の制御が考えられる。
第1に、処理部1bは、ファームウェア更新中の記憶装置が属する第1のRAIDグループへの新規データの書き込み要求に対して、第1のRAIDグループ以外の第2のRAIDグループの記憶領域を当該新規データの書き込み先に割り当てる。
第2に、処理部1bは、ファームウェア更新中の記憶装置が属する第1のRAIDグループに格納された既存データの更新要求に対し、既存データの格納先の記憶領域の割り当てを第1のRAIDグループから第2のRAIDグループに変更する。処理部1bは、その上で、第2のRAIDグループに属する他の記憶装置に対して書き込み(既存データに対する更新後のデータの書き込み)を実行する。
第3に、処理部1bは、ファームウェア更新中の記憶装置が属するRAIDグループに格納された既存データの読み出し要求に対し、ファームウェア更新中の記憶装置以外の他の記憶装置により当該既存データを構築し、応答する。例えば、処理部1bは、RAID1であれば、ミラーとなる他の記憶装置から既存データを取得し、応答する。あるいは、処理部1bは、RAID5であれば、パリティなどを記憶する複数の他の記憶装置から既存データを取得し、応答する。
このようにして、処理部1bは、ファームウェア(制御プログラム)の更新に伴う性能への影響を抑えて、記憶装置群A1に記憶されたデータに対するアクセスを行うことができる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムの例を示す図である。第2の実施の形態の情報処理システムは、ストレージ装置10およびサーバ20を含む。ストレージ装置10およびサーバ20は、例えば、SAN(Storage Area Network)などのネットワークを介して接続される。ストレージ装置10およびサーバ20は、所定のケーブルによって直接接続されてもよい。
ストレージ装置10は、複数のSSD(複数の記憶装置の一例)を備える。ストレージ装置10は、複数のSSDにより、大容量の記憶領域をサーバ20に提供する。ストレージ装置10は、2以上のSSDを1つのグループ(RAIDグループ)とする。ストレージ装置10は、1つのRAIDグループに属する2以上のSSDを用いて、RAID(RAIDレベルは1以上であるとする)を構築する。複数のRAIDグループのRAIDレベルは同じである。
ストレージ装置10は、複数のRAIDグループにおける記憶領域を組み合わせることで、サーバ20によりアクセス可能な仮想的なボリューム(仮想ボリューム)を提供する。仮想ボリュームに対する実容量は、シンプロビジョニングの技術により割り当てられる。これにより、ストレージ装置10における記憶容量の効率的な利用が図られる。
ストレージ装置10は、第1の実施の形態のストレージ装置1の一例である。
サーバ20は、ユーザの業務処理を行う業務アプリケーションを実行するサーバコンピュータである。サーバ20は、ストレージ装置10に記憶されたデータを用いて業務処理を行う。サーバ20は、新たなデータをストレージ装置10に書き込むことがある。サーバ20は、ストレージ装置10に記憶されているデータを更新することもある。また、サーバ20は、ストレージ装置10に記憶されているデータを読み出すこともある。更に、サーバ20は、ストレージ装置10に記憶されているデータを削除することもある。
図3は、ストレージ装置のハードウェア例を示す図である。ストレージ装置10は、コントローラモジュール(CM:Controller Module)100およびドライブ収納部200を有する。
CM100は、ドライブ収納部200に収納されている各SSDに対するデータアクセスを制御するストレージ制御装置である。CM100は、RAIDコントローラ、または、単にコントローラと呼ばれることもある。ストレージ装置10は、複数のCMを備えてもよい。複数のCMによりデータアクセス機能を冗長化させることで、データアクセス機能の可用性の向上やデータアクセス性能の向上を図ることもある。
ドライブ収納部200は、SSD50,50a,50b,・・・を収納する収納装置である。ドライブ収納部200は、ドライブエンクロージャと呼ばれることもある。SSD50,50a,50b,・・・は、フラッシュメモリを備える記憶装置である。
ここで、サーバ20により発行された新規データの書き込みのアクセス要求や、既存データの更新のアクセス要求は、CM100のキャッシュメモリを用いたライトバック方式で処理される。具体的には次の通りである。
(1)CM100は、サーバ20から書き込みのアクセス要求を受信する。書き込みのアクセス要求は、書き込み対象のデータを含む。(2)CM100は、CM100のキャッシュメモリに、書き込み対象のデータを書き込む。(3)CM100は、書き込みが完了した旨の通知をサーバ20に送信する。(4)CM100は、キャッシュメモリに蓄積された書き込み対象のデータを、サーバ20によるアクセス要求とは非同期に、SSD50,50a,50b,・・・に書き込む。
このように、ライトバック方式では、一連の手順の中にキャッシュメモリを介在させる。これにより、サーバ20およびCM100の間のデータの転送速度と、CM100からSSD50,50a,50b,・・・へのデータの書き込み速度との差によるCM100からサーバ20への応答遅延を低減する。
図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のバスに接続されている。
プロセッサ101は、CM100の情報処理を制御するハードウェアである。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM102は、CM100の主記憶装置である。RAM102は、プロセッサ101に実行させるファームウェアのプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
キャッシュメモリ103は、ライトバック方式によるSSDへのデータ書き込みに用いられる揮発性の半導体メモリである。キャッシュメモリ103は、ライトバックの処理に用いられるため、ライトバックキャッシュと呼ばれてもよい。キャッシュメモリ103は、プロセッサ101による書き込み制御に用いられる各種データも記憶する。
媒体リーダ104は、記録媒体11に記録されたプログラムやデータを読み取る装置である。記録媒体11として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用できる。媒体リーダ104は、例えば、プロセッサ101からの命令に従って、記録媒体11から読み取ったプログラムやデータをRAM101またはNVRAM105に格納する。
NVRAM105は、CM100の動作制御に用いられるファームウェアを記憶する不揮発性メモリである。プロセッサ101は、NVRAM105に記憶されたファームウェアのプログラムをRAM102にロードすることで、各種の機能を発揮する。
DI106は、ドライブ収納部200との接続に用いられるインタフェースである。DI106としては、例えば、SAS(Serial Attached SCSI(SCSIはSmall Computer System Interfaceの略))やファイバチャネル(FC:Fibre Channel)などのインタフェースを用いることができる。
CA107は、SAN30を介してサーバ20と通信する通信インタフェースである。CA107として、例えばFCのインタフェースを用いることができる。CA107として、FC以外のインタフェース(例えば、iSCSI(Internet Small Computer System Interface)など)が用いられることもある。
NA108は、LAN30aを介してサーバ20や、LAN30aを介してアクセス可能な他のサーバコンピュータと通信する通信インタフェースである。NA108として、例えば、イーサネット(登録商標)のインタフェースを用いることができる。
図5は、SSDのハードウェア例を示す図である。SSD50は、コントローラ51、NVRAM52、接続IF(InterFace)53およびフラッシュメモリ54を有する。各ハードウェアは、SSD50のバスに接続されている。SSD50a,50b,・・・もSSD50と同様のハードウェアにより実現される。
コントローラ51は、フラッシュメモリ54に対するデータの書き込みや読み出しなどのアクセス制御を行う。コントローラ51は、プロセッサおよびRAM(図5では図示を省略している)を内蔵し、当該RAMにロードされたファームウェアf1を、プロセッサにより実行することで、所定の機能を実現する。ファームウェアf1により実現される機能としては、例えば、エラー訂正、ウェアレベリング、エラーブロックの管理およびガベージコレクションなどが挙げられる。
また、コントローラ51は、CM100によるファームウェアf1の更新の指示に応じて、NVRAM52に記憶されているファームウェアf1を更新する。具体的には、コントローラ51は、改版後のファームウェアをCM100から取得して、NVRAM52に書き込む。コントローラ51は、1世代前のファームウェアf1をNVRAM52に残した状態で、改版後のファームウェアをNVRAM52に書き込んでもよい。あるいは、コントローラ51は、ファームウェアf1を改版後のファームウェアにより上書きしてもよい。
NVRAM52は、ファームウェアf1を記憶する不揮発性メモリである。前述のように、NVRAM52により記憶されるファームウェアは、コントローラ51により更新される。NVRAM52は、コントローラ51に内蔵されてもよい。
接続IF53は、ドライブ収納部200に接続するためのインタフェースである。接続IF53としては、例えば、SASのインタフェースを用いることができる。
フラッシュメモリ54は、ユーザの業務処理に用いられる各種のデータを記憶する。フラッシュメモリ54は、コントローラ51の制御により、フラッシュメモリ54に内蔵される記憶素子に対して電気的にデータの書き込みを行う。
ここで、フラッシュメモリ54の記憶領域は、複数のブロックに区分される。ブロックは複数のページを含む。ページは、データの読み出しや書き込みが行われる記憶領域の単位である。一方、フラッシュメモリ54では、ブロック単位でデータが消去される。したがって、ブロック内の無効データが格納されたページを再利用可能にするためには当該無効データを消去することになるが、この場合、無効データのみを消去することはできず、該当のブロック内の全てのページのデータを消去することになる。コントローラ51は、ガベージコレクションと呼ばれる処理により、ブロック単位のデータの消去を行う。以下の説明では、ガベージコレクションを、GC(Garbage Collection)と略記することがある。
図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を含む。
図6(A)において、ページP11,P12,P13,P14,P21,P23,P24,P31,P33,P41,P44は、有効なデータ(有効データ)を記憶しているページである。また、ページP22は、無効なデータ(無効データ)を記憶しているページである。更に、ページP32,P34,P42,P43は、データを記憶していない空きページである。
例えば、コントローラ51は、ページP22を再利用可能にするために、ブロック54bに属するページP21,P23,P24に記憶されている有効データを空きページに複製する。具体的には、コントローラ51は、ページP21に記憶されている有効データを複製し、複製された有効データをページP32に格納する。コントローラ51は、ページP23に記憶されている有効データを複製し、複製された有効データをページP43に格納する。コントローラ51は、ページP24に記憶されている有効データを複製し、複製された有効データをページP34に格納する。
図6(B)は、コントローラ51による上記の有効データの複製後のブロック54a,54b,54c,54dを示している。具体的には、空きページであったページP32に、ページP21の有効データの複製が格納されている。また、空きページであったページP34に、ページP24の有効データの複製が格納されている。更に、空きページであったページP43に、ページP23の有効データの複製が格納されている。
コントローラ51は、ブロック54bに格納されているデータ(すなわち、ページP21,P22,P23,P24に記憶されているデータ)を消去する(あるいは、「ブロック54bを解放する」といってもよい)。
図6(C)は、コントローラ51によるブロック54bに格納されているデータの消去後のブロック54a,54b,54c,54dを示している。こうして、コントローラ51は、ページP22の無効データを消去する場合でも、ガベージコレクションにより、ブロック54bの単位でデータを消去し、ブロック54b全体を再利用可能にする。
ここで、ガベージコレクションは、コントローラ51により、例えば、数時間から数日に一回程度の頻度で実行される。ガベージコレクションの実行中には、該当のSSDのアクセス性能が低下する。ガベージコレクションの所要時間は、数分(例えば、5分)程度である。ガベージコレクションは、SSD50においてコントローラ51により自律的に実行されるため、CM100側でガベージコレクションが発生するタイミングを予測することは困難である。
図7は、CMの機能例を示す図である。CM100は、ファームウェア更新制御部110およびIO(Input / Output)制御部120を有する。ファームウェア更新制御部110およびIO制御部120は、例えば、RAM102に記憶されたプログラムを、プロセッサ101により実行することで、プロセッサ101により発揮される機能である。ただし、ファームウェア更新制御部110およびIO制御部120は、FPGAやASICなどのハードワイヤードロジックにより実現されてもよい。
ファームウェア更新制御部110は、キャッシュメモリ103に記憶される情報に基づいて、SSD50,50a,50b,・・・によるファームウェアの更新のタイミングを制御する。具体的には、ファームウェア更新制御部110は、SSD50,50a,50b,・・・のファームウェアの更新指示の入力を受け付ける。当該更新指示は、管理者によりCM100に入力されてもよいし、サーバ20または他のサーバコンピュータによりLAN30aを介して、CM100に入力されてもよい。更新指示が管理者によりCM100に入力される場合、記録媒体11を用いて、更新後のファームウェアのプログラムが、CM100に提供される。あるいは、更新指示がサーバ20または他のサーバコンピュータによりCM100に入力される場合、サーバ20または他のサーバコンピュータによりLAN30aを介して、更新後のファームウェアのプログラムが、CM100に提供される。
そして、ファームウェア更新制御部110は、サーバ20によるストレージ装置10へのアクセス状況や、SSD50,50a,50b,・・・それぞれに対するアクセス待ちコマンドを監視する。ファームウェア更新制御部110は、当該監視に応じて、SSD毎に、ファームウェアの更新のタイミングを決定する。ファームウェア更新制御部110は、あるSSDにおいてファームウェアの更新を行うと決定すると、該当のSSDに対して更新後のファームウェアを提供し、ファームウェアの更新を指示する。ファームウェア更新制御部110は、ファームウェアを更新中であるSSDの識別情報を、キャッシュメモリ103に格納する。なお、SSDによるファームウェアの更新の所要時間は、数秒(例えば、5秒)程度である。
IO制御部120は、キャッシュメモリ103に記憶される情報に基づいて、ファームウェア更新中のSSDに対するIOを制御する。具体的には、ファームウェア更新中のSSDに対するIOを、別のSSDに振り替えたり、ファームウェア更新中のSSDが属するRAIDグループにおける他のSSDを用いて処理したりする。例えば、IO制御部120は、ファームウェア更新制御部110によりキャッシュメモリ103に格納されたファームウェアを更新中であるSSDの識別情報を参照することで、ファームウェア更新中のSSDを特定する。
図8は、チャンクの例を示す図である。RAIDグループにおける各SSDの記憶領域はチャンクと呼ばれる単位で管理される。例えば、SSD50は、チャンクa,b,c,d,eを含む(SSD50には更に多くのチャンクが含まれ得る)。ここで、識別情報“a”で表されるチャンクを、“チャンクa”のように表記している。
図9は、チャンク割り当て管理テーブルの例を示す図である。チャンク割り当て管理テーブル111は、キャッシュメモリ103に記憶される。チャンク割り当て管理テーブル111は、Writeデータ(書き込み対象のデータ)と、チャンクとの対応関係を管理するためのテーブルである。チャンク割り当て管理テーブル111は、Writeデータおよびチャンクの項目を含む。
Writeデータの項目には、Writeデータの識別情報が登録される。チャンクの項目には、当該Writeデータの書き込み先のチャンクの識別情報が登録される。例えば、チャンク割り当て管理テーブル111には、Writeデータが“1”、チャンクが“a,b”というレコードが登録されている。これは、識別情報“1”に対応するWriteデータの書き込み先が、チャンクa,bであることを示す。チャンク割り当て管理テーブル111には、他のWriteデータに対しても同様に、書き込み先のチャンクの識別情報が対応付けられている。
ここで、チャンク割り当て管理テーブル111は、キャッシュメモリ103に、SSD毎に格納される(チャンク割り当てテーブルは、該当のSSDの識別情報と対応付けられてキャッシュメモリ103に格納される)。各SSDのチャンク割り当て管理テーブルは、ストレージ装置10の電源をオフにする際(当該電源がオフになる直前)に、プロセッサ101により、SSD50,50a,50b,・・・の所定の記憶領域(不揮発性の記憶領域)に格納される。また、各SSDのチャンク割り当て管理テーブルは、ストレージ装置10の電源をオンにする際(例えば、当該電源のオンのための処理の間)に、プロセッサ101により、SSD50,50a,50b,・・・の所定の記憶領域から読み出されて、キャッシュメモリ103に格納される。
図10は、サーバのIO数の監視例を示す図である。ファームウェア更新制御部110は、サーバ20によるストレージ装置10へのIO数を監視することで、サーバ20によるアクセス状況を監視する。サーバ20によるIO数は、プロセッサ101が受け付けたサーバ20による書き込みや読み出しのアクセス要求の数である。例えば、ファームウェア更新制御部110は、サーバ20から単位時間当たりに受け付けたIO数を得ることで、現在、サーバ20によるアクセス要求が規定数よりも多いか、または、規定数以下かを判定し得る。サーバ20によるアクセス要求が規定数よりも多い場合、サーバ20では、ユーザの業務処理が活発に行われていると推定される。また、サーバ20によるアクセス要求が規定数以下の場合、サーバ20では、ユーザの業務処理の実行が不活発であると推定される。ファームウェア更新制御部110は、RAIDグループ毎に、IO数を監視してもよい。
なお、アクセス要求は、前述のライトバックの方法により、キャッシュメモリ103に保持される(具体的な保持方法は、図11において説明される)。そして、プロセッサ101は、キャッシュメモリ103に保持された当該アクセス要求に応じて、所定のRAIDグループ(例えば、SSD50,50aが属するRAIDグループG1)に対するアクセスを行う。
図11は、SSDに対するアクセス待ちコマンドの監視例を示す図である。前述のように、プロセッサ101は、ライトバック方式によって、サーバ20からのアクセス要求を処理する。このため、ファームウェア更新制御部110は、サーバ20から受け付けたアクセス要求に基づいて、SSD50,50a,50b,・・・それぞれに対するアクセスコマンドをキャッシュメモリ103に格納する。キャッシュメモリ103に格納された各SSDに対するアクセスコマンドは、アクセス待ちとなっているコマンドである。このため、キャッシュメモリ103に格納されたアクセスコマンドを、アクセス待ちコマンドと称する。
キャッシュメモリ103には、SSD50,50a,50b,・・・それぞれのキューが設けられ、各キューにアクセス待ちコマンドが格納される。例えば、SSD50(図中“SSDx”と表記)に対応するキューに、SSD50に対する複数のアクセス待ちコマンド(アクセス待ちコマンド群)が格納される。また、SSD50a(図中“SSDy”と表記)に対応するキューに、SSD50aに対する複数のアクセス待ちコマンド(アクセス待ちコマンド群)が格納される。
例えば、ファームウェア更新制御部110は、SSD50に対応するキューに格納されたアクセス待ちコマンドの数を求めることで、SSD50に対するアクセス待ちコマンドの数を得る。同様に、ファームウェア更新制御部110は、SSD50aに対応するキューに格納されたアクセス待ちコマンドの数を求めることで、SSD50aに対するアクセス待ちコマンドの数を得る。ファームウェア更新制御部110は、他のSSDに対しても同様にして、アクセス待ちコマンドの数を求めることができる。
次に、CM100によるSSDのファームウェア更新の処理手順を説明する。
図12は、ファームウェア更新例を示すフローチャートである。以下、図12に示す手順をステップ番号に沿って説明する。
(S11)ファームウェア更新制御部110は、SSD50,50a,50b,・・・のファームウェア更新の指示(更新指示)を受け付ける。前述のように、ファームウェア更新制御部110は、記録媒体11やLAN30aを介して、更新後のファームウェアのプログラムを取得し、RAM102またはキャッシュメモリ103に格納する。
(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に対して予め設定される。
(S13)ファームウェア更新制御部110は、IO数(IO数の頻度)が規定数以下のRAIDグループに属するSSDのファームウェア更新を実施するように、該当のSSDに対して指示する。例えば、ファームウェア更新制御部110は、1つのSSDずつ順番にファームウェア更新を行うよう指示する。このとき、ファームウェア更新制御部110は、更新後のファームウェアのプログラムを該当のSSDに対して提供する。該当のSSDのコントローラは、当該指示に応じて、更新後のファームウェアのプログラムを該当のSSDのNVRAMに格納し、自SSDを再起動させ、更新後のファームウェアでの動作を開始し、更新完了をファームウェア更新制御部110に応答する。そして、ファームウェア更新制御部110は、ステップS16に処理を進める。
(S14)ファームウェア更新制御部110は、キャッシュメモリ103に格納されたSSD毎のアクセス待ちコマンドの数に基づいて、何れかのSSDにおいてガベージコレクション(GC)を検出したか否かを判定する。何れかのSSDにおいてガベージコレクションを検出した場合、ファームウェア更新制御部110は、ステップS15に処理を進める。ガベージコレクションを検出していない場合、ファームウェア更新制御部110は、ステップS12に処理を進める。
ここで、図11で例示したように、ファームウェア更新制御部110は、キャッシュメモリ103を参照し、あるSSDにおいて、アクセス待ちコマンドの数が所定の閾値以上になった場合に、該当のSSDにおけるガベージコレクションを検出する。一方、ファームウェア更新制御部110は、各SSDについて、アクセス待ちコマンドの数が所定の閾値未満である場合に、ガベージコレクションを検出しない。ステップS14の判定に用いられる閾値は、運用に応じて予め定められ、ファームウェア更新制御部110に対して予め設定される。
(S15)ファームウェア更新制御部110は、ガベージコレクションが検出されたSSDのファームウェア更新を実施するように、該当のSSDに対して指示する。このとき、ファームウェア更新制御部110は、更新後のファームウェアのプログラムを該当のSSDに対して提供する。該当のSSDのコントローラは、当該指示に応じて、更新後のファームウェアのプログラムを該当のSSDのNVRAMに格納し、ガベージコレクションを一時中断し、自SSDを再起動させ、更新後のファームウェアでの動作を開始する。該当のSSDのコントローラは、更新後のファームウェアでの動作開始後に、一時中断したガベージコレクションを再開する。また、該当のSSDのコントローラは、ファームウェアの更新完了を、ファームウェア更新制御部110に応答する。
(S16)ファームウェア更新制御部110は、全SSDのファームウェアの更新を完了したか否かを判定する。全SSDのファームウェアの更新を完了した場合、ファームウェア更新制御部110は、ステップS17に処理を進める。全SSDのファームウェアの更新を完了していない場合、ファームウェア更新制御部110は、ステップS12に処理を進める。
(S17)ファームウェア更新制御部110は、各SSDのファームウェア更新の完了を通知する。具体的には、ファームウェア更新制御部110は、ファームウェア更新の完了を示すメッセージを、更新指示を行ったサーバ20または他のサーバコンピュータに送信してもよい。あるいは、ファームウェア更新制御部110は、ストレージ装置10に接続された表示装置に、ファームウェア更新の完了を示すメッセージを表示させてもよい。そして、ファームウェア更新制御部110は、ファームウェア更新処理を終了する(CM100は通常時の処理に復帰する)。
このように、ファームウェア更新制御部110は、各SSDのファームウェアの更新指示を受信すると、サーバ20から受信するアクセス要求の頻度(IO数の頻度)を監視する。そして、ファームウェア更新制御部110は、当該アクセス要求の頻度が規定数以下の場合に、アクセス待ちコマンドの数に拘わらずにファームウェアの更新を各SSDに指示する。この場合、例えば、ファームウェア更新制御部110は、各SSDに対して1つずつ順番にファームウェアの更新を指示する。例えば、1つのRAIDグループにおいて、1回にファームウェア更新を行うSSDは1つとする。また、ファームウェア更新制御部110は、アクセス要求の頻度が規定数よりも大きい場合に、アクセス待ちコマンドの数に応じて、ファームウェアの更新をSSDに指示する。この場合も、1つのRAIDグループにおいて1回にファームウェア更新を行うSSDは1つとする。
なお、ステップS14の判定では、他の方法によりガベージコレクションを検出してもよい。例えば、ファームウェア更新制御部110は、単位時間におけるアクセス待ちコマンドの数の増分が所定の閾値以上になった(比較的短期間にアクセス待ちコマンド数が急増した)場合に、該当のSSDにおけるガベージコレクションを検出してもよい。このとき、ファームウェア更新制御部110は、各SSDについて、単位時間におけるアクセス待ちコマンドの数の増分が所定の閾値未満の場合に、ガベージコレクションを検出しないことになる。
こうして、ファームウェア更新制御部110は、SSD50,50a,50b,・・・それぞれに対して、ファームウェアの更新を順次行う。これにより、ファームウェアの更新に伴う性能への影響を抑えることができる。具体的には次の通りである。
SSDにおけるファームウェアの更新中は、当該SSDに対するデータアクセスを行えなくなる。このため、任意のタイミングでSSDのファームウェアの更新を行うと、該当のSSDに対するデータアクセスに遅延が発生し、性能に影響を及ぼす可能性があるという問題がある。
そこで、ファームウェア更新制御部110は、SSDによりガベージコレクションが実行中である期間を利用して、該当のSSDによるファームウェアの更新も実行させる。ガベージコレクション中は、そもそもSSDのアクセス性能が低下する期間であるため、ファームウェアの更新も当該期間において実行してしまう方が、業務運用への影響を低減できる。なぜなら、ガベージコレクション中でない通常運用中にファームウェア更新を行うと、ガベージコレクションとは別に、SSDへのアクセスを行えない時間帯が発生することになるからである。ガベージコレクションの期間中にファームウェア更新も併せて行うことで、SSDへのアクセスを行えない時間帯が余計に発生することを抑えられ、性能への影響を抑えられる。
特に、ファームウェア更新制御部110は、上記のように、サーバ20からのIO数が比較的多い場合でも、ガベージコレクション中と判断された場合には、該当のSSDのファームウェア更新を行う。これにより、サーバ20によるIO数が比較的少なくなる時間帯を待たなくてもよく、早いタイミングで更新後のファームウェアを適用することができる。更に、管理者が、サーバ20によるIO数を監視して、ファームウェア更新のタイミングを決定する場合よりも、管理者の運用管理の負担を低減できる。
また、ガベージコレクションは、各SSDによって自律的に実行され、CM100側で各SSDによるガベージコレクションが実行されるタイミングを予測することは困難である。そこで、ファームウェア更新制御部110は、キャッシュメモリ103におけるアクセス待ちコマンドの数を監視することで、各SSDによりガベージコレクションが実行されているか否かを適切に判定可能となる。なぜなら、SSDによりガベージコレクションが実行されている間は、該当のSSDに対するアクセス性能が低下し、該当のSSDに対応するキューに保持されるアクセス待ちコマンドの数が過大になる可能性が高いからである。
また、複数のRAIDグループを用いて、シンプロビジョニングにより論理的な記憶領域をユーザに割り当てる場合に、ファームウェア更新およびガベージコレクションを行っているSSDを避けたアクセス制御を実現できる。具体的には以下に示す制御が考えられる。まず、CM100によるファームウェア更新中の書き込み処理の手順を説明する。
図13は、ファームウェア更新中の書き込み処理例を示すフローチャートである。以下、図13に示す手順をステップ番号に沿って説明する。
(S21)IO制御部120は、ファームウェア更新中のSSDに対するWriteアクセス(データの書き込みコマンド)の発生を検出する。例えば、IO制御部120は、ファームウェア更新中のSSDについて、キャッシュメモリ103におけるキューからデータの書き込みに相当するアクセス待ちコマンドを取得することで、当該Writeアクセスの発生を検出する。
(S22)IO制御部120は、書き込み対象のデータが新規データであるか否かを判定する。新規データとは、該当のSSDが属するRAIDグループに既に格納されている既存データに対する更新後のデータ以外のデータである。書き込み対象のデータが新規データである場合、IO制御部120は、ステップS23に処理を進める。書き込み対象のデータが新規データでない場合、IO制御部120は、ステップS24に処理を進める。
(S23)IO制御部120は、今回の書き込み対象である新規データについて、対象SSD(すなわち、ファームウェア更新中のSSD)を含まない別のRAIDグループへチャンクを割り当てる。IO制御部120は、チャンクの割り当て変更に応じて、キャッシュメモリ103に記憶されたチャンク割り当て管理テーブル111を更新する。そして、IO制御部120は、ステップS25に処理を進める。
(S24)IO制御部120は、対象SSD(すなわち、ファームウェア更新中のSSD)を含まない別のRAIDグループへ既存データを移す。その上で、IO制御部120は、今回の書き込み対象のデータ(更新後のデータ)について、当該別のRAIDグループへチャンクを割り当てる(既存データの移行先のチャンクを割り当てる)。IO制御部120は、チャンクの割り当て変更に応じて、キャッシュメモリ103に記憶されたチャンク割り当て管理テーブル111を更新する。なお、既存データを取得する際、IO制御部120は、対象SSDが属するRAIDグループにおける対象SSD以外のSSDから既存データを取得する(例えば、RAID1であればミラー、RAID5であればパリティなどを用いて既存データを取得する)。
(S25)IO制御部120は、割り当てたRAIDグループ(ステップS23またはステップS24における別のRAIDグループ)に属するSSDに対して書き込みを実行する。
図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アクセスは、既存データに対する更新データの書き込みを要求するものであるとする。
この場合、まず、IO制御部120は、(1)別RAIDにデータを再配置する。別RAIDとは、RAIDグループG2とは異なるRAIDグループG1を意味する。すなわち、IO制御部120は、RAIDグループG2に記憶された該当の既存データを、RAIDグループG1に格納する(該当の既存データに対するチャンクの割り当て変更を行う)。そして、IO制御部120は、(2)別RAIDに対して、該当の更新データを書き込む。すなわち、IO制御部120は、RAIDグループG1に再配置した既存データを、更新データにより更新する。
このように、ファームウェア更新中のSSDに対してWriteアクセスが発生した場合には、該当のSSDが属するRAIDグループとは別のRAIDグループにアクセス先を振り替えることで、ファームウェア更新に伴う書き込み遅延を低減できる。
次に、CM100によるファームウェア更新中の読み出し処理の手順を説明する。
図15は、ファームウェア更新中の読み出し処理例を示すフローチャートである。以下、図15に示す手順をステップ番号に沿って説明する。
(S31)IO制御部120は、ファームウェア更新中のSSDに対するReadアクセス(データの読み出しコマンド)の発生を検出する。例えば、IO制御部120は、ファームウェア更新中のSSDについて、キャッシュメモリ103におけるキューからデータの読み出しに相当するアクセス待ちコマンドを取得することで、当該Readアクセスの発生を検出する。
(S32)IO制御部120は、該当のSSD(ファームウェア更新中のSSD)が属するRAIDグループ内の該当のSSD以外のSSDにアクセスする。例えば、RAIDグループのRAIDレベルがRAID1の場合、該当のSSD以外のSSDは、該当のSSDに対するミラーのSSDである。あるいは、RAIDグループのRAIDレベルがRAID5の場合、該当のSSD以外のSSD(読み出し対象のデータの断片またはパリティを記憶するSSD)は、複数存在することになる。
(S33)IO制御部120は、ステップS32のアクセス結果により、読み出し対象のデータを構築する。例えば、RAID1であれば、IO制御部120は、ミラーのSSDにアクセスすることで、読み出し対象のデータを取得できる。あるいは、RAID5であれば、例えば、IO制御部120は、他のSSDから取得したパリティなどにより該当のSSDに記憶されたデータを復元できる。また、IO制御部120は、他のSSDから取得したデータと復元したデータとを用いて、読み出し対象のデータを取得できる。あるいは、ファームウェア更新中のSSDにパリティが記憶されている場合、IO制御部120は、他のSSDに記憶されたデータ(データの断片)を用いて、読み出し対象のデータを取得できる。
(S34)IO制御部120は、ステップS33において構築した読み出し対象のデータをサーバ20に応答する。
図16は、ファームウェア更新中の読み出しの具体例を示す図である。図16(A)は、RAIDレベルがRAID1であるRAIDグループG1に対するReadアクセスの処理例を示している。SSD50,50aは、RAIDグループG1に属する。そして、SSD50は、ファームウェアを更新中である。このとき、IO制御部120(プロセッサ101)が、SSD50に対するReadアクセスの発生を検出したとする。
この場合、IO制御部120は、SSD50のミラーであるSSD50aから、読み出し対象のデータを取得し、サーバ20に応答する。
図16(B)は、RAIDレベルがRAID5であるRAIDグループG3に対するReadアクセスの処理例を示している。SSD50d,50e,50f,50gは、RAIDグループG3に属する。そして、SSD50dは、ファームウェアを更新中である。このとき、IO制御部120(プロセッサ101)が、SSD50dに対するReadアクセスの発生を検出したとする。
この場合、IO制御部120は、RAIDグループG3に属するSSD50d以外のSSD50e,50f,50g(残りのSSD)に格納されたデータ(パリティなど)を用いて読み出し対象のデータを構築し、サーバ20に応答する。
このように、ファームウェア更新中のSSDに対してReadアクセスが発生した場合には、該当のSSDが属するRAIDグループにおける他のSSDを用いて、読み出し対象のデータを取得することで、ファームウェア更新に伴う読み出し遅延を低減できる。
なお、第1の実施の形態の情報処理は、処理部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。CM100は、プロセッサ101とRAM102(メモリ)とを含むコンピュータであると考えることもできる。プログラムは、コンピュータ読み取り可能な記録媒体11に記録できる。
例えば、プログラムを記録した記録媒体11を配布することで、プログラムを流通させることができる。プログラムの流通に利用可能な記録媒体11としては、前述のフラッシュメモリカードなどの半導体メモリ以外のものを用いることもできる。例えば、記録媒体11として、フレキシブルディスク(FD:Flexible Disk)、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用してもよい。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体11に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やNVRAM105などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
1 ストレージ装置
1a 記憶部
1b 処理部
1c,1d,1e,1f 記憶装置
2 情報処理装置
A1 記憶装置群

Claims (10)

  1. 複数の記憶装置を有するストレージ装置において、
    記憶装置に対するコマンドを記憶する記憶部と、
    前記記憶装置を制御する制御プログラムの更新指示を受信すると、前記記憶部が記憶するコマンドの数に基づいて、前記記憶装置が不要な領域を開放するガベージコレクションを実行中であると判定した場合、前記制御プログラムの更新を前記記憶装置に指示する処理部と、
    を有するストレージ装置。
  2. 前記複数の記憶装置は、各々が記憶装置を含む複数のグループに分けられており、
    前記処理部は、前記複数のグループのうち、第1のグループに属するとともに前記制御プログラムを更新中である記憶装置に対する書き込みコマンドを受け付けた場合、前記複数のグループのうち第2のグループに属する他の記憶装置に対して前記書き込みコマンドに応じたデータの書き込みを実行する、
    請求項1記載のストレージ装置。
  3. 前記処理部は、前記書き込みコマンドが前記第1のグループに記憶された既存データの更新を示す場合、前記既存データの格納先の記憶領域の割り当てを前記第1のグループから前記第2のグループに変更した後、前記第2のグループに属する前記他の記憶装置に対して前記書き込みコマンドに応じたデータの書き込みを実行する、
    請求項2記載のストレージ装置。
  4. 前記処理部は、前記複数の記憶装置のうち、前記制御プログラムを更新中である記憶装置に対する読み出しコマンドを受け付けた場合、前記第1のグループに属する記憶装置以外の記憶装置から前記読み出しコマンドに応じたデータの読み出しを実行する、
    請求項2または3記載のストレージ装置。
  5. 前記処理部は、前記記憶部が記憶するコマンドの数が閾値以上である場合に前記記憶装置が前記ガベージコレクションを実行中であると判定し、前記記憶部が記憶するコマンドの数が前記閾値未満である場合に前記記憶装置が前記ガベージコレクションを実行中でないと判定する、
    請求項1乃至4の何れか一項に記載のストレージ装置。
  6. 前記処理部は、前記更新指示を受信すると、情報処理装置から受信するアクセス要求の頻度を監視し、前記アクセス要求の頻度が規定数以下の場合、前記記憶部が記憶するコマンドの数に拘わらず、前記制御プログラムの更新を前記記憶装置に指示し、前記アクセス要求の頻度が前記規定数よりも大きい場合、前記記憶部が記憶するコマンドの数に応じて、前記制御プログラムの更新を前記記憶装置に指示する、
    請求項1乃至5の何れか一項に記載のストレージ装置。
  7. 前記複数のグループそれぞれは、同じRAID(Redundant Arrays of Independent Disks)レベルのRAIDグループである、
    請求項2乃至4の何れか一項に記載のストレージ装置。
  8. 前記記憶装置は、フラッシュメモリを有し、前記フラッシュメモリに対して前記ガベージコレクションを実行する、
    請求項1乃至7の何れか一項に記載のストレージ装置。
  9. 複数の記憶装置と記憶装置に対するコマンドを記憶する記憶部とを有するストレージ装置の制御プログラムにおいて、
    前記ストレージ装置が有する処理部に、
    前記記憶装置を制御する第1の制御プログラムの更新指示を受信すると、前記記憶部が記憶するコマンドの数に基づいて、前記記憶装置が不要な領域を開放するガベージコレクションを実行中であるかを判定させ、
    前記ガベージコレクションを実行中であると判定した場合、前記第1の制御プログラムの更新を前記記憶装置に指示させるストレージ装置の制御プログラム。
  10. 複数の記憶装置と記憶装置に対するコマンドを記憶する記憶部とを有するストレージ装置の制御方法において、
    前記ストレージ装置が有する処理部が、
    前記記憶装置を制御する制御プログラムの更新指示を受信すると、前記記憶部が記憶するコマンドの数に基づいて、前記記憶装置が不要な領域を開放するガベージコレクションを実行中であるかを判定し、
    前記ガベージコレクションを実行中であると判定した場合、前記制御プログラムの更新を前記記憶装置に指示するストレージ装置の制御方法。
JP2017085537A 2017-04-24 2017-04-24 ストレージ装置、ストレージ装置の制御プログラムおよびストレージ装置の制御方法 Active JP6867586B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017085537A JP6867586B2 (ja) 2017-04-24 2017-04-24 ストレージ装置、ストレージ装置の制御プログラムおよびストレージ装置の制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017085537A JP6867586B2 (ja) 2017-04-24 2017-04-24 ストレージ装置、ストレージ装置の制御プログラムおよびストレージ装置の制御方法

Publications (2)

Publication Number Publication Date
JP2018185584A true JP2018185584A (ja) 2018-11-22
JP6867586B2 JP6867586B2 (ja) 2021-04-28

Family

ID=64356029

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017085537A Active JP6867586B2 (ja) 2017-04-24 2017-04-24 ストレージ装置、ストレージ装置の制御プログラムおよびストレージ装置の制御方法

Country Status (1)

Country Link
JP (1) JP6867586B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046791A (ja) * 2006-08-14 2008-02-28 Fujitsu Ltd 記憶装置、ファームウェア更新方法、及び制御装置
JP2010061288A (ja) * 2008-09-02 2010-03-18 Hitachi Ltd ストレージ装置及びファームウェア更新指示方法
JP2015111334A (ja) * 2013-12-06 2015-06-18 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法
WO2016013202A1 (ja) * 2014-07-25 2016-01-28 日本電気株式会社 ストレージ装置、コンピュータシステム、アクセス制御方法および記録媒体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046791A (ja) * 2006-08-14 2008-02-28 Fujitsu Ltd 記憶装置、ファームウェア更新方法、及び制御装置
JP2010061288A (ja) * 2008-09-02 2010-03-18 Hitachi Ltd ストレージ装置及びファームウェア更新指示方法
JP2015111334A (ja) * 2013-12-06 2015-06-18 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法
WO2016013202A1 (ja) * 2014-07-25 2016-01-28 日本電気株式会社 ストレージ装置、コンピュータシステム、アクセス制御方法および記録媒体

Also Published As

Publication number Publication date
JP6867586B2 (ja) 2021-04-28

Similar Documents

Publication Publication Date Title
US9430161B2 (en) Storage control device and control method
JP5937697B2 (ja) ストレージシステム
JP4961319B2 (ja) 仮想ボリュームにおける仮想領域に動的に実領域を割り当てるストレージシステム
US7975168B2 (en) Storage system executing parallel correction write
EP2557494B1 (en) Storage apparatus and data copy method between thin-provisioning virtual volumes
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 (ja) 記憶システム並びにこれを用いたデータの管理方法
JP2008276646A (ja) ストレージ装置及びストレージ装置におけるデータの管理方法
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 (ja) ストレージシステム、ストレージシステムの制御方法、スイッチ装置およびストレージ装置
US20110022889A1 (en) Disk array apparatus and physical disk restoration method
US20210224002A1 (en) Storage control apparatus and storage medium
US20180307427A1 (en) Storage control apparatus and storage control method
US8938596B2 (en) Storage apparatus, control apparatus, and storage apparatus control method
JP5712535B2 (ja) ストレージ装置、制御部およびストレージ装置制御方法
JP6867586B2 (ja) ストレージ装置、ストレージ装置の制御プログラムおよびストレージ装置の制御方法
WO2018055686A1 (ja) 情報処理システム
JP6976237B2 (ja) ストレージシステム、データ管理方法、及びデータ管理プログラム
US11966590B2 (en) Persistent memory with cache coherent interconnect interface
JP7288191B2 (ja) ストレージ制御装置およびストレージ制御プログラム
JP2023110180A (ja) ストレージ装置および制御方法

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