(57)【要約】  本開示の実装形態は、記憶システムを管理するためのシステムおよび／または方法、より具体的には、入出力要求を処理する際の大きな遅延を回避するためにストレージデバイスに対する入力／出力（入出力）要求を外部で管理するためのシステムおよび／または方法を含む。管理システムは、システムに関連付けられたストレージデバイスのうちの１つ以上に対する入出力要求キューを保持してもよい。システムは、キューの先頭にあるストレージデバイスに対する入出力要求の順序値とキューの末尾にあるものとの差を算出してもよい。算出された差が閾値を上回っている場合、ストレージデバイスに対する新しい入出力要求はキューに追加されないまたはストレージデバイスに送信されない。このように、管理システムは、処理されずにしばらくの間キューに格納されている入出力要求を処理するよう、ストレージデバイスを強制してもよい。
2019525349.tif 000002
【特許請求の範囲】
【請求項１】
ストレージプールを管理するための方法であって、
ストレージデバイスに向けられた１つ以上の入力／出力（入出力）要求を含んだキューを保持するステップを含み、各入出力要求は、その入出力要求がストレージ管理システムで受信された順を示す順序値を含み、前記方法は、さらに、
前記キューに含まれる第１の入出力要求に関連付けられた第１の順序値と前記キューに含まれる第２の入出力要求に関連付けられた第２の順序値との差を算出するステップと、
前記第１の順序値と前記第２の順序値との前記算出された差を前記閾値と比較するステップと、
前記第１の順序値と前記第２の順序値との前記算出された差が前記閾値以下である場合、前記１つ以上の入出力要求を含んだキューから少なくとも１つの入出力要求を前記ストレージデバイスに送信するステップとを含む、方法。
【請求項２】
前記キューに含まれる前記第１の入出力要求は、前記キューの先頭に位置し、前記第２の入出力要求は、前記キューの末尾に位置する、請求項１に記載の方法。
【請求項３】
前記ストレージデバイスに対する新しい入出力要求を受信するステップと、
前記ストレージデバイスに対する新しい入出力要求に新しい順序値を関連付けるステップと、
前記新しい入出力要求と前記新しい順序値とを前記キューの末尾に追加するステップとをさらに含む、請求項１に記載の方法。
【請求項４】
前記ストレージデバイスから完了指示を受信するステップと、
前記キューから対応する入出力要求を削除するステップとをさらに含む、請求項１に記載の方法。
【請求項５】
前記ストレージデバイスは、前記ストレージ管理システムと通信しているストレージデバイスを含んだプールの一部である、請求項１に記載の方法。
【請求項６】
前記ストレージデバイスを含んだプールに含まれる第２のストレージデバイスに向けられた１つ以上の入力／出力（入出力）要求を含む第２キューを保持するステップをさらに含み、前記第２キューが含む前記入出力要求の各々は、前記第２のストレージデバイスに対する前記入出力要求が前記ストレージ管理システムで受信された順を示す順序値を含む、請求項５に記載の方法。
【請求項７】
前記キューから前記少なくとも１つの入出力要求を送信するステップは、前記少なくとも１つの入出力要求を処理するための容量の指示を前記ストレージデバイスから受信した際に発生する、請求項１に記載の方法。
【請求項８】
前記閾値は、少なくとも、前記ストレージデバイスからの同時の入出力要求について判断された容量値に基づく、請求項１に記載の方法。
【請求項９】
前記閾値は、前記ストレージデバイスからの同時の入出力要求について判断された容量値に係数を乗算したものに等しい、請求項８に記載の方法。
【請求項１０】
前記ストレージ管理システムは、大規模ストレージアプライアンス用のファイルシステムを含む、請求項１に記載の方法。
【請求項１１】
マシン上のコンピュータ処理を実行するためのコンピュータによって実行可能な命令を格納した１つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体であって、前記コンピュータ処理は、
ストレージデバイスに向けられた１つ以上の入力／出力（入出力）要求を含んだキューを管理することを含み、各入出力要求は、その入出力要求がストレージ管理システムで受信された順を示す順序値を含み、前記コンピュータ処理は、さらに、
前記キューに含まれる第１の入出力要求に関連付けられた第１の順序値と前記キューに含まれる第２の入出力要求に関連付けられた第２の順序値との差を判断することを含み、前記第１の入出力要求は、前記第２の入出力要求よりも前に前記ストレージ管理システムで受信されており、前記コンピュータ処理は、さらに、
前記第１の順序値と前記第２の順序値との前記算出された差を閾値と比較することと、
前記第１の順序値と前記第２の順序値との前記算出された差が前記閾値以下である場合、前記１つ以上の入出力要求を含んだキューから少なくとも１つの入出力要求を前記ストレージデバイスに送信することとを含む、１つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体。
【請求項１２】
前記キューに含まれる前記第１の入出力要求は、前記キューの先頭に位置し、前記第２の入出力要求は、前記キューの末尾に位置する、請求項１１に記載の１つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体。
【請求項１３】
前記コンピュータ処理は、
前記ストレージデバイスに対する新しい入出力要求を受信することと、
前記ストレージデバイスに対する新しい入出力要求に新しい順序値を関連付けることと、
前記新しい入出力要求と前記新しい順序値とを前記キューの末尾に追加することとをさらに含む、請求項１１に記載の１つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体。
【請求項１４】
前記コンピュータ処理は、
前記ストレージデバイスから完了指示を受信することと、
前記キューから対応する入出力要求を削除することとをさらに含む、請求項１１に記載の１つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体。
【請求項１５】
前記ストレージデバイスは、前記ストレージ管理システムと通信しているストレージデバイスを含んだプールの一部である、請求項１１に記載の１つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体。
【請求項１６】
前記コンピュータ処理は、
前記ストレージデバイスを含んだプールに含まれる第２のストレージデバイスに向けられた１つ以上の入力／出力（入出力）要求を含む第２キューを保持することをさらに含み、前記第２キューが含む前記入出力要求の各々は、前記第２のストレージデバイスに対する前記入出力要求が前記ストレージ管理システムで受信された順を示す順序値を含む、請求項１５に記載の１つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体。
【請求項１７】
前記キューから前記少なくとも１つの入出力要求を送信するステップは、前記少なくとも１つの入出力要求を処理するための容量の指示を前記ストレージデバイスから受信した際に発生する、請求項１１に記載の１つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体。
【請求項１８】
前記閾値は、少なくとも、前記ストレージデバイスからの同時の入出力要求について判断された容量値に基づく、請求項１１に記載の１つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体。
【請求項１９】
前記閾値は、前記ストレージデバイスからの同時の入出力要求について判断された容量値に係数を乗算したものに等しい、請求項１８に記載の１つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体。
【請求項２０】
前記ストレージ管理システムは、大規模ストレージアプライアンス用のファイルシステムを含む、請求項１１に記載の１つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１６年８月１７日に出願され、「ＥＸＴＥＲＮＡＬＬＹ  ＭＡＮＡＧＥＤ  Ｉ／Ｏ  ＳＴＡＲＶＡＴＩＯＮ  ＡＶＯＩＤＡＮＣＥ  ＩＮ  Ａ  ＣＯＭＰＵＴＩＮＧ  ＤＥＶＩＣＥ（コンピューティングデバイスにおける、外部で管理される入出力のスタベーションの回避）」と題された米国通常出願第１５／２３９，３９６号に基づく優先権の利益を主張し、そのすべての記載内容を、あらゆる目的のために引用により本明細書に援用する。
【０００２】
開示の分野
本発明の態様は、コンピューティングシステムに関し、より具体的には、本発明の態様は、ストレージデバイスに提供された入力／出力（入出力）要求のいずれもかなりの時間待ち状態にならないよう、入出力要求を監視および制御するためのシステムおよび／または方法に関係する。
【背景技術】
【０００３】
背景
絶え間ないインターネットの拡大、企業コンピューティンネットワークおよびシステムの拡大および高度化、インターネット上で格納され、かつアクセス可能なコンテンツの急増、および数多くのその他の要因によって、大規模の高度なデータ記憶システムが必要な状態が続いている。その結果、データストレージの需要が増加し続けて、より大規模かつより高度な記憶システムが設計および開発されている。多くの大規模データ記憶システムは、記憶媒体のアレイを備えたストレージアプライアンスを利用している。通常、これらの記憶システムは、ファイルを格納するおよびファイルにアクセスするためのファイルシステムを備える。システムファイル（たとえば、オペレーティングシステムファイル、デバイスドライバファイルなど）を格納することに加えて、ファイルシステムは、ユーザデータファイルのストレージとアクセスとを提供する。ユーザがファイルにアクセスするために、このファイルに関連付けられたデータブロックを、記憶システムに関連付けられた複数のストレージデバイスから取り出すための１つ以上の入力／出力（入出力）要求が生成される。
【０００４】
多くの場合、記憶システムが使用するストレージデバイスは、とても多くの入出力要求を処理するだけでよい。たとえば、ストレージデバイスは、装置自体によって、または記憶システムの管理ソフトウェアによって、１０個の入出力要求に制限され得る。さらには、入出力要求は、受信された順に完了または処理（service）されない場合がある。むしろ、多くのストレージデバイスは、ストレージデバイスに対する物理的な需要を低減させることができる順で入出力要求を処理することによって、データブロックを取り出す効率を最大限にしようと試みる。たとえば、ストレージデバイスに対する入出力要求を処理するとき、ディスクドライブ上のディスクヘッドの移動および現在の位置が考慮され得る。このように、ストレージデバイスが記憶媒体に格納されているデータブロックを取り出すので、特定の入出力要求の完了が遅延してしまう可能性がある。これにより、入出力要求の処理が大幅に遅延または減速する結果となり、記憶システムの性能に悪影響を与えてしまう可能性がある。
【０００５】
これらのおよびその他の問題を念頭において、本開示の様々な態様が開発された。
【発明の概要】
【課題を解決するための手段】
【０００６】
概要
本開示の一実装形態は、ストレージプールを管理するための方法という形をとってもよい。この方法は、ストレージデバイスに向けられた１つ以上の入力／出力（入出力）要求を含んだキューを保持する動作を含み、キューの入出力要求の各々は、入出力要求がストレージ管理システムで受信された順を示す順序値を含み、方法は、さらに、キューに含まれる第１の入出力要求に関連付けられた第１の順序値とキューに含まれる第２の入出力要求に関連付けられた第２の順序値との差を算出する動作を含む。これに加えて、方法は、算出された第１の順序値と第２の順序値との差を閾値と比較する動作と、算出された第１の順序値と第２の順序値との差が閾値以下である場合、１つ以上の入出力要求を含んだキューから少なくとも１つの入出力要求をストレージデバイスに送信する動作とを含んでもよい。
【０００７】
本開示の別の実装形態は、マシン上でコンピュータ処理を実行するためのコンピュータによって実行可能な命令を格納した、１つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体の形をとってもよい。このコンピュータ処理は、ストレージデバイスに向けられた１つ以上の入力／出力（入出力）要求を含んだキューを管理する動作を含んでもよく、キューの入出力要求の各々は、入出力要求がストレージ管理システムで受信された順を示す順序値を含み、コンピュータ処理は、さらに、キューに含まれる第１の入出力要求に関連付けられた第１の順序値とキューに含まれる第２の入出力要求に関連付けられた第２の順序値との差を判断する動作を含み、第１の入出力要求は、第２の入出力要求よりも前にストレージ管理システムで受信されている。また、コンピュータ処理は、第１の順序値と第２の順序値との算出された差を閾値と比較することと、第１の順序値と第２の順序値との算出された差が閾値以下である場合、１つ以上の入出力要求を含んだキューから少なくとも１つの入出力要求をストレージデバイスに送信することとを含んでもよい。
【図面の簡単な説明】
【０００８】
【図１】１つ以上のストレージデバイスからのデータにアクセスするように構成された記憶システムの例を示す図である。
【図２】外部で管理される入出力要求システムおよび方法を実施するネットワークファイルシステムの例を示す図である。
【図３】記憶システムのストレージデバイスのキューを管理するための方法のフローチャートである。
【図４】入出力要求のスタベーションを防ぐために記憶システムのストレージデバイスに対する入出力要求を外部で管理するための方法のフローチャートである。
【図５】図５Ａ〜図５Ｇは、ストレージデバイスに対する入出力要求のスタベーションを防ぐための、ストレージデバイスに対する入出力要求のキューを示す図である。
【図６】今回開示する技術の様々なシステムおよび方法を実施し得るコンピューティングシステムの例を示す図である。
【発明を実施するための形態】
【０００９】
詳細な説明
本開示の実装形態は、記憶システムを管理するためのシステムおよび／または方法、より具体的には、入出力要求を処理する際の大きな遅延を回避するためにストレージデバイスに対する入力／出力（入出力）要求を外部で管理するためのシステムおよび／または方法に関係する。一実施形態では、システムおよび方法は、管理ソフトウェア、デバイス、または、複数のストレージデバイスを有する大型記憶システムであってもよい。管理方法は、システムに関連付けられたストレージデバイスのうちの１つ以上に対する入出力要求キューを保持してもよい。各キューは、入出力要求がストレージデバイスに提供された順に対応する値を含んでもよく、入出力要求は、順序値によってキュー内に配置されてもよい。たとえば、キューの先頭は、最小順序値を有する、ストレージデバイスに対する入出力要求を含んでもよく、キューの末尾は、最高順序値を有する入出力要求を含んでもよい。さらには、記憶システム管理方法は、ストレージデバイスに対する同時の入出力要求についての閾値に基づいて、キューに入力される入出力要求の数を制限してもよい。ストレージデバイスによって入出力要求が処理または完了されると、関連するキューに含まれる関連する入出力要求がキューから削除されてもよい。
【００１０】
これに加えて、管理システムは、ストレージデバイスに対する入出力要求のいずれも大幅に遅延しないようにしてもよい。一実施形態では、システムは、キューの先頭にある入出力要求の順序値とキューの末尾にある入出力要求の順序値との差を算出してもよい。算出された差が閾値を上回っている場合、ストレージデバイスに対する新しい入出力要求は、キューに追加されないまたはストレージデバイスに送信されない。一般に、算出された差が閾値内に収まるまで、キューには入出力要求が追加されない。このように、管理システムは、処理されずにしばらくの間キューに格納されている入出力要求を処理するよう、ストレージデバイスを強制してもよい。また、入出力要求のスタベーション（枯渇状態）の回避は、ストレージデバイスの外部で管理システムによって制御される。よって、管理システムは、枯渇状態の要求が処理されるまでデバイスに対する新しい入出力要求を保留することによって要求の完了が遅延することを回避することについて、ストレージデバイス自体よりも積極的であってもよい（すなわち、ストレージデバイスに対する要求の処理がより短い間遅延することを受け付けてもよい）。
【００１１】
要求のスタベーションを外部で管理するために１つ以上のストレージデバイスに対する１つ以上の入出力要求キューを保持しつつ、１つ以上のストレージデバイスからのデータにアクセスするように構成された例示的な記憶システム１００の詳細な説明を始めるために、図１を参照する。図１から理解できるように、例示的な記憶システム１００は、１つ以上のストレージデバイス１０２〜１０４を備える。１つ以上のストレージデバイス１０２〜１０４は、各々、記憶媒体１０６〜１０８上のデータの格納を管理する。管理は、媒体（たとえば、ディスクドライブ）、および固体メモリなど様々な形の永続メモリを回転させることを含み得る。一実施形態では、ストレージデバイス１０２〜１０４は、各々、クイックアクセスが必要なデータはスピードのより早い記憶媒体（たとえば、１つ以上のレベルのキャッシュメモリ）に格納されて、他の媒体はディスクドライブなど、スピードのより遅い記憶媒体に格納される階層構造に、データを格納してもよい。
【００１２】
１つ以上のストレージデバイス１０２〜１０４を有する記憶システムを参照して本明細書において説明しているが、ストレージデバイスに対する入出力要求を外部で管理するためのシステム、方法、および／またはプログラムは、データをストレージデバイスに格納する任意のコンピューティングデバイスのために利用されてもよいことがわかる。たとえば、システムおよび方法は、自身のメモリコンポーネントにデータを格納するコンピュータにおいて利用されてもよい。よって、一例では、システムおよび方法は、データを１つのメモリデバイスに格納するコンピューティングデバイスによって利用される。その他の例では、システムおよび方法は、いくつかのストレージデバイスを備えたシステムにおいて利用される。一般に、このシステムは、受信した入出力要求を再編成し得る１つ以上のストレージデバイスにデータを格納する任意のコンピューティングデバイスのために使用されてもよい。しかしながら、わかりやすくするために、ストレージデバイスに対する入出力要求を外部で管理するためのシステムおよび方法を、図１に示すような記憶システムと関係して、本明細書において説明する。
【００１３】
図１の例示的なシステム１００に戻ると、ストレージデバイス１０２〜１０４は、ストレージアプライアンスであってもよい。ストレージアプライアンスは、クライアントネットワーク上の１つ以上のユーザデバイス１１２〜１１４にネットワーク１１０を通じたデータアクセスを提供するファイルレベルのストレージサーバを含むが、これに限定されない。このようなストレージアプライアンスは、たとえば、データ完全性の検証ならびに修復、および大きな記憶容量を可能し、かつ、数多くの他の特徴および利点を有する、サンマイクロシステムズ（登録商標）によって２００５年に設計され、現在ではＯｒａｃｌｅ（登録商標）によって展開および発展されている複合型ファイルシステム／ボリュームマネージャであるＺＦＳストレージアプライアンスであってもよい。ＺＦＳストレージアプライアンスを背景に本明細書において説明するが、ストレージデバイス１０２〜１０４は、各々、任意の種類のストレージアプライアンス管理ソフトウェアを有する任意の種類のストレージデバイスであってもよいことがわかるだろう。
【００１４】
一実装形態では、ストレージネットワーク上のストレージデバイス１０２〜１０４は、ネットワーク１１０を通じてクライアントネットワーク上のユーザデバイス１１２〜１１４によってアクセス可能であってもよい。しかしながら、様々なネットワークが統合ネットワークを含んでもよく、本明細書において説明するネットワーク間の接続は、１つの可能なネットワークトポロジーを表しているにすぎないことがわかるだろう。また、大規模なプライベートの企業ネットワークまたはインターネットなどと同様に、当該様々なネットワークは、現実には局所的に存在していてもよく、または、地理的に分散していてもよい。ユーザデバイス１１２〜１１４は、一般に、端末、ワークステーション、パーソナルコンピュータ、ポータブルコンピュータ、携帯電話、モバイル機器、タブレット、マルチメディアコンソールなど、ネットワーク１１０とやり取りすることができる任意の形のコンピューティングデバイスである。いくつかの実装形態では、クライアントネットワークは、たとえば、ビジネスユーザインタフェース（ＢＵＩ：Ｂｕｓｉｎｅｓｓ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）など、１つ以上のユーザインタフェースを含み、ユーザがストレージデバイスとやり取りしてデータにアクセスすることを可能にする。
【００１５】
ＺＦＳベースのシステムは、記憶媒体１０６〜１０８など、ブロックデバイスから構成される仮想装置（ｖｄｅｖｓ）からなる１つ以上のストレージプール（「ｚｐｏｏｌｓ」と呼ばれることが多い）を有するストレージプール層を利用する。ブロックデバイスは、データをブロックの形で移動させる任意のデバイスであり、ハードディスクドライブ、ソリッドステートドライブ、光学ドライブ、磁気ドライブ、およびその他のアドレス指定可能なメモリの領域であってもよいが、これらに限定されない。仮想装置が複数のブロックデバイスまたはボリュームをまたいでもよく、ストレージプールが、記憶媒体の１つ以上のパーティションまたは１つ以上の記憶媒体を各々が備える１つ以上の仮想装置を含んでもよい。
【００１６】
ストレージデバイス１０２〜１０４を行き来するトラフィックは、通常、ストレージデバイス１０２〜１０４またはストレージネットワーク内に位置する１つ以上の専用ストレージサーバによって管理される。ストレージアプライアンスがファイル、ディレクトリ、および関連付けられたメタデータを含むコンテンツにアクセスするために採用する共通プロトコルは、ネットワークファイルシステム（ＮＦＳ）である。ＮＦＳは、もともとサンマイクロシステムズ（登録商標）によって１９８４年に開発され、現在はＯｒａｃｌｅ（登録商標）からバージョン４（ＮＦＳｖ４）が出ている、広く使われている分散ファイルシステムプロトコルである。ユーザデバイス１１２〜１１４が、ファイルの作成および削除、ファイルの読み出しおよび書き込み、ファイル内でのシークの実行、ディレクトリの作成および削除、ディレクトリコンテンツの管理、ならびにその他のファイル、ディレクトリ、またはコンテンツの操作を実行することを可能にするプログラミングインタフェースを提供することによって、ＮＦＳは、クライアントネットワークが格納データにシームレスにアクセスすることを可能にする。ユーザデバイス１１２〜１１４が利用するオペレーティングシステムは、ＮＦＳプログラミングインタフェースと通信を行って、ストレージデバイス１０２〜１０４にあるデータを用いた、動作中のアプリケーション間のやり取り、およびファイルシステムを管理するように構成される。一般に、ＮＦＳシステムは、ファイルシステムのメタデータを管理し、ファイルおよびディレクトリへのアクセスを提供する。メタデータは、ファイルおよびディレクトリの記憶媒体１０６〜１０８上の位置を記述する。
【００１７】
図２を参照すると、外部で管理される入出力要求システムおよび方法を実施する例示的なファイルシステム２００を示す。一実装形態では、システム２００は、オペレーティングシステム２０４とインターフェース接続されたアプリケーション２０２を含む。オペレーティングシステム２０４は、ストレージプール２１８とインターフェース接続されたファイルシステム２０６とやり取りするための機能を含む。オペレーティングシステム２０４は、通常、システムコールインタフェース２０８を介してファイルシステム２０６とインターフェース接続される。オペレーティングシステム２０４は、ユーザがファイルシステム２０６内のファイルにアクセスするための動作を提供する。これらの動作は、読み出し、書き込み、開く、閉じるなどを含む。一実装形態では、ファイルシステム２０６は、オブジェクトベースのファイルシステムである（すなわち、データおよびメタデータがオブジェクトとして格納される）。より具体的には、ファイルシステム２０６は、データおよび対応するメタデータをストレージプール２１８に格納するための機能を含む。
【００１８】
一実装形態では、ストレージプール２１８は、ストレージデバイス２２０〜２２０Ｎを備える。ストレージデバイスは、データを移動および格納する任意の装置であり、ハードディスクドライブ、ソリッドステートドライブ、光学ドライブ、磁気ドライブ、およびその他のアドレス指定可能なメモリの領域であってもよいが、これらに限定されない。一般に、ストレージプール２１８は、ファイルシステム２０６からストレージプールに送信されたデータを格納するためのブロックデバイス２２０〜２２０Ｎとして、１つ以上の物理的な記憶ドライブまたはディスクを備える。
【００１９】
一実装形態では、オペレーティングシステム２０４が提供する動作は、オブジェクトに対する動作に対応する。言い換えると、特定の動作（すなわち、トランザクション）を行う要求がオペレーティングシステム２０４からシステムコールインタフェース２０８を介してデータ管理部（Ｄａｔａ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）（図示せず）に転送される。一実装形態では、ＤＭＵが、オブジェクトに対して動作を直接行う要求を、ストレージプール２１８内の物理的位置で読み出し動作を行う要求（すなわち、入出力要求）に変換する。ストレージプールアロケータ（ＳＰＡ：Ｓｔｏｒａｇｅ  Ｐｏｏｌ  Ａｌｌｏｃａｔｏｒ）２１２がＤＭＵから要求を受信し、ストレージプール２１８からブロックを読み出す。一実装形態では、ＳＰＡ２１２は、入出力レイヤ２１６とその他のモジュールとを備え、これらは、ストレージプール２１８からデータを読み出すためにＳＰＡ２１２によって使用されてもよい。一実装形態では、入出力レイヤ２１６は、入出力要求を受信し、入出力要求を処理するためにトランザクション群にグループ分けする。
【００２０】
具体的な一実装形態では、ファイルシステム２０６は、ストレージプール２１８のストレージデバイス２２０〜２２０Ｎに送られた各入出力要求を監視および追跡するためのプログラムまたはその他の方法を含む。よって、本明細書に記載の方法および動作は、図２のファイルシステム２０６によって実行されてもよい。このような方法および動作は、１つ以上のソフトウェアプログラムの実行によって、１つ以上のハードウェアコンポーネントによって、またはソフトウェアプログラムとハードウェアコンポーネントとの組み合わせによって実行されてもよい。しかしながら、他の実施形態では、方法および動作は、データの入出力要求が送信され得る任意のコンピューティングデバイスまたは記憶システムの構成要素によって実行されてもよい。たとえば、本明細書に記載の方法を実行するために、第２のアプリケーションがオペレーティングシステム２０４によって実行されてもよい。一般に、任意のコンピューティングデバイスまたはコンピューティングデバイスの構成要素が本明細書に含まれる動作および方法を実行してもよい。
【００２１】
上述したように、ストレージプール２１８のストレージデバイス２２０〜２２０Ｎ上のデータを取り出すまたはストレージデバイス２２０〜２２０Ｎ上にデータを格納するために、オペレーティングシステム２０４が提供する動作は、ファイルシステム２０６に送信される。次に、データを格納および／または取り出すために、これらの入出力要求がファイルシステム２０６によってストレージプールの適切なストレージデバイス２２０〜２２０Ｎに送信される。よって、ファイルシステム２０６は、どのストレージデバイスまたはデバイス２２０〜２２０Ｎが要求されたデータを含むのかを理解し、かつ、適切な入出力要求を提供することによって、各入出力要求を管理する。さらには、多くのストレージデバイス２２０〜２２０Ｎは、デバイスが同時に処理できる入出力要求の数が限られている。たとえば、いくつかのストレージデバイス２２０〜２２０Ｎは、そのデバイスの入出力要求キューが一杯であることをファイルシステム２０６に通知する前に、１度に１０個の入出力要求しか処理しないかもしれない。また、入出力要求を処理または完了すると、ストレージデバイス２２０〜２２０Ｎは、要求が完了したというなんらかの指示、および別の入出力要求がストレージデバイスに送信されてもよいという指示をファイルシステム２０６に提供してもよい。このように、ファイルシステム２０６（または、記憶システム２００の他の構成要素）は、ストレージプール２１８のストレージデバイス２２０〜２２０Ｎに対する入出力要求のためのゲートウェイとして機能する。
【００２２】
上述したように、多くのストレージデバイス２２０〜２２０Ｎは、いくつかの入出力要求を履行することを遅延させるメカニズムまたはプロシージャを採用してもよい。たとえば、ディスクドライブのディスクヘッドの位置、およびディスクドライブ上の要求されたデータの位置によっては、いくつかのストレージデバイス２２０〜２２０Ｎは、ディスクヘッドがディスク上の記憶位置に物理的に近くなるまでデータの取得または格納を遅延させる。場合によっては、これは、ストレージデバイス２２０〜２２０Ｎに送られた入出力要求に対する応答を大幅に遅らせてしまう可能性がある。さらには、遅延しているまたは「枯渇状態」の入出力要求を履行するためのプロシージャをいくつかのディスクドライブが含んでいるものの、このようなプロシージャは、ストレージデバイス２２０〜２２０Ｎの種類によっては、数秒間発生しない可能性がある。入出力要求を処理する際のこの遅延は、遅延した要求が処理されるのをシステムが待っている間に、記憶システムの性能に悪影響を与える可能性がある。
【００２３】
入出力要求を処理する際のこの遅延に対処するために、記憶システム２００は、ストレージデバイス２２０〜２２０Ｎに送られた要求があまりにも長い間履行されないままにならないよう、外部で管理される入出力要求スタベーション処理を実行してもよい。具体的には、図３は、入出力要求のスタベーションを防ぐために記憶システムのストレージデバイスのキューを管理するための方法のフローチャートである。ストレージプール２１８の１つ以上のストレージデバイス２２０〜２２０Ｎのキューを管理することに加えて、図４は、入出力要求のスタベーションを防ぐために記憶システムのストレージデバイスに対する入出力要求を外部で管理するための方法のフローチャートである。記載の方法を実行することによって、ファイルシステム２０６は、記憶システム２００によって判断されたように処理があまりにも長い間遅延している要求がないよう、ストレージプール２１８の１つ以上のストレージデバイス２２０〜２２０Ｎに送られた入出力要求を外部で管理してもよい。
【００２４】
図３の方法３００は、動作３０２において、関連するストレージプール２１８の特定のストレージデバイス２２０に対する入出力要求をファイルシステム２０６が受信することから開始する。入出力要求は、ストレージプール２１８からデータを読み出すまたは書き込む要求であってもよく、記憶システム２００のオペレーティングシステム２０４から受信してもよい。動作３０４では、ファイルシステム２０６は、受信した特定のストレージデバイス２２０に対する入出力要求に入出力の順序値を割り当てる。たとえば、ファイルシステム２０６は、ストレージプール２１８のストレージデバイス２２０〜２２０Ｎの各々に対する１つ１つの入出力要求の順序付きリストを保持してもよい。一実施形態では、これらの順序付きリストは、デバイスごとの入出力が受信された値を含む。よって、特定のストレージデバイス２２０に対する第１の入出力要求には、「１」という順序値が与えられ、そのデバイスに対する第２の入出力要求には、「２」という順序値が与えられ、以下同様である。具体的な一実施形態では、特定のストレージデバイスに対する入出力要求に関連付けられた順序値は、６４ビットの２進数である。ファイルシステム２０６は、各ストレージデバイス２２０〜２２０Ｎに対する入出力要求の順序付きリストをストレージプール２１８に保持し、入出力要求を受信すると、受信したストレージデバイス２２０〜２２０Ｎに対する入出力要求に関連付けられた順序値をインクリメントする。具体的な一実施形態では、入出力要求の順序値は、記憶システム２００が再起動または電源がオンになったときに、「１」から再スタートしてもよい。
【００２５】
別の実施形態では、順序付きリストに含まれる１つ１つの入出力要求に関連付けられた値は、入出力要求が満たされるまたは処理される順に基づいてもよい。たとえば、本実施形態におけるファイルシステム２０６は、入出力要求が処理されるのをファイルシステムが決定する順に基づいて、受信した入出力要求の順序を並び替える。さらには、順序付きリストに含まれる各入出力要求に割り当てられた順序値は、キューの先頭からの入出力が入出力装置に発行されたときに割り当てられてもよい。このように、さらなる入出力要求は、このような要求をキューの末尾に追加しなくてもキューに追加することができる。しかしながら、本開示を説明するにあたってわかりやすくするために、入出力要求がキューの最後尾に追加され、要求が受信された順に基づいて順序値が割り当てられる実施形態が用いられる。
【００２６】
また、各受信した入出力要求に順序値を関連付けることに加えて、ファイルシステム２０６は、ストレージデバイス２２０〜２２０Ｎごとの入出力要求キューをストレージプール２１８に保持してもよい。具体的な一実施形態では、ファイルシステム２０６は、ファイルシステムが管理する入出力要求キューを１つ以上のメモリデバイスに格納してもよい。さらには、ファイルシステム２０６は、１つ以上の命令を実行してキューを１つ以上のメモリデバイスに格納してもよい。要求キューは、ストレージプール２１８が含む特定のストレージデバイス２２０〜２２０Ｎに対する入出力要求の順序付きリストである。具体的には、ストレージデバイスについてのキューは、最も古い入出力要求（すなわち、最も低い順序値を有するそのストレージデバイスに対する入出力要求）をキューの先頭に含み、最も新しい入出力要求（すなわち、最高順序値を有するそのストレージデバイスに対する入出力要求）をキューの末尾に含んでもよい。このようなキューは、ストレージプール２１８のストレージデバイス２２０〜２２０Ｎごとに保持されてもよい。これに加えて、ファイルシステム２０６は、どの入出力要求がストレージデバイス２２０に送られたか、かつ、キューに含まれるどの入出力要求が送られていないかのリストまたは指示を保持してもよい。上述したように、いくつかのストレージデバイス２２０は、ストレージデバイスで待ち状態の入出力要求の数を制限してもよい。よって、ファイルシステム２０６は、特定のストレージデバイスで待ち状態の入出力要求の数がストレージデバイスが設定した制限を超えないよう、この数を追跡してもよい。ファイルシステム２０６を手助けするために、ストレージプール２１８のストレージデバイス２２０〜２２０Ｎのうちの１つ以上は、ストレージデバイスに対するさらなる入出力要求を当該ストレージデバイスが受け入れることができるときを示す利用可能な指示または信号をファイルシステムに送信してもよい。
【００２７】
図３の方法３００に戻ると、動作３０６において、ファイルシステム２０６は、受信した入出力要求を当該要求のストレージデバイス２２０に関連付けられた適切なキューに追加してもよい。さらには、受信した入出力要求がキューの中で最も高い順序値を有するので、この要求は、キューの末尾に加えられる。動作３０８では、要求の完了の指示を関連するストレージデバイスから受信した場合、ファイルシステム２０６は、処理されたまたは完了した入出力要求を関連するキューから削除してもよい。このように、ストレージデバイスの待ち状態のキューから完了した入出力要求が削除されると、新しい入出力要求がこのキューに追加される。
【００２８】
上述したストレージデバイスキューによって、ファイルシステム２０６は、ストレージデバイスの入出力要求のスタベーションを外部で管理することができる。上述したように、ストレージデバイス２２０は、様々な理由でいくつかの入出力要求を履行することを遅らせてしまう可能性がある。この入出力要求の遅延またはスタベーションは、記憶システム２００の性能に悪影響を与えてしまう可能性がある。キューによって、ストレージデバイス２２０による入出力要求のスタベーションは、ファイルシステム２０６によって低減または管理されて、記憶システム２００へのマイナスの影響が減る。具体的には、図４は、入出力要求のスタベーションを防ぐために記憶システム２００のストレージデバイス２２０に対する入出力要求を外部で管理するための方法４００のフローチャートである。方法４００の動作は、記憶システム２００のファイルシステム２０６、またはシステムのその他の構成要素によって実行されてもよい。
【００２９】
動作４０２では、ファイルシステム２０６は、ストレージプール２１８のストレージデバイス２２０に対する新しい入出力要求、またはストレージデバイスから入出力要求が完了したという指示を待つ。新しい入出力要求が届いた場合、または入出力要求が完了したという指示が受信された場合、動作４０４において、ファイルシステム２０６は、ストレージデバイス２２０に発行するさらなる入出力要求があるかどうかを判断する。これ以上発行する入出力要求がない場合、ファイルシステムは動作４０２に戻り、新しい要求を待つ。しかしながら、入出力要求が発行される場合、ファイルシステム２０６は、動作４０６において、ストレージデバイス２２０がさらなる入出力要求を受け付けるまたは受け付けるための容量を有しているかどうかを判断する。さらなる入出力要求を受け付けるまたは受け付けるための容量を有していない場合、ファイルシステム２０６は動作４０２に戻り、ストレージデバイスから入出力要求が完了したという指示を待つ。
【００３０】
動作４０６において判断されたようにストレージデバイス２２０が容量を有する場合、ファイルシステムは、新しい入出力要求をストレージデバイスに送信するのを遅らせて、枯渇状態の入出力要求を処理するようストレージデバイスに強制するかどうかを判断してもよい。たとえば、ストレージデバイスに送られた入出力要求は、ストレージデバイスによってタイミングよく処理されていない可能性がある。遅延した入出力要求の処理を強制するために、ファイルシステム２０６は、遅延した入出力要求が処理されるまで新しい入出力要求をストレージデバイスに送信するのをやめるように構成されてもよい。つまり、ファイルシステム２０６は、遅延した入出力要求が完了するまで、ストレージデバイスに新しい入出力要求を提供しなくてもよい。ファイルシステム２０６が１つ以上のストレージデバイス２２０〜２２０Ｎへの入出力要求の送信を制御して枯渇状態の入出力要求を管理する方法は、図４の動作によって実行されてもよい。
【００３１】
枯渇状態の入出力要求が処理されるまでにストレージデバイス２２０に送られた入出力要求がいつなくなるのかを判断するために、ファイルシステム２０６は、動作４０８において、キューに含まれるストレージデバイスに対する最も古い入出力要求の順序値と最も新しい入出力要求の順序値との差を算出してもよい。たとえば、ファイルシステム２０６は、上述したやり方と同様のやり方で、ストレージデバイス２００に対する入出力要求キューをストレージプール２１８に保持している。入出力キューに含まれる各要求は、入出力要求がキューに入れられた順を示す順序値を含む。よって、ファイルシステム２０６は、最も高い入出力要求順序値（キューの末尾にある入出力要求）と最も低い残りの入出力要求順序値（キューの先頭にある入出力要求）との差を算出する。たとえば、ストレージデバイス２００についての入出力キューは、２いう順序値を有する要求を先頭に含み、１５という順序値を有する要求を末尾に含んでもよい。このキューについての算出された差は、１３という値になる。
【００３２】
動作４１０では、ファイルシステムは、特定の入出力要求キューについての算出された差を閾値と比較してもよい。一実施形態では、閾値は、ストレージデバイス２２０に対する１つ以上の入出力要求があまりにも長い間枯渇状態であるときを検知するためにファイルシステム２０６が利用する、予め定められた値である。たとえば、ファイルシステム２０６は、閾値をシステム管理者から受信して、図４の方法４００において使用してもよい。他の実施形態では、閾値は、当該値がファイルシステムによって予め定められないよう、使用されるストレージデバイスに基づいて、定められた時間または日に基づいて、システムまたは特定のストレージデバイスへの特定の負荷に基づいてなどによって異なり得る。具体的な一実施形態では、閾値は、ストレージデバイスが受け付けることのできる同時の入出力要求の最大数に係数を乗算したものである。たとえば、閾値は、ストレージデバイス２２０が同時に処理している入出力要求の最大数（この例において、１０）に４という係数を乗算することによって決定される、４０であってもよい。しかしながら、一般に、閾値は、ファイルシステム２０６によって決定または利用される任意の数であってもよい。
【００３３】
動作４１２では、ファイルシステム２０６は、キューに含まれる最も古い入出力要求と最も新しい入出力要求との算出された差が閾値以下であるかどうかを、比較に基づいて判断する。差が閾値以下である場合、ファイルシステム２０６は、動作４１４に移動し、キューに含まれる、まだストレージデバイス２２０に送信されていない最も古い入出力要求を発行する。つまり、ファイルシステム２０６は、ストレージデバイスに対するさらなる要求が発生するように、ストレージデバイスに対する待ち状態の入出力要求の数と比較して、キューに含まれる最も古い入出力要求はストレージデバイス２２０によってあまりにも長い間枯渇状態にされていないと判断する。しかしながら、場合によっては、キューに含まれる最も古い順序値と最新の順序値との算出された差の閾値との比較は、ストレージデバイス２２０に送られた入出力要求がしばらくの間処理または完了されていないことを示す。この入出力要求は、ストレージデバイス２２０によって枯渇状態にされていると考えられてもよい。これに応答して、ファイルシステムは、動作４０１に戻ることによって、最も古い待ち状態の入出力要求が処理されるまでストレージデバイス２２０に対する入出力要求を発行することをやめてもよい。
【００３４】
上述した動作によって、ファイルシステム２０６は、枯渇状態の要求がストレージデバイスによって履行されるまで入出力要求がストレージデバイスに発行されないようにする。このように、ファイルシステム２０６は、入出力要求の完了を監視し、完了した場合、これらの完了した要求をキューから削除してもよい。完了すると、ファイルシステム２０６は、完了した要求が枯渇状態の入出力要求であったかどうかを判断してもよい。枯渇状態の入出力要求でなかった場合、図４の方法４００は、さらに、枯渇状態の入出力要求が処理されるまたは完了するまで、要求をストレージデバイスに発行するのをやめてもよい。枯渇状態の要求が完了すると、ファイルシステム２０６は、完了させるための入出力要求をストレージデバイスに発行し続けてもよい。
【００３５】
図５Ａ〜図５Ｇは、ストレージデバイスへの入出力要求のスタベーションを防ぐための、ストレージデバイスに対する入出力要求のキューの例を示す図である。具体的には、図に示すキューは、図４の方法４００を実行するファイルシステム２０６の例を提供する。よって、図５Ａ〜図５Ｇに示すキューは、（おそらく、ストレージプール２１８の一部としての）１つのストレージデバイス２２０についてのキューであるが、ファイルシステム２０６は、ファイルシステムに接続されたまたは通信している複数のストレージデバイスについての同様のキューを保持してもよいことがわかる。図５Ａ〜図５Ｇに示すキューは、ファイルシステム２０６と通信しているストレージデバイスについての入出力要求キューの一例にすぎない。さらには、いくつかの実施形態では、１つのストレージデバイスに対して複数のキューがストレージプールに保持されてもよい。よって、ストレージデバイスに対する入出力要求は、そのストレージデバイスのために、あるキューから別のキューに移動されてもよい。しかしながら、わかりやすくするために、図５Ａ〜図５Ｇには１つのキューを示す。
【００３６】
ストレージデバイス２２０に対する入出力要求を管理するための入出力要求キュー５００を図５Ａに示す。具体的には、キューは、ファイルシステム２０６で受信された、特定のストレージデバイスに向けられた１０個の入出力要求を含んだリストを含む。図３を参照して述べた動作によって、ファイルシステム２０６は、各受信したストレージデバイスに対する入出力要求を順序値に関連付ける。この具体的な例において、キュー５００は、ストレージデバイスに向けられた最初の１０個の入出力要求を含み、これらはキューに適宜配置されている。さらには、キュー５００に含まれる灰色の入出力要求の各々は、当該要求がストレージデバイスに送信済みであることを示している。上述したように、多くのストレージデバイスは、デバイスが処理できる同時の入出力要求の数が制限されている。この具体的な例において、ストレージデバイスは、キュー５００に含まれる各入出力要求がストレージデバイスに送信されるように、１０個の同時の入出力要求を処理することができる。
【００３７】
図５Ａにも示すように、（順序値５および順序値６の要求として示される）２つの入出力要求がキュー５００から削除されてもよい。当該要求は、これらの特定の入出力要求が処理されたという指示をファイルシステムがストレージデバイスから受信した後に、ファイルシステム２０６によってキュー５００から削除されてもよい。さらには、より詳細に後述するが、ストレージデバイスに対する新しい入出力要求は、ファイルシステムで受信されると、キュー５００の末尾に追加されてもよい。これらの新しい要求は、キューに含まれる最後の入出力要求からインクリメントされた順序値を含む。このように、ストレージデバイスに対する入出力要求は、新しい入出力要求をキューの最後尾に追加し、完了した入出力要求を削除することによって、ファイルシステムによって管理されてもよい。
【００３８】
図５Ｂのキュー５０２では、入出力要求５および６が削除されており、１１、１２、および１３という順が付けられた新しい入出力要求がキューの末尾に追加されている。さらには、入出力要求５および６はストレージデバイスによって完了され、キュー５０２から削除されているので、さらなる入出力要求がストレージデバイスに送信されてもよい。さらなる入出力要求がストレージデバイスに送られるかどうかを判断するために、ファイルシステム２０６は、図４の方法４００を実行する。つまり、ファイルシステム２０６は、枯渇状態の入出力要求が処理されるまでストレージデバイスに新しい要求が発行されないように、キューに含まれる最も古い入出力要求が枯渇状態であるかどうかを判断する。具体的には、ファイルシステム２０６は、キュー５０２に含まれる最も古い入出力要求（この例において、入出力要求１）とキューに含まれる最も新しい入出力要求（この例において、入出力要求１３）との差を算出する。図５Ｂに示すように、算出された差によって、１２という値が得られる。
【００３９】
次に、ファイルシステム２０６は、算出された差を閾値と比較する。図に示す例では、算出された差が閾値に等しいと比較結果が示すように、閾値は１２である。よって、キューに含まれる最も古い入出力要求とキューに含まれる最も新しい入出力要求との算出された差が閾値以下であるので、ストレージデバイスに対する入出力要求は、１つとして枯渇状態ではなく、ストレージデバイスに新しい要求が送信されてもよい。上述したように、ファイルシステムが利用する閾値は、ファイルシステムが決定または受信する任意の値であってもよい。新しい入出力要求がストレージデバイスに送信されてもよく、かつ、さらに２つの要求のための容量をストレージデバイスが有している（上記入出力要求５および６の完了に基づいて）ので、図５Ｃの塗りつぶされた四角い枠で示される入出力要求１１および１２がストレージデバイスに送信される。
【００４０】
さらに、図５Ｃに示すように、入出力要求３、９、１０、および１１は、ストレージデバイスによって完了され、キュー５０４から削除されていると想定する。また、図５Ｄでは、入出力要求１４として示される新しい入出力要求がキュー５０４の末尾に追加されている。要求３、９、１０、および１１の完了によって、ストレージデバイスは、さらに４つの入出力要求を受信できる容量を有する。よって、図５Ｄでは、ファイルシステム２０６は、キュー５０６に含まれる最も古い入出力要求（要求１）と最も新しい入出力要求（要求１４）との差を再び算出する。この算出された差は、図に示すように、１３という値である。キュー５０６からさらなる要求を発行すべきかどうかを判断するために、この算出された差は、１２という閾値と比較される。算出された差が閾値よりも大きいため、キュー５０６に含まれる入出力要求１について枯渇状態の入出力であるという判断がされる。ファイルシステムは、比較に基づいてキュー５０６に含まれる最も古い要求が枯渇状態であると検出すると、当該入出力要求が処理されるまでストレージデバイスに新しい入出力要求を発行するのをやめさせてもよい。よって、ストレージデバイスは新しい入出力要求を受信できる容量を有しているにもかかわらず、枯渇状態の要求が処理されるまでストレージデバイスへの入出力要求１３および１４の送信は遅延させられる。
【００４１】
図５Ｅでは、枯渇状態の入出力要求（入出力要求１）はストレージデバイスによって完了されており、キュー５０８から削除されている。場合によっては、ファイルシステム２０６は、未処理の要求のみが枯渇状態の要求であるまで、入出力要求を送信するのをやめてもよい。つまり、ファイルシステムは、枯渇状態の要求が処理されるまで新しい入出力要求をストレージデバイスに送信することをやめることによって、枯渇状態の要求を処理するよう、ストレージデバイスに強制してもよい。さらには、図５Ａ〜図５Ｇの例には示さないが、ファイルシステム２０６は、ストレージデバイスに対する新しい入出力要求を受信し続けて、それらをキューの末尾に追加してもよい。しかしながら、このような要求は、枯渇状態の要求が処理されるまで、ストレージデバイスに発行されない。さらには、枯渇状態の要求が処理されるのをファイルシステムが待機している間に、他の送信済みの要求（キュー５０８の入出力要求２、４、７など）が処理されてキューから削除されてもよい。
【００４２】
図５Ｆに示すように、枯渇状態の要求が削除されると、ファイルシステム２０６は、最も古い要求と最も新しい要求との差を再び算出する。この例において、算出された差は、新しい要求がこれからストレージデバイスに送信されてもよいように、閾値以下である。よって、図５Ｇに示すように、次に、入出力要求１３および１４が処理のためにストレージデバイスに送信されてもよい。上述した例および動作によって、ファイルシステムは、ストレージデバイスに送信された入出力要求の数を管理して、要求のうちの１つ以上のスタベーションを外部で制御し、いずれの要求もファイルシステムが判断するようにあまりにも長い間枯渇状態にならないようにしてもよい。このストレージデバイスに対する要求の外部制御は、ストレージデバイス自体よりも積極的であってもよく、要求の重要度または価値を考慮に入れてもよい。
【００４３】
ここで、図６を参照すると、本明細書において記載の様々なシステムおよび方法を実施し得る、１つ以上の演算装置を有する例示的なコンピューティングシステム６００の詳細な説明を提供する。コンピューティングシステム６００は、ストレージデバイス１０２〜１０４、記憶システム２００、ファイルシステム２０６、ユーザデバイス１１２〜１１４、および／またはその他のコンピューティングデバイスに適用可能であってもよい。これらのデバイスの具体的な実装形態は、それぞれ異なる可能な特有のコンピューティングアーキテクチャのものであってもよく、それらのすべては明細書に具体的に記載されていないが、当業者は理解するだろうことがわかるだろう。
【００４４】
コンピュータシステム６００は、コンピュータ処理を実行するためのコンピュータプログラムプロダクトを実行することができる一般的なコンピューティングシステムであってもよい。データおよびプログラムファイルがコンピュータシステム６００に入力されてもよく、コンピュータシステム６００は、このファイルを読み出して、それに含まれるプログラムを実行する。汎用コンピュータシステム６００の要素のうちのいくつかを図６に示す。図６では、プロセッサ６０２は、入出力（Ｉ／Ｏ）部６０４と、中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）６０６と、メモリ部６０８とを有すると示されている。コンピュータシステム６００のプロセッサ６０２が１つの中央処理装置６０６を備えるように、または、一般に並列処理環境と呼ばれる複数の処理装置を備えるように、１つ以上のプロセッサ６０２があってもよい。コンピュータシステム６００は、従来のコンピュータ、分散コンピュータ、または、クラウドコンピューティングアーキテクチャを介して利用可能になる１つ以上の外部のコンピュータなど、その他の種類のコンピュータであってもよい。今回記載された技術は、必要に応じて、メモリ６０８にロードされたソフトウェアデバイス、設定済みのＤＶＤ／ＣＤ−ＲＯＭ６１０または記憶装置６１２上に格納されたソフトウェアデバイス、および／または、有線またはワイヤレスネットワークリンク６１４を介して通信されるソフトウェアデバイスで実装されるため、図６のコンピュータシステム６００を記載の動作を実施するための専用マシンに変えることができる。
【００４５】
Ｉ／Ｏ部６０４は、１つ以上のユーザインタフェース装置（たとえば、キーボード６１６および表示部６１８）と、ディスク記憶装置６１２と、ディスク駆動装置６２０とに接続される。タブレットまたはスマートフォンデバイスの場合、物理キーボードがなくてもよいが、代わりに、コンピュータ生成されたタッチスクリーンキーボードを有するタッチスクリーンがあってもよい。一般に、ディスク駆動装置６２０は、ＤＶＤ／ＣＤ−ＲＯＭ媒体６１０を読み出すことができるＤＶＤ／ＣＤ−ＲＯＭ駆動装置である。ＤＶＤ／ＣＤ−ＲＯＭ媒体６１０は、通常、プログラムおよびデータ６２２を含む。メモリ部６０４内に、ディスク記憶装置６１２上に、コンピュータシステム６００のＤＶＤ／ＣＤ−ＲＯＭ媒体６１０上に、または、１つ以上のデータベース管理プロダクト、ウェブサーバプロダクト、アプリケーションサーバプロダクト、および／または他の追加のソフトウェアコンポーネントを含む、コンピュータプログラムプロダクトを有するクラウドコンピューティングアーキテクチャを介して利用可能になる外付けストレージデバイス上に、今回記載された技術に従ってシステムおよび方法を実現するためのメカニズムを含んだコンピュータプログラムプロダクトが存在してもよい。これに代えて、ディスク駆動装置６２０は、光学ドライブユニット、フラッシュドライブユニット、磁気ドライブユニット、またはその他の記憶媒体駆動装置によって置き換えまたは補われてもよい。同様に、ディスク駆動装置６２０は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気メモリ、光メモリ、および／または、スマートフォンおよびタブレット端末において共通して見られる様々な他の可能な形態の半導体ベースのメモリによって置き換えまたは補われてもよい。
【００４６】
ネットワークアダプタ６２４は、ネットワークリンク６１４を介してコンピュータシステム６００をネットワークに接続することができる。コンピュータシステムは、ネットワークリンク６１４を通じて命令およびデータを受信できる。このようなシステムとして、パーソナルコンピュータ、ＩｎｔｅｌまたはＰｏｗｅｒＰＣベースのコンピューティングシステム、ＡＭＤベースのコンピューティングシステム、およびＷｉｎｄｏｗｓ（登録商標）ベース、ＵＮＩＸ（登録商標）ベース、またはその他のオペレーティングシステムを実行するその他のシステムなどが挙げられる。端末、ワークステーション、携帯電話、タブレット端末またはスレート、マルチメディアコンソール、ゲーミングコンソール、セットトップボックスなどのデバイスをコンピューティングシステムが含んでもよいことを理解されたい。
【００４７】
ＬＡＮネットワーク環境で利用される場合、コンピュータシステム６００は、ネットワークインタフェースまたはアダプタ６２４を通じてローカルネットワークに（有線接続によって、またはワイヤレスで）接続される。ネットワークインタフェースまたはアダプタ６２４は、一種の通信デバイスである。ＷＡＮネットワーク環境で利用される場合、コンピュータシステム６００は、通常、モデム、ネットワークアダプタ、または、ワイドエリアネットワークで通信を確立するためのその他の種類の通信デバイスを備える。ネットワークで結ばれた環境では、コンピュータシステムまたはその一部と比較して示されるプログラムモジュールがリモートメモリストレージデバイスに格納されてもよい。図に示すネットワーク接続は、コンピュータ間に通信リンクを確立するための通信デバイスまたはその他の手段の例であることがわかる。
【００４８】
本明細書に記載の動作の一部またはすべては、プロセッサ６０２によって実行されてもよい。さらには、ローカルコンピューティングシステム、リモートデータソースおよび／またはサービス、ならびにその他の関連するロジックは、ストレージデバイスメンテナンス、ストレージデバイス１０２〜１０４、ユーザデバイス１１２〜１１４、および／または記憶システム１００のその他の演算装置または構成要素の動作を制御するように構成されたファームウェア、ハードウェア、および／またはソフトウェアを表す。このようなサービスは、汎用コンピュータおよび専用ソフトウェア（サービスソフトウェアを実行するサーバなど）、専用コンピューティングシステムおよび専用ソフトウェア（サービスソフトウェアを実行するモバイル機器またはネットワークアプライアンスなど）、またはその他のコンピューティング構成を用いて実施されてもよい。これに加えて、本明細書に開示の１つ以上の機能は、プロセッサ６０２によって生成されてもよく、ユーザは、使用中のデータのいくつかがオンラインソースおよびデータストアから直接入ってくる状態で、１つ以上のユーザインタフェース装置（たとえば、キーボード６１６、表示部６１８、およびユーザデバイス１１２〜１１４）を用いてＧＵＩとやり取りしてもよい。図６で説明したシステムは、本開示の態様に応じて使用され得るまたは構成されうるコンピュータシステムの１つの可能な例にすぎない。
【００４９】
なお、図３および図４のフローチャートは、一例にすぎない。本発明の教示の別の実施形態は、本発明の教示の趣旨および範囲に影響を与えることなく、動作を追加、動作を省略、または、動作の順序を変更してもよい。上記は、発明の原理を例示しているにすぎない。記載の実施形態に対する様々な変更例および代替例が、本明細書における教示に鑑みて当業者に明らかになるだろう。よって、当業者は、明細書において明確に示したり記載したりしていないが、発明の原理を含み、よって、本発明の教示の趣旨および範囲に含まれる数多くのシステム、配置、および方法を考案できることがわかるだろう。上記説明および図面から、図示および記載の特定の実施形態が例示のためだけであり、本発明の教示の範囲を限定することを意図しないことを当業者は理解するだろう。特定の実施形態の詳細についての言及は、本発明の範囲を限定することを意図しない。
【図１】
2019525349.tif 000003
【図２】
2019525349.tif 000004
【図３】
2019525349.tif 000005
【図４】
2019525349.tif 000006
【図５−１】
2019525349.tif 000007
【図５−２】
2019525349.tif 000008
【図６】
2019525349.tif 000009
【国際調査報告】
2019525349.tif 000010
2019525349.tif 000011