説明

ストレージサブシステム、及びこれを有するストレージシステム

【課題】複数の種類の記憶デバイスを備えても、キャッシュメモリから複数の種類の記憶デバイスへのライト処理が停滞しないストレージサブシステムを提供する。
【解決手段】HDDおよびSSDに、キャッシュメモリからのライトデータの書込み性能に優劣があっても、書込み性能が低いSSDに対するキャッシュメモリ13A,13BをHDDに対するキャッシュメモリ12A,12Bから区別して設けた。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はストレージサブシステムに係わり、ハードディスクドライブ、フラッシュメモリなど、種類の異なる複数の記憶デバイスを記憶資源として搭載してなる、ストレージサブシステムに関するものである。さらに、本発明はストレージサブシステムと上位装置と記憶装置とを備えるストレージシステムに関するものである。
【背景技術】
【0002】
ストレージサブシステムは、ホストなどの上位装置のデータを記憶デバイスに格納するための制御システムとして知られている。
【0003】
ストレージサブシステムは、上位装置との間のデータの送受信を制御する第1のインターフェース制御部と、複数の記憶デバイスとの間でのデータの送受信を制御する第2のインターフェース制御部と、ホストと記憶デバイスとの間のデータの往来を制御するコントローラと、を備えている。
【0004】
従来記憶デバイスとしては、ハードディスクドライブ(HDD)が使用されてきたが、フラッシュメモリの製造単価が低下してきたことにより、フラッシュメモリなどの半導体メモリが、ストレージサブシステムに対する記憶資源として使用されようとしている。記憶デバイスとして、HDDとフラッシュメモリドライブ(SSD)とが混載されたストレージサブシステムが存在する。本発明に関連する従来例として、特開2008―134776号公報に記載されたものが存在する。
【特許文献1】特開2008―134776号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
ストレージサブシステムは、キャッシュメモリを備え、記憶デバイスにライトされるデータ及び記憶デバイスからリードされるデータをキャッシュメモリに一時記憶している。
【0006】
SSDでは、データのライト性能が低いために、ストレージサブシステムのコントローラがキャッシュメモリからSSDにデータをライトする際、そのライト処理が停滞し、キャッシュメモリからHDDへのデータのライト性能が低下するという課題がある。
【0007】
そこで、本発明は、複数の種類の記憶デバイスを備えても、キャッシュメモリから複数の種類の記憶デバイスへのライト処理が停滞しないストレージサブシステムを提供することを目的とするものである。
【0008】
本発明の他の目的は、HDDに加えてSSDを備えるストレージサブシステムにおいて、キャッシュメモリからSSDへのライト性能の低下を防いで、キャッシュメモリからHDDへのライト処理の性能が影響を受けないようにしたストレージサブシステムを提供することである。
【課題を解決するための手段】
【0009】
本発明に係るストレージシステムは、既述の目的を達成するために、複数種ある記憶デバイスに、キャッシュメモリからのライトデータの書込み性能に優劣があっても、書込み性能が低い種類の記憶デバイスに対する一時記憶領域を他の種類の記憶デバイスに対する一時記憶領域から区別して設けることを特徴とするものである。
【発明の効果】
【0010】
本発明によれば、複数の種類の記憶デバイスを備えても、キャッシュメモリから複数の種類の記憶デバイスへのライト処理が停滞しないストレージサブシステムを提供することができる。
【発明を実施するための最良の形態】
【0011】
次に、本発明に係わるストレージサブシステムを備える、記憶制御システム(ストレージシステム)を図1に基づいて説明する。ストレージシステムは、ホスト計算機200A,200Bが、ストレージサブシステム6Aとストレージサブシステム6Bとからなる記憶制御装置を介して複数の記憶デバイス4A〜4Eに接続されることにより構成されている。ホスト計算機200Aはストレージサブシステム6Aに接続し、ホスト計算機2Bはストレージサブシステム6Bに接続する。
【0012】
ホスト計算機200A,200Bは、例えばCPU(Central Processing Unit)やメモリなどの情報処理資源を備えたコンピュータであり、具体的にはパーソナルコンピュータ、ワークステーション又はメインフレームなどから構成される。
【0013】
ホスト計算機200A,200Bには、それぞれストレージサブシステム6A,6Bにアクセスするための通信ポート(例えばLANカードやホストバスアダプタに設けられたポート)が設けられており、この通信ポートを介してデータの入出力要求コマンドをストレージサブシステムに送信することができるようになされている。
【0014】
ストレージサブシステム6Aとストレージサブシステム6Bとは、接続経路5によってデータやコマンドを互いに送受信できる。コントローラ間接続経路5としては、例えば1レーン片方向当たり(最大8レーン)のデータ転送量が2.5〔Gbit/sec〕と高速なシリアルデータ通信を実現するPCI(Peripheral Component Interconnect)−Express規格に準拠したバスが適用される。ストレージサブシステム6A,6B間における後述のようなデータや各種情報の送受は、すべてこの接続経路5を介して行なわれる。
【0015】
各ストレージサブシステム6A,6Bは、それぞれ自身に接続されたホスト計算機200A,200Bからの要求に応じて記憶デバイス4A〜4Eに対するデータの読み書きを制御するもので、ホスト通信制御部10A,10B、データ転送制御部11A,11B、共有キャッシュメモリ(CM)12A,12B、SSD用ライトキャッシュメモリ(CM)13A,13B、ローカルメモリ14A,14B、マイクロプロセッサ(MPU)15A,15B、記憶デバイス通信制御部16A,16Bを備える。ホスト通信制御部10A,10Bは、ホスト計算機200A,200Bとの通信制御を行なうインターフェースである。
【0016】
ホスト通信制御部10A,10Bは、ストレージサブシステム6A,6Bをネットワークやあるいはホスト計算機200A,200Bに直接接続するためのポートを備えている。複数のポートのそれぞれには、例えばIP(Internet Protocol)アドレスやWWN(World Wide Name)などの固有のネットワークアドレスが割り当てられている。ホスト通信制御部10A,10Bは、ホスト計算機200A,200Bとの間の通信時におけるプロトコル制御を行うホスト通信プロトコルチップを有する。
【0017】
ホスト通信プロトコルチップとしては、例えばホスト計算機200A,200Bとの間の通信プロトコルがファイバーチャネル(FC:Fibre Channel)プロトコルである場合にはファイバーチャネル変換プロトコルチップ、かかる通信プロトコルがiSCSIプロトコルである場合にはiSCSIプロトコルチップというように、ホスト計算機200A,200Bとの間の通信プロトコルに適合したものが適用される。
【0018】
さらにホスト通信プロトコルチップには、複数のマイクロプロセッサとの間で通信を行い得るマルチマイクロプロセッサ機能が搭載されており、これによりホスト通信プロトコルチップがストレージシステム6Aのマイクロプロセッサ15Aと、ストレージサブシステム16Bのマイクロプロセッサ15Bとの双方と通信を行い得るようになされている。
【0019】
データ転送制御部(DMA)11A,11Bは、ストレージサブシステム6A及びストレージサブシステム6B間のデータ転送と、ストレージサブシステム6A,6B内の各ハードウエア資源同士の間でのデータ転送を制御する機能を備える。またデータ転送制御部11A,11Bは、それぞれ自身が属するストレージサブシステムに属するマイクロプロセッサ15A,15Bからの指示により、ホスト計算機200A,200Bから与えられたライトデータを共有CM(キャッシュメモリ)12A,12B又はSSD用ライトCM13A,13Bに一時記憶する。
【0020】
またデータ転送制御部11A,11Bは、後述するローカルメモリ14A,14Bに格納された共有情報が同じになるように、一方のローカルメモリの共有情報が更新されたときには、他方の共有情報も同様に更新できるように必要なデータ転送行なう。
【0021】
マイクロプロセッサ15A,15Bは、それぞれ自身が属するストレージサブシステム6A,6B全体の動作の制御を司る機能を有する。これらマイクロプロセッサ15A,15Bは、後述のようにローカルメモリ14A,14Bに格納されたライトコマンドやリードコマンドに応じて、予め自己に対して割り当てられた論理ボリュームに対するデータの読み書き等の処理を行う。
【0022】
このような各マイクロプロセッサ15A,15Bに対する論理ボリュームの割り当ては、各マイクロプロセッサ15A,15Bの負荷状況や、ホスト計算機200A,200Bから与えられる論理ボリュームごとの担当マイクロプロセッサを指定する担当マイクロプロセッサ指定コマンドの受信によって動的に変更することが可能である。
【0023】
また、各マイクロプロセッサ15A,15Bに対する論理ボリュームの割り当ては、ストレージサブシステム6A,6Bと、ホスト計算機200A,200B間の接続経路や、ストレージサブシステム6Aとストレージサブシステム6B間接続経路5、ストレージサブシステムと6A,6Bと記憶デバイス4A〜4D間の接続経路等における障害発生の有無によっても動的に変更することができる。
【0024】
ローカルメモリ14A,14Bは、各種制御プログラムを格納するために用いられるほか、ホスト計算機200A,200Bから与えられるリードコマンドやライトコマンド等の各種コマンドを一時的に保持するために用いられる。マイクロプロセッサ15A,15Bは、このローカルメモリ14A,14Bに格納されたリードコマンドやライトコマンドを、当該ローカルメモリ14A,14Bに格納された順番で処理する。
【0025】
共有CM12A,12B及びSSD用ライトCM13A,13Bは、ホスト計算機200A,200B及び記憶デバイス4A〜4E間や、ストレージサブシステム6A,6B間で転送されるデータを一時的に記憶する。
【0026】
記憶デバイス通信制御部16A,16Bは、各記憶デバイス4A〜4Eとの通信を制御するインターフェースであり、記憶デバイス通信プロトコルチップを備えている。この記憶デバイス通信プロトコルチップ22A,22Bとしては、例えば記憶デバイスとしてFCハードディスクドライブを適用する場合にはFCプロトコルチップを適用でき、SASハードディスクドライブを適用する場合にはSASプロトコルチップを適用でき、記憶デバイスとして、SSD(フラッシュメモリドライブ)が適用される場合は、SSDプロトコルチップを適用する。
【0027】
また、記憶デバイス通信制御部は、記憶デバイス側スイッチを介して記憶デバイスに接続されている。記憶デバイススイッチは、記憶デバイス通信制御部に対して複数の記憶デバイスを切り替えるためのスイッチであり、例えばSAS−ExpanderやFCループスイッチを適用することができる。また、記憶デバイス側スイッチに代えて、例えばFCループで記憶デバイス4A〜4Eと接続する構成を採用することもできる。
【0028】
記憶デバイス4A,4D,4Eは、ハードディスクドライブ、具体的にはFCハードディスクドライブ、SASハードディスクドライブ、又はSATAハードディスクドライブであり、記憶デバイス4B,4CはSSDである。記憶デバイスには、記憶要素(ハードディスク或いはフラッシュメモリ)がアレイ状に配置されている。これら複数の記憶デバイスが提供する記憶領域に対して、データを読み書きするための論理的な記憶領域である論理ボリュームが複数設定される。複数の記憶デバイスは、RAIDを実現するように組み合わされている。
【0029】
ストレージサブシステム6A、6Bは、ホスト計算機200A,200Bに論理ユニットを提供し、ホスト計算機は論理ユニットを認識して、論理ボリュームに対するデータのリードまたはライトを実行する。
【0030】
ストレージサブシステム6A及び6Bのそれぞれのメモリ空間には、それぞれ自分が有するメモリ領域に加えて、他のストレージサブシステムが有するメモリ空間もマッピングされており、これにより一方のストレージサブシステムが他方のストレージサブシステムのメモリ領域にも直接アクセスできるようになっている。
【0031】
そして、ストレージサブシステム6A,6B内のマイクロプロセッサ15A,15Bは、ホスト計算機200A,200Bから他のストレージサブシステム6B,6Aに割り当てられている論理ユニットを対象とするライトコマンドやリードコマンドが与えられたときには、かかるライトコマンド又はリードコマンドを他方のストレージサブシステムのローカルメモリ14B,14Aに書き込むようにして他方のストレージサブシステム6B,6Aに転送する。
【0032】
このように、ホスト計算機200A,200Bからストレージサブシステム6A,6Bに対して他方のストレージサブシステム6B,6Aが実行すべきライトコマンドやリードコマンドが与えられたときに、そのライトコマンドやリードコマンドを他方のローカルメモリ14B,14Aに直接書き込むようにして中継するため、当該ライトコマンド又はリードコマンドの受け渡しのためにストレージサブシステム6A,6B同士が通信を行なう必要がなく、その分迅速なライトコマンド処理又はリードコマンド処理を行うことができる。
【0033】
ホスト系計算機200A,200Bからストレージサブシステム6A,6Bへのライトデータのうち、SSD4B,4Cに記録されるべきデータが、MPU15A,15Bからの制御を受けたデータ転送制御装置11A,11Bによって、SSD用ライトCM13A,13Bに一時記憶される。
【0034】
一方、ホスト系計算機200A,200Bからストレージサブシステム6A,6Bへのライトデータのうち、HDD4A,4D,4Eに記録されるべきデータが、データ転送制御装置11A,11Bによって、共通CM12A,12Bに一時記憶される。
【0035】
記憶デバイス通信制御部16A,16Bは、SSD用ライトCM及び共通CMから、データを目的の記憶デバイスに、ライトコマンドがホスト計算機から発行されたタイミングとは非同期に、デステージ処理する。
【0036】
さらに、ホスト計算機200A,200Bからリードコマンドを受領したデータ転送制御部11A,11Bは、記憶デバイス通信制御部16A,16Bにリードコマンド転送し、リードコマンドを受けた記憶デバイス通信制御部は、記憶デバイスからデータを取得して、データの取得先がSSDであるかHDDであるかにかかわらず、リードデータを共通CMに転送する。
【0037】
SSDへのライトデータを一時記憶する領域を、このように、HDDへのライトデータ、及び、リードデータを一時記憶する領域から区別させたのは次の理由による。
【0038】
ホスト計算機にデータの整合性を保障するために、ストレージサブシステムの管理者は、SSD内のキャッシュをデセーブル状態にした上でSSDを記憶デバイスとして使用する。すると、ストレージサブシステムのマイクロプロセッサは、SSDにデータをライトする際には、SSDにセクタ単位でデータの消去処理を行なわせた後、キャッシュメモリのデータをSSDにライトする必要がある。このライト処理には時間を要し、その間、キャッシュメモリからHDDへのデータのライトが遅延するオーバヘッドが発生する。そこで、本願発明者は、共有CMとはバスを分離することによりオーバヘッドの弊害が出ないように、共有CMとは別にSSDライト用CMを設けた。
【0039】
ストレージサブシステム6A,6Bのマイクロプロセッサ15A,15Bが、ライトデータをSSDにライトすべきものであるか、又は,HDDにライトすべきものであるかを、例えば、ライトコマンドのデータ格納先に基づいて判断する。
【0040】
図2は、そのための管理テーブルを示すものであり、この管理テーブルは、ローカルメモリ14A,14Bに格納されている。ストレージサブシステムのMPU15A,15Bはライトコマンドのライト先LU番号(LU#)に基づいて、ライト先がHDDからSSDかを判定する。管理テーブルのLU♯はホスト計算機200Aまたは200Bに割り当てられている。
【0041】
SSD用ライトCM(13A,13B)と共有CM(12A,12B)とは、それぞれ異なる集積回路によって構成される。例えば、第1のキャッシュメモリを共有CMに割り当て、第2のキャッシュメモリをSSD用ライトCMに割り当てる。
【0042】
また、第1のキャッシュメモリを共有CMに割り当て、第2のキャッシュメモリの一部の一時記憶領域をSSD用ライトCMに割り当て、残りを共有CMに割り当てることでもよい。この際、第1のキャッシュメモリの記憶領域が逼迫した際に、第2のキャッシュメモリの共有部分にデータを一時記憶すればよい。なお、第2のキャッシュメモリのSSD用ライトCMの部分の容量を動的に変更するようにしてもよい。
【0043】
また、SSD用ライトCMの容量をSSDが有する全記憶容量に合わせて設定すればよく、また、SSD用ライトCMの容量を可変にしてもよい。
【0044】
また、SSD用ライトCMを共有CMとして、HDDにデステージ処理されるべきデータを一時記憶するようにしてもよい。例えば、SSD用ライトCMの一時記憶領域に余裕がある場合などである。
【0045】
図3は、SSD用ライトCMの記憶領域とSSDの記憶領域との対応関係を示すためのブロック図である。SSDがフラッシュメモリへライト処理を行う際、SSDはフラッシュメモリのイレーズ処理を必要とする。
【0046】
イレーズ処理は、セクタ単位(SEC)単位で行われるので、SSD用ライトCMへのデータ記憶は、セクタ単位で行なわれる(S3)。フラッシュメモリのイレーズ処理が終わった後、SSD用ライトCMからデータの転送がSSDに行なわれる(S1,S2)。フラッシュメモリには書き込み回数の制限があるので、SSD用ライトCMは、ホスト計算機からのライトデータを(このライトはページ単位で行なわれる(S4)。)、同一のセクタに貯めてからSSDに書き込む(S5)。
【0047】
一方、図4に示すように、キャッシュメモリ(共有CM)からハードディスクドライブへのデータの書込みは、セクタ単位、又は複数のセクタ単位S6からなるセグメント単位S7毎で行なわれる。なお、HDDはSSDと異なり、キャッシュメモリのデータをHDDにデステージする際でのイレーズ処理は必要ではない。
【0048】
次に、図1に示すストレージシステムにおける、ライト動作について説明する。図5は、ストレージシステムのライト動作を説明するブロック図であり、図6はライト動作を説明するフローチャートである。
【0049】
ホスト計算機200Aからのライトコマンドをストレージサブシステム6Aのホスト通信制御部10Aが受信すると(600)、MPU15AはDMA11Aを介してライトコマンドを解析し(602)、ローカルメモリ14Aに格納されている管理テーブル(図2)を参照して、データの格納先エリア(データライト先のLU#)を確認する。
【0050】
MPU15Aが、ライトデータの格納先はSSDである判定(606)した場合には、DMA11AからライトデータをSSD用ライトCM13Aに一時記憶する(図5の1A、図6の612)。次いで、記憶デバイス通信制御部16Aは、SSD用ライトCM13Aの一時記憶データを、DMA11Aを介して取得し、SSDがイレーズ処理を終了した後、一時記憶されたライトデータをSSD(4C)に送信し、SSDはこのデータをフラッシュメモリに格納する(図5の2A、図6の614)。
【0051】
一方、MPU15Aがライトデータの格納先がSSD以外、すなわちHDDであると判定すると(606)、ライトデータを、DMA11Aを介して共有CM12Aに一時記憶する(図5の1B、図6の608)。次いで、記憶デバイス通信制御部16Aは、共有CM16Aに格納されたライトデータをHDD4Dに格納する(図5の2B、図6の610)。
【0052】
次に、リード動作について説明する。図7はリード動作を説明するためのブロック図であり、図8はリード動作を説明するフローチャートである。ストレージサブシステム6Aがホスト計算機200Aから受領したリードコマンドを解析し、管理テーブルを参照して、リードデータの格納先を確認する(図8の800―804)。次いで、MPU15Aは共有CM12Aにリードコマンドの対象となった目的データが存在するか否かをチェックし(806)、これを肯定する場合にはキャッシュヒットとして、DMA11Aをして目的データを共有CM12Aから読み出して(814)、ホスト通信制御部10Aを介してホスト計算機200Aに目的データを転送する(816)。
【0053】
MPU15Aが共有CMにデータがないことを確認すると、キャッシュミスと判定し(806)、記憶デバイス通信制御装置16Aは、データの格納先であるSSD又はHDDからデータを読み出し(810,818)、読み出したデータを共有CM12Aに一時格納する(812, 図7の2A,2B)。次いで、MPU15Aは、DMAにホスト通信制御10Aへ共有CM12Aの目的データを転送させ、ホスト通信制御部10Aは目的のデータをホスト計算機200Aに転送する(816,図7の1A)。
【0054】
記憶デバイス通信制御装置16Aはリードデータを共通CM12Aに送り、SSD用ライトCM13Aに送らないのは次の理由による。SSDへのライトは既述のようにイレーズ処理が必要となって、キャッシュメモリからSSDへのライト処理をキャッシュメモリからHDDへのライト処理と分けることにより、HDDのライト処理に対するオーバヘッドがないようにしている。
【0055】
一方、SSDからのリードにはイレーズ処理が必要ないために、この種のオーバヘッドは生じず、SSD用ライトCMをSSDへのライト処理に割当てることとして、リードデータを共有CM12Aに格納するようにした。なお、例えば、共有CMの負荷状態が高い場合には、SSD用ライトCMにリードデータを格納するようにしてもよい。
【0056】
既述のライト処理は、ホスト計算機からのライトデータを受けたストレージサブシステムが自身の、MPUなどのハードウエア資源を用いて記憶デバイスにデータを格納することとした。ところで、図1のストレージシステムは、二つのストレージサブシステムが接続路で結ばれているために、ホスト計算機からのライトコマンドを受けたストレージサブシステムが有するハードウエア資源の負荷状態が高い場合には、ライトコマンドを受けていない他方のストレージサブシステムがライトコマンドを処理することもできる。これを、図1に示す複数のストレージサブシステム6A,6Bをともにアクティブにしてコマンドを処理するとして稼動させるという意味で、“アクティブ―アクティブ処理”と称し、この処理の下でのライト処理の動作とリード処理の動作を詳しく説明する。なお、ホスト計算機200Aからストレージサブシステム6Aにライトコマンドが発行されることとして、ストレージサブシステム6Aを、コマンドを受けた“自系”と称し、他のストレージサブシステム6Bを“自系”に対するものとして“他系”と称することとする。
【0057】
先ず、アクティブ―アクティブ処理におけるライト処理について説明する。図9,10はこのライト処理を説明するブロック図であり、図11はこのライト処理を説明するフローチャートである。図11のフローチャートにおいて、自系のストレージサブシステム6Aがホスト計算機からライトコマンドを受け取ると、MPU15Aはコマンドを解析し、データのライト先を確認する(1100―1106)。ライト先がSSDである場合には(1106)、MPU15Aは自系のSSD用ライトCM13Aの負荷状態を判定する(1108)。
【0058】
SSD用ライトCM13Aなど自系のストレージサブシステム6Aの各種ハードウエア資源の負荷状態は、例えば図12に示すような管理テーブルとして管理されている。管理テーブルはローカルメモリ14Aに登録されている。MPU15Aは自系のハードウエア資源の負荷状態を常時或いは定期的にモニタし、管理テーブルにモニタ結果を更新登録する。
【0059】
他系のハードウエア資源の負荷状態も同様にしてMPU15Bによって監視され、ローカルメモリ14Bの管理テーブルに更新登録される。自系及び他系のMPU15A,15Bは双方監視情報を交換して、双方の管理テーブルには自系のハードウエア資源の負荷状態ばかりでなく、他系のストレージサブシステムのハードウエア資源の負荷状態も登録されるようになっている。双方の管理テーブルは一致するように同期がとられている。
【0060】
MPU15Aは自系の管理テーブルを参照して、自系のSSD用ライトCM13Aの負荷状態、すなわち、メモリの使用状態を閾値と比較する(図11の1108)。閾値を越えていないと判定すると(フルでないと判定すると)、MPU15AはSSD用ライトCM13Aにライトデータを一時格納する(1110)。
【0061】
次に、MPU15Aは管理テーブルを参照して、自系のバックエンド、すなわち、記憶デバイス通信制御装置16Aの負荷状態をチェックし(1112)、自系のバックエンドの負荷状態が閾値と比較してビジーであると判定すると、他系のMPU15Bにライトデータのデステージ処理の実行権限を委譲する。すると他系のMPU15Bは他系のDMA11B、接続路5、自系のDMA11Aを介して、自系のSSD用ライトCM13Aのデータを取得し、他系のディスク通信制御部16Bに当該データをSSD4B又は4Cに格納させる(1114)。一方、自系のバックエンドがビジーでない場合には、自系のバックエンド16AがSSD用ライトCM13AのデータをSSDに書き込む(1116)。
【0062】
自系のMPU15Aが自系のSSD用ライトCMの負荷状態が“フル”であると判定すると、ローカルメモリ14Aの管理テーブルを参照して他系のSSD用ライトCM12Bの負荷状態をチェックし(1118)、その負荷状態が“フル”でない場合には、他系のMPU15Bは他系のSSD用ライトCM13Bにライトデータを一時記憶する(1120、図9の1A)。
【0063】
次いで、自系のMPU15Aは他系のバックエンド16Bの負荷状態をローカルメモリ14Aの管理テーブルに基づいてチェックする(1122)。この負荷状態をチェックして、他系のバックエンドがビジーである場合には、MPU15AはDMA11B、接続路5、そしてDMA11Aを介して他系のライト用CM13Bからライトデータを自系の記憶デバイス通信制御部16Aに送り、自系の記憶デバイス通信制御部16AにライトデータをSSDに格納させる(1124.図9の2A)。
【0064】
一方、ステップ1122において、MPU15Aが他系のバックエンド16Bがビジーでないと判定すると、この判定結果を他系のMPU15Bに通知する。他系のMPU15Bは他系のSSD用ライトCMのデータを他系のバックエンド16Bを使ってSSDに格納する(1126,図9の2B)。
【0065】
自系のMPU1Aが自系のSSD用ライトCM13A及び他系のSSD用ライトCM13Bが共にビジーであると判定すると、自系の共有CM12Aに、本来であればSSD用ライトCM13Aに一時格納されるべき、ライトデータを一時記憶する(1128,図10の1A)。次いで、自系のMPU15Aは、DMA11Aをして、共有CM12Aに一時記憶されたデータをHDDに格納する(1130,図10の2A)。この際、MPU15Aは、このライトデータのHDDにおけるアドレスと、SSDに当該ライトデータを格納すべきアドレスとの対応テーブルを作成し、これをローカルメモリ14Aに登録する。MPUは、この対応テーブルを定期的にチェックして、当該対応テーブルにエントリが存在する場合には、記憶デバイス通信制御部16A又は16BにHDDからSSDに目的のライトデータのマイグレーション処理を実行させる(1132、図10の3A又は3B)。この際、SSDに対するイレーズ処理が必要となるために、MPU16Aは自系及び他系の記憶デバイス通信制御部16A,16Bの負荷状態をチェックしながら、最適なタイミングでマイグレーションを実施する。
【0066】
一方、ライトデータの格納先がHDDの場合には、自系のMPU15Aがライトデータを自系の共有CM12Aに一時記憶する(1134)。そして、自系及び他系のバックエンドの負荷状態をチェックして、ビジーでない方のDMA及び記憶デバイス通信制御部を利用して共有CM12Aの一時記憶データを目的のHDDに格納する(1136―1140)。
【0067】
次にアクティブ-アクティブ処理でのリード動作について説明する。図13はリード動作を示すフローチャートであり、図14及び図15はリード動作を示すブロック図である。ステップ1300−1306は既述のリード処理のフローチャート(図8の800−806)と同様である。
【0068】
自系のMPU15Aが自系の共有CM12Aに目的のリードデータが存在すると判定する場合には、自系のDMA11Aは目的のリードデータを読み出して(1308)、ホスト200Aに転送する(1310)。
【0069】
一方、MPU15Aが目的のリードデータが共有CM12Aに存在しないと判定する場合には(1306)、リードデータがSSDにあるかHDDにあるかを判定する(1311)。リードデータがSSDにないと判定すると、MPU15AがHDDからデータを読み出す際、自系のバックエンドの負荷状態をチェックする(1312)。
【0070】
自系のバックエンドの負荷状態がビジーであると判定すると、他系のDMA11Bと記憶デバイス通信制御部16BがHDDからデータを読み出し、他系の共有CM12B(又は自系の共有CM12A)が目的のデータを一時記憶する(1314)。他系のDMA11B及び自系のDMA11Aはこの一時記憶されたデータを共有CM12Bから自系のホスト通信制御部10A、そして、ホスト計算機200Aに転送する(1316)。
【0071】
MPU15Aが他系のバックエンドの負荷状態をビジーで判定すると、自系のDMA11Aなどのハードウエア資源が目的のデータをホスト計算機200Aに転送する(1318―1322)。
【0072】
MPU15Aがリードコマンドの対象となったデータがSSDにあると判定すると(1311)、自系のバックエンドの負荷状態に応じて(1324)、自系のハードウエア資源又は他系のハードウエア資源がSSDから目的のデータを読み出して、これを自系の共有CM12A又は他系の共有CM12Bに一時記憶し、後にホスト計算機200Aにリードデータを転送する(1326−1336)。このデータ転送の様子が図14の1A,1B,2A,2Bに示されている。
【0073】
図15はホスト計算機からのリードコマンドを受領した自系のストレージサブシステムがSSD用ライトCMを利用して、リードデータをホスト計算機に転送する動作を示すブロック図である。自系のバックエンドの負荷が少ない場合には、2Aのルートに従って自系の記憶デバイス通信制御部16AはSSDからリードデータを自系のSSD用ライトCM13Aに一時記憶する。自系のDMA11Aは、自系のSSD用ライトCM13Aから自系のホスト通信制御部10Aにリードデータを転送する。
【0074】
一方、他系のバックエンドの負荷が少ない場合は2Bのルートにしたがって、他系のバックエンド16BがSSDからデータを読み出し、他系のSSD用ライトCMがデータを一時記憶する。そして、1Bのルートにしたがって、他系のSSD用ライトCM13Bからのリードデータを他系のDMA11B及び自系のDMA11Aが自系のホスト通信制御部10Aを介してホスト計算機200Aまで転送する。
【0075】
次に、ホスト装置からストレージサブシステム6Aに発行されるライト又はリードコマンドに伴うデータの特性、すなわち、データがシーケンシャルデータか、ランダムデータかに着目して、図1のストレージシステムのリード動作及びライト動作を説明する。
【0076】
この種のデータの特性は、図16に示すアクセス履歴テーブルに記録されている。アクセス履歴テーブルはホスト計算機から自系及び他系のストレージサブシステムへのログ情報を含むものである。アクセス履歴テーブルは、コマンドを発行したホスト計算機の識別情報(HOST#)、ストレージサブシステム(コントローラ)の識別情報(CTL)、ホスト計算機からアクセスされた論理ユニット(LU)、ライトコマンド又はリードコマンドが発行されて記憶媒体の種別(SSD又はHDD)、アクセス時刻、ライトコマンドかリードコマンド可の区別(R又はW)、リード又はライトアクセス先論理アドレス(先頭アドレス)、データのブロック長、アクセス種別判断結果(シーケンシャル又はランダム)の項目を含んでいる。
【0077】
アクセス履歴テーブルは図1において、図示しない管理装置又は、自系及び他系のMPU15A、15Bによって作成され、自系及び他系のローカルメモリ14A,14Bに登録されている。
【0078】
自系のMPU15A及び他系のMPU15Bはお互いに協調してアクセス履歴テーブルを作成するか、例えば、自系のMPU15Aがアクセス履歴テーブル作成権限を持ち、他系のローカルメモリ14Bに自系のMPU15Aが作成したアクセス履歴テーブルを定期的にコピーしてもよい。
【0079】
管理装置、又は、自系及び他系のMPU15A,15Bは、ホスト計算機からのライトコマンドを解析して、ライトアドレスを確認する。アクセス履歴テーブルを参照して、例えば、1つ前のログのアドレスに連続するアドレスがライトアドレスである場合には、ライトコマンドをシーケンシャルアクセスと判定し、連続しないアドレスである場合にはランダムアクセスと判定する。判定結果は、アクセス管理テーブルに登録される。
【0080】
図6及び図11に示すライト処理において、自系又は他系のMPU15、15Bはライトコマンドを確認して、履歴管理テーブルを参照して、ライトコマンドがシーケンシャルアクセスのものであるか、ランダムアクセスのものであるかを判定する。
【0081】
ライトコマンドがランダムアクセスものである場合には、データをキャッシュメモリ(共有CM又はSSDライト用CM)の記憶領域にブロック単位でランダムに格納する。共有CM及びSSDライト用CMはランダムに記録されたデータをあるセクタ単位に纏め、セクタ単位のデータをHDD又はSSDにデステージする。ライトコマンドがシーケンシャルアクセスのものである場合には、共有CM及びSSDライト用CMはあるまとまったセクタ領域にデータを順番に格納する。
【0082】
次に、図8及び図13に示すリード処理において、自系又は他系のMPU15A,15Bはリードコマンドを確認して、図16の履歴管理テーブルを参照して、リード対象のデータがシーケンシャルアクセスのものであるか、ランダムアクセスのものであるかを判定する。特に、リード対象のデータがシーケンシャルアクセスのものである場合には、リード対象の記録媒体(HDD又はSSD)からシーケンシャルデータを読み出す際に、リード対象以外の余分な部分の領域からもデータを読み出して、共有CMの連続した領域にこのデータを格納する。余分に読み出されたデータにホスト計算機からのライトコマンドがアクセスすると、キャッシュヒットとなる。なお、リード頻度が所定以上のデータがHDDに存在する場合には、自系又は他系の記憶デバイス通信制御装置はHDDからSSDに当該データ群をマイグレーションする。これによって、記憶デバイス通信制御装置は、HDDよりかは高速にデータを読み出すことができる。また、ライトアクセスの多いデータについては、SSDからHDDにマイグレーションされることが好ましい。
【0083】
既述の実施形態では,SSDのキャッシュメモリをOFFするモードでSSDを記憶デバイスとして使用することとして説明したが、SSDのキャッシュメモリをイネーブルとするモードでは、共有CMにこのSSDへのライトデータをキャッシングするようにしてもよい。SSD内のキャッシュメモリをイネーブルにすると、SSDへのライト処理が高速に行えるからである。例えば、ホスト計算機からのライトデータが、内部キャッシュメモリをイネーブルにしたSSDに割り当てられたLUへのものである場合には、ライトデータを共有CMに格納し、内部キャッシュメモリをオフモードにしたSSDに対するライトデータである場合にはSSD用ライトCMがこのライトデータを一時記憶するようにすればよい。また、内部キャッシュメモリをオンモードにしたSSDをHDDに対するライト・リード処理の際のデータの一時記憶に割り当ててもよい。
【0084】
既述の実施形態では、ストレージサブシステム6Aと6Bのそれぞれについて、共通CMとSSDライト用CMとを設けたが、一方のストレージサブシステムにSSD用ライトCMを設けるものであっても、他方のストレージシステムはアクティブ―アクティブ処理によって他の方のストレージサブシステムのSSD用ライトCMを使用することができる。
【0085】
またさらに、一方のストレージサブシステムのキャッシュメモリを共通CMとし、他方のストレージサブシステムをSSD用ライトCMとすることもできる。
【図面の簡単な説明】
【0086】
【図1】本発明に係わるストレージサブシステムを備える、記憶制御システム(ストレージシステム)である。
【図2】ライト先記憶媒体(HDD又はSSD)を判定するための管理テーブルである。
【図3】SSD用ライトCMの記憶領域とSSDの記憶領域との対応関係を示すためのブロック図である。
【図4】キャッシュメモリ(共有CM)の記録領域とHDDの記憶領域との対応関係を示すブロック図である。
【図5】ストレージシステムにおける、ライト動作を説明するブロック図である。
【図6】図6はライト動作を説明するフローチャートである。
【図7】ストレージシステムのリード動作を説明するためのブロック図である。
【図8】リード動作を説明するフローチャートである。
【図9】アクティブ―アクティブ処理におけるライト処理を説明する第1のブロック図である。
【図10】アクティブ―アクティブ処理におけるライト処理を説明する第2のブロック図である。
【図11】ライト処理を説明するフローチャートである。
【図12】ストレージサブシステムの各種ハードウエア資源の負荷状態を管理する管理テーブルである。
【図13】アクティブ-アクティブ処理でのリード動作を示すフローチャートである。
【図14】図13のリード動作を示す第1のブロック図である。
【図15】そのリード動作の第2のブロック図である。
【図16】ホスト計算機からストレージサブシステムへのアクセス履歴を示す管理テーブルである。
【符号の説明】
【0087】
200A,200B:ホスト計算機、4A−4E:記憶媒体(HDDまたはSSD)、5:ストレージサブシステム間の接続路、6A,6B:ストレージサブシステム、10A,10B:ホスト通信制御部、11A,11B:データ転送制御部(DMA)、12A,12B:共通CM、13A,13B:SSD用ライトキャッシュ、14A,14B:ローカルメモリ、15A,15B:MPU、16A,16B:記憶デバイス通信制御部

【特許請求の範囲】
【請求項1】
上位計算機を接続する第1の接続部と、
第1の種類の記憶デバイスとの第2の接続部と、
第2の種類の記憶デバイスとの第3の接続部と、
前記第1の種類の記憶デバイスへのライトデータを一時記憶する第1の一時記憶領域と、
前記第2の種類の記憶デバイスへのライトデータを一時記憶する第2の一時記憶領域と、
前記ライトデータを前記第1の一時記憶領域から前記第1の種類の記憶デバイスへ転送することと、前記ライトデータを前記第2の記憶領域から前記第2の種類の記憶デバイスへ転送することを制御するコントローラと、
を備えてなるストレージサブシステム。
【請求項2】
前記第1の一時記憶領域を備える第1のキャッシュメモリと、
前記第2の一時記憶領域を備える第2のキャッシュメモリと、
をさらに備える請求項1記載のストレージサブシステム。
【請求項3】
前記第1のキャッシュメモリから前記第1の種類への記憶デバイスへのバスと、前記第2のキャッシュメモリから前記第2の種類の記憶デバイスへのバスとが分離されている、請求項2記載のストレージサブシステム。
【請求項4】
前記第1の種類の記憶デバイスがハードディスクドライブであり、
前記第2の種類の記憶デバイスがフラッシュメモリドライブである、請求項3記載のストレージサブシステム。
【請求項5】
前記第1のキャッシュメモリが前記ハードディスクドライブへのライトデータを一時記憶し、前記第2のキャッシュメモリが前記フラッシュメモリドライブへのライトデータを一時記憶する、請求項4記載のストレージサブシステム。
【請求項6】
前記コントローラが前記第1の種類の記憶デバイスから読み出したデータと前記第2の種類の記憶デバイスから読み出したデータとを前記第1のキャッシュメモリに一時記憶する、請求項2記載のストレージサブシステム。
【請求項7】
前記上位装置のアクセス先である論理ユニットが、前記第1の種類の記憶デバイス及び前記第2の種類の記憶デバイスに対して、異なるように設定されている、請求項1記載のストレージサブシステム。
【請求項8】
前記フラッシュメモリドライブが有する内部キャッシュメモリがディセーブル状態に設定されている、請求項4記載のストレージサブシステム。
【請求項9】
第1の上位装置に接続する第1のストレージサブシステムと、
第2の上位装置に接続する第2のストレージサブシステムと、
前記第1のストレージサブシステム及び前記第2のストレージサブシステムがそれぞれ接続する記憶装置と、
前記第1のストレージサブシステムと前記第2のストレージサブシステムとを接続して、データやコマンドの交換を可能とする接続路と、
を備えるストレージシステムであって、
前記記憶装置は、
第1の種類の記憶デバイスと、
第2の種類の記憶デバイスと、を備え、
前記第1のストレージサブシステムは、
前記第1の上位計算機を接続する第1の接続部と、
前記第1の種類の記憶デバイスとの第2の接続部と、
前記第2の種類の記憶デバイスとの第3の接続部と、
前記第1の種類の記憶デバイスへのライトデータを一時記憶する第1のキャッシュメモリと、
前記第2の種類の記憶デバイスへのライトデータを一時記憶する第2のキャッシュメモリと、
前記ライトデータの転送を制御する第1のコントローラと、を備え、
前記第2のストレージサブシステムは、
前記第2の上位計算機を接続する第4の接続部と、
前記第1の種類の記憶デバイスとの第5の接続部と、
前記第2の種類の記憶デバイスとの第6の接続部と、
前記第1の種類の記憶デバイスへのライトデータを一時記憶する第3のキャッシュメモリと、
前記第2の種類の記憶デバイスへのライトデータを一時記憶する第4のキャッシュメモリと、
前記ライトデータの転送を制御する第2のコントローラと、
を備える、ストレージシステム。
【請求項10】
前記第1の種類の記憶デバイスがハードディスクドライブであり、
前記第2の種類の記憶デバイスがフラッシュメモリドライブである、請求項9記載のストレージシステム。
【請求項11】
前記第1のストレージサブシステムの前記第2のキャッシュメモリの負荷が所定以上である場合には、前記第2のストレージサブシステムの前記第2のコントローラは前記フラッシュメモリドライブへライトされるデータを前記4のキャッシュメモリに一時記憶する、請求項10記載のストレージシステム。
【請求項12】
前記第2のストレージサブシステムの前記第4のキャッシュメモリの負荷が所定以上である場合には、前記第1のストレージサブシステムの前記第1のコントローラは、前記フラッシュメモリドライブへライトされるデータを前記第1のキャッシュメモリに一時記憶する、請求項11記載のストレージシステム。
【請求項13】
前記第1のコントローラは、前記1のキャッシュメモリに一時記憶されたデータを前記ハードディスクドライブへ格納する、請求項12記載のストレージシステム。
【請求項14】
前記第1のコントローラ又は前記第2コントローラは、前記ハードディスクドライブに格納されたデータを前記フラッシュメモリドライブにマイグレーションする請求項請求項13記載のストレージシステム。
【請求項15】
第1の上位装置に接続する第1のストレージサブシステムと、
第2の上位装置に接続する第2のストレージサブシステムと、
前記第1のストレージサブシステム及び前記第2のストレージサブシステムがそれぞれ接続する記憶装置と、
前記第1のストレージサブシステムと前記第2のストレージサブシステムとを接続して、データやコマンドの交換を可能とする接続路と、
を備えるストレージシステムであって、
前記記憶装置は第1の種類の記憶デバイスと、第2の種類の記憶デバイスと、を備え、
前記第1のストレージサブシステムは、
前記第1の上位計算機を接続する第1の接続部と、
前記第1の種類の記憶デバイスとの第2の接続部と、
前記第2の種類の記憶デバイスとの第3の接続部と、
第1のキャッシュメモリと、
前記ライトデータの転送を制御する第1のコントローラと、を備え、

前記第2のストレージサブシステムは、
前記第2の上位計算機を接続する第4の接続部と、
前記第1の種類の記憶デバイスとの第5の接続部と、
前記第2の種類の記憶デバイスとの第6の接続部と、
第2のキャッシュメモリと、
前記第2の種類の記憶デバイスへのライトデータを一時記憶する第4のキャッシュメモリと、
前記ライトデータの転送を制御する第2のコントローラと、
を備え、
前記第1のキャッシュメモリは、前記第1の種類の記憶デバイスへの前記ライトデータを一時記憶し、
前記第2のキャッシュメモリは、前記第2の種類の記憶デバイスへの前記ライトデータを一時記憶する、
ストレージシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2010−49502(P2010−49502A)
【公開日】平成22年3月4日(2010.3.4)
【国際特許分類】
【出願番号】特願2008−213372(P2008−213372)
【出願日】平成20年8月21日(2008.8.21)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】