(57)【要約】【課題】データ重複排除方法及びストレージアレイを提供する。【解決手段】本発明の実施形態において提供されるデータ重複排除方法及びストレージアレイによれば、コントローラがスイッチングデバイスを介してキャッシュデバイスに接続され、キャッシュデバイスは、重複排除されるデータブロックの固有値を計算し、コントローラは、重複排除されるデータブロックの固有値に従ってデータブロックの固有値インデックスセットを問い合わせ、同じ固有値が見つからないとき、コントローラは、キャッシュデバイスにおける重複排除されるデータブロックのキャッシュアドレスをターゲットハードディスクのコントローラに送信し、ターゲットハードディスクのコントローラは、データブロックのキャッシュアドレスから、重複排除されるデータブロックを読み出す。【選択図】図２
2018032444.tif 000002
【特許請求の範囲】
【請求項１】
データ重複排除方法であって、前記方法はストレージアレイに適用され、前記ストレージアレイは、スイッチングデバイスと、第１のコントローラと、キャッシュデバイスとを備え、前記第１のコントローラは前記スイッチングデバイスに接続され、前記キャッシュデバイスは前記スイッチングデバイスに接続され、前記スイッチングデバイスは前記ストレージアレイ内のハードディスクに接続され、前記方法は、
前記第１のコントローラによって、前記キャッシュデバイスから、重複排除されるデータブロックの固有値を受信し、前記重複排除されるデータブロックの前記固有値を求めてデータブロックの固有値インデックスセットを検索するステップと、
前記重複排除されるデータブロックの前記固有値が前記データブロックの固有値インデックスセット内に見つからないとき、前記第１のコントローラによって、前記キャッシュデバイスにおける前記重複排除されるデータブロックのキャッシュアドレスを、前記スイッチングデバイスを介して取得するステップと、
前記第１のコントローラによって、データ読出し命令を、前記スイッチングデバイスを介してターゲットハードディスクのコントローラに送信するステップであって、前記データ読出し命令は、前記キャッシュデバイスの識別子及び前記キャッシュアドレスを搬送する、ステップと、
前記ターゲットハードディスクの前記コントローラによって、前記キャッシュデバイスの前記識別子及び前記キャッシュアドレスに従って、前記スイッチングデバイスを介して前記キャッシュアドレスから前記重複排除されるデータブロックを読み出すステップと、
前記ターゲットハードディスクの前記コントローラによって、前記重複排除されるデータブロックを前記ターゲットハードディスクに記憶するステップと、
を含む、データ重複排除方法。
【請求項２】
前記方法は、
前記ターゲットハードディスクの前記コントローラによって、前記ターゲットハードディスクにおける記憶アドレスを、前記スイッチングデバイスを介して前記第１のコントローラに送信するステップであって、前記ターゲットハードディスクにおける前記記憶アドレスは、前記ターゲットハードディスクの前記コントローラの識別子と、前記ターゲットハードディスクに前記重複排除されるデータブロックを記憶するための論理記憶アドレスとを含む、ステップと、
前記第１のコントローラによって、前記データブロックの固有値インデックスセットにおいて前記重複排除されるデータブロックの固有値インデックスを確立するステップであって、前記重複排除されるデータブロックの前記固有値インデックスは、前記重複排除されるデータブロックの前記固有値と、前記ターゲットハードディスクにおける前記記憶アドレスとを含む、ステップと、
を更に含む、請求項１に記載の方法。
【請求項３】
前記ストレージアレイは第２のコントローラを更に備え、前記第２のコントローラは前記スイッチングデバイスに接続され、前記第２のコントローラは、前記重複排除されるデータブロックのアドレスを記憶し、前記第２のコントローラは、前記重複排除されるデータブロックが位置するターゲット論理ユニットのホームコントローラであり、前記第１のコントローラによって、前記キャッシュデバイスから、重複排除されるデータブロックの固有値を受信するステップは、
前記キャッシュデバイスによって、前記重複排除されるデータブロックの前記固有値を、前記スイッチングデバイスを介して前記第２のコントローラに送信するステップと、
前記第２のコントローラによって、前記重複排除されるデータブロックの前記固有値のホームコントローラが前記第１のコントローラであると判断するステップと、
前記第２のコントローラによって、前記重複排除されるデータブロックの前記固有値を、前記スイッチングデバイスを介して前記第１のコントローラに送信するステップと、
を含む、請求項１又は２に記載の方法。
【請求項４】
前記重複排除されるデータブロックの前記固有値が前記データブロックの固有値インデックスセット内に見つからないとき、前記方法は、
前記第１のコントローラによって、前記スイッチングデバイスを介して前記第２のコントローラに通知を送信するステップであって、前記通知は、前記ターゲットハードディスクにおける記憶アドレスを搬送する、ステップと、
前記第２のコントローラによって、前記通知に従って、前記重複排除されるデータブロックの前記アドレスと、前記重複排除されるデータブロックの前記固有値と、前記ターゲットハードディスクにおける前記記憶アドレスとの間の対応関係を確立するステップと、
を更に含む、請求項２に記載の方法。
【請求項５】
前記方法は、前記第２のコントローラによって、前記重複排除されるデータブロックの前記アドレスと、前記重複排除されるデータブロックの前記固有値と、前記第１のコントローラのアドレスとの間の対応関係を確立するステップを更に含む、請求項３に記載の方法。
【請求項６】
ストレージアレイであって、前記ストレージアレイは、スイッチングデバイスと、第１のコントローラと、キャッシュデバイスとを備え、前記第１のコントローラは前記スイッチングデバイスに接続され、前記キャッシュデバイスは前記スイッチングデバイスに接続され、前記スイッチングデバイスは前記ストレージアレイ内のハードディスクに接続され、
前記第１のコントローラは、前記キャッシュデバイスから、重複排除されるデータブロックの固有値を受信し、前記重複排除されるデータブロックの前記固有値を求めてデータブロックの固有値インデックスセットを検索するように構成され、
前記重複排除されるデータブロックの前記固有値が前記データブロックの固有値インデックスセット内に見つからないとき、前記第１のコントローラは、前記キャッシュデバイスにおける前記重複排除されるデータブロックのキャッシュアドレスを、前記スイッチングデバイスを介して取得するように更に構成され、
前記第１のコントローラは、データ読出し命令を、前記スイッチングデバイスを介してターゲットハードディスクのコントローラに送信するように更に構成され、前記データ読出し命令は、前記キャッシュデバイスの識別子及び前記キャッシュアドレスを搬送し、
前記ターゲットハードディスクの前記コントローラは、前記キャッシュデバイスの前記識別子及び前記キャッシュアドレスに従って、前記スイッチングデバイスを介して前記キャッシュアドレスから前記重複排除されるデータブロックを読み出すように構成され、
前記ターゲットハードディスクの前記コントローラは、前記重複排除されるデータブロックを前記ターゲットハードディスクに記憶するように更に構成される、ストレージアレイ。
【請求項７】
前記ターゲットハードディスクの前記コントローラは、前記ターゲットハードディスクにおける記憶アドレスを、前記スイッチングデバイスを介して前記第１のコントローラに送信するように更に構成され、前記ターゲットハードディスクにおける前記記憶アドレスは、前記ターゲットハードディスクの前記コントローラの識別子と、前記ターゲットハードディスクに前記重複排除されるデータブロックを記憶するための論理記憶アドレスとを含み、
前記第１のコントローラは、前記データブロックの固有値インデックスセットにおいて前記重複排除されるデータブロックの固有値インデックスを確立するように更に構成され、前記重複排除されるデータブロックの前記固有値インデックスは、前記重複排除されるデータブロックの前記固有値と、前記ターゲットハードディスクにおける前記記憶アドレスとを含む、請求項６に記載のストレージアレイ。
【請求項８】
前記ストレージアレイは第２のコントローラを更に備え、前記第２のコントローラは前記スイッチングデバイスに接続され、前記第２のコントローラは、前記重複排除されるデータブロックのアドレスを記憶し、前記第２のコントローラは、前記重複排除されるデータブロックが位置するターゲット論理ユニットのホームコントローラであり、前記第１のコントローラが、前記キャッシュデバイスから、前記重複排除されるデータブロックの前記固有値を受信することは、
前記キャッシュデバイスによって、前記重複排除されるデータブロックの前記固有値を、前記スイッチングデバイスを介して前記第２のコントローラに送信することと、
前記第２のコントローラによって、前記重複排除されるデータブロックの前記固有値のホームコントローラが前記第１のコントローラであると判断することと、
前記第２のコントローラによって、前記重複排除されるデータブロックの前記固有値を、前記スイッチングデバイスを介して前記第１のコントローラに送信することと、
を含む、請求項６又は７に記載のストレージアレイ。
【請求項９】
前記重複排除されるデータブロックの前記固有値が前記データブロックの固有値インデックスセット内に見つからないとき、前記第１のコントローラは、前記スイッチングデバイスを介して前記第２のコントローラに通知を送信するように更に構成され、前記通知は、前記ターゲットハードディスクにおける記憶アドレスを搬送し、
前記第２のコントローラは、前記通知に従って、前記重複排除されるデータブロックの前記アドレスと、前記重複排除されるデータブロックの前記固有値と、前記ターゲットハードディスクにおける前記記憶アドレスとの間の対応関係を確立するように更に構成される、請求項７に記載のストレージアレイ。
【請求項１０】
前記第２のコントローラは、前記重複排除されるデータブロックの前記アドレスと、前記重複排除されるデータブロックの前記固有値と、前記第１のコントローラのアドレスとの間の対応関係を確立するように更に構成される、請求項８に記載のストレージアレイ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報技術の分野に関し、特に、データ重複排除方法及びストレージアレイに関する。
【背景技術】
【０００２】
ストレージアレイは通常、１つのエンジンを含み、１つのエンジンが２つのコントローラを含み、これは通常、二重コントローラ構造と呼ばれる。図１に示すように、ストレージアレイは、入出力マネージャＡと、入出力マネージャＢと、コントローラＡと、コントローラＢとを含む。入出力マネージャＡはコントローラＡに接続され、入出力マネージャＢはコントローラＢに接続される。コントローラＡは、周辺コンポーネント相互接続エクスプレス（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ，ＰＣＩｅ）スイッチＡと、中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ，ＣＰＵ）Ａと、メモリＡとを含み；コントローラＢは、周辺コンポーネント相互接続エクスプレス（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ，ＰＣＩｅ）スイッチＢと、中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ，ＣＰＵ）Ｂと、メモリＢとを含む。ＰＣＩｅスイッチＡはＰＣＩｅスイッチＢに接続される。図１に示すストレージアレイにおいて、書き込まれるデータがハードディスクに書き込まれる前に、データ重複排除が実行される。特定のプロセスは以下のとおりである。コントローラＡのＣＰＵ  ＡがメモリＡ内の書き込まれるデータを分割して複数のデータブロックを取得し、各データブロックの固有値を計算し、コントローラＡの固有値インデックスセット（ｅｉｇｅｎｖａｌｕｅ  ｉｎｄｅｘ  ｓｅｔ）における固有値を検索することによって、データブロックが重複データブロックであるか否かを判断し、データブロックが重複データブロックである場合、このデータブロックを削除し、データブロックが重複データブロックでない場合、このデータブロックをハードディスクに書き込む。
【０００３】
ストレージアレイにおける上記のデータ重複排除プロセスは、コントローラのＣＰＵ計算能力及びコントローラのメモリリソースを消費し、ストレージアレイの性能に深刻に影響を及ぼす。
【発明の概要】
【０００４】
本発明の実施形態は、データ重複排除方法及びストレージアレイを提供する。
【０００５】
第１の態様によれば、本発明の一実施形態はデータ重複排除方法を提供し、本方法はストレージアレイに適用され、ストレージアレイは、スイッチングデバイスと、第１のコントローラと、キャッシュデバイスとを含み、第１のコントローラはスイッチングデバイスに接続され；キャッシュデバイスはスイッチングデバイスに接続され；スイッチングデバイスはストレージアレイ内のハードディスクに接続され；本方法は：
第１のコントローラによって、キャッシュデバイスから、重複排除されるデータブロックの固有値を受信し、重複排除されるデータブロックの固有値を求めてデータブロックの固有値インデックスセットを検索するステップと；
重複排除されるデータブロックの固有値がデータブロックの固有値インデックスセット内に見つからないとき、第１のコントローラによって、キャッシュデバイスにおける重複排除されるデータブロックのキャッシュアドレスを、スイッチングデバイスを介して取得するステップと；
第１のコントローラによって、データ読出し命令を、スイッチングデバイスを介してターゲットハードディスクのコントローラに送信するステップであって、データ読出し命令は、キャッシュデバイスの識別子及びキャッシュアドレスを搬送する、ステップと；
ターゲットハードディスクのコントローラによって、キャッシュデバイスの識別子及びキャッシュアドレスに従って、スイッチングデバイスを介してキャッシュアドレスから重複排除されるデータブロックを読み出すステップと；
ターゲットハードディスクのコントローラによって、重複排除されるデータブロックをターゲットハードディスクに記憶するステップと；
を含む。
【０００６】
本発明の第１の態様を参照して、第１の可能な実施方式において、本方法は：
ターゲットハードディスクのコントローラによって、ターゲットハードディスクにおける記憶アドレスを、スイッチングデバイスを介して第１のコントローラに送信するステップであって、ターゲットハードディスクにおける記憶アドレスは、ターゲットハードディスクのコントローラの識別子と、ターゲットハードディスクに重複排除されるデータブロックを記憶するための論理記憶アドレスとを含む、ステップと；
第１のコントローラによって、データブロックの固有値インデックスセットにおいて重複排除されるデータブロックの固有値インデックスを確立するステップであって、重複排除されるデータブロックの固有値インデックスは、重複排除されるデータブロックの固有値と、ターゲットハードディスクにおける記憶アドレスとを含む、ステップと；
を更に含む。
【０００７】
本発明の第１の態様を参照して、第２の可能な実施方式において、ストレージアレイは第２のコントローラを更に含み、第２のコントローラはスイッチングデバイスに接続され；第２のコントローラは、重複排除されるデータブロックのアドレスを記憶し、第２のコントローラは、重複排除されるデータブロックが位置するターゲット論理ユニットのホームコントローラであり；第１のコントローラによって、キャッシュデバイスから、重複排除されるデータブロックの固有値を受信するステップは：
キャッシュデバイスによって、重複排除されるデータブロックの固有値を、スイッチングデバイスを介して第２のコントローラに送信するステップと；
第２のコントローラによって、重複排除されるデータブロックの固有値のホームコントローラが第１のコントローラであると判断するステップと；
第２のコントローラによって、重複排除されるデータブロックの固有値を、スイッチングデバイスを介して第１のコントローラに送信するステップと、
を特に含む。
【０００８】
本発明の第１の態様の第２の可能な実施方式を参照して、第３の可能な実施方式において、重複排除されるデータブロックの固有値がデータブロックの固有値インデックスセット内に見つからないとき、本方法は：
第１のコントローラによって、スイッチングデバイスを介して第２のコントローラに通知を送信するステップであって、通知は、ターゲットハードディスクにおける記憶アドレスを搬送する、ステップと；
第２のコントローラによって、通知に従って、重複排除されるデータブロックのアドレスと、重複排除されるデータブロックの固有値と、ターゲットハードディスクにおける記憶アドレスとの間の対応関係を確立するステップと；
を更に含む。
【０００９】
本発明の第１の態様の第２の可能な実施方式を参照して、第４の可能な実施方式において、本方法は、第２のコントローラによって、重複排除されるデータブロックのアドレスと、重複排除されるデータブロックの固有値と、第１のコントローラのアドレスとの間の対応関係を確立するステップを更に含む。
【００１０】
第２の態様によれば、本発明の一実施形態はストレージアレイを提供し、ストレージアレイは、スイッチングデバイスと、第１のコントローラと、キャッシュデバイスとを含み、第１のコントローラはスイッチングデバイスに接続され；キャッシュデバイスはスイッチングデバイスに接続され；スイッチングデバイスはストレージアレイ内のハードディスクに接続され；
第１のコントローラは、キャッシュデバイスから、重複排除されるデータブロックの固有値を受信し、重複排除されるデータブロックの固有値を求めてデータブロックの固有値インデックスセットを検索するように構成され；
重複排除されるデータブロックの固有値がデータブロックの固有値インデックスセット内に見つからないとき、第１のコントローラは、キャッシュデバイスにおける重複排除されるデータブロックのキャッシュアドレスを、スイッチングデバイスを介して取得するように更に構成され；
第１のコントローラは、データ読出し命令を、スイッチングデバイスを介してターゲットハードディスクのコントローラに送信するように更に構成され、データ読出し命令は、キャッシュデバイスの識別子及びキャッシュアドレスを搬送し；
ターゲットハードディスクのコントローラは、キャッシュデバイスの識別子及びキャッシュアドレスに従って、スイッチングデバイスを介してキャッシュアドレスから重複排除されるデータブロックを読み出すように構成され；
ターゲットハードディスクのコントローラは、重複排除されるデータブロックをターゲットハードディスクに記憶するように更に構成される。
【００１１】
本発明の第２の態様を参照して、第１の可能な実施方式において、ターゲットハードディスクのコントローラは、ターゲットハードディスクにおける記憶アドレスを、スイッチングデバイスを介して第１のコントローラに送信するように更に構成され、ターゲットハードディスクにおける記憶アドレスは、ターゲットハードディスクのコントローラの識別子と、ターゲットハードディスクに重複排除されるデータブロックを記憶するための論理記憶アドレスとを含み；
第１のコントローラは、データブロックの固有値インデックスセットにおいて重複排除されるデータブロックの固有値インデックスを確立するように更に構成され、重複排除されるデータブロックの固有値インデックスは、重複排除されるデータブロックの固有値と、ターゲットハードディスクにおける記憶アドレスとを含む。
【００１２】
本発明の第２の態様を参照して、第２の可能な実施方式において、ストレージアレイは第２のコントローラを更に含み、第２のコントローラはスイッチングデバイスに接続され；第２のコントローラは、重複排除されるデータブロックのアドレスを記憶し、第２のコントローラは、重複排除されるデータブロックが位置するターゲット論理ユニットのホームコントローラであり；第１のコントローラが、キャッシュデバイスから、重複排除されるデータブロックの固有値を受信することは：
キャッシュデバイスによって、重複排除されるデータブロックの固有値を、スイッチングデバイスを介して第２のコントローラに送信することと、
第２のコントローラによって、重複排除されるデータブロックの固有値のホームコントローラが第１のコントローラであると判断することと；
第２のコントローラによって、重複排除されるデータブロックの固有値を、スイッチングデバイスを介して第１のコントローラに送信することと；
を特に含む。
【００１３】
本発明の第２の態様の第２の可能な実施方式を参照して、第３の可能な実施方式において、重複排除されるデータブロックの固有値がデータブロックの固有値インデックスセット内に見つからないとき、第１のコントローラは、スイッチングデバイスを介して第２のコントローラに通知を送信するように更に構成され、通知は、ターゲットハードディスクにおける記憶アドレスを搬送し；
第２のコントローラは、通知に従って、重複排除されるデータブロックのアドレスと、重複排除されるデータブロックの固有値と、ターゲットハードディスクにおける記憶アドレスとの間の対応関係を確立するように更に構成される。
【００１４】
本発明の第２の態様の第２の可能な実施方式を参照して、第４の可能な実施方式において、第２のコントローラは、重複排除されるデータブロックのアドレスと、重複排除されるデータブロックの固有値と、第１のコントローラのアドレスとの間の対応関係を確立するように更に構成される。
【００１５】
本発明の実施形態において提供されるデータ重複排除方法及びストレージアレイによれば、コントローラがスイッチングデバイスを介してキャッシュデバイスに接続され、第１のコントローラがキャッシュデバイスから重複排除されるデータブロックの固有値を受信し、重複排除されるデータブロックの固有値を求めてデータブロックの固有値インデックスセットを検索し、同じ固有値が見つからないとき、第１のコントローラは、キャッシュデバイスにおける重複排除されるデータブロックのキャッシュアドレスをターゲットハードディスクのコントローラに送信し、ターゲットハードディスクのコントローラは、重複排除されるデータブロックのキャッシュアドレスから、重複排除されるデータブロックを読み出す。キャッシュデバイスは、重複排除されるデータブロックのフィンガープリントの計算を実施し、それによってコントローラの計算リソースを節約する。重複排除されるデータブロックをターゲットハードディスク内に記憶するプロセスの間、第１のコントローラは重複排除されるデータブロックのキャッシュアドレスのみを提供し、ターゲットハードディスクのコントローラは、キャッシュアドレスから、重複排除されるデータブロックを直接読み出し、それによって第１のコントローラの計算リソース及びメモリリソースを節約し、ストレージアレイの性能を改善する。
【図面の簡単な説明】
【００１６】
本発明の実施形態における技術的解決策をより明確に説明するために、以下において、実施形態を説明するのに必要とされる添付の図面を簡単に紹介する。以下の説明における添付の図面は、本発明のいくつかの実施形態を示すにすぎず、これらの添付の図面から他の図面を更に導出することができる。
【００１７】
【図１】従来技術におけるストレージアレイの構成図である。
【図２】本発明の一実施形態によるストレージアレイの構成図である。
【図３】本発明の一実施形態によるデータ書込み要求の処理のフローチャートである。
【図４】本発明の一実施形態によるデータ書込み要求の処理のフローチャートである。
【図５】本発明の一実施形態によるデータ読出し要求の処理のフローチャートである。
【図６】データブロックの固有値インデックスセットの概略図である。
【図７】本発明の一実施形態によるデータ重複排除処理のフローチャートである。
【発明を実施するための形態】
【００１８】
以下において、本発明の実施形態における添付の図面を参照して、本発明の実施形態における技術的解決策を明確に説明する。明らかに、説明される実施形態は、本発明の実施形態のうちのいくつかにすぎず、全てではない。本発明の実施形態に基づいて得られる全ての他の実施形態が本発明の保護範囲内にあるものとする。
【００１９】
図２に示すストレージアレイ等の、本発明の実施形態において提供されるストレージアレイは、入出力マネージャＡと、コントローラＡと、入出力マネージャＢと、コントローラＢと、スイッチングデバイスＡと、スイッチングデバイスＢと、キャッシュデバイスＭとを含む。コントローラＡは、ＣＰＵ  Ａと、メモリＡとを含み、ＣＰＵ  Ａはバスを介してメモリＡと通信し；コントローラＢは、ＣＰＵ  Ｂと、メモリＢとを含み、ＣＰＵ  Ｂはバスを介してメモリＢと通信する。入出力マネージャＡはスイッチングデバイスＡ及びスイッチングデバイスＢに接続され、入出力マネージャＢはスイッチングデバイスＡ及びスイッチングデバイスＢに接続される。スイッチングデバイスＡはスイッチングデバイスＢに相互接続される。スイッチングデバイスＡ及びスイッチングデバイスＢは共にキャッシュデバイスＭに接続される。キャッシュデバイスＭについては以下で詳細に説明する。コントローラＡはスイッチングデバイスＡ及びスイッチングデバイスＢに接続され、コントローラＢはスイッチングデバイスＡ及びスイッチングデバイスＢに接続される。上記の説明に基づいて、スイッチングデバイスＡ及びスイッチングデバイスＢの周囲に、入出力マネージャＡ、入出力マネージャＢ、コントローラＡ及びコントローラＢによって、完全に相互接続されたアーキテクチャが形成される。図２に示すストレージアレイにおいて、スイッチングデバイスＡは全てのハードディスクに接続され、スイッチングデバイスＢも全てのハードディスクに接続される。コントローラＡ及びコントローラＢは共に、図２に示す全てのハードディスクと通信する。特に、コントローラＡは、スイッチングデバイスＡを介して全てのハードディスクと通信し、コントローラＢは、スイッチングデバイスＢを介して全てのハードディスクと通信する。コントローラＡは、ハードディスクを仮想化して、ホストＡに利用可能な論理ユニットＬＵ  Ａを形成するように構成される。ＬＵ  ＡはホストＡに搭載され、ホストＡはコントローラＡを介してＬＵ  Ａに対しデータアクセスオペレーションを実行する。ここで、ＬＵ  ＡはコントローラＡにホーミングされ、すなわち、コントローラＡはＬＵ  Ａのホームコントローラである。同様に、コントローラＢは、ハードディスクを仮想化して、ホストＢに利用可能な論理ユニットＬＵ  Ｂを形成するように構成される。ＬＵ  ＢはホストＢに搭載され、ホストＢはコントローラＢを介してＬＵ  Ｂに対しデータアクセスオペレーションを実行する。ここで、ＬＵ  ＢはコントローラＢにホーミングされ、すなわち、コントローラＢはＬＵ  Ｂのホームコントローラである。ここでのホストは、物理ホスト（又は物理サーバと呼ばれる）であっても、仮想ホスト（又は仮想サーバと呼ばれる）であってもよい。論理ユニットＬＵは一般的に、業界における論理ユニット番号（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ，ＬＵＮ）と呼ばれる。ＬＵＮをホストに割り当てることは、実際には、ＬＵの識別子をホストに割り当てることを指し、それによってＬＵがホストに搭載される。したがって、ＬＵ及びＬＵＮはここでは同じものを意味する。図２に示すストレージアレイにおいて、スイッチングデバイスＡ及びＢは���ＰＣＩｅスイッチングデバイス、不揮発性メモリエクスプレス伝送バス（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ，ＮＶＭｅ）スイッチングデバイス、シリアル接続スモールコンピュータシステムインターフェース（Ｓｅｒｉａｌ  ａｔｔａｃｈｅｄ  ＳＣＳＩ，ＳＡＳ）スイッチングデバイス等であってもよく、これは本発明の実施形態によって制限されるものではない。スイッチングデバイスＡ及びＢがＰＣＩｅスイッチングデバイスであるとき、ＰＣＩｅスイッチングデバイスに接続されるハードディスクは、ＰＣＩｅプロトコルインターフェースを有するハードディスクであり；スイッチングデバイスＡ及びＢがＮＶＭｅスイッチングデバイスであるとき、ＮＶＭｅスイッチングデバイスに接続されるハードディスクは、ＮＶＭｅプロトコルインターフェースを有するハードディスクであり；スイッチングデバイスＡ及びＢがＳＡＳスイッチングデバイスであるとき、ＳＡＳスイッチングデバイスに接続されるハードディスクは、ＳＡＳプロトコルインターフェースを有するハードディスクである。図２に示すハードディスクは、機械的ハードディスク、ソリッドステートディスク（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ，ＳＳＤ）、又は他の媒体のハードディスクであってもよい。図２に示すストレージアレイにおけるハードディスクに関して、異なるディスクのストレージ媒体は異なってもよく、それによってハイブリッドハードディスクストレージアレイが形成されるが、これは本発明の実施形態によって制限されるものではない。
【００２０】
キャッシュデバイスＭは、特に、揮発性ストレージ媒体、又は相変化メモリ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ，ＰＣＭ）等の不揮発性ストレージ媒体によって形成されたストレージデバイスであっても、キャッシュデバイスとして用いるのに適した別の不揮発性ストレージ媒体であってもよく、これは本発明の実施形態によって制限されるものではない。キャッシュデバイスＭはデータをキャッシュするように構成される。以下において、本発明の特定の実施形態を参照してキャッシュデバイスＭについて記載する。本発明の実施形態において、スイッチングデバイスＡがＰＣＩｅスイッチングデバイスであり、スイッチングデバイスＢがＰＣＩｅスイッチングデバイスであり、ハードディスクがＰＣＩｅプロトコルインターフェースを有するＳＳＤであることが例として用いられる。
【００２１】
図２に示すストレージアレイにおいて、入出力マネージャＡは、ホストによって送信されるデータ書込み要求を受信する。一実施方式において、コントローラＡは入出力マネージャＡのホームコントローラである。したがって、入出力マネージャＡはホストによって送信されるデータオペレーション要求を受信する。入出力マネージャＡの要求送信ポリシーが変更されない場合、要求はデータオペレーション要求に従ってデフォルトでコントローラＡに送信され、このため、コントローラＡは入出力マネージャＡのホームコントローラと呼ばれる。本発明の一実施形態では、入出力マネージャＡはホストによって送信されたデータ書込み要求を受信し、このデータ書込み要求をＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してコントローラＡに送信する。要求が転送される際に介する特定のＰＣＩｅスイッチングデバイスに関しては、予め設定した規則に従って判断されてもよい。ＰＣＩｅスイッチングデバイスが選択されると、入出力マネージャＡはその後、このＰＣＩｅスイッチングデバイスを介してコントローラＡと通信する。当然ながら、入出力マネージャＡはＰＣＩｅスイッチングデバイスをランダムに選択してコントローラＡと通信してもよく、これは本発明の実施形態によって制限されるものではない。本発明の実施形態は、入出力マネージャＡがＰＣＩｅスイッチングデバイスＡを選択してコントローラＡと通信する例を用いる。
【００２２】
入出力マネージャＡによって受信されるデータ書込み要求は、書き込まれるデータのアドレスを搬送する。書き込まれるデータのアドレスは、書き込まれるデータのターゲットＬＵの識別子と、書き込まれるデータの論理ブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ，ＬＢＡ）と、書き込まれるデータの長さとを含む。入出力マネージャＡは、コントローラＡにデータ書込み要求を送信する。コントローラＡはデータ書込み要求を受信し、書き込まれるデータのアドレスにおける書き込まれるデータのターゲットＬＵの識別子に従って、コントローラＡがターゲットＬＵのホームコントローラであるか否かを判断する。
【００２３】
コントローラＡがターゲットＬＵのホームコントローラであるとき、すなわち、ターゲットＬＵはハードディスクを仮想化することによってコントローラＡにより生成され、ホストに提供される。コントローラＡは、書き込まれるデータをキャッシュするのに用いられるキャッシュデバイスを判断する。このキャッシュデバイスは、本発明のこの実施形態ではキャッシュデバイスＭである。実施方式は以下のとおりである：コントローラＡは、データ書込み要求に従って、書き込まれるデータにキャッシュアドレスを割り当てるようにキャッシュデバイスＭに命令し、キャッシュデバイスＭは書き込まれるデータの長さに従ってキャッシュアドレスを割り当てる。コントローラＡは、書き込まれるデータに対しキャッシュデバイスＭによって割り当てられるキャッシュアドレスを取得する（これ以降、書き込まれるデータに対しキャッシュデバイスＭによって割り当てられるキャッシュアドレスを、キャッシュアドレスＭと呼び、一実施方式において、キャッシュアドレスは開始アドレス及び長さを含む）。コントローラＡは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭを、ＰＣＩｅスイッチングデバイスＡを介して入出力マネージャＡに送信する。入出力マネージャＡは、コントローラＡによって送信されたキャッシュデバイスＭの識別子及びキャッシュアドレスＭを受信し、書き込まれるデータを、キャッシュデバイスＭの識別子及びキャッシュアドレスＭに従ってキャッシュアドレスＭに書き込む（又は書き込まれるデータをキャッシュアドレスＭに直接書き込んでもよい）。コントローラＡは、書き込まれるデータに対し割り当てられるキャッシュアドレスＭのみを取得し、入出力マネージャＡは、書き込まれるデータを、ＰＣＩｅスイッチングデバイスＡを介してキャッシュアドレスＭに直接書き込む。これは、従来技術と比較して、コントローラＡのＣＰＵ計算リソース及びコントローラＡのメモリリソースを節約し、データ書込み効率を改善する。
【００２４】
コントローラＡは、書き込まれるデータのアドレスと、キャッシュデバイスＭの識別子と、キャッシュアドレスＭとの間の対応関係を確立し、したがって、書き込まれるデータを読み出すとき、コントローラＡは、書き込まれるデータのキャッシュアドレスＭを入出力マネージャＡに送信し、入出力マネージャＡは、書き込まれるデータのキャッシュアドレスＭから、書き込まれるデータを読み出してもよく（又は書き込まれるデータのキャッシュアドレスＭから、書き込まれるデータを直接読み出してもよく）、それによって、コントローラＡのＣＰＵ計算リソース及びコントローラＡのメモリリソースを節約し、データ読出し効率を改善する。
【００２５】
条件が満たされた後、ストレージアレイがデータ重複排除を行わない場合、キャッシュデバイスＭは書き込まれるデータをストレージアレイのターゲットＳＳＤに記憶する。ターゲットＳＳＤは、書き込まれるデータを記憶するためのＳＳＤを指す。書き込まれるデータをターゲットＳＳＤに書き込む特定のプロセスは以下であってもよい：コントローラＡはキャッシュデバイスＭの識別子及びキャッシュアドレスＭを、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してターゲットＳＳＤのコントローラに送信する。ターゲットＳＳＤのコントローラは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭに従って、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介して、キャッシュアドレスＭから書き込まれるデータを直接読み出し、書き込まれるデータを記憶する。ターゲットＳＳＤのコントローラは、ターゲットＳＳＤにおける書き込まれるデータの記憶アドレスを、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してコントローラＡに送信する。ターゲットＳＳＤにおける書き込まれるデータの記憶アドレスは、ターゲットＳＳＤのコントローラの識別子と、ターゲットＳＳＤに書き込まれるデータを記憶するための論理記憶アドレスとを含む。コントローラＡは、書き込まれるデータのアドレスと、ターゲットＳＳＤに書き込まれるデータの記憶アドレスとの間の対応関係を確立する。
【００２６】
上記のプロセスは特に図３に示される。
【００２７】
ステップ３０１：ホストはデータ書込み要求を入出力マネージャＡに送信する。
【００２８】
入出力マネージャＡは、ストレージアレイ内の入出力受信管理デバイスであり、ホストによって送信されるデータオペレーション要求を受信し、データオペレーション要求をコントローラに転送する役割を果たす。本発明の一実施形態では、ホストは、書き込まれるデータのアドレスを搬送するデータ書込み要求を入出力マネージャＡに送信する。例示的に、スモールコンピュータシステムインターフェース（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ，ＳＣＳＩ）プロトコル、すなわちＳＣＳＩプロトコルデータ書込み要求が、データ書込み要求のために用いられてもよい。当然ながら、他のプロトコルが用いられてもよく、これは本発明の実施形態によって制限されるものではない。
【００２９】
ステップ３０２：データ書込み要求をコントローラＡに送信する。
【００３０】
本発明のこの実施形態では、入出力マネージャＡは通常、特定のコントローラと通信する。入出力マネージャＡは、複数の方式で、例えばコントローラの負荷に従って、又は特定の経路選択アルゴリズムに従ってコントローラとの対応関係を確立してもよいが、これは本発明によって制限されるものではない。入出力マネージャＡは、データ書込み要求を受信し、このデータ書込み要求を、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してコントローラＡに送信する。本発明のこの実施形態において、入出力マネージャＡがデータ書込み要求を受信し、データ書込み要求を、ＰＣＩｅスイッチングデバイスＡを介してコントローラＡに送信することが例として用いられる。
【００３１】
ステップ３０３：コントローラＡは書き込まれるデータのキャッシュアドレスを取得する。
【００３２】
コントローラＡは、入出力マネージャＡによって送信されるデータ書込み要求を受信し、書き込まれるデータをキャッシュするのに用いられるキャッシュデバイスを判断する。これは、本発明のこの実施形態では、キャッシュデバイスＭである。一実施方式において、キャッシュデバイスＭは、キャッシュアドレスのセグメントをコントローラＡに割り当てる。キャッシュアドレスのセグメントにおいて、コントローラＡは、書き込まれるデータの長さに従って、書き込まれるデータに対しキャッシュアドレスＭを割り当てる。別の実施方式では、コントローラＡは、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介して命令をキャッシュデバイスＭに送信する。命令は、書き込まれるデータの長さを搬送し、キャッシュデバイスＭに、書き込まれるデータに対しキャッシュアドレスを割り当てるように命令する。コントローラＡは、キャッシュアドレスＭを取得する。
【００３３】
ステップ３０４：キャッシュデバイスＭの識別子及びキャッシュアドレスＭを送信する。
【００３４】
コントローラＡは、キャッシュアドレスＭを取得し、キャッシュデバイスＭの識別子及びキャッシュアドレスＭを、ＰＣＩｅスイッチングデバイスＡを介して入出力マネージャＡに送信する。キャッシュデバイスＭの識別子はデバイスアドレスである。
【００３５】
ステップ３０５：ホストは書き込まれるデータを入出力マネージャＡに送信する。
【００３６】
入出力マネージャＡは、コントローラＡによって送信されたキャッシュデバイスＭの識別子及びキャッシュアドレスＭを受信し、ホストによって送信された書き込まれるデータを受信する。
【００３７】
ステップ３０６：書き込まれるデータをキャッシュアドレスＭに書き込む。
【００３８】
入出力マネージャＡは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭに従って、書き込まれるデータを、ＰＣＩｅスイッチングデバイスＡを介してキャッシュアドレスＭに直接書き込む。入出力マネージャＡは、ＰＣＩｅスイッチングデバイスＡを介して、キャッシュデバイスＭによって送信される、書き込まれるデータの書込みに成功したことを示す応答を受信する。入出力マネージャＡは、データ書込み要求が完了したことを示す応答をホストに送信し、書込み要求動作が完了したことをホストに通知する。
【００３９】
ステップ３０７：コントローラＡに、書き込まれるデータがキャッシュアドレスＭに書き込まれることを通知する。
【００４０】
入出力マネージャＡは、書き込まれるデータをキャッシュアドレスＭに書き込むことに成功し、コントローラＡに、書き込まれるデータがキャッシュアドレスＭに書き込まれることを通知する。
【００４１】
ステップ３０８：コントローラＡは、書き込まれるデータのアドレスと、キャッシュデバイスＭと、キャッシュアドレスＭとの間の対応関係を確立する。
【００４２】
コントローラＡは、入出力マネージャＡによって送信される通知を受信し、書き込まれるデータのアドレスと、キャッシュデバイスＭと、キャッシュアドレスＭとの間の対応関係を確立する。
【００４３】
キャッシュデバイスＭは、書き込まれるデータに対しキャッシュアドレスＭを割り当て、それによって、書き込まれるデータのアドレスと、キャッシュアドレスＭとの間の対応関係を確立する。キャッシュデバイスＭは、コントローラＡによって送信されたキャッシュアドレス割当て命令から、書き込まれるデータのアドレスを取得してもよく、キャッシュアドレスＭを割り当てた後、キャッシュデバイスＭは、書き込まれるデータのアドレスと、キャッシュアドレスＭとの間の対応関係を確立する。別の実施方式では、キャッシュデバイスＭは、ターゲットＬＵの排他的キャッシュデバイスであり、ターゲットＬＵのデータをキャッシュするためにのみ用いられ、したがって、キャッシュデバイスＭは、デフォルトで、ターゲットＬＵと、ターゲットＬＵにおけるＬＢＡと、キャッシュアドレスとの間の対応関係を保存する。キャッシュデバイスＭは、デフォルトで、ターゲットＬＵと、ターゲットＬＵにおけるＬＢＡと、キャッシュデバイスＭのキャッシュアドレスのセグメントとの間の対応関係を保存する。キャッシュアドレスのこのセグメントにおいて、キャッシュデバイスＭは、書き込まれるデータに対しキャッシュアドレスＭを割り当てる。
【００４４】
ストレージアレイの信頼性を改善するために、また、書き込まれるデータの複数のコピーをキャッシュするために、図１に示す従来技術において、入出力マネージャＡは書き込まれるデータを送信し、ＣＰＵ  Ａは、書き込まれるデータをメモリＡに書き込み、ＣＰＵ  ＡはメモリＡから書き込まれるデータを読み出し、書き込まれるデータを、ＰＣＩｅスイッチＡを介してＰＣＩｅスイッチＢに送信する。ＰＣＩｅスイッチＢは、書き込まれるデータをＣＰＵ  Ｂに送信し、ＣＰＵ  Ｂは書き込まれるデータをメモリＢに書き込む。本発明のこの実施形態では、キャッシュデバイスＭにおける書き込まれるデータの損失を防ぐために、ストレージアレイは書き込まれるデータを複数のキャッシュデバイスにキャッシュする。したがって、書き込まれるデータが２つのキャッシュデバイスにキャッシュされることが例として用いられる。図２に示すストレージアレイは、キャッシュデバイスＮを更に含む。ＰＣＩｅスイッチングデバイスＡ及びＰＣＩｅスイッチングデバイスＢは共にキャッシュデバイスＮに接続される。したがって、コントローラＡは、入出力マネージャＡによって送信されるデータ書込み要求を受信し、キャッシュデバイスＭが書き込まれるデータをキャッシュする一次キャッシュデバイスとしての役割を果たすと判断し、キャッシュデバイスＮが書き込まれるデータをキャッシュする二次キャッシュデバイスとしての役割を果たすと判断する。コントローラＡは、書き込まれるデータに対し割り当てられ、キャッシュデバイスＭ及びキャッシュデバイスＮ内に位置するキャッシュアドレスを取得する。一実施方式において、コントローラＡは、命令をキャッシュデバイスＭ及びキャッシュデバイスＮのそれぞれに送信する。命令は、キャッシュデバイスＭ及びキャッシュデバイスＮの双方に、書き込まれるデータに対しキャッシュアドレスを割り当てるように命令するのに用いられる。命令は、書き込まれるデータの長さを搬送する。キャッシュデバイスＭによって、書き込まれるデータに対し割り当てられるキャッシュアドレスは、キャッシュアドレスＭと呼ばれ、キャッシュデバイスＮによって、書き込まれるデータに対し割り当てられるキャッシュアドレスは、キャッシュアドレスＮと呼ばれる。コントローラＡはキャッシュアドレスＭ及びキャッシュアドレスＮを取得する。コントローラＡは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭを、ＰＣＩｅスイッチングデバイスＡを介して入出力マネージャＡに送信し、キャッシュデバイスＮの識別子及びキャッシュアドレスＮを、ＰＣＩｅスイッチングデバイスＡを介して入出力マネージャＡに送信する。特定の実施態様では、コントローラＡは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭ、並びにキャッシュデバイスＮの識別子及びキャッシュアドレスＮを、１つのメッセージを介して、又は２つのメッセージをそれぞれ介して入出力マネージャＡに送信することができ、これはここでは制限されない。別の実施方式では、キャッシュデバイスＭは、キャッシュアドレスの排他的セグメントをコントローラＡに対し割り当てる。この排他的セグメントは、ホームコントローラＡのＬＵのデータをキャッシュするためにのみ用い���れる。キャッシュデバイスＭのキャッシュアドレスのこのセグメントにおいて、コントローラＡは、書き込まれるデータに対しキャッシュアドレスＭを直接割り当てる。キャッシュデバイスＮは、キャッシュアドレスの排他的セグメントをコントローラＡに対し割り当て、キャッシュデバイスＮのキャッシュアドレスのこのセグメントにおいて、コントローラＡは、書き込まれるデータに対しキャッシュアドレスＮを直接割り当てる。
【００４５】
入出力マネージャＡは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭ、並びにキャッシュデバイスＮの識別子及びキャッシュアドレスＮを受信する。入出力マネージャＡは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭに従って、書き込まれるデータを、ＰＣＩｅスイッチングデバイスＡを介してキャッシュアドレスＭに直接書き込み、入出力マネージャＡは、キャッシュデバイスＮの識別子及びキャッシュアドレスＮに従って、書き込まれるデータを、ＰＣＩｅスイッチングデバイスＡを介してキャッシュアドレスＮに直接書き込む。入出力マネージャＡは、ＰＣＩｅスイッチングデバイスＡを介して、書き込まれるデータがキャッシュアドレスＭに書き込まれることに成功したことを示す応答を受信し、コントローラＡに、書き込まれるデータのアドレスと、キャッシュデバイスＭの識別子と、キャッシュアドレスＭとの間の対応関係を確立するように命令する。同様に、コントローラＡは、書き込まれるデータのアドレスと、キャッシュデバイスＮの識別子と、キャッシュアドレスＮとの間の対応関係を確立する。
【００４６】
別の実施方式では、コントローラＡは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭを、ＰＣＩｅスイッチングデバイスＡを介して入出力マネージャＡに送信する。入出力マネージャＡは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭを受信する。入出力マネージャＡは、書き込まれるデータを、キャッシュデバイスＭの識別子及びキャッシュアドレスＭに従って、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してキャッシュアドレスＭに直接書き込む。コントローラＡは、データ書込み命令を、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してキャッシュデバイスＭに送信する。データ書込み命令は、キャッシュデバイスＮの識別子及びキャッシュアドレスＮを搬送する。キャッシュデバイスＭは書き込まれるデータをキャッシュし、キャッシュデバイスＭは、書き込まれるデータを、データ書込み命令に従って、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してキャッシュアドレスＮに直接書き込む。
【００４７】
コントローラＡは、入出力マネージャＡが、キャッシュデバイスＭ及びキャッシュデバイスＮへの書き込まれるデータの書込みを実施するように、書き込まれるデータに対し割り当てられるキャッシュアドレスＭ及びキャッシュアドレスＮを取得する必要があるのみであり、それによって、コントローラＡのＣＰＵ計算リソース及びコントローラＡのメモリリソースを節約し、データ書込み効率を改善する。
【００４８】
別の場合、入出力マネージャＡはホストのデータ書込み要求を受信する。データ書込み要求は書き込まれるデータのアドレスを搬送する。入出力マネージャＡは、ＰＣＩｅスイッチングデバイスＡによって転送することにより、データ書込み要求をコントローラＡに送信する。コントローラＡは、入出力マネージャＡによって送信されたデータ書込み要求を受信し、データ書込み要求内に搬送されるターゲットＬＵの識別子に従って、コントローラＡがターゲットＬＵのホームコントローラでないと判断する。特定の実施形態が図４に示される。
【００４９】
ステップ４０１：ホストがデータ書込み要求を入出力マネージャＡに送信する。
【００５０】
ホストはデータ書込み要求を入出力マネージャＡに送信する。データ書込み要求は書き込まれるデータのアドレスを搬送する。
【００５１】
ステップ４０２：データ書込み要求をコントローラＡに送信する。
【００５２】
本発明のこの実施形態において、コントローラＡは入出力マネージャＡのホームコントローラである。入出力マネージャＡはデータ書込み要求を受信し、データ書込み要求をＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してコントローラＡに送信する。本発明のこの実施形態において、入出力マネージャＡがデータ書込み要求を受信し、データ書込み要求を、ＰＣＩｅスイッチングデバイスＡを介してコントローラＡに送信することが例として用いられる。
【００５３】
ステップ４０３：コントローラＡがターゲットＬＵのホームコントローラでないと判断する。
【００５４】
コントローラＡは、入出力マネージャＡによって送信されるデータ書込み要求を受信し、データ書込み要求において搬送される書き込まれるデータのターゲットＬＵの識別子に従って、コントローラＡがターゲットＬＵのホームコントローラでないと判断する。コントローラＡは、コントローラとＬＵとの間の対応関係を問い合わせ、コントローラＢがターゲットＬＵのホームコントローラであると判断する。
【００５５】
ステップ４０４：データ書込み要求をコントローラＢに送信する。
【００５６】
コントローラＡは、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してデータ書込み要求をコントローラＢに送信する。この実施形態では、ＰＣＩｅスイッチングデバイスＢがデータ書込み要求をコントローラＢに転送することが例として用いられる。
【００５７】
ステップ４０５：書き込まれるデータのキャッシュアドレスを取得する。
【００５８】
コントローラＢは、コントローラＡによって送信されるデータ書込み要求を受信し、書き込まれるデータをキャッシュするのに用いられるキャッシュデバイスを判断する。本発明のこの実施形態では、これはキャッシュデバイスＭである。特定の実施方式については、コントローラＡがキャッシュデバイスＭから書き込まれるデータのキャッシュアドレスを取得する方式を参照されたい。
【００５９】
ステップ４０６：キャッシュデバイスＭの識別子及びキャッシュアドレスＭをコントローラＡに送信する。
【００６０】
コントローラＢは、キャッシュアドレスＭを取得し、キャッシュデバイスＭの識別子及びキャッシュアドレスＭを、ＰＣＩｅスイッチングデバイスＢを介してコントローラＡに送信する。別の実施方式では、キャッシュデバイスＭの識別子及びキャッシュアドレスＭも、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してコントローラＡに直接送信されてもよい。
【００６１】
ステップ４０７：キャッシュデバイスＭの識別子及びキャッシュアドレスＭを入出力マネージャＡに送信する。
【００６２】
コントローラＡは、コントローラＢによって送信されたキャッシュデバイスＭの識別子及びキャッシュアドレスＭを受信し、書き込まれるデータのキャッシュアドレスＭを、ＰＣＩｅスイッチングデバイスを介して送信する。
【００６３】
ステップ４０８：ホストは書き込まれるデータを入出力マネージャＡに送信する。
【００６４】
入出力マネージャＡはキャッシュデバイスＭの識別子及びキャッシュアドレスＭを受信し、ホストによって送信されたデータ書込み要求に応答する。ホストは、書き込まれるデータを入出力マネージャＡに送信する。
【００６５】
ステップ４０９：書き込まれるデータをキャッシュアドレスＭに書き込む。
【００６６】
入出力マネージャＡは、ホストによって送信された書き込まれるデータを受信し、キャッシュデバイスＭの識別子及びキャッシュアドレスＭに従って、書き込まれるデータを、ＰＣＩｅスイッチングデバイスＡを介してキャッシュアドレスＭに直接書き込む。入出力マネージャＡは、ＰＣＩｅスイッチングデバイスＡを介して、キャッシュデバイスＭによって送信された、書き込まれるデータの書込みに成功したことを示す応答を受信する。入出力マネージャＡは、データ書込み要求が完了したことを示す応答をホストに送信し、書込み要求動作が完了したことをホストに通知する。
【００６７】
ステップ４１０：コントローラＢに、書き込まれるデータがキャッシュアドレスＭに書き込まれることを通知する。
【００６８】
入出力マネージャＡは、書き込まれるデータをキャッシュアドレスＭに書き込むことに成功し、コントローラＢに、書き込まれるデータがキャッシュアドレスＭに書き込まれることを通知する。これは特に、入出力マネージャＡが通知を、ＰＣＩｅスイッチングデバイスＡを介してコントローラＡに転送すること、及びコントローラＡが、通知を、ＰＣＩｅスイッチングデバイスＢを介してコントローラＢに転送すること；又は、入出力マネージャＡが、通知を、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してコントローラＢに直接送信することを含む。
【００６９】
ステップ４１１：コントローラＢは、書き込まれるデータのアドレスと、キャッシュデバイスＭと、キャッシュアドレスＭとの間の対応関係を確立する。
【００７０】
コントローラＢは、入出力マネージャＡによって送信される通知を受信し、書き込まれるデータのアドレスと、キャッシュデバイスＭと、キャッシュアドレスＭとの間の対応関係を確立する。
【００７１】
キャッシュデバイスＭが、書き込まれるデータのアドレスとキャッシュアドレスＭとの間の対応関係をどのように確立するかについては、上記の実施形態における説明を参照し、ここでは詳細を繰り返し説明することはしない。
【００７２】
キャッシュデバイスＮは、書き込まれるデータに対しキャッシュアドレスＮを割り当て、それによって、書き込まれるデータのアドレスと、キャッシュアドレスＮとの間の対応関係を確立する。キャッシュデバイスＮは、コントローラＡによって送信されたキャッシュアドレス割当て命令から、書き込まれるデータのアドレスを取得してもよく、キャッシュアドレスＮを割り当てた後、キャッシュデバイスＮは、書き込まれるデータのアドレスと、キャッシュアドレスＮとの間の対応関係を確立する。
【００７３】
キャッシュデバイスＭにキャッシュされる書き込まれるデータの損失を防ぐために、コントローラＡが書き込まれるデータのターゲットＬＵのホームコントローラでないシナリオにおいて、書き込まれるデータが、キャッシュとしての役割を果たす複数のキャッシュデバイスを必要とするとき、入出力マネージャＡは、データ書込み要求をコントローラＢに送信する。そのプロセスについては、上記の実施形態における説明を参照されたい。コントローラＢによって、書き込まれるデータのキャッシュアドレスを取得するプロセスについては、コントローラＡが書き込まれるデータのターゲットＬＵのホームコントローラであり、コントローラＡが複数のキャッシュデバイスのキャッシュアドレスを取得するシナリオを参照されたい。他のステップについても、上記の実施形態における説明を参照し、ここでは詳細を繰り返し説明することはしない。
【００７４】
ホストがデータをストレージアレイに書き込んだ後、ホストは書き込まれたデータにアクセスし、すなわち、データ読出し要求を送信する。特定のプロセスが図５に示される。
【００７５】
ステップ５０１：データ読出し要求を送信する。
【００７６】
ホストが、データ読出し要求を入出力マネージャＡに送信する。データ読出し要求は、読み出されるデータのアドレスを搬送する。読み出されるデータのアドレスは、読み出されるデータが位置する論理ユニットＬＵの識別子と、読み出されるデータのＬＢＡと、読み出されるデータの長さとを含む。特に、ホストは、ＳＣＳＩプロトコルを用いることによって、データ読出し要求を入出力マネージャＡに送信してもよいが、これは本発明によって制限されるものではない。説明を容易にするために、ここで読み出されるデータは、上記で説明した書き込まれるデータである。
【００７７】
ステップ５０２：データ読出し要求をコントローラＡに送信する。
【００７８】
入出力マネージャＡは、ホストによって送信されたデータ読出し要求を受信し、データ読出し要求を、ＰＣＩｅスイッチングデバイスＡを介してコントローラＡに送信する。
【００７９】
ステップ５０３：コントローラＡは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭを入出力マネージャＡに送信する。
【００８０】
コントローラＡが、読み出されるデータが位置するＬＵのホームコントローラであり、読み出されるデータがキャッシュデバイスＭ等のキャッシュデバイスにおいてキャッシュされるとき、データ読出し要求に従って、読み出されるデータのアドレスと、キャッシュデバイスの識別子と、キャッシュアドレスとの間の対応関係が問い合わせされ、読み出されるデータをキャッシュデバイスＭにキャッシュするのに用いられるキャッシュアドレスＭが判断される。読み出されるデータが依然としてキャッシュデバイスＭ内にキャッシュされているとき、キャッシュデバイスＭ内の読み出されるデータのキャッシュアドレスはキャッシュアドレスＭである。コントローラＡは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭを、ＰＣＩｅスイッチングデバイスＡを介して入出力マネージャＡに送信する。
【００８１】
ステップ５０４：キャッシュアドレスＭから読み出されるデータを読み出す。
【００８２】
入出力マネージャＡは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭに従って、ＰＣＩｅスイッチングデバイスＡを介してキャッシュアドレスＭから読み出されるデータを直接読み出す。
【００８３】
ステップ５０５：読み出されるデータを返す。
【００８４】
入出力マネージャＡは、キャッシュアドレスＭから読み出されるデータを読み出し、読み出されるデータをホストに返す。
【００８５】
入出力マネージャＡが、データ読出し要求に従って、読み出されるデータのクエリ要求を、ＰＣＩｅスイッチングデバイスＡを介してコントローラＡに送信し、コントローラＡが、読み出されるデータが位置するＬＵのホームコントローラでないとき、コントローラＡは、読み出されるデータが位置するＬＵとホームコントローラとの間の対応関係を問い合わせ、コントローラＢが、読み出されるデータが位置するＬＵのホームコントローラであると判断する。コントローラＡは、読み出されるデータのクエリ要求を、ＰＣＩｅスイッチングデバイスＢを介してコントローラＢに送信する。上記の書き込まれるデータが依然として、ここで言及される読み出されるデータであることが例として用いられる。したがって、読み出されるデータのアドレスは、上記で記載した書き込まれるデータのアドレスである。読み出されるデータが依然としてキャッシュデバイスＭ内にキャッシュされているとき、キャッシュデバイスＭ内の読み出されるデータのキャッシュアドレスはキャッシュアドレスＭである。コントローラＢは、書き込まれるデータのアドレスと、キャッシュデバイスＭの識別子と、キャッシュアドレスＭとの間の対応関係を問い合わせ、読み出されるデータをキャッシュするキャッシュデバイスＭの識別子及びキャッシュアドレスＭを判断し、キャッシュデバイスＭの識別子及びキャッシュアドレスＭを、ＰＣＩｅスイッチングデバイスＢを介してコントローラＡに送信する。コントローラＡは、キャッシュデバイスＭの識別子及びキャッシュアドレスＭを、ＰＣＩｅスイッチングデバイスＡを介して入出力マネージャＡに送信する。コントローラＢも、キャッシュデバイスＭの識別子及びキャッシュアドレスＭを、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介して入出力マネージャＡに直接送信してもよい。後続の読出し動作については、上記の実施形態における読出し動作を参照し、ここでは詳細を繰り返し説明することはしない。
【００８６】
上記の書き込まれるデータが依然としてここで言及される読み出されるデータであることが例として用いられる。したがって、読み出されるデータのアドレスは、上記で記載した書き込まれるデータのアドレスである。読み出されるデータが既にターゲットＳＳＤに記憶されているとき、読み出されるデータが位置するＬＵのホームコントローラが、読み出されるデータのアドレス（書き込まれるデータのアドレス）と、ターゲットＳＳＤにおける読み出されるデータの記憶アドレスとの間の対応関係を問い合わせ、ターゲットＳＳＤにおける読み出されるデータの記憶アドレスを取得し、ターゲットＳＳＤにおける読み出されるデータの記憶アドレスを、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介して入出力マネージャＡに送信する。ターゲットＳＳＤにおける読み出されるデータの記憶アドレスは、ターゲットＳＳＤのコントローラの識別子と、ターゲットＳＳＤにおける読み出されるデータの論理記憶アドレスとを含む。入出力マネージャＡは、ターゲットＳＳＤにおける読み出されるデータの記憶アドレスに従って、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介して、ターゲットＳＳＤにおける読み出されるデータの論理記憶アドレスから読み出されるデータを直接読み出す。
【００８７】
上記の実施形態において、読み出されるデータがターゲットＳＳＤにおいて部分的に保存され、上記で記載したように本発明のこの実施形態においてキャッシュデバイスＭに部分的にキャッシュされているとき、入出力マネージャＡは、キャッシュデバイスにおける読み出されるデータのキャッシュアドレスに従ってＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してキャッシュアドレスからデータを直接読み出し；入出力マネージャＡは、ターゲットＳＳＤのコントローラの識別子及びターゲットＳＳＤ内の読み出されるデータの論理記憶アドレスに従ってＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してターゲットＳＳＤ内の論理記憶アドレスからデータを直接読み出す。これについてはここでは詳細に説明しない。
【００８８】
複数のキャッシュデバイスが、読み出されるデータをキャッシュする動作を実行するとき、通常、読み出されるデータが位置するＬＵのホームコントローラが、入出力マネージャＡに、読み出されるデータをキャッシュする一次キャッシュデバイスＭの識別子及びキャッシュアドレスＭを返す。他の手続き的動作については、上記の実施形態における読出し動作を参照し、ここでは詳細を繰り返し説明することはしない。
【００８９】
ストレージアレイにおいて、データ重複排除が行われる。これは、ストレージ空間を節約し、ストレージコストを低減することができる。本発明の実施形態による図２に示すストレージアレイにおいて、ホストはデータ書込み要求を入出力マネージャＡに送信し、データ書込み要求は書き込まれるデータのアドレスを搬送する。入出力マネージャＡは、データ書込み要求を、ＰＣＩｅスイッチングデバイスＡを介してコントローラＡに送信する。コントローラＡが書き込まれるデータのターゲットＬＵのホームコントローラであるとき、コントローラＡはキャッシュデバイスＭの識別子及びキャッシュアドレスＭを入出力マネージャＡに提供する。入出力マネージャＡは、書き込まれるデータを、キャッシュデバイスＭの識別子及びキャッシュアドレスＭに従って、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してキャッシュアドレスＭに直接書き込む。
【００９０】
キャッシュデバイスＭにキャッシュされる書き込まれるデータがストレージアレイのＳＳＤに記憶される前に、データ重複排除が行われる。これは、ストレージ空間を効果的に節約し、ストレージ空間の利用率を改善することができる。図２に示すストレージアレイを例として用いると、ストレージアレイＳＳＤに記憶されるデータに関して、データがキャッシュデバイスＭによってＳＳＤ内に記憶される前に、データ重複排除が実行される。データ重複排除技術は、予め設定された規則に従ってデータをデータブロックに分割し、各データブロックの固有値を計算することである。データブロックの固有値は通常、ハッシュ（Ｈａｓｈ）アルゴリズムを用いることによって計算される。ハッシュ演算は、データブロックに対して行われ、ハッシュ値が得られ、このハッシュ値は固有値として用いられる。一般的なハッシュアルゴリズムは、ＭＤ５、ＳＨＡ１、ＳＨＡ−２５６、ＳＨＡ−５１２等を含む。例えば、データブロックＡの固有値がＳＳＤに既に記憶されたデータブロックＢの固有値と同じである場合、データブロックＡ及びデータブロックＢは同一である。したがって、重複データブロックＡはキャッシュデバイスＭから削除され、ＳＳＤにデータブロックＢを記憶するための論理記憶アドレスが、ＳＳＤ内のデータブロックＡの論理記憶アドレスとして用いられる。
【００９１】
特定の実施態様では、データブロックの固有値の比較がコントローラによって実施される。データ重複排除はストレージアレイにおいて行われ、各一意のデータブロックが固有値を有するので、多くの固有値が生成される。ストレージアレイ内のコントローラ間の均衡を実施するために、各コントローラは、ハッシュ分布アルゴリズム等のデータブロック固有値分布アルゴリズムに従って、いくつかのデータブロックの固有値を比較する役割を果たす。このようにして、各コントローラは、データブロック固有値分布アルゴリズムに従ってストレージアレイ内に記憶されたいくつかの一意のデータの固有値インデックスのみを維持する。いくつかの一意のデータの固有値インデックスは、固有値インデックスセットと呼ばれる。コントローラは、ＳＳＤに書き込まれることになるデータブロックの固有値のための固有値インデックスセットを問い合わせ、固有値が固有値インデックスセット内の固有値と同じであるか否かを判断する。例えば、コントローラＡは、固有値分布アルゴリズムに従って固有値インデックスセットＡを維持する必要があり、したがって、コントローラＡが固有値インデックスセットＡ内の全ての固有値のホームコントローラであるか；又は固有値インデックスセットＡからの固有値がデータブロックＸの固有値と同じであるコントローラが、データブロックＸの固有値のホームコントローラ及び固有値インデックスセットＡ内の全ての固有値のホームコントローラの双方である。
【００９２】
特に、固有値インデックスセットは、図６に示す固有値インデックスによって形成される。例えば、固有値１のインデックスは、固有値１と、データブロック記憶アドレス１と、基準カウントとを含む。データブロック記憶アドレス１は、ＳＳＤ  Ａ内の一意のデータブロックＣの記憶アドレス、又はキャッシュデバイス内のデータブロックＣの記憶アドレスを表すのに用いられる。ＳＳＤ  Ａ内のデータブロックＣの記憶アドレスは、ＳＳＤ  Ａのコントローラの識別子と、ＳＳＤ  Ａ内に記憶されるデータブロックＣの論理記憶アドレスとを含んでもよい。キャッシュデバイス内のデータブロックＣの記憶アドレスは、キャッシュデバイスの識別子と、キャッシュアドレスとを含む。固有値１はデータブロックＣの固有値を表す。基準カウントは、固有値１を有するデータブロックの量を表す。例えば、データブロックＡがストレージアレイ内に初めて記憶されるとき、固有値１を有するデータブロックの量が１である場合、基準カウントは１である。同じ固有値１を有するデータブロックＤがＳＳＤ内に再び記憶されるとき、データブロックＤは、データ重複排除の原理に従ってＳＳＤ内に保存されないが、基準カウントは１だけ増加し、２に更新される。要約すると、固有値インデックス内のデータブロック記憶アドレスは、キャッシュデバイス内のデータブロックの記憶アドレスであるか、又はターゲットハードディスク内のデータブロックの記憶アドレスである。キャッシュデバイス内のデータブロックの記憶アドレスは、キャッシュデバイスの識別子と、キャッシュデバイスにおけるデータブロックのキャッシュアドレスとを含み；ターゲットハードディスクにおけるデータブロックの記憶アドレスは、ターゲットハードディスクのコントローラの識別子と、ターゲットハードディスク内のデータブロックを記憶するための論理記憶アドレスとを含む。図６に示す固有値インデックスは、例示的な実施態様にすぎず、固有値インデックスはマルチレベルインデックスであってもよい。インデックスは、データ重複排除のために用いることができる任意の形態のインデックスであってもよく、これは本発明のこの実施形態によって制限されるものではない。
【００９３】
図２に示すストレージアレイにおいて、コントローラＡが、キャッシュデバイスＭ内にキャッシュされるデータブロックのターゲットＬＵのホームコントローラとしての役割を果たすことが例として用いられる。上記の実施形態を参照すると、データ書込み要求を受信した後、入出力マネージャＡは、コントローラＡからキャッシュデバイスＭの識別子及びキャッシュアドレスＭを取得する。入出力マネージャＡは、書き込まれるデータを、キャッシュデバイスＭの識別子及びキャッシュアドレスＭに従って、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してキャッシュアドレスＭに直接書き込む。コントローラＡは、書き込まれるデータのアドレスと、キャッシュデバイスＭの識別子と、キャッシュアドレスＭとの間の対応関係を確立する。ホームコントローラＡのＬＵにキャッシュされたデータがキャッシュデバイスＭからＳＳＤに書き込まれるとき、キャッシュアドレスＭにおけるデータが例として用いられる。通常、データ重複排除が行われているとき、データブロックの固有値が計算される必要がある。データブロックの固有値を計算するために、データは、データブロックを取得するために、固有の規則に従ってまず分割される必要がある。データブロックへの分割のための２つの方法、すなわち、固定長のデータブロックにデータを分割すること、又は可変長のデータブロックにデータを分割することが存在してもよい。本発明のこの実施形態において、データが固定長のデータブロックに分割されることが例として用いられる。例えば、データは、４ＫＢの大きさのデータブロックに分割される。例示的に、キャッシュアドレスＭに書き込まれる、書き込まれるデータは、４ＫＢの大きさのいくつかのデータブロックに分割される。コントローラＡは、各データブロックのＬＵの識別子と、データブロックのＬＢＡと、データブロックの長さとを記録する。データブロックのＬＵの識別子、データブロックのＬＢＡ、及びデータブロックの長さは、これ以降、データブロック記憶アドレスと呼ばれる。４ＫＢの大きさのいくつかのデータブロック内のデータブロックＸを例として用いて（ここで、データブロックＸは重複排除されることになるデータブロック（ｄａｔａ  ｂｌｏｃｋ  ｔｏ  ｂｅ  ｄｅｄｕｐｌｉｃａｔｅｄ）と呼ばれ、短縮して、重複排除されるデータブロック（ｔｏ−ｂｅ−ｄｅｄｕｐｌｉｃａｔｅｄ  ｄａｔａ  ｂｌｏｃｋ）としても知られる）、コントローラＡは、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してデータブロック固有値要求をキャッシュデバイスＭに送信する。固有値要求は、データブロックＸのアドレスを含む。キャッシュデバイスＭは、データ重複排除を実行するために、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してデータブロックＸの固有値をコントローラＡに送信する。図７に示すように、特定のプロセスは以下を含む：
【００９４】
ステップ７０１：キャッシュデバイスＭがデータブロックＸの固有値を計算する。
【００９５】
コントローラＡが、キャッシュデバイスＭに、データブロックＸの固有値を取得する命令を送信する。命令はデータブロックＸのアドレスを搬送する。キャッシュデバイスＭは、命令を受信し、コントローラＡによって送信されたデータブロックＸの固有値を取得する。この場合、キャッシュデバイスＭは、データブロックＸのアドレスと、キャッシュアドレスＢとの間の対応関係を記憶し、データブロックＸの固有値を得るために、命令内に搬送されているデータブロックＸのアドレスに従ってデータブロックＸを判断し、データブロックＸの固有値を計算し、キャッシュアドレスＸにデータブロックＸの固有値をキャッシュする。
【００９６】
ステップ７０２：データブロックＸの固有値をコントローラＡに送信する。
【００９７】
キャッシュデバイスＭは、データブロックＸの固有値を取得し、データブロックＸの固有値の応答メッセージを、データブロックＸが位置するＬＵのホームコントローラＡに送信する。データブロックＸの固有値の応答メッセージは、データブロックＸの固有値を搬送する。更に、データブロックＸの固有値の応答メッセージは、データブロックＸの固有値をキャッシュするキャッシュデバイスＭの識別子と、キャッシュデバイスＭにおけるデータブロックＸの固有値のキャッシュアドレスＸとを更に搬送する。
【００９８】
ステップ７０３：固有値分布アルゴリズムに従って、データブロックＸの固有値のホームコントローラを判断する。
【００９９】
ステップ７０４：コントローラＡはローカル固有値インデックスセットＡを問い合わせる。
【０１００】
コントローラＡがデータブロックＸの固有値のホームコントローラであるとき、コントローラＡはローカル固有値インデックスセットＡを問い合わせ、固有値インデックスセットＡ内に、データブロックＸの固有値と同じ固有値が存在するか否かを判断する。
【０１０１】
データブロックＸの固有値と同じ固有値が固有値インデックスセットＡ内に存在するとき、ステップ７０５ａ及び７０６ａが実行される。図６に示すように、データブロックＸの固有値は固有値１と同じ、すなわち、データブロックＸはデータブロックＡと同じである。
【０１０２】
ステップ７０５ａ：コントローラＡは、固有値１のインデックスにおける基準カウントを更新する。
【０１０３】
固有値１のインデックスにおける基準カウントは１であり、すなわち、データブロックＡのみがストレージアレイ内に存在する。データブロックＸの固有値は固有値１と同じであることがわかり、したがって、基準カウントが２に更新される。
【０１０４】
ステップ７０６ａ：コントローラＡは、キャッシュデバイスＭに、データブロックＸを削除するように命令する。
【０１０５】
コントローラＡは、キャッシュデバイスＭに、データブロックＸを削除するように命令する。コントローラＡは、データブロックＸのアドレスと、データブロックＸの固有値との間の対応関係を確立するか、又はコントローラＡは、データブロックＸのアドレスと、データブロックＸの固有値と、データブロックＡの記憶アドレスとの間の対応関係を確立する。
【０１０６】
ステップ７０４において、データブロックＸが重複データブロックであると判断される。したがって、データブロックＸはＳＳＤ内に保存される必要がなく、キャッシュデバイスＭはデータブロックＸを削除するように命令される。
【０１０７】
固有値インデックスセットＡ内にデータブロックＸの固有値と同じ固有値が存在しないとき、ステップ７０５ｂ、７０６ｂ、７０７、７０８、７０９及び７１０が実行される。
【０１０８】
ステップ７０５ｂ：キャッシュデバイスＭ内にキャッシュされるデータブロックＸのキャッシュアドレスＢを取得する。
【０１０９】
コントローラＡは、キャッシュデバイスＭにおけるデータブロックＸの固有値のキャッシュアドレスＸに従って、キャッシュデバイスＭからＰＣＩｅスイッチングデバイスＡを介してデータブロックＸのキャッシュアドレスＢを取得する。
【０１１０】
ステップ７０６ｂ：キャッシュデバイスＭの識別子及びキャッシュアドレスＢをターゲットＳＳＤのコントローラに送信する。
【０１１１】
コントローラＡは、キャッシュデバイスＭの識別子とキャッシュアドレスＢを取得し、キャッシュデバイスＭの識別子及びキャッシュアドレスＢを、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してターゲットＳＳＤのコントローラに送信する。
【０１１２】
ステップ７０７：ターゲットＳＳＤのコントローラは、キャッシュアドレスＢからデータブロックＸを読み出す。
【０１１３】
ターゲットＳＳＤのコントローラは、キャッシュデバイスＭの識別子及びキャッシュアドレスＢを受信し、キャッシュデバイスＭの識別子及びキャッシュアドレスＢに従って、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介して、キャッシュアドレスＢからデータブロックＸを直接読み出す。
【０１１４】
ステップ７０８：ターゲットＳＳＤのコントローラは、ターゲットＳＳＤにおけるデータブロックＸの記憶アドレスをコントローラＡに送信する。
【０１１５】
ターゲットＳＳＤのコントローラは、キャッシュアドレスＢからデータブロックＸを読み出し、データブロックＸをターゲットＳＳＤ内に記憶する。ターゲットＳＳＤのコントローラは、ターゲットＳＳＤにおけるデータブロックＸの記憶アドレスを、ＰＣＩｅスイッチングデバイスＡを介してコントローラＡに送信する。ターゲットＳＳＤ内のデータブロックＸの記憶アドレスは、ターゲットＳＳＤのコントローラの識別子と、ターゲットＳＳＤにおけるデータブロックＸを記憶するための論理記憶アドレスとを含む。
【０１１６】
ステップ７０９：コントローラＡは、データブロックＸの固有値インデックスを確立する。
【０１１７】
コントローラＡは、ターゲットＳＳＤにおけるデータブロックＸの記憶アドレスを受信し、データブロックＸの固有値インデックスを確立し、基準カウントを１にセットする。コントローラＡは、データブロックＸのアドレスと、データブロックＸの固有値と、ターゲットＳＳＤにおけるデータブロックＸの記憶アドレスとの間の対応関係を確立する。コントローラＡもデータブロックＸの固有値のキャッシュアドレスＸを記録する必要がある。データブロックＸの固有値がＳＳＤ内に記憶されるとき、コントローラＡは、ターゲットＳＳＤにおけるデータブロックＸの固有値の記憶アドレスも記録する必要がある。
【０１１８】
別の事例では、コントローラＡはデータブロックＸの固有値のホームコントローラではないが、単に、データブロックＸが位置するＬＵのホームコントローラである。本発明のこの実施形態では、コントローラＢがデータブロックＸの固有値のホームコントローラであることが例として用いられ、コントローラＡは、データブロックＸの固有値をＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してコントローラＢに送信する。コントローラＢは、コントローラＡによって送信されるデータブロックＸの固有値を受信し、コントローラＢの固有値インデックスセットＢを問い合わせる。コントローラＢが、固有値インデックスセットＡ内にデータブロックＸの固有値と同じ固有値が存在すること、例えば、データブロックＲの固有値がデータブロックＸの固有値と同じであることを見つけると、コントローラＢは、キャッシュデバイスＭにデータブロックＸを削除するように命令する。これは特に、コントローラＢが、削除命令を、ＰＣＩｅスイッチングデバイスＢを介してコントローラＡに送信することを含む。コントローラＡは、削除命令を、ＰＣＩｅスイッチングデバイスＡを介してキャッシュデバイスＭに送信し、キャッシュデバイスＭはデータブロックＸを削除する。コントローラＢは、データブロックＸの固有値と同じ固有値のインデックスの基準カウントを更新し、すなわち、基準カウントを１だけ増加させる。データブロックＲが既にＳＳＤに記憶されているとき、データブロックＲのインデックスにおけるデータブロックＲの記憶アドレスは、データブロックＲを記憶するＳＳＤのコントローラの識別子、及びデータブロックＲをＳＳＤに記憶するための論理記憶アドレスを含む。データブロックＲがキャッシュデバイス内にあるとき、データブロックＲのインデックスにおけるデータブロックＲの記憶アドレスは、キャッシュデバイスの識別子及びキャッシュアドレスを含む。コントローラＡは、データブロックＸのアドレスと、データブロックＸの固有値と、データブロックＸの固有値のホームコントローラＢのアドレスとの間の対応関係を確立し、したがって、コントローラＡは、各データブロックのアドレスと、データブロックの固有値と、データブロックの記憶アドレスとの間の対応関係を必要とせず、コントローラＡによって記憶されるデータ量が効率的に低減される。代替的に、コントローラＡは、データブロックＸのアドレスと、データブロックＸの固有値と、データブロックＲの記憶アドレスとの間の対応関係を確立する。その後データブロックＸを読み出すとき、コントローラＡは、データブロックＸのアドレスと、データブロックＸの固有値と、データブロックＲの記憶アドレスとの間の対応関係を問い合わせることによって、データブロックＲの記憶アドレスを直接判断することができ、入出力マネージャＡは、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介して、データブロックＲの記憶アドレスからデータブロックＸを直接読み出し、それによってデータ読出し効率を改善する。
【０１１９】
コントローラＡが、単に、データブロックＸが位置するＬＵのホームコントローラであるが、データブロックＸの固有値のホームコントローラではないとき、コントローラＢは、データブロックＸの固有値と同じ固有値が固有値インデックスセットＢ内に存在しないことを見つけ、コントローラＢは、ＰＣＩｅスイッチングデバイスＢを介してコントローラＡに要求を送信することによって、キャッシュデバイスＭにおけるデータブロックＸのキャッシュアドレスＢを取得する。コントローラＡは、ＰＣＩｅスイッチングデバイスＡを介してキャッシュデバイスＭに要求を送信する。キャッシュデバイスＭは、キャッシュデバイスＭの識別子及びキャッシュアドレスＢをコントローラＢに送信する。コントローラＢは、キャッシュデバイスＭの識別子及びキャッシュアドレスＢを、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介して（ここで、ＰＣＩｅスイッチングデバイスＡが例として用いられる）ターゲットＳＳＤのコントローラに送信する。ターゲットＳＳＤのコントローラは、キャッシュデバイスＭの識別子及びキャッシュアドレスＢに従って、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介して、キャッシュアドレスＢからデータブロックＸを直接読み出し、データブロックＸをターゲットＳＳＤに記憶する。ターゲットＳＳＤのコントローラは、ターゲットＳＳＤ内のデータブロックＸの記憶アドレスを、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してコントローラＢに送信する。コントローラＢは、ターゲットＳＳＤ内のデータブロックＸの記憶アドレスを受信し、データブロックＸの固有値インデックスを確立し、インデックス内の基準カウントを１にセットする。コントローラＢも、データブロックＸの固有値のキャッシュアドレスＸを記録する必要がある。データブロックＸの固有値がＳＳＤに記憶されるとき、コントローラＢもデータブロックＸの固有値の記憶アドレスをＳＳＤに記録する必要がある。
【０１２０】
コントローラＢは、ターゲットＳＳＤにおけるデータブロックＸの記憶アドレスを受信し、コントローラＡに通知を送信する。通知は、ターゲットＳＳＤにおけるデータブロックＸの記憶アドレスを搬送する。コントローラＡは、コントローラＢによって送信される通知に従って、データブロックＸのアドレスと、固有値と、ターゲットＳＳＤにおけるデータブロックＸの記憶アドレスとの間の対応関係を確立する。別の実施方式では、コントローラＡが、単に、データブロックＸが位置するＬＵのホームコントローラであるが、データブロックＸの固有値のホームコントローラではないとき、コントローラＡは、データブロックＸのアドレスと、データブロックＸの固有値と、コントローラＢのアドレスとの間の対応関係を確立する。
【０１２１】
本発明のこの実施形態におけるストレージアレイに従って、キャッシュデバイスは、データブロックＸのフィンガープリントの計算を実施する。これは、コントローラの計算リソースを節約する。データブロックＸをターゲットＳＳＤに記憶するプロセスの間、コントローラはキャッシュデバイスＭの識別子及びキャッシュアドレスＢのみを提供し、ターゲットＳＳＤのコントローラはキャッシュアドレスＢからデータブロックＸを直接読み出す。これは、コントローラの計算リソース及びメモリリソースを節約し、ストレージアレイの性能を改善する。
【０１２２】
図２に示すストレージアレイに基づいて、上記のデータ重複排除動作に従ってデータがＳＳＤに書き込まれる。入出力マネージャＡがデータブロックＸのアドレスを搬送するデータ読出し要求、例えばデータブロックＸを読み出すことの要求を受信すると、入出力マネージャＡは、ＰＣＩｅスイッチングデバイスＡを介してデータ読出し要求をコントローラＡに送信する。コントローラＡは、コントローラＡが、データブロックＸが位置するＬＵのホームコントローラであると判断する。一実施方式において、コントローラＡは、読み出されるデータブロックＸのアドレスと、データブロックＸの固有値と、ターゲットＳＳＤにおけるデータブロックＸの記憶アドレスとの間の対応関係を検索して、ターゲットＳＳＤにおけるデータブロックＸの記憶アドレスを判断する。コントローラＡは、ターゲットＳＳＤにおけるデータブロックＸの記憶アドレスを、ＰＣＩｅスイッチングデバイスＡを介して入出力マネージャＡに送信する。入出力マネージャＡは、ターゲットＳＳＤにおける読み出されるデータブロック、すなわちデータブロックＸの記憶アドレスに従って、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介して、ターゲットＳＳＤにおけるデータブロックＸの論理記憶アドレスからデータブロックＸを直接読み出す。別の実施方式では、コントローラＡは、データブロックＸのアドレスと、データブロックＸの固有値と、データブロックＸの固有値のホームコントローラのアドレスとの間の対応関係を検索して、データブロックＸの固有値のホームコントローラＢを判断し、コントローラＢにおけるデータブロックＸの固有値インデックスを問い合わせて、ターゲットＳＳＤにおけるデータブロックＸの記憶アドレスを判断するか；又は、データブロックＸの固有値のホームコントローラＢを判断し、コントローラＢにおけるデータブロックＸの固有値と同じ固有値を有するデータブロックの固有値インデックスを問い合わせて、データブロックＸの固有値と同じ固有値を有するデータブロックの記憶アドレスを判断し、次に、データブロックＸの固有値と同じ固有値を有するデータブロックの記憶アドレスからデータを読み出す。コントローラＡが、データブロックＸが位置するＬＵのホームコントローラ、及びデータブロックＸの固有値のホームコントローラの双方であるとき、別の実施方式では、コントローラＡは、読み出されるデータブロックＸのアドレスと、データブロックＸの固有値との間の対応関係を検索し、データブロックＸの固有値に従って、コントローラＡによって維持される固有値インデックスセットＡを問い合わせて、読み出されるデータブロックＸの記憶アドレスを判断し、次に、読み出されるデータブロックＸの記憶アドレスを入出力マネージャＡに送信する。入出力マネージャＡは、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してデータブロックＸの記憶アドレスからデータブロックを読み出す。
【０１２３】
図２に示すストレージアレイに書き込まれるデータが複数のキャッシュデバイスにキャッシュされる場合において、データ重複排除動作が実行されているとき、データ重複排除は、キャッシュデバイスのうちの１つにおけるデータに対してのみ実行される。特に、データ重複排除は、一次キャッシュデバイスにおけるデータに対して実行することができるか、又はデータをキャッシュする複数のキャッシュデバイスの負荷に従って、データ重複排除動作を実行するためにキャッシュデバイスのうちの１つが選択されるが、これは本発明のこの実施形態によって制限されるものではない。
【０１２４】
本発明のこの実施形態において、別の実施事例では、入出力マネージャとコントローラとの間に必ずしもホーミングの概念が存在しない。すなわち、コントローラＡは入出力マネージャＡのホームコントローラではない。各入出力マネージャは、ＬＵと、ＬＵがホーミングされるコントローラとの間の対応関係を保存する。入出力マネージャは、データオペレーション要求において搬送されるターゲットＬＵの識別子に従って、ターゲットＬＵの識別子とホームコントローラとの間の対応関係を問い合わせて、ターゲットＬＵのホームコントローラを判断し、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してターゲットＬＵのホームコントローラに要求を直接送信する。更に、任意のＰＣＩｅスイッチングデバイスを介して、コントローラ間で、又はコントローラとＳＳＤとの間で、又は入出力マネージャとコントローラとの間で、又は入出力マネージャとＳＳＤとの間で、又はキャッシュデバイスとコントローラとの間で、又はキャッシュデバイスとＳＳＤとの間で通信が行われてもよい。本発明のこの実施形態において、ターゲットハードディスクにおける記憶アドレスにデータブロックＸを記憶するための論理記憶アドレスは、ターゲットハードディスクにデータブロックＸを記憶するための論理ブロックアドレスを指し、特に、本発明のこの実施形態では、ターゲットＳＳＤにデータブロックＸを記憶するための論理ブロックアドレスを指す。
【０１２５】
本発明のこの実施形態において、図２は、２つのコントローラ、２つのスイッチングデバイス、２つの入出力マネージャ及び１つのキャッシュデバイスのみを示す。しかしながら、特定の実施態様において、コントローラ、スイッチングデバイス、入出力マネージャ及びキャッシュデバイスの量は、必要に応じて設定されて、柔軟に拡張されてもよい。任意の入出力マネージャが任意のスイッチングデバイスを介して任意のコントローラに接続されるか、又は任意の入出力マネージャが任意のスイッチングデバイスを介して任意のハードディスクに接続されるか、又は任意の入出力マネージャが任意のスイッチングデバイスを介して任意のキャッシュデバイスに接続される。任意のコントローラが任意のスイッチングデバイスを介して任意のコントローラに接続されるか、又は任意のコントローラが任意のスイッチングデバイスを介して任意のハードディスクに接続されるか、又は任意のコントローラが任意のスイッチングデバイスを介して任意のキャッシュデバイスに接続される。任意のキャッシュデバイスがスイッチングデバイスを介して任意のハードディスクに接続される。任意のスイッチングデバイスを介して接続された任意の２つのデバイス間で双方向通信が実施される。任意の２つのスイッチングデバイスが直接接続される。本発明のこの実施形態において提供されるストレージアレイアーキテクチャにおいて、論理的に、コントローラは併せてコントローラプレーンと呼ばれ、スイッチングデバイスは併せてスイッチングプレーンと呼ばれ、ハードディスクは併せてストレージプレーンと呼ばれ、入出力マネージャは併せて入出力管理プレーンと呼ばれ、キャッシュデバイスは併せてキャッシュプレーンと呼ばれる。本発明のこの実施形態において提供されるアーキテクチャにおいて、データ読出し及び書込み制御は、データ読出し及び書込みと分離される。コントローラはデータ読出し及び書込み制御を実施するが、データ読出し及び書込み（又は換言すれば、読出し及び書込みデータ）はコントローラを通過しない。これは、コントローラのＣＰＵ計算リソース及びコントローラのメモリリソースを節約し、データ書込み効率を改善し、ストレージアレイのデータ処理効率を改善する。本発明のこの実施形態におけるストレージアレイアーキテクチャは、コントローラ及びハードディスク等のデバイスの拡張を実施することができ、コントローラ、スイッチングデバイス、ハードディスク等はストレージアレイの性能要件に従って柔軟に追加されてもよい。
【０１２６】
当然ながら、本発明のこの実施形態における技術的解決策は、ストレージアレイが１つの入出力マネージャ、１つのコントローラ、１つのスイッチングデバイス、１つのキャッシュデバイス及びいくつかのハードディスクを含むシナリオにも適用可能である。このシナリオにおいてストレージアレイにデータを書き込む方式については、上記の実施形態における説明を参照されたい。データ重複排除がストレージアレイにおいて実行されるシナリオについては、上記の実施形態における説明を参照されたい。ストレージアレイにおいて実行されるデータ読出し動作については、上記の実施形態における説明を参照されたい。当然ながら、ストレージアレイは２つのコントローラ及び１つのスイッチングデバイスを含んでもよく、２つのコントローラはスイッチングデバイスに接続される。そのようなシナリオにおけるデータ書込み動作、データ重複排除動作、及びデータ読出し動作については、上記の実施形態における説明を参照し、ここでは詳細を繰り返し説明することはしない。本発明のこの実施形態において、デバイスＡは、キャッシュアドレスＡからデータを読み出し（又は換言すれば、キャッシュアドレスＡから直接データを読み出し）、デバイスＢの識別子及びキャッシュアドレスＡに従って、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してデータをキャッシュアドレスＡに書き込む（又は換言すれば、データをキャッシュアドレスＡに直接書き込む）。そのような実施方式は、ダイレクトメモリアクセス（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ，ＤＭＡ）技術によって実施されてもよく、デバイスＡ及びデバイスＢは、特に本発明のこの実施形態におけるＤＭＡアクセスを実行するデバイスを表す。
【０１２７】
コントローラは、デバイスＢのキャッシュアドレスを取得し、デバイスＢの識別子及びデバイスＢのキャッシュアドレスをＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してデバイスＣに送信する。コントローラは、デバイスＢと通信して、ＰＣＩｅスイッチングデバイスＡ又はＰＣＩｅスイッチングデバイスＢを介してキャッシュアドレスを取得し、デバイスＢの識別子を既に学習しているので、キャッシュアドレスが取得され、デバイスＢの識別子及びデバイスＢのキャッシュアドレスがデバイスＣに送信されてもよい。当然ながら、コントローラはデバイスＢの識別子及びキャッシュアドレスも取得してもよい。デバイスＢの識別子は、デバイスＢのアドレス、又はデバイスを一意に識別する別の識別子であってもよい。
【０１２８】
当業者は、本明細書において開示される実施形態を参照して記載される例示的なユニット及びアルゴリズムステップは、電子ハードウェアによって、又はコンピュータソフトウェア及び電子ハードウェアの組み合わせによって実施されてもよいことを認識することができる。機能がハードウェアによって実行されるか又はソフトウェアによって実行されるかは、技術的解決策の特定の応用形態及び設計制約条件に依拠する。当業者は、異なる方法を用いて、特定の用途毎に記載された機能を実施することができるが、実施が本発明の範囲を超えているとみなされるべきでない。
【０１２９】
便宜上及び簡単な説明のために、上記のシステム、装置及びユニットの詳細な動作プロセスについては、上記の方法の実施形態における対応するプロセスを参照し、ここでは詳細を繰り返し説明することはしないことが、当業者によって明確に理解されることができる。
【０１３０】
本出願において提供されるいくつかの実施形態において、開示されるシステム及び方法は他の方式で実施されてもよいことが理解されるべきである。例えば、記載された装置の実施形態は例示にすぎない。例えば、ユニット分割は単に論理機能分割であり、実際の実施態様では他の分割であってもよい。例えば、複数のユニット又はコンポーネントが組み合わされるか若しくは別のシステムに統合されてもよく、又はいくつかの特徴が無視されるか若しくは実行されなくてもよい。更に、表示又は検討される相互結合又は直接結合又は通信接続は、いくつかのインターフェースを通じて実施されてもよい。装置又はユニット間の間接結合又は通信接続は、電子的に、機械的に、又は他の形態で実施されてもよい。
【０１３１】
別個の部分として記載されるユニットは、物理的に別個であっても別個でなくてもよく、ユニットとして表示される部分は物理的ユニットであっても物理的ユニットでなくてもよく、１つの位置に位置してもよく、又は複数のネットワークユニット上に分散されてもよい。ユニットのうちのいくつか又は全ては、実施形態の解決策の目的を達成する実際の必要性に従って選択されてもよい。
【０１３２】
更に、本発明の実施形態における機能ユニットは、１つの処理ユニットに統合されてもよく、又はユニットの各々が物理的に単独で存在してもよく、又は２つ以上のユニットが１つのユニットに統合される。
【０１３３】
機能がソフトウェア機能ユニットの形態で実施され、独立した製品として販売されるか又は用いられるとき、機能はコンピュータ可読不揮発性ストレージ媒体に記憶されてもよい。そのような理解に基づいて、本発明の技術的解決策を本質的に、又は従来技術に寄与する部分を、又は技術的解決策のうちのいくつかを、ソフトウェア製品の形態で実施してもよい。ソフトウェア製品は、不揮発性ストレージ媒体に記憶され、コンピュータデバイス（パーソナルコンピュータ、サーバ、又はネットワークデバイスであってもよい）に、本発明の実施形態に記載の方法のステップのうちの全て又はいくつかを実行するように命令するための複数の命令を含む。上記の不揮発性ストレージ媒体は：ＵＳＢフラッシュドライブ、リムーバブルハードディスク、リードオンリメモリ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ，ＲＯＭ）、磁気ディスク又は光ディスク等の、プログラムコードを記憶することができる任意の媒体を含む。
【図１】
2018032444.tif 000003
【図２】
2018032444.tif 000004
【図３】
2018032444.tif 000005
【図４】
2018032444.tif 000006
【図５】
2018032444.tif 000007
【図６】
2018032444.tif 000008
【図７】
2018032444.tif 000009
【手続補正書】
【提出日】平成29年11月30日(2017.11.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理方法であって、前記方法はストレージアレイに適用され、前記ストレージアレイは、入出力マネージャと、スイッチングデバイスと、第１のコントローラと、キャッシュデバイスとを備え、前記入出力マネージャは前記スイッチングデバイスに接続され、前記第１のコントローラは前記スイッチングデバイスに接続され、前記キャッシュデバイスは前記スイッチングデバイスに接続され、前記スイッチングデバイスは前記ストレージアレイ内のハードディスクに接続され、前記方法は、
前記キャッシュデバイスによって、前記スイッチングデバイスを介して前記入出力マネージャから入来データブロックを受信し、キャッシュアドレスにおいて前記入来データブロックをキャッシュするステップと、
前記キャッシュデバイスによって、前記入来データブロックの固有値を計算するステップと、
前記キャッシュデバイスによって、前記入来データブロックの前記固有値を、前記スイッチングデバイスを介して前記第１のコントローラに送信するステップと、
前記第１のコントローラによって、前記キャッシュデバイスから、前記入来データブロックの前記固有値を受信し、前記入来データブロックの前記固有値を求めてデータブロックの固有値インデックスセットを検索するステップと、
前記入来データブロックの前記固有値が前記データブロックの固有値インデックスセット内に見つかると、前記第１のコントローラによって、前記入来データブロックのアドレスと、前記データブロックの固有値インデックスセット内の前記データブロックの前記固有値との間の対応関係を確立するステップと、
前記第１のコントローラによって、前記キャッシュデバイスに、前記入来データブロックを削除するように命令するステップと、
を含む、データ処理方法。
【請求項２】
前記ストレージアレイは第２のコントローラを更に備え、前記第２のコントローラは前記スイッチングデバイスに接続され、前記第２のコントローラは、前記入来データブロックの前記アドレスを記憶し、前記第２のコントローラは、前記入来データブロックが位置するターゲット論理ユニットのホームコントローラであり、前記第１のコントローラによって、前記キャッシュデバイスから、前記入来データブロックの前記固有値を受信するステップは、
前記キャッシュデバイスによって、前記入来データブロックの前記固有値を、前記スイッチングデバイスを介して前記第２のコントローラに送信するステップと、
前記第２のコントローラによって、前記入来データブロックの前記固有値のホームコントローラが前記第１のコントローラであると判断するステップと、
前記第２のコントローラによって、前記入来データブロックの前記固有値を、前記スイッチングデバイスを介して前記第１のコントローラに送信するステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記方法は、前記第２のコントローラによって、前記入来データブロックの前記アドレスと、前記データブロックの固有値インデックスセット内の前記入来データブロックの前記固有値との間の対応関係を確立するステップを更に含む、請求項２に記載の方法。
【請求項４】
ストレージアレイであって、前記ストレージアレイは、入出力マネージャと、スイッチングデバイスと、第１のコントローラと、キャッシュデバイスとを備え、前記入出力マネージャは前記スイッチングデバイスに接続され、前記第１のコントローラは前記スイッチングデバイスに接続され、前記キャッシュデバイスは前記スイッチングデバイスに接続され、前記スイッチングデバイスは前記ストレージアレイ内のハードディスクに接続され、
前記キャッシュデバイスは、前記スイッチングデバイスを介して前記入出力マネージャから入来データブロックを受信し、キャッシュアドレスにおいて前記入来データブロックをキャッシュし、前記入来データブロックの固有値を計算し、前記入来データブロックの前記固有値を、前記スイッチングデバイスを介して前記第１のコントローラに送信するように構成され、
前記第１のコントローラは、前記キャッシュデバイスから、前記入来データブロックの前記固有値を受信し、前記入来データブロックの前記固有値を求めてデータブロックの固有値インデックスセットを検索するように構成され、
前記入来データブロックの前記固有値が前記データブロックの固有値インデックスセット内に見つかると、前記第１のコントローラは、前記入来データブロックのアドレスと、前記データブロックの固有値インデックスセット内の前記データブロックの前記固有値との間の対応関係を確立し、前記キャッシュデバイスに、前記入来データブロックを削除するように命令するように更に構成される、ストレージアレイ。
【請求項５】
前記ストレージアレイは第２のコントローラを更に備え、前記第２のコントローラは前記スイッチングデバイスに接続され、前記第２のコントローラは、前記入来データブロックの前記アドレスを記憶し、前記第２のコントローラは、前記入来データブロックが位置するターゲット論理ユニットのホームコントローラであり、前記第１のコントローラが、前記キャッシュデバイスから、前記入来データブロックの前記固有値を受信することは、
前記キャッシュデバイスによって、前記入来データブロックの前記固有値を、前記スイッチングデバイスを介して前記第２のコントローラに送信することと、
前記第２のコントローラによって、前記入来データブロックの前記固有値のホームコントローラが前記第１のコントローラであると判断することと、
前記第２のコントローラによって、前記入来データブロックの前記固有値を、前記スイッチングデバイスを介して前記第１のコントローラに送信することと、
を含む、請求項４に記載のストレージアレイ。
【請求項６】
前記第２のコントローラは、前記入来データブロックの前記アドレスと、前記データブロックの固有値インデックスセット内の前記入来データブロックの前記固有値との間の対応関係を確立するように更に構成される、請求項５に記載のストレージアレイ。
【外国語明細書】
2018032444000001.pdf