(57)【特許請求の範囲】
【請求項１】
第1のコントローラと、第2のコントローラと、ソリッドステートディスクとを含む、ストレージシステムであって、前記ソリッドステートディスクは、前記第1のコントローラに接続されており、前記ソリッドステートディスクは、前記第2のコントローラに接続されており、前記第1のコントローラまたは前記第2のコントローラは、セグメント単位で前記ソリッドステートディスクのストレージ領域を管理し、
前記第1のコントローラは、システムガベージコレクションを前記第1のコントローラによって管理されるセグメントのうちの複数のセグメントに対して行うように構成され、前記第1のコントローラによって管理される前記セグメントのうちの前記複数のセグメントは、ある期間内に前記第1のコントローラによって割り振られ、
前記第2のコントローラは、前記第1のコントローラがシステムガベージコレクションを行う際に、システムガベージコレクションを前記第2のコントローラによって管理されるセグメントのうちの複数のセグメントに対して行うように構成され、前記第2のコントローラによって管理される前記セグメントのうちの前記複数のセグメントは、前記期間内に前記第2のコントローラによって割り振られる、ストレージシステム。
【請求項２】
前記第1のコントローラによって管理される前記セグメントのうちの前記複数のセグメントは、前記期間内に前記第1のコントローラによって割り振られたすべてのセグメントであり、前記第2のコントローラによって管理される前記セグメントのうちの前記複数のセグメントは、前記期間内に前記第2のコントローラによって割り振られたすべてのセグメントである、請求項1に記載のストレージシステム。
【請求項３】
前記期間内に前記第1のコントローラまたは前記第2のコントローラによって割り振られたセグメントの数量が第1のプリセット閾値に達すると前記期間は終了する、請求項1または2に記載のストレージシステム。
【請求項４】
前記第1のコントローラによって管理される前記セグメントのうちの前記複数のセグメントと前記第2のコントローラによって管理される前記セグメントのうちの前記複数のセグメントとは、同一のセグメントグループに属し、前記セグメントグループに含まれる無効データのサイズは、任意の他のセグメントグループに含まれる無効データのサイズより大きい、請求項1から3のいずれか一項に記載のストレージシステム。
【請求項５】
前記第1のコントローラは、前記セグメントグループのグループ識別子を前記第2のコントローラに送信するようにさらに構成され、
前記第2のコントローラは、前記グループ識別子と前記第2のコントローラによって管理される前記セグメントのうちの前記複数のセグメントの各々の識別子との間の予め記憶された対応付けに従って、前記第2のコントローラによって管理される前記セグメントのうちの前記複数のセグメントを決定するようにさらに構成される、請求項4に記載のストレージシステム。
【請求項６】
前記第1のコントローラは、前記ソリッドステートディスクに、前記第1のコントローラによって管理される前記セグメントのうちの前記複数のセグメントの各々に含まれる有効データのソース論理アドレスを送信し、
宛先論理アドレスを前記有効データに割り振り、
前記有効データを前記ソース論理アドレスから前記宛先論理アドレスにコピーするように前記ソリッドステートディスクに命令するために、前記宛先論理アドレスを前記ソリッドステートディスクに送信し、
各セグメントの論理アドレスと実際のアドレスとの間の対応付けを削除するように前記ソリッドステートディスクに命令するために、アンマップコマンドを前記ソリッドステートディスクに送信することであって、前記対応付けは、前記ソリッドステートディスクによって記憶され、前記アンマップコマンドは、前記第1のコントローラによって管理される前記セグメントのうちの前記複数のセグメントの各々の論理アドレス範囲を含む、送信することをするように構成される、請求項1から5のいずれか一項に記載のストレージシステム。
【請求項７】
ストレージシステムに適用され、前記ストレージシステムは、第1のコントローラと、第2のコントローラと、ソリッドステートディスクとを含み、前記ソリッドステートディスクは、前記第1のコントローラに接続されており、前記ソリッドステートディスクは、前記第2のコントローラに接続されており、前記第1のコントローラまたは前記第2のコントローラは、セグメント単位で前記ソリッドステートディスクのストレージ領域を管理する、システムガベージコレクション方法であって、
前記第1のコントローラによって、システムガベージコレクションを前記第1のコントローラによって管理されるセグメントのうちの複数のセグメントに対して行うステップであって、前記第1のコントローラによって管理される前記セグメントのうちの前記複数のセグメントは、ある期間内に前記第1のコントローラによって割り振られる、ステップと、
前記第1のコントローラがシステムガベージコレクションを行う際に、前記第2のコントローラによって、システムガベージコレクションを前記第2のコントローラによって管理されるセグメントのうちの複数のセグメントに対して行うステップであって、前記第2のコントローラによって管理される前記セグメントのうちの前記複数のセグメントは、前記期間内に前記第2のコントローラによって割り振られる、ステップとを含む、方法。
【請求項８】
前記第1のコントローラによって管理される前記セグメントのうちの前記複数のセグメントは、前記期間内に前記第1のコントローラによって割り振られたすべてのセグメントであり、前記第2のコントローラによって管理される前記セグメントのうちの前記複数のセグメントは、前記期間内に前記第2のコントローラによって割り振られたすべてのセグメントである、請求項7に記載の方法。
【請求項９】
前記期間内に前記第1のコントローラまたは前記第2のコントローラによって割り振られたセグメントの数量が第1のプリセット閾値に達すると前記期間は終了する、請求項7または8に記載の方法。
【請求項１０】
前記第1のコントローラによって管理される前記セグメントのうちの前記複数のセグメントと前記第2のコントローラによって管理される前記セグメントのうちの前記複数のセグメントとは、同一のセグメントグループに属し、前記セグメントグループに含まれる無効データのサイズは、任意の他のセグメントグループに含まれる無効データのサイズより大きい、請求項7から9のいずれか一項に記載の方法。
【請求項１１】
前記方法は、
前記第1のコントローラによって、前記セグメントグループのグループ識別子を前記第2のコントローラに送信するステップと、
前記グループ識別子と前記第2のコントローラによって管理される前記セグメントのうちの前記複数のセグメントの各々の識別子との間の予め記憶された対応付けに従って前記第2のコントローラによって、前記第2のコントローラによって管理される前記セグメントのうちの前記複数のセグメントを決定するステップとをさらに含む、請求項10に記載の方法。
【請求項１２】
前記第1のコントローラによって、システムガベージコレクションを前記第1のコントローラによって管理されるセグメントのうちの複数のセグメントに対して行うステップは、
前記ソリッドステートディスクに前記第1のコントローラによって、前記第1のコントローラによって管理される前記セグメントのうちの前記複数のセグメントの各々に含まれる有効データのソース論理アドレスを送信するステップと、
前記有効データを前記ソース論理アドレスから宛先論理アドレスにコピーするように前記ソリッドステートディスクに命令するために、前記第1のコントローラによって、前記宛先論理アドレスを前記有効データに割り振り、前記宛先論理アドレスを前記ソリッドステートディスクに送信するステップと、
各セグメントの論理アドレスと実際のアドレスとの間の対応付けを削除するように前記ソリッドステートディスクに命令するために、前記第1のコントローラによって、アンマップコマンドを前記ソリッドステートディスクに送信するステップであって、前記対応付けは、前記ソリッドステートディスクによって記憶され、前記アンマップコマンドは、前記第1のコントローラによって管理される前記セグメントのうちの前記複数のセグメントの各々の論理アドレス範囲を含む、ステップとを含む、請求項7から11のいずれか一項に記載の方法。
【請求項１３】
コンピュータに請求項7から12のいずれか一項に記載の方法を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、ストレージ技術の分野に関し、詳細には、ストレージシステムおよびシステムガベージコレクション方法に関する。
【背景技術】
【０００２】
フラッシュアレイは、ソリッドステートディスクと少なくとも2つのコントローラとを含むストレージシステムである。コントローラは、セグメント単位でソリッドステートディスクのストレージ領域を管理する。セグメントは、コントローラによって割り振られた連続した論理アドレスのエリアである。セグメントはまた、システムガベージコレクションの基本単位である。各コントローラは、受信データをコントローラによって管理されるセグメントに書き込み得る。各コントローラからソリッドステートディスクによって受信されたデータは、データを受信する時系列順にソリッドステートディスク内のブロックに逐次書き込まれる。したがって、コントローラのすべてによって送信されたデータが、ある期間内に同一のブロックに書き込まれ得る。したがって、各ブロックに記憶されているデータは、異なるコントローラによって管理されるセグメントに対応し得る。
【０００３】
フラッシュアレイが、システムガベージコレクションを行い、いくつかのセグメントを解放した後でも、ブロックは、システムガベージコレクションが行われていない別のセグメントにデータを含んでいるため、ソリッドステートディスク内のブロックは、完全には消去されない。したがって、ソリッドステートディスクにおいてガベージコレクションを行う場合には、ソリッドステートディスクは、ブランクブロックに、システムガベージコレクションが行われていない別のセグメントのブロック内のデータを書き込む必要がさらにある。その結果として、多数のライトアンプリフィケーションが、ソリッドステートディスクにおいて生じる。
【発明の概要】
【課題を解決するための手段】
【０００４】
本出願は、ソリッドステートディスクにおけるライトアンプリフィケーションの回数を低減するために、ストレージシステムおよびシステムガベージコレクション方法を提供している。
【０００５】
本出願の第1の態様は、ストレージシステムを提供している。ストレージシステムは、第1のコントローラと、第2のコントローラと、ソリッドステートディスクとを含む。ソリッドステートディスクは、第1のコントローラに接続されており、ソリッドステートディスクは、第2のコントローラに接続されている。第1のコントローラまたは第2のコントローラは、セグメント単位でソリッドステートディスクのストレージ領域を管理する。第1のコントローラは、システムガベージコレクションを第1のコントローラによって管理されるセグメントのうちの複数のセグメントに対して行うように構成される。第1のコントローラがシステムガベージコレクションを行う際に、第2のコントローラは、システムガベージコレクションを第2のコントローラによって管理されるセグメントのうちの複数のセグメントに対して行う。第1のコントローラによって管理されるセグメントのうちの複数のセグメントは、ある期間内に第1のコントローラによって割り振られ、第2のコントローラによって管理されるセグメントのうちの複数のセグメントも、前記期間内に第2のコントローラによって割り振られる。
【０００６】
本出願において提供したストレージシステムにおいては、第1のコントローラは、システムガベージコレクションを第1のコントローラによって管理されるセグメントのうちの複数のセグメントに対して行い、第2のコントローラも、システムガベージコレクションを第2のコントローラによって管理されるセグメントのうちの複数のセグメントに対して行う。第1のコントローラがシステムガベージコレクションを行うセグメントと第2のコントローラがシステムガベージコレクションを行うセグメントとは、同一の期間内に割り振られる。セグメントは、第1のコントローラまたは第2のコントローラがソリッドステートディスクのストレージ領域を管理する単位であるため、データをセグメントに書き込むことは、データをソリッドステートディスクのストレージ領域に書き込むことである。第1のコントローラおよび第2のコントローラがシステムガベージコレクションを行うセグメントは、同一の期間内に割り振られる。したがって、セグメント内のデータは、間を置かずにソリッドステートディスクに書き込まれる。さらに、データを書き込む場合には、ソリッドステートディスクは、データを受信する時系列順にデータを1つまたは複数のブロックに順次書き込む。したがって、システムガベージコレクションが同一の期間内に割り振られたセグメントに対して行われた後に、セグメントに対応するブロック内のすべての有効データは別のブロックにコピーされ、セグメントに対応するブロック内のすべてのデータは無効データとなる。ソリッドステートディスクが内部ガベージコレクションを行う際に、有効データを、システムガベージコレクションが行われるセグメントに対応するブロックに関して再びコピーする必要はない。したがって、ソリッドステートディスクにおけるライトアンプリフィケーションの回数が低減される。
【０００７】
第1の態様に準拠している、第1の態様の第1の実施形態においては、第1のコントローラによって管理されるセグメントのうちの複数のセグメントは、前記期間内に第1のコントローラによって割り振られたすべてのセグメントである。加えて、第2のコントローラによって管理されるセグメントのうちの複数のセグメントは、前記期間内に第2のコントローラによって割り振られたすべてのセグメントである。したがって、システムガベージコレクションが前記期間内に割り振られたセグメントのすべてに対して行われることを保証することができる。この場合、ソリッドステートディスク内のより多くのブロックにある有効データのすべてが、別のブロックにコピーされ、これをもって、無効データとみなされる。
【０００８】
第1の態様または第1の態様の第2の実施形態に準拠している、第1の態様の第3の実施形態においては、前記期間内に第1のコントローラまたは第2のコントローラによって割り振られたセグメントの数量が第1のプリセット閾値に達すると期間は終了する。前記実施形態においては、第1のコントローラおよび第2のコントローラは、それぞれの割り振られたセグメントの数量に関する統計を適宜収集する。したがって、操作は容易である。
【０００９】
第1の態様または第1の態様の第2の実施形態に準拠している、第1の態様の第4の実施形態においては、前記期間内に第1のコントローラおよび第2のコントローラによって割り振られたセグメントの数量の合計が第2のプリセット閾値に達すると期間は終了する。第1の態様の第3の実施形態と比較して、第1の態様の第4の実施形態においては、第1のコントローラまたは第2のコントローラは、互いが割り振ったセグメントの数量を問い合わせるためにメッセージを互いに送信する必要がある。したがって、操作は相対的に複雑である。しかしながら、前記実施形態においては、すべての期間内に割り振られるセグメントの数量の上限は同一である。最大量の無効データを含むセグメントグループの選択がより正確になるように、各セグメントグループに含まれる無効データのサイズに関する統計をその後収集する。
【００１０】
第1の態様または第1の態様の前述の実施形態のうちのいずれか1つに準拠している、第1の態様の第5の実施形態においては、第1のコントローラによって管理されるセグメントのうちの複数のセグメントと第2のコントローラによって管理されるセグメントのうちの複数のセグメントとは、同一のセグメントグループに属する。セグメントグループに含まれる無効データのサイズは、任意の他のセグメントグループに含まれる無効データのサイズより大きい。第1の態様の第5の実施形態においては、第1のコントローラは、第2のコントローラによって管理されるセグメントに含まれる無効データのサイズを問い合わせるためにメッセージを第2のコントローラに送信してもよい。第1のコントローラは、最大量の無効データを含むセグメントグループを取得するために、第1のコントローラによって管理されるセグメントに含まれる無効データのサイズと第2のコントローラによって管理されるセグメントに含まれる無効データのサイズとの合計を算出する。このことは、システムガベージコレクションが行われることになるセグメントグループが最大量の無効データを含むセグメントグループであることを保証する。システムガベージコレクションの効率が改善される。
【００１１】
第1の態様または第1の態様の第1の実施形態から第4の実施形態のうちのいずれか1つに準拠している、第1の態様の第6の実施形態においては、第1のコントローラによって管理されるセグメントのうちの複数のセグメントと第2のコントローラによって管理されるセグメントのうちの複数のセグメントとは、同一のセグメントグループに属する。第1のコントローラによって管理されるセグメントのうちの複数のセグメントに含まれる無効データのサイズは、任意の他のセグメントグループに属するとともに第1のコントローラによって管理されるセグメントにある複数のセグメントに含まれる無効データのサイズより大きい。第1の態様の第5の実施形態と比較して、第1のコントローラは、第1のコントローラによって管理されるセグメントに含まれる無効データのサイズのみに関する統計を収集する必要はあるが、第2のコントローラによって管理されるセグメントに含まれる無効データのサイズを問い合わせるためにメッセージを第2のコントローラに送信する必要はない。
【００１２】
第1の態様の第5の実施形態または第1の態様の第6の実施形態に準拠している、第1の態様の第7の実施形態においては、第1のコントローラは、セグメントグループのグループ識別子を第2のコントローラに送信する。第2のコントローラは、グループ識別子と第2のコントローラによって管理されるセグメントのうちの複数のセグメントの各々の識別子との間の予め記憶された対応付けに従って、第2のコントローラによって管理されるセグメントのうちの複数のセグメントを決定する。第7の実施形態においては、第1のコントローラは、システムガベージコレクションが行われることになるセグメントグループのグループ識別子を決定し、グループ識別子を第2のコントローラに送信する。第2のコントローラは、グループ識別子に従って、前記セグメントグループに属している複数のセグメントを探索し得る。
【００１３】
第1の態様の第7の実施形態に準拠している、第1の態様の第8の実施形態においては、第1のコントローラによって管理される各セグメントの識別子は、第1のコントローラによって割り振られ、第2のコントローラによって管理される各セグメントの識別子は、第2のコントローラによって割り振られる。
【００１４】
第1の態様の第7の実施形態に準拠している、第1の態様の第9の実施形態においては、第1のコントローラによって管理される各セグメントの識別子は、第1のコントローラによって割り振られる。第2のコントローラによって管理される各セグメントの識別子も、第1のコントローラによって割り振られる。例えば、第2のコントローラは、セグメント識別子申請要求を第1のコントローラに送信して識別子を取得する。
【００１５】
第1の態様または第1の態様の前述の実施形態のうちのいずれか1つに準拠している、第1の態様の第10の実施形態においては、第1のコントローラによるシステムガベージコレクションを行う具体的な操作は、次の通りである。第1のコントローラは、ソリッドステートディスクに、第1のコントローラによって管理されるセグメントのうちの複数のセグメントの各々に含まれる有効データのソース論理アドレスを送信する。第1のコントローラは、宛先論理アドレスを有効データに割り振り、有効データをソース論理アドレスから宛先論理アドレスにコピーするようにソリッドステートディスクに命令するために、宛先論理アドレスをソリッドステートディスクに送信する。その後、第1のコントローラは、アンマップコマンドをソリッドステートディスクに送信する。アンマップコマンドは、論理アドレスと各セグメントの実際のアドレスとの間の、ソリッドステートディスクによって記憶されている、対応付けを削除するようにソリッドステートディスクに命令するために、第1のコントローラによって管理されるセグメントのうちの複数のセグメントの各々の論理アドレス範囲を含む。
【００１６】
本出願の第2の態様は、システムガベージコレクション方法を提供している。方法は、第1の態様において提供したストレージシステムに適用され、第1の態様における第1のコントローラおよび第2のコントローラによって行われる。
【００１７】
本出願の第3の態様は、プログラムコードを記憶するコンピュータ可読記憶媒体を含む、コンピュータプログラム製品を提供しており、プログラムコードに含まれる命令は、第1の態様における第1のコントローラおよび第2のコントローラによって実行され得るし、第2の態様における少なくとも1つの方法を行うために使用され得る。
【００１８】
本発明の実施形態における技術的ソリューションをより明確に説明するために、実施形態に必要な添付の図面を以下に簡単に説明する。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態による、適用シナリオの図である。
【図２】本発明の実施形態による、コントローラの構造図である。
【図３】本発明の実施形態による、データ書込み方法のフローチャートである。
【図４】本発明の実施形態による、システムガベージコレクション方法のフローチャートである。
【発明を実施するための形態】
【００２０】
本発明の実施形態は、ソリッドステートディスクにおけるライトアンプリフィケーションの回数を低減するために、ストレージシステムおよびガベージコレクション方法を提供している。
図1は、本発明の実施形態による、ストレージシステムの構成図である。図1に示したストレージシステムは、少なくとも2つのコントローラ(図に示したコントローラ11およびコントローラ22)と複数のソリッドステートディスク44とを含む。
【００２１】
コントローラ11およびコントローラ22は各々、ストレージエリアネットワーク(SAN)を使用してホスト(図示せず)に接続されている。コントローラ11は、コントローラ22と通信し得る。コントローラ11は、コントローラ22と同一の物理構造および機能を有する。コントローラ11を一例として使用する。コントローラ11は、サーバまたはデスクトップコンピュータなどのコンピュータデバイスであり得る。オペレーティングシステムおよびアプリケーションプログラムが、コントローラ11にインストールされる。コントローラ11は、入力/出力(I/O)要求をホストから受信し得る。コントローラ11は、(データが存在するのであれば)I/O要求において搬送されたデータをさらに記憶し、データをソリッドステートディスク44に書き込み得る。
【００２２】
ソリッドステートディスク(SSD)は、記憶媒体としてフラッシュメモリチップを使用しているメモリであり、ソリッドステートドライブ(SSD)とも称される。
【００２３】
図示のみを目的とした図1における説明を提供する。実際の適用においては、ストレージシステムは、複数のコントローラを含み得る。各コントローラの物理構造および機能は、コントローラ11のものと同様である。加えて、コントローラ11とコントローラ22との間の接続の方式と任意のコントローラとソリッドステートディスク44との間の接続の方式とは、コントローラが互いに通信することができ、コントローラの各々とソリッドステートディスク44とが互いに通信することができるのであれば、本実施形態に限定されない。
【００２４】
図2は、コントローラ11の構造の図の一例である。図2に示したように、コントローラ11は、インターフェースカード110、プロセッサ112、およびインターフェースカード113を備える。
【００２５】
インターフェースカード110は、ホストと通信するように構成される。コントローラ11は、インターフェースカード110を使用してホストの操作命令を受信し得る。プロセッサ112は、中央処理ユニット(CPU)であり得る。本発明の本実施形態においては、プロセッサ112は、ホストからI/O要求を受信しI/O要求を処理するように構成され得る。I/O要求は、データ書込み要求またはデータ読込み要求であり得る。プロセッサ112は、データ書込み要求におけるデータをソリッドステートディスク44にさらに送信し得る。加えて、プロセッサ112は、システムガベージコレクション操作を行うようにさらに構成され得る。
【００２６】
必要に応じて、コントローラ11は、メモリ111をさらに含み得る。メモリ111は、ホストから受信したデータまたはソリッドステートディスク44から読み込んだデータを一時的に記憶するように構成される。コントローラ11がホストによって送信された複数のデータ書込み要求を受信する場合には、複数のデータ書込み要求におけるデータは、メモリ111に一時的に記憶され得る。メモリ111に記憶されているデータのサイズが特定の閾値に達すると、メモリ111に記憶されているデータおよびデータに割り振られている論理アドレスが、ソリッドステートディスク44に送信される。ソリッドステートディスク44は、データを記憶する。メモリ111は、揮発性メモリ、不揮発性メモリ、またはその組合せを含む。揮発性メモリは、例えば、ランダムアクセスメモリ(RAM)である。不揮発性メモリは、例えば、フロッピーディスク、ハードディスク、ソリッドステートディスク(SSD)、または光ディスクなどの、プログラムコードを記憶することができる様々な機械可読媒体である。メモリ111は、停電保護機能を有する。停電保護機能は、システムの電源が切れその後復電した場合でさえもメモリ111に記憶されているデータが失われないことを意味する。
【００２７】
インターフェースカード113は、ソリッドステートディスク44と通信するように構成される。コントローラ11は、インターフェースカード113を使用して、記憶のために、データ書込み要求(データおよびコントローラ11によってデータに割り振られている論理アドレスを含む)をソリッドステートディスク44に送信し得る。
【００２８】
コントローラ22の構造およびコントローラ22の各部分の機能は、コントローラ11のものと同様である。その詳細をここで再び説明することはしない。加えて、コントローラ11およびコントローラ22の双方は、システムコントローラである。システムコントローラは、独立デバイスであり、ソリッドステートディスク内の制御チップとは異なる。本実施形態においては、ソリッドステートディスク内の制御チップをソリッドステートディスクコントローラと称する。本実施形態におけるコントローラは、特に定めのない限りシステムコントローラである。
【００２９】
ソリッドステートディスク44は、ソリッドステートディスクコントローラおよび記憶媒体を含む。ソリッドステートディスクコントローラは、コントローラ11またはコントローラ22によって送信された、データ書込み要求またはデータ読込み要求などの、操作を行うように構成される。
【００３０】
ソリッドステートディスクコントローラは、フラッシュ変換レイヤ(FTL)を含む。フラッシュ変換レイヤは、論理アドレスとデータの実際のアドレスとの間の対応付けを記憶するように構成される。したがって、フラッシュ変換レイヤは、ソリッドステートディスク内のデータの実際のアドレスに、コントローラによって送信されたデータ書込み要求またはデータ読込み要求における論理アドレスを変換するように構成される。データの論理アドレスは、セグメントの論理アドレス範囲の、コントローラによって割り振られた、サブセットである。データの論理アドレスは、開始論理アドレスおよび長さを含む。開始論理アドレスは、データが位置している、セグメントにおける、位置を示し、長さは、データのサイズを示す。データの実際のアドレスは、ソリッドステートディスクにおけるデータの物理アドレスであり得る、または、仮想化を物理アドレスに対して行うことによって得られとともにソリッドステートディスクコントローラに対してのみ可視であるアドレスであり得る。仮想化によって得られた実際のアドレスは、システムコントローラに対しては不可視である。
【００３１】
記憶媒体は、1つまたは複数のフラッシュメモリチップを一般的に含む。各フラッシュメモリチップは、いくつかのブロックを含む。フラッシュメモリチップは、1ページ(英語表記:page)単位の読み込み処理または書き込み処理を行うが、消去操作は、1ブロック単位のみで行われる。消去操作は、次の通りである。ブロックのすべてのビットを「1」に設定する。消去処理を行う前に、ソリッドステートディスクコントローラは、ブロック内の有効データを別のブロックのブランクページにまずコピーする必要がある。ブロック内の有効データは変更されずにブロックに記憶されているデータであり、前記データを読み込んでもよい。ブロック内の無効データはブロックに記憶されている変更済みのデータであり、前記データは読み込むことはできない。
【００３２】
各ブロックは、複数のページ(英語表記:page)を含む。データ書込み要求を行う場合には、ソリッドステートディスクは、ページ単位でデータを書き込む。例えば、コントローラ11は、データ書込み要求をソリッドステートディスクコントローラに送信する。データ書込み要求は、データの論理アドレスを含む。データ書込み要求を受信した後に、ソリッドステートディスクコントローラは、データを受信する時系列順にデータを1つまたは複数のブロックに順次書き込む。データを1つまたは複数のブロックに順次書き込む処理は、ソリッドステートディスクが、ブランクブロックを探索し、ブランクブロックがいっぱいになるまでデータをブランクブロックに書き込み、データのサイズがブロックの容量を超過すると、ソリッドステートディスクコントローラが、次のブランクブロックを探索し、書き込み処理を継続して行うことを意味する。フラッシュ変換レイヤは、論理アドレスとデータが書き込まれるページの実際のアドレスとの間の対応付けを確立および記憶する。コントローラ11が、データを読み込むように要求するために、データ読込み要求をソリッドステートディスクコントローラに送信する場合には、データ読込み要求は、論理アドレスを含む。ソリッドステートディスクコントローラは、論理アドレスおよび論理アドレスと実際のアドレスとの間の対応付けに従ってデータを読み込み、データをコントローラ11に送信する。
【００３３】
ソリッドステートディスク内のブロック、ページ、および実際のアドレスは、コントローラに対しては不可視である。したがって、コントローラは、ソリッドステートディスク内のブロックおよびページに直接アクセスすることはできない。システムガベージコレクションを行うために、システムコントローラは、指定のサイズに従ってソリッドステートディスクのストレージ領域をいくつかのセグメントに分割する。セグメントは、システムガベージコレクションの基本単位である。各セグメントは複数の論理アドレスの集合であり、論理アドレスは連続している。例えば、指定のサイズが1024KBであるとする。セグメントに対応する論理アドレス範囲は0KBから1023KBであり、別のセグメントに対応する論理アドレス範囲は1024KBから2047KBであり、さらに別のセグメントに対応する論理アドレス範囲は2048KBから3071KBであり、以下同様である。
【００３４】
データをセグメントに書き込んでいるときには、データは、セクタ単位で書き込まれ得る。例えば、セクタが520バイトを含むとする。520バイトのうちの512バイトは、データであり、他の8バイトは、512バイトのデータについてのデータ完全性フィールド(英語表記:data integrity field、DIF)である。すなわち、毎回書き込まれるデータは、512バイトの整数倍である必要がある。データのサイズが512バイトの整数倍でない場合には、データをゼロでパディングしてもよい。同様に、データをセグメントから読み込んでいるときには、データはまた、セクタ単位で読み込まれる。加えて、データがセグメントに書き込まれた後に、データの妥当性を記録する必要がある。データの妥当性は、データが変更されたかどうかに従って決定される。データがはじめて書き込まれた場合には、データは、有効であると記録され得る(有効データと称する)。データが変更された場合には、変更前のデータは、無効であると記録される(無効データと称する)。特に、データの妥当性は、ビットマップを使用して記録され得る。例えば、ビットマップの各「ビット」が1KBのサイズにおけるデータの論理アドレスに対応しているとする。「ビット」が1である場合には、論理アドレスにおいて記憶されているデータが有効であることを示している。「ビット」が0である場合には、論理アドレスにおいて記憶されているデータが無効であることを示している。
【００３５】
システムガベージコレクションは、コントローラがセグメント単位でガベージコレクションを行うことを意味する。コントローラは、ビットマップに従ってセグメント内の有効データの論理アドレスを取得し、有効データの論理アドレスをソリッドステートディスクに送信する。加えて、コントローラは、新規論理アドレスを有効データに割り振り、新規論理アドレスをソリッドステートディスクに送信する。ソリッドステートディスクは、有効データを旧論理アドレスから読み込み、有効データを新規論理アドレスに書き込む。その後、コントローラは、アンマップ(英語表記:unmap)コマンドをソリッドステートディスクに送信する。アンマップコマンドは、システムガベージコレクションが行われることになるセグメントの論理アドレス範囲を含む。アンマップコマンドを受信した後に、ソリッドステートディスクは、論理アドレス範囲内の論理アドレスと実際のアドレスとの間の、フラッシュ変換レイヤに記憶されている、対応付けを削除する。ソリッドステートディスクは、有効データを含んでいないブロックとして、実際のアドレスに対応するブロックをさらに識別してもよい。
【００３６】
システムガベージコレクションは、ソリッドステートディスクにおけるガベージコレクションとは異なる。ソリッドステートディスクは、コントローラと協調することなく、ソリッドステートディスクにおけるガベージコレクションを完遂する。ソリッドステートディスクコントローラは、各ブロック内の有効データをブランクブロックにまずコピーし、その後、元のブロックを消去する。加えて、一般的に、システムガベージコレクションのトリガ条件は、ストレージシステム内の空きセグメントの数量が不十分(例えば、閾値未満)であることであり、ソリッドステートディスクにおけるガベージコレクションのトリガ条件は、ソリッドステートディスク内のブランクブロックの数量が不十分であることである。
【００３７】
セグメントは、それぞれ、空き状態、書込み状態、フル状態、および不良状態という、4つの状態を一般的に有する。空き状態セグメントは、コンテンツがないセグメントである。書込み状態のセグメントは、データが書き込まれてはいるがいっぱいにはなっていないセグメントである。フル状態セグメントは、すべての領域がいっぱいになっているセグメントである。書込み状態のセグメントおよびフル状態セグメントは、消去後には空き状態セグメントになり得る。不良状態セグメントは、使用することができない不良セグメントである。
【００３８】
図3を参照して、実施形態において提供したデータ書込み方法を以下に説明する。方法は、図1に示した適用シナリオに適用され、図1に示したコントローラ11またはコントローラ22によって行われ得る。例えば、方法は、以下のステップを含む。
【００３９】
S301. コントローラ11が、ホストのデータを受信し、データをコントローラ11内のメモリ111に書き込む。
【００４０】
特に、プロセッサ112は、インターフェースカード110を使用してホストのデータを受信し、データをメモリ111に書き込み得る。一般的に、データは、データ書込み命令に追加され、コントローラ11に送信される。
【００４１】
S302. メモリ111内のデータのサイズがプリセット閾値に達すると、コントローラ11が、書込み状態のセグメントを探索する。メモリ111の容量が限られているため、メモリ111に記憶されているデータがプリセット閾値に達すると、メモリ111内のデータをソリッドステートディスク44に書き込む必要がある。
【００４２】
特に、コントローラ11は、書込み状態のセグメントが存在しているかどうかを決定するために探索する。例えば、論理アドレス範囲が0KBから1023KBであるセグメントに関して、データが0KBから100KBの論理アドレスに書き込まれているが、データが101KBから1023KBの論理アドレスにまだ書き込まれていないとする。この場合、コントローラ11は、101KBから始まる論理アドレスをデータに割り振り得る。データのサイズが2KBである場合には、コントローラ11によってデータに割り振られた開始論理アドレスは101KBであり、論理アドレスの長さは2KBである。
【００４３】
データが書き込まれてはいるがいっぱいにはなっていないセグメントが現時点で存在しない場合には、ステップS303を行う。
【００４４】
S303. コントローラ11が、空きセグメントを探索し、空きセグメントからデータに論理アドレスを割り振り、割り振られている論理アドレスをソリッドステートディスク44に送信する。例えば、論理アドレス範囲が1024KBから2047KBであるセグメントが空きセグメントであるとする。コントローラ11は、1024KBから始まる論理アドレスをデータに割り振り得る。データのサイズが2KBである場合には、コントローラ11によってデータに割り振られた論理アドレスは、1024KBから1026KBである。
【００４５】
S304. コントローラ11が、データおよび割り振られている論理アドレスをソリッドステートディスク44に送信する。
【００４６】
S305. ソリッドステートディスク44が、データを1つまたは複数のブロックに順次書き込む。前記ブロックにおいてデータが記憶されているアドレスは、実際のアドレスである。データをブロックに書き込んだ後に、ソリッドステートディスク44は、フラッシュ変換レイヤに、割り振られている論理アドレスと実際のアドレスとの間の対応付けを記憶する。
【００４７】
セグメントがコントローラによって割り振られた後に、セグメントとコントローラとの間の帰属関係を決定する。例えば、コントローラ11が、論理アドレス範囲が1024KBから2047KBである空きセグメントを選択し、データをセグメントに書き込むとする。この場合、セグメントは、コントローラ11によって書き込まれるデータのみを受信することはできるが、コントローラ22によって書き込まれるデータを受信することはできない。加えて、空きセグメントがコントローラ11によって割り振られる場合には、コントローラ11は、識別子を空きセグメントに割り振り得る。識別子は、割り振られたセグメントを一意に識別するために使用される。しかしながら、データをブロックに書き込む際には、ソリッドステートディスクコントローラは、そこからデータがやってくる特定のコントローラを識別しておらず、データを受信する時系列順にデータをブロックに順次書き込むだけである。例えば、コントローラ11が、ソリッドステートディスク44に、サイズが2KBであり論理アドレスが1024KBから1026KBであるデータを送信するとする。ソリッドステートディスクコントローラは、データをブランクブロックに書き込む。ブロックの容量が1MBであると仮定すると、ブロックは、データを記憶するために1022KBのストレージ領域をまだ有している。この場合、コントローラ22も、データ書込み要求をソリッドステートディスク44に送信し、データ書込み要求は、3KBのサイズにデータを含み、データの論理アドレスが2048KBから2051KBであり、データに対応するセグメントは、論理アドレス範囲が2048KBから3071KBであるセグメントであり、セグメントは、コントローラ22に属し(コントローラ22によって割り振られ)、ソリッドステートディスクコントローラも、データをブロックに書き込む。この場合、ブロックは、データを記憶するために1019KBのストレージ領域をまだ有している。別のコントローラがデータ書込み要求をソリッドステートディスク44にさらに送信した場合には、ソリッドステートディスクコントローラは、別のコントローラのデータ(すなわち、別のセグメント内のデータ)をブロックに継続して書き込む。あるいは、ソリッドステートディスクコントローラは、ブロックに、別のセグメントのものであるとともにコントローラ11によって送信されたデータを書き込んでもよい(最終セグメントがいっぱいである場合)。したがって、1つのブロックに記憶されているデータは、異なるセグメントに属し得る。
【００４８】
セグメントの識別子は、数字、文字、もしくはセグメントを一意に識別するために使用される別のシンボルであってもよい、または、数字、文字、もしくは別のシンボルのうちの2つ以上の任意の組合せであってもよい。コントローラがセグメントの識別子を割り振っていない場合には、コントローラは、セグメントの論理アドレス範囲を使用して各セグメントを識別してもよい。加えて、識別子は、シーケンス番号であってもよい。識別子を割り振った後に、コントローラ11は、識別子とセグメントの論理アドレス範囲との間の対応付けを記憶する。識別子をセグメントに割り振るプロセスを以降において詳細に説明する。
【００４９】
コントローラが識別子をセグメントに割り振るプロセスを以下に説明する。
【００５０】
コントローラは、ある期間に従ってセグメントに識別子(セグメント識別子と称する)を割り振る。いくつかの適用シナリオにおいては、ストレージシステム内の各コントローラ(例えば、コントローラ11およびコントローラ22)は、識別子割り振り機能を有する。いくつか他の適用シナリオにおいては、ストレージシステム内の1つのコントローラのみが、識別子割り振り機能を有する。この場合、識別子割り振り機能を有していないコントローラは、セグメント識別子申請要求を、機能を有するコントローラに送信して識別子を取得してもよい。
【００５１】
例1: コントローラ11およびコントローラ22の双方が識別子割り振り機能を有する。コントローラ11が空きセグメントを割り振る場合には、コントローラ11は、識別子をセグメントに割り振る。同様に、コントローラ22が別の空きセグメントを割り振る場合には、コントローラ22は、識別子を別の空きセグメントに割り振る。識別子が同一の期間内に割り振られたセグメントは、同一のセグメントグループに属する。同一の期間の終了時点は、任意のコントローラによって割り振られた識別子の総数がプリセット閾値に達した瞬間である。例えば、プリセット閾値が100であるとする。コントローラ11によって割り振られた識別子の総数が100に達すると、コントローラ11は、通知メッセージをコントローラ22に送信して、コントローラ22に、現在の期間が終了したことを通知し得る。したがって、(期間の開始点が、コントローラ11またはコントローラ22が第1番目の識別子を割り振った瞬間であり、終点が、コントローラ11が第100番目の識別子を割り振った瞬間である)前記期間内において、コントローラ11が識別子を割り振ったセグメントとコントローラ22が識別子を割り振ったセグメントとは、同一のグループ(セグメントグループと称する)に属する。コントローラ11またはコントローラ22は、グループ識別子をグループに割り振り、グループ識別子を互いに通知する。コントローラ11は、グループ識別子とグループ内にあるとともにコントローラ11によって管理されている各セグメントの識別子との間の対応付けを記憶する。コントローラ22は、グループ識別子とグループ内にあるとともにコントローラ22によって管理されている各セグメントの識別子との間の対応付けを記憶する。
【００５２】
例2: コントローラ11のみが識別子割り振り機能を有する。この場合、コントローラ22が空きセグメントを割り振る場合には、コントローラ22は、要求メッセージをコントローラ11に送信して、コントローラ11に識別子をセグメントに割り振るように要求する。この場合、同一の期間の終了時点は、識別子割り振り機能を有するコントローラによって割り振られた識別子の総数がプリセット閾値に達した瞬間である。例えば、プリセット閾値が100であるとする。コントローラ11によって第1番目の識別子を割り振ってからコントローラ11によって第100番目の識別子を割り振るまでのある期間内において、コントローラ11が識別子を割り振るセグメントは、同一のグループに属する。グループ内のセグメントは、コントローラ11によって管理されるセグメントを含み、コントローラ22によって管理されるセグメントも含むが、セグメントの識別子はすべて、コントローラ11によって割り振られる。その後、コントローラ11は、グループ識別子をグループに割り振り、グループ識別子をコントローラ22に通知する。コントローラ11は、グループ識別子とグループ内にあるとともにコントローラ11によって管理されている各セグメントの識別子との間の対応付けを記憶する。コントローラ22は、グループ識別子とグループ内にあるとともにコントローラ22によって管理されている各セグメントの識別子との間の対応付けを記憶する。
【００５３】
例1および例2の双方においては、グループ識別子が割り振られるとともに、各コントローラがグループ識別子とセグメントの識別子との間の対応付けを記録する。セグメントの識別子が割り振られておらず、各セグメントがセグメントの論理アドレス範囲を使用して識別されている場合には、コントローラはまた、グループ識別子を割り振り、グループ識別子とセグメントの論理アドレス範囲との間の対応付けを記録する。シーケンス番号を使用して特定のルールに従ってセグメントが識別されている場合には、グループ識別子は不要である。この場合、同一のグループに属するセグメントを、シーケンス番号のルールを使用して決定してもよい。
【００５４】
例えば、例3では、コントローラ11およびコントローラ22の双方が、シーケンス番号割り振り機能を有し、コントローラ11とコントローラ22とが、事前に各グループの開始シーケンス番号について合意し得る。例えば、第1のグループの開始シーケンス番号が1であり、第2のグループの開始シーケンス番号が101であり、第3のグループの開始シーケンス番号が201であり、以下同様である。コントローラ11によって割り振られた開始シーケンス番号は、コントローラ22によって割り振られた開始シーケンス番号と同一である。各コントローラは、開始シーケンス番号から始まるシーケンス番号をセグメントに連続的に割り振る。各シーケンス番号は、最新のシーケンス番号の値を1ずつ増加することによって得られる値に等しい。各グループについては、いずれかのコントローラによって割り振られたシーケンス番号の総数がプリセット閾値に達すると、前記コントローラの双方は、次のグループの開始シーケンス番号から始まる割り振りを行う。セグメントの識別子がシーケンス番号である状況以外、例3における、内容は、例1におけるものと同様である。その詳細をここで再び説明することはしない。
【００５５】
例4: コントローラ11のみが識別子割り振り機能を有し、識別子がシーケンス番号である。コントローラ11がシーケンス番号割り振り機能を有している例を使用する。コントローラ11は、各グループの開始シーケンス番号を事前に設定し、開始シーケンス番号から始まるシーケンス番号をコントローラ11のセグメントおよびコントローラ22のセグメントに連続的に割り振る。各シーケンス番号は、最新のシーケンス番号の値を1ずつ増加することによって得られる値に等しい。コントローラ11によって割り振られたシーケンス番号の総数がプリセット閾値に達すると、次のグループの開始シーケンス番号から始まる割り振りを行う。特に、シーケンス番号をコントローラ22のセグメントに割り振る必要がある場合には、コントローラ22は、要求メッセージをコントローラ11に送信し、コントローラ11は、要求メッセージに従ってシーケンス番号を割り振り、シーケンス番号をコントローラ22に送信する。例4と例3との間の違いは、例3では、コントローラ11およびコントローラ22の双方がシーケンス番号をセグメントに割り振り得るため、シーケンス番号は常にシーケンシャルであるということにはならず同一となることさえあり得るが、例4では、すべてのシーケンス番号がコントローラ11によって割り振られているため、シーケンス番号はシーケンシャルになり同一とはならない点にある。セグメントの識別子がシーケンス番号である状況以外、例4における、内容は、例2におけるものと同様である。その詳細をここで再び説明することはしない。
【００５６】
ソリッドステートディスク内の1つのブロックに記憶されているデータが異なるセグメントに属していることは前述の説明から理解できよう。ブロックに記憶されているデータが、それぞれ、シーケンス番号1のセグメント、シーケンス番号2のセグメント、シーケンス番号3のセグメントに属していると仮定する。コントローラがガベージコレクションをシーケンス番号1のセグメントおよびシーケンス番号2のセグメントに対して行う場合には、ソリッドステートディスクは、別のセグメントに、2つのセグメントに対応する有効データをコピーする。しかしながら、シーケンス番号3のセグメント内のデータは、ブロックに留保されたままである。したがって、ソリッドステートディスクにおいてガベージコレクションを行う場合には、ソリッドステートディスクは、有効データをブロックから読み込み、有効データを別のブロックにコピーする必要がさらにある。その結果として、ライトアンプリフィケーションが、ソリッドステートディスクにおいて生じる。
【００５７】
ソリッドステートディスクにおけるライトアンプリフィケーションの回数を低減するために、本発明の本実施形態においては、システムガベージコレクションを行っている際には、ガベージコレクションを、上述したセグメントグループ単位でセグメントに対して行う。セグメントグループ内のセグメントが同一の期間内に割り振られるため、セグメント内のデータが同一の期間内にソリッドステートディスクに書き込まれる。さらに、データを書き込む場合には、ソリッドステートディスクは、データを受信する時系列順にデータを1つまたは複数のブロックに順次書き込む。したがって、システムガベージコレクションが同一の期間内に割り振られたセグメントに対して行われた後に、セグメントに対応するブロック内のすべての有効データは別のブロックにコピーされ、セグメントに対応するブロック内のすべてのデータは無効データとなる。ソリッドステートディスクが内部ガベージコレクションを行う際に、有効データを、システムガベージコレクションが行われるセグメントに対応するブロックに関して再びコピーする必要はない。したがって、ソリッドステートディスクにおけるライトアンプリフィケーションの回数が低減される。
【００５８】
実施形態において提供したシステムガベージコレクション方法を以下に説明する。
【００５９】
本発明の実施形態は、図1に示したストレージシステムに適用されるシステムガベージコレクション方法を提供している。ストレージシステムは、複数のセグメントを含む。一部のセグメントは、コントローラ11に属し、一部のセグメントは、コントローラ22に属する。ストレージシステムに含まれる複数のセグメントは、いくつかのセグメントグループに分類され得る。各セグメントグループ内のセグメントは、同一の期間内に割り振られる。各セグメントグループは、一意なグループ識別子を有する。本実施形態において提供したシステムガベージコレクションは、セグメントグループ単位で行われる。例えば、方法は、以下のステップを含み得る。
【００６０】
401. コントローラ11が、各セグメントグループに含まれる無効データのサイズに関する統計を収集する。
【００６１】
空きセグメントの数量がプリセット閾値未満である場合には、コントローラ11は、システムガベージコレクション操作をトリガし得る。システムガベージコレクションを行う前に、コントローラ11は、各セグメントグループに含まれる無効データのサイズに関する統計を収集し得る。セグメントグループに含まれるセグメントは、コントローラ11によって管理されるセグメントを含み、コントローラ22によって管理されるセグメントも含む(2つのコントローラをここでは一例として使用しているが、別のコントローラが本実施形態にさらに含まれていてもよい)。実施形態は、次の通りである。コントローラ11は、コントローラ11によって管理されている各グループにおけるセグメント内の無効データのサイズのみに関する統計を収集し、システムガベージコレクションを現時点で行うべきセグメントグループとして、最大量の無効データを含むセグメントグループを使用する。別の実施形態は、次の通りである。コントローラ11は、コントローラ11によって管理されている各グループにおけるセグメント内の無効データのサイズに関する統計を収集する必要があるだけでなく、別のコントローラによって管理されている各グループにおけるセグメント内の無効データのサイズを取得する必要もある。特に、コントローラ11は、クエリ命令を別のコントローラ(例えば、コントローラ22)に送信する必要があり得る。クエリ命令は、グループ識別子を含む。コントローラ22は、グループ識別子に従って、セグメントグループに含まれるセグメント内の無効データのサイズを問い合わせ、サイズをコントローラ11にフィードバックする。
【００６２】
加えて、データをセグメントに書き込んだ後に、ビットマップがデータの妥当性を記録するために使用され得ることは前述の説明から理解できよう。したがって、セグメントに含まれる無効データのサイズに関する統計も、ビットマップに従って収集され得る。
【００６３】
402. コントローラ11が、セグメントグループすべてに含まれる無効データのサイズを比較して、最大量の無効データを含むセグメントグループを決定する。
【００６４】
コントローラ11は、コントローラ11がそれに関して統計を収集したサイズに従って、または、コントローラ11がそれに関して統計を収集したサイズおよびコントローラ22がそれに関して統計を収集したサイズに従って、最大サイズの無効データを含むセグメントグループを決定し、まとめる予定であるセグメントグループとして、最大サイズの無効データを含むセグメントグループを使用し得る。
【００６５】
403. コントローラ11が、システムガベージコレクションを決定したセグメントグループに含まれるセグメントに対して行う。
【００６６】
特に、ステップ403においては、コントローラ11は、システムガベージコレクションを決定したセグメントグループに含まれるセグメントに対して行うようにソリッドステートディスク44に命令する。本明細書において「命令」とは、コントローラ11が、ソリッドステートディスク44が要求およびコマンドを実行するために、データ読込み要求、データ書込み要求、およびアンマップコマンドをソリッドステートディスク44に送信することを意味する。ソリッドステートディスク44は、システムガベージコレクション操作を積極的に行っていないが、コントローラ11によって送信された要求およびコマンドを受動的に実行していることが理解されよう。コントローラ11がシステムガベージコレクションを決定したセグメントグループに含まれるセグメントに対して行うようにソリッドステートディスク44に命令することは、次のステップを特に含む。(1)コントローラ11が、データ読込み要求をソリッドステートディスク44に送信する。データ読込み要求は、ソース論理アドレスを含む。ソース論理アドレスは、セグメント内の有効データの論理アドレスである。データ読込み要求を受信した後に、ソリッドステートディスク44は、有効データをソース論理アドレスに対応する実際のアドレスから読み込み、有効データをソリッドステートディスクコントローラ内のメモリに書き込む。(2)コントローラ11が、データ書込み要求をソリッドステートディスク44に送信する。データ書込み要求は、宛先論理アドレスを含む。宛先論理アドレスは、コントローラ11によって有効データに再割り振りされた論理アドレスである。加えて、宛先論理アドレスおよびソース論理アドレスは、異なるセグメントに対応している。ソース論理アドレスに対応するセグメントは、まとめる予定であるセグメントである。宛先論理アドレスに対応するセグメントは、空きセグメントまたは書込み状態のセグメントである。データ書込み要求を受信した後に、ソリッドステートディスク44は、有効データをソリッドステートディスクコントローラ内のメモリから読み込み、有効データを宛先論理アドレスに対応する実際のアドレスに書き込む。(3)コントローラ11が、アンマップコマンドをソリッドステートディスク44に送信する。アンマップコマンドは、まとめる予定であるセグメントの論理アドレス範囲を含む。アンマップコマンドを受信した後に、ソリッドステートディスク44は、論理アドレス範囲内の各論理アドレスと実際のアドレスとの間の対応付けをフラッシュ変換レイヤから削除する。
【００６７】
404. コントローラ11が、セグメントグループのグループ識別子をコントローラ22に送信し、コントローラ22が、システムガベージコレクションをセグメントグループに含まれるセグメントに対して行う。
【００６８】
コントローラ22は、グループ識別子およびグループ識別子とセグメントの識別子との間の対応付けに従ってまとめる予定であるセグメントを決定し、システムガベージコレクションをセグメントに対して行う。具体的なプロセスは403と同様である。その詳細をここで再び説明することはしない。
【００６９】
コントローラ11がステップ403においてシステムガベージコレクションを行うセグメントとコントローラ22がステップ404においてシステムガベージコレクションを行うセグメントとは、同一の期間内に割り振られる。同一の期間は、前記期間内に第1のコントローラ11または第2のコントローラ22によって割り振られたセグメントの数量が第1のプリセット閾値に達すると終了する。識別子が各セグメントに割り振られているとともに各コントローラが識別子割り振り機能を有している場合には、ここでは、同一の期間は、例1において説明した期間と一致する。
【００７０】
加えて、同一の期間は、前記期間内に第1のコントローラおよび第2のコントローラによって割り振られたセグメントの数量の合計が第2のプリセット閾値に達すると終了し得る。第2のプリセット閾値は、第1のプリセット閾値と同一であってもまたは異なっていてもよい。この場合、第1のコントローラまたは第2のコントローラは、互いが割り振ったセグメントの数量を問い合わせるためにメッセージを互いに送信して、前記期間内に割り振られたセグメントの数量の合計を取得する必要がある。識別子が各セグメントに割り振られているとともに1つのコントローラのみが識別子割り振り機能を有している場合には、ここに記載の同一の期間も、識別子割り振り機能を有するコントローラによって割り振られた識別子の数量が第2のプリセット閾値に達した場合に終了し得る。
【００７１】
コントローラ11が各セグメントグループに含まれる無効データのサイズに関する統計を収集する実施形態に加えて、本実施形態は、コントローラがストレージシステム内で指定されているとともに各セグメントグループに含まれる無効データのサイズに関する統計を収集するように特に構成されている実施形態をさらに有する。例えば、指定されたコントローラは、クエリ命令をコントローラ11およびコントローラ22に別々に送信して、コントローラ11によって管理されている各セグメントグループ内のセグメントに含まれる無効データのサイズおよびコントローラ22によって管理されている各セグメントグループ内のセグメントに含まれる無効データのサイズを取得し、クエリ結果に従って、最大量の無効データを含むセグメントグループを決定し、セグメントグループのグループ識別子をコントローラ11およびコントローラ22に別々に送信する。コントローラ11およびコントローラ22は、グループ識別子とセグメントの識別子との間の対応付けに従ってまとめる予定であるセグメントを別々に決定し、システムガベージコレクションをまとめる予定のセグメントに対して行う。
【００７２】
加えて、本実施形態においては、セグメントグループすべてに含まれる無効データのサイズを比較しなくてもよいが、各セグメントグループに含まれる無効データのサイズは監視され得る。セグメントグループに含まれる無効データのサイズがプリセット閾値に達すると、ガベージコレクション操作を、無効データのサイズがプリセット閾値に達しているセグメントグループに対して行う。
【００７３】
あるいは、コントローラは、セグメントグループ内の無効データのサイズを考慮していないセグメントグループすべてに対してシステムガベージコレクションを連続的に行ってもよい。
【００７４】
あるいは、システムガベージコレクションを最後に各セグメントグループ対して行った時間に従って、コントローラは、システムガベージコレクションを現時点で行うべきオブジェクトとして、最長時間の間、システムガベージコレクションが行われてこなかったセグメントグループを選択してもよい。
【００７５】
ステップ404においては、コントローラ11がシステムガベージコレクションを行う際に、コントローラ22は、決定したセグメントグループ内の、コントローラ22によって割り振られた、セグメントに対してシステムガベージコレクションを行う。しかしながら、コントローラ11およびコントローラ22の双方が、システムガベージコレクションを次のセグメントグループに対して有効にする前にシステムガベージコレクションを決定したセグメントグループに対して完遂するのであれば、コントローラ11およびコントローラ22は、無条件に同時にシステムガベージコレクションを行わない。実際の適用においては、コントローラ11およびコントローラ22は、セグメントグループ単位でシステムガベージコレクションを行う。あるセグメントグループに含まれるすべてのセグメントに対するシステムガベージコレクションが完遂された後に、システムガベージコレクションが次のセグメントグループに対して有効にされる。ここで、セグメントグループに含まれるすべてのセグメントに対するシステムガベージコレクションを完遂するということは、コントローラ11が、セグメントグループ内にあるとともにコントローラ11によって管理されているセグメントに対するシステムガベージコレクションを完遂し、コントローラ22も、セグメントグループ内にあるとともにコントローラ22によって管理されているセグメントに対するシステムガベージコレクションを完遂することを意味する。例えば、最大量の無効データを含むセグメントグループに対するシステムガベージコレクションを完遂すると、コントローラ11およびコントローラ22は、最大量の無効データを含む次のセグメントグループを探索し、システムガベージコレクションを有効にする。
【００７６】
本発明の各態様または各態様の可能な実施形態をシステム、方法、またはコンピュータプログラム製品として特に実施してもよいことを当業者は理解されよう。したがって、本発明の各態様または各態様の可能な実施形態は、本明細書では「回路」、「モジュール」、または「システム」と統一的に称している、ハードウェアのみの実施形態、ソフトウェアのみの実施形態(ファームウェア、常駐ソフトウェアなどを含む)、またはソフトウェアとハードウェアとの組合せを有する実施形態の形式を使用し得る。加えて、本発明の各態様または各態様の可能な実施形態は、コンピュータプログラム製品の形式をとってもよく、コンピュータプログラム製品は、コンピュータ可読媒体に記憶されているコンピュータ可読プログラムコードである。
【００７７】
コンピュータ可読媒体は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(EPROM)、もしくは光ディスクなどといった、電気、磁気、光学、電磁気、赤外線、もしくは半導体のシステム、デバイス、もしくは装置、または任意の適切なその組合せを含むがこれらに限定されない。
【００７８】
コンピュータ内のプロセッサは、フローチャート内の各ステップまたはステップの組合せにおいて規定した機能およびアクションをプロセッサが行うことができるように、コンピュータ可読媒体に記憶されているコンピュータ可読プログラムコードを読み込む。
【００７９】
コンピュータ可読プログラムコードのすべてをユーザのコンピュータ上で行ってもよいし、または、一部をスタンドアローンソフトウェアパッケージとしてユーザのコンピュータ上で行ってもよいし、または、一部をユーザのコンピュータ上で行う一方で一部をリモートコンピュータ上で行ってもよいし、または、すべてのコードをリモートコンピュータまたはサーバ上で行ってもよい。いくつかの代替的な実施ソリューションにおいては、フローチャート内の各ステップまたはブロック図中の各ブロックにおいて規定した機能が図示した順に発生しなくてもよいことも留意すべきである。例えば、関連する機能に依存している、図中の2つの連続したステップまたはブロックを実質的に同時に実際は行ってもよいし、または、これらのブロックを逆順で時には行ってもよい。
【００８０】
本明細書に開示の実施形態において説明した例を組み合わせて、ユニットおよびアルゴリズムのステップを電子ハードウェアまたはコンピュータソフトウェアと電子ハードウェアとの組合せによって実施してもよいことに当業者は気付くであろう。機能をハードウェアによって行うかまたはソフトウェアによって行うかは、技術的ソリューションの具体的な適用および設計上の制約条件に依存する。当業者は、異なる方法を使用して特定の適用の各々に関して説明した機能を実施してもよいが、実施形態が本発明の範囲を逸脱するものであるとみなすべきではない。
【００８１】
前述の説明は、本発明の特定の実施形態にすぎず、本発明の保護範囲を限定することを意図していない。本発明に開示した技術的範囲内で当業者が容易に想到する任意の変形または置換は、本発明の保護範囲に含まれるものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
【符号の説明】
【００８２】
11  コントローラ
12  コントローラ
44  ソリッドステートディスク
110  インターフェースカード
111  メモリ
112  プロセッサ
113  インターフェースカード
【図１】
0006455900.tif 000002
【図２】
0006455900.tif 000003
【図３】
0006455900.tif 000004
【図４】
0006455900.tif 000005