(57)【特許請求の範囲】
【請求項１】
動的なブロック・サイズ粒度を使用して、一の計算クラスタ内の異なるタイプのアプリケーションについて一のファイル・システムを最適化する方法であって、
（ａ）前記計算クラスタ内の計算ノードごとに所定数のストレージ割り振り領域を予約するステップを含み、
各ストレージ割り振り領域は、ローカル接続ストレージの単一ストレージ・ディスク上にある１セットの連続データ・ブロックから成り、
（ｂ）ローカル接続ストレージの単一ストレージ・ディスク上にある１セットの連続データ・ブロックを、前記ファイル・システム内に格納すべき前記計算クラスタ内の計算動作用のデータをストライプするための当該ファイル・システムのブロック割り振り粒度として使用するステップと、
（ｃ）共用ストレージ・サブシステムの単一データ・ブロックを、前記ファイル・システム内に格納すべき前記計算クラスタ内のデータ・アクセス動作用のデータをストライプするための当該ファイル・システムのブロック割り振り粒度として使用するステップと、
（ｄ）前記計算クラスタ内の一の計算ノード用の前記予約済みストレージ割り振り領域の総数が前記所定数よりも小さいときは、当計算ノード用の予約済みストレージ割り振り領域の前記総数が当該所定数と等しくなるまで、少なくとも１つの追加のストレージ割り振り領域を予約するステップと、
を含む、方法。
【請求項２】
一の計算動作用のデータを、前記予約済みストレージ割り振り領域の少なくとも１つに割り振るステップをさらに含む、請求項１に記載の方法。
【請求項３】
一の計算動作を前記計算クラスタ内の一の計算ノードに送信するステップをさらに含み、
当該計算動作用のデータは、当該計算ノードのローカル接続ストレージに割り振られている、請求項１ないし請求項２の何れか１項に記載の方法。
【請求項４】
一の計算ノードのローカル接続ストレージに割り振り済みの１セットの連続データ・ブロックを、前記計算クラスタ内の第２の計算ノードのローカル接続ストレージに複製するステップをさらに含む、請求項１ないし請求項３の何れか１項に記載の方法。
【請求項５】
一のデータ・アクセス動作用のデータを前記共用ストレージ・サブシステムに割り振るステップをさらに含む、請求項１ないし請求項４の何れか１項に記載の方法。
【請求項６】
前記共用ストレージ・サブシステム及びローカル接続ストレージに割り振り済みの各データ・ブロックの前記ファイル・システム内の位置を追跡するステップをさらに含む、請求項１ないし請求項５の何れか１項に記載の方法。
【請求項７】
前記データ・アクセス動作は、記帳動作、データ転送動作、キャッシュ管理動作及びプリフェッチ動作から成るグループから選択される、請求項１ないし請求項６の何れか１項に記載の方法。
【請求項８】
一の計算動作を有する一の計算ノードに障害があるときは、当該計算動作に関連するデータが複製されている第２の計算ノード上で当該計算動作を再開するステップをさらに含む、請求項５に記載の方法。
【請求項９】
前記計算クラスタは、一の遠隔クライアント用の計算サービスをホストする、請求項１ないし請求項８の何れか１項に記載の方法。
【請求項１０】
一の計算クラスタを備え、動的なブロック・サイズ粒度を使用して、当該計算クラスタ内の異なるタイプのアプリケーションについて一のファイル・システムを最適化するシステムであって、
前記計算クラスタは、
（ａ）複数の計算ノードを有し、
前記複数の計算ノードの各々は、ローカル接続ストレージを含み、
（ｂ）前記複数の計算ノードの各々に結合された共用ストレージ・サブシステムと、
（ｃ）前記共用ストレージ・サブシステム及び前記複数の計算ノードの各々に結合されたファイル・システム・マネージャをさらに有し、
前記ファイル・システム・マネージャ（ｃ）は、
（ｃ１）前記計算クラスタ内の計算ノードごとに所定数のストレージ割り振り領域を予約し、
各ストレージ割り振り領域は、ローカル接続ストレージの単一ストレージ・ディスク上にある１セットの連続データ・ブロックから成り、
（ｃ２）ローカル接続ストレージの単一ストレージ・ディスク上にある１セットの連続データ・ブロックを、前記ファイル・システム内に格納すべき前記計算クラスタ内の計算動作用のデータをストライプするための当該ファイル・システムのブロック割り振り粒度として使用し、
（ｃ３）前記共用ストレージ・サブシステムの単一データ・ブロックを、前記ファイル・システム内に格納すべき前記計算クラスタ内のデータ・アクセス動作用のデータをストライプするための当該ファイル・システムのブロック割り振り粒度として使用し、
（ｄ）前記ファイル・システム・マネージャは、一の計算ノード用の前記予約済みストレージ割り振り領域の総数が前記所定数よりも小さいときは、当計算ノード用の予約済みストレージ割り振り領域の前記総数が当該所定数と等しくなるまで、少なくとも１つの追加のストレージ割り振り領域を予約する、
システム。
【請求項１１】
前記ファイル・システム・マネージャは、一の計算動作を前記計算クラスタ内の一の計算ノードに送信し、
当該計算動作用のデータは、当該計算ノードのローカル接続ストレージに割り振られている、請求項１０に記載のシステム。
【請求項１２】
前記ファイル・システム・マネージャは、
一の計算ノードのローカル接続ストレージに割り振り済みの１セットの連続データ・ブロックを、前記計算クラスタ内の第２の計算ノードのローカル接続ストレージに複製し、  前記一の計算ノードに障害があるときは、当該計算動作に関連するデータが複製されている第２の計算ノード上で当該計算動作を再開する、請求項１０ないし請求項１１の何れか１項に記載のシステム。
【請求項１３】
請求項１ないし請求項９の何れか１項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ・ストレージに係り、さらに詳細に説明すれば、動的なブロック・サイズ粒度（dynamic block size granularity）を使用して、計算クラスタ内の異なるタイプのアプリケーションについてファイル・システムを最適化することに係る。
【背景技術】
【０００２】
ファイル・システムは、ファイル及びデータを格納し且つ編成する方法である。ファイル・システムは、ファイル及びデータを維持するためにストレージ・サブシステムを使用する。ファイル・システムは、クライアント・コンピュータがストレージ・サブシステム上にデータのファイルを作成し、格納し且つアクセスすることを可能にするために、当該ストレージ・サブシステムに論理構造を課す管理構造である。分散ファイル・システムは、ネットワーク上の複数のクライアント用のファイル及びストレージ資源の共用をサポートする、ファイル・システムである。クラスタ・ファイル・システムは、一種の分散ファイル・システムであって、計算クラスタ内の複数の計算ノードが共用ストレージ・サブシステム上に格納された同じデータに同時にアクセスすることを可能にする。
【０００３】
計算クラスタは、クライアント・システムに対しデータ、アプリケーション及び他のシステム資源を提供するように互いに対話する複数の計算ノードを備えた、単一の実体としてのシステムである。計算クラスタは、計算ノード及び共用ストレージを当該クラスタに追加することを可能にすることにより、スケーラビリティ及び信頼性を提供する。ファイル・システムは、計算クラスタ内のデータのストレージを処理するために使用される。格納すべきデータに対しストレージの特定の領域を割り振ることにより、計算クラスタ内のファイル・システムによってストレージが割り振られる。クラスタ内の計算ノードにとって、ファイル・システムは、当該クラスタ・ファイル・システムの共用ストレージ・サブシステムへの直接アクセスを有するローカル資源として見える。
【０００４】
クラウド計算（Cloud computing）は、クライアントに対し遠隔の仮想化された計算資源をサービスとして提供する、計算モデルである。クラウド計算は、ソフトウェア及びハードウェア資源をサービスとしてホストし且つ要求に応じてこれらの資源をネットワークを介して遠隔的に配信することにより、クライアントに対しソフトウェア及びハードウェア資源を提供する。このようにすると、エンド・ユーザは、インフラストラクチャ及び処理に投資することなく、要求に応じて計算資源を利用することができる。一般に、クラウド計算用の基礎となるインフラストラクチャは、互いに連携して動作する複数サーバの大規模分散クラスタから成る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
共用ストレージを使用する従来のクラスタ・ファイル・システムは、データへの計算の配信、すなわち大規模データ・セットを処理するデータ集約型アプリケーション（例えば、データ分析アプリケーション）をサポートするのに必要な機能をサポートしない。また、共用ストレージを使用するクラスタ・ファイル・システム用のデフォルト・ブロック・サイズは、小さくなっており、そのため、１つのデータ・ブロック当たり１つのタスクをスケジュールするデータ集約型アプリケーション用の高いタスク・オーバーヘッドに結びつく。データ集約型アプリケーションを稼働させる基本的ストレージ・アーキテクチャは、インターネット規模のファイル・システム（Internet-scale file system）に基づいている。かかるインターネット規模のファイル・システムは、データ集約型アプリケーションに適した特殊なファイル・システムであるが、従来型アプリケーションの性能要件をサポートしない。
【課題を解決するための手段】
【０００６】
従って、本発明は、第１の側面において、動的なブロック・サイズ粒度を使用して、一の計算クラスタ内の異なるタイプのアプリケーションについて一のファイル・システムを最適化する方法を提供する。前記方法は、
（ａ）前記計算クラスタ内の計算ノードごとに所定数のストレージ割り振り領域（storage allocation region）を予約するステップを含み、
各ストレージ割り振り領域は、ローカル接続ストレージの単一ストレージ・ディスク上にある１セットの連続データ・ブロックから成り、
（ｂ）ローカル接続ストレージの単一ストレージ・ディスク上にある１セットの連続データ・ブロックを、前記ファイル・システム内に格納すべき前記計算クラスタ内の計算動作用のデータをストライプするための当該ファイル・システムのブロック割り振り粒度（block allocation granularity）として使用するステップと、
（ｃ）共用ストレージ・サブシステムの単一データ・ブロックを、前記ファイル・システム内に格納すべき前記計算クラスタ内のデータ・アクセス動作用のデータをストライプするための当該ファイル・システムのブロック割り振り粒度として使用するステップをさらに含む。
【０００７】
前記方法は、一の計算動作用のデータを、前記予約済みストレージ割り振り領域の少なくとも１つに割り振るステップをさらに含む。前記方法は、前記計算クラスタ内の一の計算ノード用の前記予約済みストレージ割り振り領域の総数が前記所定数よりも小さいときは、当計算ノード用の予約済みストレージ割り振り領域の前記総数が当該所定数と等しくなるまで、少なくとも１つの追加のストレージ割り振り領域を予約するステップをさらに含む。前記方法は、一の計算動作を前記計算クラスタ内の一の計算ノードに送信するステップをさらに含み、当該計算動作用のデータは、当該計算ノードのローカル接続ストレージに割り振られている。前記方法は、一の計算ノードのローカル接続ストレージに割り振り済みの１セットの連続データ・ブロックを、前記計算クラスタ内の第２の計算ノードのローカル接続ストレージに複製するステップをさらに含む。前記方法は、一のデータ・アクセス動作用のデータを前記共用ストレージ・サブシステムに割り振るステップをさらに含む。前記方法は、前記共用ストレージ・サブシステム及びローカル接続ストレージに割り振り済みの各データ・ブロックの前記ファイル・システム内の位置を追跡するステップをさらに含む。好ましくは、前記データ・アクセス動作は、記帳（bookkeeping）動作、データ転送動作、キャッシュ管理動作及びプリフェッチ動作から成るグループから選択される。前記方法は、一の計算動作を有する一の計算ノードに障害があるときは、当該計算動作に関連するデータが複製されている第２の計算ノード上で当該計算動作を再開するステップをさらに含む。好ましくは、前記計算クラスタは、一の遠隔クライアント用の計算サービスをホストする。
【０００８】
第２の側面では、一の計算クラスタを備え、動的なブロック・サイズ粒度を使用して、当該計算クラスタ内の異なるタイプのアプリケーションについて一のファイル・システムを最適化するシステムが提供される。
前記計算クラスタは、
（ａ）複数の計算ノードを有し、当該複数の計算ノードの各々は、ローカル接続ストレージを含み、
（ｂ）前記複数の計算ノードの各々に結合された共用ストレージ・サブシステムと、
（ｃ）前記共用ストレージ・サブシステム及び前記複数の計算ノードの各々に結合されたファイル・システム・マネージャをさらに有し、
前記ファイル・システム・マネージャ（ｃ）は、
（ｃ１）前記計算クラスタ内の計算ノードごとに所定数のストレージ割り振り領域を予約し、
各ストレージ割り振り領域は、ローカル接続ストレージの単一ストレージ・ディスク上にある１セットの連続データ・ブロックから成り、
（ｃ２）ローカル接続ストレージの単一ストレージ・ディスク上にある１セットの連続データ・ブロックを、前記ファイル・システム内に格納すべき前記計算クラスタ内の計算動作用のデータをストライプするための当該ファイル・システムのブロック割り振り粒度として使用し、
（ｃ３）共用ストレージ・サブシステムの単一データ・ブロックを、前記ファイル・システム内に格納すべき前記計算クラスタ内のデータ・アクセス動作用のデータをストライプするための当該ファイル・システムのブロック割り振り粒度として使用する。
【０００９】
好ましくは、前記ファイル・システム・マネージャは、一の計算動作を前記計算クラスタ内の一の計算ノードに送信し、当該計算動作用のデータは、当計算ノードのローカル接続ストレージに割り振られている。好ましくは、前記ファイル・システム・マネージャは、一の計算ノード用の前記予約済みストレージ割り振り領域の総数が前記所定数よりも小さいときは、当計算ノード用の予約済みストレージ割り振り領域の前記総数が当該所定数と等しくなるまで、少なくとも１つの追加のストレージ割り振り領域を予約する。好ましくは、前記ファイル・システム・マネージャは、一の計算ノードのローカル接続ストレージに割り振り済みの１セットの連続データ・ブロックを、前記計算クラスタ内の第２の計算ノードのローカル接続ストレージに複製し、一の計算動作を有する前記第１の計算ノードに障害があるときは、前記第２の計算ノードに複製済みの当該計算動作に関連するデータを使用して、前記第２の計算ノード上で当該計算動作を再開する。好ましくは、前記ファイル・システム・マネージャは、一の計算ノードのローカル接続ストレージに割り振り済みの１セットの連続データ・ブロックを、前記計算クラスタ内の第２の計算ノードのローカル接続ストレージに複製し、前記一の計算ノードに障害があるときは、当該計算動作に関連するデータが複製されている第２の計算ノード上で当該計算動作を再開する。
【００１０】
第３の側面では、第１の側面に係る前記方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラムが提供される、
【発明の効果】
【００１１】
本発明は、ファイル・システム内のフラグメント化を防止し、最適の順次読み取り及び書き込みを維持し、計算ノード・レベルの局所性を可能にするという効果を奏する。また、本発明は、ストレージ・コストを最小化し、高度に並列式のアプリケーションが大量のデータを処理することができるように、計算クラスタを何千もの計算ノードまで拡大し、データ集約型アプリケーションにおいて一般的な大きなファイルを効率的にサポートすることができるという効果を奏する。さらに、本発明は、一の計算動作を有する一の計算ノードに障害があるときは、当該計算動作に関連するデータが複製されている第２の計算ノード上で当該計算動作を再開することができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】一実施形態に従った、動的なブロック・サイズ粒度を使用して、計算クラスタ内の異なるタイプのアプリケーションについて最適化されるファイル・システムを有する計算クラスタを示す図である。
【図２】一実施形態に従った、動的なブロック・サイズ粒度を使用して、計算クラスタ内の異なるタイプのアプリケーションについてファイル・システムを最適化する方法を示すフローチャートである。
【図３】一実施形態に従った、ファイル・システム内に格納すべき計算動作用のデータをストライプするためのブロック割り振り方式を示す図である。
【図４】一実施形態に従った、ファイル・システム内に格納すべきデータ・アクセス動作用のデータをストライプするためのブロック割り振り方式を示す図である。
【図５】一実施形態に従った、動的なブロック・サイズ粒度を使用して、計算クラスタ内の異なるタイプのアプリケーションについてファイル・システムを最適化するプロセスを実装することができるシステムのブロック図を示す。
【発明を実施するための形態】
【００１３】
以下の説明は、本発明の一般原理を説明することを目的とし、本明細書に開示した発明概念を限定することを目的とするものではない。さらに、本明細書に開示した特定の機能は、種々の可能な組み合わせの各々において本明細書に開示した他の機能と結合して使用することができる。本明細書において特別に定義しない限り、全ての用語は、本明細書から暗示される意味、当業者によって理解される意味及び／又は辞書等において定義される意味を含む、最も広義の意味を包含するように解釈されるべきである。
【００１４】
以下の説明は、動的なブロック・サイズ粒度を使用して、計算クラスタ内の異なるタイプのアプリケーションについてファイル・システムを最適化するための幾つかの好ましい実施形態を開示することに加えて、その動作及び／又は部分を開示する。以下の説明は、本発明の代表的実施形態に従った、ストレージ割り振りプロセス及びストレージ装置を記述することに向けられているが、本明細書に開示した請求項を含む教示内容は、クラウド計算環境内のシステム、装置及びアプリケーションを含む、他のタイプのシステム、装置及びアプリケーションに対する広範な応用を有し得ることに留意すべきである。
【００１５】
本発明の実施形態は、動的なブロック・サイズ粒度を使用して、計算クラスタ内の異なるタイプのアプリケーションについてファイル・システムを最適化することに係る。共用ストレージを使用するクラスタ・ファイル・システムは、データへの計算の配信、すなわち大規模データ・セットを処理するデータ集約型アプリケーション（例えば、データ分析アプリケーション）をサポートするのに必要な機能をサポートしない。また、共用ストレージを使用するクラスタ・ファイル・システム用のデフォルト・ブロック・サイズは、小さくなっており、そのため、１つのデータ・ブロック当たり１つのタスクをスケジュールするデータ集約型アプリケーション用の高いタスク・オーバーヘッドに結びつく。データ集約型アプリケーションを稼働させる基本的ストレージ・アーキテクチャは、標準的なＰＯＳＩＸ（Portable Operating System Interface for Unix）インタフェースを提供しない、インターネット規模のファイル・システムに基づいている（「Unix」は登録商標）。かかるインターネット規模のファイル・システムは、データ集約型アプリケーションに適した特殊なファイル・システムであるが、従来型アプリケーションの性能要件をサポートしない。
【００１６】
一実施形態では、単一の計算クラスタ内で従来型アプリケーション及びデータ集約型アプリケーションをサポートするために、ファイル・システムのブロック割り振り方式に対する変更が提示される。例えば、ＰＯＳＩＸストレージ・スタックが、ＰＯＳＩＸベースの従来型クラスタ・ファイル・システム上に構築されたクラウド分析をサポートすることができるように、ファイル・システムのデータ割り振りが変更されるということである。一実施形態では、計算クラスタのファイル・システムは、データ集約型アプリケーションの計算動作に関連するデータ用の大きなブロック粒度と、従来型アプリケーションのデータ・アクセス動作に関連するデータ用の小さなブロック粒度の何れか一方を選択することができる。代表的実施形態では、このファイル・システムのラウンドロビン・ブロック割り振り方式は、１セットの連続ブロック（大きなブロック）を、計算動作用のデータをストライプするための割り振り粒度として使用するように修正される。他の代表的実施形態では、このファイル・システムは、従来型アプリケーションの全てのデータ・アクセス動作用にデフォルト・ブロック・サイズ粒度（小さなブロック・サイズ）を内部的に使用する。
【００１７】
図１は、一実施形態に従った、動的なブロック・サイズ粒度を使用して、異なるタイプのアプリケーションについて最適化されるファイル・システムを有する計算クラスタ１０２を示す。計算クラスタ１０２は、アプリケーション・ノードとも称する、複数の計算ノード１０４ａ〜１０４ｎを含む。代表的実施形態では、計算クラスタ１０２は、何千もの計算ノード１０４ａ〜１０４ｎに拡大することができるハードウェア・アーキテクチャを含む。
【００１８】
各計算ノード１０４ａ〜１０４ｎは、ローカル接続ストレージ１０６ａ〜１０６ｎに結合される。例えば、ローカル接続ストレージ１０６ａ〜１０６ｎは、計算ノード１０４ａ〜１０４ｎに対し物理的に内部のものであるか、又はディスク・アレイ装置を使用して直接に接続された物理的に外部のものとすることができる。一実施形態では、ローカル接続ストレージ１０６ａ〜１０６ｎは、標準インタフェースを通して、計算ノード１０４ａ〜１０４ｎに直接的に接続されたストレージ装置を含む。例えば、標準インタフェースは、ファイバ・チャネル（ＦＣ）、小型コンピュータ用周辺機器インタフェース（ＳＣＳＩ）、統合ドライブ・エレクトロニクス（ＩＤＥ）等を含む。代表的実施形態では、各計算ノード１０４ａ〜１０４ｎは、ローカル接続ストレージ１０６ａ〜１０６ｎとして、７５０ギガバイト（ＧＢ）の容量を有する４つのシリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ）ドライブを含む。
【００１９】
計算クラスタ１０２は、計算クラスタ１０２のファイル・システムを管理するように構成されたファイル・システム・マネージャ１０８を含む。例えば、計算クラスタ１０２のファイル・システムは、「IBM General Parallel File System（GPFS）」を含んでもよい（「IBM」は登録商標、「GeneralParallel File System」及び「GPFS」は商標）。代表的実施形態では、ファイル・システム・マネージャ１０８は、ソフトウェアの形式で具体化され、計算クラスタ１０２内の任意の独立の計算ノードから稼働させることができる。
【００２０】
さらに、計算クラスタ１０２は、共用ストレージ・サブシステム１１４を含む。例えば、共用ストレージ・サブシステム１１４は、ストレージ・エリア・ネットワーク（ＳＡＮ）装置を含むことができる。共用ストレージ・サブシステム１１４は、ストレージ・スイッチ１１２に結合される。計算ノード１０４ａ〜１０４ｎは、共用ストレージ・サブシステム１１４にアクセスするために、ストレージ・スイッチ１１２に結合される。ファイル・システム・マネージャ１０８は、共用ストレージ・サブシステム１１４を使用して、計算クラスタ１０２のファイル・システムを管理するために、ストレージ・スイッチ１１２に結合される。共用ストレージ・サブシステム１１４は、計算ノード１０４ａ〜１０４ｎに対し、同じデータへの同時アクセスを提供するように構成される。共用ストレージ・サブシステム１１４は、計算ノード１０４ａ〜１０４ｎにわたって、書き込み帯域幅の共用を可能にする。一実施形態では、共用ストレージ・サブシステム１１４は、ハードウェア障害を回避するために、基本的なデータ保護技術を使用するように設計されている。例えば、共用ストレージ・サブシステム１１４は、データ保護を提供するために、新磁気ディスク制御機構（ＲＡＩＤ）の技術を使用することができる。
【００２１】
さらに、計算クラスタ１０２は、スイッチ・ネットワーク１１０を含む。スイッチ・ネットワーク１１０は、ファイル・システム内の諸コンポーネント用の相互接続を提供するように構成される。一実施形態では、スイッチ・ネットワーク１１０は、計算ノード１０４ａ〜１０４ｎ及びファイル・システム・マネージャ１０８用の相互接続を提供するように構成される。代表的実施形態では、スイッチ・ネットワーク１１０は、リナックス(登録商標）・ソフトウェアで稼働する１ギガビット／秒（ｇｂｐｓ）のスイッチ間リンクを備えた、計算ノード・ラックごとのギガビット・イーサネット(登録商標）・スイッチである。他の実施形態では、スイッチ・ネットワーク１１０は、ネットワーク１１６上のクライアント・ノード１１８へのアクセスを提供するようにさらに構成される。例えば、ネットワーク１１６は、広域ネットワーク（ＷＡＮ）等を含む。
【００２２】
一実施形態では、計算クラスタ１０２は、遠隔クライアント１１８用のデータ及び計算サービスをホストする。例えば、計算クラスタ１０２は、遠隔クライアント用のデータ及び計算サービスを或るデータ・サイトにおいてホストするためのクラウド計算サービスを可能にする。代表的実施形態では、計算クラスタ１０２は、ネットワーク１１６上の遠隔クライアント１１８のために、データ分析アプリケーションの稼働及び当該データ分析アプリケーションに関連するデータの格納をホストするように構成される。従って、計算クラスタ１０２は、大きなデータ・セットについてデータ集約型アプリケーションを稼働させるために、クラウドにおいて並列性及びスケーラビリティを可能にする。例えば、データ集約型アプリケーションは、大きな計算タスクを１セットのより小さな並列化計算に分解する、データ分析アプリケーションを含む。
【００２３】
図２は、一実施形態に従った、動的なブロック・サイズ粒度を使用して、計算クラスタ内の異なるタイプのアプリケーションについてファイル・システムを最適化する方法２００のフローチャートを示す。ステップ２０２では、ファイル・システム・マネージャ１０８は、計算ノード１０４ａ〜１０４ｎごとに所定数のストレージ割り振り領域を予約する。各ストレージ割り振り領域は、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク上にある１セットの連続データ・ブロックから成る。一実施形態では、ファイル・システム・マネージャ１０８は、計算ノード１０４ａ〜１０４ｎごとに連続的なストレージ割り振り領域のプールをプリフェッチする。例えば、連続的なストレージ割り振り領域のプールをプリフェッチすると、ネットワーク待ち時間及びアプリケーション性能への影響を防止することができる。従って、各計算ノード１０４ａ〜１０４ｎは、連続的なストレージ割り振り領域のプールを前もって準備しているから、入力／出力（Ｉ／Ｏ）要求のパス内にネットワーク待ち時間を招かないであろう。
【００２４】
代表的実施形態では、前記所定数は１０である。例えば、ファイル・システム・マネージャ１０８は、計算ノード１０４ａ〜１０４ｎごとに連続的な１０個のストレージ割り振り領域のプールをプリフェッチする。他の実施形態では、前記所定数を５〜２００の範囲とすることができる。前記所定数は、データ・ブロックについて使用される連続性のレベル、計算クラスタ１０２内でサポートされているアプリケーションのタイプ、使用されるファイル・システム及び計算クラスタ１０２内のアプリケーションの性能要件に基づいて、その範囲を定めることができる。
【００２５】
ステップ２０４では、ファイル・システム・マネージャ１０８は、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク上にある１セットの連続データ・ブロックを、ファイル・システム内に格納すべき（計算ノード１０４ａ〜１０４ｎからの）計算動作用のデータをストライプするための当該ファイル・システムのブロック割り振り粒度として使用する。一実施形態では、ファイル・システム・マネージャ１０８は、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク上にある１セットの連続データ・ブロック（大きなデータ・ブロック又は大きなブロック・サイズ粒度）を、ファイル・システム内に格納すべき計算動作用のデータをストライプするための割り振り粒度として使用する。例えば、ファイル・システム・マネージャ１０８が、格納すべき計算動作用のデータを割り振るために大きなブロック・サイズ粒度を使用するのは、小さなブロック・サイズがデータ集約型アプリケーションについて高いタスク・オーバーヘッドに帰着するという理由による。従って、ファイル・システムのデータ割り振り及び計算クラスタ１２のデータ・レイアウト情報は、大きなブロック・サイズ粒度を使用してデータ集約型アプリケーションの要件をサポートするように変更される。
【００２６】
単一ブロックのブロック・サイズ粒度は、変更することができる。単一ブロックのデフォルト・ブロック・サイズは、性能要件及びトレードオフ、並びに使用されたファイル・システムに依存して、或る範囲で変更することができる。例えば、単一ブロックのブロック・サイズ粒度は、８ＫＢ〜１６ＭＢの範囲で変更することができる。代表的実施形態では、単一ブロックのブロック・サイズ粒度は、１ＭＢである。例えば、１ＭＢの固定サイズを有するデータ・ブロックは、ファイル・システム内のフラグメント化を防止し、最適の順次読み取り及び書き込みを維持し、計算ノード・レベルの局所性を可能にする。他の代表的実施形態では、単一ブロックのブロック・サイズ粒度は、２５６ＫＢ及び５１２ＫＢである。
【００２７】
一実施形態では、ファイル・システム内に格納すべき計算動作用のデータをストライプするためのストレージ割り振り領域は、所定のサイズで連続する。例えば、ファイル・システム内に格納すべき計算動作用のデータをストライプするためのストレージ割り振り領域は、８ＭＢ〜２５６ＭＢの範囲で連続し得る。代表的実施形態では、６４個の１ＭＢブロックは、ファイル・システム内に格納すべき計算動作用のデータをストライプするための６４ＭＢのストレージ割り振り領域にグループ化される。例えば、ファイル・システム内に格納すべき計算動作用のデータをストライプするための大きなブロック粒度は、６４個の連続的な１ＭＢデータ・ブロックから成る６４ＭＢデータ・ブロックである。他の実施形態では、ファイル・システム内に格納すべき計算動作用のデータをストライプするためのブロック・サイズ粒度は、使用されるファイル・システム及びアプリケーションの性能要件に依存して、変更することができる。
【００２８】
ファイル・システム・マネージャ１０８は、計算動作用のデータを格納するために共用ストレージ・サブシステム１１４を使用するのではなく、ローカル接続ストレージ１０６ａ〜１０６ｎを使用する。例えば、計算動作用のデータを格納するためにローカル接続ストレージ１０６ａ〜１０６ｎを使用するのは、ローカル接続ストレージ１０６ａ〜１０６ｎの低コスト及び共用ストレージ・サブシステム１１４の帯域幅制限という理由による。例えば、データ集約型アプリケーション用のストレージ層は、商品（commodity）コンポーネントであるローカル接続ストレージ１０６ａ〜１０６ｎ上に構築される。その結果、ストレージ・コストを最小化し、高度に並列式のアプリケーションが大量のデータを処理することができるように、計算クラスタ１０２を何千もの計算ノード１０４〜１０４ｎに拡大することができる。さらに、ローカル接続ストレージ１０６ａ〜１０６ｎを使用してデータ集約型アプリケーション用のストレージ層を構築すると、データを計算動作に配信するのではなく、計算動作をデータに配信することを可能にすることによって、データ集約型アプリケーションにおいて一般的な大きなファイルを効率的にサポートすることができる。
【００２９】
代表的実施形態では、計算ノード１０４ａ〜１０４ｎは、データ集約型クラスのアプリケーションを稼働及びサポートし、そこから計算動作が開始される。一実施形態では、データ集約型クラスのアプリケーションは、大きな計算タスクを１セットのより小さな並列化可能計算に分解するアプリケーション等を含む。データ集約型アプリケーションの共通の特徴は、それらが並列であり且つそれらのデータ・アクセス帯域幅要件が他の資源要件を支配するということである。例えば、データ集約型アプリケーションは、マップを使用して区分データ・セットに関するより小さな並行計算に分解されている１つ又はそれ以上の計算をサポートし、計算クラスタ内の大規模計算ノード１０４ａ〜１０４ｎ上で並列化及び実行可能なキー／値ペアに関する機能を減少させる。
【００３０】
代表的実施形態では、データ集約型アプリケーションは、クラウド計算ベースの分析アプリケーションを含む。例えば、クラウド計算ベースの分析アプリケーションは、（衛星イメージ・パターンマッチング・アプリケーションを含む）絶えず変化する大量のデータを処理するための科学アプリケーション、ゲノム配列から生物学的機能を発見するためのアプリケーション、望遠鏡画像から抽出される天文学データ及び磁気共鳴映像法（ＭＲＩ）データを使用する脳パターンのためのアプリケーション等を含む。他の実施形態では、データ集約型アプリケーションは、インターネット規模のデータ処理アプリケーション（例えば、ウェブ検索アプリケーション、データ・インデックス付け兼マイニング・アプリケーション等）をさらに含む。
【００３１】
ステップ２０６では、ファイル・システム・マネージャ１０８は、計算動作用のデータを、少なくとも１つの予約済みストレージ割り振り領域に割り振る。一実施形態では、ファイル・システム・マネージャ１０８は、ファイル・システムにわたってデータのストライピングを実装する。この場合、大きなファイルが等しいサイズの複数ブロックに分割され、そしてこれらの連続ブロックが異なるディスク上にラウンドロビン式に配置される。代表的実施形態では、ファイル・システム・マネージャ１０８は、広いストライピングを使用して、１セットの連続データ・ブロックをローカル接続ストレージ１０６ａ〜１０６ｎにわたってラウンドロビン式にストライプする。例えば、ストライピング技術は、広いストライピング、狭いストライピング、ノー・ストライピング等を含む、
【００３２】
ステップ２０８では、ファイル・システム・マネージャ１０８は、計算ノード１０４ａ〜１０４ｎ用の予約済みストレージ割り振り領域の総数が所定のしきい値よりも小さいときは、計算ノード１０４ａ〜１０４ｎ用の予約済みストレージ割り振り領域の総数が当該所定のしきい値と等しくなるまで、少なくとも１つの追加のストレージ割り振り領域を予約する。一実施形態では、ファイル・システム・マネージャ１０８は、計算ノード１０４ａ〜１０４ｎ用の予約済みストレージ割り振り領域の総数が前記所定のしきい値と等しくなるまで、計算ノード１０４ａ〜１０４ｎのローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク上にある１セットの連続データ・ブロックから成る、少なくとも１つの追加のストレージ割り振り領域を予約する。例えば、ファイル・システム・マネージャ１０８は、計算ノード１０４ａ〜１０４ｎ用のプールの基数が１０より小さいときは、計算ノード１０４ａ〜１０４ｎ用の１セットの連続データ・ブロックから成る追加のストレージ割り振り領域を予約する。
【００３３】
ステップ２１０では、ファイル・システム・マネージャ１０８は、計算動作を計算ノード１０４ａ〜１０４ｎに送信する。当該計算動作用のデータは、当該計算動作を受信する計算ノード１０４ａ〜１０４ｎのローカル接続ストレージ１０６ａ〜１０６ｎに割り振られている。一実施形態では、計算動作及びタスクは、当該計算動作用のデータが存在する計算ノード１０４ａ〜１０４ｎに送信される。例えば、このように計算タスクをデータに配信すると、ネットワーク・オーバーヘッドが減少し、その結果、計算を速やかに処理することが可能となる。代表的実施形態では、ファイル・システムのブロック位置情報をファイル・システムの入力／出力制御を使用するアプリケーションに公開することにより、計算タスクは、ファイル・システム内のデータと同じ場所に配置される。従って、ファイル・システム・マネージャ１０８は、このブロック位置情報を使用して、この計算タスクを計算ノード１０４ａ〜１０４ｎに送信する。この計算タスクを受信する計算ノード１０４ａ〜１０４ｎのローカル接続ストレージ１０６ａ〜１０６ｎには、この計算タスクに関連するデータが存在する。
【００３４】
ステップ２１２では、ファイル・システム・マネージャ１０８は、計算ノード１０４ａ〜１０４ｎのローカル接続ストレージ１０６ａ〜１０６ｎに割り振られた連続データ・ブロックの各セットを、少なくとも１つの追加の計算ノード１０４ａ〜１０４ｎのローカル接続ストレージ１０６ａ〜１０６ｎに複製する。例えば、データ集約型アプリケーションは、基礎となる商品コンポーネント内の障害から回復可能である必要がある。従って、データ集約型アプリケーションは、複数の計算ノード及びディスク障害が生ずる場合、かかる障害から回復可能であり且つ処理を続行可能である必要がある。このため、計算ノード又はディスク障害が生ずる場合には、異なる計算ノード上で計算を再開することができるように、データを複数の計算ノードにわたって複製することを必要とする。一実施形態では、一の計算動作を有する一の計算ノードに障害があるときは、当該計算動作に関連するデータが複製されている第２の計算ノード上で当該計算動作が再開される。
【００３５】
この複製機構は、使用されるファイル・システム及びクラスタ・コンポーネントに基づいて、変更することができる。代表的実施形態では、ファイル・システムは、単一ソース複製モデルを使用して、書き込み機能によりコピーを全てのレプリカに転送する。他の代表的実施形態では、ファイル・システムは、パイプライン複製を使用する。この場合、書き込み機能におけるアウトバウンド帯域幅は、複数のストリームにわたって共用されず、書き込みデータは、そのデータが計算ノードに書き込まれている間に、パイプライン内の一の計算ノードから次の計算ノードまで順次にパイプライン化することができる。
【００３６】
ステップ２１４では、ファイル・システム・マネージャ１０８は、共用ストレージ・サブシステム１１４の単一データ・ブロックを、ファイル・システム内に格納すべき（計算ノード１０４ａ〜１０４ｎからの）データ・アクセス動作用のデータをストライプするためのファイル・システムのブロック割り振り粒度として使用する。一実施形態では、ファイル・システム・マネージャ１０８は、従来型アプリケーションのデータを割り振るためのブロック割り振り粒度として、共用ストレージ・サブシステム１１４の単一データ・ブロック（小さなブロック）を使用する。代表的実施形態では、ファイル・システム・マネージャ１０８は、同じファイルに対し並行書き込み機能を使用することにより、従来型アプリケーションについて複数の計算ノードにわたって書き込み帯域幅の共用を可能にする。
【００３７】
代表的実施形態では、ファイル・システム・マネージャ１０８は、共用ストレージ・サブシステム１１４の単一データ・ブロックを、従来型アプリケーションのデータ・アクセス動作用に使用することにより、キャッシュ管理を有効にし且つプリフェッチ・オーバーヘッドを減少させる。というのは、複数のアプリケーション・レコードが、異なるディスク上の複数のブロックにまたがることがあり得るからである。例えば、内部データ・アクセス動作は、記帳動作、データ転送動作、キャッシュ管理動作、プリフェッチ動作等を含んでもよい。従って、ファイル・システム・マネージャ１０８は、従来型アプリケーションについて最適化されるディスク・アクセス及びプリフェッチ動作用に、小さなブロック粒度を使用する。ステップ２１６では、ファイル・システム・マネージャ１０８は、計算ノード１０４ａ〜１０４ｎからのデータ・アクセス動作用のデータを、共用ストレージ・サブシステム１１４に割り振る。
【００３８】
ステップ２１８では、ファイル・システム・マネージャ１０８は、共用ストレージ・サブシステム１１４及びローカル接続ストレージ１０６ａ〜１０６ｎに割り振り済みの各データ・ブロックの、ファイル・システム内の位置を追跡する。一実施形態では、ファイル・システム・マネージャ１０８は、共用ストレージ・サブシステム１１４及びローカル接続ストレージ１０６ａ〜１０６ｎに割り振り済みの各データ・ブロックの位置を追跡するために割り振りマップを使用する。一実施形態では、ファイル・システム・マネージャ１０８は、各計算ノード１０４ａ〜１０４ｎに対し、割り振りマップへのアクセスを提供する。例えば、計算ノード１０４ａ〜１０４ｎは、割り振りマップを使用して、共用ストレージ・サブシステム１１４及びローカル接続ストレージ１０６ａ〜１０６ｎに割り振り済みの各ブロックの位置を決定する。
【００３９】
一実施形態では、割り振りマップは、当該割り振りビットマップへの並列更新を可能にするように、多数のロック有能な割り振り領域（ｎ個の計算ノードから成る計算クラスタ１０２の場合は、ｎ個の領域）に分割される。代表的実施形態では、割り振りマップ内の各領域は、計算クラスタ１０２内の全てのディスク上にあるディスク・ブロックの１／ｎ番目の割り振りステータスを保持し、そして任意の時点において、全ての計算ノード１０４ａ〜１０４ｎは、ｘ個の領域の所有権を有しており且つこれらの領域を使用して全ての割り振り要求を満たそうと試みる。例えば、そのビットマップ・レイアウトは、ファイル・システムが一度に単一の割り振り領域だけにアクセスすることにより、全てのディスクにわたって適正にストライプされたディスク空間を割り振ることを可能にする。従って、計算ノード１０４ａ〜１０４ｎが異なる領域から空間を割り振ることができるため、ロックの衝突が最小化される。
【００４０】
図３は、一実施形態に従った、ファイル・システム内に格納すべき計算動作用のデータをストライプするためのブロック割り振り方式を示す。一実施形態では、ブロック割り振り方式は、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク上にある１セットの連続データ・ブロックを、格納すべき（計算ノード１０４ａ〜１０４ｎからの）計算動作用のデータを割り振るためのブロック割り振り粒度として使用する。
【００４１】
図３は、ローカル接続ストレージ１０６ａ〜１０６ｎの複数のストレージ・ディスク３０２ａ〜３０２ｎを示す。ファイル３０４は、固定サイズを有する複数のデータ・ブロックに分割される。代表的実施形態では、ファイル３０４は、複数の１ＭＢデータ・ブロックに分割される。個別的な複数の１ＭＢデータ・ブロックは、複数の連続データ・ブロック・セットにグループ化される。例えば、６４ＭＢレベルの連続性については、１ＭＢの固定サイズを有する６４個の連続データ・ブロックは、複数の６４ＭＢデータ・ブロック・セットにグループ化される。個別的な各６４ＭＢデータ・ブロック・セットは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスクにラウンドロビン式に割り振られる。
【００４２】
例えば、１セットの連続データ・ブロック３０６ａは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク３０２ａに割り振られる。１セットの連続データ・ブロック３０６ｂは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク３０２ｂに割り振られる。１セットの連続データ・ブロック３０６ｃは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク３０２ｃに割り振られる。同様に、１セットの連続データ・ブロック３０６ｎは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク３０２ｎに割り振られる。
【００４３】
１セットの連続データ・ブロック３０８ａは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク３０２ａに割り振られる。１セットの連続データ・ブロック３０８ｂは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク３０２ｂに割り振られる。１セットの連続データ・ブロック３０８ｃは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク３０２ｃに割り振られる。同様に、１セットの連続データ・ブロック３０８ｎは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク３０２ｎに割り振られる。
【００４４】
１セットの連続データ・ブロック３１０ａは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク３０２ａに割り振られる。１セットの連続データ・ブロック３１０ｂは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク３０２ｂに割り振られる。１セットの連続データ・ブロック３１０ｃは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク３０２ｃに割り振られる。同様に、１セットの連続データ・ブロック３１０ｎは、ローカル接続ストレージ１０６ａ〜１０６ｎの単一ストレージ・ディスク３０２ｎに割り振られる。
【００４５】
図４は、一実施形態に従った、ファイル・システム内に格納すべきデータ・アクセス動作用のデータをストライプするためのブロック割り振り方式を示す。代表的実施形態では、ファイル・システム・マネージャ１０８は、共用ストレージ・サブシステム１１４の単一ストレージ・ディスク上にある単一ブロックを、従来型アプリケーションについて使用されるデータ・アクセス動作用のデータを割り振るためのブロック割り振り粒度として使用する。例えば、データ・アクセス動作は、従来型アプリケーションについて最適化される、内部記帳動作、データ転送動作、キャッシュ管理動作及びプリフェッチ動作を含む。ファイル４０４は、固定サイズを有する複数のデータ・ブロックに分割される。代表的実施形態では、ファイル４０４は、複数の１ＭＢデータ・ブロックに分割される。個別的な各１ＭＢデータ・ブロック・セットは、共用ストレージ・サブシステム１１４の単一ストレージ・ディスクにラウンドロビン式に割り振られる。
【００４６】
例えば、データ・ブロック４０６ａは、共用ストレージ・サブシステム１１４の単一ストレージ・ディスク４０２ａに割り振られ、同様に、データ・ブロック４０６ｂは、単一ストレージ・ディスク４０２ｂに割り振られ、データ・ブロック４０６ｃは、単一ストレージ・ディスクに４０２ｃ割り振られ、データ・ブロック４０６ｎは、単一ストレージ・ディスク４０２ｎに割り振られる。データ・ブロック４０８ａは、共用ストレージ・サブシステム１１４の単一ストレージ・ディスク４０２ａに割り振られ、同様に、データ・ブロック４０８ｂは、単一ストレージ・ディスク４０２ｂに割り振られ、データ・ブロック４０８ｃは、単一ストレージ・ディスクに４０２ｃ割り振られ、データ・ブロック４０８ｎは、単一ストレージ・ディスク４０２ｎに割り振られる。データ・ブロック４１０ａは、共用ストレージ・サブシステム１１４の単一ストレージ・ディスク４０２ａに割り振られ、同様に、データ・ブロック４１０ｂは、単一ストレージ・ディスク４０２ｂに割り振られ、データ・ブロック４１０ｃは、単一ストレージ・ディスク４０２ｃに割り振られ、データ・ブロック４１０ｎは、単一ストレージ・ディスク４０２ｎに割り振られる。
【００４７】
データ・ブロック４１２ａは、共用ストレージ・サブシステム１１４の単一ストレージ・ディスク４０２ａに割り振られ、同様に、データ・ブロック４１２ｂは、単一ストレージ・ディスク４０２ｂに割り振られ、データ・ブロック４１２ｃは、単一ストレージ・ディスクに４０２ｃに割り振られ、データ・ブロック４１２ｎは、単一ストレージ・ディスク４０２ｎに割り振られる。データ・ブロック４１４ａは、共用ストレージ・サブシステム１１４の単一ストレージ・ディスク４０２ａに割り振られ、同様に、データ・ブロック４１４ｂは、単一ストレージ・ディスク４０２ｂに割り振られ、データ・ブロック４１４ｃは、単一ストレージ・ディスクに４０２ｃに割り振られ、データ・ブロック４１４ｎは、単一ストレージ・ディスク４０２ｎに割り振られる。データ・ブロック４１６ａは、共用ストレージ・サブシステム１１４の単一ストレージ・ディスク４０２ａに割り振られ、同様に、データ・ブロック４１６ｂは、単一ストレージ・ディスク４０２ｂに割り振られ、データ・ブロック４１６ｃは、単一ストレージ・ディスク４０２ｃに割り振られ、データ・ブロック４１６ｎは、単一ストレージ・ディスク４０２ｎに割り振られる。
【００４８】
図５は、一実施形態に従った、動的なブロック・サイズ粒度を使用して、計算クラスタ内の異なるタイプのアプリケーションについてファイル・システムを最適化するプロセスを実装することができる、システム５００のブロック図を示す。システム５００は、１つ以上のサーバ・コンピュータ・システム（以下「サーバ」と略記）５３０に接続された、１つ以上のクライアント装置５０１を含む。サーバ５３０は、バス５０２又は情報を通信するための他の通信機構と、情報を処理するためにバス５０２と結合されたプロセッサ（ＣＰＵ）５０４を含む。また、サーバ５３０は、情報及びプロセッサ５０４によって実行すべき命令を格納するためにバス５０２に結合された、ランダム・アクセス・メモリ（ＲＡＭ）又は他の動的ストレージ装置のような主メモリ５０６を含む。また、主メモリ５０６は、プロセッサ５０４による命令の実行中に、一時変数又は他の中間情報を格納するためにも使用することができる。
【００４９】
さらに、サーバ５３０は、プロセッサ５０４用の静的情報及び命令を格納するためにバス５０２に結合された、読み取り専用メモリ（ＲＯＭ）５０８又は他の静的ストレージ装置を含む。磁気ディスク又は光ディスクのようなストレージ装置５１０は、情報及び命令を格納するためにバス５０２に結合される。バス５０２は、例えば、ビデオ・メモリ又は主メモリ５０６をアドレス指定するために、３２本のアドレス線を含むことができる。また、バス５０２は、例えば、プロセッサ５０４、主メモリ５０６、ビデオ・メモリ及びストレージ装置５１０のような諸コンポーネント間でデータを転送するために、３２ビットのデータ・バスを含むことができる。代替的に、個別のデータ及びアドレス線の代わりに、多重データ／アドレス線を使用してもよい。
【００５０】
サーバ５３０は、情報をコンピュータ・ユーザに表示するために、バス５０２を介してディスプレイ５１２に結合することができる。英数字及び他のキーを含む入力装置５１４は、情報及びコマンドの選択をプロセッサ５０４に通信するために、バス５０２に結合される。他のタイプのユーザ入力装置は、方向情報及びコマンドの選択をプロセッサ５０４に通信したり、ディスプレイ５１２上のカーソル移動を制御するためのカーソル制御装置５１６(例えば、マウス、トラックボール又はカーソル方向キー）を含む。
【００５１】
本発明の諸機能は、主メモリ５０６内に保持される１つ以上の命令の１つ以上のシーケンスを実行するプロセッサ５０４に応答して、サーバ５３０によって実施される。かかる命令は、ストレージ装置５１０のような他のコンピュータ可読媒体から主メモリ５０６に読み取ることができる。主メモリ５０６内に保持される命令のシーケンスを実行する結果として、プロセッサ５０４は、本明細書に開示した諸プロセス・ステップを実施する。主メモリ５０６内に保持される命令のシーケンスを実行するために、マルチプロセッシング・システム内の１つ以上のプロセッサを使用してもよい。代替実施形態では、本発明を実装するために、諸ソフトウェア命令の代わりに又はこれらのソフトウェア命令と組み合わせて、ハードワイヤード回路を使用してもよい。従って、本発明の実施形態は、ハードウェア回路及びソフトウェアの任意の特定の組み合わせに制限されない。
【００５２】
コンピュータ可読媒体の種々の形式は、実行のために１つ以上の命令の１つ以上のシーケンスをプロセッサ５０４に搬送することに関係してもよい。例えば、これらの命令は、最初は遠隔コンピュータの磁気ディスク上に保持されることがある。遠隔コンピュータは、これらの命令をその動的メモリにロードし、モデムを使用して、これらの命令を電話線を介して送信することができる。サーバ５３０に対しローカルのモデムは、この電話線上のデータを受信し、赤外線送信機を使用してこのデータを赤外線信号に変換することができる。バス５０２に結合された赤外線検出器は、この赤外線信号で搬送されるデータを受信し、このデータをバス５０２上に配置することができる。バス５０２は、このデータを主メモリ５０６に搬送し、主メモリ５０６からプロセッサ５０４は命令を検索し且つ実行する。主メモリ５０６から受信された命令は、プロセッサ５０４による実行の前又は実行の後に、ストレージ装置５１０上に格納してもよい。
【００５３】
また、サーバ５３０は、バス５０２に結合された通信インタフェース５１８を含む。通信インタフェース５１８は、ネットワーク・リンク５２０に対する両方向のデータ通信結合を提供する。一方、ネットワーク・リンク５２０は、一般にインターネット５２８と称する、世界的規模のパケット・データ通信ネットワークに接続される。インターネット５２８は、電気、電磁気又は光信号を使用して、デジタル・データ・ストリームを搬送する。サーバ５３０と授受されるデジタル・データを搬送するための、種々のネットワークを通過する信号、ネットワーク・リンク５２０上の信号及び通信インタフェース５１８を通過する信号は、情報を移送する搬送波の典型的な形式である。
【００５４】
サーバ５３０の他の実施形態では、通信インタフェース５１８は、通信リンク５２０を介してローカル・ネットワーク（ＬＡＮ）５２２に接続される。例えば、通信インタフェース５１８は、ネットワーク・リンク５２０の一部を構成する、対応するタイプの電話線に対するデータ通信接続を提供するための、サービス総合デジタル・ネットワーク（ＩＳＤＮ）カード又はモデムとすることができる。他の例として、通信インタフェース５１８は、互換性のあるローカル・エリア・ネットワーク（ＬＡＮ）に対するデータ通信接続を提供するための、ＬＡＮカードとすることができる。無線リンクも実装することができる。かかる任意の実装では、通信インタフェース５１８は、種々のタイプの情報を表すデジタル・データ・ストリームを搬送するための、電気、電磁気又は光信号を送信／受信する。
【００５５】
一般に、ネットワーク・リンク５２０は、１つ以上のネットワークを通して、他のデータ装置に対するデータ通信を提供する。例えば、ネットワーク・リンク５２０は、ローカル・ネットワーク５２２を通して、ホスト・コンピュータ５２４又はインターネット・サービス・プロバイダ（ＩＳＰ）５２６によって動作されるデータ装置に対する接続を提供することができる。インターネット・サービス・プロバイダ５２６は、インターネット５２８を通して、データ通信サービスを提供する。ローカル・ネットワーク５２２及びインターネット５２８は、両方とも、キャリー・デジタル・データ・ストリームを搬送するための、電気、電磁気又は光信号を使用する。サーバ５３０と授受されるデジタル・データを搬送するための、種々のネットワークを通過する信号、ネットワーク・リンク５２０上の信号及び通信インタフェース５１８を通過する信号は、情報を移送する搬送波の典型的な形式である。
【００５６】
サーバ５３０は、ネットワーク、ネットワーク・リンク５２０及び通信インタフェース５１８を通して、電子メール及びプログラム・コードを含む、メッセージ及びデータを送信／受信することができる。さらに、通信インタフェース５１８は、ユニバーサル・シリアル・バス／チューナから構成することができる。ネットワーク・リンク５２０は、他のソースからメッセージ、データ及びプログラム・コードを受信するために、サーバ５３０をケーブル・プロバイダ、衛星プロバイダ又は他の地上伝送システムに接続するための、アンテナ又はケーブルとすることができる。
【００５７】
本明細書に開示した本発明の例示的なバージョンは、サーバ５３０を含むシステム５００のような分散処理システム内の論理動作として実装することができる。これらの論理動作は、サーバ５３０内で実行される諸ステップのシーケンスとして、またシステム５００内の相互に結合されたマシン・モジュールとして、実装することができる。その実装は、選択の問題であり、本発明を実装するシステム５００の性能に依存することがある。そのため、本発明の前記例示的なバージョンを構成する論理動作は、例えば、動作、ステップ又はモジュールと呼ばれる。
【００５８】
前述のサーバ５３０と同様に、クライアント装置５０１は、プロセッサ、メモリ、ストレージ装置、ディスプレイ、入力装置及びサーバ５３０との通信のために当該クライアント装置をインターネット５２８、インターネット・サービス・プロバイダ５２６又はローカル・ネットワーク５２２に接続するための通信インタフェース（例えば、電子メール・インタフェース）を含むことができる。
【００５９】
さらに、システム５００は、クライアント装置５０１と同じ態様で動作するコンピュータ（例えば、パーソナル・コンピュータ、計算ノード）５０５を含むことができる。その場合、ユーザは、１つ以上のコンピュータ５０５を利用して、サーバ５３０内のデータを管理することができる。
【００６０】
一般に、本明細書では、「コンピュータ可読媒体」という用語は、実行のために諸命令をプロセッサ５０４に提供することに関係する任意の媒体を指す。かかる媒体は、不揮発性媒体、揮発性媒体及び伝送媒体等を含む、多くの形式を取ることができる。不揮発性媒体は、例えば、ストレージ装置５１０のような光又は磁気ディスクを含む。揮発性媒体は、主メモリ５０６のような動的メモリを含む。伝送媒体は、同軸ケーブル、銅線及びファイバ・オプティクスを含み、バス５０２を構成する線を含む。
【００６１】
従って、本明細書は、動的なブロック・サイズ粒度を使用して、計算クラスタ内の異なるタイプのアプリケーションについてファイル・システムを最適化することを開示する。当業者には明らかなように、本発明の諸側面は、システム、方法又はコンピュータ・プログラムとして具体化することができる。発明の１側面は、動的なブロック・サイズ粒度を使用して、計算クラスタ内の異なるタイプのアプリケーションについてファイル・システムを最適化するためにコンピュータ・プログラムを含む。このコンピュータ・プログラムは、その内部にコンピュータ可読プログラム・コードを具体化した、コンピュータ可読ストレージ媒体を含む。
【００６２】
前記コンピュータ可読ストレージ媒体は、クラスタ内の計算ノードごとに所定数のストレージ割り振り領域を予約するように構成されたコンピュータ可読プログラム・コードを含む。各ストレージ割り振り領域は、ローカル接続ストレージの単一ストレージ・ディスク上にある１セットの連続データ・ブロックから成る。前記コンピュータ可読ストレージ媒体は、ローカル接続ストレージの単一ストレージ・ディスク上にある１セットの連続データ・ブロックを、前記ファイル・システム内に格納すべき前記計算クラスタ内の計算動作用のデータをストライプするための当該ファイル・システムのブロック割り振り粒度として使用するように構成されたコンピュータ可読プログラム・コードをさらに含む。前記コンピュータ可読ストレージ媒体は、共用ストレージ・サブシステムの単一データ・ブロックを、前記ファイル・システム内に格納すべき前記計算クラスタ内のデータ・アクセス動作用のデータをストライプするための前記ファイル・システムのブロック割り振り粒度として使用するように構成されたコンピュータ可読プログラム・コードをさらに含む。
【００６３】
従って、本発明の諸側面は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）又はソフトウェア及びハードウェア要素の両方を含む実施形態の形式を取ることができ、これらの全てを一般に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明の諸側面は、コンピュータ可読プログラム・コードを１つ以上のコンピュータ可読媒体内に具体化した、コンピュータ・プログラムの形式を取ることができる。
【００６４】
１つ以上のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。例えば、コンピュータ可読ストレージ媒体は、電子、磁気、光学、電磁気、赤外線、半導体システム、装置若しくはデバイス、又はこれらの任意の適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体の特定の例は、１つ以上の線を有する電気接続、フレキシブル・ディスク、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、読み取り専用ＣＤ−ＲＯＭ、光ストレージ装置、磁気ストレージ装置、又はこれらの任意の適切な組み合わせとすることができる。本明細書の文脈では、コンピュータ可読ストレージ媒体は、命令実行システム又は装置に関連して又はこれらによって使用するためのプログラムを保持又は格納する、任意の有形的媒体とすることができる。
【００６５】
コンピュータ可読信号媒体は、伝搬されるデータ信号を含むこともあるが、その場合には、ベースバンド内に又は搬送波の一部として、コンピュータ可読プログラム・コードを具体化することができる。かかる伝搬される信号は、電磁気、光学、又はこれらの任意の適切な組み合わせ等を含む、種々の形式のうち任意の形式を取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、命令実行システム又は装置に関連して又はこれらによって使用するためのプログラムを通信し、伝搬し、移送する、任意のコンピュータ可読媒体とすることができる。
【００６６】
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦ、又はこれらの任意の適切な組み合わせ等を含む、適切な任意の媒体を使用して伝送することができる。
【００６７】
本発明の諸側面に従った動作を実施するためのコンピュータ・プログラム・コードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向プログラミング言語及び「Ｃ」プログラミング言語又は同様のプログラミング言語のような通常の手続き的プログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書くことができる。プログラム・コードは、独立のソフトウェア・パッケージとしてユーザ・コンピュータ上で完全に実行することができ、その一部をユーザ・コンピュータ上で且つ他の一部を遠隔コンピュータ上で実行することができ、又は遠隔コンピュータ若しくはサーバ上で完全に実行することができる。後者のシナリオでは、遠隔コンピュータは、ＬＡＮ又は広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通してユーザ・コンピュータに接続することができ、或いはその接続を（例えば、インターネット・サービス・プロバイダを使用するインターネットを通して）外部コンピュータに行うことができる。
【００６８】
以上では、本発明の実施形態に従った、方法、装置（システム）及びコンピュータ・プログラムのフローチャート又はブロック図を参照して、本発明の諸側面を説明した。フローチャート又はブロック図の各ブロック、複数ブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができる。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサに提供すると、当該コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行される諸命令は、フローチャート又はブロック図のブロックで指定された機能／行為を実装するための手段を作成する。
【００６９】
また、これらのコンピュータ・プログラム命令をコンピュータ可読媒体内に格納すると、当該コンピュータ可読媒体内に格納された諸命令が、フローチャート又はブロック図のブロックで指定された機能／行為を実装するための諸命令を含む製品を生産することを目的として、コンピュータ、他のプログラム可能なデータ処理装置又は他の装置に対し特定の態様で機能するように指示することができる。
【００７０】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能なデータ処理装置又は他の装置にロードすると、当該コンピュータ、他のプログラム可能なデータ処理装置又は他の装置上で実行される諸命令が、フローチャート又はブロック図のブロックで指定された機能／行為を実装するためのプロセスを提供することを目的として、一のコンピュータ実装プロセスを生成するように当該コンピュータ、他のプログラム可能なデータ処理装置又は他のデバイス上で一連の動作ステップを実行させることができる。
【符号の説明】
【００７１】
１０２・・・計算クラスタ
１０４ａ〜１０４ｎ・・・計算ノード
１０６ａ〜１０６ｎ・・・ローカル接続ストレージ
１０８・・・ファイル・システム・マネージャ
１１０・・・スイッチ・ネットワーク
１１２・・・ストレージ・スイッチ
１１４・・・共用ストレージ・サブシステム
１１８・・・クライアント・ノード
【図１】
0005643421.tif 000002
【図２】
0005643421.tif 000003
【図３】
0005643421.tif 000004
【図４】
0005643421.tif 000005
【図５】
0005643421.tif 000006