(57)【特許請求の範囲】
【請求項１】
Ｎ個のストレージ装置により形成されたストレージアレイを管理する方法であって、
コントローラが、前記Ｎ個のストレージ装置の消耗度を求めるステップと、
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割するステップであって、前記第１のストレージ装置群のストレージ装置の最小消耗度は、前記第２のストレージ装置群のストレージ装置の最大消耗度以上である、ステップと、
前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させるステップ、或いは書き込まれるべきデータを前記第１のストレージ装置群に書き込むステップと
を有する方法。
【請求項２】
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割する前記ステップが、
前記Ｎ個のストレージ装置を前記消耗度の降順に従って並べるステップであって、最大消耗度のストレージ装置の番号を１とし、最小消耗度のストレージ装置の番号をＮとする、ステップと、
ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算するステップと（０＜ｉ＜Ｎ）、
前記消耗度間の前記相違が第１の消耗閾値以下であった場合、１番目ないしｉ番目のストレージ装置を前記第１のストレージ装置群に設定し、（ｉ＋１）番目ないしＮ番目のストレージ装置を前記第２のストレージ装置群に設定するステップと、
前記消耗度間の前記相違が前記第１の消耗閾値より大きかった場合、ｉに１を加え、ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算し続けるステップと
を有する、請求項１に記載の方法。
【請求項３】
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割する前記ステップが、
前記Ｎ個のストレージ装置の前記消耗度に従って前記Ｎ個のストレージ装置をＳ個のサブセクションにグループ化するステップであって、ｊ番目のサブセクションのストレージ装置の最小の消耗度は、（ｊ＋１）番目のサブセクションのストレージ装置の最大の消耗度以上である、ステップ（０＜ｊ＜Ｓ）と、
１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置の数を算出するステップと、
前記１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置の数がＮ／２以上であった場合、前記１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置を前記第１のストレージ装置群に設定し、前記（ｊ＋１）番目のサブセクションないし前記Ｓ番目のサブセクションのストレージ装置を前記第２のストレージ装置群に設定する、ステップと、
前記１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置の数がＮ／２未満であった場合、ｊに１を加え、前記１番目のサブセクションないしｊ番目のサブセクションのストレージ装置の数を算出し続けるステップと
を有する、請求項１に記載の方法。
【請求項４】
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割する前記ステップが、
前記Ｎ個のストレージ装置の前記消耗度に従って前記Ｎ個のストレージ装置をＳ個のサブセクションにグループ化するステップであって、ｊ番目のサブセクションのストレージ装置の最小の消耗度は、（ｊ＋１）番目のサブセクションのストレージ装置の最大の消耗度以上である、ステップ（０＜ｊ＜Ｓ）と、
１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置を前記第１のストレージ装置群に設定し、前記（ｊ＋１）番目のサブセクションないし前記Ｓ番目のサブセクションのストレージ装置を前記第２のストレージ装置群に設定するステップであって、Ｓ／２の端数の切り捨てを示す
【数１】
0005881900.tif 000004
、或いはＳ／２の端数の切り上げを示す
【数２】
0005881900.tif 000005
である、ステップと
を有する、請求項１に記載の方法。
【請求項５】
前記Ｎ個のストレージ装置をＳ個のサブセクションにグループ化する前記ステップが、
前記Ｎ個のストレージ装置を前記消耗度の降順に従って並べるステップであって、最大消耗度のストレージ装置の番号を１とし、最小消耗度のストレージ装置の番号をＮとする、ステップと、
ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算するステップと（０＜ｉ＜Ｎ）、
前記消耗度間の前記相違が第２の消耗閾値以下であった場合、前記ｉ番目のストレージ装置を或るサブセクションのグループに入れ、（ｉ＋１）のストレージ装置を別のサブセクションのグループに入れ、ｉに１を加え、ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算し続けるステップと、
前記消耗度間の前記相違が第２の消耗閾値より大きかった場合、前記（ｉ＋１）番目のストレージ装置を、前記ｉ番目のストレージ装置が所属するサブセクションのグループに入れ、ｉに１を加え、ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算し続けるステップと
を有する、請求項３又は４に記載の方法。
【請求項６】
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割する前記ステップが、
消耗度が第３の消耗閾値以上であるストレージ装置により前記第１のストレージ装置群を形成し、消耗度が前記第３の消耗閾値未満であるストレージ装置により前記第２のストレージ装置群を形成するステップ
を有する、請求項１に記載の方法。
【請求項７】
前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させるステップが、
前記第１のストレージ装置群のフリーストレージ空間FreeSizeについての統計情報を収集するステップと、
前記第２のストレージ装置群のストレージ装置各々からFreeSize/(N-X)のデータを抽出し、前記第１のストレージ装置群へデータを移動させるステップであって、Ｘは前記第１のストレージ装置群のストレージ装置の数を示す、ステップと
を有する、請求項１−６の何れか１項に記載の方法。
【請求項８】
前記第２のストレージ装置群の各サブセクションから抽出されるデータの量が等しい量である場合に、前記第２のストレージ装置群のストレージ装置各々から(FreeSize-FreeSizeA)/(N-X)のデータが抽出されかつ前記第１のストレージ装置群に移動させられ、FreeSizeはデータを移動させる前における前記第１のストレージ装置群のフリーストレージ空間を示し、FreeSizeAはデータを移動させた後における前記第１のストレージ装置群のフリーストレージ空間を示し、Ｘは前記第１のストレージ装置群のストレージ装置の数を示す、請求項３−５の何れか１項に記載の方法。
【請求項９】
前記データを移動させた後の前記第１のストレージ装置群のサブセクション各々のフリーストレージ空間が、
FreeSize/X*(u-1)
であり、１≦u≦ｊであり、ｊは前記第１のストレージ装置群に含まれるサブセクションの番号を示し、FreeSizeはデータを移動させる前における前記ストレージ装置群のフリーストレージ空間を示し、Ｘは前記第１のストレージ装置群のストレージ装置の数を示し、
データの移動後に、前記第１のストレージ装置群のサブセクション全てのフリーストレージ空間は全部でFreeSizeAである、請求項８に記載の方法。
【請求項１０】
前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させる前に、当該方法は、
前記第２のストレージ装置群のストレージ装置の消耗度を第４の消耗閾値と比較するステップと、
前記第２のストレージ装置群の少なくとも１つのストレージ装置の消耗度が前記第４の消耗閾値以上であった場合に、前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させるステップと
を更に有する、請求項１−９の何れか１項に記載の方法。
【請求項１１】
Ｎ個のストレージ装置により形成されたストレージアレイを管理する装置であって、
前記Ｎ個のストレージ装置の消耗度を求めるように形成された捕捉モジュールと、
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割するように形成された分割モジュールであって、前記第１のストレージ装置群のストレージ装置の最小消耗度は、前記第２のストレージ装置群のストレージ装置の最大消耗度以上である、分割モジュールと、
前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させる、或いは書き込まれるべきデータを前記第１のストレージ装置群に書き込むように形成された処理モジュールと
を有する装置。
【請求項１２】
前記分割モジュールが、
前記Ｎ個のストレージ装置を前記消耗度の降順に従って並べ、最大消耗度のストレージ装置の番号を１とし、最小消耗度のストレージ装置の番号をＮとし、
ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算し（０＜ｉ＜Ｎ）、
前記消耗度間の前記相違が第１の消耗閾値以下であった場合、１番目ないしｉ番目のストレージ装置を前記第１のストレージ装置群に設定し、（ｉ＋１）番目ないしＮ番目のストレージ装置を前記第２のストレージ装置群に設定し、
前記消耗度間の前記相違が前記第１の消耗閾値より大きかった場合、ｉに１を加え、ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算し続けるように形成されている、請求項１１に記載の装置。
【請求項１３】
前記分割モジュールが、
前記Ｎ個のストレージ装置の前記消耗度に従って前記Ｎ個のストレージ装置をＳ個のサブセクションにグループ化し、ｊ番目のサブセクションのストレージ装置の最小の消耗度は、（ｊ＋１）番目のサブセクションのストレージ装置の最大の消耗度以上であり（０＜ｊ＜Ｓ）、
１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置の数を算出し、
前記１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置の数がＮ／２以上であった場合、前記１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置を前記第１のストレージ装置群に設定し、前記（ｊ＋１）番目のサブセクションないし前記Ｓ番目のサブセクションのストレージ装置を前記第２のストレージ装置群に設定し、
前記１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置の数がＮ／２未満であった場合、ｊに１を加え、前記１番目のサブセクションないしｊ番目のサブセクションのストレージ装置の数を算出し続けるように形成されている、請求項１１に記載の装置。
【請求項１４】
前記分割モジュールが、
前記Ｎ個のストレージ装置の前記消耗度に従って前記Ｎ個のストレージ装置をＳ個のサブセクションにグループ化し、ｊ番目のサブセクションのストレージ装置の最小の消耗度は、（ｊ＋１）番目のサブセクションのストレージ装置の最大の消耗度以上であり（０＜ｊ＜Ｓ）、
１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置を前記第１のストレージ装置群に設定し、前記（ｊ＋１）番目のサブセクションないし前記Ｓ番目のサブセクションのストレージ装置を前記第２のストレージ装置群に設定するように形成され、
Ｓ／２の端数の切り捨てを示す
【数３】
0005881900.tif 000006
、或いはＳ／２の端数の切り上げを示す
【数４】
0005881900.tif 000007
である、請求項１１に記載の装置。
【請求項１５】
前記分割モジュールが、
消耗度が第３の消耗閾値以上であるストレージ装置により前記第１のストレージ装置群を形成し、消耗度が前記第３の消耗閾値未満であるストレージ装置により前記第２のストレージ装置群を形成するように形成されている、請求項１１に記載の装置。
【請求項１６】
前記処理モジュールが、
前記第１のストレージ装置群のフリーストレージ空間FreeSizeについての統計情報を収集し、
前記第２のストレージ装置群のストレージ装置各々からFreeSize/(N-i)のデータを抽出し、前記第１のストレージ装置群へデータを移動させるように形成され、
ｉは前記第１のストレージ装置群のストレージ装置の数を示す、請求項１１−１５の何れか１項に記載の装置。
【請求項１７】
前記処理モジュールが、
前記第２のストレージ装置群の各サブセクションから抽出されるデータの量が等しい量である場合に、前記第２のストレージ装置群のストレージ装置各々から(FreeSize-FreeSizeA)/(N-X)のデータを抽出しかつ前記第１のストレージ装置群にデータを移動させ、FreeSizeはデータを移動させる前における前記第１のストレージ装置群のフリーストレージ空間を示し、FreeSizeAはデータを移動させた後における前記第１のストレージ装置群のフリーストレージ空間を示し、Ｘは前記第１のストレージ装置群のストレージ装置の数を示す、請求項１３又は１４に記載の装置。
【請求項１８】
当該装置が、前記第２のストレージ装置群のストレージ装置の消耗度を第４の消耗閾値と比較する比較モジュールを更に有し、
前記第２のストレージ装置群の少なくとも１つのストレージ装置の消耗度が前記第４の消耗閾値以上であった場合に、前記処理モジュールは、前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させる、請求項１１−１７の何れか１項に記載の装置。
【請求項１９】
プロセッサ、メモリ、システムバス及び通信インタフェースを有するコントローラであって、前記プロセッサ、前記メモリ及び前記通信インタフェースは前記システムバスを介して互いに接続して通信し、
前記通信インタフェースはストレージ装置と通信するように形成され、
前記メモリは、コンピュータにより実行可能な命令を保存するように形成され、
前記プロセッサは、前記コンピュータにより実行可能な命令を実行し、請求項１−１０の何れか１項に記載の方法を実行するように形成される、コントローラ。
【請求項２０】
プログラムコードを保存するコンピュータ読み取り可能な記憶媒体に保存されたコンピュータプログラムであって、前記プログラムコードに含まれる命令が、請求項１−１０の何れか１項に記載の方法を実行するために使用される、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態は、ストレージの技術分野に関連し、特にストレージアレイを管理する方法、装置及びコントローラに関連する。
【背景技術】
【０００２】
フラッシュメモリは、不揮発性メモリであり、電源が遮断された場合でもデータが失われないという特徴を有し、それ故に外部メモリ及び内部メモリとして広く使用されている。例えば、最近コンピュータシステムで益々使用されているソリッドステートディスク(SSD)はフラッシュメモリに基づいて実現されている。ソリッドステートディスクはソリッドステートドライブ(SSD)とも呼ばれている。フラッシュメモリは、消去回数が限られているという特徴を有する。SSDから/へのリード/ライト動作はそれぞれSSDをある程度消耗する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
大容量データストレージに対する条件を満足するため、一般に、複数のSSDでSSDストレージアレイを形成する必要がある。ウェアレベリング(Wear  Leveling)は、SSDストレージアレイのために提案されている方式であり、本質的には、SSDストレージアレイに属する全てのSSDの消耗状態を同様にし、特定のSSDが過剰に頻繁に消去の対象となってしまうことを回避する。しかしながら、従来のウェアレベリングは、複数のSSDが同時に不具合を引き起こす状況を招き、データを喪失してしまうおそれがある。
【課題を解決するための手段】
【０００４】
実施の形態による方法は、
Ｎ個のストレージ装置により形成されたストレージアレイを管理する方法であって、
コントローラが、前記Ｎ個のストレージ装置の消耗度を求めるステップと、
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割するステップであって、前記第１のストレージ装置群に属するストレージ装置の最小消耗度は、前記第２のストレージ装置群に属するストレージ装置の最大消耗度以上である、ステップと、
前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させる、或いは書き込まれるべきデータを前記第１のストレージ装置群に書き込むステップと
を有する方法である。
【図面の簡単な説明】
【０００５】
【図１】本発明の実施の形態によるストレージシステムの構造を示す図。
【図２】本発明の実施の形態によるストレージリソースプール方式を説明するための図。
【図３】本発明の実施の形態によるウェアレベリングを説明するための図。
【図４】本発明の実施の形態による方法のフローチャートを示す図。
【図５】本発明の実施の形態による効果を説明するための図。
【図６】本発明の実施の形態による別の方法のフローチャートを示す図。
【図７】本発明の実施の形態による別の方法のフローチャートを示す図。
【図８】本発明の実施の形態による更に別の方法のフローチャートを示す図。
【図９】本発明の実施の形態によるアプリケーション状況を説明するための図。
【図１０】本発明の実施の形態による別のアプリケーション状況を説明するための図。
【図１１】ストレージアレイを管理する本発明の実施の形態による装置の概略的な構造を示す図。
【図１２】本発明の実施の形態によるコントローラの概略的な構造を示す図。
【発明を実施するための形態】
【０００６】
＜実施の形態の概要＞
本発明の実施の形態は、ストレージアレイを管理する方法、装置及びコントローラを提供し、ウェアレベリングに起因して複数のストレージ装置が同時に不具合を起こす危険性を減らす。
【０００７】
第１の実施の形態による方法は、
Ｎ個のストレージ装置により形成されたストレージアレイを管理する方法であって、
コントローラが、前記Ｎ個のストレージ装置の消耗度を求めるステップと、
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割するステップであって、前記第１のストレージ装置群に属するストレージ装置の最小消耗度は、前記第２のストレージ装置群に属するストレージ装置の最大消耗度以上である、ステップと、
前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させる、或いは書き込まれるべきデータを前記第１のストレージ装置群に書き込むステップと
を有する方法である。
【０００８】
第１の実施の形態において、
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割する前記ステップが、
前記Ｎ個のストレージ装置を前記消耗度の降順に従って並べるステップであって、最大消耗度のストレージ装置の番号を１とし、最小消耗度のストレージ装置の番号をＮとする、ステップと、
ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算するステップと（０＜ｉ＜Ｎ）、
前記消耗度間の相違が第１の消耗閾値以下であった場合、１番目ないしｉ番目のストレージ装置を前記第１のストレージ装置群に設定し、（ｉ＋１）番目ないしＮ番目のストレージ装置を前記第２のストレージ装置群に設定するステップと、
前記消耗度間の相違が前記第１の消耗閾値より大きかった場合、ｉに１を加え、ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算し続けるステップと
を有してもよい。
【０００９】
第１の実施の形態において、
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割する前記ステップが、
前記Ｎ個のストレージ装置の消耗度に従って前記Ｎ個のストレージ装置をＳ個のサブセクションにグループ化するステップであって、ｊ番目のサブセクションのストレージ装置のうちの最小の消耗度は、（ｊ＋１）番目のサブセクションのストレージ装置のうちの最大の消耗度以上である、ステップ（０＜ｊ＜Ｓ）と、
１番目のサブセクションないしｊ番目のサブセクションのストレージ装置の数を算出するステップと（０＜ｊ＜Ｓ）、
前記１番目のサブセクションないしｊ番目のサブセクションのストレージ装置の数がＮ／２以上であった場合、前記１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置を前記第１のストレージ装置群に設定し、前記（ｊ＋１）番目のサブセクションないし前記Ｓ番目のサブセクションのストレージ装置を前記第２のストレージ装置群に設定する、ステップと、
前記１番目のサブセクションないしｊ番目のサブセクションのストレージ装置の数がＮ／２未満であった場合、ｊに１を加え、前記１番目のサブセクションないしｊ番目のサブセクションのストレージ装置の数を算出し続けるステップと
を有してもよい。
【００１０】
第１の実施の形態において、
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割する前記ステップが、
前記Ｎ個のストレージ装置の消耗度に従って前記Ｎ個のストレージ装置をＳ個のサブセクションにグループ化するステップであって、ｊ番目のサブセクションのストレージ装置のうちの最小の消耗度は、（ｊ＋１）番目のサブセクションのストレージ装置のうちの最大の消耗度以上である、ステップ（０＜ｊ＜Ｓ）と、
１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置を前記第１のストレージ装置群に設定し、前記（ｊ＋１）番目のサブセクションないし前記Ｓ番目のサブセクションのストレージ装置を前記第２のストレージ装置群に設定するステップであって、ｊはＳ／２以下の数のうち最大の整数（ｊ＝|_Ｓ／２_|）である、或いはｊはＳ／２以上の数のうち最小の整数（ｊ＝|-Ｓ／２-|）である、ステップと
を有してもよい。
【００１１】
第１の実施の形態において、
前記Ｎ個のストレージ装置をＳ個のサブセクションにグループ化する前記ステップが、
前記Ｎ個のストレージ装置を前記消耗度の降順に従って並べるステップであって、最大消耗度のストレージ装置の番号を１とし、最小消耗度のストレージ装置の番号をＮとする、ステップと、
ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算するステップと（０＜ｉ＜Ｎ）、
前記消耗度間の相違が第２の消耗閾値以下であった場合、１番目のストレージ装置を或るサブセクションのグループに入れ、（ｉ＋１）のストレージ装置を別のサブセクションのグループに入れ、ｉに１を加え、ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算し続けるステップと、
前記消耗度間の相違が第２の消耗閾値より大きかった場合、（ｉ＋１）番目のストレージ装置を、ｉ番目のストレージ装置が所属するサブセクションのグループに入れ、ｉに１を加え、ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算し続けるステップと
を有してもよい。
【００１２】
第１の実施の形態において、
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割する前記ステップが、
消耗度が第３の消耗閾値以上であるストレージ装置により前記第１のストレージ装置群を形成し、消耗度が前記第３の消耗閾値未満であるストレージ装置により前記第２のストレージ装置群を形成するステップ
を有してもよい。
【００１３】
第１の実施の形態において、
前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させる場合において、
前記第１のストレージ装置群のフリーストレージ空間FreeSizeについての統計情報を収集し、
前記第２のストレージ装置群に属するストレージ装置各々からFreeSize/(N-X)のデータを抽出し、前記第１のストレージ装置群へデータを移動させ、
Ｘは前記第１のストレージ装置群に属するストレージ装置の数を示してもよい。
【００１４】
第１の実施の形態において、
前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させる場合において、
前記第１のストレージ装置群に属するサブセクション各々に、前記第１のサブセクションから徐々に少なくなる量のデータ又は等しい量のデータを加え、及び
前記第２のストレージ装置群に属する前記Ｓ番目のサブセクションないし各サブセクションから徐々に少なくなる量のデータ又は等しい量のデータを抽出してもよい。
【００１５】
第１の実施の形態において、
前記第２のストレージ装置群に属する前記Ｓ番目のサブセクションないし各サブセクションから等しい量のデータを抽出する場合に、前記第２のストレージ装置群に属するストレージ装置各々から(FreeSize-FreeSizeA)/(N-X)のデータが抽出されかつ前記第１のストレージ装置群に移動させられ、FreeSizeはデータを移動させる前における前記第１のストレージ装置群のフリーストレージ空間を示し、FreeSizeAはデータを移動させた後における前記第１のストレージ装置群のフリーストレージ空間を示し、Ｘは前記第１のストレージ装置群に属するストレージ装置の数を示してもよい。
【００１６】
第１の実施の形態において、
前記データを移動させた後の前記第１のストレージ装置群に属するサブセクション各々のフリーストレージ空間が、
FreeSize/X*(u-1)
であり、１≦u≦ｊであり、ｊは前記第１のストレージ装置群をなすサブセクションの番号を示し、FreeSizeはデータを移動させる前における前記ストレージ装置群のフリーストレージ空間を示し、Ｘは前記第１のストレージ装置群に属するストレージ装置の数を示し、
データの移動後に、前記第１のストレージ装置群に属するサブセクション全てのフリーストレージ空間は全部でFreeSizeAであってもよい。
【００１７】
第１の実施の形態において、
前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させる前に、当該方法は、前記第２のストレージ装置群に属するストレージ装置の消耗度を第４の消耗閾値と比較するステップを更に有し、
前記第２のストレージ装置群に属する少なくとも１つのストレージ装置の消耗度が前記第４の消耗閾値以上であった場合に、前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させてもよい。
【００１８】
第２の実施の形態による装置は、
Ｎ個のストレージ装置により形成されたストレージアレイを管理する装置であって、
前記Ｎ個のストレージ装置の消耗度を求めるように形成された捕捉モジュールと、
前記Ｎ個のストレージ装置の前記消耗度に従って、前記ストレージアレイを第１のストレージ装置群及び第２のストレージ装置群に分割するように形成された分割モジュールであって、前記第１のストレージ装置群に属するストレージ装置の最小消耗度は、前記第２のストレージ装置群に属するストレージ装置の最大消耗度以上である、分割モジュールと、
前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させる、或いは書き込まれるべきデータを前記第１のストレージ装置群に書き込むように形成された処理モジュールと
を有する装置である。
【００１９】
第２の実施の形態において、
前記分割モジュールが、
前記Ｎ個のストレージ装置を前記消耗度の降順に従って並べ、最大消耗度のストレージ装置の番号を１とし、最小消耗度のストレージ装置の番号をＮとし、
ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算し（０＜ｉ＜Ｎ）、
前記消耗度間の相違が第１の消耗閾値以下であった場合、１番目ないしｉ番目のストレージ装置を前記第１のストレージ装置群に設定し、（ｉ＋１）番目ないしＮ番目のストレージ装置を前記第２のストレージ装置群に設定し、
前記消耗度間の相違が前記第１の消耗閾値より大きかった場合、ｉに１を加え、ｉ番目のストレージ装置及び（ｉ＋１）番目のストレージ装置の消耗度間の相違を計算し続けるように形成されていてもよい。
【００２０】
第２の実施の形態において、
前記分割モジュールが、
前記Ｎ個のストレージ装置の消耗度に従って前記Ｎ個のストレージ装置をＳ個のサブセクションにグループ化し、ｊ番目のサブセクションのストレージ装置のうちの最小の消耗度を、（ｊ＋１）番目のサブセクションのストレージ装置のうちの最大の消耗度以上とし、
１番目のサブセクションないしｊ番目のサブセクションのストレージ装置の数を算出し（０＜ｊ＜Ｓ）、
前記１番目のサブセクションないしｊ番目のサブセクションのストレージ装置の数がＮ／２以上であった場合、前記１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置を前記第１のストレージ装置群に設定し、前記（ｊ＋１）番目のサブセクションないし前記Ｓ番目のサブセクションのストレージ装置を前記第２のストレージ装置群に設定し、
前記１番目のサブセクションないしｊ番目のサブセクションのストレージ装置の数がＮ／２未満であった場合、ｊに１を加え、前記１番目のサブセクションないしｊ番目のサブセクションのストレージ装置の数を算出し続けるように形成されていてもよい。
【００２１】
第２の実施の形態において、
前記分割モジュールが、
前記Ｎ個のストレージ装置の消耗度に従って前記Ｎ個のストレージ装置をＳ個のサブセクションにグループ化し、ｊ番目のサブセクションのストレージ装置のうちの最小の消耗度を、（ｊ＋１）番目のサブセクションのストレージ装置のうちの最大の消耗度以上とし（０＜ｊ＜Ｓ）、
１番目のサブセクションないし前記ｊ番目のサブセクションのストレージ装置を前記第１のストレージ装置群に設定し、前記（ｊ＋１）番目のサブセクションないし前記Ｓ番目のサブセクションのストレージ装置を前記第２のストレージ装置群に設定するように形成され、
ｊはＳ／２以下の数のうち最大の整数（ｊ＝|_Ｓ／２_|）である、或いはｊはＳ／２以上の数のうち最小の整数（ｊ＝|-Ｓ／２-|）であってもよい。
【００２２】
第２の実施の形態において、
前記分割モジュールが、
消耗度が第３の消耗閾値以上であるストレージ装置により前記第１のストレージ装置群を形成し、消耗度が前記第３の消耗閾値未満であるストレージ装置により前記第２のストレージ装置群を形成するように形成されていてもよい。
【００２３】
第２の実施の形態において、
前記処理モジュールが、
前記第１のストレージ装置群のフリーストレージ空間FreeSizeについての統計情報を収集し、
前記第２のストレージ装置群に属するストレージ装置各々からFreeSize/(N-X)のデータを抽出し、前記第１のストレージ装置群へデータを移動させるように形成され、
Ｘは前記第１のストレージ装置群に属するストレージ装置の数を示してもよい。
【００２４】
第２の実施の形態において、
前記第１のストレージ装置群に属するサブセクション各々に加えられるデータの量が、前記第１のサブセクションから徐々に少なくなる量又は等しい量であり、
前記第２のストレージ装置群に属するサブセクション各々から抽出されるデータ量が、前記Ｓ番目のサブセクションから徐々に少なくなる量又は等しい量であってもよい。
【００２５】
第２の実施の形態において、
前記処理モジュールが、
前記第２のストレージ装置群に属する各サブセクションから抽出されるデータの量が等しい量である場合に、前記第２のストレージ装置群に属するストレージ装置各々から(FreeSize-FreeSizeA)/(N-X)のデータが抽出されかつ前記第１のストレージ装置群に移動させられ、FreeSizeはデータを移動させる前における前記第１のストレージ装置群のフリーストレージ空間を示し、FreeSizeAはデータを移動させた後における前記第１のストレージ装置群のフリーストレージ空間を示し、Ｘは前記第１のストレージ装置群に属するストレージ装置の数を示してもよい。
【００２６】
第２の実施の形態において、
当該装置が、前記第２のストレージ装置群に属するストレージ装置の消耗度を第４の消耗閾値と比較する比較モジュールを更に有し、
前記第２のストレージ装置群に属する少なくとも１つのストレージ装置の消耗度が前記第４の消耗閾値以上であった場合に、前記処理モジュールは、前記第２のストレージ装置群から前記第１のストレージ装置群へデータを移動させてもよい。
【００２７】
第３の実施の形態によるコントローラは、
プロセッサ、メモリ、システムバス及び通信インタフェースを有するコントローラであって、前記プロセッサ、前記メモリ及び前記通信インタフェースは前記システムバスを介して互いに通信可能に接続され、
前記通信インタフェースはストレージ装置と通信するように形成され、
前記メモリは、コンピュータにより実行可能な命令を保存するように形成され、
前記プロセッサは、前記コンピュータにより実行可能な命令を実行し、第１の実施の形態による方法を実行する、コントローラである。
【００２８】
第４の実施の形態によるコンピュータプログラムは、
プログラムコードを保存するコンピュータ読み取り可能な記憶媒体に保存されたコンピュータプログラムであって、前記プログラムコードで形成される命令が、第１の実施の形態による方法を実行するために使用される、コンピュータプログラムである。
【００２９】
本発明の実施の形態において、ストレージアレイは、ストレージ装置の消耗度に従って第1のストレージ装置群及び第2のストレージ装置群に分割され、第1のストレージ装置群に属するストレージ装置についての最小消耗度は、第2のストレージ装置群に属するストレージ装置についての最大消耗度以上であり、第2のストレージ装置群の中のデータは、第1のストレージ装置群に移動させられる、或いは書き込まれるべきデータが第1のストレージ装置群に書き込まれる。従って、第1のストレージ装置群に属するストレージ装置のサービス寿命を短縮することで、第2のストレージ装置群に属するストレージ装置のサービス寿命が相対的に延長され、これにより、第1のストレージ装置群に属するストレージ装置が不具合を起こす時点と第2のストレージ装置群に属するストレージ装置が不具合を起こす時点との間の期間を長くし、消耗度に起因して複数のストレージ装置が同時に不具合を起こすリスクを減らし、データの信頼性を向上させる。
【００３０】
＜図面＞
本発明の実施の形態による手段をより明確に示すための添付図面(実施の形態又は従来技術に関する添付図面)が「図面の簡単な説明」の欄に列挙されている。当然に以下の説明における添付図面は本発明の実施の形態のうちのいくつかを示しているに過ぎず、当業者は創作的能力を発揮することなく明細書及び添付図面に基づいて他の実施の形態を得ることが可能である。
【００３１】
＜実施の形態の詳細な説明＞
本発明の実施の形態の課題、技術的解決手段及び有利な効果を更に分かりやすくするため、以下、本発明の実施の形態に関する添付図面を参照しながら本発明の実施の形態による技術的解決手段を明確かつ十分に説明する。当然に、説明される実施の形態は、本発明による実施の形態の全てではなくその一部に過ぎない。本発明の実施の形態に基づいて当業者が創作的能力を発揮することなく把握できる他の全ての実施の形態も、本発明の保護範囲内に属する。
【００３２】
本発明による実施の形態はストレージアレイを管理するための方法、装置及びコントローラを提供し、ウェアレベリングに起因して複数のストレージ装置が同時に不具合を生じてしまうリスクを回避することが可能である。本発明の実施の形態において、ストレージ装置からの読み取り処理、及び/又はストレージ装置への書き込み処理は、ストレージ装置に対する寿命又は消耗(wear)に関連している。ストレージ装置の不具合(failure)はストレージ装置の消尽(wear-out)と言及され、そのストレージ装置は置換されなければならない。
【００３３】
＜＜本発明の実施の形態によるシステムアーキテクチャ＞＞
ストレージアレイを管理する本発明の実施の形態による方法は、ストレージシステムで実施されてもよい。図1は、ストレージアレイを管理する本発明の実施の形態による方法を使用するシステムアーキテクチャの概略図を示す。図1に示されているように、ストレージシステムはコントローラ11及びストレージ装置22を含む。本実施の形態において、説明上の一例として、ストレージ装置22はソリッドステートディスク(Solid  State  Device：SSD)である。ソリッドステートディスクはソリッドステートドライブ(Solid  State  Drive：SSD)とも呼ばれ、単に「ディスク」のように省略して言及される場合もある。
【００３４】
図1は、具体的なネットワーキング方式を限定するのではなく説明の便宜上の一例を示しているに過ぎず、例えば、カスケード接続されたツリーネットワーキング方式及びリングネットワーキング方式の双方が適用可能である(ただし、コントローラ11及びストレージ装置22が互いに通信できることが仮定されている)。
【００３５】
コントローラ11は、例えばサーバやデスクトップコンピュータ等のような当該技術分野で既知の任意のコンピュータ装置を含んでよい。オペレーティングシステム及びその他のアプリケーションはコントローラの中にインストールされている。コントローラ11は、ストレージ装置22を管理し、例えば、ストレージ装置間のデータ移動(data  migration)を管理したり、ストレージ装置の消耗度(degree  of  wear)を取得したりする。フラッシュメモリは限られた消去回数により特徴付けられるので、ストレージ装置から/への読み取り/書き込みの処理(消去処理と言及されてもよい)は、ストレージ装置をある程度消耗させる。消耗度は、消耗の度合い(wear  extent)と言及されてもよく、ストレージ装置のサービス寿命(service  life)を測定するのに使用される。消耗度は割合又はパーセンテージ等により表現されてもよい。
【００３６】
ストレージ装置22は、例えば、SSD又はダイレクトアクセスメモリ(Direct  Access  Storage  Device：DASD)等のような当該技術分野で知られているストレージ装置を含んでもよい。図1では、説明の便宜上の一例として、ストレージ装置22はSSDである。N個の物理SSDはストレージアレイ又はストレージの配列を形成している。ストレージアレイの基本概念は、比較的安価なディスクを複数個結合することで、高価な大容量ディスクと同程度のパフォーマンス又はより優れたパフォーマンスさえ提供できるようにすることである。ストレージアレイはN個の物理SSDを含み、それら物理SSDの各々は固有の番号を有し、例えば、図1には物理SSD#1、物理SSD#2、物理SSD#3、．．．及び物理SSD#Nが示されている。更に、ストレージアレイに属する物理SSDの数Nは所定の下限値(例えば、10)より小さくてはならず、及びストレージアレイに属する物理SSDの数Nは所定の上限値(例えば、30)より大きくてはならない。具体的には、ストレージアレイに属するN個の物理SSDは、モデルが異なりかつ容量も異なるSSD、モデルは異なるが容量が同じSSD、モデルは同じであるが容量が異なるSSD、或いはモデルが同じでありかつ容量も同じであるSSDであってよい。
【００３７】
別段の言及がない限り、本発明の実施の形態におけるSSDは全て物理SSDに関連する。
【００３８】
物理SSDの各々は、細かい同じサイズの(複数の)チャンク(Chunk：CK)221に分割されていてもよい。チャンクも論理SSDと言及されてよい。物理SSD各々の容量を評価する観点からは、物理SSD各々を分割することで得られる論理SSDの数は、物理SSDのウェイトと呼ばれてもよい。例えば、所定のストレージアレイに属する全ての物理SSDがそれぞれ32MBの論理SSDに分割される場合、200GBの容量を有する物理SSDのウェイトは6400であり、100GBの容量を有する物理SSDのウェイトは3200である。
【００３９】
更に、指定されたタイプの独立ディスクの冗長アレイ(Redundant  Array  of  Independent  Disks：RAID)に従って、複数のCKが論理空間を形成してもよく、論理空間はチャンク群又はチャンクグループである(Chunk  Group：CKG)。独立ディスクの冗長アレイは、低価格ディスクの冗長アレイ(Redundant  Array  of  Inexpensive  Disks：RAID)と言及されてもよい。
【００４０】
RAID5が一例として使用される。RAID5方式を実現するには少なくとも3つのディスクが必要とされ、データ及び対応するパリティ情報が、RAID5を形成するディスク各々に保存され、パリティ情報及び対応するデータは異なるディスクに別々に保存される。RAID5のディスクの1つにおけるデータが破損した場合、残りのデータ及び対応するパリティデータが、破損したデータを復元するために使用される。
【００４１】
例えば、25個の物理SSDがストレージアレイ(ディスクグループと言及されてもよい)を形成し、物理SSD各々の容量が100GBであり、論理SSDの容量が32MBであった場合、物理SSD各々のウェイトは3200である。このストレージアレイの論理SSDがRAID5を形成すると仮定する。具体的な形成方法は以下のとおりである：
ストレージアレイに属する25個の物理SSDがrandom_select(25,9)を実行して9個の物理SSDを取得する。random_select(x,y)関数は、y≦xにおいて、y個のオブジェクトがx個のオブジェクトの中からランダムに選択されることを示す。
【００４２】
9個の物理SSDのうちのSSD各々はrandom_select(F,1)を実行し、ここでFはRAIDを形成するためには選択されなかった物理SSD各々の論理SSDを示し、random_select(F,1)はRAIDを形成するためには選択されなかった論理SSDの中から1つの論理SSDが選択されることを示す。9個の物理SSDから選択された9個の論理SSDは記録され、その9個の論理SSDがパリティデータと共にRAID5を形成する。一方、変数RAID_NUMの値が更新され、RAID_NUMは設定されたRAIDの数である。形成されたRAIDは、形成されたRAIDグループと言及されてもよい。
【００４３】
更に、ストレージアレイに属する所定の空間は、ホットバックアップ(hot  backup)のために確保されている必要がある。ホットバックアップ空間又はホットバックアップスペースは、データを復元するためにストレージアレイの中で確保又は予約されているストレージ空間である。例えば、1つのディスクが不具合を起こした後にデータの再構築のために少なくともストレージ空間が確保されなければならない場合、その1つのディスクが不具合を起こした後にデータ再構築が確保されたストレージ空間で実行されるか否かをおそらくは決定する必要がある。不使用又は未使用のストレージ空間が1つのディスクの容量よりも大きかった場合、新たなRAIDグループが更に設定されてもよい。不使用のストレージ空間が1つのディスクの容量よりも小さかった場合、それは、別のRAIDグループを設定できないこと及び不使用のストレージ空間がホットバックアップスペースとして使用されなければならないことを示す。不使用ストレージ空間(すなわち、実際にサービスを担うために使用されてはいないストレージ空間)は、自由なストレージ空間又は解放されている空間等と言及されてよい。
【００４４】
先行するステップで設定されたRAID_NUM  RAIDグループに関し、ストライプ処理が実行され、各々のストリップ(strip)又はストリップユニットは独立したストレージリソースである。各々のストリップ又はいくつかの隣接するストリップは、ストレージリソースと同じストレージリソースプールに配置される。そして、いくつかのストレージブロックがストレージリソースプールからランダムに選択され、ある論理ユニット番号(Logical  Unit  Number：LUN)のストレージ空間を形成し、コントローラを支援する。この点については図2に詳細に示されている。
【００４５】
先行する方法を利用することで設定されたストレージアレイにおいて、LUN各々についてのサービスは物理SSD各々に均等に分散され、物理SSD各々のサービス負担は、物理SSD各々のウェイト(容量)に合致するようになる。SSDの容量が異なっていた場合、大きな容量のSSDは相対的に多くのサービスを担う必要があり、小さな容量のSSDは相対的に少ないサービスを担う必要がある。サービス負担は容量に直接的に比例している。従って、全てのSSDの消耗度同士の間の相違は小さくなり、適切なウェアレベリングとなる。
【００４６】
図3に示されているように、同数の論理SSDがRAIDを形成しており、番号が示されていない論理SSDは、その論理SSDが使用されていないことを示す。上記の方法に従って、LUN各々のサービスはSSD各々に均等に分散される。更に、物理SSDの各々を分割することで得られる論理SSDの数が大きいほど、(レベルの)平準化の効果も良くなる。
【００４７】
＜＜ストレージアレイの管理方法＞＞
以下、ストレージアレイを管理する本発明の実施の形態により提供される方法を説明する。図4に示されているように、ストレージアレイを管理する本発明の実施の形態による方法のフローチャートが示されている。説明の便宜上、ストレージアレイはN個のストレージ装置により形成されているものとする。本方法は以下のステップを含む。
【００４８】
S102：コントローラが、N個のストレージ装置の消耗度を求める。
【００４９】
消耗度は消耗の度合いと呼ばれてもよく、ストレージ装置のサービス寿命又はライフタイムを評価するのに使用されてもよい。一般に消耗度はパーセンテージで表現される。本発明の実施の形態において、消耗度はTにより表現される。
【００５０】
コントローラは、所定の時間間隔又はタイムインターバルでリクエストコマンドを能動的に送信し、ストレージアレイに属する(1つ以上の)ストレージ装置が各自の消耗度をコントローラに教えるように要求し；例えば、コントローラは、スマートコマンド(SMARTコマンド)をストレージ装置に配信し、ストレージ装置の消耗度を要求する。ストレージ装置は、コントローラからのリクエストに基づかないで、所定の時間間隔で各自の消耗度をコントローラに能動的又は積極的に通知してもよい。N個のストレージ装置の消耗度に関する統計量は、ストレージ装置のサービス期間及び経験値に応じて収集されてもよい。ただし、このことは本発明の実施の形態を限定するものではない。
【００５１】
コントローラは、N個のストレージ装置の消耗度を周期的に取得し、具体的には、コントローラは1週間又は2週間等のような時間間隔でN個のストレージ装置の消耗度を捕捉する。
【００５２】
ストレージ装置の消耗度は、行われているサービスの実際の規模又は処理負担に応じて測定される。
【００５３】
一般に、ストレージアレイに属するストレージ装置の数Nは、所定の下限値(例えば、10)より小さくない方がよく、かつ所定の上限値(例えば、30)より大きくない方がよい。
【００５４】
S104：N個のストレージ装置の消耗度に従って、ストレージアレイを第1のストレージ装置群及び第2のストレージ装置群に分割する。第1のストレージ装置群に属するストレージ装置の最小消耗度は、第2のストレージ装置群に属するストレージ装置の最大消耗度以上である。第1のストレージ装置群は、第1の一群のストレージ装置と言及されてもよいし、ストレージ装置の第1のサブセットと言及されてもよい。第2のストレージ装置群は、第2の一群のストレージ装置と言及されてもよいし、ストレージ装置の第2のサブセットと言及されてもよい。
【００５５】
例えば、M個のストレージ装置の消耗度が所定の消耗閾値に等しい又はそれより大きかった場合、N個のストレージ装置の消耗度に従ってストレージアレイを第1のストレージ装置群及び第2のストレージ装置群に分割する処理がイネーブルにされてもよい。ただし、1≦M≦Nである。
【００５６】
具体的には、Mは1に設定されもよく、その場合、所定の消耗閾値を超える消耗度を有するストレージ装置が1つでも存在する限り、ストレージアレイの分割が行われることを示す。
【００５７】
例えば、Mは2に設定されてもよいし或いはN未満の任意の値に設定されもよい。更に、Mは予約された外部インタフェースにより動的に調整されてもよい。例えば、Mが当初は1に設定され、これは、消耗度が所定の消耗閾値に達することが1度でも検出されると、ストレージアレイの分割の処理がイネーブルにされることを示す。その後に、Mは2に設定され、これは、2つのストレージ装置の消耗度が所定の消耗閾値に達したことが検出されると、ストレージアレイの分割の処理がイネーブルにされることを示すようにしてもよい。
【００５８】
具体的には、第2のストレージ装置群に属するストレージ装置の消耗度同士の間の相違とNとに応じて、Mは調整されてもよい。第2のストレージ装置群に属するストレージ装置の消耗度同士の間の相違が適切に比較的小さかった場合、Mは比較的小さな値に設定されてよい(例えば、Mは1に設定される)。この場合、ストレージアレイの分割は低頻度に実行される。第2のストレージ装置群に属するストレージ装置の消耗度同士の間の相違が比較的大きかった場合、Mは比較的大きな値に設定される(例えば、Mは5に設定される)。この場合、ストレージアレイの分割はそのような頻度の方法では実行されない。
【００５９】
所定の消耗閾値は経験値に従って予め設定され、その後に、備わっている外部インタフェースにより動的に調整されてもよい。所定の消耗閾値はパーセンテージで表現されてもよい。ストレージアレイに属する全てのストレージ装置の消耗度が所定の閾値より小さいという状況であった場合、全てのストレージ装置がウェイト値に従ってアレイ全体のサービス負担を適切に担う。1つのディスクにパフォーマンス障害(performance  bottleneck)が存在しなかった場合、ストレージアレイの分割は実行されない。
【００６０】
N個のストレージ装置の消耗度に従ってストレージアレイを第1のストレージ装置群及び第2のストレージ装置群に分割する具体的な方法については、図6、図7及び図8に示されている。
【００６１】
具体的には、ストレージアレイ全体が第1のストレージ装置群及び第2のストレージ装置群を形成してもよく；ストレージアレイ全体が第1のストレージ装置群、第2のストレージ装置群及び第3のストレージ装置群を形成してもよく、第3のストレージ装置群内にデータを設定する必要がない場合、移動又はマイグレーションによるデータの出入りを含むデータ移動は実行されない。
【００６２】
好ましくは、本発明の実施の形態において、データマイグレーションが必要とされるストレージ装置のみにより形成されたストレージアレイは、N個のストレージ装置により形成されたストレージアレイと解釈してもよい。
【００６３】
S106：第2のストレージ装置群から第1のストレージ装置群へデータを移動させる；或いは書き込まれるべきデータを第1のストレージ装置群に書き込む。
【００６４】
データの移動を行う具体的な方法については、図6、図7及び図8に示されている。
【００６５】
書き込み動作の各々に関し、元々のアドレス(オリジナルアドレス)がアクセスされた場合、第2のストレージ装置群のデータが第1のストレージ装置群に移動させられ；書き込み動作の各々に関し、新たなアドレスがアクセスされた場合、第2のストレージ装置群から第1のストレージ装置群へデータを移動させるのではなく、書き込まれるべきデータは、第1のストレージ装置群の自由空間に直接的に書き込まれてよい。
【００６６】
従って、第1のストレージ装置群はターゲットストレージ装置群又は移動先ストレージ装置群又は第1部分(first  subset)と言及され、第2のストレージ装置群はソースストレージ装置群又は移動元ストレージ装置群又は第2部分と言及されてもよい。
【００６７】
ある期間の後、新たに追加されたストレージ装置の消耗度が何れも所定の閾値以上ではなく、第2のストレージ装置群に属するストレージ装置の消耗度が、第1のストレージ装置群に属するストレージ装置の消耗度以下であった場合、第2のストレージ装置群におけるサービスは第2のストレージ装置群に属するストレージ装置に均等に分散され、第1のストレージ装置群におけるサービスは第1のストレージ装置群に属するストレージ装置に均等に分散され；或いはある期間の後、第2のストレージ装置群がブランクであり、全てのサービスが第1のストレージ装置群に属するストレージ装置に均等に分散される。均等な分散はウェイトに従う分散に関する。
【００６８】
図5は、上記の方法を用いて行われる効果を説明するための図である。当然に図5は単なる一例を示すに過ぎない。図5において暗く着色された領域は消耗度を示し、暗く着色された領域が占める率が高いほど、消耗度が高い。
【００６９】
本発明のこの実施の形態において、ストレージアレイは、ストレージ装置の消耗度に応じて、第1のストレージ装置群と第2のストレージ装置群とに分割され、第1のストレージ装置群に属するストレージ装置の最小の消耗度は、第2のストレージ装置群に属するストレージ装置の最大の消耗度以上であり、第2のストレージ装置群のデータが第1のストレージ装置群に移動させられる(マイグレートされる)。従って、第2のストレージ装置群に属するストレージ装置のサービス寿命は、第1のストレージ装置群に属するストレージ装置のサービス寿命を短縮することで相対的に拡張され、これにより、第1のストレージ装置群に属するストレージ装置が不具合を起こす時点と第2のストレージ装置群に属するストレージ装置が不具合を起こす時点との間の期間を拡大し、消耗度に起因して複数のストレージ装置が同時に不具合を起こすリスクを減らし、データの信頼性を向上させる。
【００７０】
書き込み動作の各々に関し、新たなアドレスがアクセスされた場合、第2のストレージ装置群から第1のストレージ装置群へデータを移動させるのではなく、書き込まれるべきデータは、第1のストレージ装置群の自由空間に直接的に書き込まれてよい。第2のストレージ装置群に属するストレージ装置が担うサービスは、第1のストレージ装置群に属するストレージ装置が担うサービスを増やすことで維持され、第2のストレージ装置群に属するストレージ装置のサービス寿命は、第1のストレージ装置群に属するストレージ装置のサービス寿命を短縮することで相対的に拡張され、これにより、第1のストレージ装置群に属するストレージ装置が不具合を起こす時点と第2のストレージ装置群に属するストレージ装置が不具合を起こす時点との間の期間を拡大し、消耗度に起因して複数のストレージ装置が同時に不具合を起こすリスクを減らし、データの信頼性を向上させる。
【００７１】
本実施の形態では、第1のストレージ装置群に属するストレージ装置が不具合を起こす時点と第2のストレージ装置群に属するストレージ装置が不具合を起こす時点との間の期間を拡大することで、消耗度に起因して複数のストレージ装置が同時に不具合を起こすリスクが減らされる。従って、本実施の形態により説明される方法は、非ウェアレベリング方法(non-wear  leveling  method)又は反ウェアレベリング方法(anti-wear  leveling  method)と呼ばれてもよい。本発明の実施の形態において、ストレージ装置の消耗度に応じてストレージアレイを第1のストレージ装置群及び第2のストレージ装置群に分割する処理は、反ウェアレベリングを実行可能にする処理と言及されてもよい。
【００７２】
具体的には、S106が実行される前に、本方法は更に以下のステップを含んでいてもよい。
【００７３】
S105：第2のストレージ装置群に属するストレージ装置の消耗度と第4の消耗閾値とを比較する；すなわち、第2のストレージ装置群に属する全てのストレージ装置の消耗度が、第4の消耗閾値より小さいか否かを判断する(第1ないし第3の消耗閾値については後述する)。第2のストレージ装置群に属する全てのストレージ装置の消耗度が第4の消耗閾値より小さかった場合、S106はもはや実行されない。すなわち、第2のストレージ装置群に属するストレージ装置が担うサービスは重くはなく、従って反ウェアレベリングの処理は一時的に(その時点では)必要ではなく；或いは、本発明の実施の形態で説明されている管理方法を利用することで、データが移動させられた後に、第2のストレージ装置群に属するストレージ装置が担うサービスは重くはなく、従って反ウェアレベリングの処理は一時的に(その時点では)必要ではない。
【００７４】
第2のストレージ装置群に属する少なくとも1つのストレージ装置が第4の消耗閾値以上であった場合に、ステップS106が実行される。
【００７５】
第4の消耗閾値は上記の実施の形態で説明した所定の消耗閾値と同一であってもよいし或いは相違していてもよい。
【００７６】
本発明のこの実施の形態において、反ウェアレベリング調整の頻度は、第2のストレージ装置群に属するストレージ装置の消耗度と第4の消耗閾値とを比較することで減らされてもよい。
【００７７】
N個のストレージ装置の消耗度に応じてストレージアレイを第1のストレージ装置群と第2のストレージ装置群とに分割する仕方、及び第2のストレージ装置群から第1のストレージ装置群へデータを移動させる仕方の具体例による説明は、図6、図7及び図8に示されている。明らかに、本発明は図6、図7及び図8に示す方法に限定されない。
【００７８】
図6に示されているように、以下のステップが含まれている：
S301：消耗度の降順にN個のストレージ装置を並べる。最大の消耗度を有するストレージ装置の番号は1であり、最小の消耗度を有するストレージ装置の番号はNである。
【００７９】
具体的には、並べ替えはコントローラ装置のメモリの中で実行されてもよい。
【００８０】
ストレージ装置群の分割を適切に遂行できる限り、並べ替えは、降順又は昇順に消耗度に従って実行されてもよい。
【００８１】
本発明の実施の形態において、説明の便宜上、降順で実行された並べ替えが具体例として使用されている。
【００８２】
302：i番目のストレージ装置と(i+1)番目のストレージ装置との間の消耗度の相違ΔTを算出する。ただし、0＜i＜Nである。なお、「i番目の」と「第iの」とは文脈上同義である。
【００８３】
先ずi番目のストレージ装置から計算を開始する(初期値i=1)；
消耗度間の相違が第1の消耗閾値以下であった場合、ステップ303を実行する；及び
消耗度間の相違が第1の消耗閾値より大きかった場合、ステップ304を実行する。
【００８４】
具体的には、2つのストレージ装置に不具合が生じると予想される時点の間の予想間隔とストレージ装置のサービス寿命とに従って、第1の消耗閾値が決定されてもよい。第1の消耗閾値を決定する場合、複数の方法が存在する。ここで説明されている方法は単なる一例にすぎず、本発明の実施の形態はこの例に限定されない。ストレージ装置の不具合(failure)はストレージ装置の消尽(wear-out)に関連し、そのストレージ装置は置換されなければならない。2つのストレージ装置が同時には不具合を起こさないと予想され、かつ2つのストレージ装置が不具合を起こす時点の間の予想される期間が2ないし3週間(例えば、
2.6週間）であった場合、第1の消耗閾値は、0.385％*2.6≒1％である。0.385％は、ストレージ装置の1週間当たりの平均消耗度であり、実際のサービスの統計情報を収集することで発見されていると仮定している。当然に、0.385％は単なる一例にすぎず、実際の用途に応じて異なる値が使用されてもよい。2つのストレージ装置が不具合を起こす時点の間の間隔が10日間(例えば、1.5週間)であると予想される場合、第1の消耗閾値は0.385％*1.5≒0.58％である。2つのストレージ装置が不具合を起こす時点の間の具体的な予想される期間は、ストレージ装置を局所的(ローカル)に置換する期間を合理的に考察することで決定されてもよい。
【００８５】
以下の表1は説明の便宜上の一例を示し、N=25、M=2、所定の消耗閾値が70％及び第1の消耗閾値が1％であることが仮定されている。
【００８６】
コントローラは、25個のストレージ装置により形成されるストレージアレイに属する2つのストレージ装置の消耗度が70％を超えていることを検出し、消耗度間の相違の計算を、最大の消耗閾値のストレージ装置から実行し始める。Tiは並べ替えを行った後のi番目のストレージ装置の消耗度を示す。先ず、並べ替えの後、第1のストレージ装置及び第2のストレージ装置から、消耗度間の相違が計算される(ΔT1=T1-T2=80.01％-70.01％=10％)。10％は1％(第1の閾値)より大きいので、ステップ304が実行される。
【００８７】
表1において、第1の行にある「実際のスロット番号」はストレージアレイに属するストレージ装置の実際の物理番号であり；
第2の行の「i」は、消耗度に従って降順に並べられたストレージ装置各々の論理番号であり；かつ
第3の行の「T」はストレージ装置各々の消耗度である。
【００８８】
【表１】
0005881900.tif 000002
303：1番目からi番目のストレージ装置を第1のストレージ装置群として設定し、(i+1)番目からN番目のストレージ装置を第2のストレージ装置群として設定する。
【００８９】
S304：iに1を加え、i番目のストレージ装置と(i+1)番目のストレージ装置との間の消耗度の相違の計算を、消耗度間の相違が第1の消耗閾値以下に小さくなるまで、或いはN個全てのストレージ装置の計算が済むまで続ける。
【００９０】
表1に示す例の場合、並べ替えの後に第1のストレージ装置及び第2のストレージ装置の消耗度間の相違は第1の消耗閾値より大きく、iプラス1は2であるので、第2のストレージ装置及び第3のストレージ装置の消耗度間の相違の計算が始まる。ΔT2=T2-T3=70.01％-65.20％=4.81％。4.81％は1％より大きいので、iプラス1が3になった後の計算に続く。この場合、第3のストレージ装置及び第4のストレージ装置の消耗度間の相違の計算が始まる。ΔT3=T3-T4=65.20％-65.17％=0.03％。0.03％は1％より小さいので、4願目のストレージ装置の後に続くストレージ装置の消耗度間の差分の計算は行われず、そのループの計算は終了する。
【００９１】
この例において、1番目からi番目のストレージ装置は第1のストレージ装置群として設定され、(i+1)番目からN番目のストレージ装置は第2のストレージ装置群として設定される。表1に示す例の場合、1番目から3番目のストレージ装置が第1のストレージ装置群1として設定され、4番目から25番目のストレージ装置が第2のストレージ装置群2として設定される。
【００９２】
第1のストレージ装置群及び第2のストレージ装置群は上記のステップ303又は304に関する分割により得られる。第1のストレージ装置群の特徴は：全てのストレージ装置の消耗度間の差分(隣接するストレージ装置の消耗度の相違)が第1の消耗閾値を超えていることである。第2のストレージ装置群の特徴は：第2のストレージ装置群のうち最大の消耗度を有するストレージ装置についての消耗度間の差分と、第1のストレージ装置群のうち最小の消耗度を有するストレージ装置についての消耗度間の差分とが、第1の消耗度閾値を超えないことである。
【００９３】
例えば、表1に示す例の場合、第1のストレージ装置群1に属する全てのストレージ装置の消耗度間の差分は1％を超えており、第2のストレージ装置群2のうち最大消耗度を有するストレージ装置(並べ替えた後の4番目のストレージ装置)についての消耗度の差分と、第1のストレージ装置群1のうちの最小の消耗度を有するストレージ装置(並べ替えた後の3番目のストレージ装置)についての消耗度の差分とが、1％を超えていない。
【００９４】
一般に、同じストレージアレイに属する全てのストレージ装置の消耗度は互いに近接している(同一又は類似する値である)べきである。例えば、同じ時点における消耗度間の差分は2％を超えない(均等に使用されている場合)。表1は、消耗度間の相違が比較的大きくなっている例(不均一な使用状況)を示し、所定の理由で個々のスロットのストレージ装置を置換することを引き起こす、或いはストレージアレイが使用中である場合に新たなストレージ装置をストレージアレイに追加することを引き起こす。
【００９５】
N個のストレージ装置に関する検討が済んだ後でさえ、i番目のストレージ装置と(i+1)番目のストレージ装置との間で第1の消耗閾値以下の消耗度差分が発見されなかった場合、サービスデータ(略して「データ」)の配分が、ストレージ装置各々のウェイトに従って再度調整され、これにより、ウェイトに応じた均等配分を達成する。すなわち、第1のストレージ装置に属するストレージ装置の消耗度間の差分と、第2のストレージ装置に属するストレージ装置の消耗度間の差分とが拡大された後、均等な状態が再び復元される。そして、ある期間の経過後に(例えば、1週間後に)、本プロセスがS102から再開される。
【００９６】
上記の方法では、第1のストレージ装置群に属するストレージ装置の数はXであり、第2のストレージ装置群に属するストレージ装置の数はN-Xであることが、仮定されている。以下、第2のストレージ装置群から第1のストレージ装置群へデータを移動又はマイグレート(migrating)する具体的な方法を説明する。当然に、マイグレーション方法は、説明される以下の例に限定されない。
【００９７】
S305：第1のストレージ装置群におけるフリーストレージ空間に関する統計情報を収集する；第1のストレージ装置群の中で全部でいくつのチャンク(Chunk)がアイドル状態(不使用の状態)のままであるかについての統計情報を収集する。RADIグループが設定されている場合、RAIDグループを形成するのに使用されていないチャンクはアイドル状態であることが、理解されるであろう。統計処理の結果はフリーサイズ(FreeSize)により表現されることが仮定されている。
【００９８】
S306：第2のストレージ装置群の物理SSD各々のFreeSize/(N-X)の論理SSDの中からデータを平均的に取り出し、第1のストレージ装置群の物理SSDにデータを移動させ、これにより、第1のストレージ装置群の物理SSD各々が、十分に(又は完全に)負担を担った形式で動作させる。十分に負荷を担わせる処理は、ストレージ装置の全てのチャンクが占有されることであり、ホットバックアップのためにスペースが確保されていないことである点が、理解されるであろう。このように、ある期間の経過後に、第1のストレージ装置群に属する全ての物理SSDの消耗度は、サービス負荷の間の差分に起因して、第2のストレージ装置群に属する全ての物理SSDの消耗度より高い。
【００９９】
当然に、別の実施の形態によるデータマイグレーション方法が使用されてもよい。
【０１００】
更に、第1のストレージ装置群に属する物理SSDの最小の消耗度と第2のストレージ装置群に属する物理SSDの最大の消耗度との間の相違が急速に拡大することが予想される場合、第2のストレージ装置群のうち最大の消耗度を有する物理SSDから第1のストレージ装置群の物理SSDへ、より多くのデータが更に抽出されてもよい。
【０１０１】
例えば、表1に示す例の場合、第1のストレージ装置群には3個のストレージ装置が存在し、第2のストレージ装置群には25-3=22個のストレージ装置が存在する。サービスデータは、FreeSize/22個の論理SSDから平均的に抽出され、第1のストレージ装置群に属する3個のストレージ装置に移されてもよい。実際のスロット番号が14及び7であるSSD(複数)の消耗度間の相違が急速に大きくなる場合については、実際のスロット番号7のサービスデータがより多く抽出され(例えば、1ないし2個多いチャンクのサービスデータが抽出され)、第1のストレージ装置群に属する3個のストレージ装置に移される。
【０１０２】
特に、RAIDが形成される場合において、第2のストレージ装置群のデータが第1のストレージ装置群に移動させられる場合、第1のストレージ装置群に属するSSDであってデータの移動先のSSDは、第1のストレージ装置群に属するSSDであってRAIDに含まれているSSDとは異なっている必要がある。その目的は、RAIDに含まれている各々のチャンクが異なるディスクに所属するのを保証することであり、これにより2つのCKのデータが不具合又はディスクの停電に起因して喪失してしまう状況を回避する。
【０１０３】
サービス負荷は徐々に移されるので、システム全体のサービスパフォーマンスは影響を受けない。
【０１０４】
ステップS306が実行された後、本方法は以下の処理を更に含んでもよい：
S308：第1のストレージ装置群に属する物理SSDの最小の消耗度と第2のストレージ装置群に属する物理SSDの最大の消耗度との間の相違は、既に第1の消耗閾値以上であることが計算により判明した場合、ステップS102を実行するように再開する。
【０１０５】
図7に示されている方法は、N個のストレージ装置の消耗度に従ってストレージアレイを第1のストレージ装置群及び第2のストレージ装置群に分割する仕方と、第2のストレージ装置群から第1のストレージ装置群へのデータの移動のさせ方とを示す。
【０１０６】
図7に示されているように、以下のステップが含まれている：
S401：N個のストレージ装置の消耗度に従って、N個のストレージ装置をS個のサブセクションにグループ化する(サブセクションは小区分又はグループ等と言及されてもよい)。j番目のサブセクションに属するストレージ装置の最小の消耗度は、(j+1)番目のサブセクションに属するストレージ装置の最大の消耗度以上である(0＜j＜S)。
【０１０７】
各々のサブセクションに属するストレージ装置の消耗度間の相違の全てが第2の消耗閾値を超えていることが好ましい。第2の消耗閾値を決定する際に、第1の消耗閾値が参照されてもよく、第2の消耗閾値は第1の消耗閾値と同一であってもよいし又は相違していてもよい。更に、(j+1)番目のサブセクションのうちの最大消耗度を有するストレージ装置の消耗度との相違、及びj番目のサブセクションのストレージ装置のうち最小消耗度を有するストレージ装置の消耗度との相違は、第2の消耗閾値を超えない。
【０１０８】
具体的には、S個のサブセクションにグループ化する手順は以下のとおりである：
S4020：N個のストレージ装置を消耗度の降順に従って並べる。最大の消耗度を有するストレージ装置の番号は1であり、最小の消耗度を有するストレージ装置の番号はNである。
【０１０９】
S4021：i番目のストレージ装置の消耗度と(i+1)番目のストレージ装置の消耗度との間の相違ΔTを計算する(0＜i＜N)。
【０１１０】
先ずi番目のストレージ装置から消耗度間の相違ΔTの計算を開始する(初期値i=1)；
消耗度間の相違が第2の消耗閾値以下であった場合、ステップ4022を実行する；及び
消耗度間の相違が第2の消耗閾値より大きかった場合、ステップ4023を実行する。
【０１１１】
なお、第2の消耗閾値を決定する際に、図6の実施の形態に関する説明が参照されてもよい。
【０１１２】
S4022：i番目のストレージ装置を或るサブセクションにグループ化し(そのグループに入れ)、(i+1)番目のストレージ装置を別のサブセクションにグループ化し；iに1を加え、ステップS4021を実行する処理に続く。
【０１１３】
S4023：(i+1)番目のストレージ装置を、i番目のストレージ装置が所属しているサブセクションにグループ化し(そのグループに入れ)；iに1を加え、ステップS4021を実行する処理に続く。
【０１１４】
ストレージアレイは、上記の手順を利用してS個のサブセクションに分割される。
【０１１５】
表2を説明の便宜上の1例とする。N=25、M=2、所定の消耗閾値は70％であり、第2の消耗閾値は第1の消耗閾値と同じであることが仮定されている(すなわち、第1及び第2の消耗閾値は1％である)。
【０１１６】
【表２】
0005881900.tif 000003
先ず、並べ替えた後に、最初に1番目のストレージ装置及び2番目のストレージ装置から、消耗度間の相違の計算が実行される。ΔT1=T1-T2=80.01％-70.01％=10％。10％は1％より大きいので、ステップ4023が実行される。2番目のストレージ装置及び1番目のストレージ装置は同じサブセクションにグループ化され、第1のサブセクション1は{1，2}となる。次に、iプラス1は2になり、2番目のストレージ装置及び3番目のストレージ装置の間の消耗度の相違の計算が始まる。ΔT2=T2-T3=70.01％-65.20％=4.81％。4.81％は1％より大きいので、3番目のストレージ装置及び2番目のストレージ装置は同じサブセクションにグループ化され、その結果、第1のサブセクション1は{1，2，3}となる。次に、3番目のストレージ装置及び4番目のストレージ装置の間の消耗度の相違の計算が始まる。ΔT3=T3-T4=65.20％-65.17％=0.03％。0.03％は1％より小さいので、4番目のストレージ装置は第2のサブセクションにグループ化される。次に、iプラス1は4になり、4番目のストレージ装置及び5番目のストレージ装置の間の消耗度の相違の計算が始まる。ΔT4=T4-T5=65.17％-64.16％=1.01％。1.01％は1％より大きいので、5番目のストレージ装置及び4番目のストレージ装置は同じサブセクションにグループ化され、その結果、第2のサブセクション2は{4，5}となる。次に、5番目のストレージ装置及び6番目のストレージ装置の間の消耗度の相違の計算が始まる。ΔT5=T5-T6=64.16％-64.00％=0.16％。0.16％は1％より小さいので、6番目のストレージ装置は第3のサブセクション3にグループ化される。そして、6番目のストレージ装置及び7番目のストレージ装置の間の消耗度の相違の計算が始まり、全てのストレージ装置が検討されるまで同様な手順が続く。
【０１１７】
S402：i番目のサブセクションないしj番目のサブセクション内のストレージ装置の数を算出する(0＜j＜S)。j=1である場合、第1のサブセクションに属するストレージ装置の数を直接的に算出する；
1番目のサブセクションないしj番目のサブセクション内のストレージ装置の数がN/2以上であった場合、ステップS403を実行し；及び
1番目のサブセクションないしj番目のサブセクション内のストレージ装置の数がN/2より小さかった場合、ステップS404を実行する。
【０１１８】
S403：1番目のサブセクションからj番目のサブセクションのストレージ装置を第1のストレージ装置群に設定し、(j+1)番目のサブセクションからS番目のサブセクションのストレージ装置を第2のストレージ装置群に設定する。
【０１１９】
S404：次に、jに1を加え、1番目のサブセクションないしj番目のサブセクションのストレージ装置の数がN/2以上になるまで、1番目のサブセクションないしj番目のサブセクションのストレージ装置の数を算出し続け、1番目のサブセクションからj番目のサブセクションのストレージ装置を第1のストレージ装置群に設定し、(j+1)番目のサブセクションからS番目のサブセクションのストレージ装置を第2のストレージ装置群に設定する。
【０１２０】
第2のストレージ装置群のデータが第1のストレージ装置群に移動させられる場合、第1のストレージ装置群に属するサブセクション各々に追加されるデータ量は等しい又は1番目のサブセクションから始まって徐々に減少し、第2のストレージ装置群に属するサブセクションから抽出されるデータ量は等しい又はS番目のサブセクションから始まって徐々に減少する。具体的な手順は次のとおりである：
S405：第1のストレージ装置群のフリーストレージ空間に関する統計情報を収集する；すなわち、第1のストレージ装置群の中で合計いくつのチャンクがアイドル状態(未使用状態)のままであるかについての統計情報を収集する。RAIDグループが設定される場合、RAIDグループを形成するのに使用されていないチャンクがアイドル状態にあることが理解されるであろう。統計(情報収集)の結果はFreeSizeにより表現されることが仮定されている。
【０１２１】
第1のストレージ装置群に属するストレージ装置の数はXであり、第2のストレージ装置群に属するストレージ装置の数はN-Xであることが仮定されている。第1のストレージ装置群に属する全てのストレージ装置についての平均的なフリースペース(自由空間)は、FreeSize/Xである。
【０１２２】
S406：第1のサブセットはj個のサブセクションを含む。全部でFreeSize-FreeSizeAのデータが第1のサブセットへ移動させられることが仮定され、FreeSizeAはデータ移動後の第1のサブセットにおけるフリーストレージ空間を示し、(FreeSize-FreeSizeA)/(N-X)のデータが第2のサブセットに属するストレージ装置各々から抽出され、第1のサブセットに移動させられる。
【０１２３】
データの移動後に、第1のサブセットのサブセクション各々のフリーストレージ空間は：
FreeSize/X*(u-1)
である。ただし、1≦u≦jである。
【０１２４】
例えば、第1のサブセットは3つのサブセクションを含み、データの移動後に：
第1のサブセクションに属するストレージ装置各々のフリースペースは、(FreeSize/X)*(1-1)=0に調整される；
第2のサブセクションに属するストレージ装置各々のフリースペースは、(FreeSize/X)*(2-1)=FreeSize/Xに調整される；
第3のサブセクションに属するストレージ装置各々のフリースペースは、(FreeSize/X)*(3-1)=2*FreeSize/Xに調整される。
【０１２５】
データの移動後に、第1のサブセットに属する全てのサブセクションのフリーストレージ空間は合計FreeSizeAとなる。
【０１２６】
当然に、別の実施の形態によるデータ移動方法が使用されてもよい。
【０１２７】
図8に示されている方法は、N個のストレージ装置の消耗度に従ってストレージアレイを第1のストレージ装置群及び第2のストレージ装置群に分割する仕方と、第2のストレージ装置群から第1のストレージ装置群へのデータの移動のさせ方とを示す。
【０１２８】
S501はS401と同じであるので重複的な説明は行わない。
【０１２９】
S502：j=|-S/2-|はS/2を小さく丸めた数、すなわちS/2以下の数のうちの最大の整数を示す(|-  -|は床関数を示す)。1番目のサブセクションないしj番目のサブセクションに属するストレージ装置は第1のストレージ装置群に設定され、(j+1)番目のサブセクションないしS番目のサブセクションに属するストレージ装置は第2のストレージ装置群に設定される。
【０１３０】
説明の便宜上、表2の例を使用する。S=5、j=|-S/2-|=2を使用することが仮定され、第1のサブセクション及び第2のサブセクションに属するストレージ装置は第1のストレージ装置群として設定され、第3のサブセクションないし第5のサブセクションに属するストレージ装置は第2のストレージ装置群として設定される。
【０１３１】
或いは、j=|-S/2-|であってもよく、これはS/2を大きく丸めた数、すなわちS/2以上の数のうちの最小の整数を示す(|- -|は天井関数を示す)。1番目のサブセクションないしj番目のサブセクションに属するストレージ装置は第1のストレージ装置群に設定され、(j+1)番目のサブセクションないしS番目のサブセクションに属するストレージ装置は第2のストレージ装置群に設定される。
【０１３２】
従って、第2のストレージ装置群から第1のストレージ装置群へデータを移動させる具体的な手順は次のとおりであってもよい：
Ｓ405：第1のストレージ装置群のフリーストレージ空間に関する統計情報を収集する；すなわち、第1のストレージ装置群の中で合計いくつのチャンクがアイドル状態(未使用状態)のままであるかについての統計情報を収集する。RAIDグループが設定される場合、RAIDグループを形成するのに使用されていないチャンクがアイドル状態にあることが理解されるであろう。統計(情報収集)の結果はFreeSizeにより表現されることが仮定されている。
【０１３３】
第1のストレージ装置群に属するストレージ装置の数はXであり、第2のストレージ装置群に属するストレージ装置の数はN-Xであることが仮定されている。
【０１３４】
S506：第1のサブセットはj個のサブセクションを含む。全部でFreeSize-FreeSizeAのデータが第1のサブセットへ移動させられることが仮定され、FreeSizeAはデータ移動後の第1のサブセットにおけるフリーストレージ空間を示し、(FreeSize-FreeSizeA)/(N-X)のデータが第2のサブセットに属するストレージ装置各々から抽出され、第1のサブセットのストレージ装置に移動させられる。
【０１３５】
第2のストレージ装置群から第1のストレージ装置群へデータを移動させる際に、不均等な移動方法が使用されてもよい；すなわち、第1のサブセットに属するサブセクション各々に追加されるサービスデータが、第1のサブセクションから徐々に減少し始め、及び、第2のサブセットに属するサブセクション各々から抽出されるサービスデータが、Ｓ番目のサブセクションから徐々に減少し始めてもよい。
【０１３６】
説明の便宜上、表2を具体例とする。第2のストレージ装置群から移動して行くサービスデータが、第1のストレージ装置群に移動して来るサービスデータに等しいという前提条件の下で、第1のサブセクション及び第2のサブセクションに属するストレージ装置が第1のストレージ装置群として設定される場合、第1のサブセクションのサービスデータは100％増加し(すなわち、全てのフリースペースが占有され)、第2のサブセクションのサービスデータは90％増加し(すなわち、全てのフリースペースのうち90％しか占有されてず)、及び、第3のサブセクションないし第5のサブセクションに属するストレージ装置が第2のストレージ装置群として設定される場合、第2のストレージ装置群において、第5のサブセクションのサービスデータは30％減少し(全てのデータのうち30％が減少し)、第4のサブセクションのサービスデータは20％減少し(全てのデータのうち20％が減少し)、第3のサブセクションのサービスデータは10％減少する(全てのデータのうち10％が減少する)。
【０１３７】
当然に、別の実施の形態によるデータ移動方法が使用されてもよい。
【０１３８】
当然に、N個のストレージ装置の消耗度に従ってストレージアレイを第1のストレージ装置群及び第2のストレージ装置群に分割する仕方は、図6、図7、図8に示す例に限定されない。例えば、第3の消耗閾値が設定されもよく；消耗度の順に並べられた後、第3の消耗閾値以上の消耗度のストレージ装置が第1のストレージ装置群を形成し、第3の消耗閾値未満の消耗度のストレージ装置が第2のストレージ装置群を形成してもよい。第3の消耗閾値は経験的な値により予め設定されていてもよいし、可変に調整されてもよく、及び上記の実施の形態で言及した所定の閾値と同一であってもよいし異なっていてもよい。
【０１３９】
本発明の実施の形態においては、ストレージアレイは、ストレージ装置の消耗度に従って第1のストレージ装置群及び第2のストレージ装置群に分割され、第1のストレージ装置群に属するストレージ装置についての最小消耗度は、第2のストレージ装置群に属するストレージ装置についての最大消耗度以上であり、第2のストレージ装置群の中のデータは、第1のストレージ装置群に移動させられる、或いは書き込まれるべきデータが第1のストレージ装置群に書き込まれる。従って、第1のストレージ装置群に属するストレージ装置のサービス寿命を短縮することで、第2のストレージ装置群に属するストレージ装置のサービス寿命が相対的に延長され、これにより、第1のストレージ装置群に属するストレージ装置が不具合を起こす時点と第2のストレージ装置群に属するストレージ装置が不具合を起こす時点との間の期間を長くし、消耗度に起因して複数のストレージ装置が同時に不具合を起こすリスクを減らし、データの信頼性を向上させる。
【０１４０】
上述した事項は動的な調整方法を含む。一例として、ストレージアレイに属するストレージ装置各々にウェイトが直接的に指定されており、かつ全てのストレージ装置の容量が等しかった場合、様々なウェイトがストレージ装置各々に割り当てられ、ストレージ装置各々のウェイト値が異なることを保証する。
【０１４１】
或いは、ストレージアレイに属するストレージ装置の各々にウェイトが割り当てられる場合に、全てのストレージ装置の容量が異なることを保証してもよい。しかしながら、ストレージ装置の各々に同じウェイトが割り当てられてもよい。これは全てのストレージ装置の消耗度を不均一にする。
【０１４２】
本発明では様々なデータ保護モデルについてグローバルアンチウェアレベリング(global  anti-wear  leveling)方法が実現可能であり(データ保護モデルは、データを保護しない場合を含むことに加えて、例えば、ミラー方式のデータ保護、パリティ方式のデータ保護等であるがこれらに限定されない)、説明の便宜上、ストレージ装置がSSDである例を使用する。
【０１４３】
以下、説明の便宜上、RAID5又はRAID6のようなパリティ方式のデータ保護を具体例とする。
【０１４４】
SSDグループに属する物理SSDが全て或る程度消耗又は疲弊(wear)している場合、システムは更なるサービスを担うために(複数の)物理SSDからいくつかの物理SSDを選択し、その結果、他の物理SSDでなされるサービス負担が減少する。例えば、図3及び図9に示されるRAID5システムにおいて、物理SSD＃8の4番目の論理SSDから物理SSD＃1の論理SSDへ、データが移動させられる。
【０１４５】
先行する処理(又はステップ)において、物理SSD＃1は多くのサービス負担を担いながら高速で使用されているが、物理SSD＃8は少ないサービス負担しか担っておらずしかも低速でしか使用されていない。ある期間の経過後、物理SSD全体の消耗度は図5に示されているような「階段」を形成し、これにより複数の物理SSDが同時に不具合を起こすことを回避し、システムの信頼性を向上させる。
【０１４６】
次に、説明の便宜上、RAID1又はRAID10のようなミラー方式のデータモデルを具体例とする。
【０１４７】
SSDグループに属する物理SSDが全て或る程度消耗又は疲弊(wear)している場合、システムは更なるサービスを担うために(複数の)物理SSDからいくつかの物理SSDを選択し、その結果、他の物理SSDでなされるサービス負担が減少する。例えば、図10に示されるRAID1システムにおいて、物理SSD＃7及び物理SSD＃8の或る論理SSDから物理SSD＃1及び物理SSD＃2の論理SSDへ、データが移動させられる。
【０１４８】
先行する処理(又はステップ)において、物理SSD＃1及び物理SSD＃2は多くのサービス負担を担いながら高速で使用されているが、物理SSD＃7及び物理SSD＃8は少ないサービス負担しか担っておらずしかも低速でしか使用されていない(＃8が担うサービス負担は＃7が担うものよりかなり少なくなる)。ある期間の経過後、物理SSD全体の消耗度は図5に示されているような「階段」を形成し、これにより複数の物理SSDが同時に不具合を起こすことを回避し、システムの信頼性を向上させる。
【０１４９】
上記の手順は本発明の実施の形態を適用できる様々な状況を実質的に開示し、当然に、本発明はそれら個々の状況には限定されない。
【０１５０】
＜＜本発明の実施の形態による装置＞＞
本発明による実施の形態はストレージアレイを管理する装置を提供する。ストレージアレイは、N個のストレージ装置により形成され、図11に示されているように、本装置は以下のモジュールを含む：
N個のストレージ装置の消耗度を求めるように形成された捕捉モジュール1101；
N個のストレージ装置の消耗度に従って、ストレージアレイを第1のストレージ装置群及び第2のストレージ装置群に分割するように形成された分割モジュール1102(第1のストレージ装置群に属するストレージ装置の最小消耗度は、第2のストレージ装置群に属するストレージ装置の最大消耗度以上である)；及び
第2のストレージ装置群から第1のストレージ装置群へデータを移動させる、或いは書き込まれるべきデータを前記第１のストレージ装置群に書き込むように形成された処理モジュール1103。
【０１５１】
具体的には、分割モジュールは、
N個のストレージ装置を前記消耗度の降順に従って並べ、最大消耗度のストレージ装置の番号を1とし、最小消耗度のストレージ装置の番号をNとし、
i番目のストレージ装置及び(i+1)番目のストレージ装置の消耗度間の相違を計算し(0<i<N)、
消耗度間の相違が第1の消耗閾値以下であった場合、1番目ないしi番目のストレージ装置を第1のストレージ装置群に設定し、(i+1)番目ないしN番目のストレージ装置を第2のストレージ装置群に設定し、
消耗度間の相違が第1の消耗閾値より大きかった場合、iに1を加え、i番目のストレージ装置及び(i+1)番目のストレージ装置の消耗度間の相違を計算し続けるように形成されている。
【０１５２】
或いは、分割モジュールは、
N個のストレージ装置の消耗度に従ってN個のストレージ装置をS個のサブセクションにグループ化し、j番目のサブセクションのストレージ装置のうちの最小の消耗度を、(j+1)番目のサブセクションのストレージ装置のうちの最大の消耗度以上とし(0<j<S)、
1番目のサブセクションないしj番目のサブセクションのストレージ装置の数を算出し(0<j<S)、
1番目のサブセクションないしj番目のサブセクションのストレージ装置の数がN/2以上であった場合、1番目のサブセクションないしj番目のサブセクションのストレージ装置を第1のストレージ装置群に設定し、(j+1)番目のサブセクションないしS番目のサブセクションのストレージ装置を第2のストレージ装置群に設定し、
1番目のサブセクションないしj番目のサブセクションのストレージ装置の数がN/2未満であった場合、jに1を加え、1番目のサブセクションないしj番目のサブセクションのストレージ装置の数を算出し続けるように形成されている。
【０１５３】
或いは、分割モジュールは、
N個のストレージ装置の消耗度に従ってN個のストレージ装置をS個のサブセクションにグループ化し、j番目のサブセクションのストレージ装置のうちの最小の消耗度を、(j+1)番目のサブセクションのストレージ装置のうちの最大の消耗度以上とし(0<j<S)、
1番目のサブセクションないしj番目のサブセクションのストレージ装置を第1のストレージ装置群に設定し、(j+1)番目のサブセクションないしS番目のサブセクションのストレージ装置を第2のストレージ装置群に設定するように形成され、jはS/2以下の数のうち最大の整数(j=|_S/2_|)である、或いはjはS/2以上の数のうち最小の整数(j=|-S/2-|)である。
【０１５４】
或いは、分割モジュールは、
消耗度が第3の消耗閾値以上であるストレージ装置により第1のストレージ装置群を形成し、消耗度が前記第3の消耗閾値未満であるストレージ装置により第2のストレージ装置群を形成する。
【０１５５】
処理モジュールは、
第1のストレージ装置群のフリーストレージ空間FreeSizeについての統計情報を収集し、
第2のストレージ装置群に属するストレージ装置各々からFreeSize/(N-X)のデータを抽出し、第1のストレージ装置群へデータを移動させるように形成され、Xは第1のストレージ装置群に属するストレージ装置の数を示す。
【０１５６】
好ましくは、
第1のストレージ装置群に属するサブセクション各々に加えられるデータの量は、第1のサブセクションから徐々に少なくなる量又は等しい量であり、第2のストレージ装置群に属する各サブセクションから抽出されるデータの量は、S番目のサブセクションから徐々に少なくなる量又は等しい量である。
【０１５７】
処理モジュールは、第2のストレージ装置群に属する各サブセクションから抽出されるデータの量が等しい場合、第2のストレージ装置群に属するストレージ装置各々から(FreeSize-FreeSizeA)/(N-X)のデータを抽出しかつ第1のストレージ装置群にデータを移動させるように形成され、FreeSizeはデータを移動させる前における第1のストレージ装置群のフリーストレージ空間を示し、FreeSizeAはデータを移動させた後における第1のストレージ装置群のフリーストレージ空間を示し、Xは第1のストレージ装置群に属するストレージ装置の数を示す。
【０１５８】
或いは、本装置は第2のストレージ装置群に属するストレージ装置の消耗度を第4の消耗閾値と比較する比較モジュールを更に有し、
第2のストレージ装置群に属する少なくとも１つのストレージ装置の消耗度が第4の消耗閾値以上であった場合に、処理モジュールが、第2のストレージ装置群から第1のストレージ装置群へデータを移動させる。
【０１５９】
本発明の実施の形態により提供される装置には、上記の実施の形態で説明されたコントローラが設けられてもよく、上記の実施の形態により説明されたストレージアレイの管理方法を実行するように形成されてもよい。各ユニットの機の詳細な説明については、上記の方法の実施の形態による説明を参照することが可能であり、重複的な説明は行わない。
【０１６０】
図12に示されているように、本発明の実施の形態により提供されるコントローラは、
プロセッサ101、メモリ102、システムバス(又は単に「バス」)105及び通信インタフェース103を有し、プロセッサ101、メモリ102及び通信インタフェース103はシステムバス105を介して互いに通信可能に接続されている。
【０１６１】
プロセッサ101は、シングルコア又はマルチコアの中央処理装置又は特定の集積回路でもよいし、或いは本発明の実施の形態を実現する1つ以上の集積回路をなすように形成されていてもよい。
【０１６２】
メモリ102は、高速RAMメモリ又は不揮発性メモリであってもよく、例えば少なくとも1つのディスクメモリであってもよい。
【０１６３】
通信インタフェース103はストレージ装置と通信するように形成されている。
【０１６４】
メモリ102は、コンピュータにより実行可能な命令(コンピュータ実行命令)1021を保存するように形成されている。具体的には、コンピュータ実行命令1021はプログラムコードを含んでいてもよい。
【０１６５】
コンピュータが動作すると(走り出すと)、プロセッサ101は、コンピュータ実行命令1021を実行し、図4ないし図10等による何れか1つの方法を実行する。
【０１６６】
本発明の実施の形態は、データ処理のためのコンピュータプログラムプロダクトをも提供し、これはプログラムコードを保存するコンピュータ読み取り可能記憶媒体(コンピュータで読み取ることが可能な記憶媒体)を含み、プログラムコードに含まれている命令は、図4ないし図10等による何れか1つの方法を装置に実行させるために使用される。
【０１６７】
本発明の実施の形態において、ストレージアレイは、ストレージ装置の消耗度に従って第1のストレージ装置群及び第2のストレージ装置群に分割され、第1のストレージ装置群に属するストレージ装置についての最小消耗度は、第2のストレージ装置群に属するストレージ装置についての最大消耗度以上であり、第2のストレージ装置群の中のデータは、第1のストレージ装置群に移動させられる、或いは書き込まれるべきデータが第1のストレージ装置群に書き込まれる。従って、第1のストレージ装置群に属するストレージ装置のサービス寿命を短縮することで、第2のストレージ装置群に属するストレージ装置のサービス寿命が相対的に延長され、これにより、第1のストレージ装置群に属するストレージ装置が不具合を起こす時点と第2のストレージ装置群に属するストレージ装置が不具合を起こす時点との間の期間を長くし、消耗度に起因して複数のストレージ装置が同時に不具合を起こすリスクを減らし、データの信頼性を向上させる。
【０１６８】
本発明の実施の形態の各々又はそれらの形態で使用可能な方法は、システム、方法、コンピュータプログラム、コンピュータプログラムプロダクト又は記憶媒体等として具体的に実現されてよいことを、当業者は理解するであろう。本発明の実施の形態の各々又はそれらの形態で使用可能な方法は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア等を含む)、又はソフトウェア及びハードウェアが組み合わせられた実施形態等の形式を利用してよく、それらは本願においてまとめて「回路」、「モジュール」又は「システム」等と言及されている。更に、本発明の実施の形態の各々又はそれらの形態で使用可能な方法は、コンピュータプログラムプロダクト又は記憶媒体の形式を利用してもよい。コンピュータプログラムプロダクトは、コンピュータプログラムが保存されたコンピュータ読み取り可能媒体に関連する。
【０１６９】
コンピュータ読み取り可能媒体は、コンピュータにより読み取ることが可能な記憶媒体又は伝送媒体を含んでよい。コンピュータ読み取り可能な記憶媒体は、電子、磁気、光、電磁場、赤外線、又は半導体システム、デバイス、又は装置、又はそれらの任意の組み合わせによるものを含み、例えば、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能でプログラム可能なリードオンリメモリ(EPROM又はフラッシュメモリ)、光ファイバ、又は携帯用リードオンリメモリ(CD-ROM)等を含むがこれらに限定されない。
【０１７０】
コンピュータのプロセッサは、コンピュータ読み取り可能媒体に保存されているコンピュータ読み取り可能なプログラムコードを読み取り、プロセッサは、フローチャートにおける各々のステップ又はステップの組み合わせで特定されている機能処理を実行することが可能であり、かつブロック図における各々のブロック又はブロックの組み合わせで特定されている機能処理を実施する装置を実現する。
【０１７１】
コンピュータ読み取り可能なプログラムコードは、ユーザのコンピュータで完全に実行されてもよいし、ユーザのコンピュータで部分的に実行されてもよいし、独立したソフトウェアパッケージとして機能してもよいし、ユーザのコンピュータで部分的に実行されかつリモートコンピュータで部分的に実行されてもよいし、或いはリモートコンピュータ又はサーバで完全に実行されてもよい。フローチャートの各ステップ又はブロック図の各ブロックに示されている機能(部)が、代替的な実現手段におけるフローチャートに示されたシーケンス又は図面に登場しなくてよいことにも留意すべきである。例えば、備わる機能に依存して、連続して登場する2つのステップ又は2つのブロックが実際にはほぼ同時に実行されてもよいし、或いはそれらのブロックはしばしば逆の順序で実行されてもよい。
【０１７２】
本願で説明された実施の形態に関して組み合わせ例として登場したユニット及びアルゴリズムのステップは、電子ハードウェアにより実現されてもよいし、コンピュータハードウェア及び電子ハードウェアの組み合わせにより実現されてもよいことを、当業者は認めるであろう。機能がハードウェア方式又はソフトウェア方式の何れにより実行されるかは、具体的なアプリケーション及び技術手段の設計制約条件等に依存する。当業者は、特定のアプリケーション各々について説明された機能を実現するために様々な方法を利用してよいが、そのような実現手段が本発明の範囲を超えるように解釈すべきではない。
【０１７３】
以上、本発明に関する単なる具体的な実現手段が説明されてきたが、これらは本発明の保護範囲を限定するようには意図されていない。本願により開示された技術的範囲の中で当業者にとって容易に把握できる変形例や置換例は、本発明の保護範囲内に属する。すなわち、本発明の保護範囲は特許請求の範囲に基づいて定められる。
【図１】
0005881900.tif 000008
【図２】
0005881900.tif 000009
【図３】
0005881900.tif 000010
【図４】
0005881900.tif 000011
【図５】
0005881900.tif 000012
【図６】
0005881900.tif 000013
【図７】
0005881900.tif 000014
【図８】
0005881900.tif 000015
【図９】
0005881900.tif 000016
【図１０】
0005881900.tif 000017
【図１１】
0005881900.tif 000018
【図１２】
0005881900.tif 000019