説明

ストレージシステム

【課題】ストレージシステム内のボトルネックを解消し、ハードウェアが備える帯域を効率的に使用し、かつ高信頼性が得られるストレージシステムを提供する。
【解決手段】データを記憶する記憶装置と、前記記憶装置へのデータの入出力を制御するコントローラと、前記記憶装置と前記コントローラとを接続するインターフェースとを備えるストレージシステムであって、前記記憶装置は、前記インターフェースと接続された複数の物理ポートを備え、前記コントローラは、前記記憶装置の記憶領域を複数の記憶領域に論理的に分割して提供し、一又は複数の前記物理ポートを前記論理分割された記憶領域に割り当てる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステムに関し、特に、ストレージシステムを高速化し、信頼性を向上する技術に関する。
【背景技術】
【0002】
ストレージシステム(ディスクアレイ装置)において、磁気ディスクドライブ(HDD)及び半導体記憶装置(SSD)等のストレージモジュールの大容量化に伴い、ストレージモジュールによって構成されるグループ(RAIDグループ、ストレージプール)容量が増大している。
【0003】
一方、多くの場合は、ストレージモジュールによって構成されるグループ上に構成される論理ボリューム(LU)の容量の上限は2TBである。この容量の上限は、ブロックアクセス型のストレージ装置で標準的に使用されているSCSIプロトコルにおけるREAD(10)コマンド及びWRITE(10)コマンドのパラメータであるLBA指定領域が4バイトであるためである。このLBA領域を拡張したコマンドとして、可変長のREAD(16)コマンド及びWRITE(16)コマンドが定義されているが、これらのコマンドをサポートしていないストレージシステムが多い。
【0004】
複数のLUが同一グループに含まれることのデメリットは、論理的には異なるLUへのアクセスであっても、物理的には同じ記憶装置へのアクセスであって、同じ記憶装置へのアクセスによって性能的なボトルネックが生じることである。
【0005】
現在、記憶装置として主に使用されている磁気ディスクドライブは、ミリ秒オーダで、ディスクの回転による待ち時間や、ヘッドのシーク時間がある。このため、機械的な要因による性能が、インターフェースやコントローラの性能向上に追い付いていない。すなわち、機械的な要因が性能のボトルネックとなっている。
【0006】
一方、半導体記憶装置(SSD)は、機械的な待ち時間が発生しないことから、高速にデータを読み書きすることができる。しかし、半導体記憶装置は、磁気ディスクドライブとの互換性を重視して設計されているため、半導体の読み書き性能を充分に生かすことができない。例えば、8個のポートが実装されているSASコントローラがあり、一つのSASインターフェースは6Gbpsでデータを転送可能であることから、合計の帯域は8×6Gbit/s=48Gbit/sとなる。SASでは、複数のリンクを束ねてデータ転送する機能(ワイドポートまたはワイドリンクと呼ばれる)があるので、この帯域を充分生かすことが可能である。
【0007】
複数の物理リンクを束ねてデータを転送する方法として、特許文献1には、SASイニシエータ装置が、ワイドリンクのうちの何本の物理リンクをどのSASターゲット装置に割り当てるかを制御するストレージシステムが記載されている。また、特許文献2には、複数の物理リンクをまとめたワイドポートを用いてデータを転送する技術が記載されている。
【特許文献1】特開2007−256993号公報
【特許文献2】米国特許出願公開第2008/0104264号明細書
【特許文献3】特開2005−165443号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
SASインターフェースの磁気ディスクドライブは2ポートのコネクタを備え、この2ポートは冗長的に使用されるので、一つの磁気ディスクドライブのデータ転送性能は6Gbit/sである。この転送速度は磁気ディスクドライブには十分であるが、半導体記憶装置にとっては十分ではない。すなわち、半導体記憶装置は、データを高速で読み書きできることから、インターフェースの構成がボトルネックとなる場合がある。
【0009】
しかし、前述した特許文献1に記載された技術では、ターゲットのSASポートは現用ポートと冗長ポートの二つである。
【0010】
また、ストレージ装置の性能向上によって、コントローラの処理能力、記憶容量等のストレージ装置に備わるリソースを論理的に分割し、各分割された論理区画を独立してユーザに提供するストレージ論理分割(LPAR)技術がある。このような運用において、各ユーザに高い性能を提供するためには、論理区画内のボトルネックを排除する必要がある。
【0011】
この点、前述した特許文献1に記載された技術では、ターゲット側での論理分割は考慮されていない。
【0012】
さらに、信頼性及び性能が異なる複数の記憶装置を混載するストレージシステムでは、ボトルネックとなる性能及び信頼性が、ストレージシステムの性能及び信頼性となることから、他のボトルネック要因(書き込みデータの検証)についても検討する必要がある。
【0013】
具体的には、従来のストレージシステムでは、データを書き込んだ後に、書き込まれたデータを読み出して、書き込みデータと読み出されたデータとを1バイト毎に比較していた。又は、書き込みデータの検証コードと読み出されたデータの検証コードとを比較していた。しかし、前述した従来の方法では、データを読み出すために転送帯域を消費し、データを比較するためにプロセッサの処理能力を消費するので、パフォーマンスの向上を妨げるという問題があった。このパフォーマンスの低下は、半導体記憶装置等の高速な処理が可能な記憶装置においては大きな問題となる。
【0014】
本発明は、ストレージシステム内のボトルネックを解消し、ハードウェアが備える帯域を効率的に使用し、かつ高信頼性が得られるストレージシステムを提供することを目的とする。
【課題を解決するための手段】
【0015】
本発明の代表的な一例を示せば以下の通りである。すなわち、データを記憶する記憶装置と、前記記憶装置へのデータの入出力を制御するコントローラと、前記記憶装置と前記コントローラとを接続するインターフェースとを備えるストレージシステムであって、前記記憶装置は、前記インターフェースと接続された複数の物理ポートを備え、前記コントローラは、前記記憶装置の記憶領域を複数の記憶領域に論理的に分割して提供し、一又は複数の前記物理ポートを前記論理分割された記憶領域に割り当てることを特徴とする。
【0016】
また、本発明の別な一例は、データを記憶する記憶装置と、前記記憶装置に書き込まれるデータを一時的に格納するキャッシュメモリと、前記記憶装置へのデータの入出力を制御するコントローラと、前記記憶装置と前記キャッシュメモリと前記コントローラとを接続するインターフェースとを備えるストレージシステムであって、前記コントローラは、前記キャッシュメモリから前記記憶装置へデータを転送する場合、データの書き込みブロック毎に、書き込まれたデータの正当性を担保するための検証コードを生成し、前記生成された検証コードが付加されたデータを前記記憶装置に転送し、前記記憶装置の複数のブロックに書き込まれたデータに付加された検証コードのうち、先頭のブロックから1又は複数のブロックのデータに付加された検証コードを使用しないで、前記記憶装置に書き込まれたデータを検証することを特徴とする。
【発明の効果】
【0017】
本発明の実施の形態によると、ストレージシステムの性能を向上することができる。
【発明を実施するための最良の形態】
【0018】
以下、本発明の実施の形態について図面を参照して説明する。
【0019】
<実施形態1>
図1A及び図1Bは、本発明の第1の実施の形態の概要を示す説明図である。
【0020】
一般に、記憶装置22は、データを入出力する物理的なポートを1又は複数備える。例えば、図1Aに示すように、SASインターフェースを備える記憶装置は、二つの物理ポートを備える。これらのポートの一つは現用系に使用され、他方は待機系に使用される。そして、各ポートを用いてディスク制御部との間でデータを転送するための現用系及び待機系のパスを設定する。このため、記憶装置の記憶領域が論理的に分割されても、分割された記憶領域がポートと対応付けられていなかった。
【0021】
これに対し、図1Bに示すように、第1の実施の形態の記憶装置は8個の物理ポートを備えるので、四つのポートが稼動系に使用することができ、他の4個のポートが待機系に使用することができる。そして、各ポートを用いてディスク制御部との間でデータを転送するためのパスを設定する。この場合、4個の各ポートを論理分割された各記憶領域に割り当て、各記憶領域に独立してデータを転送することができる。また、時分割された4個のポートを一つの記憶領域に割り当て、高速にデータを転送することができる。
【0022】
また、第1の実施の形態の記憶装置22は、物理ポートの負荷を表示するLED223を備える。さらに、交替領域として使用される記憶領域を提供する補助記憶装置(例えば、SDメモリカード1000)を取り付けるインターフェース(SDメモリカードスロット222)を備える。このため、交替領域が不足した場合でも、SDメモリカード1000の記憶領域を交替領域とすることによって、記憶装置を延命することができる。
【0023】
図2は、本発明の第1の実施の形態のストレージシステムの正面図である。
【0024】
図2には、1台のコントローラ筐体1と、3台のドライブ筐体2を示す。コントローラ筐体1とドライブ筐体2との間、及び、ドライブ筐体2の間は、SASインターフェースによって接続される。
【0025】
なお、コントローラ筐体1とドライブ筐体2とは同じ外観であるが、両者の外観は異なってもよい。
【0026】
図3Aは、本発明の第1の実施の形態のコントローラ筐体1の前面扉を開いた状態の内部の構造を示す図である。
【0027】
コントローラ筐体1の前面側には半導体記憶装置22(又は、磁気ディスクドライブ21)が取り付けられるスロットが備わる。また、コントローラ筐体1の前面側の下部には電源ユニット1010が備わる。コントローラ筐体1に取り付けられた半導体記憶装置22は、バックプレーン(図示省略)によって接続される。
【0028】
図3Bは、本発明の第1の実施の形態のコントローラ筐体1の背面扉を開いた状態の内部の構造を示す図である。
【0029】
コントローラ筐体1の背面側の下部には、チャネル制御部100及びディスク制御部200が備わる。また、チャネル制御部100及びディスク制御部200の上部には、プロセッサ400、メモリ430及び共有メモリ450を備えるコントローラユニット1020が備わる。なお、チャネル制御部100、ディスク制御部200及びコントローラ1020以外の箇所は、半導体記憶装置22(又は、磁気ディスクドライブ21)が取り付け可能なスロットが備わってもよい。
【0030】
ドライブ筐体2の前面側の構造は、図3Aに示すコントローラ筐体1の前面側の構成と同じである。また、ドライブ筐体2の背面側の構造は、図3Aに示すコントローラ筐体1の前面側の構成と同様に、半導体記憶装置22(又は、磁気ディスクドライブ21)が取り付けられるスロットが備わる。
【0031】
図4は、本発明の第1の実施の形態のストレージシステムの構成を示すブロック図である。
【0032】
本実施の形態のストレージシステム(コントローラ筐体1)は、複数のチャネル制御部100、複数のディスク制御部200、キャッシュメモリ300、プロセッサ400、メモリ430及び共有メモリ450を備える。チャネル制御部100、ディスク制御部200、キャッシュメモリ300、プロセッサ400、メモリ430及び共有メモリ450は、データコントローラ500によって接続されている。図示したように、ストレージシステム1は、通常、複数のチャネル制御部100及び複数のディスク制御部200を備えるが、これらの各構成は一つだけ備わってもよい。
【0033】
キャッシュメモリ300、プロセッサ400、メモリ430、共有メモリ450及びデータコントローラ500によって、コントローラユニット1020が構成される。
【0034】
チャネル制御部100は、ホスト計算機10との間の通信プロトコルに従った信号を入出力するドライバである物理インターフェース、ホスト計算機10との間の通信プロトコルに従った信号の入出力を制御するプロトコル制御部、及び、チャネル制御部100からキャッシュメモリ300へ転送されるデータのアドレスを制御する転送制御部を備える。チャネル制御部100は、例えば、ファイバチャネルプロトコルを用いて通信するSAN11によって、ホスト計算機10に接続される。なお、チャネル制御部100とホスト計算機10とは、イーサネット(登録商標)によって接続されてもよい。この場合、チャネル制御部100とホスト計算機10との間はiSCSIプロトコルによって通信する。
【0035】
ディスク制御部200は、記憶装置21、22との間の通信プロトコルに従った信号を入出力するドライバである物理インターフェース、記憶装置21、22との間の通信プロトコルに従った信号の入出力を制御するプロトコル制御部、及び、ディスク制御部200から転送されるデータのアドレスを制御する転送制御部を備える。本実施の形態のストレージシステムでは、ディスク制御部200は、4ポートのSAS(Serial Attached SCSI)インターフェースを備える。なお、ディスク制御部200と記憶装置21、22との間の接続は、複数のポートを一つのリンクとしてデータを転送するマルチポート接続が可能な方法であれば、他の接続方法でもよい。
【0036】
本実施の形態のストレージシステム1は、記憶装置21、22に磁気ディスクドライブ21及び半導体記憶装置22を用いるが、これらの他に、光ディスク、磁気テープ等を用いてもよい。なお、図4には、記憶装置21、22が示されているが、ストレージシステムに記憶装置21、22が備わっても、記憶装置21、22を備えた別のサブシステムを接続する形態でも(一般的な、NASやVTLの形態でも)よい。
【0037】
キャッシュメモリ300は、ホスト計算機10から書き込みを要求されたデータを一時的に格納し、記憶装置21、22から読み出されたデータを一時的に格納する。
【0038】
プロセッサ400は、ストレージシステムの動作(例えば、チャネル制御部100からキャッシュメモリ300へのデータ転送の指示等)を制御する。
【0039】
メモリ430は、プロセッサ400によって実行されるプログラム及びこのプログラムの実行時に必要とされるデータを格納する。
【0040】
共有メモリ450は、各部で共通に使用されるデータ(例えば、ストレージシステムの構成情報)を格納する。
【0041】
データコントローラ500は、チャネル制御部100、ディスク制御部200、キャッシュ部300、プロセッサ400、メモリ430及び共有メモリ450を接続するスイッチ(例えば、クロスバスイッチ)を備える。データコントローラ500によって、チャネル制御部100、ディスク制御部200、キャッシュ部300、プロセッサ400、メモリ430及び共有メモリ450を接続する内部ネットワークが構成される。この内部ネットワークによって、これら各部の間でデータが転送される。
【0042】
ストレージシステムは、保守用端末が接続されるインターフェース(SVP)を備えてもよい。
【0043】
チャネル制御部100は、ホスト計算機10からのデータ書込要求を受信すると、受信した書込要求をストレージシステム内のプロトコルに変換し、プロトコル変換された書込要求のアドレスを解析し、解析結果をプロセッサ400に送る。プロセッサ400は、アドレスの解析結果に基づいて、書込要求(データ)の転送先を決定し、転送先をデータコントローラ500に指示する。データコントローラ500は、プロセッサ400から指示された転送先にデータが転送されるようにスイッチを切り換えて、データを転送する。
【0044】
ホスト計算機10からの書込要求(データ)は、チャネル制御部100からキャッシュメモリ300に転送され、キャッシュメモリ300に一時的に格納される。データがキャッシュメモリ300へ格納された時に(記憶装置21、22へデータが格納される前であっても)、ホスト計算機10には書込完了の報告が返答されるので、ホスト計算機10に対するレスポンスを向上させることができる。
【0045】
キャッシュメモリ300に格納されたデータは、ディスク制御部200に転送される。ディスク制御部200は、転送されたデータを記憶装置21、22に転送するためのプロトコル(例えば、SASプロトコル)に変換する。プロトコルが変換されたデータは、記憶装置21、22に書き込まれる。
【0046】
本実施の形態のストレージシステム1は、コントローラユニットの他に、SASエクスパンダ600、磁気ディスクドライブ21及び半導体記憶装置22を備える。
【0047】
SASエクスパンダ600は、ディスク制御部200、磁気ディスクドライブ21及び半導体記憶装置22を接続するスイッチ(例えば、クロスバスイッチ)を備え、ディスク制御部200と磁気ディスクドライブ21(又は、半導体記憶装置22)との間でデータを転送する。SASエクスパンダ600は、接続先の記憶装置に対応した数のポートを使用して記憶装置21、22と接続する。例えば、SASエクスパンダ600と半導体記憶装置22との間は、現用系の4ポート又は待機系の4ポート(合計8ポート)によって接続される。
【0048】
また、SASエクスパンダ600と磁気ディスクドライブ21との間は、磁気ディスクドライブ21が備えるインターフェースによって、接続されるポートの数が異なる。例えば、SASインターフェースを備える磁気ディスクドライブ21とSASエクスパンダ600との間は、現用系又は待機系の各々1ポートによって接続される。また、SATA(Serial Advanced Technology Attachment)インターフェースを備える磁気ディスクドライブ21とSASエクスパンダ600との間は、現用系の1ポート又は待機系の1ポートによって接続される。なお、SATAの磁気ディスクドライブ21は一つのポートのみ備えるので、磁気ディスクドライブ21のインターフェースにポート数を切り替えるポートアプリケータ610を設け、現用系の1ポート又は待機系の1ポート(合計2ポート)を1ポートに切り替えて、SATAの磁気ディスクドライブ21に接続する。
【0049】
また、SASエクスパンダ600は、他の筐体(例えば、ドライブ筐体2)のSASエクスパンダ600と、SASインターフェースによって接続される。
【0050】
磁気ディスクドライブ21は、磁気ディスクにデータを記録する。磁気ディスクドライブ21は、SASインターフェースによって、SASエクスパンダ600を介して、ディスク制御部200と接続される。
【0051】
半導体記憶装置22は、不揮発性メモリ(例えば、フラッシュメモリ)を備える、いわゆるSSD(Solid State Disk)であって、SASインターフェースによってディスク制御部200と接続される。なお、半導体記憶装置22を構成するメモリ素子は、フラッシュメモリに限らず、M-RAM、P−RAM、STT−RAM、レーストラックメモリ等の半導体素子であってもよい。
【0052】
本実施の形態のストレージシステムのドライブ筐体2は、SASエクスパンダ600及び磁気ディスクドライブ21を備える。図4に示すドライブ筐体2は、磁気ディスクドライブ21のみを備えるが、磁気ディスクドライブ21の他に、半導体記憶装置22を備えてもよい。
【0053】
図5は、本発明の第1の実施の形態の半導体記憶装置22の正面図である。
【0054】
半導体記憶装置22は、その前面に、ラッチ解除レバー221、SDメモリカードスロット222及び状態表示LED223を備える。また、半導体記憶装置22は、その内部に、前面基板、ベース基板、増設メモリ基板1及び増設メモリ基板2を備える(図6参照)。
【0055】
ラッチ解除レバー221は、半導体記憶装置22をコントローラ筐体1(又は、ドライブ筐体2)から取り外すときに操作される。
【0056】
SDメモリカードスロット222は、半導体記憶装置22に交替領域を提供するSDメモリカード1000を装着するためのインターフェースである。なお、SDメモリカード1000へ書き込まれるデータは、半導体記憶装置22の制御部によって暗号化された後に書き込まれる。
【0057】
状態表示LED223は、赤/青/緑を1セットとし、左右に4個ずつ(合計8個)を備える。各状態表示LED223は、8個の各ポートの負荷状態を表示する。例えば、高負荷の場合は赤色に点灯させ、中負荷の場合は黄色(赤:通常+緑:通常)に点灯させ、小負荷の場合は緑色に点灯させ、及び負荷が極めて小さい場合は青色に点灯させる。
【0058】
また、状態表示LED223によって、半導体記憶装置22の動作状態を表示して、保守用途に使用してもよい。例えば、半導体記憶装置22に障害が発生した場合は、赤色に点滅させ、交替領域の残容量が閾値以下になった場合は、橙色(赤:通常+緑:減光)に点滅させることができる。この場合、ユーザは、状態表示LED223が橙色で点滅している半導体記憶装置22のSDメモリカードスロット222に、SDメモリカード1000を装着することによって、直ちに半導体記憶装置22を交換することなく、半導体記憶装置22を継続して動作させることができる。
【0059】
このように、状態表示LED223を半導体記憶装置22の前面側から視認可能な位置に設けることによって、ユーザは、筐体の前面扉を開くことによって、ストレージシステムに実装された半導体記憶装置22の負荷状態を一目で確認することができ、ボリュームの負荷を直感的に理解することができる。このため、負荷を分散するための、ボリュームの再配置の計画が容易になる。
【0060】
また、半導体記憶装置22の前面には、複数の空気導入孔224を備える。
【0061】
図6Aは、本発明の第1の実施の形態の半導体記憶装置22のケースの構造を示す透視図である。
【0062】
半導体記憶装置22は、前面に空気導入孔224を備え、背面に空気排出口225を備える。例えば、コントローラ筐体1の中央部に排気ファンを設けることによって、コントローラ筐体1内の気流を前面から中央部に及び背面から中央部に流れるように制御すれば、半導体記憶装置22の前面から背面に空気が流れる。
【0063】
このようにすれば、磁気ディスクドライブ21が実装されたHDDモジュールの前面から導入した空気が、HDDの外周を流れるのに対し、半導体記憶装置22の内部へ空気を導入することができる。
【0064】
半導体記憶装置22は、前面の下部にSDメモリカード1000を挿入するための穴226を備える。
【0065】
図6Bは、本発明の第1の実施の形態の半導体記憶装置22の内部構造を示す斜視図である。
【0066】
半導体記憶装置22は、ベース基板2201、前面基板2202及び増設メモリ基板2203、2204、2205)を備える。
【0067】
ベース基板2201は、インターフェースコネクタ228、不揮発性メモリ2225(図7参照)、制御部2222、2223(図7参照)、コネクタ2211及びスタッキングコネクタ2212、2213を備える。コネクタ2211は、前面基板2202と接続される。スタッキングコネクタ2212は増設メモリ基板2203と接続される。スタッキングコネクタ2213は増設メモリ基板2204と接続される。
【0068】
前面基板2202は、コネクタ2211によってベース基板2201に取り付けられる。前面基板2202は、左右に4個ずつ(合計8個)の状態表示LED223を備える。また、前面基板2202は、下部にSDメモリカードスロット222を備える。
【0069】
増設メモリ基板2203は、スタッキングコネクタ2212によってベース基板2201に取り付けられる。増設メモリ基板2204は、スタッキングコネクタ2213によってベース基板2201に取り付けられる。増設メモリ基板2205は、スタッキングコネクタ2214によって増設メモリ基板2203に取り付けられる。増設メモリ基板2203、2204、2205は、不揮発性メモリ素子を備える。
【0070】
スタッキングコネクタ2212、2213及び2214は、その長手方向が、半導体記憶装置22の前面から背面に向かう方向に沿って配設される。本実施の形態の半導体記憶装置22は、その内部に風を通す構造であるため、スタッキングコネクタが空気の流れを妨げないように、スタッキングコネクタの長手方向が空気の流れと並行になるように配置されている。
【0071】
図7は、本発明の第1の実施の形態の半導体記憶装置22(ベース基板2201)の構成を示すブロック図である。
【0072】
第1の実施の形態の半導体記憶装置22は、インターフェースコネクタ228、物理インターフェース2221、プロトコル制御部2222、プロセッサ2223、メモリ2224、不揮発性メモリ2225、SDメモリカードスロット222、状態表示LED223、電源コネクタ229、バックアップ電源2226及び増設メモリ接続用コネクタ2213を備える。
【0073】
インターフェースコネクタ228は、図8B及び図8Cを用いて後述するように、8ポートのSASインターフェースを収容する高密度コネクタである。
【0074】
物理インターフェース2221は、SASプロトコルに従った信号を入出力するためのドライバである。プロトコル制御部2222は、SASプロトコルに従った信号の入出力を制御するためのコントローラである。
【0075】
SAS規格では、8個の物理ポートまでは同一SASアドレスでアクセス可能である。よって、従来の2個の物理ポートを備える記憶装置と同じ論理インターフェースによって本実施の形態の半導体記憶装置22のポート(現用系4ポート、待機系4ポート)を制御することができる。なお、現用系で8ポートを使用する場合は、待機系で8ポートを使用するので、現用系及び待機系で2つのSASアドレスが必要になる。なお、リンク毎にSASアドレスを設定してもよい。
【0076】
プロセッサ2223は、メモリ2224に格納されたプログラムを実行することによって、半導体記憶装置22の動作、例えば、不揮発性メモリ2225へのデータの入出力を制御する。メモリ2224は、プロセッサ2223によって実行されるプログラム及びプログラムを実行するために必要なデータを格納する。不揮発性メモリ2225は、半導体記憶装置22に転送されるデータを格納するメモリである。
【0077】
SDメモリカードスロット222は、半導体記憶装置22に交替領域を提供するSDメモリカード1000を装着するためのインターフェースである。状態表示LED223は、半導体記憶装置22の各ポートの負荷状態及び半導体記憶装置22の動作状態を表示する。
【0078】
電源コネクタ229は、半導体記憶装置22に電源を供給するためのインターフェースである。バックアップ電源2226は、2次電池もしくは大容量キャパシタを備え、半導体記憶装置22への電源の供給が停止した後の所定時間、半導体記憶装置22の各部に電源を供給する。増設メモリ接続用コネクタ(スタッキングコネクタ)2212、2213は、増設メモリ基板2204を接続するためのインターフェースである。
【0079】
図8Aから図8Cは、本発明の第1の実施の形態の記憶装置(磁気ディスクドライブ21、半導体記憶装置22)のインターフェースコネクタの配置の例を示す図である。
【0080】
図8Aに示すように、SASインターフェースを備える磁気ディスクドライブ21は、二つのデータ入出力ポートが含まれるSASインターフェースコネクタ227を備える。
【0081】
また、図8Bに示すように、半導体記憶装置22は、従来のSASインターフェースコネクタ227と、複数のデータ入出力ポートが含まれる高密度SASインターフェースコネクタ228とを備える。図8Bに示す場合、8ポートを高密度SASインターフェースコネクタ228経由で接続してもよく、2ポートを従来のSASインターフェースコネクタ227経由で、6ポートを高密度SASインターフェースコネクタ228経由で接続してもよい。また、半導体記憶装置22への電源は従来のSASインターフェースコネクタ227を経由して供給される。
【0082】
また、図8Cに示すように、半導体記憶装置22は、複数のデータ入出力ポートが含まれる高密度SASインターフェースコネクタ228と、電源コネクタ229とを備えてもよい。図8Cに示す場合、8ポートが高密度SASインターフェースコネクタ228経由で提供される。また、半導体記憶装置22への電源は電源コネクタ229を経由して供給される。
【0083】
すなわち、本実施の形態のストレージシステムにおいて、磁気ディスクドライブ21及び半導体記憶装置22は、従来のSASインターフェースコネクタ227、高密度SASインターフェースコネクタ228及び電源コネクタ229が互いに干渉することなく、必要なコネクタを使用することができる。この場合、磁気ディスクドライブ21は2ポートのみを使用し、半導体記憶装置22は8ポートを使用する。
【0084】
図9Aから図9Hは、本発明の第1の実施の形態の記憶領域の論理分割と、論理分割された記憶領域のパス(帯域)の割り当ての例を示す説明図である。
【0085】
図9Aに示す半導体記憶装置22の場合、記憶領域は論理分割されず、一つの論理的記憶領域として提供される。この場合、現用系の4個のパスは24Gbit/sの一つのリンクを形成して、高速にデータを転送するワイドリンクパスとして使用される。
【0086】
図9Bに示す半導体記憶装置22の場合、記憶領域は等しい容量の二つの領域に論理分割される。この場合、現用系の4個のパスは12Gbit/sのリンクを形成して、高速にデータを転送する二つのマルチリンクパスに設定され、各12Gbit/sのパスは論理分割された各記憶領域に割り当てられる。よって、論理分割された各記憶領域は、独立に12Gbit/sの帯域を使ってデータを転送することができる。本発明においては、このようにワイドリンクとして使用可能なリンク内を複数のリンクに分割し、前記分割したリンクを独立して転送可能とする技術を、従来技術であるワイドリンクと区別する為に、マルチリンクと称することにする。
【0087】
図9Dに示す半導体記憶装置22の場合、記憶領域は等しい容量の四つの領域に論理分割される。この場合、現用系の4個の6Gbit/sのパスは論理分割された各記憶領域に割り当てられる。よって、論理分割された各記憶領域は、独立に6Gbit/sの帯域を使ってデータを転送することができる。
【0088】
図9A、図9B及び図9Dに示す半導体記憶装置22の場合、記憶領域の分割の割合とパスの分割の割合とが均等であった。しかし、本発明の実施の形態では、記憶領域の分割の割合とパスの分割の割合とが均等でなくてもよい。
【0089】
例えば、図9Cに示す半導体記憶装置22の場合、記憶領域は等しい容量の三つの領域に論理分割される。この場合、現用系の4個のパスは、一つの12Gbit/sのマルチリンクパスと二つの6Gbit/sのパスとに設定される。そして、論理分割された一つの領域には12Gbit/sのパスが割り当てられ、他の二つの領域には各々6Gbit/sのパスが割り当てられる。よって、論理分割された各記憶領域は、独立に割り当てられた12Gbit/s又は6Gbit/sの帯域を使ってデータを転送することができる。
【0090】
このように論理分割された記憶領域に一つのパス又は複数のパスを纏めたマルチリンクパスを割り当てることによって、I/F全体の帯域を記憶装置の性能に応じて適切に配分できる。そして、磁気ディスクドライブより高い速度で読み書き可能な半導体記憶装置22の性能を生かすことができる。
【0091】
すなわち、現用系で4ポートを使用し、記憶領域を論理的に4分割した場合、記憶領域の分割数が4までは記憶装置毎にポートを設定することができる。プロセッサ400は半導体記憶装置22にモードセレクトコマンドを送信し、論理分割数及び分割された各領域のアドレス範囲を指示する。半導体記憶装置22は、受信したモードセレクトコマンドに従って、論理分割された領域とポートとを関連付けし、論理分割された各領域に識別子(LUN)を割り当てる。
【0092】
使用可能な物理ポート数を越えて記憶領域を分割した場合、コントローラ側(プロセッサ400)でI/Oターゲットの記憶領域を指定することが、パフォーマンス的には望ましい。しかし、半導体記憶装置22の処理能力に余裕がある場合は、記憶装置側でI/Oターゲットの記憶領域を判定してもよい。
【0093】
このように、記憶領域の分割の割合とパスの分割の割合とを不均等にすることによって、ユーザの要求に適合するように論理分割された記憶領域を提供することができる。
【0094】
また、記憶装置の論理分割を、ストレージシステムの論理分割と組み合わせることによって、さらにきめ細かい性能を調整することができる。
【0095】
次に、磁気ディスクドライブ21の場合の記憶領域の論理分割と、論理分割された記憶領域のパス(帯域)の割り当ての例について説明する。
【0096】
図9Eに示す磁気ディスクドライブ21の場合、現用系のパスは1本しか設定できないので、待機系のパスを現用系に転用しない限り、パスを論理分割することはできない。よって、記憶領域が二つの領域に分割された場合でも、論理分割された各領域で6Gbit/sのパス(帯域)が、論理分割された二つの領域によって共用される。
【0097】
また、図9Fに示す磁気ディスクドライブ21のように、記憶領域が分割できない場合、1本の現用系のパスが記憶領域に割り当てられる。よって、6Gbit/sのパス(帯域)が、一つの領域によって使用される。
【0098】
図10は、図9Aから図9Fに示す論理分割とパスの割り当てとを実現するための構成情報の説明図である。
【0099】
図10に示す構成情報はプロセッサ400によって管理され、共有メモリ450に格納されている。この構成情報は、ホストグループ1701、論理分割グループ1702、フロントエンドポート1703、システム処理能力1704、キャッシュ容量、モード1705、バックエンドゾーニング1706、ボリュームグループ1707、ドライブタイプ1708、及び論理分割の割当情報(領域情報1709、パス情報1710)を含む。
【0100】
ホストグループ1701は、この論理分割グループ(記憶領域)にアクセスするホスト計算機10のグループの識別子である。論理分割グループ1702は、論理分割された記憶領域の識別子である。フロントエンドポート1703は、この論理分割グループへのアクセスのために使用されるチャネル制御部100のポートの識別子であり、この論理分割グループへのアクセスのために使用されるポート数の情報も含む。
【0101】
システム処理能力1704は、この論理分割グループへのアクセス処理の性能である。キャッシュ容量、モード1705は、この論理分割グループへのアクセスのために使用されるキャッシュメモリ400の容量、及び、キャッシュメモリ400へのアクセスモード(ランダムアクセスか、シーケンシャルアクセスか)である。バックエンドゾーニング1706は、この論理分割グループへのアクセスに使用されるディスク制御部200下のパスのゾーニングの種類である。
【0102】
ボリュームグループ1707は、この論理分割グループを構成する論理ボリュームの識別子である。ドライブタイプ1708は、この論理分割グループを構成する記憶装置の種類である。
【0103】
論理分割の割当情報は、領域情報1709及びパス情報1710を含む。領域情報1709は、この論理分割グループを構成する記憶容量である。パス情報1710は、この論理分割グループへのアクセスに使用されるパスの帯域である。
【0104】
想定負荷1711は、このテーブル内に例として設定された論理分割グループへのアクセス負荷の想定である。
【0105】
なお、半導体記憶装置22は高速で応答が可能であるため、磁気ディスクドライブ21よりキャッシュメモリ400の容量の割り当てを小さくすることができる。また、図10に示す構成情報では、磁気ディスクドライブ21は、データ転送の速度より磁気ディスクへのアクセス性能がボトルネックであるため、一つのポートを割り当てている。しかし、半導体メモリを混載したハイブリッドタイプの磁気ディスクドライブの場合や、磁気ディスクの記録密度が向上して、磁気ディスクドライブのパフォーマンスが向上した場合等では、半導体記憶装置22と同様に複数のポートを割り当ててもよい。
【0106】
図11は、本発明の第1の実施の形態のストレージシステムにおいて設定されたリンクの例を説明する図である。なお、図11は現用系のリンクのみを示し、待機系のリンクは図示した現用系のリンクと同数備わるとよい。
【0107】
コントローラ筐体1のコントローラ600A上のプロトコル制御部602Aは各々8個の物理インターフェース601Aを制御している。各物理インターフェース601Aは、一つの物理ポートを提供し、各ポートが一つのリンクを形成している。
【0108】
コントローラ筐体1から出力されるリンクのうち、半導体記憶装置22へのリンクは、4本ずつ纏められ、24Gbit/sの二つのリンクを形成している。一方、磁気ディスクドライブ21へのリンクは、6Gbit/sの八つのリンクを形成している。
【0109】
コントローラ筐体1と接続されるドライブ筐体2AのSASエクスパンダ600Aは、コントローラ筐体1からの八つのリンクを4本ずつ纏め、24Gbit/sの二つを形成し、24Gbit/sのリンクを二つの半導体記憶装置22に提供する。
【0110】
ドライブ筐体2AのSASエクスパンダ600Bは、6Gbit/sの八つのリンクのまま、ドライブ筐体2Bに出力する。ドライブ筐体2BのSASエクスパンダ600Cは、6Gbit/sの八つのリンクを磁気ディスクドライブ21に提供する。
【0111】
すなわち、半導体記憶装置22へのデータ転送には、複数のリンクを纏めたマルチリンクを使用する。一方、磁気ディスクドライブ21へのデータ転送には、マルチリンクを使用しないで、各パスを独立に制御する。なお、記憶装置へのパスの一部分をマルチリンクとし、マルチリンクと独立のリンクを組み合わせてパスを形成してもよい。
【0112】
次に、仮想的に構成されたマルチリンクについて説明する。
【0113】
本実施の形態では、半導体記憶装置22の、各々6Gbit/sの四つのポートを使用して、仮想マルチリンクによって、最大12Gbit/sの4本の仮想リンクを構成する。
【0114】
管理者は、ストレージシステムに(例えば、管理ネットワークを介して)接続された管理計算機を用いて、半導体記憶装置22の記憶容量を論理的に分割し、分割された記憶領域毎に仮想ストレージを構成する。
【0115】
ストレージシステムのプロセッサ400は、管理者の指示に従って、コントローラユニット1020のリソース(各制御部の処理能力、プロセッサの処理能力、及びキャッシュの容量)を配分し、SASエクスパンダ600のゾーニングを設定することによって、仮想マルチリンクのための物理ポートのペアを設定する。さらに、仮想マルチリンクが適用される半導体記憶装置22にも、論理分割及び仮想マルチリンクを設定する。
【0116】
SASエクスパンダ600及び半導体記憶装置22のマルチリンクの設定が完了した後、プロセッサ400は、マルチリンク開始のコマンドをSASエクスパンダ600に発行する。SASエクスパンダ600は、当該コマンドを受信した後、配下の半導体記憶装置22とリンクのネゴシエーションを開始する。SASエクスパンダ600は、当該ネゴシエーションの完了後、設定されたモードによる動作を開始し、当該動作が可能である旨の通知をプロセッサ400に報告する。
【0117】
プロセッサ400は、当該通知を受信した後、同時に動作可能な二つのペア(例えば、ポート0/1とポート2/3、ポート1/2とポート0/3)の属する論理分割グループの並列処理を優先して行うように、ディスク制御部200等を設定する。
【0118】
ディスク制御部200は、コントローラから書き込まれる処理キューを監視して、並列処理が可能なI/Oを優先的に実行するように、コマンドの実行順序を制御する。これによって、帯域を効率的に使用することができる。
【0119】
また、SASエクスパンダ600は、一つの物理ポートを複数の論理区画に割り当てる仮想ゾーニーングによって、複数の論理区画で物理ポートを共用しつつ、論理区画毎にストレージドメインを形成することができる。
【0120】
また、半導体記憶装置22とSASエクスパンダ600との間の複数のポートを、論理分割されたリンク毎に休止してもよい。また、ポート(リンク)の休止に対応して半導体記憶装置22の対応する記憶領域を停止してもよい。このように論理分割毎にストレージシステムの動作を停止することによって、消費電力を低減することができる。
【0121】
また、各論理区画の負荷に応じて、半導体記憶装置22とSASエクスパンダ600との間の複数のポートの一部を休止してもよい。
【0122】
図12Aから図12Dは、本発明の第1の実施の形態のストレージシステムにおいて設定されたリンクの例を説明する図である。図12Aから図12Dに示すリンクの例は、一つ又は複数のリンクを時分割して、複数の記憶領域で共用する。
【0123】
図12Aは、論理分割された記憶領域に割り当てられたリンクを時分割で使用してデータを転送する仮想マルチリンクの例を示す。
【0124】
記憶領域は四つの記憶領域1101〜1104に分割されている。ポート(リンク)は複数の記憶領域によって共用されるように割り当てられる。すなわち、記憶領域1101にはリンク1及び2が割り当てられ、データ1111はリンク1及び2によって記憶領域1101に転送される。記憶領域1102にはリンク2及び3が割り当てられ、データ1112はリンク2及び3によって記憶領域1102に転送される。記憶領域1103にはリンク1及び4が割り当てられ、データ1113はリンク1及び4によって記憶領域1103に転送される。記憶領域1104にはリンク3及び4が割り当てられ、データ1114はリンク3及び4によって記憶領域1104に転送される。
【0125】
この場合、プロセッサ400もしくはディスク制御部200は、半導体記憶装置22にデータを転送する場合、割り当てられたポートをチェックして、ポートが空いているか否かを判定する。そして、空いているポートを使用して一つのリンクを形成するようにデータを転送する。
【0126】
このように各リンクを時分割して使用することで、各記憶領域では最大12Gbit/sでデータを転送することができる。
【0127】
図12Bは、図12Aに示すリンク1に障害が発生した場合に、待機系のリンク5を使用してデータを転送する状態を示す。
【0128】
リンク1には障害が発生したので、リンク1の代わりに待機系のリンク5が現用系に割り当てられる。
【0129】
このため、記憶領域1101にはリンク2及び5が割り当てられ、記憶領域1101に転送されるデータ1111はリンク2及び5によって転送される。記憶領域1103にはリンク4及び5が割り当てられ、記憶領域1103に転送されるデータ1113はリンク4及び5によって転送される。記憶領域1102及び1104に対するリンクの割り当ては、図12Aに示した場合と同じである。
【0130】
このように、本実施の形態では、現用系及び待機系のパスを自由に組み合わせてリンクを形成することができるので、一部のリンクに障害が発生した場合でも、従来のSAS規格のワイドリンクのように、纏められたリンクの全てを切り換える必要がない。すなわち、現用系の一部のパスに障害が発生した場合、障害が発生した一部のパスのみを切り換えることによって、待機系のリンクの一部を併用して、データを転送することができる。このため、障害発生時も通常時と同じ帯域を使用してデータを転送することができる。
【0131】
図12Cは、通常時に、現用系のリンク1〜4及び待機系のリンク5〜8も使用してデータを転送する例を示す。
【0132】
記憶領域1101にはリンク1、2、7及び8が割り当てられ、データ1111はリンク1、2、7及び8によって記憶領域1101に転送される。記憶領域1102にはリンク2、3、5及び8が割り当てられ、データ1112はリンク2、3、5及び8によって記憶領域1102に転送される。記憶領域1103にはリンク1、4、6及び7が割り当てられ、データ1113はリンク1、4、6及び7によって記憶領域1103に転送される。記憶領域1104にはリンク3、4、5及び6が割り当てられ、データ1114はリンク3、4、5及び6によって記憶領域1104に転送される。
【0133】
このように現用系及び待機系のリンクを時分割して使用すると、各記憶領域では最大24Gbit/sでデータを転送することができ、ストレージシステムに備わるデータ転送帯域を有効に使用することができる。
【0134】
図12Dは、図12Cに示すリンク1に障害が発生した場合に、リンク1を使用していた記憶領域へのデータ転送を縮退してデータを転送する状態を示す。
【0135】
リンク1には障害が発生したので、記憶領域1101にはリンク7及び8が割り当てられ、データ1111はリンク7及び8によって記憶領域1101に転送される。記憶領域1103にはリンク6及び7が割り当てられ、データ1113はリンク6及び7によって記憶領域1103に転送される。記憶領域1102及び1104に対するリンクの割り当ては、図12Cに示した場合と同じである。
【0136】
このように、本実施の形態では、現用系及び待機系のパスを自由に組み合わせてリンクを形成することができるので、従来のSAS規格のワイドリンクのように、纏められたリンクの全てを切り換える必要がない。すなわち、現用系のパスと同じ帯域の待機系のパスを用意しておかなくてもよい。このため、一部のパスに障害が発生した場合に、パスを縮退し、データの転送を継続することができる。
【0137】
図13Aは、本発明の第1の実施の形態のプロセッサ400が管理する管理テーブル1200の構成を示す説明図である。
【0138】
管理テーブル1200は、論理分割された記憶領域とディスク制御部200のポートとの関係を示し、論理分割グループ1201、仮想マルチリンク1202、ターゲットポート1203及びディスクグループ1204を含む。
【0139】
論理分割グループ1201は、論理分割されたストレージシステムの論理区画の識別子である。仮想マルチリンク1202は、仮想的なマルチリンクとして使用されるリンクの数である。ターゲットポート1203は、ディスク制御部200のポートの識別子である。ディスクグループ1204は、SASエクスパンダ600のポート(このポートに接続されている記憶装置)の識別子である。
【0140】
なお、管理テーブル1200のエントリ1205は通常時のポートの割り当てを示し、エントリ1206はポートA0に障害が発生した場合のポートの割り当てを示す。
【0141】
図13Bは、本発明の第1の実施の形態のSASエクスパンダ600が管理する管理テーブル1210の構成を示す説明図である。
【0142】
管理テーブル1210は、論理分割された記憶領域とSASエクスパンダ600のポートとの関係を示し、物理ポート1211、仮想ゾーングループ1212、仮想マルチリンク1213及び物理リンク1214のマッピング情報を含む。
【0143】
物理ポート1211は、SASエクスパンダ600のポートの識別子である。仮想ゾーングループ1212は、論理分割されたストレージシステムの論理区画の識別子である。仮想マルチリンク1213は、仮想的なマルチリンクとして使用されるリンクの数である。物理リンク1214は、物理的リンクの識別子である。
【0144】
管理テーブル1210から分かるように、仮想リンクは一つのゾーンに対応しており、物理リンクは複数のゾーンにシェアされている。
【0145】
図14は、本発明の第1の実施の形態のコントローラ筐体1のプロセッサ400及びディスク制御部200において実行される処理のフローチャートである。
【0146】
まず、ホスト計算機10からのI/O要求(書込要求、読出要求)を受けると、プロセッサ400は、記憶装置21、22へのI/Oを実行するためのコマンドを処理キューに格納し、コマンドを処理キューに格納した旨をディスク制御部200に指示する(S101)。
【0147】
ディスク制御部200は、コマンドを処理キューに格納した旨の指示を受信した後、処理キューに格納されたコマンドを読み出す(S102)。そして、ディスク制御部200は、処理キューから読み出されたコマンドと並行して実行可能なコマンドがあるか否かを判定する(S103)。
【0148】
判定の結果、処理キューから読み出されたコマンドと並行して実行可能なコマンドがある場合、ディスク制御部200は、処理キューから読み出されたコマンド及び並行して実行可能なコマンドを実行する(すなわち、実行されるコマンドに対応したI/OコマンドをSASインターフェース(SASエクスパンダ600)に出力する)。そして、両コマンドの実行が終了した後、処理キューから読み出されたコマンドをキューから削除し(S104)、並列して実行されたコマンドをキューから削除する(S105)。その後、ステップS107に進む。
【0149】
一方、処理キューから読み出されたコマンドと並行して実行可能なコマンドがない場合、ディスク制御部200は、処理キューから読み出されたコマンドを実行する。そして、コマンドの実行が終了した後、処理キューから読み出されたコマンドをキューから削除する(S106)。その後、ステップS107に進む。
【0150】
ステップS107では、ディスク制御部200は、全ての処理キューにコマンドが格納されているか否かを判定する。判定の結果、いずれの処理キューにもコマンドが格納されていない場合、待機状態へ移行する。一方、いずれかの処理キューにコマンドが格納されている場合、ステップS102へ戻り、処理キューに格納されているコマンドを処理する。
【0151】
図15は、本発明の第1の実施の形態のコントローラ筐体1のSASエクスパンダ600において実行される処理のフローチャートである。
【0152】
SASエクスパンダ600は、ディスク制御部200からのI/Oコマンドを受けると、I/Oコマンドによってデータを転送しようとするポートの状態を参照し、このポートはデータ転送中であるか否かを判定する(S111)。
【0153】
判定の結果、I/Oコマンドによってデータを転送しようとするポートがデータ転送中である場合、さらに、管理テーブル1210(図13B)を参照し、このポートがマルチリンクされるポートであるか否かを判定する(S112)。
【0154】
判定の結果、このポートがマルチリンクされるポートである場合、さらに、このI/Oはマルチリンクによって転送可能か否かを判定する(S113)。
【0155】
判定の結果、このI/Oはマルチリンクによって転送可能である場合、受信したI/Oコマンドに従って、マルチリンクでI/Oを処理(データを転送)する(S114)。
【0156】
一方、ポートがマルチリンクされるポートでない場合(S112でNO)、又は、このI/Oはマルチリンクによって転送不可能である場合(S113でNO)、ステップS111へ戻り、データを転送しようとするポートが空くまで待機する。
【0157】
さらに、I/Oコマンドによってデータを転送しようとするポートがデータ転送中ではない場合(S111でNO)、さらに、データが転送されるポートがマルチリンクされるポートであるか否かを判定する(S115)。
【0158】
判定の結果、このポートがマルチリンクされるポートである場合、受信したI/Oコマンドに従って、マルチリンクを使用してI/Oを処理(データを転送)する(S114)。
【0159】
一方、ポートがマルチリンクされるポートでない場合、受信したI/Oコマンドに従って、処理通常の処理によって、I/Oを処理(データを転送)する(S116)。
【0160】
図16は、本発明の第1の実施の形態の障害発生時のパス変更処理のフローチャートである。図16に示すパス変更処理によって、図12Bに示すようにパスが変更される。
【0161】
仮想マルチリンクが設定されているポートの障害が検出された後に、SASエクスパンダ600は、障害が発生したポートの障害通知をディスク制御部200に通知する(S121)。
【0162】
ディスク制御部200は、管理テーブル1200(図13A)を参照し、障害が検出されたポートが含まれるワイドリンクの全てのリンクが使用不能となったか否かを判定する(S122)。
【0163】
判定の結果、障害が検出されたポートが含まれるワイドリンクの全てのリンクが使用不能となった場合、このポートに対応する待機系のポートにパスを変更する(S124)。
【0164】
一方、障害が検出されたポートが含まれるワイドリンクの一部のリンクが使用可能である場合、このマルチリンクに含まれるリンクのペアを変更し、パスの変更を、SASエクスパンダ600に通知する(S123)。
【0165】
SASエクスパンダ600は、パスの変更の通知を受信した後に、当該リンクのI/Oを変更されたパスへリダイレクトする(S125)。
【0166】
なお、図12Dに示すパス変更の場合、障害が発生したパスを含む仮想マルチリンクの使用するリンク数を減らす設定がされる。
【0167】
以上説明したように、第1の実施の形態では、論理分割された記憶領域に一つのパス又はマルチリンクパスを割り当てることによって、I/F全体の帯域を記憶装置の性能に応じて適切に配分でき、ストレージシステムの性能を向上することができる。
【0168】
<実施形態2>
次に、本発明の第2の実施の形態について説明する。
【0169】
従来のストレージシステムでは、記憶装置への所定の書き込み単位毎に、データが正しいことを保証する検証コードを付加している。例えば、半導体記憶装置(いわゆる、SSD)及びSATAのディスクドライブでは512バイト毎に、また、FCのディスクドライブでは520バイト毎に、LA、LRC等の検証コードを付加している。
【0170】
さらに、コントローラが記憶装置にライト命令を発行しても、記憶装置にデータが書き込まれていないという問題が生じる場合がある。
【0171】
そのため、従来技術では、データを書き込んだ後に、書き込まれたデータを読み出して、書き込みデータと読み出されたデータとを1バイト毎に比較していた。又は、書き込みデータの検証コードと読み出されたデータの検証コードとを全て比較していた。
【0172】
しかし、前述した従来の方法では、書き込まれたデータを全て読み出すために転送帯域を消費し、データを比較するためにプロセッサの処理能力を消費するので、パフォーマンスの向上を妨げるという問題があった。このパフォーマンスの低下は、半導体記憶装置等の高速な処理が可能な記憶装置においては大きな問題となる。
【0173】
この課題に対し、シーケンシャルデータについて、先頭及び最終ブロックのデータのみを比較することが提案されている(例えば、特開2005−165443号公報参照)。
しかし、前記の方法では、1回の書込みに対して、2回分のコマンド生成/発行およびステータス確認に要するオーバヘッドが大きいという問題があり、スループットの低下等が懸念される。
【0174】
この問題を解決するために、第2の実施の形態では、記憶装置の複数のブロックのデータに付加された検証コードのうち、最後のブロックのみ又は最後のブロックから数ブロックのデータに付加された検証コードを使用して、データを検証する。
【0175】
第2の実施の形態の検証コードは、例えば、8バイトで、アドレス検証コード(RAIDグループ内のアドレス等のシーケンシャルな番号)、連続性検証コード(データの書き込み毎に生成される識別子、書き込まれたデータの一連番号、データの先頭及び末尾を示すフラグ等)、データ検証コード(データ保証のためのCRC又はECC等のコード)、及び/又は、データ属性コード(データの種別(読取専用又はパリティ)等を示すコード)を用いることができる。
【0176】
図17A及び図17Bは、本発明の第2の実施の形態の概要を説明する図である。
【0177】
図17Aに示すように、プロセッサ400(コントローラ1020)は、記憶装置(磁気ディスクドライブ21又は半導体記憶装置22)に最終ブロックを書き込んだ(1601)後、書き込まれたデータを読み出すリード命令を発行し、書き込まれたデータを読み出す(1602)。そして、書き込みデータの検証コードと読み出されたデータの検証コードとを比較する(1603)。その結果、プロセッサ400は、検証が成功した場合、ライト応答をホスト計算機10に返信する。一方、プロセッサ400は、検証に失敗した(書き込みデータの検証コードと読み出されたデータの検証コードとが一致しない)場合、エラーをホスト計算機10に報告する。第2の実施の形態では、プロセッサ400は、最終ブロック(又は、最後から数ブロック)のデータを読み出すリード命令を発行し、最終ブロック(又は、最後から数ブロック)の検証コードのみを比較する。
【0178】
図17Bに示すように、第2の実施の形態の書き込みデータの検証では、前述したプロセッサ400に代えて、SASエクスパンダ600又はHDDに接続されたポートアプリケータ610が、書き込みデータの検証コードと読み出されたデータの検証コードとを比較してもよい(1603)。
【0179】
この場合、SASエクスパンダ600(又は、ポートアプリケータ610)は、記憶装置21、22に最終ブロックを書き込んだ(1601)後、記憶装置21、22のWRITEステータスを保留し、最終ブロック(又は、最後から数ブロック)のデータを記憶装置から読み出す(1602)。その後、SASエクスパンダ600は、書き込みデータの検証コードと読み出されたデータの検証コードとを比較する(1603)。その結果、SASエクスパンダ600は、検証が成功した場合、保留していたWRITE応答をコントローラ1020に返信する(1604)。一方、検証に失敗した場合、エラーをコントローラ1020に報告する(1604)。
【0180】
このように、SASエクスパンダ600又はポートアプリケータ610が、書き込みデータを書き込みデータを検証することによって、書き込みデータの検証処理の負荷が分散され、コントローラ負荷を軽減することができる。
【0181】
さらに、記憶装置21、22が、書き込みデータを検証してもよい。このように、記憶装置21、22において書き込みデータの検証を分散処理すると、コントローラの負荷を軽減することができる。
【0182】
本実施の形態では、プロセッサ400(SASエクスパンダ600、ポートアプリケータ610)によって実行されるデータの検証処理において処理されるデータ量は小さいため、WRITE応答の待ち時間を短縮でき、コントローラ1020のタイムアウトを抑止することができる。また、検証処理に消費されるCPUの処理能力とデータ転送帯域を小さくしながら、書き込みデータを高信頼度で検証することができる。
【0183】
第2の実施の形態の書き込みデータの検証では、所定の条件を満たす場合に、書き込まれたブロックの全ての検証コードを比較することによって、より信頼性を向上することができる。この所定の条件には、データ書き込み前の所定時間内に、コントローラ1020が記憶装置21、22のエラーを検出した場合、及び、データ書き込み時又は検証用のデータを読み出す時にエラーが発生した場合がある。このような場合には、記憶装置21、22の動作が不安定であったり、記憶装置21、22が故障している可能性がある。よって、書き込まれた全範囲のデータを検証することによって、データ書き込みの信頼性を向上させることができる。
【0184】
また、周期的に(例えば、所定時間毎に)、書き込まれた全範囲のデータを検証することよい、このようにすることによって、記憶装置21、22の障害を早期に検出することができ、データ書き込みの信頼性をより向上させることができる。
【0185】
また、検証コードの比較のためのデータを読み出す範囲を長くし、検証コードによるデータの不一致が検出される可能性を向上させることができる。すなわち、比較のために読み出される検証コードが多くなるので、異常な検証コードが含まれる確率が高くなるのである。
【0186】
また、検証コード中に書き込み毎の管理コードを埋め込み、検証コードを比較するとよい。この管理コードは、データの書き込み毎に生成される識別子、書き込まれたデータの一連番号、データの先頭及び末尾を示すフラグ等、データの連続性を検証できる情報を用いるとよい。
【0187】
図18は、本発明の第2の実施の形態のエラー検出モデルを示す説明図である。
【0188】
図18では、例えば、10ブロックのデータ1801を書き込む場合を考える。データが正常に記憶装置21、22に書き込まれた場合は、10番目のデータは10番目のセクタに書き込まれる(1802)。
【0189】
一方、記憶装置21、22で優先順位の高い内部処理による割り込みが発生することによって書き込みが中断した場合、記憶装置21、22は、割り込み処理の終了後にずれたセクタ1804から書き込みを再開する場合がある。本来はバグであるが、特定条件下での割り込みの競合など、再現や摘出が難しいケースでは見過ごされる事があり、結果、想定されていない状況が生じるため、このような場合、記憶装置21、22では、エラーを検出することができない場合がある。
【0190】
しかし、この場合でも、最終1ブロックのデータを読み出すことによって、データが正常に書き込まれたかを検証することができる(1801)。さらに、最終ブロックの前後1ブロックのデータを読み出すことによって、データの連続性及び書き込み対象領域外1805への影響を確認することができる。
【0191】
最終ブロックのデータのみを読み出すか、最終ブロックの前後数ブロックのデータを読み出すかは、管理者又はユーザの設定によって決めてもよい。また、書き込まれるデータが所定の閾値より大きい場合、複数ブロックのデータを検証のために読み出してもよい。具体的には、RAIDストライプサイズ以上のデータを書き込む場合、複数ブロックのデータを検証のために読み出してもよい。また、書き込みデータ長と読み出しデータ長の比率が所定の閾値より大きい場合、複数ブロックのデータを検証のために読み出してもよい。また、データ書き込みのために消費される帯域が所定の閾値より大きい場合、複数ブロックのデータを検証のために読み出してもよい。また、記憶装置の負荷が所定の閾値より大きい場合、複数ブロックのデータを検証のために読み出してもよい。
【0192】
このように、検証のために読み出されるデータ長を、書き込まれるデータの長さによって制御することによって、さらに信頼性を向上させることができる。
【0193】
図19は、本発明の第2の実施の形態のプロセッサ400によって実行されるデータ検証処理のフローチャートである。
【0194】
まず、ホスト計算機10から書き込みデータを受領すると、チャネル制御部100は、受領したデータをキャッシュメモリ300に格納する(S131)。そして、プロセッサ400は、キャッシュメモリ300に格納されたデータを読み出して、ホスト計算機10から受領したデータの検証コードを生成する(S132)。プロセッサ400は、書き込みコマンドを生成し、対象の記憶装置にデータを書き込む(S133)。
【0195】
その後、プロセッサ400は、プロセッサ400の負荷が所定の閾値より低いか否か、及び、書き込まれるデータの長さが所定の閾値を超えるか否かを判定する(S134)。
【0196】
判定の結果、プロセッサ400の負荷が低い、又は、書き込まれたデータが長い場合、書き込まれた最終ブロックを含む、所定数のブロックのデータを読み出し(S137)、読み出された検証コードと書き込みデータの検証コードとを比較し、両者が一致するか否かを判定する(S138)。その結果、両者が一致しない場合、データは正しく書き込めていないと判定し、エラー処理を実行する(S139)。一方、両者が一致する場合、データは正しく書き込めたと判定し、このデータ検証処理を終了する。
【0197】
ステップS134における判定の結果、プロセッサ400の負荷が高い、又は、書き込まれたデータが短い場合、書き込まれた最終ブロックのデータを読み出し(S135)、読み出された検証コードと書き込みデータの検証コードとを比較し、両者が一致するか否かを判定する(S136)。その結果、両者が一致しない場合、データは正しく書き込めていないと判定し、エラー処理を実行する(S139)。一方、両者が一致する場合、データは正しく書き込めたと判定し、このデータ検証処理を終了する。
【0198】
以上説明したように、第2の実施の形態では、書き込みデータの検証のために消費される帯域が少ないので、パフォーマンスに優れている。このため、ユーザの高パフォーマンス要求に応えることができる。
【0199】
また、第2の実施の形態は、前述した特開2005−165443号公報に記載された技術と異なり、書き込みデータがシーケンシャルデータであるかに拘わらず適用することができる。
【0200】
また、第2の実施の形態では、前述した特開2005−165443号公報に記載された技術と異なり、最初のブロックのデータを用いていない。このため、連続したブロックのデータを1回の読み出しコマンドで読み出すことができ、従来技術のように最初ブロックと最後のブロックとを読み出すために2回の読み出しコマンドを発行する必要がない。
【0201】
また、第2の実施の形態では、前述した特開2005−165443号公報に記載された技術と異なり、ブロックの全データを比較せず、検証コードのみを比較する。
【0202】
さらに、第2の実施の形態では、最終ブロック以降のデータも読み出して検証する。よって、従来技術では含まれない範囲のデータ信頼性を向上させることができる。
【0203】
さらに、第2の実施の形態では、検証コードに規則性がある情報を用いることによって、データ比較のようなOK又はNGの判断以外に、検証コードの規則性を用いてエラー原因を特定することができる。よって、データ書き込み処理の信頼性を向上させることができる。
【0204】
さらに、第2の実施の形態では、比較するデータが少なく、単純な演算処理によって比較できることから、八一ドウェアヘの組み込みが容易となる。
【図面の簡単な説明】
【0205】
【図1A】本発明の第1の実施の形態の概要を示す説明図である。
【図1B】本発明の第1の実施の形態の概要を示す説明図である。
【図2】本発明の第1の実施の形態のストレージシステムの正面図である。
【図3A】本発明の第1の実施の形態のコントローラ筐体の前面扉を開いた状態の内部の構造を示す図である。
【図3B】本発明の第1の実施の形態のコントローラ筐体の背面扉を開いた状態の内部の構造を示す図である。
【図4】本発明の第1の実施の形態のストレージシステムの構成を示すブロック図である。
【図5】本発明の第1の実施の形態の半導体記憶装置の正面図である。
【図6A】本発明の第1の実施の形態の半導体記憶装置のケースの構造を示す透視図である。
【図6B】本発明の第1の実施の形態の半導体記憶装置の内部構造を示す斜視図である。
【図7】本発明の第1の実施の形態の半導体記憶装置(ベース基板)の構成を示すブロック図である。
【図8A】本発明の第1の実施の形態の記憶装置のインターフェースコネクタの配置の例を示す図である。
【図8B】本発明の第1の実施の形態の記憶装置のインターフェースコネクタの配置の例を示す図である。
【図8C】本発明の第1の実施の形態の記憶装置のインターフェースコネクタの配置の例を示す図である。
【図9A】本発明の第1の実施の形態の記憶領域の論理分割と、論理分割された記憶領域のパス(帯域)の割り当ての例を示す説明図である。
【図9B】本発明の第1の実施の形態の記憶領域の論理分割と、論理分割された記憶領域のパス(帯域)の割り当ての例を示す説明図である。
【図9C】本発明の第1の実施の形態の記憶領域の論理分割と、論理分割された記憶領域のパス(帯域)の割り当ての例を示す説明図である。
【図9D】本発明の第1の実施の形態の記憶領域の論理分割と、論理分割された記憶領域のパス(帯域)の割り当ての例を示す説明図である。
【図9E】本発明の第1の実施の形態の記憶領域の論理分割と、論理分割された記憶領域のパス(帯域)の割り当ての例を示す説明図である。
【図9F】本発明の第1の実施の形態の記憶領域の論理分割と、論理分割された記憶領域のパス(帯域)の割り当ての例を示す説明図である。
【図10】図9Aから図9Fに示す論理分割とパスの割り当てとを実現するための構成情報の説明図である。
【図11】本発明の第1の実施の形態のストレージシステムにおいて設定されたリンクの例を説明する図である。
【図12A】本発明の第1の実施の形態のストレージシステムにおいて設定されたリンクの例を説明する図である。
【図12B】本発明の第1の実施の形態のストレージシステムにおいて設定されたリンク例を説明する図である。
【図12C】本発明の第1の実施の形態のストレージシステムにおいて設定されたリンクの例を説明する図である。
【図12D】本発明の第1の実施の形態のストレージシステムにおいて設定されたリンクの例を説明する図である。
【図13A】本発明の第1の実施の形態のディスク制御部のプロトコル制御部に備わる管理テーブルの構成を示す説明図である。
【図13B】本発明の第1の実施の形態のSASエクスパンダのプロトコル制御部に備わる管理テーブルの構成を示す説明図である。
【図14】本発明の第1の実施の形態のコントローラ筐体のプロセッサ及びディスク制御部において実行される処理のフローチャートである。
【図15】本発明の第1の実施の形態のコントローラ筐体のSASエクスパンダにおいて実行される処理のフローチャートである。
【図16】本発明の第1の実施の形態の障害発生時のパス変更処理のフローチャートである。
【図17A】本発明の第2の実施の形態の概要を説明する図である。
【図17B】本発明の第2の実施の形態の概要を説明する図である。
【図18】本発明の第2の実施の形態のエラー検出モデルを示す説明図である。
【図19】本発明の第2の実施の形態のデータ検証処理のフローチャートである。
【符号の説明】
【0206】
21 磁気ディスクドライブ
22 半導体記憶装置
100 チャネル制御部
200 ディスク制御部
300 キャッシュメモリ
400 プロセッサ(CPU)
500 データコントローラ
600 SASエクスパンダ
610 ポートアプリケータ(ポート拡張器)

【特許請求の範囲】
【請求項1】
データを記憶する記憶装置と、前記記憶装置へのデータの入出力を制御するコントローラと、前記記憶装置と前記コントローラとを接続するインターフェースとを備えるストレージシステムであって、
前記記憶装置は、前記インターフェースと接続された複数の物理ポートを備え、
前記コントローラは、
前記記憶装置の記憶領域を複数の記憶領域に論理的に分割して提供し、
一又は複数の前記物理ポートを前記論理分割された記憶領域に割り当てることを特徴とする請求項1に記載のストレージシステム。
【請求項2】
前記コントローラは、
二つの前記物理ポートを前記論理分割された一つの記憶領域に排他的に割り当て、
前記論理分割された記憶領域に割り当てられた二つのポートを使って、一つのリンクを形成するように、データを転送することを特徴とする請求項1に記載のストレージシステム。
【請求項3】
前記コントローラは、
前記二つの物理ポートを前記論理分割された一つの記憶領域に現用系のポートとして排他的に割り当て、
二つの他の前記物理ポートを前記論理分割された記憶領域に待機系のポートとして割り当て、
前記論理分割された記憶領域に割り当てられた一の現用系のポートに障害が発生した場合、当該記憶領域に割り当てられた一の待機系のポート及び前記障害が発生していない現用系のポートを使って、一つのリンクを形成するように、データを転送することを特徴とする請求項2に記載のストレージシステム。
【請求項4】
前記コントローラは、
前記複数の物理ポートを前記論理分割された記憶領域が共用するように割り当て、
前記論理分割された記憶領域に割り当てられた複数のポートのうちデータ転送時に使用可能なポートを使って、一つのリンクを形成するように、データを転送することを特徴とする請求項1に記載のストレージシステム。
【請求項5】
前記コントローラは、前記複数のポートを、前記論理分割された記憶領域に均等に又は不均等に割り当てることを特徴とする請求項1に記載のストレージシステム。
【請求項6】
前記記憶装置の一部の記憶領域は、前記記憶領域が書換不能となった場合に使用される交替領域に設定されており、
前記ストレージシステムは、前記交替領域が不足すると判定された場合に使用される補助記憶装置を装着するインターフェースを備えることを特徴とする請求項1に記載のストレージシステム。
【請求項7】
データを記憶する記憶装置と、前記記憶装置に書き込まれるデータを一時的に格納するキャッシュメモリと、前記記憶装置へのデータの入出力を制御するコントローラと、前記記憶装置と前記キャッシュメモリと前記コントローラとを接続するインターフェースとを備えるストレージシステムであって、
前記コントローラは、
前記キャッシュメモリから前記記憶装置へデータを転送する場合、データの書き込みブロック毎に、書き込まれたデータの正当性を担保するための検証コードを生成し、
前記生成された検証コードが付加されたデータを前記記憶装置に転送し、
前記記憶装置の複数のブロックに書き込まれたデータに付加された検証コードのうち、先頭のブロックから1又は複数のブロックのデータに付加された検証コードを使用しないで、前記記憶装置に書き込まれたデータを検証することを特徴とするストレージシステム。
【請求項8】
前記コントローラは、前記記憶装置の複数のブロックに書き込まれたデータに付加された検証コードのうち、最後のブロックのデータに付加された検証コードのみを使用して、前記記憶装置に書き込まれたデータを検証することを特徴とする請求項7に記載のストレージシステム。
【請求項9】
前記コントローラは、前記記憶装置へ転送されるデータが所定の閾値より大きい場合、前記記憶装置の複数のブロックに書き込まれたデータに付加された検証コードのうち、最後から先頭方向に、データ長より小さい所定数のブロックのデータに付加された検証コードを使用して、前記記憶装置に書き込まれたデータを検証することを特徴とする請求項7に記載のストレージシステム。
【請求項10】
前記コントローラは、前記記憶装置の複数のブロックに書き込まれたデータに付加された検証コードのうち、最後のブロックから前後に所定数のブロックのデータに付加された検証コードを使用して、前記記憶装置に書き込まれたデータを検証することを特徴とする請求項7に記載のストレージシステム。
【請求項11】
データを記憶する記憶装置と、前記記憶装置へのデータの入出力を制御するコントローラと、前記記憶装置と前記コントローラとを接続するインターフェースとを備えるストレージシステムであって、
前記記憶装置は、前記インターフェースと接続された複数の物理ポートを備え、
前記コントローラは、
前記記憶装置の記憶領域を複数の記憶領域に論理的に分割して提供し、
二つの前記物理ポートを前記論理分割された一つの記憶領域に現用系のポートとして排他的に割り当て、
二つの他の前記物理ポートを前記論理分割された記憶領域に待機系のポートとして割り当て、
通常運用時には、前記論理分割された記憶領域に割り当てられた二つの現用系のポートを使って、一つのリンクを形成するように、データを転送し、
前記論理分割された記憶領域に割り当てられた一の現用系のポートに障害が発生した場合、当該記憶領域に割り当てられた一の待機系のポート及び前記障害が発生していない現用系のポートを使って、一つのリンクを形成するように、データを転送することを特徴とするストレージシステム。

【図1A】
image rotate

【図1B】
image rotate

【図3B】
image rotate

【図4】
image rotate

【図7】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図8C】
image rotate

【図9A】
image rotate

【図9B】
image rotate

【図9C】
image rotate

【図9D】
image rotate

【図9E】
image rotate

【図9F】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12A】
image rotate

【図12B】
image rotate

【図12C】
image rotate

【図12D】
image rotate

【図13A】
image rotate

【図13B】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17A】
image rotate

【図17B】
image rotate

【図18】
image rotate

【図19】
image rotate

【図2】
image rotate

【図3A】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate