(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-26
(45)【発行日】2022-11-04
(54)【発明の名称】コンピューティングデバイスにおける、外部で管理される入出力のスタベーションの回避
(51)【国際特許分類】
G06F 13/12 20060101AFI20221027BHJP
G06F 3/06 20060101ALI20221027BHJP
G06F 13/10 20060101ALI20221027BHJP
【FI】
G06F13/12 340B
G06F3/06 301F
G06F3/06 301Z
G06F3/06 304N
G06F13/10 340A
(21)【出願番号】P 2019507762
(86)(22)【出願日】2017-06-07
(86)【国際出願番号】 US2017036282
(87)【国際公開番号】W WO2018034720
(87)【国際公開日】2018-02-22
【審査請求日】2020-06-05
(32)【優先日】2016-08-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】サヌイエ,ブレーズ
(72)【発明者】
【氏名】ブルボネ,ロック
(72)【発明者】
【氏名】ギル,ピーター・ウェストン
【審査官】打出 義尚
(56)【参考文献】
【文献】米国特許出願公開第2010/0312883(US,A1)
【文献】米国特許第06292856(US,B1)
【文献】特表2011-520165(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/12
G06F 3/06
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
ストレージプールを管理するための方法であって、
記憶媒体を有するストレージデバイスに向けられた1つ以上の入力/出力(入出力)要求を含んだキューを保持するステップを含み、各入出力要求は、前記記憶媒体の記憶位置についてデータを格納または取得する要求を含み、各入出力要求は、その入出力要求がストレージ管理システムで受信された順を示す順序値を含み、前記方法は、さらに、
前記キューに含まれる第1の入出力要求に関連付けられた第1の順序値と前記キューに含まれる第2の入出力要求に関連付けられた第2の順序値との差を算出するステップと、
前記第1の順序値と前記第2の順序値との算出された前記差を閾値と比較するステップと、
前記1つ以上の入出力要求を含んだキューから少なくとも1つの入出力要求を前記ストレージデバイスに送信するステップと、
前記第1の順序値と前記第2の順序値との算出された前記差が前記閾値以下である場合、前記送信するステップにおける前記送信を実施し、前記第1の順序値と前記第2の順序値との算出された前記差が前記閾値を超える場合、前記送信するステップにおける前記送信を止めるステップと、
前記ストレージデバイスが前記入出力要求の処理を完了したとき、当該入出力要求を前記1つ以上の入出力要求を含んだキューから削除するステップと、を含み、
前記差を算出するステップは、
前記入出力要求が前記削除するステップにおいて削除された場合、前記キューに含まれる第1の入出力要求に関連付けられた第1の順序値と前記キューに含まれる第2の入出力要求に関連付けられた第2の順序値との差を算出するステップを含み、
前記キューから前記少なくとも1つの入出力要求を送信するステップは、
前記ストレージデバイスが前記入出力要求の処理を完了し、前記記憶媒体において前記少なくとも1つの入出力要求を処理するための容量を前記ストレージデバイスが有すると判断したときに、当該少なくとも1つの入出力要求を送信する、方法。
【請求項2】
前記キューに含まれる前記第1の入出力要求は、前記キューの先頭に位置し、前記第2の入出力要求は、前記キューの末尾に位置する、請求項1に記載の方法。
【請求項3】
前記ストレージデバイスに対する新しい入出力要求を受信するステップと、
前記ストレージデバイスに対する新しい入出力要求に新しい順序値を関連付けるステップと、
前記新しい入出力要求と前記新しい順序値とを前記キューの末尾に追加するステップとをさらに含む、請求項1または2に記載の方法。
【請求項4】
前記ストレージデバイスから完了指示を受信するステップと、
前記キューから対応する入出力要求を削除するステップとをさらに含む、請求項1から3のいずれか1項に記載の方法。
【請求項5】
前記ストレージデバイスは、前記ストレージ管理システムと通信しているストレージデバイスを含んだプールの一部である、請求項1から4のいずれか1項に記載の方法。
【請求項6】
前記ストレージデバイスを含んだプールに含まれる第2のストレージデバイスに向けられた1つ以上の入力/出力(入出力)要求を含む第2キューを保持するステップをさらに含み、前記第2キューが含む前記入出力要求の各々は、前記第2のストレージデバイスに対する前記入出力要求が前記ストレージ管理システムで受信された順を示す順序値を含む、請求項5に記載の方法。
【請求項7】
前記閾値は、少なくとも、前記ストレージデバイスが同時に処理する入出力要求の数に基づく、請求項1から
6のいずれか1項に記載の方法。
【請求項8】
前記閾値は、前記入出力要求の数に係数を乗算したものに等しい、請求項
7に記載の方法。
【請求項9】
前記ストレージ管理システムは、大規模ストレージアプライアンス用のファイルシステムを含む、請求項1から
8のいずれか1項に記載の方法。
【請求項10】
マシン上のコンピュータに請求項1から
9のいずれか1項に記載の方法を実行させるためのコンピュータによって実行可能な命令を有したコンピュータ読み取り可能なプログラム。
【請求項11】
請求項1
0に記載のプログラムを格納したメモリと、
前記メモリに接続され、前記プログラムを実行するためのプロセッサとを備える、システム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2016年8月17日に出願され、「EXTERNALLY MANAGED I/O STARVATION AVOIDANCE IN A COMPUTING DEVICE(コンピューティングデバイスにおける、外部で管理される入出力のスタベーションの回避)」と題された米国通常出願第15/239,396号に基づく優先権の利益を主張し、そのすべての記載内容を、あらゆる目的のために引用により本明細書に援用する。
【0002】
開示の分野
本発明の態様は、コンピューティングシステムに関し、より具体的には、本発明の態様は、ストレージデバイスに提供された入力/出力(入出力)要求のいずれもかなりの時間待ち状態にならないよう、入出力要求を監視および制御するためのシステムおよび/または方法に関係する。
【背景技術】
【0003】
背景
絶え間ないインターネットの拡大、企業コンピューティンネットワークおよびシステムの拡大および高度化、インターネット上で格納され、かつアクセス可能なコンテンツの急増、および数多くのその他の要因によって、大規模の高度なデータ記憶システムが必要な状態が続いている。その結果、データストレージの需要が増加し続けて、より大規模かつより高度な記憶システムが設計および開発されている。多くの大規模データ記憶システムは、記憶媒体のアレイを備えたストレージアプライアンスを利用している。通常、これらの記憶システムは、ファイルを格納するおよびファイルにアクセスするためのファイルシステムを備える。システムファイル(たとえば、オペレーティングシステムファイル、デバイスドライバファイルなど)を格納することに加えて、ファイルシステムは、ユーザデータファイルのストレージとアクセスとを提供する。ユーザがファイルにアクセスするために、このファイルに関連付けられたデータブロックを、記憶システムに関連付けられた複数のストレージデバイスから取り出すための1つ以上の入力/出力(入出力)要求が生成される。
【0004】
多くの場合、記憶システムが使用するストレージデバイスは、とても多くの入出力要求を処理するだけでよい。たとえば、ストレージデバイスは、装置自体によって、または記憶システムの管理ソフトウェアによって、10個の入出力要求に制限され得る。さらには、入出力要求は、受信された順に完了または処理(service)されない場合がある。むしろ、多くのストレージデバイスは、ストレージデバイスに対する物理的な需要を低減させることができる順で入出力要求を処理することによって、データブロックを取り出す効率を最大限にしようと試みる。たとえば、ストレージデバイスに対する入出力要求を処理するとき、ディスクドライブ上のディスクヘッドの移動および現在の位置が考慮され得る。このように、ストレージデバイスが記憶媒体に格納されているデータブロックを取り出すので、特定の入出力要求の完了が遅延してしまう可能性がある。これにより、入出力要求の処理が大幅に遅延または減速する結果となり、記憶システムの性能に悪影響を与えてしまう可能性がある。
【0005】
これらのおよびその他の問題を念頭において、本開示の様々な態様が開発された。
【発明の概要】
【課題を解決するための手段】
【0006】
概要
本開示の一実装形態は、ストレージプールを管理するための方法という形をとってもよい。この方法は、ストレージデバイスに向けられた1つ以上の入力/出力(入出力)要求を含んだキューを保持する動作を含み、キューの入出力要求の各々は、入出力要求がストレージ管理システムで受信された順を示す順序値を含み、方法は、さらに、キューに含まれる第1の入出力要求に関連付けられた第1の順序値とキューに含まれる第2の入出力要求に関連付けられた第2の順序値との差を算出する動作を含む。これに加えて、方法は、算出された第1の順序値と第2の順序値との差を閾値と比較する動作と、算出された第1の順序値と第2の順序値との差が閾値以下である場合、1つ以上の入出力要求を含んだキューから少なくとも1つの入出力要求をストレージデバイスに送信する動作とを含んでもよい。
【0007】
本開示の別の実装形態は、マシン上でコンピュータ処理を実行するためのコンピュータによって実行可能な命令を格納した、1つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体の形をとってもよい。このコンピュータ処理は、ストレージデバイスに向けられた1つ以上の入力/出力(入出力)要求を含んだキューを管理する動作を含んでもよく、キューの入出力要求の各々は、入出力要求がストレージ管理システムで受信された順を示す順序値を含み、コンピュータ処理は、さらに、キューに含まれる第1の入出力要求に関連付けられた第1の順序値とキューに含まれる第2の入出力要求に関連付けられた第2の順序値との差を判断する動作を含み、第1の入出力要求は、第2の入出力要求よりも前にストレージ管理システムで受信されている。また、コンピュータ処理は、第1の順序値と第2の順序値との算出された差を閾値と比較することと、第1の順序値と第2の順序値との算出された差が閾値以下である場合、1つ以上の入出力要求を含んだキューから少なくとも1つの入出力要求をストレージデバイスに送信することとを含んでもよい。
【図面の簡単な説明】
【0008】
【
図1】1つ以上のストレージデバイスからのデータにアクセスするように構成された記憶システムの例を示す図である。
【
図2】外部で管理される入出力要求システムおよび方法を実施するネットワークファイルシステムの例を示す図である。
【
図3】記憶システムのストレージデバイスのキューを管理するための方法のフローチャートである。
【
図4】入出力要求のスタベーションを防ぐために記憶システムのストレージデバイスに対する入出力要求を外部で管理するための方法のフローチャートである。
【
図5】
図5A~
図5Gは、ストレージデバイスに対する入出力要求のスタベーションを防ぐための、ストレージデバイスに対する入出力要求のキューを示す図である。
【
図6】今回開示する技術の様々なシステムおよび方法を実施し得るコンピューティングシステムの例を示す図である。
【発明を実施するための形態】
【0009】
詳細な説明
本開示の実装形態は、記憶システムを管理するためのシステムおよび/または方法、より具体的には、入出力要求を処理する際の大きな遅延を回避するためにストレージデバイスに対する入力/出力(入出力)要求を外部で管理するためのシステムおよび/または方法に関係する。一実施形態では、システムおよび方法は、管理ソフトウェア、デバイス、または、複数のストレージデバイスを有する大型記憶システムであってもよい。管理方法は、システムに関連付けられたストレージデバイスのうちの1つ以上に対する入出力要求キューを保持してもよい。各キューは、入出力要求がストレージデバイスに提供された順に対応する値を含んでもよく、入出力要求は、順序値によってキュー内に配置されてもよい。たとえば、キューの先頭は、最小順序値を有する、ストレージデバイスに対する入出力要求を含んでもよく、キューの末尾は、最高順序値を有する入出力要求を含んでもよい。さらには、記憶システム管理方法は、ストレージデバイスに対する同時の入出力要求についての閾値に基づいて、キューに入力される入出力要求の数を制限してもよい。ストレージデバイスによって入出力要求が処理または完了されると、関連するキューに含まれる関連する入出力要求がキューから削除されてもよい。
【0010】
これに加えて、管理システムは、ストレージデバイスに対する入出力要求のいずれも大幅に遅延しないようにしてもよい。一実施形態では、システムは、キューの先頭にある入出力要求の順序値とキューの末尾にある入出力要求の順序値との差を算出してもよい。算出された差が閾値を上回っている場合、ストレージデバイスに対する新しい入出力要求は、キューに追加されないまたはストレージデバイスに送信されない。一般に、算出された差が閾値内に収まるまで、キューには入出力要求が追加されない。このように、管理システムは、処理されずにしばらくの間キューに格納されている入出力要求を処理するよう、ストレージデバイスを強制してもよい。また、入出力要求のスタベーション(枯渇状態)の回避は、ストレージデバイスの外部で管理システムによって制御される。よって、管理システムは、枯渇状態の要求が処理されるまでデバイスに対する新しい入出力要求を保留することによって要求の完了が遅延することを回避することについて、ストレージデバイス自体よりも積極的であってもよい(すなわち、ストレージデバイスに対する要求の処理がより短い間遅延することを受け付けてもよい)。
【0011】
要求のスタベーションを外部で管理するために1つ以上のストレージデバイスに対する1つ以上の入出力要求キューを保持しつつ、1つ以上のストレージデバイスからのデータにアクセスするように構成された例示的な記憶システム100の詳細な説明を始めるために、
図1を参照する。
図1から理解できるように、例示的な記憶システム100は、1つ以上のストレージデバイス102~104を備える。1つ以上のストレージデバイス102~104は、各々、記憶媒体106~108上のデータの格納を管理する。管理は、媒体(たとえば、ディスクドライブ)、および固体メモリなど様々な形の永続メモリを回転させることを含み得る。一実施形態では、ストレージデバイス102~104は、各々、クイックアクセスが必要なデータはスピードのより早い記憶媒体(たとえば、1つ以上のレベルのキャッシュメモリ)に格納されて、他の媒体はディスクドライブなど、スピードのより遅い記憶媒体に格納される階層構造に、データを格納してもよい。
【0012】
1つ以上のストレージデバイス102~104を有する記憶システムを参照して本明細書において説明しているが、ストレージデバイスに対する入出力要求を外部で管理するためのシステム、方法、および/またはプログラムは、データをストレージデバイスに格納する任意のコンピューティングデバイスのために利用されてもよいことがわかる。たとえば、システムおよび方法は、自身のメモリコンポーネントにデータを格納するコンピュータにおいて利用されてもよい。よって、一例では、システムおよび方法は、データを1つのメモリデバイスに格納するコンピューティングデバイスによって利用される。その他の例では、システムおよび方法は、いくつかのストレージデバイスを備えたシステムにおいて利用される。一般に、このシステムは、受信した入出力要求を再編成し得る1つ以上のストレージデバイスにデータを格納する任意のコンピューティングデバイスのために使用されてもよい。しかしながら、わかりやすくするために、ストレージデバイスに対する入出力要求を外部で管理するためのシステムおよび方法を、
図1に示すような記憶システムと関係して、本明細書において説明する。
【0013】
図1の例示的なシステム100に戻ると、ストレージデバイス102~104は、ストレージアプライアンスであってもよい。ストレージアプライアンスは、クライアントネットワーク上の1つ以上のユーザデバイス112~114にネットワーク110を通じたデータアクセスを提供するファイルレベルのストレージサーバを含むが、これに限定されない。このようなストレージアプライアンスは、たとえば、データ完全性の検証ならびに修復、および大きな記憶容量を可能し、かつ、数多くの他の特徴および利点を有する、サンマイクロシステムズ(登録商標)によって2005年に設計され、現在ではOracle(登録商標)によって展開および発展されている複合型ファイルシステム/ボリュームマネージャであるZFSストレージアプライアンスであってもよい。ZFSストレージアプライアンスを背景に本明細書において説明するが、ストレージデバイス102~104は、各々、任意の種類のストレージアプライアンス管理ソフトウェアを有する任意の種類のストレージデバイスであってもよいことがわかるだろう。
【0014】
一実装形態では、ストレージネットワーク上のストレージデバイス102~104は、ネットワーク110を通じてクライアントネットワーク上のユーザデバイス112~114によってアクセス可能であってもよい。しかしながら、様々なネットワークが統合ネットワークを含んでもよく、本明細書において説明するネットワーク間の接続は、1つの可能なネットワークトポロジーを表しているにすぎないことがわかるだろう。また、大規模なプライベートの企業ネットワークまたはインターネットなどと同様に、当該様々なネットワークは、現実には局所的に存在していてもよく、または、地理的に分散していてもよい。ユーザデバイス112~114は、一般に、端末、ワークステーション、パーソナルコンピュータ、ポータブルコンピュータ、携帯電話、モバイル機器、タブレット、マルチメディアコンソールなど、ネットワーク110とやり取りすることができる任意の形のコンピューティングデバイスである。いくつかの実装形態では、クライアントネットワークは、たとえば、ビジネスユーザインタフェース(BUI:Business User Interface)など、1つ以上のユーザインタフェースを含み、ユーザがストレージデバイスとやり取りしてデータにアクセスすることを可能にする。
【0015】
ZFSベースのシステムは、記憶媒体106~108など、ブロックデバイスから構成される仮想装置(vdevs)からなる1つ以上のストレージプール(「zpools」と呼ばれることが多い)を有するストレージプール層を利用する。ブロックデバイスは、データをブロックの形で移動させる任意のデバイスであり、ハードディスクドライブ、ソリッドステートドライブ、光学ドライブ、磁気ドライブ、およびその他のアドレス指定可能なメモリの領域であってもよいが、これらに限定されない。仮想装置が複数のブロックデバイスまたはボリュームをまたいでもよく、ストレージプールが、記憶媒体の1つ以上のパーティションまたは1つ以上の記憶媒体を各々が備える1つ以上の仮想装置を含んでもよい。
【0016】
ストレージデバイス102~104を行き来するトラフィックは、通常、ストレージデバイス102~104またはストレージネットワーク内に位置する1つ以上の専用ストレージサーバによって管理される。ストレージアプライアンスがファイル、ディレクトリ、および関連付けられたメタデータを含むコンテンツにアクセスするために採用する共通プロトコルは、ネットワークファイルシステム(NFS)である。NFSは、もともとサンマイクロシステムズ(登録商標)によって1984年に開発され、現在はOracle(登録商標)からバージョン4(NFSv4)が出ている、広く使われている分散ファイルシステムプロトコルである。ユーザデバイス112~114が、ファイルの作成および削除、ファイルの読み出しおよび書き込み、ファイル内でのシークの実行、ディレクトリの作成および削除、ディレクトリコンテンツの管理、ならびにその他のファイル、ディレクトリ、またはコンテンツの操作を実行することを可能にするプログラミングインタフェースを提供することによって、NFSは、クライアントネットワークが格納データにシームレスにアクセスすることを可能にする。ユーザデバイス112~114が利用するオペレーティングシステムは、NFSプログラミングインタフェースと通信を行って、ストレージデバイス102~104にあるデータを用いた、動作中のアプリケーション間のやり取り、およびファイルシステムを管理するように構成される。一般に、NFSシステムは、ファイルシステムのメタデータを管理し、ファイルおよびディレクトリへのアクセスを提供する。メタデータは、ファイルおよびディレクトリの記憶媒体106~108上の位置を記述する。
【0017】
図2を参照すると、外部で管理される入出力要求システムおよび方法を実施する例示的なファイルシステム200を示す。一実装形態では、システム200は、オペレーティングシステム204とインターフェース接続されたアプリケーション202を含む。オペレーティングシステム204は、ストレージプール218とインターフェース接続されたファイルシステム206とやり取りするための機能を含む。オペレーティングシステム204は、通常、システムコールインタフェース208を介してファイルシステム206とインターフェース接続される。オペレーティングシステム204は、ユーザがファイルシステム206内のファイルにアクセスするための動作を提供する。これらの動作は、読み出し、書き込み、開く、閉じるなどを含む。一実装形態では、ファイルシステム206は、オブジェクトベースのファイルシステムである(すなわち、データおよびメタデータがオブジェクトとして格納される)。より具体的には、ファイルシステム206は、データおよび対応するメタデータをストレージプール218に格納するための機能を含む。
【0018】
一実装形態では、ストレージプール218は、ストレージデバイス220~220Nを備える。ストレージデバイスは、データを移動および格納する任意の装置であり、ハードディスクドライブ、ソリッドステートドライブ、光学ドライブ、磁気ドライブ、およびその他のアドレス指定可能なメモリの領域であってもよいが、これらに限定されない。一般に、ストレージプール218は、ファイルシステム206からストレージプールに送信されたデータを格納するためのブロックデバイス220~220Nとして、1つ以上の物理的な記憶ドライブまたはディスクを備える。
【0019】
一実装形態では、オペレーティングシステム204が提供する動作は、オブジェクトに対する動作に対応する。言い換えると、特定の動作(すなわち、トランザクション)を行う要求がオペレーティングシステム204からシステムコールインタフェース208を介してデータ管理部(Data Management Unit)(図示せず)に転送される。一実装形態では、DMUが、オブジェクトに対して動作を直接行う要求を、ストレージプール218内の物理的位置で読み出し動作を行う要求(すなわち、入出力要求)に変換する。ストレージプールアロケータ(SPA:Storage Pool Allocator)212がDMUから要求を受信し、ストレージプール218からブロックを読み出す。一実装形態では、SPA212は、入出力レイヤ216とその他のモジュールとを備え、これらは、ストレージプール218からデータを読み出すためにSPA212によって使用されてもよい。一実装形態では、入出力レイヤ216は、入出力要求を受信し、入出力要求を処理するためにトランザクション群にグループ分けする。
【0020】
具体的な一実装形態では、ファイルシステム206は、ストレージプール218のストレージデバイス220~220Nに送られた各入出力要求を監視および追跡するためのプログラムまたはその他の方法を含む。よって、本明細書に記載の方法および動作は、
図2のファイルシステム206によって実行されてもよい。このような方法および動作は、1つ以上のソフトウェアプログラムの実行によって、1つ以上のハードウェアコンポーネントによって、またはソフトウェアプログラムとハードウェアコンポーネントとの組み合わせによって実行されてもよい。しかしながら、他の実施形態では、方法および動作は、データの入出力要求が送信され得る任意のコンピューティングデバイスまたは記憶システムの構成要素によって実行されてもよい。たとえば、本明細書に記載の方法を実行するために、第2のアプリケーションがオペレーティングシステム204によって実行されてもよい。一般に、任意のコンピューティングデバイスまたはコンピューティングデバイスの構成要素が本明細書に含まれる動作および方法を実行してもよい。
【0021】
上述したように、ストレージプール218のストレージデバイス220~220N上のデータを取り出すまたはストレージデバイス220~220N上にデータを格納するために、オペレーティングシステム204が提供する動作は、ファイルシステム206に送信される。次に、データを格納および/または取り出すために、これらの入出力要求がファイルシステム206によってストレージプールの適切なストレージデバイス220~220Nに送信される。よって、ファイルシステム206は、どのストレージデバイスまたはデバイス220~220Nが要求されたデータを含むのかを理解し、かつ、適切な入出力要求を提供することによって、各入出力要求を管理する。さらには、多くのストレージデバイス220~220Nは、デバイスが同時に処理できる入出力要求の数が限られている。たとえば、いくつかのストレージデバイス220~220Nは、そのデバイスの入出力要求キューが一杯であることをファイルシステム206に通知する前に、1度に10個の入出力要求しか処理しないかもしれない。また、入出力要求を処理または完了すると、ストレージデバイス220~220Nは、要求が完了したというなんらかの指示、および別の入出力要求がストレージデバイスに送信されてもよいという指示をファイルシステム206に提供してもよい。このように、ファイルシステム206(または、記憶システム200の他の構成要素)は、ストレージプール218のストレージデバイス220~220Nに対する入出力要求のためのゲートウェイとして機能する。
【0022】
上述したように、多くのストレージデバイス220~220Nは、いくつかの入出力要求を履行することを遅延させるメカニズムまたはプロシージャを採用してもよい。たとえば、ディスクドライブのディスクヘッドの位置、およびディスクドライブ上の要求されたデータの位置によっては、いくつかのストレージデバイス220~220Nは、ディスクヘッドがディスク上の記憶位置に物理的に近くなるまでデータの取得または格納を遅延させる。場合によっては、これは、ストレージデバイス220~220Nに送られた入出力要求に対する応答を大幅に遅らせてしまう可能性がある。さらには、遅延しているまたは「枯渇状態」の入出力要求を履行するためのプロシージャをいくつかのディスクドライブが含んでいるものの、このようなプロシージャは、ストレージデバイス220~220Nの種類によっては、数秒間発生しない可能性がある。入出力要求を処理する際のこの遅延は、遅延した要求が処理されるのをシステムが待っている間に、記憶システムの性能に悪影響を与える可能性がある。
【0023】
入出力要求を処理する際のこの遅延に対処するために、記憶システム200は、ストレージデバイス220~220Nに送られた要求があまりにも長い間履行されないままにならないよう、外部で管理される入出力要求スタベーション処理を実行してもよい。具体的には、
図3は、入出力要求のスタベーションを防ぐために記憶システムのストレージデバイスのキューを管理するための方法のフローチャートである。ストレージプール218の1つ以上のストレージデバイス220~220Nのキューを管理することに加えて、
図4は、入出力要求のスタベーションを防ぐために記憶システムのストレージデバイスに対する入出力要求を外部で管理するための方法のフローチャートである。記載の方法を実行することによって、ファイルシステム206は、記憶システム200によって判断されたように処理があまりにも長い間遅延している要求がないよう、ストレージプール218の1つ以上のストレージデバイス220~220Nに送られた入出力要求を外部で管理してもよい。
【0024】
図3の方法300は、動作302において、関連するストレージプール218の特定のストレージデバイス220に対する入出力要求をファイルシステム206が受信することから開始する。入出力要求は、ストレージプール218からデータを読み出すまたは書き込む要求であってもよく、記憶システム200のオペレーティングシステム204から受信してもよい。動作304では、ファイルシステム206は、受信した特定のストレージデバイス220に対する入出力要求に入出力の順序値を割り当てる。たとえば、ファイルシステム206は、ストレージプール218のストレージデバイス220~220Nの各々に対する1つ1つの入出力要求の順序付きリストを保持してもよい。一実施形態では、これらの順序付きリストは、デバイスごとの入出力が受信された値を含む。よって、特定のストレージデバイス220に対する第1の入出力要求には、「1」という順序値が与えられ、そのデバイスに対する第2の入出力要求には、「2」という順序値が与えられ、以下同様である。具体的な一実施形態では、特定のストレージデバイスに対する入出力要求に関連付けられた順序値は、64ビットの2進数である。ファイルシステム206は、各ストレージデバイス220~220Nに対する入出力要求の順序付きリストをストレージプール218に保持し、入出力要求を受信すると、受信したストレージデバイス220~220Nに対する入出力要求に関連付けられた順序値をインクリメントする。具体的な一実施形態では、入出力要求の順序値は、記憶システム200が再起動または電源がオンになったときに、「1」から再スタートしてもよい。
【0025】
別の実施形態では、順序付きリストに含まれる1つ1つの入出力要求に関連付けられた値は、入出力要求が満たされるまたは処理される順に基づいてもよい。たとえば、本実施形態におけるファイルシステム206は、入出力要求が処理されるのをファイルシステムが決定する順に基づいて、受信した入出力要求の順序を並び替える。さらには、順序付きリストに含まれる各入出力要求に割り当てられた順序値は、キューの先頭からの入出力が入出力装置に発行されたときに割り当てられてもよい。このように、さらなる入出力要求は、このような要求をキューの末尾に追加しなくてもキューに追加することができる。しかしながら、本開示を説明するにあたってわかりやすくするために、入出力要求がキューの最後尾に追加され、要求が受信された順に基づいて順序値が割り当てられる実施形態が用いられる。
【0026】
また、各受信した入出力要求に順序値を関連付けることに加えて、ファイルシステム206は、ストレージデバイス220~220Nごとの入出力要求キューをストレージプール218に保持してもよい。具体的な一実施形態では、ファイルシステム206は、ファイルシステムが管理する入出力要求キューを1つ以上のメモリデバイスに格納してもよい。さらには、ファイルシステム206は、1つ以上の命令を実行してキューを1つ以上のメモリデバイスに格納してもよい。要求キューは、ストレージプール218が含む特定のストレージデバイス220~220Nに対する入出力要求の順序付きリストである。具体的には、ストレージデバイスについてのキューは、最も古い入出力要求(すなわち、最も低い順序値を有するそのストレージデバイスに対する入出力要求)をキューの先頭に含み、最も新しい入出力要求(すなわち、最高順序値を有するそのストレージデバイスに対する入出力要求)をキューの末尾に含んでもよい。このようなキューは、ストレージプール218のストレージデバイス220~220Nごとに保持されてもよい。これに加えて、ファイルシステム206は、どの入出力要求がストレージデバイス220に送られたか、かつ、キューに含まれるどの入出力要求が送られていないかのリストまたは指示を保持してもよい。上述したように、いくつかのストレージデバイス220は、ストレージデバイスで待ち状態の入出力要求の数を制限してもよい。よって、ファイルシステム206は、特定のストレージデバイスで待ち状態の入出力要求の数がストレージデバイスが設定した制限を超えないよう、この数を追跡してもよい。ファイルシステム206を手助けするために、ストレージプール218のストレージデバイス220~220Nのうちの1つ以上は、ストレージデバイスに対するさらなる入出力要求を当該ストレージデバイスが受け入れることができるときを示す利用可能な指示または信号をファイルシステムに送信してもよい。
【0027】
図3の方法300に戻ると、動作306において、ファイルシステム206は、受信した入出力要求を当該要求のストレージデバイス220に関連付けられた適切なキューに追加してもよい。さらには、受信した入出力要求がキューの中で最も高い順序値を有するので、この要求は、キューの末尾に加えられる。動作308では、要求の完了の指示を関連するストレージデバイスから受信した場合、ファイルシステム206は、処理されたまたは完了した入出力要求を関連するキューから削除してもよい。このように、ストレージデバイスの待ち状態のキューから完了した入出力要求が削除されると、新しい入出力要求がこのキューに追加される。
【0028】
上述したストレージデバイスキューによって、ファイルシステム206は、ストレージデバイスの入出力要求のスタベーションを外部で管理することができる。上述したように、ストレージデバイス220は、様々な理由でいくつかの入出力要求を履行することを遅らせてしまう可能性がある。この入出力要求の遅延またはスタベーションは、記憶システム200の性能に悪影響を与えてしまう可能性がある。キューによって、ストレージデバイス220による入出力要求のスタベーションは、ファイルシステム206によって低減または管理されて、記憶システム200へのマイナスの影響が減る。具体的には、
図4は、入出力要求のスタベーションを防ぐために記憶システム200のストレージデバイス220に対する入出力要求を外部で管理するための方法400のフローチャートである。方法400の動作は、記憶システム200のファイルシステム206、またはシステムのその他の構成要素によって実行されてもよい。
【0029】
動作402では、ファイルシステム206は、ストレージプール218のストレージデバイス220に対する新しい入出力要求、またはストレージデバイスから入出力要求が完了したという指示を待つ。新しい入出力要求が届いた場合、または入出力要求が完了したという指示が受信された場合、動作404において、ファイルシステム206は、ストレージデバイス220に発行するさらなる入出力要求があるかどうかを判断する。これ以上発行する入出力要求がない場合、ファイルシステムは動作402に戻り、新しい要求を待つ。しかしながら、入出力要求が発行される場合、ファイルシステム206は、動作406において、ストレージデバイス220がさらなる入出力要求を受け付けるまたは受け付けるための容量を有しているかどうかを判断する。さらなる入出力要求を受け付けるまたは受け付けるための容量を有していない場合、ファイルシステム206は動作402に戻り、ストレージデバイスから入出力要求が完了したという指示を待つ。
【0030】
動作406において判断されたようにストレージデバイス220が容量を有する場合、ファイルシステムは、新しい入出力要求をストレージデバイスに送信するのを遅らせて、枯渇状態の入出力要求を処理するようストレージデバイスに強制するかどうかを判断してもよい。たとえば、ストレージデバイスに送られた入出力要求は、ストレージデバイスによってタイミングよく処理されていない可能性がある。遅延した入出力要求の処理を強制するために、ファイルシステム206は、遅延した入出力要求が処理されるまで新しい入出力要求をストレージデバイスに送信するのをやめるように構成されてもよい。つまり、ファイルシステム206は、遅延した入出力要求が完了するまで、ストレージデバイスに新しい入出力要求を提供しなくてもよい。ファイルシステム206が1つ以上のストレージデバイス220~220Nへの入出力要求の送信を制御して枯渇状態の入出力要求を管理する方法は、
図4の動作によって実行されてもよい。
【0031】
枯渇状態の入出力要求が処理されるまでにストレージデバイス220に送られた入出力要求がいつなくなるのかを判断するために、ファイルシステム206は、動作408において、キューに含まれるストレージデバイスに対する最も古い入出力要求の順序値と最も新しい入出力要求の順序値との差を算出してもよい。たとえば、ファイルシステム206は、上述したやり方と同様のやり方で、ストレージデバイス200に対する入出力要求キューをストレージプール218に保持している。入出力キューに含まれる各要求は、入出力要求がキューに入れられた順を示す順序値を含む。よって、ファイルシステム206は、最も高い入出力要求順序値(キューの末尾にある入出力要求)と最も低い残りの入出力要求順序値(キューの先頭にある入出力要求)との差を算出する。たとえば、ストレージデバイス200についての入出力キューは、2いう順序値を有する要求を先頭に含み、15という順序値を有する要求を末尾に含んでもよい。このキューについての算出された差は、13という値になる。
【0032】
動作410では、ファイルシステムは、特定の入出力要求キューについての算出された差を閾値と比較してもよい。一実施形態では、閾値は、ストレージデバイス220に対する1つ以上の入出力要求があまりにも長い間枯渇状態であるときを検知するためにファイルシステム206が利用する、予め定められた値である。たとえば、ファイルシステム206は、閾値をシステム管理者から受信して、
図4の方法400において使用してもよい。他の実施形態では、閾値は、当該値がファイルシステムによって予め定められないよう、使用されるストレージデバイスに基づいて、定められた時間または日に基づいて、システムまたは特定のストレージデバイスへの特定の負荷に基づいてなどによって異なり得る。具体的な一実施形態では、閾値は、ストレージデバイスが受け付けることのできる同時の入出力要求の最大数に係数を乗算したものである。たとえば、閾値は、ストレージデバイス220が同時に処理している入出力要求の最大数(この例において、10)に4という係数を乗算することによって決定される、40であってもよい。しかしながら、一般に、閾値は、ファイルシステム206によって決定または利用される任意の数であってもよい。
【0033】
動作412では、ファイルシステム206は、キューに含まれる最も古い入出力要求と最も新しい入出力要求との算出された差が閾値以下であるかどうかを、比較に基づいて判断する。差が閾値以下である場合、ファイルシステム206は、動作414に移動し、キューに含まれる、まだストレージデバイス220に送信されていない最も古い入出力要求を発行する。つまり、ファイルシステム206は、ストレージデバイスに対するさらなる要求が発生するように、ストレージデバイスに対する待ち状態の入出力要求の数と比較して、キューに含まれる最も古い入出力要求はストレージデバイス220によってあまりにも長い間枯渇状態にされていないと判断する。しかしながら、場合によっては、キューに含まれる最も古い順序値と最新の順序値との算出された差の閾値との比較は、ストレージデバイス220に送られた入出力要求がしばらくの間処理または完了されていないことを示す。この入出力要求は、ストレージデバイス220によって枯渇状態にされていると考えられてもよい。これに応答して、ファイルシステムは、動作401に戻ることによって、最も古い待ち状態の入出力要求が処理されるまでストレージデバイス220に対する入出力要求を発行することをやめてもよい。
【0034】
上述した動作によって、ファイルシステム206は、枯渇状態の要求がストレージデバイスによって履行されるまで入出力要求がストレージデバイスに発行されないようにする。このように、ファイルシステム206は、入出力要求の完了を監視し、完了した場合、これらの完了した要求をキューから削除してもよい。完了すると、ファイルシステム206は、完了した要求が枯渇状態の入出力要求であったかどうかを判断してもよい。枯渇状態の入出力要求でなかった場合、
図4の方法400は、さらに、枯渇状態の入出力要求が処理されるまたは完了するまで、要求をストレージデバイスに発行するのをやめてもよい。枯渇状態の要求が完了すると、ファイルシステム206は、完了させるための入出力要求をストレージデバイスに発行し続けてもよい。
【0035】
図5A~
図5Gは、ストレージデバイスへの入出力要求のスタベーションを防ぐための、ストレージデバイスに対する入出力要求のキューの例を示す図である。具体的には、図に示すキューは、
図4の方法400を実行するファイルシステム206の例を提供する。よって、
図5A~
図5Gに示すキューは、(おそらく、ストレージプール218の一部としての)1つのストレージデバイス220についてのキューであるが、ファイルシステム206は、ファイルシステムに接続されたまたは通信している複数のストレージデバイスについての同様のキューを保持してもよいことがわかる。
図5A~
図5Gに示すキューは、ファイルシステム206と通信しているストレージデバイスについての入出力要求キューの一例にすぎない。さらには、いくつかの実施形態では、1つのストレージデバイスに対して複数のキューがストレージプールに保持されてもよい。よって、ストレージデバイスに対する入出力要求は、そのストレージデバイスのために、あるキューから別のキューに移動されてもよい。しかしながら、わかりやすくするために、
図5A~
図5Gには1つのキューを示す。
【0036】
ストレージデバイス220に対する入出力要求を管理するための入出力要求キュー500を
図5Aに示す。具体的には、キューは、ファイルシステム206で受信された、特定のストレージデバイスに向けられた10個の入出力要求を含んだリストを含む。
図3を参照して述べた動作によって、ファイルシステム206は、各受信したストレージデバイスに対する入出力要求を順序値に関連付ける。この具体的な例において、キュー500は、ストレージデバイスに向けられた最初の10個の入出力要求を含み、これらはキューに適宜配置されている。さらには、キュー500に含まれる灰色の入出力要求の各々は、当該要求がストレージデバイスに送信済みであることを示している。上述したように、多くのストレージデバイスは、デバイスが処理できる同時の入出力要求の数が制限されている。この具体的な例において、ストレージデバイスは、キュー500に含まれる各入出力要求がストレージデバイスに送信されるように、10個の同時の入出力要求を処理することができる。
【0037】
図5Aにも示すように、(順序値5および順序値6の要求として示される)2つの入出力要求がキュー500から削除されてもよい。当該要求は、これらの特定の入出力要求が処理されたという指示をファイルシステムがストレージデバイスから受信した後に、ファイルシステム206によってキュー500から削除されてもよい。さらには、より詳細に後述するが、ストレージデバイスに対する新しい入出力要求は、ファイルシステムで受信されると、キュー500の末尾に追加されてもよい。これらの新しい要求は、キューに含まれる最後の入出力要求からインクリメントされた順序値を含む。このように、ストレージデバイスに対する入出力要求は、新しい入出力要求をキューの最後尾に追加し、完了した入出力要求を削除することによって、ファイルシステムによって管理されてもよい。
【0038】
図5Bのキュー502では、入出力要求5および6が削除されており、11、12、および13という順が付けられた新しい入出力要求がキューの末尾に追加されている。さらには、入出力要求5および6はストレージデバイスによって完了され、キュー502から削除されているので、さらなる入出力要求がストレージデバイスに送信されてもよい。さらなる入出力要求がストレージデバイスに送られるかどうかを判断するために、ファイルシステム206は、
図4の方法400を実行する。つまり、ファイルシステム206は、枯渇状態の入出力要求が処理されるまでストレージデバイスに新しい要求が発行されないように、キューに含まれる最も古い入出力要求が枯渇状態であるかどうかを判断する。具体的には、ファイルシステム206は、キュー502に含まれる最も古い入出力要求(この例において、入出力要求1)とキューに含まれる最も新しい入出力要求(この例において、入出力要求13)との差を算出する。
図5Bに示すように、算出された差によって、12という値が得られる。
【0039】
次に、ファイルシステム206は、算出された差を閾値と比較する。図に示す例では、算出された差が閾値に等しいと比較結果が示すように、閾値は12である。よって、キューに含まれる最も古い入出力要求とキューに含まれる最も新しい入出力要求との算出された差が閾値以下であるので、ストレージデバイスに対する入出力要求は、1つとして枯渇状態ではなく、ストレージデバイスに新しい要求が送信されてもよい。上述したように、ファイルシステムが利用する閾値は、ファイルシステムが決定または受信する任意の値であってもよい。新しい入出力要求がストレージデバイスに送信されてもよく、かつ、さらに2つの要求のための容量をストレージデバイスが有している(上記入出力要求5および6の完了に基づいて)ので、
図5Cの塗りつぶされた四角い枠で示される入出力要求11および
10がストレージデバイスに送信される。
【0040】
さらに、
図5Cに示すように、入出力要求3、9、10、および11は、ストレージデバイスによって完了され、キュー504から削除されていると想定する。また、
図5Dでは、入出力要求14として示される新しい入出力要求がキュー504の末尾に追加されている。要求3、9、10、および11の完了によって、ストレージデバイスは、さらに4つの入出力要求を受信できる容量を有する。よって、
図5Dでは、ファイルシステム206は、キュー506に含まれる最も古い入出力要求(要求1)と最も新しい入出力要求(要求14)との差を再び算出する。この算出された差は、図に示すように、13という値である。キュー506からさらなる要求を発行すべきかどうかを判断するために、この算出された差は、12という閾値と比較される。算出された差が閾値よりも大きいため、キュー506に含まれる入出力要求1について枯渇状態の入出力であるという判断がされる。ファイルシステムは、比較に基づいてキュー506に含まれる最も古い要求が枯渇状態であると検出すると、当該入出力要求が処理されるまでストレージデバイスに新しい入出力要求を発行するのをやめさせてもよい。よって、ストレージデバイスは新しい入出力要求を受信できる容量を有しているにもかかわらず、枯渇状態の要求が処理されるまでストレージデバイスへの入出力要求13および14の送信は遅延させられる。
【0041】
図5Eでは、枯渇状態の入出力要求(入出力要求1)はストレージデバイスによって完了されており、キュー508から削除されている。場合によっては、ファイルシステム206は、未処理の要求のみが枯渇状態の要求であるまで、入出力要求を送信するのをやめてもよい。つまり、ファイルシステムは、枯渇状態の要求が処理されるまで新しい入出力要求をストレージデバイスに送信することをやめることによって、枯渇状態の要求を処理するよう、ストレージデバイスに強制してもよい。さらには、
図5A~
図5Gの例には示さないが、ファイルシステム206は、ストレージデバイスに対する新しい入出力要求を受信し続けて、それらをキューの末尾に追加してもよい。しかしながら、このような要求は、枯渇状態の要求が処理されるまで、ストレージデバイスに発行されない。さらには、枯渇状態の要求が処理されるのをファイルシステムが待機している間に、他の送信済みの要求(キュー508の入出力要求2、4、7など)が処理されてキューから削除されてもよい。
【0042】
図5Fに示すように、枯渇状態の要求が削除されると、ファイルシステム206は、最も古い要求と最も新しい要求との差を再び算出する。この例において、算出された差は、新しい要求がこれからストレージデバイスに送信されてもよいように、閾値以下である。よって、
図5Gに示すように、次に、入出力要求13および14が処理のためにストレージデバイスに送信されてもよい。上述した例および動作によって、ファイルシステムは、ストレージデバイスに送信された入出力要求の数を管理して、要求のうちの1つ以上のスタベーションを外部で制御し、いずれの要求もファイルシステムが判断するようにあまりにも長い間枯渇状態にならないようにしてもよい。このストレージデバイスに対する要求の外部制御は、ストレージデバイス自体よりも積極的であってもよく、要求の重要度または価値を考慮に入れてもよい。
【0043】
ここで、
図6を参照すると、本明細書において記載の様々なシステムおよび方法を実施し得る、1つ以上の演算装置を有する例示的なコンピューティングシステム600の詳細な説明を提供する。コンピューティングシステム600は、ストレージデバイス102~104、記憶システム200、ファイルシステム206、ユーザデバイス112~114、および/またはその他のコンピューティングデバイスに適用可能であってもよい。これらのデバイスの具体的な実装形態は、それぞれ異なる可能な特有のコンピューティングアーキテクチャのものであってもよく、それらのすべては明細書に具体的に記載されていないが、当業者は理解するだろうことがわかるだろう。
【0044】
コンピュータシステム600は、コンピュータ処理を実行するためのコンピュータプログラムプロダクトを実行することができる一般的なコンピューティングシステムであってもよい。データおよびプログラムファイルがコンピュータシステム600に入力されてもよく、コンピュータシステム600は、このファイルを読み出して、それに含まれるプログラムを実行する。汎用コンピュータシステム600の要素のうちのいくつかを
図6に示す。
図6では、プロセッサ602は、入出力(I/O)部604と、中央処理装置(CPU:Central Processing Unit)606と、メモリ部608とを有すると示されている。コンピュータシステム600のプロセッサ602が1つの中央処理装置606を備えるように、または、一般に並列処理環境と呼ばれる複数の処理装置を備えるように、1つ以上のプロセッサ602があってもよい。コンピュータシステム600は、従来のコンピュータ、分散コンピュータ、または、クラウドコンピューティングアーキテクチャを介して利用可能になる1つ以上の外部のコンピュータなど、その他の種類のコンピュータであってもよい。今回記載された技術は、必要に応じて、メモリ608にロードされたソフトウェアデバイス、設定済みのDVD/CD-ROM610または記憶装置612上に格納されたソフトウェアデバイス、および/または、有線またはワイヤレスネットワークリンク614を介して通信されるソフトウェアデバイスで実装されるため、
図6のコンピュータシステム600を記載の動作を実施するための専用マシンに変えることができる。
【0045】
I/O部604は、1つ以上のユーザインタフェース装置(たとえば、キーボード616および表示部618)と、ディスク記憶装置612と、ディスク駆動装置620とに接続される。タブレットまたはスマートフォンデバイスの場合、物理キーボードがなくてもよいが、代わりに、コンピュータ生成されたタッチスクリーンキーボードを有するタッチスクリーンがあってもよい。一般に、ディスク駆動装置620は、DVD/CD-ROM媒体610を読み出すことができるDVD/CD-ROM駆動装置である。DVD/CD-ROM媒体610は、通常、プログラムおよびデータ622を含む。メモリ部604内に、ディスク記憶装置612上に、コンピュータシステム600のDVD/CD-ROM媒体610上に、または、1つ以上のデータベース管理プロダクト、ウェブサーバプロダクト、アプリケーションサーバプロダクト、および/または他の追加のソフトウェアコンポーネントを含む、コンピュータプログラムプロダクトを有するクラウドコンピューティングアーキテクチャを介して利用可能になる外付けストレージデバイス上に、今回記載された技術に従ってシステムおよび方法を実現するためのメカニズムを含んだコンピュータプログラムプロダクトが存在してもよい。これに代えて、ディスク駆動装置620は、光学ドライブユニット、フラッシュドライブユニット、磁気ドライブユニット、またはその他の記憶媒体駆動装置によって置き換えまたは補われてもよい。同様に、ディスク駆動装置620は、RAM(Random Access Memory)、磁気メモリ、光メモリ、および/または、スマートフォンおよびタブレット端末において共通して見られる様々な他の可能な形態の半導体ベースのメモリによって置き換えまたは補われてもよい。
【0046】
ネットワークアダプタ624は、ネットワークリンク614を介してコンピュータシステム600をネットワークに接続することができる。コンピュータシステムは、ネットワークリンク614を通じて命令およびデータを受信できる。このようなシステムとして、パーソナルコンピュータ、IntelまたはPowerPCベースのコンピューティングシステム、AMDベースのコンピューティングシステム、およびWindows(登録商標)ベース、UNIX(登録商標)ベース、またはその他のオペレーティングシステムを実行するその他のシステムなどが挙げられる。端末、ワークステーション、携帯電話、タブレット端末またはスレート、マルチメディアコンソール、ゲーミングコンソール、セットトップボックスなどのデバイスをコンピューティングシステムが含んでもよいことを理解されたい。
【0047】
LANネットワーク環境で利用される場合、コンピュータシステム600は、ネットワークインタフェースまたはアダプタ624を通じてローカルネットワークに(有線接続によって、またはワイヤレスで)接続される。ネットワークインタフェースまたはアダプタ624は、一種の通信デバイスである。WANネットワーク環境で利用される場合、コンピュータシステム600は、通常、モデム、ネットワークアダプタ、または、ワイドエリアネットワークで通信を確立するためのその他の種類の通信デバイスを備える。ネットワークで結ばれた環境では、コンピュータシステムまたはその一部と比較して示されるプログラムモジュールがリモートメモリストレージデバイスに格納されてもよい。図に示すネットワーク接続は、コンピュータ間に通信リンクを確立するための通信デバイスまたはその他の手段の例であることがわかる。
【0048】
本明細書に記載の動作の一部またはすべては、プロセッサ602によって実行されてもよい。さらには、ローカルコンピューティングシステム、リモートデータソースおよび/またはサービス、ならびにその他の関連するロジックは、ストレージデバイスメンテナンス、ストレージデバイス102~104、ユーザデバイス112~114、および/または記憶システム100のその他の演算装置または構成要素の動作を制御するように構成されたファームウェア、ハードウェア、および/またはソフトウェアを表す。このようなサービスは、汎用コンピュータおよび専用ソフトウェア(サービスソフトウェアを実行するサーバなど)、専用コンピューティングシステムおよび専用ソフトウェア(サービスソフトウェアを実行するモバイル機器またはネットワークアプライアンスなど)、またはその他のコンピューティング構成を用いて実施されてもよい。これに加えて、本明細書に開示の1つ以上の機能は、プロセッサ602によって生成されてもよく、ユーザは、使用中のデータのいくつかがオンラインソースおよびデータストアから直接入ってくる状態で、1つ以上のユーザインタフェース装置(たとえば、キーボード616、表示部618、およびユーザデバイス112~114)を用いてGUIとやり取りしてもよい。
図6で説明したシステムは、本開示の態様に応じて使用され得るまたは構成されうるコンピュータシステムの1つの可能な例にすぎない。
【0049】
なお、
図3および
図4のフローチャートは、一例にすぎない。本発明の教示の別の実施形態は、本発明の教示の趣旨および範囲に影響を与えることなく、動作を追加、動作を省略、または、動作の順序を変更してもよい。上記は、発明の原理を例示しているにすぎない。記載の実施形態に対する様々な変更例および代替例が、本明細書における教示に鑑みて当業者に明らかになるだろう。よって、当業者は、明細書において明確に示したり記載したりしていないが、発明の原理を含み、よって、本発明の教示の趣旨および範囲に含まれる数多くのシステム、配置、および方法を考案できることがわかるだろう。上記説明および図面から、図示および記載の特定の実施形態が例示のためだけであり、本発明の教示の範囲を限定することを意図しないことを当業者は理解するだろう。特定の実施形態の詳細についての言及は、本発明の範囲を限定することを意図しない。