(57)【要約】【課題】  連携階層化管理のための方法、システムおよびサブシステムコントローラならびに大容量記憶装置を提供する。【解決手段】  どのデータが階層間で移動させられる候補であるかを識別する情報を提供する、大容量記憶デバイスのうちの少なくともいくつかに応答して、大容量記憶デバイスの階層間でデータを動的に移動させるための装置および方法が記載される。【選択図】図１
2015038729.tif 000002
【特許請求の範囲】
【請求項１】
どのデータが階層間で移動させられる候補であるかを識別する情報を提供する、大容量記憶デバイスのうちの少なくともいくつかに応答して、前記大容量記憶デバイスの前記階層間でデータを動的に移動させるための、方法。
【請求項２】
前記階層間でデータを動的に移動させることは、サブシステムコントローラによって実施される、請求項１に記載の方法。
【請求項３】
前記大容量記憶デバイスはそれぞれ、前記サブシステムコントローラとは別であるコントローラを含む、請求項１に記載の方法。
【請求項４】
どのデータが前記階層間で移動させられる候補であるかを識別する情報を提供するように、前記大容量記憶デバイスに要求する、前記サブシステムコントローラをさらに備える、請求項２に記載の方法。
【請求項５】
前記要求に応答して、前記情報を提供する前記大容量記憶デバイスをさらに備え、前記情報は、デバイスデータセグメントと、関連したリードアクセス、ライトアクセス、シーケンシャルリード、およびシーケンシャルライトのうちの少なくとも１つとを含む、請求項４に記載の方法。
【請求項６】
前記情報を提供するように前記大容量記憶デバイスを構成する、前記サブシステムコントローラをさらに備える、請求項４に記載の方法。
【請求項７】
前記階層間で前記データを動的に移動させることとは別の使用のために、前記情報を収集する、前記大容量記憶デバイスをさらに備える、請求項１に記載の方法。
【請求項８】
それら自体の間で前記データを移動させ、前記データが移動させられたことを、前記サブシステムコントローラに通知する、前記大容量記憶デバイスをさらに備える、請求項１に記載の方法。
【請求項９】
前記階層は、分散ファイルシステムの一部である、請求項１に記載の方法。
【請求項１０】
システムであって、
サブシステムコントローラと、
前記サブシステムコントローラに連結される、大容量記憶デバイスの階層であって、それぞれは、前記階層間でデータを移動させるために使用される前記サブシステムコントローラアクセス活動情報に出力するように構成される、階層と、
を備える、システム。
【請求項１１】
前記サブシステムコントローラおよび階層は、それぞれのインターフェースによって一緒に連結される、請求項１０に記載のシステム。
【請求項１２】
前記階層は、性能、コスト、および容量のうちの少なくとも１つが異なる、請求項１０に記載のシステム。
【請求項１３】
前記アクセス活動情報は、デバイスデータセグメントと、関連したリードアクセス、ライトアクセス、シーケンシャルリード、およびシーケンシャルライトのうちの少なくとも１つとを含む、請求項１０に記載のシステム。
【請求項１４】
前記大容量記憶デバイスはそれぞれ、前記サブシステムコントローラとは別のコントローラを含む、請求項１０に記載のシステム。
【請求項１５】
前記サブシステムコントローラは、前記アクセス活動情報を要求するように構成される、請求項１０に記載のシステム。
【請求項１６】
前記大容量記憶デバイスは、それら自体の間で前記データを移動させ、前記データが移動させられたことを、前記サブシステムコントローラに通知するように構成される、請求項１０に記載のシステム。
【請求項１７】
前記サブシステムコントローラは、前記情報を提供するように前記大容量記憶デバイスを構成することが可能である、請求項１０に記載のシステム。
【請求項１８】
前記大容量記憶デバイスは、前記階層間で前記データを移動させることとは別の使用のために、前記情報を収集するように構成される、請求項１０に記載の方法。
【請求項１９】
前記階層は、分散ファイルシステムの一部である、請求項１０に記載のシステム。
【請求項２０】
大容量記憶デバイスの階層に電気的に連結可能であり、前記大容量記憶デバイスのうちの少なくともいくつかから受信されたアクセス活動情報に応答して、前記階層間でのデータの移動を決定するように操作的に構成される、記憶インターフェースを備える、サブシステムコントローラ。
【請求項２１】
前記サブシステムコントローラは、前記アクセス活動情報と併せて、データ移動を決定するために、少なくとも１つのポリシーを使用するように構成される、請求項２０に記載のサブシステムコントローラ。
【請求項２２】
前記アクセス活動情報は、前記サブシステムコントローラからの要求後に受信される、請求項２０に記載のサブシステムコントローラ。
【請求項２３】
前記要求は、周期またはイベント駆動型であり得る、請求項２２に記載のサブシステムコントローラ。
【請求項２４】
前記アクセス活動情報に対して、前記大容量記憶デバイスに構成情報を提供するようにさらに構成される、請求項２０に記載のサブシステムコントローラ。
【請求項２５】
大容量記憶デバイスであって、
大容量記憶メモリと、
前記大容量記憶メモリへのアクセスを制御するように連結され、ホストインターフェースを含む、コントローラであって、前記大容量記憶メモリに対してアクセス活動情報を収集し、要求への前記記憶インターフェース応答から前記アクセス活動情報を出力するように構成される、コントローラと、
を備える、大容量記憶デバイス。
【請求項２６】
前記コントローラは、サブシステムコントローラによって構成される、請求項２５に記載の大容量記憶デバイス。
【請求項２７】
前記コントローラに連結される、サブシステムコントローラをさらに備える、請求項２５に記載の大容量記憶デバイス。
【請求項２８】
前記サブシステムコントローラは、階層インターフェースを含む、請求項２５に記載の大容量記憶デバイス。
【請求項２９】
前記アクセス活動情報は、前記大容量記憶デバイスの外部に出力される、請求項２５に記載の大容量記憶デバイス。
【請求項３０】
別の大容量記憶デバイスと一緒に移動するようにさらに構成される、請求項２５に記載の大容量記憶デバイス。
【発明の詳細な説明】
【発明の概要】
【課題を解決するための手段】
【０００１】
どのデータが階層間で移動させられる候補であるかを識別する情報を提供する、大容量記憶デバイスのうちの少なくともいくつかに応答して、大容量記憶デバイスの階層間でデータを動的に移動させるための装置および方法が記載される。
【図面の簡単な説明】
【０００２】
【図１】第１の状態の第１の記憶サブシステムを示す。
【図２】第２の状態の第１の記憶サブシステムを示す。
【図３】第１の状態の第２の記憶サブシステムを示す。
【図４】第２の状態の第２の記憶サブシステムを示す。
【図５】第２の記憶サブシステムによって使用されるプロセスを示す。
【図６】第２の記憶サブシステムによって使用される別のプロセスを示す。
【図７】第２の記憶サブシステムによって使用される大容量記憶デバイスを示す。
【図８】第２の記憶サブシステムによって使用されるさらなるプロセスを示す。
【図９】第３の記憶サブシステムを示す。
【図１０】別の大容量記憶デバイスを示す。
【発明を実施するための形態】
【０００３】
ハードディスクドライブ（ＨＤＤ）、固体素子（ＳＳＤ）、およびハイブリッドディスクドライブ（Ｈｙｂｒｉｄ）等の大容量記憶デバイスが、記憶サブシステムに一緒に集約され得る。記憶サブシステムは、大容量記憶デバイスへのアクセスを制御するためのコントローラを含む。記憶サブシステムは、より良好なデータアクセス性能、データ保護を提供するために、またはデータ利用可能性を維持するために使用され得る。
【０００４】
階層化は、複数の種類の大容量記憶デバイスを含有するサブシステムの最適化において、重要な要素となった。かかる記憶サブシステムにおいて、大容量記憶デバイスは、階層を形成するために、例えば、同様の性能特性を有する種類によって一緒に分類される。階層化の一例は、記憶サブシステムに増加した性能を提供するために、最高性能の階層上で最もアクセスされたデータを維持する。より少なくアクセスされたデータは、より高い性能の階層上の空間を解放するために、より低い性能の階層上に保存される。
【０００５】
しかしながら、データアクセスパターンの動的性質および効果的な記憶管理を推定するためのタイムリーにユーザが消費可能な情報の不足は、最高性能の階層中のそのデータを維持することを困難にする。それを克服するために、階層化が、動作条件の変更に沿って性能を維持するように自動的に行われ得る。それにもかかわらず、記憶サブシステム中の全ての大容量記憶デバイスのデータアクセスパターンの一定した評価を維持することは、コントローラに対してかなりの負担になり得、記憶装置の非効率的な使用になり得る。
【０００６】
例示するために、図１の記憶サブシステム１００を参照されたい。サブシステム１００は、コントローラ１１０、第１の記憶階層１２０、および第２の記憶階層１３０を含む。第１および第２の記憶階層１２０、１３０は、個別のＳＳＤ１２５およびＨＤＤ１３５であってもよい。したがって、第１の記憶階層１２０は、第２の記憶階層１３０よりも速いランダムアクセス読み出し時間を有する。そのより速い時間を利用するために、コントローラ１１０は、アクセスパターンに基づき、階層間でデータを移動させる。
【０００７】
記憶サブシステム１００中のデータは、デバイスデータセグメント１２０ａによって例示される。示されるように、各ＳＳＤ１２５中に３つのデバイスデータセグメント、例えば、１２０ａ、１２０ｂ、１２０ｃがある。デバイスデータセグメント１２０ｃは、第１の記憶階層１２０中で最も混んでいないデバイスデータセグメントである。各ＨＤＤ１３５中には、６つのデバイスデータセグメントがある。デバイスデータセグメント１３０ａおよび１３０ｂは、第２の記憶階層１３０中で最も混んでいる。デバイスデータセグメント１３０ｃは、最も混んでいない。
【０００８】
コントローラ１１０は、性能を最適化するために、階層間のデータの移動を管理するタスクが課せられる。そのために、コントローラ１１０は、データアクセスを記録するために、サブシステムデータチャンクを使用する。このトラッキングのオーバーヘッドを低下させるために、サブシステムデータチャンクは、デバイスデータセグメントよりも大きいサイズである。この特定の実施例において、サブシステムデータチャンク１１０ａは、デバイスデータセグメント１２０ａ、１２０ｂ、１２０ｃを含む、デバイスデータセグメントグループ１２２に対応する。したがって、サブシステムデータチャンク１１０ａは、３つのデバイスデータセグメントのサイズである。サブシステムデータチャンク１１０ｂは、デバイスデータセグメントグループ１２４に対応する。サブシステムデータチャンク１１０ｃは、デバイスデータセグメント１３０ａを含む、デバイスデータセグメントグループ１３２に対応する。サブシステムデータチャンク１１０ｄは、デバイスデータセグメント１３０ｂ、１３０ｃを含む、デバイスデータセグメントグループ１３４に対応する。デバイスデータセグメントがアクセスされるときはいつでも、コントローラ１１０は、その対応するサブシステムデータチャンクに対するそのアクセスをカウントする。本実施例では、グループ１２２中のデバイスデータセグメントのいずれかへのアクセスは、サブシステムデータチャンク１１０ａに対するアクセスと見なされる。
【０００９】
すでに説明されたように、デバイスデータセグメント１２０ｃは、第１の記憶階層１２０の最も混んでいないデバイスデータセグメントである。次いで、コントローラ１１０がデータアクセスを追跡すると、それは、それぞれの対応するサブシステムデータチャンク１１０ａが、第１の記憶階層１２０に対して、最も混んでいないサブシステムデータチャンクであることを決定する。同様に、デバイスデータセグメント１３０ａおよび１３０ｂが第２の記憶階層１３０中で最も混んでいるデバイスデータセグメントであると、コントローラ１１０は、それぞれの対応するサブシステムデータチャンク１１０ｃおよび１１０ｄｃが、第２の記憶階層１３０に対して、最も混んでいるサブシステムデータチャンクであることを決定する。したがって、コントローラは、最も混んでいない、および最も混んでいるサブシステムデータチャンクを別の階層に移動させるように決定する。
【００１０】
記憶階層間のサブシステムデータチャンクの移動は、図２を参照することによって説明される。図中、サブシステムデータチャンク１１０ａに対応するデバイスデータセグメントグループ１２２（デバイスデータセグメント１２０ａ、１２０ｂ、１２０ｃを含む）は、サブシステムデータチャンク１１０ｃに対応するデバイスデータセグメントグループ１３２（デバイスデータセグメント１３０ａを含む）をすでに維持したＨＤＤ１３５に書き込まれる。同様に、サブシステムデータチャンク１１０ｂに対応するデバイスデータセグメントグループ１２４は、サブシステムデータチャンク１１０ｄに対応するデバイスデータセグメントグループ１３４（デバイスデータセグメント１３０ｂ、１３０ｃを含む）をすでに維持したＨＤＤ１３５に書き込まれる。サブシステムデータチャンク１１０ｃおよび１１０ｄは、デバイスデータセグメントグループ１２２および１２４のそれぞれをすでに記憶した位置に書き込まれる。
【００１１】
ここで、この階層化管理方式の非効率性が暴露される。デバイスデータセグメント１３０ｃが、デバイスデータセグメントグループ１３４の転送に伴うことに留意されたい。そのセグメントは、第２の記憶階層１３０中で最も混んでいないデバイスデータセグメントであった。ここで、そのデバイスデータセグメントは、より混んでいるデバイスデータセグメントに対して使用され得る貴重な記憶空間を使用して、第１の記憶階層１２０中にある。これは、この階層化管理方式によって行われるトレードオフが原因で生じた。システムレベルにおける各デバイスデータセグメントに対する全てのデータアクセス活動をトラッキングすることが、サブシステムコントローラ処理オーバーヘッドおよびメモリ要件に対してマイナス要素を有することを考慮されたい。加えて、下位階層記憶容量が増大するにつれて、アクセス活動のトラッキング専用のサブシステムメモリが増大するか、またはサブシステムデータチャンクサイズのトラッキングの精密さが損なわれる。結果として、サブシステムメモリおよび処理オーバーヘッドはしばしば、サブシステムコントローラが最適であり得るよりも大きいチャンク（デバイスデータセグメントよりも大きい）を使用することを決定づける。これは、最も混んでいないデバイスデータセグメントを最高性能の階層に移動させるような動作によって引き起こされる、性能向上の低下をもたらす。
【００１２】
この種の階層化管理方式の欠陥を克服するために、サブシステムを構成する大容量記憶デバイスが、サブシステムコントローラ処理オーバーヘッドおよびメモリ要件への影響を低減し、同時に階層化の全体的有効性を改善するために、階層化管理タスクに貢献するように使用される。大容量記憶デバイスデータセグメント活動レベルを監視し、大容量記憶デバイスにわたる移動に対する候補セグメントを識別するタスクを拡散すること（すなわち、それを連携させることによって）は、大容量記憶デバイスに比較的小規模の追加の責任を個々に負わせるが、コントローラタスクを集合的に大幅に減少させる。
【００１３】
これにより、階層化もまたより効果的になる。コントローラが、サブシステムデータチャンクのサイズと、デバイスデータセグメント活動レベルを監視するために消費されるコントローラ処理オーバーヘッドおよびメモリの量との間で妥協する一方で、連携階層化は、全ての大容量記憶デバイスが並行して作業を行っているため、非常に小さい容量単位で作業することができる。
【００１４】
階層化管理に貢献する大容量記憶デバイスの１つの考えられる態様は、それがコントローラに提供するデータの大部分が、それがすでに維持している可能性があるデータであることである。大容量記憶デバイスの最も小さくかつ最も単純なものでさえ、内部キャッシュを有することを考慮されたい。この内部キャッシュを管理するために、大容量記憶デバイスは、それが提供するアクセス活動を記録し、最も頻繁に要求されたセグメントをそのキャッシュ中で利用可能にする。これは、キャッシュの性能利益を最適化する。ＳＳＤは、メモリ耐久性を確実にするために、フラッシュセルのウェアレベリングおよびガベージコレクション等のデータ管理技術に対して、アクセス活動を監視する。
【００１５】
次いで、これらの大容量記憶デバイスは、このアクセス活動情報をコントローラに提供することができる。これは、コントローラが、高または低アクセス活動セグメントを示す、正確でタイムリーかつ総合的な情報を有することを可能にする。次いで、その情報を使用して、コントローラは、サブシステム性能を最適化することができる。したがって、それ自体の測定活動がほとんどないまま、サブシステムコントローラは、所与の構成から最良の性能を抽出することができる。大容量記憶デバイスは、それら自体の内部キャッシュまたは他の内部管理の監視と関連してすでにこの作業の大部分を行っている可能性があるため、連携階層管理が負う追加の責任は、比較的小規模である。
【００１６】
コントローラは、それが大容量記憶デバイスからどのアクセス活動情報を要求するかに応じて、各階層中の大容量記憶デバイスを構成し、次いで、その情報を後に要求する。各大容量記憶デバイスは好ましくは、シーケンシャルリードおよびライトを注記することを含む、その記憶空間の最も混んでいる、または最も混んでいないセグメント上でリード／ライト活動を記録する。どのセグメントが階層間で移動させられるべきかを決定するために、コントローラは、最も混んでいる、または最も混んでいないセグメントのリストを要求してもよい。例示するために、図３および示されたサブシステム３００への言及が行われる。ここで、コントローラ３１０は、どのデバイスデータセグメントが最も混んでおらず、閾値または他の基準を満たす可能性があるのか、第１の記憶階層３２０の大容量記憶デバイスから要求する。それに応答して、コントローラ３１０は、デバイスデータセグメント３２０ａ、３２０ｂに対するアクセス活動情報を受信する。コントローラ３１０は、どのデバイスデータセグメントが最も混んでいるのか、第２の記憶階層３３０の大容量記憶デバイスから要求する。それに応答して、コントローラ３１０は、デバイスデータセグメント３３０ａ、３３０ｂに対するアクセス活動情報を受信する。
【００１７】
次いで、コントローラ３１０は、目標階層がそれを受信することができ、それでもなお移動の目的を達成することができるかどうかに部分的に基づき、４つの識別されたデバイスデータセグメントが移動させられるべきかを決定する。図３で見られるように、第１および第２の記憶階層３２０、３３０は、両方が２つのデバイスデータセグメントを報告したため、データ移動に対応することができる。図４中、コントローラ３１０は、記憶階層間の識別されたデバイスデータセグメントの移動に進む。デバイスデータセグメント３２０ａおよび３３０ａに対する記憶位置がスワップされ、デバイスデータセグメント３２０ｂおよび３３０ｂに対する記憶位置がスワップされる。これに伴い、デバイスデータセグメント３３０ａおよび３３０ｂのアクセス性能が向上する。また、図１および２の階層化管理方式とは異なり、不当なデバイスデータセグメント移動が実施されない。結果は、より高い性能の階層に入れられることからの、あまりアクセスされていないデータの量の最小限化である。最も混んでいないデバイスデータセグメント３３０ｃは、第１の記憶階層３２０に移動させられなかったことに留意されたい。また、コントローラ３１０は、図１および２に示される１５個のサブシステムデータチャンクを管理するために使用されるコントローラ１１０よりも、４つのデバイスデータセグメント３２０ａ、３２０ｂ，３３０ａおよび３３０ｂを管理するために、より少ない処理およびメモリ資源を使用した。
【００１８】
しかしながら、上記の説明は、多くの実施例のうちの１つである。さらなる実施例が、以下の表１を参照することによって説明される。サブシステム中の各大容量記憶デバイスが表１に示されるアクセス活動情報を維持すると仮定する。第１のカラムは、ＬＢＡ範囲として、デバイスデータセグメントを示す。これらのＬＢＡ範囲は、何らかの方法で定義され得る。一方法は、サブシステムによるアクセスに対する平均転送長を使用することである。それにもかかわらず、セグメントサイズは、各階層および各大容量記憶デバイスに対して異なり得るが、それは、コントローラに対してより多くのオーバーヘッドをもたらすことになる。
【００１９】
各ＬＢＡ範囲に対して、関連したリード／ライト（アクセス）頻度値がある。これらの値は、閾値アクセス頻度を満たすことによって決定され得る。例えば、サブシステムコントローラは、アクセス頻度として、１５０ＩＯ／秒等の何らかの値をカウントするように、大容量記憶デバイスをプログラムしてもよい。または、大容量記憶デバイスは、それらが生じる際、各リードおよびライトカラムを単純にインクリメントすることができ、サブシステムコントローラは、アクセス頻度を決定するよう委ねられる。これは、アクセス活動情報の要求間の時間を決定するサブシステムコントローラによって行われ得る。または、サブシステムコントローラは、一定の間隔でアクセス活動情報の要求の時間を計ることができる。次いで、大容量記憶デバイスは、ある特定の閾値を満たしたアクセス活動情報のみを送信する。また、階層間でデータを移動させる最良の決定が、リード活動のみを考慮することによって決定されない場合があるため、場合によっては、リード活動に加えて情報が提供される。
【００２０】
さらに、大容量記憶デバイスは、コントローラが蓄積するには実用的ではない場合がある情報を提供することができる。例えば、表１のアクセス活動情報はまた、アクセスが順次的であるかどうかを示すカラムを有する。サブシステムコントローラは、シーケンシャルアクセスを正確に検出するのが非常に困難である。それにもかかわらず、シーケンシャルアクセスは、デバイスデータセグメントを降格または昇格するかどうかを考慮する際に、重要な情報であり得る。
【００２１】
【表１】
2015038729.tif 000003
【００２２】
サブシステムコントローラによるアクセス活動情報の使用は、サブシステムのプログラミングによって決定される。サブシステムは、例えば、各大容量記憶デバイスが、アクセス頻度のみ（例えば、１５０ＩＯ／秒）のような何らかの閾値を満たすデバイスデータセグメントに対するアクセス活動情報、または大容量記憶デバイスの記憶容量のある特定の割合と共に減少するデバイスデータセグメントに対するアクセス頻度を送信するようにプログラムされ得る。後者に対して、大容量記憶デバイスが、最も混んでいる（または最も混んでいない）１％を要求される場合、大容量記憶デバイスは、合計で大容量記憶デバイス容量の１％になるユーザ記憶空間中のどのセグメントが、リードもしくはライト、または両方の観点から、最も混んでいる（または最も混んでいない）のかを報告する。
【００２３】
サブシステムが、各大容量記憶デバイスが、サブシステムコントローラに、最高性能の階層に対して＜５アクセス／時間単位（図３〜４の第１の記憶階層３２０等）およびより低い性能の階層に対して＞１０アクセス／時間単位（図３〜４のの第１の記憶階層３３０等）のアクセス頻度のみを満たすデバイスデータセグメントに対するアクセス活動情報を提供するようにプログラムされると仮定する。最高性能の階層中の大容量記憶デバイスが表１のアクセス活動情報を維持した場合、ＬＢＡ０〜１５および１６〜３１に対するアクセス活動情報が、サブシステムコントローラに報告される。より低い性能の階層中の大容量記憶デバイスが表１のアクセス活動情報を維持した場合、ＬＢＡ３２〜４７、４８〜６３、６４〜７９、および８０〜９５に対するアクセス活動情報が、サブシステムコントローラに報告される。
【００２４】
【表２】
2015038729.tif 000004
【００２５】
表２は、考えられるモニタリング表の別の実施例である。サブシステムコントローラは、最もアクティブなデバイスデータセグメント、おそらく、アクティブなチャンクの上位０．０１％（おそらく、モードページで指定されるチャンクサイズ）、または考えられる代替法として、上位Ｎ（１００等）のアクティブなチャンクを要求する。開始および終了ＬＢＡの両方が、チャンクとしてのデバイスデータセグメントが、複数のより小さいチャンクの代わりに、単一の大きなチャンクとして連続しているときを有利に指定し得る。
【００２６】
デバイスデータセグメントを昇格または降格するために使用される閾値（複数を含む）は、階層の記憶容量に基づき得る。図３および４の第１の記憶階層３２０の場合、それに追加される記憶容量が多いほど、より低い閾値がデバイスデータセグメントを昇格するために使用されることを可能にする。概して、サブシステムは、各ドライブが計算能力を上げるため、より多くの階層およびより多くのドライブでスケーリングされ得る。
【００２７】
大容量記憶デバイスが関連アクセス活動情報を報告する一方で、一実施形態では、コントローラは、何のセグメントが移動すべきか、およびどこにそれらが移動させられるべきかを決定する。コントローラは、全ての大容量記憶デバイスから検索されたアクセス活動情報を比較し、昇格／降格に値するセグメントがどこにあるか、階層中のどの大容量記憶デバイスにそれらのセグメントが移動させられるべきか、および昇格／降格されたセグメントが書き込まれることを可能にするために、その大容量記憶デバイスから、どのようにして十分なセグメントを昇格／降格（可能な場合）するかを決定することができる。次いで、コントローラは、ソース大容量記憶デバイス（複数を含む）からのリード、ならびにそれが最も混んでいないデバイスデータセグメント（複数を含む）の降格、および最も混んでいるデバイスデータセグメント（複数を含む）の昇格の両方を完了することを選択した目標大容量記憶デバイス（複数を含む）への、対応するライトを開始する。次いで、デバイスデータセグメントは、ソース大容量記憶デバイスからサブシステムコントローラと関連したメモリへ読み込まれ、次いで、メモリから目標大容量記憶デバイスに送信される。あるいは、階層または大容量記憶デバイスは、サブシステムコントローラが実際のデータ移動に関与する必要がないように、それら自体の間で通信することができる。これは、大容量記憶デバイス間に存在する適切な通信プロトコルで達成され得る。データが移動させられた後、サブシステムコントローラは、関連した大容量記憶デバイスまたは階層によって、データが移動させられたことを通知される。
【００２８】
図５は、上記のサブシステムコントローラに対する一プロセスを示す。プロセス５００は、ステップ５１０から始まり、サブシステムコントローラがアクセス活動情報を受信するステップ５２０に進む。その情報は、サブシステムコントローラからの要求により、大容量記憶デバイスから得られ得る。ステップ５３０において、サブシステムコントローラは、受信されたアクセス活動情報に対応する任意のデバイスデータセグメントを昇格するか、もしくは降格するか、または両方を行うかどうか決定する。受信されたアクセス活動情報に対応する任意のデバイスデータセグメントを昇格する、もしくは降格する、または両方を行うと決定される場合、それは、ステップ５４０において行われる。次いで、プロセス５００は、ステップ５５０に進んで終了する。任意のデバイスデータセグメントを昇格または降格すると決定されない場合、プロセス５００は、終了ステップ５５０に進む。
【００２９】
図６は、上記の大容量記憶デバイスに対するプロセスを示す。プロセス６００は、ステップ６１０から始まり、大容量記憶デバイスがアクセス活動情報に対する要求を受信するステップ６２０に進む。ステップ６３０において、大容量記憶デバイスは、ステップ６２０において受信された要求に応答してアクセス活動情報を出力する。ステップ６３０は、プロセス６００を終了する。
【００３０】
サブシステム、特にサブシステムコントローラの追加のプログラミング（例えば、ポリシー）が、記載されたものに加えて使用されてもよい。追加のプログラミングは、大容量記憶デバイスの特性に基づき得る。例示するために、ＳＳＤは、データをＳＳＤに書き込むために必要とされる時間、およびＳＳＤメモリセルの摩耗特性のため、同一のデバイスデータセグメントがたくさん書き込まれる場合、良好に機能しない。その場合、サブシステム、好ましくはサブシステムコントローラが、高いライトアクセスを有するデバイスデータセグメントを非ＳＳＤ大容量記憶デバイスに移動させるように、プログラムされ得る。図３および４に示されるように、それは、デバイスデータセグメントを第２の記憶階層３３０中のＨＤＤに移動させることを意味する。本実施例において、表１のＬＢＡ６４〜７９がＳＳＤ中に記憶される場合、それらが高いライトアクセスを有するため、それらはＨＤＤに移動させられ得る。これは、より少ないリードおよびライトを有するセグメントが、ＳＳＤに維持されることを可能にする。高いライトアクセスは、使用されるメモリの種類に関連する。
【００３１】
追加のプログラミングは、デバイスデータセグメントのシーケンシャルアクセスに基づき得る。具体的に、アクセスが主にリードであっても、それらが全てまたは大部分シーケンシャルである場合、ＳＳＤは、ＨＤＤからのデータの移動を調整するために、十分により良好には機能しない場合がある。しかしながら、リード活動の大部分がシーケンシャルである場合、セグメントを昇格するのは賢明ではない場合がある。ＳＳＤ上のシーケンシャル性能はしばしば、ＨＯＤのものよりもわずかに優れているくらいであり、よりランダムな活動を有するセグメントは、それらがより少ない全体的なリードを有していても、昇格のより良好な候補であり得る。記憶システムサービス時間から取り除かれたより多くのアクセス時間があるため、改善はより大きく、一方で、シーケンシャルアクセスにおいては、転送速度のわずかな差が見られる。本実施例では、表１のＬＢＡ４８〜６３がＳＳＤに記憶される場合、それらがシーケンシャルアクセスを有するため、それらは、ＨＤＤに移動させられ得る。
【００３２】
さらなる追加のプログラミングは、経験的データに基づき得る。それは、経験的データが、ある特定の時間において、特定のデバイスデータセグメントが、それらが別の適切な階層に移動させられるべきであるように、それらのアクセス活動を変更させることを示す場合にも当てはまる。そのデータが移動させられた後、それは、その階層に対するアクセス活動情報にかかわらず、その階層中でそれを維持するためにロックされ得る。
【００３３】
図３および４のサブシステムに関して記載されるように、コントローラは、それが同数のデバイスデータセグメントを一階層から別の階層に移動させることができるように、各階層からデバイスセグメント情報を得た。しかしながら、これは必ずしも行われるとは限らない場合がある。階層が集中している場合、コントローラは、デバイスデータセグメントをそれに移動させるために、その階層からのアクセス活動情報を必要としない。
【００３４】
コントローラは、大容量記憶デバイスから周期またはイベント駆動型更新アクセス活動情報を得ることができる。コントローラは、最新のアクセス活動情報を得るために、大容量記憶デバイスに問い合わせまたは要求し、活動の変化に応答して昇格／降格の決定を行うことができる。これは、１つ以上の条件下で行われ得る。コントローラは、大容量記憶デバイスのいずれかまたは全部から、最も混んでいる、または最も混んでいないデータセグメントに関する定期報告を得ることを好む場合がある。あるいは、コントローラは、最も混んでいる、または最も混んでいないセグメントの集団の１０％の変化等、何らかの閾値が超えられたときのみ、アクセス活動情報を得ることがより効率的になり得る。この場合、大容量記憶デバイスは、アクセス活動データを維持し、Ｎ個の最も混んでいる、または最も混んでいないセグメントのＸ％以上が変更したことを示すためのフラグを設定する。つまり、Ｘ％の最も混んでいる、または最も混んでいないセグメントを構成するセグメントは、新しい入力として、それらのうちの少なくともＸ％を有していた。
【００３５】
大容量記憶デバイスの一実施例が図７に示される。大容量記憶デバイス７００は、大容量メモリ７２０およびメモリ７３０に連結される大容量記憶コントローラ７１０を含む。大容量メモリは、磁気、光、ソリッドステート、およびテープのうちの１つ以上であってもよい。メモリ７２０は、コントローラに対するデータおよび命令のために、ならびにバッファとして使用するためのＲＡＭ等、ソリッドステートメモリであってもよい。大容量記憶コントローラ７１０は、電気接続７４０を介して、インターフェースＩ／Ｆ７５０を有するサブシステムコントローラと連結をとる。
【００３６】
大容量記憶デバイスは、何をアクセス活動情報に含むかに関してプログラムされ得る。かかるプログラミングは、ＳＣＳＩ規格のモードページコマンドを使用することによって行われ得る。次いで、アクセス活動情報は、サブシステムコントローラによって要求されたとき、記憶インターフェースを通して送信される。
【００３７】
その一実施例が、プロセス８００によって図８に示される。ステップ８１０から始まり、プロセス８００は、大容量記憶コントローラを操作するファームウェアが、場合によっては大容量メモリ７２０から、構成情報を読み取らせる、ステップ８２０に進む。構成情報は、ＬＢＡ中のデバイスデータセグメントのサイズ、ならびに表１および２に示されるような他の情報を含むことができる。ステップ８３０において、アクセス活動情報は、メモリ（例えば、メモリ７３０）中に表を作成することによって構成される。大容量記憶デバイスが動作すると、それは、ステップ８４０においてアクセス活動情報を収集する。ステップ８５０において、情報は、メモリ７３０等のメモリに維持される。メモリ７３０が揮発性である場合、アクセス活動情報は、メモリ７２０に保存され得る。プロセス８００は、ステップ８５０で終了する。
【００３８】
示される２つより大きい任意の数の階層があってもよい。１つの特定のサブシステムは、図９に示されるように３つの階層を含む。ここで、システム９００は、階層９２０、９３０、９４０に連結するサブシステムコントローラ９１０を含む。階層９２０は、ＳＳＤ等の最高性能の大容量記憶デバイス９２５を含むことができる。階層９３０は、ＦＣ／ＳＣＳＩ、ハイブリッドドライブ、ショートストロークまたは高ＲＰＭディスクドライブ等の次に最高性能の大容量記憶デバイス９３５を含むことができる。階層９４０は、ＳＡＴＡ、テープ、または光学式ドライブ等の最低の性能の大容量記憶デバイス９４５を含むことができる。階層の数にかかわらず、階層中の全ての大容量記憶デバイスが同じである必要はない。代わりに、それらは、ある特定の範囲内に入る、またはある特定の基準を満たす少なくとも１つの特性を有することができる。さらに、少なくとも１つの階層中に単一の大容量記憶デバイスがあってもよい。
【００３９】
動作中、大容量記憶デバイス９３５は、サブシステムコントローラ９１０に、その最も混んでいない、および最も混んでいるデバイスデータセグメントに対するアクセス活動情報を提供することができる。上記のようなサブシステムコントローラは、最も混んでいないセグメントを階層９４０に移動させ、最も混んでいるセグメントを階層９２０に移動させることができる。階層９２０、９４０は、それらの最も混んでいる、および最も混んでいないデータセグメントのそれぞれを提供することができる。ここで、サブシステムコントローラ９１０は、デバイスデータセグメントが他の２つの階層のうちのどれに移動させられるべきかを決定することができる。あるいは、これらのデバイスデータセグメントは、それらが階層９３０中の他のデバイスデータセグメントと比較されるように、階層９３０に移動させられ得る。そこから、それらは、適切な場合、別の階層に移動させられ得る。
【００４０】
少なくとも図３〜１０に関する上記の実施形態は、Ｈａｄｏｏｐ等の分散ファイルシステムで使用され得る。階層化記憶は、データノードで使用され得、データノードのサブシステムコントローラは、何のデータが階層間で移動するのかを決定する。データノード上の分散ファイルシステムは、階層間のデータ移動に関与しても、していなくてもよい。関与する場合、分散ファイルシステムは、それ自体で、またはサブシステムコントローラと併せて、何のデータが階層間で移動するのかを決定することができる。次いで、コントローラまたは分散ファイルシステム中のポリシーは、２つの間の不一致を回避するために、優先順位を含んでもよい。階層化記憶はまた、クラスタの一部または全体として使用され得る。階層化記憶の各階層は、データノードであってもよい。ここで、分散ファイルシステムは、階層間のデータ移動を決定するためのサブシステムコントローラとしての機能を果たす。
【００４１】
また、大容量記憶デバイスのうちの少なくとも１つは、サブシステムコントロの機能性を含んでもよい。これは、図１０に示される。大容量記憶デバイス１０００は、サブシステムコントローラ１０１０、大容量記憶コントローラ１０２０、メモリ１０３０、および大容量メモリ１０４０を含む。コントローラ１０１０、１０２０は、関連ファームウェアもしくはソフトウェアを有するもしくは有しない別々のハードウェアとして、または関連ファームウェアもしくはソフトウェアを有するもしくは有しない単一のハードウェアとして実装され得る。大容量記憶デバイス中に存在する機能性により、他の大容量記憶デバイスは、階層インターフェース１０６０を通してその大容量記憶デバイスと通信する。ホストインターフェース１０５０は、ホストまたはデータアクセスを要求する他のデバイスからのコマンドを受信するために、サブシステムコントローラによって使用される。コントローラは、示されたインターフェースＩ／Ｆを使用して、それら自体の間で通信する。大容量記憶デバイスは、サブシステム機能性を有して製造され、後にサブシステムを制御するために使用可能となり得る。サブシステム機能性が、２つ以上の大容量記憶デバイスで動作可能である場合、全てのサブシステム機能性は、それらの間で分割され得る。
【００４２】
記載された装置および方法は、上記の特定の実施例に限定されるべきではない。図３〜１０のコントローラは、アプリケーション特有、専用、または汎用にかかわらず、ハードウェアであってもよい。さらに、ハードウェアは、ソフトウェアまたはファームウェアと共に使用され得る。
【００４３】
記載された装置および方法が適用され得る種々の修正物、同等のプロセス、ならびに多くの構造は、容易に明らかになる。例えば、コントローラは、直接接続ドライブを使用することができるホストＣＰＵであってもよい。大容量記憶デバイスはまた、光学式ドライブ、ソリッドステートメモリ、直接接続、もしくはテープドライブであってもよく、または高および低性能ＨＤＤであってもよい。階層は、ＳＡＮ、テープライブラリ、またはラウドストレージであってもよい。サブシステムコントローラインターフェース３４０（図３）と大容量記憶デバイスまたは階層との間の記憶インターフェース物理接続およびプロトコルは、イーサネット、ＵＳＢ、ＡＴＡ、ＳＡＴＡ、ＰＡＴＡ、ＳＣＳＩ、ＳＡＳ、ファイバーチャンネル、ＰＣＩ、ライトニング、無線、光、バックプレーン、フロントサイドバス等であってもよい。
【００４４】
全ての大容量記憶デバイスが、サブシステムコントローラがデータを移動させるためのアクセス活動情報を提供する必要はない。代わりに、ドライブのうちのいくつかが、サブシステムコントローラの負担を低減するために、情報を提供することができる。一実施例は、階層が、サブシステムコントローラによって制御されるソリッドステートメモリから作られる場合である。その場合、サブシステムコントローラは、メモリのアクセス活動を監視することができる。または、サブシステムコントローラは、その中に含有される他のデータにかかわらず、データをそのメモリに移動させてもよい。
【００４５】
デバイスデータセグメントの移動は、性能の代わりに、または性能に加えて、大容量記憶デバイスの容量、価格、または他の機能に基づき得る。移動はまた、＋ミッションまたはビジネスクリティカルなデータ等、デバイスデータセグメントの値に基づき得る。移動は、ユーザまたはアプリケーション定義の基準に基づき得る。
【図１】
2015038729.tif 000005
【図２】
2015038729.tif 000006
【図３】
2015038729.tif 000007
【図４】
2015038729.tif 000008
【図５】
2015038729.tif 000009
【図６】
2015038729.tif 000010
【図７】
2015038729.tif 000011
【図８】
2015038729.tif 000012
【図９】
2015038729.tif 000013
【図１０】
2015038729.tif 000014
【外国語明細書】
2015038729000001.pdf