(57)【要約】本発明の実施形態は、データ処理方法、記憶システムおよび切り換え装置を提供する。記憶システムは、互いに接続されているコンピューティング・ノードおよび切り換え装置を含む。コンピューティング・ノードは第一のネットワーク・パケットを切り換え装置に送り、第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持する。コンピューティング・ノードによって送られた第一のネットワーク・パケットを受領後、切り換え装置はI/O動作に対応するOSDを決定する。具体的には、切り換え装置は、前記第一のオフセットおよび前記オブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容する第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得し、第二のネットワーク・パケットを生成し、前記第二のネットワーク・パケットを前記第一の記憶ノードに送る。前記第二のオフセットは、前記I/O動作が実行されるべき前記第一のOSDのアドレス・オフセットである。上記のようにして、コンピューティング・ノードの計算量が削減でき、コンピューティング・ノードの稼働効率が改善される。
2019531563.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング・ノードおよび切り換え装置を有する記憶システムであって、
前記コンピューティング・ノードは第一のネットワーク・パケットを前記切り換え装置に送るよう構成されており、前記第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持し；
前記切り換え装置は：前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得するよう構成されており；
前記切り換え装置はさらに：第二のネットワーク・パケットを生成し、前記第二のネットワーク・パケットを前記第一の記憶ノードに送るよう構成されており、前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである、
記憶システム。
【請求項２】
当該記憶システムはさらに複数の記憶ノードを含み、
前記複数の記憶ノードにおける前記第一の記憶ノードは：前記切り換え装置によって送られた前記第二のネットワーク・パケットを受領し、前記I/Oコマンドに従って、前記第二のオフセットによって示される、前記第一のOSD内の記憶アドレスに対して前記I/O動作を実行するよう構成されている、
請求項１記載の記憶システム。
【請求項３】
前記I/Oコマンドは書き込みI/Oコマンドおよび書き込まれるべきデータを含み、
前記第一の記憶ノードは具体的には、前記書き込みI/Oコマンドに従って、前記書き込まれるべきデータを、前記第二のオフセットによって示される、前記第一のOSD内の前記記憶アドレスに書き込むよう構成されている、請求項２記載の記憶システム。
【請求項４】
前記第一のネットワーク・パケットはさらに、マルチコピー動作コードを担持し；
前記切り換え装置は具体的には、前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子と、書き込み動作が実行されるべき第二のOSDを収容している第二の記憶ノードの第二のネットワーク・アドレスと、前記第二のOSDの識別子とを、前記資源識別子および前記第一のオフセットに従って取得するよう構成されており；
前記切り換え装置はさらに：前記マルチコピー動作コードに従って第三のネットワーク・パケットを生成して、該第三のネットワーク・パケットを前記第二の記憶ノードに送るよう構成されており、前記第三のネットワーク・パケットは前記第二のオフセットと、前記書き込みI/Oコマンドと、前記書き込まれるべきデータと、前記第二のOSDの前記識別子とを担持し、前記第三のネットワーク・パケットの宛先アドレスは前記第二のネットワーク・アドレスであり、
前記第二の記憶ノードは：前記第三のネットワーク・パケットを受領し、前記書き込みI/Oコマンドに従って、前記書き込まれるべきデータを、前記第二のオフセットによって示される、前記第二のOSD内の記憶アドレスに書き込むよう構成されている、
請求項３記載の記憶システム。
【請求項５】
前記第一の記憶ノードはさらに、第一の応答パケットを前記切り換え装置に送るよう構成されており、前記第一の応答パケットは第一の書き込み結果およびパケット型識別子を担持し、前記第一の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスであり；
前記第二の記憶ノードはさらに、第二の応答パケットを前記切り換え装置に送るよう構成されており、前記第二の応答パケットは第二の書き込み結果およびパケット型識別子を担持し、前記第二の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスであり、
前記切り換え装置はさらに：前記第一の応答パケットおよび前記第二の応答パケットを受領し、前記パケット型識別子に従って前記第一の応答パケットおよび前記第二の応答パケットがキー値KVパケットであることを判別し、第三の応答パケットを生成し、該第三の応答パケットを前記コンピューティング・ノードに送るよう構成されており、前記第三の応答パケットは、前記第一の書き込み結果および前記第二の書き込み結果を担持しており、前記第三の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスであり、
前記コンピューティング・ノードは、前記第三の応答パケットにおいて担持されている前記第一の書き込み結果および前記第二の書き込み結果を取得するようさらに構成されている、
請求項４記載の記憶システム。
【請求項６】
前記I/Oコマンドが読み出しI/Oコマンドおよび読み出し長さを含み、前記第一の記憶ノードは具体的には、前記読み出しI/Oコマンドに従って、前記第二のオフセットによって示される、前記第一のOSD内の記憶アドレスから、前記読み出し長さのデータを読み出すよう構成されている、請求項２記載の記憶システム。
【請求項７】
前記切り換え装置は、具体的には：前記OSDのサイズを除数として使って、前記第一のオフセットに対してモジュロ演算を実行し、得られた結果を前記第二のオフセットとして使うよう構成されている、請求項１ないし６のうちいずれか一項記載の記憶システム。
【請求項８】
前記資源識別子が前記コンピューティング・ノード上の仮想ディスクのボリューム番号であり；
前記切り換え装置は具体的には、前記ボリューム番号および前記第一のオフセットに従って、前記I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを取得するよう構成されている、請求項１ないし７のうちいずれか一項記載の記憶システム。
【請求項９】
前記資源識別子がファイル・システム識別子およびファイル識別子であり；
前記切り換え装置は具体的には、前記ファイル・システム識別子、前記ファイル識別子および前記第一のオフセットに従って、前記I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを取得するよう構成されている、請求項１ないし７のうちいずれか一項記載の記憶システム。
【請求項１０】
前記第一のネットワーク・パケットはさらにパケット型識別子を担持し；
前記切り換え装置はさらに、該パケット型識別子に従って、前記第一のネットワーク・パケットがキー値KVパケットであることを判別するよう構成されている、
請求項１ないし９のうちいずれか一項記載の記憶システム。
【請求項１１】
前記切り換え装置は具体的には：前記OSDのサイズに基づいて前記第一のオフセットに対して丸め演算を実行して丸め結果を得て、前記資源識別子および前記丸め結果に対応するキーを取得し、比較テーブルを検索して、前記キーに対応する、前記第一の記憶ノードの前記第一のネットワーク・アドレスおよび前記第一のOSDの前記識別子を決定するよう構成されており、前記比較テーブルは、キー、記憶ノードのネットワーク・アドレスおよびOSDの識別子の間の対応を含む、請求項１ないし１０のうちいずれか一項記載の記憶システム。
【請求項１２】
前記比較テーブルは、グローバル・ビュー・テーブルおよび分割マップ・テーブルを含み、前記グローバル・ビュー・テーブルは、キーとOSD番号との間の対応を含み、該OSD番号は、当該記憶システムにおいてOSDを特定するために使われ、前記分割マップ・テーブルは、OSD番号、記憶ノードのネットワーク・アドレスおよびOSDの識別子の間の対応を含み；
前記切り換え装置は具体的には：前記グローバル・ビュー・テーブルを検索して、前記の得られたキーに対応するOSD番号を決定し、前記分割マップ・テーブルを検索して、前記OSD番号に対応する、前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの識別子とを決定するよう構成されている、
請求項１１記載の記憶システム。
【請求項１３】
当該記憶システムはさらに、前記切り換え装置に接続されたメタデータ制御ノードを有しており、
前記切り換え装置はさらに、前記メタデータ制御ノードによって送られた、前記グローバル・ビュー・テーブルおよび前記分割マップ・テーブルを受領するよう構成されている、
請求項１２記載の記憶システム。
【請求項１４】
データ処理方法であって：
コンピューティング・ノードによって、第一のネットワーク・パケットを切り換え装置に送る段階であって、前記第一のネットワーク・パケットは資源識別子、第一のオフセット、入出力I/Oコマンドを担持する、段階と；
前記切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する段階と；
前記切り換え装置によって、第二のネットワーク・パケットを生成し、前記第二のネットワーク・パケットを前記第一の記憶ノードに送る段階であって、前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの前記識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである、段階とを含む、
方法。
【請求項１５】
前記第一の記憶ノードによって、前記切り換え装置によって送られた前記第二のネットワーク・パケットを受領し、前記I/Oコマンドに従って、前記第二のオフセットによって示される、前記第一のOSD内の記憶アドレスに対して前記I/O動作を実行する段階をさらに含む、
請求項１４記載の方法。
【請求項１６】
前記I/Oコマンドは書き込みI/Oコマンドおよび書き込まれるべきデータを含み、前記I/Oコマンドに従って、前記第二のオフセットによって示される、前記第一のOSD内の記憶アドレスに対して前記I/O動作を実行することは具体的には：
前記第一の記憶ノードによって、前記書き込みI/Oコマンドに従って、前記書き込まれるべきデータを、前記第二のオフセットによって示される、前記第一のOSD内の前記記憶アドレスに書き込むことを含む、
請求項１５記載の方法。
【請求項１７】
前記第一のネットワーク・パケットはさらに、マルチコピー動作コードを担持し；
前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得することが具体的には：
前記切り換え装置によって、前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子と、書き込み動作が実行されるべき第二のOSDを収容している第二の記憶ノードの第二のネットワーク・アドレスと、前記第二のOSDの識別子とを、前記資源識別子および前記第一のオフセットに従って取得することを含み、当該方法がさらに：
前記切り換え装置によって、前記マルチコピー動作コードに従って第三のネットワーク・パケットを生成して、該第三のネットワーク・パケットを前記第二の記憶ノードに送る段階であって、前記第三のネットワーク・パケットは前記第二のオフセットと、前記書き込みI/Oコマンドと、前記書き込まれるべきデータと、前記第二のOSDの前記識別子とを担持し、前記第三のネットワーク・パケットの宛先アドレスは前記第二のネットワーク・アドレスである、段階と；
前記第二の記憶ノードによって、前記第三のネットワーク・パケットを受領し、前記書き込みI/Oコマンドに従って、前記書き込まれるべきデータを、前記第二のオフセットによって示される、前記第二のOSD内の記憶アドレスに書き込む段階とを含む、
請求項１６記載の方法。
【請求項１８】
当該方法がさらに：
前記第一の記憶ノードによって、第一の応答パケットを前記切り換え装置に送る段階であって、前記第一の応答パケットは第一の書き込み結果およびパケット型識別子を担持し、前記第一の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスである、段階と；
前記第二の記憶ノードによって、第二の応答パケットを前記切り換え装置に送る段階であって、前記第二の応答パケットは第二の書き込み結果およびパケット型識別子を担持し、前記第二の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスである、段階と；
前記切り換え装置によって、前記第一の応答パケットおよび前記第二の応答パケットを受領し、前記パケット型識別子に従って前記第一の応答パケットおよび前記第二の応答パケットがキー値KVパケットであることを判別し、第三の応答パケットを生成し、該第三の応答パケットを前記コンピューティング・ノードに送る段階であって、前記第三の応答パケットは、前記第一の書き込み結果および前記第二の書き込み結果を担持しており、前記第三の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスである、段階と；
前記コンピューティング・ノードによって、前記第三の応答パケットにおいて担持されている前記第一の書き込み結果および前記第二の書き込み結果を取得する段階とを含む、
請求項１７記載の方法。
【請求項１９】
前記I/Oコマンドが読み出しI/Oコマンドおよび読み出し長さを含み、前記I/Oコマンドに従って、前記第二のオフセットによって示される、前記第一のOSD内の記憶アドレスに対して前記I/O動作を実行することが具体的には：
前記第一の記憶ノードによって、前記読み出しI/Oコマンドに従って、前記第二のオフセットによって示される、前記第一のOSD内の記憶アドレスから、前記読み出し長さのデータを読み出すことを含む、
請求項１５記載の方法。
【請求項２０】
前記切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成することが具体的には：
前記切り換え装置によって、前記OSDのサイズを除数として使って、前記第一のオフセットに対してモジュロ演算を実行し、得られた結果を前記第二のオフセットとして使うことを含む、
請求項１４ないし１９のうちいずれか一項記載の方法。
【請求項２１】
前記資源識別子が前記コンピューティング・ノード上の仮想ディスクのボリューム番号であり、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得することが具体的には：
前記切り換え装置によって、前記ボリューム番号および前記第一のオフセットに従って、前記I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを取得することを含む、
請求項１４ないし２０のうちいずれか一項記載の方法。
【請求項２２】
前記資源識別子がファイル・システム識別子およびファイル識別子であり、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得することが具体的には：
前記切り換え装置によって、前記ファイル・システム識別子、前記ファイル識別子および前記第一のオフセットに従って、前記I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを取得することを含む、
請求項１４ないし２０のうちいずれか一項記載の方法。
【請求項２３】
前記第一のネットワーク・パケットはさらにパケット型識別子を担持しており、前記切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する前に、当該方法はさらに：
前記切り換え装置によって、前記パケット型識別子に従って、前記第一のネットワーク・パケットがキー値KVパケットであることを判別する段階を含む、
請求項１４ないし２２のうちいずれか一項記載の方法。
【請求項２４】
前記切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得することが具体的には：
前記切り換え装置によって、前記OSDのサイズに基づいて前記第一のオフセットに対して丸め演算を実行して丸め結果を得て、前記資源識別子および前記丸め結果に対応するキーを取得し、比較テーブルを検索して、前記キーに対応する、前記第一の記憶ノードの前記第一のネットワーク・アドレスおよび前記第一のOSDの前記識別子を決定することを含み、前記比較テーブルは、キー、記憶ノードのネットワーク・アドレスおよびOSDの識別子の間の対応を含む、
請求項１４ないし２３のうちいずれか一項記載の方法。
【請求項２５】
前記比較テーブルは、グローバル・ビュー・テーブルおよび分割マップ・テーブルを含み、前記グローバル・ビュー・テーブルは、キーとOSD番号との間の対応を含み、該OSD番号は、当該記憶システムにおいてOSDを特定するために使われ、前記分割マップ・テーブルは、OSD番号、記憶ノードのネットワーク・アドレスおよびOSDの識別子の間の対応を含み、比較テーブルを検索して、前記キーに対応する、前記第一の記憶ノードの前記第一のネットワーク・アドレスおよび前記第一のOSDの前記識別子を決定することが具体的には：
前記切り換え装置によって、前記グローバル・ビュー・テーブルを検索して、前記の得られたキーに対応するOSD番号を決定し、前記分割マップ・テーブルを検索して、前記OSD番号に対応する、前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを決定することを含む、
請求項２４記載の方法。
【請求項２６】
前記切り換え装置によって、前記グローバル・ビュー・テーブルを検索して、前記の得られたキーに対応するOSD番号を決定し、前記分割マップ・テーブルを検索して、前記OSD番号に対応する、前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを決定する前に、当該方法はさらに：
前記切り換え装置によって、メタデータ制御ノードによって送られた、前記グローバル・ビュー・テーブルおよび前記分割マップ・テーブルを受領する段階を含む、
請求項２５記載の方法。
【請求項２７】
データ処理方法であって：
切り換え装置によって、コンピューティング・ノードによって送られた第一のネットワーク・パケットを受領する段階であって、前記第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持する、段階と；
前記切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する段階と；
前記切り換え装置によって、第二のネットワーク・パケットを生成し、前記第二のネットワーク・パケットを前記第一の記憶ノードに送る段階であって、前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの前記識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである、段階とを含む、
方法。
【請求項２８】
前記I/Oコマンドは書き込みI/Oコマンドおよび書き込まれるべきデータを含み、前記第一のネットワーク・パケットはさらに、マルチコピー動作コードを担持し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得することが具体的には：
前記切り換え装置によって、前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子と、書き込み動作が実行されるべき第二のOSDを収容している第二の記憶ノードの第二のネットワーク・アドレスと、前記第二のOSDの識別子とを、前記資源識別子および前記第一のオフセットに従って取得することを含み、当該方法がさらに：
前記切り換え装置によって、前記マルチコピー動作コードに従って第三のネットワーク・パケットを生成して、該第三のネットワーク・パケットを前記第二の記憶ノードに送る段階であって、前記第三のネットワーク・パケットは前記第二のオフセットと、前記書き込みI/Oコマンドと、前記書き込まれるべきデータと、前記第二のOSDの前記識別子とを担持し、前記第三のネットワーク・パケットの宛先アドレスは前記第二のネットワーク・アドレスである、段階を含む、
請求項２７記載の方法。
【請求項２９】
前記切り換え装置によって、前記第一の記憶ノードによって送られた第一の応答パケットおよび前記第二の記憶ノードによって送られた第二の応答パケットを受領する段階であって、前記第一の応答パケットは第一の書き込み結果およびパケット型識別子を担持し、前記第一の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスであり、前記第二の応答パケットは第二の書き込み結果およびパケット型識別子を担持し、前記第二の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスである、段階と；
前記切り換え装置によって、前記パケット型識別子に従って前記第一の応答パケットおよび前記第二の応答パケットがキー値KVパケットであることを判別し、第三の応答パケットを生成し、該第三の応答パケットを前記コンピューティング・ノードに送る段階であって、前記第三の応答パケットは、前記第一の書き込み結果および前記第二の書き込み結果を担持しており、前記第三の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスである、段階とを含む、
請求項２８記載の方法。
【請求項３０】
前記切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成することが具体的には：
前記切り換え装置によって、前記OSDのサイズを除数として使って、前記第一のオフセットに対してモジュロ演算を実行し、得られた結果を前記第二のオフセットとして使うことを含む、
請求項２７ないし２９のうちいずれか一項記載の方法。
【請求項３１】
前記資源識別子が前記コンピューティング・ノード上の仮想ディスクのボリューム番号であり、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得することが具体的には：
前記切り換え装置によって、前記ボリューム番号および前記第一のオフセットに従って、前記I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを取得することを含む、
請求項２７ないし３０のうちいずれか一項記載の方法。
【請求項３２】
前記資源識別子がファイル・システム識別子およびファイル識別子であり、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得することが具体的には：
前記切り換え装置によって、前記ファイル・システム識別子、前記ファイル識別子および前記第一のオフセットに従って、前記I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを取得することを含む、
請求項２７ないし３０のうちいずれか一項記載の方法。
【請求項３３】
前記第一のネットワーク・パケットはさらにパケット型識別子を担持しており、前記切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する前に、当該方法はさらに：
前記切り換え装置によって、前記パケット型識別子に従って、前記第一のネットワーク・パケットがキー値KVパケットであることを判別する段階を含む、
請求項２７ないし３２のうちいずれか一項記載の方法。
【請求項３４】
前記切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得することが具体的には：
前記切り換え装置によって、前記OSDのサイズに基づいて前記第一のオフセットに対して丸め演算を実行して丸め結果を得て、前記資源識別子および前記丸め結果に対応するキーを取得し、比較テーブルを検索して、前記キーに対応する、前記第一の記憶ノードの前記第一のネットワーク・アドレスおよび前記第一のOSDの前記識別子を決定することを含み、前記比較テーブルは、キー、記憶ノードのネットワーク・アドレスおよびOSDの識別子の間の対応を含む、
請求項２７ないし３３のうちいずれか一項記載の方法。
【請求項３５】
前記比較テーブルは、グローバル・ビュー・テーブルおよび分割マップ・テーブルを含み、前記グローバル・ビュー・テーブルは、キーとOSD番号との間の対応を含み、該OSD番号は、当該記憶システムにおいてOSDを特定するために使われ、前記分割マップ・テーブルは、OSD番号、記憶ノードのネットワーク・アドレスおよびOSDの識別子の間の対応を含み、比較テーブルを検索して、前記キーに対応する、前記第一の記憶ノードの前記第一のネットワーク・アドレスおよび前記第一のOSDの前記識別子を決定することが具体的には：
前記切り換え装置によって、前記グローバル・ビュー・テーブルを検索して、前記の得られたキーに対応するOSD番号を決定し、前記分割マップ・テーブルを検索して、前記OSD番号に対応する、前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを決定することを含む、
請求項３４記載の方法。
【請求項３６】
前記切り換え装置によって、グローバル・ビュー・テーブルを検索して、前記の得られたキーに対応するOSD番号を決定し、前記分割マップ・テーブルを検索して、前記OSD番号に対応する、前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを決定する前に、当該方法はさらに：
前記切り換え装置によって、メタデータ制御ノードによって送られた、前記グローバル・ビュー・テーブルおよび前記分割マップ・テーブルを受領する段階を含む、
請求項３５記載の方法。
【請求項３７】
コンピューティング・ノードによって送られた第一のネットワーク・パケットを受領するよう構成された受信モジュールであって、前記第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持する、受信モジュールと；
前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する段階と；第二のネットワーク・パケットを生成する段階であって、前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの前記識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである、段階とを実行するよう構成された処理モジュールと；
前記第二のネットワーク・パケットを前記第一の記憶ノードに送るよう構成された送信モジュールとを有する、
切り換え装置。
【請求項３８】
前記I/Oコマンドは書き込みI/Oコマンドおよび書き込まれるべきデータを含み、前記第一のネットワーク・パケットはさらに、マルチコピー動作コードを担持し、
前記処理モジュールは具体的には、前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子と、書き込み動作が実行されるべき第二のOSDを収容している第二の記憶ノードの第二のネットワーク・アドレスと、前記第二のOSDの識別子とを、前記資源識別子および前記第一のオフセットに従って取得するよう構成されており；
前記処理モジュールはさらに、前記マルチコピー動作コードに従って第三のネットワーク・パケットを生成するよう構成されており、前記第三のネットワーク・パケットは前記第二のオフセットと、前記書き込みI/Oコマンドと、前記書き込まれるべきデータと、前記第二のOSDの前記識別子とを担持し、前記第三のネットワーク・パケットの宛先アドレスは前記第二のネットワーク・アドレスであり；
前記送信モジュールはさらに、前記第三のネットワーク・パケットを前記第二の記憶ノードに送るよう構成されている、
請求項３７記載の切り換え装置。
【請求項３９】
前記受信モジュールがさらに、前記第一の記憶ノードによって送られた第一の応答パケットおよび前記第二の記憶ノードによって送られた第二の応答パケットを受領するよう構成されており、前記第一の応答パケットは第一の書き込み結果およびパケット型識別子を担持し、前記第一の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスであり、前記第二の応答パケットは第二の書き込み結果およびパケット型識別子を担持し、前記第二の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスであり；
前記処理モジュールがさらに：前記パケット型識別子に従って前記第一の応答パケットおよび前記第二の応答パケットがキー値KVパケットであることを判別し、第三の応答パケットを生成し、該第三の応答パケットを前記コンピューティング・ノードに送るよう構成されており、前記第三の応答パケットは、前記第一の書き込み結果および前記第二の書き込み結果を担持しており、前記第三の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスである、
請求項３８記載の切り換え装置。
【請求項４０】
前記処理モジュールが具体的には：前記OSDのサイズを除数として使って、前記第一のオフセットに対してモジュロ演算を実行し、得られた結果を前記第二のオフセットとして使うよう構成されている、
請求項３７ないし３９のうちいずれか一項記載の切り換え装置。
【請求項４１】
前記資源識別子が前記コンピューティング・ノード上の仮想ディスクのボリューム番号であり、
前記処理モジュールが具体的には、前記ボリューム番号および前記第一のオフセットに従って、前記I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを取得するよう構成されている、
請求項３７ないし４０のうちいずれか一項記載の切り換え装置。
【請求項４２】
前記資源識別子がファイル・システム識別子およびファイル識別子であり；
前記処理モジュールが具体的には、前記ファイル・システム識別子、前記ファイル識別子および前記第一のオフセットに従って、前記I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを取得するよう構成されている、
請求項３７ないし４０のうちいずれか一項記載の切り換え装置。
【請求項４３】
前記第一のネットワーク・パケットはさらにパケット型識別子を担持しており；
前記処理モジュールはさらに、前記パケット型識別子に従って、前記第一のネットワーク・パケットがキー値KVパケットであることを判別するよう構成されている、
請求項３７ないし４２のうちいずれか一項記載の切り換え装置。
【請求項４４】
前記処理モジュールがさらに：前記OSDのサイズに基づいて前記第一のオフセットに対して丸め演算を実行して丸め結果を得て、前記資源識別子および前記丸め結果に対応するキーを取得し、比較テーブルを検索して、前記キーに対応する、前記第一の記憶ノードの前記第一のネットワーク・アドレスおよび前記第一のOSDの前記識別子を決定するよう構成されており、前記比較テーブルは、キー、記憶ノードのネットワーク・アドレスおよびOSDの識別子の間の対応を含む、
請求項３７ないし４３のうちいずれか一項記載の切り換え装置。
【請求項４５】
前記比較テーブルは、グローバル・ビュー・テーブルおよび分割マップ・テーブルを含み、前記グローバル・ビュー・テーブルは、キーとOSD番号との間の対応を含み、該OSD番号は、当該記憶システムにおいてOSDを特定するために使われ、前記分割マップ・テーブルは、OSD番号、記憶ノードのネットワーク・アドレスおよびOSDの識別子の間の対応を含み、
前記処理モジュールは具体的には：前記グローバル・ビュー・テーブルを検索して、前記の得られたキーに対応するOSD番号を決定し、前記分割マップ・テーブルを検索して、前記OSD番号に対応する、前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを決定するよう構成されている、
請求項４４記載の切り換え装置。
【請求項４６】
前記受信モジュールがさらに、メタデータ制御ノードによって送られた、前記グローバル・ビュー・テーブルおよび前記分割マップ・テーブルを受領するよう構成されている、
請求項４５記載の切り換え装置。
【請求項４７】
プロセッサと、メモリと、バスと、複数の物理ポートとを有するスイッチであって、前記プロセッサ、前記メモリおよび前記複数の物理ポートは前記バスに別個に接続されており、前記メモリはプログラム命令を記憶しており、
第一の物理ポートが、コンピューティング・ノードによって送られた第一のネットワーク・パケットを受領するよう構成されており、前記第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持し；
前記プロセッサは前記プログラム命令を実行して：前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成する段階と、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する段階と、第二のネットワーク・パケットを生成する段階であって、前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの前記識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである、段階とを実行するよう構成されており；
第二の物理ポートが、前記第二のネットワーク・パケットを前記第一の記憶ノードに送るよう構成されている、
スイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は情報技術の分野に、詳細にはデータ処理方法、記憶システムおよび切り換え装置に関する。
【背景技術】
【０００２】
分散式記憶の高まる人気とともに、さまざまな新たな記憶態様がストレージ市場に現われており、オブジェクト記憶技術は新たな人気のあるトピックとなっている。
【０００３】
オブジェクト記憶システムでは、コンピューティング・ノードが仮想ディスクについてのI/O（Input/output、入出力）動作を実行するたびに、コンピューティング・ノードは該I/O動作に対応するOSD（Object-base  Storage  Device、オブジェクト・ベース記憶装置）の位置を計算を通じて取得し、次いで対応するOSD上で該I/O動作を開始する必要がある。
【０００４】
コンピューティング・ノードはさらにパケットを受け取って送り、該パケットをカプセル化およびパースする必要があるため、I/O動作に対応するOSDを計算するプロセスはコンピューティング・ノードの計算資源を消費し、比較的大きなI/Oトラフィックのあるシナリオでは特に、コンピューティング・ノードの稼働効率が低下する。
【発明の概要】
【０００５】
本願は、コンピューティング・ノードの計算量を減らし、コンピューティング・ノードの稼働効率を改善するためのデータ処理方法、記憶システムおよび切り換え装置を開示する。
【０００６】
第一の側面によれば、本願は記憶システムを提供する。本記憶システムは、互いに接続されているコンピューティング・ノードおよび切り換え装置を含む。コンピューティング・ノードは第一のネットワーク・パケットを切り換え装置に送り、第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持する。コンピューティング・ノードによって送られた第一のネットワーク・パケットを受領後、切り換え装置はI/O動作に対応するOSDを決定する。具体的には、切り換え装置は、前記第一のオフセットおよび前記オブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容する第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得し、第二のネットワーク・パケットを生成し、前記第二のネットワーク・パケットを前記第一の記憶ノードに送る。第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである。前記第二のオフセットは、前記I/O動作が実行されるべき前記第一のOSDのアドレス・オフセットである。
【０００７】
上記のシステムでは、コンピューティング・ノードは前記I/O動作に対応するOSDを計算する必要がなく、切り換え装置が、コンピューティング・ノードからの第一のネットワーク・パケットにおいて担持されている情報に従って、前記OSDを探す。よって、コンピューティング・ノードの計算量が減らされる。
【０００８】
本願のある実装では、本記憶システムはさらに複数の記憶ノードを含む。前記複数の記憶ノードにおける前記第一の記憶ノードは：切り換え装置によって送られた前記第二のネットワーク・パケットを受領し、前記第一のOSDの識別子に従って前記第一のOSDを選択し、前記第二のネットワーク・パケットに担持されているI/Oコマンドに従って、前記第二のオフセットによって示される、前記第一のOSD内の記憶アドレスに対して前記I/O動作を実行するよう構成される。
【０００９】
前記第一の記憶ノードは、切り換え装置から前記第二のネットワーク・パケットを受領する。前記第二のネットワーク・パケットは、前記I/Oが実行されるべき前記第一のOSDの識別子と前記第二のオフセットとを担持しているので、前記第一の記憶ノードは前記第二のネットワーク・パケットにおいて担持される情報に従って前記I/O動作を実行できる。よって、本願では、切り換え装置はローカルにOSDを探し、前記第一の記憶ノードによって実行される前記I/O動作は影響されない。従来技術と比べて、本願の切り換え装置は記憶ノードへの修正を必要とせず、さまざまな記憶ノードに適用されることができる。
【００１０】
I/O動作は書き込み動作または読み出し動作でありうる。I/O動作が書き込み動作であるとき、I/Oコマンドは書き込みI/Oコマンドおよび書き込まれるべきデータを含む。I/O動作が読み出し動作であるとき、I/Oコマンドは読み出しI/Oコマンドおよび読み出し長さを含む。
【００１１】
本願のもう一つの実装では、前記第一の記憶ノードは具体的には、前記書き込みI/Oコマンドに従って、書き込まれるべきデータを、前記第二のオフセットによって示される、前記第一のOSD内の記憶アドレスに書き込むよう構成される。
【００１２】
切り換え装置がI/O動作に対応するOSDをローカルに探すので、コンピューティング・ノードは書き込みI/Oコマンドおよび書き込まれるべきデータを前記第一のネットワーク・パケット内に入れて、前記第一のネットワーク・パケットを切り換え装置に送る必要があるだけである。第一のネットワーク・パケットに従って前記OSDを見出した後、切り換え装置は前記OSDの識別子、前記書き込みI/Oコマンドおよび前記書き込まれるべきデータを、該OSDを収容している前記第一の記憶ノードに直接、送る。したがって、前記第一の記憶ノードは、いかなる修正もなしに上記の情報に従って書き込み動作を実行でき、よって、本願の切り換え装置は記憶ノードへの修正を必要とせず、さまざまな記憶ノードに適用されることができる。
【００１３】
本願のもう一つの実装では、コンピューティング・ノードからの書き込まれるべきデータは、複数のコピーで記憶される必要がある。つまり、データ・セキュリティーを高めるために、書き込まれるべきデータは少なくとも二つの記憶ノードに記憶される必要がある。この場合、前記第一のネットワーク・パケットはさらに、マルチコピー動作コードを担持する。切り換え装置は具体的には、前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子と、書き込み動作が実行されるべき第二のOSDを収容している第二の記憶ノードの第二のネットワーク・アドレスと、前記第二のOSDの識別子とを、前記資源識別子および前記第一のオフセットに従って取得する。前記第二のネットワーク・パケットを生成して前記第二のネットワーク・パケットを前記第一の記憶ノードに送ることに加えて、切り換え装置はさらに、前記マルチコピー動作コードに従って第三のネットワーク・パケットを生成して、該第三のネットワーク・パケットを前記第二の記憶ノードに送る。前記第三のネットワーク・パケットは前記第二のオフセットと、前記書き込みI/Oコマンドと、前記書き込まれるべきデータと、前記第二のOSDの前記識別子とを担持し、前記第三のネットワーク・パケットの宛先アドレスは前記第二のネットワーク・アドレスである。前記第二の記憶ノードは前記第三のネットワーク・パケットを受領し、前記書き込みI/Oコマンドに従って、前記書き込まれるべきデータを、前記第二のオフセットによって示される、前記第二のOSD内の記憶アドレスに書き込む。
【００１４】
マルチコピー・バックアップが設定されている仮想ディスクに対して書き込み動作を実行するとき、コンピューティング・ノードは、前記マルチコピー動作コードを使って、切り換え装置に、書き込み動作が、前記仮想ディスクにマッピングされている主要OSDおよび副次OSDの両方に対して実行される必要があることを通知してもよい。この場合、切り換え装置は複数のネットワーク・パケットを生成し、前記複数のネットワーク・パケットを主要OSDを収容している記憶ノードと、副次OSDを収容している記憶ノードに送り、それにより、前記書き込まれるべきデータは、主要OSDおよび副次OSDの両方に書き込まれることができ、データ一貫性が保証される。よって、本願では、切り換え装置の機能がさらに拡張され、切り換え装置は、前記マルチコピー動作コードに従って、コンピューティング・ノードからの書き込みコマンドを、複数の記憶ノードのための書き込みコマンドに変換しうる。
【００１５】
本願のもう一つの実装では、第一の記憶ノードはさらに、第一の応答パケットを切り換え装置に送るよう構成され、第二の記憶ノードはさらに、第二の応答パケットを切り換え装置に送るよう構成される。第一の応答パケットは第一の書き込み結果およびパケット型識別子を担持し、第一の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスである。第二の応答パケットは第二の書き込み結果およびパケット型識別子を担持し、第二の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスである。切り換え装置はさらに：第一の応答パケットおよび第二の応答パケットを受領し、前記パケット型識別子に従って第一の応答パケットおよび第二の応答パケットがキー値KVパケットであることを判別し、第三の応答パケットを生成し、該第三の応答パケットを前記コンピューティング・ノードに送る。第三の応答パケットは、第一の書き込み結果および第二の書き込み結果を担持しており、第三の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスである。前記コンピューティング・ノードはさらに：第三の応答パケットを受領し、第三の応答パケットにおいて担持されている第一の書き込み結果および第二の書き込み結果を取得する。
【００１６】
前記少なくとも二つの記憶ノードによって返された応答パケットを受領した後、切り換え装置は、それらの応答パケットの型を判別し、前記少なくとも二つの記憶ノードによって返された複数の応答パケットに対して組み合わされたカプセル化を実行して、前記コンピューティング・ノードに返される一つの応答パケットを生成する。よって、複数の記憶ノードからの応答が単一の応答にまとめられ、該単一の応答が前記コンピューティング・ノードに返される。よって、コンピューティング・ノードの負担が著しく軽減され、比較的大きなI/Oトラフィックのあるシナリオでは特に、本発明の実施形態は、より明らかな利点をもつ。
【００１７】
受領されたパケットがパケット型識別子を担持しているとき、切り換え装置は該パケットがKVパケットであることを判別し、該パケットをパースし、パースによって得られた情報に従ってOSDを探す。あるいは、該パケットがパケット型識別子を担持していないときは、切り換え装置は該パケットが非KVパケットであることを判別し、該パケットを該パケットの宛先アドレスに従って直接転送する。よって、本願の切り換え装置はさらに、非KVパケットを転送する機能をもち、さまざまなネットワーク・システムと互換であることができる。
【００１８】
本願のもう一つの実装では、第一の記憶ノードは具体的には、読み出しI/Oコマンドに従って、前記第二のオフセットによって示される、前記第一のOSD内の記憶アドレスから、前記読み出し長さのデータを読み出すよう構成される。前記第一のネットワーク・パケットおよび前記第二のネットワーク・パケットにおいて担持される前記I/Oコマンドは、具体的には、前記読み出しI/Oコマンドおよび前記読み出し長さを含む。
【００１９】
切り換え装置がI/O動作に対応するOSDをローカルに探すので、コンピューティング・ノードは読み出しI/Oコマンドおよび読み出し長さを前記第一のネットワーク・パケット内に入れて、前記第一のネットワーク・パケットを切り換え装置に送る必要があるだけである。第一のネットワーク・パケットに従って前記OSDを見出した後、切り換え装置は前記OSDの識別子、前記読み出しI/Oコマンドおよび前記読み出し長を、該OSDを収容している前記第一の記憶ノードに直接、送る。したがって、前記第一の記憶ノードは、いかなる修正もなしに上記のデータに従って読み出し動作を実行でき、よって、本願の切り換え装置はさまざまな記憶ノードに適用されることができる。
【００２０】
本願のもう一つの実装では、切り換え装置は、具体的には：前記OSDのサイズを除数として使って、前記第一のオフセットに対してモジュロ演算を実行し、得られた結果を前記第二のオフセットとして使うよう構成される。
【００２１】
前記資源識別子が具体的に前記コンピューティング・ノード上の仮想ディスク内の仮想ボリュームのボリューム番号であるときは、本願は、仮想ディスクがブロック記憶システムであるときに適用可能である。前記資源識別子が具体的に前記コンピューティング・ノード上の仮想ディスク内の仮想ファイルのファイル・システム識別子およびファイル識別子であるときは、本願は、仮想ディスクがファイル記憶システムであるときに適用可能である。
【００２２】
前記第一のオフセットは、前記仮想ボリュームまたは前記仮想ファイルにおけるオフセットである。前記仮想ボリュームまたは前記仮想ファイルは実際には、それぞれの前記OSDのサイズをもつ複数の仮想スペースを含み、各仮想スペースはあるOSDとマッピング関係をもつ。第一のオフセットは、前記OSDより大きくてもよい。よって、第一のオフセットは前記OSDには適用可能ではない。前記OSDのサイズを除数として使って第一のオフセットに対してモジュロ演算が実行される必要がある。得られる第二のオフセットのサイズは前記OSDのサイズ以下になる。
【００２３】
本願のもう一つの実装では、切り換え装置は具体的には、前記コンピューティング・ノード上の仮想ディスクのボリューム番号と前記第一のオフセットとに従って、I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得するよう構成される。ここで、資源識別子は具体的には、前記コンピューティング・ノード上の仮想ディスクのボリューム番号である。
【００２４】
本願のもう一つの実装では、資源識別子はファイル・システム識別子およびファイル識別子であり、切り換え装置は具体的には、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを、前記ファイル・システム識別子、前記ファイル識別子および前記第一のオフセットに従って取得する。
【００２５】
本願のもう一つの実装では、前記第一のネットワーク・パケットはさらにパケット型識別子を担持し、切り換え装置はさらに、該パケット型識別子に従って、前記第一のネットワーク・パケットがキー値KVパケットであることを判別するよう構成される。
【００２６】
切り換え装置がパケットを受領し、該パケットがパケット型識別子を担持しているとき、切り換え装置は、該パケットがKVパケットであることを判別し、該パケットをパースし、パースによって得られた情報に従ってOSDを探す。あるいは、該パケットがパケット型識別子を担持していないときは、切り換え装置は該パケットが非KVパケットであることを判別し、該パケットを該パケットの宛先アドレスに従って直接転送する。よって、本願の切り換え装置はさらに、非KVパケットを転送する機能をもち、さまざまなネットワーク・システムと互換であることができる。
【００２７】
本願のもう一つの実装では、前記第一のネットワーク・パケットはTCPパケットであり、前記パケット型識別子は、該TCPパケットのIPヘッダ内にあるオプション（options）フィールドおよびパディング（padding）フィールドにおいて設定される。
【００２８】
オプション（options）フィールドおよびパディング（padding）フィールドは通例アイドルなので、IPヘッダのこれらのフィールドはパケット型識別子を担持するために使われる。パケットの型を判別するとき、切り換え装置はIPヘッダを解析する必要があるだけであり、IPデータ・フィールドを分解する必要はない。よって、パケットの処理が加速されることができる。
【００２９】
より具体的には、本願は、切り換え装置がI/O動作に対応するOSDを得る具体的な実装を提供する。
【００３０】
本願のもう一つの実装では、切り換え装置は具体的には：前記OSDのサイズに基づいて前記第一のオフセットに対して丸め演算を実行して丸め結果を得て、前記資源識別子および前記丸め結果に対応するキーを取得し、比較テーブルを検索して、前記キーに対応する、前記第一の記憶ノードの前記第一のネットワーク・アドレスおよび前記第一のOSDの識別子を決定するよう構成される。比較テーブルは、キーと、記憶ノードのネットワーク・アドレスと、OSDの識別子との間の対応を含む。
【００３１】
前記第一のオフセットは、仮想ボリュームまたは仮想ファイル内のオフセットである。仮想ボリュームまたは仮想ファイルは実際には、それぞれの前記OSDのサイズをもつ複数の仮想スペースを含み、各仮想スペースはあるOSDとマッピング関係をもつ。よって、該複数の仮想スペースは特定の量のOSDに対応する。一つの仮想スペースが一つのキーに対応することを保証する必要があるだけであり、一つの仮想スペースが一つのキーに対応することは、前記丸め演算を使って実現できる。
【００３２】
本願のもう一つの実装では、切り換え装置は具体的には：前記OSDのサイズに基づいて前記第一のオフセットに対して丸め演算を実行して丸め結果を得て、前記資源識別子および前記丸め結果を一貫するハッシュ・アルゴリズムの入力パラメータとして使って該一貫するハッシュ・アルゴリズムを実行して、対応するキーを得る。
【００３３】
よって、本願では、キーは、資源識別子および丸め結果から、テーブルを検索することによって、あるいはハッシュ演算を使うことによって、得られてもよい。
【００３４】
本願のもう一つの実装では、比較テーブルは、グローバル・ビュー・テーブルおよび分割マップ・テーブルを含む。グローバル・ビュー・テーブルは、キーとOSD番号との間の対応を含み、該OSD番号が、記憶システムにおける一意的なOSDを特定するために使われる。分割マップ・テーブルは、OSD番号と、記憶ノードのネットワーク・アドレスと、OSDの識別子との間の対応を含む。切り換え装置は具体的には、グローバル・ビュー・テーブルを検索して、前記の得られたキーに対応するOSD番号を決定し、分割マップ・テーブルを検索して、前記OSD番号に対応する、前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの識別子とを決定するよう構成される。
【００３５】
本願のもう一つの実装では、記憶システムはさらに、切り換え装置に接続されたメタデータ制御ノードを含む。メタデータ制御ノードは、記憶システムのメタデータを記録する。メタデータは、前記グローバル・ビュー・テーブルおよび前記分割マップ・テーブルを含む。切り換え装置はさらに、メタデータ制御ノードによって送られた、前記グローバル・ビュー・テーブルおよび前記分割マップ・テーブルを受領するよう構成される。
【００３６】
切り換え装置はメタデータ制御ノードによって送られるグローバル・ビュー・テーブルおよび分割マップ・テーブルを受領し、グローバル・ビュー・テーブルおよび分割マップ・テーブルを再生成する必要がないので、システム互換性が改善される。
【００３７】
第二の側面によれば、本願はデータ処理方法を提供する。本方法は：
コンピューティング・ノードによって、第一のネットワーク・パケットを切り換え装置に送る段階であって、第一のネットワーク・パケットは資源識別子、第一のオフセット、入出力I/Oコマンドを担持する、段階と；切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容する第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する段階と；切り換え装置によって、第二のネットワーク・パケットを生成し、前記第二のネットワーク・パケットを前記第一の記憶ノードに送る段階であって、前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである、段階とを含む。
【００３８】
第二の側面または第二の側面の実装の任意のものは、前記第一の側面または第一の側面の実装の任意のいずれかに対応する方法実装である。前記第一の側面または第一の側面の実装のいずれかにおける記載は第二の側面または第二の側面の実装のいずれかに適用可能であり、ここで詳細を述べることはしない。
【００３９】
第三の側面によれば、本願はデータ処理方法を提供する。本方法は：切り換え装置によって、コンピューティング・ノードによって送られた第一のネットワーク・パケットを受領する段階であって、第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持する、段階と；切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容する第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する段階と；切り換え装置によって、第二のネットワーク・パケットを生成し、前記第二のネットワーク・パケットを前記第一の記憶ノードに送る段階であって、前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである、段階とを含む。
【００４０】
上記のデータ処理方法では、コンピューティング・ノードは前記I/O動作に対応するOSDを計算する必要がなく、切り換え装置が、コンピューティング・ノードからの第一のネットワーク・パケットにおいて担持されている情報に従って、前記OSDを探す。よって、コンピューティング・ノードの計算量が減らされる。
【００４１】
第四の側面によれば、本願は切り換え装置を提供する。切り換え装置は：コンピューティング・ノードによって送られた第一のネットワーク・パケットを受領するよう構成された受信モジュールであって、第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持する、受信モジュールと；前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容する第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する段階と；第二のネットワーク・パケットを生成する段階であって、前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである、段階とを実行するよう構成された処理モジュールと；前記第二のネットワーク・パケットを前記第一の記憶ノードに送るよう構成された送信モジュールとを含む。
【００４２】
第四の側面または第四の側面の実装の任意のものは、前記第三の側面または第三の側面の実装の任意のいずれかに対応する方法実装である。前記第三の側面または第三の側面の実装のいずれかにおける記載は第四の側面または第四の側面の実装のいずれかに適用可能であり、ここで詳細を述べることはしない。
【００４３】
本願のある実装では、前記I/Oコマンドは書き込みI/Oコマンドおよび書き込まれるべきデータを含み、前記第一のネットワーク・パケットはさらにマルチコピー動作コードを含む。前記処理モジュールは具体的には、前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子と、書き込み動作が実行されるべき第二のOSDを収容している第二の記憶ノードの第二のネットワーク・アドレスと、前記第二のOSDの識別子とを、前記資源識別子および前記第一のオフセットに従って取得するよう構成される。前記処理モジュールはさらに、前記マルチコピー動作コードに従って第三のネットワーク・パケットを生成するよう構成される。前記第三のネットワーク・パケットは前記第二のオフセットと、前記書き込みI/Oコマンドと、前記書き込まれるべきデータと、前記第二のOSDの前記識別子とを担持し、前記第三のネットワーク・パケットの宛先アドレスは前記第二のネットワーク・アドレスである。前記送信モジュールはさらに、前記第三のネットワーク・パケットを前記第二の記憶ノードに送るよう構成される。
【００４４】
本願のもう一つの実装では、前記受信モジュールはさらに、前記第一の記憶ノードによって送られた第一の応答パケットおよび前記第二の記憶ノードによって送られた第二の応答パケットを受領するよう構成される。第一の応答パケットは第一の書き込み結果およびパケット型識別子を担持し、第一の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスである。第二の応答パケットは第二の書き込み結果およびパケット型識別子を担持し、第二の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスである。処理モジュールはさらに：前記パケット型識別子に従って第一の応答パケットおよび第二の応答パケットがキー値KVパケットであることを判別し、第三の応答パケットを生成し、該第三の応答パケットを前記コンピューティング・ノードに送るよう構成される。第三の応答パケットは、第一の書き込み結果および第二の書き込み結果を担持し、第三の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスである。
【００４５】
本願のもう一つの実装では、前記処理モジュールは、具体的には：前記OSDのサイズを除数として使って、前記第一のオフセットに対してモジュロ演算を実行し、得られた結果を前記第二のオフセットとして使うよう構成される。
【００４６】
本願のもう一つの実装では、前記資源識別子は前記コンピューティング・ノード上の仮想ディスクの仮想ボリュームのボリューム番号であり、前記処理モジュールは具体的には、前記ボリューム番号および前記第一のオフセットに従って、I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得するよう構成される。
【００４７】
本願のもう一つの実装では、前記資源識別子はファイル・システム識別子およびファイル識別子であり、前記処理モジュールは具体的には、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを、前記ファイル・システム識別子、前記ファイル識別子および前記第一のオフセットに従って取得するよう構成される。
【００４８】
本願のもう一つの実装では、前記第一のネットワーク・パケットはさらにパケット型識別子を担持し、前記処理モジュールはさらに、該パケット型識別子に従って、前記第一のネットワーク・パケットがキー値KVパケットであることを判別するよう構成される。
【００４９】
本願のもう一つの実装では、前記処理モジュールはさらに：前記OSDのサイズに基づいて前記第一のオフセットに対して丸め演算を実行して丸め結果を得て、前記資源識別子および前記丸め結果に対応するキーを取得し、比較テーブルを検索して、前記キーに対応する、前記第一の記憶ノードの前記第一のネットワーク・アドレスおよび前記第一のOSDの識別子を決定するよう構成される。比較テーブルは、キーと、記憶ノードのネットワーク・アドレスと、OSDの識別子との間の対応を含む。
【００５０】
本願のもう一つの実装では、比較テーブルは、グローバル・ビュー・テーブルおよび分割マップ・テーブルを含む。グローバル・ビュー・テーブルは、キーとOSD番号との間の対応を含み、該OSD番号が、記憶システムにおいてOSDを特定するために使われる。分割マップ・テーブルは、OSD番号と、記憶ノードのネットワーク・アドレスと、OSDの識別子との間の対応を含む。前記処理モジュールは具体的には、グローバル・ビュー・テーブルを検索して、前記の得られたキーに対応するOSD番号を決定し、分割マップ・テーブルを検索して、前記OSD番号に対応する、前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの識別子とを決定するよう構成される。
【００５１】
本願のもう一つの実装では、前記受信モジュールはさらに、メタデータ制御ノードによって送られるグローバル・ビュー・テーブルおよび分割マップ・テーブルを受領するよう構成される。
【００５２】
第五の側面によれば、本願は切り換え装置を提供する。本切り換え装置は、上記の方法実施における切り換え装置を実現する機能をもつ。該機能はハードウェアを使って実装されてもよく、あるいは対応するソフトウェアを実行するハードウェアによって実装されてもよい。ハードウェアまたはソフトウェアは、上記の機能に対応する一つまたは複数のモジュールを含む。任意的に、本切り換え装置は、スイッチまたは切り換え機能を実装する物理的なサーバーのような、ネットワーク側装置であってもよい。
【００５３】
第六の側面によれば、本願はスイッチを提供する。スイッチは、プロセッサと、メモリと、複数の物理ポートを含む。スイッチは、上記の諸側面に基づく切り換え装置の機能を実行する。プロセッサは、上記の方法における対応する機能を実行すること、たとえば上記の方法に関係するデータおよび／または情報を生成または処理することにおいて、該スイッチング装置をサポートするよう構成される。
【００５４】
第七の側面によれば、本願は、上記の切り換え装置によって使われるコンピュータ・ソフトウェア命令を記憶するよう構成されたコンピュータ記憶媒体を提供する。コンピュータ・ソフトウェア媒体は、上記の諸側面のさまざまな実装を実行するために設計されたプログラムを含む。
【図面の簡単な説明】
【００５５】
【図１】本発明のある実施形態に基づく記憶システムのシステム構造の概略図である。
【００５６】
【図２】本発明のある実施形態に基づくコンピューティング・ノードの装置構造の概略図である。
【００５７】
【図３】本発明のある実施形態に基づくコンピューティング・ノードの装置構造の概略図である。
【００５８】
【図４】本発明のある実施形態に基づく記憶ノードの装置構造の概略図である。
【００５９】
【図５】本発明のある実施形態に基づくもう一つの記憶ノードの装置構造の概略図である。
【００６０】
【図６】本発明のある実施形態に基づくメタデータ制御ノードの装置構造の概略図である。
【００６１】
【図７】本発明のある実施形態に基づく切り換え装置の装置構造の概略図である。
【００６２】
【図８】本発明に基づく情報処理方法の第一の実施形態のフローチャートである。
【００６３】
【図９】本発明のある実施形態に基づく、仮想ディスクのボリュームとOSDとの間のマッピング関係の図である。
【００６４】
【図１０】ＡおよびＢは、本発明に基づく情報処理方法の第二の実施形態のフローチャートである。
【００６５】
【図１１】本発明に基づく情報処理方法の第三の実施形態のフローチャートである。
【００６６】
【図１２】本発明に基づくTCPパケットのフォーマットの概略図である。
【００６７】
【図１３】本発明に基づく切り換え装置のもう一つの装置構造の概略図である。
【発明を実施するための形態】
【００６８】
本発明の諸実施形態に基づく技術的解決策は、付属の図面を参照して下記において明瞭かつ完全に記述される。明らかに、記述される実施形態は本発明の実施形態の全部ではなく、単に一部である。
【００６９】
まず図１を参照するに、図１は、本発明のある実施形態に基づく記憶システムのシステム構造の概略図である。図１に示されるように、本発明のこの実施形態に基づく記憶システムは、切り換え装置３００、コンピューティング・ノード・クラスター、記憶ノード・クラスターおよびメタデータ制御ノード４００を含む。コンピューティング・ノード・クラスターは、コンピューティング・ノード１００およびコンピューティング・ノード１００’のような複数のコンピューティング・ノードを含む。記憶ノード・クラスターは第一の記憶ノード２００および第二の記憶ノード２００’のような複数の記憶ノードを含む。本発明のこの実施形態における記憶システムでは、任意のコンピューティング・ノードが、切り換え装置３００を使うことによって、メタデータ制御ノード４００および任意の記憶ノードへのポイントツーポイント接続を確立することができる。
【００７０】
コンピューティング・ノード、記憶ノードおよびメタデータ制御ノードの具体的な数は実際の要件に応じて設定されうることを注しておく価値がある。一般に、本発明の実施形態は分散式記憶技術に関係するので、以下の実施形態では記述のために二つの記憶ノードが例として使われる。具体的な製品実装では、切り換え装置３００は少なくとも一つのスイッチまたはルーターでありうる。
【００７１】
本発明のこの実施形態では、コンピューティング・ノードによって送られたネットワーク・パケットを受領後、切り換え装置３００は書き込み／読み出し動作が実行されるべきOSDを収容している記憶ノードのネットワーク・アドレスと、その記憶ノード上でのそのOSDのOSD識別子とを、前記ネットワーク・パケットにおいて担持されている資源識別子およびオフセットに従って取得し、I/Oコマンドを担持するネットワーク・パケットを生成し、該ネットワーク・パケットを前記記憶ノードに送り、それにより該記憶ノードは前記I/Oコマンドに従って前記記憶ノードの前記OSDに対して読み出し／書き込み動作を実行しうる。
【００７２】
本発明のこの実施形態では、切り換え装置３００は、記憶ノードのネットワーク・アドレスおよびOSDを検索するために、キー値演算機能を実行する。コンピューティング・ノードは、各I/O動作の間に、メタデータ制御ノード上のネットワーク・アドレスおよびOSDを検索するためにメタデータ制御ノードへの接続を確立する必要はない。よって、コンピューティング・ノードの計算量が減らされることができ、ネットワーク負荷が軽減されることができる。
【００７３】
明確な記述のため、図２ないし図５を参照するに、コンピューティング・ノード１００、第一の記憶ノード２００、第二の記憶ノード２００’、メタデータ制御ノード４００および切り換え装置３００の具体的な構造が図２ないし図５において別個に記述される。
【００７４】
まず図２を参照するに、図２は、本発明のある実施形態に基づくコンピューティング・ノードの装置構造の概略図である。図２に示されるように、コンピューティング・ノード１００は、ハードウェア１０１、オペレーティング・システム１０２、VBS（Virtual  Block  System、仮想ブロック・システム）コンポーネント１０４および仮想マシン１０５を含む。
【００７５】
ハードウェア１０１は、物理ネットワーク・アダプター１０１１を含む。オペレーティング・システム１０２は、仮想マシン・モニター１０２２および物理ネットワーク・アダプター・ドライバー１０２１を含む。仮想マシン１０５は、アプリケーション・プログラム１０５１および仮想マシン・オペレーティング・システム１０５２を含み、仮想ディスク１０５２１は仮想マシン・オペレーティング・システム１０５２内に配置されている。
【００７６】
物理ネットワーク・アダプター１０１１は、ネットワーク・リンク層で動作するネットワーク・コンポーネントであり、ネットワークにおいてコンピューティング・ノードと伝送媒体を接続するインターフェースである。物理ネットワーク・アダプター１０１１は、コンピューティング・ノード１００についてのネットワーク・アドレスを設定する。ネットワーク・アドレスはMACアドレスまたはIPアドレスであってもよい。物理ネットワーク・アダプター１０１１は、一つまたは複数のネットワーク・アドレスを設定しうる。この実施形態では、物理ネットワーク・アダプター１０１１は一つのネットワーク・アドレスを設定する必要があるだけである。しかしながら、相対的に複雑なネットワーク環境においては複数のネットワーク・アドレスが設定されてもよいことは注意しておく価値がある。
【００７７】
たとえば、物理ネットワーク・アダプター１０１１はコンピューティング・ノード１００のIPアドレスを192.168.1.11に設定してもよい。
【００７８】
物理ネットワーク・アダプター・ドライバー１０２１は、オペレーティング・システム１０２に配置されており、物理ネットワーク・アダプター１０１１のためのインターフェースを提供する。VBSコンポーネント１０４は、物理ネットワーク・アダプター・ドライバー１０２１によって提供されるインターフェースを使うことによって、ネットワーク・パケットを受信または送信するよう、物理ネットワーク・アダプター１０１１を制御しうる。
【００７９】
VBSコンポーネント１０４は、オペレーティング・システム１０２上でインストールされて、走る。VBSコンポーネント１０４は、コンピューティング・ノード１００のための分散式の記憶アクセス・サービスを提供する。
【００８０】
VBSコンポーネント１０４は、オペレーティング・システム１０２上でネットワーク・ポートを提供される。VBSコンポーネント１０４は、VBSコンポーネント１０４の該ネットワーク・ポートを使うことによって、外部ネットワークと通信する。VBSコンポーネント１０４のネットワーク・ポートはたとえば10001であり、各コンピューティング・ノードの諸VBSコンポーネントの諸ネットワーク・ポートは同じである。
【００８１】
仮想マシン・モニター１０２２はオペレーティング・システム１０２上に配置され、仮想マシン・モニター１０２２は、仮想マシン・オペレーティング・システム１０５２のために、実際のハードウェア１０１とは独立な仮想ハードウェアを生成する。
【００８２】
アプリケーション・プログラム１０５１は仮想マシン・オペレーティング・システム１０５２上で走り、仮想ディスク１０５２１は仮想マシン・オペレーティング・システム１０５２に配置され、アプリケーション・プログラム１０５１は仮想ディスク１０５２１に対する読み出し／書き込み動作を実行しうる。
【００８３】
いくつかの例では、仮想ディスク１０５２１は複数の仮想ボリュームを提供され、各仮想ボリュームにボリューム番号が割り当てられる。仮想ボリュームに対して読み出し／書き込み動作を実行するとき、アプリケーション・プログラム１０５１は、ボリューム番号および第一のオフセットを含む読み出し／書き込み命令を生成する。第一のオフセットは、ボリューム番号に対応する仮想ボリュームの読み出し／書き込み位置を示す。仮想マシン・オペレーティング・システム１０５２は該読み出し／書き込み命令を仮想マシン・モニター１０２２に送る。VBSコンポーネント１０４は該読み出し／書き込み命令を仮想マシン・モニター１０２２から得る。
【００８４】
他の例では、仮想ディスク１０５２１は複数の仮想ファイルを提供される。各仮想ファイルはファイル・システム識別子およびファイル識別子を与えられる。ファイル・システム識別子は、ファイルを収容するファイル・システムの識別子であり、FAT（File  Allocation  Table、ファイル・アロケーション・テーブル）またはNTFS（New  Technology  File  System、ニュー・テクノロジー・ファイル・システム）のようなファイル・フォーマットを特定するために使われる。仮想ファイルに対して読み出し／書き込み動作を実行するとき、アプリケーション・プログラム１０５１は、ファイル・システム識別子、ファイル識別子および第一のオフセットを含む読み出し／書き込み命令を生成する。第一のオフセットは、ファイル・システム識別子およびファイル識別子に対応する仮想ファイルの読み出し／書き込み位置を示す。仮想マシン・オペレーティング・システム１０５２は該読み出し／書き込み命令を仮想マシン・モニター１０２２に送る。VBSコンポーネント１０４は該読み出し／書き込み命令を仮想マシン・モニター１０２２から得る。
【００８５】
図１に示されるコンピューティング・ノード１００’の構造がコンピューティング・ノード１００の構造と同じであることを注意しておく価値がある。詳細はここでは述べない。
【００８６】
任意的に、さらに、図３を参照するに、図３は、本発明のある実施形態に基づくコンピューティング・ノードのもう一つの装置構造の概略図である。図３に示されるように、他の例では、コンピューティング・ノード１００は仮想構造を使わなくてもよい。アプリケーション・プログラム１０５１はオペレーティング・システム１０２上で直接実行される。VBSコンポーネント１０４が、該VBSコンポーネント１０４を収容するノードのための分散式記憶アクセス・サービスを提供する。たとえば、オペレーティング・システム１０２は、VBSコンポーネント１０４によって提供される分散式の記憶スペースを、仮想ディスク１０５２１にマッピングしてもよい。仮想ディスク１０５２１にアクセスするとき、アプリケーション・プログラム１０５１は、VBSコンポーネント１０４を使うことによって、実際には該分散式の記憶スペースにアクセスする。
【００８７】
図３に示した構造では、仮想ディスク１０５２１は複数の仮想ボリュームを設けられていてもよく、各仮想マシン・ボリュームにボリューム番号が割り当てられる。仮想ボリュームに対して読み出し／書き込み動作を実行するとき、アプリケーション・プログラム１０５１は、ボリューム番号および第一のオフセットを含む読み出し／書き込み命令を生成する。第一のオフセットは、ボリューム番号に対応する、その仮想ボリュームの読み出し／書き込み位置を示す。オペレーティング・システム１０２は読み出し／書き込み命令をVBSコンポーネント１０４に送る。
【００８８】
他の例では、仮想ディスク１０５２１は複数の仮想ファイルを設けられる。各仮想ファイルはファイル・システム識別子およびファイル識別子を与えられる。ファイル・システム識別子は、ファイルを収容するファイル・システムの識別子である。ファイル・システムはたとえば、FAT（File  Allocation  Table、ファイル・アロケーション・テーブル）またはNTFS（New  Technology  File  System、ニュー・テクノロジー・ファイル・システム）であってもよい。仮想ファイルに対して読み出し／書き込み動作を実行するとき、アプリケーション・プログラム１０５１は、ファイル・システム識別子、ファイル識別子および第一のオフセットを含む読み出し／書き込み命令を生成する。第一のオフセットは、ファイル・システム識別子およびファイル識別子に対応する仮想ファイルの読み出し／書き込み位置を示す。オペレーティング・システムは該読み出し／書き込み命令をVBSコンポーネント１０４に送る。
【００８９】
図４を参照するに、図４は、本発明のある実施形態に基づく記憶ノードの装置構造の概略図である。図４に示されるように、第一の記憶ノード２００はハードウェア２０１、オペレーティング・システム２０２およびOSDコンポーネント２０３を含む。
【００９０】
ハードウェア２０１は、物理ネットワーク・アダプター２０１１、ディスク・コントローラ２０１２、OSD１、OSD２、OSD３およびOSD４を含む。オペレーティング・システム２０２はディスク・ドライブ２０２１および物理ネットワーク・アダプター・ドライバー２０２２を含む。
【００９１】
OSDコンポーネント２０３は、オペレーティング・システム２０２上でインストールされ、走る。この実施形態では、各OSDは識別子を与えられ、OSDコンポーネント２０３は、OSDの識別子を使うことによって異なるOSDを管理する。
【００９２】
OSDが具体的には物理的なディスク上に配置されていることは注意しておく価値がある。いくつかの例では、一つのOSDが一つの物理的なディスクに配置される。他の例では、複数のOSDが一つの物理的なディスクに配置され、それらのOSDのサイズは同じで、たとえばサイズは10MB（MByte、メガバイト）であってもよい。
【００９３】
この実施形態では、各記憶ノードにおいて、各OSDにOSD識別子が割り当てられ、OSD識別子はその記憶ノードにおけるOSDを特定するために使用されうる。たとえば、OSD１の識別子は0000であり、OSD２の識別子は0001であり、OSD３の識別子は0002であり、OSD４の識別子は0003である。第一の記憶ノード２００におけるOSDの識別子は、OSDコンポーネント２０３によって記録される。
【００９４】
さらに、本発明のこの実施形態における記憶システムでは、各OSDにさらにOSD番号が割り当てられる。OSD番号は、記憶システムにおいてOSDを特定するために使われてもよく、OSD番号はメタデータ制御ノード４００において記録される。
【００９５】
たとえば、第一の記憶ノード２００におけるOSD１のOSD番号は0x00000000である。
【００９６】
物理ネットワーク・アダプター２０１１は、第一の記憶ノード２００のためのネットワーク・アドレスを設定する。OSDコンポーネント２０３は、物理ネットワーク・アダプター・ドライバー２０２２によって提供されるインターフェースを使うことによって、ネットワーク・パケットを送信または受信するよう物理ネットワーク・アダプター２０１１を制御してもよい。
【００９７】
たとえば、物理ネットワーク・アダプター２０１１は第一の記憶ノード２００のIPアドレスを192.168.1.12に設定する。
【００９８】
ディスク・ドライブ２０２１はオペレーティング・システム２０２上に配置され、オペレーティング・システム２０２上でインターフェースを提供する。OSDコンポーネント２０３は該インターフェースを使うことによってディスク・コントローラ２０１２を制御する。
【００９９】
ディスク・コントローラ２０１２はたとえば、ディスク・ドライブ・アダプターであってもよく、OSDコンポーネント２０３によって送られたSCSI（Small  Computer  System  Interface、小型コンピュータ・システム・インターフェース）命令を、オペレーティング・システム２０２上でディスク・ドライブ２０２１によって提供されるインターフェースを使うことによって、受け取り、パースし、そのOSDを収容している物理的なディスクに対して読み出し／書き込み動作を実行する。
【０１００】
OSDコンポーネント２０３は、オペレーティング・システム２０２上でネットワーク・ポートを提供される。VBSコンポーネント１０４は、VBSコンポーネント１０４の該ネットワーク・ポートを使うことによって、外部ネットワークと通信する。たとえば、OSDコンポーネント２０３のネットワーク・ポートは10002である。
【０１０１】
図５を参照するに、図５は、本発明のある実施形態に基づくもう一つの記憶ノードの装置構造の概略図である。第二の記憶ノード２００’の構造が第一の記憶ノード２００の構造とほぼ同じであることを注意しておく価値がある。違いは、第二の記憶ノード２００’の物理ネットワーク・アダプターは第二の記憶ノード２００’のために、第一の記憶ノード２００について与えられたネットワーク・アドレスとは異なるネットワーク・アドレスを提供するということにある。たとえば、第二の記憶ノード２００’のIPアドレスは192.168.1.13である。さらに、第一の記憶ノード２００と同様に、OSDコンポーネント２０３’はさらに第二の記憶ノード２００’上のOSDの識別子を記録する。この実施形態では、OSD１’のOSD識別子は0000であってもよく、OSD２’のOSD識別子は0001であってもよく、OSD３’のOSD識別子は0002であってもよく、OSD４’のOSD識別子は0003であってもよい。さらに、第二の記憶ノード２００’のオペレーティング・システム２０２’上のOSDコンポーネント２０３’のネットワーク・ポートはたとえば10002であってもよい。
【０１０２】
図６を参照するに、図６は、本発明のある実施形態に基づくメタデータ制御ノードの装置構造の概略図である。メタデータ制御ノード４００は、ハードウェア４０１、オペレーティング・システム４０２およびMDC（Metadata  Controller、メタデータ・コントローラ）コンポーネント４０３を含む。ハードウェア４０１はメモリ４０１１および物理ネットワーク・アダプター４０１２を含む。オペレーティング・システム４０２はメモリ・ドライブ４０２１および物理ネットワーク・アダプター・ドライバー４０２２を含む。
【０１０３】
同様に、物理ネットワーク・アダプター・ドライバー４０２２はオペレーティング・システム４０２上でインターフェースを提供する。オペレーティング・システム４０２上で走るMDCコンポーネント４０３は、該インターフェースを使うことによって、ネットワーク・パケットを受信または送信するよう物理ネットワーク・アダプター４０１２を制御する。
【０１０４】
たとえば、物理ネットワーク・アダプター４０１２は、メタデータ制御ノード４００のIPアドレスを192.168.1.14に設定する。
【０１０５】
さらに、メモリ・ドライバー４０２１は、オペレーティング・システム４０２上でインターフェースを提供する。MDCコンポーネント４０３は、該インターフェースを使うことによって、メモリ４０１１にデータを書き込むあるいはメモリ４０１１からデータを読み出す。
【０１０６】
本発明のこの実施形態において、MDCコンポーネント４０３は、キー（key）とOSDとの間の対応を記録してもよい。具体的には、MDCコンポーネント４０３は、記憶システム内の各記憶ノードによって報告される状態情報を受領し、該状態情報およびMDCコンポーネント４０３によって記録されたキー（key）をソートして比較テーブルに入れ、該比較テーブルをメモリ４０１１に記憶する。状態情報は、記憶ノード内のOSDコンポーネントによって記録されたOSDの識別子と、該OSDを受け容れる記憶ノードのIPアドレスとを含む。たとえば、比較テーブルは次のようなものである。
【表１】
2019531563.tif 000003
【０１０７】
比較テーブルにおいて、副次OSDは主要OSDのバックアップである。いくつかのシナリオでは、主要OSDにデータが書き込まれるとき、そのデータは、データ一貫性要求を保証するために、副次OSDにも書き込まれる必要がある。上記の表が、一つのキーが一つの主要OSDおよび一つの副次OSDに対応するシナリオを示すだけであることは注意しておく価値がある。しかしながら、他の例では、一つのキーは一つの主要OSDのみに対応する、あるいは一つのキーは一つの主要OSDおよび三つ以上の副次OSDに対応する。
【０１０８】
任意的に、比較テーブルは、グローバル・ビュー・テーブルおよび分割マップ・テーブルを含む。グローバル・ビュー・テーブルは、各キーと、記憶システムにおける対応するOSD番号との間の対応を含む。OSD番号は、記憶システムにおけるOSDを同定するために使われる。分割マップ・テーブルは、各OSD番号、対応する記憶ノードのネットワーク・アドレスおよび対応するOSDの識別子の間のマッピング関係を含む。
【０１０９】
たとえば、グローバル・ビュー・テーブルは次のようなものである。
【表２】
2019531563.tif 000004
【０１１０】
たとえば、グローバル・ビュー・テーブルにおいて、キーとOSD番号の両方は十六進で表わされる。キーのデータ読み出し長は8バイトであり、OSD番号のデータ読み出し長は4バイトである。
【０１１１】
いくつかの例では、コンピューティング・ノードのオペレーティング・システムが仮想ボリュームをロードするとき、VBSコンポーネントが、仮想ボリュームのボリューム番号および仮想ボリューム内の各オフセットに基づいてハッシュ演算を実行してキーを得る。仮想ボリュームのボリューム番号および仮想ボリューム内のオフセットはキーと一対一対応にある。さらに、VBSコンポーネントはまず仮想ボリューム内のオフセットに対して、OSDのサイズに基づいて丸め演算を実行し、丸め結果および仮想ボリュームのボリューム番号に対してハッシュ演算を実行して、キーを得てもよい。
【０１１２】
他の例では、コンピューティング・ノードのオペレーティング・システムが仮想ファイルをロードするとき、VBSコンポーネントが、仮想ファイルのファイル・システム識別子およびファイル識別子ならびに仮想ファイル内の各オフセットに基づいてハッシュ演算を実行してキーを得る。ファイル・システム識別子、ファイル識別子および仮想ファイル内のオフセットはキーと一対一対応にある。さらに、VBSコンポーネントはまず仮想ファイル内のオフセットに対して、OSDのサイズに基づいて丸め演算を実行し、仮想ファイルのファイル・システム識別子およびファイル識別子ならびに丸め結果に対してハッシュ演算を実行して、キーを得てもよい。
【０１１３】
OSDのサイズに基づいてオフセットに対して丸め演算を実行することによって、仮想ボリュームまたは仮想ファイルがOSDのサイズの単位で分割されることに注意しておく価値がある。仮想ボリュームまたは仮想ファイルにおいて、OSDのサイズに対応するスペースは同じOSDに対応する。
【０１１４】
さらに、グローバル・ビュー・テーブルにおけるOSD番号は記憶システムにおけるすべてのOSDの番号であり、コンピューティング・ノードによって生成されてもよい。たとえば、計算を通じて第一のキーを得るとき、コンピューティング・ノードは、対応して、そのキーに、OSD番号、たとえば0を割り当ててもよい；計算を通じて第二のキーを得るとき、コンピューティング・ノードは、対応して、そのキーに、別のOSD番号、たとえば1を割り当ててもよい；などとなる。キーはOSD番号と一対一対応にある。
【０１１５】
さらに、割り当てられたOSD番号はコンピューティング・ノード間で同期されてもよい。よって、記憶システムにおいて反復されるOSD番号はない。
【０１１６】
たとえば、分割マップ・テーブルは次のようなものである。
【表３】
2019531563.tif 000005
【０１１７】
記述の簡単のため、この実施形態では、一つのグループの副次OSDしか示されていない。いくつかの例では、副次OSDの二つ以上の識別子があってもよい。すなわち、記憶システムにおいて、主要OSDに対応する二つ以上のバックアップがあってもよい。
【０１１８】
同様に、MDCコンポーネント４０３は、オペレーティング・システム４０２上でネットワーク・ポートを提供される。MDCコンポーネント４０３は、MDCコンポーネント４０３のネットワーク・ポートを使うことによって外部ネットワークと通信する。たとえばMDCコンポーネント４０３のポートは10003である。
【０１１９】
記憶システムにおいて、各OSDコンポーネントが統一されたネットワーク・ポートをもち、各VBSコンポーネントが統一されたネットワーク・ポートをもち、OSDコンポーネントのネットワーク・ポートはVBSコンポーネントのネットワーク・ポートとは異なることを注意しておく価値がある。各OSDコンポーネントはVBSコンポーネントのネットワーク・ポートを記録する。
【０１２０】
図７を参照するに、図７は、本発明のある実施形態に基づく切り換え装置の装置構造の概略図である。図７に示されるように、切り換え装置３００はプロセッサ３０１、メモリ３０２、バス３０３および物理ポート1ないし4を含む。
【０１２１】
プロセッサ３０１、メモリ３０２および物理ポート1ないし4はバス３０３に別個に接続されている。物理ポート1ないし4は、ケーブルを使ってコンピューティング・ノードまたは記憶ノードに接続されて、コンピューティング・ノードまたは記憶ノードからネットワーク・パケットを受領してもよい。ネットワーク・パケットはトランシーバーおよび前記バスを通過し、前記プロセッサによってパースされ、処理される。
【０１２２】
たとえば、ケーブルは、撚り対線、ファイバーなどを含むがそれに限られない。
【０１２３】
さらに、プロセッサ３０１は、ネットワーク・パケットの宛先アドレスに従って物理ポートを選択し、該ネットワーク・パケットを選択された物理ポートから、該物理ポートに接続されているコンピューティング・ノードまたは記憶ノードに送ってもよい。
【０１２４】
図７に示したポートの数は単に例であることを注意しておく価値がある。本発明のこの実施形態では、物理ポートの数は限定されない。他の例では、物理ポートの数は8、16、32、64または他の数でもよく、個別的な要件に応じて設定されうる。
【０１２５】
さらに、代替的に、複数の切り換え装置がカスケードを通じて接続されて、ポート拡張を実装してもよい。
【０１２６】
記述の簡単のため、本発明のこの実施形態では、図７に示される物理ポート1は、ケーブルを使って、図１に示されるコンピューティング・ノード１００に接続され、物理ポート2は、ケーブルを使って、図１に示される第一の記憶ノード２００に接続され、物理ポート3は、ケーブルを使って、図１に示される第二の記憶ノード２００’に接続され、物理ポート4は、ケーブルを使って、図１に示されるメタデータ制御ノード４００に接続されていると想定される。
【０１２７】
具体的には、切り換え装置のポートは、異なるケーブルを使って、各ノードの物理ネットワーク・アダプターに接続される。
【０１２８】
さらに、ポート転送規則テーブルが切り換え装置３００のメモリ３０２に事前記録されており、具体的には次のように示される。
【表４】
2019531563.tif 000006
【０１２９】
192.168.1.11はコンピューティング・ノード１００のIPアドレスであり、192.168.1.12は第一の記憶ノード２００のIPアドレスであり、192.168.1.13は第二の記憶ノード２００’のIPアドレスであり、192.168.1.14はメタデータ制御ノードのIPアドレスである。
【０１３０】
切り換え装置３００の物理ポート1、物理ポート2、物理ポート3または物理ポート4がネットワーク・パケットを受領した後、プロセッサ３０１は受領されたネットワーク・パケットの宛先ネットワーク・アドレスを解析し、宛先アドレスに対応する物理ポートをポート転送規則テーブルに問い合わせ、その物理ポートを選択して、その物理ポートに接続されているコンピューティング・ノードまたは記憶ノードにネットワーク・パケットを転送する。
【０１３１】
この実施形態において、IPアドレスであるネットワーク・アドレスは記述のための例として使われていることを注意しておく価値がある。ある代替的な実施形態では、ネットワーク・アドレスはMAC（Media  Access  Control、媒体アクセス制御）アドレスであってもよく、ポート転送規則テーブルは物理ポートとMACアドレスとの間の対応を記録してもよい。
【０１３２】
加えて、ある任意的な実施形態では、スイッチまたはルーターが、物理ポートと記憶ノード、コンピューティング・ノードまたはメタデータ制御ノードとの間に配置されていることがある。切り換え装置３００は、受領されたネットワーク・パケットの宛先アドレスに基づいて物理ポートを選択し、そのネットワーク・パケットをスイッチまたはルーターに送ってもよく、そのネットワーク・パケットは該スイッチまたはルーターを使って、宛先アドレスに対応する記憶ノード、コンピューティング・ノードまたはメタデータ制御ノードに転送される。
【０１３３】
いくつかの実施形態では、切り換え装置３００は、物理ポート3を使うことによって、メタデータ制御ノード４００から送られるグローバル・ビュー・テーブルおよび分割マップ・テーブルを受領して、該グローバル・ビュー・テーブルおよび分割マップ・テーブルをメモリ３０２に記憶してもよい。
【０１３４】
他の実施形態では、グローバル・ビュー・テーブルおよび分割マップ・テーブルは、切り換え装置３０２が生産されるときにメモリ３０２に書き込まれ、グローバル・ビュー・テーブルおよび分割マップ・テーブルはメモリ３０２に組み込まれる。
【０１３５】
他の実施形態では、メタデータ制御ノード４００の機能が切り換え装置３００によって実装されてもよいことは注意しておく価値がある。
【０１３６】
図８を参照するに、図８は、本発明に基づく情報処理方法の第一の実施形態のフローチャートである。図８は、記憶システムにおける一つのI/O動作を実行するプロセスを示している。図８に示されるように、本発明のこの実施形態における情報処理方法は以下の段階を含む。
【０１３７】
段階５０１：コンピューティング・ノード１００が第一のネットワーク・パケットを生成し、該第一のネットワーク・パケットを切り換え装置３００に送る。第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持する。第一のネットワーク・アドレスの宛先アドレスはヌルであってもよく、送信元アドレスはコンピューティング・ノードのネットワーク・アドレスである。
【０１３８】
いくつかの例では、資源識別子はコンピューティング・ノード上の仮想ディスクのボリューム番号である。他の例では、資源識別子はファイル・システム識別子およびファイル識別子である。
【０１３９】
いくつかの例では、第一のネットワーク・パケットはさらにパケット型識別子を担持し、該パケット型識別子は第一のネットワーク・パケットを処理するよう切り換え装置３００に通知するために使われる。
【０１４０】
たとえば、資源識別子はコンピューティング・ノード上の仮想ディスクにおけるファイル識別子およびファイル・システム識別子であり、コンピューティング・ノード１００は図２に示される構造をもつ。アプリケーション・プログラム１０５１は「カレント・ディレクトリにおけるファイルreadme.txtにおける第256KBスペースから始まる書き込まれるべきデータを書き込む」というコマンドを送る。仮想マシン・オペレーティング・システム１０５２のファイル・システムは上記のコマンドに従って書き込みI/Oコマンドを生成し、書き込まれるべきデータを取得し、ファイル・システムのファイル・アロケーション・テーブルに問い合わせてファイルreadme.txtのファイル識別子およびファイルreadme.txtを収容しているファイル・システム（たとえばFAT32）のファイル・システム識別子を知る。第一のオフセットは、ファイルreadme.txtにおける第256KBから始まるスペースである。仮想マシン・オペレーティング・システム１０５２は、ファイル識別子、ファイル・システム識別子、第一のオフセットおよびI/Oコマンドを仮想マシン・モニター１０２２に送る。I/Oコマンドは、書き込みI/Oコマンドおよび書き込まれるべきデータを含む。
【０１４１】
さらに、仮想マシン・モニター１０２２はファイル識別子、ファイル・システム識別子、第一のオフセットおよびI/OコマンドをVBSコンポーネント１０４に送る。VBSコンポーネント１０４は、ファイル識別子、ファイル・システム識別子、第一のオフセットおよびI/Oコマンドを含む第一のネットワーク・パケットを生成する。VBSコンポーネント１０４は、物理ネットワーク・アダプター・ドライバー１０２１によって与えられるインターフェースを使って、第一のネットワーク・パケットを切り換え装置３００の物理ポート1に送るよう物理ネットワーク・アダプター１０１１を制御する。
【０１４２】
段階５０２：切り換え装置３００は、第一のネットワーク・パケットを受領し、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容する第一の記憶ノード２００の第一のネットワーク・アドレスと、前記第一のOSDの識別子（OSD1）とを取得する。
【０１４３】
いくつかの例では、切り換え装置３００は、OSDのサイズを除数として使うことによって、第一のオフセットに対してモジュロ演算を実行し、得られた結果を、前記第二のオフセットとして使う。記述の簡単のため、図９を参照するに、図９は、本発明のある実施形態に基づく、仮想ディスクのボリュームとOSDとの間のマッピング関係の図である。図９では、ボリューム１はOSD１、OSD５、OSD７、OSD４に対応し、ボリューム２はOSD２、OSD６、OSD３、OSD８に対応する。コンピューティング・ノード１００のアプリケーション・プログラム１０５１が仮想ディスク１０５２１の仮想ボリューム１内の第一のオフセットAに対してI/O動作を実行する必要があるとき、アプリケーション・プログラム１０５１は実際には、OSD１の第二のオフセットBに対してI/O動作を実行する。ボリューム１のサイズが4Mであり、Aが3.5Mであり、各OSDのサイズが１Mであれば、仮想ボリューム１内の3.5Mから始まるデータに対してI/O動作が実行される必要があるとき、モジュロ演算は、1Mを除数として使うことによって3.5Mに対して実行される必要があるだけであり、得られた結果はB＝0.5Mである。つまり、I/O動作はOSD１における0.5Mから始まるデータに対して実行される。
【０１４４】
いくつかの例では、切り換え装置３００は、OSDのサイズに従って第一のオフセットに対して丸め演算を実行して丸め結果を得て、資源識別子および丸め結果に対応するキーを得て、比較テーブルを検索して、キーに対応する、第一の記憶ノードの第一のネットワーク・アドレスおよび第一のOSDの識別子を決定する。比較テーブルは、キーと、記憶ノードのネットワーク・アドレスと、OSDの識別子との間の対応を含む。図９に示されるように、第一のオフセットA（3.5M）および第三のオフセットC（3.9M）に対応する両方のOSDはOSD１である。Aが直接、仮想ボリューム１のボリューム番号でハッシュ演算を実行するための入力パラメータとして使われ、Cが、ボリューム１の前記ボリューム番号でハッシュ演算を実行するための入力パラメータとして使われる場合、二つの異なる結果が得られる。つまり、AおよびCは二つのOSDに対応する。よって、本発明のこの実施形態では、OSDのサイズに従ってAに対して丸め演算が実行され、丸め結果3.5/1＝3が得られる。OSDのサイズに従ってCに対して丸め演算が実行され、丸め結果3.9/1＝3が得られる。二つの丸め結果3に基づいて別個にボリューム１のボリューム番号に対してハッシュ演算を実行することによって得られた結果は、一致し、AおよびC両方はOSD１に対応することを保証する。丸め処理が仮想ボリューム１におけるオフセットに対して実行された後、仮想ボリューム１内のスペースd内にある、OSD1に対応するすべてのオフセットは丸められ、次いで、すべてのオフセットを使うことによって仮想ボリューム１のボリューム番号に対してハッシュ演算が実行され、得られた結果はみな同じである。すなわち、すべてのオフセットは同じOSD１に対応する。仮想ボリュームとOSDとの間のマッピング関係が確立されることができる。
【０１４５】
もう一つの例では、第一のオフセットはブロック番号であってもよい。たとえば、前記仮想ボリュームは同じデータ長をもつ複数のブロックを含み、それらのブロックは連続する番号をもち、各ブロックは同じデータ長を与えられ、前記仮想ボリューム内の特定のブロックはブロック番号（第一のオフセット）を使うことによって位置特定されうる。対応して、OSDは同じデータ長の諸ブロックに分割されてもよく、OSD内の特定のブロックはブロック番号（第二のオフセット）を使うことによって位置特定されうる。
【０１４６】
いくつかの例では、切り換え装置３００が第一のネットワーク・パケットがキー値KVパケットであることをパケット型識別子に従って判別するときにのみ、切り換え装置３００は第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容する第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する段階を実行することができる。第一のネットワーク・パケットがパケット型識別子を担持していないことを判別し、第一のネットワーク・パケットが非KVパケットであることを判別するときには、切り換え装置３００は、第一のネットワーク・パケットの宛先アドレスに従って物理ポートを直接選択し、第一のネットワーク・パケットを送る。よって、第一のネットワーク・パケットがキー値KVパケットであるかどうかはパケット型識別子によって判定され、よって切り換え装置３００はキー値KVパケットおよび非KVパケットの両方を処理することができ、システム互換性が改善される。
【０１４７】
さらに、比較テーブルはグローバル・ビュー・テーブルおよび分割マップ・テーブルを含む。グローバル・ビュー・テーブルは、キーとOSD番号との間の対応を含み、OSD番号は記憶システムにおけるOSDを特定するために使われる。分割マップ・テーブルは、OSD番号と、記憶ノードのネットワーク・アドレスと、OSDの識別子との間の対応を含む。
【０１４８】
たとえば、切り換え装置３００は、グローバル・ビュー・テーブルを検索して、前記の得られたキーに対応するOSD番号を決定し、分割マップ・テーブルを検索して、前記OSD番号に対応する、前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの識別子とを決定してもよい。
【０１４９】
さらに、切り換え装置はさらに、メタデータ制御ノード４００によって送られた、前記グローバル・ビュー・テーブルおよび前記分割マップ・テーブルを受領するよう構成される。
【０１５０】
段階５０３：切り換え装置３００は、第二のネットワーク・パケットを生成し、前記第二のネットワーク・パケットを前記第一の記憶ノード２００に送る。前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスであり、送信元アドレスはコンピューティング・ノード１００のネットワーク・アドレスであってもよい。
【０１５１】
たとえば、切り換え装置３００は、第一のネットワーク・アドレスに従ってポート2を選択し、ポート2を使って第二のネットワーク・パケットを送る。
【０１５２】
段階５０４：第一の記憶ノード２００は、切り換え装置３００によって送られた第二のネットワーク・パケットを受領し、前記I/Oコマンドに従って、前記第二のオフセットによって示される、前記第一のOSD内にある記憶アドレスに対して前記I/O動作を実行する。
【０１５３】
いくつかの例では、I/Oコマンドが書き込みI/Oコマンドおよび書き込まれるべきデータを含むとき、第一の記憶ノード２００は具体的には、書き込みI/Oコマンドに従って、書き込まれるべきデータを、前記第二のオフセットによって示され、前記第一のOSD内にある記憶アドレスに書き込むよう構成される。
【０１５４】
他の例では、I/Oコマンドが読み出しI/Oコマンドおよび読み出し長を含むとき、第一の記憶ノード２００は具体的には、読み出しI/Oコマンドに従って、前記第二のオフセットによって示され、前記第一のOSD内にある記憶アドレスから前記データ長ぶんのデータを読むよう構成される。
【０１５５】
たとえば、第一の記憶ノード２００の物理ネットワーク・アダプター２０１１は、物理ポート2から第二のネットワーク・パケットを受領し、OSDコンポーネント２０３は第二のネットワーク・パケットを物理ネットワーク・アダプター２０１１から、物理ネットワーク・アダプター・ドライバー１０２１によって提供されるインターフェースを使って取得する。
【０１５６】
段階５０５：第一の記憶ノード２００は、第一の応答パケットを切り換え装置３００に送る。第一の応答パケットはI/O動作結果およびパケット型識別子を担持し、第一の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスである。
【０１５７】
たとえば、OSDコンポーネント２０３はI/O動作結果およびパケット型識別子を担持する第一の応答パケットを生成し、物理ネットワーク・アダプター・ドライバー１０２１によって提供されるインターフェースを使うことによって、物理ネットワーク・アダプター２０１１を制御して第一の応答パケットを物理ポート2に送らせる。
【０１５８】
段階５０６：切り換え装置３００は、パケット型識別子に従って、第一の応答パケットがキー値KVパケットであることを判別し、第二の応答パケットを生成し、該第二の応答パケットをコンピューティング・ノード１００に送る。第二の応答パケットは、前記I/O動作結果を担持しており、第二の応答パケットの宛先アドレスはコンピューティング・ノード１００のネットワーク・アドレスであり、送信元アドレスは第一の記憶ノード２００のネットワーク・アドレスである。
【０１５９】
たとえば、切り換え装置３００はコンピューティング・ノード１００のネットワーク・アドレス192.168.1.11に従って物理ポート1を選択し、第二の応答パケットを物理ポート1を使うことによってコンピューティング・ノード１００に送る。
【０１６０】
段階５０７：コンピューティング・ノード１００が第二の応答パケットを受領し、該第二の応答パケットにおいて担持されているI/O動作結果を取得する。
【０１６１】
たとえば、コンピューティング・ノード１００の物理ネットワーク・アダプター１０１１は物理ポート１から第二の応答パケットを受領し、VBSコンポーネント１０４は、物理ネットワーク・アダプター・ドライバー１０２１によって提供されるインターフェースを使うことによって物理ネットワーク・アダプター１０１１から第二の応答パケットを受領し、第二の応答パケットをパースして前記I/O動作結果を取得し、I/O動作結果をアプリケーション・プログラム１０５１に送る。
【０１６２】
本発明のこの実施形態では、切り換え装置がOSDをローカルに探すので、コンピューティング・ノードはキーを計算する必要がなく、各I/O動作の間にメタデータ制御ノードへのネットワーク接続を確立する必要がない。よって、コンピューティング・ノードの計算量が削減でき、ネットワーク負荷が軽減される。
【０１６３】
ある具体的な実装シナリオでは、データ記憶のセキュリティーを改善するために、コンピューティング・ノードは、データをマルチコピー形式で複数のノードに書き込んでもよい。たとえば、本発明の実施形態において、コンピューティング・ノードがデータを二コピー形式で二つの記憶ノードに書き込むことが、記述のための例として使われる。図１０Ａおよび図１０Ｂを参照するに、図１０Ａおよび図１０Ｂは、本発明の情報処理方法の第二の実施形態を示している。情報処理方法は、以下の段階を含む。
【０１６４】
段階６０１：コンピューティング・ノード１００が第一のネットワーク・パケットを生成する。第一のネットワーク・パケットは資源識別子、第一のオフセット、書き込みI/Oコマンド、書き込まれるべきデータおよびマルチコピー動作コードを担持する。コンピューティング・ノード１００は第一のネットワーク・パケットを切り換え装置３００に送る。
【０１６５】
コンピューティング・ノード１００が第一のネットワーク・パケットを生成して送る具体的な実装は段階５０１のものと同様であり、詳細は本発明のこの実施形態では記載されない。
【０１６６】
段階６０２：切り換え装置が、第一のネットワーク・パケットを受領し、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子と、書き込み動作が実行されるべき第二のOSDを収容している第二の記憶ノードの第二のネットワーク・アドレスと、前記第二のOSDの識別子とを取得する。
【０１６７】
段階５０２と同様に、切り換え装置３００は、比較テーブルを検索し、前記マルチコピー動作コードに従って、書き込まれるべきデータが書き込まれる必要のある二つの記憶ノードと、該各記憶ノード上で該データが書き込まれるべきOSDの識別子とを決定する。
【０１６８】
段階６０３：切り換え装置３００は、第二のネットワーク・パケットおよび第三のネットワーク・パケットを生成して送る。
【０１６９】
具体的には、切り換え装置３００は、各ネットワーク・ノードについて対応するネットワーク・パケットを生成する。第二のネットワーク・パケットは第二のオフセット、書き込みI/Oコマンド、書き込まれるべきデータおよび第一のOSDの識別子を担持し、第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである。第一のOSDは、第一の記憶ノード２００において前記データが書き込まれるべきOSDである。
【０１７０】
第三のネットワーク・パケットは第二のオフセット、書き込みI/Oコマンド、書き込まれるべきデータおよび第二のOSDの識別子を担持し、第三のネットワーク・パケットの宛先アドレスは前記第二のネットワーク・アドレスである。第二のOSDは、第二の記憶ノード２００’において前記データが書き込まれるべきOSDである。
【０１７１】
この段階において、切り換え装置３００は、第二のネットワーク・パケットがパケット識別子1をもつことを設定し、第三のネットワーク・パケットがパケット識別子2をもつことを設定してもよい。その後受領されるKVパケットがパケット識別子を担持しているときは、切り換え装置は該KVパケットが前記第二のネットワーク・パケットまたは前記第三のネットワーク・パケットについての応答パケットであることを判別する。
【０１７２】
段階６０４：第一の記憶ノード２００が第二のネットワーク・パケットを受領し、前記書き込みI/Oコマンドに従って、書き込まれるべきデータを、前記第二のオフセットによって示される、前記第一のOSD内の記憶アドレスに書き込み、第一の応答パケットを生成する。第一の応答パケットは、第一の書き込み結果およびパケット型識別子を担持し、第一の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスである。
【０１７３】
この段階において、第一の記憶ノード２００は、第一の応答パケットがパケット識別子1を担持することを設定する。
【０１７４】
段階６０５：第二の記憶ノード２００’が第三のネットワーク・パケットを受領し、前記書き込みI/Oコマンドに従って、書き込まれるべきデータを、前記第二のオフセットによって示される、前記第二のOSD内の記憶アドレスに書き込み、第二の応答パケットを生成する。第二の応答パケットは、第二の書き込み結果およびパケット型識別子を担持し、第二の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスである。
【０１７５】
この段階において、第二の記憶ノード２００’は、第二の応答パケットがパケット識別子2を担持することを設定する。
【０１７６】
段階６０６：切り換え装置３００は、第一の応答パケットおよび第二の応答パケットを受領し、前記パケット型識別子に従って第一の応答パケットおよび第二の応答パケットがキー値KVパケットであることを判別し、第三の応答パケットを生成し、第三の応答パケットを送る。第三の応答パケットは、第一の書き込み結果および第二の書き込み結果を担持し、第三の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスである。
【０１７７】
この段階では、第一のパケットがKVパケットであることを判別した後、第一の応答パケットがパケット識別子1を担持しているときは、切り換え装置３００は第一の応答パケットが第一のネットワーク・パケットについての応答パケットであることを判別する。第二のパケットがKVパケットであることを判別した後、第二の応答パケットがパケット識別子2を担持しているときは、切り換え装置３００は第二の応答パケットが第二のネットワーク・パケットについての応答パケットであることを判別する。この場合、切り換え装置３００は、第一のネットワーク・パケットおよび第二のネットワーク・パケットにそれぞれ担持されていた書き込み結果を第三の応答パケットに組み合わせて、第三の応答パケットを前記コンピューティング・ノードに送る。
【０１７８】
ネットワーク・パケットと応答パケットの間の対応は、パケット識別子を使って判別されてもよい。切り換え装置３００が異なるコンピューティング・ノードによって送られたKVパケットを同時に処理する必要があるとき、書き込み結果が同じコンピューティング・ノードに対応することを保証するために前記パケット識別子が使用されうる。
【０１７９】
段階６０７：コンピューティング・ノード１００は第三の応答パケットを受領し、第三の応答パケットにおいて担持されている第一の書き込み結果および第二の書き込み結果を取得する。
【０１８０】
本発明のこの実施形態は、マルチコピー書き込み手順である。切り換え装置３００は、第一のネットワーク・パケットがマルチコピー動作コードを担持していることを判別するとき、書き込まれるべきデータを少なくとも二つの記憶ノードに記憶のために送る。前記少なくとも二つの記憶ノードによって返される応答パケットを受信後、切り換え装置３００は応答パケットの型を判別し、前記少なくとも二つのノードによって返された複数の応答パケットに対して、組み合わされたカプセル化を実行して、コンピューティング・ノード１００に返されるべき一つの応答パケットを生成する。本発明のこの実施形態は切り換え装置３００の機能をさらに拡張し、切り換え装置３００はマルチコピー動作コードに従って、コンピューティング・ノードからの書き込みコマンドを、複数の記憶ノードのための書き込みコマンドに変換し、複数の記憶ノードからの応答を単一の応答にまとめ、該単一の応答をコンピューティング・ノードに返す。よって、コンピューティング・ノードの負担が著しく軽減され、比較的大きなIOトラフィックのあるシナリオでは特に、本発明のこの実施形態は、より明確な利点をもつ。
【０１８１】
図１１を参照するに、図１１は、本発明に基づく情報処理方法の第三の実施形態のフローチャートである。図１１に示される情報処理方法における段階７０１ないし段階７０３は図１０Ａおよび図１０Ｂにおける段階６０１ないし段階６０３と全く同じであり、違いは段階７０４ないし段階７０９である。よって、段階７０１ないし段階７０３の記述はここでは割愛される。
段階７０４：第一の記憶ノード２００が第二のネットワーク・パケットを受領し、前記書き込みI/Oコマンドに従って、前記第二のオフセットによって示される、前記第一のOSD内の記憶アドレスに前記書き込まれるべきデータを書き込み、第四の応答パケットを生成し、該第四の応答パケットを切り換え装置３００に送る。第四の応答パケットは第一の書き込み結果を担持し、第四の応答パケットの宛先アドレスはコンピューティング・ノード１００のネットワーク・アドレスである。
【０１８２】
たとえば、第一の記憶ノード２００は第四の応答パケットを切り換え装置３００の物理ポート2に送る。
【０１８３】
段階７０５：切り換え装置３００は第四の応答パケットをコンピューティング・ノード１００に転送する。
【０１８４】
たとえば、切り換え装置３００が第四の応答パケットがパケット型識別子を担持していないことを判別し、第四の応答パケットが非KVパケットであることを判別するとき、切り換え装置３００は、第四の応答パケットの宛先アドレスに従って物理ポート1を選択し、物理ポート1を使うことによって第四の応答パケットをコンピューティング・ノード１００に転送してもよい。
【０１８５】
段階７０６：コンピューティング・ノード１００は第四の応答パケットを受領し、第四の応答パケットに担持されている第一の書き込み結果を取得する。
【０１８６】
段階７０７：第二の記憶ノード２００’は第三のネットワーク・パケットを受領し、前記書き込みI/Oコマンドに従って、前記第二のオフセットによって示される、前記第二のOSD内の記憶アドレスに前記書き込まれるべきデータを書き込み、第五の応答パケットを生成し、該第五の応答パケットを切り換え装置３００に送る。第五の応答パケットは第二の書き込み結果を担持し、第五の応答パケットの宛先アドレスはコンピューティング・ノード１００のネットワーク・アドレスである。
【０１８７】
たとえば、第二の記憶ノード２００’は第五の応答パケットを切り換え装置３００の物理ポート3に送る。
【０１８８】
段階７０８：切り換え装置３００は第五の応答パケットをコンピューティング・ノード１００に転送する。
【０１８９】
たとえば、切り換え装置３００が第五の応答パケットがパケット型識別子を担持していないことを判別し、第五の応答パケットが非KVパケットであることを判別するとき、切り換え装置３００は、第五の応答パケットの宛先アドレスに従って物理ポート1を選択し、物理ポート1を使うことによって第五の応答パケットをコンピューティング・ノード１００に転送してもよい。
【０１９０】
段階７０９：コンピューティング・ノード１００は第五の応答パケットを受領し、第五の応答パケットに担持されている第二の書き込み結果を取得する。
【０１９１】
本発明のこの実施形態は、もう一つのマルチコピー書き込み手順である。第一のネットワーク・パケットがマルチコピー動作コードを担持していることを判別するとき、切り換え装置３００は、書き込まれるべきデータを少なくとも二つの記憶ノードに記憶のために送り、前記少なくとも二つの記憶ノードによって返される応答パケットを受信後、応答パケットの型を判別し、それらの応答パケットを別個にコンピューティング・ノード１００に転送する。本発明のこの実施形態では、記憶ノードは応答パケットにパケット型識別子を設定する必要がなく記憶ノードは修正される必要がない。よって、システム互換性に寄与し、本発明のこの実施形態は、比較的小さなIOトラフィックのあるシナリオについて特に好適である。
【０１９２】
本発明のこの実施形態において、関係するパケットは具体的にはTCPパケットおよびUDPパケットを含みうる。前記パケット型識別子は、該TCPパケットまたはUDPパケットのIPパケット・ヘッダ内にあるオプション（options）フィールドおよびパディング（padding）フィールドにおいて設定されてもよい。TCPパケットまたはUDPパケット内で、オプション（options）フィールドおよびパディング（padding）フィールドは通例アイドルなので、IPヘッダにおけるこれらのフィールドはパケット型識別子を担持するために使われる。パケットの型を判別するとき、切り換え装置はIPヘッダを解析する必要があるだけであり、IPデータ・フィールドを分解する必要はない。よって、パケットの処理が加速されることができる。
【０１９３】
本発明のこの実施形態におけるネットワーク・アドレスはMACアドレスまたはIPアドレスであってもよい。たとえば、図１３を参照するに、図１３は、本発明のある実施形態に基づくTCPパケットのフォーマットの概略図である。図１３に示されるように、IPパケット・ヘッダはオプション・フィールドおよびパディング・フィールドを設けられている。具体的には、オプション・フィールドおよびパディング・フィールドは、パケット型識別子を担持するために使われてもよい。
【０１９４】
本発明のこの実施形態において、切り換え装置によって送られる第二のネットワーク・パケットの宛先アドレスは、第一の記憶ノードであり、よって、第二のネットワーク・パケットの宛先ポートは、第一の記憶ノードのOSDコンポーネントのネットワーク・ポート、たとえば10002であってもよい。OSDコンポーネントは、第二のネットワーク・パケットの宛先ポートを使うことによって、第二のネットワーク・パケットがそのOSDコンポーネントのためのものであることを知りうる。よって、OSDコンポーネントは第二のネットワーク・パケットをパースしてもよい。第三のネットワーク・パケットの処理は同様であり、ここで詳細を述べることはしない。
【０１９５】
さらに、記憶ノードまたはスイッチによって送られる応答パケットの宛先アドレスは、コンピューティング・ノードであり、よって、応答パケットの宛先ポートは、該コンピューティング・ノードのVBSコンポーネントのネットワーク・ポート、たとえば10001であってもよい。VBSコンポーネントは、応答パケットの宛先ポートを使うことによって、応答パケットがそのVBSコンポーネントのためのものであることを知りうる。よって、VBSコンポーネントは応答パケットをパースしてもよい。
【０１９６】
図１２を参照するに、図１２は、本発明に基づく切り換え装置のもう一つの装置構造の概略図である。切り換え装置は：コンピューティング・ノードによって送られた第一のネットワーク・パケットを受領するよう構成された受信モジュール８０１であって、第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持する、受信モジュールと；前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容する第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する段階と；第二のネットワーク・パケットを生成する段階であって、前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである、段階とを実行するよう構成された処理モジュール８０２と；前記第二のネットワーク・パケットを前記第一の記憶ノードに送るよう構成された送信モジュール８０３とを含む。
【０１９７】
任意的に、前記I/Oコマンドは書き込みI/Oコマンドおよび書き込まれるべきデータを含む。前記第一のネットワーク・パケットはさらにマルチコピー動作コードを含む。前記処理モジュール８０２は具体的には、前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子と、書き込み動作が実行されるべき第二のOSDを収容している第二の記憶ノードの第二のネットワーク・アドレスと、前記第二のOSDの識別子とを、前記資源識別子および前記第一のオフセットに従って取得するよう構成される。
【０１９８】
前記処理モジュール８０２はさらに、前記マルチコピー動作コードに従って第三のネットワーク・パケットを生成するよう構成される。前記第三のネットワーク・パケットは前記第二のオフセットと、前記書き込みI/Oコマンドと、前記書き込まれるべきデータと、前記第二のOSDの前記識別子とを担持し、前記第三のネットワーク・パケットの宛先アドレスは前記第二のネットワーク・アドレスである。
【０１９９】
前記送信モジュール８０３はさらに、前記第三のネットワーク・パケットを前記第二の記憶ノードに送るよう構成される。
【０２００】
任意的に、前記受信モジュール８０１はさらに、前記第一の記憶ノードによって送られた第一の応答パケットおよび前記第二の記憶ノードによって送られた第二の応答パケットを受領するよう構成される。第一の応答パケットは第一の書き込み結果およびパケット型識別子を担持し、第一の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスである。第二の応答パケットは第二の書き込み結果およびパケット型識別子を担持し、第二の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスである。処理モジュール８０２はさらに：前記パケット型識別子に従って第一の応答パケットおよび第二の応答パケットがキー値KVパケットであることを判別し、第三の応答パケットを生成し、該第三の応答パケットを前記コンピューティング・ノードに送るよう構成される。第三の応答パケットは、第一の書き込み結果および第二の書き込み結果を担持し、第三の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスである。
【０２０１】
任意的に、処理モジュール８０２は、具体的には：前記OSDのサイズを除数として使って、前記第一のオフセットに対してモジュロ演算を実行し、得られた結果を前記第二のオフセットとして使うよう構成される。
【０２０２】
任意的に、前記資源識別子は前記コンピューティング・ノード上の仮想ディスクのボリューム番号であり、前記処理モジュール８０２は具体的には、前記ボリューム番号および前記第一のオフセットに従って、I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得するよう構成される。
【０２０３】
任意的に、前記資源識別子はファイル・システム識別子およびファイル識別子であり、前記処理モジュール８０２は具体的には、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを、前記ファイル・システム識別子、前記ファイル識別子および前記第一のオフセットに従って取得するよう構成される。
【０２０４】
任意的に、前記第一のネットワーク・パケットはさらにパケット型識別子を担持し、前記処理モジュール８０２はさらに、該パケット型識別子に従って、前記第一のネットワーク・パケットがキー値KVパケットであることを判別するよう構成される。
【０２０５】
任意的に、前記処理モジュール８０２はさらに：前記OSDのサイズに基づいて前記第一のオフセットに対して丸め演算を実行して丸め結果を得て、前記資源識別子および前記丸め結果に対応するキーを取得し、比較テーブルを検索して、前記キーに対応する、前記第一の記憶ノードの前記第一のネットワーク・アドレスおよび前記第一のOSDの識別子を決定するよう構成される。比較テーブルは、キーと、記憶ノードのネットワーク・アドレスと、OSDの識別子との間の対応を含む。
【０２０６】
任意的に、比較テーブルは、グローバル・ビュー・テーブルおよび分割マップ・テーブルを含む。グローバル・ビュー・テーブルは、キーとOSD番号との間の対応を含み、該OSD番号が、記憶システムにおいてOSDを特定するために使われる。分割マップ・テーブルは、OSD番号と、記憶ノードのネットワーク・アドレスと、OSDの識別子との間の対応を含む。前記処理モジュール８０２は具体的には：グローバル・ビュー・テーブルを検索して、前記の得られたキーに対応するOSD番号を決定し、分割マップ・テーブルを検索して、前記OSD番号に対応する、前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの識別子とを決定するよう構成される。
【０２０７】
任意的に、前記受信モジュール８０１はさらに、メタデータ制御ノードによって送られるグローバル・ビュー・テーブルおよび分割マップ・テーブルを受領するよう構成される。
【０２０８】
本願はスイッチを提供する。スイッチは、プロセッサ３０１と、メモリ３０２と、複数の物理ポート1ないし4とを含む。スイッチは、上記の諸側面において記載された切り換え装置３００の機能を実行する。
【０２０９】
プロセッサ３０１、メモリ３０２および物理ポート1ないし4は別個にバス３０３に接続される。物理ポート1ないし4は、ケーブルを使ってコンピューティング・ノードまたは記憶ノードに接続されてもよく、コンピューティング・ノードまたは記憶ノードからネットワーク・パケットを受領してもよい。ネットワーク・パケットはトランシーバーおよび前記バスを通過し、該プロセッサによってパースされ、処理される。
【０２１０】
第一の物理ポート1は、コンピューティング・ノードによって送られた第一のネットワーク・パケットを受領するよう構成される。第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持する。プロセッサ３０１は次の段階を実行するためのプログラム命令を実行する：前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成する段階と；前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容する第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する段階と；第二のネットワーク・パケットを生成する段階。第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである。第二の物理ポート2は前記第二のネットワーク・パケットを前記第一の記憶ノードに送るよう構成される。
【０２１１】
プロセッサ３０１はさらに、上記の方法における対応する機能を実行すること、たとえば上記の方法に関係するデータおよび／または情報を生成または処理することにおいて前記切り換え装置をサポートするよう構成される。
【０２１２】
本発明のこの実施形態において、キーに基づく宛先アドレスの検索または計算およびネットワークIOの最終的なカプセル化は、コンピューティング・ノードによって完了されず、前記スイッチによって完了される。よって、コンピューティング・ノードの負荷が軽減される。固定フォーマットのデータをもつパケットを処理するためにFPGA（Field-Programmable  Gate  Array、フィールドプログラマブルゲートアレイ）、専用CPU、ASIC（Application  Specific  Integrated  Circuit、特定用途向け集積回路）およびNP（Network  Processor,ネットワーク・プロセッサ）のような種々の処理エンジンを前記スイッチに加えることによって、前記スイッチの効率およびパフォーマンスは、一般的なプロセッサよりもずっとよくなる。
【０２１３】
上記で記述したいずれの装置実施形態も単に例であることを注意しておくべきである。別個の部分として記載されているユニットは物理的に別個であってもなくてもよく、ユニットとして表示されている部分は物理的な単位であってもなくてもよく、一つの位置に位置していてもよいし、あるいは複数のネットワーク・ユニットに分散されていてもよい。モジュールの一部または全部は、実施形態の解決策の目的を達成するための実際の要件に従って選択されうる。さらに、本発明で与えられる装置実施形態の付属の図面において、モジュール間の接続関係は、それらのモジュールが互いと通信接続をもつことを示し、かかる接続は具体的には一つまたは複数の通信バスまたは信号ケーブルによって実装されうる。当業者は、創造的な努力なしに本発明の実施形態を理解し、実装しうる。
【０２１４】
上記の実装の記述に基づき、当業者は本発明が、必要な普遍的なハードウェアに加えたソフトウェアによって、あるいは専用のハードウェアによって実装されうることをはっきりと理解しうる。専用のハードウェアは、特定用途向け集積回路、専用CPU、専用メモリ、専用コンポーネントなどを含む。一般に、コンピュータ・プログラムによって実行されることのできるいかなる機能も、対応するハードウェアを使うことによって容易に実装できる。さらに、同じ機能を達成するために使われる具体的なハードウェア構造は、さまざまな形でありうる。たとえば、アナログ回路、デジタル回路、専用回路などの形である。しかしながら、本発明では、ソフトウェア・プログラム実装がたいていの場合、よりよい実装である。そのような理解に基づき、本発明の技術的解決策は本質的には、あるいは従来技術に寄与する部分は、ソフトウェア・プロダクトの形で実装されうる。ソフトウェア・プロダクトは、フロッピーディスク、USBフラッシュドライブ、リムーバブルハードドライブ、読み出し専用メモリ（ROM:  Read-Only  Memory）、ランダムアクセスメモリ（RAM:  Random  Access  Memory）、コンピュータの磁気ディスクまたは光ディスクのよう可読記憶媒体に記憶され、コンピュータ装置（これはパーソナル・コンピュータ、サーバー、ネットワーク装置などであってもよい）に本発明の実施形態において記述された方法を実行するよう命令するためのいくつかの命令を含む。
【０２１５】
当業者によって、上記のシステム、装置およびユニットの詳細な作動プロセスについては、上記の方法実施形態における対応するプロセスが参照されてもよいことが明瞭に理解されうる。ここで再び詳細を述べることはしない。
【０２１６】
上記の記述は単に本発明の具体的な実装であり、本発明の保護範囲を限定することは意図されていない。本発明において開示される技術的範囲内の当業者によって容易に割り出されるいかなる変形または置換も、本発明の保護範囲にはいる。よって、本発明の保護範囲は請求項の保護範囲に従う。
【図１】
2019531563.tif 000007
【図２】
2019531563.tif 000008
【図３】
2019531563.tif 000009
【図４】
2019531563.tif 000010
【図５】
2019531563.tif 000011
【図６】
2019531563.tif 000012
【図７】
2019531563.tif 000013
【図８】
2019531563.tif 000014
【図９】
2019531563.tif 000015
【図１０Ａ】
2019531563.tif 000016
【図１０Ｂ】
2019531563.tif 000017
【図１１】
2019531563.tif 000018
【図１２】
2019531563.tif 000019
【図１３】
2019531563.tif 000020
【手続補正書】
【提出日】平成31年1月30日(2019.1.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティング・ノードおよび切り換え装置を有する記憶システムであって、
前記コンピューティング・ノードは第一のネットワーク・パケットを前記切り換え装置に送るよう構成されており、前記第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持し；
前記切り換え装置は：前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得するよう構成されており；
前記切り換え装置はさらに：第二のネットワーク・パケットを生成し、前記第二のネットワーク・パケットを前記第一の記憶ノードに送るよう構成されており、前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである、
記憶システム。
【請求項２】
当該記憶システムはさらに複数の記憶ノードを含み、
前記複数の記憶ノードにおける前記第一の記憶ノードは：前記切り換え装置によって送られた前記第二のネットワーク・パケットを受領し、前記I/Oコマンドに従って、前記第二のオフセットによって示される、前記第一のOSD内の記憶アドレスに対して前記I/O動作を実行するよう構成されている、
請求項１記載の記憶システム。
【請求項３】
データ処理方法であって：
切り換え装置によって、コンピューティング・ノードによって送られた第一のネットワーク・パケットを受領する段階であって、前記第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持する、段階と；
前記切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する段階と；
前記切り換え装置によって、第二のネットワーク・パケットを生成し、前記第二のネットワーク・パケットを前記第一の記憶ノードに送る段階であって、前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの前記識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである、段階とを含む、
方法。
【請求項４】
前記I/Oコマンドは書き込みI/Oコマンドおよび書き込まれるべきデータを含み、前記第一のネットワーク・パケットはさらに、マルチコピー動作コードを担持し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得することが具体的には：
前記切り換え装置によって、前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子と、書き込み動作が実行されるべき第二のOSDを収容している第二の記憶ノードの第二のネットワーク・アドレスと、前記第二のOSDの識別子とを、前記資源識別子および前記第一のオフセットに従って取得することを含み、当該方法がさらに：
前記切り換え装置によって、前記マルチコピー動作コードに従って第三のネットワーク・パケットを生成して、該第三のネットワーク・パケットを前記第二の記憶ノードに送る段階であって、前記第三のネットワーク・パケットは前記第二のオフセットと、前記書き込みI/Oコマンドと、前記書き込まれるべきデータと、前記第二のOSDの前記識別子とを担持し、前記第三のネットワーク・パケットの宛先アドレスは前記第二のネットワーク・アドレスである、段階を含む、
請求項３記載の方法。
【請求項５】
前記切り換え装置によって、前記第一の記憶ノードによって送られた第一の応答パケットおよび前記第二の記憶ノードによって送られた第二の応答パケットを受領する段階であって、前記第一の応答パケットは第一の書き込み結果およびパケット型識別子を担持し、前記第一の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスであり、前記第二の応答パケットは第二の書き込み結果およびパケット型識別子を担持し、前記第二の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスである、段階と；
前記切り換え装置によって、前記パケット型識別子に従って前記第一の応答パケットおよび前記第二の応答パケットがキー値、KV、パケットであることを判別し、第三の応答パケットを生成し、該第三の応答パケットを前記コンピューティング・ノードに送る段階であって、前記第三の応答パケットは、前記第一の書き込み結果および前記第二の書き込み結果を担持しており、前記第三の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスである、段階とを含む、
請求項４記載の方法。
【請求項６】
前記切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成することが具体的には：
前記切り換え装置によって、前記OSDのサイズを除数として使って、前記第一のオフセットに対してモジュロ演算を実行し、得られた結果を前記第二のオフセットとして使うことを含む、
請求項３ないし５のうちいずれか一項記載の方法。
【請求項７】
前記資源識別子が前記コンピューティング・ノード上の仮想ディスクのボリューム番号であり、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得することが具体的には：
前記切り換え装置によって、前記ボリューム番号および前記第一のオフセットに従って、前記I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを取得することを含む、
請求項３ないし６のうちいずれか一項記載の方法。
【請求項８】
前記資源識別子がファイル・システム識別子およびファイル識別子であり、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得することが具体的には：
前記切り換え装置によって、前記ファイル・システム識別子、前記ファイル識別子および前記第一のオフセットに従って、前記I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを取得することを含む、
請求項３ないし６のうちいずれか一項記載の方法。
【請求項９】
前記第一のネットワーク・パケットはさらにパケット型識別子を担持しており、前記切り換え装置によって、前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する前に、当該方法はさらに：
前記切り換え装置によって、前記パケット型識別子に従って、前記第一のネットワーク・パケットがKVパケットであることを判別する段階を含む、
請求項３ないし８のうちいずれか一項記載の方法。
【請求項１０】
コンピューティング・ノードによって送られた第一のネットワーク・パケットを受領するよう構成された受信モジュールであって、前記第一のネットワーク・パケットは資源識別子、第一のオフセットおよび入出力I/Oコマンドを担持する、受信モジュールと；
前記第一のオフセットおよびオブジェクト記憶装置OSDのサイズに従って第二のオフセットを生成し、前記資源識別子および前記第一のオフセットに従って、I/O動作が実行されるべき第一のOSDを収容している第一の記憶ノードの第一のネットワーク・アドレスと、前記第一のOSDの識別子とを取得する段階と；第二のネットワーク・パケットを生成する段階であって、前記第二のネットワーク・パケットは前記第二のオフセット、前記I/Oコマンドおよび前記第一のOSDの前記識別子を担持し、前記第二のネットワーク・パケットの宛先アドレスは前記第一のネットワーク・アドレスである、段階とを実行するよう構成された処理モジュールと；
前記第二のネットワーク・パケットを前記第一の記憶ノードに送るよう構成された送信モジュールとを有する、
切り換え装置。
【請求項１１】
前記I/Oコマンドは書き込みI/Oコマンドおよび書き込まれるべきデータを含み、前記第一のネットワーク・パケットはさらに、マルチコピー動作コードを担持し、
前記処理モジュールは具体的には、前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子と、書き込み動作が実行されるべき第二のOSDを収容している第二の記憶ノードの第二のネットワーク・アドレスと、前記第二のOSDの識別子とを、前記資源識別子および前記第一のオフセットに従って取得するよう構成されており；
前記処理モジュールはさらに、前記マルチコピー動作コードに従って第三のネットワーク・パケットを生成するよう構成されており、前記第三のネットワーク・パケットは前記第二のオフセットと、前記書き込みI/Oコマンドと、前記書き込まれるべきデータと、前記第二のOSDの前記識別子とを担持し、前記第三のネットワーク・パケットの宛先アドレスは前記第二のネットワーク・アドレスであり；
前記送信モジュール（８０３）はさらに、前記第三のネットワーク・パケットを前記第二の記憶ノードに送るよう構成されている、
請求項１０記載の切り換え装置。
【請求項１２】
前記受信モジュールがさらに、前記第一の記憶ノードによって送られた第一の応答パケットおよび前記第二の記憶ノードによって送られた第二の応答パケットを受領するよう構成されており、前記第一の応答パケットは第一の書き込み結果およびパケット型識別子を担持し、前記第一の応答パケットの宛先アドレスは前記コンピューティング・ノードのネットワーク・アドレスであり、前記第二の応答パケットは第二の書き込み結果およびパケット型識別子を担持し、前記第二の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスであり；
前記処理モジュールがさらに：前記パケット型識別子に従って前記第一の応答パケットおよび前記第二の応答パケットがキー値KVパケットであることを判別し、第三の応答パケットを生成し、該第三の応答パケットを前記コンピューティング・ノードに送るよう構成されており、前記第三の応答パケットは、前記第一の書き込み結果および前記第二の書き込み結果を担持しており、前記第三の応答パケットの宛先アドレスは前記コンピューティング・ノードの前記ネットワーク・アドレスである、
請求項１１記載の切り換え装置。
【請求項１３】
前記処理モジュールが具体的には：前記OSDのサイズを除数として使って、前記第一のオフセットに対してモジュロ演算を実行し、得られた結果を前記第二のオフセットとして使うよう構成されている、
請求項１０ないし１２のうちいずれか一項記載の切り換え装置。
【請求項１４】
前記資源識別子が前記コンピューティング・ノード上の仮想ディスクのボリューム番号であり、
前記処理モジュールが具体的には、前記ボリューム番号および前記第一のオフセットに従って、前記I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを取得するよう構成されている、
請求項１０ないし１３のうちいずれか一項記載の切り換え装置。
【請求項１５】
前記資源識別子がファイル・システム識別子およびファイル識別子であり；
前記処理モジュールが具体的には、前記ファイル・システム識別子、前記ファイル識別子および前記第一のオフセットに従って、前記I/O動作が実行されるべき前記第一のOSDを収容している前記第一の記憶ノードの前記第一のネットワーク・アドレスと、前記第一のOSDの前記識別子とを取得するよう構成されている、
請求項１０ないし１４のうちいずれか一項記載の切り換え装置。
【請求項１６】
コンピュータに請求項３ないし９のうちいずれか一項記載のデータ処理方法を実行させるよう構成されたコンピュータ・プログラム。
【請求項１７】
請求項１６記載のコンピュータ・プログラムを記憶しているコンピュータ可読記憶媒体。

【国際調査報告】
2019531563.tif 000021
2019531563.tif 000022
2019531563.tif 000023
2019531563.tif 000024