JP2017010196A - ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法 - Google Patents

ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法 Download PDF

Info

Publication number
JP2017010196A
JP2017010196A JP2015123741A JP2015123741A JP2017010196A JP 2017010196 A JP2017010196 A JP 2017010196A JP 2015123741 A JP2015123741 A JP 2015123741A JP 2015123741 A JP2015123741 A JP 2015123741A JP 2017010196 A JP2017010196 A JP 2017010196A
Authority
JP
Japan
Prior art keywords
movement
unit
data
area
segment
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.)
Granted
Application number
JP2015123741A
Other languages
English (en)
Other versions
JP6497233B2 (ja
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 JP2015123741A priority Critical patent/JP6497233B2/ja
Priority to US15/176,694 priority patent/US9823855B2/en
Publication of JP2017010196A publication Critical patent/JP2017010196A/ja
Application granted granted Critical
Publication of JP6497233B2 publication Critical patent/JP6497233B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】第1及び第2の記憶装置間でのデータの移動において、入力される要求への応答性能の劣化を抑制する。【解決手段】第1の記憶装置20の記憶領域を第1のサイズで分割した複数の単位領域の中から、前記第1の記憶装置20とは異なる性能の第2の記憶装置30へ第1のデータを移動させる対象の単位領域を決定する決定部11cと、前記決定に応じて、前記第1のサイズよりも小さな第2のサイズの領域に記憶された第2のデータの移動指示を発行する制御部11eと、前記移動指示に応じて、前記第1の記憶装置20から前記第2の記憶装置30への前記第2のデータの移動を行ない、移動中における応答性能に関する情報を取得する取得部12eと、前記応答性能に関する情報に基づいて、前記第1のデータの移動処理の実行可否を判定する判定部11eと、前記判定結果に応じて、前記第1のデータの移動処理を実行する移動部11d,12dとをそなえる。【選択図】図12

Description

本発明は、ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法に関する。
データを格納するストレージシステムとして、複数の記憶媒体(記憶装置)を組み合わせた階層ストレージシステムが用いられることがある。複数の記憶媒体としては、例えば高速アクセスが可能であるが比較的低容量で高価格なSSD(Solid State Drive)、及び大容量で低価格であるが比較的低速なHDD(Hard Disk Drive)が挙げられる。
階層ストレージシステムでは、アクセス頻度が低い記憶領域のデータをHDDに配置する一方、アクセス頻度が高い記憶領域のデータをSSDに配置することで、SSDの使用効率を高め、システム全体の性能を高めることができる。従って、階層ストレージシステムの性能を向上させるには、アクセス頻度が高い記憶領域のデータを効率的にSSDに配置することが望ましい。
アクセス頻度が高いデータをSSDに配置する手法としては、例えば、前日のアクセス頻度に応じて、1日単位でアクセス頻度が高い領域をSSDに配置する手法が知られている。
しかし、ファイル共有等に用いられるストレージシステムへのアクセスパターンにおいては、数分から数十分程度の比較的短時間に記憶領域の狭い範囲へIO(Input Output)要求(以下、単にIOと表記する場合がある)が集中し、時間とともに別の領域に移動することがある。このようなワークロードでは、1日等の長い期間のアクセス頻度の集計では追従できない場合が多い。ワークロードとは、記憶装置へのアクセス分布(記憶装置の利用状況)を表す指標であり、時間の経過と記憶装置のオフセット位置(記憶領域)とに応じて変化する。
短時間に負荷が移動するワークロードに対応する技術として、IO集中の発生を監視し、IO集中が発生する都度、IO集中が発生した領域をHDDからSSDへ移動する技術が知られている(例えば、特許文献1参照)。この技術では、IO集中が収束したら、SSDに移動した領域をHDDへ移動してSSD領域を空けておくことで、次のIO集中が発生した領域を速やかにSSDに移動させることができる。また、このとき、高負荷領域の近傍の領域を繋ぎ合わせた領域を移動対象領域として決定する技術も知られている(例えば、特許文献2参照)。
特開2014−164510号公報 特開2014−191503号公報 特開2014−229144号公報 特開2013−171305号公報 特開平9−214935号公報
しかしながら、上述した技術では、ユーザIOが発生しているときにHDD−SSD間の移動を行なうため、移動中のユーザIOレスポンスが悪化してしまう虞がある。
1つの側面では、本発明は、記憶装置間でのデータの移動において、入力される要求への応答性能の劣化を抑制することを目的とする。
1つの態様では、本件のストレージ制御装置は、第1の記憶装置の記憶領域を第1のサイズで分割した複数の単位領域の中から、前記第1の記憶装置とは異なる性能の第2の記憶装置へ第1のデータを移動させる移動対象の単位領域を決定する決定部をそなえる。また、前記ストレージ制御装置は、前記移動対象の単位領域の決定に応じて、前記第1のサイズよりも小さな第2のサイズの領域に記憶された第2のデータを前記第1の記憶装置から前記第2の記憶装置へ移動させる移動指示を発行する制御部をそなえる。さらに、前記ストレージ制御装置は、前記移動指示に応じて、前記第2のデータの移動を行ない、前記第2のデータの移動中における入出力要求への応答性能に関する情報を取得する取得部をそなえる。また、前記ストレージ制御装置は、前記取得部が取得した前記応答性能に関する情報に基づいて、前記第1のデータの移動処理の実行可否を判定する判定部と、前記判定部の判定結果に応じて、前記第1のデータの移動処理を実行する移動部とをそなえる。
1つの側面では、記憶装置間でのデータの移動において、入力される要求への応答性能の劣化を抑制することができる。
一実施形態の一例としての階層ストレージシステムの構成例を示す図である。 IODBのデータ構造の一例を示す図である。 移動制御部による制御の一例を説明する図である。 階層テーブルのデータ構造の一例を示す図である。 ワークロードの分析例を示す図である。 ワークロードの分析例を示す図である。 移動制御部による予測移動制御の処理手順の一例を説明する図である。 予測セグメントのデータ構造の一例を示す図である。 移動制御部及び観測処理部による観測移動制御の処理手順の一例を説明する図である。 一実施形態に係る動的階層制御におけるSSDの消費量と平均応答時間との関係の一例を、所定の閾値ごとに示した図である。 図10に示すワークロードにおけるSSD消費量の一例を示す図である。 移動制御部及び観測処理部による観測移動制御の処理手順の一例を説明する図である。 データ収集部によるデータ収集処理の動作例を説明するフローチャートである。 ワークロード分析部による移動判定処理の動作例を説明するフローチャートである。 移動制御部による予測移動制御処理の動作例を説明するフローチャートである。 移動制御部による観測移動制御処理の動作例を説明するフローチャートである。 移動指示部による移動指示通知処理の動作例を説明するフローチャートである。 観測処理部による観測処理の動作例を説明するフローチャートである。 階層ドライバの移動処理部による転送開始処理の動作例を説明するフローチャートである。 階層ドライバの移動処理部による転送完了処理の動作例を説明するフローチャートである。 IOマップ部によるIO受信処理の動作例を説明するフローチャートである。 図1に示す階層ストレージ制御装置のハードウェア構成例を示す図である。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕一実施形態
〔1−1〕階層ストレージシステムの構成例
図1は一実施形態の一例としての階層ストレージシステム1の構成例を示す図である。図1に示すように、階層ストレージシステム1は、例示的に、階層ストレージ制御装置10、1以上(図1では1つ)のSSD20、及び1以上(図1では1つ)のHDD30をそなえることができる。
階層ストレージシステム1は、複数の記憶装置をそなえるストレージ装置の一例である。階層ストレージシステム1は、SSD20及びHDD30等の互いに性能の異なる複数の記憶装置を搭載し、図示しないホスト装置に対して階層化された記憶装置の記憶領域を提供することができる。一例として、階層ストレージシステム1は、RAID(Redundant Arrays of Inexpensive Disks)を用いて複数の記憶装置にデータを分散又は冗長化した状態で保存し、ホスト装置に対してRAIDグループに基づく1以上のストレージボリューム(LUN;Logical Unit Number)を提供することができる。
階層ストレージ制御装置10は、ネットワークを介したホスト装置等からのユーザIOに応じて、SSD20及びHDD30へのリード又はライト等の種々のアクセスを行なうことができる。階層ストレージ制御装置10としては、PC(Personal Computer)やサーバ、又はコントローラモジュール(CM;Controller Module)等の情報処理装置(コンピュータ)が挙げられる。
また、一実施形態に係る階層ストレージ制御装置10は、ユーザIOのアクセス頻度に応じて、アクセス頻度が低い領域をHDD30に配置する一方、アクセス頻度が高い領域をSSD20に配置する、動的階層制御を行なうことができる。このように、階層ストレージ制御装置10は、複数の記憶装置間でのデータの移動を制御するストレージ制御装置の一例である。
なお、階層ストレージ制御装置10はLinux(登録商標)に実装されているモジュール(プログラム)であるdevice−mapperの機能を用いることができる。例えば階層ストレージ制御装置10は、動的階層制御において、device−mapperによりストレージボリュームをセグメント(サブLUN)単位で監視し、高負荷となったセグメントのデータをHDD30からSSD20へ移動することで高負荷セグメントへのIOを処理することができる。
ここで、セグメントは、ストレージボリュームを所定のサイズで分割した領域であり、動的階層制御における階層移動の最小単位の領域(単位領域)である。例えばセグメントは1GB(Byte)程度のサイズとすることができる。
SSD20は、種々のデータやプログラム等を格納する記憶装置の一例であり、HDD30は、SSD20とは異なる性能の(例えばより低速な)記憶装置の一例である。一実施形態において、互いに異なる記憶装置(以下、便宜上、第1及び第2の記憶装置と表記する場合がある)として、SSD20等の半導体ドライブ装置及びHDD30等の磁気ディスク装置をそれぞれ例に挙げているが、これらに限定されるものではない。第1及び第2の記憶装置として、例えばリード/ライトの速度差等の互いに性能差のある種々の記憶装置が用いられてもよい。
SSD20及びHDD30は、ストレージボリューム上のセグメントのデータを格納可能な記憶領域を含み、階層ストレージ制御装置10は、セグメント単位でSSD20−HDD30間の領域移動を制御することができる。
なお、図1の例では、階層ストレージシステム1がそれぞれ1つのSSD20及びHDD30をそなえるものとしているが、これに限定されるものではなく、複数のSSD20及び複数のHDD30をそなえてもよい。
〔1−2〕階層ストレージ制御装置の機能構成例
次に、階層ストレージ制御装置10の機能構成例について説明する。
図1に示すように、階層ストレージ制御装置10は、例示的に、階層管理部11、階層ドライバ12、SSDドライバ13、及びHDDドライバ14をそなえることができる。なお、階層管理部11はユーザ空間で実行されるプログラムとして実現され、階層ドライバ12、SSDドライバ13、及びHDDドライバ14はOS(Operating System)空間で実行されるプログラムとして実現されてよい。
階層管理部11は、ストレージボリュームについてトレースされたIOの情報に基づいて、領域移動を行なうセグメントを判定し、判定したセグメントのデータの移動を階層ドライバ12に指示することができる。IOのトレースでは、ブロックIOレベルでのIOをトレースするコマンドであるblktraceが用いられてよい。なお、blktraceに代えて、ディスクIOの利用状況を確認するコマンドであるiostatが用いられてもよい。blktrace及びiostatはOS空間で実行される。
階層管理部11は、例示的に、データ収集部11a、IODB(Database)11b、ワークロード分析部11c、移動指示部11d、及び移動制御部11eをそなえることができる。
データ収集部11aは、blktraceを用いてトレースされたIOの情報を所定間隔(例えば1分間隔)で収集及び集計して、集計結果をタイムスタンプとともにIODB11bへ格納することができる。
データ収集部11aによるIOの情報の集計は、収集したIOの情報に基づいて、セグメントごとに、例えばセグメントを特定する情報及びIO数の集計を含んでよい。
IODB11bは、データ収集部11aにより集計されたセグメントごとのIO数に関する情報を記憶するものであり、例えば図示しないメモリ等により実現される。
図2は、図1に示すIODB11bの一例を示す図である。図2に示すように、IODB11bは、セグメントごとに、セグメントを特定する情報、IO数、及びタイムスタンプを対応させて記憶してよい。一例として、IODB11bには、セグメント“0”について、合計IO数“1000、タイムスタンプ“1”が設定されている。
なお、セグメントを特定する情報として、セグメントの番号(ID;Identifier)を用いているが、これに代えてストレージボリュームの先頭オフセットが用いられてもよい。IO数は、セグメントに対して1分間に行なわれたIOの合計数(iopm;IO per minute)である。タイムスタンプは、時刻を識別する識別子であり、例えば時刻そのものが設定されてもよい。
ワークロード分析部11cは、IODB11bが記憶するセグメントから、SSD20又はHDD30にデータを移動するセグメントを選択し、選択したセグメントに関する情報を移動指示部11d又は移動制御部11eへ通知することができる。
一例として、ワークロード分析部11cは、SSD20にデータを移動するセグメントとして、セグメント数が同時に階層移動を行なう最大のセグメント数(所定数)に達するまで、IO数が多い順にセグメントを抽出することができる。
ワークロード分析部11cによるセグメントの抽出は、IO数又はアクセスの集中率(全体に対するIO数の割合)が所定の閾値よりも高いセグメントを抽出することを含んでもよい。また、セグメントの抽出は、HDD30にデータを移動するセグメントとして、例えばIO数が上記所定数に入らなかった、又はIO数若しくはアクセスの集中率が所定の閾値以下となった、SSD20上のセグメントを抽出することを含んでもよい。
さらに、セグメントの抽出は、上記のSSD20又はHDD30にデータを移動するセグメントの抽出条件に所定回数以上連続して該当したときに、当該セグメントを、SSD20又はHDD30にデータを移動するセグメントとして抽出することを含んでもよい。なお、上記IO数等の他に、リードライト比(rw比)に基づいてセグメントが選択されてもよい。
ここで、ワークロード分析部11cは、移動指示部11dに対して、HDD30内のセグメントについてSSD20への階層移動を指示した後、移動制御部11eに対して、SSD20内の他のセグメントについてHDD30への階層移動を指示することができる。一方、ワークロード分析部11cは、或るセグメントについてSSD20への階層移動を行なっている間に当該セグメントへの負荷が下がると予測される場合には、当該セグメントについてはHDD30への階層移動を抑制し、他のセグメントについてHDD30への階層移動を指示してもよい。
例えば、ワークロード分析部11cは、スパイクの平均余命時間と階層移動にかかる時間とに基づいて、階層移動中のセグメントへの負荷が下がるか否かを判断できる。なお、スパイクとは、一部のセグメントに負荷が集中することであり、平均余命時間は、負荷が継続する継続時間から既に実行済みの実行時間を減じた時間であり、ワークロードに応じて定まる値である。管理者等は予め平均余命時間を求め、階層ストレージ制御装置10に設定しておくことができる。
具体的には、ワークロード分析部11cは、SSD20にデータを移動するセグメントを抽出し、抽出したセグメントについてSSD20にデータを移動するコスト(時間)を計算する。そして、ワークロード分析部11cは、平均余命時間が移動時間以下になる場合には、HDD30からSSD20への階層移動を行なわずに、SSD20からHDD30への階層移動を行なうと判断することができる。
このようなワークロード分析部11cの処理は、所定のタイミングで行なわれてよいが、期間によってはHDD30からSSD20へ移動するセグメント又はSSD20からHDD30へ移動するセグメントが抽出及び通知されない場合もある。この場合、ワークロード分析部11cは、移動制御部11eに対して通知を行なわなくてもよいし、セグメントを選択しなかった旨を通知してもよい。なお、所定のタイミングには、例えば1分ごと等の所定の周期で到来するタイミングが含まれてよい。
このように、ワークロード分析部11cは、SSD20の記憶領域を第1のサイズで分割した複数のセグメントの中から、HDD30へ第1のデータを移動させる移動対象の単位領域を決定する決定部の一例である。また、この決定部としてのワークロード分析部11cは、所定のタイミングで、HDD30におけるセグメントごとのIO数に基づき、HDD30からSSD20への移動対象のセグメントを決定し、決定したセグメントの移動を移動指示部11dへ指示することができる。
移動指示部11dは、ワークロード分析部11c又は移動制御部11eからの指示に基づいて、階層ドライバ12に、選択されたセグメントのデータの、HDD30からSSD20への移動、又は、SSD20からHDD30への移動を指示することができる。
移動指示部11dによる移動の指示は、選択されたセグメントのストレージボリューム上のオフセットをHDD30上のオフセットに変換して、セグメントごとにデータの移動を指示することを含んでよい。例えば、HDD30のセクタサイズが512Bである場合に、ボリューム上のオフセットが1GBであれば、HDD30上でのオフセットは1×1024×1024×1024/512=2097152となる。
移動制御部11eは、上述したIO数に基づくセグメントごとの階層移動時にユーザIOが発生した場合のIOレスポンスの劣化を防ぐために、後述する制御を行なうものである。移動制御部11eは、例示的に、予測セグメントDB11f及び移動キュー11gをそなえることができる。
図3は移動制御部11eによる制御の一例を説明する図である。図3において「IO分析による移動」の矢印で示すように、SSD20−HDD30間の階層移動は、ワークロード分析部11cによるIO数の分析によって行なわれる。移動制御部11eは、IO分析による移動に加えて、予測移動(Proactive Migration)制御処理及び観測移動(Observational Migration)制御処理を行なうことができる。
予測移動制御では、IO分析によるHDD30からSSD20への移動に加えて、近い将来IOが集中する(IO数が増加する)セグメントを予測し、IOが集中する前に当該セグメントをSSD20へ移動することができる。予測移動制御により、IOが集中する前に当該セグメントのデータをSSD20に移行できるため、IO数の分析によりIOが集中しているセグメントのデータを移行するよりもユーザIOへの影響を低減させることができる。
観測移動制御では、IO分析によるSSD20からHDD30への移動の実行に先立って、セグメントサイズよりも十分小さなサイズでの階層移動を実行してHDD30の負荷が低いタイミングを検出し、検出したタイミングでIO分析による移動を行なうことができる。観測移動制御により、IO分析による移動対象のセグメントの決定直後に移動を実行するよりもユーザIOへの影響を低減させることができる。
予測移動制御及び観測移動制御の詳細については後述する。
階層ドライバ12は、例示的に、IOマップ部12a、IOキュー12b、階層テーブル12c、移動処理部12d、及び観測処理部12eをそなえることができる。
IOマップ部12aは、ホスト装置からのストレージボリュームに対するIO要求を処理することができる。例えばIOマップ部12aは、階層テーブル12cを用いてIO要求をSSDドライバ13又はHDDドライバ14に振り分け、SSDドライバ13又はHDDドライバ14からのIOレスポンスをホスト装置に返す処理を行なう。
IOキュー12bは、IO要求を一時的に格納するFIFO(First-In First Out)構造の記憶領域であり、図示しないメモリ等により実現される。
一例として、階層移動中のセグメントに対してIO要求が発行されると、IOマップ部12aは、当該セグメントのデータの移動が完了するまで、当該IO要求をIOキュー12bに格納し、IO要求を保留する。データの移動が完了すると、IOマップ部12aは、IOキュー12bから当該IO要求を読み出して、SSDドライバ13又はHDDドライバ14への振り分けを再開する。
階層テーブル12cは、IOマップ部12aによるIO要求の振り分け及び移動処理部12d等による階層制御に用いられるテーブルであり、例えば図示しないメモリ等により実現される。
階層テーブル12cのデータ構造の一例を図4に示す。図4に示すように、階層テーブル12cは、SSD20にデータが移動されたセグメントごとに、SSDオフセットと、HDDオフセットと、状態とを対応させて記憶することができる。
SSDオフセットは、SSD20にデータが移動されたセグメントのSSD20におけるオフセットを示す。SSDオフセットは、ボリューム上のセグメントサイズ(例えば1GB)に対応するオフセット“2097152”を単位とする固定値であり、例えば、“0”、“2097152”、“4194304”、“6291456”、...となる。
HDDオフセットは、SSD20にデータが移動されたセグメントのHDD30におけるオフセットを示す。HDDオフセットの値“NULL”は、SSDオフセットで指定されるSSD20の領域が未使用であることを示す。
状態は、セグメントの状態を示し、“allocated”、“Moving(HDD→SSD)”、“Moving(SSD→HDD)”、又は“free”を含む。“allocated”はセグメントがSSD20に割り当てられていることを示し、“Moving(HDD→SSD)”はセグメントのデータがHDD30からSSD20に転送中であることを示す。“Moving(SSD→HDD)”はセグメントのデータがSSD20からHDD30に転送中であることを示し、“free”はSSDオフセットで指定されるSSD20の領域が未使用であることを示す。
IOマップ部12aは、上述した階層テーブル12cを参照することで、IO要求をSSDドライバ13又はHDDドライバ14のいずれに振り分けるかを判定することができるとともに、IO要求がセグメント移動中であるか否かを判定することができる。
移動処理部12dは、移動指示部11dからセグメント移動指示を受け取ると、HDD30又はSSD20の移動対象の単位領域に記憶されたデータをSSD20又はHDD30に移動する移動処理を実行することができる。このとき、移動処理部12dは、階層テーブル12cを参照して、セグメントの移動指示で指定されたセグメントのデータをSSD20−HDD30間で移動する。
より具体的に、移動処理部12dは、セグメント移動指示を受け取ると、階層テーブル12c内のHDDオフセットより“NULL”となっているエントリを探し、セグメント移動指示で指定されたHDDオフセット情報と、状態とを登録する。なお、このとき登録される状態は、“Moving(HDD→SSD)”又は“Moving(SSD→HDD)”となる。そして、移動処理部12dは、SSD20−HDD30間のデータの転送指示をkcopydに発行する。
また、移動処理部12dは、kcopydにより全ての領域内のデータの転送が完了すると、階層テーブル12cから転送が完了したエントリを探し、状態が“Moving(HDD→SSD)”の場合、当該状態を“allocated”に変更する。一方、移動処理部12dは、状態が“Moving(SSD→HDD)”である場合、当該状態を“free”に変更するとともに、対応するHDDオフセットを“NULL”に設定する。
なお、kcopydは、device−mapperに実装され、デバイス間のデータコピーを実行するモジュール(プログラム)であり、OS空間で実行される。
このように、移動指示部11d及び移動処理部12dは、ワークロード分析部11c又は移動制御部11eから指示された領域に記憶されたデータを、セグメントごとにSSD20及びHDD30間で移動する移動部の一例である。
観測処理部12eは、移動制御部11eからの移動指示(観測移動指示)に応じて、SSD20からHDD30へセグメントサイズよりも十分小さなサイズの階層移動を行ない、そのときのユーザIOレスポンスを観測することができる。
観測処理部12eの詳細については後述する。
SSDドライバ13は、階層ドライバ12からの指示に基づいてSSD20へのアクセスを制御する。HDDドライバ14は、階層ドライバ12からの指示に基づいてHDD30へのアクセスを制御する。
〔1−3〕予測移動制御及び観測移動制御の説明
次に、予測移動制御及び観測移動制御の詳細について説明する。
(予測移動制御)
はじめに、図5〜図8を参照して、予測移動制御の詳細について説明する。
Samba等のソフトウェアを実装したファイルシステムにおける一部のストレージワークロードの分析を行なうと、全IOの半数以上が全記憶容量の数%未満の領域に10〜50分程度発生し、その後別の領域に移動することが分かる。
図5は全容量が4.4TBのシステムにおけるストレージワークロードの分析例を示す図である。図5に示すように、数GBの範囲に全IOの半数以上が10〜50分程度集中し、別の領域(ボリュームオフセット、LBA;Logical Block Address)にそのIO集中が移動することが分かる。
上述したワークロード分析部11cを含むIO分析では、図5に示すようなIO集中をその都度抽出し、SSD20等の高速ストレージに移動することで性能向上を図ることができる。
図6は図5とは異なるストレージワークロードの分析例を示す図である。図6から、IO集中の発生するLBAが時間経過とともに移動することが容易に読み取れる。また、このLBAの移動速度は略等速度であることが分かる。
そこで、予測移動制御では、IO数の増加する(IOの集中する)領域が時間とともに移動(遷移)することに着目し、当該領域の遷移速度に基づき近い将来IO集中が移動する領域を求め、IO集中が発生する前にSSD20へ移動を行なうことができる。
このとき、IO分析による移動と予測移動制御による移動とを同時に行なうと、かえってユーザIOのレスポンスが悪化する可能性がある。そこで、IO分析による移動がないタイミングで予測移動制御を行なうことで、IOレスポンスの悪化を回避することができる。
次に、図7を参照して、移動制御部11eによる予測移動制御の処理手順の一例について説明する。図7の(i)に示すように、移動制御部11eは、予測移動制御において、プリロードするセグメントを予測し、予測したセグメントのセグメントID及び現在時刻を予測セグメントDB11f(図1参照)に格納することができる。
この(i)の処理は、IO分析によりHDD30からSSD20への移動対象として選択された(指示された)セグメントの情報(例えばセグメントID)をワークロード分析部11cから受信したことを契機に実行されてよい。このとき、移動制御部11eは、ワークロード分析部11cから指示されたセグメントに対して、プリロードする幅Nを加算した値を予測(proactive)セグメントとして決定することができる。
プリロードする幅(移動幅)Nは、指示されたセグメントから何個先のセグメントを事前にロードさせるかを定義する値であり、IOの集中するセグメントの遷移速度から求めることができる。例えば移動幅Nは、予測時間t分後にIOが発生するセグメントをHDD30からSSD20へ事前に読み込ませる場合、遷移速度、例えばオフセット上での移動速度Kに予測時間tを乗じて算出することができる。
セグメントの移動速度K(又は移動幅N)は、階層ストレージシステム1の管理者等による事前のワークロードの分析によって予め取得され階層管理部11に設定されてもよいし、階層管理部11が算出してもよい。
階層管理部11が移動速度Kを算出する場合、例えば移動制御部11eは、ワークロード分析部11cが複数のタイミングで決定した複数のセグメントに基づいて、HDD30の記憶領域におけるIO数が増加するセグメントの移動速度を取得することができる。
一例として、移動制御部11eは、今回ワークロード分析部11cから指示されたセグメント及び現在時刻と、前回指示されたセグメント及びそのときの時刻との差分から傾きを求めることで移動速度Kを算出することができる。例えばセグメントIDがLBAの昇順で採番される場合やセグメントIDがセグメントの先頭オフセットであるような場合、移動制御部11eは、(今回のセグメントID−前回のセグメントID)/(今回の時刻−前回の時刻)の算出によって移動速度Kを求めることができる。
なお、移動速度Kは、上述したように今回及び前回指示されたセグメントに基づき求められてもよいし、前々回又はそれ以前の一以上のタイミングで指示されたセグメントについても考慮して、近似により求められてもよい。
移動制御部11eは、上述した処理により予測セグメントを算出すると、タイムスタンプとともに予測セグメントDB11fに格納する。
予測セグメントDB11fは、移動制御部11eにより予測された予測セグメントに関する情報を記憶するものであり、例えば図示しないメモリ等により実現される。
予測セグメントDB11fのデータ構造の一例を図8に示す。予測セグメントDB11fは、例示的に、セグメントを特定する情報及びタイムスタンプを記憶することができる。セグメントを特定する情報は、IODB11bと同様に、例えばセグメントIDであってもよいし、セグメントの先頭オフセット等であってもよい。タイムスタンプは、時刻を識別する識別子であり、例えば時刻そのものが設定される。一例として、予測セグメントDB11fには、セグメント“10”を予測したときの時刻(タイムスタンプ)として“xxxxxx...x”が設定されている。
このように、移動制御部11eは、ワークロード分析部11cが決定したセグメントに基づいて、IO数が所定時間後に増加するセグメント(予測セグメント)を予測する予測部の一例である。
また、図7の(ii)に示すように、移動制御部11eは、予測移動制御において、ワークロード分析部11cによる移動指示がないタイミングで、移動指示部11dに対してセグメントの移動を指示することができる。
この(ii)の処理において、移動制御部11eは、予測セグメントDB11fからセグメント(予測セグメント)の情報を取り出し、現在時刻及び移動速度Kに基づく補正を行なった上で、補正後のセグメントの移動指示を発行することができる。
ここで、予測セグメントDB11fに格納された予測セグメントは、(i)の処理が行なわれたときの時刻(タイムスタンプ)からt分後にIOが集中すると予測されたセグメントであり、(i)の処理が行なわれた時点でのプリロードに適したセグメントである。
従って、移動制御部11eは、予測セグメントに対して現在時刻でのプリロードに適したセグメントとする補正を行ない、現在時刻からt分後にIOが集中すると予測される補正後のセグメントを算出することができる。
例えば、移動制御部11eは、(i)の処理が行なわれた時刻から現在時刻までの間に進んだ(移動した)セグメントを、予測セグメントDB11fから取り出した予測セグメントに反映することで、現在時刻からt分後にIOが集中するセグメントを取得することができる。
一例として、移動制御部11eは、予測セグメントDB11fから取り出したタイムスタンプ((i)の処理が行なわれた時刻)と現在時刻との差分に対して移動速度Kを乗じることで、当該差分の時間に進む(移動する)セグメント数(又はオフセット量)を取得することができる。そして、移動制御部11eは、予測セグメントDB11fから取り出したセグメントと、取得したセグメント数とを加算して、補正後のセグメントを求めることができる。
なお、上述のように、IO分析による移動と予測移動制御による移動とを同時に行なうと、かえってユーザIOのレスポンスが悪化する可能性がある。ワークロード分析部11cにおいては、上述のように1分間隔等の所定の周期で移動するセグメントの選択が行なわれる。しかし、直前の周期からIOが集中するセグメントに変化がないような場合には、図7のワークロード分析部11cの処理において「移動無し」とラベルを付した破線矢印の周期のように、移動するセグメントが選択されない場合もある。
そこで、移動制御部11eは、ワークロード分析部11cからセグメントの移動指示がない(セグメントの情報を通知されない又はセグメントを選択しなかったことを通知された)周期で、上記(ii)の処理を行なうことができる。
このように、移動制御部11eは、ワークロード分析部11cがセグメントの移動を移動指示部11dへ指示しなかったタイミングで、予測した予測セグメントに基づくセグメントの移動を移動指示部11dへ指示する指示部の一例である。
以上のように、移動制御部11eによる予測移動制御によれば、近い将来IOの集中が見込まれるセグメントを、HDD30から性能の良いSSD20へ事前に移動することができる。従って、HDD30からSSD20へのセグメントの移動中におけるユーザIOレスポンスの劣化を抑制することができる。
(観測移動制御)
次に、図9〜図12を参照して、観測移動制御について説明する。
観測移動制御では、予測移動制御とは逆に、SSD20からHDD30へのセグメントの移動中におけるユーザIOレスポンスの劣化を抑制することができる。
動的階層移動では、上述のように移動の最小単位としてセグメントが用いられる。セグメントは1GB程度の比較的大きな単位であるため、HDD30負荷が高いときに階層移動を実行してしまうと、大量のユーザIOのレスポンスが悪化する可能性がある。
そこで、観測移動制御では、セグメントサイズよりも十分小さなサイズ(以下、観測移動サイズと表記する)での観測移動をSSD20及びHDD30の空き領域間で実行し、そのときのユーザIOレスポンスが悪化しなければ引き続き本来の(指示された)移動を実行することができる。
なお、観測移動サイズとしては、セグメントサイズが1GBである場合、例えば200MB(セグメントサイズの1/5)以下、好ましくは50MB(セグメントサイズの1/20)程度のサイズとすることができる。
但し、観測移動サイズが小さ過ぎる場合、HDD30において負荷が生じる前に移動が完了してしまい、ユーザIOレスポンスの観測が正しく行なわれない可能性がある。従って、観測移動サイズは、HDD30に負荷を生じさせ、且つ階層ストレージシステム1全体のユーザIOレスポンスに大きな影響を与えない範囲で決定されることが好ましい。
図9を参照して、移動制御部11e及び観測処理部12eによる観測移動制御の処理手順の一例について説明する。図9の(I)に示すように、移動制御部11eは、観測移動制御において、SSD20からHDD30へのセグメントの移動前に、階層ドライバ12(観測処理部12e)へ観測移動を指示することができる(図12の(1)参照)。
この(I)の処理は、IO分析によりSSD20からHDD30への移動対象として選択された(指示された)セグメントの情報(例えばセグメントID)をワークロード分析部11cから受信したことを契機に実行されてよい。このとき、移動制御部11eは、ワークロード分析部11cから指示されたセグメントの情報を、移動キュー11g(図1参照)に格納することができる。
移動キュー11gは、ワークロード分析部11cによりSSD20からHDD30への移動対象として指示されたセグメントを示す情報を一時的に記憶するFIFO構造の記憶領域であり、例えば図示しないメモリ等により実現される。移動キュー11gによって、階層移動に係るセグメントの情報をキューイングすることにより、階層移動のタイミングを調整することができる。
一例として、移動制御部11eは、HDD30へ移動するセグメントの情報をワークロード分析部11cから受信すると、受信順に当該セグメントの情報を移動キュー11gに格納する。また、移動制御部11eは、移動キュー11gにセグメントの情報が1つでも格納されている場合、階層ドライバ12に対して観測移動を指示する。
階層ドライバ12(観測処理部12e)は、移動制御部11eからの観測移動の指示に応じて、SSD20からHDD30への空き領域間での観測移動を、例えばkcopydへ指示し(図12の(2)参照)、kcopydに観測移動を行なわせることができる(図12の(3)参照)。なお、観測処理部12eは、移動指示とともにIO分析による移動対象のセグメントの情報を受信した場合、当該移動対象のセグメントのうちの一部の領域を観測移動サイズとして選択してもよい。観測移動が行なわれる領域としては上述したものに限定されず、任意の領域が選択されてよい。
観測処理部12eは、ユーザIOの応答性能に関する情報を観測するために、カウンタ12fをそなえることができる(図1参照)。カウンタ12fは、観測移動サイズのデータの移動中においてユーザIOに対する応答時間が所定の閾値を超えた回数をカウントすることができる。
例えば観測処理部12eは、移動制御部11eからの観測指示に応じて、観測移動サイズでの移動を行なう。また、観測処理部12eは、図9の(II)に示すように、所定期間、例えば数秒〜数十秒程度の間、ユーザIOへの応答時間を計測し(図12の(4)参照)、応答時間が所定の閾値を超えた回数をカウンタ12fによりカウントする(図12の(5)参照)。所定期間を満了すると、観測処理部12eは、カウンタ12fのカウント値を移動制御部11eへ通知することができる(図12の(6)参照)。なお、所定期間の間、選択した領域の観測移動は繰り返し行なわれてもよい。
所定の閾値としては、例えば数十ms〜数百ms、一例として300ms(ミリ秒)程度が挙げられる。
移動制御部11eは、図9の(III)に示すように、観測指示を発行してから所定期間経過後、観測処理部12eからカウント値を受信すると、受信したカウント値に基づいてセグメントサイズでの階層移動の実行可否を判定することができる。
例えば移動制御部11eは、受信したカウント値がレスポンスの劣化を示さない値、一例として0である場合、応答の遅いユーザIOが発生しなかったため、セグメントサイズでの階層移動の処理を行なうと判定することができる(図9の(III−2)参照)。一方、移動制御部11eは、受信したカウント値がレスポンスの劣化を示す値、一例として0よりも大きい値である場合、応答の遅いユーザIOが発生したため、現在のインターバル(周期)でのセグメントサイズでの階層移動の処理を行なわないと判定することができる(図9の(III−1)参照)。
なお、移動制御部11eは、階層移動の処理を行なうと判定した場合、移動キュー11gに格納されたセグメントの情報を取り出して移動指示部11dへ順次通知し、階層移動を指示することができる(図12の(7)参照)。指示を受けた移動指示部11dは、上述のように階層ドライバ12に対して階層移動を指示し(図12の(8)参照)、移動処理部12dが例えばkcopydへ転送を指示して(図12の(9)参照)、階層移動が実施される(図12の(10)参照)。
一方、移動制御部11eは、階層移動の処理を行なわないと判定した場合、移動キュー11gに格納されたセグメントの情報を取り出さず(階層移動を中止し)、次回の周期まで待機することができる。
このように、移動制御部11eは、SSD20からHDD30への階層移動の指示をワークロード分析部11cから受信すると、階層移動に係るセグメントの情報をキューイングし、観測処理部12eに対してセグメントサイズよりも十分に小さいサイズの移動を空き領域に実行させることができる。そして、移動制御部11eは、ユーザIOの悪化が観測された場合には階層移動を中止し、ユーザIOの悪化が観測されない場合に、IO分析で指定されたセグメントの移動を指示することができる。
従って、HDD30の負荷状況をリアルタイムに検出してSSD20からHDD30への階層移動の可否を判定し、ユーザIOレスポンスに影響を与えないタイミングで階層移動を行なうことができ、ユーザIOレスポンスの悪化を抑制することができる。
以上のように、移動制御部11eは、階層移動処理において、移動対象のセグメントの決定に応じて、第1のサイズよりも小さな第2のサイズの領域に記憶された第2のデータをSSD20からHDD30へ移動させる移動指示を発行する制御部の一例である。
また、観測処理部12eは、移動制御部11eからの移動指示に応じて、第1のサイズよりも小さな第2のサイズの領域に記憶されたデータをSSD20からHDD30へ移動し、当該データの移動中における応答性能に関する情報を取得する取得部の一例である。
さらに、移動制御部11eは、観測処理部12eが取得した応答性能に関する情報に基づいて、階層移動処理の実行可否を判定する判定部の一例である。
なお、上述した観測移動サイズやカウンタ12fの所定の閾値の最適値は、階層ストレージシステム1で使用される機器(例えばSSD20やHDD30、バス、その他の装置等)やワークロードによって変動することが容易に想像できる。一実施形態に係る構成では、1GBのセグメントサイズに対して観測移動サイズを50MBとし、カウンタ12fの閾値を300msとしているが、使用する機器等の条件に応じて、これらのパラメータは適宜変化させてよい。
図10は一実施形態に係る動的階層制御(予測移動制御及び観測移動制御を含む)におけるSSD20の消費量(GB)と平均応答時間(ms)との関係の一例を、所定の閾値ごとに示す図(表)である。また、図10においては、HDDに加えてライトバック方式のキャッシュとしてSSDを実装するFACEBOOK(登録商標) FlashCacheでの評価結果を対比例として示している。
なお、図10に示す評価では、以下の構成のシステムを用いている。
・PC…CPU(Central Processing Unit):Intel(登録商標) Xeon(登録商標) E5−2650L×2,メモリ:32GB,OS:Cent−OS 5.4(64bit)
・HDD30…SAS(Serial Attached SCSI(Small Computer Storage Interface))対応,10,000rpm,450GB×4,RAID0構成
・SSD20…240GB
さらに、対象となるワークロードはリードライト比が56:44であり、ワークロード容量が293GBである。
図10において、「SSD消費量」は予測移動制御及び観測移動制御を用いて割り当てられるSSD20の最大消費量であり、FlashCacheにも同じ値がセットされている。「ユーザIO閾値」は観測移動制御での所定の閾値である。
図10に示すように、SSD消費量が75GB以上であると、予測・観測移動制御での平均応答時間はFlashCacheよりも短くなり、特に、SSD消費量が99GBの場合には、予測・観測移動制御での平均応答時間はFlashCacheより45.9%も高速となることが分かる。
図11は図10に示すワークロードにおけるSSD消費量の一例を示す図である。図11に示すように、移動制御部11eによる予測移動制御及び観測移動制御が実施されている場合、ユーザIOレスポンスが所定の閾値を下回ると、20分程度でSSD消費量が0まで減少することが分かる。また、図11において、所定の閾値が大きいほどSSD20の使用量は減少し、使用量が0になるまでの時間も短くなることが分かる。
図10及び図11に示す評価結果から、所定の閾値を小さくするとSSD消費量は増加するが応答時間は短くなり、所定の閾値を大きくするとSSD消費量は減少するが応答時間は長くなることが分かる。
従って、所定の閾値は、SSD20の容量と要求される応答時間とのトレードオフの関係を考慮して設定されることが好ましい。このため、階層管理部11及び階層ドライバ12は、観測移動サイズやカウンタ12fの所定の閾値等のパラメータを最適値に調整する機能をそなえてもよい。
以上のように、一実施形態に係る階層ストレージシステム1によれば、キャッシングを実装するFlashCacheに対して、平均ユーザIOレスポンスを約40%向上できることが分かる。
〔1−4〕階層ストレージシステムの動作例
次に、上述の如く構成された階層ストレージシステム1の動作例を、図13〜図21を参照して説明する。
はじめに、図13を参照してデータ収集部11aによるデータ収集処理の動作例を説明する。なお、データ収集部11aは、blktraceコマンドを所定時間(例えば60秒間)実行して、終了することを条件として起動され、データ収集処理を実行するものとする。
図13に示すように、データ収集部11aは、blktraceコマンドの実行により得られたトレース結果を取り出す(ステップS1)。次いで、データ収集部11aは、1GBオフセット単位(セグメント単位)で各セグメントのIO数を集計し(ステップS2)、タイムスタンプとともにIODB11bに書き込み(ステップS3)、このインターバルでの処理が終了する。
このように、データ収集部11aは、定期的に各セグメントについてIO数を監視することで、流動的に変化するワークロードがユーザIOに与える影響をワークロード分析部11cにフィードバックすることができる。
次に、図14を参照してワークロード分析部11cによる移動判定処理の動作例を説明する。図14に示すように、ワークロード分析部11cは、IODB11bから直近のタイムスタンプのセグメントについてIO数を取り出し(ステップS11)、セグメント数が所定数に達するまで、IO数が多い順に候補セグメントを抽出する(ステップS12)。
次いで、ワークロード分析部11cは、予め求められた平均余命時間が全候補セグメントに係る移動時間よりも大きいか否かを判定する(ステップS13)。
平均余命時間が当該移動時間以下の場合(ステップS13のNoルート)、処理がステップS15に移行する。一方、平均余命時間が当該移動時間よりも大きい場合(ステップS13のYesルート)、ワークロード分析部11cは、候補セグメントの情報を移動指示部11d及び移動制御部11eへそれぞれ通知し、データの移動(HDD30からSSD20)を指示し(ステップS14)、処理がステップS15に移行する。
ステップS15では、ワークロード分析部11cは、SSD20上のセグメントから候補セグメントに含まれないセグメント、例えばIO数が比較的少ないセグメントを抽出する。そして、ワークロード分析部11cは、抽出したセグメントの情報を移動制御部11eへ通知し、データの移動(SSD20からHDD30)を指示する(ステップS16)。
次いで、ワークロード分析部11cは、所定時間、例えば60秒スリープし(ステップS17)、処理がステップS11に移行する。
なお、ワークロード分析部11cは、ステップS12において、IO数又はアクセスの集中率(全体に対するIO数の割合)が所定の閾値よりも高いセグメントを抽出してもよい。また、ワークロード分析部11cは、ステップS15において、HDD30にデータを移動するセグメントとして、例えばIO数又はアクセスの集中率が所定の閾値以下となったSSD20上のセグメントを抽出してもよい。さらに、ワークロード分析部11cは、ステップS12及びS15で抽出するセグメントとして、当該抽出条件に所定回数以上連続して該当したセグメントを選択してもよい。
このように、ワークロード分析部11cは、IOの集中度が高いセグメントのデータをHDD30からSSD20に移動するように移動指示部11d及び移動制御部11eに指示することによって、ユーザはHDD30のデータに高速にアクセスすることができる。
また、ワークロード分析部11cは、IOの集中度が低くなったセグメントのデータをSSD20からHDD30に移動するように移動制御部11eに指示することによって、比較的高価格、低容量のSSD20を有効利用することができる。
次に、図15を参照して移動制御部11eによる予測移動制御処理の動作例を説明する。図15に示すように、移動制御部11eは、ワークロード分析部11cから移動指示(HDD30からSSD20)を受信したか否かを判定し(ステップS21)、移動指示を受信している場合(ステップS21のYesルート)、処理がステップS22に移行する。
ステップS22では、移動制御部11eは、予測移動を行なうセグメントのID“p_seg_id”を下記(1)式から算出する。
p_seg_id=seg_id+N (1)
ここで、“seg_id”はワークロード分析部11cから移動を指示されたセグメントのIDであり、“N”は予測移動(HDD30からSSD20へのプリロード)を行なう幅である。なお、セグメントの移動速度を“K”とし、予測時間“t”分後にIOが発生するセグメントをプリロードする場合、“N”は下記(2)式から算出される。
N=K*t (2)
次いで、移動制御部11eは、算出した予測セグメントのID“p_seg_id”を現在時刻“timestamp”とともに予測セグメントDB11fへ格納し(ステップS23)、ワークロード分析部11cが次の移動判定を行なうまでスリープして(ステップS27)、処理がステップS21に移行する。
一方、ステップS21において、ワークロード分析部11cから移動指示を受信していない場合(ステップS21のNoルート)、移動制御部11eは、予測セグメントDB11f内に予測移動待ちのセグメントが存在するか否かを判定する(ステップS24)。
予測移動待ちのセグメントが存在しない場合(ステップS24のNoルート)、処理がステップS27に移行する。一方、予測移動待ちのセグメントが存在する場合(ステップS24のYesルート)、移動制御部11eは、予測移動待ちの“p_seg_id”を予測セグメントDB11fから1つ取り出し、下記(3)式を算出する(ステップS25)。
new_p_seg_id=p_seg_id+(current time - timestamp)*K (3)
そして、移動制御部11eは、算出した“new_p_seg_id”を移動処理部12dへ通知し、データの移動(HDD30からSSD20)を指示して(ステップS26)、処理がステップS24に移行する。
このように、移動制御部11eは、HDD30からSSD20への移動を指示されたセグメントの情報に基づき予測移動を行なう予測セグメントを算出し、移動指示の無いタイミングで、予測セグメントに基づくセグメントの移動を移動指示部11dへ指示することができる。従って、ワークロード分析部11cの分析による階層移動の動作には影響を与えずに、近い将来IOが集中するセグメントについて効果的な階層移動を行なうことができる。
次に、図16を参照して移動制御部11eによる観測移動制御処理の動作例を説明する。図16に示すように、移動制御部11eは、ワークロード分析部11cから移動指示(SSD20からHDD30)を受信したか否かを判定し(ステップS31)、移動指示を受信していない場合(ステップS31のNoルート)、処理がステップS33に移行する。
一方、移動指示を受信している場合(ステップS31のYesルート)、移動制御部11eは、ワークロード分析部11cから移動を指示されたセグメントのID“seg_id”を全て移動キュー11gへ挿入し(ステップS32)、処理がステップS33に移行する。
ステップS33では、移動制御部11eは、移動キュー11gにHDD30への移動待ちの“seg_id”が存在するか否かを判定する。移動待ちの“seg_id”が存在しない場合(ステップS33のNoルート)、移動制御部11eは、ワークロード分析部11cが次の移動判定を行なうまでスリープし(ステップS37)、処理がステップS31に移行する。
ステップS33において、移動待ちの“seg_id”が存在する場合(ステップS33のYesルート)、移動制御部11eは、階層ドライバ12の観測処理部12eに対して、SSD20及びHDD30の空き領域間の移動を指示し、所定時間、例えばM秒(Mは0以上の実数)スリープする(ステップS34)。
なお、ステップS34において、移動制御部11eは、移動待ちの“seg_id”の少なくとも1つの情報を観測処理部12eへ通知し、通知したセグメントにおける観測サイズの領域について観測移動を指示してもよい。また、移動制御部11eは、SSD20の空き領域のボリューム上のオフセットをHDD30上のオフセットに変換し、変換したオフセットを観測移動の指示に含めてもよい。
次いで、移動制御部11eは、観測処理部12eから通知されたカウンタ12fのカウント値が0であるか否かを判定する(ステップS35)。カウント値が0ではない場合(ステップS35のNoルート)、処理がステップS37に移行する。一方、カウント値が0である場合(ステップS35のYesルート)、移動制御部11eは、移動キュー11g内の“seg_id”を順番に取り出して移動指示部11dへ通知し、データの移動(SSD20からHDD30)を指示して(ステップS36)、処理がステップS37に移行する。
なお、ステップS35におけるカウント値の判定閾値は0に限定されるものではなく、観測処理部12eでのカウンタ12fの所定の閾値との関係で他の値が設定されてもよい。
このように、移動制御部11eは、SSD20からHDD30へのセグメントの移動前に、観測処理部12eに対して観測サイズでの観測移動を指示し、観測移動中のユーザIOの応答性能に関する情報に応じてセグメントの移動を行なうことができる。従って、ワークロード分析部11cの分析による階層移動の動作を、ユーザIOレスポンスへの影響が無い(小さい)タイミングで実施することができる。
次に、図17を参照して移動指示部11dによる移動指示通知処理の動作例を説明する。図17に示すように、移動指示部11dは、ワークロード分析部11c又は移動制御部11eからの移動指示を待ち受け(ステップS41)、移動指示を受け取ると、各セグメントのボリューム上のオフセットをHDD30上のオフセットに変換する(ステップS42)。
そして、移動指示部11dは、セグメントごとに、HDD30上のオフセットと、データの移動方向とを階層ドライバ12(移動処理部12d)へ通知し(ステップS43)、処理がステップS41に移行する。このとき移動処理部12dへ通知されるデータの移動方向は、HDD30からSSD20、又は、SSD20からHDD30となる。
このように、移動指示部11dが各セグメントのボリューム上のオフセットをHDD30上のオフセットに変換することによって、階層ドライバ12はSSD20とHDD30との間でデータを移動することができる。
次に、図18を参照して観測処理部12eによる観測処理の動作例を説明する。図18に示すように、観測処理部12eは、移動制御部11eからのSSD20及びHDD30の空き領域間の移動指示(観測移動指示)を待ち受け(ステップS51)、観測移動指示を受け取ると、カウンタ12fを初期化する(ステップS52)。
次いで、観測処理部12eは、SSD20の空き領域からHDD30の空き領域へのデータの転送指示をkcopydに対して行なう(ステップS53)。このとき、観測処理部12eは、所定時間、例えばM秒のカウントを行なう。なお、観測処理部12eは、移動する対象領域の特定に移動制御部11eから通知されたオフセットの情報を用いてもよく、階層テーブル12cを参照してもよい。また、観測移動の観測サイズはセグメントサイズよりも十分小さいサイズであり、一実施形態の例では、1GBのセグメントサイズに対して、観測サイズは200〜50MB程度となる。
そして、観測処理部12eは、観測移動中のユーザIOレスポンスを監視し、所定の閾値を超えたユーザIOレスポンスをカウンタ12fにより計数して(ステップS54)、M秒が経過したか否かを判定する(ステップS55)。
M秒経過していない場合(ステップS55のNoルート)、処理がステップS54に移行する。一方、M秒経過した場合(ステップS55のYesルート)、観測処理部12eは、カウント値を移動制御部11eへ通知し(ステップS56)、処理がステップS51に移行する。
このように、観測処理部12eは、観測移動中のユーザIOレスポンスをリアルタイムに観測することができるため、階層移動(SSD20からHDD30)を行なう最適なタイミングを精度よく検出することができる。
次に、図19を参照して階層ドライバ12の移動処理部12dによる転送開始処理の動作例を説明する。図19に示すように、移動処理部12dは、移動指示部11dからの移動指示を待ち受け(ステップS61)、移動指示を受け取ると、HDD30からSSD20へのデータの移動であるか否かを判定する(ステップS62)。
HDD30からSSD20へのデータの移動である場合(ステップS62のYesルート)、移動処理部12dは、移動を指示されたセグメントがSSD20へ移動済みであるか否かを判定する(ステップS63)。移動済みである場合(ステップS63のYesルート)、処理がステップS61に移行する。
一方、移動済みでない場合(ステップS63のNoルート)、移動処理部12dは、階層テーブル12c内のHDDオフセットより“NULL”となっているエントリを探索し、HDDオフセット情報と状態とを登録する。このとき移動処理部12dが登録する状態は“Moving(HDD→SSD)”となる。そして、移動処理部12dは、HDD30からSSD20へのデータの転送指示をkcopydへ発行し(ステップS64)、処理がステップS61に移行する。
ステップS62において、移動指示がHDD30からSSD20へのデータの移動ではない場合(ステップS62のNoルート)、移動処理部12dは、階層テーブル12c内のHDDオフセットよりセグメントを探索し、HDDオフセット情報と状態とを登録する。このとき移動処理部12dが登録する状態は“Moving(SSD→HDD)”となる。そして、移動処理部12dは、SSD20からHDD30へのデータの転送指示をkcopydへ発行し(ステップS65)、処理がステップS61に移行する。
次に、図20を参照して階層ドライバ12の移動処理部12dによる転送完了処理の動作例を説明する。図20に示すように、移動処理部12dは、kcopydによる転送の完了を待ち(ステップS71)、転送が完了すると、転送が完了した階層テーブル12cのエントリをHDDオフセットを用いて探索する(ステップS72)。
そして、移動処理部12dは、探索したエントリについて、状態が“Moving(HDD→SSD)”であるか否かを判定する(ステップS73)。状態が“Moving(HDD→SSD)”である場合(ステップS73のYesルート)、移動処理部12dは、状態を“allocated”に変更し(ステップS74)、処理がステップS71に移行する。
一方、状態が“Moving(HDD→SSD)”ではない(“Moving(SSD→HDD)”である)場合(ステップS73のNoルート)、移動処理部12dは、状態を“free”に変更し、且つ、対応するHDDオフセットを“NULL”に設定して(ステップS75)、処理がステップS71に移行する。
このように、階層ドライバ12(移動処理部12d)が階層テーブル12cを用いてSSD20とHDD30との間でデータを転送することにより、ワークロード分析部11c及び移動制御部11eによる動的階層制御が実現される。
最後に、図21を参照してIOマップ部12aによるIO受信処理の動作例を説明する。図21に示すように、IOマップ部12aは、ユーザIOの受信を待ち受け(ステップS81)、ユーザIOを受け取ると、ユーザIOで指定されるオフセットと階層テーブル12cに登録されている各オフセット+セグメントサイズとを比較する(ステップS82)。
そして、IOマップ部12aは、比較結果に基づき、階層テーブル12cに一致するオフセットが存在し、且つ状態が“allocated”であるか否かを判定する(ステップS83)。一致するオフセットが存在し、且つ状態が“allocated”である場合(ステップS83のYesルート)、IOマップ部12aは、SSDドライバ13へIO要求を送付し(ステップS84)、処理がステップS81に移行する。
一方、一致するオフセットが存在せず、又は状態が“allocated”ではない場合(ステップS83のNoルート)、IOマップ部12aは、状態が“Moving(HDD→SSD)”又は“Moving(SSD→HDD)”であるか否かを判定する(ステップS85)。状態が“Moving(HDD→SSD)”又は“Moving(SSD→HDD)”ではない場合(ステップS85のNoルート)、IOマップ部12aは、HDDドライバ14へIO要求を送付し(ステップS86)、処理がステップS81に移行する。
また、ステップS85において、状態が“Moving(HDD→SSD)”又は“Moving(SSD→HDD)”である場合(ステップS85のYesルート)、IOマップ部12aは、当該状態が“free”又は“allocated”に変化するまでIO要求をIOキュー12bに格納する。すなわち、IOマップ部12aは、IO要求に係るセグメントの階層移動が完了するまで、IO要求を保留する(ステップS87)。階層移動が完了すると、IOマップ部12aは、IOキュー12bに格納したIO要求を取り出し、処理がステップS83に移行する。
〔1−5〕階層ストレージ制御装置のハードウェア構成例
次に、図22を参照して、図1に示す階層ストレージ制御装置10のハードウェア構成例について説明する。図22に示すように、階層ストレージ制御装置10は、例示的に、CPU10a、メモリ10b、記憶部10c、インタフェース部10d、及び入出力部10eをそなえることができる。
CPU10aは、種々の制御や演算を行なうプロセッサの一例である。CPU10aは、階層ストレージ制御装置10内の各ブロックとバスで相互に通信可能に接続されてよい。なお、プロセッサとしては、CPU10aに代えて、電子回路、例えばMPU(Micro Processing Unit)等の集積回路(IC;Integrated Circuit)が用いられてもよい。
メモリ10bは、種々のデータやプログラムを格納するハードウェアの一例である。図1に示すIODB11b、予測セグメントDB11f、移動キュー11g、及びIOキュー12bの少なくとも1つは、メモリ10bの記憶領域によって実現されてもよい。メモリ10bとしては、例えばRAM(Random Access Memory)等の揮発性メモリが挙げられる。
記憶部10cは、種々のデータやプログラム等を格納するハードウェアの一例である。記憶部10cとしては、例えばHDD等の磁気ディスク装置、SSD等の半導体ドライブ装置、フラッシュメモリやROM(Read Only Memory)等の不揮発性メモリ等の各種記憶装置が挙げられる。
例えば記憶部10cは、階層ストレージ制御装置10の各種機能の全部若しくは一部を実現するストレージ制御プログラム100を格納してもよい。この場合、CPU10aは、記憶部10cに格納されたストレージ制御プログラム100をメモリ10bに展開して実行することにより、階層ストレージ制御装置10の機能を実現することができる。
インタフェース部10dは、SSD20、HDD30、図示しないホスト装置、又は作業者の作業端末等との間の接続及び通信の制御等を行なう通信インタフェースの一例である。例えばインタフェース部10dは、各種コントローラ、デバイスを接続するアダプタ、及び記録媒体10fに記録されたデータやプログラムを読み出す読取部をそなえてよい。コントローラは、例えばSSD20及びHDD30との間の通信を制御するIOC(I/O Controller)を含んでよく、アダプタは、例えばSSD20及びHDD30を接続するDA(Device Adapter)、及びホスト装置を接続するCA(Channel Adapter)等を含んでよい。なお、CAとしては、例えばLAN(Local Area Network)、SAN(Storage Area Network)、FC(Fibre Channel)、インフィニバンド(InfiniBand)等に準拠したCAが挙げられる。
読取部は、コンピュータ読取可能な記録媒体10fを接続又は挿入可能な接続端子又は装置を含んでよい。読取部としては、例えばUSB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10fにはストレージ制御プログラム100が格納されてもよい。
入出力部10eは、マウス、キーボード、操作ボタン等の入力部、並びにディスプレイ等の出力部の少なくとも一部を含むことができる。例えば入力部は、使用者又はオペレータ等による設定の登録や変更、システムのモード選択(切替)等の各種操作やデータの入力等の作業に用いられてもよく、出力部は、作業者等による設定の確認や各種通知等の出力に用いられてもよい。
なお、上述した階層ストレージ制御装置10のハードウェア構成は例示である。従って、階層ストレージ制御装置10内でのハードウェアの増減(例えば任意のブロックの追加や省略)、分割、任意の組み合わせでの統合、バスの追加又は省略等は適宜行なわれてもよい。
〔2〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
例えば、図1に示す階層ストレージ制御装置10の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。
また、ワークロード分析部11c及び移動処理部12dは、移動対象の領域をセグメント単位で決定し、移動指示部11dへ階層移動を指示するものとして説明したが、これに限定されるものではない。
例えばワークロード分析部11cにより特定される移動対象の領域は、高負荷領域の近傍の領域を繋ぎ合わせた領域であってもよい。この場合、ワークロード分析部11cは、移動対象のセグメントの情報として、例えばセグメントID又はオフセットの範囲を表す情報を移動制御部11e又は移動指示部11dへ通知してもよい。
移動制御部11eは、予測移動制御においては、通知された範囲に含まれる複数のセグメントの情報及び当該範囲の領域サイズに基づいて、将来IOが集中する同じサイズの領域を予測すればよい。
この予測の手法としては、例えば通知された範囲の先頭オフセット、中間のオフセット、又は最終オフセット等の任意のセグメントを代表セグメントとし、代表セグメントについて、移動制御部11eが予測セグメントを算出することが挙げられる。この場合、移動制御部11eは、通知された範囲に含まれるセグメントの数に基づき、補正後の予測セグメントの範囲を求めて移動指示部11dへ通知すればよい。
或いは、移動制御部11eは、通知された範囲に含まれる複数のセグメントの各々について、それぞれ予測セグメントを求めてもよい。
また、観測移動制御においては、通知された範囲に含まれる複数のセグメントの各々の情報が移動キュー11gに格納される。従って、移動制御部11eは、IOレスポンスの悪化を検出しない場合には、一実施形態で説明したように、移動キュー11g内の各セグメントを順番に読み出して移動指示部11dへ階層移動を指示すればよい。
なお、移動指示部11dは、通知された範囲に含まれる複数のセグメントの各々について、階層ドライバ12へ移動指示を発行すればよい。
〔3〕付記
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
第1の記憶装置の記憶領域を第1のサイズで分割した複数の単位領域の中から、前記第1の記憶装置とは異なる性能の第2の記憶装置へ第1のデータを移動させる移動対象の単位領域を決定する決定部と、
前記移動対象の単位領域の決定に応じて、前記第1のサイズよりも小さな第2のサイズの領域に記憶された第2のデータを前記第1の記憶装置から前記第2の記憶装置へ移動させる移動指示を発行する制御部と、
前記移動指示に応じて、前記第2のデータの移動を行ない、前記第2のデータの移動中における入出力要求への応答性能に関する情報を取得する取得部と、
前記取得部が取得した前記応答性能に関する情報に基づいて、前記第1のデータの移動処理の実行可否を判定する判定部と、
前記判定部の判定結果に応じて、前記第1のデータの移動処理を実行する移動部と、
をそなえることを特徴とする、ストレージ制御装置。
(付記2)
前記判定部は、前記応答性能に関する情報が前記応答性能の劣化を示す場合、前記第1のデータの移動処理の実行を行なわないと判定することを特徴とする、付記1記載のストレージ制御装置。
(付記3)
前記応答性能は応答時間を含み、
前記取得部は、前記第2のデータの移動中における前記応答時間が所定の閾値を超えた回数をカウントするカウンタをそなえ、
前記判定部は、前記カウンタのカウント値に基づいて前記第1のデータの移動処理の実行可否を判定することを特徴とする、付記1又は付記2記載のストレージ制御装置。
(付記4)
前記第1の記憶装置から前記第2の記憶装置への移動対象の単位領域を示す情報を格納するキューをそなえ、
前記制御部は、前記キューに前記単位領域を示す情報が格納されている場合に前記第2のデータの移動指示を発行し、
前記判定部は、前記応答性能に関する情報に基づいて前記第1のデータの移動処理を実行すると判定した場合、前記キューに格納された前記単位領域を示す情報を取り出して前記移動部へ通知する
ことを特徴とする、付記1〜3のいずれか1項記載のストレージ制御装置。
(付記5)
前記決定部は、所定のタイミングで、前記第2の記憶装置の記憶領域における前記単位領域ごとの入出力要求数に基づき移動対象の第1領域を決定し、
前記第1領域に基づいて、前記入出力要求数が所定時間後に増加する第2領域を予測する予測部と、
前記決定部が前記第1領域の移動を前記移動部へ指示しなかったタイミングで、前記第2領域に基づき取得した第3領域に記憶されたデータの移動を前記移動部へ指示する指示部と、をそなえる
ことを特徴とする、付記1〜4のいずれか1項記載のストレージ制御装置。
(付記6)
前記決定部は、前記第2の記憶装置から前記第1の記憶装置への前記第1領域に記憶されたデータの移動を前記移動部へ指示し、
前記移動部は、前記決定部から指示された前記第1領域に記憶されたデータ、又は、前記指示部から指示された前記第3領域に記憶されたデータを、互いに異なるタイミングで、前記第2の記憶装置から前記第1の記憶装置へ移動する
ことを特徴とする、付記5記載のストレージ制御装置。
(付記7)
前記予測部は、前記決定部が複数のタイミングで決定した複数の第1領域に基づいて、前記第2の記憶装置の記憶領域における前記入出力要求数が増加する領域の遷移速度を取得し、取得した前記遷移速度に基づいて、前記第2領域を予測することを特徴とする、付記5又は付記6記載のストレージ制御装置。
(付記8)
前記指示部は、前記予測部が前記第2領域を予測した時刻と現在時刻との差分の時間と、前記予測部が取得した前記遷移速度と、前記第2領域とに基づいて、前記第3領域を決定することを特徴とする、付記7記載のストレージ制御装置。
(付記9)
コンピュータに、
第1の記憶装置の記憶領域を第1のサイズで分割した複数の単位領域の中から、前記第1の記憶装置とは異なる性能の第2の記憶装置へ第1のデータを移動させる移動対象の単位領域を決定し、
前記移動対象の単位領域の決定に応じて、前記第1のサイズよりも小さな第2のサイズの領域に記憶された第2のデータについて前記第1の記憶装置から前記第2の記憶装置への移動処理を実行し、
前記第2のデータの移動中における入出力要求への応答性能に関する情報を取得し、
取得した前記応答性能に関する情報に基づいて、前記第1のデータの移動処理の実行可否を判定し、
判定結果に応じて、前記第1のデータの移動処理を実行する、
処理を実行させることを特徴とする、ストレージ制御プログラム。
(付記10)
前記判定において、前記応答性能に関する情報が前記応答性能の劣化を示す場合、前記第1のデータの移動処理の実行を行なわないと判定することを特徴とする、付記9記載のストレージ制御プログラム。
(付記11)
前記応答性能は応答時間を含み、
前記取得において、前記第2のデータの移動中における前記応答時間が所定の閾値を超えた回数をカウントし、
前記判定において、前記カウント値に基づいて前記第1のデータの移動処理の実行可否を判定することを特徴とする、付記9又は付記10記載のストレージ制御プログラム。
(付記12)
前記コンピュータに、
前記第1の記憶装置から前記第2の記憶装置への移動対象の単位領域を示す情報を格納するキューに前記単位領域を示す情報が格納されている場合に、前記第2のデータの移動処理を実行し、
前記応答性能に関する情報に基づいて前記第1のデータの移動処理を実行すると判定した場合、前記キューに格納された前記単位領域を示す情報を取り出して、前記第1のデータの移動処理を実行する、
処理を実行させることを特徴とする、付記9〜11のいずれか1項記載のストレージ制御プログラム。
(付記13)
前記コンピュータに、
所定のタイミングで、前記第2の記憶装置の記憶領域における前記単位領域ごとの入出力要求数に基づき移動対象の第1領域を決定し、
前記第1領域に基づいて、前記入出力要求数が所定時間後に増加する第2領域を予測し、
前記第1領域の移動を前記移動部へ指示しなかったタイミングで、前記第2領域に基づき取得した第3領域に記憶されたデータの移動処理を実行する、
処理を実行させることを特徴とする、付記9〜12のいずれか1項記載のストレージ制御プログラム。
(付記14)
前記コンピュータに、
前記第1領域に記憶されたデータ、又は、前記第3領域に記憶されたデータを、互いに異なるタイミングで、前記第2の記憶装置から前記第1の記憶装置へ移動する、
処理を実行させることを特徴とする、付記13記載のストレージ制御プログラム。
(付記15)
前記コンピュータに、
複数のタイミングで決定した複数の第1領域に基づいて、前記第2の記憶装置の記憶領域における前記入出力要求数が増加する領域の遷移速度を取得し、
取得した前記遷移速度に基づいて、前記第2領域を予測する、
処理を実行させることを特徴とする、付記13又は付記14記載のストレージ制御プログラム。
(付記16)
前記コンピュータに、
前記第2領域を予測した時刻と現在時刻との差分の時間と、取得した前記遷移速度と、前記第2領域とに基づいて、前記第3領域を決定する、
処理を実行させることを特徴とする、付記15記載のストレージ制御プログラム。
(付記17)
第1の記憶装置の記憶領域を第1のサイズで分割した複数の単位領域の中から、前記第1の記憶装置とは異なる性能の第2の記憶装置へ第1のデータを移動させる移動対象の単位領域を決定し、
前記移動対象の単位領域の決定に応じて、前記第1のサイズよりも小さな第2のサイズの領域に記憶された第2のデータを前記第1の記憶装置から前記第2の記憶装置へ移動させる移動指示を発行し、
前記移動指示に応じて、前記第2のデータの移動を行ない、前記第2のデータの移動中における入出力要求への応答性能に関する情報を取得し、
取得した前記応答性能に関する情報に基づいて、前記第1のデータの移動処理の実行可否を判定し、
判定結果に応じて、前記第1のデータの移動処理を実行する、
ことを特徴とする、ストレージ制御方法。
1 階層ストレージシステム
10 階層ストレージ制御装置
10a CPU
10b メモリ
10c 記憶部
10d インタフェース部
10e 入出力部
10f 記録媒体
11 階層管理部
11a データ収集部
11b IODB
11c ワークロード分析部
11d 移動指示部
11e 移動制御部
11f 予測セグメントDB
11g 移動キュー
12 階層ドライバ
12a IOマップ部
12b IOキュー
12c 階層テーブル
12d 移動処理部
12e 観測処理部
12f カウンタ
13 SSDドライバ
14 HDDドライバ
100 ストレージ制御プログラム
20 SSD
30 HDD

Claims (9)

  1. 第1の記憶装置の記憶領域を第1のサイズで分割した複数の単位領域の中から、前記第1の記憶装置とは異なる性能の第2の記憶装置へ第1のデータを移動させる移動対象の単位領域を決定する決定部と、
    前記移動対象の単位領域の決定に応じて、前記第1のサイズよりも小さな第2のサイズの領域に記憶された第2のデータを前記第1の記憶装置から前記第2の記憶装置へ移動させる移動指示を発行する制御部と、
    前記移動指示に応じて、前記第2のデータの移動を行ない、前記第2のデータの移動中における入出力要求への応答性能に関する情報を取得する取得部と、
    前記取得部が取得した前記応答性能に関する情報に基づいて、前記第1のデータの移動処理の実行可否を判定する判定部と、
    前記判定部の判定結果に応じて、前記第1のデータの移動処理を実行する移動部と、
    をそなえることを特徴とする、ストレージ制御装置。
  2. 前記判定部は、前記応答性能に関する情報が前記応答性能の劣化を示す場合、前記第1のデータの移動処理の実行を行なわないと判定することを特徴とする、請求項1記載のストレージ制御装置。
  3. 前記応答性能は応答時間を含み、
    前記取得部は、前記第2のデータの移動中における前記応答時間が所定の閾値を超えた回数をカウントするカウンタをそなえ、
    前記判定部は、前記カウンタのカウント値に基づいて前記第1のデータの移動処理の実行可否を判定することを特徴とする、請求項1又は請求項2記載のストレージ制御装置。
  4. 前記第1の記憶装置から前記第2の記憶装置への移動対象の単位領域を示す情報を格納するキューをそなえ、
    前記制御部は、前記キューに前記単位領域を示す情報が格納されている場合に前記第2のデータの移動指示を発行し、
    前記判定部は、前記応答性能に関する情報に基づいて前記第1のデータの移動処理を実行すると判定した場合、前記キューに格納された前記単位領域を示す情報を取り出して前記移動部へ通知する
    ことを特徴とする、請求項1〜3のいずれか1項記載のストレージ制御装置。
  5. 前記決定部は、所定のタイミングで、前記第2の記憶装置の記憶領域における前記単位領域ごとの入出力要求数に基づき移動対象の第1領域を決定し、
    前記第1領域に基づいて、前記入出力要求数が所定時間後に増加する第2領域を予測する予測部と、
    前記決定部が前記第1領域の移動を前記移動部へ指示しなかったタイミングで、前記第2領域に基づき取得した第3領域に記憶されたデータの移動を前記移動部へ指示する指示部と、をそなえる
    ことを特徴とする、請求項1〜4のいずれか1項記載のストレージ制御装置。
  6. 前記予測部は、前記決定部が複数のタイミングで決定した複数の第1領域に基づいて、前記第2の記憶装置の記憶領域における前記入出力要求数が増加する領域の遷移速度を取得し、取得した前記遷移速度に基づいて、前記第2領域を予測することを特徴とする、請求項5記載のストレージ制御装置。
  7. 前記指示部は、前記予測部が前記第2領域を予測した時刻と現在時刻との差分の時間と、前記予測部が取得した前記遷移速度と、前記第2領域とに基づいて、前記第3領域を決定することを特徴とする、請求項6記載のストレージ制御装置。
  8. コンピュータに、
    第1の記憶装置の記憶領域を第1のサイズで分割した複数の単位領域の中から、前記第1の記憶装置とは異なる性能の第2の記憶装置へ第1のデータを移動させる移動対象の単位領域を決定し、
    前記移動対象の単位領域の決定に応じて、前記第1のサイズよりも小さな第2のサイズの領域に記憶された第2のデータについて前記第1の記憶装置から前記第2の記憶装置への移動処理を実行し、
    前記第2のデータの移動中における入出力要求への応答性能に関する情報を取得し、
    取得した前記応答性能に関する情報に基づいて、前記第1のデータの移動処理の実行可否を判定し、
    判定結果に応じて、前記第1のデータの移動処理を実行する、
    処理を実行させることを特徴とする、ストレージ制御プログラム。
  9. 第1の記憶装置の記憶領域を第1のサイズで分割した複数の単位領域の中から、前記第1の記憶装置とは異なる性能の第2の記憶装置へ第1のデータを移動させる移動対象の単位領域を決定し、
    前記移動対象の単位領域の決定に応じて、前記第1のサイズよりも小さな第2のサイズの領域に記憶された第2のデータを前記第1の記憶装置から前記第2の記憶装置へ移動させる移動指示を発行し、
    前記移動指示に応じて、前記第2のデータの移動を行ない、前記第2のデータの移動中における入出力要求への応答性能に関する情報を取得し、
    取得した前記応答性能に関する情報に基づいて、前記第1のデータの移動処理の実行可否を判定し、
    判定結果に応じて、前記第1のデータの移動処理を実行する、
    ことを特徴とする、ストレージ制御方法。
JP2015123741A 2015-06-19 2015-06-19 ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法 Active JP6497233B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015123741A JP6497233B2 (ja) 2015-06-19 2015-06-19 ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法
US15/176,694 US9823855B2 (en) 2015-06-19 2016-06-08 Storage control device, storage system and method of controlling a storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015123741A JP6497233B2 (ja) 2015-06-19 2015-06-19 ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法

Publications (2)

Publication Number Publication Date
JP2017010196A true JP2017010196A (ja) 2017-01-12
JP6497233B2 JP6497233B2 (ja) 2019-04-10

Family

ID=57587049

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015123741A Active JP6497233B2 (ja) 2015-06-19 2015-06-19 ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法

Country Status (2)

Country Link
US (1) US9823855B2 (ja)
JP (1) JP6497233B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11221783B2 (en) 2019-03-11 2022-01-11 Fujitsu Limited Information processing apparatus and non-transitory computer-readable recording medium having stored therein information processing program

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10324637B1 (en) 2016-12-13 2019-06-18 EMC IP Holding Company LLC Dual-splitter for high performance replication

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009059280A (ja) * 2007-09-03 2009-03-19 Mitsubishi Electric Corp ストレージ制御方式
WO2012169027A1 (ja) * 2011-06-08 2012-12-13 株式会社日立製作所 計算機システム及びストレージシステム管理方法
US20130311740A1 (en) * 2012-05-17 2013-11-21 Hitachi, Ltd. Method of data migration and information storage system
WO2014174653A1 (ja) * 2013-04-26 2014-10-30 株式会社日立製作所 ストレージシステム
US20140351504A1 (en) * 2013-05-23 2014-11-27 Fujitsu Limited Apparatus and method for transferring data between storages having different access speeds
JP2014228946A (ja) * 2013-05-20 2014-12-08 富士通株式会社 情報処理装置、情報処理システム、情報処理装置の制御方法及び情報処理装置の制御プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09214935A (ja) 1996-02-02 1997-08-15 Mitsubishi Electric Corp 映像情報提供システム
US7502903B2 (en) * 2005-05-13 2009-03-10 3Par, Inc. Method and apparatus for managing data storage systems
JP4935331B2 (ja) * 2006-12-06 2012-05-23 日本電気株式会社 ストレージシステムと記憶領域の選択方法並びにプログラム
JP2013171305A (ja) 2012-02-17 2013-09-02 Fujitsu Ltd ストレージ装置、ストレージシステム、ストレージ管理方法及びストレージ管理プログラム
JP6065642B2 (ja) 2013-02-25 2017-01-25 富士通株式会社 ストレージ制御プログラム、ストレージ制御装置、ストレージシステム、及びストレージ制御方法
JP6086007B2 (ja) 2013-03-26 2017-03-01 富士通株式会社 ストレージ制御装置の制御プログラム、ストレージ制御装置の制御方法、ストレージ制御装置及びストレージシステム
US9354820B2 (en) * 2013-06-28 2016-05-31 Globalfoundries Inc. VSAM data set tier management
US9665288B1 (en) * 2013-12-26 2017-05-30 EMC IP Holding Company LLC Techniques for determining workload skew
JP2015158800A (ja) * 2014-02-24 2015-09-03 富士通株式会社 データ転送制御装置、データ転送制御プログラムおよびデータ転送制御方法
US9733978B2 (en) * 2015-08-27 2017-08-15 Qualcomm Incorporated Data management for multiple processing units using data transfer costs

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009059280A (ja) * 2007-09-03 2009-03-19 Mitsubishi Electric Corp ストレージ制御方式
WO2012169027A1 (ja) * 2011-06-08 2012-12-13 株式会社日立製作所 計算機システム及びストレージシステム管理方法
US20130311740A1 (en) * 2012-05-17 2013-11-21 Hitachi, Ltd. Method of data migration and information storage system
WO2014174653A1 (ja) * 2013-04-26 2014-10-30 株式会社日立製作所 ストレージシステム
US20140325121A1 (en) * 2013-04-26 2014-10-30 Hitachi, Ltd. Storage system
JP2014228946A (ja) * 2013-05-20 2014-12-08 富士通株式会社 情報処理装置、情報処理システム、情報処理装置の制御方法及び情報処理装置の制御プログラム
US20140351504A1 (en) * 2013-05-23 2014-11-27 Fujitsu Limited Apparatus and method for transferring data between storages having different access speeds
JP2014229144A (ja) * 2013-05-23 2014-12-08 富士通株式会社 情報処理装置、情報処理システム、情報処理装置の制御方法および情報処理装置の制御プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11221783B2 (en) 2019-03-11 2022-01-11 Fujitsu Limited Information processing apparatus and non-transitory computer-readable recording medium having stored therein information processing program

Also Published As

Publication number Publication date
US9823855B2 (en) 2017-11-21
JP6497233B2 (ja) 2019-04-10
US20160371016A1 (en) 2016-12-22

Similar Documents

Publication Publication Date Title
US8341350B2 (en) Analyzing sub-LUN granularity for dynamic storage tiering
JP4699837B2 (ja) ストレージシステム、管理計算機及びデータ移動方法
JP6331773B2 (ja) ストレージ制御装置、およびストレージ制御プログラム
US9658796B2 (en) Storage control device and storage system
US11010081B2 (en) Information processing apparatus and storage control method therefor
JP6299169B2 (ja) ストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラム
JP6086007B2 (ja) ストレージ制御装置の制御プログラム、ストレージ制御装置の制御方法、ストレージ制御装置及びストレージシステム
JP2014164510A (ja) ストレージ制御プログラム、ストレージ制御装置、ストレージシステム、及びストレージ制御方法
JP2020046929A (ja) 情報処理装置及び情報処理プログラム
EP2981920A1 (en) Detection of user behavior using time series modeling
JP6260384B2 (ja) ストレージ制御装置,制御プログラム,及び制御方法
US10198194B2 (en) Placing data within a storage device of a flash array
US20180341423A1 (en) Storage control device and information processing system
JP2018106462A (ja) 情報処理装置、ストレージ制御プログラムおよびストレージ制御方法
US10168944B2 (en) Information processing apparatus and method executed by an information processing apparatus
US20190324677A1 (en) Information processing apparatus
JP6582721B2 (ja) 制御装置、ストレージシステム、及び制御プログラム
JP6497233B2 (ja) ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法
US10481829B2 (en) Information processing apparatus, non-transitory computer-readable recording medium having stored therein a program for controlling storage, and method for controlling storage
US9740420B2 (en) Storage system and data management method
JP7234704B2 (ja) 情報処理装置及び情報処理プログラム
US20150039825A1 (en) Federated Tiering Management
WO2016051593A1 (ja) 計算機システム
JP2021131752A (ja) 情報処理装置及び情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180306

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190225

R150 Certificate of patent or registration of utility model

Ref document number: 6497233

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150