JP5944587B2 - 計算機システム及び制御方法 - Google Patents
計算機システム及び制御方法 Download PDFInfo
- Publication number
- JP5944587B2 JP5944587B2 JP2015529238A JP2015529238A JP5944587B2 JP 5944587 B2 JP5944587 B2 JP 5944587B2 JP 2015529238 A JP2015529238 A JP 2015529238A JP 2015529238 A JP2015529238 A JP 2015529238A JP 5944587 B2 JP5944587 B2 JP 5944587B2
- Authority
- JP
- Japan
- Prior art keywords
- server
- storage
- information
- cache
- area
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
Description
本発明は、計算機システムであって、特に、異なる種類の記憶媒体からなる記憶階層を有するストレージ装置と、キャッシュを備えるサーバを備える計算機システムにおける、記憶領域の管理技術に関する。
近年、HDD (Hard Disk Drive)よりも高性能な記録媒体であるSSD (Solid State Drive)が普及してきている。一般的にSSDはHDDよりも高価であるため、限られた予算内で計算機システムを構築・運用しなければならない場合、SSD容量を多く確保することができないため、SSDの記憶領域を効率的に活用することが求められる。少量の高性能な記憶媒体を効率的に活用するための従来技術として、ストレージ装置に、高価だが高性能な記憶媒体と、性能は低いが低価格な記憶媒体とで構成される記憶階層を設け、I/O (Input/Output)頻度の高いデータを高性能な記憶媒体(上位記憶階層)に配置し、I/O頻度の低い領域を低価格な記憶媒体(下位記憶階層)に配置する階層記憶管理技術が存在する。また、ストレージ装置から一旦読み出されたデータをサーバ上の記憶領域(サーバキャッシュ)にコピーし、次回以降のアクセスはサーバキャッシュ上のデータを利用するキャッシュ技術が存在する。
また、高性能な記憶媒体をさらに効率的に活用する方式の1つとして、サーバとストレージ装置の両方にキャッシュ記憶を備える計算機システムにおいて、サーバ上のキャッシュ記憶にキャッシュされたデータをストレージ装置上のキャッシュ記憶にキャッシュせず、ストレージ装置上のキャッシュ記憶にキャッシュされたデータをサーバ上のキャッシュ記憶にはキャッシュしないようにする、キャッシュ記憶の制御方法が挙げられる(特許文献1)。
SSDとHDDの記憶階層を管理する階層記憶管理技術とサーバ上のキャッシュ技術とを使用する場合、上位記憶階層に配置されたデータは既に高速にアクセスされることが可能な状態であるにもかかわらず、サーバ上のキャッシュにもキャッシュされることがあり、高速な記憶領域を無駄に消費することになる。特許文献1では、サーバとストレージ装置のキャッシュ間でのデータ重複を避けることは開示しているが、ストレージ装置の記憶階層について考慮されていない。
また、サーバはデータ保全のために、サーバキャッシュをライトスルー方式で利用するため、ライト時にはサーバキャッシュによる性能向上は期待できない。そのため、ライト頻度の高いデータの場合、データがサーバにキャッシュされていても、ストレージ装置の下位記憶階層にデータが格納されている場合、性能が向上しない。
本発明は上記課題を解決するために、性能の異なる複数種類の記憶媒体から成る複数の記憶階層を有するストレージ装置と、ストレージ装置からリードしたデータの一部をキャッシュするためのサーバキャッシュを備えたサーバとを有する計算機システムにおいて、できるだけ多くのデータがサーバキャッシュあるいはストレージ装置の上位記憶階層に格納されるように、データ配置を制御する。具体的には、サーバキャッシュとストレージ装置の上位記憶階層の両方に、同一データが重複格納されないような制御を行う。
同一データが重複格納されないようデータ配置を制御する場合、ストレージ装置がデータ配置を制御する方法と、サーバがデータ配置を制御する方法とが存在する。ストレージ装置がデータ配置を制御する場合、ストレージ装置ではサーバキャッシュに格納されたデータのうち、リード率の高いデータについては下位記憶階層に配置し、ライト率が高いデータについては、上位記憶階層に配置する制御を行う。
またサーバがデータ配置を制御する場合、ストレージ装置の上位記憶階層に格納されているデータについてはサーバキャッシュにキャッシュせず、ストレージ装置の下位記憶階層に格納されているデータについてはサーバキャッシュにキャッシュする、という制御を行う。
従来のシステムの場合、I/O頻度の高いデータは、ストレージ装置の上位記憶階層に配置され、かつサーバキャッシュにもキャッシュされる傾向があるため、具体的には、サーバキャッシュとストレージ装置の上位記憶階層の両方に、同一データが重複格納され、高速な記憶媒体を無駄に消費することになる。本発明の計算機システムによれば、サーバキャッシュに格納されているデータはストレージ装置の上位記憶階層に配置しないようにする、あるいはストレージ装置の上位記憶階層に配置されているデータをサーバキャッシュにキャッシュしないように制御するため、サーバキャッシュあるいはストレージ装置の上位記憶階層という高速な記憶媒体に、より多くのデータを配置することができ、計算機システムのI/O性能を向上できる。また本発明の計算機システムでは、サーバキャッシュに格納されているデータであってもライト率の高いデータは、ストレージ装置の高速な記憶階層に配置されるため、ライトアクセスが多い場合にもI/O性能を向上させることができる。
本発明の概要を図1に基づいて説明する。なお、本発明は、以下に説明する実施形態に限定されるものではない。
本システムは、データベースプログラム302とキャッシュ制御プログラム303が動作するサーバ200と、SSD 267とHDD 268という少なくとも2種類の記憶階層を備えるストレージ260と、ページ階層決定プログラム503を備える管理サーバ280が通信ネットワークを介して接続された計算機システムである。ストレージ260は、ページという固定長の領域ごとに、所定期間中に発生したリード・ライトアクセス数を、仮想ボリューム情報405に格納し管理している。またストレージ260は、記憶階層間のデータ移動をページ単位で行う機能を有する。サーバ200は、アクセスデータの一部をフラッシュメモリドライブ204にキャッシュし、キャッシュデータに関する情報をキャッシュ制御情報304に格納して管理している。
ページ階層決定プログラム503は、サーバ200からキャッシュ制御情報304を、そしてストレージ260から仮想ボリューム情報405を取得して、各ページが配置されるべき記憶階層を決定し、ページ移動プログラム410に対して、決定した階層へのページの移動を指示する。ページ移動プログラム410は、指示に従いページを移動する。より具体的には、ページ階層決定プログラム503は、サーバにデータがキャッシュされている比率の高いページのうち、リードアクセス率が高い(リードアクセス率が第1の閾値より高い)ページA 101のデータはHDD 268に配置するべきと決定し、リードアクセス率が低い(リードアクセス率が第2の閾値より低い。ライトアクセス率が高いことを意味する)ページB 102のデータはSSD 267に配置するべきと決定する。
本発明により、サーバにキャッシュされているデータのうち、リードが多いデータはストレージ上のSSDに配置されないようになるため、より多くのデータが高速な記録媒体に配置され、計算機システムのI/O性能を向上できる。またキャッシュされているデータのうち、ライトが比較的多いデータはストレージ上のSSDに配置されるので、ライトアクセス時の性能低下を防止できる。その結果、システム構築費用を増加させることなくI/O性能を向上できるため、コスト・パフォーマンスを向上できる。
図2は、実施例1における計算機システムの構成を示す。サーバ200は、SAN (Storage Area Network) 220を介してストレージシステム260からデータを読み込み、ストレージシステム260(以下、「ストレージ260」と略記することもある)にデータを書き込む。管理サーバ280は、管理LAN 240を介してサーバ200およびストレージ260と接続し、サーバ200およびストレージ260から情報を収集し、サーバ200およびストレージ260に指示を送信する。
サーバ200は、CPU 201、メモリ202、HDD 203、フラッシュメモリドライブ204、SAN I/F 205、LAN I/F 206から構成される。CPU 201は、後述するデータベースプログラム等の、サーバ200上で使用される各種プログラムを実行するためのもので、サーバ200が起動するとき等に、HDD 203に格納されたプログラムおよびデータをメモリ202にロードし、プログラムを実行して所定の機能を実現する。なお、本明細書では、「プログラムが…処理を実行する」のように、プログラムが動作主体となって特定の処理が実行されるような記載がされている場合があるが、実際はCPU201等のプログラム実行部がプログラムを実行することによって、本明細書に記載の処理または機能が実現されることを意味する。
フラッシュメモリドライブ204は、サーバ200で良く用いられるデータをキャッシュしておくために用いられるもので、以下ではフラッシュメモリドライブ204のことを「サーバキャッシュ」と呼ぶこともある。1台のサーバ200に、1つないし複数のフラッシュメモリドライブ204が備えられる。またフラッシュメモリドライブ204には、HDD203やストレージ260で用いられるHDD268よりもアクセス性能の高い記憶媒体が用いられる。たとえばハードディスクドライブ(HDD)用のインタフェースに接続されるSSD、あるいはPCI(Peripheral Component Interconnect) Express(登録商標)等の周辺機器用インタフェースに接続されるフラッシュストレージが用いられる。なお、サーバキャッシュの記憶媒体としては、フラッシュメモリなどの不揮発性メモリ以外に、SRAM(Static RAM)、DRAM(Dynamic RAM)などの揮発性の記憶媒体を用いてもよい。また、フラッシュメモリドライブ204を設けずに、メモリ202の一部の領域をサーバキャッシュとして用いても良い。
SAN I/F 205は、サーバ200をストレージ260に接続するためのインタフェースで、主としてサーバ200がストレージ260のボリュームのデータの読み書きを行う際に用いられる。またLAN I/F 206は、サーバ200が管理サーバ280と管理情報をやり取りする際に使用される。
ストレージシステム260は、ストレージコントローラ263と、サーバ200がアクセスするデータを記憶する記憶媒体である、複数のSSD267と複数のHDD268から構成される。HDD268はいわゆる磁気ディスク装置であり、SSD267はフラッシュメモリドライブ204と同様に、HDD268よりもアクセス性能の高い記憶媒体であるフラッシュメモリを用いた記憶装置である。
またストレージコントローラ263は、CPU 261、メモリ262、SAN I/F 264、LAN I/F 265、ドライブI/F 266とから構成される。CPU 261は、サーバ200からのリード命令およびライト命令を受け付け、SSD 267およびHDD 268を制御する。メモリ262は、CPU261がSSD 267およびHDD 268を制御するためのドライブ制御プログラムなどのプログラムの他、各種の制御情報を格納し、CPU 261はメモリ262上のプログラムを実行することで、各種処理を行う。SAN I/F 264は、ストレージ260とサーバ200間の通信(データ入出力)を行う場合に用いられ、LAN I/F 265はストレージ260が管理サーバ280と管理情報のやり取りを行う際に用いられるインタフェースである。またドライブI/F 266は、SSD 267またはHDD 268と、ストレージコントローラ263とを接続するためのインタフェースである。なお、以下ではSSD267とHDD268のことを、「ディスク」あるいは「ドライブ」と呼ぶこともある。
本発明の実施例におけるストレージシステム260は、記憶領域の管理のために次のような構成を定義する。まず、複数台(たとえば4台)のディスク(SSD 267またはHDD 268)から構成されるRAIDグループを定義する。ストレージ260は、いわゆるRAID(Redundant Arrays of Inexpensive DisksまたはRedundant Arrays of Independent Disks)技術を用いて、ディスク障害時に備えてデータを冗長化して複数のディスクに分散記憶するが、1つのRAIDグループには、データを分散記憶する際にデータが記憶される対象のディスクの集合を定義している。本発明の実施例では、1つのRAIDグループに含まれるディスクの種類は同一のものであるとする。たとえば1番目のRAIDグループはSSD267のみを用いたRAIDグループ、2番目のRAIDグループはHDD268(たとえばSAS[Serial Attached SCSI] HDD)のみを用いたグループである。またRAIDグループは、1または複数の連続領域に分割され、ストレージ260は、これら分割された連続領域を、それぞれ論理ボリュームとして管理する。
なお、RAIDグループと論理ボリュームは、ストレージ260が記憶領域を管理するために内部的に用いる管理単位であり、外部(たとえばサーバ200)から認識されるものではない。ストレージ260は、サーバ200がデータの読み書きを行うために用いるための記憶媒体(ボリューム)として、仮想ボリュームを定義しサーバ200に提供する。
本発明の実施例における仮想ボリュームとは、いわゆるシン・プロビジョニング(Thin provisioning)技術によって形成されるボリュームであって、ストレージ260が仮想ボリュームを定義(作成)すると、サーバ200は当該仮想ボリュームを、所定のサイズ(記憶領域)を有するディスクボリュームであると認識する。しかし初期状態では、仮想ボリュームに特定の記憶領域は割り当てられていない。ストレージ260は、仮想ボリュームのアドレス空間を複数の固定サイズ(たとえば10MB)単位で管理しており、この固定サイズの記憶領域のことを本明細書では「ページ」と呼ぶ。言い換えれば、各仮想ボリュームは複数のページから構成されているものである。ストレージ260は、このページ毎に記憶領域を割り当てる。具体的には、サーバ200から仮想ボリュームに対する書き込み要求を受け付けると、ストレージ260は、書き込み要求で指定された書き込み位置(LBA: Logical Block Address)に対応するページに記憶領域が割り当てられているか否か確認し、ページに記憶領域が割り当てられていない場合、そのページに論理ボリューム中の未使用領域を割り当て、この割り当てられた記憶領域にデータ(ライトデータ)を書き込む。シン・プロビジョニング技術の詳細な実現態様は、たとえば米国特許出願公開第2011/0208940号明細書、米国特許出願公開第2010/0205390号明細書に開示されており、参考として本明細書に組み込まれる。
管理サーバ280は、CPU 281、メモリ282、HDD 283、LAN I/F 284とから構成される。CPU 281は、管理サーバ280上で稼働する各種プログラム(後述)を実行するためのものであり、HDD 283に格納された各種プログラムおよびデータをメモリ282にロードし、プログラムを実行する。LAN I/F 284は、管理サーバ280を管理LAN240に接続するためのインタフェースで、サーバ200およびストレージ260と通信するために用いられる。
続いて図3を用いて、サーバ200上のメモリ202に格納されたデータの内容について説明する。OSプログラム301は、データベースプログラム302を実行するプログラムである。データベースプログラム302は、ストレージシステム260からデータを読み込み、計算等の処理を行い、ストレージシステム260に処理結果を書き込む等の処理を行う、業務プログラムの一例である。キャッシュ制御プログラム303は、サーバ200がストレージシステム260から読み込んだデータおよび書き込んだデータをフラッシュメモリドライブ204にキャッシュし、サーバ200が再度同じデータを読み込む場合にストレージシステム260から読み込まずにフラッシュメモリドライブ204から当該データを読み出すためのプログラムである。キャッシュ制御情報304は、フラッシュメモリドライブ204上のキャッシュデータが格納されている領域を管理するための情報である。また、オブジェクト位置情報305については、後述する[変形例1]で用いられる情報であるため、[変形例1]を説明する際に、内容を説明する。
図4は、ストレージシステム260上のメモリ262に格納されたデータの内容を示している。デバイス制御プログラム401は、サーバ200からの仮想ボリュームに対するリード命令またはライト要求(コマンド)を受け付け、RAIDグループ情報402、論理ボリューム情報403、仮想ボリューム情報405、階層定義情報406を用いて、SSD 267またはHDD 268に対するデータの読み書きを実行するためのプログラムである。ページ移動プログラム410は、ページに割り当てられている記憶領域を変更(たとえばSSD267の記憶領域が割り当てられていたページについて、HDD268の記憶領域が割り当てられるように変更)し、それとともに変更前にページに割り当てられていた記憶領域に格納されていたデータを変更後の記憶領域へと移動する処理を行うプログラムである。RAIDグループ情報402は、SSD 267またはHDD 268から構成されるRAIDグループの構成を管理するための情報である。論理ボリューム情報403は、論理ボリュームとRAIDグループの領域とを対応付ける情報である。仮想ボリューム情報405は、仮想ボリュームのページと論理ボリュームの領域との対応関係を管理するための情報である。階層定義情報406は、階層とドライブ種別を対応付ける情報である。また、ストレージキャッシュ制御プログラム407、ストレージキャッシュ制御情報408については、後述する[変形例3]で用いられる情報であるため、[変形例3]を説明する際に、内容を説明する。
図5は、管理サーバ280上のメモリ282に格納されたデータの内容を示している。サーバキャッシュ状態取得プログラム501は、サーバ200からキャッシュ制御情報304を取得するためのプログラムである。ストレージ階層情報取得プログラム502は、ストレージ260から仮想ボリューム情報405を取得するためのプログラムである。ページ階層決定プログラム503は、仮想ボリュームの各ページについて、ページに割り当てられるべき記憶領域の記憶階層を決定する処理を行うためのプログラムである。ページ状態情報504は、各ページの状態を示す情報である。ページ階層ポリシー505は、ページを配置する階層を決定するために用いられる情報である。ページ階層ポリシー入力プログラム506は、ユーザ・管理者がページ階層ポリシー505を設定するためのGUI (Graphical User Interface)を提供するプログラムである。
また、オブジェクト位置情報取得プログラム507、オブジェクト状態情報508、階層・キャッシュ状態情報510、階層・キャッシュ状態スナップショット取得プログラム511、階層・キャッシュ状態復元プログラム512については、後述する[変形例1]、 [変形例4]で用いられる情報であるため、[変形例1]以降の説明の際に、内容を説明する。
続いて図6を用いて、サーバ200が管理するキャッシュ制御情報304の内容を説明する。本実施例において、サーバ200のフラッシュメモリドライブ204は、OSプログラム301の働きにより、1つまたは複数のボリューム(ディスクデバイス)として、キャッシュ制御プログラム303から認識され、フラッシュメモリドライブ204へのデータの読み書きは、HDD203等へのディスクデバイスへのデータ読み書きと同様の処理を行うことで実現される。以下では、このフラッシュメモリドライブ204からなるボリュームのことを「キャッシュ先ボリューム」と呼ぶ。サーバ200がストレージ260のボリューム(仮想ボリューム)に対してデータアクセス(読み出し)を行う際、キャッシュ制御情報304を参照し、フラッシュメモリドライブ204つまりキャッシュ先ボリュームにアクセス対象のデータが格納されているかを確認する。キャッシュ先ボリュームにアクセス対象データが格納されていない場合には、サーバ200はストレージ260にアクセスし、仮想ボリュームからデータを読み出す。その後読み出したデータをキャッシュ先ボリュームに格納(キャッシュ)するとともに、キャッシュ制御情報304に、データの読み出されたボリューム(仮想ボリューム)のボリューム名(キャッシュ元ボリューム名)、データを読み出した位置(先頭アドレス)とその長さ、読み出したデータの格納先であるキャッシュ先ボリュームのボリューム名とその格納位置(先頭アドレス)とを記録する。また本発明の実施例では、サーバ202はストレージ260に対してデータ書き込みを行う際、いわゆるライトスルー方式で書き込みを行う。つまり、サーバ200はデータがストレージ260に正常に書き込まれた時点で、書き込み要求を行ったプログラム等に対して書き込み終了を報告する。ライトスルー方式が用いられる場合、サーバキャッシュは書き込み処理の高速化には貢献しないが、ライト時にライトデータをキャッシュに格納しておくと、その後サーバ200から当該ライトデータの読み出し要求があった際にアクセスが高速化される利点がある。そのため、サーバ200がストレージ260のボリューム(仮想ボリューム)に対してデータ書き込みを行う際には、まず書き込み対象のデータをメモリ202上に用意し、続いてメモリ202上のデータをストレージ260のボリュームに書き出す。ストレージ260へのデータ書き出しが終了した後、キャッシュ制御プログラム303はストレージ260へ書き込んだデータと同じデータを、メモリ202からフラッシュメモリドライブ204へと格納し、併せてキャッシュ制御情報304に、データの書き込まれたボリューム(仮想ボリューム)のボリューム名(キャッシュ元ボリューム名)、データを書き込んだ仮想ボリューム上の位置(先頭アドレス)とその長さ、キャッシュ先ボリュームのボリューム名とその格納位置(先頭アドレス)とを記録する。
キャッシュ制御情報304の各行は、キャッシュ元ボリューム名601、先頭アドレス602、長さ603により特定されるストレージ260の仮想ボリューム上領域に格納されているデータが、キャッシュ先ボリューム名604、先頭アドレス605により示されるフラッシュメモリドライブ204上の領域にキャッシュされていることを示す。最終アクセス時間606は、キャッシュ元ボリューム名601、先頭アドレス602、長さ603により示されるストレージ260上の領域または、キャッシュ先ボリューム名604、先頭アドレス605により示されるフラッシュメモリドライブ204上の領域の領域に最後にアクセスした時刻を示す。なお、本発明の実施例において、先頭アドレス602、605は、LBA (Logical Block Address)で表されており、長さ603の単位はブロック数(なお、1ブロックとはたとえば512バイトの長さである)であるが、先頭アドレス602、605、長さ603を、その他の単位、たとえばバイト等の単位を用いて表してもよい。
続いて図7ないし10を用いて、ストレージ260で管理する情報について説明する。
図7は、RAIDグループ情報402の内容を示している。RAIDグループ情報402の各行は、ストレージ260内に構成されているRAIDグループの情報を表している。ストレージ260では、構成した各RAIDグループに、ストレージ260内で一意な名称(識別情報)を付与して管理し、またRAIDグループを構成する各ディスク(HDD268やSSD267) にも一意な名称を付与して管理しており、RAIDグループ名801には、RAIDグループの名称が格納される。そしてドライブ名802には、当該RAIDグループを構成するドライブ(HDD268やSSD267)の名称が格納される。RAIDレベル803には、当該RAIDグループの冗長化の方式を表すRAIDレベルが格納される。ドライブ種別804は、当該RAIDグループを構成するドライブ(ドライブ名802に示された各ドライブ)の種類、たとえばSSD、SAS HDD等の種別を示す。容量805は、当該RAIDグループの利用可能な容量を示す。
図8は、論理ボリューム情報403の内容を示す。論理ボリューム情報403の各行は、ストレージ260で定義されている各論理ボリュームのサイズと、各論理ボリュームがRAIDグループ内のどの位置に配置されているかを示している。RAIDグループと同様、ストレージ260では、各論理ボリュームに一意な名称を付与して管理しており、論理ボリューム名901にはその論理ボリュームの名称が格納される。長さ902は当該論理ボリュームの長さ(ブロック数)を表す。RAIDグループ名903は、当該論理ボリュームが配置されるRAIDグループの名称を表し、先頭アドレス904は当該論理ボリュームの先頭アドレスのブロックがRAIDグループ内のどの位置に配置されるかを表しており、論理ボリュームがRAIDグループ名903で特定されるRAIDグループの、先頭アドレス904で特定される位置から、長さ902で示されている範囲にわたって配置されることを示す。
図9は、仮想ボリューム情報405の内容を示す。先に述べたとおり、本発明の実施例におけるストレージ260は、サーバ200から仮想ボリュームの領域に対して最初にアクセスがあった時点で、そのアクセス要求で指定された位置に対応するページに論理ボリューム中の固定サイズの未使用領域を割り当てる。なお、本発明の実施例では、ページのサイズは10MBである。また各ページにはストレージ260内で一意なIDを割り当てて管理しており、そのIDを「ページID」と呼ぶ。
仮想ボリューム情報405の各行には、仮想ボリュームのページID1101、仮想ボリューム名1102、先頭アドレス1103、論理ボリューム名1104、先頭アドレス1105、リード数1106、ライト数1107が含まれている。ページID 1101は、仮想ボリューム名1102、先頭アドレス1103により特定される仮想ボリューム上の領域に対応するページのページIDを示す。そして、論理ボリューム名1104、先頭アドレス1105は、このページに対して割り当てられている論理ボリュームの領域が、どの論理ボリューム内のどの位置の領域であるかを表している。なお、本実施例において、先頭アドレス1103、1105の単位はいずれもメガバイト(MB)であるが、その他の単位(ページ、ブロック等)を用いてもよい。また、本実施例において、各ページのサイズは固定長(10MB)であるため、各ページに割り当てられている論理ボリュームの領域はいずれも10MBである。そしてページサイズが10MBであるため、先頭アドレス1103、1105の欄には10MBの倍数の値が格納される。
また、ストレージ206は、所定期間内にサーバ200からリード・ライトアクセスがあった回数をページごとに計数、記録している。リード数1106は、所定期間内にそのページにリードアクセスがあった回数を示す。ライト数1107は同様に、所定期間内にそのページへのライトがあった回数を示す。リード数1106及びライト数1107の欄には、初期状態ではいずれも0が格納されており、ストレージ206は、ページに対してリードあるいはライト要求を受け付けるたびに、当該ページに対応するリード数1106またはライト数1107の回数をカウントアップしていく。そして所定期間が経過した時点で、リード数1106またはライト数1107の回数をすべて0にリセットする。
なお、本発明の実施例において、仮想ボリューム情報405の各行は、サーバ200から仮想ボリュームの領域に対して最初にアクセスがあった時点で、そのアクセス要求で指定された位置に対応するページIDの行が定義され、仮想ボリューム情報405に追加される。そしてその時点で、論理ボリュームの未使用領域が選択されて、論理ボリューム名1104、先頭アドレス1105の欄に、選択された論理ボリュームの領域の情報が格納される。サーバ200から仮想ボリュームの領域に対して最初にアクセスがあった時に割り当てられる論理ボリューム領域の選択方法は、さまざまな方法があり得る。たとえば最も性能の高いSSD267で構成される論理ボリュームから優先的に未使用領域を選択する、最も性能の低い記憶媒体で構成される論理ボリュームから優先的に未使用領域を選択する等の方法がある。
また、その他の実施形態として、仮想ボリュームが定義された時点で、仮想ボリュームの全ページに論理ボリュームの未使用領域を割り当て、仮想ボリューム情報405に仮想ボリュームの全ページの情報を格納する形態もあり得る。
図10は、階層定義情報406の内容を示す。本発明の実施例におけるストレージ206は先に述べたとおり、HDD268と、HDD268よりもアクセス性能が高いSSD267という、2種類のドライブを備える。さらにHDD268として、SAS (Serial Attached SCSI) HDDと、SAS HDDよりアクセス性能の低いSATA (Serial ATA) HDDの2種類のドライブが搭載され、都合3種類のドライブを備えることができる。そしてストレージ206は、SSD267で構成されたRAIDグループまたは論理ボリュームの記憶領域、SAS HDDで構成されたRAIDグループまたは論理ボリュームの記憶領域、SATA HDDで構成されたRAIDグループまたは論理ボリュームの記憶領域を、それぞれ異なる記憶階層の記憶領域として管理する。図10の階層定義情報406において、階層1201は、ドライブ種別1202の欄に格納されている種類のドライブで構成される記憶領域が、どの階層に属するかを示している。これによりストレージ260は、SSD267で構成されたRAIDグループまたは論理ボリュームの記憶領域は階層1の記憶領域、SAS HDDで構成されたRAIDグループまたは論理ボリュームの記憶領域は階層2の記憶領域、SATA HDDで構成されたRAIDグループまたは論理ボリュームの記憶領域は階層3の記憶領域であると判断することができる。なお本明細書では、図10の階層定義情報406における階層1201により示される階層の番号が小さい階層ほど「上位階層」の記憶領域と呼ばれ、上位階層の記憶領域は下位階層の記憶領域よりもアクセス性能が高い。そして階層の番号が大きい記憶階層は、「下位階層」の記憶領域と呼ばれる。
続いて、図11を用いて、本発明の実施例1におけるストレージ260が、仮想ボリューム上のデータの記憶される記憶階層を変更する処理について説明する。本発明の実施例1では、管理サーバ280が1時間に1度、1日に1度などの周期で、定期的にこの処理を実行する。
図11の処理について説明する前に、本発明の実施例で用いられる「ページ移動」の語について説明する。上で説明したとおり、本発明の実施例におけるページには、論理ボリュームの領域が割り当てられている。また論理ボリュームは階層1〜3のいずれかの記憶領域であるから、各ページには、階層1、階層2または階層3の記憶領域が割り当てられていると言い換えることができる。
本発明における「ページ移動」とは、ページに割り当てられている記憶領域を、現在割り当てられている記憶領域とは異なる記憶領域に変更することをいう。たとえば「ページを階層2に移動する」という場合、現在ページに階層1あるいは階層3の領域が割り当てられている時に、当該ページに階層2の領域が割り当てられるように変更することを意味する。またページに割り当てられる記憶領域を変更する際には、現在割り当てられている記憶領域に格納されているデータを、変更後の記憶領域に移動する処理も行われる。これにより、ページ中のデータが格納される記憶階層、つまり記憶位置が変更されるが、上位のサーバ200にはデータの記憶位置が変更されたことは認識されず、記憶階層間のデータ移動が透過的に行われることになる。以降、本明細書で「ページ移動」の語が用いられている箇所では、上記の処理が行われていることを意味する。また、ページ移動処理が行われることで、データも移動されるため、ページを異なる記憶階層に移動する、と表現する代わりに、ページのデータを異なる記憶階層に移動する、と表現することもある。なお、ページ移動の詳細は、例えば米国特許出願公開第2013/0036250号明細書に開示されており、参考として本明細書に組み込まれる。
以下、図11の処理について説明していく。処理2301において、サーバキャッシュ状態取得プログラム501は、キャッシュ制御情報304をサーバ200から取得し、ストレージ階層情報取得プログラム502は、仮想ボリューム情報405をストレージ260から取得する。処理2302において、ページ階層決定プログラム503は、ページ状態情報504(図12)を作成する。
図12を用いて、ページ状態情報504の内容について説明する。ページ状態情報504の各行には、仮想ボリューム情報405のページID 1101に格納されている各ページについて、ページID 1501とリード率1502とサーバキャッシュ率1503とが格納される。
リード率1502は、そのページへの総I/O数に対するリード数の割合を示す情報で、本実施例では、仮想ボリューム情報405に格納されているリード数1106、ライト数1107を用いて計算する。具体的には、リード数1106を、リード数1106とライト数1107の和で割った値をリード率1502としている。例えば図9を参照すると、仮想ボリューム情報405の行1108に格納されているページ0について、リード数1106が95、ライト数1107が5であるから、図15のページ状態情報504においてページ0の情報が格納されている行(行1504)では、リード率1502は95÷(95+5)=0.95 (95%)である。
サーバキャッシュ率1503もリード率1502と同様に、仮想ボリュームの各ページについて計算される値である。具体的には、ページサイズに対して、サーバキャッシュ(フラッシュメモリドライブ204)にキャッシュされているデータ量の割合を表す値で、仮想ボリューム情報405とキャッシュ制御情報304とを用いて算出する。キャッシュ制御情報304には、サーバキャッシュにキャッシュされているデータのオリジナルデータが格納されている領域についての情報(キャッシュ元ボリューム名601、先頭アドレス602、長さ603)が含まれているので、この情報と仮想ボリューム情報405の仮想ボリュームページID1101、仮想ボリューム名1102、先頭アドレス1103とを用いると、各ページについて、サーバキャッシュにキャッシュされているデータ量を算出することができる。そしてその値をページサイズで割ることでサーバキャッシュ率1503が算出できる。例えば、サーバキャッシュにキャッシュされているデータ量が9MBであるページがあった場合、本発明の実施例ではページサイズが10MBであるから、キャッシュ率1503は9÷10=0.9 (90%)になる。ページ階層決定プログラム503は、各ページについて上記のリード率1502、サーバキャッシュ率1503の計算を行い、ページ状態情報504に格納していく。
処理2303において、ページ階層決定プログラム503は、ページ階層ポリシー505と、処理2302において算出したページ状態情報504とに基づき、各ページが配置(移動)されるべき記憶階層を決定する。
ページ階層ポリシー505について、図13を用いて説明する。本発明の実施例における計算機システムは、各ページについて、リード率1502とサーバキャッシュ率1503が所与の条件を満たすか判定し、所与の条件を満たすと判定されたページのデータを所定の階層に配置(移動)すると決定する。ページ階層ポリシー505はその条件を格納するためのもので、リード率条件1601、サーバキャッシュ率条件1602、階層1603の欄が設けられている。各行がそれぞれページ配置の条件(ポリシー)を表している。たとえば図13の行1604は、リード率条件1601が90%超でかつサーバキャッシュ率条件1602が70%超という条件を満たすページを、階層1603で指定されている階層(階層2。たとえば図10の階層定義情報406に基づけば、SAS HDDで構成された記憶階層)に移動する、というポリシーを表している。
なお、図13において、行1604、1605のポリシーが定義されている理由は以下のとおりである。ページ中のデータの多くがサーバキャッシュにキャッシュされており、かつそのデータのアクセス傾向がリード中心である場合、サーバ200はサーバキャッシュ上のデータにアクセスし、ストレージ260にアクセスすることは少ないため、当該ページのデータを上位階層の記憶領域に配置する必要性は少ない。そのため、リード率の高いページのデータを下位階層に移動するポリシーを採用すると、他のデータを上位階層に配置することができ、サーバキャッシュ、SSD267を有効活用することができる。また当該ページがライトされる頻度が高い場合、ライト時にはサーバキャッシュにデータが格納されていてもアクセス性能は向上しないため、ストレージ260の上位記憶階層にデータを配置することが望ましい。そのため、行1605のポリシーが定められている。
またページ階層ポリシー505の各条件は、計算機システムの管理者が、管理サーバ280のページ階層ポリシー入力プログラム506によって提供されるGUIを用いて管理サーバ200に条件を入力することで、設定される(つまりページ階層ポリシー505に格納される)。図14は、ページ階層ポリシー入力画面の一例5060を示している。計算機システムの管理者が、リード率1701、サーバキャッシュ率1702、階層1703の項目を入力し、全項目の入力後にボタン1707を押すことによって、ページ階層ポリシー入力プログラム506がページ階層ポリシー505にその内容を反映する。
処理2304において、ページ階層決定プログラム503は、各ページについて、処理2303において決定した階層にページを配置(移動)する旨の指示を、ストレージ260上のページ移動プログラム410に対して送信する。ページ移動プログラム410は、仮想ボリューム情報405、論理ボリューム情報403、階層定義情報406に基づいて、各ページに割り当てられている記憶領域の記憶階層と、ページ階層決定プログラム503から指示された記憶階層の情報とが一致しているかを判定する。一致している場合には、そのページは移動の必要がないため何も行わないが、一致していない場合には、そのページをページ階層決定プログラム503から指示された階層に移動する。またページ移動と同時に仮想ボリューム情報405を更新する。全ページについてページ移動処理が完了すると、この処理は終了する。
なお、ページ階層ポリシー505に存在するいずれの条件にも該当しないページについては、ページ移動を行わない。あるいは、I/O頻度が高いページを高速な上位階層に移動し、I/O頻度が少ないページを低速な下位階層に移動する等の、周知の階層記憶管理機能で実施されるようなページ移動を行うようにしてもよい。
実施例1によれば、サーバにキャッシュされているデータのうち、リードが多いデータについては低速な下位階層のストレージ領域が割り当てられ、サーバのキャッシュとストレージの上位階層(SSD)の両方に重複してデータが格納されることが抑制されるため、より多くのデータを高速な記録媒体に配置することができ、I/O性能を向上できる。また、ライト処理については、サーバではライトスルーでライト処理が行われるため、サーバでのキャッシュは有効に働かないが、ページ階層ポリシー505の設定により、キャッシュされているデータのうち、リードとライトが混在するデータについては、ストレージ260の高速な記憶階層に配置することができるので、ライト処理の性能低下を防止できる。
[変形例1]
これまで説明してきた実施例1では、ストレージ260の管理するページ単位で記憶階層を制御(変更)する実現形態であったが、例えばデータベーステーブル、インデックスなど、データベースプログラム302等のアプリケーションが管理するオブジェクト又はオブジェクトの一部を単位として、記憶階層を制御することとしてもよい。この場合に計算機システムが管理する情報について説明する。図15は、データベースプログラム302が生成するオブジェクト位置情報305を示す。各行の、オブジェクト名701、先頭アドレス703、長さ704で特定される領域は、データベースプログラム302において使用されるオブジェクトの領域を表す。なお、オブジェクト名701で特定されるオブジェクトはいずれも、データベースプログラム302がストレージ260のボリュームに格納して管理しているオブジェクトである。またオブジェクト種別702は、オブジェクトの種別を示す。そして当該オブジェクトの領域は、同じ行のボリューム名(仮想ボリューム名)705、先頭アドレス706により示されるストレージ260上の領域に配置されていることを示す。また、図15では、テーブルAというオブジェクトの情報は、複数の行(行709、710)に記載されているが、これはテーブルAというオブジェクトが、行709、710で定義されている2つの領域から構成されていることを示している。リード率707は、オブジェクト名701、先頭アドレス703、長さ704で特定される領域への総I/O数(リード数+ライト数)に対するリード数の割合を示す情報で、キャッシュ率708はオブジェクト名701、先頭アドレス703、長さ704で特定される領域の中の何%の領域がサーバキャッシュにキャッシュされているかを表す情報であり、キャッシュ制御情報304を参照して作成する。これら情報は、データベースプログラム302が常時維持管理している。
これまで説明してきた実施例1では、ストレージ260の管理するページ単位で記憶階層を制御(変更)する実現形態であったが、例えばデータベーステーブル、インデックスなど、データベースプログラム302等のアプリケーションが管理するオブジェクト又はオブジェクトの一部を単位として、記憶階層を制御することとしてもよい。この場合に計算機システムが管理する情報について説明する。図15は、データベースプログラム302が生成するオブジェクト位置情報305を示す。各行の、オブジェクト名701、先頭アドレス703、長さ704で特定される領域は、データベースプログラム302において使用されるオブジェクトの領域を表す。なお、オブジェクト名701で特定されるオブジェクトはいずれも、データベースプログラム302がストレージ260のボリュームに格納して管理しているオブジェクトである。またオブジェクト種別702は、オブジェクトの種別を示す。そして当該オブジェクトの領域は、同じ行のボリューム名(仮想ボリューム名)705、先頭アドレス706により示されるストレージ260上の領域に配置されていることを示す。また、図15では、テーブルAというオブジェクトの情報は、複数の行(行709、710)に記載されているが、これはテーブルAというオブジェクトが、行709、710で定義されている2つの領域から構成されていることを示している。リード率707は、オブジェクト名701、先頭アドレス703、長さ704で特定される領域への総I/O数(リード数+ライト数)に対するリード数の割合を示す情報で、キャッシュ率708はオブジェクト名701、先頭アドレス703、長さ704で特定される領域の中の何%の領域がサーバキャッシュにキャッシュされているかを表す情報であり、キャッシュ制御情報304を参照して作成する。これら情報は、データベースプログラム302が常時維持管理している。
続いて、オブジェクトを単位としたストレージ階層の変更方法について説明する。管理サーバ280のオブジェクト位置情報取得プログラム507が、オブジェクト位置情報305と仮想ボリューム情報405を取得し、オブジェクト位置情報305と仮想ボリューム情報405に基づき、オブジェクト毎のリード率とキャッシュ率を算出して、オブジェクト状態情報508を作成する。オブジェクト状態情報508の内容は、図16に示されている。オブジェクト名1801は、オブジェクト名を示す。リード率1802は、そのオブジェクトへの総I/O数に対するリード数の割合を示す。サーバキャッシュ率1803は、そのオブジェクトの領域のうち、サーバにキャッシュされている領域の割合を示す。
なお、リード率1802は以下の方法で計算される。まず、オブジェクト位置情報305を用いて、あるオブジェクトが配置されている領域が、どのボリュームのどの領域(ボリューム名705、先頭アドレス706、長さ704で特定される領域)に配置されているかを特定し、続いて仮想ボリューム情報405から、この特定された領域が仮想ボリュームのどのページ(1または複数)に配置されているかを特定する。次に特定した各ページのリード数1106を合計し、そのオブジェクトに対して発生した総リード数を求める。同様に、特定した各ページのライト数1107を合計し、そのオブジェクトに対して発生した総ライト数を求める。そのオブジェクトの総リード数と総ライト数から、リード率を算出し、リード率1802に記録する。リード率は、「総リード数÷(総リード数+総ライト数)」で算出される。なお、オブジェクトがページの一部分のみに配置されている場合には、あらかじめ設定されたルール、例えば、ページの一部分のみに配置されている場合でもそのページ全てにオブジェクトが配置されているとみなす、というルールに則って上述の処理を行う。また、サーバキャッシュ率1803は以下の方法で計算される。オブジェクト位置情報305の各行で定義されている領域について、長さ704とキャッシュ率708の積を計算することで、この領域についてサーバキャッシュにキャッシュされているデータの量が算出される。そして、オブジェクトの各領域についてのキャッシュされているデータ量を合計することで、オブジェクトのキャッシュされているデータ量を計算する。続いてオブジェクトの各領域についての長さ704の和を算出することで、オブジェクトサイズを算出する。そしてキャッシュされているデータ量をオブジェクトサイズで除算することで、オブジェクトのキャッシュ率が算出される。
そしてオブジェクト階層ポリシーに基づき、各オブジェクトの階層を決定した後、各オブジェクトの移動を行う。なお、本実施例においてのオブジェクト階層ポリシーとはページ階層ポリシー505と同様の条件が定義されたもので、所定のリード率条件とサーバキャッシュ率条件を満たすオブジェクトを、指定された階層にオブジェクト単位で移動するというポリシーが定められている。移動の具体的な方法は、例えば米国特許出願公開第2011/0202705号明細書に記載の方法により、オブジェクト位置情報305に基づいて各オブジェクトが格納されているページを特定し、特定されたページが現在存在する記憶階層が、決定されたオブジェクトの階層と等しいか否か判断し、等しくない(決定されたオブジェクトの階層と異なる階層に配置されている)と判断されたページを、決定されたオブジェクトの階層に移動させる。なお、この時、一つのページに異なるオブジェクトの一部が格納されている状態が発生した場合には、予め設定されたルールにのっとって処理する。予め設定されたルールとはたとえば、決定された2以上の階層のうち上位の階層にあわせてページ移動を行うことにする、というルールである。このルールに従う場合、階層1に配置すべきオブジェクトと、階層2に配置すべきオブジェクトが同一ページに配置されている時には、そのページを階層1に移動すると決定する。
上で説明した例では、オブジェクト位置情報305を集約して、オブジェクト毎にリード率とキャッシュ率を算出して、オブジェクト単位に記憶階層の移動要否を決定しているが、オブジェクト状態情報を作成せず、オブジェクト位置情報305の各行に格納されている情報(オブジェクトの一部)を単位として、記憶階層移動可否の決定と、記憶階層の移動を行うようにしてもよい。
[変形例2]
実施例1における計算機システムでは、サーバキャッシュ状態取得プログラム501、ストレージ階層情報取得プログラム502、ページ階層決定プログラム503は、管理サーバ280上に配置されているが、これらをストレージ260上に設け、ストレージ260がキャッシュ制御情報304をストレージ260がサーバ200から直接取得してページ移動要否の決定を行うようにしてもよい。その場合、図11の処理を、キャッシュ制御情報304更新が発生した時(たとえばサーバ200から仮想ボリュームに対してアクセスを実行し、サーバ側のキャッシュであるフラッシュメモリドライブ204に格納されるデータの状態が変化した時)にその都度、実行するようにしてもよい。
実施例1における計算機システムでは、サーバキャッシュ状態取得プログラム501、ストレージ階層情報取得プログラム502、ページ階層決定プログラム503は、管理サーバ280上に配置されているが、これらをストレージ260上に設け、ストレージ260がキャッシュ制御情報304をストレージ260がサーバ200から直接取得してページ移動要否の決定を行うようにしてもよい。その場合、図11の処理を、キャッシュ制御情報304更新が発生した時(たとえばサーバ200から仮想ボリュームに対してアクセスを実行し、サーバ側のキャッシュであるフラッシュメモリドライブ204に格納されるデータの状態が変化した時)にその都度、実行するようにしてもよい。
また、サーバキャッシュ状態取得プログラム501、ストレージ階層情報取得プログラム502、ページ階層決定プログラム503をサーバ200に設け、サーバ200においてページ移動要否の決定を行う態様もありえる。また実施例1では、リード率1502とサーバキャッシュ率1503に基づき、ストレージのページ階層を決定しているが、ライト数1107だけに基づき、ページ階層を決定してもよい。この場合、ライト数1107が多いページから順に、上位階層の記憶領域に配置していく。
[変形例3]
実施例1における計算機システムにおいて、さらにストレージ260がSSD267の領域の一部をキャッシュとして使用する機能を備える構成もあり得る。この場合、ストレージ260のメモリ262にはストレージキャッシュ制御プログラム407とストレージキャッシュ制御情報408とが設けられる。ストレージキャッシュ制御プログラム407は、サーバ200からのデータ読み出し要求に応じてHDD268から読み出されたデータや、サーバ200からの書き込み要求に応じてHDD268に書き込まれるデータを一時的にSSD267に格納(キャッシュ)する。ストレージキャッシュ制御情報408は、どの領域のデータをどの論理ボリュームにキャッシュしたかを管理するための情報である。
実施例1における計算機システムにおいて、さらにストレージ260がSSD267の領域の一部をキャッシュとして使用する機能を備える構成もあり得る。この場合、ストレージ260のメモリ262にはストレージキャッシュ制御プログラム407とストレージキャッシュ制御情報408とが設けられる。ストレージキャッシュ制御プログラム407は、サーバ200からのデータ読み出し要求に応じてHDD268から読み出されたデータや、サーバ200からの書き込み要求に応じてHDD268に書き込まれるデータを一時的にSSD267に格納(キャッシュ)する。ストレージキャッシュ制御情報408は、どの領域のデータをどの論理ボリュームにキャッシュしたかを管理するための情報である。
図17は、ストレージキャッシュ制御情報408の内容を示している。変形例3におけるストレージ260は、仮想ボリュームの一部の領域を、SSD267で構成されたRAIDグループ上に配置される論理ボリュームにキャッシュする。当然ながらこの場合、キャッシュとして使用される論理ボリューム上の領域は、仮想ボリュームに割り当てられていない領域である。ストレージキャッシュ制御情報408は、キャッシュ元ボリューム名1301、先頭アドレス1302、長さ1303により特定される領域が、キャッシュ先の論理ボリュームであるキャッシュ先ボリューム名1304、先頭アドレス1305により特定される領域にキャッシュされていることを示す。なお、キャッシュ元ボリューム名1301には仮想ボリューム名が格納され、キャッシュ先ボリューム名1304には論理ボリューム名が格納される。
また、変形例3におけるストレージキャッシュ制御プログラム407では、キャッシュするデータの最小管理単位がブロック(512バイト)であり、長さ1303にはブロック数が記録される。ただし、キャッシュするデータの単位が小さければ小さいほど、ストレージキャッシュ制御情報408で管理する情報の量が増加する傾向があるため、キャッシュするデータの単位をブロックよりも大きい単位(たとえば64KB、1MB等)にして、ストレージキャッシュ制御情報408で管理する情報量の増加を抑制するようにしてもよい。
反映1306は、キャッシュ先領域に書き込まれたデータが、キャッシュ元領域に反映されているかを示す。「済」の場合は、反映されていることを示し、「未」の場合は、反映されていないことを示す。最終アクセス時間1307は、この領域に最後にアクセスした時刻を示す。
ストレージキャッシュ制御プログラム407の動作を図18に示す。ストレージキャッシュ制御プログラム407が実行する処理は、周知のキャッシュ技術と類似した処理であるが、仮想ボリュームの記憶領域(ページ)が、下位階層(階層2など)の記憶領域の場合には、当該記憶領域に格納されるデータのキャッシュを行うが、上位階層(階層1)の記憶領域である場合、当該記憶領域に格納されるデータのキャッシュを行わない点が、周知のキャッシュ技術と異なる。なお、実施例1のストレージ260は、SSD267の領域の一部をいわゆるライトバックキャッシュとして用いる。つまりサーバ200からの書き込み要求に伴ってストレージ260に転送されてくるライトデータをキャッシュに格納した時点で、サーバ200に書き込み処理完了の応答を返し、キャッシュからHDD268への書き込みはサーバ200からの書き込み要求とは非同期に実施する。
判断2401において、ストレージキャッシュ制御プログラム407は、サーバ200からのI/O要求がリード要求であるか判断する。リード要求の場合は判断2402に進み、ライト要求の場合は判断2410に進む。判断2402において、ストレージキャッシュ制御プログラム407は、ストレージキャッシュ制御情報408を参照し、リード対象の領域がキャッシュされているか判断する。キャッシュされている場合は処理2403に進み、キャッシュされていない場合は処理2405に進む。処理2403において、ストレージキャッシュ制御プログラム407は、ストレージキャッシュ制御情報408を参照し、キャッシュ先ボリューム1304からデータの読み出しを行う。処理2404において、ストレージキャッシュ制御プログラム407は、処理2403で読み出したデータをサーバ200に返送する。
処理2405において、ドライブ制御プログラム401は、仮想ボリューム情報405、論理ボリューム情報403、RAIDグループ情報402を参照し、SSD 267またはHDD 268からリードする。処理2406において、ストレージキャッシュ制御プログラム407は、処理2405で読み出したデータをサーバ200に返送する。判断2407において、ストレージキャッシュ制御プログラム407は、仮想ボリューム情報405、論理ボリューム情報403、RAIDグループ情報402、階層定義情報406を参照し、処理2405において読み出したデータの格納されていた領域が階層1(SSD267)であるか判断する。階層1である場合は処理を終了し、階層1でない場合は、処理2408に進む。処理2408では、データをSSD267にキャッシュするために必要な領域の確保を行う。この処理は公知の技術であるから、詳細な説明は省略するが、ストレージキャッシュ制御プログラム407は、仮想ボリューム情報405、ストレージキャッシュ制御情報408を参照し、キャッシュするための空き領域(未使用領域)が論理ボリュームに存在するか確認し、空き領域があれば、その領域をキャッシュ先領域として確保するため、ストレージキャッシュ制御情報408に、キャッシュ元ボリューム1301、キャッシュ先ボリューム名1304等の情報を登録する。空き領域がない場合は、ストレージキャッシュ制御プログラム407は、ストレージキャッシュ制御情報408の最終アクセス時刻1307を参照し、最終アクセス時刻1307が最も古い領域を削除して空き領域にし、この領域をキャッシュ先の領域として用いることにする。このときに、反映1306が「未」の場合は、キャッシュ元にデータを反映してから削除する。処理2409において、ストレージキャッシュ制御プログラム407は、処理2405においてリードしたデータを、処理2408で確保した領域に格納する。
判断2410において、ストレージキャッシュ制御プログラム407は、仮想ボリューム情報405、論理ボリューム情報403、RAIDグループ情報402、階層定義情報406を参照し、ライト先領域が階層1であるか判断する。階層1である場合は処理2411に進む。処理2411において、ドライブ制御プログラム401は、仮想ボリューム情報405、論理ボリューム情報403、RAIDグループ情報402を参照し、SSD267にデータ書き込みを行う。処理2414において、ストレージキャッシュ制御プログラム407は、ライトが完了した旨の報告をサーバ200に返し、処理を終了する。判断2410において、ライト先領域が階層1でないと判断された場合は、処理2412に進む。処理2412は処理2408と同様に、データをキャッシュするために必要な領域の確保を行う。処理2413において、ストレージキャッシュ制御プログラム407は、データをキャッシュに格納し、ストレージキャッシュ制御情報408を更新する。その後処理2414において、ストレージキャッシュ制御プログラム407は、ライトが完了した旨の報告をサーバ200に返し、処理を終了する。なお、上では説明を簡単にするため、リード要求で指定された領域のデータがすべてキャッシュされているか、またはすべてキャッシュされていない場合の処理を記載したが、リード要求で指定された領域に、キャッシュされている部分とキャッシュされていない部分とが含まれている場合には、キャッシュされている部分のリード処理については処理2403以降の処理を行い、キャッシュされていない部分のリード処理については処理2405以降の処理を行うようにすることで対応できる。
[変形例4]
本発明の実施例1における計算機システムの変形例4として、特定時点における仮想ボリュームの領域に関する情報として、サーバ200のサーバキャッシュにキャッシュされている領域の情報とストレージ260のキャッシュ(SSD267の領域の一部)にキャッシュされている領域についての情報と、各ページが配置されているストレージ階層についての情報(階層・キャッシュ状態情報と呼ぶ)を記録し、またこの情報に基づいて、仮想ボリュームの各領域の記憶階層やキャッシュ状態を当該特定時点における状態に戻す機能を備える構成があり得る。図19を用いて、階層・キャッシュ状態情報510の内容を説明する。サーバキャッシュ状態2000は、仮想ボリュームの領域のうちサーバ200のサーバキャッシュにキャッシュされている領域の情報を表し、キャッシュ元ボリューム名2001、先頭アドレス2002、長さ2003により特定される仮想ボリュームの領域のデータが、サーバにキャッシュされていることを示す。ストレージキャッシュ状態2020は、仮想ボリュームの領域のうちストレージ260のキャッシュにキャッシュされている領域についての情報を表し、キャッシュ元ボリューム名2021、先頭アドレス2022、長さ2023により特定される仮想ボリュームの領域のデータが、ストレージ260のキャッシュにキャッシュされていることを示す。ストレージ階層状態2040は、各ページが配置されているストレージ階層についての情報を表し、ページID 2041、仮想ボリューム名2042、先頭アドレス2043で特定される領域(ページ)が階層2044で表される記憶階層に格納されていることを示している。日時2080は、サーバキャッシュ状態2000、ストレージキャッシュ状態2020、ストレージ階層状態2040の情報取得日時を表す。また性能2060は、日時2080(情報取得時)におけるストレージ260の性能を表し、IOPS 2061とI/O応答時間2062を記録している。
本発明の実施例1における計算機システムの変形例4として、特定時点における仮想ボリュームの領域に関する情報として、サーバ200のサーバキャッシュにキャッシュされている領域の情報とストレージ260のキャッシュ(SSD267の領域の一部)にキャッシュされている領域についての情報と、各ページが配置されているストレージ階層についての情報(階層・キャッシュ状態情報と呼ぶ)を記録し、またこの情報に基づいて、仮想ボリュームの各領域の記憶階層やキャッシュ状態を当該特定時点における状態に戻す機能を備える構成があり得る。図19を用いて、階層・キャッシュ状態情報510の内容を説明する。サーバキャッシュ状態2000は、仮想ボリュームの領域のうちサーバ200のサーバキャッシュにキャッシュされている領域の情報を表し、キャッシュ元ボリューム名2001、先頭アドレス2002、長さ2003により特定される仮想ボリュームの領域のデータが、サーバにキャッシュされていることを示す。ストレージキャッシュ状態2020は、仮想ボリュームの領域のうちストレージ260のキャッシュにキャッシュされている領域についての情報を表し、キャッシュ元ボリューム名2021、先頭アドレス2022、長さ2023により特定される仮想ボリュームの領域のデータが、ストレージ260のキャッシュにキャッシュされていることを示す。ストレージ階層状態2040は、各ページが配置されているストレージ階層についての情報を表し、ページID 2041、仮想ボリューム名2042、先頭アドレス2043で特定される領域(ページ)が階層2044で表される記憶階層に格納されていることを示している。日時2080は、サーバキャッシュ状態2000、ストレージキャッシュ状態2020、ストレージ階層状態2040の情報取得日時を表す。また性能2060は、日時2080(情報取得時)におけるストレージ260の性能を表し、IOPS 2061とI/O応答時間2062を記録している。
図20は、階層・キャッシュ状態スナップショット取得プログラム511が提供する階層・キャッシュ状態スナップショット取得画面5110を示す。取得画面5110には、現時点(画面表示時点)のストレージ260のIOPS (IOPS2101)と、平均レスポンスタイム(I/O応答時間2102)が表示される。ユーザ・管理者がボタン2103を押すと、管理サーバ280はサーバ200とストレージ260から、その時点のストレージ階層の状態やキャッシュ状態を収集し、階層・キャッシュ状態情報510を作成して記録する。
図21は、階層・キャッシュ状態復元プログラム512が提供する階層・キャッシュ状態復元画面5120を示す。日時2202は、階層・キャッシュ状態を取得した日時を表し、IOPS2203、I/O応答時間2204は、階層・キャッシュ状態を取得した時のストレージ性能を示す。なおIOPS2203、I/O応答時間2204は一種の参考情報として表示しているものであって、IOPS2203、I/O応答時間2204以外の情報を参考情報として表示する態様もあり得る。ユーザ・管理者が、選択2201列のいずれかのラジオボタンを選択状態にし、ボタン2207を押すことにより、階層・キャッシュ状態復元プログラム512は、当該ラジオボタンが選択状態にされた行の日時2202における階層・キャッシュ状態の復元を実行する。具体的には、階層・キャッシュ状態復元プログラム512は、ストレージ260、サーバ200に指示を出し、サーバキャッシュにはサーバキャッシュ状態2000に記録されているボリュームのデータがキャッシュされるようにし、ストレージ260のキャッシュにはストレージキャッシュ状態2020に記録されているデータがキャッシュされるようにし、ストレージ260の各ページには、ストレージ階層状態2040に記録されている階層の記憶領域が割り当てられている状態にする。なお、復元処理の実行を行う際、本発明の実施例1における図11の処理、つまり仮想ボリューム上のデータの記憶される記憶階層を変更する処理が行われていたら、いったん処理を中断する。
上の例では、階層・キャッシュ状態情報510として、サーバキャッシュ状態2000、ストレージキャッシュ状態2020、ストレージ階層状態2040の、3種類の情報を取得しているが、上記3種類の情報のうちいずれか1つの情報のみを取得する形態、または上記3種類の情報のうち2つの情報のみを取得する形態もありえる。
また、図20、図21の例では、サーバキャッシュにキャッシュされているすべてのデータ、ストレージ260内全仮想ボリュームについて、階層・キャッシュ状態のスナップショット取得、復元を行うものだが、ボリューム単位で階層・キャッシュ状態のスナップショット取得、復元を行うようにしてもよい。その場合、階層・キャッシュ状態スナップショット取得画面5110は、IOPSと平均レスポンスタイムが仮想ボリューム単位に表示されるとともに、計算機システムの管理者が階層・キャッシュ状態スナップショットを取得したい仮想ボリューム(1または複数個)を指定することができるような画面を提供するよう構成される。また、階層・キャッシュ状態復元画面5120も、仮想ボリューム単位で復元の指定が可能な画面を提供するよう構成されることになる。
[変形例5]
上で説明した変形例3において、階層1として活用するSSD 267の容量と、キャッシュとして活用するSSD 267の容量をシステム運用中に変更してもよい。キャッシュが利用されていない場合は、キャッシュとして活用するSSDの容量を減らし、階層1として活用するSSDの容量を増やす。キャッシュが利用されていない場合とは、たとえば最終アクセス時刻1307が1時間前など、所定時間以上アクセスされていない場合である。またI/Oの局所性が低く、図18の処理2408(キャッシュ領域の確保処理)の実行時にキャッシュが削除される回数が多い場合は、キャッシュ容量が不足しているため、キャッシュとして活用するSSDの容量を増やし、階層1として活用するSSDの容量を減らす。容量を変化させ、SSDへのアクセス率が上昇した場合は、その操作を繰り返し、SSDへのアクセス率が減少した場合は、その操作と逆の操作を行う。または、仮想ボリューム情報405とストレージキャッシュ制御情報408を複数持ち、キャッシュとして活用するSSDの容量と、階層1として活用するSSDの容量のパターンを複数想定し、疑似的にSSDへのアクセス率を算出し、最もアクセス率が向上した場合の構成となるように変更してもよい。
上で説明した変形例3において、階層1として活用するSSD 267の容量と、キャッシュとして活用するSSD 267の容量をシステム運用中に変更してもよい。キャッシュが利用されていない場合は、キャッシュとして活用するSSDの容量を減らし、階層1として活用するSSDの容量を増やす。キャッシュが利用されていない場合とは、たとえば最終アクセス時刻1307が1時間前など、所定時間以上アクセスされていない場合である。またI/Oの局所性が低く、図18の処理2408(キャッシュ領域の確保処理)の実行時にキャッシュが削除される回数が多い場合は、キャッシュ容量が不足しているため、キャッシュとして活用するSSDの容量を増やし、階層1として活用するSSDの容量を減らす。容量を変化させ、SSDへのアクセス率が上昇した場合は、その操作を繰り返し、SSDへのアクセス率が減少した場合は、その操作と逆の操作を行う。または、仮想ボリューム情報405とストレージキャッシュ制御情報408を複数持ち、キャッシュとして活用するSSDの容量と、階層1として活用するSSDの容量のパターンを複数想定し、疑似的にSSDへのアクセス率を算出し、最もアクセス率が向上した場合の構成となるように変更してもよい。
続いて、本発明の実施例2について説明する。本発明の実施例2における計算機システムは、実施例1における計算機システムとほぼ同様の構成であるので、以下では実施例1と相違する点を中心に説明する。実施例1で説明したシステムは、ストレージ260内のページ配置(記憶階層)を制御することによって、サーバキャッシュとストレージの上位記憶階層とでデータが重複して格納されないようにするものであったが、実施例2におけるシステムは、サーバ200がサーバキャッシュを制御することで、サーバキャッシュとストレージの上位記憶階層とでデータが重複して格納されないようにするものである。
図22は、実施例2の概要を示す。データA 2502は階層1に配置され、データD2505は階層2に配置されていることなど、各データが配置されている階層についての情報(ページ階層情報と呼ぶ)を、管理サーバ280からサーバ200のキャッシュ制御プログラム2501へと通知する。キャッシュ制御プログラム2501は、階層1に配置されているデータをキャッシュせず、階層2に配置されているデータをフラッシュメモリドライブ204にキャッシュする。各データが配置されている階層についての情報を取得する契機は、例えば米国特許出願公開第2013/0036250号明細書に記載の方法により、ストレージ260が、I/O数が多いページのデータを高速な階層に移動し、I/O数が少ないページのデータを低速な階層に移動する処理を行った後である。または、1時間に1回など、定期的に各データが配置されている階層についての情報を取得する態様もあり得る。
図23はページ階層情報520の内容を示している。ページ階層情報520は、ボリューム名5021、先頭アドレス5022、終端アドレス5023、階層5024の項目を有し、ボリューム名5021、先頭アドレス5022、終端アドレス5023で特定される領域が、階層5024で特定される階層の記憶領域に存在することを表す情報である。なお、ボリューム名5021は、ストレージ260がサーバ200に提供しているボリューム(仮想ボリューム)の名称で、また先頭アドレス5022、終端アドレス5023の単位はLBAである。管理サーバ280は、ストレージ260から仮想ボリューム情報405、階層定義情報406、RAIDグループ情報402、論理ボリューム情報403を取得し、各ページにどの階層の記憶領域が割り当てられているかを割り出し、サーバ200で各領域の位置を認識できるように、ページIDをLBAなどのアドレスに変換してページ階層情報520を作成し、サーバ200へ渡す。
図24は、実施例2におけるキャッシュ制御プログラム2501の動作の流れを示す図である。判断2601において、キャッシュ制御プログラム2501は、データベースプログラム302からのI/O要求がリード要求であるか判断する。リードの場合は判断2602に進み、ライトの場合は処理2607に進む。判断2602において、キャッシュ制御プログラム2501は、キャッシュ制御情報304を参照し、リードする領域がキャッシュされているか判断する。具体的には、キャッシュ制御情報304の、キャッシュ元ボリューム名601、先頭アドレス602、長さ603により特定される領域の中に、リード要求で指定された領域が含まれていれば、キャッシュされていると判断できる。キャッシュされている場合は処理2603に進み、キャッシュされていない場合は処理2607に進む。処理2603において、キャッシュ制御プログラム2501は、キャッシュ制御情報304を参照し、リード要求で指定された領域のデータがキャッシュされている領域を特定し、特定した領域からデータをリードする。たとえばサーバキャッシュの状態が、図6のキャッシュ制御情報304に記載されている状態である場合を例にとると、ボリューム名Vol A、アドレス20、長さ10の領域をリードする要求を受け付けた場合、この領域は行608に記載の領域に含まれるのでキャッシュされていることが判断でき、キャッシュされたデータはサーバフラッシュAのアドレス10から読み出せばよいことも判断できる。処理2604において、キャッシュ制御プログラム2501は、処理2603においてリードされたデータをデータベースプログラム302に返送する。
判断2605では、キャッシュ制御プログラム2501はページ階層情報520を参照し、データベースプログラム302から受け付けたリード要求で指定されているリード先領域が階層1であるか判断し、階層1でない場合には、処理を終了する。リード先領域が階層1であった場合には、キャッシュからその領域を削除する処理(処理2606)を行った後、キャッシュ制御プログラム2501は処理を終了する。キャッシュから指定された領域を削除する方法は、具体的にはキャッシュ制御情報304の中で、リード要求で受け付けた領域に関する情報を削除する。たとえばキャッシュ状態が図6に記載の内容であり、データベースプログラム302からボリューム名Vol A、先頭アドレス0、長さ10の領域のリード要求を受け付けた時、この領域のデータが階層1に格納されているものであったとすると、行607を削除する。
処理2607において、キャッシュ制御プログラム2501は、データベースプログラム302からのI/O要求(リードまたはライト要求)をストレージ260に転送する。処理2608において、キャッシュ制御プログラム2501は、処理2607の結果(リードデータ、あるいはライト処理が完了した旨)をデータベースプログラム302に返送する。判断2609において、キャッシュ制御プログラム2501は、ページ階層情報520を参照し、処理2607においてリードまたはライトした領域が階層1であるか判断する。階層1である場合、キャッシュ制御プログラム2501は処理を終了し、階層1でない場合は、処理2610に進む。処理2610は実施例1における処理2408と類似の処理、つまりデータをキャッシュするための空き領域を確保する処理を行う。キャッシュ制御プログラム2501はキャッシュ制御情報304を参照して、キャッシュ先ボリュームの中で使用されていない領域(空き領域)を探して、キャッシュ用の領域として確保する。空き領域がない場合は、キャッシュ制御プログラム2501は、キャッシュ制御情報304の最終アクセス時刻606を参照し、最終アクセス時刻606が最も古い領域を削除する。処理2611において、キャッシュ制御プログラム2501は、処理2607においてリードまたはライトしたデータを、処理2610で確保した領域に格納し、キャッシュ制御情報304を更新する。なお、上では説明の簡単にするため、リード要求で指定された領域のデータがすべてキャッシュされている、またはすべてキャッシュされていない、という前提での処理を記載しているが、リード要求で指定された領域にキャッシュされている部分とキャッシュされていない部分が含まれている場合には、キャッシュされている部分のリード処理については処理2603以降の処理を行い、キャッシュされていない部分のリード処理については処理2607以降の処理を行うようにすればよい。
実施例2における計算機システムでは、サーバは、ストレージ装置において上位階層の記憶領域が割り当てられていないデータについてキャッシュし、上位階層の記憶領域が割り当てられているデータについてはキャッシュしないように動作する。結果として、サーバのキャッシュとストレージ装置の上位階層とに、同じデータが重複して配置されることがなくなり、より多くの種類のデータを配置することができるようになる。そのため、計算機システムのI/O性能を全体として向上させることができる。
以上、本発明の実施例を説明してきたが、これは本発明の説明のための例示であって、本発明を上で説明した実施例に限定する趣旨ではない。又上記変形例は実施例2と組み合わせてもよく、変形例同士を組み合わせることも可能である。本発明は、他の種々の形態でも実施可能である。たとえば実施例に記載の計算機システムにおいて、サーバやストレージが複数存在する構成をとってもよく、またサーバ、ストレージ内の構成要素についても、たとえばCPU等が複数存在する形態もあり得る。また実施例においてプログラムとして記載されている構成物は、ハードワイヤードロジックなどを用いたハードウェアによって実現してもよい。また実施例中の各プログラム、制御情報を、DVD等の記憶媒体に格納して提供する形態をとることも可能である。
101: データA
102: データB
103: データC
104: データD
200: サーバ
204: フラッシュメモリドライブ
260: ストレージ
267: SSD
268: HDD
280: 管理サーバ
302: データベースプログラム
303: キャッシュ制御プログラム
304: キャッシュ制御情報
410: ページ移動プログラム
405: 仮想ボリューム情報
501: サーバキャッシュ状態取得プログラム
502: ストレージ階層情報取得プログラム
503: ページ階層決定プログラム
504: ページ状態情報
505: ページ階層ポリシー
506: ページ階層ポリシー入力プログラム
102: データB
103: データC
104: データD
200: サーバ
204: フラッシュメモリドライブ
260: ストレージ
267: SSD
268: HDD
280: 管理サーバ
302: データベースプログラム
303: キャッシュ制御プログラム
304: キャッシュ制御情報
410: ページ移動プログラム
405: 仮想ボリューム情報
501: サーバキャッシュ状態取得プログラム
502: ストレージ階層情報取得プログラム
503: ページ階層決定プログラム
504: ページ状態情報
505: ページ階層ポリシー
506: ページ階層ポリシー入力プログラム
Claims (15)
- 第1の記憶媒体と、前記第1の記憶媒体よりもアクセス性能が高い記憶媒体である第2の記憶媒体とを有するストレージ装置と、
サーバキャッシュを備えるサーバと、
管理サーバ、
とから成る計算機システムにおいて、
前記ストレージ装置は、前記第1または第2の記憶媒体の記憶領域が割り当てられる固定長領域を複数有するボリュームを前記サーバに提供するとともに、前記サーバから前記固定長領域に対して書き込まれるデータを、前記割り当てられた第1または第2の記憶媒体の記憶領域に格納し、
前記ストレージ装置はまた、前記サーバから前記固定長領域に対して所定期間内に発生したリードアクセス数とライトアクセス数とを、前記固定長領域ごとに格納するボリューム管理情報を有し、
前記サーバは、前記ボリュームに格納されたデータの一部を前記サーバキャッシュにキャッシュするとともに、前記サーバキャッシュにキャッシュされたデータに関する情報を格納するキャッシュ制御情報を有しており、
前記管理サーバは、
前記ストレージ装置から前記ボリューム管理情報を取得し、
前記サーバから前記キャッシュ制御情報を取得し、
前記ボリューム管理情報と前記キャッシュ制御情報とに基づいて、前記固定長領域ごとに、前記固定長領域内のデータが前記サーバキャッシュにキャッシュされている割合であるサーバキャッシュ率と、前記サーバから前記固定長領域に対して所定期間内に発生するリードアクセス数とライトアクセス数との和に対する、リードアクセス数の割合であるリード率を算出し、
前記固定長領域の各々について、前記サーバキャッシュ率と前記リード率とに基づいて、前記第1、第2いずれの記憶媒体の記憶領域を割り当てるか決定する、
ことを特徴とする計算機システム。 - 請求項1に記載の計算機システムであって、
前記固定長領域における前記リード率が第1の閾値を超える値の場合、前記固定長領域に前記第1の記憶媒体を割り当てると決定することを特徴とする計算機システム。 - 請求項1に記載の計算機システムであって、
前記固定長領域における前記リード率が第2の閾値を下回る値の場合、前記固定長領域に前記第2の記憶媒体を割り当てると決定することを特徴とする計算機システム。 - 請求項1に記載の計算機システムであって、
前記サーバは、前記ボリュームに1または複数のオブジェクトを格納して管理するためのデータベースプログラムを有し、
前記データベースプログラムは前記サーバに実行されることにより、前記各オブジェクトが格納される前記ボリューム上の位置情報を管理し、
前記管理サーバは、前記ボリューム管理情報と前記キャッシュ制御情報と前記位置情報とに基づいて、前記オブジェクト毎のリード率とサーバキャッシュ率を算出し、前記オブジェクト毎のリード率とサーバキャッシュ率に基づいて、前記オブジェクト毎に、前記オブジェクトを前記第1の記憶媒体、前記第2の記憶媒体のいずれに配置するかを決定する、計算機システム。 - 請求項1に記載の計算機システムであって、
前記ストレージ装置は、前記複数の固定長領域のうち、前記第1の記憶媒体の記憶領域が割り当てられている固定長領域のデータを、前記第2の記憶媒体の記憶領域の一部にキャッシュする、
ことを特徴とする計算機システム。 - 請求項5に記載の計算機システムであって、
前記管理サーバは、指定された時点における、前記複数の固定長領域の状態に関する情報を取得し、前記取得の後、ユーザの指示に基づいて、前記複数の固定長領域の状態を、前記取得した前記複数の固定長領域の状態に関する情報に基づいて、前記指定された時点における状態に戻す機能を有することを特徴とする計算機システム。 - 請求項6に記載の計算機システムであって、
前記複数の固定長領域の状態に関する情報は、
前記複数の固定長領域に割り当てられている記憶領域が第1の記憶媒体のものか第2の記憶媒体のものかを表す情報、前記複数の固定長領域の中でサーバキャッシュにデータがキャッシュされている領域についての情報、前記第1の記憶媒体の記憶領域が割り当てられている固定長領域のうち、前記第2の記憶媒体の記憶領域にデータがキャッシュされている領域についての情報、
のうちの少なくとも1つ以上の情報、
であることを特徴とする計算機システム。 - 第1の記憶媒体と、前記第1の記憶媒体よりもアクセス性能が高い記憶媒体である第2の記憶媒体とを有するストレージ装置と、
サーバキャッシュを備えるサーバと、
管理サーバ、
とから成る計算機システムの制御方法であって、
前記ストレージ装置は、前記第1または第2の記憶媒体の記憶領域が割り当てられる固定長領域を複数有するボリュームを前記サーバに提供するとともに、前記サーバから前記固定長領域に対して書き込まれるデータを、前記割り当てられた第1または第2の記憶媒体の記憶領域に格納し、
前記ストレージ装置はまた、前記サーバから前記固定長領域に対して所定期間内に発生したリードアクセス数とライトアクセス数とを、前記固定長領域ごとに計数してボリューム管理情報に格納し、
前記サーバは、前記ボリュームに格納されたデータの一部を前記サーバキャッシュにキャッシュした時に、前記サーバキャッシュにキャッシュされたデータに関する情報をキャッシュ制御情報に格納し、
前記管理サーバは、
前記ボリューム管理情報と前記キャッシュ制御情報とを取得し、前記取得したボリューム管理情報とキャッシュ制御情報とに基づいて、前記固定長領域ごとに、前記固定長領域内のデータのうち前記サーバキャッシュにキャッシュされているデータの割合であるサーバキャッシュ率と、前記サーバから前記固定長領域に対して所定期間内に発生するリードアクセス数とライトアクセス数との和に対する、リードアクセス数の割合であるリード率を算出し、
前記固定長領域の各々について、前記サーバキャッシュ率と前記リード率とに基づいて、前記第1、第2いずれの記憶媒体の記憶領域を割り当てるか決定する、
ことを特徴とする計算機システムの制御方法。 - 前記固定長領域における前記リード率が第1の閾値を超える値の場合、前記固定長領域に前記第1の記憶媒体を割り当てると決定することを特徴とする、請求項8に記載の計算機システムの制御方法。
- 前記固定長領域における前記リード率が第2の閾値を下回る値の場合、前記固定長領域に前記第2の記憶媒体を割り当てると決定することを特徴とする、請求項8に記載の計算機システムの制御方法。
- 請求項8に記載の計算機システムの制御方法において、
前記サーバは、前記ボリュームに1または複数のオブジェクトを格納して管理するためのデータベースプログラムを有し、
前記データベースプログラムは前記サーバに実行されることにより、前記各オブジェクトが格納される前記ボリューム上の位置情報を管理し、
前記管理サーバは、前記ボリューム管理情報と前記キャッシュ制御情報と前記位置情報とに基づいて、前記オブジェクト毎のリード率とサーバキャッシュ率を算出し、前記オブジェクト毎のリード率とサーバキャッシュ率に基づいて、前記オブジェクト毎に、前記オブジェクトを前記第1の記憶媒体、前記第2の記憶媒体のいずれに配置するかを決定することを特徴とする、計算機システムの制御方法。 - 請求項8に記載の計算機システムの制御方法において、
前記ストレージ装置は、前記複数の固定長領域のうち、前記第1の記憶媒体の記憶領域が割り当てられている固定長領域のデータを、前記第2の記憶媒体の記憶領域の一部にキャッシュする、
ことを特徴とする、計算機システムの制御方法。 - 請求項12に記載の計算機システムの制御方法において、
前記管理サーバは、指定された時点における、前記複数の固定長領域の状態に関する情報を取得し、前記取得の後、ユーザの指示に基づいて、前記複数の固定長領域の状態を、前記取得した前記複数の固定長領域の状態に関する情報に基づいて、前記指定された時点における状態に戻す機能を有することを特徴とする、計算機システムの制御方法。 - 前記複数の固定長領域の状態に関する情報は、
前記複数の固定長領域に割り当てられている記憶領域が第1の記憶媒体のものか第2の記憶媒体のものかを表す情報、前記複数の固定長領域の中でサーバキャッシュにデータがキャッシュされている領域についての情報、前記第1の記憶媒体の記憶領域が割り当てられている固定長領域のうち、前記第2の記憶媒体の記憶領域にデータがキャッシュされている領域についての情報、
のうちの少なくとも1つ以上の情報、
であることを特徴とする、請求項13に記載の計算機システムの制御方法。 - 第1の記憶媒体と、前記第1の記憶媒体よりもアクセス性能が高い記憶媒体である第2の記憶媒体とを有するストレージ装置と、
サーバキャッシュを有するサーバと、
管理サーバ、
とから成る計算機システムにおいて、
前記ストレージ装置は、前記第1または第2の記憶媒体の記憶領域が割り当てられる固定長領域を複数有するボリュームを前記サーバに提供するとともに、前記サーバから前記固定長領域に対して書き込まれるデータを、前記割り当てられた第1または第2の記憶媒体の記憶領域に格納し、
前記サーバは、前記ボリュームに格納されたデータの一部を前記サーバキャッシュにキャッシュするとともに、前記サーバキャッシュにキャッシュされたデータに関する情報を格納したキャッシュ制御情報を有しており、
前記管理サーバは前記ストレージ装置から、前記複数の固定長領域の各々に割り当てられている記憶領域が第1の記憶媒体のものか第2の記憶媒体のものかを表す情報を取得し、前記サーバに前記情報を送信し、
前記サーバは、前記情報に基づき、前記固定長領域に割り当てられている記憶領域が前記第1の記憶媒体のものであると判定された場合、前記固定長領域のデータを前記サーバキャッシュにキャッシュし、前記固定長領域に割り当てられている記憶領域が前記第2の記憶媒体のものであると判定された場合、前記固定長領域のデータを前記サーバキャッシュにキャッシュしない、
ことを特徴とする計算機システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/070453 WO2015015550A1 (ja) | 2013-07-29 | 2013-07-29 | 計算機システム及び制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5944587B2 true JP5944587B2 (ja) | 2016-07-05 |
JPWO2015015550A1 JPWO2015015550A1 (ja) | 2017-03-02 |
Family
ID=52431132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015529238A Expired - Fee Related JP5944587B2 (ja) | 2013-07-29 | 2013-07-29 | 計算機システム及び制御方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9703717B2 (ja) |
JP (1) | JP5944587B2 (ja) |
WO (1) | WO2015015550A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6299169B2 (ja) * | 2013-11-14 | 2018-03-28 | 富士通株式会社 | ストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラム |
CN104679661B (zh) * | 2013-11-27 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 混合存储的控制方法及混合存储系统 |
US11150807B2 (en) * | 2015-02-23 | 2021-10-19 | Avago Technologies International Sales Pte. Limited | Dynamic storage system configuration |
US10133614B2 (en) * | 2015-03-24 | 2018-11-20 | Ca, Inc. | Anomaly classification, analytics and resolution based on annotated event logs |
JP2016184188A (ja) * | 2015-03-25 | 2016-10-20 | 日本電気株式会社 | 管理装置、管理方法とそのプログラム、および、情報処理システム |
JP2016207096A (ja) * | 2015-04-27 | 2016-12-08 | 富士通株式会社 | 階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラム |
JP6212073B2 (ja) | 2015-06-29 | 2017-10-11 | ファナック株式会社 | プログラムの内容に応じて格納先を自動選択する機能を備えた数値制御装置 |
US20170177224A1 (en) * | 2015-12-21 | 2017-06-22 | Oracle International Corporation | Dynamic storage transitions employing tiered range volumes |
US10754573B2 (en) * | 2016-03-11 | 2020-08-25 | EMC IP Holding Company LLC | Optimized auto-tiering, wherein subset of data movements are selected, utilizing workload skew point, from a list that ranks data movements based on criteria other than I/O workload |
US10467195B2 (en) | 2016-09-06 | 2019-11-05 | Samsung Electronics Co., Ltd. | Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system |
US10455045B2 (en) | 2016-09-06 | 2019-10-22 | Samsung Electronics Co., Ltd. | Automatic data replica manager in distributed caching and data processing systems |
CN107870916A (zh) * | 2016-09-23 | 2018-04-03 | 伊姆西Ip控股有限责任公司 | 存储管理方法及设备 |
CN109213695B (zh) * | 2017-06-30 | 2023-07-21 | 伊姆西Ip控股有限责任公司 | 缓存管理方法、存储系统以及计算机程序产品 |
US10474545B1 (en) | 2017-10-31 | 2019-11-12 | EMC IP Holding Company LLC | Storage system with distributed input-output sequencing |
US10365980B1 (en) * | 2017-10-31 | 2019-07-30 | EMC IP Holding Company LLC | Storage system with selectable cached and cacheless modes of operation for distributed storage virtualization |
US11782882B2 (en) * | 2018-01-22 | 2023-10-10 | Jpmorgan Chase Bank, N.A. | Methods for automated artifact storage management and devices thereof |
CN114564152A (zh) * | 2022-02-28 | 2022-05-31 | 联想(北京)有限公司 | 闪存控制方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1063576A (ja) * | 1996-08-27 | 1998-03-06 | Hitachi Ltd | 階層ディスク装置およびその制御方法 |
JP2000353125A (ja) * | 1999-06-09 | 2000-12-19 | Nec Software Shikoku Ltd | ストレージシステム、情報処理装置 |
JP2001265653A (ja) * | 2000-03-17 | 2001-09-28 | Mitsubishi Electric Corp | データ処理装置 |
JP2003216491A (ja) * | 2002-01-23 | 2003-07-31 | Hitachi Ltd | 階層キャッシュ制御方法 |
JP2011170833A (ja) * | 2010-02-17 | 2011-09-01 | Hitachi Ltd | オブジェクト単位階層の管理方法及び装置 |
US20130036250A1 (en) * | 2011-08-01 | 2013-02-07 | Hitachi, Ltd. | Method and apparatus to move page between tiers |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454446B2 (en) * | 2001-08-31 | 2008-11-18 | Rocket Software, Inc. | Techniques for storing data based upon storage policies |
US8321645B2 (en) * | 2009-04-29 | 2012-11-27 | Netapp, Inc. | Mechanisms for moving data in a hybrid aggregate |
CN102792289B (zh) * | 2010-03-08 | 2015-11-25 | 惠普发展公司,有限责任合伙企业 | 数据存储装置 |
US20130238832A1 (en) * | 2012-03-07 | 2013-09-12 | Netapp, Inc. | Deduplicating hybrid storage aggregate |
US9092141B2 (en) * | 2012-04-18 | 2015-07-28 | Hitachi, Ltd. | Method and apparatus to manage data location |
US9703500B2 (en) * | 2012-04-25 | 2017-07-11 | International Business Machines Corporation | Reducing power consumption by migration of data within a tiered storage system |
US20130346672A1 (en) * | 2012-06-22 | 2013-12-26 | Microsoft Corporation | Multi-Tiered Cache with Storage Medium Awareness |
-
2013
- 2013-07-29 WO PCT/JP2013/070453 patent/WO2015015550A1/ja active Application Filing
- 2013-07-29 JP JP2015529238A patent/JP5944587B2/ja not_active Expired - Fee Related
- 2013-07-29 US US14/767,056 patent/US9703717B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1063576A (ja) * | 1996-08-27 | 1998-03-06 | Hitachi Ltd | 階層ディスク装置およびその制御方法 |
JP2000353125A (ja) * | 1999-06-09 | 2000-12-19 | Nec Software Shikoku Ltd | ストレージシステム、情報処理装置 |
JP2001265653A (ja) * | 2000-03-17 | 2001-09-28 | Mitsubishi Electric Corp | データ処理装置 |
JP2003216491A (ja) * | 2002-01-23 | 2003-07-31 | Hitachi Ltd | 階層キャッシュ制御方法 |
JP2011170833A (ja) * | 2010-02-17 | 2011-09-01 | Hitachi Ltd | オブジェクト単位階層の管理方法及び装置 |
US20130036250A1 (en) * | 2011-08-01 | 2013-02-07 | Hitachi, Ltd. | Method and apparatus to move page between tiers |
Also Published As
Publication number | Publication date |
---|---|
JPWO2015015550A1 (ja) | 2017-03-02 |
US9703717B2 (en) | 2017-07-11 |
US20160132433A1 (en) | 2016-05-12 |
WO2015015550A1 (ja) | 2015-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5944587B2 (ja) | 計算機システム及び制御方法 | |
JP4813843B2 (ja) | ストレージ装置、ディスクキャッシュ制御方法及びディスクキャッシュの容量割当方法 | |
US10031703B1 (en) | Extent-based tiering for virtual storage using full LUNs | |
US9229653B2 (en) | Write spike performance enhancement in hybrid storage systems | |
JP5707540B1 (ja) | 階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法 | |
US11347428B2 (en) | Solid state tier optimization using a content addressable caching layer | |
US8438334B2 (en) | Hybrid storage subsystem with mixed placement of file contents | |
JP5685676B2 (ja) | 計算機システム及びデータ管理方法 | |
EP3832451B1 (en) | Data migration method and apparatus | |
US10521345B2 (en) | Managing input/output operations for shingled magnetic recording in a storage system | |
JP5816303B2 (ja) | フラッシュメモリを含むストレージシステム、及び記憶制御方法 | |
US9330009B1 (en) | Managing data storage | |
US11093134B2 (en) | Storage device, management method, and program in tiered storage system | |
JP6867578B2 (ja) | ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム | |
US20170220476A1 (en) | Systems and Methods for Data Caching in Storage Array Systems | |
US11740823B2 (en) | Storage system and storage control method | |
JP6171084B2 (ja) | ストレージシステム | |
US10089125B2 (en) | Virtual machines accessing file data, object data, and block data | |
JP2008299559A (ja) | ストレージシステム及びストレージシステムにおけるデータ移行方法 | |
US9864688B1 (en) | Discarding cached data before cache flush | |
US20240111429A1 (en) | Techniques for collecting and utilizing activity metrics | |
US11947799B1 (en) | Systems and methods for using the TRIM command with solid state devices | |
US11740792B2 (en) | Techniques for data storage management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20160510 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160525 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5944587 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |