(57)【要約】    ストライピングされた情報を複数のストレージデバイス間で再平衡化するための開示されたコンピュータ実施方法は、（１）「Ｙ」連続ストレージ空間を「Ｙ」物理デバイス上に割り当てることと、（２）コンピューティングデバイスにおいて、「Ｙ」連続記憶空間を「Ｎ」サブボリュームに分割することと、（３）「Ｎ」サブボリュームを「Ｘ」論理ストライプに割り当てることと、（４）第１の「Ｙ」論理ストライプの各々を、「Ｙ」物理ストライプの各々内のそれぞれの物理ストライプに割り当てることと、（５）残りのサブボリュームをそれぞれの論理ストライプに分配することと、（６）それぞれのサブボリュームを「Ｙ」物理ストライプ間で割り当てることと、を含み得る。様々な別の方法、システム、及びコンピュータ可読媒体もまた開示される。  【選択図】図３
2021520562.tif 000002
【特許請求の範囲】
【請求項１】
ストライピングされた情報を複数のストレージデバイス間で再平衡化するためのコンピュータ実施方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを含むコンピューティングデバイスによって実施され、前記方法が、
「Ｙ」連続ストレージ空間を「Ｙ」物理デバイス上に割り当てることと、
前記コンピューティングデバイスにおいて、前記「Ｙ」連続ストレージ空間を「Ｎ」サブボリュームに分割することと、
前記「Ｎ」サブボリュームを「Ｘ」論理ストライプに割り当てることと、
前記第１の「Ｙ」論理ストライプの各々を、前記「Ｙ」物理ストライプの各々内のそれぞれの物理ストライプに割り当てることと、
残りのサブボリュームをそれぞれの論理ストライプに分配することと、
前記それぞれのサブボリュームを「Ｙ」物理ストライプ間で割り当てることと、を含む、コンピュータ実施方法。
【請求項２】
分割することが、｛２、３、．．．Ｘ｝の最小公倍数として「Ｎ」を計算することを含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
少なくとも１つの論理ストライプを論理ストライプ識別子でタグ付けすることと、を更に含む、請求項１に記載のコンピュータ実施方法。
【請求項４】
少なくとも１つのサブ論理ストライプをサブ論理ストライプ識別子でタグ付けすること、を更に含む、請求項１に記載のコンピュータ実施方法。
【請求項５】
少なくとも１つのサブボリュームを過剰使用についてチェックすることと、
サブボリュームが過剰使用されたと識別されたとき、前記過剰使用されたサブボリュームを異なる物理ストライプに移動させることと、を更に含む、請求項１に記載のコンピュータ実施方法。
【請求項６】
「Ｐ」物理ストライプを追加することであって、「Ｐ」が整数である、追加することと、
前記Ｙ＋１〜Ｙ＋Ｐ論理ストライプ及びその中のサブボリュームを前記追加の「Ｐ」物理ストライプに転送することと、
Ｙ＋Ｐ＋１内のサブボリューム及び任意のより上位の論理ストライプを前記Ｙ＋Ｐ物理ストライプ間で再分配することと、を更に含む、請求項１に記載のコンピュータ実施方法。
【請求項７】
少なくとも１つのサブボリュームを過剰使用についてチェックすることと、
過剰使用されたサブボリュームが検出されたとき、前記過剰使用されたサブボリュームを前記追加の「Ｐ」物理ストライプに転送することと、を更に含む、請求項６に記載のコンピュータ実施方法。
【請求項８】
前記Ｙ＋１論理ストライプからのサブボリュームを前記第１の「Ｙ」物理ストライプ間で再分配することと、
Ｙ＋２内のサブボリューム及び任意のより上位の論理ストライプを前記第１の「Ｙ」物理ストライプ間で再分配することと、
前記複数のストレージデバイスから前記Ｙ＋１物理ストライプを除去することと、を更に含む、請求項６に記載のコンピュータ実施方法。
【請求項９】
少なくとも１つのサブボリュームを過剰使用についてチェックすることと、
過剰使用されたサブボリュームが検出されたとき、前記過剰使用されたサブボリュームを、最小数のサブボリュームを記憶する物理ストライプに転送することと、を更に含む、請求項８に記載のコンピュータ実施方法。
【請求項１０】
前記「Ｙ」論理ストライプからのサブボリュームを前記第１の「Ｙ−１」物理ストライプ間で再分配することと、
「Ｙ＋１」内のサブボリューム及び任意のより上位の論理ストライプを前記第１の「Ｙ−１」物理ストライプ間で再分配することと、
前記複数のストレージデバイスから前記「Ｙ」物理ストライプを除去することと、を更に含む、請求項１に記載のコンピュータ実施方法。
【請求項１１】
少なくとも１つのサブボリュームを過剰使用についてチェックすることと、
過剰使用されたサブボリュームが検出されたとき、前記過剰使用されたサブボリュームを、最小数のサブボリュームを記憶する物理ストライプに転送することと、を更に含む、請求項１０に記載のコンピュータ実施方法。
【請求項１２】
「Ｐ」物理ストライプを追加することであって、「Ｐ」が整数である、追加することと、
前記Ｙ＋１〜Ｙ＋Ｐ論理ストライプ及びその中のサブボリュームを前記追加の「Ｐ」物理ストライプに転送することと、
Ｙ＋Ｐ＋１内のサブボリューム及び任意のより上位の論理ストライプを前記Ｙ＋Ｐ物理ストライプ間で再分配することと、を更に含む、請求項１０に記載のコンピュータ実施方法。
【請求項１３】
少なくとも１つのサブボリュームを過剰使用についてチェックすることと、
過剰使用されたサブボリュームが検出されたとき、前記過剰使用されたサブボリュームを前記追加の「Ｐ」物理ストライプに転送することと、を更に含む、請求項１２に記載のコンピュータ実施方法。
【請求項１４】
ストライピングされた情報を複数のストレージデバイス間で再平衡化するためのシステムであって、
メモリに記憶されており、「Ｙ」連続ストレージ空間を「Ｙ」物理デバイス上に割り当てる第１の割り当てモジュールと、
前記メモリに記憶されており、前記「Ｙ」連続ストレージ空間を「Ｎ」サブボリュームに分割する分割モジュールと、
前記メモリに記憶されており、前記「Ｎ」サブボリュームを「Ｘ」論理ストライプに割り当てる第２の割り当てモジュールと、
前記メモリに記憶されており、前記第１の「Ｙ」論理ストライプの各々を前記「Ｙ」物理ストライプの各々内のそれぞれの物理ストライプに割り当てる第３の割り当てモジュールと、
前記メモリに記憶されており、残りのサブボリュームをそれぞれの論理ストライプに分配する分配モジュールと、
前記メモリに記憶されており、前記それぞれのサブボリュームを前記「Ｙ」物理ストライプ間で割り当てる「Ｎ番目の」割り当てモジュールと、
前記第１の割り当てモジュール、前記分割モジュール、前記第２の割り当てモジュール、前記第３の割り当てモジュール、前記分配モジュール、及び前記「Ｎ番目の」割り当てモジュールを実行する、少なくとも１つの物理的プロセッサと、を備える、システム。
【請求項１５】
メモリに記憶されており、少なくとも１つのサブボリュームを過剰使用についてチェックするチェックモジュールと、
前記メモリに記憶されており、前記サブボリュームが過剰使用されたと識別されたとき、前記過剰使用されたサブボリュームを異なる物理ストライプに移動させる移動モジュールと、を更に備える、請求項１４に記載のシステム。
【請求項１６】
前記メモリに記憶されており、「Ｐ」物理ストライプを追加し、「Ｐ」は整数である、追加モジュールと、
前記メモリに記憶されており、前記Ｙ＋１〜Ｙ＋Ｐ論理ストライプ及びその中のサブボリュームを前記追加の「Ｐ」物理ストライプに転送する転送モジュールと、
前記メモリに記憶されており、Ｙ＋Ｐ＋１内のサブボリューム及び任意のより上位の論理ストライプを前記Ｙ＋Ｐ物理ストライプ間で再分配する再分配モジュールと、を更に備える、請求項１４に記載のシステム。
【請求項１７】
前記メモリに記憶されており、前記「Ｙ」論理ストライプからのサブボリュームを前記第１の「Ｙ−１」物理ストライプ間で再分配する第１の再分配モジュールと、
前記メモリに記憶されており、Ｙ＋１内のサブボリューム及び任意のより上位の論理ストライプを前記第１の「Ｙ−１」物理ストライプ間で再分配する第２の再分配モジュールと、
前記メモリに記憶されており、前記複数のストレージデバイスから前記「Ｙ」物理ストライプを除去する除去モジュールと、を更に備える、請求項１４に記載のシステム。
【請求項１８】
１つ以上のコンピュータ実行可能命令を備える非一過性コンピュータ可読媒体であって、前記命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティングデバイスに、
「Ｙ」連続ストレージ空間を「Ｙ」物理デバイス上に割り当てることと、
前記コンピューティングデバイスにおいて、前記「Ｙ」連続ストレージ空間を「Ｎ」サブボリュームに分割することと、
前記「Ｎ」サブボリュームを「Ｘ」論理ストライプに割り当てることと、
前記第１の「Ｙ」論理ストライプの各々を前記「Ｙ」物理ストライプの各々内のそれぞれの物理ストライプに割り当てることと、
残りのサブボリュームをそれぞれの論理ストライプに分配することと、
前記それぞれのサブボリュームを前記「Ｙ」物理ストライプ間で割り当てることと、を行わせる、非一過性コンピュータ可読媒体。
【請求項１９】
コンピュータ実行可能命令を更に備える請求項１８に記載の非一過性コンピュータ可読媒体であって、前記命令は、前記コンピューティングデバイスに、
「Ｐ」物理ストライプを追加することであって、「Ｐ」が整数である、追加することと、
前記Ｙ＋１〜Ｙ＋Ｐ論理ストライプ及びその中のサブボリュームを前記追加の「Ｐ」物理ストライプに転送することと、
Ｙ＋Ｐ＋１内のサブボリューム及び任意のより上位の論理ストライプを前記Ｙ＋Ｐ物理ストライプ間で再分配することと、を行わせる、非一過性コンピュータ可読媒体。
【請求項２０】
コンピュータ実行可能命令を更に備える請求項１８に記載の非一過性コンピュータ可読媒体であって、前記命令は、前記コンピューティングデバイスに、
前記「Ｙ」論理ストライプからのサブボリュームを前記第１の「Ｙ−１」物理ストライプ間で再分配することと、
Ｙ＋１内のサブボリューム及び任意のより上位の論理ストライプを前記第１の「Ｙ−１」物理ストライプ間で再分配することと、
前記複数のストレージデバイスから前記「Ｙ」物理ストライプを除去することと、を行わせる、非一過性コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
データストレージデバイスのアレイは、ストライプ状にデータを記憶することができる。ストライピングは、データをセグメント化し、データストレージデバイスのアレイ内の異なる物理ストレージデバイス上に異なるデータセグメントを記憶する技術である。ストライピングは、異なる物理的ストレージデバイス上に記憶されたデータへの同時アクセスを可能にすることによって、Ｉ／Ｏ性能を増大させる。しかしながら、データストレージデバイスのアレイ内の物理的ストレージデバイスの数を拡大及び／又は減少することは、「再レイアウト」プロセスを実施することを必要とする場合がある。再レイアウトプロセスは、物理ストレージデバイスの初期グループからのストライピングされたデータを一時ストレージデバイスに連続的に移動させ、次いで、一時ストレージデバイスから物理ストレージデバイスの修正されたグループにストライピングされたデータを書き換える。再レイアウトプロセスは、必要な一時ストレージデバイスを介して、多数のデータを連続的に移動させる。例えば、従来の再レイアウト技術を使用して１２００ＧＢのストライピングされたローカルボリュームに新しいストライプを追加することは、完了するのに２．５時間要し得るが、リモートボリュームに同じストライプを追加することは、完了するのに２４時間要し得る。したがって、本開示は、ストライピングされた情報を複数のストレージデバイス間で再平衡化するためのシステム及び方法の必要性を識別し、対処する。
【発明の概要】
【０００２】
以下により詳細に記載されるように、本開示は、例えば、最適化された論理ストライピングを実施することによって、ストライピングされた情報を複数のストレージデバイス間で再平衡化するための様々なシステム及び方法を記載する。
【０００３】
一実施形態では、ストライピングされた情報を複数のストレージデバイス間で再平衡化するための開示されたコンピュータ実施方法は、（１）「Ｙ」連続ストレージ空間を「Ｙ」物理デバイス上に割り当てることと、（２）コンピューティングデバイスにおいて、「Ｙ」連続記憶空間を「Ｎ」サブボリュームに分割することと、（３）「Ｎ」サブボリュームを「Ｘ」論理ストライプに割り当てることと、（４）第１の「Ｙ」論理ストライプの各々を、「Ｙ」物理ストライプの各々内のそれぞれの物理ストライプに割り当てることと、（５）残りの論理ストライプをＹで割って、それぞれのサブ論理ストライプを形成することと、（６）それぞれのサブボリュームを「Ｙ」物理ストライプ間で割り当てることと、を含み得る。
【０００４】
実施形態では、分割は、「Ｎ」を｛２、３、．．．Ｘ｝の最小公倍数として計算することを含んでもよい。一例では、方法は、少なくとも１つの論理ストライプを論理ストライプ識別子（例えば、論理ストライプゼロの場合は「Ｌ０」）でタグ付けすることを含み得る。いくつかの実施例では、方法は、少なくとも１つのサブ論理ストライプをサブ論理ストライプ識別子（例えば、サブ論理ストライプ１の場合は「ＬＬ１」）でタグ付けすることを含み得る。
【０００５】
一実施形態では、方法は、少なくとも１つのサブボリュームを過剰使用についてチェックすることと、サブボリュームが過剰使用されたと識別されたとき、過剰使用されたサブボリュームを異なる物理ストライプに移動させることと、を含み得る。
【０００６】
実施形態では、方法は、（１）「Ｐ」物理ストライプを追加することであって、「Ｐ」は整数である、追加することと、（２）Ｙ＋１〜Ｙ＋Ｐ論理ストライプ及びその中のサブボリュームを追加の「Ｐ」物理ストライプに転送することと、（３）Ｙ＋Ｐ＋１内のサブボリューム及び任意のより上位の論理ストライプをＹ＋Ｐ物理ストライプ間で再分配することと、を含み得る。一例では、方法は、過剰使用について少なくとも１つのサブボリュームをチェックすることと、過剰使用されたサブボリュームが検出されたとき、過剰使用されたサブボリュームを追加の「Ｐ」物理ストライプに転送することと、を含み得る。いくつかの例では、例えば、方法は、（例えば、その後に）（１）Ｙ＋１論理ストライプからのサブボリュームを第１の「Ｙ」物理ストライプ間で再分配することと、（２）Ｙ＋２内のサブボリューム及び任意のより上位の論理ストライプを第１の「Ｙ」物理ストライプ間で再分配することと、（３）複数のストレージデバイスからＹ＋１物理ストライプを除去することと、を含み得る。一実施形態では、方法は、少なくとも１つのサブボリュームを過剰使用についてチェックすることと、過剰使用されたサブボリュームが検出されたとき、過剰使用されたサブボリュームを、最小数のサブボリュームを記憶している物理ストライプに転送することと、を含み得る。
【０００７】
実施形態では、方法は、（１）「Ｙ」論理ストライプからのサブボリュームを第１の「Ｙ−１」物理ストライプ間で再分配することと、（２）Ｙ＋１内のサブボリューム及び任意のより上位の論理ストライプを第１の「Ｙ−１」物理ストライプ間で再分配することと、（３）複数のストレージデバイスから「Ｙ」物理ストライプを除去することと、を含み得る。一例では、方法は、過剰使用について少なくとも１つのサブボリュームをチェックすることと、過剰使用されたサブボリュームが検出されたとき、過剰使用されたサブボリュームを、最小数のサブボリュームを記憶している物理ストライプに転送することと、を含み得る。一例では、方法は、（例えば、その後に）（１）「Ｐ」物理ストライプを追加することであって、「Ｐ」は整数である、追加することと、（２）Ｙ＋１〜Ｙ＋Ｐ論理ストライプ及びその中のサブボリュームを追加の「Ｐ」物理ストライプに転送することと、（３）Ｙ＋Ｐ＋１内のサブボリューム及び任意のより上位の論理ストライプをＹ＋Ｐ物理ストライプ間で再分配することと、を含み得る。一実施形態では、方法は、過剰使用について少なくとも１つのサブボリュームをチェックすることと、過剰使用されたサブボリュームが検出されたとき、過剰使用されたサブボリュームを追加の物理ストライプに転送することと、を含み得る。
【０００８】
一例では、ストライピングされた情報を複数のストレージデバイス間で再平衡化するためのシステムは、（１）「Ｙ」連続ストレージ空間を「Ｙ」物理デバイス上で割り当てる第１の割り当てモジュールと、（２）「Ｙ」連続ストレージ空間を「Ｎ」サブボリュームに分割する分割モジュールと、（３）メモリに記憶されており、「Ｎ」サブボリュームを「Ｘ」論理ストライプに割り当てる第２の割り当てモジュールと、（４）メモリに記憶されており、第１の「Ｙ」論理ストライプの各々を、「Ｙ」物理ストライプの各々内のそれぞれの物理ストライプに割り当てる第３の割り当てモジュールと、（５）メモリに記憶されており、残りの論理ストライプを「Ｙ」で割って、それぞれのサブ論理ストライプを形成する分配モジュールと、（６）それぞれのサブボリュームを「Ｙ」物理ストライプ間で割り当てる「Ｎ番目の」割り当てモジュールと、を含み得る。システムはまた、第１の割り当てモジュール、分割モジュール、第２の割り当てモジュール、第３の割り当てモジュール、第２の分割モジュール、及び「Ｎ番目の」割り当てモジュールを実行する、少なくとも１つの物理プロセッサを含み得る。
【０００９】
いくつかの例では、上記の方法は、非一過性コンピュータ可読媒体上にコンピュータ可読命令としてコード化されてもよい。例えば、コンピュータ可読媒体は、１つ以上のコンピュータ実行可能命令を含んでもよく、命令はコンピューティングデバイスの少なくとも１つのプロセッサによって実行されると、コンピューティングデバイスに、（１）「Ｙ」連続記憶空間を「Ｙ」物理デバイス上に割り当てることと、（２）コンピューティングデバイスにおいて、「Ｙ」連続ストレージ空間を「Ｎ」サブボリュームに分割することと、（３）「Ｎ」サブボリュームを「Ｘ」論理ストライプに割り当てることと、（４）第１の「Ｙ」論理ストライプの各々を「Ｙ」物理ストライプの各々内のそれぞれの物理ストライプに割り当てることと、（５）残りの論理ストライプを「Ｙ」で割って、それぞれのサブ論理ストライプを形成することと、（６）それぞれのサブボリュームを「Ｙ」物理ストライプ間で割り当てることと、を行わせる。
【００１０】
上記で述べた実施形態のうちのいずれかからの特性は、本明細書で説明する一般原理に従って互いと組み合わせて使用されてもよい。これらの及び他の実施形態、特性、及び利点は、添付の図面及び請求項と併せて、以下の詳細な説明を一読することで、より完全に理解されよう。
【図面の簡単な説明】
【００１１】
添付の図面は、いくつかの例示的な実施形態を例解し、かつ本明細書の一部である。以下の説明と共に、これらの図面は、本開示の種々の原理を実証及び説明する。
【図１】ストライピングされた情報を複数のストレージデバイス間で再平衡化するための例示的なシステムのブロック図である。
【図２】ストライピングされた情報を複数のストレージデバイス間で再平衡化するための追加の例示的なシステムのブロック図である。
【図３】ストライピングされた情報を複数のストレージデバイス間で再平衡化するための例示的な方法の流れ図である。
【図４】サブボリュームの複数のストレージデバイス間での例示的な割り当ての図である。
【図５】サブボリュームの複数のストレージデバイス間での割り当てのための例示的な方法の流れ図である。
【図６】ストレージデバイスを追加するときの、サブボリュームの複数のストレージデバイス間での再割り当ての例の図である。
【図７】２つのストレージデバイスを追加するときの、サブボリュームの複数のストレージデバイス間での再割り当ての例の図である。
【図８】ストレージデバイスを除去するときの、サブボリュームの複数のストレージデバイス間での再割り当ての例の図である。
【図９】２つのストレージデバイスを除去するときの、サブボリュームの複数のストレージデバイス間での再割り当ての例の図である。
【図１０】提供された技術の動作性能の一例に対する従来技術の動作性能を比較するチャートである。
【００１２】
図面を通じて、同一の参照文字及び説明は、類似であるが、必ずしも同一ではない要素を示す。本明細書において説明される例示的な実施形態は、種々の修正及び代替的な形態が可能であるが、具体的な実施形態が、図面において、例として示されており、かつ本明細書において詳細に説明される。しかしながら、本明細書において説明される例示的な実施形態は、開示される特定の形態に限定されることを意図しない。むしろ、本開示は、添付の特許請求の範囲内にある全ての修正物、同等物、及び代替物を網羅する。
【発明を実施するための形態】
【００１３】
本開示は、概して、複数のストレージデバイス間でストライピングされた情報を再平衡化するためのシステム及び方法を対象とする。提供されたシステム及び方法は、最適化された論理ストライピングを実施することによって、複数のストレージデバイス間でストライピングされた情報を再平衡化することができ、論理ストライプは、複数のストレージデバイスの数を変更する前に、平衡化された量で物理ストライプ間に転送され得るサブボリュームを含んでもよい。実施形態では、開示された技術は、クラウドベースのストレージデバイスに関連して利用され得る。
【００１４】
このようにすることによって、いくつかの実施例では、本明細書に記載されるシステム及び方法は、複数のストレージデバイス間でストライピングされた情報を自動的に（再）平衡化することによって、コンピューティングデバイスの機能を改善することができ、したがって、費用効率の高いストレージ管理を可能にする。また、いくつかの実施例では、本明細書に記載されるシステム及び方法は、転送されるデータ量を低減することによって電力を節約し得る。提供される方法はまた、一時ストレージ空間を使用する必要がなくてもよく、一時的な空間へのデータを移動する必要がなくてもよく、複数のストレージデバイス内で実質的に全てのデータを連続的に転送しなくてもよく、従来の技術ほど多くのデータを移動する必要がなくてもよく、したがって費用効率の高いストレージ管理を可能にする。提供される方法はまた、並行して（対連続的に）サブボリュームのデータを移動させることもでき、及び／又はデータをより速く転送することができる。また、いくつかの実施例では、本明細書に記載されるシステム及び方法は、電力を節約し及び／又はネットワーク帯域幅利用率をより良好に管理し得る。
【００１５】
下記において、図１〜図２を参照すると、複数のストレージデバイス間でストライピングされた情報を再平衡化するための例示的なシステムの詳細な説明を提供する。対応するコンピュータ実施方法の詳細な説明もまた、図３〜図９に関連して提供する。加えて、従来技術と比較して提供される技術の性能の詳細な説明もまた、図１０に関連して提供する。
【００１６】
図１は、複数のストレージデバイス間で、ストライピングされた情報を再平衡化するための例示的なシステム１００のブロック図である。この図に示されているように、例示的なシステム１００は、１つ以上のタスクを実施するための１つ以上のモジュール１０２を含んでもよい。以下でより詳細に説明するように、モジュール１０２は、第１の割り当てモジュール１０４と、分割モジュール１０６と、第２の割り当てモジュール１０８と、第３の割り当てモジュール１１０と、分配モジュール１１２と、「Ｎ番目」の割り当てモジュール１１４と、を含み得る。別個の要素として示されるが、図１のモジュール１０２のうちの１つ以上は、単一のモジュール又はアプリケーションの一部分を表し得る。
【００１７】
特定の実施形態では、図１のモジュール１０２のうちの１つ以上は、コンピューティングデバイスによって実行されるとき、コンピューティングデバイスに、１つ以上のタスクを実施させてもよい１つ以上のソフトウェアアプリケーション又はプログラムを表してもよい。例えば、以下でより詳細に説明するように、１つ以上のモジュール１０２は、図２内に例解されたデバイス（例えば、コンピューティングデバイス２０２及び／又はサーバ２０６）などの、１つ以上のコンピューティングデバイス上で記憶され、動作するように構成されたモジュールを表現し得る。図１のモジュール１０２のうちの１つ以上はまた、１つ以上のタスクを実施するように構成された１つ以上の特殊目的のコンピュータの全て又は一部分を表してもよい。
【００１８】
図１に示されているように、例示的なシステム１００はまた、ストレージデバイス１２０などの、１つ以上の有形ストレージデバイスも含み得る。ストレージデバイス１２０は、一般に、データ及び／又はコンピュータ可読命令を記憶できる、任意の種類又は形式の揮発性又は不揮発性の記憶デバイス又は媒体を表す。一例では、ストレージデバイス１２０は、物理ストライプ１２０、論理ストライプ１２４、サブ論理ストライプ１２６、及び／又はサブボリューム１２８のうちの１つ以上を示す情報を記憶、ロード、及び／又は維持し得る。実施形態では、サブボリューム１２８は、サブ論理ストライプ１２６の非存在下で論理ストライプ１２４の一部であり得る。いくつかの実施例では、ストレージデバイス１２０は、一般に複数のストレージデバイスを表し得る。ストレージデバイス１２０の例としては、限定するものではないが、ランダムアクセスメモリ（Random Access Memory、ＲＡＭ）、読み取り専用メモリ（Read Only Memory、ＲＯＭ）、フラッシュメモリ、ハードディスクドライブ（Hard Disk Drive、ＨＤＤ）、ソリッドステートドライブ（Solid-State Drive、ＳＳＤ）、光ディスクドライブ、キャッシュ、クラウドベースのストレージデバイス、これらのうちの１つ以上の変形若しくは組み合わせ、及び／又は任意の他の好適なストレージメモリが挙げられる。
【００１９】
図１に示されているように、例示的なシステム１００はまた、物理的プロセッサ１３０など、１つ以上の物理的プロセッサも含み得る。物理プロセッサ１３０は、概して、コンピュータ可読命令を解釈でき、かつ／又は実行できる任意のタイプ又は形式のハードウェア実装処理ユニットを表す。一例では、物理プロセッサ１３０は、メモリ１４０に記憶されているモジュール１０２のうちの１つ以上にアクセスし得、かつ／又はこれらを修正し得る。追加的に又は代替的に、物理プロセッサ１３０は、ストライピングされた情報の複数のストレージデバイス間での再平衡化を容易にするために、モジュール１０２のうちの１つ以上を実行し得る。物理的プロセッサ１３０の例としては、マイクロプロセッサ、マイクロコントローラ、中央処理ユニット（Central Processing Unit、ＣＰＵ）、ソフトコアプロセッサを実装しているフィールドプログラマブルゲートアレイ（Field-Programmable Gate Array、ＦＰＧＡ）、特定用途向け集積回路（Application-Specific Integrated Circuit、ＡＳＩＣ）、これらのうちの１つ以上の部分、これらのうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適な物理的プロセッサが挙げられるが、これらに限定されない。
【００２０】
図１に示されているように、例示的なシステム１００はまた、メモリ１４０など、１つ以上のメモリデバイスも含み得る。メモリ１４０は、概して、データ及び／又はコンピュータ可読命令を記憶できる、任意の種類又は形式の揮発性又は不揮発性の記憶デバイス又は媒体を表す。一例では、メモリ１４０は、モジュール１０２のうちの１つ以上を記憶、ロード、及び／又は維持し得る。メモリ１４０の例としては、限定することなく、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、光ディスクドライブ、キャッシュ、これらのうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適なストレージメモリが挙げられる。
【００２１】
図１の例示的なシステム１００は、様々な態様で実装され得る。例えば、例示的なシステム１００の全て又は一部分は、図２の例示的なシステム２００の部分を表し得る。図２に示されるように、システム２００は、ネットワーク２０４を介してサーバ２０６と通信するコンピューティングデバイス２０２を含み得る。任意選択のクラウドストレージデバイス２０８は、ネットワーク２０４を介してなど、コンピューティングデバイス２０２及び／又はサーバ２０６に連結されてもよい。一例では、モジュール１０２の機能性の全て又は一部分は、コンピューティングデバイス２０２、サーバ２０６、及び／又は任意の他の好適なコンピューティングシステムによって実施され得る。下記でより詳細に説明するように、図１のモジュール１０２のうちの１つ以上は、コンピューティングデバイス２０２及び／又はサーバ２０６のうちの少なくとも１つのプロセッサによって実行されるとき、コンピューティングデバイス２０２及び／又はサーバ２０６がストライピングされた情報を複数のストレージデバイス間で再平衡化することを可能にし得る。
【００２２】
コンピューティングデバイス２０２は、コンピュータ実行可能命令を読み出すことができる任意のタイプ又は形式のコンピューティングデバイスを概して表す。いくつかの実施例では、コンピューティングデバイス２０２は、記憶管理ソフトウェアを実行するコンピュータを表し得る。コンピューティングデバイス２０２の追加例としては、ノートブック、タブレット、デスクトップ、サーバ、携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）、マルチメディアプレイヤー、組み込みシステム、ウェアラブルデバイス（例えば、スマートウォッチ、スマートグラスなど）、スマートビークル、いわゆるＩｏＴデバイス（例えば、スマート家電など）、ゲーム機、これらのうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適なコンピューティングデバイスが挙げられるが、これらに限定されない。
【００２３】
ネットワーク２０４は、通信又はデータ転送を容易にすることができる任意の媒体又はアーキテクチャを概して表す。一例において、ネットワーク２０４は、コンピューティングデバイス２０２とサーバ２０６との間の通信を容易にし得る。この例では、ネットワーク２０４は、無線及び／又は有線接続を使用して、通信又はデータ転送を容易にし得る。ネットワーク２０４の例としては、限定するものではないが、イントラネット、ワイドエリアネットワーク（Wide Area Network、ＷＡＮ）、ローカルエリアネットワーク（Local Area Network、ＬＡＮ）、パーソナルエリアネットワーク（Personal Area Network、ＰＡＮ）、インターネット、電力線通信（Power Line Communication、ＰＬＣ）、セルラネットワーク（例えば、汎欧州デジタル移動電話方式（Global System for Mobile Communication、ＧＳＭ）ネットワーク）、１つ以上の上記の部分、上記のうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適なネットワークを含む。
【００２４】
サーバ２０６は、一般に、コンピュータ実行可能命令を読み出すことができる任意のタイプ又は形式のコンピューティングデバイスを表す。いくつかの実施例では、サーバ２０６は、ストレージ管理ソフトウェアを実行するコンピュータを表し得る。サーバ２０６の付加的な例としては、特定のソフトウェアアプリケーションを動作させ、かつ／又は様々なストレージ、データベース、及び／若しくはウェブサービスを提供するように構成された、ストレージサーバ、データベースサーバ、アプリケーションサーバ、及び／又はウェブサーバが挙げられるが、これらに限定されない。図２において単一体として例解されるが、サーバ２０６は、互いに連動して働き、かつ／又は動作する複数のサーバを含み、かつ／又は表してもよい。
【００２５】
クラウドストレージデバイス２０８は、一般に、コンピュータ実行可能命令を読み取ること、及び／又は情報を記憶することが可能である、任意のタイプ又は形態のコンピューティングデバイスを表す。いくつかの実施例では、クラウドストレージデバイス２０８は、ストレージ管理ソフトウェアを実行するコンピュータを表し得る。クラウドストレージデバイス２０８の付加的な例としては、特定のソフトウェアアプリケーションを動作させ、かつ／又は様々なストレージ、データベース、及び／若しくはウェブサービスを提供するように構成された、１つ以上のストレージサーバ、データベースサーバ、アプリケーションサーバ、及び／又はウェブサーバが挙げられるが、これらに限定されない。図２において単一体として例解されるが、クラウドストレージデバイス２０８は、互いに連動して働き、及び／又は動作する複数のサーバを含み、及び／又は表してもよい。
【００２６】
いくつかの実施例では、クラウドストレージデバイス２０８は、物理ストライプ１２０、論理ストライプ１２４、サブ論理ストライプ１２６、及び／又はサブボリューム１２８のうちの１つ以上を記憶し得る。
【００２７】
多くの他のデバイス又はサブシステムは、図１のシステム１００及び／又は図２のシステム２００に接続され得る。逆に、図１及び図２に示す構成要素及びデバイスの全てが、本明細書において説明及び／又は例示される実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムはまた、図２に示すものとは異なる様式で相互接続されてもよい。システム１００及び２００はまた、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を採用してもよい。例えば、本明細書において開示される例示的な実施形態のうちの１つ以上は、コンピュータ可読媒体上に、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、及び／又はコンピュータ制御論理とも称される）としてコード化され得る。
【００２８】
「コンピュータ可読媒体」という用語は、本明細書において使用される際、概して、コンピュータ可読命令を記憶又は担持することが可能な任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定することなく、搬送波などの伝送タイプ媒体、並びに磁気ストレージ媒体（例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク）、光ストレージ媒体（例えば、コンパクトディスク（Compact Disk、ＣＤ）、デジタルビデオディスク（Digital Video Disk、ＤＶＤ）、及びＢＬＵ−ＲＡＹディスク）、電子ストレージ媒体（例えば、ソリッドステートドライブ及びフラッシュ媒体）などの非一時的タイプ媒体、並びに他の分散システムが挙げられる。
【００２９】
図３は、ストライピングされた情報を複数のストレージデバイス間で再平衡化するための例示的なコンピュータ実施方法３００の流れ図である。図３に示されている工程は、図１のシステム１００、図２のシステム２００、及び／又はこれらのうちの１つ以上の変形若しくは組み合わせを含む、任意の好適なコンピュータ実行可能コード及び／又はコンピューティングシステムによって実施され得る。一例では、図３に示されている工程のそれぞれは、複数の副工程を含む及び／又はそれらによって表される構造を有するアルゴリズムを表すものであり得、これらの例を以下に詳細に示す。実施形態では、方法３００は、サブボリューム１２８を、ストレージデバイス１２０及び／又はクラウドストレージデバイス２０８などの複数のストレージデバイスに割り当てることを開始してもよい。
【００３０】
図３に示されるように、工程３０２において、本明細書に記載されるシステムのうちの１つ以上は、「Ｙ」連続ストレージ空間を、「Ｙ」物理デバイス上（例えば、複数のストレージデバイス上）に割り当ててもよい（例えば、「Ｙ」物理ストライプを作成してもよい）。本明細書に記載のシステムは、様々な方法で工程３０２を実施し得る。一例では、第１の割り当てモジュール１０４は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、「Ｙ」連続ストレージ空間を、コンピューティングデバイス２０２内のストレージデバイス１２０、サーバ２０６内のストレージデバイス１２０、及び／又はクラウドストレージデバイス２０８内のストレージデバイスなどの「Ｙ」物理デバイス上に割り当ててもよい。例えば、第１の割り当てモジュール１０４は、図２の２０２及び／又はサーバ２０６の一部として、「Ｙ」物理ストライプ１２２を、コンピューティングデバイス２０２内のストレージデバイス１２０、サーバ２０６内のストレージデバイス１２０、及び／又はクラウドストレージデバイス２０８内のストレージデバイスなどの複数のストレージデバイス１２０上に作成することができる。いくつかの実施例では、「Ｙ」は整数である。
【００３１】
一例では、物理ストライプ１２２は、方法３００を開始する前に、複数のストレージデバイス１２０上に既に存在していてもよい。
【００３２】
図３に示されるように、工程３０４において、本明細書に記載されるシステムのうちの１つ以上は、「Ｙ」連続ストレージ空間を「Ｎ」サブボリューム又はチャンクに分割してもよい。本明細書に記載のシステムは、様々な方法で工程３０４を実施してよい。一例では、分割モジュール１０６は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、「Ｙ」連続ストレージ空間を「Ｎ」サブボリューム１２８に分割してもよい。例えば、分割モジュール１０６は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、複数のストレージデバイス１２０内のストレージ空間を「Ｎ」サブボリューム１２８に分割してもよい。いくつかの実施例では、「Ｎ」は整数である。
【００３３】
一例では、分割は、「Ｎ」を｛２、３、．．．Ｘ｝の最小公倍数として計算することを含んでもよく、ここで、「Ｘ」は論理ストライプの最大数である。いくつかの実施例では、「Ｘ」は整数の数である。
【００３４】
本明細書で使用するとき、用語「サブボリューム」は、一般に、情報ストレージ空間の同様のサイズのユニットを指し得る。サブボリュームの例は、図４に関して本明細書で説明される。
【００３５】
図３に示されるように、工程３０６において、本明細書に記載されるシステムのうちの１つ以上は、「Ｎ」サブボリュームを「Ｘ」論理ストライプに割り当ててもよい。本明細書に記載されるシステムは、様々な方法で工程３０６を実施し得る。例えば、第２の割り当てモジュール１０８は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、「Ｎ」サブボリューム１２８を「Ｘ」論理ストライプ１２４に割り当ててもよい。
【００３６】
一例では、方法３００は、少なくとも１つの論理ストライプを論理ストライプ識別子でタグ付けすることを含み得る。
【００３７】
いくつかの実施形態では、方法３００は、等しい数のサブボリューム１２８を、「Ｘ」論理ストライプの各々に割り当てることを含み得る。
【００３８】
本明細書で使用するとき、用語「論理ストライプ」は、概して、サブボリュームの論理グループを指す。論理ストライプの例は、図４に関して本明細書で説明される。
【００３９】
図３に示されるように、工程３０８において、本明細書に記載されるシステムのうちの１つ以上は、第１の「Ｙ」論理ストライプの各々を、「Ｙ」物理ストライプの各々内のそれぞれの物理ストライプに割り当ててもよい。換言すれば、下位番号の論理ストライプは、それぞれの物理ストライプ上に実質的に全体が記憶されてもよく、例えば、１つの論理ストライプが各対応する物理ストライプ上に実質的に全体的に記憶されてもよい。本明細書に記載のシステムは、様々な方法で工程３０８を実施し得る。例えば、第３の割り当てモジュール１１０は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、第１の「Ｙ」論理ストライプ１２４の各々を、「Ｙ」物理ストライプ１２２の各々内のそれぞれの物理ストライプに割り当ててもよい。
【００４０】
図３に示されるように、工程３１０において、本明細書に記載されるシステムのうちの１つ以上は、残りのサブボリュームをそれぞれの論理ストライプに、場合によっては、それぞれのサブ論理ストライプに分配してもよい。本明細書に記載のシステムは、様々な方法で工程３１０を実施し得る。一例では、分配モジュール１１２は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、残りのサブボリューム１２８をそれぞれの論理ストライプ１２４にし、場合によっては、それぞれのサブ論理ストライプ１２６に分配してもよい。例えば、分配モジュール１１２は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、残りの論理ストライプ１２４を「Ｙ」で割り、それぞれのサブ論理ストライプ１２６を形成してもよい。
【００４１】
一例では、方法３００は、少なくとも１つの論理ストライプをサブ論理ストライプ識別子でタグ付けすることを含み得る。
【００４２】
本明細書で使用するとき、用語「サブ論理ストライプ」は、概して、論理ストライプ内のサブボリュームのサブグループを指す。一例では、サブ論理ストライプ内のサブボリュームは、異なる物理ストライプ間で記憶されてもよい。
【００４３】
図３に示されるように、工程３１２において、本明細書に記載されるシステムのうちの１つ以上は、それぞれのサブボリュームを「Ｙ」物理ストライプ間で割り当ててもよい。本明細書に記載されるシステムは、様々な方法で工程３１２を実施し得る。一例では、「Ｎ番目の」割り当てモジュール１１４は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、それぞれのサブボリューム１２８を「Ｙ」物理ストライプ１２２間で割り当ててもよい。例えば、「Ｎ番目の」割り当てモジュール１１４は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、それぞれのサブ論理ストライプ１２６を、各論理ストライプ１２４に対して「Ｙ」物理ストライプ１２２間で割り当ててもよい。一実施形態では、「Ｎ」は、４などの整数である。
【００４４】
一例では、方法３００は、少なくとも１つのサブボリュームを過剰使用についてチェックすることを含んでもよく、サブボリュームが過剰使用されたと識別されたとき、過剰使用されたサブボリュームを異なる物理ストライプに移動させることを含んでもよい。一実施形態では、論理ストライプが過剰使用されたサブボリュームを含む場合、論理ストライプは、過剰使用されたストライプとして識別されてもよい。
【００４５】
図４は、サブボリュームの複数のストレージデバイス４００間での例示的な割り当ての図である。図４において、「Ｐｉ」は、それぞれの物理的ストライプ「ｉ」を指す（例えば、「Ｐ０」は物理ストライプゼロを表す）。更に、「Ｌｊ」は、それぞれの論理ストライプ「ｊ」を指す（例えば、「Ｌ０」は論理ストライプゼロを表す）。図４では、サブボリュームは、それぞれの数を含むブロックによって表される（例えば、物理ストライプＰ０は、サブボリュームゼロを含む論理ストリップＬ０を含む）。したがって、方法３００を実施する結果として、論理ストライプＬ０は物理ストライプＰ０上に記憶され、サブボリューム０、６、１２、１８、２４、３０、３６、４２、４８、及び５４を含む。この例では、論理ストライプＬ０は、任意のサブ論理ストライプを含まない。更に、論理ストライプＬ１は物理ストライプＰ１上に記憶され、サブボリューム１、７、１３、１９、２５、３１、３７、４３、４９、及び５５を含む。この例では、論理ストライプＬ１は、任意のサブ論理ストライプを含まない。更に、論理ストライプＬ０は、物理ストライプＰ０上に部分的に記憶され、物理ストライプＰ１上に部分的に記憶される。論理ストライプＬ０は、２つのサブ論理ストライプを含む。Ｌ２の第１のサブ論理ストライプは、物理ストライプＰ０上に記憶され、サブボリューム２、１４、２６、３８、及び５０を含む。Ｌ２の第２のサブ論理ストライプは、物理ストライプＰ１上に記憶され、サブボリューム８、２０、３２、４４、及び５６を含む。図４はまた、それぞれのサブボリュームブロックの右上角のそれぞれの三角形によって描かれている、過剰使用されたサブボリューム５２及び５７〜５８を示す。
【００４６】
いくつかの実施例では、サブボリュームを割り当てるための方法は、（１）完全なボリューム空間を「Ｎ」サブボリュームに分割することであって、Ｎ＝ＬＣＭ（ｙ、３、４、５、．．．．ｘ）、「ｘ」＝サポートするストライプの最大数であり、「ｙ」＝サポートするストライプの最小数である、分割することと、（２）再帰的なストライピングアルゴリズムを全てのサブボリューム（０〜Ｎ−１）に適用することと、（３）再帰レベルが最も高い利用可能な物理ストライプと同じかそれより小さい論理ストライプ番号に到達するまで、各サブボリュームに論理ストライププロパティをタグ付けすること、（４）論理ストライプの最初のサブボリュームを割り当てている間に、論理ストライプの最後のサブボリュームがどこから割り当てられたかをチェックし、サブボリュームを割り当てる次の物理ストライプを選択し、（５）タグ付けしている間に、ストライプ内に何らかの過剰使用されているサブボリュームがあるかどうかを判断し、過剰使用されているサブボリュームを過剰使用されているものとしてタグ付けすることと、を含み得る。
【００４７】
図５は、サブボリュームを複数のストレージデバイス５００間で割り当てるための例示的なコンピュータ実施方法の例示的なフロー図である。図５に示されている工程は、図１のシステム１００、図２のシステム２００、及び／又はこれらのうちの１つ以上の変形若しくは組み合わせを含む、任意の好適なコンピュータ実行可能コード及び／又はコンピューティングシステムによって実施され得る。一例では、図５に示されている工程の各々は、複数の副工程を含む及び／又はそれらによって表される構造を有するアルゴリズムを表すものであり得る。実施形態では、方法５００は、サブボリューム１２８を、ストレージデバイス１２０及び／又はクラウドストレージデバイス２０８などの複数のストレージデバイスに割り当ててもよい。
【００４８】
いくつかの実施形態では、新しいストレージデバイス及び／又は物理ストライプを追加して、複数のストレージデバイスの初期グループに追加してもよい。新しいストレージデバイス及び／又は物理ストライプが追加されるとき、最適化された再レイアウト方法を実施して、ストレージ空間の割り当てを最適化することができる。例えば、図３に戻ると、方法３００は、（１）追加の物理ストライプを（例えば、追加のストレージデバイス上に）追加することと、（２）Ｙ＋１論理ストライプ及びその中のサブボリュームを追加の物理ストライプに転送することと、（３）Ｙ＋２内のサブボリューム及び任意のより上位の論理ストライプをＹ＋１物理ストライプ間で再分配することと、を含み得る。一実施形態では、方法３００は、（１）「Ｐ」物理ストライプを追加することであって、「Ｐ」は整数である、追加することと、（２）Ｙ＋１〜Ｙ＋Ｐ論理ストライプ及びその中のサブボリュームを追加の「Ｐ」物理ストライプに転送することと、（３）Ｙ＋Ｐ＋１内のサブボリューム及び任意のより上位の論理ストライプをＹ＋Ｐ物理ストライプ間で再分配することと、を含み得る。一例では、方法３００は、少なくとも１つのサブボリュームを過剰使用についてチェックすることと、過剰使用されたサブボリュームが検出されたとき、過剰使用されたサブボリュームを追加の物理ストライプに転送することと、を含み得る。
【００４９】
図６は、ストレージデバイスを追加するときの、サブボリュームの複数のストレージデバイス６００間での再割り当ての例の図である。図６の左側は、図４のものと同様の初期条件を示す。図６の中心部分は、新しい物理ストライプＰ２を追加し、論理ストライプＬ２を物理ストライプＰ２に移動させ、論理ストライプＬ３〜Ｌ５からのサブボリュームを物理ストライプＰ０〜Ｐ２間で再分配する様子を示している。図６の右側は、転送する過剰使用されたサブボリューム５２及び５７〜５８を新しい物理ストライプＰ２に移動させる様子を示している。
【００５０】
図７は、２つのストレージデバイスを追加するときの、サブボリュームの複数のストレージデバイス７００間での再割り当ての例の図である。図７の左側は、図４のものと同様の初期条件を示す。図７の中心部分は、新しい物理ストライプＰ２〜Ｐ３を追加し、論理ストライプＬ２を物理ストライプＰ２に移動させ、論理ストライプＬ３を物理ストライプＰ３に移動させ、論理ストライプＬ４〜Ｌ５からのサブボリュームを物理ストライプＰ０〜Ｐ３間で再分配する様子を示している。図７の右側は、転送する過剰使用されたサブボリューム５２及び５８を新しい物理ストライプＰ２〜Ｐ３に移動させる様子を示している。
【００５１】
図３に戻ると、いくつかの実施例では、新しい記憶デバイス及び／又は物理ストライプが追加された後、ストレージデバイス及び／又は物理ストライプがその後除去されてもよい。ストレージデバイス及び／又は物理ストライプがその後除去されると、最適化された再レイアウト方法が実施されて、ストレージ空間の割り当てを最適化することができる。例えば、方法３００は、（例えば、その後に）（１）Ｙ＋１の論理ストライプからのサブボリュームを第１の「Ｙ」物理ストライプ間で再分配することと、（２）Ｙ＋２内のサブボリューム及び任意のより上位の論理ストライプを第１の「Ｙ」物理ストライプ間で再分配することと、（３）複数のストレージデバイスから（例えば、除去されるストレージデバイスから）Ｙ＋１物理ストライプを除去することと、を含み得る。一実施形態では、方法３００は、少なくとも１つのサブボリュームを過剰使用についてチェックすることと、過剰使用されたサブボリュームが検出されたとき、過剰使用されたサブボリュームを、最小数のサブボリュームを記憶する物理ストライプに転送することと、を含み得る。
【００５２】
いくつかの実施形態では、ストレージデバイス及び／又は物理ストライプは、複数のストレージデバイスの初期グループから除去されてもよい。ストレージデバイス及び／又は物理ストライプが複数のストレージデバイスの初期グループから除去されるとき、最適化された再レイアウト方法を実施して、ストレージ空間の割り当てを最適化することができる。例えば、方法３００は、（１）「Ｙ」論理ストライプからのサブボリュームを第１の「Ｙ−１」物理ストライプ間で再分配することと、（２）Ｙ＋１内のサブボリューム及び任意のより上位の論理ストライプをＹ−１物理ストライプ間で再分配することと、（３）複数のストレージデバイスから（例えば、除去されるストレージデバイスから）「Ｙ」物理ストライプを除去することと、を含んでもよい。一例では、方法３００は、少なくとも１つのサブボリュームを過剰使用についてチェックすることと、過剰使用されたサブボリュームが検出されたとき、過剰使用されたサブボリュームを、最小数のサブボリュームを記憶する物理ストライプに転送することと、を含み得る。
【００５３】
図８は、ストレージデバイスを除去するときの、サブボリュームの複数のストレージデバイス８００間での再割り当ての例の図である。図８の左側は、図７の右側のものと同様の初期条件を示している。図８の中心部分は、物理ストライプＰ３を除去する準備を行い、論理ストライプＬ３内のサブボリュームを物理ストライプＰ０〜Ｐ２間で再分配する様子を示している。論理ストライプＬ４〜Ｌ５内のサブボリュームは、物理ストライプＰ０〜Ｐ２間で再分配される。図８の右側は、物理ストライプＰ３の除去を示している。
【００５４】
図９は、２つのストレージデバイスを除去するときの、サブボリュームの複数のストレージデバイス９００間での再割り当ての例の図である。図９の左側は、図７の右側のものと同様の初期条件を示す。図９の中心部分は、物理ストライプＰ２〜Ｐ３を除去する準備を行い、論理ストライプＬ２〜Ｌ３内のサブボリュームを物理ストライプＰ０〜Ｐ１間で再分配する様子を示している。論理ストライプＬ４〜Ｌ５内のサブボリュームは、物理ストライプＰ０〜Ｐ１間で再分配される。図９の右側は、物理ストライプＰ２化〜Ｐ３の除去を示す。
【００５５】
図３に戻ると、いくつかの実施例では、新しいストレージデバイス及び／又は物理ストライプが除去された後、新しいストレージデバイス及び／又は新しい物理ストライプがその後追加されてもよい。ストレージデバイス及び／又は新しいストレージデバイス及び／又は新しい物理ストライプがその後追加されるとき、最適化された再レイアウト方法を実施して、ストレージ空間の割り当てを最適化することができる。例えば、方法３００は、（１）追加の物理ストライプを（例えば、追加のストレージデバイス上に）追加することと、（２）Ｙ−１論理ストライプ及びその中のサブボリュームを追加の物理ストライプに転送することと、（３）「Ｙ」内のサブボリューム及び任意のより上位の論理ストライプを「Ｙ」物理ストライプ間で再分配することと、を含み得る。一実施形態では、方法３００は、（１）「Ｐ」物理ストライプを追加することであって、「Ｐ」は整数である、追加することと、（２）Ｙ＋１〜Ｙ＋Ｐ論理ストライプ及びその中のサブボリュームを追加の「Ｐ」物理ストライプに転送することと、（３）Ｙ＋Ｐ＋１内のサブボリューム及び任意のより上位の論理ストライプをＹ＋Ｐ物理ストライプ間で再分配することと、を含み得る。一実施形態では、方法３００は、少なくとも１つのサブボリュームを過剰使用についてチェックすることと、過剰使用されたサブボリュームが検出されたとき、過剰使用されたサブボリュームを追加の物理ストライプに転送することと、を含み得る。
【００５６】
図１０は、提供された最適化された技術１０００の動作性能の一例に対する従来技術（「既存」）の動作性能を比較するチャートである。いくつかの実施例では、再レイアウト時間の改善は、６００ＧＢ〜１２００ＧＢのボリュームサイズの場合、及び２つの物理的ストライプから３つ又は４つの物理ストライプのいずれかにボリュームサイズを成長させる場合に、９４％〜９５％であり得る。
【００５７】
いくつかの実施例では、２つの物理ストライプ、８つの論理ストライプ、及び８４０サブボリュームを有する最適化された技術は、書き込み再レイアウト時間が６．１６％低下し、読み取り再レイアウト時間が１．８６％低下するという、入力／出力性能のわずかな低下を有益に提供する可能性がある。追加の実施形態では、３つの物理ストライプ、８つの論理ストライプ、及び８４０サブボリュームを有する最適化された技術は、書き込み再レイアウト時間が６．０５％低下し、読み取り再レイアウト時間が３．４９％低下するという、入力／出力性能のわずかな低下を有益に提供する可能性がある。
【００５８】
上記で詳述したように、本明細書に概説される工程は、ストライピングされた情報を複数のストレージデバイス間で再平衡化するための方法を提供することができる。いくつかの実施例では、提供されたシステム及び方法は、ストライピングされたストレージデバイスと共に使用されてもよい。このようにすることによって、いくつかの実施例では、本明細書に記載されるシステム及び方法は、複数のストレージデバイス間でストライピングされた情報を自動的に（再）平衡化することによって、コンピューティングデバイスの機能を改善することができ、したがって、費用効率の高いストレージ管理を可能にする。また、いくつかの実施例では、本明細書に記載されるシステム及び方法は、転送されるデータ量を低減することによって電力を節約し得る。提供された方法はまた、一時ストレージ空間を使用する必要がなくてもよく、複数のストレージデバイス内の実質的に全てのデータを連続的に転送する必要がなくてもよく、従来技術ほど多くのデータを移動する必要がなくてもよい。
【００５９】
上述の開示は、具体的なブロック図、フローチャート、及び実施例を使用して、種々の実施形態を記載するが、本明細書において説明及び／又は例解される各ブロック図の構成要素、フローチャートの工程、動作、及び／又は構成要素は、広範なハードウェア、ソフトウェア、又はファームウェア（又はこれらの任意の組み合わせ）構成を使用して、個々に、かつ／又は集合的に実装され得る。加えて、他の構成要素内に含まれる構成要素のいずれの開示も、多くの他のアーキテクチャを実装して、同じ機能性を達成することができるため、事実上、例としてみなされるべきである。
【００６０】
いくつかの例では、図１の例示的なシステム１００の全て又は一部分は、クラウドコンピューティング又はネットワークベース環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ又は他のリモートインターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、リモートデスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
【００６１】
種々の実施形態において、図１の例示的なシステム１００の全て又は一部分は、クラウドベースのコンピューティング環境内のマルチテナンシーを容易にし得る。換言すると、本明細書において説明されるモジュールは、本明細書において説明される機能のうちの１つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム（例えば、サーバ）を構成し得る。例えば、本明細書において説明されるモジュールのうちの１つ以上は、２つ以上のクライアント（例えば、顧客）が、サーバ上で実行されているアプリケーションを共有することを可能にするように、サーバをプログラムし得る。このようにプログラムされたサーバは、複数の顧客（すなわち、テナント）間でアプリケーション、オペレーティングシステム、処理システム、及び／又はストレージシステムを共有し得る。本明細書において説明されるモジュールのうちの１つ以上はまた、ある顧客が別の顧客のデータ及び／又は構成情報にアクセスすることができないように、各顧客に対して、マルチテナントアプリケーションのデータ及び／又は構成情報を分割し得る。
【００６２】
種々の実施形態によれば、図１の例示的なシステム１００の全て又は一部分は、仮想環境内で実装され得る。例えば、本明細書において説明されるモジュール及び／又はデータは、仮想マシン内に存在し得る、かつ／又はそこで実行し得る。本明細書において使用される際、「仮想マシン」という用語は、概して、仮想マシンマネージャ（例えば、ハイパーバイザ）によって、コンピューティングハードウェアから抽象化される任意のオペレーティングシステム環境を指す。
【００６３】
いくつかの例では、図１の例示的なシステム１００の全て又は一部分は、モバイルコンピューティング環境の部分を表し得る。モバイルコンピューティング環境は、モバイル電話、タブレットコンピュータ、電子書籍リーダ、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス（例えば、頭部装着型ディスプレイ、スマートウォッチなどを有するコンピューティングデバイス）、これらのうちの１つ以上の変形若しくは組み合わせ、又は任意の他の好適なモバイルコンピューティングデバイスを含む、広範なモバイルコンピューティングデバイスによって実装され得る。いくつかの例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間に１つのフォアグラウンドアプリケーションのみを提示すること、遠隔管理特性、タッチスクリーン特性、場所及び移動データ（例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される）、システムレベルの構成への修正を制限する、かつ／又は第３者のソフトウェアが他のアプリケーションの挙動を検査する能力を制限する、制限されたプラットフォーム、アプリケーションのインストールを制限する（例えば、承認されたアプリケーションストアのみから得る）管理などを含む、１つ以上の異なる特性を含み得る。本明細書において説明される種々の機能は、モバイルコンピューティング環境に対して提供され得る、かつ／又はモバイルコンピューティング環境と相互作用し得る。
【００６４】
本明細書において説明及び／又は例解される工程のプロセスパラメータ及び順序は、例として示されるに過ぎず、所望に応じて変化させることができる。例えば、本明細書において例解及び／又は説明される工程は、特定の順序で図示又は考察されるが、これらの工程は、必ずしも例解又は考察される順序で実施される必要はない。本明細書において説明及び／又は例解される種々の例示的な方法もまた、本明細書において説明若しくは例解される工程のうちの１つ以上を省略し得るか、又は開示されるものに加えて追加の工程を含み得る。
【００６５】
種々の実施形態が、完全に機能的なコンピューティングシステムの文脈で、本明細書において説明及び／又は例解されているが、これらの例示的な実施形態のうちの１つ以上は、分散を実際に行うために使用される特定のタイプのコンピュータ可読媒体にかかわらず、様々な形態のプログラム製品として分散され得る。本明細書において開示される実施形態はまた、あるタスクを実施するモジュールを使用して、実装され得る。これらのモジュールは、コンピュータ可読ストレージ憶媒体上に、又はコンピューティングシステム内に記憶され得る、スクリプト、バッチ、又は他の実行可能なファイルを含み得る。いくつかの実施形態では、これらのモジュールは、本明細書において開示される例示的な実施形態のうちの１つ以上を実施するように、コンピューティングシステムを構成し得る。
【００６６】
先述の説明は、当業者が、本明細書において開示される例示的な実施形態の種々の態様を最良に利用することを可能にするために提供されている。この例示的な説明は、網羅的であることを意図するものでも、開示されたいずれかの正確な形態に限定されることを意図するものでもない。多くの修正及び改変が、本開示の趣旨及び範囲から逸脱することなく、可能である。本明細書において開示される実施形態は、全ての点において、例解的であり、制限的ではないとみなされるべきである。本開示の範囲を判定する上では、添付の請求項及びそれらの同等物を参照するべきである。
【００６７】
別途記載されない限り、「〜に接続される（connected to）」及び「〜に連結される（coupled to）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、直接的及び間接的（すなわち、他の要素又は構成要素を介した）接続の両方を許容するとして解釈されるものとする。加えて、「ａ」又は「ａｎ」という用語は、本明細書及び請求項において使用される際、「〜のうちの少なくとも１つ（at least one of）」を意味するとして解釈されるものとする。最後に、使用を容易にするために、「含む（including）」及び「有する（having）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、「備える（comprising）」という語と同義的であり、かつ同じ意味を有する。
【図１】
2021520562.tif 000003
【図２】
2021520562.tif 000004
【図３】
2021520562.tif 000005
【図４】
2021520562.tif 000006
【図５】
2021520562.tif 000007
【図６】
2021520562.tif 000008
【図７】
2021520562.tif 000009
【図８】
2021520562.tif 000010
【図９】
2021520562.tif 000011
【図１０】
2021520562.tif 000012
【手続補正書】
【提出日】令和2年10月26日(2020.10.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のストレージデバイス間でストライピングされた情報を再平衡化するためのコンピュータ実施方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを含むコンピューティングデバイスによって実施され、前記方法が、
「Ｙ」連続物理ストレージ空間を前記複数のストレージデバイス内の「Ｙ」物理的記憶デバイス上に割り当てて、「Ｙ」物理的ストライプを作成することと、
前記コンピューティングデバイスにおいて、前記「Ｙ」連続物理ストレージ空間を「Ｎ」サブボリュームに分割することと、
前記「Ｎ」サブボリュームを「Ｘ」論理ストライプに割り当てることと、
前記第１の「Ｙ」論理ストライプの各々を、前記「Ｙ」物理ストライプの各々内のそれぞれの物理ストライプに割り当てることと、
残りの論理ストライプを「Ｙ」で割って、それぞれのサブ論理ストライプを形成することと、
前記それぞれのサブ論理ストライプを前記「Ｙ」物理ストライプ間で割り当てることと、を含む、コンピュータ実施方法。
【請求項２】
分割することが、｛２、３、．．．Ｘ｝の最小公倍数として「Ｎ」を計算することを含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
少なくとも１つの論理ストライプを論理ストライプ識別子でタグ付けすることと、を更に含む、請求項１又は２に記載のコンピュータ実施方法。
【請求項４】
少なくとも１つのサブ論理ストライプをサブ論理ストライプ識別子でタグ付けすること、を更に含む、請求項１、２、又は３に記載のコンピュータ実施方法。
【請求項５】
少なくとも１つのサブボリュームを過剰使用についてチェックすることと、
サブボリュームが過剰使用されたと識別されたとき、前記過剰使用されたサブボリュームを異なる物理ストライプに移動させることと、を更に含む、請求項１〜４のいずれか一項に記載のコンピュータ実施方法。
【請求項６】
前記それぞれのサブ論理ストライプを前記「Ｙ」物理的ストライプ間で割り当てることに続いて、「Ｐ」物理ストライプを前記複数のストレージデバイスに追加することであって、「Ｐ」は整数である、追加することと、
前記Ｙ＋１〜Ｙ＋Ｐ論理ストライプ及びその中のサブボリュームを前記追加の「Ｐ」物理ストライプに転送することと、
Ｙ＋Ｐ＋１内のサブボリューム及び任意のより上位の論理ストライプを前記Ｙ＋Ｐ物理ストライプ間で再分配することと、を更に含む、請求項１〜５のいずれか一項に記載のコンピュータ実施方法。
【請求項７】
少なくとも１つのサブボリュームを過剰使用についてチェックすることと、
過剰使用されたサブボリュームが検出されたとき、前記過剰使用されたサブボリュームを前記追加の「Ｐ」物理ストライプに転送することと、を更に含む、請求項６に記載のコンピュータ実施方法。
【請求項８】
前記Ｙ＋１論理ストライプからのサブボリュームを前記第１の「Ｙ」物理ストライプ間で再分配することと、
Ｙ＋２内のサブボリューム及び任意のより上位の数字の論理ストライプを前記第１の「Ｙ」物理ストライプ間で再分配することと、
前記複数のストレージデバイスから前記Ｙ＋１物理ストライプを除去することと、を更に含む、請求項６に記載のコンピュータ実施方法。
【請求項９】
少なくとも１つのサブボリュームを過剰使用についてチェックすることと、
過剰使用されたサブボリュームが検出されたとき、前記過剰使用されたサブボリュームを、最小数のサブボリュームを記憶する物理ストライプに転送することと、を更に含む、請求項８に記載のコンピュータ実施方法。
【請求項１０】
前記「Ｙ」論理ストライプからのサブボリュームを前記第１の「Ｙ−１」物理ストライプ間で再分配することと、
Ｙ＋１内のサブボリューム及び任意のより上位の数字の論理ストライプを前記第１の「Ｙ−１」物理ストライプ間で再分配することと、
前記複数のストレージデバイスから前記「Ｙ」物理ストライプを除去することと、を更に含む、請求項１〜９のいずれか一項に記載のコンピュータ実施方法。
【請求項１１】
少なくとも１つのサブボリュームを過剰使用についてチェックすることと、
過剰使用されたサブボリュームが検出されたとき、前記過剰使用されたサブボリュームを、最小数のサブボリュームを記憶する物理ストライプに転送することと、を更に含む、請求項１０に記載のコンピュータ実施方法。
【請求項１２】
「Ｐ」物理ストライプを追加することであって、「Ｐ」が整数である、追加することと、
前記Ｙ＋１〜Ｙ＋Ｐ論理ストライプ及びその中のサブボリュームを前記追加の「Ｐ」物理ストライプに転送することと、
Ｙ＋Ｐ＋１内のサブボリューム及び任意のより上位の数字の論理ストライプを前記Ｙ＋Ｐ物理ストライプ間で再分配することと、を更に含む、請求項１０に記載のコンピュータ実施方法。
【請求項１３】
少なくとも１つのサブボリュームを過剰使用についてチェックすることと、
過剰使用されたサブボリュームが検出されたとき、前記過剰使用されたサブボリュームを前記追加の「Ｐ」物理ストライプに転送することと、を更に含む、請求項１２に記載のコンピュータ実施方法。
【請求項１４】
ストライピングされた情報を複数のストレージデバイス間で再平衡化するためのシステムであって、
メモリに記憶されており、「Ｙ」連続物理ストレージ空間を前記複数のストレージデバイス内の「Ｙ」物理的ストレージデバイス上に割り当てて、「Ｙ」物理ストライプを作成する第１の割り当てモジュールと、
前記メモリに記憶されており、前記「Ｙ」連続物理ストレージ空間を「Ｎ」サブボリュームに分割する分割モジュールと、
前記メモリに記憶されており、前記「Ｎ」サブボリュームを「Ｘ」論理ストライプに割り当てる第２の割り当てモジュールと、
前記メモリに記憶されており、前記第１の「Ｙ」論理ストライプの各々を前記「Ｙ」物理ストライプの各々内のそれぞれの物理ストライプに割り当てる第３の割り当てモジュールと、
前記分割モジュールが残りの論理ストライプを「Ｙ」で割って、それぞれのサブ論理ストライプを形成し、
前記メモリに記憶されており、前記それぞれのサブ論理ストライプを前記「Ｙ」物理的ストライプ間で割り当てる「Ｎ番目の」割り当てモジュールと、
前記第１の割り当てモジュール、前記分割モジュール、前記第２の割り当てモジュール、前記第３の割り当てモジュール、及び前記「Ｎ番目の」割り当てモジュールを実行する、少なくとも１つの物理的プロセッサと、を備える、システム。
【請求項１５】
メモリに記憶されており、少なくとも１つのサブボリュームを過剰使用についてチェックするチェックモジュールと、
前記メモリに記憶されており、前記サブボリュームが過剰使用されたと識別されたとき、前記過剰使用されたサブボリュームを異なる物理ストライプに移動させる移動モジュールと、を更に備える、請求項１４に記載のシステム。
【請求項１６】
前記メモリに記憶されており、前記それぞれのサブ論理ストライプを前記「Ｙ」物理的ストライプ間で割り当てることに続いて、「Ｐ」物理ストライプを前記複数のストレージデバイスに追加し、「Ｐ」は整数である、追加モジュールと、
前記メモリに記憶されており、前記Ｙ＋１〜Ｙ＋Ｐ論理ストライプ及びその中のサブボリュームを前記追加の「Ｐ」物理ストライプに転送する転送モジュールと、
前記メモリに記憶されており、Ｙ＋Ｐ＋１内のサブボリューム及び任意のより上位の論理ストライプを前記Ｙ＋Ｐ物理ストライプ間で再分配する再分配モジュールと、を更に備える、請求項１４又は１５に記載のシステム。
【請求項１７】
前記メモリに記憶されており、前記「Ｙ」論理ストライプからのサブボリュームを前記第１の「Ｙ−１」物理ストライプ間で再分配する第１の再分配モジュールと、
前記メモリに記憶されており、Ｙ＋１内のサブボリューム及び任意のより上位の数字の論理ストライプを前記第１の「Ｙ−１」物理ストライプ間で再分配する第２の再分配モジュールと、
前記メモリに記憶されており、前記複数のストレージデバイスから前記「Ｙ」物理ストライプを除去する除去モジュールと、を更に備える、請求項１４、１５、又は１６に記載のシステム。
【請求項１８】
１つ以上のコンピュータ実行可能命令を備える非一過性コンピュータ可読媒体であって、前記命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティングデバイスに、
「Ｙ」連続物理ストレージ空間を複数のストレージデバイス内の「Ｙ」物理ストレージデバイス上に割り当てて、「Ｙ」物理ストライプを作成することと、
前記コンピューティングデバイスにおいて、前記「Ｙ」連続物理ストレージ空間を「Ｎ」サブボリュームに分割することと、
前記「Ｎ」サブボリュームを「Ｘ」論理ストライプに割り当てることと、
前記第１の「Ｙ」論理ストライプの各々を前記「Ｙ」物理ストライプの各々内のそれぞれの物理ストライプに割り当てることと、
残りの論理ストライプを「Ｙ」で割って、それぞれのサブ論理ストライプを形成することと、
前記それぞれのサブ論理ストライプを前記「Ｙ」物理ストライプ間で割り当てることと、を行わせる、非一過性コンピュータ可読媒体。
【請求項１９】
コンピュータ実行可能命令を更に備える請求項１８に記載の非一過性コンピュータ可読媒体であって、前記命令は、前記コンピューティングデバイスに、
前記それぞれのサブ論理ストライプを前記「Ｙ」物理的ストライプ間で割り当てることに続いて、「Ｐ」物理ストライプを前記複数のストレージデバイスに追加することであって、「Ｐ」は整数である、追加することと、
前記Ｙ＋１〜Ｙ＋Ｐ論理ストライプ及びその中のサブボリュームを前記追加の「Ｐ」物理ストライプに転送することと、
Ｙ＋Ｐ＋１内のサブボリューム及び任意のより上位の数字の論理ストライプを前記Ｙ＋Ｐ物理ストライプ間で再分配することと、を行わせる、非一過性コンピュータ可読媒体。
【請求項２０】
コンピュータ実行可能命令を更に備える請求項１８又は１９に記載の非一過性コンピュータ可読媒体であって、前記命令は、前記コンピューティングデバイスに、
前記「Ｙ」論理ストライプからのサブボリュームを前記第１の「Ｙ−１」物理ストライプ間で再分配することと、
Ｙ＋１内のサブボリューム及び任意のより上位の論理ストライプを前記第１の「Ｙ−１」物理ストライプ間で再分配することと、
前記複数のストレージデバイスから前記「Ｙ」物理ストライプを除去することと、を行わせる、非一過性コンピュータ可読媒体。
【国際調査報告】
2021520562.tif 000013
2021520562.tif 000014