(57)【要約】  実施形態において提供されるフラッシュアレイはコントローラとソリッドステートディスクグループとを含み、ソリッドステートディスクグループは複数のソリッドステートディスクを含み、複数のソリッドステートディスクは論理チャンクグループを含み、論理チャンクグループは複数のストライプを含む。コントローラは、複数のストライプの各々に含まれる無効なデータのデータ量をカウントすることと、複数のストライプから少なくとも1つの対象ストライプを選択することとを行うように構成され、対象ストライプは、複数のストライプの中で最大量の無効なデータを含むストライプである。次いで、コントローラは、対象ストライプ内の有効なデータを移動させるようソリッドステートディスクグループに命令し、対象ストライプの論理アドレスと対象ストライプの実際のアドレスの間の対応関係を削除するようソリッドステートディスクグループに命令する。これにより、書込み増幅が低減し、それによってソリッドステートディスクの寿命が延びる可能性がある。
2021529406.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとインターフェースとを含み、
前記インターフェースは、ソリッドステートディスクグループと通信するように構成され、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含み、
前記プロセッサは、
前記複数のストライプの各々に含まれる無効なデータのデータ量をカウントすることと、
前記複数のストライプから対象ストライプを選択することであって、前記対象ストライプは、その量が指定された量のしきい値を超えている無効なデータを含む、選択することと、
前記対象ストライプ内の有効なデータを移動するよう前記ソリッドステートディスクグループに命令することと、
前記対象ストライプの論理アドレスと前記対象ストライプの実際のアドレスの間の対応関係を削除するよう前記ソリッドステートディスクグループに命令することと、
前記論理チャンクグループの論理アドレスが解放されるまで、前記対象ストライプの前記論理アドレスを解放せずに維持することと
を行うように構成される、システムコントローラ。
【請求項２】
前記システムコントローラのために前記複数のソリッドステートディスクの各々によって提供される論理アドレスの量は、前記ソリッドステートディスクの実際のアドレスの量よりも多い、請求項1に記載のシステムコントローラ。
【請求項３】
前記論理チャンクグループは複数の論理チャンクを含み、各論理チャンクは異なるソリッドステートディスクからのものである、請求項1に記載のシステムコントローラ。
【請求項４】
前記プロセッサは、前記対象ストライプを収集するよう前記ソリッドステートディスクグループに命令する前に、前記ソリッドステートディスクグループの利用可能な空間が不十分であると決定するようにさらに構成される、請求項1に記載のシステムコントローラ。
【請求項５】
前記プロセッサは、前記論理チャンクグループに含まれるすべてのストライプが収集されると、前記プロセッサによって前記論理チャンクグループに割り当てられた前記論理アドレスを解放するようにさらに構成され、前記対象ストライプの前記論理アドレスは、前記論理チャンクグループの前記論理アドレスのサブセットである、請求項1に記載のシステムコントローラ。
【請求項６】
前記プロセッサは、前記解放された論理アドレスを前記ソリッドステートディスクグループ内の他の論理チャンクグループに割り当てるようにさらに構成される、請求項5に記載のシステムコントローラ。
【請求項７】
前記システムコントローラが、前記対象ストライプ内の有効なデータを移動させるよう前記ソリッドステートディスクグループに命令することは、
前記対象ストライプ内の前記有効なデータを読み取るよう前記ソリッドステートディスクグループに命令することと、
データ書込み命令を前記ソリッドステートディスクグループに送信することであって、前記データ書込み命令は、第1の論理アドレスおよび前記有効なデータを含む、送信することと
を特に含む、請求項1に記載のシステムコントローラ。
【請求項８】
前記プロセッサは、
前記対象ストライプ内のデータが属するIO要求を決定することと、
前記IO要求に含まれる一部のデータが他のストライプに記憶されている場合、データの前記一部分のうちの有効なデータを新しく割り当てられた第2の論理アドレスに移動するよう前記ソリッドステートディスクグループに命令することであって、前記第2の論理アドレスは前記第1の論理アドレスと連続している、命令することと
を行うようにさらに構成される、請求項7に記載のシステムコントローラ。
【請求項９】
前記他のストライプは前記対象ストライプの隣接するストライプであり、前記隣接するストライプに含まれるストライプユニットの論理アドレスは、前記対象ストライプに含まれるストライプユニットの論理アドレスと連続している、請求項8に記載のシステムコントローラ。
【請求項１０】
プロセッサとインターフェースとを含み、
前記インターフェースはソリッドステートディスクグループと通信するように構成され、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含み、
前記プロセッサは、前記ソリッドステートディスクグループによって提供される論理アドレスの使用ステータスが第1の指定された条件を満たすかどうかを決定し、前記ソリッドステートディスクグループによって提供される前記論理アドレスの前記使用ステータスが前記第1の指定された条件を満たす場合、ストライプ単位でガベージコレクションを行うよう前記ソリッドステートディスクグループに命令し、前記論理チャンクグループの論理アドレスが解放されるまで対象ストライプの論理アドレスを解放せずに維持するように構成され、または、
前記プロセッサは、前記ソリッドステートディスクグループによって提供される前記論理アドレスの前記使用ステータスが前記第1の指定された条件を満たさない場合、論理チャンクグループ単位でガベージコレクションを行うよう前記ソリッドステートディスクグループに命令するように構成され、収集された論理チャンクグループに含まれるすべてのストライプのすべての論理アドレスが解放される、システムコントローラ。
【請求項１１】
前記プロセッサは、前記ソリッドステートディスクグループによって提供される前記論理アドレスの前記使用ステータスが前記第1の指定された条件を満たすかどうかを決定する前に、前記ソリッドステートディスクグループの利用可能な空間が第2の指定された条件を満たすことを決定するようにさらに構成される、請求項10に記載のシステムコントローラ。
【請求項１２】
前記第2の指定された条件は、前記ソリッドステートディスクグループの前記利用可能な空間のサイズが指定された空間しきい値未満であることを含む、請求項11に記載のシステムコントローラ。
【請求項１３】
前記第2の指定された条件は、少なくとも1つのストライプに含まれる無効なデータのデータ量が指定されたしきい値に達することを含む、請求項11に記載のシステムコントローラ。
【請求項１４】
前記第1の指定された条件は、前記ソリッドステートディスクグループによって提供される前記論理アドレスのうちの割当て可能な論理アドレスの量が、指定された第1のアドレスのしきい値未満であることを含む、請求項10に記載のシステムコントローラ。
【請求項１５】
前記第1の指定された条件は、前記ソリッドステートディスクグループによって提供される前記論理アドレスにおいて使用されている論理アドレスの量が、指定された第2のアドレスのしきい値を超えていることを含む、請求項10に記載のシステムコントローラ。
【請求項１６】
前記システムコントローラのために前記複数のソリッドステートディスクの各々によって提供される論理アドレスの量は、前記ソリッドステートディスクの実際のアドレスの量よりも多い、請求項10に記載のシステムコントローラ。
【請求項１７】
前記論理チャンクグループは複数の論理チャンクを含み、各論理チャンクは異なるソリッドステートディスクからのものである、請求項10に記載のシステムコントローラ。
【請求項１８】
フラッシュアレイに適用される、システムガベージコレクション方法であって、前記フラッシュアレイは、コントローラとソリッドステートディスクグループとを含み、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含み、前記方法は、前記コントローラによって実行され、
前記複数のストライプの各々に含まれる無効なデータのデータ量をカウントするステップと、
前記複数のストライプから少なくとも1つの対象ストライプを選択するステップであって、前記対象ストライプは、その量が指定された量のしきい値を超えている無効なデータを含む前記複数のストライプのうちのストライプである、ステップと、
前記対象ストライプ内の有効なデータを移動させるよう前記ソリッドステートディスクグループに命令し、前記対象ストライプの論理アドレスと前記対象ストライプの実際のアドレスの間の対応関係を削除するよう前記ソリッドステートディスクグループに命令するステップと、
前記論理チャンクグループの論理アドレスが解放されるまで、前記対象ストライプの前記論理アドレスを解放せずに維持するステップと
を含む、システムガベージコレクション方法。
【請求項１９】
前記コントローラのために前記複数のソリッドステートディスクの各々によって提供される論理アドレスの量は、前記ソリッドステートディスクの実際のアドレスの量よりも多い、請求項18に記載の方法。
【請求項２０】
前記論理チャンクグループは複数の論理チャンクを含み、各論理チャンクは異なるソリッドステートディスクからのものである、請求項18に記載の方法。
【請求項２１】
前記対象ストライプを収集するよう前記ソリッドステートディスクグループに命令する前に、前記ソリッドステートディスクグループの利用可能な空間が不十分であると決定するステップをさらに含む、請求項18に記載の方法。
【請求項２２】
前記論理チャンクグループに含まれるすべてのストライプが収集されると、前記コントローラによって前記論理チャンクグループに割り当てられた前記論理アドレスを解放するステップをさらに含み、前記対象ストライプの前記論理アドレスは、前記論理チャンクグループの前記論理アドレスのサブセットである、請求項18に記載の方法。
【請求項２３】
前記対象ストライプ内の有効なデータを移動させるよう前記ソリッドステートディスクグループに命令する前記ステップは、前記対象ストライプ内の前記有効なデータを読み取るよう前記ソリッドステートディスクグループに命令するステップと、データ書込み命令を前記ソリッドステートディスクグループに送信するステップであって、前記データ書込み命令は、第1の論理アドレスおよび前記有効なデータを特に含む、ステップとを含む、請求項18に記載の方法。
【請求項２４】
前記対象ストライプ内のデータが属するIO要求を決定するステップと、
前記IO要求に含まれる一部のデータが他のストライプに記憶されている場合、前記一部のデータのうちの有効なデータを新しく割り当てられた第2の論理アドレスに移動するよう前記ソリッドステートディスクグループに命令するステップであって、前記第2の論理アドレスは前記第1の論理アドレスと連続している、ステップと
をさらに含む、請求項23に記載の方法。
【請求項２５】
前記他のストライプは前記対象ストライプの隣接するストライプであり、前記隣接するストライプに含まれるストライプユニットの論理アドレスは、前記対象ストライプに含まれるストライプユニットの論理アドレスと連続している、請求項24に記載の方法。
【請求項２６】
フラッシュアレイに適用される、システムガベージコレクション方法であって、前記フラッシュアレイは、コントローラとソリッドステートディスクグループとを含み、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含み、前記方法は、前記コントローラによって実行され、
前記ソリッドステートディスクグループによって提供される論理アドレスの使用ステータスが第1の指定された条件を満たすかどうかを決定するステップと、
前記ソリッドステートディスクグループによって提供される前記論理アドレスの前記使用ステータスが前記第1の指定された条件を満たす場合、ストライプ単位でガベージコレクションを行うよう前記ソリッドステートディスクグループに命令し、前記論理チャンクグループの論理アドレスが解放されるまで前記対象ストライプの論理アドレスを解放せずに維持するステップ、または、
前記ソリッドステートディスクグループによって提供される前記論理アドレスの前記使用ステータスが前記第1の指定された条件を満たさない場合、論理チャンクグループ単位でガベージコレクションを行うよう前記ソリッドステートディスクグループに命令するステップであって、収集された論理チャンクグループに含まれるすべてのストライプのすべての論理アドレスが解放される、ステップと
を含む、システムガベージコレクション方法。
【請求項２７】
前記ソリッドステートディスクグループによって提供される論理アドレスの使用ステータスが第1の指定された条件を満たすかどうかを決定する前記ステップの前に、
前記ソリッドステートディスクグループの利用可能な空間が第2の指定された条件を満たすことを決定するステップをさらに含む、請求項26に記載の方法。
【請求項２８】
前記第2の指定された条件は、前記ソリッドステートディスクグループの前記利用可能な空間のサイズが指定された空間しきい値未満であることを含む、請求項27に記載の方法。
【請求項２９】
前記第2の指定された条件は、少なくとも1つのストライプに含まれる無効なデータのデータ量が指定されたしきい値に達することを含む、請求項27に記載の方法。
【請求項３０】
前記第1の指定された条件は、前記ソリッドステートディスクグループによって提供される前記論理アドレスのうちの割当て可能な論理アドレスの量が、指定された第1のアドレスのしきい値未満であることを含む、請求項26に記載の方法。
【請求項３１】
前記第1の指定された条件は、前記ソリッドステートディスクグループによって提供される前記論理アドレスにおいて使用されている論理アドレスの量が、指定された第2のアドレスのしきい値を超えていることを含む、請求項26に記載の方法。
【請求項３２】
前記論理チャンクグループは複数の論理チャンクを含み、各論理チャンクは異なるソリッドステートディスクからのものである、請求項26に記載の方法。
【請求項３３】
前記コントローラのために前記複数のソリッドステートディスクの各々によって提供される論理アドレスの量は、前記ソリッドステートディスクの実際のアドレスの量よりも多い、請求項26に記載の方法。
【請求項３４】
フラッシュアレイ内のコントローラに配置される、システムガベージコレクション装置であって、前記フラッシュアレイは、前記コントローラとソリッドステートディスクグループとを含み、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含み、前記装置は、
前記複数のストライプの各々に含まれる無効なデータのデータ量をカウントするように構成されたカウンティングモジュールと、
前記複数のストライプから少なくとも1つの対象ストライプを選択するように構成された選択モジュールであって、前記対象ストライプは、その量が指定された量のしきい値を超えている無効なデータを含む前記複数のストライプのうちのストライプである、選択モジュールと、
対象ストライプ内の有効なデータを移動するよう前記ソリッドステートディスクグループに命令することと、前記対象ストライプの論理アドレスと前記対象ストライプの実際のアドレスの間の対応関係を削除するよう前記ソリッドステートディスクグループに命令することと、前記論理チャンクグループの前記論理アドレスが解放されるまで、前記対象ストライプの前記論理アドレスを解放せずに維持することとを行うように構成された命令モジュールと
を含む、システムガベージコレクション装置。
【請求項３５】
前記コントローラのために前記複数のソリッドステートディスクの各々によって提供される論理アドレスの量は、前記ソリッドステートディスクの実際のアドレスの量よりも多い、請求項34に記載の装置。
【請求項３６】
前記論理チャンクグループは複数の論理チャンクを含み、各論理チャンクは異なるソリッドステートディスクからのものである、請求項34に記載の装置。
【請求項３７】
前記命令モジュールは、前記対象ストライプを収集するよう前記ソリッドステートディスクグループに命令する前に、前記ソリッドステートディスクグループの利用可能な空間が不十分であると決定するようにさらに構成される、請求項34に記載の装置。
【請求項３８】
前記装置は解放モジュールをさらに含み、
前記解放モジュールは、前記論理チャンクグループに含まれるすべてのストライプが収集されると、前記コントローラによって前記論理チャンクグループに割り当てられた前記論理アドレスを解放するように構成され、前記対象ストライプの前記論理アドレスは、前記論理チャンクグループの前記論理アドレスのサブセットである、請求項34に記載の装置。
【請求項３９】
前記命令モジュールが前記対象ストライプを収集するよう前記ソリッドステートディスクグループに命令するように特に構成されることは、前記対象ストライプ内の前記有効なデータを読み取るよう前記ソリッドステートディスクグループに命令することと、データ書込み命令を前記ソリッドステートディスクグループに送信することとを含み、前記データ書込み命令は、第1の論理アドレスおよび前記有効なデータを含む、請求項34に記載の装置。
【請求項４０】
前記命令モジュールは、
前記対象ストライプ内のデータが属するIO要求を決定することと、
前記IO要求に含まれる一部のデータが他のストライプに記憶されている場合、前記一部のデータのうちの有効なデータを新しく割り当てられた第2の論理アドレスに移動するよう前記ソリッドステートディスクグループに命令することであって、前記第2の論理アドレスは前記第1の論理アドレスと連続している、命令することと
を行うようにさらに構成される、請求項39に記載の装置。
【請求項４１】
前記他のストライプは前記対象ストライプの隣接するストライプであり、前記隣接するストライプに含まれるストライプユニットの論理アドレスは、前記対象ストライプに含まれるストライプユニットの論理アドレスと連続している、請求項40に記載の装置。
【請求項４２】
請求項1から9のいずれか一項に記載の前記システムコントローラと前記ソリッドステートディスクグループとを含むフラッシュアレイであって、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含む、フラッシュアレイ。
【請求項４３】
請求項10から17のいずれか一項に記載の前記システムコントローラと前記ソリッドステートディスクグループとを含むフラッシュアレイであって、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含む、フラッシュアレイ。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願はストレージ分野に関し、より詳細には、システムコントローラおよびシステムガベージコレクション方法に関する。
【背景技術】
【０００２】
フラッシュアレイは、ソリッドステートディスクとシステムコントローラとを含むストレージシステムである。システムコントローラは、論理チャンクグループ(英語:chunk group、略してCKG)単位でソリッドステートディスクに論理アドレスを割り当てる。システム内の利用可能な空間が不十分である場合、システムコントローラはシステムガベージコレクションを行う。システムガベージコレクション動作では、システムコントローラは、論理チャンクグループ内のすべての有効なデータを新しい論理チャンクグループに移動させ、次いで、元の論理チャンクグループの論理アドレスを解放するようソリッドステートディスクに命令する。その結果、ソリッドステートディスク内に大量の書込み増幅時間がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
本出願は、ソリッドステートディスク内の書込み増幅時間の量を短縮するためのシステムコントローラおよびシステムガベージコレクション方法を提供する。
【０００４】
第1の態様は、システムコントローラを提供する。システムコントローラは、プロセッサとインターフェースとを含み、インターフェースはソリッドステートディスクグループと通信するように構成されている。ソリッドステートディスクグループは複数のソリッドステートディスクを含み、ソリッドステートディスクグループは論理チャンクグループを含み、論理チャンクグループは複数のストライプを含む。実際のアプリケーションでは、論理チャンクグループは複数の論理チャンクを含み、各論理チャンクは異なるソリッドステートディスクからのものである。プロセッサは、複数のストライプの各々に含まれる無効なデータのデータ量をカウントすることと、複数のストライプから少なくとも1つの対象ストライプを選択することとを行うように構成され、対象ストライプは、複数のストライプの中で最大量の無効なデータを含むストライプ、またはその量が指定された量のしきい値を超えている無効なデータを含むストライプである。次いで、コントローラは、対象ストライプを収集するようソリッドステートディスクグループに命令するために、命令情報をソリッドステートディスクグループに送信する。収集後、対象ストライプの論理アドレスと実際のアドレスの対応は取り消されるが、対象ストライプが配置されている論理チャンクグループの論理アドレスが解放されるまで、対象ストライプの論理アドレスは解放されない。本明細書において、対象ストライプを収集するようソリッドステートディスクグループに命令するステップは、データ読取り命令、データ書込み命令、およびマップ解除コマンドを、ソリッドステートディスクグループに含まれる各ソリッドステートディスクに送信するステップを特に含む。データ読取り命令は、対象ストライプ内の有効なデータを読み取るために使用され、データ書込み命令は、新しく割り当てられた論理アドレスに有効なデータを書き込むようソリッドステートディスクに命令するために使用され、マップ解除コマンドは、有効なデータの元の論理アドレスと実際のアドレスの間のマッピング関係を解放するようソリッドステートディスクグループに命令するために使用される。
【０００５】
第1の態様では、1つまたは複数の論理チャンクグループが存在する可能性がある。論理チャンクグループが1つある場合、対象ストライプは、論理チャンクグループに含まれるストライプのうちの、無効なデータのデータ量が指定された量のしきい値を超えているストライプである。さらに、論理チャンクグループは、ソリッドステートディスクグループ内の複数の論理チャンクグループの中で最大量の無効なデータを含む論理チャンクグループであり得る。この場合、対象ストライプは、ソリッドステートディスクグループ全体で最大量の無効なデータを含むストライプである。複数の論理チャンクグループが存在する場合、対象ストライプは、複数の論理チャンクグループに含まれるストライプのうちの、無効なデータのデータ量が指定された量のしきい値を超えているストライプである。選択範囲が広いため、この場合の対象ストライプは、より多くの無効なデータを含むストライプでもある。
【０００６】
第1の態様において提供されるシステムコントローラでは、システムガベージコレクションは、ストライプの粒度で行われる。論理チャンクグループの粒度で行われるシステムガベージコレクションと比較して、ストライプの粒度がより細かいため、無効なデータが密集している領域をより正確に見つけることができる。同じサイズの利用可能な空間が解放されると、ストライプの粒度で行われるシステムガベージコレクションにおける書込み増幅を低減することができ、それによってソリッドステートディスクの寿命を延ばすことができる。
【０００７】
第1の態様の第1の実装形態では、システムコントローラのために複数のソリッドステートディスクの各々によって提供される論理アドレスの量は、ソリッドステートディスクの実際のアドレスの量よりも多い。ソリッドステートディスクの論理アドレスの量は実際のアドレスの量よりも多いため、システムコントローラはより多くの割当て可能な論理アドレスを有する。これにより、割当て可能な論理アドレスが不十分であるという問題をある程度回避することができる。
【０００８】
第1の態様の第2の実装形態では、プロセッサは、対象ストライプを収集するようソリッドステートディスクグループに命令する前に、ソリッドステートディスクグループの利用可能な空間が不十分であると決定するようにさらに構成される。ソリッドステートディスクグループの利用可能な空間が不十分であることが、システムガベージコレクションのトリガ条件である。
【０００９】
第1の態様の第3の実装形態では、プロセッサは、論理チャンクグループに含まれるすべてのストライプが収集されると、プロセッサによって論理チャンクグループに割り当てられた論理アドレスを解放するようにさらに構成され、対象ストライプの論理アドレスは、論理チャンクグループの論理アドレスのサブセットである。論理チャンクグループ内の1つまたは複数のストライプのみが収集される場合、これらのストライプの論理アドレスは解放されず、論理チャンクグループに含まれるすべてのストライプが収集されるまで、これらのストライプの論理アドレスを解放することはできない。解放された論理アドレスは、システムコントローラによって割当て可能な論理アドレスが不十分であるという問題を回避するために、他の論理チャンクグループに割り当てることができる。
【００１０】
第1の態様の第4の実装形態では、プロセッサは、対象ストライプ内のデータが属するIO要求を決定することと、IO要求に含まれる一部のデータが他のストライプに記憶されている場合、一部のデータのうちの有効なデータを新しく割り当てられた論理アドレスに移動することを行うようにさらに構成され、新しく割り当てられた論理アドレスは、対象ストライプ内の有効なデータが移動される新しい論理アドレスと連続している。これは、検索を容易にするために、同じIO要求に属するデータが可能な限り一緒に記憶されることを確実にするためである。
【００１１】
第1の態様の第4の実装形態を参照すると、第1の態様の第5の実装形態では、他のストライプは対象ストライプの隣接するストライプであり、隣接するストライプは、論理アドレスが対象ストライプの論理アドレスと連続するストライプである。
【００１２】
第2の態様は、システムコントローラを提供する。システムコントローラは、プロセッサとインターフェースとを含み、インターフェースはソリッドステートディスクグループと通信するように構成されている。ソリッドステートディスクグループは複数のソリッドステートディスクを含み、ソリッドステートディスクグループは論理チャンクグループを含み、論理チャンクグループは複数のストライプを含む。実際のアプリケーションでは、論理チャンクグループは複数の論理チャンクを含み、各論理チャンクは異なるソリッドステートディスクからのものである。プロセッサは、ソリッドステートディスクグループによって提供される論理アドレスの使用ステータスが第1の指定された条件を満たすかどうかを決定することと、ソリッドステートディスクグループによって提供される論理アドレスの使用ステータスが第1の指定された条件を満たす場合、ストライプ単位でガベージコレクションを行うようソリッドステートディスクグループに命令し、論理チャンクグループの論理アドレスが解放されるまで対象ストライプの論理アドレスを解放せずに維持することとを行うように構成され、または、プロセッサは、ソリッドステートディスクグループによって提供される論理アドレスの使用ステータスが第1の指定された条件を満たさない場合、論理チャンクグループ単位でガベージコレクションを行うようソリッドステートディスクグループに命令するようにさらに構成され、収集された論理チャンクグループに含まれるすべてのストライプのすべての論理アドレスが解放される。
【００１３】
第2の態様における第1の指定された条件は、ソリッドステートディスクグループによって提供される論理アドレスのうちの割当て可能な論理アドレスの量が、指定された第1のアドレスのしきい値未満であることであってもよく、ソリッドステートディスクグループによって提供される論理アドレスにおいて使用されている論理アドレスの量が、指定された第2のアドレスのしきい値を超えていることであってもよく、ソリッドステートディスクグループによって提供される論理アドレスにおいて使用されている論理アドレスの量の、論理アドレスの総量に対する比率が、指定された第3のアドレスのしきい値を超えていることであってもよく、ソリッドステートディスクグループによって提供される論理アドレスのうちの利用可能な論理アドレスの量の、論理アドレスの総量に対する比率が、指定された第4のアドレスしきい値未満であるかどうかであってもよい。
【００１４】
第2の態様で提供されるシステムコントローラでは、システムガベージコレクションを行う粒度は、異なるトリガ条件に応じて決定される。利用可能な空間が不十分である場合、書込みの増幅を低減するために、システムガベージコレクションは、ストライプの粒度で行われる。割当て可能な論理アドレスの量が減少するにつれて、割当て可能な論理アドレスの量が指定されたアドレスしきい値未満である場合、ソリッドステートディスクグループは、システムコントローラの割当て可能な論理アドレスを増やすために、論理チャンクグループ単位でガベージコレクションを行うよう命令される。したがって、この実装形態によれば、書込み増幅を低減することができ、割当て可能な論理アドレスが不十分であるという問題も回避することができる。
【００１５】
第2の態様の第1の実装形態では、システムコントローラのために複数のソリッドステートディスクの各々によって提供される論理アドレスの量は、ソリッドステートディスクの実際のアドレスの量よりも多い。
【００１６】
第2の態様の第2の実装形態では、プロセッサは、ソリッドステートディスクグループによって提供される論理アドレスの使用ステータスが第1の指定された条件を満たすかどうかを決定する前に、ソリッドステートディスクグループの利用可能な空間が第2の指定された条件を満たすことを決定するようにさらに構成される。第2の指定された条件は、ソリッドステートディスクグループの利用可能な空間のサイズが指定された空間しきい値未満であることであってもよく、ソリッドステートディスクグループの使用済み空間のサイズが指定された空間しきい値を超えることであってもよく、ストライプ内の無効なデータのデータ量が指定されたしきい値に達することであってもよい。
【００１７】
第3の態様は、システムガベージコレクション方法を提供し、本方法は、第1の態様および第1の態様の任意の実装形態において提供されるシステムコントローラに適用される。
【００１８】
第4の態様は、他のシステムガベージコレクション方法を提供し、本方法は、第2の態様および第2の態様の任意の実装形態において提供されるシステムコントローラに適用される。
【００１９】
第5の態様は、システムガベージコレクション装置を提供し、装置に含まれるモジュールは、第3の態様において提供されるシステムガベージコレクション方法を実装するように構成される。
【００２０】
第6の態様は、他のシステムガベージコレクション装置を提供し、装置に含まれるモジュールは、第4の態様において提供されるシステムガベージコレクション方法を実装するように構成される。
【００２１】
第7の態様は、第1の態様の任意の実装形態において提供されるシステムコントローラとソリッドステートディスクグループとを含むフラッシュアレイを提供し、ソリッドステートディスクグループは複数のソリッドステートディスクを含み、ソリッドステートディスクグループは論理チャンクグループを含み、論理チャンクグループは複数のストライプを含む。
【００２２】
第8の態様は、第2の態様の任意の実装形態において提供されるシステムコントローラとソリッドステートディスクグループとを含むフラッシュアレイを提供し、ソリッドステートディスクグループは複数のソリッドステートディスクを含み、ソリッドステートディスクグループは論理チャンクグループを含み、論理チャンクグループは複数のストライプを含む。
【００２３】
第9の態様は、プログラムコードを記憶するコンピュータ可読ストレージ媒体を含む、システムガベージコレクションのためのコンピュータプログラム製品を提供し、プログラムコードに含まれる命令は、第1の態様において説明した方法を実行するために使用される。
【００２４】
第10の態様は、プログラムコードを記憶するコンピュータ可読ストレージ媒体を含む、システムガベージコレクションのためのコンピュータプログラム製品を提供し、プログラムコードに含まれる命令は、第2の態様において説明した方法を実行するために使用される。
【図面の簡単な説明】
【００２５】
【図１】本発明の一実施形態によるアプリケーションシナリオ図である。
【図２】本発明の一実施形態によるコントローラの構造図である。
【図３】本発明の一実施形態による論理チャンクグループの概略図である。
【図４】本発明の一実施形態によるストライプの概略図である。
【図５】本発明の一実施形態によるシステムガベージコレクション方法の概略フローチャートである。
【図６】本発明の実施形態による他のシステムガベージコレクション方法の概略フローチャートである。
【図７】本発明の一実施形態によるシステムガベージコレクション装置の概略構造図である。
【発明を実施するための形態】
【００２６】
本発明の実施形態は、書込み増幅を低減するために、システムガベージコレクション方法およびストレージシステムを提供し、それによってソリッドステートディスクの寿命を延ばす。
【００２７】
図1は、本発明の一実施形態によるフラッシュアレイの構成図である。図1に示されるフラッシュアレイは、少なくとも1つのコントローラ(図1に示されるコントローラ11)および複数のソリッドステートディスク22を含む。コントローラ11は、ストレージエリアネットワーク(英語:storage area network、SAN)を使用することによって、ホスト(図面には示されていない)に接続されている。コントローラ11は、サーバまたはデスクトップコンピュータなどのコンピューティングデバイスであり得る。コントローラ11には、オペレーティングシステムとアプリケーションプログラムがインストールされている。コントローラ11は、ホストから入力/出力(I/O)要求を受信し得る。コントローラ11は、I/O要求の中で運ばれたデータ(もしあれば)をさらに記憶し、データをソリッドステートディスク22に書き込むことができる。ソリッドステートディスク(英語:Solid State Disk、SSD)は、フラッシュメモリ(英語:flash memory)チップを媒体とするメモリであり、ソリッドステートドライブ(Solid State Drive、SSD)とも呼ばれる。
【００２８】
図1は説明の一例にすぎない。実際のアプリケーションでは、ストレージシステムは少なくとも2つのコントローラを含み得る。各コントローラの物理的構造および機能は、コントローラ11のものと類似している。さらに、コントローラ間、および任意のコントローラとソリッドステートディスク22との間の接続方法は、コントローラが互いに通信することができ、各コントローラとソリッドステートディスク22が互いに通信することができるという条件で、この実施形態では制限されない。さらに、この実施形態では、コントローラ11は通常、複数のソリッドステートディスクに命令を送信する。説明を容易にするために、複数のソリッドステートディスク22を含むセットは、ソリッドステートディスクグループと呼ばれる。
【００２９】
図2は、コントローラ11の例示的な構造図である。図2に示されるように、コントローラ11は、インターフェースカード110、プロセッサ112、およびインターフェースカード113を含む。
【００３０】
インターフェースカード110は、ホストと通信するように構成されており、コントローラ11は、インターフェースカード110を使用することによって、ホストの動作命令を受信し得る。プロセッサ112は、中央処理装置(英語:central processing unit、CPU)であり得る。本発明のこの実施形態では、プロセッサ112は、ホストからI/O要求を受信し、I/O要求を処理するように構成され得る。I/O要求は、データ書込み要求であってもよく、データ読取り要求であってもよい。プロセッサ112は、データ書込み要求内のデータをソリッドステートディスク22にさらに送信し得る。さらに、プロセッサ112は、システムガベージコレクション動作を実行するようにさらに構成され得る。インターフェースカード113は、ソリッドステートディスク22と通信するように構成され、コントローラ11は、インターフェースカード113を使用することによって、データ書込み要求(データおよびデータのライフサイクルレベルを含む)を記憶用にソリッドステートディスク22に送信し得る。
【００３１】
任意選択で、コントローラ11は、メモリ111をさらに含み得る。メモリ111は、ホストから受信したデータまたはソリッドステートディスク22から読み取ったデータを一時的に記憶するように構成される。ホストによって送信された複数のデータ書込み要求を受信するとき、コントローラ11は、メモリ111への複数のデータ書込み要求にデータを一時的に記憶し得る。メモリ111の容量が特定のしきい値に達すると、メモリ111に記憶されたデータおよびデータに割り当てられた論理アドレスがソリッドステートディスク22に送信される。ソリッドステートディスク22はデータを記憶する。メモリ111は、揮発性メモリ、フラッシュメモリチップ、またはそれらの組合せを含む。揮発性メモリは、たとえば、ランダムアクセスメモリ(英語:random-access memory、RAM)である。フラッシュメモリチップは、フロッピーディスク、ハードディスク、ソリッドステートディスク(solid state disk、SSD)、またはコンパクトディスクなどのプログラムコードを記憶できる任意の機械可読媒体である。メモリ111は、停電保護機能を備えている。停電保護機能は、システムの電源をオフにしてからオンにしたときに、メモリ111に記憶されたデータが失われないことを意味する。
【００３２】
データがストレージシステムに書き込まれた後、コントローラ11はデータの有効性を記録する必要がある。データの有効性は、データが修正されたかどうかに基づいて決定される。データが初めて書き込まれる場合、データは有効として記録され得る(データは有効なデータと呼ばれる)。データが修正された場合、修正前のデータは無効として記録される(データは無効なデータと呼ばれる)。具体的には、データの有効性は、ビットマップを使用することによって記録され得る。たとえば、ビットマップ内の各「ビット」は、サイズが1KBのデータの論理アドレスに対応している。「ビット」が1の場合、論理アドレスに記憶されているデータが有効であることを示し、または、「ビット」が0の場合、論理アドレスに記憶されているデータが無効であることを示す。ビットマップは、メモリ111に記憶されてもよく、ソリッドステートディスクに記憶されてもよい。
【００３３】
コントローラ11はシステムコントローラである点に留意されたい。システムコントローラは独立したデバイスであり、ソリッドステートディスク内の制御チップとは異なる。この実施形態では、ソリッドステートディスク内の制御チップは、フラッシュメモリコントローラと呼ばれる。
【００３４】
ソリッドステートディスク22は、フラッシュメモリコントローラおよび複数のフラッシュメモリチップを含む。フラッシュメモリコントローラは、コントローラ11によって送信されたデータ書込み要求またはデータ読取り要求の実行などの動作を実行するように構成されている。
【００３５】
フラッシュメモリコントローラは、フラッシュ変換層(英語:flash translation layer、FTL)を含む。フラッシュ変換層は、データの論理アドレスと実際のアドレスの間の対応関係を記憶するように構成されている。したがって、フラッシュ変換層は、ソリッドステートディスク内のデータの実際のアドレスに、システムコントローラによって送信されたデータ書込み要求またはデータ読取り要求内の論理アドレスを変換するように構成されている。データの論理アドレスはシステムコントローラによって割り当てられ、システムコントローラのソリッドステートディスクによって提供される論理アドレス範囲のサブセットである。データの論理アドレスは、開始論理アドレスと長さを含む。開始論理アドレスはデータがセグメント内に配置されている場所を示し、長さはデータのサイズを示す。データの実際のアドレスは、ソリッドステートディスク内のデータの物理アドレスであってもよく、物理アドレスを仮想化することによって取得され、フラッシュメモリコントローラにのみ見えるアドレスであってもよい。仮想化を通じて取得された実際のアドレスは、システムコントローラには見えない。
【００３６】
ソリッドステートディスクは通常、1つまたは複数のフラッシュメモリチップを含む。各フラッシュメモリチップは、いくつかの消去チャンクを含む。ソリッドステートディスクはページ(英語:page)単位で読取りまたは書込みを実行するが、消去動作は1つの消去チャンクのみに基づいて実行することができる。消去動作は、チャンクのすべてのビットを「1」に設定することである。消去動作の前に、フラッシュメモリコントローラは最初に消去チャンク内の有効なデータを他のチャンクの空白ページにコピーする必要がある。
【００３７】
各消去チャンクは、複数のページ(英語:page)を含む。データ書込み要求を実行すると、ソリッドステートディスクはページ単位でデータを書き込む。たとえば、コントローラ11は、データ書込み要求をフラッシュメモリコントローラに送信する。データ書込み要求は、データの論理アドレスを含む。データ書込み要求を受信した後、フラッシュメモリコントローラは、受信時系列に従って、データを1つまたは複数の消去チャンクに連続的に書き込む。データを1つまたは複数の消去チャンクに連続的に書き込むということは、フラッシュメモリコントローラが空白の消去チャンクを検索し、空白の消去チャンクがいっぱいになるまでデータを空白の消去チャンクに書き込むことを意味する。データのサイズが消去チャンクの容量を超えると、フラッシュメモリコントローラは次の空白の消去チャンクを検索し、書込みの実行を継続する。フラッシュ変換層は、データが書き込まれるページの論理アドレスと実際のアドレスの間の対応関係を確立して記憶する。コントローラ11が、データの読取りを要求するためにフラッシュメモリコントローラにデータ読取り要求を送信するとき、データ読取り要求は論理アドレスを含む。フラッシュメモリコントローラは、論理アドレスおよび論理アドレスと実際のアドレスとの間の対応に基づいてデータを読み取り、そのデータをコントローラ11に送信する。
【００３８】
フラッシュアレイでは、単一のソリッドステートディスクに障害が発生し、データが失われる可能性がある。この実施形態では、データの可能性を確実にするために、独立したディスクの冗長アレイ(Redundant Array of Inexpensive Disks、RAID)技術が使用される。以下に、ソリッドステートディスク内のデータの冗長性保護メカニズムについて説明する。
【００３９】
第1に、コントローラ11は、論理チャンク(英語:chunk、略してCK)の形式で、ソリッドステートディスク上で空間管理を実行する。論理チャンクは空間の概念である。たとえば、論理チャンクのサイズは4MBであるが、4MBに限定されない。異なるソリッドステートディスクからの論理チャンクは、論理チャンクセットを形成し得る。次いで、コントローラ11は、論理チャンクセット内の論理チャンクを、指定されたRAIDタイプに基づいてデータグループおよびチェックグループにグループ化する。データグループは、データを記憶するように構成された少なくとも2つの論理チャンクを含み、チェックグループは、データのチェックデータを記憶するように構成された少なくとも1つの論理チャンクを含む。この実施形態では、データグループとチェックグループを含む論理チャンクセットは、論理チャンクグループと呼ばれる。メモリ111が特定のサイズのデータで満たされると、コントローラ11は、データユニットとチェックユニットを論理チャンクグループに記憶するために、データを指定されたRAIDタイプに基づいて複数のデータユニットに分割し、計算を通じてチェックユニットを取得し、データユニットおよびチェックユニットをソリッドステートディスクに送信し得る。データグループ内の各論理チャンクはデータユニットを記憶するように構成され、チェックグループ内の各論理チャンクはチェックユニットを記憶するように構成される。記憶後、データユニットと対応するチェックユニットはストライプを形成する。論理チャンクグループは、複数のストライプを含む。
【００４０】
ストライプに含まれるデータユニットとチェックユニットの両方は、ストライプユニットと呼ばれる場合がある。この実施形態では、たとえば、ストライプユニットのサイズは8KBであるが、8KBに限定されない。図3に示されるように、論理チャンクセットを形成するために5つのソリッドステートディスクの各々から1つの論理チャンクが抽出され、次いでコントローラ11は、RAIDタイプに基づいて(例としてRAID6を使用して)論理チャンクセット内の論理チャンクをグループ化すると仮定される。たとえば、論理チャンク1、論理チャンク2、および論理チャンク3は、データチャンクグループに属し、論理チャンク4および論理チャンク5は、チェックチャンクグループに属する。メモリ111に記憶されるデータのサイズが24KB(8KB×3)に達すると、データは3つのデータユニットに分割され、各データユニットのサイズは8KBである。次いで、計算を通じて2つのチェックユニットが取得され、各チェックユニットのサイズも8KBになる。コントローラ11は、データユニットおよびチェックユニットを論理チャンクグループに記憶するために(図3の斜線部分に示されているように)、データユニットおよびチェックユニットをソリッドステートディスクに送信する。RAID6冗長性保護メカニズムによれば、任意の2つのデータユニットまたはチェックユニットが無効になった場合、残りのデータユニットまたはチェックユニットに基づいて無効なユニットを再構築できることが理解できる。
【００４１】
この実施形態では、メモリ111が1つのストライプのサイズに等しいデータで満たされると、コントローラ11は、データ書込み要求をソリッドステートディスクグループに送信し、その結果、ソリッドステートディスクグループに含まれるソリッドステートディスク22は、データを論理チャンクグループのストライプに書き込む。この場合、コントローラ11は、割り当てられた論理チャンクグループが存在するかどうかを決定する必要がある。割り当てられた論理チャンクグループが存在し、論理チャンクグループが依然としてデータを収容するために十分な空間を有する場合、コントローラ11は、データを割り当てられた論理チャンクグループに書き込むようソリッドステートディスクグループに命令し得る。具体的には、コントローラ11は、割り当てられた論理チャンクグループの論理アドレス範囲から未使用の論理アドレスのセグメントを取得し、論理アドレスをデータ書込み要求に追加し、データ書込み要求をソリッドステートディスク22に送信する。データを記憶した後、ソリッドステートディスク22は、フラッシュ変換層において、論理アドレスとデータが記憶される実際のアドレスとの間のマッピング関係を確立する。
【００４２】
前述の例では、コントローラ11が、システム内に割り当てられた論理チャンクグループが存在しないと決定した場合、または割り当てられた論理チャンクグループが書き込まれたデータで満たされていると決定した場合、コントローラ11は論理チャンクグループを作成する必要がある。作成プロセスは次のようになり得る。コントローラ11は、コントローラ11上の各ソリッドステートディスクの利用可能な空間についての記録に基づいて、システムの残りの空間が論理チャンクグループを作成するために十分であると決定する。次いで、コントローラ11は、異なるソリッドステートディスク22から別個に1つの論理チャンクを取得し、これらの論理チャンクを使用することによって、指定されたRAIDタイプに基づいて、新しい論理チャンクグループを形成する(論理チャンクグループの前述の説明が参照され得る)。その後、コントローラ11は、論理アドレスのセグメントを各論理チャンクに割り当て、これらの論理アドレスのセットは、新しい論理チャンクグループの論理アドレスである。
【００４３】
論理チャンクグループを作成するために十分な利用可能空間がフラッシュアレイに常にあることを確実にするために、コントローラ11は、システム全体の利用可能な空間を知るために、各ソリッドステートディスク22の利用可能な空間をリアルタイムに、または定期的に監視し得る。システムの利用可能な空間が指定された空間しきい値よりも小さい場合、システムガベージコレクションが開始され得る。たとえば、1つのソリッドステートディスク22の容量は128Gであり、図1に示されるフラッシュアレイに含まれるすべてのソリッドステートディスク(フラッシュアレイは10個のソリッドステートディスクを含むと仮定される)の総容量は1280Gである。空間しきい値は640Gに設定され得る。具体的には、フラッシュアレイに記憶されているデータが総容量の半分に達すると、残りの利用可能な空間も空間しきい値に達する。この場合、コントローラ11は、システムガベージコレクションを行い得る。640Gは空間しきい値の一例に過ぎず、空間しきい値は代替的に他の値に設定され得ることが理解できる。さらに、システムの使用済み空間が指定された空間しきい値に達すると、システムガベージコレクションもトリガされ得る。さらに、本発明の他の実施形態では、1つまたは複数のストライプに含まれる無効なデータのデータ量が指定されたしきい値に達すると、システムガベージコレクションも開始され得る。システムガベージコレクションは、ソリッドステートディスク内のガベージコレクションとは異なる。ソリッドステートディスク内のガベージコレクションは、ソリッドステートディスクによって完了される。
【００４４】
コントローラ11は、論理チャンクグループ単位でシステムガベージコレクションを行い得る。たとえば、コントローラ11は、ビットマップに基づいて論理チャンクグループ内の有効なデータの論理アドレスを取得し、有効なデータの論理アドレスをソリッドステートディスクグループに送信して、各ソリッドステートディスク22が有効なデータの論理アドレスに基づいてデータを読み取り、データをコントローラ11に送信することができるようにする。コントローラ11は、新しい論理アドレスを有効なデータに割り当て、ここで、新しい論理アドレスは新しい論理チャンクグループに属し、割り当てられた新しい論理アドレスをソリッドステートディスクグループに送信する。有効なデータを新しいチャンクに書き込んだ後、各ソリッドステートディスク22は、実際のアドレスと新しい論理アドレスとの間のマッピング関係を記憶する。次いで、コントローラ11は、マップ解除(英語:unmap)コマンドまたはtrimコマンドをソリッドステートディスクグループに送信し、マップ解除コマンドは、収集されるべき論理チャンクグループの論理アドレス範囲を含む。マップ解除コマンドを受信した後、各ソリッドステートディスク22は、フラッシュ変換層に記憶されている、論理アドレス範囲内の論理アドレスと実際のアドレスとの間の対応関係を削除する。ソリッドステートディスク22は、有効なデータを含まないチャンクとして、移動される前の有効なデータの実際のアドレスに対応するチャンクをさらにマーク付けし得る。その後、コントローラ11は、収集されるべき論理チャンクグループの論理アドレス範囲と、論理チャンクグループによって占有されている実際の物理空間(実際のアドレスとしても理解され得る)を解放し得る。
【００４５】
システムガベージコレクションが論理チャンクグループ単位で行われる場合、空白の論理チャンクグループは、論理チャンクグループ内のすべての有効なデータが新しい論理チャンクグループに移動された後にのみ解放することができる。システムガベージコレクションが論理チャンクグループよりも細かい粒度で行われる場合、データが比較的少ない回数移動される間に、同じサイズの利用可能な空間を解放することができる。
【００４６】
この実施形態では、コントローラ11は、ストライプの粒度でシステムガベージコレクションを行う。コントローラ11は、ビットマップに基づいて、論理チャンクグループ内のストライプに含まれる無効なデータのデータ量をカウントし、データ量を降順でソートし得る。システムガベージコレクションのトリガ条件が満たされると、最大量の無効なデータを含むストライプが収集のために選択される。具体的には、コントローラ11は、ビットマップに基づいて1つのストライプにおいて有効なデータの論理アドレスを取得し、有効なデータの論理アドレスをソリッドステートディスクグループに送信し、各ソリッドステートディスク22が元の論理アドレスから有効なデータを読み取ることができるようにする。コントローラ11は、未使用の論理アドレスからの有効なデータに新しい論理アドレスを割り当て、ここで、新しい論理アドレスは、新しい論理チャンクグループに属し、新しい論理アドレスをソリッドステートディスクグループに送信して、ソリッドステートディスク22が有効なデータを新しいチャンクに書き込み、次いで、実際のアドレスと新しい論理アドレスとの間のマッピング関係を記憶することができるようにする。次いで、コントローラ11は、マップ解除(英語:unmap)コマンドをソリッドステートディスクグループに送信し、マップ解除コマンドは、収集されるべきストライプの論理アドレス範囲を含む。マップ解除コマンドを受信した後、各ソリッドステートディスク22は、フラッシュ変換層に記憶されている、論理アドレス範囲内の論理アドレスと有効なデータの実際のアドレスとの間の対応関係を削除する。ソリッドステートディスク22は、有効なデータを含まないチャンクとして、移動される前の有効なデータの実際のアドレスに対応するチャンクをさらにマーク付けし得る。論理チャンクグループの粒度で行われるシステムガベージコレクションとの違いは、ストライプ単位で行われる収集においては、マップ解除コマンドはストライプの論理アドレス範囲のみを含むが、論理チャンクグループ単位で行われる収集においては、マップ解除コマンドは論理チャンクグループ全体の論理アドレス範囲を含む、という点にある。この場合、移動する必要のある有効なデータの範囲は異なる。ストライプ単位で行われる収集では、ストライプの論理アドレス範囲に対応する実際のアドレス範囲の有効なデータを移動する必要があるが、論理チャンクグループ単位で行われる収集では、論理チャンクグループ全体の論理アドレス範囲に対応する実際のアドレス範囲の有効なデータを移動する必要がある。このようにして、同じサイズの利用可能な空間を解放することができるが、データが比較的少ない回数で移動される。
【００４７】
論理チャンクグループ内のストライプが収集され、ストライプによって占有される実際の物理空間は空白であるが、論理チャンクグループが論理アドレスの割当て/解放の基本単位であるため、ストライプによって占有される論理アドレスを解放できない点に留意されたい。したがって、論理アドレスは、論理チャンクグループに含まれるすべてのストライプが収集された後にのみ解放することができる。
【００４８】
従来のソリッドステートディスクによってシステムコントローラに公開される論理アドレスは、従来のソリッドステートディスクの実際のアドレスと同等である。システムガベージコレクションは、コントローラによって使用されるべき論理アドレスをより多く解放するために行われる。しかしながら、前述の説明から、ストライプの粒度でのシステムガベージコレクション方法が従来のソリッドステートディスクに使用される場合、たとえ論理チャンクグループ内のいくつかのストライプが収集されても、ストライプの論理アドレスは、依然としてコントローラ11によって使用されるために解放することはできないことがわかる。ソリッドステートディスクの物理空間はシステムガベージコレクションを通じて解放され、新しいデータを物理空間に書き込むことができるが、割当て可能な論理アドレスは依然としてコントローラ11には不十分である。論理チャンクグループ全体のすべてのデータに対してガベージコレクション動作が完了した後でのみ、十分な利用可能な論理アドレスがある。
【００４９】
前述の実施形態に基づいて、ガベージコレクションがストライプの粒度で行われることをより確実にするために、具体的には、十分な論理アドレスがあることを確実にするために、本出願は他の実施形態を提供する。この実施形態では、仮想ブロック(vblock)技術を使用するソリッドステートディスク(略して、仮想ブロックソリッドステートディスク)が導入される。言い換えれば、本発明のこの実施形態において提供されるフラッシュアレイ内のソリッドステートディスクは、仮想ブロックソリッドステートディスクである。仮想ブロックソリッドステートディスクの機能は、仮想ブロックソリッドステートディスクによってシステムコントローラに公開される論理アドレスの量が、仮想ブロックソリッドステートディスクの実際のアドレスの量よりも多いことである。例として、128Gの容量のソリッドステートディスクが使用される。ソリッドステートディスクによって提供される論理アドレス範囲は、従来の方法で0KB〜131072KBである。しかしながら、仮想ブロック技術が使用された後は、同じ容量のソリッドステートディスクによって提供される論理アドレス範囲が、元の論理アドレス範囲よりも大きくなる。たとえば、ソリッドステートディスクの論理アドレス範囲は0KB〜262144KBであり、この場合、コントローラ11では131073KB〜262144KBの範囲が増加する。本明細書における仮想ブロックソリッドステートディスクの論理アドレスの量は、従来のソリッドステートディスクの論理アドレスの量の2倍であることは一例にすぎない点に留意されたい。また、この実施形態は、仮想ブロックソリッドステートディスクの論理アドレスの量が、従来のソリッドステートディスクの論理アドレスの量よりも多い場合、2倍に限定されない。ソリッドステートディスクグループ全体の一部のソリッドステートディスクは、より広い論理アドレス範囲を提供するために仮想ブロック技術を使用し得るが、一部の従来のソリッドステートディスクは依然として使用されていることが理解できる。あるいは、すべてのソリッドステートディスクが仮想ブロック技術を使用する。これは、本出願に限定されない。
【００５０】
ストライプの粒度で行われる記述されたシステムガベージコレクションに基づいて、論理チャンクグループ内の少なくとも1つのストライプに対してシステムガベージコレクションを行った後、コントローラ11は、有効なデータの新しい論理アドレスとして、コントローラ11の仮想ブロックソリッドステートディスクによって提供される論理アドレスから未使用の論理アドレスを取得し得る。仮想ブロックソリッドステートディスクによって提供される論理アドレスの量は、仮想ブロックソリッドステートディスクの実際のアドレスの量よりも多いため、仮想ブロックソリッドステートディスクは、同じ容量の従来のソリッドステートディスクに比べていくつかの追加の論理アドレスを含む。追加の論理アドレスを使用することによって、システムガベージコレクションがストライプ単位で行われた後でも依然として十分な割当て可能な論理アドレスがないという前述の問題をある程度解決することができる。より広いアドレス範囲を提供するソリッドステートディスクを使用することによって、ストライプの粒度で行われるデータ収集をより確実にすることができ、または、ストライプの粒度で行われるデータ収集の適用範囲が広くなるため、収集は、ストライプ単位でより多くの回数実行されるようになる。したがって、論理チャンクグループ単位で行われるガベージコレクションによって引き起こされる書込み増幅をさらに減らすことができる。
【００５１】
割当て可能な論理アドレスが不十分であるという問題は、仮想ブロックソリッドステートディスクによって提供される追加の論理アドレスを使用することによってある程度解決することができるが、どのディスクの論理アドレスも常に制限される。より多くの論理チャンクグループが作成されるにつれて、ハードディスクによってコントローラ11に提供される利用可能な論理アドレスは減少している。利用能な論理アドレスの量が指定されたアドレスしきい値より少ない場合、論理チャンクグループ単位のシステムガベージコレクションが開始され得る。他の条件が代わりに使用され得ることが理解できる。たとえば、コントローラ11の割当て可能な論理アドレスの量の、論理アドレスの総数に対する割合が、指定されたアドレスしきい値を超える(この場合、アドレスしきい値は小数部である)、または使用されている論理アドレスの量が、指定されたアドレスしきい値を超える。これは、本出願で限定されない。論理チャンクグループ全体のガベージコレクションは特定の条件下で開始されるため、ガベージコレクションの処理が最適化される。これは、論理チャンクグループ全体が収集された場合にのみ、論理チャンクグループに割り当てられた論理アドレスを解放し、次いで他の論理チャンクグループに割り当てることができるためである。論理チャンクグループ単位で行われるシステムガベージコレクションは、上記で詳細に説明されており、ここでは再度説明しない。これに基づいて、本出願は他の実施形態を提供する。この実施形態では、ガベージコレクションは、ストライプの粒度または論理チャンクグループの粒度で行われ得る。特定のガベージコレクション方法は、使用済みアドレスのしきい値に基づいて決定され得る。利用可能な論理アドレスを使用することによって決定が実行される場合、ソリッドステートディスクの利用可能な論理アドレスの量が指定されたアドレスしきい値未満の場合、データは論理チャンクグループの粒度で収集され、または、ソリッドステートディスクの利用可能な論理アドレスの量が指定されたアドレスしきい値よりも大きい場合、データはストライプの粒度で収集される。特定の収集方法については、前述の実施形態の特定の説明を参照されたい。詳細については、本書では再度説明しない。使用されている論理アドレスを使用することによって決定が実行される場合、ソリッドステートディスクグループ全体によって提供される論理アドレスの状態に基づいて、特定のアドレスしきい値が設定または決定され得る。たとえば、より大きな論理アドレス範囲を提供するためにソリッドステートディスクが仮想ブロック技術を使用するシナリオでは、アドレスしきい値は、ソリッドステートディスクによって提供されるより小さな論理アドレス範囲よりも大きくなるように設定され得る。
【００５２】
本出願は、少なくとも2つのストライプがデータ収集の粒度として使用され得る他の実施形態を提供する。この実施形態では、システムガベージコレクションの粒度は少なくともN個のストライプに設定され得、ここで、Nは2以上の整数である。言い換えると、この実装形態では、各収集は、少なくとも2つのストライプに基づいて実行される。しかしながら、2つのストライプを単位として使用することに限定されず、あるいは3つ以上のストライプを単位として使用しうる。収集方法については、前述のシングルストライプの粒度での収集の説明を参照されたい。1つのシステムガベージコレクションにおいて少なくともN個のストライプを選択する方法に注意する必要がある。たとえば、Nは2に等しい。論理チャンクグループ内に連続する論理アドレスを有する2つのストライプが選択され得る。各論理チャンクは、連続する論理アドレスの範囲に対応し、各論理チャンクは、複数のストライプの1つのストライプユニットを含む。したがって、論理チャンク内の各ストライプユニットは、論理アドレスの1つのセグメントに対応する。各ストライプユニットに対応する論理アドレスに基づいて、連続する論理アドレスを有する少なくとも2つのストライプユニットが選択され得、次いで、ストライプユニットに対応するストライプがさらに決定される。これに対応して、無効なデータのデータ量がカウントされる場合、連続する論理アドレスを有する2つのストライプに含まれる無効なデータのデータ量がカウントされるため、最大量の無効なデータを含むカウントされた2つのストライプに対してシステムガベージコレクションが行われることが好ましい。
【００５３】
以下では、特定の例を使用することによって、ストライプ単位で行われるシステムガベージコレクションと論理チャンクグループ単位で行われるシステムガベージコレクションの違いが比較される。図4を参照すると、図4に示される論理チャンクグループは8つのストライプを含み、各ストライプは3つのデータユニット(D1、D2、およびD3)と2つのチェックユニット(PおよびQ)を含む。1つの論理チャンクグループが約50%の無効なデータを含むと仮定され、図4の白い部分は有効なデータを表し、灰色の部分は無効なデータを表す。論理チャンクグループに対してシステムガベージコレクションが行われると、4MB×5=20MBの空間を解放することができる(各論理チャンクのサイズは4MBであると仮定される)。しかしながら、システムガベージコレクションがストライプの粒度で行われる場合、図4に示されるように、ストライプ2とストライプ6は、論理チャンクグループ全体の最も無効なデータを含む。ストライプ2とストライプ6に対してシステムガベージコレクションが行われると、少なくとも10MBの空間を解放することができる。さらに、フラッシュアレイが、図4に示される論理チャンクグループと同様の他の論理チャンクグループをさらに含む場合、20MBの利用可能な空間を取得するために、システムガベージコレクションは、2つの論理チャンクグループに最大量の無効なデータを含む4つのストライプに対してのみ行われる必要がある。したがって、同じサイズの利用可能な空間が取得された場合、ストライプの粒度で行われるシステムガベージコレクションにおいて移動する必要のある有効なデータが少なくなり、それに応じて、論理チャンクグループの粒度で行われるシステムガベージコレクションと比較して、引き起こされる書込み増幅が少なくなる。書込み増幅をさらに低減するために、本発明のこの実施形態では、フラッシュアレイが複数の論理チャンクグループを有する場合、最大量の無効なデータを含む論理チャンクグループが最初に選択され得、次いで、最大量の無効なデータを含むストライプが論理チャンクグループから選択されることが理解できる。または、最大量の無効なデータを有するストライプが、ソリッドステートディスクグループ全体のすべての論理チャンクグループから直接決定され、次いで、そのストライプに対してデ
ータ収集が実行される。
【００５４】
実際のアプリケーションでは、ホストによってコントローラ11に送信されたデータは圧縮されてからストライプに記憶されるため、ストライプに記憶されたデータを整列させることができないという問題を引き起こす可能性がある。整列されるとは、同じIO要求に属するデータが1つのストライプに記憶されることを意味し、「整列させることができない」とは、同じIO要求に属するデータが少なくとも2つのストライプに分散されることを意味する。ストライプ内のデータを整列させることができない場合、データ検索の効率に影響する。この場合を考慮して、この実施形態では、システムガベージコレクションが行われる際に、収集されたデータがストライプ内において整列されることが可能な限り確実にされる。
【００５５】
可能な限りデータの整列を確実にするために、このアプリケーションは他の実施形態を提供する。この実施形態では、最大量の無効なデータを含むストライプが選択された後、そのストライプに含まれるデータが、他のストライプに含まれるデータと同じIO要求に属するかどうかが決定される。ストライプに含まれるデータが他のストライプに含まれるデータと同じIO要求に属する場合、他のストライプに含まれ、IO要求に属する有効なデータは、新しい論理アドレスに移動され、新しい論理アドレスは、対象ストライプ内の有効なデータが移動される新しい論理アドレスと連続している。これは、同じI/O要求に属するデータが可能な限り一緒に記憶されることを確実にするためである。たとえば、他のストライプはストライプの隣接するストライプであってよく、隣接するストライプは、論理アドレスがストライプの論理アドレスと連続するストライプである。他のストライプに含まれるデータが、ストライプの隣接するストライプに含まれるデータと同じIO要求に属するかどうかを決定することはまた、ストライプ内のデータが属するIO要求が、他のストライプに分散されたデータをさらに含むかどうかを決定することと理解され得る。実際のアプリケーションでは、各論理チャンクは、データ記述情報を記憶するために使用される小さな空間部分を含み、記述情報は、論理チャンクに記憶されたデータを記述するために使用される。具体的には、記述情報は、データが属するIO要求の識別子(たとえば、IO要求のアドレス情報)、論理チャンク内のデータの開始アドレス、およびデータのサイズを含み得るが、これらに限定されない。記述情報に基づいて、コントローラ11は、同じIO要求に属するデータが2つのストライプに分散されているかどうかを決定することができる。たとえば、ストライプユニットのサイズは8KBである。論理チャンクの記述情報が、IO要求内のデータの開始アドレスが7KBであり、サイズが2KBであるという情報を含む場合、データのアドレスがストライプの境界を超えていると決定され得る。したがって、IO要求に含まれるデータは2つのストライプに分散される。
【００５６】
マップ解除コマンドまたはtrimコマンドに従って解放された実際のアドレスに記憶されているデータの読取りを要求するためにデータ読取り要求が使用されると、データ読取り要求に応答して特別なマーク(たとえば、すべてゼロ)が付いたデータが返される。いくつかのシナリオでは、コントローラ11は、ストライプ内のデータに対して再構築処理を実行する必要がある。データ再構築は、ストライプ内の1つまたは複数(数量はRAIDタイプによって異なる)のストライプユニットに障害がある場合、RAIDアルゴリズムを使用することによって残りの通常のストライプユニットに基づいて再計算することによって、障害のあるストライプユニットが取得され得ることを意味する。データ再構築シナリオでは、コントローラ11はデータチェックを実行する。チェックに失敗すると、各ストライプユニット内のデータが読み込まれる。ストライプユニット内のデータはシステムガベージコレクションが行われた後に解放されるデータである場合、チェックはデフォルトで成功し、処理は実行されない。ストライプユニット内のデータが、システムガベージコレクションが行われた後に解放されるデータではない場合、既存の手順に従ってデータ再構築が実行される。
【００５７】
図5を参照すると、以下は、本発明の実施形態で提供されるシステムガベージコレクション方法を説明する。本方法は、図1に示されるフラッシュアレイに適用され得、図2に示される実施形態では、コントローラ11によって実行され得る。図5に示されるように、本方法は以下のステップを含む。
【００５８】
501.コントローラ11は、論理チャンクグループ内の各ストライプに含まれる無効なデータのデータ量をカウントする。論理チャンクグループは、フラッシュアレイ内の任意の論理チャンクグループであってもよく、最大量の無効なデータを含む論理チャンクグループであってもよく、ソリッドステートディスクグループによって提供される複数の論理チャンクグループであってもよい。論理チャンクグループがフラッシュアレイ内の最大量の無効なデータを含む論理チャンクグループである場合、システムガベージコレクションの効率がより高くなることが理解できる。さらに、コントローラ11は、コントローラ11に記憶されたビットマップを使用することによって、無効なデータのデータ量をカウントし得る。詳細については、ビットマップを使用することによってコントローラ11によってデータの有効性を記録することについての前述の実施形態の説明を参照されたい。詳細については、本書では再度説明しない。
【００５９】
502.無効なデータのデータ量が指定された量のしきい値を超えているストライプを、システムガベージコレクションの対象ストライプとして用いる。このようにして、システムガベージコレクションを行うために、論理チャンクグループに含まれるストライプから1つまたは複数の対象ストライプが選択され得る。収集が完了すると、無効なデータのデータ量が指定された量のしきい値を超えている次のストライプが選択される。他の実装形態では、コントローラ11は、システムガベージコレクションのオブジェクトとして、最大量の無効なデータを含むストライプを選択する。収集が完了した後、最大量の無効なデータを含む次のストライプが選択される。詳細については、ストライプの粒度でコントローラ11によってシステムガベージコレクションを行うことに関する前述の実施形態の説明を参照されたい。詳細については、本書では再度説明しない。
【００６０】
503.コントローラ11は、対象ストライプを収集するようソリッドステートディスクグループに命令する。たとえば、コントローラ11は、対象ストライプに含まれる有効なデータの元の論理アドレスをソリッドステートディスクグループに送信し、ソリッドステートディスクグループは、元の論理アドレスから有効なデータを読み取り、有効なデータをコントローラ11に送信する。次いで、コントローラ11は、データ書込み要求をソリッドステートディスクグループに送信し、データ書込み要求は、コントローラ11によって有効なデータに割り当てられた新しい論理アドレスを含む。データ書込み要求を受信した後、ソリッドステートディスクグループは有効なデータを新しい論理アドレスに移動する。さらに、システムガベージコレクションのトリガ条件は、ソリッドステートディスクグループの利用可能な空間が不十分であると決定することであり得、このステップは、ステップ503の前に実行され得る。詳細については、前述の実施形態におけるシステムガベージコレクションのトリガ条件を参照されたい。利用可能な空間は、フラッシュアレイ内の合計ストレージ空間から占有空間を差し引いたものである。続いて、コントローラ11は、マップ解除コマンドをソリッドステートディスクグループに送信し、ここで元の論理アドレスと対象ストライプの実際のアドレスとの間の対応関係を削除するようソリッドステートディスクグループに命令するために、マップ解除コマンドが使用される。さらに、ソリッドステートディスクグループは、実際のアドレスを有効なデータを含まないアドレスとしてさらにマーク付けし得る。ソリッドステートディスク22が内部ガベージコレクションを行うとき、アドレスにおける有効なデータは移動されない可能性がある。詳細については、ストライプの粒度でコントローラ11によってシステムガベージコレクションを行うことに関する前述の実施形態の特定の説明を参照されたい。詳細については、本書では再度説明しない。
【００６１】
ステップ503が実行された後、対象ストライプの論理アドレスと実際のアドレスとの間の対応は取り消される。ソリッドステートディスク22は、有効なデータを含まないチャンクを消去するために、定期的に内部ガベージコレクションを行う。この場合、新しいデータを受信するために、対象ストライプによって占有される実際のアドレスが収集され得る。しかしながら、対象ストライプの実際のアドレスは収集されるが、対象ストライプが配置されている論理チャンクグループの論理アドレスが解放されるまで、対象ストライプの論理アドレスは解放されない点に留意されたい。解放された論理アドレスは、ソリッドステートディスクグループ内の他の論理チャンクグループに割り当てることができる。
【００６２】
対象ストライプが収集された後、コントローラ11は、収集オブジェクトとして次の対象ストライプを選択し得る。次の対象ストライプは、論理チャンクグループ内の最大量の無効なデータを含むストライプであってもよく、無効なデータのデータ量が指定された量のしきい値を超えているストライプであってもよい。具体的には、動作502〜503が繰り返され得る。詳細については、本書では再度説明しない。
【００６３】
任意選択で、図5に示されるシステムガベージコレクションは、vblock技術分野に適用され得る。具体的には、本方法が適用されるフラッシュアレイに含まれるソリッドステートディスク22によってコントローラ11に提供される論理アドレスの量は、ソリッドステートディスクの実際のアドレスの量よりも多い。
【００６４】
本発明の一実施形態は、他のシステムガベージコレクション方法をさらに提供する。本方法は、図1に示されるフラッシュアレイに適用され得、図2に示される実施形態では、コントローラ11によって実行される。図6に示されるように、本方法は、以下のステップを含み得る。
【００６５】
601.コントローラ11は、ソリッドステートディスクグループによって提供される論理アドレスの使用ステータスが第1の指定された条件を満たすかどうかを決定する。本明細書の第1の指定された条件は、ソリッドステートディスクグループによって提供される論理アドレスのうちの割当て可能な論理アドレスの量が、第1のアドレスのしきい値を超えていることであってもよく、ソリッドステートディスクグループによって提供される論理アドレスにおいて使用されている論理アドレスの量が第2のアドレスしきい値を超えていることであってもよく割当て可能な論理アドレスの量の、論理アドレスの総数に対する割合が、指定されたアドレスしきい値を超えていることであってもよい。詳細については、論理チャンクグループ単位で行われるシステムガベージコレクションに関する前述の実施形態の説明を参照されたい。詳細については、本書では再度説明しない。
【００６６】
602.ソリッドステートディスクグループによって提供される割当て可能な論理アドレスの量が指定されたアドレスしきい値よりも大きい場合、ストライプ単位でガベージコレクションを行うようソリッドステートディスクグループに命令する。詳細については、図5に示されるステップ501〜503の説明、および、ストライプの粒度でコントローラ11によってガベージコレクションを行うことに関する前述の実施形態の説明を参照されたい。詳細については、本書では再度説明しない。さらに、前述の説明から、ストライプ単位で行われるシステムガベージコレクションによって引き起こされる書込み増幅は、論理チャンクグループ単位で行われるシステムガベージコレクションによって引き起こされる書込み増幅よりも小さいことがわかる。さらに、ソリッドステートディスクグループによって提供される割当て可能な論理アドレスの量が指定されたアドレスしきい値より少ない場合、ソリッドステートディスクグループは、論理チャンクグループ単位でガベージコレクションを行うよう命令される。詳細については、論理チャンクグループの粒度で行われるシステムガベージコレクションに関する前述の実施形態の説明を参照されたい。詳細については、本書では再度説明しない。ストライプが収集された後、ストライプの論理アドレスをすぐに収集することはできず、ストライプの論理アドレスは、ストライプが配置されている論理チャンクグループに含まれるすべてのストライプが収集された後でのみ解放することができる。したがって、ユーザデータが増加するにつれて、コントローラ11の割当て可能な論理アドレスは徐々に減少する。割当て可能な論理アドレスの数が指定されたアドレスしきい値より少ない場合、割当て可能な論理アドレスの量を増加させるために、ガベージコレクションが論理チャンクグループ単位で行われる。
【００６７】
任意選択で、ステップ601の前に、コントローラ11は、ソリッドステートディスクグループの利用可能な空間が第2の指定された条件を満たすかどうかをさらに決定し得る。ここで、第2の指定された条件はシステムガベージコレクションのトリガ条件である。第2の指定された条件が満たされると、コントローラ11は、ステップ601および602を実行する。具体的には、本明細書の第2の指定された条件について、システムガベージコレクションのトリガ条件に関する前述の実施形態の説明を参照されたい。
【００６８】
任意選択で、図6に示されるシステムガベージコレクションは、vblock技術分野に適用され得る。具体的には、本方法が適用されるフラッシュアレイに含まれるソリッドステートディスク22によってコントローラ11に提供される論理アドレスの量は、ソリッドステートディスクの実際のアドレスの量よりも多い。詳細については、前述の実施形態における仮想ブロック技術の使用の説明を参照されたい。詳細については、本書では再度説明しない。
【００６９】
本発明の一実施形態は、システムガベージコレクション装置をさらに提供する。本装置は、図1に示されるフラッシュアレイ内のコントローラ11に配置されている。フラッシュアレイは、コントローラ11およびソリッドステートディスクグループを含み、ソリッドステートディスクグループは、複数のソリッドステートディスク22を含み、ソリッドステートディスクグループは、論理チャンクグループを含み、論理チャンクグループは、複数のストライプを含む(図3を参照)。たとえば、図7に示されるように、装置は、カウンティングモジュール701、選択モジュール702、および命令モジュール703を含む。
【００７０】
カウンティングモジュール701は、複数のストライプの各々に含まれる無効なデータのデータ量をカウントするように構成される。詳細については、図5に示されるステップ501の説明、および、ビットマップを使用することによる、コントローラ11によるデータの有効性の記録に関する前述の実施形態の説明を参照されたい。選択モジュール702は、複数のストライプから少なくとも1つの対象ストライプを選択するように構成され、対象ストライプは、量が指定された量のしきい値を超える無効なデータを含む複数のストライプのうちのストライプである。詳細については、図5に示されるステップ502の説明、および、ストライプの粒度でコントローラ11によってシステムガベージコレクションを行うことに関する前述の実施形態の説明を参照されたい。命令モジュール703は、対象ストライプの論理アドレスと対象ストライプの実際のアドレスの間の対応関係を削除することと、論理チャンクグループの論理アドレスが解放されるまで、対象ストライプの論理アドレスを解放せずに維持することとを行うために、対象ストライプを収集するようソリッドステートディスクグループに命令するように構成される。詳細については、図5に示されるステップ503の説明、および、ストライプの粒度でコントローラ11によってシステムガベージコレクションを行うことに関する前述の実施形態の説明を参照されたい。
【００７１】
任意選択で、命令モジュール703は、対象ストライプを収集するようソリッドステートディスクグループに命令する前に、ソリッドステートディスクグループの利用可能な空間が不十分であると決定するようにさらに構成される。詳細については、システムガベージコレクションのトリガ条件に関する前述の実施形態の説明を参照されたい。
【００７２】
任意選択で、装置は、解放モジュール704をさらに含み得、解放モジュール704は、論理チャンクグループに含まれるすべてのストライプが収集されると、コントローラによって論理チャンクグループに割り当てられた論理アドレスを解放するように構成され、対象ストライプの論理アドレスは、論理チャンクグループの論理アドレスのサブセットである。
【００７３】
任意選択で、命令モジュール703は、対象ストライプ内の有効なデータを新しく割り当てられた第1の論理アドレスに移動させるようソリッドステートディスクグループに命令するように特に構成される。
【００７４】
任意選択で、命令モジュール703は、対象ストライプ内のデータが属するIO要求を決定することと、IO要求に含まれる一部のデータが他のストライプに記憶されている場合、一部のデータのうちの有効なデータを新しく割り当てられた第2の論理アドレスに移動させるようソリッドステートディスクグループに命令することとを行うようにさらに構成され、第2の論理アドレスは第1の論理アドレスと連続している。詳細については、データの整列を確実にすることに関する前述の実施形態の説明を参照されたい。詳細については、本書では再度説明しない。
【００７５】
図7に示されるすべてのモジュールは、図2に示されるプロセッサ112によって別個に実行されてもよく、メモリ111内のプログラムを呼び出すことによってプロセッサ112によって実行されてもよい。
【００７６】
さらに、図7に示されるシステムガベージコレクション装置のための他の実装形態がある。この実装形態では、カウンティングモジュール701は、ソリッドステートディスクグループによって提供される論理アドレスの使用ステータスが第1の指定された条件を満たすかどうかを決定するように構成される。詳細については、図6に示されるステップ601、および論理チャンクグループ単位で行われるシステムガベージコレクションに関する前述の実施形態の説明を参照されたい。詳細については、本書では再度説明しない。命令モジュール703は、ソリッドステートディスクグループによって提供される割当て可能な論理アドレスの量が指定されたアドレスしきい値よりも大きい場合、ストライプ単位でガベージコレクションを行うようソリッドステートディスクグループに命令する、または、ソリッドステートディスクグループによって提供される割当て可能な論理アドレスの量が指定されたアドレスしきい値よりも少ない場合、論理チャンクグループ単位でガベージコレクションを行うようソリッドステートディスクグループに命令するように構成される。詳細については、図6に示されるステップ602の説明、ストライプの粒度でコントローラ11によってガベージコレクションを行うことに関する前述の実施形態の説明、および論理チャンクグループの粒度で行われるシステムガベージコレクションに関する前述の実施形態の説明を参照されたい。
【００７７】
具体的には、ガベージコレクションがストライプの粒度で行われる場合、カウンティングモジュール701は、複数のストライプの各々に含まれる無効なデータのデータ量をカウントするようにさらに構成される。詳細については、図5に示されるステップ501の説明、および、ビットマップを使用することによる、コントローラ11によるデータの有効性の記録に関する前述の実施形態の説明を参照されたい。選択モジュール702は、複数のストライプから少なくとも1つの対象ストライプを選択するように構成され、対象ストライプは、量が指定された量のしきい値を超える無効なデータを含む複数のストライプのうちのストライプである。詳細については、図5に示されるステップ502の説明、および、ストライプの粒度でコントローラ11によってシステムガベージコレクションを行うことに関する前述の実施形態の説明を参照されたい。
【００７８】
当業者は、本発明の各態様または各態様の可能な実装形態が、システム、方法、またはコンピュータプログラム製品として具体的に実装され得ることを理解している。したがって、本発明の各態様または各態様の可能な実装形態は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態(ファームウェア、常駐ソフトウェアなどを含む)、またはソフトウェアとハードウェアの組合せを伴う実施形態の形態で実装され得、これらは、本明細書ではまとめて「回路」、「モジュール」、または「システム」と呼ばれる。さらに、本発明の各態様または各態様の可能な実装形態は、コンピュータプログラム製品の形態で実装され得、コンピュータプログラム製品は、コンピュータ可読媒体に記憶されたコンピュータ可読プログラムコードである。
【００７９】
コンピュータ可読媒体は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラム可能読取り専用メモリ(EPROM)、およびコンパクトディスクなどの、電子、磁気、光学、電磁、赤外線、もしくは半導体のシステム、デバイス、もしくは装置、またはそれらの任意の適切な組合せを含むが、これらに限定されない。
【００８０】
コンピュータ内のプロセッサは、コンピュータ可読媒体に記憶されたコンピュータ可読プログラムコードを読み取るので、プロセッサは、フローチャートの各ステップまたはステップの組合せにおいて指定された機能およびアクションを実行することができる。
【００８１】
すべてのコンピュータ可読プログラムコードは、ユーザコンピュータで実行されてもよく、一部はスタンドアロンソフトウェアパッケージとしてユーザコンピュータで実行されてもよく、一部がリモートコンピュータで実行される間に一部はユーザコンピュータで実行されてもよく、すべてがリモートコンピュータまたはサーバで実行されてもよい。いくつかの代替の実装形態ソリューションでは、フローチャートのステップまたはブロック図のブロックにおいて説明されている機能が、図示された順序で実行されない場合がある点にも留意されたい。たとえば、関連する機能に依存する、図示された2つの連続するステップまたは2つのブロックは、実際には実質的に同時に実行されてもよく、時にはこれらのブロックが逆の順序で実行されてもよい。
【００８２】
当業者は、本明細書に開示された実施形態に記載された例と組み合わせて、ユニットおよびアルゴリズムステップを、電子ハードウェアまたはコンピュータソフトウェアと電子ハードウェアの組合せによって実装することができることを認識し得る。機能がハードウェアによって実行されるかソフトウェアによって実行されるかは、特定のアプリケーションと技術ソリューションの設計上の制約によって異なる。当業者は、特定の用途ごとに記載された機能を実装するために異なる方法を使用し得るが、その実装形態が本発明の範囲を超えると考えるべきではない。
【００８３】
前述の説明は、本発明の単なる特定の実装形態であり、本発明の保護範囲を限定することを意図するものではない。本発明に開示された技術的範囲内の当業者によって容易に理解されるいかなる変形または置換も、本発明の保護範囲内に含まれるものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
【符号の説明】
【００８４】
11  コントローラ
22  ソリッドステートディスク
110  インターフェースカード
111  メモリ
112  プロセッサ
113  インターフェースカード
701  カウンティングモジュール
702  選択モジュール
703  命令モジュール
704  解放モジュール
【図１】
2021529406.tif 000003
【図２】
2021529406.tif 000004
【図３】
2021529406.tif 000005
【図４】
2021529406.tif 000006
【図５】
2021529406.tif 000007
【図６】
2021529406.tif 000008
【図７】
2021529406.tif 000009
【手続補正書】
【提出日】令和3年2月15日(2021.2.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサとインターフェースとを含み、
前記インターフェースは、ソリッドステートディスクグループと通信するように構成され、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含み、
前記プロセッサは、
前記複数のストライプの各々に含まれる無効なデータのデータ量をカウントすることと、
前記複数のストライプから対象ストライプを選択することであって、前記対象ストライプは、その量が指定された量のしきい値を超えている無効なデータを含む、選択することと、
前記対象ストライプ内の有効なデータを移動するよう前記ソリッドステートディスクグループに命令することと、
前記対象ストライプの論理アドレスと前記対象ストライプの実際のアドレスの間の対応関係を削除するよう前記ソリッドステートディスクグループに命令することと、
前記論理チャンクグループの論理アドレスが解放されるまで、前記対象ストライプの前記論理アドレスを解放せずに維持することと
を行うように構成される、システムコントローラ。
【請求項２】
前記システムコントローラのために前記複数のソリッドステートディスクの各々によって提供される論理アドレスの量は、前記ソリッドステートディスクの実際のアドレスの量よりも多い、請求項1に記載のシステムコントローラ。
【請求項３】
前記論理チャンクグループは複数の論理チャンクを含み、各論理チャンクは異なるソリッドステートディスクからのものである、請求項1に記載のシステムコントローラ。
【請求項４】
前記プロセッサは、前記対象ストライプを収集するよう前記ソリッドステートディスクグループに命令する前に、前記ソリッドステートディスクグループの利用可能な空間が不十分であると決定するようにさらに構成される、請求項1に記載のシステムコントローラ。
【請求項５】
前記プロセッサは、前記論理チャンクグループに含まれるすべてのストライプが収集されると、前記プロセッサによって前記論理チャンクグループに割り当てられた前記論理アドレスを解放するようにさらに構成され、前記対象ストライプの前記論理アドレスは、前記論理チャンクグループの前記論理アドレスのサブセットである、請求項1に記載のシステムコントローラ。
【請求項６】
前記プロセッサは、前記解放された論理アドレスを前記ソリッドステートディスクグループ内の他の論理チャンクグループに割り当てるようにさらに構成される、請求項5に記載のシステムコントローラ。
【請求項７】
前記プロセッサが、
前記対象ストライプ内の前記有効なデータを読み取るよう前記ソリッドステートディスクグループに命令することと、
データ書込み命令を前記ソリッドステートディスクグループに送信することであって、前記データ書込み命令は、第1の論理アドレスおよび前記有効なデータを含む、送信することと
を行うように構成される、請求項1に記載のシステムコントローラ。
【請求項８】
前記プロセッサは、
前記対象ストライプ内のデータが属するIO要求を決定することと、
前記IO要求に含まれる一部のデータが他のストライプに記憶されている場合、前記一部のデータのうちの有効なデータを新しく割り当てられた第2の論理アドレスに移動するよう前記ソリッドステートディスクグループに命令することであって、前記第2の論理アドレスは前記第1の論理アドレスと連続している、命令することと
を行うようにさらに構成される、請求項7に記載のシステムコントローラ。
【請求項９】
前記他のストライプは前記対象ストライプの隣接するストライプであり、前記隣接するストライプに含まれるストライプユニットの論理アドレスは、前記対象ストライプに含まれるストライプユニットの論理アドレスと連続している、請求項8に記載のシステムコントローラ。
【請求項１０】
プロセッサとインターフェースとを含み、
前記インターフェースはソリッドステートディスクグループと通信するように構成され、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含み、
前記プロセッサは、前記ソリッドステートディスクグループによって提供される論理アドレスの使用ステータスが第1の指定された条件を満たすかどうかを決定し、前記ソリッドステートディスクグループによって提供される前記論理アドレスの前記使用ステータスが前記第1の指定された条件を満たす場合、ストライプ単位でガベージコレクションを行うよう前記ソリッドステートディスクグループに命令し、前記論理チャンクグループの論理アドレスが解放されるまで対象ストライプの論理アドレスを解放せずに維持するように構成され、または、
前記プロセッサは、前記ソリッドステートディスクグループによって提供される前記論理アドレスの前記使用ステータスが前記第1の指定された条件を満たさない場合、論理チャンクグループ単位でガベージコレクションを行うよう前記ソリッドステートディスクグループに命令するように構成され、収集された論理チャンクグループに含まれるすべてのストライプのすべての論理アドレスが解放される、システムコントローラ。
【請求項１１】
前記プロセッサは、前記ソリッドステートディスクグループによって提供される前記論理アドレスの前記使用ステータスが前記第1の指定された条件を満たすかどうかを決定する前に、前記ソリッドステートディスクグループの利用可能な空間が第2の指定された条件を満たすことを決定するようにさらに構成される、請求項10に記載のシステムコントローラ。
【請求項１２】
前記第2の指定された条件は、前記ソリッドステートディスクグループの前記利用可能な空間のサイズが指定された空間しきい値未満であることを含む、請求項11に記載のシステムコントローラ。
【請求項１３】
前記第2の指定された条件は、少なくとも1つのストライプに含まれる無効なデータのデータ量が指定されたしきい値に達することを含む、請求項11に記載のシステムコントローラ。
【請求項１４】
前記第1の指定された条件は、前記ソリッドステートディスクグループによって提供される前記論理アドレスのうちの割当て可能な論理アドレスの量が、指定された第1のアドレスのしきい値未満であることを含む、請求項10に記載のシステムコントローラ。
【請求項１５】
前記第1の指定された条件は、前記ソリッドステートディスクグループによって提供される前記論理アドレスにおいて使用されている論理アドレスの量が、指定された第2のアドレスのしきい値を超えていることを含む、請求項10に記載のシステムコントローラ。
【請求項１６】
前記システムコントローラのために前記複数のソリッドステートディスクの各々によって提供される論理アドレスの量は、前記ソリッドステートディスクの実際のアドレスの量よりも多い、請求項10に記載のシステムコントローラ。
【請求項１７】
前記論理チャンクグループは複数の論理チャンクを含み、各論理チャンクは異なるソリッドステートディスクからのものである、請求項10に記載のシステムコントローラ。
【請求項１８】
フラッシュアレイに適用される、システムガベージコレクション方法であって、前記フラッシュアレイは、コントローラとソリッドステートディスクグループとを含み、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含み、前記方法は、前記コントローラによって実行され、
前記複数のストライプの各々に含まれる無効なデータのデータ量をカウントするステップと、
前記複数のストライプから少なくとも1つの対象ストライプを選択するステップであって、前記対象ストライプは、その量が指定された量のしきい値を超えている無効なデータを含む前記複数のストライプのうちのストライプである、ステップと、
前記対象ストライプ内の有効なデータを移動させるよう前記ソリッドステートディスクグループに命令し、前記対象ストライプの論理アドレスと前記対象ストライプの実際のアドレスの間の対応関係を削除するよう前記ソリッドステートディスクグループに命令するステップと、
前記論理チャンクグループの論理アドレスが解放されるまで、前記対象ストライプの前記論理アドレスを解放せずに維持するステップと
を含む、システムガベージコレクション方法。
【請求項１９】
前記コントローラのために前記複数のソリッドステートディスクの各々によって提供される論理アドレスの量は、前記ソリッドステートディスクの実際のアドレスの量よりも多い、請求項18に記載の方法。
【請求項２０】
前記論理チャンクグループは複数の論理チャンクを含み、各論理チャンクは異なるソリッドステートディスクからのものである、請求項18に記載の方法。
【請求項２１】
前記対象ストライプを収集するよう前記ソリッドステートディスクグループに命令する前に、前記ソリッドステートディスクグループの利用可能な空間が不十分であると決定するステップをさらに含む、請求項18に記載の方法。
【請求項２２】
前記論理チャンクグループに含まれるすべてのストライプが収集されると、前記コントローラによって前記論理チャンクグループに割り当てられた前記論理アドレスを解放するステップをさらに含み、前記対象ストライプの前記論理アドレスは、前記論理チャンクグループの前記論理アドレスのサブセットである、請求項18に記載の方法。
【請求項２３】
前記対象ストライプ内の有効なデータを移動させるよう前記ソリッドステートディスクグループに命令する前記ステップは、前記対象ストライプ内の前記有効なデータを読み取るよう前記ソリッドステートディスクグループに命令するステップと、データ書込み命令を前記ソリッドステートディスクグループに送信するステップであって、前記データ書込み命令は、第1の論理アドレスおよび前記有効なデータを特に含む、ステップとを含む、請求項18に記載の方法。
【請求項２４】
前記対象ストライプ内のデータが属するIO要求を決定するステップと、
前記IO要求に含まれる一部のデータが他のストライプに記憶されている場合、前記一部のデータのうちの有効なデータを新しく割り当てられた第2の論理アドレスに移動するよう前記ソリッドステートディスクグループに命令するステップであって、前記第2の論理アドレスは前記第1の論理アドレスと連続している、ステップと
をさらに含む、請求項23に記載の方法。
【請求項２５】
前記他のストライプは前記対象ストライプの隣接するストライプであり、前記隣接するストライプに含まれるストライプユニットの論理アドレスは、前記対象ストライプに含まれるストライプユニットの論理アドレスと連続している、請求項24に記載の方法。
【請求項２６】
フラッシュアレイに適用される、システムガベージコレクション方法であって、前記フラッシュアレイは、コントローラとソリッドステートディスクグループとを含み、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含み、前記方法は、前記コントローラによって実行され、
前記ソリッドステートディスクグループによって提供される論理アドレスの使用ステータスが第1の指定された条件を満たすかどうかを決定するステップと、
前記ソリッドステートディスクグループによって提供される前記論理アドレスの前記使用ステータスが前記第1の指定された条件を満たす場合、ストライプ単位でガベージコレクションを行うよう前記ソリッドステートディスクグループに命令し、前記論理チャンクグループの論理アドレスが解放されるまで前記対象ストライプの論理アドレスを解放せずに維持するステップ、または、
前記ソリッドステートディスクグループによって提供される前記論理アドレスの前記使用ステータスが前記第1の指定された条件を満たさない場合、論理チャンクグループ単位でガベージコレクションを行うよう前記ソリッドステートディスクグループに命令するステップであって、収集された論理チャンクグループに含まれるすべてのストライプのすべての論理アドレスが解放される、ステップと
を含む、システムガベージコレクション方法。
【請求項２７】
前記ソリッドステートディスクグループによって提供される論理アドレスの使用ステータスが第1の指定された条件を満たすかどうかを決定する前記ステップの前に、
前記ソリッドステートディスクグループの利用可能な空間が第2の指定された条件を満たすことを決定するステップをさらに含む、請求項26に記載の方法。
【請求項２８】
前記第2の指定された条件は、前記ソリッドステートディスクグループの前記利用可能な空間のサイズが指定された空間しきい値未満であることを含む、請求項27に記載の方法。
【請求項２９】
前記第2の指定された条件は、少なくとも1つのストライプに含まれる無効なデータのデータ量が指定されたしきい値に達することを含む、請求項27に記載の方法。
【請求項３０】
前記第1の指定された条件は、前記ソリッドステートディスクグループによって提供される前記論理アドレスのうちの割当て可能な論理アドレスの量が、指定された第1のアドレスのしきい値未満であることを含む、請求項26に記載の方法。
【請求項３１】
前記第1の指定された条件は、前記ソリッドステートディスクグループによって提供される前記論理アドレスにおいて使用されている論理アドレスの量が、指定された第2のアドレスのしきい値を超えていることを含む、請求項26に記載の方法。
【請求項３２】
前記論理チャンクグループは複数の論理チャンクを含み、各論理チャンクは異なるソリッドステートディスクからのものである、請求項26に記載の方法。
【請求項３３】
前記コントローラのために前記複数のソリッドステートディスクの各々によって提供される論理アドレスの量は、前記ソリッドステートディスクの実際のアドレスの量よりも多い、請求項26に記載の方法。
【請求項３４】
フラッシュアレイ内のコントローラに配置される、システムガベージコレクション装置であって、前記フラッシュアレイは、前記コントローラとソリッドステートディスクグループとを含み、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含み、前記装置は、
前記複数のストライプの各々に含まれる無効なデータのデータ量をカウントするように構成されたカウンティングモジュールと、
前記複数のストライプから少なくとも1つの対象ストライプを選択するように構成された選択モジュールであって、前記対象ストライプは、その量が指定された量のしきい値を超えている無効なデータを含む前記複数のストライプのうちのストライプである、選択モジュールと、
対象ストライプ内の有効なデータを移動するよう前記ソリッドステートディスクグループに命令することと、前記対象ストライプの論理アドレスと前記対象ストライプの実際のアドレスの間の対応関係を削除するよう前記ソリッドステートディスクグループに命令することと、前記論理チャンクグループの前記論理アドレスが解放されるまで、前記対象ストライプの前記論理アドレスを解放せずに維持することとを行うように構成された命令モジュールと
を含む、システムガベージコレクション装置。
【請求項３５】
前記コントローラのために前記複数のソリッドステートディスクの各々によって提供される論理アドレスの量は、前記ソリッドステートディスクの実際のアドレスの量よりも多い、請求項34に記載の装置。
【請求項３６】
前記論理チャンクグループは複数の論理チャンクを含み、各論理チャンクは異なるソリッドステートディスクからのものである、請求項34に記載の装置。
【請求項３７】
前記命令モジュールは、前記対象ストライプを収集するよう前記ソリッドステートディスクグループに命令する前に、前記ソリッドステートディスクグループの利用可能な空間が不十分であると決定するようにさらに構成される、請求項34に記載の装置。
【請求項３８】
前記装置は解放モジュールをさらに含み、
前記解放モジュールは、前記論理チャンクグループに含まれるすべてのストライプが収集されると、前記コントローラによって前記論理チャンクグループに割り当てられた前記論理アドレスを解放するように構成され、前記対象ストライプの前記論理アドレスは、前記論理チャンクグループの前記論理アドレスのサブセットである、請求項34に記載の装置。
【請求項３９】
前記命令モジュールが前記対象ストライプを収集するよう前記ソリッドステートディスクグループに命令するように構成されることは、前記対象ストライプ内の前記有効なデータを読み取るよう前記ソリッドステートディスクグループに命令することと、データ書込み命令を前記ソリッドステートディスクグループに送信することとを含み、前記データ書込み命令は、第1の論理アドレスおよび前記有効なデータを含む、請求項34に記載の装置。
【請求項４０】
前記命令モジュールは、
前記対象ストライプ内のデータが属するIO要求を決定することと、
前記IO要求に含まれる一部のデータが他のストライプに記憶されている場合、前記一部のデータのうちの有効なデータを新しく割り当てられた第2の論理アドレスに移動するよう前記ソリッドステートディスクグループに命令することであって、前記第2の論理アドレスは前記第1の論理アドレスと連続している、命令することと
を行うようにさらに構成される、請求項39に記載の装置。
【請求項４１】
前記他のストライプは前記対象ストライプの隣接するストライプであり、前記隣接するストライプに含まれるストライプユニットの論理アドレスは、前記対象ストライプに含まれるストライプユニットの論理アドレスと連続している、請求項40に記載の装置。
【請求項４２】
請求項1から9のいずれか一項に記載の前記システムコントローラと前記ソリッドステートディスクグループとを含むフラッシュアレイであって、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含む、フラッシュアレイ。
【請求項４３】
請求項10から17のいずれか一項に記載の前記システムコントローラと前記ソリッドステートディスクグループとを含むフラッシュアレイであって、前記ソリッドステートディスクグループは複数のソリッドステートディスクを含み、前記ソリッドステートディスクグループは論理チャンクグループを含み、前記論理チャンクグループは複数のストライプを含む、フラッシュアレイ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００２
【補正方法】変更
【補正の内容】
【０００２】
フラッシュアレイは、ソリッドステートディスクとシステムコントローラとを含むストレージシステムである。システムコントローラは、論理チャンクグループ(chunk group、CKG)単位でソリッドステートディスクに論理アドレスを割り当てる。システム内の利用可能な空間が不十分である場合、システムコントローラはシステムガベージコレクションを行う。システムガベージコレクション動作では、システムコントローラは、論理チャンクグループ内のすべての有効なデータを新しい論理チャンクグループに移動させ、次いで、元の論理チャンクグループの論理アドレスを解放するようソリッドステートディスクに命令する。その結果、ソリッドステートディスク内に大量の書込み増幅時間がある。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
第9の態様は、プログラムコードを記憶するコンピュータ可読ストレージ媒体を含む、システムガベージコレクションのためのコンピュータプログラム製品を提供し、プログラムコードに含まれる命令は、第3の態様において説明した方法を実行するために使用される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
第10の態様は、プログラムコードを記憶するコンピュータ可読ストレージ媒体を含む、システムガベージコレクションのためのコンピュータプログラム製品を提供し、プログラムコードに含まれる命令は、第4の態様において説明した方法を実行するために使用される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
論理チャンクグループを作成するために十分な利用可能空間がフラッシュアレイに常にあることを確実にするために、コントローラ11は、システム全体の利用可能な空間を知るために、各ソリッドステートディスク22の利用可能な空間をリアルタイムに、または定期的に監視し得る。システムの利用可能な空間が指定された空間しきい値よりも小さい場合、システムガベージコレクションが開始され得る。たとえば、1つのソリッドステートディスク22の容量は128GBであり、図1に示されるフラッシュアレイに含まれるすべてのソリッドステートディスク(フラッシュアレイは10個のソリッドステートディスクを含むと仮定される)の総容量は1280GBである。空間しきい値は640GBに設定され得る。具体的には、フラッシュアレイに記憶されているデータが総容量の半分に達すると、残りの利用可能な空間も空間しきい値に達する。この場合、コントローラ11は、システムガベージコレクションを行い得る。640GBは空間しきい値の一例に過ぎず、空間しきい値は代替的に他の値に設定され得ることが理解できる。さらに、システムの使用済み空間が指定された空間しきい値に達すると、システムガベージコレクションもトリガされ得る。さらに、本発明の他の実施形態では、1つまたは複数のストライプに含まれる無効なデータのデータ量が指定されたしきい値に達すると、システムガベージコレクションも開始され得る。システムガベージコレクションは、ソリッドステートディスク内のガベージコレクションとは異なる。ソリッドステートディスク内のガベージコレクションは、ソリッドステートディスクによって完了される。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４９
【補正方法】変更
【補正の内容】
【００４９】
前述の実施形態に基づいて、ガベージコレクションがストライプの粒度で行われることをより確実にするために、具体的には、十分な論理アドレスがあることを確実にするために、本出願は他の実施形態を提供する。この実施形態では、仮想ブロック(vblock)技術を使用するソリッドステートディスク(略して、仮想ブロックソリッドステートディスク)が導入される。言い換えれば、本発明のこの実施形態において提供されるフラッシュアレイ内のソリッドステートディスクは、仮想ブロックソリッドステートディスクである。仮想ブロックソリッドステートディスクの機能は、仮想ブロックソリッドステートディスクによってシステムコントローラに公開される論理アドレスの量が、仮想ブロックソリッドステートディスクの実際のアドレスの量よりも多いことである。例として、128GBの容量のソリッドステートディスクが使用される。ソリッドステートディスクによって提供される論理アドレス範囲は、従来の方法で0KB〜131072KBである。しかしながら、仮想ブロック技術が使用された後は、同じ容量のソリッドステートディスクによって提供される論理アドレス範囲が、元の論理アドレス範囲よりも大きくなる。たとえば、ソリッドステートディスクの論理アドレス範囲は0KB〜262144KBであり、この場合、コントローラ11では131073KB〜262144KBの範囲が増加する。本明細書における仮想ブロックソリッドステートディスクの論理アドレスの量は、従来のソリッドステートディスクの論理アドレスの量の2倍であることは一例にすぎない点に留意されたい。また、この実施形態は、仮想ブロックソリッドステートディスクの論理アドレスの量が、従来のソリッドステートディスクの論理アドレスの量よりも多い場合、2倍に限定されない。ソリッドステートディスクグループ全体の一部のソリッドステートディスクは、より広い論理アドレス範囲を提供するために仮想ブロック技術を使用し得るが、一部の従来のソリッドステートディスクは依然として使用されていることが理解できる。あるいは、すべてのソリッドステートディスクが仮想ブロック技術を使用する。これは、本出願に限定されない。
【国際調査報告】
2021529406.tif 000010
2021529406.tif 000011
2021529406.tif 000012
2021529406.tif 000013