(57)【要約】  様々な例示的な実施形態は、複数のデータセンタ１３５ａ−ｆを含むクラウドシステム１３０にファイルブロックを格納する方法に関する。この方法は、ファイルブロックをクライアント１１０ａ−ｂから受け取るステップと、複数のチャンクをファイルブロックから生成するステップであって、各チャンクがファイルブロックよりも小さく、ファイルブロックがチャンクのサブセットから再構築されうる、生成するステップと、各チャンクを複数のデータセンタ１３５ａ−ｆのうちの１つに分配するステップと、ファイルブロックをキャッシュに格納するステップとを含むことができる。様々な例示的な実施形態は、ファイルを格納するためのクラウドシステムに関する。このシステムは、プライマリデータセンタを含む複数のデータセンタを含むことができる。プライマリデータセンタは、少なくとも１つの完全なファイルブロックを格納するように構成されたキャッシュ２６０と、複数のファイルブロックの各々のためのチャンクを格納するように構成されたチャンクストレージ２４０と、ファイルエンコーダ２３０と、ファイルデコーダ２５０とを含むことができる。
2015509244.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータセンタ（１３５ａ−ｅ）を含むクラウドシステム（１３０）にファイルを格納する方法であって、
第１のデータセンタにおいて、クライアントからファイルブロックを受け取る（４２０）ステップと、
複数のチャンクをファイルブロックから生成する（４４０）ステップであり、各チャンクがファイルよりも小さく、ファイルブロックがチャンクのサブセットから再構築されうる、生成するステップと、
複数のチャンクを複数のデータセンタのうちの少なくとも２つに分配する（４５０）ステップであり、複数のチャンクのうちの少なくとも第１のチャンクおよび第２のチャンクが複数のデータセンタのうちの異なるものに分配される、分配するステップと、
ファイルブロックを第１のデータセンタのキャッシュに格納する（４３０）ステップと
を含む、方法。
【請求項２】
ファイルブロックを読み出すための要求をクライアントから受け取る（５２０）ステップと、
ファイルブロックがキャッシュに格納されているかどうかを決定する（５３０）ステップと、
ファイルブロックがキャッシュに格納されている場合、キャッシュに格納されているファイルブロックをクライアントに送る（５８０）ステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
ファイルブロックがキャッシュに格納されていない場合、
チャンクを複数のデータセンタに要求する（５４０）ステップと、
複数のチャンクの少なくともサブセットを複数のデータセンタから受け取る（５５０）ステップと、
ファイルブロックをチャンクのサブセットから再構築する（５６０）ステップと、
ファイルブロックを第１のデータセンタのキャッシュに格納する（５７０）ステップと、
再構築されたファイルブロックをクライアントに送る（５８０）ステップと
をさらに含む、請求項２に記載の方法。
【請求項４】
複数のチャンクをファイルからの生成するステップが、複数のチャンクを生成するために消失符号を使用するステップを含む、請求項１から３のいずれかに記載の方法。
【請求項５】
消失符号が、リードソロモン符号、ＭＤＳ符号、およびＬＤＰＣ符号のうちの少なくとも１つである、請求項４に記載の方法。
【請求項６】
ファイルブロックに書き込むための要求を受け取る（６１０）ステップと、
キャッシュ内のファイルブロックに書き込む（６４０）ステップと、
ファイルを閉じる（６４５）ステップと、
第２の複数のチャンクをファイルブロックから生成する（６５０）ステップと、
第２の複数のチャンクの各チャンクを複数のデータセンタのうちの異なるものに分配する（６５５）ステップと
をさらに含む、請求項１から５のいずれかに記載の方法。
【請求項７】
第２の複数のチャンクが、変更されたチャンクのみを含む、請求項６に記載の方法。
【請求項８】
現在のキャッシュサイズの実際のストレージおよび転送コストを以前のキャッシュサイズの仮定のストレージおよび転送コストと比較する（７２０）ステップと、
低い方のストレージおよび転送コストに基づいてキャッシュサイズを調節する（７３５、７４０、７４５）ステップと
をさらに含む、請求項１から７のいずれかに記載の方法。
【請求項９】
複数のチャンクが組織的消失符号に応じて生成され、ファイルブロックが、符号化されていないチャンクのサブセットとコード化されたチャンクのサブセットとに分割される、請求項１から８のいずれかに記載の方法。
【請求項１０】
ファイルを格納するためのクラウドシステムであって、システムが、
プライマリデータセンタを含む複数のデータセンタ（１３５ａ−ｅ）
を含み、
プライマリデータセンタが、
少なくとも１つの完全なファイルブロックを格納するように構成されたキャッシュ（２６０）と、
複数のファイルブロックの各々のためのチャンクを格納するように構成されたチャンクストレージ（２４０）と、
複数のチャンクをファイルブロックから生成するように構成されたファイルエンコーダ（２３０）であり、各チャンクがファイルよりも小さく、ファイルブロックがチャンクのサブセットから再構築されうる、ファイルエンコーダ（２３０）と、
完全なファイルブロックをチャンクのサブセットから再構築するように構成されたファイルデコーダ（２５０）と
を含む、クラウドシステム。
【請求項１１】
キャッシュ（２６０）がハードディスクである、請求項１０に記載のクラウドシステム。
【請求項１２】
プライマリデータセンタが、完全なファイルブロックをクライアントから受け取り、かつ完全なファイルブロックをクライアントに送るように構成されたクライアントインタフェース（２１０）をさらに含む、請求項１０または１１に記載のクラウドシステム。
【請求項１３】
プライマリデータセンタが、複数のチャンクのうちの１つのチャンクを複数のデータセンタの各々に分配するように構成され、かつチャンクのサブセットを複数のデータセンタから受け取るように構成されたクラウドインタフェース（２２０）をさらに含む、請求項１０から１２のいずれかに記載のクラウドシステム。
【請求項１４】
ファイルエンコーダが、複数のチャンクを生成するために消失符号化を使用するように構成される、請求項１０から１３のいずれかに記載のクラウドシステム。
【請求項１５】
サブセット（３２０）中のチャンクの数が、ファイルエンコーダによって生成された複数のチャンク（３１０）の数よりも少なくとも２つ少ない、請求項１に記載の方法または請求項１０に記載のクラウドシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示される様々な例示的な実施形態は、一般に、コンピュータファイルシステムに関する。
【背景技術】
【０００２】
クラウドコンピューティングはネットワークを介して共有リソースを使用するコンピューティングサービスの提供として定義することができる。クラウドコンピューティングは、多くの場合、データファイルに様々なユーザがアクセスできるようにデータファイルのストレージを必要とする。ファイルストレージはクラウドコンピューティングサービスとみなすことができる。様々なエンドユーザは、ファイルがどのように格納されているかを正確に知ることなく、クラウドサービスプロバイダによって格納されたファイルにアクセスすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
クラウドコンピューティング環境のファイルストレージは、クラウドサービスプロバイダおよびユーザに様々な問題を提起する。クラウドサービスは、ファイルが、探し出され、ネットワークを横切ってエンドユーザに転送されなければならないので、時として待ち時間の問題がある。ユーザは、要求したファイルを短い待ち時間で供給するクラウドサービスを望むことがある。データセンタまたはネットワークの一部が利用できない場合、クラウドサービスは利用できないという難点もある。ユーザは、クラウド構成要素が利用できない場合、回復力を備えるクラウドサービスを望むことがある。短い待ち時間および高い回復力は、多くの場合、クラウドサービスプロバイダおよび／またはユーザに追加コストを要求する。
【課題を解決するための手段】
【０００４】
前述に照らして、クラウドコンピューティングのためのファイルシステムを設けることが望ましいことになる。特に、低コストで短い待ち時間および高い復元力をもつ、ファイルを格納する方法およびシステムを提供することが望ましいことになる。
【０００５】
クラウドコンピューティングのためのファイルシステムの現在の必要性に照らして、様々な例示的な実施形態の簡潔な概要が提示される。いくつかの単純化および省略が以下の概要で行われることがあり、それは、様々な例示的な実施形態のいくつかの態様を強調し紹介するためのものであり、本発明の範囲を限定するものではない。当業者が本発明の概念を実施し使用できるようにするのに適切な好ましい例示的な実施形態の詳細な説明は、後のセクションで引き続いて行われる。
【０００６】
様々な例示的な実施形態は、複数のデータセンタを含むクラウドシステムにファイルを格納する方法に関する。この方法は、第１のデータセンタにおいて、クライアントからファイルブロックを受け取るステップと、複数のチャンクをファイルブロックから生成するステップであって、各チャンクがファイルよりも小さく、ファイルブロックがチャンクのサブセットから再構築されうる、生成するステップと、各チャンクを複数のデータセンタのうちの異なるものに分配するステップと、ファイルを第１のデータセンタのキャッシュに格納するステップとを含むことができる。
【０００７】
様々な代替実施形態において、この方法は、ファイルブロックを読み出すための要求をクライアントから受け取るステップと、ファイルブロックがキャッシュに格納されているかどうかを決定するステップと、ファイルブロックがキャッシュに格納されている場合、キャッシュに格納されているファイルブロックをクライアントに送るステップとをさらに含む。この方法は、ファイルブロックがキャッシュに格納されていない場合、チャンクを複数のデータセンタに要求するステップと、複数のチャンクの少なくともサブセットを複数のデータセンタから受け取るステップと、ファイルブロックをチャンクのサブセットから再構築するステップと、ファイルブロックを第１のデータセンタのキャッシュに格納するステップと、再構築されたファイルブロックをクライアントに送るステップとをさらに含むことができる。
【０００８】
様々な代替実施形態において、複数のチャンクをファイルブロックから生成するステップは、複数のチャンクを生成するために消失符号を使用するステップを含む。
【０００９】
様々な代替実施形態において、この方法は、ファイルブロックに書き込むための要求を受け取るステップと、キャッシュ内のファイルブロックに書き込むステップと、ファイルを閉じるステップと、第２の複数のチャンクをファイルブロックから生成するステップと、第２の複数のチャンクの各チャンクを複数のデータセンタのうちの異なるものに分配するステップとをさらに含む。第２の複数のチャンクは、変更されたチャンクのみを含むことができる。
【００１０】
様々な代替実施形態において、この方法は、現在のキャッシュサイズの実際のストレージおよび転送コストを以前のキャッシュサイズの仮定のストレージおよび転送コストと比較するステップと、低い方のストレージおよび転送コストに基づいてキャッシュサイズを調節するステップとをさらに含む。
【００１１】
様々な代替実施形態において、この方法は、キャッシュが一杯であることを決定するステップと、キャッシュからファイルブロックを除去するステップとをさらに含む。
【００１２】
様々な代替実施形態において、複数のチャンクが組織的消失符号に応じて生成され、ファイルブロックが、符号化されていないチャンクのサブセットとコード化されたチャンクのサブセットとに分割される。
【００１３】
様々な代替実施形態において、チャンクの数は、チャンクのサブセットの数よりも少なくとも２つ多い。
【００１４】
様々な例示的な実施形態は、有形で非一時的な機械可読記録媒体上の命令として符号化される上述の方法に関する。
【００１５】
様々な例示的な実施形態は、ファイルを格納するためのクラウドシステムに関する。このシステムは、プライマリデータセンタを含む複数のデータセンタを含むことができる。プライマリデータセンタは、少なくとも１つの完全なファイルブロックを格納するように構成されたキャッシュと、複数のファイルブロックの各々のためのチャンクを格納するように構成されたチャンクストレージと、複数のチャンクをファイルから生成するように構成されたファイルエンコーダであって、各チャンクがファイルよりも小さく、ファイルブロックがチャンクのサブセットから再構築されうる、ファイルエンコーダと、完全なファイルブロックをチャンクのサブセットから再構築するように構成されたファイルデコーダとを含むことができる。
【００１６】
様々な代替実施形態において、キャッシュはハードディスクである。
【００１７】
様々な代替実施形態において、プライマリデータセンタは、完全なファイルをクライアントから受け取り、かつ完全なファイルをクライアントに送るように構成されたクライアントインタフェースをさらに含む。
【００１８】
様々な代替実施形態において、プライマリデータセンタは、複数のチャンクのうちの１つのチャンクを複数のデータセンタの各々に分配するように構成され、かつチャンクのサブセットを複数のデータセンタから受け取るように構成されたクラウドインタフェースをさらに含む。
【００１９】
様々な代替実施形態において、ファイルエンコーダは、複数のチャンクを生成するために消失符号化を使用するように構成される。
【００２０】
様々な代替実施形態において、サブセット中のチャンクの数は、ファイルエンコーダによって生成された複数のチャンクの数よりも少なくとも２つ少ない。
【００２１】
このように、様々な例示的な実施形態がクラウドコンピューティングのための方法およびファイルシステムを可能にすることは明らかである。特に、ファイルチャンクを分配し、ファイルキャッシュをデータセンタに備えることによって、高い回復力および短い待ち時間の目標を低コストで満たすことができる。
【００２２】
様々な例示的な実施形態をよりよく理解するために、添付図面が参照される。
【図面の簡単な説明】
【００２３】
【図１】ファイルをクラウドサービスとして格納するための例示的なクラウド環境を示す図である。
【図２】クラウドサービスのためにファイルストレージを提供する例示的なデータセンタを示す図である。
【図３】ファイルブロックを格納するための例示的なデータ構造を示す図である。
【図４】クラウドサービスにファイルブロックを格納する例示的な方法を示す流れ図である。
【図５】クラウドサービスに格納されているファイルブロックを読み出す例示的な方法を示す流れ図である。
【図６】クラウドサービスに格納されているファイルブロックに書き込む例示的な方法を示す流れ図である。
【図７】キャッシュのサイズを調節する例示的な方法を示す流れ図である。
【発明を実施するための形態】
【００２４】
次に、同様の数字が同様の構成要素またはステップを表す図面を参照して、様々な例示的な実施形態の広範な態様が開示される。
【００２５】
図１は、ファイルをクラウドサービスとして格納するための例示的なクラウド環境１００を示す。ファイルは１つまたは複数のファイルブロックとして格納することができる。それ故に、ファイルブロックはファイルの一部または完全なファイルでありうる。例示的なクラウド環境１００は、ユーザデバイス１１０、ネットワーク１２０、およびクラウドサービス１３０を含むことができる。クラウドサービス１３０は複数のデータセンタ１３５を含むことができる。ユーザデバイス１１０は、ネットワーク１２０を通してクラウドサービス１３０の１つまたは複数のデータセンタ１３５と通信することができる。クラウドサービス１３０は、データストレージまたは他のクラウドサービスをユーザデバイス１１０に提供することができる。
【００２６】
ユーザデバイス１１０は、ネットワーク１２０を介してクラウドサービス１３０と通信することができる任意のデバイスを含むことができる。例えば、ユーザデバイス１１０は、パーソナルコンピュータ、ラップトップコンピュータ、モバイル電話、スマートフォン、サーバ、携帯情報端末、または任意の他の電子デバイスとすることができる。多数のユーザデバイス１１０ａおよび１１０ｂがクラウドサービス１３０にアクセスすることができる。２つのユーザデバイス１１０のみが示されているが、任意の数のユーザデバイス１１０がクラウドサービス１３０にアクセスできることは明らかである。
【００２７】
ネットワーク１２０は、ユーザデバイス１１０とデータセンタ１３５との間のデジタル通信を処理できる任意の通信ネットワークを含むことができる。ネットワーク１２０はインターネットとすることができる。ネットワーク１２０は、ユーザデバイス１１０とデータセンタ１３５との間に様々な通信経路を設けることができる。
【００２８】
クラウドサービス１３０は、コンピューティングサービスをユーザデバイス１１０に提供する１つまたは複数のコンピューティングデバイスを含むことができる。様々な例示的な実施形態において、コンピューティングデバイスはデータファイルを格納するデータセンタ１３５とすることができる。データセンタ１３５は、回復力を保証するのに役立つように地理的に分散させることができる。例えばデータセンタ１３５ａなどのデータセンタが停電またはネットワーク故障に起因して利用できない場合、他のデータセンタ１３５ｂ−ｆは利用可能なままでありうる。データセンタ１３５は互いに通信することができる。様々な例示的な実施形態において、データセンタ１３５は専用ラインまたはリースラインを介して互いに通信することができる。代替として、データセンタ１３５はネットワーク１２０を介して互いに通信することができる。
【００２９】
データセンタ１３５は、回復力を提供するために分散型アーキテクチャでデータファイルを格納することができる。データファイルは、ユーザデバイス１１０によって要求されアクセスされうる１つまたは複数のファイルブロックに分割することができる。例えば、ファイルブロックは、データファイル内のバイト範囲で定義することができる。ファイルブロックは複数のチャンクに分割し、複数のデータセンタ１３５の各々で格納することができる。ファイルブロックを再構築するのにチャンクのサブセットしか必要でないことがある。そのため、データセンタ１３５のうちの１つまたは複数が利用できない場合でさえ、クラウドサービス１３０はファイルブロックへのアクセスを提供することができることがある。
【００３０】
データセンタ１３５のうちの１つは、データファイルのためのプライマリデータセンタとして指定することができる。ユーザデバイス１１０に地理的に最も近く、データファイルを最初に格納するデータセンタ１３５としてプライマリデータセンタを選ぶことができる。例えば、データセンタ１３５ａはユーザデバイス１１０ａのためのプライマリデータセンタとすることができ、一方、データセンタ１３５ｆはユーザデバイス１１０ｂのためのプライマリデータセンタとすることができる。プライマリデータセンタは、ファイルブロックを一時的に格納するキャッシュを含むことができる。キャッシュされたファイルブロックは、より速いアクセスを提供し、待ち時間を減少させることができる。キャッシュされたファイルブロックは、データセンタ１３５間で送信されなければならないデータの量を減少させることもできる。ユーザデバイス１１０のためのまたはデータファイルのためのプライマリデータセンタが利用できない場合、ユーザデバイス１１０は任意の他のデータセンタ１３５からファイルブロックを取り出すことができる。
【００３１】
図２は、クラウドサービスのためにファイルストレージを提供する例示的なデータセンタ１３５を示す。例示的なデータセンタ１３５はクラウドサービス１３０の一部とすることができる。データセンタ１３５は、あるデータファイルのためのプライマリデータセンタとして、および他のファイルのためのセカンダリデータセンタとして働くことができる。例示的なデータセンタ１３５は、クライアントインタフェース２１０、クラウドインタフェース２２０、ファイルエンコーダ２３０、チャンクストレージ２４０、ファイルデコーダ２５０、ファイルキャッシュ２６０、およびキャッシュアダプタ２７０を含むことができる。
【００３２】
クライアントインタフェース２１０は、ユーザデバイス１１０と通信するように構成された、ハードウェア、および／または機械可読記録媒体上に符号化された実行可能命令を含むインタフェースとすることができる。クライアントインタフェース２１０は、ユーザデバイス１１０からファイルブロックを受け取り、ファイルブロックを格納するプロセスを開始することができる。クライアントインタフェース２１０は、ユーザデバイス１１０からファイルブロックの要求を受け取り、ファイルブロックを読み出すプロセスを開始することができる。クライアントインタフェース２１０は、完全なファイルブロックまたは完全なデータファイルをユーザデバイス１１０に送信することができる。
【００３３】
クラウドインタフェース２２０は、他のデータセンタ１３５と通信するように構成された、ハードウェア、および／または機械可読記録媒体上に符号化された実行可能命令を含むインタフェースとすることができる。クラウドインタフェース２２０は、ファイルブロックの符号化されたチャンクを１つまたは複数の他のデータセンタ１３５に分配することができる。様々な例示的な実施形態において、クラウドインタフェース２２０は、複数のデータセンタ１３５の各々に１つのチャンクを分配する。クラウドインタフェース２２０は、１つまたは複数の他のデータセンタ１３５からファイルブロックの符号化されたチャンクを受け取ることができる。クラウドインタフェース２２０は、チャンクストレージ２４０にアクセスしてチャンクを読み出すかまたは格納することができる。
【００３４】
ファイルエンコーダ２３０は、ファイルブロックを複数のチャンクとして符号化するように構成された、ハードウェア、および／または機械可読記録媒体上に符号化された実行可能命令を含むことができる。図３−７に関して以下でさらに詳細に説明するように、複数のチャンクは、ファイルブロックを格納するために回復力のある分配フォーマットを備えることができる。様々な例示的な実施形態において、ファイルエンコーダ２３０は、複数のチャンクを生成するために消失符号を実施することができる。複数のチャンクを生成するのに好適な例示的な消失符号は、リードソロモン符号、最大距離分離（ＭＤＳ）符号、および低密度パリティチェック（ＬＤＰＣ）符号を含むことができる。様々な例示的な実施形態において、ファイルエンコーダ２３０は組織的消失符号を使用することができ、オリジナルのファイルブロックは、ファイル回復で使用される別個の組のコード化されたチャンクと一緒に複数の符号化されていないチャンクに分割される。様々な代替実施形態において、他の符号化方式を使用してチャンクを生成することができる。
【００３５】
チャンクストレージ２４０は、ファイルエンコーダ２３０などのファイルエンコーダによって生成されたチャンクを格納することができる任意の機械可読媒体を含むことができる。それ故に、チャンクストレージ２４０は、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記録媒体、光記録媒体、フラッシュメモリデバイス、および／または類似の記録媒体などの機械可読記録媒体を含むことができる。様々な例示的な実施形態において、チャンクストレージ２４０は、電源またはデバイス故障の場合に、格納されたチャンクを維持する永続性記憶装置を備えることができる。チャンクストレージ２４０は、書き込み操作中の故障の場合にインテグリティを維持するためにジャーナリングシステムを使用することができる。チャンクストレージ２４０は、ファイルエンコーダ２３０によって生成されたチャンク、および／またはクラウドインタフェース２２０を介して受け取ったチャンクを格納することができる。
【００３６】
ファイルデコーダ２５０は、ファイルを格納するのに使用された複数のチャンクのサブセットを復号するように構成された、ハードウェア、および／または機械可読記録媒体上に符号化された実行可能命令を含むことができる。ファイルデコーダ２５０は、チャンクストレージ２４０および／またはクラウドインタフェース２２０からチャンクのサブセットを受け取ることができる。ファイルデコーダ２５０は、チャンクのサブセットからファイルブロックを再生成することができる。様々な例示的な実施形態において、ファイルデコーダ２５０は、ファイルエンコーダ２３０の逆操作を実施することができる。ファイルデコーダ２５０は、ファイルエンコーダ２３０と同じ消失符号を使用することができる。図３−７に関して以下でさらに詳細に説明するように、ファイルブロックを再生成するのに必要とされるチャンクのサブセットは、ファイルエンコーダ２３０によって生成された複数のチャンクよりも少なくてもよい。
【００３７】
ファイルキャッシュ２６０は、完全なファイルブロックを格納することができる任意の機械可読媒体を含むことができる。それ故に、ファイルキャッシュ２６０は、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記録媒体、光記録媒体、フラッシュメモリデバイス、および／または類似の記録媒体などの機械可読記録媒体を含むことができる。様々な例示的な実施形態において、ファイルキャッシュ２６０は、電源またはデバイス故障の場合にファイルブロックを維持する永続性ストレージを備えることができる。例えば、ファイルキャッシュ２６０はハードディスクとすることができる。ファイルキャッシュ２６０にハードディスクを使用すると、許容可能な待ち時間を備えながらコストを最小にすることができる。ファイルキャッシュ２６０は、書き込み操作中の故障の場合、インテグリティを維持するためにジャーナリングシステムを使用することができる。ファイルキャッシュ２６０は、クライアントインタフェース２１０を介して受け取られるファイルブロック、および／またはファイルデコーダ２５０によって再生成されたファイルブロックを格納することができる。
【００３８】
ファイルキャッシュ２６０は、物理的容量および／またはキャッシュアダプタ２７０によって決定される制限されたサイズを有することができる。ファイルキャッシュ２６０は、どのファイルブロックをファイルキャッシュ２６０に格納するかを決定するキャッシュマネージャを含むことができる。キャッシュマネージャは、最長時間未使用（ＬＲＵ）キャッシュ置換方式を使用することができる。それ故に、ファイルキャッシュ２６０は、クライアントデバイスによって最近アクセスされたファイルブロックを含むことができる。
【００３９】
キャッシュアダプタ２７０は、ファイルキャッシュ２６０のサイズを調節するように構成された、ハードウェア、および／または機械可読記録媒体上に符号化された実行可能命令を含むことができる。キャッシュアダプタ２７０は、ファイルアクセス要求の数および頻度を含むクラウドサービス１３０の使用量を計測することができる。キャッシュアダプタ２７０は、ファイルキャッシュ２６０のサイズを調節することによってクラウドサービス１３０のコストを最小化しようと試みることができる。キャッシュアダプタ２７０は、クラウドサービス１３０のストレージコスト、処理コスト、および伝送コストを考慮することができる。キャッシュが大きいと、ストレージコストは増加するが、伝送および処理コストは減少することができる。キャッシュが小さいと、伝送および処理コストは増加するが、ストレージコストは減少することができる。ファイルキャッシュ２６０のサイズを調節する例示的な方法は、図７に関して以下で説明される。
【００４０】
図３は、ファイルブロックを格納するための例示的なデータ構造３００を示す。データ構造３００は、ファイルキャッシュ２６０などのキャッシュに格納することができるファイルブロック３１０と、データセンタ１３５ａ−ｆのチャンクストレージ２４０に格納することができるチャンク３２０ａ−ｆとを含むことができる。データ構造３００は、クラウド環境においてファイルブロックの回復力のある分配格納を行うためにどのように消失符号を使用するかを示すことができる。図示の例示的なデータ構造３００は、データセンタのうちの２つ以上が利用できない場合でさえファイルブロックを格納および回復するために使用することができる。データ構造３００は消失符号の簡単化でありうることを認識されたい。より効率的なストレージ、より多くの回復力、および／またはより少ない待ち時間を提供するために、知られている消失符号を使用することができる。
【００４１】
ファイルブロック３１０は、複数のセグメントのＡ、Ｂ、Ｃ、Ｄ、およびＥに分割することができる。チャンク３２０ａ−ｆは各々セグメントのうちの２つを含むことができる。例えば、チャンク３２０ａ−ｆは、それぞれ、セグメントの組合せ｛Ａ，Ｂ｝、｛Ｃ，Ｄ｝、｛Ｅ，Ａ｝、｛Ｂ，Ｃ｝、｛Ｄ，Ｅ｝、および｛Ｂ，Ｄ｝を含むことができる。チャンク３２０ａ−ｆの各々は別個のデータセンタ１３５ａ−ｆで格納することができる。ファイルブロック３１０は、チャンク３２０ａ−ｆのうちの任意の４つから再生成することができる。それ故に、チャンクのうちの２つが利用できない場合でさえ、ファイルブロック３１０を再生成することができる。場合によっては、ファイルブロック３１０は、３つのチャンクのみから再生成することができる。チャンク３２０ａ−ｆは、格納するのに全部で１２個のセグメントを必要とすることがある。比較すると、ファイルブロック３１０を３つのデータセンタ１３５に格納して、２つのデータセンタでの故障に対する回復力を備えることができるが、ファイルブロック３１０の３つのコピーは、格納するのに１５個のセグメントを必要とすることになる。
【００４２】
図４は、ファイルブロックを格納する例示的な方法４００を示す流れ図を示す。方法４００は、データセンタ１３５の様々な構成要素で行うことができる。方法４００はステップ４１０で始まり、ステップ４２０に進むことができる。
【００４３】
ステップ４２０において、データセンタ１３５は、ファイルブロックの格納要求をクライアントデバイス１１０から受け取ることができる。データセンタ１３５は、クライアントデバイスにとってデータセンタ１３５がプライマリデータセンタであるかどうかを決定することができる。データセンタ１３５がプライマリデータセンタでない場合、データセンタ１３５はプライマリデータセンタに要求を転送することができる。代替として、データセンタ１３５はセカンダリデータセンタとして要求を処理することができる。プライマリデータセンタが利用できない場合、データセンタ１３５は、やはり、要求を処理することができる。次に、方法はステップ４３０に進むことができる。
【００４４】
ステップ４３０において、データセンタ１３５は、受信したファイルブロックをファイルキャッシュ２６０に格納することができる。ファイルキャッシュ２６０が一杯である場合、データセンタ１３５は、キャッシュに格納されているファイルブロックを、受信したファイルブロックと取り替えることができる。ステップ４３０はオプションとすることができる。様々な代替実施形態において、データセンタ１３５は、受信したファイルブロックをファイルキャッシュ２６０に直ぐに格納できないことがある。データセンタ１３５がセカンダリデータセンタである場合、データセンタ１３５はステップ４３０を飛び越すことができる。次に、方法はステップ４４０に進むことができる。
【００４５】
ステップ４４０において、データセンタ１３５は、受信したファイルブロックからチャンクを生成することができる。データセンタ１３５は、チャンクを生成するために消失符号を使用することができる。様々な例示的な実施形態において、データセンタ１３５は、データセンタ１３５を含む利用可能なデータセンタの各々に対して１つのチャンクを生成することができる。様々な代替実施形態において、任意の数のチャンクを生成することができる。ステップ４５０において、データセンタ１３５は、チャンクを、ストレージのための他のデータセンタに分配することができる。様々な例示的な実施形態において、１つのチャンクを、プライマリデータセンタ１３５を含む各データセンタに分配することができる。様々な代替実施形態において、複数のチャンクを１つのデータセンタに分配することができ、複製のチャンクを多数のデータセンタに分配することができる。複数のチャンクのうちの少なくとも第１のチャンクおよび第２のチャンクを複数のデータセンタのうちの異なるものに分配することができる。チャンクが分配された後、ファイルブロックはクラウドサービス１３０に回復力のあるように格納されており、方法はステップ４６０に進むことができる。ステップ４６０において、方法４００は終了することができる。
【００４６】
図５は、クラウドサービスに格納されたファイルブロックを読み出す例示的な方法５００を示す流れ図を示す。方法５００は、データセンタ１３５の様々な構成要素で行うことができる。方法５００はステップ５１０で始まり、ステップ５２０に進むことができる。
【００４７】
ステップ５２０において、データセンタ１３５は、ファイルブロックの読み出し要求を受け取ることができる。データセンタ１３５は、クライアントデバイスにとってデータセンタ１３５がプライマリデータセンタであるかどうかを決定することができる。データセンタ１３５がプライマリデータセンタでない場合、データセンタ１３５はプライマリデータセンタに要求を転送することができる。代替として、データセンタ１３５はセカンダリデータセンタとして要求を処理することができる。プライマリデータセンタが利用できない場合、データセンタ１３５は、やはり、要求を処理することができる。次に、方法はステップ５３０に進むことができる。
【００４８】
ステップ５３０において、データセンタ１３５は、要求されたファイルブロックがファイルキャッシュ２６０に格納されているかどうかを決定することができる。データセンタ１３５は、ファイルブロックに対応する要求された範囲のバイトがファイルキャッシュ２６０に格納されているかどうかを決定することができる。データセンタ１３５がプライマリデータセンタでない場合、要求されたファイルブロックがファイルキャッシュ２６０に格納されていないことがある。データセンタ１３５がプライマリデータセンタである場合でさえ、要求されたファイルブロックがファイルキャッシュ２６０に格納されていないことがあり、それは、要求されたファイルブロックが最近アクセスされておらず、取り替えられているからである。要求されたファイルブロックがファイルキャッシュ２６０に格納されている場合、方法はステップ５８０に直接進むことができる。要求されたファイルブロックがファイルキャッシュ２６０に格納されていない場合、方法はステップ５４０に進むことができる。
【００４９】
ステップ５４０において、データセンタ１３５はチャンクを他のデータセンタに要求することができる。ステップ５５０において、データセンタ１３５は、要求したチャンクを他のデータセンタのうちの１つまたは複数から受け取ることができる。データセンタ１３５は、要求したチャンクを他のデータセンタのうちの１つまたは複数から受け取らないことがある。例えば、他のデータセンタが利用できない場合があり、または要求したチャンクを取り出すのに失敗した場合がある。いずれにしても、方法５００は、データセンタ１３５がチャンクのサブセットを受け取ったときにステップ５６０に進むことができる。
【００５０】
ステップ５６０において、データセンタ１３５は、要求されたファイルブロックを、受信したチャンクのサブセットから再生成することができる。データセンタ１３５は、チャンクを生成するために使用された消失符号に応じてファイルブロックを再生成することができる。組織的消失符号を使用する様々な例示的な実施形態では、ファイルブロックは、コード化されたチャンクを復号せずに符号化されていないチャンクから再生成することができる。チャンクの受け取りと、そのチャンクに基づいたファイルブロックの再生成は、データセンタ１３５の処理能力を消費することがある。要求されたファイルブロックを再生成するのに費やされる時間は、さらに、クライアントデバイス１１０の要求の遂行に待ち時間を付け加えることがある。完全なファイルブロックが再構築された後、方法５００はステップ５７０に進むことができる。
【００５１】
ステップ５７０において、データセンタ１３５は、完全なファイルブロックをファイルキャッシュ２６０に格納することができる。ファイルキャッシュ２６０が一杯である場合、データセンタ１３５は、ファイルキャッシュ２６０内の１つまたは複数の既存のファイルブロックを再生成されたファイルと取り替えることができる。ファイルブロックがファイルキャッシュ２６０に格納されると、データセンタ１３５は、ファイルブロックに関わる後続の要求により迅速に応じることができるようになる。データセンタ１３５がデータファイルにとってセカンダリデータセンタである場合、データセンタ１３５は、プライマリデータセンタのファイルキャッシュに格納するために完全なファイルブロックをプライマリデータセンタに転送することができる。次に、方法５００はステップ５８０に進むことができる。
【００５２】
ステップ５８０において、データセンタ１３５は、要求しているクライアントデバイス１１０にファイルブロックを送ることができる。クライアントデバイス１１０は要求したファイルブロックを受け取ることができる。ファイルブロックはクラウドサービス１３０に回復力のあるように格納されたままとすることができ、キャッシュされたコピーはプライマリデータセンタのファイルキャッシュに格納される。次に、方法５００はステップ５９０に進むことができ、方法５００は終了する。
【００５３】
図６は、クラウドサービス１３０に格納されているファイルブロックに書き込む例示的な方法６００を示す流れ図を示す。方法６００は、データセンタ１３５の様々な構成要素で行うことができる。方法６００はステップ６０５で始まり、ステップ６１０に進むことができる。
【００５４】
ステップ６１０において、データセンタ１３５は、クライアントデバイス１１０から要求を受け取り、クラウドサービス１３０に格納されているファイルブロックに書き込むことができる。書き込み要求は、ファイルブロックの一部を変更し、ファイルの他の部分をそのままにしておくことを含むことができる。データセンタ１３５は、クライアントデバイス１１０またはファイルにとってデータセンタ１３５がプライマリデータセンタであるかどうかを決定することができる。データセンタ１３５がプライマリデータセンタでない場合、データセンタ１３５はプライマリデータセンタに要求を転送することができる。代替として、データセンタ１３５はセカンダリデータセンタとして要求を処理することができる。プライマリデータセンタが利用できない場合、データセンタ１３５は、やはり、要求を処理することができる。データセンタ１３５は、書き込み中のファイルの破損を防止するためにジャーナリングを使用することができる。書き込み要求は、潜在的な書き込みエラーから回復させるためにジャーナルすることができる。次に、方法６００はステップ６１５に進むことができる。
【００５５】
ステップ６１５において、データセンタ１３５は、ファイルブロックがファイルキャッシュ２６０に格納されているかどうかを決定することができる。ファイルブロックは、それが最近アクセスされて読み出された場合、ファイルキャッシュ２６０に格納されていることがある。クライアントデバイス１１０は、通常、ファイルブロックを読み出した後、ファイルブロックを変更し、次に、書き込み要求を送るので、書き込み要求の対象のファイルブロックが、ファイルキャッシュ２６０に格納されていることになる可能性がある。しかし、多数のファイルがアクセスされる場合、ファイルブロックは、書き込み要求が到着する前にファイルキャッシュ２６０から除去されることがある。ファイルブロックが、現在、ファイルキャッシュ２６０に格納されている場合、方法６００はステップ６４０に進むことができる。ファイルブロックが、現在、ファイルキャッシュ２６０に格納されていない場合、方法６００はステップ６２０に進むことができる。
【００５６】
ステップ６２０において、データセンタ１３５はチャンクを他のデータセンタに要求することができる。書き込み要求がチャンクのサブセットにのみ影響を与える場合、データセンタ１３５は影響されるチャンクのみを要求することができる。次に、方法６００はステップ６２５に進むことができ、データセンタ１３５は要求したチャンクを受け取ることができる。例えば、他のデータセンタが停電のために利用できない場合、データセンタ１３５は別のデータセンタからチャンクを受け取らない場合がある。チャンクのサブセットが受け取られた後、方法６００はステップ６３０に進むことができる。
【００５７】
ステップ６３０において、データセンタ１３５は、要求されたファイルブロックを、受信したチャンクのサブセットから再生成することができる。データセンタ１３５は、チャンクを生成するために使用された消失符号に応じてファイルブロックを再生成することができる。チャンクの受け取りと、そのチャンクに基づいたファイルブロックの再生成は、データセンタ１３５の処理能力を消費することがある。要求されたファイルブロックを再生成するのに費やされる時間は、さらに、クライアントデバイス１１０の要求の遂行に待ち時間を付け加えることがある。完全なファイルブロックが再構築された後、方法６００はステップ６３５に進むことができる。
【００５８】
ステップ６３５において、データセンタ１３５は、完全なファイルブロックをファイルキャッシュ２６０に格納することができる。ファイルキャッシュが一杯である場合、データセンタ１３５は、ファイルキャッシュ２６０内の１つまたは複数の既存のファイルブロックを再生成されたファイルブロックと取り替えることができる。ファイルブロックがファイルキャッシュ２６０に格納されると、データセンタ１３５は、ファイルに関わる後続の要求により迅速に応じることができるようになる。データセンタ１３５がデータファイルにとってセカンダリデータセンタである場合、データセンタ１３５は、プライマリデータセンタのファイルキャッシュに格納するために完全なファイルブロックをプライマリデータセンタに転送することができる。次に、方法６００はステップ６４０に進むことができる。
【００５９】
ステップ６４０において、データセンタ１３５は、書き込み要求によって要求された通りにファイルブロックに書き込むことによって、格納されているファイルブロックを更新することができる。データセンタ１３５は、ファイルブロックに書き込むときファイルを開けることができる。書き込み要求は、ファイルブロックの任意の一部分またはファイル全体を変更または取り替えることができる。データセンタ１３５は、ファイルキャッシュ２６０に格納されたファイルブロックのコピーを変更することができる。データセンタ１３５が書き込み要求を処理し、ファイルブロックを更新した後、方法６００はステップ６４５に進み、データセンタ１３５はファイルを閉じることができる。ファイルを閉じると、ファイルのさらなる変更を防止することができる。データセンタ１３５は、ファイルを閉じるときファイルサイズ、変更期日、著者などのような属性を決定することもできる。次に、方法６００はステップ６５０に進むことができる。
【００６０】
ステップ６５０において、データセンタ１３５は、消失符号に従って、更新されたファイルブロックからチャンクを生成することができる。様々な例示的な実施形態において、チャンクは、ファイルブロックの変更された部分のみに基づいて生成することができる。いくつかのチャンクは変更によって変わらないことがある。様々な代替実施形態において、ステップ６５０は、ファイルブロックがファイルキャッシュ２６０において今にも取り替えられようとするまで遅延されることがある。次に、方法６００はステップ６５５に進むことができる。
【００６１】
ステップ６５５において、データセンタ１３５は、変更されたチャンクを他のデータセンタに分配することができる。データセンタ１３５は、変更されたチャンクのみを分配することができる。データセンタ１３５は、別のデータセンタに格納されているチャンクが変更されなかった場合、時間コストおよび通信コストを節約することができる。変更されたチャンクが分配された後、変更されたファイルブロックはクラウドサービス１３０に回復力のあるように格納することができ、方法６００はステップ６６０に進むことができ、方法６００は終了する。
【００６２】
図７は、キャッシュのサイズを調節する例示的な方法７００を示す流れ図を示す。方法７００を、データセンタ１３５、またはクライアントデバイス１１０などの他のコンピュータで使用して、多数のファイルをクラウドサービス１３０に格納するコストを最小にすることができる。方法７００は、キャッシュサイズを調節して効率的にファイルを格納し、要求を処理することによって、クラウドサービス１３０のコストを最小にするように試みることができる。方法７００は、実際のコストと仮定のコストとを見積もり、次に、コストのかからない方向に向けてキャッシュサイズを調節することができる。方法７００を繰り返し行って、キャッシュサイズを継続的に調節することができる。方法７００はステップ７０５で始まり、ステップ７１０に進むことができる。
【００６３】
ステップ７１０において、データセンタ１３５またはクライアントデバイス１１０は、ある時間間隔の間のクラウドサービス１３０の実際のコストを見積もることができる。クラウドサービス１３０のコストは様々な関数で見積もることができる。コスト関数は、例えば、データ記憶量、キャッシュサイズ、要求の数、データセンタ間転送量、およびデータセンタ処理量などの様々なパラメータに依存しうる。例えば、方法７００がクラウドサービス顧客によって行われる場合、コストはクラウドサービスプロバイダによって課金される量で見積もることができる。別の例として、方法７００がクラウドサービスプロバイダによって行われる場合、プロバイダはクラウドサービス１３０によって使用されるシステムリソースごとに価値を査定することができる。様々な例示的な実施形態において、キャッシュサイズは、データ記憶量と同じように重み付けすることができる。コストは、顧客当たり、データセンタ当たり、および／またはサービス全体ベース（ｓｅｒｖｉｃｅ  ｗｉｄｅ  ｂａｓｉｓ）の基準で決定することができる。任意の時間間隔を使用することができる。見積もられる支払い請求周期に等しい時間間隔が好適でありうる。例えば、顧客が毎日のデータ記憶量に対して課金される場合、１日の時間間隔が適切となりうる。次に、方法７００はステップ７１５に進むことができる。
【００６４】
ステップ７１５において、データセンタ１３５またはクライアントデバイス１１０は、クラウドサービス１３０の仮定のコストを決定することができる。仮定のコストは異なるキャッシュサイズに基づくことができる。様々な例示的な実施形態において、仮定のコストは以前のキャッシュサイズに基づくことができる。仮定のコストを見積もるのに使用される関数は、実際のコストを見積もるのに使用される関数と同一とすることができる。それ故に、ステップ７１５はステップ７１０と同様とすることができる。ステップ７１０および７１５は任意の順序で行うことができる。次に、方法はステップ７２０に進むことができる。
【００６５】
ステップ７２０において、データセンタ１３５またはクライアントデバイス１１０は、ステップ７１０で見積もられた実際のコストがステップ７１５で決定された仮定のコストよりも大きいかどうかを決定することができる。実際のコストが仮定のコストよりも大きい場合、方法はステップ７３０に進むことができる。仮定のコストが実際のコストよりも大きい場合、方法はステップ７２５に進むことができる。
【００６６】
ステップ７２５において、データセンタ１３５またはクライアントデバイス１１０は、現在のキャッシュサイズが、仮定のコストを決定するのに使用された古いキャッシュサイズよりも大きいかどうかを決定することができる。現在のキャッシュサイズの方が大きい場合、方法７００はステップ７３５に進むことができる。古いキャッシュサイズの方が大きい場合、方法はステップ７４０に進むことができる。
【００６７】
ステップ７３０において、データセンタ１３５またはクライアントデバイス１１０は、現在のキャッシュサイズが、仮定のコストを決定するのに使用された古いキャッシュサイズよりも大きいかどうかを決定することができる。現在のキャッシュサイズの方が大きい場合、方法７００はステップ７４５に進むことができる。古いキャッシュサイズの方が大きい場合、方法７００はステップ７３５に進むことができる。言い換えれば、ステップ７３０はステップ７２５と類似しているが、逆の結果を伴う。
【００６８】
ステップ７３５において、データセンタ１３５はキャッシュサイズを増加させることができる。データセンタ１３５は、特定の顧客のためのキャッシュサイズまたはすべての顧客のためのキャッシュサイズを増加させることができる。データセンタ１３５は、さらに、他のデータセンタがキャッシュサイズを増加させるべきであることを指示することができる。増加のサイズは変わることができる。様々な例示的な実施形態において、キャッシュサイズは１ギガバイト増加させることができる。次に、方法７００はステップ７５０に進むことができ、方法７００は終了する。
【００６９】
ステップ７４０および７４５は同一とすることができる。ステップ７４０および／または７４５において、データセンタ１３５はキャッシュサイズを減少させることができる。データセンタ１３５は、特定の顧客のためのキャッシュサイズまたはすべての顧客のためのキャッシュサイズを減少させることができる。データセンタ１３５は、さらに、他のデータセンタがキャッシュサイズを減少させるべきであることを指示することができる。減少のサイズは変更することができる。様々な例示的な実施形態において、キャッシュサイズは１ギガバイト減少させることができる。次に、方法７００はステップ７５０に進むことができ、方法７００は終了する。
【００７０】
前述によれば、様々な例示的な実施形態は、クラウドコンピューティングのための方法およびファイルシステムを可能にする。特に、ファイルチャンクを分配し、ファイルキャッシュをデータセンタに備えることによって、高い回復力および短い待ち時間の目標を低コストで満たすことができる。
【００７１】
本発明の様々な例示的な実施形態はハードウェアおよび／またはファームウェアで実施することができることが前述の説明から明らかである。さらに、様々な例示的な実施形態は、本明細書で詳細に説明した動作を行うために少なくとも１つのプロセッサによって読み出されて実行されうる機械可読記録媒体に格納された命令として実施することができる。機械可読記録媒体は、パーソナルコンピュータもしくはラップトップコンピュータ、サーバ、または他のコンピューティングデバイスなどの機械によって読み出し可能な形態で情報を格納するための任意の機構を含むことができる。したがって、機械可読記録媒体は、読出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記録媒体、光記録媒体、フラッシュメモリデバイス、および類似の記録媒体を含むことができる。
【００７２】
本明細書のいかなるブロック図も本発明の原理を具現する例示的な回路の概念図を表していることを当業者は理解されたい。同様に、任意の流れ図（ｆｌｏｗ  ｃｈａｒｔ）、フローダイアグラム（ｆｌｏｗ  ｄｉａｇｒａｍ）、状態遷移図、擬似コードなどは、機械可読媒体中に実質的に表すことができ、そのため、コンピュータまたはプロセッサが明示的に示されているかどうかにかかわらずそのようなコンピュータまたはプロセッサによって実行されうる様々なプロセスを表すことが理解されよう。
【００７３】
様々な例示的な実施形態がそのいくつかの例示的な態様を特に参照して詳細に説明したが、本発明は他の実施形態が可能であり、その詳細は様々な明白な点で変更が可能であることを理解されたい。当業者には容易に明らかであるように、本発明の趣旨および範囲内にとどまりながら変形および変更を実施することができる。それ故に、前述の開示、説明、および図は、例示目的のためだけのものであり、本発明を決して限定するものではなく、本発明は特許請求の範囲によってのみ定義される。
【図１】
2015509244.tif 000003
【図２】
2015509244.tif 000004
【図３】
2015509244.tif 000005
【図４】
2015509244.tif 000006
【図５】
2015509244.tif 000007
【図６】
2015509244.tif 000008
【図７】
2015509244.tif 000009
【国際調査報告】
2015509244.tif 000010
2015509244.tif 000011
2015509244.tif 000012