IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 華為技術有限公司の特許一覧

特表2024-541654記憶システム、データ処理方法、および装置
<>
  • 特表-記憶システム、データ処理方法、および装置 図1
  • 特表-記憶システム、データ処理方法、および装置 図2
  • 特表-記憶システム、データ処理方法、および装置 図3-1
  • 特表-記憶システム、データ処理方法、および装置 図3-2
  • 特表-記憶システム、データ処理方法、および装置 図3-3
  • 特表-記憶システム、データ処理方法、および装置 図4
  • 特表-記憶システム、データ処理方法、および装置 図5
  • 特表-記憶システム、データ処理方法、および装置 図6
  • 特表-記憶システム、データ処理方法、および装置 図7
  • 特表-記憶システム、データ処理方法、および装置 図8
  • 特表-記憶システム、データ処理方法、および装置 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-08
(54)【発明の名称】記憶システム、データ処理方法、および装置
(51)【国際特許分類】
   G06F 3/06 20060101AFI20241031BHJP
   G06F 11/16 20060101ALI20241031BHJP
   G06F 12/0868 20160101ALI20241031BHJP
【FI】
G06F3/06 302A
G06F3/06 304E
G06F11/16 612
G06F11/16 625
G06F12/0868
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024532931
(86)(22)【出願日】2022-11-05
(85)【翻訳文提出日】2024-07-12
(86)【国際出願番号】 CN2022130150
(87)【国際公開番号】W WO2023098405
(87)【国際公開日】2023-06-08
(31)【優先権主張番号】202111458796.1
(32)【優先日】2021-12-02
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】202210176916.7
(32)【優先日】2022-02-24
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133569
【弁理士】
【氏名又は名称】野村 進
(72)【発明者】
【氏名】▲フェン▼ ▲鋭▼
【テーマコード(参考)】
5B034
5B205
【Fターム(参考)】
5B034AA01
5B034CC04
5B205KK14
5B205MM03
(57)【要約】
コントローラノード間で冗長データの伝送を実行することなく、データサービスの効率および信頼性を向上させるために、記憶システム、データ処理方法、および装置が開示される。記憶システムは、第1のコントローラおよび第2のコントローラを含み、2つのコントローラは、同じインターフェースカードを共有することによってメモリと通信する。共有インターフェースカードは、第1のコントローラからのデータを共有インターフェースカードのキャッシュに記憶し、共有インターフェースカードのキャッシュ内のデータをメモリに非同期的に保持する。第1のコントローラに障害が発生した後、共有インターフェースデバイスによって記憶された、第1のコントローラからのデータは、インターフェースデバイスによってインターフェースデバイスのキャッシュ(またはメモリ)から読み出され、第2のコントローラに提供され得る。
【特許請求の範囲】
【請求項1】
記憶システムであって、前記記憶システムは、第1のコントローラおよび第2のコントローラを備え、前記第1のコントローラおよび前記第2のコントローラは、キャッシュが配置された共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信し、
前記第1のコントローラは、第1のデータを書き込むように命令する書込み命令を前記共有インターフェースデバイスに送信するように構成され、
前記共有インターフェースデバイスは、前記第1のデータを前記キャッシュに一時的に記憶するように構成され、前記キャッシュに一時的に記憶された前記第1のデータを前記少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むようにさらに構成され、
前記第2のコントローラは、前記第1のコントローラに障害が発生した後に読出し命令を前記共有インターフェースデバイスに送信し、前記読出し命令は、第2のデータを問い合わせるように命令し、前記第2のデータは前記第1のデータの全部または一部である、ように構成され、
前記共有インターフェースデバイスは、前記読出し命令に従って、前記キャッシュから前記第2のデータの全部または一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供するようにさらに構成される、記憶システム。
【請求項2】
前記第2のコントローラは、第3のデータを書き込むように命令する書込み命令を前記共有インターフェースデバイスに送信するようにさらに構成され、
前記共有インターフェースデバイスは、前記第3のデータを前記キャッシュに一時的に記憶するようにさらに構成され、前記キャッシュに一時的に記憶された前記第3のデータを前記第1のメモリに非同期的に書き込むようにさらに構成される、
請求項1に記載の記憶システム。
【請求項3】
前記キャッシュは、第1のパーティションおよび第2のパーティションを備え、前記第1のパーティションは、前記第1のコントローラのためのデータを一時的に記憶するために使用され、前記第2のパーティションは、前記第2のコントローラのためのデータを一時的に記憶するために使用され、前記共有インターフェースデバイスが前記キャッシュ内の前記第2のデータの前記全部または前記一部を取得する問合せ範囲は、前記第1のパーティションおよび前記第2のパーティションを含む、請求項2に記載の記憶システム。
【請求項4】
前記共有インターフェースデバイスは、具体的には、
前記第1のパーティションに前記第1のデータを一時的に記憶し、前記第2のパーティションに前記第3のデータを一時的に記憶し、
前記第1のパーティションに一時的に記憶された前記第1のデータと、前記第2のパーティションに一時的に記憶された前記第3のデータとを前記第1のメモリに連続して送信する
ように構成される、請求項3に記載の記憶システム。
【請求項5】
前記少なくとも1つのメモリは第2のメモリをさらに備え、前記第2のメモリのメモリアクセスレイテンシは、前記第1のメモリのメモリアクセスレイテンシより短く、前記共有インターフェースデバイスは、
前記書込み命令を受信した後に前記第1のデータを前記第2のメモリに同期してバックアップし、
前記キャッシュが異常であるときに、前記読出し命令に従って、前記第2のメモリから前記第2のデータの前記全部または前記一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供する
ようにさらに構成される、請求項1から4のいずれか一項に記載の記憶システム。
【請求項6】
前記記憶システムは、前記第1のコントローラに接続された第3のメモリをさらに備え、前記第1のコントローラは、
前記第1のデータを前記第3のメモリにバックアップし、
前記キャッシュが異常であるときに、前記共有インターフェースデバイスを介して、前記第3のメモリにバックアップされたデータを前記少なくとも1つのメモリ内の第4のメモリに転送する
ようにさらに構成され、
前記共有インターフェースデバイスは、
前記キャッシュが異常であるときに、前記読出し命令に従って、前記第4のメモリから前記第2のデータの前記全部または前記一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供する
ようにさらに構成される、請求項1から5のいずれか一項に記載の記憶システム。
【請求項7】
前記データは、サービスデータおよび/または前記サービスデータのメタデータを含み、前記サービスデータは、前記第1のコントローラによって受信されるデータ書込み要求によって要求されたように書き込まれるべきデータである、請求項1から6のいずれか一項に記載の記憶システム。
【請求項8】
前記共有インターフェースデバイスは、インターフェースカードまたはディスクエンクロージャであり、前記インターフェースカードは、前記第1のコントローラまたは前記第2のコントローラに挿入され、前記ディスクエンクロージャは、前記少なくとも1つのメモリを組み込むように構成される、請求項1から7のいずれか一項に記載の記憶システム。
【請求項9】
前記共有インターフェースデバイスは、周辺構成要素相互接続エクスプレスPCIeプロトコルを使用して前記第1のコントローラおよび/または前記第2のコントローラと通信する、請求項1から8のいずれか一項に記載の記憶システム。
【請求項10】
前記少なくとも1つのメモリの各々は、前記共有インターフェースデバイスと通信するための単一のポートのみを有する、請求項1から9のいずれか一項に記載の記憶システム。
【請求項11】
記憶システムであって、前記記憶システムは、第1のコントローラおよび第2のコントローラを備え、前記第1のコントローラおよび前記第2のコントローラは、キャッシュが配置された共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信し、
前記第1のコントローラは、第1のデータを書き込むように命令する書込み命令を前記共有インターフェースデバイスに送信するように構成され、
前記第2のコントローラは、第3のデータを書き込むように命令する書込み命令を前記共有インターフェースデバイスに送信するように構成され、
前記共有インターフェースデバイスは、前記第1のデータおよび前記第3のデータを前記キャッシュに一時的に記憶するようにさらに構成され、前記キャッシュに一時的に記憶された前記第1のデータおよび前記第3のデータを前記少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むようにさらに構成される、記憶システム。
【請求項12】
データ処理方法であって、記憶システムが、第1のコントローラおよび第2のコントローラを備え、前記第1のコントローラおよび前記第2のコントローラは、キャッシュが配置された共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信し、前記方法は、
前記第1のコントローラによって、第1のデータを書き込むように命令する書込み命令を前記共有インターフェースデバイスに送信するステップと、
前記共有インターフェースデバイスによって、前記第1のデータを前記キャッシュに一時的に記憶するステップ、および前記キャッシュに一時的に記憶された前記第1のデータを前記少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むステップと、
前記第2のコントローラによって、前記第1のコントローラに障害が発生した後に読出し命令を前記共有インターフェースデバイスに送信するステップであって、前記読出し命令は、第2のデータを問い合わせるように命令し、前記第2のデータは前記第1のデータの全部または一部である、ステップと、
前記共有インターフェースデバイスによって、前記読出し命令に従って、前記キャッシュから前記第2のデータの全部または一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供するステップと
を含む、データ処理方法。
【請求項13】
前記方法は、
前記第2のコントローラによって、第3のデータを書き込むように命令する書込み命令を前記共有インターフェースデバイスに送信するステップと、
前記共有インターフェースデバイスによって、前記第3のデータを前記キャッシュに一時的に記憶するステップ、および前記キャッシュに一時的に記憶された前記第3のデータを前記第1のメモリに非同期的に書き込むステップと
をさらに含む、請求項12に記載の方法。
【請求項14】
前記キャッシュは、第1のパーティションおよび第2のパーティションを備え、前記第1のパーティションは、前記第1のコントローラのためのデータを一時的に記憶するために使用され、前記第2のパーティションは、前記第2のコントローラのためのデータを一時的に記憶するために使用され、前記共有インターフェースデバイスが前記キャッシュ内の前記第2のデータの前記全部または前記一部を取得する問合せ範囲は、前記第1のパーティションおよび前記第2のパーティションを含む、請求項13に記載の方法。
【請求項15】
前記共有インターフェースデバイスによって、前記第1のデータおよび前記第3のデータを前記キャッシュに一時的に記憶する前記ステップは、
前記共有インターフェースデバイスによって、前記第1のパーティションに前記第1のデータを一時的に記憶し、前記第2のパーティションに前記第3のデータを一時的に記憶するステップ
を含み、
前記共有インターフェースデバイスによって、前記キャッシュに一時的に記憶された前記第1のデータおよび前記第3のデータを前記第1のメモリに非同期的に書き込む前記ステップは、
前記共有インターフェースデバイスによって、前記第1のパーティションに一時的に記憶された前記第1のデータおよび前記第2のパーティションに一時的に記憶された前記第3のデータを前記第1のメモリに連続して送信するステップ
を含む、請求項14に記載の方法。
【請求項16】
前記少なくとも1つのメモリは第2のメモリをさらに備え、前記第2のメモリのメモリアクセスレイテンシは、前記第1のメモリのメモリアクセスレイテンシより短く、前記方法は、
前記共有インターフェースデバイスによって、前記書込み命令を受信した後に前記第1のデータを前記第2のメモリに同期してバックアップするステップと、
前記共有インターフェースデバイスによって、前記キャッシュが異常であるときに、前記読出し命令に従って前記第2のメモリから前記第2のデータの前記全部または前記一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供するステップと
をさらに含む、請求項12から15のいずれか一項に記載の方法。
【請求項17】
前記記憶システムは、前記第1のコントローラに接続された第3のメモリをさらに備え、前記方法は、
前記第1のコントローラによって、前記第1のデータを前記第3のメモリにバックアップするステップと、
前記第1のコントローラによって、前記キャッシュが異常であるときに、前記共有インターフェースデバイスを介して、前記第3のメモリにバックアップされたデータを前記少なくとも1つのメモリ内の第4のメモリに転送するステップと、
前記共有インターフェースデバイスによって、前記共有インターフェースデバイスが前記読出し命令を受信した後で、前記キャッシュが異常であるときに、前記読出し命令に従って前記第4のメモリから前記第2のデータの前記全部または前記一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供するステップと
をさらに含む、請求項12から16のいずれか一項に記載の方法。
【請求項18】
前記データは、サービスデータおよび/または前記サービスデータのメタデータを含み、前記サービスデータは、前記第1のコントローラによって受信されるデータ書込み要求によって要求されたように書き込まれるべきデータである、請求項12から17のいずれか一項に記載の方法。
【請求項19】
前記共有インターフェースデバイスは、インターフェースカードまたはディスクエンクロージャであり、前記インターフェースカードは、前記第1のコントローラまたは前記第2のコントローラに挿入され、前記ディスクエンクロージャは、前記少なくとも1つのメモリを組み込むように構成される、請求項12から18のいずれか一項に記載の方法。
【請求項20】
前記共有インターフェースデバイスは、周辺構成要素相互接続エクスプレスPCIeプロトコルを使用して前記第1のコントローラおよび/または前記第2のコントローラと通信する、請求項12から19のいずれか一項に記載の方法。
【請求項21】
前記少なくとも1つのメモリの各々は、前記共有インターフェースデバイスと通信するための単一のポートのみを有する、請求項12から20のいずれか一項に記載の方法。
【請求項22】
データ処理方法であって、記憶システムが、第1のコントローラおよび第2のコントローラを備え、前記第1のコントローラおよび前記第2のコントローラは、キャッシュが配置された共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信し、前記方法は、
前記第1のコントローラによって、第1のデータを書き込むように命令する書込み命令を前記共有インターフェースデバイスに送信するステップと、
前記第2のコントローラによって、第3のデータを書き込むように命令する書込み命令を前記共有インターフェースデバイスに送信するステップと、
前記共有インターフェースデバイスによって、前記第1のデータおよび前記第3のデータを前記キャッシュに一時的に記憶し、前記キャッシュに一時的に記憶された前記第1のデータおよび前記第3のデータを前記少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むステップと
を含む、データ処理方法。
【請求項23】
データ処理方法であって、記憶システムが、第1のコントローラおよび第2のコントローラを備え、前記第1のコントローラおよび前記第2のコントローラは、キャッシュが配置された共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信し、前記方法は、
前記共有インターフェースデバイスによって、前記第1のコントローラによって送信された、第1のデータを書き込むように命令する書込み命令を受信するステップと、
前記共有インターフェースデバイスによって、前記第1のデータを前記キャッシュに一時的に記憶するステップ、および前記キャッシュに一時的に記憶された前記第1のデータを前記少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むステップと、
前記共有インターフェースデバイスによって、前記第1のコントローラに障害が発生した後に前記第2のコントローラによって送信された読出し命令を受信するステップであって、前記読出し命令は、第2のデータを問い合わせるように命令し、前記第2のデータは前記第1のデータの全部または一部である、ステップと、
前記共有インターフェースデバイスによって、前記読出し命令に従って、前記キャッシュから前記第2のデータの全部または一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供するステップと
を含む、データ処理方法。
【請求項24】
受信モジュールと、記憶モジュールと、問合せモジュールとを備える共有インターフェースデバイスであって、
前記受信モジュールは、第1のコントローラによって送信された、第1のデータを書き込むように命令する書込み命令を受信するように構成され、前記第1のコントローラおよび第2のコントローラは、前記共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信し、
前記記憶モジュールは、前記記憶モジュールのキャッシュに前記第1のデータを一時的に記憶し、前記キャッシュに一時的に記憶された前記第1のデータを前記少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むように構成され、
前記受信モジュールは、前記第1のコントローラに障害が発生した後に前記第2のコントローラによって送信された読出し命令を受信し、前記読出し命令は、第2のデータを問い合わせるように命令し、前記第2のデータは前記第1のデータの全部または一部である、ようにさらに構成され、
前記問合せモジュールは、前記読出し命令に従って、前記キャッシュから前記第2のデータの全部または一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供するように構成される、共有インターフェースデバイス。
【請求項25】
データ処理方法であって、記憶システムが、第1のコントローラおよび第2のコントローラを備え、前記第1のコントローラおよび前記第2のコントローラは、キャッシュが配置された共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信し、前記方法は、
前記共有インターフェースデバイスによって、前記第1のコントローラによって送信された、第1のデータを書き込むように命令する書込み命令と、前記第2のコントローラによって送信された、第3のデータを書き込むように命令する書込み命令とを受信するステップと、
前記共有インターフェースデバイスによって、前記第1のデータおよび前記第3のデータを前記キャッシュに一時的に記憶し、前記キャッシュに一時的に記憶された前記第1のデータおよび前記第3のデータを前記少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むステップと
を含む、データ処理方法。
【請求項26】
受信モジュールと、記憶モジュールと、問合せモジュールとを備える共有インターフェースデバイスであって、
前記受信モジュールは、第1のコントローラによって送信された、第1のデータを書き込むように命令する書込み命令と、第2のコントローラによって送信された、第3のデータを書き込むように命令する書込み命令とを受信し、前記第1のコントローラおよび前記第2のコントローラは、前記共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信し、
前記記憶モジュールは、前記第1のデータおよび前記第3のデータを前記記憶モジュールのキャッシュに一時的に記憶し、前記キャッシュに一時的に記憶された前記第1のデータおよび前記第3のデータを前記少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むように構成される、共有インターフェースデバイス。
【請求項27】
コンピューティングデバイスであって、第1のコントローラおよび第2のコントローラが、前記コンピューティングデバイスを介して少なくとも1つのメモリと別々に通信し、前記コンピューティングデバイスはメモリおよびプロセッサを備え、前記メモリはキャッシュを備え、前記プロセッサは、前記コンピューティングデバイスが請求項23または25に記載の方法を実行することを可能にするために、前記メモリに記憶されたコンピュータ命令を実行する、コンピューティングデバイス。
【請求項28】
前記コンピューティングデバイスは、インターフェースカードまたはディスクエンクロージャであり、前記インターフェースカードは、前記第1のコントローラまたは前記第2のコントローラに挿入され、前記ディスクエンクロージャは、前記少なくとも1つのメモリを組み込むように構成される、請求項27に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、コンピュータ技術の分野に関し、特に、記憶システム、データ処理方法、および装置に関する。
【背景技術】
【0002】
ユーザに信頼性の高いデータサービスを提供するために、デュアルコントローラ記憶システムが広く使用されている。デュアルコントローラ記憶システムは、少なくとも1つのデュアルコントローラユニットを含み、各デュアルコントローラユニットは、記憶リソースを共有する少なくとも2つのコントローラを含む。図1は、デュアルコントローラ記憶システムの例を示す。図1に示されているように、デュアルコントローラユニットは、第1のコントローラおよび第2のコントローラを含み得、第1のコントローラおよび第2のコントローラは、少なくとも1つのメモリを共有する。第1のコントローラは、アプリケーションサーバによって送信された書込み要求に基づいて共有メモリにデータを書き込み得る。第1のコントローラに障害が発生したら、第2のコントローラは、第1のコントローラによって書き込まれたデータの可用性を保証するために、共有メモリに、第1のコントローラによって書き込まれたデータを問い合わせ得る。
【0003】
キャッシュのメモリアクセスレイテンシは通常、外部メモリのメモリアクセスレイテンシよりはるかに短いため、コントローラは通常、共有メモリにデータを非同期的に記憶するためにコントローラのキャッシュを使用する。図1に示されているデュアルコントローラユニットでは、第1のコントローラに障害が発生した後に第1のコントローラのキャッシュ内のデータの可用性を保証するために、ローカルキャッシュ内の第1のコントローラによって更新されたデータは、リアルタイムで第2のコントローラのキャッシュに同期される必要がある。このようにして、第2のコントローラは、第2のコントローラのキャッシュ内および共有メモリ内にデータを見つけ、問合せ結果をアプリケーションサーバに返すことができる。同期プロセスでは、記憶システム内のコントローラノード間で冗長データの伝送が実行される必要があり、記憶システムの伝送リソースおよび記憶リソースの浪費をもたらす。
【発明の概要】
【課題を解決するための手段】
【0004】
本出願は、コントローラノード間で冗長データの伝送を実行することなく、データサービスの効率および信頼性を向上させるために、記憶システム、データ処理方法、および装置を提供する。
【0005】
第1の態様によれば、本出願は記憶システムを提供する。記憶システムは、第1のコントローラおよび第2のコントローラを含み、第1のコントローラと第2のコントローラとは、キャッシュが配置された共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信する。第1のコントローラは、書込み命令を共有インターフェースデバイスに送信するように構成される。共有インターフェースデバイスは、書込み命令によって命令されたように書き込まれるべき第1のデータをキャッシュに一時的に記憶するように構成され、キャッシュに一時的に記憶された第1のデータを少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むようにさらに構成される。第1のメモリは、1つ以上のメモリを含んでもよい。
【0006】
第1のデータは、書込み命令によって命令されたように書き込まれるべきデータの全部または一部であってもよい。第1のデータが書込み命令によって命令されたように書き込まれるべきデータの一部であるとき、共有インターフェースデバイスによって、書込み命令によって命令されたように書き込まれるべき他のデータ(第1のデータを除く)を記憶する方法は、本出願では限定されない。任意選択で、共有インターフェースデバイスは、書込み命令によって命令されたように書き込まれるべき他のデータを、少なくとも1つのメモリ内の第1のメモリまたは(第1のメモリ以外の)メモリに同期して書き込んでもよい。
【0007】
任意選択で、第2のコントローラは、第3のデータを書き込むように命令する書込み命令を共有インターフェースデバイスに送信するように構成される。共有インターフェースデバイスは、第3のデータをキャッシュに一時的に記憶するようにさらに構成され、キャッシュに一時的に記憶された第3のデータを少なくとも1つのメモリ内の1つ以上のメモリに非同期的に書き込むようにさらに構成される。例えば、共有インターフェースデバイスは、第3のデータを第1のメモリに非同期的に書き込んでもよい。
【0008】
第3のデータは、書込み命令によって命令されたように書き込まれるべきデータの全部または一部であってもよい。第3のデータが書込み命令によって命令されたように書き込まれるべきデータの一部であるとき、共有インターフェースデバイスによって、書込み命令によって命令されたように書き込まれるべき他のデータ(第3のデータを除く)を記憶する方法は、本出願では限定されない。任意選択で、共有インターフェースデバイスは、書込み命令によって命令されたように書き込まれるべき他のデータを、少なくとも1つのメモリ内の第1のメモリまたは(第1のメモリ以外の)メモリに同期して書き込んでもよい。
【0009】
第1のコントローラおよび第2のコントローラは、共有インターフェースデバイスに接続された第1のメモリにデータを非同期的に書き込むために、共有インターフェースデバイスのキャッシュを一緒に使用し得る。これは、共有インターフェースデバイスのキャッシュリソースの利用および共有インターフェースデバイスに接続されたメモリリソースの利用を向上させるのに役立つ。
【0010】
任意選択で、第2のコントローラは、第1のコントローラに障害が発生した後に読出し命令を共有インターフェースデバイスに送信し、読出し命令は、第2のデータを問い合わせるように命令し、第2のデータは第1のデータの全部または一部であってもよい、ように構成される。共有インターフェースデバイスは、読出し命令に従って、キャッシュから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供するようにさらに構成される。共有インターフェースデバイスが、キャッシュから第2のデータの一部を取得し、第2のデータ内の他のデータが保持またはバックアップされる場合、共有インターフェースデバイスは、共有インターフェースデバイスに接続されたメモリ(例えば、第1のメモリ)から第2のデータ内の他のデータを問い合わせて取得してもよい。
【0011】
第2のデータは、読出し命令によって命令されたように読み出されるべきデータの全部または一部であってもよい。第2のデータが読出し命令によって命令されたように読み出されるべきデータの一部であるとき、共有インターフェースデバイスによって、読出し命令によって命令されたように読み出されるべき他のデータ(第2のデータを除く)を取得する方法は、本出願では限定されない。任意選択で、共有インターフェースデバイスは、少なくとも1つのメモリ内の1つ以上のメモリから他のデータを取得してもよい。
【0012】
一方、共有インターフェースデバイスのキャッシュのアクセスレイテンシは、共有インターフェースデバイスに接続されたメモリのアクセスレイテンシより短いため、共有インターフェースデバイスは、第1のコントローラのための第1のデータを一時的に記憶するためにキャッシュを使用して、共有インターフェースデバイスに接続された第1のメモリに第1のデータを非同期的に書き込む。これは、第1のデータの記憶レイテンシを低減し、記憶システムによって提供されるデータサービスの効率を向上させるのに役立つ。一方、第2のコントローラは、第1のコントローラによってキャッシュに書き込まれたデータに対してミラーバックアップを実行する必要がない。第1のコントローラに障害が発生した後、共有インターフェースデバイスは、キャッシュ内の第1のコントローラのために書き込まれたデータを第2のコントローラに提供し得る。これは、ノード間の冗長なデータ伝送を追加することなくキャッシュ内のデータの可用性を保証するのに役立ち、記憶システムによって提供されるデータサービスの信頼性を向上させる。
【0013】
任意選択で、キャッシュは、第1のパーティションおよび第2のパーティションを含み、第1のパーティションは、第1のコントローラのためのデータを一時的に記憶するために使用され、第2のパーティションは、第2のコントローラのためのデータを一時的に記憶するために使用され、共有インターフェースデバイスがキャッシュ内の第2のデータの全部または一部を取得する問合せ範囲は、第1のパーティションおよび第2のパーティションを含む。
【0014】
第1のパーティションが第2のパーティションと異なることは、キャッシュ内の第1のパーティションに対応する記憶空間と、キャッシュ内の第2のパーティションに対応する記憶空間とが重ならないことを意味する。これは、共有インターフェースデバイスが異なるコントローラのためにデータをキャッシュに書き込むときに発生する競合を低減するのに役立ち、記憶システムによって提供されるデータサービスの信頼性を向上させる。共有インターフェースデバイスが読出し命令を受信した後、共有インターフェースデバイスがキャッシュ内の第2のデータの場所を決定することは困難であり得る。キャッシュ内のデータの可用性を向上させるために、共有インターフェースデバイスが第2のデータを問い合わせる問合せ範囲は、第1のパーティションおよび第2のパーティションをみ得る。これは、第2のコントローラのために、キャッシュ内の第1のコントローラおよび第2のコントローラのために書き込まれたデータを取得するのに役立つ。
【0015】
任意選択で、書込み命令は、データを第1のメモリに書き込むように命令する。
【0016】
任意選択で、共有インターフェースデバイスは、具体的には、第1のパーティションに第1のデータを一時的に記憶し、第2のパーティションに第3のデータを一時的に記憶し、第1のパーティションに一時的に記憶された第1のデータと第2のパーティションに一時的に記憶された第3のデータとを第1のメモリに連続して送信するように構成される。任意選択で、第1のコントローラによって送信された書込み命令は、第1のデータを第1のメモリに書き込むように命令してもよく、第2のコントローラによって送信された書込み命令は、第3のデータを第1のメモリに書き込むように命令してもよい。
【0017】
同じメモリに書き込まれるべき、第1のパーティション内のデータおよび第2のパーティション内のデータは、第1のメモリに連続して送信される。これは、第1のメモリが第1のデータおよび第2のデータの書込みタスクを連続して実行するのを助ける。第1のメモリ内の第1のデータおよび第2のデータの記憶場所が隣接する、またはさらには連続する場合、第1のメモリの書込み場所の変化が低減され、第1のメモリの記憶効率が向上する。
【0018】
任意選択で、少なくとも1つのメモリは第2のメモリをさらに含み、第2のメモリのメモリアクセスレイテンシは、第1のメモリのメモリアクセスレイテンシより短い。共有インターフェースデバイスは、書込み命令を受信した後に第1のデータを第2のメモリに同期してバックアップするようにさらに構成される。任意選択で、共有インターフェースデバイスは、キャッシュが異常であるときに、読出し命令に従って第2のメモリから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供してもよい。
【0019】
キャッシュに書き込まれたデータは、共有インターフェースデバイスに接続された第2のメモリに同期してバックアップされる。このようにして、キャッシュが異常であっても、例えば、保持されていない、キャッシュ内のデータが失われても、共有インターフェースデバイスは、依然として第2のメモリ内のデータを見つけることができる。これは、キャッシュ内のデータの可用性を向上させ、記憶システムによって提供されるデータサービスの信頼性を向上させるのに役立つ。
【0020】
任意選択で、記憶システムは、第1のコントローラに接続された第3のメモリをさらに含む。第1のコントローラは、第1のデータを第3のメモリにバックアップし、キャッシュが異常であるときに共有インターフェースデバイスを介して、第3のメモリにバックアップされたデータを少なくとも1つのメモリ内の第4のメモリに転送するようにさらに構成される。任意選択で、共有インターフェースデバイスは、キャッシュが異常であるときに、読出し命令に従って第4のメモリから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供するようにさらに構成される。第4のメモリは、共有インターフェースデバイスに接続された第1のメモリ、第2のメモリ、または別のメモリであってもよい。
【0021】
このようにして、キャッシュが異常であっても、例えば、保持されていない、キャッシュ内のデータが失われても、共有インターフェースデバイスは、依然としてキャッシュ内のデータを少なくとも1つのメモリ内に見つけることができる。これは、キャッシュ内のデータの可用性を向上させ、記憶システムによって提供されるデータサービスの信頼性を向上させるのに役立つ。
【0022】
任意選択で、データは、サービスデータおよび/またはサービスデータのメタデータを含み、サービスデータは、第1のコントローラによって受信されるデータ書込み要求によって要求されたように書き込まれるべきデータである。
【0023】
任意選択で、共有インターフェースデバイスは、インターフェースカードまたはディスクエンクロージャであり、インターフェースカードは、第1のコントローラまたは第2のコントローラに配置(例えば、挿入)され、ディスクエンクロージャは、少なくとも1つのメモリを組み込むように構成される。
【0024】
任意選択で、共有インターフェースデバイスは、周辺構成要素相互接続エクスプレスPCIeプロトコルまたはシリアル接続スモールコンピュータシステムインターフェースSASプロトコルを使用して第1のコントローラと通信する。
【0025】
任意選択で、共有インターフェースデバイスは、周辺構成要素相互接続エクスプレスPCIeプロトコルまたはSASプロトコルを使用して第2のコントローラと通信する。
【0026】
任意選択で、少なくとも1つのメモリ内の各メモリは、共有インターフェースデバイスと通信するための単一のポートのみを有し、ポート再構成はメモリに対して実行される必要がない。これは、コストを低減するのに役立つ。
【0027】
第2の態様によれば、本出願はデータ処理方法を提供し、本方法は記憶システムに適用され得る。記憶システムは、第1のコントローラおよび第2のコントローラを含み、第1のコントローラと第2のコントローラとは、キャッシュが配置された共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信する。本方法は、第1のコントローラが書込み命令を共有インターフェースデバイスに送信することを含み得る。共有インターフェースデバイスは、書込み命令によって命令されたように書き込まれるべき第1のデータをキャッシュに一時的に記憶し、次に、キャッシュに一時的に記憶された第1のデータを少なくとも1つのメモリ内の第1のメモリに非同期的に書き込む。
【0028】
任意選択で、第2のコントローラは、第3のデータを書き込むように命令する書込み命令を共有インターフェースデバイスに送信してもよい。共有インターフェースデバイスは、第3のデータをキャッシュに一時的に記憶し、キャッシュに一時的に記憶された第3のデータを少なくとも1つのメモリ内の1つ以上のメモリに非同期的に書き込んでもよい。例えば、共有インターフェースデバイスは、第3のデータを第1のメモリに非同期的に書き込んでもよい。
【0029】
任意選択で、第2のコントローラは、第1のコントローラに障害が発生した後に読出し命令を共有インターフェースデバイスに送信し、読出し命令は、第2のデータを問い合わせるように命令し、第2のデータは第1のデータの全部または一部である。共有インターフェースデバイスは、読出し命令に従って、キャッシュから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供する。
【0030】
任意選択で、キャッシュは、第1のパーティションおよび第2のパーティションを含み、第1のパーティションは、第1のコントローラのためのデータを一時的に記憶するために使用され、第2のパーティションは、第2のコントローラのためのデータを一時的に記憶するために使用され、共有インターフェースデバイスがキャッシュ内の第2のデータの全部または一部を取得する問合せ範囲は、第1のパーティションおよび第2のパーティションを含む。
【0031】
任意選択で、共有インターフェースデバイスが第1のデータをキャッシュに一時的に記憶することは、共有インターフェースデバイスが第1のデータを第1のパーティションに一時的に記憶することを含む。共有インターフェースデバイスが第3のデータをキャッシュに一時的に記憶することは、共有インターフェースデバイスが第3のデータを第2のパーティションに一時的に記憶することを含む。共有インターフェースデバイスがキャッシュに一時的に記憶された第1のデータおよび第3のデータを第1のメモリに非同期的に書き込むことは、共有インターフェースデバイスが、第1のパーティションに一時的に記憶された第1のデータおよび第2のパーティションに一時的に記憶された第3のデータを第1のメモリに連続して送信することを含んでもよい。任意選択で、第1のコントローラによって送信された書込み命令は、第1のデータを第1のメモリに書き込むように命令してもよく、第2のコントローラによって送信された書込み命令は、第3のデータを第1のメモリに書き込むように命令してもよい。
【0032】
任意選択で、少なくとも1つのメモリは第2のメモリをさらに含み、第2のメモリのメモリアクセスレイテンシは、第1のメモリのメモリアクセスレイテンシより短い。本方法は、共有インターフェースデバイスが、書込み命令を受信した後に第1のデータを第2のメモリに同期してバックアップすることをさらに含む。共有インターフェースデバイスは、キャッシュが異常であるときに、読出し命令に従って第2のメモリから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供する。
【0033】
任意選択で、記憶システムは、第1のコントローラに接続された第3のメモリをさらに含み、本方法は、第1のコントローラが第1のデータを第3のメモリにバックアップすることをさらに含む。第1のコントローラは、キャッシュが異常であるときに、共有インターフェースデバイスを介して、第3のメモリにバックアップされたデータを少なくとも1つのメモリ内の第4のメモリに転送する。共有インターフェースデバイスは、共有インターフェースデバイスが読出し命令を受信した後でキャッシュが異常であるときに、読出し命令に従って、第4のメモリから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供する。
【0034】
任意選択で、データは、サービスデータおよび/またはサービスデータのメタデータを含み、サービスデータは、第1のコントローラによって受信されるデータ書込み要求によって要求されたように書き込まれるべきデータである。
【0035】
任意選択で、共有インターフェースデバイスは、インターフェースカードまたはディスクエンクロージャであり、インターフェースカードは、第1のコントローラまたは第2のコントローラに挿入され、ディスクエンクロージャは、少なくとも1つのメモリを組み込むように構成される。
【0036】
任意選択で、共有インターフェースデバイスは、周辺構成要素相互接続エクスプレスPCIeプロトコルを使用して第1のコントローラおよび/または第2のコントローラと通信する。
【0037】
任意選択で、少なくとも1つのメモリ内の各メモリは、共有インターフェースデバイスと通信するための単一のポートのみを有する。
【0038】
第1の態様で提供される記憶システムにおける第1のコントローラ、第2のコントローラ、および共有インターフェースデバイスは、第2の態様で提供される方法を実行するように構成され得る。したがって、第2の態様で提供される方法によってもたらされる技術的効果については、前述の対応する記憶システムによって得られる技術的効果を参照されたい。ここでは詳細は再び説明されない。
【0039】
第3の態様によれば、本出願はデータ処理方法を提供し、本方法は、記憶システム内の共有インターフェースデバイスに適用され得る。記憶システムは、第1のコントローラおよび第2のコントローラを含み、第1のコントローラと第2のコントローラとは、キャッシュが配置された共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信する。本方法は、共有インターフェースデバイスが、第1のコントローラによって送信された、第1のデータを書き込むように命令する書込み命令を受信することを含む。共有インターフェースデバイスは、第1のデータをキャッシュに一時的に記憶し、次に、キャッシュに一時的に記憶された第1のデータを少なくとも1つのメモリ内の第1のメモリに非同期的に書き込む。
【0040】
任意選択で、本方法は、共有インターフェースデバイスが、第2のコントローラによって送信された、第3のデータを書き込むように命令する書込み命令を受信することをさらに含む。共有インターフェースデバイスは、第3のデータをキャッシュに一時的に記憶し、次に、キャッシュに一時的に記憶された第3のデータを少なくとも1つのメモリ内の1つ以上のメモリ(例えば、第1のメモリ)に非同期的に書き込む。
【0041】
任意選択で、共有インターフェースデバイスは、第1のコントローラに障害が発生した後に第2のコントローラによって送信された読出し命令を受信し、読出し命令は、第2のデータを問い合わせるように命令し、第2のデータは第1のデータの全部または一部である。共有インターフェースデバイスは、読出し命令に従って、キャッシュから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供する。
【0042】
任意選択で、キャッシュは、第1のパーティションおよび第2のパーティションを含み、第1のパーティションは、第1のコントローラのためのデータを一時的に記憶するために使用され、第2のパーティションは、第2のコントローラのためのデータを一時的に記憶するために使用され、共有インターフェースデバイスがキャッシュ内の第2のデータの全部または一部を取得する問合せ範囲は、第1のパーティションおよび第2のパーティションを含む。
【0043】
任意選択で、共有インターフェースデバイスが第1のデータをキャッシュに一時的に記憶することは、共有インターフェースデバイスが第1のデータを第1のパーティションに一時的に記憶することを含む。共有インターフェースデバイスが第3のデータをキャッシュに一時的に記憶することは、共有インターフェースデバイスが第3のデータを第2のパーティションに一時的に記憶することを含む。共有インターフェースデバイスがキャッシュに一時的に記憶された第1のデータおよび第3のデータを第1のメモリに非同期的に書き込むことは、共有インターフェースデバイスが、第1のパーティションに一時的に記憶された第1のデータおよび第2のパーティションに一時的に記憶された第3のデータを第1のメモリに連続して送信することを含んでもよい。任意選択で、第1のコントローラによって送信された書込み命令は、第1のデータを第1のメモリに書き込むように命令してもよく、第2のコントローラによって送信された書込み命令は、第3のデータを第1のメモリに書き込むように命令してもよい。
【0044】
任意選択で、少なくとも1つのメモリは第2のメモリをさらに含み、第2のメモリのメモリアクセスレイテンシは、第1のメモリのメモリアクセスレイテンシより短い。本方法は、共有インターフェースデバイスが、書込み命令を受信した後に第1のデータを第2のメモリに同期してバックアップすることをさらに含む。共有インターフェースデバイスは、キャッシュが異常であるときに、読出し命令に従って第2のメモリから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供する。
【0045】
任意選択で、記憶システムは、第1のコントローラに接続された第3のメモリをさらに含む。本方法は、共有インターフェースデバイスが読出し命令を受信した後でキャッシュが異常であるときに、共有インターフェースデバイスが、読出し命令に従って、接続された第4のメモリから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供することをさらに含む。第4のメモリ内の第2のデータの全部または一部は、キャッシュが異常になった後に、第1のコントローラによって第3のメモリから共有インターフェースデバイスを介して第4のメモリに転送され、第3のメモリ内のデータは、第1のコントローラによってバックアップされた第1のデータを含む。
【0046】
任意選択で、データは、サービスデータおよび/またはサービスデータのメタデータを含み、サービスデータは、第1のコントローラによって受信されるデータ書込み要求によって要求されたように書き込まれるべきデータである。
【0047】
任意選択で、共有インターフェースデバイスは、インターフェースカードまたはディスクエンクロージャであり、インターフェースカードは、第1のコントローラまたは第2のコントローラに挿入され、ディスクエンクロージャは、少なくとも1つのメモリを組み込むように構成される。
【0048】
任意選択で、共有インターフェースデバイスは、周辺構成要素相互接続エクスプレスPCIeプロトコルを使用して第1のコントローラおよび/または第2のコントローラと通信する。
【0049】
任意選択で、少なくとも1つのメモリ内の各メモリは、共有インターフェースデバイスと通信するための単一のポートのみを有する。
【0050】
第1の態様で提供される共有インターフェースデバイスは、第3の態様で提供される方法を実行するように構成され得る。したがって、第3の態様で提供される方法によってもたらされる技術的効果については、前述の対応する記憶システムによって得られる技術的効果を参照されたい。ここでは詳細は再び説明されない。
【0051】
第4の態様によれば、本出願は共有インターフェースデバイスを提供し、キャッシュは共有インターフェースデバイスに配置され得る。共有インターフェースデバイスは、受信モジュールと、記憶モジュールと、問合せモジュールとを含み得る。受信モジュールは、第1のコントローラによって送信された、第1のデータを書き込むように命令する書込み命令を受信するように構成される。第1のコントローラおよび第2のコントローラは、共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信する。記憶モジュールは、記憶モジュールのキャッシュに第1のデータを一時的に記憶するように構成され、キャッシュに一時的に記憶された第1のデータを少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むようにさらに構成される。
【0052】
任意選択で、受信モジュールは、第2のコントローラによって送信された、第3のデータを書き込むように命令する書込み命令を受信するようにさらに構成される。記憶モジュールは、記憶モジュールのキャッシュに第1のデータを一時的に記憶するように構成され、キャッシュに一時的に記憶された第3のデータを少なくとも1つのメモリ内の1つ以上のメモリに非同期的に書き込むようにさらに構成される。例えば、記憶モジュールは、第3のデータを第1のメモリに非同期的に書き込んでもよい。
【0053】
任意選択で、受信モジュールは、第1のコントローラに障害が発生した後に第2のコントローラによって送信された読出し命令を受信し、読出し命令は、第2のデータを問い合わせるように命令し、第2のデータは第1のデータの全部または一部である、ようにさらに構成される。問合せモジュールは、読出し命令に従って、キャッシュから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供するように構成される。
【0054】
任意選択で、キャッシュは、第1のパーティションおよび第2のパーティションを含み、第1のパーティションは、第1のコントローラのためのデータを一時的に記憶するために使用され、第2のパーティションは、第2のコントローラのためのデータを一時的に記憶するために使用され、問合せモジュールがキャッシュ内の第2のデータの全部または一部を取得する問合せ範囲は、第1のパーティションおよび第2のパーティションを含む。
【0055】
任意選択で、記憶モジュールは、具体的には、第1のパーティションに第1のデータを一時的に記憶し、第2のパーティションに第3のデータを一時的に記憶し、第1のパーティションに一時的に記憶された第1のデータと第2のパーティションに一時的に記憶された第3のデータとを第1のメモリに連続して送信するように構成される。任意選択で、第1のコントローラによって送信された書込み命令は、第1のデータを第1のメモリに書き込むように命令してもよく、第2のコントローラによって送信された書込み命令は、第3のデータを第1のメモリに書き込むように命令してもよい。
【0056】
任意選択で、少なくとも1つのメモリは第2のメモリをさらに含み、第2のメモリのメモリアクセスレイテンシは、第1のメモリのメモリアクセスレイテンシより短い。記憶モジュールは、書込み命令を受信した後に第1のデータを第2のメモリに同期してバックアップし、キャッシュが異常であるときに、読出し命令に従って第2のメモリから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供するようにさらに構成される。
【0057】
任意選択で、記憶システムは、第1のコントローラに接続された第3のメモリをさらに含む。問合せモジュールは、受信モジュールが読出し命令を受信した後で、キャッシュが異常であるときに、読出し命令に従って、接続された第4のメモリから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供するようにさらに構成される。第4のメモリ内の第2のデータの全部または一部は、キャッシュが異常になった後に、第1のコントローラによって第3のメモリから共有インターフェースデバイスを介して第4のメモリに転送され、第3のメモリ内のデータは、第1のコントローラによってバックアップされた第1のデータを含む。
【0058】
任意選択で、データは、サービスデータおよび/またはサービスデータのメタデータを含み、サービスデータは、第1のコントローラによって受信されるデータ書込み要求によって要求されたように書き込まれるべきデータである。
【0059】
任意選択で、共有インターフェースデバイスは、インターフェースカードまたはディスクエンクロージャであり、インターフェースカードは、第1のコントローラまたは第2のコントローラに挿入され、ディスクエンクロージャは、少なくとも1つのメモリを組み込むように構成される。
【0060】
任意選択で、共有インターフェースデバイスは、周辺構成要素相互接続エクスプレスPCIeプロトコルを使用して第1のコントローラおよび/または第2のコントローラと通信する。
【0061】
任意選択で、少なくとも1つのメモリ内の各メモリは、共有インターフェースデバイスと通信するための単一のポートのみを有する。
【0062】
第4の態様で提供される共有インターフェースデバイスは、第1の態様で提供される記憶システムにおける共有インターフェースデバイスの機能を有し得る。したがって、第4の態様で提供される共有インターフェースデバイスによってもたらされる技術的効果については、前述の対応する共有インターフェースデバイスによって得られる技術的効果を参照されたい。ここでは詳細は再び説明されない。
【0063】
第5の態様によれば、本出願はコンピューティングデバイスを提供する。第1のコントローラおよび第2のコントローラは、コンピューティングデバイスを介して少なくとも1つのメモリと別々に通信する。コンピューティングデバイスはメモリおよびプロセッサを含み、メモリはキャッシュを含み、プロセッサは、コンピューティングデバイスが第3の態様のいずれかの可能な実施態様に記載された方法を実行することを可能にするために、メモリに記憶されたコンピュータ命令を実行する。
【0064】
任意選択で、コンピューティングデバイスは、インターフェースカードまたはディスクエンクロージャであり、インターフェースカードは、第1のコントローラまたは第2のコントローラに挿入され、ディスクエンクロージャは、少なくとも1つのメモリを組み込むように構成される。
【0065】
任意選択で、コンピューティングデバイスは、周辺構成要素相互接続エクスプレスPCIeプロトコルを使用して第1のコントローラおよび/または第2のコントローラと通信する。
【0066】
第6の態様によれば、本出願は、命令を含むコンピュータ可読記憶媒体を提供する。命令がコンピューティングデバイス上で実行されるとき、コンピューティングデバイスは、第3の態様のいずれかの可能な実施態様に記載された方法を実行することが可能にされる。
【0067】
本出願の第11の態様は、コンピュータプログラム製品を提供する。コンピュータプログラム製品に含まれるプログラムコードがコンピュータデバイスによって実行されるとき、本出願の第3の態様のいずれかの可能な実施態様に記載された方法が実施されることができる。
【0068】
本出願で提供される装置は、前述の記憶システム内の共有インターフェースデバイスによって実行される方法ステップを実行するように構成されてもよい。したがって、本出願の装置によって得られることができる技術的効果については、前述の記憶システムによって得られる技術的効果を参照されたい。ここでは詳細は再び説明されない。
【0069】
本出願の特許請求の範囲および発明の概要における第1のコントローラおよび第2のコントローラは、例えば、本出願の実施形態の説明における記憶ノードの任意の2つの異なるコントローラであってもよい。例えば、第1のコントローラはコントローラaであってもよく、第2のコントローラはコントローラbであってもよいし、または第1のコントローラはコントローラbであってもよく、第2のコントローラはコントローラaであってもよい。
【0070】
本出願の特許請求の範囲および発明の概要における共有インターフェースデバイスは、例えば、本出願の実施形態の説明における記憶ノードの、少なくとも2つのコントローラに接続された任意の共有インターフェースデバイスであってもよい。例えば、共有インターフェースデバイスは、共有インターフェースデバイスaまたは共有インターフェースデバイスbであってもよい。例えば、共有インターフェースデバイスは、共有インターフェースデバイスaであり、共有インターフェースデバイスは、具体的には、インターフェースカードaまたはディスクエンクロージャaであってもよい。
【0071】
本出願の特許請求の範囲および発明の概要における少なくとも1つのメモリは、例えば、本出願の実施形態の説明における共有インターフェースデバイスaまたは共有インターフェースデバイスbに接続された少なくとも1つのメモリであってもよい。例えば、共有インターフェースデバイスはインターフェースカードaである。少なくとも1つのメモリは、メモリa1、メモリa2、およびメモリa3を含んでもよい。
【0072】
本出願の特許請求の範囲および発明の概要における第1のメモリは、例えば、本出願の実施形態の説明における共有インターフェースデバイスaまたは共有インターフェースデバイスbに接続された任意の1つ以上のメモリであってもよい。例えば、共有インターフェースデバイスはインターフェースカードaである。第1のメモリは、メモリa2を含んでもよい。
【0073】
例えば、第1のコントローラおよび第2のコントローラは、それぞれ、本出願の実施形態の説明で言及されたコントローラaおよびコントローラbである。本出願の特許請求の範囲および発明の概要において第1のコントローラによって送信される書込み命令は、例えば、本出願の実施形態の説明で言及された書込み命令1または書込み命令1-1であってもよく、第2のコントローラによって送信される書込み命令は、例えば、本出願の実施形態の説明で言及された書込み命令2または書込み命令2-2であってもよい。
【0074】
第1のコントローラおよび第2のコントローラが、それぞれ本出願の実施形態の説明で言及されたコントローラaおよびコントローラbであることが、依然として例として使用される。本出願の特許請求の範囲および発明の概要における第1のデータおよび第3のデータは、例えば、それぞれ本出願の実施形態の説明で言及された対象データ1および対象データ2であってもよい。
【0075】
本出願の特許請求の範囲および発明の概要における読出し命令は、例えば、本出願の実施形態の説明で言及された読出し命令1、読出し命令1-1、読出し命令2、または読出し命令2-1であってもよい。本出願の特許請求の範囲および発明の概要における第2のデータは、例えば、本出願の実施形態の説明で言及された対象データ3または対象データ4であってもよい。任意選択で、対象データ3もしくは対象データ4は、対象データ1の全部もしくは一部であってもよいし、または対象データ3もしくは対象データ4は、対象データ2の全部もしくは一部であってもよい。
【0076】
例えば、本出願の実施形態の説明では、第1のコントローラはコントローラaである。本出願の特許請求の範囲および発明の概要における第3のメモリは、例えば、本出願の実施形態の説明におけるコントローラaに接続されたメモリc1を含んでもよい。
【0077】
例えば、本出願の実施形態の説明では、第1のコントローラはコントローラbである。本出願の特許請求の範囲および発明の概要における第3のメモリは、例えば、本出願の実施形態の説明におけるコントローラbに接続されたメモリc2を含んでもよい。
【0078】
例えば、本出願の実施形態の説明では、第1のコントローラはコントローラaである。本出願の特許請求の範囲および発明の概要における第2のメモリは、例えば、本出願の実施形態の説明におけるメモリa1を含んでもよい。
【0079】
例えば、本出願の特許請求の範囲および発明の概要における共有インターフェースデバイスは、本出願の実施形態の説明におけるインターフェースカードaである。第1のパーティションおよび第2のパーティションは、例えば、それぞれインターフェースカードaのキャッシュ内のパーティション1およびパーティション2であってもよい。
【図面の簡単な説明】
【0080】
図1】既存の記憶システムの構造の例を示す。
図2】本出願の一実施形態が適用可能である可能なシステムアーキテクチャの例を示す。
図3-1】本出願における記憶システム内の記憶ノードの可能な構造の例を示す。
図3-2】本出願における記憶システム内の記憶ノードの可能な構造の例を示す。
図3-3】本出願における記憶システム内の記憶ノードの可能な構造の例を示す。
図4】本出願における記憶ノードによって実行される可能なデータ処理方法の例を示す。
図5】インターフェースカードaがキャッシュ内のデータをメモリに保持するプロセスの例を示す。
図6】本出願における記憶ノードによって実行される別の可能なデータ処理方法の例を示す。
図7】本出願における記憶ノードによって実行される別の可能なデータ処理方法の例を示す。
図8】本出願における記憶ノードによって実行される別の可能なデータ処理方法の例を示す。
図9】本出願における共有インターフェースデバイスの可能な構造の例を示す。
【発明を実施するための形態】
【0081】
本出願の実施形態は、記憶システム、データ処理方法、および装置を提供する。以下は、最初に、図2を参照して、本出願の実施形態が適用可能であるシステムアーキテクチャの例について説明する。
【0082】
図2は、本出願の一実施形態が適用可能であるシステムアーキテクチャの例を示す。図2に対応するシステムアーキテクチャは、記憶システムおよび少なくとも1つのアプリケーションサーバを含む。アプリケーションサーバと記憶システムとは、通信ネットワークを介して接続され得る。図2を参照されたい。記憶システムは、1つの記憶ノードを含み得、記憶ノードには、記憶制御ユニットおよび1つ以上のメモリが配置される。メモリは、ハードディスクドライブ(hard disk drive、HDD)、ソリッドステートドライブ(solid-state drive、SSD)、記憶クラスメモリ(storage class memory、SCM)、または別のタイプの記憶ディスクであってもよい。あるいは、メモリは、記憶サーバ、または記憶サービスを提供するように構成された別のタイプのコンピューティングデバイスであってもよい。
【0083】
図2は、本出願の一実施形態が適用可能であるシステムアーキテクチャに対する限定ではなく、その例を示すにすぎない。図2に対応するシステムアーキテクチャは、より多くのまたはより少ないアプリケーションサーバまたは記憶ノードを含んでもよい。本出願の実施形態は、中央記憶システムに適用されてもよいし、または分散記憶システムに適用されてもよい。任意選択で、本出願の実施形態が適用可能であるシステムアーキテクチャは、1つ以上の記憶ノード、例えば、図2に示されている記憶ノードを含んでもよい。図2に示されている記憶ノードは、記憶アレイまたは記憶サーバとして理解されてもよい。分散記憶システム内の各記憶ノードが図2に示されている記憶ノードであることは、本出願のこの実施形態では限定されない。
【0084】
記憶システムの信頼性を向上させるために、図2に示されている記憶ノードの記憶制御ユニットは、少なくとも2つのコントローラを含み得る。記憶制御ユニットに2つのコントローラが配置される例が使用される。図2に示されている記憶ノードは、図3-1に具体的に示され得る。
【0085】
図3-1を参照されたい。記憶ノードは、コントローラaおよびコントローラbを含み得る。コントローラaおよびコントローラbは、記憶アレイ内のコントローラ、または記憶サーバ内のコントローラとして理解されてもよい。記憶ノードは、共有インターフェースデバイスaおよび共有インターフェースデバイスbをさらに含み得る。共有インターフェースデバイスaおよび共有インターフェースデバイスbは、少なくとも1つのメモリに接続するように別々に構成される。区別を容易にするために、共有インターフェースデバイスaに接続されるメモリはメモリaと呼ばれ、共有インターフェースデバイスbに接続されるメモリはメモリbと呼ばれる。メモリaおよびメモリbは、図2に示されている少なくとも1つのメモリ内のメモリとして理解されてもよい。コントローラaおよびコントローラbは、共有インターフェースデバイスaを介して共有インターフェースデバイスaの配下の少なくとも1つのメモリaと通信してもよく、コントローラaおよびコントローラbは、共有インターフェースデバイスbを介して共有インターフェースデバイスbの配下の少なくとも1つのメモリbと通信してもよい。
【0086】
図3-1を参照されたい。キャッシュは、共有インターフェースデバイスaおよび共有インターフェースデバイスbに配置され得る。コントローラaおよびコントローラbは、共有インターフェースデバイスa内のキャッシュおよび接続されたメモリaに一緒にアクセスするために、両方とも共有インターフェースデバイスaに接続され得る。コントローラaおよびコントローラbはさらに、共有インターフェースデバイスb内のキャッシュおよび接続されたメモリbに一緒にアクセスするために、両方とも共有インターフェースデバイスbに接続されてもよい。
【0087】
任意選択で、共有インターフェースデバイスa内のキャッシュの電源保護は、コントローラaおよび/またはコントローラbを介して実施されてもよく、共有インターフェースデバイスb内のキャッシュの電源保護は、コントローラaおよび/またはコントローラbを介して実施されてもよい。例えば、コントローラaとコントローラbとの両方が正常であるとき、共有インターフェースデバイスa内のキャッシュの電源保護はコントローラaを介して実施されてもよく、共有インターフェースデバイスb内のキャッシュの電源保護はコントローラbを介して実施されてもよい。コントローラaに障害が発生した後、共有インターフェースデバイスa内のキャッシュの電源保護および共有インターフェースデバイスb内のキャッシュの電源保護は、コントローラbを介して実施されてもよい。
【0088】
図3-1は、記憶ノードの構造に対する限定ではなく、その例である。任意選択で、図3-1に対応する記憶ノードは、より多くのコントローラを含んでもよく、より多くのまたはより少ない共有インターフェースデバイスを含んでもよく、より多くのまたはより少ないメモリaまたはbを含んでもよい。例えば、図3-1に対応する記憶ノードは、共有インターフェースデバイスbまたは共有インターフェースデバイスbの配下のメモリbを含まなくてもよい。
【0089】
図3-1に示されている共有インターフェースデバイスaまたは共有インターフェースデバイスbは、コントローラとメモリとの間のデータに対して、以下の動作、すなわち、キャッシュ、処理、および転送のうちの少なくとも1つを実行するように構成される。「転送」は、トランスペアレント伝送またはプロトコルフォーマット変換を指し得る。図3-2および図3-3はそれぞれ、図3-1に対応する記憶ノードの可能な構造の例を示す。以下は、図3-2および図3-3に示されている記憶ノードを参照して、2つの異なるタイプの共有インターフェースデバイスについて説明する。
【0090】
1.共有インターフェースデバイスはインターフェースカードである。
【0091】
図3-2に対応する記憶ノードにおいて、共有インターフェースデバイスaは、コントローラaに接続されたインターフェースカードaであってもよく、共有インターフェースデバイスbは、コントローラbに接続されたインターフェースカードbであってもよい。任意選択で、共有インターフェースデバイスaは、プラグイン方法でコントローラaに接続される。例えば、インターフェースカードaは、コントローラaの周辺構成要素相互接続(peripheral component interconnect、PCI)ライザデバイスに接続されてもよい。同様に、共有インターフェースデバイスbは、プラグイン方法でコントローラbに接続されてもよい。例えば、インターフェースカードbは、コントローラbのPCIeライザデバイスに接続されてもよい。
【0092】
図3-2を参照されたい。コントローラaおよびコントローラbはそれぞれ、プロセッサ、キャッシュ、およびライザデバイスを含んでもよく、インターフェースカードaおよびインターフェースカードbはそれぞれ、プロセッサ、キャッシュ、および複数のポートを含んでもよい。
【0093】
プロセッサは、1つ以上の汎用プロセッサ、例えば中央処理装置(central processing unit、CPU)、またはCPUとハードウェアチップとの組合せを含んでもよい。ハードウェアチップは、特定用途向け集積回路(application-specific integrated circuit、ASIC)、プログラマブル論理デバイス(programmable logic device、PLD)、またはこれらの組合せであってもよい。PLDは、複合プログラマブル論理デバイス(complex programmable logic device、CPLD)、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)、汎用アレイ論理(generic array logic、GAL)、またはこれらの任意の組合せであってもよい。
【0094】
図3-2では、コントローラaまたはコントローラb内のライザデバイスがPCIeライザデバイスである例が使用されている。ライザデバイスは、別のタイプのライザデバイス、例えば、拡張業界標準アーキテクチャ(extended industry standard architecture、EISA)ライザデバイスであってもよい。ライザデバイスは、バスとも呼ばれ得、アドレスバス、データバス、および制御バスなどを含み得る。
【0095】
キャッシュは、揮発性メモリ(volatile memory)、例えばランダムアクセスメモリ(random access memory、RAM)を含み得る。あるいは、キャッシュは、不揮発性メモリ(non-volatile memory)、例えば、読出し専用メモリ(read-only memory、ROM)、フラッシュメモリ(flash memory)、ハードディスクドライブ(hard disk drive、HDD)、またはソリッドステートドライブ(solid-state drive、SSD)を含んでもよい。あるいは、キャッシュは、前述のタイプの組合せを含んでもよい。
【0096】
PCIeライザデバイスは、複数のポートを含み得る。図3-2では、番号が付された各四角がポートを表す。図3-2を参照されたい。PCIeライザデバイス内の複数のポートは、ポート11、ポート12、ポート13、およびポート14を含み得る。インターフェースカードaおよびインターフェースカードbの複数のポートは、ポート21、ポート22、およびポート23を別々に含み得る。
【0097】
図3-2における実線の接続線を参照されたい。コントローラaのプロセッサは、コントローラaとインターフェースカードaとの間の通信接続を実施するために、コントローラa内のポート11およびポート12ならびにインターフェースカードaのポート21を順次介してインターフェースカードaにアクセスし得る。図3-2における破線の接続線を参照されたい。コントローラbのプロセッサは、コントローラbとインターフェースカードaとの間の通信接続を実施するために、コントローラb内のポート11およびポート14、コントローラa内のポート14およびポート13、ならびにインターフェースカードaのポート22を順次介してインターフェースカードaにアクセスし得る。
【0098】
同様に、任意選択で、コントローラbのプロセッサは、コントローラbとインターフェースカードbとの間の通信接続を実施するために、コントローラb内のポート11およびポート12ならびにインターフェースカードbのポート21を順次介してインターフェースカードbにアクセスしてもよい。コントローラaのプロセッサは、コントローラaとインターフェースカードbとの間の接続を実施するために、コントローラa内のポート11およびポート14、コントローラb内のポート14およびポート13、ならびにインターフェースカードbのポート22を順次介してインターフェースカードbにアクセスし得る。
【0099】
上記で説明されたように、インターフェースカードaおよびインターフェースカードbは、それぞれ上方でコントローラaおよびコントローラbに接続され得る。加えて、インターフェースカードaは、ポートを介して下方で1つ以上のメモリaにさらに接続され得、インターフェースカードbは、ポートを介して下方で1つ以上のメモリbにさらに接続され得る。図3-2を参照されたい。インターフェースカードaは、ディスクエンクロージャaに組み込まれたメモリa1、メモリa2、およびメモリa3にアクセスするために、ポート23を介してディスクエンクロージャaのポート31に接続され得る。インターフェースカードbは、ディスクエンクロージャb内のメモリb1、メモリb2、およびメモリb3にアクセスするために、ポート23を介してディスクエンクロージャbに接続され得る。メモリa1、メモリa2、およびメモリa3の各々は、1つのメモリaとして理解されてもよく、メモリb1、メモリb2、およびメモリb3の各々は、1つのメモリbとして理解されてもよい。
【0100】
任意選択で、インターフェースカードaおよび/またはインターフェースカードbは、シリアル接続SCSI(serial attached SCSI、SAS)カードまたは独立ディスクの冗長アレイ(redundant array of independent disk、RAID)カードであってもよく、SCSIは、スモールコンピュータシステムインターフェース(small computer system interface)の省略である。図3-2に対応する記憶ノードでは、任意選択で、インターフェースカードaとコントローラaとの間の接続は、周辺構成要素相互接続エクスプレス(peripheral component interconnect express、PCIe)プロトコルに基づいてもよく、インターフェースカードaとメモリaとの間の接続は、SASプロトコル、ファイバチャネル(Fibre Channel、FC)プロトコル、またはギガビットイーサネット(Gigabit Ethernet、GE)プロトコルなどに基づいてもよい。同様に、インターフェースカードbとコントローラbとの間の接続は、PCIeプロトコルに基づいてもよく、インターフェースカードbとメモリbとの間の接続は、SASプロトコル、FCプロトコル、またはGEプロトコルなどに基づいてもよい。
【0101】
キャッシュがインターフェースカードa内に配置され、コントローラaおよびコントローラbが両方ともインターフェースカードaに接続されるため、コントローラaおよびコントローラbは、インターフェースカードaの配下のメモリaを共有するだけでなく、インターフェースカードa内のキャッシュも共有し得る。同様に、キャッシュがインターフェースカードb内に配置され、コントローラaおよびコントローラbがインターフェースカードbに接続されるため、コントローラaおよびコントローラbは、インターフェースカードbの配下のメモリbを共有するだけでなく、インターフェースカードb内のキャッシュも共有し得る。
【0102】
さらに図3-2を参照されたい。1つのインターフェースカード(例えば、インターフェースカードaまたはインターフェースカードb)の1つのポートのみを介して、コントローラaおよびコントローラbは、インターフェースカードの配下のメモリを共有することができる。これは、インターフェースカードのポートリソースを節約するのに役立つ。このようにして、インターフェースカードはより多くのメモリに接続することができ、コントローラaおよびコントローラbによって共有される記憶リソースが拡張される。加えて、インターフェースカードに接続されたメモリは、コントローラaおよびコントローラbと別々に通信するために、インターフェースカードに接続するために使用されるただ1つのポートを具備してもよく、メモリに対してポート再構成が実行される必要はない。これは、コストを低減するのに役立つ。例えば、図3-2におけるディスクエンクロージャおよびディスクエンクロージャの配下のメモリは、1つのメモリとして理解されてもよい。ディスクエンクロージャは、コントローラaおよびコントローラbと別々に通信するために、インターフェースカードに接続された1つのポートを具備するだけでよく、ディスクエンクロージャに対してポート再構成が実行される必要はない。
【0103】
図3-2では、インターフェースカードがディスクエンクロージャを介して記憶ディスクと通信することは、限定ではなく例として使用されている。任意選択で、インターフェースカードは、シングルポートハードディスクに直接接続されてもよい。任意選択で、インターフェースカードは、記憶サービスを提供するように構成された別のタイプのコンピューティングデバイス、例えば記憶サーバと通信してもよい。
【0104】
図3-2は、記憶ノードの構造に対する限定ではなく、その例である。任意選択で、図3-2に対応する記憶ノードは、より多くのコントローラを含んでもよく、より多くのまたはより少ないインターフェースカードを含んでもよく、より多くのまたはより少ないメモリを含んでもよい。例えば、記憶ノードは、インターフェースカードbまたはインターフェースカードbの配下のメモリを含まなくてもよい。
【0105】
2.共有インターフェースデバイスはディスクエンクロージャである。
【0106】
図3-3に対応する記憶ノードでは、共有インターフェースデバイスaがディスクエンクロージャaであってもよく、共有インターフェースデバイスbがディスクエンクロージャbであってもよい。任意選択で、ディスクエンクロージャに接続される1つ以上のメモリaが、ディスクエンクロージャaに組み込まれてもよく、ディスクエンクロージャに接続される1つ以上のメモリbが、ディスクエンクロージャbに組み込まれてもよい。任意選択で、1つ以上のメモリaは、HDDおよびSSDの少なくとも1つのタイプの記憶ディスクを含んでもよい。同様に、任意選択で、1つ以上のメモリbは、HDDおよびSSDの少なくとも1つのタイプの記憶ディスクを含んでもよい。
【0107】
図3-3を参照されたい。コントローラaおよびコントローラbはそれぞれ、プロセッサおよびキャッシュを含み得、ディスクエンクロージャaおよびディスクエンクロージャbは、プロセッサ、キャッシュ、複数のポート、およびハードディスク取付機構(例えば、図3-3に示されている溝)を含み得る。プロセッサおよびキャッシュについては、図3-2の関連する内容を参照されたい。ここでは詳細は再び説明されない。図3-3を参照されたい。ディスクエンクロージャaおよびディスクエンクロージャbの複数のポートは、ポート21およびポート22を別々に含み得る。メモリ(例えば、メモリa1、メモリa2、またはメモリa3)は、ディスクエンクロージャaの取付機構の背後に配置され、ディスクエンクロージャaのプロセッサと別々に通信し得る。メモリ(例えば、メモリb1、メモリb2、またはメモリb3)は、ディスクエンクロージャbの取付機構の背後に配置され、ディスクエンクロージャbのプロセッサと別々に通信し得る。
【0108】
任意選択で、コントローラaは、コントローラaとディスクエンクロージャaとの間の通信接続を実施するために、インターフェースカードaのポート21およびポート22ならびにディスクエンクロージャaのポート31を順次介してディスクエンクロージャaにアクセスしてもよい。コントローラbは、コントローラbとディスクエンクロージャaとの間の通信接続を実施するために、インターフェースカードbのポート21およびポート23ならびにディスクエンクロージャaのポート32を順次介してディスクエンクロージャaにアクセスしてもよい。
【0109】
同様に、任意選択で、コントローラbは、コントローラbとディスクエンクロージャbとの間の通信接続を実施するために、インターフェースカードbのポート21およびポート22ならびにディスクエンクロージャbのポート31を順次介してディスクエンクロージャbにアクセスしてもよい。コントローラaは、コントローラaとディスクエンクロージャbとの間の通信接続を実施するために、インターフェースカードaのポート21およびポート23ならびにディスクエンクロージャbのポート32を順次介してディスクエンクロージャbにアクセスしてもよい。
【0110】
上記で説明されたように、ディスクエンクロージャaおよびディスクエンクロージャbは、それぞれ上方でコントローラaおよびコントローラbに接続され得る。加えて、ディスクエンクロージャaは、ポートを介して下方で1つ以上のメモリaにさらに接続され得、ディスクエンクロージャbは、ポートを介して下方で1つ以上のメモリbにさらに接続され得る。図3-3を参照されたい。ディスクエンクロージャaは、ディスクエンクロージャaに組み込まれたメモリa1、メモリa2、およびメモリa3にアクセスし得、ディスクエンクロージャbは、ディスクエンクロージャbに組み込まれたメモリb1、メモリb2、およびメモリb3にアクセスし得る。メモリa1、メモリa2、およびメモリa3の各々は、1つのメモリaとして理解されてもよく、メモリb1、メモリb2、およびメモリb3の各々は、1つのメモリbとして理解されてもよい。
【0111】
キャッシュがディスクエンクロージャa内に配置され、コントローラaおよびコントローラbが両方ともディスクエンクロージャaに接続されるため、コントローラaおよびコントローラbは、ディスクエンクロージャaの配下のメモリaを共有するだけでなく、ディスクエンクロージャa内のキャッシュも共有し得る。同様に、キャッシュがディスクエンクロージャb内に配置され、コントローラaおよびコントローラbがディスクエンクロージャbに接続されるため、コントローラaおよびコントローラbは、ディスクエンクロージャbの配下のメモリbを共有するだけでなく、ディスクエンクロージャb内のキャッシュも共有し得る。
【0112】
ディスクエンクロージャaおよびディスクエンクロージャbは両方ともコントローラaに接続されてもよく、ディスクエンクロージャaとコントローラaとの間の接続およびディスクエンクロージャbとコントローラaとの間の接続は、SASプロトコル、ファイバチャネル(Fibre Channel、FC)プロトコル、またはギガビットイーサネット(Gigabit Ethernet、GE)プロトコルなどに基づいてもよい。同様に、ディスクエンクロージャbおよびディスクエンクロージャaは両方ともコントローラbに接続され、ディスクエンクロージャbとコントローラbとの間の接続は、SASプロトコル、ファイバチャネル(Fibre Channel、FC)プロトコル、またはギガビットイーサネット(Gigabit Ethernet、GE)プロトコルなどに基づいてもよい。
【0113】
図3-3は、記憶ノードの構造に対する限定ではなく、その例である。任意選択で、図3-3に対応する記憶ノードは、より多くのコントローラを含んでもよく、より多くのまたはより少ないインターフェースカードを含んでもよく、より多くのまたはより少ないディスクエンクロージャを含んでもよく、より多くのまたはより少ないメモリを含んでもよい。例えば、図3-3に対応する記憶ノードは、ディスクエンクロージャbまたはディスクエンクロージャb内のメモリを含まなくてもよい。例えば、インターフェースカードaまたはインターフェースカードbは、より多くのメモリに接続されてもよい。
【0114】
図3-1、図3-2、または図3-3に示されている記憶ノードでは、ポート間の1つの接続線は、1つ以上の接続リンクを表し得る。例として、図3-2のポート12とポート21との間の接続線が使用される。接続線によって表される接続リンクは、データ信号の伝送に使用されるPCIeバスと、制御信号の伝送に使用される制御バスとを含んでもよい。例えば、コントローラaおよびインターフェースカードaの制御信号、ハンドシェイク情報、およびステータス情報の伝送は、制御バスを介して実行されてもよい。制御信号は、インターフェースカードaが動作を開始することを可能にする開始信号を含んでもよい。開始信号は、例えば、インターフェースカードaの所定位置信号(インターフェースカードaが正しいスロットに挿入されたかどうかを決定するために使用される)、電源オン許可信号、クロック信号、およびリセット信号を含んでもよい。ハンドシェイク情報は、コントローラaとインターフェースカードaとの間の伝送チャネルの伝送帯域幅および伝送レートなどを決定するために、ポートネゴシエーションを実行するためにコントローラaおよびインターフェースカードaによって使用され得る。
【0115】
任意選択で、図3-1、図3-2、または図3-3に示されている記憶ノードにおいて、コントローラaとコントローラbとの間に接続リンクがあってもよい。例えば、接続リンクは、リアルタイムで互いのステータスを監視するために、ハートビート情報の伝送に使用される。
【0116】
前述は、図3-1、図3-2、および図3-3を使用して、共有インターフェースデバイス(例えば、共有インターフェースデバイスaおよび共有インターフェースデバイスb)を呼び出すためにコントローラaおよびコントローラbによって必要とされる接続リンクについて説明している。以下は、コントローラaおよびコントローラbによって共有インターフェースデバイスを呼び出すモードを参照して例を使用して、コントローラによって共有インターフェースデバイスを呼び出す制御論理について説明する。
【0117】
本出願のこの実施形態では、記憶ノード内のコントローラによって共有インターフェースデバイスを呼び出すモードは限定されない。任意選択で、呼出しモードは、アクティブ/スタンバイモードまたはアクティブ-アクティブモードであってもよい。
【0118】
(1)アクティブ/スタンバイモード
アクティブ/スタンバイモードでは、記憶ノード内のコントローラは、共有インターフェースデバイスに対して異なる位置を有し、共有インターフェースデバイスのアクティブコントローラとスタンバイコントローラとに分類される。
【0119】
コントローラaおよびコントローラbは、それぞれ共有インターフェースデバイスaのアクティブコントローラおよびスタンバイコントローラであると仮定される。通常の動作状態では、コントローラaは、データ記憶サービスおよびデータ問合せサービスを実行するために共有インターフェースデバイスaを呼び出すことができ、コントローラbは、データ記憶サービスまたはデータ問合せサービスを実行するために共有インターフェースデバイスaを呼び出すことができない。コントローラaに障害が発生したとき、コントローラbは、共有インターフェースデバイスaのキャッシュ内のデータの可用性およびメモリa内のデータの可用性を保証するために、共有インターフェースデバイスaを引き継いで、データ記憶サービスおよび/またはデータ問合せサービスを実行するために共有インターフェースデバイスaを呼び出し得る。
【0120】
図3-2に示されている記憶ノードは、可能な特定のアクティブ/スタンバイ切替えプロセスを説明するための例として使用される。通常の動作状態では、インターフェースカードaのポート21はアクティブ状態にあり、ポート22は非アクティブ状態にある。このようにして、インターフェースカードaは、コントローラaによって呼び出されることができるが、コントローラbによって呼び出されることはできない。コントローラaに障害が発生したとき、コントローラaは、コントローラaとコントローラbとの間のハートビート信号または電源オフ割込み信号を使用してコントローラbに通知し得、コントローラbは、インターフェースカードaのアクティブコントローラになるために競合し得る。コントローラbは、インターフェースカードaのポート21が非アクティブ状態に入り、コントローラaによって呼び出されるのを停止することを可能にし、インターフェースカードaのポート22がアクティブ状態に入り、コントローラbによって呼び出されるのを開始することを可能にするために、アクティブ/スタンバイ切替えイベントをインターフェースカードaに通知し得る。
【0121】
(2)アクティブ-アクティブモード
アクティブ-アクティブモードでは、記憶ノード内のコントローラは、共有インターフェースデバイスに対して同じ位置を有する。任意選択で、コントローラaおよびコントローラbは、異なる時間に共有インターフェースデバイスaまたは共有インターフェースデバイスbを交互に呼び出してもよい。コントローラaが異常で動作できないとき、コントローラbは、共有インターフェースデバイスaおよび/または共有インターフェースデバイスbのキャッシュ内のデータの可用性および接続されたメモリ内のデータの可用性を保証するために、データ問合せサービスを実行するために共有インターフェースデバイスaおよび/または共有インターフェースデバイスbを呼び出し得る。
【0122】
共有インターフェースデバイスを呼び出すための条件が満たされたとき、記憶ノード内のコントローラは、対応する共有インターフェースデバイスのキャッシュおよび共有インターフェースデバイスに接続されたメモリを使用してデータ記憶サービスおよびデータ問合せサービスを提供するために、対応する共有インターフェースデバイスを引き継ぎ得る。以下は、記憶ノード内のコントローラがデータ記憶サービスおよびデータ問合せサービスを提供するために共有インターフェースデバイスを呼び出すプロセスについて説明する。
【0123】
以下は、コントローラaがインターフェースカードaを介してデータ記憶サービスを提供するプロセスについて説明する。
【0124】
図4は、コントローラaがインターフェースカードaを介してデータを記憶する方法手順の例を示す。図4のアプリケーションサーバ以外の構造は、例えば、図3-2に示されている記憶ノードであってもよい。添付の図面を簡略化するために、図4は、コントローラb、インターフェースカードb、およびインターフェースカードbの配下のメモリを具体的に示さず、コントローラa内のPCIeライザデバイスを示さない。本出願で提供されるデータ処理方法の可能な実施形態は、以下のステップS401~S404を含み得る。
【0125】
S401:アプリケーションサーバは、書込み要求1をコントローラaに送信する。
【0126】
アプリケーションサーバは、データ書込み要求1(略して、書込み要求1)をコントローラaに送信し得、書込み要求1は、サービスデータ1を記憶するように要求するために使用される。本出願のこの実施形態における記憶システムは、ソフトウェアシステム、例えば、ファイルシステム、ブロック記憶システム、またはオブジェクト記憶システムを介してデータ記憶サービスを提供し得る。これに対応して、書込み要求1によって要求されたように書き込まれるべきサービスデータは、ファイル、データブロック、またはオブジェクトなどの形態のデータであってもよい。
【0127】
ステップS401は、任意選択のステップである。書込み要求1がアプリケーションサーバによって送信されることは、本出願のこの実施形態では限定されない。任意選択で、書込み要求1は、端末のクライアントによって送信されてもよいし、または記憶システムによって使用されるソフトウェアシステムによって送信されてもよい。任意選択で、サービスデータ1は、ソフトウェアシステムによって生成されたユーザデータまたはシステムデータであってもよい。ソフトウェアシステムの配置場所は、本出願のこの実施形態では限定されない。例えば、ソフトウェアシステムは、コントローラa、コントローラb、もしくは別のコントローラに配置されてもよく、ソフトウェアシステムは、アプリケーションサーバに配置されてもよく、またはソフトウェアシステムは、独立したサーバに配置される。
【0128】
S402:コントローラaは、書込み命令1をインターフェースカードaに送信する。
【0129】
コントローラaは、書込み要求1に基づいて書込み命令1をインターフェースカードaに送信し得、書込み命令1は、データ1を記憶するように命令する。
【0130】
データ1は、サービスデータ1を含むが、これに限定されない。任意選択で、コントローラaは、サービスデータ1を記述するメタデータ1を生成してもよい。これに対応して、データ1は、サービスデータ1およびメタデータ1を含んでもよい。例えば、サービスデータ1がメモリa2に保持されるとき、メタデータ1は、メモリa2内のサービスデータ1の記憶場所を記述してもよい。記憶場所は、論理アドレスまたは物理アドレスであってもよい。
【0131】
S403:インターフェースカードaは、キャッシュおよびメモリa2を使用して、書込み命令1によって命令されたように書き込まれるべきデータ1を記憶する。
【0132】
書込み命令を受信した後、インターフェースカードaは、キャッシュおよびメモリa2を使用してデータ1を記憶し得る。コントローラaおよびコントローラbはインターフェースカードaのキャッシュを共有するため、コントローラaおよびコントローラbによってインターフェースカードaのキャッシュにデータを書き込むことによって生じる競合を低減するために、任意選択で、インターフェースカードaのキャッシュは、コントローラaの書込みパーティション(パーティション1と呼ばれる)とコントローラbの書込みパーティション(パーティション2と呼ばれる)とに分割されてもよい。パーティション1およびパーティション2は、インターフェースカードaのキャッシュ内の2つの異なる記憶空間である。パーティション1とパーティション2とが異なることは、パーティション1に対応する記憶空間とパーティション2に対応する記憶空間とが重ならないことを意味し得る。例えば、ステップS403において、インターフェースカードaは、インターフェースカードaのキャッシュ内のパーティション1およびメモリa2を使用してデータ1を記憶してもよい。
【0133】
書込み命令1を受信した後、インターフェースカードaは、キャッシュを使用してデータ1内の対象データ1をメモリa2に非同期的に書き込み得る。任意選択で、書込み命令1は、書き込まれるべきデータの保持アドレスを示してもよく、保持アドレスは、インターフェースカードaの配下の少なくとも1つのメモリを指し示してもよい。本出願のこの実施形態では、書込み命令1が、対象データ1の保持アドレスがメモリa2を指し示すことを示す例が使用される。保持アドレスは、メモリa2内の論理アドレスまたは物理アドレスであってもよい。例えば、保持アドレスは、論理ブロックアドレス指定(logical block addressing、LBA)モードであってもよい。
【0134】
インターフェースカードaがキャッシュを使用して対象データ1をメモリa2に非同期的に書き込むことは、インターフェースカードaが最初に対象データ1をキャッシュ(例えば、パーティション1)に一時的に記憶し、次に対象データ1をメモリa2に書き込むことを意味し得る。加えて、対象データ1をキャッシュに書き込んだ後で、対象データ1をメモリa2に書き込む前に、インターフェースカードaは、成功通知をコントローラaに送信し、成功通知は、書込み命令1が完了し、対象データ1が記憶されたことをコントローラaに通知するために使用される。任意選択で、コントローラaは、成功通知に基づいて、対象データ1がメモリa2に保持されたと見なしてもよい。
【0135】
任意選択で、対象データ1は、データ1内のすべてのデータであってもよい。あるいは、任意選択で、対象データ1はデータ1内の一部のデータであってもよく、インターフェースカードaは、別の記憶方法でデータ1内の他のデータ(対象データ1を除く)を記憶してもよい。例えば、インターフェースカードaは、他のデータをメモリa2に同期して書き込んでもよい。
【0136】
インターフェースカードaが他のデータをメモリa2に同期して書き込むことは、インターフェースカードaが、他のデータが記憶されたことをコントローラaに通知するために、他のデータをメモリa2に書き込んだ後にのみ成功通知をコントローラaに送信することを意味する。
【0137】
本出願のこの実施形態では、インターフェースカードaが対象データ1および他のデータをメモリa2に保持する例が使用される。任意選択で、インターフェースカードaは、書込み命令1によって命令されたように書き込まれるべきデータを複数のメモリaに記憶してもよく、例えば、対象データ1をメモリa2に保持し、他のデータをメモリa3に保持してもよい。
【0138】
本出願のこの実施形態では、書込み命令1は1つ以上の命令を含んでもよい。例えば、書込み命令1は、対象データ1を書き込むように命令する書込み命令1-1と、他のデータを書き込むように命令する書込み命令1-2とを含んでもよい。
【0139】
任意選択で、インターフェースカードaは、データタイプに基づいて対象データ1を決定してもよい。例えば、対象データ1はメタデータ1であってもよく、他のデータはサービスデータ1であってもよい。あるいは、任意選択で、インターフェースカードaは、データ長に基づいて対象データ1を決定してもよい。例えば、書込み命令1-1のデータ長が長さ閾値未満であり、書込み命令1-2のデータ長が長さ閾値未満であると仮定すると、インターフェースカードaは、キャッシュを使用して、書込み命令1-1によって命令されたように書き込まれるべきデータを非同期的に保持し、書込み命令1-2によって命令されたように書き込まれるべきデータを同期して保持してもよい。メタデータのデータ長は通常小さいため、サービスデータ1の長さも小さい場合、対象データ1は、メタデータ1とサービスデータ1との両方を含んでもよい。
【0140】
任意選択で、書込み命令1は記憶方法を示してもよく、インターフェースカードaは、書込み命令1によって示される記憶方法でデータを記憶してもよい。例えば、書込み命令1-1は非同期記憶を示し、書込み命令1-2は同期記憶を示す。インターフェースカードaのキャッシュを使用することにより、インターフェースカードaは、書込み命令1-1によって命令されたように書き込まれるべきデータをメモリa2に非同期的に記憶し、書込み命令1-2によって命令されたように書き込まれるべきデータをメモリa2に同期して記憶し得る。
【0141】
本出願のこの実施形態では、インターフェースカードaは、キャッシュを使用して対象データ1をメモリa2に非同期的に書き込み、インターフェースカードaが書込み命令1-1から対象データ1を抽出した後に対象データ1をキャッシュにのみ記憶することは限定されない。任意選択で、インターフェースカードaは、書込み命令1-1をキャッシュに記憶し、成功通知をコントローラaに送信した後に、キャッシュ内の書込み命令1-1をメモリa2に送信してもよい。メモリa2は、書込み命令1-1から対象データ1を解析し、対象データ1を記憶してもよい。
【0142】
同様に、インターフェースカードaは、他のデータをメモリa2に同期して書き込み、インターフェースカードaが、書込み命令1-2から他のデータを抽出した後に他のデータのみをメモリa2に送信することは限定されない。任意選択で、インターフェースカードaは、書込み命令1-2をメモリa2に送信してもよく、メモリa2は、書込み命令1-2から他のデータを解析し、他のデータを記憶してもよい。
【0143】
インターフェースカードaとコントローラaとの間の通信プロトコル(例えば、PCIeプロトコル)は、通常、インターフェースカードaとメモリa2またはディスクエンクロージャaとの間の通信プロトコル(例えば、SASプロトコル)とは異なるため、コントローラaによって送信された書込み命令をメモリa2に送信する前に、インターフェースカードaは、書込み命令のフォーマットを変換し得、例えば、書込み命令1のフォーマットをPCIeプロトコルフォーマットからSASプロトコルフォーマットに変換し得る。
【0144】
図4に示されているステップS4031~S4033は、インターフェースカードaがキャッシュを使用して対象データ1をメモリa2に非同期的に書き込む可能な手順の例を示す。図4を参照されたい。ステップS403の可能な詳細なステップは、以下のステップを含み得る。
【0145】
S4031:インターフェースカードaは、対象データ1をパーティション1に一時的に記憶する。
【0146】
書込み命令1を受信した後、インターフェースカードaは、書込み命令1によって命令されたように書き込まれるべき対象データ1をパーティション1に書き込み得る。前述の説明を参照すると、任意選択で、インターフェースカードaのキャッシュは、パーティション1およびパーティション2を含んでもよい。S4031において、インターフェースカードaがインターフェースカードaのキャッシュ内のパーティション1に対象データ1を書き込むことは、限定ではなく例として使用される。
【0147】
任意選択で、書込み命令1は、パーティション1内の対象データ1のキャッシュアドレスをさらに示してもよい。キャッシュアドレスは、論理アドレスまたは物理アドレスであってもよい。インターフェースカードaは、書込み命令1によって示されるキャッシュアドレスに基づいて、対象データ1をパーティション1に記憶してもよい。
【0148】
S4032:インターフェースカードaは、成功通知1をコントローラaに送信する。
【0149】
対象データ1がキャッシュに正常に書き込まれた後、インターフェースカードaは、書込み命令1が完了し、対象データ1が正常に記憶されたことをコントローラaに通知するために、成功通知をコントローラaに送信し得る。
【0150】
S4033:インターフェースカードaは、パーティション1内の対象データ1をメモリa2に書き込む。
【0151】
インターフェースカードaは、キャッシュに一時的に記憶された第1のデータを、インターフェースカードaに接続されたメモリに非同期的に書き込み得る。例えば、対象データ1が正常に記憶されたことをコントローラaに通知した後、インターフェースカードaは、対象データ1を保持するために、キャッシュ内の対象データ1をメモリa2に書き込み得る。任意選択で、図4を参照されたい。インターフェースカードaは、ディスクエンクロージャaを介して対象データ1をメモリa2に記憶してもよい。
【0152】
任意選択で、対象データ1が正常に記憶されたことをコントローラaに通知した後、インターフェースカードaは、保持条件が満たされたときに対象データ1をメモリa2に書き込んでもよい。保持条件は、以下の要因、すなわち、キャッシュの利用可能な記憶空間のサイズ、メモリa2に書き込まれるべき、キャッシュ内のデータの全長、およびメモリa2がアイドル状態であるかどうかのうちの少なくとも1つに関連し得る。
【0153】
メモリa2の記憶効率を向上させるために、任意選択で、インターフェースカードaは、パーティション1内の対象データ1およびキャッシュ内の他のデータをメモリa2に集約的に送信し得る。他のデータは、S402の書込み命令1以外の別の受信された書込み命令によって命令されたように書き込まれるべきデータを含み得る。キャッシュ内の他のデータの場所は、本出願のこの実施形態では限定されない。例えば、他のデータは、パーティション1内のデータおよび/またはパーティション2内のデータを含み得る。
【0154】
図5を参照されたい。インターフェースカードaのキャッシュのパーティション2は、コントローラbによって送信された書込み命令2によって命令されたように書き込まれる対象データ2をさらに記憶すると仮定される。加えて、パーティション1は、コントローラaによって送信された、書込み命令mによって命令されたように書き込まれる対象データmおよび書込み命令nによって命令されたように書き込まれる対象データnをさらに記憶し、パーティション2は、コントローラbによって送信された書込み命令pによって命令されたように書き込まれる対象データpをさらに記憶する。ここで、m、n、およびpは2より大きい正の整数であり、m、n、およびpは互いに等しくない。任意選択で、インターフェースカードaは、パーティション1内の対象データ1および対象データmならびにパーティション2内の対象データ2をメモリa2に集約的に送信してもよい。
【0155】
一例では、対象データ1の保持アドレス(LBA1)、対象データ2の保持アドレス(LBA2)、および対象データmの保持アドレス(LBAm)は、すべてメモリa2を指し示すと仮定される。対象データ1、対象データ2、および対象データmの全長が閾値に達したとき、インターフェースカードaは、対象データ1、対象データ2、および対象データmをメモリa2に集約的に送信し得る。任意選択で、キャッシュ内の対象データの保持アドレスは、上記で説明された対応する書込み命令によって示される記憶アドレスであってもよい。
【0156】
メモリa2の記憶効率をさらに向上させるために、任意選択で、インターフェースカードaは、保持アドレスに隣接するデータをメモリa2に集約的に送信してもよい。さらに図5を参照されたい。対象データnの保持アドレス(LBAn)および対象データpの保持アドレス(LBAp)もメモリa2を指し示すが、LBA1によって示される記憶空間は、LBA2およびLBAmによって示される記憶空間に隣接し、LBA1によって示される記憶空間は、LBAnまたはLBApによって示される記憶空間に隣接しないと仮定される。したがって、インターフェースカードaは、対象データ1および対象データnまたは対象データpをメモリa2に集約的に送信しなくてもよい。
【0157】
インターフェースカードaが対象データ1、対象データ2、および対象データmをメモリa2に集約的に送信することは、インターフェースカードaが1つの命令を使用して対象データ1、対象データ2、および対象データmをメモリa2に配信することを意味し得る。任意選択で、インターフェースカードaは、別の命令を使用して、対象データnおよび対象データpをメモリa2に配信してもよい。あるいは、インターフェースカードaが対象データ1、対象データ2、および対象データmをメモリa2に集約的に送信することは、インターフェースカードaが複数の連続した命令を使用して対象データ1、対象データ2、および対象データmをメモリa2に配信することを意味し得る。複数の命令は、他のデータ(例えば、対象データn、対象データp、またはメモリa2に同期して記憶されたデータ)を記憶するために使用される命令を含まない。
【0158】
インターフェースカードaが対象データ1、対象データ2、および対象データmをメモリa2に集約的に送信することは、インターフェースカードaが対象データ1、対象データ2、および対象データmをメモリa2に連続して送信することとして理解されてもよいことが知られることができる。これは、メモリa2が、対象データ1、対象データ2、および対象データmの記憶タスクを連続して処理するのに役立つ。対象データ1、対象データ2、および対象データmの保持アドレスが隣接する、またはさらには連続するとき、メモリa2の書込みアドレスの大きなジャンプが低減されることができ、アドレス指定期間が低減されることができる。このようにして、メモリa2の記憶効率が向上する。
【0159】
任意選択で、インターフェースカードaまたはコントローラaは、保持条件が満たされたかどうかを決定してもよい。任意選択で、書込み命令1は、対象データ1、対象データ2、および対象データmをメモリa2に集約的に送信するようにさらに命令してもよい。
【0160】
S404:コントローラaは、書込み成功応答1をアプリケーションサーバに送信する。
【0161】
インターフェースカードaを介してデータ1を正常に記憶した後、コントローラaは、書込み成功応答1をアプリケーションサーバに送信し得、書込み成功応答1は、書込み要求1が完了し、サービスデータ1が記憶されたことを通知し得る。任意選択で、インターフェースカードaがデータ1が記憶されたことをコントローラaに通知した後、コントローラaは、サービスデータ1が正常に記憶されたと決定してもよい。
【0162】
前述のステップS403で言及されたように、任意選択で、インターフェースカードaは、キャッシュを使用してデータ1をメモリa2に非同期的に書き込み、データ1をキャッシュに書き込んだ後で、データ1をメモリa2に書き込む前に、データ1が記憶されたことをコントローラaに通知してもよい。これに対応して、コントローラaは、データ1がインターフェースカードaのキャッシュに書き込まれた後で、データ1がメモリa2に保持される前に、書込み成功応答1をアプリケーションサーバに送信してもよい。これは、アプリケーションサーバによって知覚されるデータ記憶レイテンシを低減するのに役立つ。
【0163】
前述のステップS403で言及されたように、任意選択で、インターフェースカードaは、キャッシュを介して対象データ1(例えば、メタデータ1)をメモリa2に非同期的に書き込み、対象データ1をキャッシュに書き込んだ後で、対象データ1をメモリa2に書き込む前に、対象データ1が記憶されたことをコントローラaに通知してもよい。加えて、インターフェースカードaは、データ1内の他のデータ(例えば、サービスデータ1)(対象データ1を除く)をメモリa2に同期して書き込み、他のデータをメモリa2に書き込んだ後に、より具体的には、他のデータをメモリa2に正常に記憶した後に、他のデータが記憶されたことをコントローラaに通知してもよい。これに対応して、コントローラaは、対象データ1がインターフェースカードaのキャッシュに書き込まれた後で、他のデータがメモリa2に保持された後に、書込み成功応答1をアプリケーションサーバに送信してもよい。データ1内のすべてのデータをメモリa2に同期して保持することと比較して、これは、アプリケーションサーバによって検知されるデータ記憶レイテンシを低減するのに役立つ。
【0164】
インターフェースカードaでキャッシュエラーが発生した後にキャッシュ内のデータが利用不可能である場合を回避するために、任意選択で、ステップS402の後に、本出願のこの実施形態における方法は、S405をさらに含み得る。
【0165】
S405:インターフェースカードaは、対象データ1をメモリa1に同期してバックアップする。
【0166】
書込み命令1を受信した後、インターフェースカードaは、対象データ1をメモリa1に同期して書き込み得る。言い換えれば、対象データ1をキャッシュとメモリa1との両方に書き込んだ後で、対象データ1をメモリa2に書き込む前に、インターフェースカードaはステップS4032を実行する。キャッシュに書き込まれたデータは、インターフェースカードaに接続されたメモリa1にバックアップされる。このようにして、キャッシュが異常であっても、例えば、保持されていない、キャッシュ内のデータが失われても、インターフェースカードaは、依然としてキャッシュ内のデータをメモリa1内に見つけることができる。これは、キャッシュ内のデータの可用性を向上させ、記憶システムによって提供されるデータサービスの信頼性を向上させるのに役立つ。
【0167】
任意選択で、メモリa1のメモリアクセスレイテンシは、メモリa2のメモリアクセスレイテンシより短くてもよい。例えば、メモリa1はSSDであってもよく、メモリa2はHDDであってもよい。図4では、メモリa1およびメモリa2が、ディスクエンクロージャを介してインターフェースカードaに接続される例のみが使用されている。任意選択で、メモリa1および/またはメモリa2は、インターフェースカードaに直接接続されてもよい。
【0168】
インターフェースカードaでキャッシュエラーが発生した後にキャッシュ内のデータが利用不可能である場合を回避するために、任意選択で、ステップS401の後に、本出願のこの実施形態における方法は、S406およびS407をさらに含み得る。
【0169】
S406:コントローラaは、対象データ1をメモリc1に記憶する。
【0170】
S407:キャッシュが異常であるとき、コントローラaは、インターフェースカードaを介して対象データ1をメモリa2に転送する。
【0171】
任意選択で、記憶システムは、コントローラaに接続されたメモリc1をさらに含む。書込み要求を受信した後、コントローラaは、対象データ1をメモリc1に書き込むようにさらに構成される。任意選択で、コントローラaは、対象データ1がインターフェースカードaのキャッシュとメモリc1との両方に書き込まれた後にのみ、対象データ1が正常に記憶されたと決定する。
【0172】
キャッシュが異常になった後、コントローラaは、インターフェースカードaを介して、メモリc1内のデータ(対象データ1を含む)をインターフェースカードaの配下のメモリ、例えばメモリa2または別のメモリに転送してもよい。このようにして、キャッシュが異常であっても、例えば、保持されていない、キャッシュ内のデータが失われても、インターフェースカードaは、依然としてキャッシュ内のデータを少なくとも1つのメモリ内に見つけることができる。これは、キャッシュ内のデータの可用性を向上させ、記憶システムによって提供されるデータサービスの信頼性を向上させるのに役立つ。
【0173】
以下は、コントローラbがインターフェースカードaを介してデータ記憶サービスを提供するプロセスについて説明する。
【0174】
図6は、コントローラbがインターフェースカードaを介してデータを記憶する方法手順の例を示す。図6のアプリケーションサーバ以外の構造は、例えば、図3-2に示されている記憶ノードであってもよい。添付の図面を簡略化するために、図6は、インターフェースカードbおよびインターフェースカードbの配下のメモリを具体的に示さず、コントローラaおよびコントローラb内のPCIeライザデバイスを示さない。本出願で提供されるデータ処理方法の別の可能な実施形態は、以下のステップS601~S604を含み得る。
【0175】
S601:アプリケーションサーバは、書込み要求2をコントローラbに送信する。
【0176】
ステップS601は、前述のステップS401を参照して理解され得る。例えば、書込み要求2は、書込み要求1の関連する説明を参照して理解され得る。
【0177】
本出願のこの実施形態では、書込み要求1および書込み要求2が同じデバイスからのものであることは限定されない。例えば、書込み要求1および書込み要求2は、異なるアプリケーションサーバからのものであってもよく、または一方はアプリケーションサーバからのものであり、他方はソフトウェアシステムからのものである。
【0178】
本出願のこの実施形態では、書込み要求1に対応するサービスデータ1および書込み要求2に対応するサービスデータ2が同じタイプのデータであることは限定されない。例えば、サービスデータ1はユーザデータであってもよく、サービスデータ2はシステムデータであってもよい。
【0179】
S602:コントローラbは、書込み命令2をインターフェースカードaに送信する。
【0180】
コントローラbは、書込み要求2に基づいて書込み命令2をインターフェースカードaに送信し得、書込み命令2は、データ2を記憶するように命令する。ステップS602は、ステップS402を参照して理解され得る。例えば、書込み命令2は、書込み命令1の関連する説明を参照して理解され得、データ2は、前述のデータ1を参照して理解され得る。
【0181】
図3-2に示されている接続方法を参照すると、S402とは異なり、インターフェースカードaがコントローラaに挿入されているため、コントローラbがインターフェースカードaに書込み命令2を送信するためのラインは、コントローラaがインターフェースカードaに書込み命令1を送信するためのラインとは異なる。
【0182】
S603:インターフェースカードaは、キャッシュおよびメモリa3を使用して、書込み命令2によって命令されたように書き込まれるべきデータ2を記憶する。
【0183】
書込み命令2を受信した後、インターフェースカードaは、キャッシュおよびメモリa3を使用してデータ2を記憶し得る。本出願のこの実施形態では、メモリa3がメモリa2とは異なることは、限定ではなく例として使用される。任意選択で、インターフェースカードaは、キャッシュおよびメモリa2を使用してデータ2を記憶し得る。
【0184】
ステップS603は、ステップS403を参照して理解され得る。例えば、書込み命令2を受信した後、インターフェースカードbは、キャッシュを使用してデータ2内の対象データ2をメモリa3に非同期的に書き込み得る。任意選択で、対象データ2は、データ2内のすべてのデータであってもよい。あるいは、任意選択で、対象データ2はデータ2内の一部のデータであってもよく、インターフェースカードbは、別の記憶方法でデータ2内の他のデータ(対象データ2を除く)を記憶してもよい。例えば、インターフェースカードbは、他のデータをメモリa3に同期して書き込んでもよい。書込み命令2は、1つ以上の命令を含んでもよい。例えば、書込み命令2は、対象データ2を書き込むように命令する書込み命令2-1と、他のデータを書き込むように命令する書込み命令2-2とを含んでもよい。
【0185】
ステップS403と同様に、図6を参照すると、ステップS603の可能な詳細なステップは、以下のステップを含み得る。
【0186】
S6031:インターフェースカードaは、対象データ2をパーティション2に一時的に記憶する。
【0187】
S6032:インターフェースカードaは、成功通知2をコントローラbに送信する。
【0188】
S6033:インターフェースカードaは、パーティション2内の対象データ2をメモリa3に書き込む。
【0189】
パーティション2は、ステップS403で言及されたパーティション2を参照して理解され得、S6031~S6033は、それぞれS4031~S4033を参照して理解され得る。
【0190】
S604:コントローラbは、書込み成功応答2をアプリケーションサーバに送信する。
【0191】
インターフェースカードaを介してデータ2を正常に記憶した後、コントローラbは、データ記憶サービスを完了するために、書込み成功応答をアプリケーションサーバに送信し得る。任意選択で、インターフェースカードaがデータ2が記憶されたことをコントローラbに通知した後、コントローラbは、データ2が正常に記憶されたと決定してもよい。
【0192】
前述のステップS603で言及したように、任意選択で、インターフェースカードaは、キャッシュを使用してデータ2をメモリa3に非同期的に書き込み、データ2をキャッシュに書き込んだ後で、データ2をメモリa3に書き込む前に、データ2が記憶されたことをコントローラbに通知してもよい。これに対応して、コントローラbは、データ2がインターフェースカードaのキャッシュに書き込まれた後で、データ2がメモリa3に保持される前に、書込み成功応答2をアプリケーションサーバに送信してもよい。これは、アプリケーションサーバによって検知されるデータ記憶レイテンシを低減するのに役立つ。
【0193】
前述のステップS603で言及されたように、任意選択で、インターフェースカードaは、キャッシュを使用して対象データ2(例えば、メタデータ2)をメモリa3に非同期的に書き込み、対象データ2をキャッシュに書き込んだ後で、対象データ2をメモリa3に書き込む前に、対象データ2が記憶されたことをコントローラbに通知してもよい。加えて、インターフェースカードaは、データ2内の他のデータ(例えば、サービスデータ2)(対象データ2を除く)をメモリa3に同期して書き込み、他のデータをメモリa3に書き込んだ後に、より具体的には、他のデータをメモリa3に正常に記憶した後に、他のデータが記憶されたことをコントローラbに通知してもよい。これに対応して、コントローラbは、対象データ2がインターフェースカードaのキャッシュに書き込まれた後で、他のデータがメモリa3に保持された後に、書込み成功応答2をアプリケーションサーバに送信してもよい。データ2内のすべてのデータをメモリa3に同期して保持することと比較して、これは、アプリケーションサーバによって検知されるデータ記憶レイテンシを低減するのに役立つ。
【0194】
インターフェースカードaでキャッシュエラーが発生した後にキャッシュ内のデータが利用不可能である場合を回避するために、任意選択で、ステップS602の後に、本出願のこの実施形態における方法は、S605をさらに含み得る。
【0195】
S605:インターフェースカードaは、対象データ2をメモリa1に同期して書き込む。
【0196】
ステップS605については、ステップS405を参照されたい。ここでは詳細は再び説明されない。例えば、任意選択で、メモリa1のメモリアクセスレイテンシは、メモリa2のメモリアクセスレイテンシより短くてもよい。例えば、メモリa1はSSDであってもよく、メモリa2はHDDであってもよい。図6では、メモリa1およびメモリa2が、ディスクエンクロージャを介してインターフェースカードaに接続される例のみが使用されている。任意選択で、メモリa1および/またはメモリa2は、インターフェースカードaに直接接続されてもよい。
【0197】
インターフェースカードaでキャッシュエラーが発生した後にキャッシュ内のデータが利用不可能である場合を回避するために、任意選択で、ステップS601の後に、本出願のこの実施形態における方法は、S606およびS607をさらに含み得る。
【0198】
S606:コントローラbは、対象データ2をメモリcに記憶する。
【0199】
S607:キャッシュが異常であるとき、コントローラbは、インターフェースカードaを介して対象データ2をメモリa3に転送する。
【0200】
任意選択で、記憶システムは、コントローラbに接続されたメモリc2をさらに含む。書込み要求を受信した後、コントローラbは、対象データ2をメモリc2に書き込むようにさらに構成される。キャッシュが異常になった後、コントローラbは、インターフェースカードaを介して、メモリc2内のデータ(対象データ2を含む)をインターフェースカードaの配下のメモリ、例えばメモリa3または別のメモリに転送してもよい。このようにして、キャッシュが異常であっても、例えば、保持されていない、キャッシュ内のデータが失われても、インターフェースカードaは、依然としてキャッシュ内のデータを少なくとも1つのメモリ内に見つけることができる。これは、キャッシュ内のデータの可用性を向上させ、記憶システムによって提供されるデータサービスの信頼性を向上させるのに役立つ。
【0201】
コントローラbは、インターフェースカードbを介してデータ記憶サービスを提供し得る。図3-2を参照されたい。インターフェースカードbがコントローラbに挿入されているため、コントローラbがインターフェースカードbを介してデータ記憶サービスを提供するプロセスについては、図4に対応する実施形態を参照されたい。具体的には、コントローラbによって実行されるステップについては、図4に対応する実施形態においてコントローラaによって実行されるステップを参照されたく、インターフェースカードbによって実行されるステップについては、図4に対応する実施形態においてインターフェースカードaによって実行されるステップを参照されたい。
【0202】
コントローラaは、インターフェースカードbを介してデータ記憶サービスを提供し得る。図3-2を参照されたい。インターフェースカードbがコントローラbに挿入されているため、コントローラaがインターフェースカードbを介してデータ記憶サービスを提供するプロセスについては、図6に対応する実施形態を参照されたい。具体的には、コントローラaによって実行されるステップについては、図6に対応する実施形態においてコントローラbによって実行されるステップを参照されたく、インターフェースカードbによって実行されるステップについては、図6に対応する実施形態においてインターフェースカードaによって実行されるステップを参照されたい。
【0203】
以下は、コントローラaがインターフェースカードaを介してデータ問合せサービスを提供するプロセスについて説明する。
【0204】
図7は、コントローラaがインターフェースカードaを介してデータを問い合わせる方法手順の例を示す。図7のアプリケーションサーバ以外の構造は、例えば、図3-2に示されている記憶ノードであってもよい。添付の図面を簡略化するために、図7は、コントローラb、インターフェースカードb、およびインターフェースカードbの配下のメモリを具体的に示さず、コントローラa内のPCIeライザデバイスを示さない。本出願で提供されるデータ処理方法の別の可能な実施形態は、以下のステップS701~S704を含み得る。
【0205】
S701:アプリケーションサーバは、読出し要求1をコントローラaに送信する。
【0206】
アプリケーションサーバは、データ読出し要求1(略して、読出し要求1)をコントローラaに送信し得、読出し要求1は、サービスデータ3を読み出すように要求するために使用される。サービスデータ3は、S401で説明されたサービスデータ1またはS601で説明されたサービスデータ2であってもよい。本出願のこの実施形態では、読出し要求1がアプリケーションサーバによって送信されることは、限定ではなく例として使用される。読出し要求1の別の可能なソースについては、S401の関連する内容を参照されたい。
【0207】
S702:コントローラaは、読出し命令1をインターフェースカードaに送信する。
【0208】
読出し要求1を受信した後、コントローラaは、読出し命令1をインターフェースカードaに送信し得、読出し命令1は、データ3を問い合わせるように命令する。データ3は、サービスデータ2であってもよいし、またはサービスデータ2とサービスデータ2以外のデータとを含んでもよい。
【0209】
S703:インターフェースカードaは、キャッシュおよび接続されたメモリに、読出し命令1によって命令されたように読み出されるべきデータ3を問い合わせ、データ3をコントローラaに提供する。
【0210】
読出し命令1を受信した後、インターフェースカードaは、データ3を問い合わせ得る。問合せ範囲は、インターフェースカードaのキャッシュと、インターフェースカードaに接続されたメモリ(例えば、メモリa1、メモリa2、およびメモリa3)とを含み得る。
【0211】
問合せ範囲内のインターフェースカードaの問合せ方法は、本出願のこの実施形態では限定されない。任意選択で、インターフェースカードaは、データ3を問い合わせるためにキャッシュ、メモリa1、メモリa2、およびメモリa3をトラバースしてもよい。次に、インターフェースカードaは、1つ以上の問合せ結果をコントローラaに返してもよい。あるいは、任意選択で、インターフェースカードaは、特定の順序でキャッシュおよび接続されたメモリに順次アクセスしてもよく、データ3が見つけられたら、インターフェースカードaはデータ3の検索を停止する。例えば、インターフェースカードaは、最初にキャッシュ内のデータ3を検索してもよい。データ3が見つけられた場合、インターフェースカードaはデータ3をコントローラaに返し、またはデータ3が見つけられなかった場合、インターフェースカードaは、メモリa1内のデータ3を引き続き検索する。インターフェースカードaがメモリa1内のデータ3を見つけた場合、インターフェースカードaはデータ3をコントローラaに返し、またはインターフェースカードaがメモリa1内のデータ3を見つけられなかった場合、インターフェースカードaは、メモリa2内の対象データ3を引き続き検索する。類推すると、コントローラaは、最初に見つけられたデータ3をコントローラaに返してもよく、データ3の検索を停止する。コントローラaは、すべての検索範囲内にデータ3を見つけられなかった場合、コントローラaは、問合せが失敗したことをコントローラに通知してもよい。
【0212】
本出願のこの実施形態では、データ3は対象データ3を含んでもよく、対象データ3は第1の対象データの全部または一部であってもよい。第1の対象データは、S403で言及された対象データ1であってもよいし、またはS603で言及された対象データ2であってもよい。インターフェースカードaは、キャッシュを使用して第1の対象データを一時的に記憶するため、第1の対象データが保持される前にインターフェースカードaが読出し命令1を受信した場合、インターフェースカードaは、読出し命令1に従ってキャッシュから対象データ3の全部または一部を取得し得る。
【0213】
S403の内容を参照されたい。インターフェースカードaのキャッシュは、図7に示されているパーティション1とパーティション2とに分割されてもよい。パーティション1は、コントローラaのためのデータを記憶するために使用されてもよく、パーティション2は、コントローラbのためのデータを記憶するために使用されてもよい。インターフェースカードaがキャッシュ内の対象データ3を問い合わせる問合せ範囲は、パーティション1およびパーティション2を含んでもよい。対象データ3が対象データ1の全部または一部である場合、インターフェースカードaは、パーティション1から対象データ3の全部または一部を取得し得、または対象データ3が対象データ2の全部または一部である場合、インターフェースカードaは、パーティション2から対象データ3の全部または一部を取得し得る。図7において、プロセッサとパーティション2との間の矢印を有する実線は、プロセッサがパーティション2内の対象データ3を見つけることを示し得、プロセッサとパーティション1またはディスクエンクロージャaとの間の矢印を有する破線は、プロセッサが対象データ3を検索する範囲がパーティション1およびディスクエンクロージャaを含むことを示し得る。
【0214】
第1の対象データが保持された後にインターフェースカードaが読出し命令1を受信した場合、インターフェースカードaは、読出し命令1に従って、接続されたメモリ(例えば、メモリa1、メモリa2、またはメモリa3)から対象データ3の全部または一部を取得し得る。
【0215】
ステップS405またはS605を参照されたい。インターフェースカードaは、第1の対象データをメモリa1に同期してバックアップすると仮定される。このようにして、キャッシュ内の対象データ3が保持されていないかまたは完全に保持されておらず、キャッシュが異常である場合、インターフェースカードaは、メモリa1から対象データ3の全部または一部を取得し得る。これは、キャッシュ内のデータの可用性を向上させるのに役立つ。
【0216】
ステップS406およびS407を参照されたく、またはステップS606およびS607を参照されたい。コントローラaは対象データ1をメモリc1にバックアップし、またはコントローラbは対象データ2をメモリc2にバックアップし、キャッシュが異常になった後、コントローラaは、バックアップデータをメモリa2に転送し、またはコントローラbは、バックアップデータをメモリa3に転送すると仮定される。このようにして、キャッシュ内の対象データ3が保持されていないかまたは完全に保持されておらず、キャッシュが異常である場合、インターフェースカードaは、メモリa2またはメモリa3から対象データ3の全部または一部を取得し得る。これは、キャッシュ内のデータの可用性を向上させるのに役立つ。
【0217】
任意選択で、読出し命令1は、データ3の検索範囲を示してもよく、例えば、インターフェースカードaのキャッシュおよびディスクエンクロージャaの配下のメモリにデータ3を問い合わせるように命令してもよい。本出願のこの実施形態では、インターフェースカードaがデータ3内の他のデータ(対象データ3を除く)を問い合わせる方法は限定されない。任意選択で、インターフェースカードaはまた、キャッシュおよび接続されたメモリに他のデータを問い合わせてもよいし、または接続されたメモリのみに他のデータを問い合わせてもよい。他のデータを見つけた後、インターフェースカードaは、他のデータをコントローラaに返してもよい。他のデータが見つけられなかった場合、コントローラaは、問合せが失敗したことをコントローラに通知してもよい。
【0218】
本出願のこの実施形態では、読出し命令1は1つ以上の命令を含んでもよい。例えば、読出し命令1は、対象データ3を問い合わせるように命令する読出し命令1-1と、対象データ3以外のデータを問い合わせるように命令する読出し命令1-2とを含んでもよい。読出し命令1-1は、インターフェースカードaのキャッシュおよびインターフェースカードaの配下のメモリに対象データ3を問い合わせるように命令してもよく、読出し命令1-2は、インターフェースカードaの配下のメモリに他のデータを問い合わせるように命令する。
【0219】
例えば、対象データ3は、サービスデータ3を記述するメタデータ3である。メタデータ3は、メモリa3内のサービスデータ3の記憶場所を記述すると仮定される。キャッシュからメタデータ3を取得した後、インターフェースカードaは、メタデータ3に基づいてメモリa3からサービスデータ3を取得し得る。
【0220】
S704:コントローラaは、問合せ結果1をアプリケーションサーバに送信する。
【0221】
コントローラaがインターフェースカードaによって返されたデータ3を受信した場合、コントローラaは、データ3からサービスデータ3を取得し、サービスデータ3を搬送する問合せ結果1をアプリケーションサーバに送信し得る。
【0222】
コントローラaが、特定の期間内に、インターフェースカードaによって返されるデータ3を受信しないか、またはインターフェースカードaが問合せ失敗をフィードバックした場合、コントローラaは、サービスデータ3を搬送しない問合せ結果1をアプリケーションサーバに送信し得、問合せ結果は、サービスデータ3が見つけられることができないことを示す。
【0223】
図7を参照されたい。対象データ3がパーティション2に記憶されていると仮定される。対象データ3は、コントローラbのためにインターフェースカードaによって記憶されたデータであることが理解され得る。このようにして、コントローラbに障害が発生しても、インターフェースカードaは、コントローラaに対して、パーティション2内のコントローラbのデータを問い合わせ得、コントローラaは、そのデータをアプリケーションサーバに送信する。これは、インターフェースカードaのキャッシュ内のコントローラbのデータの可用性を保証するのに役立ち、したがって、記憶システムの信頼性を向上させるのに役立つ。
【0224】
以下は、コントローラbがインターフェースカードaを介してデータ問合せサービスを提供するプロセスについて説明する。
【0225】
図8は、コントローラbがインターフェースカードaを介してデータを問い合わせる方法手順の例を示す。図8のアプリケーションサーバ以外の構造は、例えば、図3-2に示されている記憶ノードであってもよい。添付の図面を簡略化するために、図8は、インターフェースカードbおよびインターフェースカードbの配下のメモリを具体的に示さず、コントローラaおよびコントローラb内のPCIeライザデバイスを示さない。本出願で提供されるデータ処理方法の別の可能な実施形態は、以下のステップS801~S804を含み得る。
【0226】
S801:アプリケーションサーバは、読出し要求2をコントローラbに送信する。
【0227】
ステップS801は、前述のステップS701を参照して理解され得る。例えば、読出し要求2は、読出し要求1の関連する説明を参照して理解され得る。
【0228】
本出願のこの実施形態では、読出し要求1および読出し要求2が同じデバイスからのものであることは限定されない。例えば、読出し要求1および読出し要求2は、異なるアプリケーションサーバからのものであってもよく、または一方はアプリケーションサーバからのものであり、他方はソフトウェアシステムからのものである。
【0229】
S802:コントローラbは、読出し命令2をインターフェースカードaに送信する。
【0230】
読出し要求2を受信した後、コントローラbは、読出し命令2をインターフェースカードaに送信し得、読出し命令2は、データ4を問い合わせるように命令する。
【0231】
ステップS802は、ステップS702を参照して理解され得る。図3-2に示されている接続方法を参照すると、S702とは異なり、インターフェースカードaがコントローラaに挿入されているため、コントローラbがインターフェースカードaに読出し命令2を送信するためのラインは、コントローラaがインターフェースカードaに読出し命令1を送信するためのラインとは異なる。
【0232】
S803:インターフェースカードaは、キャッシュおよび接続されたメモリに、読出し命令2によって命令されたように読み出されるべきデータ4を問い合わせ、データ4をコントローラbに提供する。
【0233】
読出し命令2を受信した後、インターフェースカードaは、キャッシュおよびインターフェースカードaに接続されたメモリ(例えば、メモリa1、メモリa2、およびメモリa3)内に、読出し命令2によって命令されたように読み出されるべきデータ4を問い合わせ得る。
【0234】
ステップS803は、ステップS703を参照して理解され得る。
【0235】
例えば、データ4は、対象データ4を含んでもよく、対象データ4は、第1の対象データの全部または一部であってもよい。第1の対象データは、S403で言及された対象データ1であってもよいし、またはS603で言及された対象データ2であってもよい。インターフェースカードaは、キャッシュを使用して第1の対象データを一時的に記憶するため、第1の対象データが保持される前にインターフェースカードaが読出し命令2を受信した場合、インターフェースカードaは、読出し命令2に従ってキャッシュから対象データ4の全部または一部を取得し得る。
【0236】
例えば、読出し命令2は、1つ以上の命令を含んでもよい。例えば、読出し命令2は、対象データ4を問い合わせるように命令する読出し命令2-1と、対象データ4以外のデータを問い合わせるように命令する読出し命令2-2とを含んでもよい。読出し命令2-1は、インターフェースカードaのキャッシュおよびインターフェースカードaの配下のメモリに対象データ4を問い合わせるように命令してもよく、読出し命令2-2は、インターフェースカードaの配下のメモリに他のデータを問い合わせるように命令する。
【0237】
例えば、第1の対象データが保持された後にインターフェースカードaが読出し命令2を受信した場合、インターフェースカードaは、読出し命令2に従って、接続されたメモリ(例えば、メモリa1、メモリa2、またはメモリa3)から対象データ4の全部または一部を取得し得る。
【0238】
例えば、ステップS405またはS605を参照されたい。インターフェースカードaは、第1の対象データをメモリa1に同期してバックアップすると仮定される。このようにして、キャッシュ内の対象データ4が保持されていないかまたは完全に保持されておらず、キャッシュが異常である場合、インターフェースカードaは、メモリa1から対象データ4の全部または一部を取得し得る。これは、キャッシュ内のデータの可用性を向上させるのに役立つ。
【0239】
例えば、ステップS406およびS407を参照されたく、またはステップS606およびS607を参照されたい。コントローラaは対象データ1をメモリc1にバックアップし、またはコントローラbは対象データ2をメモリc2にバックアップし、キャッシュが異常になった後、コントローラaは、バックアップデータをメモリa2に転送し、またはコントローラbは、バックアップデータをメモリa3に転送すると仮定される。このようにして、キャッシュ内の対象データ4が保持されていないかまたは完全に保持されておらず、キャッシュが異常である場合、インターフェースカードaは、メモリa2またはメモリa3から対象データ4の全部または一部を取得し得る。これは、キャッシュ内のデータの可用性を向上させるのに役立つ。
【0240】
S804:コントローラbは、問合せ結果2をアプリケーションサーバに送信する。
【0241】
コントローラbがインターフェースカードaによって返されたデータ4を受信した場合、コントローラbは、データ4からサービスデータ4を取得し、サービスデータ4を搬送する問合せ結果をアプリケーションサーバに送信し得る。
【0242】
コントローラbが、特定の期間内に、インターフェースカードaによって返されるデータ4を受信しないか、またはインターフェースカードaが問合せ失敗をフィードバックした場合、コントローラbは、サービスデータ4を搬送しない問合せ結果をアプリケーションサーバに送信し得、問合せ結果は、サービスデータ4が見つけられることができないことを示す。
【0243】
図8を参照されたい。対象データ4がパーティション1に記憶されていると仮定される。対象データ4は、コントローラaのためにインターフェースカードaによって記憶されたデータであることが理解され得る。このようにして、コントローラaに障害が発生しても、インターフェースカードaは、コントローラbに対して、パーティション1内のコントローラaのデータを問い合わせ得、コントローラbは、そのデータをアプリケーションサーバに送信する。これは、インターフェースカードaのキャッシュ内のコントローラaのデータの可用性を保証するのに役立ち、したがって、記憶システムの信頼性を向上させるのに役立つ。
【0244】
コントローラbは、インターフェースカードbを介してデータ問合せサービスを提供し得る。図3-2を参照されたい。インターフェースカードbがコントローラbに挿入されているため、コントローラbがインターフェースカードbを介してデータ問合せサービスを提供するプロセスについては、図7に対応する実施形態を参照されたい。具体的には、コントローラbによって実行されるステップについては、図7に対応する実施形態においてコントローラaによって実行されるステップを参照されたく、インターフェースカードbによって実行されるステップについては、図7に対応する実施形態においてインターフェースカードaによって実行されるステップを参照されたい。
【0245】
コントローラaは、インターフェースカードbを介してデータ問合せサービスを提供し得る。図3-2を参照されたい。インターフェースカードbがコントローラbに挿入されているため、コントローラaがインターフェースカードbを介してデータ記憶サービスを提供するプロセスについては、図8に対応する実施形態を参照されたい。具体的には、コントローラaによって実行されるステップについては、図8に対応する実施形態においてコントローラbによって実行されるステップを参照されたく、インターフェースカードbによって実行されるステップについては、図8に対応する実施形態においてインターフェースカードaによって実行されるステップを参照されたい。
【0246】
図3-3に対応する記憶ノード内の各コントローラによって提供されるデータ記憶サービスおよびデータ問合せサービスについては、上記で説明された図3-2に対応する記憶ノード内の対応するコントローラによって提供される対応するサービスをそれぞれ参照されたい。例えば、図4に対応する実施形態のインターフェースカードaをディスクエンクロージャaに置き換えることによって、図3-3に示されているコントローラaがディスクエンクロージャaを介してデータ記憶サービスを提供するプロセスが決定され得る。
【0247】
前述は、本出願の実施形態で提供される記憶システムおよび記憶システムに関連するデータ処理方法について詳細に説明している。本出願の実施形態における前述の解決策をより良く実施するために、これに対応して、以下は、前述の解決策を実施する際に協働するように構成された関連デバイスをさらに提供する。
【0248】
図9は、本出願の一実施形態による共有インターフェースデバイスの構造の概略図である。共有インターフェースデバイスは、図3-1の方法実施形態における共有インターフェースデバイスaもしくは共有インターフェースデバイスbであってもよく、または図3-2もしくは図3-3の方法実施形態におけるインターフェースカードaもしくはインターフェースカードbであってもよく、対応する実施形態の方法において対応する共有インターフェースデバイスによって実行される方法およびステップを実行してもよい。第1のコントローラおよび第2のコントローラは、共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信する。図9に示されているように、共有インターフェースデバイス900は、受信モジュール901と、記憶モジュール902と、問合せモジュール903とを含む。
【0249】
受信モジュール901は、第1のコントローラによって送信された書込み命令を受信するように構成される。具体的な実施態様については、図4のステップS402の関連する説明を参照されたく、または図6のステップS602の関連する説明を参照されたい。ここでは詳細は再び説明されない。
【0250】
記憶モジュール902は、書込み命令によって命令されたように書き込まれるべき第1のデータを記憶モジュール902のキャッシュに一時的に記憶するように構成され、キャッシュに一時的に記憶された第1のデータを少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むようにさらに構成される。具体的な実施態様については、ステップS403の関連する説明を参照されたい。例えば、詳細については、ステップS4031またはステップS4031~S4033の関連する説明を参照されたく、またはステップS603の関連する説明を参照されたい。例えば、詳細については、ステップS6031またはステップS6031~S6033の関連する説明を参照されたい。ここでは詳細は再び説明されない。
【0251】
受信モジュール901は、第1のコントローラに障害が発生した後に第2のコントローラによって送信された読出し命令を受信し、読出し命令は、第2のデータを問い合わせるように命令し、第2のデータは第1のデータの全部または一部である、ようにさらに構成される。具体的な実施態様については、図7のステップS702の関連する説明を参照されたく、または図8のステップS802の関連する説明を参照されたい。ここでは詳細は再び説明されない。
【0252】
問合せモジュール903は、読出し命令に従って、キャッシュから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供するように構成される。具体的な実施態様については、図7のステップS703の関連する説明を参照されたく、または図8のステップS803の関連する説明を参照されたい。ここでは詳細は再び説明されない。
【0253】
任意選択で、キャッシュは、第1のパーティションおよび第2のパーティションを含む。第1のパーティションは、第1のコントローラのためのデータを一時的に記憶するために使用されるが、第2のコントローラのためのデータを一時的に記憶するためには使用されない。第2のパーティションは、第2のコントローラのためのデータを一時的に記憶するために使用されるが、第1のコントローラのためのデータを一時的に記憶するためには使用されない。問合せモジュール903がキャッシュ内の第2のデータの全部または一部を取得する問合せ範囲は、第1のパーティションおよび第2のパーティションを含む。
【0254】
任意選択で、書込み命令は、第1のデータを第1のメモリに書き込むように命令し、記憶モジュール902は、具体的には、第1のデータを第1のパーティションに一時的に記憶するように構成される。記憶モジュール902は、第1のパーティションに一時的に記憶された第1のデータと、第2のパーティションに一時的に記憶された第2のデータとを第1のメモリに連続して送信し、第1のデータは、第1のコントローラによって命令されたように第1のメモリに書き込まれたデータを含み、第2のデータは、第2のコントローラによって命令されたように第1のメモリに書き込まれたデータを含む、ようにさらに構成される。
【0255】
任意選択で、少なくとも1つのメモリは第2のメモリをさらに含み、第2のメモリのメモリアクセスレイテンシは、第1のメモリのメモリアクセスレイテンシより短い。記憶モジュール902は、書込み命令を受信した後に第1のデータを第2のメモリに同期してバックアップし、キャッシュが異常であるときに、読出し命令に従って第2のメモリから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供するようにさらに構成される。
【0256】
任意選択で、記憶システムは、第1のコントローラに接続された第3のメモリをさらに含む。問合せモジュール903は、受信モジュール901が読出し命令を受信した後で、キャッシュが異常であるときに、読出し命令に従って、接続された第4のメモリから第2のデータの全部または一部を取得し、第2のデータの全部または一部を第2のコントローラに提供するようにさらに構成される。第4のメモリ内の第2のデータの全部または一部は、キャッシュが異常になった後に、第1のコントローラによって第3のメモリから共有インターフェースデバイスを介して第4のメモリに転送され、第3のメモリ内のデータは、第1のコントローラによってバックアップされた第1のデータを含む。
【0257】
任意選択で、データは、サービスデータおよび/またはサービスデータのメタデータを含み、サービスデータは、第1のコントローラによって受信されるデータ書込み要求によって要求されたように書き込まれるべきデータである。
【0258】
任意選択で、共有インターフェースデバイスは、インターフェースカードまたはディスクエンクロージャであり、インターフェースカードは、第1のコントローラまたは第2のコントローラに挿入され、ディスクエンクロージャは、少なくとも1つのメモリを組み込むように構成される。
【0259】
任意選択で、共有インターフェースデバイスは、周辺構成要素相互接続エクスプレスPCIeプロトコルを使用して第1のコントローラおよび/または第2のコントローラと通信する。
【0260】
本出願の一実施形態は、コンピューティングデバイスをさらに提供する。第1のコントローラおよび第2のコントローラは、コンピューティングデバイスを介して少なくとも1つのメモリと別々に通信する。コンピューティングデバイスは、メモリおよびプロセッサを含む。メモリは、キャッシュを含む。プロセッサは、コンピューティングデバイスが上記で説明された共有インターフェースデバイスaまたは共有インターフェースデバイスbによって実行される方法を実行することを可能にするために、メモリに記憶されたコンピュータ命令を実行する。任意選択で、コンピューティングデバイスは、例えば、図3-2に示されているインターフェースカードaもしくはインターフェースカードbであってもよく、または例えば、図3-3に示されているディスクエンクロージャaもしくはディスクエンクロージャbであってもよい。
【0261】
本出願は、コンピュータ可読記憶媒体をさらに提供する。コンピュータ可読記憶媒体は、コンピュータプログラムを記憶する。コンピュータプログラムがプロセッサによって実行されるとき、前述の方法実施形態のいずれか1つに記録された一部または全部のステップが実施され得る。
【0262】
本発明の一実施形態は、コンピュータプログラムをさらに提供する。コンピュータプログラムは命令を含み、コンピュータプログラムがコンピュータによって実行されるとき、コンピュータは、領域リソースをプロビジョニングするためのいずれかの方法の一部または全部のステップを実行し得る。
【0263】
前述の実施形態では、各実施形態の説明はそれぞれの焦点を有する。一実施形態で詳細に説明されていない部分については、他の実施形態の関連する説明を参照されたい。
【0264】
当業者は、前述のコンピュータ可読記憶媒体が、プログラムコードを記憶することができる任意の非一時的(non-transitory)機械可読媒体、例えば、USBフラッシュドライブ、リムーバブルハードディスクドライブ、磁気ディスク、光ディスク、RAM、SSD、または不揮発性メモリ(non-volatile memory)を含むことを理解し得る。
【0265】
簡単な説明のために、前述の方法実施形態は、一連の動作の組合せとして表されていることに留意されたい。しかしながら、当業者は、一部のステップが本出願に従って他の順序でまたは同時に実行され得るため、本出願が説明された動作順序に限定されないことを理解すべきである。本明細書で説明された実施形態はすべて例示的な実施形態に属し、関連する動作およびモジュールは必ずしも本出願によって必要とされないことが、当業者によってさらに認められるはずである。本出願の実施形態における「Aおよび/またはB」は、2つの解決策、すなわち「AおよびB」ならびに「AまたはB」として理解され得る。
【0266】
本出願の明細書、特許請求の範囲、および添付の図面において、「第1の」、「第2の」、「第3の」、および「第4の」などの用語は、同様の対象を区別することを意図されているが、必ずしも特定の順番または順序を示さない。そのように使用される用語は、適切な場合に交換可能であり、これは、本出願の実施形態において同じ属性を有する対象を説明するための区別方法にすぎないことを理解されたい。
【0267】
本出願で提供されるいくつかの実施形態では、開示されている装置は他の方法で実施され得ることを理解されたい。例えば、説明されている装置実施形態は例にすぎない。例えば、ユニットへの分割は、論理的な機能の分割にすぎず、実際の実施時には他の分割であってもよい。例えば、複数のユニットまたは構成要素は、別のシステムに組み合わされてもよく、もしくは統合されてもよく、または一部の特徴は無視されてもよい、もしくは実行されなくてもよい。加えて、提示されたまたは述べられた相互結合または直接的な結合もしくは通信接続は、いくつかのインターフェースを介して実施されてもよい。装置またはユニット間の間接的な結合または通信接続は、電子的なまたは他の形態で実施されてもよい。
【0268】
別個の部分として説明されているユニットは、物理的に別個であってもなくてもよく、ユニットとして提示されている部分は物理ユニットであってもなくてもよく、1つの場所に配されてもよく、または複数のネットワークユニットに分散されてもよい。実施形態の解決策の目的を達成するために、実際の要件に基づいて、ユニットの一部または全部が選択されてもよい。
【0269】
加えて、本出願の実施形態における機能ユニットは、1つの処理ユニットに統合されてもよいし、またはユニットの各々は物理的に単独で存在してもよいし、または2つ以上のユニットが、1つのユニットに統合される。統合ユニットは、ハードウェアの形態で実施されてもよいし、またはソフトウェア機能ユニットの形態で実施されてもよい。
【0270】
最後に、前述の実施形態は、本発明を限定することではなく、本出願の技術的解決策を説明すること意図されているにすぎないことに留意されたい。
【符号の説明】
【0271】
11 ポート
12 ポート
13 ポート
14 ポート
21 ポート
22 ポート
23 ポート
31 ポート
32 ポート
900 共有インターフェースデバイス
901 受信モジュール
902 記憶モジュール
903 問合せモジュール
図1
図2
図3-1】
図3-2】
図3-3】
図4
図5
図6
図7
図8
図9
【手続補正書】
【提出日】2024-07-12
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
記憶システムであって、前記記憶システムは、第1のコントローラおよび第2のコントローラを備え、前記第1のコントローラおよび前記第2のコントローラは、キャッシュが配置された共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信し、
前記第1のコントローラは、第1のデータを書き込むように命令する書込み命令を前記共有インターフェースデバイスに送信するように構成され、
前記共有インターフェースデバイスは、前記第1のデータを前記キャッシュに一時的に記憶するように構成され、前記キャッシュに一時的に記憶された前記第1のデータを前記少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むようにさらに構成され、
前記第2のコントローラは、前記第1のコントローラに障害が発生した後に読出し命令を前記共有インターフェースデバイスに送信し、前記読出し命令は、第2のデータを問い合わせるように命令し、前記第2のデータは前記第1のデータの全部または一部である、ように構成され、
前記共有インターフェースデバイスは、前記読出し命令に従って、前記キャッシュから前記第2のデータの全部または一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供するようにさらに構成される、記憶システム。
【請求項2】
前記第2のコントローラは、第3のデータを書き込むように命令する書込み命令を前記共有インターフェースデバイスに送信するようにさらに構成され、
前記共有インターフェースデバイスは、前記第3のデータを前記キャッシュに一時的に記憶するようにさらに構成され、前記キャッシュに一時的に記憶された前記第3のデータを前記第1のメモリに非同期的に書き込むようにさらに構成される、
請求項1に記載の記憶システム。
【請求項3】
前記キャッシュは、第1のパーティションおよび第2のパーティションを備え、前記第1のパーティションは、前記第1のコントローラのためのデータを一時的に記憶するために使用され、前記第2のパーティションは、前記第2のコントローラのためのデータを一時的に記憶するために使用され、前記共有インターフェースデバイスが前記キャッシュ内の前記第2のデータの前記全部または前記一部を取得する問合せ範囲は、前記第1のパーティションおよび前記第2のパーティションを含む、請求項1に記載の記憶システム。
【請求項4】
前記共有インターフェースデバイスは、具体的には、
前記第1のパーティションに前記第1のデータを一時的に記憶し、前記第2のパーティションに前記第3のデータを一時的に記憶し、
前記第1のパーティションに一時的に記憶された前記第1のデータと、前記第2のパーティションに一時的に記憶された前記第3のデータとを前記第1のメモリに連続して送信する
ように構成される、請求項3に記載の記憶システム。
【請求項5】
前記少なくとも1つのメモリは第2のメモリをさらに備え、前記第2のメモリのメモリアクセスレイテンシは、前記第1のメモリのメモリアクセスレイテンシより短く、前記共有インターフェースデバイスは、
前記書込み命令を受信した後に前記第1のデータを前記第2のメモリに同期してバックアップし、
前記キャッシュが異常であるときに、前記読出し命令に従って、前記第2のメモリから前記第2のデータの前記全部または前記一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供する
ようにさらに構成される、請求項1から4のいずれか一項に記載の記憶システム。
【請求項6】
前記記憶システムは、前記第1のコントローラに接続された第3のメモリをさらに備え、前記第1のコントローラは、
前記第1のデータを前記第3のメモリにバックアップし、
前記キャッシュが異常であるときに、前記共有インターフェースデバイスを介して、前記第3のメモリにバックアップされたデータを前記少なくとも1つのメモリ内の第4のメモリに転送する
ようにさらに構成され、
前記共有インターフェースデバイスは、
前記キャッシュが異常であるときに、前記読出し命令に従って、前記第4のメモリから前記第2のデータの前記全部または前記一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供する
ようにさらに構成される、請求項1から4のいずれか一項に記載の記憶システム。
【請求項7】
前記データは、サービスデータおよび/または前記サービスデータのメタデータを含み、前記サービスデータは、前記第1のコントローラによって受信されるデータ書込み要求によって要求されたように書き込まれるべきデータである、請求項1から4のいずれか一項に記載の記憶システム。
【請求項8】
前記共有インターフェースデバイスは、インターフェースカードまたはディスクエンクロージャであり、前記インターフェースカードは、前記第1のコントローラまたは前記第2のコントローラに挿入され、前記ディスクエンクロージャは、前記少なくとも1つのメモリを組み込むように構成される、請求項1から4のいずれか一項に記載の記憶システム。
【請求項9】
前記共有インターフェースデバイスは、周辺構成要素相互接続エクスプレス(PCIe)プロトコルを使用して前記第1のコントローラおよび/または前記第2のコントローラと通信する、請求項1から4のいずれか一項に記載の記憶システム。
【請求項10】
前記少なくとも1つのメモリの各々は、前記共有インターフェースデバイスと通信するための単一のポートのみを有する、請求項1から4のいずれか一項に記載の記憶システム。
【請求項11】
データ処理方法であって、記憶システムが、第1のコントローラおよび第2のコントローラを備え、前記第1のコントローラおよび前記第2のコントローラは、キャッシュが配置された共有インターフェースデバイスを介して少なくとも1つのメモリと別々に通信し、前記方法は、
前記第1のコントローラによって、第1のデータを書き込むように命令する書込み命令を前記共有インターフェースデバイスに送信するステップと、
前記共有インターフェースデバイスによって、前記第1のデータを前記キャッシュに一時的に記憶するステップ、および前記キャッシュに一時的に記憶された前記第1のデータを前記少なくとも1つのメモリ内の第1のメモリに非同期的に書き込むステップと、
前記第2のコントローラによって、前記第1のコントローラに障害が発生した後に読出し命令を前記共有インターフェースデバイスに送信するステップであって、前記読出し命令は、第2のデータを問い合わせるように命令し、前記第2のデータは前記第1のデータの全部または一部である、ステップと、
前記共有インターフェースデバイスによって、前記読出し命令に従って、前記キャッシュから前記第2のデータの全部または一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供するステップと
を含む、データ処理方法。
【請求項12】
前記方法は、
前記第2のコントローラによって、第3のデータを書き込むように命令する書込み命令を前記共有インターフェースデバイスに送信するステップと、
前記共有インターフェースデバイスによって、前記第3のデータを前記キャッシュに一時的に記憶するステップ、および前記キャッシュに一時的に記憶された前記第3のデータを前記第1のメモリに非同期的に書き込むステップと
をさらに含む、請求項11に記載の方法。
【請求項13】
前記キャッシュは、第1のパーティションおよび第2のパーティションを備え、前記第1のパーティションは、前記第1のコントローラのためのデータを一時的に記憶するために使用され、前記第2のパーティションは、前記第2のコントローラのためのデータを一時的に記憶するために使用され、前記共有インターフェースデバイスが前記キャッシュ内の前記第2のデータの前記全部または前記一部を取得する問合せ範囲は、前記第1のパーティションおよび前記第2のパーティションを含む、請求項11に記載の方法。
【請求項14】
前記共有インターフェースデバイスによって、前記第1のデータおよび前記第3のデータを前記キャッシュに一時的に記憶する前記ステップは、
前記共有インターフェースデバイスによって、前記第1のパーティションに前記第1のデータを一時的に記憶し、前記第2のパーティションに前記第3のデータを一時的に記憶するステップ
を含み、
前記共有インターフェースデバイスによって、前記キャッシュに一時的に記憶された前記第1のデータおよび前記第3のデータを前記第1のメモリに非同期的に書き込む前記ステップは、
前記共有インターフェースデバイスによって、前記第1のパーティションに一時的に記憶された前記第1のデータおよび前記第2のパーティションに一時的に記憶された前記第3のデータを前記第1のメモリに連続して送信するステップ
を含む、請求項13に記載の方法。
【請求項15】
前記少なくとも1つのメモリは第2のメモリをさらに備え、前記第2のメモリのメモリアクセスレイテンシは、前記第1のメモリのメモリアクセスレイテンシより短く、前記方法は、
前記共有インターフェースデバイスによって、前記書込み命令を受信した後に前記第1のデータを前記第2のメモリに同期してバックアップするステップと、
前記共有インターフェースデバイスによって、前記キャッシュが異常であるときに、前記読出し命令に従って前記第2のメモリから前記第2のデータの前記全部または前記一部を取得し、前記第2のデータの前記全部または前記一部を前記第2のコントローラに提供するステップと
をさらに含む、請求項11から14のいずれか一項に記載の方法。
【国際調査報告】