JP7234704B2 - 情報処理装置及び情報処理プログラム - Google Patents

情報処理装置及び情報処理プログラム Download PDF

Info

Publication number
JP7234704B2
JP7234704B2 JP2019043374A JP2019043374A JP7234704B2 JP 7234704 B2 JP7234704 B2 JP 7234704B2 JP 2019043374 A JP2019043374 A JP 2019043374A JP 2019043374 A JP2019043374 A JP 2019043374A JP 7234704 B2 JP7234704 B2 JP 7234704B2
Authority
JP
Japan
Prior art keywords
unit
sub
storage device
data
movement
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.)
Active
Application number
JP2019043374A
Other languages
English (en)
Other versions
JP2020149075A (ja
Inventor
和一 大江
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 JP2019043374A priority Critical patent/JP7234704B2/ja
Priority to US16/786,019 priority patent/US11221783B2/en
Publication of JP2020149075A publication Critical patent/JP2020149075A/ja
Application granted granted Critical
Publication of JP7234704B2 publication Critical patent/JP7234704B2/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/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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、情報処理装置及び情報処理プログラムに関する。
データを格納するストレージシステムとして、複数の記憶媒体(記憶装置)を組み合わせた階層ストレージシステムが用いられることがある。複数の記憶媒体には、例えば高速アクセスが可能な高速記憶装置(第1記憶装置)、及び、比較的低速な低速記憶装置(第2記憶装置)、が含まれてよい。
階層ストレージシステムにおいては、IO(Input Output)アクセスが特定の狭い記憶領域に集中して発生する場合がある。例えば、アクセス頻度が低い記憶領域のデータを低速記憶装置に配置する一方、アクセスが集中発生する領域のデータを高速記憶装置に配置することで、高速記憶装置の使用効率を高め、IOアクセスの集中による性能低下を回避する手法が知られている。
また、このようなIOアクセス集中が発生する記憶領域を予測し、低速記憶装置に配置する候補(Down候補)の記憶領域と、高速記憶装置に配置する候補(Up候補)の記憶領域とを決定する手法が知られている。
特開2017-010196号公報 特開2012-038212号公報 特開2017-027301号公報
上記の手法では、例えば、Down候補の記憶領域と、Up候補の記憶領域とが同時に存在する場合、Up候補が優先され、当該Up候補の記憶領域のデータが高速記憶装置に配置される。
しかしながら、Up候補の記憶領域の中には、IOアクセス数がそれほど多くなく、高速記憶領域に配置したとしても階層ストレージシステムの性能向上(例えば平均応答時間の削減)効果の小さい記憶領域が含まれることがある。このような記憶領域が高速記憶装置に配置される場合、高速記憶装置の消費量が増加することになり、高速記憶装置及び低速記憶領域間でのデータ移動が非効率となる場合がある。
1つの側面では、本発明は、互いに性能の異なる複数の記憶装置間でのデータ移動の効率化を図ることを目的とする。
1つの側面では、情報処理装置は、メモリ部と、移動実行部と、算出部と、変更部と、をそなえてよい。前記メモリ部は、第1記憶装置における記憶領域に対する書き込みアクセスの有無を、第1サイズの記憶領域を所定の大きさで分割した第2サイズの部分領域ごとに管理する管理情報を記憶してよい。前記移動実行部は、前記第1記憶装置から前記第1記憶装置よりもアクセス速度の低い第2記憶装置への前記第1サイズの対象データの移動の実行指示に応じて、以下の処理を実行してよい。前記処理において、前記移動実行部は、前記管理情報を参照して、前記対象データの記憶領域において書き込みアクセスがあった部分領域の数が閾値よりも大きい場合、前記対象データを前記第1サイズの記憶領域を1単位とする第1サイズ単位で前記第1記憶装置から前記第2記憶装置へ移動してよい。また、前記処理において、前記移動実行部は、前記書き込みアクセスがあった部分領域の数が前記閾値以下の場合、前記対象データのうちの前記書き込みアクセスがあった部分領域のデータを前記第2サイズの部分領域を1単位とする第2サイズ単位で前記第1記憶装置から前記第2記憶装置へ移動してよい。前記算出部は、前記第1記憶装置から前記第2記憶装置へ、前記第1サイズ単位で移動されるデータの移動時間、及び、前記第2サイズ単位で移動されるデータの移動時間、をそれぞれ算出してよい。前記変更部は、前記算出部による算出結果に基づいて、前記閾値を変更してよい。
1つの側面では、互いに性能の異なる複数の記憶装置間でのデータ移動を効率化できる。
一実施形態の一例としての階層ストレージシステムの構成例を示すブロック図である。 一実施形態の一例としての階層ストレージ装置の構成例を示すブロック図である。 IOアクセス情報の一例を示す図である。 移動候補テーブルの一例を示す図である。 IOアクセス集中の一例を示す図である。 IOアクセス集中の一例を示す図である。 サブLUNの高優先キュー及び低優先キューへの振り分けの一例を示す図である。 IOアクセス集中が発生するサブLUNの移動例を示す図である。 一実施形態に係る階層管理部の動作例を説明する図である。 一実施形態の一例としての階層ドライバの構成例を示すブロック図である。 一実施形態に係る階層ドライバの動作例を説明する図である。 階層テーブルの一例を示す図である。 処理時間の内訳を例示する図である。 サブLUNを移動する処理時間及び部分領域を移動する処理時間の変化の一例を示す図である。 処理時間の変動要因の例を説明する図である。 第1の要因による移動処理の遅延時間の一例を示す図である。 第2の要因による移動処理の遅延時間の一例を示す図である。 一実施形態に係る階層ドライバにおける移動制御部の動作例を説明するブロック図である。 測定データ記憶部が記憶する測定データの一例を示す図である。 図2及び図10に示す階層ストレージ装置のハードウェア構成例を示すブロック図である。 キュー制御部による処理の動作例を説明するフローチャートである。 移動指示部による処理の動作例を説明するフローチャートである。 階層ドライバによる階層移動処理の動作例を説明するフローチャートである。 階層ドライバによるビットマップ更新処理の動作例を説明するフローチャートである。 階層ドライバによるサブLUN転送測定処理の動作例を説明するフローチャートである。 階層ドライバによる部分領域転送測定処理の動作例を説明するフローチャートである。 階層ドライバによる閾値更新処理の動作例を説明するフローチャートである。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕構成
〔1-1〕ストレージシステムの構成例
図1は一実施形態の一例としての階層ストレージ装置1をそなえるストレージシステム100の構成を例示する図である。
図1に示すように、ストレージシステム100は、例示的に、PC(Personal Computer)又はサーバ等のホスト装置2と階層ストレージ装置1とをそなえてよい。ホスト装置2と階層ストレージ装置1とは、例えば、SAS(Serial Attached Small Computer System Interface)やFC(Fibre Channel)等のインタフェース(IF;Interface)を介して接続されてよい。
ホスト装置2は、図示しないCPU(Central Processing Unit)等のプロセッサをそなえてよく、プロセッサによりアプリケーション3を実行することで、種々の機能を実現してよい。
階層ストレージ装置1は、ストレージ装置の一例であり、後述の如く、互いに性能の異なる複数種類の記憶装置をそなえてよく、これらの記憶装置の記憶領域をホスト装置2に提供してよい。階層ストレージ装置1が提供する記憶領域には、ホスト装置2においてアプリケーション3の実行により生成されたデータや、アプリケーション3を実行するために用いられるデータ等が格納されてよい。
ホスト装置2が階層ストレージ装置1の記憶領域に対してデータのライトやリードを行なうことで、IOアクセスが生じる。
〔1-2〕階層ストレージ装置の機能構成例
図2は一実施形態の一例としての階層ストレージ装置1の機能構成を示す図である。図2に示すように、階層ストレージ装置1は、例示的に、階層ストレージ制御装置10、SSD(Solid State Drive)20、及び、DIMM(Dual Inline Memory Module)30をそなえてよい。
階層ストレージ制御装置10は、ホスト装置2からのIOアクセスに応じて、SSD20及びDIMM30への種々のアクセスを行なうストレージ制御装置の一例である。例えば、階層ストレージ制御装置10は、SSD20及びDIMM30へのリード又はライト等のアクセスを行なってよい。階層ストレージ制御装置10としては、例えば、PCやサーバ、又はコントローラモジュール(CM;Controller Module)等の情報処理装置が挙げられる。
また、本実施形態に係る階層ストレージ制御装置10は、IOアクセスの頻度に応じて、アクセス頻度が低い領域をSSD20に配置する一方、アクセス頻度が高い領域をDIMM30に配置する、動的階層制御を実現してよい。
DIMM30は、種々のデータやプログラム等を格納する高速記憶装置又は第1記憶装置(第1記憶部)の一例である。例えば、DIMM30としては、NVM(Non-Volatile Memory;不揮発性メモリ)等の半導体メモリモジュールが用いられてよい。一実施形態において、DIMM30は、例示的に、DIMM30の記憶領域に複数のブロックデバイス(BD;Block Device)が作成されてよく、当該記憶領域には、BD単位でアクセスされてよい。
SSD20は、DIMM30とは異なる性能の(例えばよりアクセス速度が低い)低速記憶装置又は第2記憶装置(第2記憶部)の一例である。一実施形態において、SSD20は、例示的に、PCIe(Peripheral Component Interconnect Express)を利用したNVMe(NVM Express)に準拠した規格により階層ストレージ制御装置10に接続されてよい。
一実施形態において、互いに異なる記憶装置の組み合わせとして、DIMM30等の半導体メモリモジュール、SSD20等の半導体ドライブ装置をそれぞれ例に挙げているが、これに限定されるものではない。第1及び第2記憶装置として、互いに性能差(例えばリード/ライト等のIOアクセスの速度差)のある種々の記憶装置が用いられてよい。
上述したSSD20及びDIMM30は、階層ストレージ装置1におけるストレージボリュームを構成してよい。
以下、ホスト装置2等から認識される1つのストレージボリュームをLUN(Logical Unit Number)という。さらに、LUNを予め決められたサイズで分割した1単位(単位領域)をサブLUN(sub LUN)という。なお、サブLUNのサイズは、例えば、MB(MegaByte)~GB(GigaByte)のオーダで適宜変更して実施することができる。なお、サブLUNは、セグメント又は単位領域と称されてもよい。
SSD20及びDIMM30の各々は、ストレージボリューム上のサブLUN(単位領域)のデータを格納可能な記憶領域を含む。階層ストレージ制御装置10は、サブLUN単位で、SSD20とDIMM30との間の領域移動を制御してよい。以下、SSD20の記憶領域とDIMM30の記憶領域との間におけるデータの移動をマイグレーション(Migration)という場合がある。
なお、図2では、階層ストレージ装置1がそれぞれ1つのSSD20及びDIMM30をそなえるものとしているが、これに限定されるものではなく、それぞれ複数のSSD20及びDIMM30をそなえてもよい。
次に、階層ストレージ制御装置10の詳細について説明する。階層ストレージ制御装置10は、図2に示すように、例示的に、階層管理部11、階層ドライバ12、SSDドライバ13、DIMMドライバ14、及び、移動処理部15をそなえてよい。なお、例えば、階層管理部11は、ユーザ空間で実行されるプログラムとして実現されてよく、階層ドライバ12、SSDドライバ13、DIMMドライバ14、及び、移動処理部15は、OS(Operating System)空間で実行されるプログラムとして実現されてよい。
本実施形態においては、階層ストレージ制御装置10は、例えば、Linux(登録商標) device-mapperの機能を用いるものとする。device-mapperがストレージボリュームをサブLUN単位で監視し、高負荷となったサブLUNのデータをSSD20からDIMM30へ移動することで高負荷領域へのIOを処理する。なお、device-mapperはコンピュータプログラムとして実装されてよい。
階層管理部11は、サブLUNに対するデータアクセスを分析することで、SSD20からDIMM30へデータを移動させるサブLUNを特定(移動候補抽出)してよい。また、階層管理部11は、SSD20からDIMM30に対して、又は、DIMM30からSSD20に対して、サブLUNのデータを移動させる制御を行なってよい。
階層管理部11は、例えば、SSD20又は/及びDIMM30についてトレースされたIOの情報に基づいて、領域移動を行なうサブLUNを判定し、判定したサブLUNのデータの移動を階層ドライバ12に指示する。
階層ドライバ12は、ユーザからのストレージボリュームに対するIO要求をSSDドライバ13又はDIMMドライバ14に振り分け、SSDドライバ13又はDIMMドライバ14からのIOレスポンスをユーザに返す。
また、階層ドライバ12は、階層管理部11からサブLUNの移動指示(セグメント移動指示)を受け取ると、DIMM30又はSSD20の移動対象の単位領域に記憶されたデータをSSD20又はDIMM30に移動する移動処理を実行する。移動処理には、移動処理部15に対する、データの転送指示の発行が含まれてよい。
SSDドライバ13は、階層ドライバ12の指示に基づいてSSD20へのアクセスを制御する。例えば、SSDドライバ13は、NVMeに準拠したデバイスドライバを含んでもよい。当該ドライバは、例えば、Linux上においてはNVMeドライバとして実装されてよい。
DIMMドライバ14は、階層ドライバ12の指示に基づいてDIMM30へのアクセスを制御する。例えば、DIMMドライバ14は、DIMM30の記憶領域に複数のBDを作成し、BD単位で記憶領域にアクセスを行なうドライバを含んでもよい。当該ドライバは、例えば、Linux上においてはBRDドライバとして実装されてよい。
移動処理部15は、SSD20-HDD30間においてデータの移動(転送)を行なう。なお、移動処理部15は、データの転送が完了すると、階層ドライバ12に対して、完了報告を送信してよい。移動処理部15としては、例えば、device-mapperに実装されるkcopydが挙げられる。kcopydは、デバイス間のデータコピーを実行するモジュール(プログラム)であり、OS空間で実行される。
〔1-2-1〕階層管理部の説明
階層管理部11は、図2に示すように、例示的に、データ収集部11a、移動判定部11b、キュー制御部11c、キュー11d、及び、移動指示部11eとしての機能をそなえてよい。
階層管理部11は、例えば、Linux上においてはログプール(Log Pool)、サブLUN移動判定、及び、サブLUN移動指示の3つのコンポーネントを有する分割・構成変更エンジンとして実装されてよい。そして、これらのログプール、サブLUN移動判定、及び、サブLUN移動指示の各コンポーネントが、図2に示すデータ収集部11a、移動判定部11b及びキュー11d、並びに、移動指示部11eとしての機能をそれぞれ実現してよい。
(データ収集部11aの説明)
データ収集部11aは、SSD20又は/DIMM30に対するIOアクセスの情報(IOアクセス情報)を収集し、収集した情報に基づいて、サブLUNごとのIOアクセス数を集計してよい。
例えば、データ収集部11aは、Linuxのblktraceを用いてSSD20又は/及びDIMM30についてトレースされたIOの情報を収集してよい。データ収集部11aは、IOトレースにより、例えばtimestampやLBA(Logical Block Addressing)、r/w(read/write)、length等の情報を採取してよい。なお、LBAからはサブLUN IDを求めることができる。
ここで、blktraceは、ブロックIOレベルでのIOをトレースするコマンドである。なお、データ収集部11aは、blktraceに代えて、ディスクIOの利用状況を確認するコマンドであるiostat等の他の手法を用いてIOアクセス情報を収集してもよい。なお、blktrace及びiostatはOS空間で実行されてよい。
データ収集部11aは、一定時間間隔(t)ごとにサブLUN単位でIOアクセスに関する情報を収集してよい。例えば、階層管理部11がT秒(Tは1以上の整数)間隔でサブLUNの移動判定を行なう場合には、一定時間間隔(t)はT秒に設定されてよい。
なお、データ収集部11aは、各セグメント又は/及び全セグメントへのIOのリードライト比(rw比)を集計し、上述した情報に含めてもよい。
データ収集部11aは、収集したIOアクセス情報を、例えば移動判定部11bの後述するDB101に格納してよい。
図3は一実施形態に係るIOアクセス情報の一例を示す図である。IOアクセス情報は、SSD20において発生中のIOアクセスに関する情報である。なお、図3には、IOアクセス情報をテーブル形式で例示しているが、これに限定されるものではなく、IOアクセス情報は配列等の種々の形態でDB101に格納されてよい。
図3に示すように、IOアクセス情報は、項目として、サブLUNごとに、サブLUN ID、IO数、及びタイムスタンプをそなえてよい。図3の例では、サブLUN ID“0”について、IO数“10”、タイムスタンプ“1”が設定されている。
サブLUN IDは、サブLUN(エントリ)を特定するための識別情報である。IDとして、例えばストレージボリュームの先頭オフセット等の識別情報が用いられてもよい。IO数は、例示的に、サブLUNに対して1秒間に行なわれたIOの合計数(IOPS;IO Per Second)であってよい。タイムスタンプは、時刻を識別する識別子である。タイムスタンプとして、例えば時刻そのものが用いられてもよい。
このように、データ収集部11aは、SSD20又はDIMM30で使用される領域を所定の大きさで分割した複数の単位領域について、入力されたIOアクセス要求に関する情報を収集する収集部の一例である。
(移動判定部11bの説明)
移動判定部11bは、データ収集部11aによって収集されたIOアクセス情報に基づき、SSD20又はDIMM30におけるデータの移動元となるサブLUNを選択し、選択したサブLUNに関する情報をキュー11dに格納する。キュー11dに格納された情報は、後述する優先度に従って、移動指示部11eに出力される。
移動判定部11bは、図2に示すように、データベース(DB;Database)101、検出部102、Up判定部103、Down判定部104、及び、予測移動判定部105をそなえてよい。検出部102、Up判定部103、Down判定部104、及び、予測移動判定部105は、IOアクセス情報が更新される一定時間間隔(t)ごとに、後述する動作を行なってよい。以下、階層管理部11による一定時間間隔(t)ごとの処理を、1サイクル(インターバル)の処理という場合がある。
DB101は、データ収集部11aにより集計されたサブLUNごとのIO数に関する情報を記憶するものであり、例えば図示しないメモリ等により実現される。
検出部102は、サブLUN単位のIOアクセスについてのIOアクセス情報に基づき、SSD20におけるIOアクセス集中の発生を検出する。
ここで、IOアクセス集中とは、例えば、全ボリューム容量の所定%(例えば、0.1%程度~数%)までの範囲領域に全IOアクセスの半分以上が集まった状態をいう。
検出部102は、例えば、上述した所定の範囲領域に、所定の閾値以上(例えば、全IOアクセスの50%~90%程度)のアクセスが集中した状態(IOアクセス集中状態)を検出してよい。
なお、IOアクセスの集中を判断するための範囲領域としては、連続した1つの範囲領域を対象として判断してもよく、また、互いに離散した複数の範囲領域の合計を対象として判断してもよい。1つのIOアクセスの継続時間は、非限定的な一例として、最大で80分前後であり、短いケースでは、1分未満で終息してしまう場合もある。
また、検出部102は、IOアクセス集中の終息についても検出してよい。IOアクセス集中の終息とは、今までIOアクセスが集中していた範囲領域に関して、IOアクセス数が、上述した閾値未満となった状態をいう。
なお、IOアクセス数が一瞬低下した後に、すぐに回復するケースもある。そこで、検出部102は、例えば、今までIOアクセスが集中していた範囲領域に関して、IOアクセス数が、上述した閾値未満となってから所定時間(例えば、T秒間)経過した時点で、IOアクセス集中が終息したと判断してよい。
例えば、検出部102は、以下の(A)~(D)の手順により特定される領域において、IOアクセス集中の発生を検出してよい。当該手順により特定される領域は、SSD20又はDIMM30への移動候補の領域となる。例えば、検出部102は、特定した領域に関する情報(移動候補情報)をDB101等に格納してもよい。
(A)検出部102は、LUN全体のIOPSが予め定めた閾値i(iは正の実数)以上か否かを判定する。なお、LUN全体のIOPSが閾値iを超えていない場合、検出部102は、処理を終了してよい。この場合、検出部102は、次のサイクル(例えばT秒後)に再び(A)の処理を行なってよい。
(B)LUN全体のIOPSが閾値iを超えた場合、検出部102は、IOアクセス情報を、サブLUNごとに、発生したIOアクセス数の多い順に並べ替え、上位n(nは整数)までのサブLUNを抽出する。nは、1度に移動可能な最大サブLUN数であり、サブLUNごとのIO数を集計する間隔であるT(秒)を、SSD20からDIMM30へのサブLUN内のデータの移動速度(秒/サブLUN)で除算して求められてよい。
(C)検出部102は、IOアクセス数が多い順に上位nのサブLUN同士を結合し、1つの領域(以下、サブLUNグループという場合がある)として扱う。また、検出部102は、サブLUNグループ内でIOアクセス数を合計し、IOアクセス数が多い順にサブLUNグループを並べ替える。
(D)検出部102は、IOアクセス数の多い順にサブLUNグループのIOアクセス数を累積していき、全IOのm(mは正の実数)%を超えたところまでに入ったサブLUNグループを移動候補として特定する。mは、移動候補にするサブLUNグループをカットオフするための値である。
図4は移動候補情報の一例を示す図である。図4に示す例においては、便宜上、移動候補情報をテーブルとして示している。以下、移動候補情報をテーブル状に示した情報を移動候補テーブルという。
図4に示すように、移動候補情報は、項目として、サブLUNグループごとに、Group ID、Start sub-LUN、End sub-LUN、及び、IO数をそなえてよい。図4の例では、Group ID“0”について、Start sub-LUN“4”、終了位置(終了サブLUN ID)“6”、IO数“50”が設定されている。
Group IDは、サブLUNグループ(エントリ)を特定するための識別情報である。Start sub-LUNは、IOアクセス集中領域の始点となるサブLUNを特定する情報であり、End sub-LUNは、End sub-LUN は、IOアクセス集中領域の終点となるサブLUNを特定する情報である。従って、(End sub-LUN - Start sub-LUN)は、IOアクセス集中が発生している領域の数(領域の大きさ)を表す。IO数は、例示的に、サブLUNグループに対して1秒間に行なわれたIOの合計数(IOPS)であってよい。
検出部102は、上述した(A)~(D)の手順により特定した移動候補情報を、移動候補テーブルに対して登録してよい。
Up判定部103は、移動候補情報に基づき、移動候補のサブLUNグループの継続時間を評価し、予め決められた閾値を超えてIOアクセス集中が継続するサブLUNグループを移動対象のサブLUNグループと判定する。また、Up判定部103は、判定したサブLUNグループの情報(例えば、サブLUNグループを構成するサブLUN ID)、及び、当該サブLUNのIOアクセス数の情報を、キュー制御部11cに送信する。なお、Up判定部103は、例えば、DB101に格納されたIOアクセス情報からサブLUNのIOアクセス数の情報を読み出すことで特定してよい。
例えば、Up判定部103は、所定の時間に亘ってIOアクセス集中が継続した移動候補のサブLUNグループを、SSD20からDIMM30に移動させる移動対象(Up対象)として決定してよい。所定の時間は、例えば、サブLUNごとのIO数の集計間隔(t)(T秒)と、IOアクセス集中として検出された回数(c)(インターバル数)と、の積により決定されてよい。例えば、c=3の場合、Up判定部103は、IOアクセス集中が3回に亘って検出されたサブLUNグループをUp対象に決定してよい。
なお、Up判定部103は、IOアクセス集中の残り継続時間と階層移動にかかる時間とに基づいて、階層移動の間にIOアクセス集中が終息するか否かを判定してもよい。残り継続時間は、IOアクセス集中が継続する継続時間から既に実行済みの実行時間を減じた時間であり、ワークロードに応じて定まる値である。
例えば、Up判定部103は、移動候補のサブLUNグループについてDIMM30に移動するコスト(移動時間)を計算し、残り継続時間が移動時間以下になる場合には、SSD20からDIMM30への階層移動を抑止してもよい。
残り継続時間の算出、及び、残り継続時間を用いたサブLUNの移動制御については、既知の種々の手法により実現可能であり、その詳細な説明を省略する。
Down判定部104は、DIMM30に移動されたサブLUNから、SSD20への移動対象(Down対象)となるサブLUNを判定する。
例えば、Down判定部104は、所定の回数(例えば10回等)に亘って、連続してUp対象のサブLUNグループに含まれない(サブLUNグループの範囲から外れた)サブLUNを、Down対象に決定してよい。なお、Down判定部104は、例えば、Up対象のサブLUNグループの範囲から外れたサブLUNと、連続して外れた回数とを対応付けた削除情報(図示省略)を管理してよく、削除情報を用いて、Down対象のサブLUNを決定してよい。また、Down判定部104は、削除情報に含まれるサブLUNがUp対象のサブLUNグループに含まれることになった場合、当該サブLUNを削除情報から削除してよい。
Down判定部104は、Down対象に決定したサブLUNの情報を、キュー制御部11cに送信してよい。
予測移動判定部105は、検出部102及びUp判定部103により判定されたUp対象のサブLUNの移動に加えて、近い将来IOアクセス集中が発生する(IO数が増加する)サブLUNを予測する。そして、予測移動判定部105は、予測したサブLUNの情報を、キュー制御部11cに送信してよい。
予測移動判定部105により予測されたサブLUNは、当該サブLUNにおけるIOアクセス集中が発生する前に、SSD20からDIMM30に移動される。
予測移動制御により、IOアクセス集中が発生する前に当該サブLUNのデータをDIMM30に移行できるため、現時点でIOアクセス集中が発生しているサブLUNのデータをDIMM30に移行するよりもユーザIOへの影響を低減させることができる。
なお、図5に例示するように、IOアクセス集中の発生するサブLUNが時間経過とともに移動することがわかる。また、このサブLUNの移動速度は略等速度である。
そこで、予測移動判定部105は、IOアクセス集中が発生する領域の遷移速度に基づき、近い将来IOアクセス集中が移動する移動先領域を求め、IOアクセス集中が発生する前に当該移動先領域のデータをDIMM30に移動させる制御を行なう。
予測移動判定部105による予測移動制御については、例えば、上述した特許文献1に記載された手法を用いることができる。
(キュー制御部11cの説明)
キュー制御部11cは、移動判定部11bから送信された、SSD20からDIMM30、又は、DIMM30からSSD20への移動対象となるサブLUNの情報を、キュー11dに格納(挿入、プッシュ)する制御を行なう。
例えば、キュー制御部11cは、予測移動判定部105から受信した、予測移動対象のサブLUNの情報を、キュー11dの高優先キュー106(予測移動用キュー106a)に格納する。また、キュー制御部11cは、Down判定部104から受信した、Down対象のサブLUNの情報を、キュー11dの低優先キュー107(Down用キュー107b)に格納する。
さらに、キュー制御部11cは、Up判定部103から受信した、Up対象のサブLUNの情報を、キュー11dの高優先キュー106(高IOアクセス用キュー106b)、又は、低優先キュー107(その他用キュー107a)に選択的に格納する。
図5及び図6は、IOアクセス集中の一例を示す図である。図5及び図6に示すように、c=2の場合、インターバル2の段階で、インターバル1及び2の連続する2つのインターバルに亘ってIOアクセス集中が検出されたサブLUNグループ(サブLUN ID“4”~“7”を含むグループ)がUp対象して決定される。
ここで、検出部102によりIOアクセス集中と判定され、Up判定部103によりUp対象に決定されたサブLUNグループの中でも、サブLUN間でIOアクセス数に偏りが生じる場合がある。
そこで、一実施形態においては、キュー制御部11cは、Up対象に決定されたサブLUNグループ内の複数のサブLUNを、IOアクセス数に応じて優先度ごとにグルーピングし、それぞれのグループを互いに優先度の異なるキューに登録する。
換言すれば、キュー制御部11cは、SSD20からDIMM30への移動指示における対象データの優先度を、DIMM30において当該対象データに発生したアクセス数に基づき設定する。
例えば、キュー制御部11cは、IOアクセス数が予め決められた閾値以上のサブLUNを高優先グループに分類し、IOアクセス数が閾値未満のサブLUNを低優先グループに分類してよい。なお、キュー制御部11cは、例えば、Up判定部103から受信した、Up対象のサブLUNグループを構成する各サブLUNのIO数と、閾値Thとを比較することで、高優先グループ又は低優先グループへの分類(振り分け)を行なってよい。なお、この閾値Thは、例えば、検出部102による上記(A)の手順で用いられる閾値iと同一であってもよい。或いは、閾値Thは、全IOアクセス数のXX%(例えば5%)等の数であってもよい。
図7は、キュー制御部11cによる、サブLUNの高優先又は低優先キューへの振り分けの一例を示す図である。図7の例では、IOアクセス集中が発生したサブLUNグループ内のサブLUN ID“4”~“7”のうち、サブLUN ID“4”のIO数が閾値以上であり、サブLUN ID“5”~“7”のIO数が閾値未満である場合を示す。この場合、キュー制御部11cは、サブLUN ID“4”を高優先グループに分類し、IO数が閾値以上であり、サブLUN ID“5”~“7”を低優先グループに分類する。
そして、キュー制御部11cは、高優先グループのサブLUNの情報を、キュー11dの高優先キュー106(高IOアクセス用キュー106b)に登録してよい。また、キュー制御部11cは、低優先グループのサブLUNの情報を、キュー11dの低優先キュー107(その他用キュー107a)に登録してよい。キュー11dの詳細は後述する。
このように、移動判定部11b及びキュー制御部11cは、移動処理の対象データを決定し、決定した対象データについての移動指示をキュー11dに格納する決定部の一例である。
図8は、IOアクセス集中が発生するサブLUNの移動例を示す図である。図8に示すように、IOアクセス集中となったサブLUNは、時間経過とともに移動する可能性がある。このため、キュー11dにおいて過去(前回及びそれよりも前)に移動できなかったサブLUNが蓄積されてしまうと、移動判定のタイミングと移動実行のタイミングとにずれが生じることがある。
なお、移動判定のタイミングと移動実行のタイミングとにずれが生じる、とは、移動判定と移動実行とが、互いに異なるインターバル(階層管理部11による1サイクルの処理)で行なわれる場合をいうものとする。一方、移動判定のタイミングと移動実行のタイミングとが同じである、とは、移動判定と移動実行とが同じインターバル内で行なわれる場合をいうものとする。
図8に示す例では、移動判定が行なわれたタイミングにおいてIOアクセス集中が発生しているサブLUNと、移動の実行が行なわれるタイミングにおいてIOアクセス集中が発生しているサブLUNとが異なっている。
このように、移動を判定したタイミングと、移動を実行するタイミングとにずれが生じた場合、移動を判定したタイミングでキュー11dに挿入されたIDのサブLUNに対して階層移動を行なっても、性能向上効果が得られない可能性がある。
そこで、一実施形態において、キュー制御部11cは、一定時間(例えばT秒)ごとに、キュー11dに蓄積されている、予測移動対象及びUp対象のサブLUN IDを全てクリア(削除或いは無効化等)してよい。キュー制御部11cによるクリア対象のキュー11dの記憶領域としては、例えば、高優先キュー106の予測移動用キュー106a及び高IOアクセス用キュー106b、並びに、低優先キュー107のその他用キュー107aが挙げられる。
換言すれば、キュー制御部11cは、第1のタイミングで決定された対象データについての移動指示がキュー11dに格納されるタイミングに先立って、キュー11dに格納された移動指示のうち、第1のタイミングよりも前の第2のタイミングで決定されたSSD20からDIMM30への移動指示を削除対象としてキュー11dから削除する削除部の一例である。ここで、SSD20からDIMM30への移動指示における対象データは、DIMM30において、アクセス集中が発生しているデータ、又は、アクセス集中の発生が予測されるデータである。
これにより、DIMM30への移動を行なうサブLUNを、移動実行と同一のインターバル内で移動判定されたサブLUNに限定することができ、階層ストレージ制御装置10の性能向上効果が得られる確率を高めることができる。
なお、低優先キュー107のDown用キュー107bは、クリア対象となっておらず、キュー制御部11cは、Down対象のサブLUN IDをキュー11dに残す、すなわち、削除対象から除外する。このため、Down用キュー107bには、過去にSSD20へ移動できなかったDown対象のサブLUNの情報が蓄積されることがある。
上述のように、IOアクセス集中が発生するサブLUNは、時間経過とともに移動する傾向があるため、当該Down対象のサブLUNと同一のサブLUNが、今回の移動判定処理により予測移動対象又はUp対象として決定されることがある。
そこで、キュー制御部11cは、キュー11dにおいて、同一のサブLUN IDが、予測移動対象又はUp対象用の高優先キュー106及びその他用キュー107aと、Down対象用のDown用キュー107bと、に重複して登録されることを抑止してよい。
例えば、キュー制御部11cは、現在のDown用キュー107bに登録されているサブLUN IDの各々と、予測移動判定部105及びUp判定部103からそれぞれ受信した、予測移動対象及びUp対象のサブLUN IDとを比較する。そして、キュー制御部11cは、比較の結果、一致したサブLUN IDについては、Down用キュー107bから削除してよい。
換言すれば、キュー制御部11cは、第1のタイミングで決定されたSSD20からDIMM30への移動指示が示す記憶領域と、キュー11dに格納された第1のタイミングよりも前の第2のタイミングで決定されたDIMM30からSSD20への移動指示が示す記憶領域と、が一致する場合、DIMM30からSSD20への移動指示をキュー11dから削除する。
これにより、DIMM30に移動される又は移動されたIOアクセス集中が発生するサブLUNのデータが、過去にDown用キュー107bに登録された指示によってSSD20に移動されることを抑制できる。従って、階層ストレージ制御装置10の性能低下のリスクを下げることができる。
(キュー11dの説明)
キュー11dは、移動対象のサブLUNの情報(例えばID)を一時的に格納するFIFO(First-In First Out)構造の記憶領域であり、図示しないメモリ等により実現されてよい。
キュー11dは、DIMM30と、DIMM30よりもアクセス速度の低いSSD20と、の間でデータを移動させる移動処理を指示するための移動指示を格納してよい。
図2に示すように、キュー11dは、例示的に、高優先キュー106及び低優先キュー107をそなえてよい。
高優先キュー106は、移動指示部11eにより優先的に読み出される(出力される)サブLUN IDが挿入されるキューであり、予測移動用キュー106a及び高IOアクセス用キュー106bを含んでよい。
予測移動用キュー106aには、予測移動対象のサブLUN IDが挿入される。高IOアクセス用キュー106bには、Up対象のサブLUN IDの中で優先度の高いサブLUN IDが挿入される。
高優先キュー106において、予測移動用キュー106a及び高IOアクセス用キュー106bの間では、どちらを優先させてもよい。一実施形態では、予測移動用キュー106a内のサブLUN IDが全て出力されてから、高IOアクセス用キュー106b内のサブLUN IDが全て出力されるものとするが、これに限定されるものではない。
例えば、高IOアクセス用キュー106b内のサブLUN IDが全て出力されてから、予測移動用キュー106a内のサブLUN IDが全て出力されてもよい。或いは、予測移動用キュー106a及び高IOアクセス用キュー106bから、交互にサブLUN IDが出力されてもよい。
低優先キュー107は、高優先キュー106よりも優先度の低いキューであり、その他用キュー107a及びDown用キュー107bを含んでよい。低優先キュー107に挿入されたサブLUN IDは、高優先キュー106からサブLUN IDが全て出力されてから(高優先キュー106が空になってから)、出力されてよい。
その他用キュー107aには、Up対象のサブLUN IDの中で優先度の低いサブLUN IDが挿入される。Down用キュー107bには、Down対象のサブLUN IDが挿入される。
低優先キュー107において、その他用キュー107a及びDown用キュー107bの間では、どちらを優先させてもよい。一実施形態では、その他用キュー107a及びDown用キュー107bから、交互にサブLUN IDが出力されるものとするが、これに限定されるものではない。例えば、その他用キュー107a内のサブLUN IDが全て出力されてから、Down用キュー107b内のサブLUN IDが全て出力されてもよいし、逆順であってもよい。
なお、図2の例では、便宜上、キュー11dが符号106a、106b、107a、107bの4つの記憶領域をそなえるものとしたが、これに限定されるものではない。例えば、キュー11dは、1つ以上のFIFO構造のメモリの記憶領域を、4つの領域(範囲)に区画して、それぞれの領域を符号106a、106b、107a、107bに割り当てたものであってよい。この場合、4つの領域の各々において、サブLUN IDの格納位置をポインタによって指定可能であってよい。
(移動指示部11eの説明)
移動指示部11eは、一定時間間隔(t)(インターバル)ごとに、当該インターバルにおいて可能な範囲で、キュー11dに蓄積されたサブLUN IDを順次読み出し、階層ドライバ12に対して、読み出したサブLUNのデータの階層移動を指示する。
例えば、移動指示部11eは、インターバルが開始すると、高優先キュー106からサブLUN IDを1つ取り出し、階層ドライバ12に当該サブLUNのデータのDIMM30への移動を指示してよい。移動指示部11eは、インターバルの残り時間から移動の実行時間を減算し、残り時間が0になる、或いは、高優先キュー106にサブLUN IDが存在しなくなるまで、高優先キュー106に存在するサブLUN IDの移動を指示してよい。
また、移動指示部11eは、高優先キュー106にサブLUN IDが存在しなくなると、低優先キュー107からサブLUN IDを1つ取り出し、階層ドライバ12に当該サブLUNのデータのDIMM30又はSSD20への移動を指示してよい。移動指示部11eは、インターバルの残り時間から移動の実行時間を減算し、残り時間が0になる、或いは、低優先キュー107にサブLUN IDが存在しなくなるまで、低優先キュー107に存在するサブLUN IDの移動を指示してよい。
このように、移動指示部11eは、キュー11dに格納された移動指示を読み出し、当該移動指示に従った移動処理の実行を制御する実行制御部の一例である。
図9は、階層管理部11の動作の一例を説明する図である。なお、図9においては、便宜上、一部の構成の図示を省略している。
上述した一実施形態に係る手法によれば、図9に例示するように、階層管理部11において、一定時間間隔(例えばT秒間隔)で移動判定部11bにIOアクセスログが供給される(図9の矢印(1)参照)。
移動判定部11bでは、一定時間間隔で移動判定が行なわれ、移動対象として決定されたサブLUNの情報が、キュー制御部11cによる振り分けによってキュー11dにプッシュされる(図9の矢印(2)参照)。
キュー11dに蓄積されたサブLUNの情報は、移動指示部11eにより、一定時間内に実行可能な分だけ読み出され、当該サブLUNのデータのマイグレーションが指示される(図9の矢印(3)参照)。マイグレーションの指示により、階層ドライバ12(図示省略)及び移動処理部15によって、SSD20-DIMM30間においてサブLUNのデータのマイグレーションが実行される。
一定時間が経過すると、移動指示部11eにより、Up処理用のキュー(予測移動用キュー106a、高IOアクセス用キュー106b、その他用キュー107a)の内容がクリアされる(図9の符号(4-1)参照)。また、移動指示部11eにより、Down処理用のキュー(Down用キュー107b)の内容は維持される(図9の符号(4-2)参照)。
換言すれば、移動判定部11bは、SSD20からDIMM30への移動指示における対象データと、当該対象データの優先度とを決定し、キュー制御部11cは、決定した対象データについての移動指示を優先度ごとにキュー11dに格納する。そして、移動指示部11eは、キュー11dから、優先度の高い移動指示を全て読み出してから、優先度の低い移動指示を読み出す。
このように、キュー制御部11c、キュー11d、及び、移動指示部11eによれば、Up対象のサブLUNグループの中で、性能向上効果が大きいサブLUNを優先してDIMM30に配置することができる。また、Up対象のサブLUNグループにおける残りのサブLUNを、Down対象のサブLUNとともに、低優先キュー107から公平にDIMM30又はSSD20に配置することができる。
これにより、階層ストレージ制御装置10の性能を維持したまま、DIMM30の消費量を引き下げることができるため、階層間でのデータ移動の効率化を図ることができる。
〔1-2-2〕階層ドライバの説明
図10は、階層ドライバ12の機能構成例を示す図である。なお、図10においては、便宜上、移動判定部11b及びキュー11dがそなえる各構成(図2参照)の図示を省略している。
ここで、一実施形態では、階層ドライバ12には、上述した構成及び手法に従い階層管理部11から発行されたデータ移動指示(マイグレーション指示)が入力されるものとして説明するが、これに限定されるものではない。
例えば、階層ドライバ12には、SSD20-DIMM30間におけるサブLUN単位でのデータの移動指示が入力されればよく、図2~図9を参照して説明した階層管理部11とは異なる(例えば従来の)階層管理部から発行された移動指示が入力されてもよい。
図10に示すように、階層ドライバ12は、例示的に、IOアクセス制御部121、移動制御部122、BMP123、BMP管理部124、移動領域決定部125、及び、階層TBL126をそなえてよい。なお、BMPはビットマップ(Bitmap)の略称であり、TBLはテーブル(Table)の略称である。
IOアクセス制御部121は、IOアクセスに関するユーザ(ホスト装置2)との間の種々の制御を行なう。例えば、IOアクセス制御部121は、ユーザからのストレージボリュームに対するIO要求を、階層TBL126を参照してSSDドライバ13又はDIMMドライバ14に振り分ける。また、IOアクセス制御部121は、SSDドライバ13又はDIMMドライバ14からのIOレスポンスをユーザに返す。
移動制御部122は、SSD20-DIMM30間のデータ移動処理に関する種々の制御を行なう。データ移動処理において、移動制御部122は、移動指示部11eからの指示に応じて、階層TBL126を参照して、サブLUN単位で階層移動(マイグレーション)を行なう。例えば、移動制御部122は、移動指示部11eからサブLUNの移動指示(セグメント移動指示)を受け取ると、DIMM30又はSSD20の移動対象の単位領域に記憶されたデータをSSD20又はDIMM30に移動する移動処理を実行する。
ところで、移動制御部122は、既知の手法等によれば、DIMM30からSSD20への移動処理(Down処理)において、Down対象のサブLUNに1度でもデータ書き込みが発生した場合、当該サブLUNの全領域をSSD20に書き戻すことになる。
上述のように、サブLUNは、例えば1GB程度のサイズであるため、データ書き込みが発生した領域サイズが比較的小さい場合には、当該サブLUNの全領域のデータをDIMM30からSSD20に書き戻す処理の処理負荷や処理時間が増加し、非効率となる。
そこで、一実施形態において、階層ドライバ12は、BMP123、BMP管理部124、移動領域決定部125、及び、階層TBL126の構成をそなえることで、移動制御部122に対して、Down処理を効率的に実施させることができる。
BMP123は、DIMM30に配置された第1サイズのサブLUNにおいて書き込み(Write)IOアクセスの発生した領域(部分領域)を管理するための情報であり、例えば、図示しないメモリ等の記憶領域に記憶されてよい。BMP123を記憶する記憶領域は、第1メモリ部と称されてもよい。
換言すれば、BMP123は、DIMM30における移動処理の対象データの記憶領域であって、第1サイズの記憶領域に対する書き込みアクセスの有無を、対象データの記憶領域を所定の大きさで分割した第2サイズの部分領域ごとに管理する管理情報の一例である。
BMP123は、例えば、サブLUNの記憶領域を所定数M(Mは2以上の整数。一例として、M=100等)に分割した部分領域の各々に対応するビットを有してよい。部分領域は、サブLUNを分割した記憶領域であるため、sub-sub-LUNと表記されてもよい。
BMP管理部124は、BMP123の管理を行なう。例えば、BMP管理部124は、書き込みIOアクセスにより更新のあったサブLUNの部分領域に対応する、BMP123のビットをONに設定する。
移動領域決定部125は、Down対象のサブLUNについて、階層TBL126及びBMP123を参照して、BMP123においてONに設定されたビット数をカウントする。そして、移動領域決定部125は、カウント値に応じて、ビットがONの部分領域、及び、サブLUNの全領域、のいずれか一方を、Down対象の移動領域として決定する。
図11は、階層ドライバ12の動作の一例を説明する図である。なお、図11においては、便宜上、一部の構成の図示を省略している。
図11に例示するように、階層ドライバ12において、SSD20のデータが、サブLUN単位でDIMM30にマイグレーション(Up処理)される(図11の矢印(1)参照)。
BMP管理部124は、SSD20のサブLUN21のデータがDIMM30に配置(移動)された場合、DIMM30に配置されたサブLUN31に対して、BMP123の記憶領域を割り当てる(図11の矢印(2)参照)。
DIMM30に対して書き込みIOアクセスが発生した場合、BMP管理部124は、サブLUN31における、書き込みIOアクセスが発生した部分領域31aに対応するBMP123のビットをONに設定する(図11の矢印(3)参照)。
サブLUN31がSSD20にマイグレーション(Down処理)される場合、移動領域決定部125は、BMP123を参照して、Down対象のサブLUN31に割り当てられた複数のビットのうち、ONに設定されているビット数をカウントする。
移動領域決定部125は、カウント値が所定数(N;Nは自然数)以下の場合、BMP123においてONに設定されているビットに対応する、サブLUN31の部分領域31aを、Down対象の移動領域に決定する。
一方、移動領域決定部125は、カウント値が所定数(N)よりも大きい場合、Down対象のサブLUN31の領域全体を、Down対象の移動領域に決定する。
そして、移動領域決定部125は、決定したDown対象の移動領域に対するDown処理の実行を、移動制御部122に指示する。
移動制御部122は、Down対象のサブLUN31について、移動領域決定部125から指示された移動領域(1以上の部分領域31a、又は、サブLUN31の全領域)のDown処理(Evict)を実行する(図11の矢印(4-1)参照)。Down処理では、移動制御部122は、移動処理部15に対して、移動領域決定部125から指示された移動領域のデータをDIMM30からSSD20に転送させる転送指示を送信してよい。また、移動制御部122は、例えば移動処理部15において移動領域のデータ転送が完了し、移動処理部15から完了報告を受信すると、DIMM30に対して、Down処理を行なったサブLUN31を解放してよい。
なお、移動領域決定部125は、Down処理が行なわれたサブLUN31の情報をBMP管理部124に通知してよい。BMP管理部124は、移動領域決定部125から通知されたサブLUN31の、BMP123への割り当てをクリア(解放)する(図11の矢印(4-2)参照)。なお、割り当てがクリアされたBMP123の記憶領域は、BMP管理部124により、Up処理が行なわれたサブLUN31に対して割り当て可能に管理される。
このように、一実施形態に係る手法によれば、移動領域決定部125は、BMP123により、DIMM30に配置されたサブLUN31の部分領域31aへの書き込み有無を判断する。そして、Down対象のサブLUN31において書き込みが行なわれた部分領域31aの数が所定数N以下の場合、Down処理の移動領域が、サブLUN31の全領域ではなく、書き込みが行なわれた部分領域31aに制限される。
換言すれば、移動領域決定部125は、BMP123を参照して、当該移動指示における対象データについて、書き込みアクセスがあった部分領域31aの数が閾値N以下の場合、対象データのうち、書き込みアクセスがあった部分領域31aのデータを、DIMM30からSSD20に移動させる。
これにより、IOアクセスにより変化のあった領域の範囲に応じて、効率的にDown処理を実行することが可能となる。
以上のように、移動制御部122、移動領域決定部125、及び、移動処理部15は、以下の(i)~(iii)の処理を行なう移動実行部の一例である。
(i)移動実行部は、DIMM30からSSD20への第1サイズの対象データの移動の実行指示に応じて、BMP123を参照して、対象データのサブLUNにおいて書き込みアクセスがあった部分領域31aの数が閾値N以下か否かを判定する。
(ii)移動実行部は、書き込みアクセスがあった部分領域31aの数が閾値Nよりも大きい場合、対象データを第1サイズ単位でDIMM30からSSD20へ移動する。
(iii)移動実行部は、書き込みアクセスがあった部分領域31aの数が閾値N以下の場合、対象データのうちの書き込みアクセスがあった部分領域31aのデータを第2サイズ単位でDIMM30からSSD20へ移動する。
階層TBL126は、IOアクセス制御部121によるIOアクセスの振り分け、及び、移動制御部122又は移動領域決定部125等による階層制御に用いられるテーブルであり、例えば図示しないメモリ等により実現されてよい。
図12は、階層TBL126の一例を示す図である。図12に示すように、階層TBL126は、DIMM30にデータが移動されたセグメントごとに、DIMMオフセットと、SSDオフセットと、状態とを対応させて記憶することができる。なお、図12には、階層TBL126をテーブル形式で例示しているが、これに限定されるものではなく、階層TBL126は配列やDB等の種々の形態でメモリ等に格納されてよい。
DIMMオフセットは、DIMM30にデータが移動されたセグメントのDIMM30におけるオフセットを示す。DIMMオフセットは、ボリューム上のセグメントサイズ(例えば1GB)に対応するオフセット“2097152”を単位とする固定値であってよく、例えば、“0”、“2097152”、“4194304”、“6291456”、...となる。
SSDオフセットは、DIMM30にデータが移動されたセグメントのSSD20におけるオフセットを示す。SSDオフセットの値“NULL”は、DIMMオフセットで指定されるDIMM30の領域が未使用であることを示す。
状態は、セグメントの状態を示し、例えば、“allocated”、“Moving(SSD→DIMM)”、“Moving(DIMM→SSD)”、又は“free”を含んでよい。“allocated”はセグメントがDIMM30に割り当てられていることを示し、“Moving(SSD→DIMM)”はセグメントのデータがSSD20からDIMM30に転送中(Up処理中)であることを示す。“Moving(DIMM→SSD)”はセグメントのデータがDIMM30からSSD20に転送中(Down処理中)であることを示し、“free”はDIMMオフセットで指定されるDIMM30の領域が未使用であることを示す。
IOアクセス制御部121は、上述した階層TBL126を参照することで、IOアクセスをSSDドライバ13及びDIMMドライバ14のいずれに振り分けるかを判定することができる。また、IOアクセス制御部121は、上述した階層TBL126を参照することで、IOアクセスがセグメント移動中であるか否かを判定することができる。
(階層ドライバ12の詳細な説明)
上述した例において、階層間の移動領域を決定するための閾値Nは、事前評価等によって、適切(適当)な値が事前に定められるものとする。
しかしながら、階層ストレージ装置1において使用される装置構成や、運用されるワークロード等に依存して、適切なNの値は変動し得る。また、上述した例では、Nの値を運用中に変更することは困難である。
そこで、一実施形態に係る階層ドライバ12は、以下のように、階層ストレージ装置1の運用中において適切な(例えば最適な)Nの値を算出して適用してよい。
なお、前提として、サブLUN31のサイズ=S、部分領域31aのサイズ=sとすると、下記式(1)の関係であるものとする。一例として、S=1GBの場合、s=1MB程度となる。
S >> s (1)
図13は、サブLUN31全体のDown処理(置換処理)の処理時間=ET、部分領域31aのDown処理(置換処理)の処理時間=etとした場合における処理時間ET及びetの内訳を例示する図である。なお、図13は、階層ドライバ12及び移動処理部15における処理に対する、アプリケーションからのIOアクセスの影響が小さい場合の例を示す。
図13に例示するように、処理時間ET及びetは、それぞれ、ソフトウェア(SW;Software)による遅延時間(斜線領域参照)、及び、データ転送による遅延時間(白塗り領域参照)を含む。
データ転送による遅延時間は、移動領域のデータサイズ(換言すればサブLUN31全体であるのか部分領域31aであるのか)に応じて変化する遅延時間である。一方、SWによる遅延時間は、例えば、kcopyd等の移動処理部15における内部処理、等による遅延時間であり、移動領域のデータサイズに依らず(換言すれば処理時間ET及びetにおいて)、一定又は略一定である。
従って、1つのサブLUN31のうちの移動領域の部分領域31aの数に比例して、SWによる遅延時間(オーバヘッド)が増加することとなる。このため、処理時間ET及びetは、下記式(2)に示すように、1つのサブLUN31のうちの部分領域31aを全て転送するよりも、当該サブLUN31の全体を一括で転送する方が、処理時間が短い(処理が高速である)といえる。なお、下記式において、Mは、サブLUN31の分割数である。
ET < et * M (2)
そこで、移動制御部122は、下記式(3)に示す状態となる閾値N(NはM未満の整数)を運用中に求め、Nの値の適宜更新する。
ET = et * N (N < M) (3)
一実施形態では、上述のように、階層ストレージ装置1の運用中に、DIMM30からSSD20へのサブLUN31の置換を行なうことを想定する。
このため、階層ドライバ12に対するIOアクセスパターンの影響により、図14に例示するように、サブLUN31のデータをサブLUN21に移動する処理時間ET、及び、部分領域31aのデータを部分領域21aに移動する処理時間etが変化し得る。すなわち、効果的なNの値は、アクセスパターンの変化に応じて変動することになる。
図15は、処理時間ET及びetの変動要因の例を説明する図である。以下、図15を参照して、処理時間ET及びetの変動要因について説明する。
(第1の要因)
図15に例示するように、アプリケーションからのIOアクセス(符号Aで示す白抜き及び破線の矢印参照)と、移動処理(符号Bで示す実線及び網掛けの矢印参照)とは、同じデバイス(SSD20又はDIMM30)に対して、並行して実施される場合がある。
このため、アプリケーションからのIOアクセスの増減に応じて、SSDドライバ13及び/又はDIMMドライバ14における処理負荷が増減するため、移動処理(マイグレーション)におけるIOアクセス時間も変動することになる。
図16は、第1の要因による移動処理の遅延時間の一例を示す図である。図16に示すように、SSDドライバ13やDIMMドライバ14では、アプリケーションからのIOアクセスと、移動処理におけるデータ転送との競合により、処理時間ET及びetの値がそれぞれ遅延する。なお、第1の要因による遅延は、図16に示すように、処理時間etよりもデータ転送時間が長い処理時間ETに与える影響の方が大きい。
(第2の要因)
階層ストレージ制御装置10におけるプロセッサの処理負荷が高まると、OS(例えばカーネル;Kernel)内部のタスクスケジューリングの遅延が発生する可能性が高くなる。移動処理部15(例えばkcopyd)等のモジュール(例えばカーネルドライバ)は、内部でSW割り込みを多用しており、これらの割り込みの呼び出しが遅延することで、移動処理のIOアクセス時間が増加する。
なお、IOアクセスには、SSD20又はDIMM30に対するシーケンシャルアクセス及びランダムアクセス、並びに、これらが混在したアクセス、等のように、様々なアクセスパターンが存在する。これらのアクセスパターンに応じて、SSDドライバ13、DIMMドライバ14、及び移動処理部15における処理負荷の変動の傾向も異なる。
図17は、第2の要因による移動処理の遅延時間の一例を示す図である。図17に示すように、kcopyd等のカーネルドライバの割り込みスケジューリングの遅延等の影響により、処理時間ET及びetの値がそれぞれ遅延する。なお、図17に示すように、第2の要因によるIOアクセス時間の増加量(遅延量)は、プロセッサの処理負荷の大きさ、OSの実装、及び、タイミング等に依存し、一意に定まらないため、IOアクセスの遅延時間を推定することは困難である。
そこで、一実施形態に係る階層ドライバ12は、以下に例示する手法によって、効果的なNの値の算出及び更新を行なう。なお、Nの初期値は、事前評価等によって、適切(適当)な値が事前に設定されるものとする。
図18は、一実施形態に係る階層ドライバ12における移動制御部122の動作例を説明するブロック図である。図18に示すように、移動制御部122は、例示的に、測定部122a、測定データ記憶部122b、及び、更新部122cをそなえてよい。
測定部122aは、DIMM30からSSD20への移動領域(1以上の部分領域31a、又は、サブLUN31の全領域)のDown処理を実行する際に、Down処理にかかった時間を測定し、測定データを測定データ記憶部122bに格納する。一例として、測定部122aは、測定データとして、移動処理部15に対して転送指示を送信してから、移動処理部15から完了報告を受信するまでの時間を測定してよい。
測定データ記憶部122bは、測定部122aによる算出結果を記憶する第2メモリ部の一例であり、例えば、図19に示す測定データを記憶してよい。
図19は、測定データ記憶部122bが記憶する測定データの一例を示す図である。図19に示すように、測定データ記憶部122bは、例えば、測定部122aによる測定データとして、サブLUN31の階層移動の処理時間ET[ms]、及び、部分領域31aの階層移動の処理時間et[ms]、をそれぞれ蓄積する。なお、図19には、測定データをテーブル形式で例示しているが、これに限定されるものではなく、測定データは配列やDB等の種々の形態でメモリ等に格納されてよい。
測定部122aは、処理時間を測定した移動領域がサブLUN31の場合には、測定データ記憶部122bに測定データとして処理時間ET[ms]を格納し、移動領域が部分領域31aの場合には測定データとして処理時間et[ms]を格納してよい。
なお、図19に示すように、測定データ記憶部122bは、測定データのタイムスタンプを格納してもよい。タイムスタンプは、測定の開始若しくは終了時刻、又は、測定データの格納時刻、等を示す情報であってよい。
また、測定データ記憶部122bは、処理時間ET[ms]と、処理時間et[ms]とを、別々のテーブル、配列、又はDB等に格納してもよい。
以上のように、測定部122aは、DIMM30からSSD20へ、第1サイズ単位で移動されるデータの移動時間、及び、第2サイズ単位で移動されるデータの移動時間、をそれぞれ算出する算出部の一例である。
更新部122cは、測定データ記憶部122bに格納された測定データ数が一定数に達した場合に、測定データに基づいて、Nの値を更新する。
例えば、更新部122cは、測定部122a又は測定データ記憶部122bを監視し、処理時間ETの測定データ数がETnに達した場合、及び、処理時間etの測定データ数がetnに達した場合、の一方又は双方を満たす場合に、Nの値を算出してよい。なお、ETn及びetnは、同一の値であってもよいし、異なる値であってもよい。
例えば、更新部122cは、下記式(4)及び式(5)によって、ET及びetのそれぞれの平均値ETave及びetaveを算出してよい。なお、下記式(4)又は式(5)において、ET1,ET2,・・・,ETn、又は、et1,et2,・・・,etnは、処理時間ET又はetの各測定データを示す。また、average関数は、処理時間ETの測定データの平均値、又は、処理時間etの測定データの平均値、を出力する。
ETave = average(ET1,ET2,・・・,ETn) (4)
etave = average(et1,et2,・・・,etn) (5)
そして、更新部122cは、上記式(4)及び式(5)の算出結果を用いて、下記式(6)に基づき、Nの値を算出してよい。なお、int関数は、ETave / etaveの結果を超える最小の整数、換言すれば、ETave / etaveの算出結果のうちの小数点以下を切り上げて得られる整数、を出力する。
N = int(ETave / etave) - 1 (6)
上記式(4)~式(6)に示すように、更新部122cは、第1サイズ単位で移動されるデータの移動時間の算出結果の平均値を、第2サイズ単位で移動されるデータの移動時間の算出結果の平均値で除算した結果に基づき、閾値Nを変更するといえる。
或いは、更新部122cは、測定データの数がETn及び/又はetnに達した場合にNの値を算出するのではなく、一定時間ごとに、測定データ記憶部122bにおける直近の一定時間内に測定された測定データを用いて、Nの値を算出してもよい。また、更新部122cは、上記式(4)及び式(5)において、直近の測定データに近いほどウェイトが大きくなる加重平均をとってもよい。
そして、更新部122cは、算出したNの値を、移動領域決定部125に通知することで、移動領域決定部125で用いるNの値を更新してよい。
また、更新部122cは、Nの値を算出又は更新すると、測定データ記憶部122bに格納(蓄積)された測定データをクリア、例えば、消去又は無効化してよい。
以上のように、更新部122cは、測定部122aによる算出結果に基づいて、閾値Nを変更する変更部の一例である。
移動制御部122は、運用中に、測定部122a及び更新部122cによる上述した処理を繰り返し(例えば定期的に)実行することで、効果的なNの値の算出及び更新を行なうことができる。
また、Nの値の算出及び更新の1サイクルごとに、測定データ記憶部122bに格納された測定データが消去又は無効化されるため、直前に測定された遅延時間をNの値の算出に反映させることができる。これにより、時間的局所性又は空間的局所性のあるIOアクセスパターンに追従して、柔軟にNの値を算出することができる。
〔1-3〕階層ストレージ制御装置のハードウェア構成例
次に、図20を参照して、図2及び図10に示す階層ストレージ制御装置10のハードウェア構成について説明する。図20は一実施形態の一例としての階層ストレージ装置1における階層ストレージ制御装置10のハードウェア構成例を示す図である。
階層ストレージ制御装置10は、図20に示すように、プロセッサ10a、メモリ10b、記憶部10c、IF(Interface;インタフェース)部10d、入出力部10e、及び、読取部10fをそなえてよい。
プロセッサ10aは、対応する各ブロック10b~10fとバス10iを介して相互に通信可能に接続され、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、メモリ10b、記憶部10c、記録媒体10h、又は、図示しないROM(Read Only Memory)等に格納されたプログラムを実行することにより、階層ストレージ制御装置10における種々の機能を実現する。
なお、プロセッサ10aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
プロセッサ10aとしては、例えば、CPU、MPU、GPU、APU、DSP、ASIC、FPGA等の集積回路が挙げられる。CPUはCentral Processing Unitの略称であり、MPUはMicro Processing Unitの略称である。GPUはGraphics Processing Unitの略称であり、APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
メモリ10bは、種々のデータやプログラムを格納する記憶装置である。プロセッサ10aは、プログラムを実行する際に、メモリ10bにデータやプログラムを格納し展開する。なお、メモリ10bとしては、例えばRAM(Random Access Memory)等の揮発性メモリが挙げられる。
記憶部10cは、種々のデータやプログラム等を格納するハードウェアである。記憶部10cとしては、例えばHDD(Hard Disk Drive)等の磁気ディスク装置、SSD等の半導体ドライブ装置、フラッシュメモリ等の不揮発性メモリ等の各種デバイスが挙げられる。なお、記憶部10cとして複数のデバイスが用いられてもよく、これらのデバイスでRAID(Redundant Arrays of Inexpensive Disks)が構成されてもよい。また、記憶部10cは、ストレージクラスメモリ(Storage Class Memory:SCM)であってもよく、また、図2及び図10に示すSSD20及びDIMM30を含んでもよい。
記憶部10cには、一実施形態に係る階層ストレージ制御装置10の各種機能の全部もしくは一部を実現する情報処理プログラム10gが格納されてもよい。例えば、プロセッサ10aは、記憶部10cから読み出した情報処理プログラム10gを、メモリ10b等の記憶装置に展開して実行することができる。これにより、コンピュータ(プロセッサ10a、情報処理装置、各種端末を含む)は、上述した階層ストレージ制御装置10の機能を実現することができる。
なお、図2に例示するDB101、図10に例示するBMP123及び階層TBL126、並びに、図18に例示する測定データ記憶部122bは、それぞれ、メモリ10b及び記憶部10cの少なくとも一方の記憶領域により実現されてよい。
IF部10dは、有線又は無線による、ネットワーク(図示省略)や他の情報処理装置との間の接続及び通信の制御等を行なうものである。IF部10dとしては、例えば、LAN(Local Area Network)、ファイバチャネル(FC)、インフィニバンド(InfiniBand)等に準拠したアダプタが挙げられる。
入出力部10eは、マウスやキーボード等の入力装置及びディスプレイやプリンタ等の出力装置の少なくとも一方を含んでよい。例えば、入出力部10eは、階層ストレージ制御装置10の使用者又は管理者等による種々の作業に用いられる。
読取部10fは、コンピュータ読取可能な記録媒体10hに記録されたデータやプログラムを読み出す装置である。記録媒体10hには、情報処理プログラム10gが格納されてもよい。例えば、プロセッサ10aは、読取部10fを介して記録媒体10hから読み出したプログラムを、メモリ10b等の記憶装置に展開して実行してもよい。
記録媒体10hとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等が挙げられる。なお、CDとしては、例示的に、CD-ROM、CD-R、CD-RW等が挙げられる。また、DVDとしては、例示的に、DVD-ROM、DVD-RAM、DVD-R、DVD-RW、DVD+R、DVD+RW等が挙げられる。
なお、階層ストレージ制御装置10の上述したハードウェア構成は例示である。従って、階層ストレージ制御装置10内でのハードウェアの増減(例えば任意のブロックの追加や省略)、分割、任意の組み合わせでの統合、バスの追加又は省略等は適宜行なわれてもよい。
〔2〕動作例
次に、図21~図27を参照して、上述の如く構成された一実施形態に係る階層ストレージ装置1の動作例を説明する。
〔2-1〕キュー制御部の動作例
図21に示すように、キュー制御部11cは、移動判定部11bから以下の情報を受信する(ステップS1)。
(1)予測移動対象のサブLUN。
(2)Up対象のサブLUN、及び、各サブLUNのIOアクセス数。
(3)Down対象のサブLUN。
キュー制御部11cは、上記(1)及び(2)のインターバル(第1のタイミング)で決定されたサブLUN IDと、低優先キュー107(Down用キュー107b)に登録済みの過去のインターバル(第2のタイミング)で決定されたサブLUN IDとを比較する(ステップS2)。そして、キュー制御部11cは、一致するサブLUN IDがあるか否かを判定する(ステップS3)。
一致するサブLUN IDがある場合(ステップS3でYes)、キュー制御部11cは、当該サブLUN IDを低優先キュー107(Down用キュー107b)から削除し(ステップS4)、処理がステップS5に移行する。一方、一致するサブLUN IDがない場合(ステップS3でNo)、処理がステップS5に移行する。
ステップS5では、キュー制御部11cは、上記(1)を高優先キュー106(予測移動用キュー106a)に全てプッシュする。また、キュー制御部11cは、上記(3)を低優先キュー107(Down用キュー107b)に全てプッシュする(ステップS6)。なお、ステップS5及びS6は逆順でもよいし、並行して実行されてもよい。
次いで、キュー制御部11cは、上記(2)の各サブLUNのIOアクセス数と閾値Thとを比較し(ステップS7)、IOアクセス数が閾値Th以上のサブLUNを高優先キュー106(高IOアクセス用キュー106b)に全てプッシュする(ステップS8)。
また、キュー制御部11cは、IOアクセス数が閾値Th未満のサブLUNを低優先キュー107(その他用キュー107a)に全てプッシュする(ステップS9)。なお、ステップS8及びS9は逆順でもよいし、並行して実行されてもよい。また、ステップS5及びS6と、ステップS7~S9とは、逆順でもよいし、並行して実行されてもよい。
そして、キュー制御部11cは、一定時間(例えばT秒)スリープし(ステップS10)、Up用のキュー(高優先キュー106、低優先キュー107のその他用キュー107a)の内容を全てクリアして(ステップS11)、処理がステップS1に移行する。スリープ後のステップS11から、次のループのステップS10(スリープ)までの期間を、1つのインターバルとして捉えた場合、各インターバルにおいて、ステップS1で受信する情報は、第1のタイミングで決定された移動対象についての移動指示であるといえる。また、ステップS11の処理は、次のステップS1で受信する情報(第1のタイミングで決定された情報)をキュー11dに格納するタイミングに先立って、第1のタイミングよりも前の第2のタイミングで決定された移動指示をキュー11dから削除する処理であるといえる。
〔2-2〕移動指示部の動作例
図22に示すように、移動指示部11eは、残り時間(Rtime)にT(秒)をセットし(ステップS21)、高優先キュー106にサブLUNが存在するか否かを判定する(ステップS22)。
高優先キュー106にサブLUNが存在する場合(ステップS22でYes)、移動指示部11eは、高優先キュー106からサブLUNを1つ取り出し、階層ドライバ12に対して当該サブLUNの階層移動を指示する(ステップS23)。
なお、高優先キュー106からサブLUNを取り出す優先順位は、予測移動用キュー106a及び高IOアクセス用キュー106bのいずれか一方が高くてもよい。この場合、移動指示部11eは、一方からサブLUNを全て取り出した後に、他方からサブLUNを取り出してよい。或いは、優先順位が同じであってもよく、この場合、移動指示部11eは、予測移動用キュー106a及び高IOアクセス用キュー106bから交互にサブLUNを取り出してもよい。
移動指示部11eは、階層移動の完了を待ち合わせ(ステップS24)、例えば階層ドライバ12から階層移動完了を通知されると、Rtimeから階層移動の実行時間(Mtime)を減算して、Rtimeを更新する(ステップS25)。
移動指示部11eは、Rtimeが0よりも大きいか否かを判定する(ステップS26)。Rtimeが0よりも大きい場合(ステップS26でYes)、処理がステップS22に移行する。一方、Rtimeが0以下の場合(ステップS26でNo)、処理がステップS21に移行する。
ステップS22において、高優先キュー106にサブLUNが存在しない場合(ステップS22でNo)、移動指示部11eは、低優先キュー107にサブLUNが存在するか否かを判定する(ステップS27)。
低優先キュー107にサブLUNが存在する場合(ステップS27でYes)、移動指示部11eは、低優先キュー107からサブLUNを1つ取り出し、階層ドライバ12に対して当該サブLUNの階層移動を指示する(ステップS28)。
なお、低優先キュー107からサブLUNを取り出す優先順位は、その他用キュー107a及びDown用キュー107bで同じであってもよい。この場合、移動指示部11eは、その他用キュー107a及びDown用キュー107bから交互にサブLUNを取り出してよい。或いは、優先順位はいずれか一方が高くてもよく、この場合、移動指示部11eは、例えば、一方からサブLUNを全て取り出した後に、他方からサブLUNを取り出してもよい。
移動指示部11eは、階層移動の完了を待ち合わせ(ステップS29)、例えば階層ドライバ12から階層移動完了を通知されると、Rtimeから階層移動の実行時間(Mtime)を減算して、Rtimeを更新する(ステップS30)。
移動指示部11eは、Rtimeが0よりも大きいか否かを判定する(ステップS31)。Rtimeが0よりも大きい場合(ステップS31でYes)、処理がステップS27に移行する。一方、Rtimeが0以下の場合(ステップS31でNo)、処理がステップS21に移行する。
ステップS27において、低優先キュー107にサブLUNが存在しない場合(ステップS27でNo)、移動指示部11eは、Rtimeの間スリープし(ステップS32)、処理がステップS21に移行する。
〔2-3〕階層ドライバの動作例
図23に示すように、階層移動処理において、階層ドライバ12の移動制御部122は、移動指示部11eからの移動指示を待つ(ステップS41)。
移動指示を受信すると、移動制御部122は、指示された移動がSSD20からDIMM30への移動(Up処理)か否かを判定する(ステップS42)。
SSD20からDIMM30への移動(Up処理)の場合(ステップS42でYes)、移動制御部122は、移動指示に従って、サブLUN単位で階層移動(Up処理)を行なう(ステップS43)。このとき、移動制御部122は、移動処理部15に対して、サブLUN単位での転送指示を送信する。
BMP管理部124は、階層移動したサブLUNに、BMP123の領域を割り当て(ステップS44)、処理がステップS41に移行する。
ステップS42において、DIMM30からSSD20への移動(Down処理)の場合(ステップS42でNo)、移動領域決定部125は、Down対象のサブLUNに対応する、BMP123の領域を参照する。そして、移動領域決定部125は、BMP123の領域のうち、ONに設定されたビットの数をカウントする(ステップS45)。
移動領域決定部125は、カウント値Xが閾値N以下か否かを判定し(ステップS46)、カウント値Xが閾値Nよりも大きい場合(ステップS46でNo)、移動制御部122に対して、移動領域としてサブLUNを通知する。移動制御部122は、サブLUN単位で階層移動(Down処理)を実行し(ステップS47)、処理がステップS49に移行する。ステップS47では、移動制御部122は、移動処理部15に対して、サブLUN単位での転送指示を送信する。
一方、カウント値Xが閾値N以下の場合(ステップS46でYes)、移動領域決定部125は、移動制御部122に対して、移動領域として、ONに設定されたビットに対応する部分領域を通知する。移動制御部122は、部分領域単位で階層移動(Down処理)を順番に実行し(ステップS48)、処理がステップS49に移行する。ステップS48では、移動制御部122は、移動処理部15に対して、部分領域単位での転送指示を送信する。
ステップS49では、移動制御部122は、DIMM30におけるDown対象のサブLUNを解放する。
BMP管理部124は、Down対象のサブLUNと、BMP123の領域との対応関係をクリアし(ステップS50)、処理がステップS41に移行する。なお、ステップS49及びS50は逆順で実行されてもよいし、並行して実行されてもよい。
図24に示すように、BMP更新処理において、BMP管理部124は、アプリケーションからのIO要求の受信を待ち受ける(ステップS51、ステップS51でNo)。
アプリケーションからIO要求を受信すると(ステップS51でYes)、BMP管理部124は、階層TBL126を参照して、IO要求が階層TBL126に登録済のサブLUNの範囲か否かを判定する(ステップS52)。IO要求が範囲外の場合(ステップS52でNo)、処理がステップS51に移行する。
一方、IO要求が階層TBL126に登録済のサブLUNの範囲内の場合(ステップS52でYes)、BMP管理部124は、IO要求がwrite処理を対象としているか否かを判定する(ステップS53)。IO要求がwrite処理を対象としていない場合(ステップS53でNo)、処理がステップS51に移行する。
IO要求がwrite処理を対象としている場合(ステップS53でYes)、BMP管理部124は、BMP123に対して、IOアクセス対象の部分領域の番号、例えば、sub-sub-LUN番号を計算し、BMP123における対応するビットをONに設定し(ステップS54)、処理がステップS51に移行する。
図25に示すように、サブLUN転送測定処理において、移動制御部122の測定部122aは、移動制御部122から移動処理部15へサブLUN単位の転送指示が送信されたか否かを判定する(ステップS61)。サブLUN単位の転送指示が送信されていない場合(ステップS61でNo)、処理がステップS61に移行する。
サブLUN単位の転送指示が送信された場合(ステップS61でYes;図23のステップS47参照)、測定部122aは、開始時刻を記録する(ステップS62)。
次いで、測定部122aは、移動処理部15から転送完了通知を受信したか否かを判定する(ステップS63)。転送完了通知を受信していない場合(ステップS63でNo)、処理がステップS63に移行する。
移動処理部15から転送完了通知を受信した場合(ステップS63でYes)、測定部122aは、現在の時刻と、ステップS62で記録した開始時刻との差分を算出データとして算出する。そして、測定部122aは、算出した測定データを測定データ記憶部122bに記録し(ステップS64)、処理がステップS61に移行する。
図26に示すように、部分領域転送測定処理において、測定部122aは、移動制御部122から移動処理部15へ部分領域単位の転送指示が送信されたか否かを判定する(ステップS71)。部分領域単位の転送指示が送信されていない場合(ステップS71でNo)、処理がステップS71に移行する。
部分領域単位の転送指示が送信された場合(ステップS71でYes;図23のステップS48参照)、測定部122aは、開始時刻を記録する(ステップS72)。
次いで、測定部122aは、移動処理部15から転送完了通知を受信したか否かを判定する(ステップS73)。転送完了通知を受信していない場合(ステップS73でNo)、処理がステップS73に移行する。
移動処理部15から転送完了通知を受信した場合(ステップS73でYes)、測定部122aは、現在の時刻と、ステップS72で記録した開始時刻との差分を算出データとして算出する。そして、測定部122aは、算出した測定データを測定データ記憶部122bに記録し(ステップS74)、処理がステップS71に移行する。
図27に示すように、閾値更新処理において、更新部122cは、測定データ記憶部122bにおける、サブLUNの測定データ数がETn以上、且つ、部分領域の測定データ数がetn以上か否かを判定する(ステップS81)。条件を満たさない場合(ステップS81でNo)、処理がステップS81に移行する。
条件を満たす場合(ステップS81でYes)、更新部122cは、下記式(7)~式(9)に基づきNを算出し、移動領域決定部125で用いられるNの値を更新する(ステップS82)。
ETave = average(ET1,ET2,・・・,ETn) (7)
etave = average(et1,et2,・・・,etn) (8)
N = int(ETave / etave) - 1 (9)
そして、更新部122cは、測定データ記憶部122bにおける、サブLUN及び部分領域の各測定データをクリアし(ステップS83)、処理がステップS81に移行する。
なお、上記ステップS81において、更新部122cは、サブLUNの測定データ数がETn以上か否か、及び、部分領域の測定データ数がetn以上か否か、のいずれか一方の条件を判定してもよいし、他の条件を判定してもよい。
〔3〕その他
開示の技術は上述した実施形態に限定されるものではなく、一実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、一実施形態において、SSD20及びDIMM30を用いた階層ストレージ装置1について説明したが、これに限定されるものではなく、例えばキャッシュメモリと主記憶装置とを用いた階層記憶システムにも同様に適用することができる。すなわち、一実施形態は、不揮発性記憶装置の階層記憶システムだけでなく、揮発性記憶装置を含む階層記憶システムにも同様に適用することができる。
また、一実施形態に係る階層ストレージ装置1は、SSD20及びDIMM30の他に、速度差のある記憶装置にも適用することが可能である。例えばSSD20と、SSDよりも低速なアクセス速度を有するHDDとを用いた階層ストレージ装置等にも適用することが可能である。また、SSD20と、SSDよりも大容量だが低速なテープドライブ等の磁気記録装置とを用いた階層ストレージ装置等にも適用してもよい。
さらに、一実施形態において、階層ストレージ制御装置10の動作を1つのSSD20及び1つのDIMM30に着目して説明したが、複数のSSD20及び複数のDIMM30が階層ストレージ装置1にそなえられる場合も同様である。
また、上述した実施形態においては、階層ストレージ制御装置10がLinux device-mapper等の機能を用いる例を示したが、これに限定されるものではない。例えば、他のボリューム管理用ドライバや他のOSの機能を用いてもよく、種々変形して実施することができる。
また、図2、図10、及び図18に示す階層ストレージ制御装置10の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。
上述した実施形態では、DB101、検出部102、Up判定部103、Down判定部104、及び、予測移動判定部105としての機能を移動判定部11bにそなえた場合について説明したが、これに限定されるものではない。例えば、これらの機能は、階層管理部11内にそなえられていればよい。また、キュー制御部11cは、移動判定部11b又はキュー11dにそなえられてもよく、或いは、移動判定部11b及びキュー11dに分散してそなえられてもよい。
上述した実施形態では、測定部122a、測定データ記憶部122b、及び、更新部122cとしての機能を移動制御部122にそなえた場合について説明したが、これに限定されるものではない。例えば、これらの機能は、階層ドライバ12内にそなえられていればよい。また、移動領域決定部125は、移動制御部122内にそなえられてもよい。
さらに、一実施形態において、階層ドライバ12のBMP123、BMP管理部124、及び、移動領域決定部125としての機能は、階層管理部11とは独立した機能と捉えることができる。すなわち、上述したように、階層管理部11に代えて、従来の階層管理部11が用いられた場合でも、上述した階層ドライバ12による効果と同様の効果を奏することができる。
また、上述した実施形態では、階層ストレージに適用した場合について説明したが、これに限定されるものでない。例えば、DIMM等の第1の記憶装置がキャッシュメモリである場合についても、上述した実施形態と同様に適用可能であり、上述した実施形態と同様の効果を奏することができる。
また、上述した開示により一実施形態を当業者によって実施・製造することが可能である。
〔4〕付記
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
第1記憶装置における記憶領域に対する書き込みアクセスの有無を、第1サイズの記憶領域を所定の大きさで分割した第2サイズの部分領域ごとに管理する管理情報を記憶する第1メモリ部と、
前記第1記憶装置から前記第1記憶装置よりもアクセス速度の低い第2記憶装置への前記第1サイズの対象データの移動の実行指示に応じて、前記管理情報を参照して、前記対象データの記憶領域において書き込みアクセスがあった部分領域の数が閾値よりも大きい場合、前記対象データを前記第1サイズ単位で前記第1記憶装置から前記第2記憶装置へ移動し、前記書き込みアクセスがあった部分領域の数が前記閾値以下の場合、前記対象データのうちの前記書き込みアクセスがあった部分領域のデータを前記第2サイズ単位で前記第1記憶装置から前記第2記憶装置へ移動する移動実行部と、
前記第1記憶装置から前記第2記憶装置へ、前記第1サイズ単位で移動されるデータの移動時間、及び、前記第2サイズ単位で移動されるデータの移動時間、をそれぞれ算出する算出部と、
前記算出部による算出結果に基づいて、前記閾値を変更する変更部と、をそなえる
情報処理装置。
(付記2)
前記変更部は、前記第1サイズ単位で移動されるデータの移動時間の算出結果の数が第1の所定数に達した場合、及び、前記第2サイズ単位で移動されるデータの移動時間の算出結果の数が第2の所定数に達した場合、の少なくとも一方の場合に、前記算出部による算出結果に基づいて、前記閾値を変更する、付記1に記載の情報処理装置。
(付記3)
前記変更部は、前記第1サイズ単位で移動されるデータの移動時間の算出結果の平均値を、前記第2サイズ単位で移動されるデータの移動時間の算出結果の平均値で除算した結果に基づき、前記閾値を変更する、付記2に記載の情報処理装置。
(付記4)
前記算出部による算出結果を記憶する第2メモリ部をそなえ、
前記変更部は、前記第2メモリ部に記憶される算出結果に基づいて、前記閾値を変更し、前記閾値を変更すると、前記第2メモリ部に記憶される算出結果をクリアする、付記1~3のいずれか1項に記載の情報処理装置。
(付記5)
前記第1記憶装置と、前記第2記憶装置と、の間でデータを移動させる移動処理を指示するための移動指示を格納するキューと、
前記移動処理の対象データを決定し、決定した対象データについての移動指示を前記キューに格納する決定部と、
第1のタイミングで決定された対象データについての移動指示が前記キューに格納されるタイミングに先立って、前記キューに格納された移動指示のうち、前記第1のタイミングよりも前の第2のタイミングで決定された前記第2記憶装置から前記第1記憶装置への移動指示を削除対象として前記キューから削除する削除部と、
前記キューに格納された移動指示を読み出し、当該移動指示に従った前記移動処理の実行を制御する実行制御部と、をそなえ、
前記第2記憶装置から前記第1記憶装置への移動指示における対象データは、前記第1記憶装置において、アクセス集中が発生しているデータ、又は、アクセス集中の発生が予測されるデータである、付記1~4のいずれか1項に記載の情報処理装置。
(付記6)
第1記憶装置における記憶領域に対する書き込みアクセスの有無を、第1サイズの記憶領域を所定の大きさで分割した第2サイズの部分領域ごとに管理する管理情報を第1メモリ部に記憶し、
前記第1記憶装置から前記第1記憶装置よりもアクセス速度の低い第2記憶装置への前記第1サイズの対象データの移動の実行指示に応じて、前記管理情報を参照して、前記対象データの記憶領域において書き込みアクセスがあった部分領域の数が閾値よりも大きい場合、前記対象データを前記第1サイズ単位で前記第1記憶装置から前記第2記憶装置へ移動し、
前記書き込みアクセスがあった部分領域の数が前記閾値以下の場合、前記対象データのうちの前記書き込みアクセスがあった部分領域のデータを前記第2サイズ単位で前記第1記憶装置から前記第2記憶装置へ移動し、
前記第1記憶装置から前記第2記憶装置へ、前記第1サイズ単位で移動されるデータの移動時間、及び、前記第2サイズ単位で移動されるデータの移動時間、をそれぞれ算出し、
算出結果に基づいて、前記閾値を変更する、
処理をコンピュータに実行させる、情報処理プログラム。
(付記7)
前記変更は、前記第1サイズ単位で移動されるデータの移動時間の算出結果の数が第1の所定数に達した場合、及び、前記第2サイズ単位で移動されるデータの移動時間の算出結果の数が第2の所定数に達した場合、の少なくとも一方の場合に、前記算出結果に基づいて、前記閾値を変更する、付記6に記載の情報処理プログラム。
(付記8)
前記変更は、前記第1サイズ単位で移動されるデータの移動時間の算出結果の平均値を、前記第2サイズ単位で移動されるデータの移動時間の算出結果の平均値で除算した結果に基づき、前記閾値を変更する、付記7に記載の情報処理プログラム。
(付記9)
前記算出結果を第2メモリ部に記憶し、
前記第2メモリ部に記憶される算出結果に基づいて、前記閾値を変更し、
前記閾値を変更すると、前記第2メモリ部に記憶される算出結果をクリアする、
処理を前記コンピュータに実行させる、付記6~8のいずれか1項に記載の情報処理プログラム。
(付記10)
前記第1記憶装置と、前記第2記憶装置と、の間でデータを移動させる移動処理の対象データを決定し、
第1のタイミングで決定された対象データについての移動指示をキューに格納し、
前記キューに格納された移動指示のうち、前記第1のタイミングよりも前の第2のタイミングで決定された前記第2記憶装置から前記第1記憶装置への移動指示を削除対象として前記キューから削除し、
前記キューに格納された移動指示を読み出し、当該移動指示に従った前記移動処理の実行を制御する、
処理を前記コンピュータに実行させ、
前記第2記憶装置から前記第1記憶装置への移動指示における対象データは、前記第1記憶装置において、アクセス集中が発生しているデータ、又は、アクセス集中の発生が予測されるデータである、付記6~9のいずれか1項に記載の情報処理プログラム。
1 階層ストレージ装置
2 ホスト装置
10 階層ストレージ制御装置
11 階層管理部
11a データ収集部
11b 移動判定部
11c キュー制御部
11d キュー
11e 移動指示部
100 ストレージシステム
101 DB
102 検出部
103 Up判定部
104 Down判定部
105 予測移動判定部
106 高優先キュー
106a 予測移動用キュー
106b 高IOアクセス用キュー
107 低優先キュー
107a その他用キュー
107b Down用キュー
12 階層ドライバ
121 IOアクセス制御部
122 移動制御部
122a 測定部
122b 測定データ記憶部
123c 更新部
123 ビットマップ
124 ビットマップ管理部
125 移動領域決定部
126 階層テーブル
13 SSDドライバ
14 HDDドライバ
15 移動処理部
20 SSD
30 DIMM

Claims (6)

  1. 第1記憶装置における記憶領域に対する書き込みアクセスの有無を、第1サイズの記憶領域を所定の大きさで分割した第2サイズの部分領域ごとに管理する管理情報を記憶する第1メモリ部と、
    前記第1記憶装置から前記第1記憶装置よりもアクセス速度の低い第2記憶装置への前記第1サイズの対象データの移動の実行指示に応じて、前記管理情報を参照して、前記対象データの記憶領域において書き込みアクセスがあった部分領域の数が閾値よりも大きい場合、前記対象データを前記第1サイズの記憶領域を1単位とする第1サイズ単位で前記第1記憶装置から前記第2記憶装置へ移動し、前記書き込みアクセスがあった部分領域の数が前記閾値以下の場合、前記対象データのうちの前記書き込みアクセスがあった部分領域のデータを前記第2サイズの部分領域を1単位とする第2サイズ単位で前記第1記憶装置から前記第2記憶装置へ移動する移動実行部と、
    前記第1記憶装置から前記第2記憶装置へ、前記第1サイズ単位で移動されるデータの移動時間、及び、前記第2サイズ単位で移動されるデータの移動時間、をそれぞれ算出する算出部と、
    前記算出部による算出結果に基づいて、前記閾値を変更する変更部と、をそなえる
    情報処理装置。
  2. 前記変更部は、前記第1サイズ単位で移動されるデータの移動時間の算出結果の数が第1の所定数に達した場合、及び、前記第2サイズ単位で移動されるデータの移動時間の算出結果の数が第2の所定数に達した場合、の少なくとも一方の場合に、前記算出部による算出結果に基づいて、前記閾値を変更する、請求項1に記載の情報処理装置。
  3. 前記変更部は、前記第1サイズ単位で移動されるデータの移動時間の算出結果の平均値を、前記第2サイズ単位で移動されるデータの移動時間の算出結果の平均値で除算した結果に基づき、前記閾値を変更する、請求項2に記載の情報処理装置。
  4. 前記算出部による算出結果を記憶する第2メモリ部をそなえ、
    前記変更部は、前記第2メモリ部に記憶される算出結果に基づいて、前記閾値を変更し、前記閾値を変更すると、前記第2メモリ部に記憶される算出結果をクリアする、請求項1~3のいずれか1項に記載の情報処理装置。
  5. 前記第1記憶装置と、前記第2記憶装置と、の間でデータを移動させる移動処理を指示するための移動指示を格納するキューと、
    前記移動処理の対象データを決定し、決定した対象データについての移動指示を前記キューに格納する決定部と、
    第1のタイミングで決定された対象データについての移動指示が前記キューに格納されるタイミングに先立って、前記キューに格納された移動指示のうち、前記第1のタイミングよりも前の第2のタイミングで決定された前記第2記憶装置から前記第1記憶装置への移動指示を削除対象として前記キューから削除する削除部と、
    前記キューに格納された移動指示を読み出し、当該移動指示に従った前記移動処理の実行を制御する実行制御部と、をそなえ、
    前記第2記憶装置から前記第1記憶装置への移動指示における対象データは、前記第1記憶装置において、アクセス集中が発生しているデータ、又は、アクセス集中の発生が予測されるデータである、請求項1~4のいずれか1項に記載の情報処理装置。
  6. 第1記憶装置における記憶領域に対する書き込みアクセスの有無を、第1サイズの記憶領域を所定の大きさで分割した第2サイズの部分領域ごとに管理する管理情報を第1メモリ部に記憶し、
    前記第1記憶装置から前記第1記憶装置よりもアクセス速度の低い第2記憶装置への前記第1サイズの対象データの移動の実行指示に応じて、前記管理情報を参照して、前記対象データの記憶領域において書き込みアクセスがあった部分領域の数が閾値よりも大きい場合、前記対象データを前記第1サイズの記憶領域を1単位とする第1サイズ単位で前記第1記憶装置から前記第2記憶装置へ移動し、
    前記書き込みアクセスがあった部分領域の数が前記閾値以下の場合、前記対象データのうちの前記書き込みアクセスがあった部分領域のデータを前記第2サイズの部分領域を1単位とする第2サイズ単位で前記第1記憶装置から前記第2記憶装置へ移動し、
    前記第1記憶装置から前記第2記憶装置へ、前記第1サイズ単位で移動されるデータの移動時間、及び、前記第2サイズ単位で移動されるデータの移動時間、をそれぞれ算出し、
    算出結果に基づいて、前記閾値を変更する、
    処理をコンピュータに実行させる、情報処理プログラム。
JP2019043374A 2019-03-11 2019-03-11 情報処理装置及び情報処理プログラム Active JP7234704B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019043374A JP7234704B2 (ja) 2019-03-11 2019-03-11 情報処理装置及び情報処理プログラム
US16/786,019 US11221783B2 (en) 2019-03-11 2020-02-10 Information processing apparatus and non-transitory computer-readable recording medium having stored therein information processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019043374A JP7234704B2 (ja) 2019-03-11 2019-03-11 情報処理装置及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2020149075A JP2020149075A (ja) 2020-09-17
JP7234704B2 true JP7234704B2 (ja) 2023-03-08

Family

ID=72423329

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019043374A Active JP7234704B2 (ja) 2019-03-11 2019-03-11 情報処理装置及び情報処理プログラム

Country Status (2)

Country Link
US (1) US11221783B2 (ja)
JP (1) JP7234704B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11138123B2 (en) * 2019-10-01 2021-10-05 EMC IP Holding Company LLC Local cache size control in a storage array
CN113326140A (zh) * 2021-06-30 2021-08-31 统信软件技术有限公司 一种进程迁移方法、装置、计算设备以及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5594647B2 (ja) 2010-08-10 2014-09-24 日本電気株式会社 ストレージ装置及びその制御方法
JP6152704B2 (ja) * 2013-05-28 2017-06-28 富士通株式会社 ストレージシステム、情報処理装置の制御プログラム、およびストレージシステムの制御方法
JP2015207123A (ja) * 2014-04-18 2015-11-19 富士通株式会社 ストレージ装置、ストレージ制御方法およびストレージ制御プログラム
JP6497233B2 (ja) 2015-06-19 2019-04-10 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法
JP2017027301A (ja) 2015-07-21 2017-02-02 富士通株式会社 ストレージ制御装置、階層化ストレージ制御プログラム、階層化ストレージ制御方法

Also Published As

Publication number Publication date
US20200293217A1 (en) 2020-09-17
JP2020149075A (ja) 2020-09-17
US11221783B2 (en) 2022-01-11

Similar Documents

Publication Publication Date Title
JP5629919B2 (ja) 継続中の負荷の測定及びランク付けを用いてストレージプールに仮想ボリュームのホットスポットを配置する方法
US8447946B2 (en) Storage apparatus and hierarchical data management method for storage apparatus
US8429346B1 (en) Automated data relocation among storage tiers based on storage load
US9658779B2 (en) Computer system and control method for computer system
JP6051228B2 (ja) 計算機システム、ストレージ管理計算機及びストレージ管理方法
US7506101B2 (en) Data migration method and system
JP2020046929A (ja) 情報処理装置及び情報処理プログラム
JP6510635B2 (ja) ストレージシステム及びデータ制御方法
US8762995B2 (en) Computing system, method of controlling the same, and system management unit which plan a data migration according to a computation job execution schedule
US20090106518A1 (en) Methods, systems, and computer program products for file relocation on a data storage device
US9563552B2 (en) Storage control device and storage control method
WO2012137242A1 (en) Storage system and data control method therefor
EP2671160A2 (en) System, apparatus, and method supporting asymmetrical block-level redundant storage
JP2014516442A (ja) 計算機システム及びデータ管理方法
JP7234704B2 (ja) 情報処理装置及び情報処理プログラム
US20180341423A1 (en) Storage control device and information processing system
US11429431B2 (en) Information processing system and management device
JP2018106462A (ja) 情報処理装置、ストレージ制御プログラムおよびストレージ制御方法
JP6260384B2 (ja) ストレージ制御装置,制御プログラム,及び制御方法
US20140297988A1 (en) Storage device, allocation release control method
US20190324677A1 (en) Information processing apparatus
US10168944B2 (en) Information processing apparatus and method executed by an information processing apparatus
JP7323769B2 (ja) ストレージ装置、ストレージシステムおよびプログラム
WO2014147786A1 (ja) ストレージシステム及びデータ管理方法
JP6497233B2 (ja) ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190607

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230111

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20230111

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: 20230124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230206

R150 Certificate of patent or registration of utility model

Ref document number: 7234704

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150