JP2016207096A - 階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラム - Google Patents

階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラム Download PDF

Info

Publication number
JP2016207096A
JP2016207096A JP2015090895A JP2015090895A JP2016207096A JP 2016207096 A JP2016207096 A JP 2016207096A JP 2015090895 A JP2015090895 A JP 2015090895A JP 2015090895 A JP2015090895 A JP 2015090895A JP 2016207096 A JP2016207096 A JP 2016207096A
Authority
JP
Japan
Prior art keywords
storage
data
read
cache memory
hierarchical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015090895A
Other languages
English (en)
Inventor
和一 大江
Kazuichi Oe
和一 大江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015090895A priority Critical patent/JP2016207096A/ja
Priority to US15/073,010 priority patent/US10007437B2/en
Publication of JP2016207096A publication Critical patent/JP2016207096A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】記憶装置とライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージから、第1のストレージより高速にアクセス可能な第2のストレージへのデータの移動にかかる時間の短縮化を図ること。【解決手段】階層ストレージ装置101は、第1のストレージとなるティアリングHDD102のHDD112から、マイグレーション対象の記憶領域となった、あるsub−LUNのデータmdをシーケンシャルに読み出す。また、階層ストレージ装置101は、ティアリングHDD102のキャッシュSSD111から、あるsub−LUNの変更されたデータddty1〜4を読み出す。次に、階層ストレージ装置101は、HDD112から読み出したデータmdと、キャッシュSSD111から読み出したデータddty1〜4とをマージする。そして、階層ストレージ装置101は、マージしたデータmd’をティアリングSSD103に書き込む。【選択図】図1

Description

本発明は、階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラムに関する。
従来、アクセス性能が異なる複数のストレージにより階層ストレージを形成し、データをストレージ間で移動させる技術がある。また、記憶装置とキャッシュメモリとを用いることにより、前述の記憶装置よりアクセス性能を向上させたストレージを形成する技術がある。関連する先行技術として、例えば、ホストからのHDD(Hard Disk Drive)へのアクセス要求に対して、HDDの設定数以上の連続するセクタのデータにアクセスするかを判定した場合に記憶装置をキャッシュとして用いない技術がある。また、アプリケーションからのIO要求のそれぞれを構成可能なキャッシュマップと比較し、構成可能なキャッシュマップに基づきIO要求のそれぞれを処理し、付与したキャッシング決定に従ってIO要求のそれぞれに対し選択的なキャッシングを行う技術がある。
特開2013−77161号公報 特表2013−511091号公報
しかしながら、従来技術によれば、記憶装置とライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージから、第1のストレージより高速にアクセス可能な第2のストレージへのデータの移動にかかる時間が遅延することがある。具体的には、第1のストレージから移動対象の記憶領域のデータを読み込む際、第1のストレージの記憶装置には、移動対象の記憶領域のデータのうち変更されていないデータが散在する場合がある。この場合、第1のストレージの記憶装置から、変更されていないデータのそれぞれに対してランダムアクセスを発行して読み出すことになるため、移動にかかる時間が遅延することになる。
1つの側面では、本発明は、記憶装置とライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージから、第1のストレージより高速にアクセス可能な第2のストレージへのデータの移動にかかる時間を短縮化できる階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラムを提供することを目的とする。
本発明の一側面によれば、記憶装置と記憶装置のデータをライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージから第1のストレージより高速にアクセス可能な第2のストレージにデータを移動させる際に、記憶装置から、移動対象の記憶領域のデータをシーケンシャルに読み出し、移動対象の記憶領域のデータのうち変更されたデータをキャッシュメモリから読み出し、読み出した移動対象の記憶領域のデータと、読み出した変更されたデータとをマージし、マージしたデータを、第2のストレージに書き込む階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラムが提案される。
本発明の一態様によれば、記憶装置とライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージから、第1のストレージより高速にアクセス可能な第2のストレージへのデータの移動にかかる時間を短縮化できるという効果を奏する。
図1は、本実施の形態にかかる階層ストレージシステム100の動作例を示す説明図である。 図2は、階層ストレージ装置101のハードウェア構成例を示すブロック図である。 図3は、階層ストレージ装置101のソフトウェア構成例を示すブロック図である。 図4は、階層ストレージ装置101の機能構成例を示すブロック図である。 図5は、キャッシュメモリ読み出し処理の第一の例を示す説明図である。 図6は、キャッシュメモリ読み出し処理の第二の例を示す説明図である。 図7は、マイグレーション処理手順の一例を示すフローチャートである。 図8は、HDD読み出し処理手順の一例を示すフローチャートである。 図9は、キャッシュメモリ読み出し処理の第一の例の手順を示すフローチャートである。 図10は、sub−LUNデータ生成処理手順の一例を示すフローチャートである。 図11は、テンポラリーリスト作成処理手順の一例を示すフローチャートである。 図12は、ユーザIOリクエスト発生時処理手順の一例を示すフローチャートである。 図13は、キャッシュメモリ読み出し処理の第二の例の手順を示すフローチャートである。
以下に図面を参照して、開示の階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラムの実施の形態を詳細に説明する。
図1は、本実施の形態にかかる階層ストレージシステム100の動作例を示す説明図である。具体的には、階層ストレージ装置101を有する階層ストレージシステム100は、第1のストレージと第2のストレージとにより階層ストレージを形成し、形成した階層ストレージの記憶領域を階層ストレージシステム100のユーザに提供する。さらに、階層ストレージ装置101は、記憶装置とライトバック方式によるキャッシュメモリとを用いて第1のストレージを形成することにより、前述の記憶装置よりアクセス性能を向上させたストレージとして運用する。
ここで、階層ストレージが採用されたストレージシステムは、データをストレージ間で移動させることにより、各階層に属するストレージの負荷を分散させる。各階層に属するストレージは、1つでもよいし複数あってもよい。また、移動するデータのデータサイズは、どのようなサイズでもよいが、例えば、LUN(Logical Unit Number)を分割したsub−LUNのデータサイズとする。例えば、sub−LUNのデータサイズは、1[GB]である。以下、ストレージ間でデータを移動させることを、「マイグレーション」と呼称する。
ここで、第1のストレージは、階層ストレージ装置101により論理的に形成されたものである。または、記憶装置とキャッシュメモリとを有するストレージ装置が存在しており、階層ストレージ装置101は、記憶装置とキャッシュメモリとを有するストレージ装置を制御してもよい。また、第1のストレージの記憶装置は、不揮発性の記憶媒体であればどのようなものでもよい。例えば、第1のストレージの記憶装置は、磁気ディスクを記憶媒体とするHDDでもよいし、磁気テープを記憶媒体とするテープドライブでもよい。
また、ライトバック方式によるキャッシュメモリについて、ライトバック方式とは、記憶装置にデータを書き込む際、一旦キャッシュメモリにデータを書き込み、処理の空き時間等ができてからキャッシュメモリから記憶装置に書き込む方式である。従って、キャッシュメモリのデータと、記憶装置とのデータとが常に一致するとは限らない。
第1のストレージのキャッシュメモリは、第1のストレージの記憶装置より高速にアクセス可能であればよく、不揮発性でもよいし揮発性でもよい。例えば、第1のストレージのキャッシュメモリは、半導体メモリを記憶媒体とするSSD(Solid State Drive)や、RAM(Random Access Memory)でもよい。
第2のストレージは、不揮発性であり、第1のストレージより高速にアクセス可能であればよい。例えば、第1のストレージの記憶装置がHDDでキャッシュメモリがSSDである場合や、第1のストレージの記憶装置がテープドライブでキャッシュメモリがHDDである場合には、第2のストレージは、例えば、SSDでよい。また、第2のストレージが、第1のストレージのようにキャッシュメモリを有してもよいし、有していなくてもよい。
ここで、第1のストレージから第2のストレージへのデータ移動にかかる時間が延びることがある。具体的には、例えば、第1のストレージから移動対象の記憶領域のデータを読み込む際、第1のストレージの記憶装置には、移動対象の記憶領域のデータのうち変更されていないデータが偏在する場合もあるし、散在する場合もある。
変更されていないデータが偏在する場合には、第1のストレージの記憶装置から、変更されていないデータのそれぞれに対してランダム読み出しを行っても、ランダム読み出しを行う回数は多くないため、データ移動にかかる時間はさほど延びることはない。しかし、変更されていないデータが散在する場合には、第1のストレージの記憶装置から、変更されていないデータのそれぞれに対してランダム読み出しを行うことになり、ランダム読み出しを行う回数が多くなって、データ移動にかかる時間が延びることになる。
より具体的な例として、第1のストレージのキャッシュメモリの1つのデータサイズが4[KB]であり、キャッシュヒット率が50[%]であり、第1のストレージの記憶装置がHDDであって、ランダム読み出しの性能が200[iops]であるとする。このとき、1[GB]のsub−LUNのデータをマイグレーションするとなると、第1のストレージの記憶装置から読み出すデータの個数は、1[GB]*0.5/4[KB]=131072[個]となる。そして、131072[個]のデータが全て連続していない際に、第1のストレージから131072[個]のデータを読み出すとなると、131072回のランダム読み出しが発生することになる。結果、第1のストレージの記憶装置からの読み出しに、131072/200=655[秒]かかることになる。
そこで、本実施の形態では、第1のストレージの記憶装置から読み出したデータと、第1のストレージのライトバック方式でキャッシュするキャッシュメモリのデータとをマージして第2のストレージに書き込む階層ストレージ方法について説明する。以下、図1を用いて、階層ストレージ装置101の動作を説明する。図1で示す階層ストレージシステム100は、階層ストレージ装置101と、第1のストレージとするティアリングHDD102と、第1のストレージよりアクセス性能が高い第2のストレージとするティアリングSSD103とを有する。そして、ティアリングHDD102は、ライトバック方式によるキャッシュメモリとしてSSDを用いたキャッシュSSD111と、記憶装置としてHDD112とを有する。
階層ストレージ装置101は、階層ストレージシステム100を制御するコンピュータである。階層ストレージ装置101は、例えば、サーバである。また、階層ストレージ装置101に、ティアリングHDD102とティアリングSSD103とが含まれていてもよい。図1の(1)が示す処理において、階層ストレージ装置101は、第1のストレージとなるティアリングHDD102のHDD112から、マイグレーション対象の記憶領域となった、あるsub−LUNのデータmdをシーケンシャルに読み出す。ここで、データmdは、あるsub−LUNの変更されていないデータとして、dold1〜4を含む。図1では、ハッチを付与した領域が変更されていないデータを示す。
また、図1の(2)が示す処理において、階層ストレージ装置101は、ティアリングHDD102のキャッシュSSD111から、あるsub−LUNの変更されたデータddty1〜4を読み出す。ここで、図1では、塗りつぶした領域が、あるsub−LUNの変更されたデータを示す。なお、図1におけるキャッシュSSD111に含まれる白抜きの領域は、sub−LUN以外のデータである。ここで、図1の(1)が示す処理と図1の(2)が示す処理とについて、階層ストレージ装置101は、どちらかを先に実行してもよいし、並行して実行してもよい。
次に、階層ストレージ装置101は、図1の(3)が示す処理において、HDD112から読み出したデータmdと、キャッシュSSD111から読み出したデータddty1〜4とをマージする。マージすることにより、階層ストレージ装置101は、データmd’を得る。ここで、データmd’は、あるsub−LUNの変更されたデータddty1〜4を含むものである。そして、階層ストレージ装置101は、図1の(4)が示す処理において、データmd’をティアリングSSD103に書き込む。
これにより、マイグレーション時に、HDD112にランダム読み出しを発生させることがなくなるため、マイグレーションにかかる時間を短縮化することができる。マイグレーションにかかる時間として、具体的には、例えば、HDDに対するシーケンシャルの読み出しが、100[MB/sec]であるとすると、1[GB]のマイグレーションにかかる時間は約10[秒]となる。従って、本実施の形態にかかるマイグレーションによれば、HDDに対してランダム読み出しを行ってマイグレーションを行う場合に比べて、65分の1の時間でマイグレーションを行うことができる。
また、本実施の形態における階層ストレージシステム100は、2階層のストレージであったが、3階層以上のストレージを有してもよい。
(階層ストレージ装置101のハードウェア構成例)
図2は、階層ストレージ装置101のハードウェア構成例を示すブロック図である。図2において、階層ストレージ装置101は、CPU201と、ROM(Read−Only Memory)202と、RAM203と、を含む。また、階層ストレージ装置101は、ディスクドライブ204およびディスク205と、通信インターフェース206と、を含む。また、CPU201〜ディスクドライブ204、通信インターフェース206はバス207によってそれぞれ接続される。
CPU201は、階層ストレージ装置101の全体の制御を司る演算処理装置である。また、階層ストレージ装置101は、複数のCPUを有してもよい。ROM202は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM203は、CPU201のワークエリアとして使用される揮発性メモリである。
ディスクドライブ204は、CPU201の制御に従ってディスク205に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ204には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク205は、ディスクドライブ204の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ204が磁気ディスクドライブである場合、ディスク205には、磁気ディスクを採用することができる。また、ディスクドライブ204が光ディスクドライブである場合、ディスク205には、光ディスクを採用することができる。また、ディスクドライブ204がソリッドステートドライブである場合、ディスク205には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
通信インターフェース206は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース206は、通信回線を通じてネットワークを介して他の装置に接続される。通信インターフェース206には、例えば、モデムやLAN(Local Area Network)アダプタなどを採用することができる。
また、階層ストレージシステム100の管理者が、階層ストレージ装置101を直接操作する場合、階層ストレージ装置101は、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。
図3は、階層ストレージ装置101のソフトウェア構成例を示すブロック図である。階層ストレージ装置101は、ユーザ空間上で、ティアリングマネージャ301を実行する。また、階層ストレージ装置101は、OS空間上で、ティアリングドライバ311と、キャッシングボリューム312と、ディスクドライバ313〜315とを実行する。ここで、ディスクドライバ313は、ティアリングSSD103のディスクドライバである。また、ディスクドライバ314は、キャッシュSSD111のディスクドライバである。また、ディスクドライバ315は、HDD112のディスクドライバである。
ティアリングマネージャ301は、ティアリングHDD102とティアリングSSD103とから形成される階層化ストレージを制御するソフトウェアである。具体的には、ティアリングマネージャ301は、sub−LUNごとに記憶するストレージを決定する。図3の例では、階層ストレージシステム100は、1つのLUNをsub−LUN ID:1〜Cに分割してある。そして、図3の例では、ティアリングマネージャ301の決定により、sub−LUN ID:1〜3、5〜8、A〜CのデータはティアリングHDD102に記憶させており、sub−LUN ID:4、9のデータはティアリングSSD103に記憶させてある。
そして、ティアリングマネージャ301は、sub−LUN単位でアクセス数をカウントする。sub−LUN単位のアクセス数に基づいて、ティアリングマネージャ301は、ティアリングHDD102が記憶するsub−LUNのうちのいずれかのsub−LUNのデータの移動指示をティアリングドライバ311に送信する。また、sub−LUN単位のアクセス数に基づいて、ティアリングマネージャ301は、ティアリングSSD103が記憶するsub−LUNのうちのいずれかのsub−LUNのデータの移動指示をティアリングドライバ311に送信する。
ティアリングドライバ311は、階層化ストレージへのインターフェースを提供するソフトウェアである。具体的には、ティアリングドライバ311は、ティアリングマネージャ301からのデータの移動指示や、ユーザIO(Input Output)リクエストからのアクセスを、アクセス先に基づいて、キャッシングボリューム312か、ディスクドライバ313に振り分ける。
キャッシングボリューム312は、ライトバック方式によるキャッシュ機能を有するボリュームへのインターフェースを提供するソフトウェアである。具体的には、キャッシングボリューム312は、キャッシュアルゴリズムに従って、キャッシュSSD111とHDD112とを制御する。
(階層ストレージ装置101の機能構成例)
図4は、階層ストレージ装置101の機能構成例を示すブロック図である。階層ストレージ装置101は、制御部を有する。制御部は、第1の読み出し部401と、第2の読み出し部402と、マージ部403と、書き込み部404と、受け付け部405と、検索部406と、記憶部407とを有する。図4で示すように、第1の読み出し部401〜書き込み部404は、ティアリングドライバ311が有する機能であり、受け付け部405〜記憶部407は、キャッシングボリューム312が有する機能である。ここで、制御部は、記憶装置に記憶されたプログラムをCPU201が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図2に示したROM202、RAM203、ディスク205などである。また、各部の処理結果は、CPU201のレジスタや、CPU201のキャッシュメモリ等に格納される。
また、階層ストレージ装置101は、管理データmにアクセス可能である。管理データmは、RAM203といった記憶装置に格納される。ここで、管理データmは、キャッシュメモリが記憶するデータに応じてHDD112の記憶領域におけるデータに対応するアドレスとデータが変更されたものか否かを示す情報とを対応付けた情報である。ここで、HDD112のアドレスは、LBA(Logical Block Addressing)で表現されたものでもよいし、CHS(Cylinder Head Sector)で表現されたものでもよい。以下の例では、HDD112のアドレスは、LBAで表現されたものであるとする。管理データmの詳細な説明については、図5で説明する。
そして、管理データmは、キャッシュSSD111が記憶するデータごとにある。ここで、キャッシュSSD111が記憶するデータを、「キャッシュブロック」と呼称する。キャッシュブロックは、例えば、4[KB]のデータである。また、キャッシュブロックに対応するHDD112のデータを、「HDD112のデータブロック」と呼称する。図4の例では、管理データm1は、キャッシュブロックcb1に対応しており、管理データm2は、キャッシュブロックcb2に対応しており、管理データmnは、キャッシュブロックcbnに対応する。
第1の読み出し部401は、マイグレーションする際に、HDD112から、マイグレーション対象のsub−LUNのデータをシーケンシャルに読み出す。
第2の読み出し部402は、マイグレーション対象のsub−LUNのデータのうち変更されたキャッシュブロックをキャッシュSSD111から読み出す。例えば、第2の読み出し部402は、キャッシュSSD111のキャッシュブロックのうち、マイグレーション対象のsub−LUNに対応する全てを、変更されたキャッシュブロックとして読み出してもよい。または、例えば、第2の読み出し部402は、変更されたキャッシュブロックを検索部406から受け取ることにより、マイグレーション対象の記憶領域のデータのうち変更されたキャッシュブロックをキャッシュSSD111から読み出すこととしてもよい。
マージ部403は、第1の読み出し部401が読み出したマイグレーション対象の記憶領域のデータと、第2の読み出し部402が読み出した変更されたキャッシュブロックとをマージする。
書き込み部404は、マージしたデータを、ティアリングSSD103に書き込む。
受け付け部405は、移動対象予定、すなわち、マイグレーション予定の記憶領域を示す情報を受け付ける。マイグレーション予定の記憶領域を示す情報は、LBAの範囲でもよいし、LUNでもよい。本実施の形態では、マイグレーション予定の記憶領域を示す情報は、マイグレーション予定となるsub−LUN IDである。具体的には、ティアリングマネージャ301が、マイグレーション予定のsub−LUN IDをティアリングドライバ311に通知する。ティアリングドライバ311は、受け付けたsub−LUN IDに対応する先頭LBAと末尾LBAとを算出して、受け付け部405に通知する。なお、どのようにマイグレーション予定のsub−LUN IDを特定するかについては、図6で説明する。
検索部406は、管理データmを参照して、マイグレーション対象のsub−LUNのうち変更されたキャッシュブロックを検索する。検索部406は、検索して得られたキャッシュブロックを、第2の読み出し部402に通知する。
記憶部407は、ティアリングHDD102へのアクセスが発生したことに応じて、受け付けたマイグレーション予定の記憶領域にアクセス先のLBAが含まれる場合、アクセス先のLBAを示すIO情報aを記憶する。IO情報aは、アクセス先のLBAそのものを記憶してもよいし、アクセス先のLBAと同一のLBAを有する管理データmを指し示す情報を記憶してもよい。管理データmを指し示す情報は、例えば、管理データmが格納されたRAM203上のアドレスである。図4の例では、記憶部407は、2つのIO情報a1、a2を記憶する。そして、IO情報a1は、管理データm1を指し示す情報を記憶しており、IO情報a2は、管理データm2を指し示す情報を記憶している。
そして、検索部406は、IO情報aと管理データmとを参照して、アクセス先のLBAのデータのうち変更されたデータを抽出する。具体的には、図4の例では、検索部406は、IO情報a1から管理データm1を特定し、管理データm1に対応するキャッシュブロックcb1が、変更されたものかを判断する。同様に、検索部406は、IO情報a2から管理データm2を特定し、管理データm2に対応するキャッシュブロックcb2が、変更されたものかを判断する。変更されたキャッシュブロックである場合、検索部406は、変更されたキャッシュブロックを第2の読み出し部402に通知する。
次に、図5を用いてキャッシュメモリ読み出し処理の第一の例を示すとともに、図6を用いてキャッシュメモリ読み出し処理の第二の例を示す。
図5は、キャッシュメモリ読み出し処理の第一の例を示す説明図である。図5の(1)で示す処理として、ティアリングドライバ311は、キャッシュブロック回収命令をキャッシングボリューム312に通知する。キャッシュブロック回収命令には、移動対象となるsub LUNの範囲として、先頭LBAと末尾LBAとが含まれる。
キャッシュブロック回収命令を受信したキャッシングボリューム312は、図5の(2)で示す処理として、管理データmを参照して、先頭LBAから末尾LBAまでの範囲であり、かつ、変更された状態であるキャッシュブロックを検索する。具体的な検索例の前に、キャッシングボリューム312におけるキャッシュブロックの管理方法の一例を説明する。
キャッシングボリューム312は、キャッシュブロックと1対1対応する管理データmを管理する。管理データmは、論理LBA、物理LBA、状態というフィールドを有する。論理LBAフィールドには、該当の管理データmに対応するキャッシュブロックに、ユーザのアプリケーションがアクセスする際に用いられるLBAが格納される。物理LBAフィールドには、該当の管理データmに対応するキャッシュブロックを格納するキャッシュSSD111のLBAが格納される。
状態フィールドは、キャッシュブロックが変更されたものか否かを示す情報を含むものであり、キャッシュブロックの状態を示す識別子が格納される。具体的には、状態フィールドには、free、alloc、dirtyのうちのいずれかの識別子が格納される。freeは、キャッシュブロックがHDD112のデータブロックと対応していない状態を示す識別子である。allocは、キャッシュブロックに対応するHDD112のデータブロックがあり、かつ、キャッシュブロックとHDD112のデータブロックとの内容が一致する状態を示す識別子である。dirtyは、キャッシュブロックに対応するHDD112のデータブロックがあり、かつ、キャッシュブロックのデータが変更された結果、キャッシュブロックとHDD112のデータブロックとの内容が一致しない状態を示す識別子である。
そして、キャッシングボリューム312は、HDD112のデータブロックに対応するキャッシュブロックに対応する管理データmを、アローケーションリスト501を用いて管理する。具体的には、アローケーションリスト501には、HDD112のデータブロックに対応するキャッシュブロックに対応する管理データmのアドレスが格納される。例えば、図5の例では、アローケーションリスト501には、管理データm1〜m6のアドレスが格納される。
また、キャッシングボリューム312は、HDD112のデータブロックに対応するキャッシュブロックに対応しない管理データmを、フリーリスト502を用いて管理する。管理の方法は、アローケーションリスト501と同様の方法である。
図5の(2)で示す処理の具体例として、キャッシングボリューム312は、アローケーションリスト501が管理する管理データmを参照して、論理LBAが先頭LBAから末尾LBAまでの範囲であり、かつ、状態がdirtyの管理データmを検索する。図5の例では、キャッシングボリューム312は、論理LBAが先頭LBAから末尾LBAまでの範囲であり、かつ、状態がdirtyの管理データmとして、管理データm4〜m6を検出する。ここで、管理データm4の論理LBAがLBA0であり、管理データm5の論理LBAがLBA1であり、管理データm6の論理LBAがLBA2であるとする。
管理データmを検出した後、キャッシングボリューム312は、図5の(3)の処理で示すように、検出した管理データmの論理LBAと、管理データmの物理LBAから読み出したキャッシュブロックのデータとの組をティアリングドライバ311に送信する。図5の例では、キャッシングボリューム312は、キャッシュSSD111から、管理データm4〜m6の物理LBAが示すキャッシュブロックのデータ511〜513を読み出す。そして、キャッシングボリューム312は、管理データm4の論理LBA0とデータ511との組と、管理データm5の論理LBA1とデータ512との組と、管理データm6の論理LBA2とデータ513との組とをティアリングドライバ311に送信する。
図6は、キャッシュメモリ読み出し処理の第二の例を示す説明図である。キャッシュメモリ読み出し処理の第2例では、ティアリングドライバ311とキャッシングボリューム312が、キャッシュブロック回収命令を行う前に行っておく処理がある。まず、図6の(1)が示す処理として、ティアリングドライバ311は、マイグレーション予定のsub−LUNとして先頭LBAおよび末尾LBAと、タイムアウト値とをキャッシングボリューム312に送信する。
ここで、図6では図示していないが、ティアリングドライバ311は、図6の(1)が示す処理の前に、マイグレーション予定のsub−LUNとなる先頭LBAおよび末尾LBAとを、ティアリングマネージャ301から受け付ける。ここで、ティアリングマネージャ301は、sub−LUN単位のアクセス数の時間変化に基づいて、マイグレーション予定のsub−LUNを決定する。例えば、現在時刻より4分前において、sub−LUN1〜Cのうち最もアクセス数が多かったのがsub−LUN5であり、現在時刻より2分前において、sub−LUN1〜Cのうち最もアクセス数が多かったのがsub−LUN7であるとする。この場合、高頻度のアクセスがあるsub−LUNが2分間で2つ移動したため、ティアリングマネージャ301は、現在時刻ではsub−LUN9が最もアクセスが多くなると判断して、マイグレーション予定のsub−LUNをsub−LUN9に決定する。
先頭LBAおよび末尾LBAと、タイムアウト値とを受け付けたキャッシングボリューム312は、図6の(2)が示す処理として、テンポラリーリスト601を生成する。テンポラリーリスト601は、先頭LBAと、末尾LBAと、開始時刻と、タイムアウト値というフィールドを有する。
先頭LBAフィールドには、ティアリングドライバ311から受け付けた先頭LBAであり、マイグレーション予定の先頭LBAが格納される。末尾LBAフィールドには、ティアリングドライバ311から受け付けた末尾LBAであり、マイグレーション予定の末尾LBAが格納される。開始時刻フィールドには、テンポラリーリスト601の生成時刻を示す値が格納される。タイムアウト値には、受け付けたタイムアウト値であり、テンポラリーリスト601の生成時刻からテンポラリーリスト601を維持するまでの時間を示す値が格納される。
ここで、キャッシュメモリ読み出し処理とは関係なく、ティアリングドライバ311が、ユーザのアプリケーションからユーザIOリクエストを受け付けたとする。この場合、ティアリングドライバ311は、図6の(3)が示す処理として、キャッシングボリューム312に、ユーザIOリクエストを送信する。
ユーザIOリクエストを受信したキャッシングボリューム312は、テンポラリーリスト601の生成時刻からタイムアウト値が示す時間が経過していないかを判断する。タイムアウト値が示す時間が経過していなければ、キャッシングボリューム312は、状態がalloc、またはdirtyであり、ユーザIOリクエストのLBAと一致する論理LBAを有する管理データが存在するかを検索する。存在する場合、さらに、キャッシングボリューム312は、ユーザIOリクエストのLBAがテンポラリーリスト601の先頭LBAから末尾LBAまでの範囲に入るかを判断する。
ユーザIOリクエストのLBAがテンポラリーリスト601の先頭LBAから末尾LBAまでの範囲に入る場合、キャッシングボリューム312は、図6の(4)が示す処理として、IO情報aを記憶する。IO情報aは、ユーザIOリクエストに含まれるアクセス先のLBAと一致する論理LBAを有する管理データを指し示す情報である。
図6の例では、テンポラリーリスト601の生成時刻からタイムアウト値が示す時間が経過する間に、3つのユーザIOリクエストが発生して、キャッシングボリューム312が3つのIO情報aを記憶した例を示す。図6の例では、キャッシングボリューム312は、管理データm4を指し示すIO情報a−1と、管理データm5を指し示すIO情報a−2と、管理データm6を指し示すIO情報a−3とを記憶する。
そして、図6の(5)で示す処理として、ティアリングドライバ311は、キャッシュブロック回収命令をキャッシングボリューム312に通知する。キャッシュブロック回収命令には、移動対象となるsub−LUNの範囲として、先頭LBAと末尾LBAとが含まれる。
キャッシュブロック回収命令を受信したキャッシングボリューム312は、図6の(6)で示す処理として、IO情報aと管理データmとを参照して、ユーザIOリクエストのアクセス先のキャッシュブロックの状態がdirtyかを判断する。具体的には、キャッシングボリューム312は、IO情報aが示す管理データmの状態フィールドがdirtyを示すかを判断する。図6の例では、IO情報a−1〜3が示す管理データmの状態フィールドが全てdirtyであるとする。
キャッシュブロックの状態がdirtyである場合、キャッシングボリューム312は、dirtyであったキャッシュブロックの論理LBAと、キャッシュSSD111から読み出したキャッシュブロックのデータとの組をティアリングドライバ311に送信する。図6の例では、キャッシングボリューム312は、キャッシュSSD111から、IO情報a−1〜3が指し示す管理データm4〜m6の物理LBAが示すキャッシュブロックのデータ621〜623を読み出す。そして、キャッシングボリューム312は、管理データm4の論理LBA0とデータ621との組と、管理データm5の論理LBA1とデータ622との組と、管理データm6の論理LBA2とデータ623との組とをティアリングドライバ311に送信する。
ここで、図6で示した方法では、図6の(1)が示す処理の前に、マイグレーション予定の先頭LBAから末尾LBAの範囲で、状態が既にdirtyであるキャッシュブロックがないことを前提とする。図6の(1)が示す処理の前にマイグレーション予定の先頭LBAから末尾LBAの範囲で状態が既にdirtyであるキャッシュブロックがある可能性があるならば、キャッシングボリューム312は、次に示す処理を行えばよい。
まず、キャッシングボリューム312は、図6の(1)が示す処理後、管理データmを参照して、マイグレーション予定の先頭LBAから末尾LBAの範囲で状態がdirtyであるキャッシュブロックを検索する。そして、状態がdirtyであるキャッシュブロックがあれば、キャッシングボリューム312は、dirtyであるキャッシュブロックに対応する管理データmを指し示すIO情報aを記憶する。これにより、キャッシングボリューム312は、図6の(6)で示す処理により、図6の(1)が示す処理の前にマイグレーション予定の先頭LBAから末尾LBAの範囲で状態が既にdirtyであるキャッシュブロックも回収することができる。
次に、階層ストレージ装置101が実行する各ソフトウェアにより実行されるフローチャートを、図7〜図13を用いて説明する。
図7は、マイグレーション処理手順の一例を示すフローチャートである。マイグレーション処理は、下位のストレージから上位のストレージにマイグレーションする処理である。ティアリングマネージャ301は、ティアリングSSD103への移動対象のsub−LUNを選択する(ステップS701)。そして、ティアリングマネージャ301は、選択したsub−LUN IDをティアリングドライバ311に通知する(ステップS702)。
sub−LUN IDの通知を受けたティアリングドライバ311は、HDD読み出し処理を実行する(ステップS703)。また、ティアリングドライバ311は、キャッシュメモリ読み出し処理を実行する(ステップS704)。ここで、ティアリングドライバ311は、ステップS703の処理とステップS704の処理とを並列に実行してもよい。例えば、階層ストレージ装置101が複数のCPUを有する場合に、ティアリングドライバ311は、ステップS703の処理を実行するスレッドと、ステップS704の処理を実行するスレッドとを別々のCPUに割り当ててもよい。
そして、ティアリングドライバ311は、sub−LUNデータ生成処理を実行する(ステップS705)。次に、ティアリングドライバ311は、生成したsub−LUNデータをティアリングSSD103に書き込む(ステップS706)。
ステップS706の処理終了後、ティアリングドライバ311は、マイグレーション処理を終了する。マイグレーション処理を実行することにより、ティアリングドライバ311は、ランダムアクセスを発行せずに下位のストレージから上位のストレージにデータを移動することができる。
図8は、HDD読み出し処理手順の一例を示すフローチャートである。HDD読み出し処理は、HDD112からマイグレーション対象のsub−LUNのデータを読み出す処理である。ティアリングドライバ311は、RAM203から、sub−LUNと同じデータサイズとなるメモリ領域を確保する(ステップS801)。次に、ティアリングドライバ311は、マイグレーション対象のsub−LUN IDから、HDD112における先頭LBAを算出する(ステップS802)。そして、ティアリングドライバ311は、算出した先頭LBAから、sub−LUNデータサイズ分のデータを確保したメモリ領域に読み出す命令をHDD112に通知する(ステップS803)。命令発行後、HDD112からの読み出しが完了した場合、ティアリングドライバ311は、HDD読み出し処理を終了する。HDD読み出し処理を実行することにより、階層ストレージ装置101は、HDD112からマイグレーション対象のsub−LUNのデータを読み出すことができる。
図9は、キャッシュメモリ読み出し処理の第一の例の手順を示すフローチャートである。キャッシュメモリ読み出し処理は、図5で説明した、キャッシュSSD111からsub−LUNの変更されたデータを読み出す処理である。
ティアリングドライバ311は、マイグレーション対象のsub−LUN IDから、HDD112における先頭LBAを算出する(ステップS901)。次に、ティアリングドライバ311は、先頭LBAにsub−LUNのデータサイズを加算した値を末尾LBAに代入する(ステップS902)。そして、ティアリングドライバ311は、先頭LBAから末尾LBAまでのキャッシュブロック回収命令をキャッシングボリューム312に通知する(ステップS903)。
キャッシュブロック回収命令を受け付けたキャッシングボリューム312は、全ての管理データmのうち、ステップS905以降の処理について処理していない管理データmがあるか否かを判断する(ステップS904)。ステップS905以降の処理について処理していない管理データmがある場合(ステップS904:Yes)、キャッシングボリューム312は、未処理の管理データmを選択する(ステップS905)。次に、キャッシングボリューム312は、選択した管理データmに対応するキャッシュブロックの状態がdirtyか否かを判断する(ステップS906)。選択した管理データmに対応するキャッシュブロックの状態がdirtyである場合(ステップS906:Yes)、キャッシングボリューム312は、選択した管理データmに対応するキャッシュブロックの論理LBAが先頭LBAから末尾LBAの範囲か否かを判断する(ステップS907)。
選択した管理データmに対応するキャッシュブロックの状態がdirtyでない場合(ステップS906:No)、キャッシングボリューム312は、ステップS904の処理に移行する。また、選択した管理データmに対応するキャッシュブロックの論理LBAが先頭LBAから末尾LBAの範囲でない場合(ステップS907:No)も、キャッシングボリューム312は、ステップS904の処理に移行する。ここで、キャッシングボリューム312は、ステップS907の処理を先に行った後、ステップS906の処理を行ってもよい。
選択した管理データmに対応するキャッシュブロックの論理LBAが先頭LBAから末尾LBAの範囲である場合(ステップS907:Yes)、キャッシングボリューム312は、RAM203から、キャッシュブロックのデータを格納するデータ領域を確保する(ステップS908)。次に、キャッシングボリューム312は、キャッシュSSD111内にある、選択した管理データmに対応するキャッシュブロックのデータを、確保したデータ領域に書き込む(ステップS909)。そして、キャッシングボリューム312は、選択した管理データmの論理LBAと、確保したデータ領域との組を保存する(ステップS910)。次に、キャッシングボリューム312は、選択した管理データmの状態をfreeに設定する(ステップS911)。そして、キャッシングボリューム312は、ステップS904の処理に移行する。
一方、ステップS905以降の処理について全ての管理データmを処理した場合(ステップS904:No)、キャッシングボリューム312は、保存した論理LBAとデータ領域との組を、ティアリングドライバ311に通知する(ステップS912)。ステップS912の処理終了後、ティアリングドライバ311とキャッシングボリューム312とは、キャッシュメモリ読み出し処理を終了する。キャッシュメモリ読み出し処理を実行することにより、階層ストレージ装置101は、マイグレーション対象のsub−LUNに含まれており、状態がdirtyであるキャッシュブロックのデータを読み出すことができる。
図10は、sub−LUNデータ生成処理手順の一例を示すフローチャートである。sub−LUNデータ生成処理は、sub−LUNデータを生成する処理である。
ティアリングドライバ311は、取得した論理LBAとデータ領域との組のうち、ステップS1003の処理について処理していない組があるか否かを判断する(ステップS1001)。ステップS1003の処理について処理していない組がある場合(ステップS1001:Yes)、ティアリングドライバ311は、未処理の組を選択する(ステップS1002)。次に、ティアリングドライバ311は、sub−LUNデータサイズ分のデータを書き込んだデータ領域の選択した組の論理LBA相当の位置に、選択した組のデータ領域のデータを書き込む(ステップS1003)。そして、ティアリングドライバ311は、ステップS1001の処理に移行する。
一方、ステップS1003の処理について全ての組について処理した場合(ステップS1001:No)、ティアリングドライバ311は、sub−LUNデータ生成処理を終了する。sub−LUNデータ生成処理を実行することにより、階層ストレージ装置101は、状態がdirtyであるキャッシュブロックのデータと、HDD112から読み出したデータとをマージしたデータを作成することができる。
図11は、テンポラリーリスト作成処理手順の一例を示すフローチャートである。テンポラリーリスト作成処理は、テンポラリーリスト601を作成する処理である。
ティアリングマネージャ301は、近い将来マイグレーションを行う予定のsub−LUN IDを決定する(ステップS1101)。次に、ティアリングマネージャ301は、決定したsub−LUN IDをティアリングドライバ311に通知する(ステップS1102)。ティアリングドライバ311は、通知されたsub−LUN IDから、HDD112における先頭LBAを算出する(ステップS1103)。次に、ティアリングドライバ311は、先頭LBAにsub−LUNのデータサイズを加えた値を末尾LBAに代入する(ステップS1104)。そして、ティアリングドライバ311は、近い将来マイグレーションを行う予定のLBAの範囲として先頭LBAおよび末尾LBAとタイムアウト値とを、キャッシングボリューム312に通知する(ステップS1105)。
そして、キャッシングボリューム312は、先頭LBAと末尾LBAとタイムアウト値とをテンポラリーリスト601として、キャッシングボリューム312内部に保存する(ステップS1106)。ステップS1106の処理終了後、ティアリングマネージャ301とティアリングドライバ311とキャッシングボリューム312とは、テンポラリーリスト作成処理を終了する。テンポラリーリスト作成処理を実行することにより、階層ストレージ装置101は、ユーザIOリクエストが発生した際に用いるテンポラリーリスト601を作成しておくことができる。
図12は、ユーザIOリクエスト発生時処理手順の一例を示すフローチャートである。ユーザIOリクエスト発生時処理は、ユーザIOリクエストが発生した時に行う処理である。
キャッシングボリューム312は、ティアリングドライバ311よりユーザIOリクエストを受け付ける(ステップS1201)。そして、キャッシングボリューム312は、ステータスがallocまたはdirtyであり、ユーザIOリクエストのLBAと一致する論理LBAを有する管理データmが存在するか否かを判断する(ステップS1202)。ユーザIOリクエストのLBAと一致する論理LBAを有する管理データmが存在する場合(ステップS1202:Yes)、キャッシングボリューム312は、ユーザIOリクエストのLBAがテンポラリーリストのLBAの範囲に入っているか否かを判断する(ステップS1203)。ユーザIOリクエストのLBAがテンポラリーリストのLBAの範囲に入っている場合(ステップS1203:Yes)、キャッシングボリューム312は、ユーザIOリクエストのLBAと一致する論理LBAを有する管理データmを指し示すIO情報aを保存する(ステップS1204)。
そして、ステップS1204の処理終了後、キャッシングボリューム312は、通常のキャッシング処理を実行する(ステップS1205)。また、ユーザIOリクエストのLBAと一致する論理LBAを有する管理データmが存在しない場合(ステップS1202:No)も、キャッシングボリューム312は、ステップS1205の処理を実行する。同様に、ユーザIOリクエストのLBAがテンポラリーリストのLBAの範囲に入っていない場合(ステップS1203:No)も、キャッシングボリューム312は、ステップS1205の処理を実行する。ここで通常のキャッシング処理とは、キャッシュアルゴリズムに従って、キャッシュSSD111かHDD112かのいずれかにユーザIOリクエストを送信することである。
そして、ステップS1205の処理終了後、キャッシングボリューム312は、ユーザIOリクエスト発生時処理を終了する。ユーザIOリクエスト発生時処理を実行することにより、階層ストレージ装置101は、マイグレーション対象のsub−LUNに含まれるキャッシュブロックを特定することができる。
図13は、キャッシュメモリ読み出し処理の第二の例の手順を示すフローチャートである。キャッシュメモリ読み出し処理は、図6で説明した、キャッシュSSD111からsub−LUNの変更されたデータを読み出す処理である。
ティアリングドライバ311は、マイグレーション対象のsub−LUN IDから、HDD112における先頭LBAを算出する(ステップS1301)。次に、ティアリングドライバ311は、先頭LBAにsub−LUNのデータサイズを加算した値を末尾LBAに代入する(ステップS1302)。そして、ティアリングドライバ311は、先頭LBAから末尾LBAまでのキャッシュブロック回収命令をキャッシングボリューム312に通知する(ステップS1303)。
キャッシュブロック回収命令を受け付けたキャッシングボリューム312は、保存したIO情報aのうち、ステップS1305以降の処理について処理していないIO情報aがあるか否かを判断する(ステップS1304)。ステップS1305以降の処理について処理していないIO情報aがある場合(ステップS1304:Yes)、キャッシングボリューム312は、未処理のIO情報aを選択する(ステップS1305)。次に、キャッシングボリューム312は、選択したIO情報aが示すキャッシュブロックの状態がdirtyか否かを判断する(ステップS1306)。
選択したIO情報aが示すキャッシュブロックの状態がdirtyである場合(ステップS1306:Yes)、キャッシングボリューム312は、RAM203から、選択したIO情報aが示すキャッシュブロックのデータを格納するデータ領域を確保する(ステップS1307)。そして、キャッシングボリューム312は、選択したIO情報aが示すキャッシュブロックのデータを、確保したデータ領域に書き込む(ステップS1308)。次に、キャッシングボリューム312は、選択したIO情報aの論理LBAと、確保したデータ領域との組を保存する(ステップS1309)。そして、キャッシングボリューム312は、選択したIO情報aに対応する管理データmの状態をfreeに設定する(ステップS1310)。ステップS1310の処理終了後、または、選択したIO情報aが示すキャッシュブロックの状態がdirtyでない場合(ステップS1306:No)、キャッシングボリューム312は、ステップS1304の処理に移行する。
一方、ステップS1305以降の処理について処理していないIO情報aがない場合(ステップS1304:No)、キャッシングボリューム312は、保存した論理LBAとデータ領域との組を、ティアリングドライバ311に通知する(ステップS1311)。ステップS1311の処理終了後、ティアリングドライバ311とキャッシングボリューム312とは、キャッシュメモリ読み出し処理を終了する。キャッシュメモリ読み出し処理を実行することにより、階層ストレージ装置101は、マイグレーション対象のsub−LUNに含まれており、状態がdirtyであるキャッシュブロックのデータを読み出すことができる。さらに、図13で示すキャッシュメモリ読み出し処理は、図9で示したキャッシュメモリ読み出し処理に比べて、IO情報aによりマイグレーション対象のsub−LUNに含まれるキャッシュブロックを特定してある分、検索にかかる負荷を減らすことができる。
以上説明したように、階層ストレージ装置101によれば、HDD112からシーケンシャルに読み出したデータとキャッシュブロックとをマージして、ティアリングSSD103に書き込む。これにより、階層ストレージ装置101は、HDD112へのランダム読出を抑えてマイグレーションにかかる時間を短縮することができる。例えば、階層ストレージシステム100が、ログ蓄積というような、読み出しより書き込みが主に行われるサービスに利用されるとする。この場合、キャッシュSSD111のキャッシュブロックは変更されたものがほとんどとなる。従って、この場合、階層ストレージ装置101は、キャッシュSSD111のキャッシュブロックのうち、マイグレーション対象のsub−LUNに対応する全てを、変更されたキャッシュブロックとして読み出してもよい。
また、階層ストレージ装置101によれば、管理データmを参照して、マイグレーション対象のsub−LUNのうちの変更されたデータをキャッシュSSD111から読み出してもよい。これにより、階層ストレージ装置101は、マイグレーション対象のsub−LUNのうちの変更されていないキャッシュブロック、すなわち、状態がallocであるキャッシュブロックを読み出さなくなる。従って、階層ストレージ装置101は、マイグレーション対象のsub−LUNに対応する全てのキャッシュブロックを読み出す場合に比べて、マージの処理にかかる負荷を抑制することができる。
また、階層ストレージ装置101は、マイグレーション予定のsub−LUN IDの先頭LBAから末尾LBAに対するユーザIOリクエストのアクセス先を示すIO情報aを記憶する。そして、また、階層ストレージ装置101によれば、マイグレーション時にIO情報aを参照して、マイグレーション対象のsub−LUNのうちの変更されたデータをキャッシュSSD111から読み出してもよい。これにより、マイグレーション時には、キャッシュSSD111の全てのキャッシュブロックから、マイグレーション対象のsub−LUNのキャッシュブロックを検索しなくてよく、キャッシュSSD111からの読み出しにかかる負荷を抑制することができる。
また、階層ストレージ装置101は、第1のストレージの記憶装置が磁気ディスクを記憶媒体とするものであり、第2のストレージが半導体メモリを記憶媒体とするものでもよい。これにより、磁気ディスクという、ランダム読み出しがシーケンシャル読み出しより低速な記憶媒体を用いる場合に、階層ストレージ装置101は、第1のストレージの記憶装置に、ランダム読み出しを抑えてマイグレーションにかかる時間を短縮することができる。
また、sub−LUNのマイグレーションの高速化は、キャッシュボリュームと階層化とを組み合わせたストレージシステムを、重複除去など他のストレージコンポーネントとの連携効果を上げるうえでも有効である。具体的には、マイグレーションが短時間で終了する分、他のストレージコンポーネントの効果を、ストレージシステムの運用で引き出すことが可能になるためである。
なお、本実施の形態で説明した階層ストレージ方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本階層ストレージプログラムは、ハードディスク、フレキシブルディスク、CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本階層ストレージプログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)記憶装置と前記記憶装置のデータをライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージから前記第1のストレージより高速にアクセス可能な第2のストレージにデータを移動させる際に、前記記憶装置から、移動対象の記憶領域のデータをシーケンシャルに読み出し、
前記移動対象の記憶領域のデータのうち変更されたデータを前記キャッシュメモリから読み出し、
読み出した前記移動対象の記憶領域のデータと、読み出した前記変更されたデータとをマージし、
マージしたデータを、前記第2のストレージに書き込む、
制御部を有することを特徴とする階層ストレージ装置。
(付記2)前記制御部は、
前記キャッシュメモリが記憶するデータに応じて前記記憶装置の記憶領域における当該データに対応するアドレスと当該データが変更されたものか否かを示す情報とを対応付けた情報を参照して、前記移動対象の記憶領域のデータのうち変更されたデータを前記キャッシュメモリから読み出すことを特徴とする付記1に記載の階層ストレージ装置。
(付記3)前記制御部は、
移動対象予定の記憶領域を示す情報を受け付け、
前記第1のストレージへのアクセスが発生したことに応じて、受け付けた前記移動対象予定の記憶領域に前記アクセスのアクセス先のアドレスが含まれる場合、前記アクセス先のアドレスを示す情報を記憶し、
前記移動対象予定の記憶領域が前記移動対象の記憶領域となる際に、記憶した前記アクセス先のアドレスを示す情報と前記キャッシュメモリが記憶するデータに応じて前記記憶装置の記憶領域における当該データに対応するアドレスと当該データが変更されたものか否かを示す情報とを対応付けた情報とを参照して、前記アクセス先の記憶領域のデータのうち変更されたデータを前記キャッシュメモリから読み出すことを特徴とする付記1または2に記載の階層ストレージ装置。
(付記4)前記記憶装置が磁気ディスクを記憶媒体とし、前記第2のストレージが半導体メモリを記憶媒体とすることを特徴とする付記1〜3のいずれか一つに記載の階層ストレージ装置。
(付記5)記憶装置と前記記憶装置のデータをライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージと、前記第1のストレージより高速にアクセス可能な第2のストレージと、前記第1のストレージと前記第2のストレージとにアクセス可能な階層ストレージ装置とを有する階層ストレージシステムであって、
前記階層ストレージ装置は、
前記第1のストレージから前記第2のストレージにデータを移動させる際に、前記記憶装置から、移動対象の記憶領域のデータをシーケンシャルに読み出し、
前記移動対象の記憶領域のデータのうち変更されたデータを前記キャッシュメモリから読み出し、
読み出した前記移動対象の記憶領域のデータと、読み出した前記変更されたデータとをマージし、
マージしたデータを、前記第2のストレージに書き込む、
ことを特徴とする階層ストレージシステム。
(付記6)コンピュータが、
記憶装置と前記記憶装置のデータをライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージから前記第1のストレージより高速にアクセス可能な第2のストレージにデータを移動させる際に、前記記憶装置から、移動対象の記憶領域のデータをシーケンシャルに読み出し、
前記移動対象の記憶領域のデータのうち変更されたデータを前記キャッシュメモリから読み出し、
読み出した前記移動対象の記憶領域のデータと、読み出した前記変更されたデータとをマージし、
マージしたデータを、前記第2のストレージに書き込む、
処理を実行することを特徴とする階層ストレージ方法。
(付記7)コンピュータに、
記憶装置と前記記憶装置のデータをライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージから前記第1のストレージより高速にアクセス可能な第2のストレージにデータを移動させる際に、前記記憶装置から、移動対象の記憶領域のデータをシーケンシャルに読み出し、
前記移動対象の記憶領域のデータのうち変更されたデータを前記キャッシュメモリから読み出し、
読み出した前記移動対象の記憶領域のデータと、読み出した前記変更されたデータとをマージし、
マージしたデータを、前記第2のストレージに書き込む、
処理を実行させることを特徴とする階層ストレージプログラム。
a IO情報
m 管理データ
100 階層ストレージシステム
101 階層ストレージ装置
102 ティアリングHDD
103 ティアリングSSD
111 キャッシュSSD
112 HDD
401 第1の読み出し部
402 第2の読み出し部
403 マージ部
404 書き込み部
405 受け付け部
406 検索部
407 記憶部

Claims (6)

  1. 記憶装置と前記記憶装置のデータをライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージから前記第1のストレージより高速にアクセス可能な第2のストレージにデータを移動させる際に、前記記憶装置から、移動対象の記憶領域のデータをシーケンシャルに読み出し、
    前記移動対象の記憶領域のデータのうち変更されたデータを前記キャッシュメモリから読み出し、
    読み出した前記移動対象の記憶領域のデータと、読み出した前記変更されたデータとをマージし、
    マージしたデータを、前記第2のストレージに書き込む、
    制御部を有することを特徴とする階層ストレージ装置。
  2. 前記制御部は、
    前記キャッシュメモリが記憶するデータに応じて前記記憶装置の記憶領域における当該データに対応するアドレスと当該データが変更されたものか否かを示す情報とを対応付けた情報を参照して、前記移動対象の記憶領域のデータのうち変更されたデータを前記キャッシュメモリから読み出すことを特徴とする請求項1に記載の階層ストレージ装置。
  3. 前記制御部は、
    移動対象予定の記憶領域を示す情報を受け付け、
    前記第1のストレージへのアクセスが発生したことに応じて、受け付けた前記移動対象予定の記憶領域に前記アクセスのアクセス先のアドレスが含まれる場合、前記アクセス先のアドレスを示す情報を記憶し、
    前記移動対象予定の記憶領域が前記移動対象の記憶領域となる際に、記憶した前記アクセス先のアドレスを示す情報と前記キャッシュメモリが記憶するデータに応じて前記記憶装置の記憶領域における当該データに対応するアドレスと当該データが変更されたものか否かを示す情報とを対応付けた情報とを参照して、前記アクセス先の記憶領域のデータのうち変更されたデータを前記キャッシュメモリから読み出すことを特徴とする請求項1または2に記載の階層ストレージ装置。
  4. 記憶装置と前記記憶装置のデータをライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージと、前記第1のストレージより高速にアクセス可能な第2のストレージと、前記第1のストレージと前記第2のストレージとにアクセス可能な階層ストレージ装置とを有する階層ストレージシステムであって、
    前記階層ストレージ装置は、
    前記第1のストレージから前記第2のストレージにデータを移動させる際に、前記記憶装置から、移動対象の記憶領域のデータをシーケンシャルに読み出し、
    前記移動対象の記憶領域のデータのうち変更されたデータを前記キャッシュメモリから読み出し、
    読み出した前記移動対象の記憶領域のデータと、読み出した前記変更されたデータとをマージし、
    マージしたデータを、前記第2のストレージに書き込む、
    ことを特徴とする階層ストレージシステム。
  5. コンピュータが、
    記憶装置と前記記憶装置のデータをライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージから前記第1のストレージより高速にアクセス可能な第2のストレージにデータを移動させる際に、前記記憶装置から、移動対象の記憶領域のデータをシーケンシャルに読み出し、
    前記移動対象の記憶領域のデータのうち変更されたデータを前記キャッシュメモリから読み出し、
    読み出した前記移動対象の記憶領域のデータと、読み出した前記変更されたデータとをマージし、
    マージしたデータを、前記第2のストレージに書き込む、
    処理を実行することを特徴とする階層ストレージ方法。
  6. コンピュータに、
    記憶装置と前記記憶装置のデータをライトバック方式でキャッシュするキャッシュメモリとを有する第1のストレージから前記第1のストレージより高速にアクセス可能な第2のストレージにデータを移動させる際に、前記記憶装置から、移動対象の記憶領域のデータをシーケンシャルに読み出し、
    前記移動対象の記憶領域のデータのうち変更されたデータを前記キャッシュメモリから読み出し、
    読み出した前記移動対象の記憶領域のデータと、読み出した前記変更されたデータとをマージし、
    マージしたデータを、前記第2のストレージに書き込む、
    処理を実行させることを特徴とする階層ストレージプログラム。
JP2015090895A 2015-04-27 2015-04-27 階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラム Pending JP2016207096A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015090895A JP2016207096A (ja) 2015-04-27 2015-04-27 階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラム
US15/073,010 US10007437B2 (en) 2015-04-27 2016-03-17 Management apparatus, storage system, method, and computer readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015090895A JP2016207096A (ja) 2015-04-27 2015-04-27 階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラム

Publications (1)

Publication Number Publication Date
JP2016207096A true JP2016207096A (ja) 2016-12-08

Family

ID=57147643

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015090895A Pending JP2016207096A (ja) 2015-04-27 2015-04-27 階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラム

Country Status (2)

Country Link
US (1) US10007437B2 (ja)
JP (1) JP2016207096A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11210018B2 (en) * 2019-05-20 2021-12-28 Honeywell International Inc. Holistic linking of data across data sources
CN110543367B (zh) * 2019-08-30 2022-07-26 联想(北京)有限公司 资源处理方法及其装置、电子设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05257610A (ja) * 1992-03-12 1993-10-08 Fujitsu Ltd ファイル読み込み装置及びファイル読み込み方法
JP2013065060A (ja) * 2011-08-05 2013-04-11 Toshiba Corp 情報処理装置およびキャッシュ方法
JP2013077161A (ja) * 2011-09-30 2013-04-25 Toshiba Corp 情報処理装置、ハイブリッド記憶装置、およびキャッシュ方法
JP2014164510A (ja) * 2013-02-25 2014-09-08 Fujitsu Ltd ストレージ制御プログラム、ストレージ制御装置、ストレージシステム、及びストレージ制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8825685B2 (en) 2009-11-16 2014-09-02 Symantec Corporation Selective file system caching based upon a configurable cache map
US9003104B2 (en) * 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US20120215970A1 (en) * 2011-02-22 2012-08-23 Serge Shats Storage Management and Acceleration of Storage Media in Clusters
US20120311271A1 (en) * 2011-06-06 2012-12-06 Sanrad, Ltd. Read Cache Device and Methods Thereof for Accelerating Access to Data in a Storage Area Network
US9430386B2 (en) * 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
WO2015015550A1 (ja) * 2013-07-29 2015-02-05 株式会社日立製作所 計算機システム及び制御方法
US20150074355A1 (en) * 2013-09-12 2015-03-12 Lsi Corporation Efficient caching of file system journals

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05257610A (ja) * 1992-03-12 1993-10-08 Fujitsu Ltd ファイル読み込み装置及びファイル読み込み方法
JP2013065060A (ja) * 2011-08-05 2013-04-11 Toshiba Corp 情報処理装置およびキャッシュ方法
JP2013077161A (ja) * 2011-09-30 2013-04-25 Toshiba Corp 情報処理装置、ハイブリッド記憶装置、およびキャッシュ方法
JP2014164510A (ja) * 2013-02-25 2014-09-08 Fujitsu Ltd ストレージ制御プログラム、ストレージ制御装置、ストレージシステム、及びストレージ制御方法

Also Published As

Publication number Publication date
US20160313915A1 (en) 2016-10-27
US10007437B2 (en) 2018-06-26

Similar Documents

Publication Publication Date Title
JP6355650B2 (ja) 不揮発性記憶デバイスのためのメモリーのリアドレシング
KR100965051B1 (ko) 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치
US8886882B2 (en) Method and apparatus of storage tier and cache management
JP5707540B1 (ja) 階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法
JP5944587B2 (ja) 計算機システム及び制御方法
US8782335B2 (en) Latency reduction associated with a response to a request in a storage system
JP6270827B2 (ja) データ・マイグレーションのための方法、システム、およびコンピュータ・プログラム
JP6131170B2 (ja) 計算機システム、及びデータ配置制御方法
JP5309259B2 (ja) ストレージ装置及びその制御方法
JP2003345514A (ja) 計算機システム
WO2017149592A1 (ja) ストレージ装置
JP2013532862A (ja) ストレージシステム及びその制御情報の管理方法
JPWO2011092738A1 (ja) 性能の異なる実領域群で構成されたプールを有するストレージシステムの管理システム及び方法
US20150363134A1 (en) Storage apparatus and data management
JP6724534B2 (ja) 情報処理装置、重複除去プログラム、及び重複除去方法
JPWO2017006674A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
US9483186B1 (en) Selectable policies for identifiable storage command streams
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
JP6995728B2 (ja) ストレージ装置、管理方法及びプログラム
JPWO2017006675A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
US11474750B2 (en) Storage control apparatus and storage medium
WO2016002325A1 (ja) 情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラム
JP2016207096A (ja) 階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラム
WO2018008676A1 (ja) 情報処理システム、キャッシュ容量配分方法、記憶制御装置、記憶制御方法、及び記録媒体
JP6521694B2 (ja) 記憶制御システム及び記憶制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190107

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190122