JP5965486B2 - ストレージシステム - Google Patents
ストレージシステム Download PDFInfo
- Publication number
- JP5965486B2 JP5965486B2 JP2014527931A JP2014527931A JP5965486B2 JP 5965486 B2 JP5965486 B2 JP 5965486B2 JP 2014527931 A JP2014527931 A JP 2014527931A JP 2014527931 A JP2014527931 A JP 2014527931A JP 5965486 B2 JP5965486 B2 JP 5965486B2
- Authority
- JP
- Japan
- Prior art keywords
- microprocessor
- data
- cache
- job
- volume
- 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/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
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2071—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
- G06F11/2074—Asynchronous techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2089—Redundant storage control functionality
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明はストレージシステムに関し、特に、ストレージシステムの制御に関する。
国際公開第2010/131373号パンフレット(特許文献1)は、各ボリュームのI/O担当プロセッサが、共有メモリ上のデータキャッシング制御情報をローカルメモリへキャッシング(制御キャッシング)することで、ストレージシステムを高性能化する技術を開示している。
プロセッサは、ローカルメモリの制御情報を更新する時、共有メモリの制御情報も同期して更新する。これにより、障害が起きたプロセッサから担当を引き継いだ他のプロセッサは、共有メモリから最新のデータキャッシング制御情報を取得することができ、キャッシュヒット率低下によるストレージシステムの性能低下、を抑止することができる。
この他、ストレージシステムでは、不揮発性メディアからユーザデータをキャッシュメモリにキャッシングすることでストレージシステムを高性能化する、データキャッシングが広く利用されている。
しかし、性能向上が目的である共有メモリにおける制御情報の更新が、アクセス対象である共有メモリとアクセスを制御するプロセッサのオーバヘッドを増加させている。性能向上が目的であるデータキャッシングが、アクセス対象であるキャッシュメモリとアクセスを制御するプロセッサのオーバヘッドを増加させている。特に、ユーザデータを格納するメディアがソリッドステートディスク(SSD)のように高速な読み出しが可能な記憶媒体である場合は、キャッシュすることによる読み出し時間の短縮効果に対する、キャッシュすることによる制御情報の更新の処理時間の増加分の比率が大きくなる。
本発明の一態様のストレージシステムは、制御プログラムが動作するプロセッサと、複数の論理ボリュームにストレージリソースを提供する複数の第1種または第2種の種類の物理ストレージボリュームと、リード要求の対象データを一時的に格納するための複数のジョブバッファを含み、前記複数の物理ストレージボリュームに格納されたデータの一部を格納するキャッシュメモリと前記プロセッサに接続されたメモリであって、ホストからのリード要求の対象データが前記キャッシュメモリに格納されているかを示すキャッシュ制御情報と、前記リード要求の処理を管理するために使用される複数のジョブ番号が使用中か否かを管理するジョブ管理情報とを格納するメモリとを有する。前記プロセッサは、前記ホストから前記論理ボリュームのいずれかの領域を指定した前記リード要求を受信すると、前記ジョブ管理情報で管理されている前記複数のジョブ番号の内、ジョブバッファが割り当てられている確率が高い、使用中ではないジョブ番号を優先的に前記リード要求に割当て、前記リード要求で指定された前記論理ボリュームの領域を特定する第1の識別子及び前記キャッシュ制御情報に基づき、前記リード要求の対象データがキャッシュメモリにあるかを判定し、前記対象データが前記キャッシュメモリにないと判定した場合、前記リード要求が指定する論理ボリュームを構成する前記複数の物理ストレージボリュームの一部が前記第1種の種類の物理ストレージボリュームである場合は、前記第1の識別子と前記キャッシュメモリ上に確保した領域を特定する識別子とを対応付けて前記キャッシュ制御情報として前記メモリに格納し、前記リード要求が指定する論理ボリュームを構成する前記複数の物理ストレージボリュームの一部が第2種の種類の物理ストレージボリュームである場合は、前記リード要求に割り当てられた前記ジョブ番号と前記ジョブ番号に対応するジョブバッファを特定する識別子とを対応付けて前記キャッシュ制御情報として前記メモリに格納し、前記ジョブ番号に対応する前記ジョブバッファに、前記リード要求により前記複数の物理ストレージボリュームの一部から読み出されたデータを格納するように構成されている。
本発明の他の態様のストレージシステムは、データを格納する複数のソリッドステートドライブと、ホストからのリード要求を処理するプロセッサと、リード要求の対象データを一時的に格納する複数のジョブバッファを含む、キャッシュメモリと、リード要求の処理を管理するために使用され複数のジョブ番号が使用中か否かを管理するジョブ管理情報を格納するメモリと、を有し、前記プロセッサは、リード要求を受信すると、前記ジョブ管理情報で管理されている複数のジョブ番号の内、ジョブバッファが割り当てられている確率が高い、使用中ではないジョブ番号を優先的に前記リード要求に割当て、前記受信したリード要求の対象データが前記キャッシュメモリに存在しない場合、前記複数のソリッドステートドライブのうちの一つのソリッドステートドライブから読み出した前記対象データを、前記リード要求に割り当てられた前記ジョブ番号に対応する前記ジョブバッファに格納し、前記対象データを前記ホストに転送する、ように構成されている。
本発明の他の態様のストレージシステムは、データを格納する複数のソリッドステートドライブと、ホストからのリード要求を処理するプロセッサと、リード要求の対象データを一時的に格納する複数のジョブバッファを含む、キャッシュメモリと、リード要求の処理を管理するために使用され複数のジョブ番号が使用中か否かを管理するジョブ管理情報を格納するメモリと、を有し、前記プロセッサは、リード要求を受信すると、前記ジョブ管理情報で管理されている複数のジョブ番号の内、ジョブバッファが割り当てられている確率が高い、使用中ではないジョブ番号を優先的に前記リード要求に割当て、前記受信したリード要求の対象データが前記キャッシュメモリに存在しない場合、前記複数のソリッドステートドライブのうちの一つのソリッドステートドライブから読み出した前記対象データを、前記リード要求に割り当てられた前記ジョブ番号に対応する前記ジョブバッファに格納し、前記対象データを前記ホストに転送する、ように構成されている。
本発明の一態様は、ストレージシステムにおけるオーバヘッドを低減しストレージシステムの性能を向上する。
本発明は、ストレージシステムの性能を向上するための技術に関する。以下、添付図面を参照して本発明の実施形態を説明する。説明の明確化のため、以下の記載及び図面の詳細は、適宜、省略及び簡略化がなされており、必要に応じて重複説明は省略されている。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。
第1実施形態
本実施形態のストレージシステムは、それぞれが異なるボリュームの入出力(I/O)を担当するプロセッサを含む。各プロセッサは、ローカルメモリが割り当てられている。本実施形態のストレージシステムは、異なるボリュームを担当する複数のプロセッサがアクセス可能な共有メモリを有する。ローカルメモリ及び共有メモリは、典型的には揮発性半導体メモリである。
本実施形態のストレージシステムは、それぞれが異なるボリュームの入出力(I/O)を担当するプロセッサを含む。各プロセッサは、ローカルメモリが割り当てられている。本実施形態のストレージシステムは、異なるボリュームを担当する複数のプロセッサがアクセス可能な共有メモリを有する。ローカルメモリ及び共有メモリは、典型的には揮発性半導体メモリである。
プロセッサが担当するボリュームのデータキャッシング制御情報は、当該プロセッサのローカルメモリに格納されている(制御データキャッシング)。さらに、共有メモリは、当該ボリュームのデータキャッシング制御情報を格納する。
プロセッサは、ローカルメモリ上のキャッシング制御情報を参照及び更新して、担当ボリュームのデータキャッシング制御を行う。これにより、データキャッシング制御の処理を高速化することができる。
上述のように、共有メモリは、異なるボリュームを担当する複数のプロセッサがアクセスすることができる。いずれかのボリュームの担当プロセッサについて障害が発生した場合、他のプロセッサがその担当を引き継ぎ、共有メモリから対応するデータキャッシング制御情報を自身のローカルメモリにロードする。上記他のプロセッサは、共有メモリから取得したデータキャッシング制御情報を使用して、引き継いだボリュームのデータキャッシングを制御する。
本実施形態において、プロセッサは、予め定められている条件に従って、ローカルメモリにおけるキャッシング制御情報の更新を、共有メモリにおける制御情報に反映するか否かを決定する。ローカルメモリにおける制御情報の更新において必要な更新のみを共有メモリにおける制御情報に反映することで、プロセッサと共有メモリの通信におけるオーバヘッドを低減し、ストレージシステムの性能を向上することができる。
さらに、本実施形態のストレージシステムは、リードデータ及びライトデータのキャッシングの有無を、予め定められている条件に従って決定する。リードデータ及びライトデータを選択的にキャッシングすることで、キャッシュ領域を効率的に利用し、さらに、キャッシュメモリ及びデータキャッシングを行うプロセッサのオーバヘッドを低減することで、ストレージシステムの性能を向上する。
以下において、図1から図25を参照して本実施形態を具体的に説明する。図1は、本実施形態のストレージシステム10、データ処理及び演算を行うホスト計算機180及びストレージシステム10を管理する管理計算機20含む、計算機システムの一例を示す。計算機システムは、複数のホスト計算機180を含むことができる。
ストレージシステム10とホスト計算機180とは、データネットワーク190を介して互いに接続される。データネットワーク190は、例えば、SAN(Storage Area Network)である。データネットワーク190は、IPネットワーク若しくはその他のいかなる種類のデータ通信用のネットワークであってもよい。
ストレージシステム10、ホスト計算機180及び管理計算機20は、管理ネットワーク(不図示)を介して互いに接続される。管理ネットワークは、例えば、IPネットワークである。管理ネットワークは、SAN若しくはその他のいかなる種類のネットワークであってもよい。データネットワーク190と管理ネットワークとが同一のネットワークであってもよい。
ストレージシステム10は、複数の記憶ドライブ170を収容している。記憶ドライブ170は、不揮発性の磁気ディスクを有するハードディスクドライブ(HDD)、不揮発半導体メモリ(例えばフラッシュメモリ)を搭載したSolid State Drive(SSD)を含む。記憶ドライブ170は、ホスト計算機180から送られたデータ(ユーザデータ)を格納する。複数の記憶ドライブ170がRAID演算によるデータの冗長化を行うことで、1つの記憶ドライブ170に障害が発生した場合のデータ消失を防ぐことができる。
ストレージシステム10は、ホスト計算機180と接続するためのフロントエンドパッケージ(FEPK)100、記憶ドライブ170と接続するためのバックエンドパッケージ(BEPK)140、キャッシュメモリを搭載するキャッシュメモリパッケージ(CMPK)130、内部処理を行うマイクロプロセッサを搭載するマイクロプロセッサパッケージ(MPPK)120、及びそれらを接続する内部ネットワーク150を有する。図1に示すように、本例のストレージシステム10は、複数のFEPK100、複数のBEPK140、複数のCMPK130、そして複数のMPPK120を含む。
各FEPK100は、ホスト計算機180との接続を行うためのインタフェース101、ストレージシステム10内のデータ転送を行うための転送回路112を基板上に有する。インタフェース101は複数のポートを含むことができ、各ポートがホスト計算機180と接続することができる。インタフェース101は、ホスト計算機180とストレージシステム10との間の通信に用いられるプロトコル、例えばFibre Channel Over Ethernet(FCoE)を、内部ネットワーク150で用いられるプロトコル、例えばPCI−Expressに変換する。
各BEPK140は、ドライブ170と接続するためにインタフェース141、ストレージシステム10内のデータ転送を行うための転送回路142を基板上に有する。インタフェース141は複数ポートを含むことができ、各ポートがドライブ170と接続することができる。インタフェース141は、記憶ドライブ170との通信に用いられるプロトコル、例えばFCを、内部ネットワーク150で用いられるプロトコルに変換する。
各CMPK130は、ホスト計算機180から読み書きされるユーザデータを一時的に格納するキャッシュメモリ131及び1又は複数のMPPK120が扱う制御情報を格納する共有メモリ(SM)132を基板上に有する。異なるボリュームを担当する複数のMPPK120(のマイクロプロセッサ)が、共有メモリ132にアクセスすることができる。MPPK120が扱うデータやプログラムは、ストレージシステム10内の不揮発性メモリ(不図示)又は記憶ドライブ170からロードされる。関連づけられるキャッシュメモリ131と共有メモリ132とは、別の基板上(パッケージ内)に実装されていてもよい。
各MPPK120は、1以上のマイクロプロセッサ121、ローカルメモリ(LM)122及びそれらを接続するバス123を有する。本例は複数のマイクロプロセッサ121が実装されている。マイクロプロセッサ121の数は1つでもよい。複数のマイクロプロセッサ121を一つのプロセッサと見ることができる。ローカルメモリ122は、マイクロプロセッサ121が実行するプログラム及びマイクロプロセッサ121が使用する制御情報を格納する。
上述のように、一つの共有メモリ132は、MPPK120が扱う制御情報を格納する。MPPK120は、共有メモリ132から、自身が必要とする制御情報を自身のローカルメモリ122に格納する(制御キャッシング)。これにより、マイクロプロセッサ121による制御情報への高速アクセスが実現され、ストレージシステム10の性能を向上することができる。
マイクロプロセッサ121は、ローカルメモリ122の制御情報を更新すると、その更新を、必要により、共有メモリ132上の制御情報に反映する。本実施形態の特徴の一つは、この更新の制御である。マイクロプロセッサ121は、予め定められた条件が満たされている場合に、ローカルメモリ122における制御情報の更新を共有メモリ132における制御情報に反映する。
本構成例において、マイクロプロセッサ121には、ストレージシステム10がホスト計算機180に提供するボリュームの担当が割り当てられる。マイクロプロセッサ121に割り当てられているローカルメモリ122及び共有メモリ132が、上記マイクロプロセッサがI/Oを担当するボリュームのデータキャッシング制御情報を格納する。
なお、本発明を適用できる制御情報は、共有メモリ132における制御情報を更新しない場合でもMP障害時にホストデータロストにつながらない制御情報全般である。本実施形態におけるデータキャッシング制御情報以外の制御情報の例は、他の実施形態で説明する。本実施形態はマイクロプロセッサがボリュームを担当する例を記載しているが、担当マイクロプロセッサが割り当てられる対象はボリュームに限定されず、担当マイクロプロセッサは制御情報毎に存在してもよい。
図2は、ローカルメモリ122内に格納されている情報を示すブロック図である。ローカルメモリ122は、性能ブースト機能有効化テーブル210、ボリューム毎性能ブースト機能有効化テーブル220、メディア種別テーブル230、RAIDレベルテーブル240、ボリューム毎ヒット率テーブル250、ヒット率閾値テーブル260、マイクロプロセッサ(MP)稼働率テーブル270を格納する。
ローカルメモリ122は、さらに、マイクロプロセッサ(MP)稼働率閾値テーブル280、キャッシュメモリ(CM)稼働率テーブル290、キャッシュメモリ(CM)稼働率閾値テーブル300を含む。例えば、マイクロプロセッサ121は、記憶ドライブ170その他のストレージシステム10内の不揮発性記憶領域からこれらテーブルの少なくとも一部を取得して、ローカルメモリ122に格納し、いくつかのテーブルを新たに作成される。これらテーブルの詳細な説明は後述する。
ローカルメモリ122は、さらに、キャッシュディレクトリ310を格納している。図3は、共有メモリ132内のキャッシュディレクトリ510を示すブロック図である。マイクロプロセッサ121は、共有メモリ132からキャッシュディレクトリ510を自身のローカルメモリ122にキャッシュし、ローカルメモリ122上のキャッシュディレクトリ310の更新を、必要により、共有メモリ132のキャッシュディレクトリ510に反映する。キャッシュディレクトリ510は、キャッシュディレクトリ310のバックアップデータである。
マイクロプロセッサ121は、ホスト計算機180からリードコマンドを受信すると、そのローカルメモリ122のキャッシュディレクトリ310を参照して、対象データがキャッシュメモリ131にキャッシュされているか(キャッシュヒットか)を決定する。このように、キャッシュディレクトリ310は、キャッシュメモリ131に格納されているキャッシュデータを検索するための情報を与える。
キャッシュディレクトリ310は、参照テーブルGRPP、GRPT1、GRPT2、管理テーブルとしてのスロットコントロールブロック(SLCB)から構成されている。参照テーブルGRPP、GRPT1、GRPT2は、キャッシュセグメントを検索するときにマイクロプロセッサ121により参照されるテーブルであって、ディレクトリ構造を有する。参照テーブルGRPPが最上位に位置し、参照テーブルGRPT2が最下位に位置している。上位のテーブルは、次のテーブルのポインタを含む。GRPT2には、SLCBへのポインタが含まれている。
SLCBは、キャッシュ管理の最小単位であるセグメント関する制御情報を管理するテーブルであって、キャッシュメモリ131上にリードコマンドの指定データが存在するか否か、キャッシュされているデータのキャッシュメモリ131上のアドレス情報等、が格納されている。
1つのスロットには、1又は複数のセグメントを関連付けることができる。1つのセグメントには、例えば、64KBのデータを格納することができる。キャッシュ管理の最小単位はセグメントであるが、キャッシュをスロット単位で管理してもよい。典型的には、ダーティデータ(物理ディスクへの書込み前の状態)と、クリーンデータ(物理ディスクへの書込み後の状態)の各状態間の遷移は、スロット単位で行われる。キャッシュ領域のリザーブ及びリリースは、スロット単位又はセグメント単位で行われる。
ホスト計算機180からリードアクセスがあった場合は、マイクロプロセッサ121は、それに含まれる論理ブロックアドレス(LBA)に基づいて、各階層テーブルを順番に辿ることにより、要求されたデータがキャッシュメモリ131に存在するか、存在する場合にはそのアドレスを知ることができる。
要求されたデータがキャッシュメモリ131に存在する場合、マイクロプロセッサ121は、そのデータをホスト計算機180に送信する。要求されたデータがキャッシュメモリ131に存在しない場合、マイクロプロセッサ121は、ホスト計算機180が要求しているデータを記憶ドライブ170から読み出して、キャッシュ領域上の1つまたは複数のスロットに格納する。ライトデータも同様にキャッシュされる。なお、キャッシュディレクトリを使用したキャッシュデータの検索は広く知られた技術であり、ここでの詳細な説明を省略する。
図4は、管理計算機20の構成を模式的に示すブロック図である。管理計算機20は、入力インタフェース22、入力デバイス28、表示インタフェース23、表示デバイス29、CPU26、通信インタフェース21、メモリ24、HDD25を備える。入力デバイス28の典型的な例は、キーボード及びポインタデバイスであるが、これらと異なるデバイスでもよい。表示デバイス29は、典型的には、液晶表示装置である。
管理者(ユーザ)は、表示デバイス29によって処理結果を視認しながら、入力デバイス28によって必要なデータを入力する。管理者が入力する情報及び表示デバイス29による表示例は、後述する。図1の計算機システムにおいて、管理システムは一つの管理計算機20で構成されているが、管理システムは、管理計算機20に加え、管理コンソールを含むことができる。管理コンソールは、入力デバイス及び表示デバイスを含み、ネットワークを介して管理計算機20に接続する。
管理者は管理コンソールから管理計算機20にアクセスし、管理計算機20に処理を指示するとともに、管理コンソールに管理計算機20の処理結果を取得、表示させる。管理システムは、それぞれが管理計算機20の機能の一部又は全部を備える複数の計算機を含むこともできる。CPU26は、メモリ24に格納されたプログラムを実行するプロセッサである。通信I/F21は、管理ネットワークとのインタフェースであって、システム管理のためにホスト計算機180及びストレージシステム10と、データや制御命令の送受信を行う。
図5は、性能ブースト機能有効化テーブル210の構成例を示している。性能ブースト機能有効化テーブル210は、性能ブースト機能有効フラグのカラム211を有する。性能ブースト機能有効フラグは、ストレージシステム10全体の性能ブースト機能がアクティブであるか否かを示す。このフラグが1である場合、ストレージシステム10全体の性能ブースト機能がアクティブである。
本実施形態において、性能ブースト機能は、ローカルメモリ122に格納された制御情報更新の共有メモリ132への反映(バックアップ)の制御及びデータキャッシング制御の機能である。この機能については後述する。性能ブースト機能有効化テーブル210のデータは、例えば、管理者が管理計算機20から設定する。
図6は、ボリューム毎性能ブースト機能有効化テーブル220の構成例を示している。ボリューム毎性能ブースト機能有効化テーブルテーブル220は、ボリューム毎の性能ブースト機能を管理する。ボリューム毎性能ブースト機能有効化テーブル220は、論理ボリューム番号のカラム221及び性能ブースト機能有効化フラグのカラム222を有する。論理ボリューム番号は、論理ボリュームの識別子である。
性能ブースト機能有効化フラグが1である場合、そのボリュームの性能ブースト機能がアクティブであることを示す。システム全体及びボリュームの性能ブースト機能有効化フラグの双方がON(1)である場合、そのボリュームの性能ブースト機能が有効化される。このように、ボリューム毎に性能ブースト機能を管理、制御することで、ボリューム特性に応じた制御が実現される。ボリューム毎性能ブースト機能有効化テーブル220のデータは、例えば、管理者が管理計算機20から設定する。
図7は、メディア種別テーブル230の構成例を示している。メディア種別テーブル230は、RAIDグループのメディア種別を管理する。本実施形態において、1又は複数の記憶ドライブ170が提供する記憶領域及びそのインタフェースを含む構成をメディアと呼ぶ。メディア種別テーブル230は、RAIDグループ番号のカラム231及びメディア種別のカラム232を含む。
RAIDグループ番号は、RAIDグループを一意に識別する識別子である。なお、本明細書において、対象を識別する識別情報のために、識別子、名、ID等の表現を用いることができ、これらは置換可能である。メディア種別テーブル230のデータは、例えば、管理者が管理計算機20から設定する。
図8は、RAIDレベルテーブル240の構成例を示している。RAIDレベルテーブル240は、RAIDグループのRAIDレベルを管理する。RAIDグループ番号のカラム241及びRAIDレベルのカラム242を有する。RAIDレベルテーブル240のデータは、例えば、管理者が管理計算機20から設定する。
図9は、ボリューム毎ヒット率テーブル250の構成例を示している。ボリューム毎ヒット率テーブル250は、各ボリュームのキャッシュヒット率を管理する。ボリューム毎ヒット率テーブル250は、論理ボリューム番号のカラム251、ヒット率のカラム252、I/O数のカラム253、ヒット数のカラム254、低ヒット率フラグのカラム255を有する。
I/O数は、論理ボリュームに対して発行されたリードコマンド数である。ヒット数は、キャッシュヒットしたリードコマンド数である。低ヒット率フラグが1である場合、そのエントリのヒット率が、規定閾値未満であることを示す。プロセッサ121は、ボリュームへのリードアクセス及びキャッシュヒット数をカウントし、ボリューム毎ヒット率テーブル250の各フィールのデータを更新する。
なお、マイクロプロセッサ121がヒット率をモニタする単位は、論理ボリュームより小さい単位でもよい。例えば、仮想ボリューム機能や階層化機能で使用されるページを単位としてもよい。後述するデータキャッシング制御及びキャッシング制御情報の更新制御は、ページ単位で行う。
ヒット率の算出は、リードキャッシュのヒット率の他にライトキャッシュのヒット率を含んでもよい。マイクロプロセッサ121は、リードキャッシュのヒット率とライトデータのヒット率を個別に管理してもよい。例えば、マイクロプロセッサ121は、後述のリードキャッシング制御及びライトキャシング制御において、それぞれのヒット率を参照する。
図10は、ヒット率閾値テーブル260の構成例を示している。ヒット率閾値テーブル260は、ヒット率閾値のカラム261を有する。ヒット率がここに登録されている閾値以下である場合、ボリューム毎ヒット率テーブル250におけるそのエントリの低ヒット率フラグが1(ONフラグ)に設定される。ヒット率閾値は、例えば、管理者が管理計算機20から設定する。
図11は、マイクロプロセッサ121の稼働率を管理するMP稼働率テーブル270の構成例を示している。MP稼働率は、単位時間内のマイクロプロセッサ121の処理時間であり、マイクロプロセッサの負荷を表す。MP稼働率テーブル270は、マイクロプロセッサ番号のカラム271、稼働率のカラム272、過負荷判定フラグのカラム273、稼働時間のカラム274を有する。マイクロプロセッサ番号は、ストレージシステム10内で一意にマイクロプロセッサを識別する。
各マイクロプロセッサ121は、自身の稼働状況を監視し、稼働率及び稼働時間の値を、自身のエントリの稼働率のカラム272及び稼働時間のフィールドに格納する。稼働時間は、単位時間(本例で1秒)当たりの稼働時間である。稼働率は、単位時間で稼働時間を割った値である。マイクロプロセッサ121は、自己の稼働率を規定の閾値と比較し、その閾値以上である場合に、自己エントリの過負荷判定フラグのフィールの値を1(ONフラグ)に設定する。
図12は、上記閾値を格納するカラム281を有する、MP稼働率閾値テーブル280の構成例を示している。本例において、MP稼働率閾値は、全てのマイクロプロセッサに共通であるが、異なる閾値を使用してもよい。
図13は、キャッシュメモリの稼働率を管理する、CM稼働率テーブル290の構成例を示している。CM稼働率は、単に時間内のキャッシュメモリ131へのアクセス時間である。CM稼働率テーブル290は、CMPK番号のカラム291、稼働率のカラム292、過負荷判定フラグのカラム293を有する。CMPK番号は、ストレージシステム10内のCMPKの識別子である。
マイクロプロセッサ121は、CMPK130上のコントローラから、その稼働率の値を取得し、稼働率のカラム292の該当フィールドにそれを格納する。マイクロプロセッサ121は、取得した稼働率の値を規定閾値と比較し、稼働率の値が閾値以上である場合に、そのエントリの過負荷判定フラグのフィールドに1(ONフラグ)を設定する。
図14は、上記閾値を格納するCM稼働率閾値テーブル300の構成例を示している。本例において、CM稼働率閾値は、全てのCMPKに共通であるが、異なる閾値を使用してもよい。
図15のフローチャートを参照して、ストレージシステム10がホスト計算機180から受けたリードコマンドに対して行う処理を説明する。ホスト計算機180からのリードコマンドを受けた(S101)マイクロプロセッサ121は、リードコマンドが示す論理ボリューム(LDEV(Logovcal Device)とも呼ぶ)に、自身がアクセス権を有するか判定する(S102)。アクセス権を有していない場合(S102:NO)、そのマイクロプロセッサ121は、アクセス権を有するMPPK120にリードコマンドを転送する(S103)。
マイクロプロセッサ121がアクセス権を有する場合(S102:YES)、そのマイクロプロセッサ121は、同一MPPK120上のローカルメモリ122内で、キャッシュディレクトリ310を検索する(S104)。リードコマンドが指定するアドレス(データ)が見つかった場合(S105:YES)、マイクロプロセッサ121は、キャッシュディレクトリ310の情報に従って、キャッシュメモリ131からリードデータを読み出し、ホスト計算機180に送信する(S106)。
リードコマンドが指定するアドレス(データ)が見つからなかった(キャッシュミス)場合(S105:NO)、マイクロプロセッサ121は、ローカルメモリ122の未キャッシュフラグを確認する(S107)。未キャッシュフラグは、共有メモリ132のキャッシュディレクトリ510の全てのデータが、ローカルメモリ122にキャッシュされているかを示すフラグであり、ローカルメモリ122内に格納されている。一部のデータが読み込まれていない場合、その値はONである。例えば、障害フェイルオーバ直後で共有メモリ132からローカルメモリ122へ制御情報が読み込まれてない場合、未キャッシュフラグはONである。
未キャッシュフラグがONである場合(S107:YES)、共有メモリ132のキャッシュディレクトリ510の一部データがキャッシュされていない。マイクロプロセッサ121は、CMPK130のコントローラを介して、共有メモリ132からローカルメモリ122へキャッシュディレクトリ(制御情報)を転送する(S108)。
マイクロプロセッサ121は、ローカルメモリ122内で、キャッシュディレクトリ310を検索する(S109)。リードコマンドが指定するデータが見つかった場合(S110:YES)、マイクロプロセッサ121は、キャッシュディレクトリ310の情報に従って、キャッシュメモリ131からリードデータを読み出し、ホスト計算機180に送信する(S111)。
キャッシュミスの場合(S110:NO)又は未キャッシュフラグがOFFの場合(S107:NO)、マイクロプロセッサ121は、リードデータのためのスロットをキャッシュメモリ131に確保し、さらに、ローカルメモリ122のキャッシュディレクトリ310を更新する(S112)。
マイクロプロセッサ121は、データキャッシングに関する制御情報であるキャッシュディレクトリ310の更新を、共有メモリ132のデータ510に反映するか否かを判定する(S113)。この判定の具体的な方法については後に詳述する。共有メモリ132の制御情報の更新を行うと判定した場合(S114:YES)、マイクロプロセッサ121は、共有メモリ132のキャッシュディレクトリ510を更新して(S115)、次のステップS116に進む。
共有メモリ132の制御情報の更新を行わないと判定した場合(S114:NO)、マイクロプロセッサ121は、共有メモリ132の制御情報を更新することなく、ステップS116に進む。ステップS116において、マイクロプロセッサ121は、リードデータ(ホストデータ)をキャッシングするか否かを判定する。この判定方法については後述する。
リードデータをキャッシュメモリ131に格納してからホスト計算機180に送信すると判定した場合(S117:YES)、マイクロプロセッサ121は、BEPK140及びCMPK130により、記憶ドライブ170(永続メディア)からリードデータを読み出し、キャッシュメモリ131上の確保したスロットに格納する。その後、マイクロプロセッサ121は、そのキャッシュデータを、CMPK130及びFEPK100により、ホスト計算機180に送信する(S118)。
リードデータをキャッシュすることなくホスト計算機180に送信すると判定した場合(S117:NO)、マイクロプロセッサ121は、BEPK140及びFEPK100により、ドライブ170(永続メディア)から読みだしたリードデータを、CMPK130を介することなくホスト計算機180に転送する(S119)。
図16を参照して、図15のフローチャートにおける、共有メモリ132内のデータキャッシング制御情報の更新についての判定(S113)を説明する。マイクロプロセッサ121は、このステップS113を開始し、リードコマンドの指定する論理ボリュームの性能ブースト機能がONであるか否かを、性能ブースト機能有効化テーブル210及びボリューム毎性能ブースト機能有効化テーブル220を参照して判定する(S122)。一方のテーブルが、性能ブースト機能がOFFであることを示す場合、当該ボリュームの性能ブースト機能はOFFである。
当該論理ボリュームの性能ブースト機能がONではない場合(S122:NO)、マイクロプロセッサ121は、共有メモリ132の制御情報(キャッシュディレクトリ)を更新することを決定する(S128)。当該論理ボリュームの性能ブースト機能がONである場合(S122:YES)、マイクロプロセッサ121は、次に、指定データが格納されているRAIDグループのメディア種別がSSDであるか否かを、RAIDグループ番号をキーとしてメディア種別テーブル230を参照し、判定する(S123)。
マイクロプロセッサ121は、ローカルメモリ122内に、各ボリュームの構成管理情報を有しており、各ボリュームの各領域がいずれのRAIDグループに属するかをその情報を参照して知ることができる。
メディア種別がSSDである場合(S123:YES)、マイクロプロセッサ121は、共有メモリ132の制御情報(キャッシュディレクトリ)を更新しないことを決定する(S127)。そのメディア種別がSSDではない場合(S123:NO)、マイクロプロセッサ121は、次に、指定データが格納されている論理ボリュームの低ヒット率フラグがONであるか否かを、論理ボリューム番号をキーとしてボリューム毎ヒット率テーブル250を参照し、判定する(S124)。
その低ヒット率フラグがONである場合(S124:YES)、マイクロプロセッサ121は、共有メモリ132の制御情報(キャッシュディレクトリ)を更新しないことを決定する(S127)。低ヒット率フラグがOFFである場合(S124:NO)、マイクロプロセッサ121は、次に、自身の過負荷フラグがONであるか否かを、マイクロプロセッサ番号をキーとしてMP稼働率テーブル270を参照し、判定する(S125)。
過負荷フラグがONである場合(S125:YES)、マイクロプロセッサ121は、共有メモリ132の制御情報(キャッシュディレクトリ)を更新しないことを決定する(S127)。過負荷フラグがOFFである場合(S125:NO)、マイクロプロセッサ121は、次に、アクセス先のCMPK130の過負荷フラグがONであるか否かを、CMPK番号をキーとしてCM稼働率テーブル290を参照し、判定する(S126)。
過負荷フラグがONである場合(S126:YES)、マイクロプロセッサ121は、共有メモリ132の制御情報(キャッシュディレクトリ)を更新しないことを決定する(S127)。過負荷フラグがOFFである場合(S126:NO)、マイクロプロセッサ121は、共有メモリ132の制御情報(キャッシュディレクトリ)を更新することを決定する(S128)。
このように、規定条件を満たす場合、マイクロプロセッサ121は、ローカルメモリ122でのキャッシュディレクトリ310の更新を、共有メモリ132のキャッシュディレクトリ510に反映しないことを決定する。これにより、マイクロプロセッサ121及びCMPK130の負荷を低減し、システムのスループットを向上することができる。
ローカルメモリの制御情報(本例ではキャッシュディレクトリ)の更新を共有メモリ132に反映していないことは、その制御情報の担当MPPK120に障害が発生した場合に問題となる。通常動作において、マイクロプロセッサ121は、自身のローカルメモリ122を参照するため、更新された最新の制御情報を参照することができる。一方、担当MPPK120に障害が発生した場合、他のMPPK120が担当を引き継ぐ(フェイルオーバ)。
障害発生したMPPK120のローカルメモリ122上のデータは消失するため、引き継いだMPPK120(のマイクロプロセッサ121)は、共有メモリ132に格納されている古い制御情報しか得ることができない。そのため、共有メモリ132に格納されており、更新(共有メモリ132へのバックアップ)を省略することができるデータは、MPPK120の障害時にユーザデータロストにつながらない制御情報である。
上記好ましい構成は、MPPK120で障害が発生した場合に影響が小さい共有メモリ132での更新を省略する。具体的には、キャッシュミスによりリードデータが読みだされる記憶ドライブ170がSSDである場合(S123:YES)、マイクロプロセッサ121は、共有メモリ132での更新を行わないことを決定する(S127)。
MPPK120の障害により、SSDから読みだされた上記データがキャッシュされていることを示す情報が失われる。しかし、SSDは、他のメディア種別のドライブ170よりもアクセス性能が高く、失われた制御情報に起因するキャッシュミスの影響は小さく、MPPK120及びCMPK130のオーバヘッド低減によるシステム性能向上効果の方が大きい。
本構成においては、共有メモリ132での更新を省略するメディア種別はSSDであるが、この種別は、システム設計に依存する。システムに実装されるメディア(ドライブ)の種別は、SSD及びHDDに限らず、これらに加え又はこれらに代えて異なる種別のドライブを実装することができる。実装されている複数のメディア種別において、共有メモリ132での更新省略の条件を満たす種別は、設計に従って選択される。最もアクセス性能が高い種別を含む、1又は複数の他の種別よりもアクセス性能が高い種別が選択される。
本構成において、リードコマンド指定データを格納する論理ボリュームのキャッシュヒット率が低い場合(S124:YES)、マイクロプロセッサ121は、共有メモリ132での更新を行わないことを決定する(S127)。ヒット率が低いボリュームのデータのキャッシュ制御情報が失われても、そのボリュームのアクセス性能への影響は小さく、MPPK120及びCMPK130のオーバヘッド低減によるシステム性能向上効果の方が大きい。
本構成は、さらに、MPPK120及びCMPK130の現状負荷に基づいて、共有メモリ132での更新の有無を決定する(S125、S126)。MPPK120又はCMPK130の負荷が高い場合、共有メモリ132での更新を省略することによる性能向上の効果が大きい。
このように、本構成は、対象ボリュームの性能ブースト機能がONであり、上記4つの条件のいずれかが満たされる場合、共有メモリ132でのキャッシュ制御情報の更新を省略する。マイクロプロセッサ121は、これらと異なる条件に基づき共有メモリ132での更新の有無を決定してもよい。マイクロプロセッサ121は、上記4条件のうち複数の条件が満たされることを、共有メモリ132での制御情報更新省略の条件としてもよい。
図17は、図15のフローチャートにおける、ホストデータ(リードデータ)キャッシシングについての判定(S116)のフローチャートを示している。本ステップのフローチャートは、図16に示すフローチャートと略同様である。従って、主にこれと異なる点について具体的に説明する。
図17において、ステップS132からステップS136は、それぞれ、図15のフローチャートにおけるステップ122からステップS126と同様である。ステップ137において、マイクロプロセッサ121は、記憶ドライブ170から読みだしたホストデータ(リードデータ)をキャッシュメモリ132に格納することなく、ホスト計算機180に送信することを決定する。リードデータをCMにキャッシングしない転送をCM非経由転送と呼ぶ。CM非経由転送は、BEPK140の転送回路142からFEPK110の転送回路112へリードデータを転送することにより実現される。具体的には、転送回路142内のDRAMなどの揮発メモリから転送回路112内の揮発メモリへの転送となる。
一方、ステップS138において、マイクロプロセッサ121は、記憶ドライブ170から読みだしたホストデータをキャッシュメモリ132に格納する(キャッシュする)ことを決定する。
このように、リードデータを選択的にキャッシングすることで、キャッシュ領域を効率的に利用し、さらに、キャッシュメモリ及びデータキャッシングを行うプロセッサのオーバヘッドを低減することで、ストレージシステムの性能を向上する。特に記憶ドライブがSSDの場合、キャッシュすることによる読み出し時間の短縮効果に対する、キャッシュすることによる制御情報の更新の処理時間の増加分の比率が大きいので、キャッシング処理を省略することによる性能改善の効果が大きい。
本例において、リードデータをキャッシュするか否かの判定条件は、キャッシュ制御情報の更新を共有メモリ132で行うか否かの判定条件と同一である。このように、リードデータキャッシングを制御することで、MPPK120及びCMPK130のオーバヘッド低減によりシステム性能を向上することができる。キャッシュ制御の判定条件と制御情報更新制御の判定条件とは、異なっていてもよい。
次に、ホスト計算機180から受信したライトコマンドに対する処理を、図18A及び図18Bに示すフローチャートを参照して説明する。マイクロプロセッサ121は、ホスト計算機180からライトコマンドを受け(S141)、その指定アドレスのボリューム(LDEV)に、アクセス権を有するか否かを判定する(S142)。
そのマイクロプロセッサ121がアクセス権を有しない場合(S142:NO)、マイクロプロセッサ121は、他の担当MPPK120にライトコマンドを転送する(S143)。そのマイクロプロセッサ121がアクセス権を有している場合(S142:YES)、マイクロプロセッサ121は、同一基板上のローカルメモリ122内でキャッシュディレクトリ310を検索する(S144)。
ライトコマンドが指定するアドレスが見つかった場合(S145:YES)、マイクロプロセッサ121は、キャッシュディレクトリ310の情報に従って、キャッシュメモリ131にライトデータを書き込み、ホスト計算機180にコマンド完了を通知する(S146)。
ライトコマンドが指定するアドレスが見つからなかった(キャッシュミス)場合(S145:NO)、マイクロプロセッサ121は、ローカルメモリ122への未キャッシュフラグを確認する(S147)。未キャッシュフラグがONである場合(S147:YES)、マイクロプロセッサ121は、CMPK130のコントローラを介して、共有メモリ132からローカルメモリ122へキャッシュディレクトリ(制御情報)を転送する(S148)。
マイクロプロセッサ121は、ローカルメモリ122内で、キャッシュディレクトリ310を検索する(S149)。ライトコマンドが指定するアドレスが見つかった場合(S150:YES)、マイクロプロセッサ121は、キャッシュディレクトリ310の情報に従って、キャッシュメモリ131にライトデータを書き込み、ホスト計算機180にコマンド完了を通知する(S151)。
キャッシュミスの場合(S150:NO)又は未キャッシュフラグがOFFの場合(S147:NO)、マイクロプロセッサ121は、ライトデータのためのスロットをキャッシュメモリ131に確保し、さらに、ローカルメモリ122のキャッシュディレクトリ310を更新する(S152)。
マイクロプロセッサ121は、データキャッシングに関する制御情報であるキャッシュディレクトリ310の更新を、共有メモリ132のデータ510に反映するか否かを判定する(S153)。この判定の具体的な方法は、図15を参照して説明した方法と同様である。マイクロプロセッサ121は、さらに、ライトデータ(ホストデータ)をキャッシングするか否かを判定する(S154)。この判定方法は、図16を参照して説明した方法と同様である。
マイクロプロセッサ121がライトデータをキャッシュすると判定した場合(S155:YES)、マイクロプロセッサ121は、キャッシュメモリ131に新たに確保した領域にライトデータを書き込み、ホスト計算機180にコマンド完了を通知する(S156)。マイクロプロセッサ121は、ステップS154での判定結果に関わらず、ローカルメモリ122におけるキャッシュディレクトリ310の更新に同期して、共有メモリ132におけるキャッシュディレクトリ510を更新する。
マイクロプロセッサ121がライトデータをキャッシュしないと判定した場合(S155:NO)、マイクロプロセッサ121は、ステップS153における判定結果に基づいて、共有メモリ132における制御情報の更新を行う又は省略する。マイクロプロセッサ121が、共有メモリ132におけるキャッシュ制御情報(キャッシュディレクトリ510)を更新すると判定した場合(S157:YES)、マイクロプロセッサ121は、ローカルメモリ122のキャッシュディレクトリ310の更新を、共有メモリ132におけるキャッシュディレクトリ510に反映し(S158)、次のステップS159に進む。
マイクロプロセッサ121が、共有メモリ132におけるキャッシュ制御情報を更新しないと判定した場合(S157:NO)、マイクロプロセッサ121は、書き込み先のRAIDレベルを、RAIDレベルテーブル240を参照して特定する(S159)。そのRAIDレベルが1である場合(S159:YES)、マイクロプロセッサ121は、キャッシュメモリ131にライトデータを格納することなく、BEPK140により記憶ドライブ170にデータを書き込み、ホスト計算機180にコマンド完了を通知する(S160)。
そのRAIDレベルが1と異なる場合(S159:NO)、マイクロプロセッサ121は、パリティを生成し、キャッシュメモリ131にライトデータを格納することなく、BEPK140により記憶ドライブ170にパリティ及びライトデータを書き込む。さらに、マイクロプロセッサ121はホスト計算機180にコマンド完了を通知する(S161)。
このように、本例において、ライトコマンドのハンドリングにおいては、共有メモリ132におけるキャッシュディレクトリ510の更新を省略するためには、キャッシュメモリ131へのライトデータの格納が省略されることが必要である。キャッシュされたライトデータのデステージ(ドライブ170への書き込み)前にそのキャッシュ制御情報が失われると、キャッシュメモリ131でそのライトデータを特定することができないからである。
上述のように、本例において、ステップS154におけるライトデータをキャッシュするか否かの判定条件は、図15におけるステップS116の判定条件と同一である。また、ステップS153におけるキャッシュ制御情報の更新を共有メモリ132で行うか否かの判定条件は、図15におけるステップS113の判定条件と同一である。これらは異なっていてもよい。
このように、ライトデータのキャッシング及びキャッシュ制御情報の更新を制御することによって、MPPK120及びCMPK130のオーバヘッドを低減し、ストレージシステム10の性能を向上することができる。なお、ライトデータをキャッシュしない場合は、パリティ生成を完了し、記憶ドライブにパリティ及びライトデータを書き込んだ後にホストにコマンド完了を通知する。また、SSDはリード性能よりもライト性能が劣る。このため、ライトコマンドの場合はキャッシングを全て行うという方式にしてもよい。この場合は、S154の判定を省略し、S156の処理へ移る。
次に、図15乃至図17で説明したリードコマンド処理の他の例を説明する。ここでは、主に図15乃至図17の実施形態と異なる点を説明する。図66は、ローカルメモリ122に格納されている制御情報を示している。CM非経由転送比率算出テーブル430、CM非経由転送比率テーブル440、図67はCM非経由転送比率算出テーブル430の一例を示し、図68はCM非経由転送比率テーブル440の一例を示す。
図67は、CM非経由転送比率算出テーブル430の構成例を示している。CM非経由転送比率算出テーブル430は、論理ボリューム毎のキャッシュヒット率及びMP稼働率からCM非経由で転送する比率を算出するテーブルである。CM非経由転送比率算出テーブル430は、ヒット率のカラム431、マイクロプロセッサ稼働率のカラム432、CM非経由転送比率のカラム433を有する。
キャッシュヒットしないデータに対するリード処理のマイクロプロセッサOVHを減らす目的から、ヒット率が低い場合にCM非経由転送比率は高い値が設定され、マイクロプロセッサ稼働率が高い場合にCM非経由転送比率は高い値が設定される。
CM非経由転送比率の下限は0であり、上限は99以下である。上限で99以下である理由は、100%CM非経由で転送する場合、ヒット率を計算できないためである。本例で用いるヒット率は、CM非経由を除いた場合のヒット率である。
図68は、CM非経由転送比率テーブル440の構成例を示している。CM非経由転送比率テーブル440は、各論理ボリュームに対するリード処理においてCM非経由で転送する比率を管理するテーブルである。CM非経由転送比率テーブル440は、論理ボリューム番号のカラム441、CM非経由転送比率のカラム442を有する。
本例におけるホスト計算機180から受信したリードコマンドに対する処理を、図69に示すフローチャートを参照して説明する。ホスト計算機180からのリードコマンドを受けた(S851)マイクロプロセッサ121は、リードコマンドが示すLDEVに、自身がアクセス権を有するか判定する(S852)。アクセス権を有していない場合(S852:NO)、そのマイクロプロセッサ121は、アクセス権を有するMPPK120にリードコマンドを転送する(S853)。
マイクロプロセッサ121がアクセス権を有する場合(S852:YES)、そのマイクロプロセッサ121は、同一MPPK120上のローカルメモリ122内で、キャッシュディレクトリ310を検索する(S854)。リードコマンドが指定するアドレス(データ)が見つかった場合(S855:YES)、マイクロプロセッサ121は、キャッシュディレクトリ310の情報に従って、キャッシュメモリ131からリードデータを読み出し、ホスト計算機180に送信する(S856)。
リードコマンドが指定するアドレス(データ)が見つからなかった(キャッシュミス)場合(S855:NO)、マイクロプロセッサ121は、ローカルメモリ122の未キャッシュフラグを確認する(S857)。未キャッシュフラグは、共有メモリ132のキャッシュディレクトリ510の全てのデータが、ローカルメモリ122にキャッシュされているかを示すフラグであり、ローカルメモリ122内に格納されている。一部のデータが読み込まれていない場合、その値はONである。例えば、障害フェイルオーバ直後で共有メモリ132からローカルメモリ122へ制御情報が読み込まれてない場合、未キャッシュフラグはONである。
未キャッシュフラグがONである場合(S857:YES)、共有メモリ132のキャッシュディレクトリ510の一部データがキャッシュされていない。マイクロプロセッサ121は、CMPK130のコントローラを介して、共有メモリ132からローカルメモリ122へキャッシュディレクトリ(制御情報)を転送する(S858)。
マイクロプロセッサ121は、ローカルメモリ122内で、キャッシュディレクトリ310を検索する(S859)。リードコマンドが指定するデータが見つかった場合(S860:YES)、マイクロプロセッサ121は、キャッシュディレクトリ310の情報に従って、キャッシュメモリ131からリードデータを読み出し、ホスト計算機180に送信する(S111)。
キャッシュミスの場合(S860:NO)又は未キャッシュフラグがOFFの場合(S857:NO)、S862において、マイクロプロセッサ121は、リードデータ(ホストデータ)をキャッシングするか否かを判定する。この判定方法については後述する。
リードデータをキャッシュすることなくホスト計算機180に送信すると判定した場合(S863:NO)、マイクロプロセッサ121は、CMPK130を介することなく、ドライブ170(永続メディア)から読みだしたリードデータをBEPK140の転送回路142のメモリへ転送し、転送回路142のメモリからFEPK100の転送回路112のメモリへ転送し、転送回路112のメモリからホスト計算機180に転送する(S864)。
リードデータをキャッシュメモリ131に格納してからホスト計算機180に送信すると判定した場合(S863:YES)、マイクロプロセッサ121は、リードデータのためのスロットをキャッシュメモリ131に確保し、さらに、ローカルメモリ122のキャッシュディレクトリ310及び共有メモリ132のキャッシュディレクトリ510を更新する(S865)。
マイクロプロセッサ121は、BEPK140及びCMPK130により、記憶ドライブ170(永続メディア)からリードデータを読み出し、キャッシュメモリ131上の確保したスロットに格納する。その後、マイクロプロセッサ121は、そのキャッシュデータを、CMPK130及びFEPK100により、ホスト計算機180に送信する(S866)。
図70を参照して、図69のフローチャートにおける、データキャッシングの要否についての判定(S862)を説明する。マイクロプロセッサ121は、このステップS862を開始し(S871)、リードコマンドの指定する論理ボリュームの性能ブースト機能がONであるか否かを、性能ブースト機能有効化テーブル210及びボリューム毎性能ブースト機能有効化テーブル220を参照して判定する(S872)。一方のテーブルが、性能ブースト機能がOFFであることを示す場合、当該ボリュームの性能ブースト機能はOFFである。
当該論理ボリュームの性能ブースト機能がONではない場合(S872:NO)、マイクロプロセッサ121は、記憶ドライブ170から読みだしたホストデータ(リードデータ)をキャッシュメモリ132に格納することなく、ホスト計算機180に送信することを決定する(S877)。当該論理ボリュームの性能ブースト機能がONである場合(S872:YES)、マイクロプロセッサ121は、次に、指定データが格納されているRAIDグループのメディア種別がSSDであるか否かを、RAIDグループ番号をキーとしてメディア種別テーブル230を参照し、判定する(S873)。
メディア種別がSSDではない場合(S873:NO)、記憶ドライブ170から読みだしたホストデータ(リードデータ)をキャッシュメモリ132に格納することなく、ホスト計算機180に送信することを決定する(S877)。そのメディア種別がSSDである場合(S873:YES)、マイクロプロセッサ121は、次に、今回のI/OがCM非経由転送対象である否かを、指定データが格納されている論理ボリューム番号をキーとしてCM非経由転送比率テーブル440を参照し、判定する(S874)。
0から99の値を持つCM非経由転送比率を用いて、CM非経由転送対象か否かを判定する方法として、マイクロプロセッサ121は、0から100までの乱数を用いて、乱数がCM非経由転送比率を下回った場合に、今回のI/OがCM非経由転送対象であると判定してもよい。マイクロプロセッサ121は、リードデータのアドレスをキーとする0から100のハッシュ値を用いて、ハッシュ値がCM非経由転送比率を下回った場合に、今回のI/OがCM非経由転送対象であると判定してもよい。マイクロプロセッサ121は、0から100まで1ずつ増加するカウンタ(100の次は0に戻る)を使用して、カウンタの値がCM非経由転送比率を下回った場合に、今回のI/OがCM非経由転送対象であると判定してもよい。
S874の判定の結果、今回のI/OがCM非経由転送対象であると判定した場合(S875:YES)、マイクロプロセッサ121は、記憶ドライブ170から読みだしたホストデータ(リードデータ)をキャッシュメモリ132に格納することなく、ホスト計算機180に送信することを決定し(S876)、今回のI/OがCM非経由転送対象ではないと判定した場合(S875:NO)、記憶ドライブ170から読みだしたホストデータをキャッシュメモリ132に格納することを決定する(S877)。
このように、規定条件を満たす場合、マイクロプロセッサ121は、ローカルメモリ122でのキャッシュディレクトリ310及び、共有メモリ132のキャッシュディレクトリ510を更新しなくてよいCM非経由転送を用いることを決定する。これにより、マイクロプロセッサ121及びCMPK130の負荷を低減し、システムのスループットを向上することができる。
図71のフローチャートを参照して、CM非経由転送比率の算出を説明する。このフローは、LDEV(論理ボリューム)毎に1秒などの周期で呼び出される。マイクロプロセッサ121は、ある周期で全LDEV分を算出してもよいし、I/O処理契機にI/O対象LDEVが1秒などの間更新されていない場合に算出してもよい。
マイクロプロセッサ121は、対象LDEV番号(論理ボリューム番号)をキーにボリューム毎ヒット率テーブル250を参照し、I/O数とヒット数からヒット率を求め、自身のMP番号をキーにMP稼働率テーブル380を参照し、MP稼働率を求め、ヒット率とMP稼働率をキーにCM非経由転送比率算出テーブル430を参照し、CM非経由転送比率を求める(S882)。
マイクロプロセッサ121は、CM非経由転送比率テーブル440の当該LDEV番号(論理ボリューム番号)のCM非経由転送比率のカラムをS882でもとめたCM非経由転送比率で更新し(S883)、この処理を終了する(S884)。
図66乃至図71を参照して説明したリード処理に対して、ライト処理は、データキャッシング判定を行ってもよいし、すべてのデータをキャッシュするという方法を採用してもよい。
例えば、すべてのデータをキャッシュする場合、図69のフローチャートにおいてS851、S853、S856、S861、S866を、図18AのS141、S143、S146、S151、S156にそれぞれ置き換えたフローとほぼ同様の流れになる。但し、ライト処理の場合、ホストキャシング判定に関するステップ(S862乃至S864)は省略され、S857またはS860のステップで否と判定された場合は、S865のステップに移る点で異なる。
次に、図19のフローチャートを参照して、管理計算機20からの設定処理を説明する。管理計算機20は、その上で実行される管理プログラムに従って動作する。したがって、管理計算機20を主語とする記載は、管理プログラム又はCPU26を主語とすることができる。管理計算機20は設定処理を開始し(S171)、設定データ入力のためのメニューを、表示デバイス29に表示する(S172)。管理者は、入力デバイス28を使用して、必要な設定データを入力する(S173及びS174:NO)。
全ての必要なデータが入力されると(S174:YES)、管理計算機20は、保存ボタンの選択に応答して設定データを保存する。設定データは、ストレージシステム10からの要求に応じて、管理計算機20からストレージシステム10に送信される。管理者は、キャンセルボタンを選択することで、入力をやり直すことができる。
図20は、メニュー画面の一例2000を示している。メニュー画面2000は、性能ブースト機能設定エリア2001及びボリューム毎性能ブースト機能設定エリア2004を含む。
管理者は、性能ブースト機能設定エリア2001における"ENABLE"又は"DISABLE"の一方を入力デバイス28で選択することで、ストレージシステム10の性能ブースト機能(上記制御情報の更新制御及びユーザデータのキャッシング制御の機能)をイネーブル又はディセーブルすることができる。この設定が、性能ブースト機能有効化テーブル210に反映される。これがディセーブルされると、ストレージシステム10の全ての性能ブースト機能が使用されない。
ボリューム毎性能ブースト機能設定エリア2004は、論理ボリューム番号のカラム2005及び性能ブースト機能設定カラム2006を含む。管理者は、ボリューム毎性能ブースト機能設定エリア2004において、各論理ボリュームの性能ブースト機能のイネーブル/ディセーブルを入力デバイス28で選択することができる。
この設定が、ボリューム毎性能ブースト機能有効化テーブル220に反映される。システムの性能ブースト機能がイネーブルされており、かつ、ボリュームの性能ブースト機能がイネーブルされているボリュームに対して、本実施形態の性能ブースト機能が使用される。
図20は、性能ブースト機能の設定画面を例示しているが、この他、管理計算機20は、例えば、判定条件に含まれる閾値の設定画面を表示し、管理者によって入力された設定データをストレージシステム10に送信する。典型的には、ストレージシステム10は、管理者により設定可能な項目のデフォルト値を予め有しており、管理者により設定され項目のデータを、入力データにより更新する。
次に、図21から図24を参照して、ストレージシステム10内のテーブル更新を説明する。図21は、メディア種別テーブル230の更新のフローチャートである。RAIDグループが増減設されると(S201)、BEPK140が、その情報をいずれかのマイクロプロセッサ121に送信する。更新情報を受信したマイクロプロセッサ121は、ローカルメモリ122のメディア種別テーブル230及びRAIDレベルテーブル240を更新すると共に、不揮発性記憶領域のこれらテーブルを更新し(S202)、それを他のMPPK120に通知する。
図22を参照して、CM稼働率テーブル290の更新を説明する。MPPK120の任意のマイクロプロセッサ121がこの処理を行う。典型的には、定期的(例えば1秒毎)にこの処理が行われる。マイクロプロセッサ121は、アクセス先のCMPK130から稼働率の情報を取得する(S212)。具体的には、マイクロプロセッサ121は、CMPK130内のコントローラ(不図示)に、CMPK130の稼働率(CM稼働率)を示す値を要求し、それをCMPK130内のコントローラから取得する。
マイクロプロセッサ121は、CMPK130から取得した稼働率の値によって、CM稼働率テーブル290における対応エントリの稼働率カラム292のフィールドを更新する。さらに、マイクロプロセッサ121は、更新した稼働率の値が、CM稼働率閾値テーブル300の閾値以上であるか判定する(S214)。
稼働率が閾値以上である場合(S214:YES)、マイクロプロセッサ121は、CM稼働率テーブル290における、該当エントリの過負荷フラグを1(ON)に設定する(S215)。稼働率が閾値未満である場合(S214:NO)、マイクロプロセッサ121は、該当エントリの過負荷フラグを0(OFF)に設定する(S216)。マイクロプロセッサ121は、アクセスする全てのCMPK130について、ステップS212からステップS216を行う(S217)。
図23を参照して、ボリューム毎ヒット率テーブル250の更新を説明する。MPPK120の任意のマイクロプロセッサ121がこの処理を行う。典型的には、定期的(例えば1秒毎)にこの処理が行われる。マイクロプロセッサ121は、担当する一つの論理ボリュームのI/O数とヒット数をローカルメモリ122から取得する(S222)。当該又は他のマイクロプロセッサ121は、前回更新からの各担当論理ボリュームへのI/O数(例えばリードコマンド数)とキャッシュヒット数をカウントし、ローカルメモリ122内に格納し、当該マイクロプロセッサ121は、その値をステップS222で取得する。
マイクロプロセッサ121は、取得した値によって、ボリューム毎ヒット率テーブル250における、対応エントリのヒット率、I/O数及びヒット数のフィールドを更新する(S223)。マイクロプロセッサ121は、さらに、ヒット率とヒット率閾値テーブル260の閾値とを比較する。
ヒット率が閾値以下である場合(S224:YES)、マイクロプロセッサ121は、当該エントリの低ヒットフラグを1(ON)に設定する(S225)。一方、ヒット率が閾値より大きい場合(S224:NO)、マイクロプロセッサ121は、当該エントリの低ヒットフラグを0(OFF)に設定する(S226)。マイクロプロセッサ121は、担当する全ての論理ボリュームについて、ステップS222からステップS226を行う(S227)。
図24を参照して、MP稼働率テーブル270の更新を説明する。各マイクロプロセッサ121がこの処理を行う。典型的には、定期的(例えば1秒毎)にこの処理が行われる。マイクロプロセッサ121は、自身の単位時間(本例で1秒)当たりの稼働時間を監視し、その値をローカルメモリ122内に格納する。マイクロプロセッサ121は、ローカルメモリ122からその値を取得する(S232)。
マイクロプロセッサ121は、取得した値を使用して、該当エントリの稼働率及び稼働時間のフィールドを更新する(S233)。さらに、マイクロプロセッサ121は、更新された稼働率とMP稼働率閾値テーブル280の閾値とを比較する(S234)。稼働率が閾値以上である場合(S234:YES)、マイクロプロセッサ121は、当該エントリの過負荷フラグを1(ON)に設定する(S235)。稼働率が閾値未満である場合(S234:NO)、マイクロプロセッサ121は、当該エントリの過負荷を0(OFF)に設定する(S236)。
図25を参照して、論理ボリュームのオーナ権の現在MPPK120から他のMPPK120への移動を説明する。オーナ権が移動する前に、現在MPPK120は、ローカルメモリ122に格納するキャッシュディレクトリ310における未反映部分を、共有メモリ132に反映する。これにより、次のMPPK120が、最新のキャッシュディレクトリを使用してキャッシュ制御することができ、キャッシュヒット率を高めることができる。
現在オーナMPPKのマイクロプロセッサ121は、キャッシュディレクトリ310において検索する対象を、オーナ件を移動する論理ボリュームの論理アドレスの0番に設定する(S242)。マイクロプロセッサ121は、そのアドレスを、キャッシュディレクトリ310で検索する(S243)。
そのアドレスが、共有メモリ未反映フラグがONに設定されているディレクトリに存在する場合(S244:YES)、マイクロプロセッサ121は、その共有メモリ132における当該ディレクトリを更新し(S245)、ステップS246に進む。共有メモリ未反映フラグは、対象ディレクトリの更新が共有メモリ132に反映済みであるか否かを示すフラグであり、それがONである場合、対象ディレクトリの更新が共有メモリ132に未反映であることを示す。
上記アドレスが、共有メモリ未反映フラグがOFFに設定されているディレクトリに存在する場合(S244:NO)、マイクロプロセッサ121は、共有メモリ132上のそのディレクトリを更新することなく、ステップS246に進む。
ステップS246において、マイクロプロセッサ121は、当該ボリュームについてのキャッシュディレクトリ310の探索が終了したが否かを判定する。全てのアドレスの探索を終了している場合(S246:YES)、マイクロプロセッサ121はこの処理を終了する。未探索のアドレスが残っている場合(S246:NO)、マイクロプロセッサ121は対象アドレスを次の論理アドレスに変更し(S247)、ステップS243からステップS246を繰り返す。
第2実施形態
本実施形態は、ストレージ階層仮想化機能を有するストレージシステム10を説明する。本実施形態のストレージシステム10は、複数のプールボリューム(実ボリューム)を含むプールを構築する。プールは、ストレージシステム10内の性能の異なる複数のメディアを含み、アクセス性能によって複数の階層に階層化される。各階層は、1又は複数のプールボリュームで構成されている。
本実施形態は、ストレージ階層仮想化機能を有するストレージシステム10を説明する。本実施形態のストレージシステム10は、複数のプールボリューム(実ボリューム)を含むプールを構築する。プールは、ストレージシステム10内の性能の異なる複数のメディアを含み、アクセス性能によって複数の階層に階層化される。各階層は、1又は複数のプールボリュームで構成されている。
ストレージシステム10は、そのプールから構築した仮想ボリュームをホスト計算機180に提供する。ストレージシステム10は、プールを、特定容量のページ単位で管理する。各プールボリュームは複数ページに分割され、各ページにデータが格納される。ストレージシステム10は、仮想ボリュームに対するホスト計算機180からの書き込みに対して、プールから必要な容量の1又は複数ページを割り当てる。
ストレージシステム10は、ホスト計算機180により認識される仮想ボリューム401の容量を、仮想ボリュームに割り当てられている実容量よりも大きくすることができ、ホスト計算機180に割り当てられる容量を実現するために必要な実容量を、それよりも小さくすることができる(シンプロビジョニング)。
ストレージシステム10は、仮想ボリュームに対するホスト計算機180からのI/O負荷を分析し、I/O負荷の高いページを、性能の高い高価なメディアで構成されたリソースから成る上位階層に、そうでないページを性能の低い安価なメディアで構成されたリソースから成る下位階層に自動配置する。これにより、仮想ボリュームへのアクセス性能を維持しつつ、システムのコストを低減することができる。
以下において、第1実施形態との差異を主に説明する。図26は、本実施形態のローカルメモリ122が格納している情報を示している。ローカルメモリ122における制御情報は、第1実施形態で説明した情報に加え、ページ毎モニタ差分テーブル320を含む。図27は、本実施形態の共有メモリ132が格納するデータを示している。共有メモリ132の制御情報は、第1実施形態で説明した情報に加え、ダイナミックマッピングテーブル520及びページ毎モニタテーブル530を含む。
図28は、ダイナミックマッピングテーブル520の一例を示す。ダイナミックマッピングテーブル520は、各仮想ボリュームにおいて、アクセス数をカウントするエントリ(記憶領域のエントリ)を管理するテーブルである。例えば、1ページが、ダイナミックマッピングテーブル520の1エントリである。ここでは、この例を説明する。
ダイナミックマッピングテーブル520は、プール番号のカラム521、仮想ボリューム番号のカラム522、論理アドレスのカラム523、プールボリューム番号のカラム524、論理アドレスのカラム525、モニタ情報インデックス番号のカラム526を有する。プール番号及び仮想ボリューム番号は、それぞれ、ストレージシステム10内で、プールと仮想ボリュームを一意に識別する識別子である。モニタ情報インデックス番号は、ダイナミックマッピングテーブル520におけるエントリ識別子である。
論理アドレスのカラム523は、各エントリの仮想ボリュームにおける開始論理アドレスを格納する。論理アドレスのカラム525は、各エントリのプールボリュームにおける開始論理アドレスを格納する。本例においてエントリの容量は一定であるが、一定でなくともよい。
図29は、ページ毎モニタテーブル530の一例を示す。ページ毎モニタテーブル530は、各ページのI/O数を管理する。マイクロプロセッサ121は、このテーブル530を参照して、当該ページのデータを格納する階層を決定する。
ページ毎モニタテーブル530は、モニタ情報インデックス番号のカラム531、I/Oカウンタ(現在)のカラム532、I/Oカウンタ(前回)のカラム533を有する。マイクロプロセッサ121は、ページへのアクセスを監視し、所定の監視期間(例えば1秒)内のI/O数(アクセス数)をカウントして、ページ毎モニタテーブル530に格納する。監視期間は連続して続く。
I/Oカウンタ(前回)のカラム533は、前回監視期間におけるI/O数を格納する。I/Oカウンタ(現在)のカラム532は、現在監視期間におけるI/O数を格納する。マイクロプロセッサ121は、現在監視期間内において、I/Oカウンタ(現在)のカラム532の値を繰り返し更新する。
本構成において、マイクロプロセッサ121は、ローカルメモリ122におけるページ毎モニタ差分テーブル320を使用してI/O数をカウントし、その値の更新を共有メモリ132におけるページ毎モニタテーブル530に反映する。この点は後述する。現在監視期間が終了すると、マイクロプロセッサ121は、前回監視期間におけるI/O数を、現在監視期間におけるI/O数のフィールドに移す。
図30は、ページ毎モニタ差分テーブル320の一例を示す。ページ毎モニタ差分テーブル320は、各ページへのアクセスをカウントするために使用される。ページ毎モニタ差分テーブル320は、モニタ情報インデックス番号のカラム321及びI/O差分カウンタのカラム322を有する。マイクロプロセッサ121は、各ページのアクセスを監視し、アクセスがあると、I/O差分カウンタのカラム322の該当フィールドの値をインクリメントする。
I/O差分カウンタのカラム322のフィールドの値が規定値(本例で最大値)に達すると、マイクロプロセッサ121は、ページ毎モニタテーブル530の対応エントリのI/Oカウンタ(現在)のカラム532のフィールドの値にその値を加算して、当該フィールを更新する。マイクロプロセッサ121は、最大値に達したI/O差分カウンタのカラム322のフィールドの値を初期値(0値)に戻す。I/O差分カウンタは、このようにページ毎モニタテーブル530の前回更新からの、I/O数の差分を示す。
図30及び図29に示すように、ページ毎モニタ差分テーブル320のI/O差分カウンタのカラム322は8ビットデータを格納し、ページ毎モニタテーブル530のI/Oカウンタ(現在)のカラム532は、8ビットよりも大きい32ビットのデータを格納する。
図31のフローチャートを参照して、上記ストレージ階層仮想化機能モニタ更新の具体的な方法を説明する。マイクロプロセッサ121は、ページへのアクセスを受けると、ページ毎モニタ差分テーブル320におけるそのページのI/O差分カウンタをインクリメントする(S302)。
マイクロプロセッサ121は、当該論理ボリューム性能ブースト機能がONであるか判定する(S303)。このステップは、図16におけるステップS122と同様である。ボリューム性能ブースト機能がOFFである場合(S303:NO)、マイクロプロセッサ121は、ステップS307に進む。
ボリューム性能ブースト機能がONである場合(S303:YES)、マイクロプロセッサ121は、自身の過負荷フラグがONであるか否かを判定する(S304)。このステップは、図16におけるステップS125と同様である。
過負荷フラグがONである場合(S304:YES)、マイクロプロセッサ121は、ステップS306に進む。過負荷フラグがOFFである場合(S304:NO)、マイクロプロセッサ121は、アクセス先のCMPK130の過負荷フラグがONであるか否かを判定する(S305)。このステップは、図16におけるステップS126と同様である。
CMPK130の過負荷フラグがOFFである場合(S305:NO)、マイクロプロセッサ121は、ステップS307に進む。CMPK130の過負荷フラグがONである場合(S305:YES)、マイクロプロセッサ121は、ステップS306に進む。ステップS306において、マイクロプロセッサ121は、ページ毎モニタ差分テーブル320の上記I/O差分カウンタの値が、最大値であるかを判定する。
I/O差分カウンタの値が最大値未満である場合(S306:NO)、このフローは終了する。I/O差分カウンタの値が最大値である場合(S306:YES)、マイクロプロセッサ121は、ページ毎モニタテーブル530の対応エントリのI/Oカウンタ(現在)のカラム532のフィールドの値にその最大値を加算して、当該フィールを更新する(S307)。マイクロプロセッサ121は、さらに、最大値に達したI/O差分カウンタのカラム322のフィールドの値を0値(初期値)に設定する(S308)。
本例は、マイクロプロセッサ121及びCMPK130の負荷が小さい場合、ローカルメモリ122におけるI/O差分カウンタの更新に同期して、共有メモリ132のI/Oカウンタを更新する。これらの負荷が小さいためシステム性能の低下が問題とならず、障害発生時に正確なI/Oカウント数を得ることができる。これら二つのデバイスの負荷条件は省略してもよく、双方の成立をI/Oカウンタ値の非同期更新の条件としてもよい。これらと異なる条件を使用してもよい。
上述のように、マイクロプロセッサ121は、ローカルメモリ122内のカウンタでページのI/O数をカウントし、その値が規定値に達すると、その規定値を共有メモリ132のカウンタに反映する。これにより、マイクロプロセッサ121とCMPK130との間の通信によるオーバヘッドを低減する。
ページ毎モニタ差分テーブル320のカウンタのビット数が、ページ毎モニタテーブル530のカウンタのビット数より小さい。このように、ローカルメモリ上で差分をカウントすることで、I/O数カウントのためにローカルメモリ122で必要される容量を削減することができる。MPPK120の障害時には、所定期間のI/Oカウント数の情報が失われるが、ページI/Oカウント数にI/Oカウント数の差分の反映がなされないだけであるので、ページのI/O解析に実質的な影響を与えることはない。
なお、本実施形態の性能モニタ方法は、階層仮想化機能のモニタに限らず、そのほかの性能モニタにも適用可能である。例えば、HDDやSSDなどのドライブのモニタに適用できる。上記例は、カウンタ数が最大値に達するとカウンタを初期化するが、初期化においてI/Oをカウントしてもよい。マイクロプロセッサ121は、例えば、I/O差分カウンタの初期化と共に、その最大数の1を加えた値をページ毎モニタテーブル530の
I/Oカウンタの値に加算する。これは、他の実施形態におけるカウント方法で同様である。
I/Oカウンタの値に加算する。これは、他の実施形態におけるカウント方法で同様である。
第3実施形態
以下において、本発明を非同期リモートコピーに適用した例を説明する。以下においては、第1実施形態及び第2実施形態との差異を主に説明する。図32は、本実施形態の計算機システムの構成を模式的に示すブロック図である。本実施形態のストレージシステムは、第1ストレージシステム10A及び第2ストレージシステム10Bを含む。典型的には、第1ストレージシステム10A及び第2ストレージシステム10Bは異なるサイトに設置されており、データネットワーク(例えばSAN)190A、データネットワーク(例えばSAN)190B及び広域ネットワークを介して通信可能に接続する。
以下において、本発明を非同期リモートコピーに適用した例を説明する。以下においては、第1実施形態及び第2実施形態との差異を主に説明する。図32は、本実施形態の計算機システムの構成を模式的に示すブロック図である。本実施形態のストレージシステムは、第1ストレージシステム10A及び第2ストレージシステム10Bを含む。典型的には、第1ストレージシステム10A及び第2ストレージシステム10Bは異なるサイトに設置されており、データネットワーク(例えばSAN)190A、データネットワーク(例えばSAN)190B及び広域ネットワークを介して通信可能に接続する。
第1ストレージシステム10A及び第2ストレージシステム10Bは、図1を参照して説明したハードウェア構成と同様の構成を有する。具体的には、第1ストレージシステム10Aは、複数のFEPK110A、複数のMPPK120A、複数のCMPK130A、複数のBEPK140Aを含み、これらは内部ネットワーク150Aを介して接続する。第1管理計算機20Aは、第1ストレージシステム10Aを管理する。
同様に、第2ストレージシステム10Bは、複数のFEPK110B、複数のMPPK120B、複数のCMPK130B、複数のBEPK140Bを含み、これらは内部ネットワーク150Bを介して接続する。第2管理計算機20Bは、第2ストレージシステム10Aを管理する。
第1ストレージシステム10A及び第2ストレージシステム10Bは、非同期リモードコピー機能を有する。第1ストレージシステム10Aのプライマリボリューム(PVOL)171Pと、第2ストレージシステム10Bのセカンダリボリューム(SVOL)171Sが、コピーペアを構成する。ボリュームは、典型的には、1又は複数のRAIDグループにおける1又は複数の記憶領域からなる。
プライマリボリューム171Pがコピー元ボリューム、セカンダリボリューム171Sがコピー先ボリュームであり、プライマリボリューム171Pのデータが、セカンダリボリューム171Sにコピーされる。プライマリボリューム171Pへデータ書き込み順序と、セカンダリボリューム171Sへのデータコピー順序は一致する(順序保障)。
同期コピーは、ホスト計算機180がプライマリボリューム171Pに書き込みをおこなった場合、セカンダリボリューム171Sへのコピーの完了後(典型的にはキャッシュメモリへの書き込み後)に、ホスト計算機180にI/O成功を通知する。これに対して、非同期コピーは、プライマリボリューム171Pへの書き込み完了後、セカンダリボリューム171Sへのコピー完了前に、ホスト計算機180にI/O成功を通知する。
本実施形態のストレージシステムは、プライマリボリューム171Pからセカンダリボリューム171Sへのコピー用のバッファとして、ジャーナルボリューム(JVOL)171JP、171JSを使用する。第1ストレージシステム10Aにおいて、プライマリボリューム171Pとジャーナルボリューム171JPとがグループ化されている。第2ストレージシステム10Bにおいて、セカンダリボリューム171Sとジャーナルボリューム171JSとがグループ化されている。
プライマリボリューム171Pにおける更新データは、ジャーナルボリューム171JP、171JSを介して、セカンダリボリューム171Sに送信される。これにより、リモートコピーのデータ転送において、性能が不安定な広域ネットワークを使用することができる。
図33を参照して、ホスト計算機180からのプライマリボリューム171Pへのデータ書き込み及びその更新データのセカンダリボリューム171Sへのコピーの流れを説明する。FEPK110Aは、ホスト計算機180からのライトコマンド及びライトデータを受信する。MPPK120(のマイクロプロセッサ121)は、ライトコマンドを解析し、FEPK110A及びBEPK140A(不図示)に、プライマリボリューム171P及びジャーナルボリューム171JPにライトデータを書き込むことを指示する。
具体的には、MPPK120は、FEPK110A及びBEPK140Aにライトデータを指定した次の転送先に転送することを指示する。最終的な転送先はプライマリボリューム171P及びジャーナルボリューム171JPであり、ライトデータは、プライマリボリューム171P及びジャーナルボリューム171JPのそれぞれに書き込まれる。ジャーナルボリューム171JPへの書き込み順序は、プライマリボリューム171Pへの書き込み順序と一致する。
本図において、ライトデータのキャッシュメモリ131への書き込みの説明は省略されている、又はライトデータはキャッシュメモリ131を介することなくボリュームに格納される。MPPK120は、ライトデータのキャッシュメモリ131への書き込み完了又はボリュームへの書き込み完了に応答して、ホスト計算機180に書き込み完了を通知する。
MPPK120は、ジャーナルボリューム171JPの更新に従って、ジャーナルボリューム171JPの管理データを更新する。図33に示すように、ジャーナルボリューム171JPは、管理領域611とデータ領域612を有し、それぞれが、ジャーナルボリューム管理データ及び更新データを格納する。ジャーナルボリューム管理データはジャーナルボリューム外に格納されていてもよい。
ジャーナルボリューム管理データは、シーケンス番号601及びポインタ602のペアを含む。これらの値のペアが、各ライトデータ(更新データ)に付与される。本図の例において、シーケンス番号601は、1からnの値のいずれかの値であり、データ領域に格納された順に、各ライトデータに昇順で付与される。シーケンス番号は循環的であり、nが付与されたライトデータの次のデータには1が付与される。ポインタ602は、データ領域612において対応するシーケンス番号が付与されているライトデータが格納されている位置(アドレス)を示す。
管理領域611は、シーケンス番号601とポインタ602のペアが書き込まれている領域と、未使用領域604を含む。未使用領域604は初期値を格納しており、本例において初期値は0値である。マイクロプロセッサ121は、データ領域612に格納されている更新データを第2ストレージシステム10Bに転送すると、そのデータのシーケンス番号601とポインタ602を格納している領域の値を初期値(無効値)に更新する。更新データの転送順序は、更新データのジャーナルボリューム171JPへの書き込み順序と一致する。
管理領域611において、シーケンス番号601とポインタ602の次の新たなペアを書き込む位置は決まっており、例えば、ペアは、管理領域611におけるアドレス昇順で書き込まれる。終点アドレスに書き込まれているペアの次のペアは開始アドレスに書き込まれる。
シーケンス番号601とポインタ602とを格納する領域(ジャーナル領域とも呼ぶ)において、初期値を格納している領域の直前位置のシーケンス番号601、つまりジャーナル領域の先頭のシーケンス番号が最も新しい更新データを示す。一方、初期値を格納している領域の直後位置のシーケンス番号601、つまりジャーナル領域の最後尾のシーケンス番号が最も古い更新データを示す。
上述のように、第1ストレージシステム10AのMPPK120Aは、ジャーナルボリューム171JPに格納されている更新データを、更新順(書き込み順)で、第2ストレージシステム10Bに転送する。第2ストレージシステム10BのMPPK120Bは、そのFEPK110Bが受信した更新データを、順次、ジャーナルボリューム171JSに格納する。本図においてキャッシュメモリ131へのキャッシングが省略されている。MPPK120Bは、規定のタイミングで、ジャーナルボリューム171JPに格納されている更新データを、更新順序でセカンダリボリューム171Sに書き込む。
第2ストレージシステム10Bのジャーナルボリューム171JSは、ジャーナルボリューム171JPと同様に、管理領域とデータ領域とを含み、それぞれが、ジャーナル管理データと更新データを格納する。
MPPK120Bは、更新データをジャーナルボリューム171JSに格納してから、新たなシーケンス番号及びポインタを書き込み、管理データを更新する。管理データの構成はジャーナルボリューム171JPと同様である。ジャーナルボリューム171JS内の更新データがセカンダリボリューム171Sに書き込まれると、MPPK120Bは、対応するシーケンス番号とポインタの値を初期値(無効値)に変更する。
図34は、第1ストレージシステム10Aにおけるローカルメモリ122が格納している制御情報を示している。本実施形態において、LM非同期リモートコピーシーケンス番号管理テーブル330が、ローカルメモリ122内に格納されている。図35は、第1ストレージシステム10Aにおける共有メモリ132が格納している制御情報を示している。本実施形態において、非同期リモートコピー管理テーブル540及びSM非同期リモートコピーシーケンス番号管理テーブル530が格納されている。
非同期リモートコピー管理テーブル540は、ペア管理のための管理情報を格納している。具体的には、プライマリボリュームとセカンダリボリュームの各ペアを管理する管理情報、リモートコピーのパスの情報、そして、プライマリボリューム及びセカンダリボリュームのそれぞれとグループ化されるジャーナルボリュームの情報を含む。マイクロプロセッサ121は、この管理テーブル540を参照して、リモートコピーの実行を制御する。
図36は、LM非同期リモートコピーシーケンス番号管理テーブル330の一例を示す。LM非同期リモートコピーシーケンス番号管理テーブル330は、ローカルメモリ122において、各ジャーナルボリュームの最新シーケンス番号を管理する。MPPK120Aのマイクロプロセッサ121は、LM非同期リモートコピーシーケンス番号管理テーブル330を参照して、新たにジャーナルボリューム171JSに書き込まれる更新データのシーケンス番号を決定することができる。
LM非同期リモートコピーシーケンス番号管理テーブル330は、JVOL番号のカラム331、シーケンス番号のカラム332、そしてシーケンス番号差分のカラム333を有する。JVOL番号は、第1ストレージシステム10Aにおけるジャーナルボリュームの識別子である。シーケンス番号のカラム332は、JVOLにおける先頭シーケンス番号を示すデータを格納する。シーケンス番号差分については後述する。
図37は、SM非同期リモートコピーシーケンス番号管理テーブル530の一例を示す。SM非同期リモートコピーシーケンス番号管理テーブル530は、共有メモリ132において、各ジャーナルボリュームのシーケンス番号を管理する。SM非同期リモートコピーシーケンス番号管理テーブル530は、JVOL番号のカラム531及びシーケンス番号のカラム532を有する。
シーケンス番号のカラム532は、JVOLにおける先頭シーケンス番号を示すデータを格納する。1エントリにおけるシーケンス番号のカラム532の値は、ローカルメモリ122において対応するシーケンス番号のカラム332の値一致する又は異なる(図36及び図37の例では全てのエントリの値が異なる)。それらの更新は、同期又は非同期である。
図36及び図37に示すように、各JVOLのエントリにおいて、シーケンス番号差分カラム333のフィールドの値は、LM非同期リモートコピーシーケンス番号管理テーブル330のシーケンス番号カラム332の対応フィールドの値と、SM非同期リモートコピーシーケンス番号管理テーブル530のシーケンス番号カラム532の対応フィールドの値との差分である。
このように、シーケンス番号差分カラム333のフィールドの値は、シーケンス番号カラム532における対応フィールドの前回更新からのJVOLにおけるシーケンス番号の更新を示し、共有メモリ133に格納されている前回更新時の先頭シーケンス番号と最新の先頭シーケンス番号との差分を示す。
MPPK120Aのマイクロプロセッサ121は、ジャーナルボリュームに更新データの書き込みがあるたびに、そのジャーナルボリュームのエントリにおいて、シーケンス番号カラム332及びシーケンス番号差分カラム333の値をインクリメントする。シーケンス番号カラム332の各フィールドは、対応するジャーナルボリュームの最新のシーケンス番号(最後に割り当てたシーケンス番号)を示している。シーケンス番号カラム332の各フィールドの値は、最大値からインクリメントされると最小値に戻る。
シーケンス番号差分カラム333のビット数(最大値)は、シーケンス番号カラム332のビット数(最大値)よりも小さい。マイクロプロセッサ121は、シーケンス番号差分カラム333のフィールドの値が最大値に達すると、LM非同期リモートコピーシーケンス番号管理テーブル330における当該エントリの更新を、SM非同期リモートコピーシーケンス番号管理テーブル530の対応エントリに反映する。
具体的には、SM非同期リモートコピーシーケンス番号管理テーブル530における対応エントリのシーケンス番号を、LM非同期リモートコピーシーケンス番号管理テーブル330の対応エントリのシーケンス番号に一致させる。SM非同期リモートコピーシーケンス番号管理テーブル530における更新値は、更新前の値にシーケンス番号差分カラム333における対応フィールドの値を加算した値である。
このように、ローカルメモリ122においてシーケンス番号の最大数よりも小さい所定数までシーケンス番号の変化をカウントし、ローカルメモリ122におけるシーケンス番号の変化を共有メモリ132のシーケンス番号に反映することで、マイクロプロセッサ121によるCMPK130へのアクセス回数を低減し、それらの間の通信によるマイクロプロセッサ121及びCMPK130の負荷を低減することができる。
図38のフローチャートを参照して、本実施形態の非同期リモートコピーシーケンス番号の更新を説明する。この処理は、ジャーナルボリューム171JPの担当MPPK120Aのマイクロプロセッサ121が実行する。本形態において、グループを構成するプライマリボリューム171Pとジャーナルボリューム171JPとは、同一のMPPK120に担当される。
マイクロプロセッサ121は、ジャーナルボリューム171JSへの更新データ書き込みがあると、LM非同期リモートコピーシーケンス番号管理テーブル330を参照して、当該ジャーナルボリューム171JSの管理領域611に、新たなシーケンス番号及びポインタを追加する。さらに、マイクロプロセッサ121は、LM非同期リモートコピーシーケンス番号管理テーブル330において、当該ジャーナルボリューム171JSのエントリのシーケンス番号及びシーケンス番号差分の値を更新する(本例においてそれら値をインクリメントする)(S412)。
マイクロプロセッサ121は、当該ボリュームの性能ブースト機能がONであるか判定する(S413)。性能ブースト機能がOFFである場合(S413:NO)、マイクロプロセッサ121は、ステップS417に進む。性能ブースト機能がONである場合(S413:YES)、マイクロプロセッサ121は、自身の過負荷フラグがONであるか判定する(S414)。
過負荷フラグがONである場合(S414:YES)、マイクロプロセッサ121は、ステップS416に進む。過負荷フラグがOFFである場合(S414:NO)、マイクロプロセッサ121は、アクセス先のCMPKの過負荷フラグがONであるか判定する(S415)。
CMPKの過負荷フラグがOFFである場合(S415:NO)、マイクロプロセッサ121は、ステップS417に進む。CMPKの過負荷フラグがONである場合(S415:YES)、マイクロプロセッサ121は、ステップS416に進む。ステップS413からステップS415の詳細は、第2実施形態で既に説明した通りである。マイクロプロセッサ121及び/又はCMPK130の負荷に応じて制御情報の更新反映を制御することで、システム性能の低下を抑えつつ、共有メモリの更新をより適切に行うことができる。
ステップS416において、マイクロプロセッサ121は、LM非同期リモートコピーシーケンス番号管理テーブル330において、当該ジャーナルボリューム171JSのシーケンス番号差分が、最大値であるか判定する。その値が最大値ではない場合(S416:NO)、マイクロプロセッサ121は、本処理を終了する。
上記値が最大値である場合(S416:YES)、マイクロプロセッサ121は、SM非同期リモートコピーシーケンス番号管理テーブル530において、当該ジャーナルボリューム171JSのシーケンス番号を更新する。具体的には、マイクロプロセッサ121は、現在のシーケンス番号の値にシーケンス番号差分の値を加算した値に更新する。ステップS417において、マイクロプロセッサ121は、最大値に達しているシーケンス番号差分のフィールドの値を0値に更新(初期化)する。
上記シーケン番号差分を使用した共有メモリ132におけるシーケンス番号の更新(性能ブースト機能)を使用しない場合、LM非同期リモートコピーシーケンス番号管理テーブル330及びSM非同期リモートコピーシーケンス番号管理テーブル530の更新は同期する。
MPPK120Aに障害が発生した場合、ローカルメモリ122上のLM非同期リモートコピーシーケンス番号管理テーブル330が失われる。上述のように、このテーブル330は、各ジャーナルボリュームの最新の先頭シーケンス番号を示す情報を有している。正常なリモートコピーを行うためには、ジャーナル管理データにおける最新の先頭シーケンス番号が必要である。
本実施形態の第1ストレージシステム10は、障害発生したMPPK120Aと異なるMPPK120Aが、ジャーナルボリューム171JSの管理領域611を参照して、ジャーナル領域の先頭を示す最新の先頭シーケンス番号を確認する。図39のフローチャートを参照して、MPPK障害発生時の非同期リモートコピーシーケンス番号回復処理を説明する。
担当を引き継いだ正常なMPPK120Aのマイクロプロセッサ121は、共有メモリ123に格納されているSM非同期リモートコピーシーケンス番号管理テーブル530から、一つのジャーナルボリュームを選択し、そのシーケンス番号を読み出す(S422)。マイクロプロセッサ121は、そのジャーナルボリュームから、上記シーケンス番号の領域の次のシーケンス番号領域からデータを読み出す(S423)。
マイクロプロセッサ121は、ステップS423で読み出したシーケンス番号が0値(無効値)であるか判定する(S424)。そのシーケンス番号が0値ではない場合(S424:NO)、マイクロプロセッサ121は、その読みだしたシーケンス番号をテンポラル領域(典型的にそのローカルメモリ122内の領域)に格納する(S425)。
そのシーケンス番号が0値である場合(S424:YES)、その領域は未使用領域であり、マイクロプロセッサ121は、テンポラル領域に格納されているシーケンス番号で、SM非同期リモートコピーシーケンス番号管理テーブル530における対応ジャーナルボリュームのシーケンス番号を更新する。SM非同期リモートコピーシーケンス番号管理テーブル530のシーケンス番号が最新の先頭シーケンス番号である場合、更新は不要である。マイクロプロセッサ121は、SM非同期リモートコピーシーケンス番号管理テーブル530に格納されている全てのジャーナルボリュームについて、上記更新を行う。
上記フローにより、SM非同期リモートコピーシーケンス番号管理テーブル530が最新情報を含むように更新され、他のMPPK120Aが、障害が起きたMPPK120Aの担当を引き継ぎ、正常な非同期リモートコピーを続けることができる。
上記シーケンス番号管理テーブル330、530が格納する値は一例であって、それらは、先頭シーケンス番号又はそれらテーブル330、350の先頭シーケンス番号間の差分を示すことができれば、どのような値を格納していてもよい。
第4実施形態
以下において、本発明を非同期ローカルコピーに適用した例を説明する。以下においては、上記他の実施形態と異なる点を主に説明する。図40は、本実施形態のローカルメモリ122に格納されている制御情報を示している。ローカルメモリ122には、LMローカルコピー差分管理テーブル340及びLMローカルコピー差分領域間引き動作管理テーブル350が格納されている。
以下において、本発明を非同期ローカルコピーに適用した例を説明する。以下においては、上記他の実施形態と異なる点を主に説明する。図40は、本実施形態のローカルメモリ122に格納されている制御情報を示している。ローカルメモリ122には、LMローカルコピー差分管理テーブル340及びLMローカルコピー差分領域間引き動作管理テーブル350が格納されている。
図41は、本実施形態の共有メモリ132内の制御情報を示している。SMローカルコピー差分管理テーブル560、SMローカルコピー差分領域間引き動作管理テーブル570、ローカルコピー管理テーブル580が、共有メモリ132における制御情報に含まれている。複数のMPPK120が、共有メモリ132内テーブル560、570、580を参照可能である。特に、SMローカルコピー差分管理テーブル560及びSMローカルコピー差分領域間引き動作管理テーブル570は、MPPK120の障害時に、他のMPPK120により参照される。
ローカルコピー管理テーブル580は、プライマリボリュームとセカンダリボリュームの各ペアを管理する管理情報を含む。例えば、ペアを構成するプライマリボリュームとセカンダリボリュームの識別情報、それらのアドレス情報及びコピーポリシの情報を含む。マイクロプロセッサ121は、ローカルコピー管理テーブル580を参照して、ローカルコピーの実行を制御する。
共有メモリ132内のSMローカルコピー差分管理テーブル560及びSMローカルコピー差分領域間引き動作管理テーブル570は、それぞれ、ローカルメモリ122内のLMローカルコピー差分管理テーブル340及びLMローカルコピー差分領域間引き動作管理テーブル350のバックアップである。マイクロプロセッサ121は、予め定められた規則に従って、ローカルメモリ122でのテーブル340、350の更新を、共有メモリ132のテーブル560、570に反映する。
図42は、LMローカルコピー差分管理テーブル340の一例を示す。LMローカルコピー差分管理テーブル340は、ボリューム番号のカラム341、論理アドレスのカラム342、差分有ビット列のカラム343を有する。ボリューム番号は、ストレージシステム内でのプライマリボリュームの識別子である。各エントリは、ボリューム内の所定広さの記憶領域(アドレス範囲)を示している。論理アドレスは、各エントリの記憶領域の開始論理アドレスを示す。本例において、エントリの記憶領域の広さは共通である。
差分有ビット列は、そのエントリの記憶領域において、プライマリボリュームとセカンダリボリュームとの間にデータの相違が存在するか否か、つまり、プライマリボリュームでの更新がセカンダリボリュームに反映されているか否かを示す。
差分有ビット列の各ビット(差分有ビットとも呼ぶ)は、エントリの記憶領域における各部分領域のデータがプライマリボリュームとセカンダリボリュームとの間で異なるか否かを示す。本例では、各ビットに対応する領域の広さは共通である。本例において、差分有ビット列のビットが1である場合、その領域のデータは、プライマリボリュームとセカンダリボリュームとで異なることを示す。
マイクロプロセッサ121は、所定のタイミングで、プライマリボリュームの更新データをセカンダリボリュームにコピーする(非同期ローカルコピー)。非同期ローカルコピーにおいて、マイクロプロセッサ121は、LMローカルコピー差分管理テーブル340を参照し、プライマリボリュームにおける差分有ビットが1である領域のデータを、セカンダリボリュームにコピーする。
この非同期ローカルコピーに応答して、マイクロプロセッサ121は、LMローカルコピー差分管理テーブル340において、更新がセカンダリボリュームに反映された領域の差分有ビットを0値に更新する。本例において、一回のコピーオペレーションにおいて、プライマリボリュームの全ての更新データが、セカンダリボリュームにコピーされる。
図43は、SMローカルコピー差分管理テーブル560の一例を示す。SMローカルコピー差分管理テーブル560は、LMローカルコピー差分管理テーブル340のバックアップテーブルであり、LMローカルコピー差分管理テーブル340と同一の構成を有する。具体的には、ボリューム番号のカラム561、論理アドレスのカラム562、差分有ビット列のカラム563を有する。
マイクロプロセッサ121は、所定規則に従って、LMローカルコピー差分管理テーブル340における更新を、SMローカルコピー差分管理テーブル560にコピーする。本例において、プライマリボリュームからセカンダリボリュームへの非同期ローカルコピーによるLMローカルコピー差分管理テーブル340の更新とSMローカルコピー差分管理テーブル560更新は同期する。プライマリボリュームのへのデータライトによる更新に対するSMローカルコピー差分管理テーブル560の更新については後述する。
図44は、LMローカルコピー差分領域間引き動作管理テーブル350の一例を示す。LMローカルコピー差分領域間引き動作管理テーブル350は、ボリューム番号のカラム351、論理アドレスのカラム352、間引き中ビット列のカラム353を有する。各エントリは、ボリューム内の所定広さの記憶領域(アドレス範囲)を示している。
論理アドレスは、各エントリの記憶領域の開始論理アドレスを示す。本例において、エントリの記憶領域の広さは共通である。好ましくは、LMローカルコピー差分領域間引き動作管理テーブル350におけるエントリの記憶領域は、LMローカルコピー差分管理テーブル340のエントリの記憶領域よりも広い。
間引き中ビット列は、LMローカルコピー差分管理テーブル340における差分有ビット列の更新を、LMローカルコピー差分管理テーブル340の対応する差分有ビット列に反映するか否かを示す。上述のように、LMローカルコピー差分領域間引き動作管理テーブル350において、間引き中ビット列は、論理ボリューム内の記憶領域に関連づけられている。
間引き中ビット列の各ビット(間引き中ビットとも呼ぶ)は、その間引き中ビット列に関連付けられている記憶領域の部分領域に関連付けられている。間引き中ビット列の各ビットは、それが関連づけられている部分領域を介して、1又は複数の差分有ビットに関連づけられる。
好ましい本例において、間引き中ビットは複数の差分有ビットに関連づけられている。また、LMローカルコピー差分領域間引き動作管理テーブル350におけるエントリの記憶領域(アドレス範囲)は、LMローカルコピー差分管理テーブル340におけるエントリの記憶領域(アドレス範囲)よりも広い。間引きビット列のビット数は、差分有ビット列のビット数と同一又は異なる(図43、図44の例において同一)。
上述のように、LMローカルコピー差分管理テーブル340において、各差分有ビットは、記憶領域に関連づけられている。間引き中ビットに関連づけられている記憶領域の少なくとも一部が差分有ビットの記憶領域と一致する場合、その間引き中ビットはその差分有ビットに関連づけられている。
間引き中ビットが1である場合、ローカルメモリ122においてそれに関連づけられている差分有ビットの、プライマリボリュームの更新(データ書き込み)に応答した更新は、共有メモリ132における差分有ビットに反映されない。具体的には、プライマリボリュームへのライトコマンドの受信に応答して、マイクロプロセッサ121は、LMローカルコピー差分領域間引き動作管理テーブル350において、ライトコマンドが指示する領域の間引き中ビットを参照する。
間引き中ビットが1である場合、マイクロプロセッサ121は、LMローカルコピー差分管理テーブル340において対応する差分有ビットの更新を、SMローカルコピー差分管理テーブル560に反映しない。これにより、MPPK120とCMPK130との間の通信によるMPPK120とCMPK130の負荷を低減する。
図45は、SMローカルコピー差分領域間引き動作管理テーブル570の一例を示す。SMローカルコピー差分領域間引き動作管理テーブル570は、LMローカルコピー差分領域間引き動作管理テーブル350のバックアップテーブルであり、それと同じ構成を有する。具体的には、ボリューム番号のカラム571、論理アドレスのカラム572、間引き中ビットのカラム573を有する。マイクロプロセッサ121は、LMローカルコピー差分領域間引き動作管理テーブル350の更新に同期して、SMローカルコピー差分領域間引き動作管理テーブル570を更新する。
図46のフローチャートを参照して、非同期ローカルコピー差分管理情報の更新を説明する。プライマリボリュームにデータが書き込まれると、マイクロプロセッサ121は、LMローカルコピー差分管理テーブル340を更新する(S502)。具体的には、プライマリボリュームにおいて更新された領域に関連づけられている差分有ビットを更新する。
マイクロプロセッサ121は、当該ボリュームの性能ブースト機能がONであるか判定する(S503)。性能ブースト機能がOFFである場合(S503:NO)、マイクロプロセッサ121は、ステップS509に進み、SMローカルコピー差分管理テーブル560を更新する(同期更新)。性能ブースト機能がONである場合(S503:YES)、マイクロプロセッサ121は、自身の過負荷フラグがONであるか判定する(S504)。
過負荷フラグがONである場合(S504:YES)、マイクロプロセッサ121は、ステップS506に進む。過負荷フラグがOFFである場合(S504:NO)、マイクロプロセッサ121は、アクセス先のCMPKの過負荷フラグがONであるか判定する(S505)。
CMPKの過負荷フラグがOFFである場合(S505:NO)、マイクロプロセッサ121は、ステップS509に進み、SMローカルコピー差分管理テーブル560を更新する。CMPKの過負荷フラグがONである場合(S505:YES)、マイクロプロセッサ121は、ステップS506に進む。ステップS503からステップS505の詳細は、第2実施形態で既に説明した通りであり、システム性能の低下を抑えつつ、共有メモリ132の制御情報を適切に更新する。
ステップS506において、マイクロプロセッサ121は、プライマリボリュームにおいて更新された領域が間引き中であるか判定する。具体的には、マイクロプロセッサ121は、LMローカルコピー差分領域間引き動作管理テーブル350を参照し、上記更新領域の各間引き中ビットを確認する。間引き中ビットが1である場合(S506:YES)、マイクロプロセッサ121は、SMローカルコピー差分管理テーブル560において、その間引き中ビットに対応する差分有ビットの更新を省略する。
間引き中ビットが0である場合(S506:YES)、マイクロプロセッサ121は、その間引き中ビットが関連づけられている領域の差分が閾値以上であるか判定する(S507)。具体的には、マイクロプロセッサ121は、LMローカルコピー差分管理テーブル340を参照し、当該間引き中ビットに対応する差分有ビットにおいて、1のビット数が閾値以上であるか判定する。この判定基準については、図47を参照して後述するMPPK障害時の処理において説明する。
差分が閾値未満である場合(S507:NO)、マイクロプロセッサ121は、SMローカルコピー差分管理テーブル560を更新する(S509)。差分が閾値以上である場合(S507:YES)、マイクロプロセッサ121は、LMローカルコピー差分領域間引き動作管理テーブル350及びSMローカルコピー差分領域間引き動作管理テーブル560を更新する(S508)。具体的には、マイクロプロセッサ121は、上記2つのテーブル350、560において、上記間引き中ビットを0から1に変更する。
次に、図47のフローチャートを参照して、MPPK120障害時における、ローカルコピー差分のコピーを説明する。MPPK120で障害発生した場合、他のMPPK120が、障害発生したMPPK120が担当していたコピーペアにおいて、プライマリボリュームからセカンダリボリュームへ、それらの差分をコピーする。これにより、コピーペアの同一性の確保し、その後の正常な非同期リモートコピーを実現する。
上記他のMPPK120におけるマイクロプロセッサ121は、SMローカルコピー差分領域間引き動作管理テーブル570を参照し(S512)、間引き中領域が残っているか否かを判定する(S513)。間引き中領域は、その間引き中ビットが1である領域である。間引き領域が残っていなければ(S513:NO)、このフローは終了する。間引き中領域が残っている場合(S513:YES)、マイクロプロセッサ121は、プライマリボリュームにおけるその領域のデータを、セカンダリボリュームにコピーする(S514)。
上述のように、共有メモリ132は、「1」の間引き中ビットに対応する最新の差分有ビット列を格納していない。そのため、MPPK120での障害発生時には、間引き中ビットが1(ON)である領域の全てデータを、プライマリボリュームからセカンダリボリュームにコピーする。これにより、セカンダリボリュームのデータをプライマリボリュームのデータに正確に一致させることができる。
図46のフローチャートを参照して説明したように、本例は、間引き中ビットに対応する差分有ビットの内の「1」のビットが閾値以上である場合に、間引き中ビットをON(1)に設定する。障害時には、対応する間引き中ビットがONである全てのデータをプライマリボリュームからセカンダリボリュームにコピーするため、要更新データが多い領域の更新を間引くことで、更新による負荷を低減すると共に障害時の処理を効率化することができる。
本実実施形態において、差分管理テーブル及び間引き動作管理テーブルの構成は一例であり、差分領域及び間引き中領域を示すことができれば、どのようなデータによりそれらを示してもよい。
図48は、第2実施形態から第4実施形態で使用可能な、性能ブースト機能設定のためのメニュー画面の例4800を示している。メニュー画面4800は、性能ブースト機能設定エリア4801、ボリューム毎性能ブースト機能設定エリア4802及び機能毎性能ブースト機能設定エリア4803含む。
管理者は、性能ブースト機能設定エリア4801における"ENABLE"又は"DISABLE"の一方を入力デバイス28で選択することで、ストレージシステム10の性能ブースト機能をイネーブル又はディセーブルすることができる。この設定が、性能ブースト機能有効化テーブル210に反映される。
ボリューム毎性能ブースト機能設定エリア4802は、各論理ボリュームの性能ブースト機能のイネーブル/ディセーブルを可能とする。管理者は、ボリューム毎性能ブースト機能設定エリア4802において、各論理ボリュームの性能ブースト機能のイネーブル/ディセーブルを入力デバイス28で選択することができる。この設定が、ボリューム毎性能ブースト機能有効化テーブル220に反映される。
機能毎性能ブースト機能設定エリア4803は、各性能ブースト機能のイネーブル/ディセーブルを可能とする。管理者は、機能毎性能ブースト機能設定エリア4803において、各機能のイネーブル/ディセーブルを入力デバイス28で選択することができる。この設定が、ストレージシステム10内の機能毎性能ブースト機能有効化テーブル(不図示)に反映される。システム、ボリュームそして機能のブースト機能の全てがイネーブルされている場合に、その性能ブースト機能がそのボリュームにおいて使用される。
第5実施形態
本実施形態において、スイッチにより結合した複数のストレージモジュールを含むストレージシステムに本発明を適用した例を説明する。本実施形態は、主に上記他の実施形態と異なる点を説明する。図49は、本実施形態の計算機システムの構成を模式的に示す。ストレージモジュール10C及びストレージモジュール10Dは、スイッチ198を含むモジュール間パス195(Xパスとも呼ぶ)により通信可能に接続されている。
本実施形態において、スイッチにより結合した複数のストレージモジュールを含むストレージシステムに本発明を適用した例を説明する。本実施形態は、主に上記他の実施形態と異なる点を説明する。図49は、本実施形態の計算機システムの構成を模式的に示す。ストレージモジュール10C及びストレージモジュール10Dは、スイッチ198を含むモジュール間パス195(Xパスとも呼ぶ)により通信可能に接続されている。
図49におけるストレージモジュール10C、10Dの構成は、図1を参照して説明したストレージシステム10の構成と同様である。本例においては、2つの結合したモジュールが一つのストレージシステムを構成するが、3以上のモジュールが一つのストレージシステムを構成してもよい。
ストレージモジュール10C及びストレージモジュール10Dを結合するXパス(スイッチ198)195は、内部ネットワーク150のパスと同様のパスとして機能し、一方のモジュールの任意のパッケージは、他方のモジュールの任意のパッケージ及びメディアと、Xパス195により通信することができる。また、ホスト計算機180は、いずれのストレージモジュールにもアクセスすることができる。
Xパスは、内部ネットワーク150よりも帯域が狭く、データ転送能力が低い。そのため、Xパスは、パッケージ間のデータ転送においてボトルネックとなりやすい。そのため、Xパスの負荷に基づいて性能ブースト機能のON/OFFを判定することで、ストレージシステムの性能の低下を小さくすることができる。
本実施形態のマイクロプロセッサ121は、性能ブースト機能のイネーブル/ディセーブル制御において、Xパス195の稼働率を参照する。これにより、複数のモジュールからなるストレージシステムにおいて適切にシステム性能を向上することができる。
図50は、本実施形態のローカルメモリ122が格納している制御情報を示している。図50において、Xパス稼働率テーブル360及びX稼働率閾値テーブル370がローカルメモリ122内に格納されている。図51は、Xパス稼働率テーブル360の一例を示す。図52は、Xパス稼働率閾値テーブル370の一例を示す。
Xパス稼働率テーブル360は、Xパスの稼働率を管理する。本例において、Xパス稼働率テーブル360は、Xパス番号のカラム361、稼働率のカラム361、そして過負荷判定フラグのカラム363を有する。Xパス番号は、システム内でXパスを一意に識別する識別子である。図51の例において、Xパス稼働率テーブル360は、複数のXパスを管理している。つまり、複数のXパスが2以上のストレージモジュールを結合している。複数のXパスは、同一又は異なるスイッチを通過する。
稼働率は、単位時間当たりのデータ転送時間である。Xパスの稼働率は、そのXパスが通るスイッチのコントローラが計算し、レジスタに格納する。マイクロプロセッサ121は、各Xパスの稼働率を、スイッチのレジスタから取得して、Xパス稼働率テーブル360に格納する。
マイクロプロセッサ121は、Xパス稼働率テーブル360の各エントリ稼働率と、予め定められているXパス稼働率閾値とを比較して、過負荷判定フラグの値を決定する。Xパス稼働率が閾値以上である場合、マイクロプロセッサ121は過負荷判定フラグを1に設定する。Xパス稼働率閾値は、Xパス稼働率閾値テーブル370のXパス稼働率閾値カラムに格納されている。例えば、Xパス稼働率閾値テーブル370は、ストレージシステム内の不揮発性記憶領域からロードされ、その値は管理者により設定される。
図53のフローチャートを参照して、Xパスの稼働率を考慮したデータキャッシングに関する制御情報の共有メモリ132における更新についての判定を説明する。基本的な部分は、第1実施形態と同様である。図53のフローチャートにおいて、ステップS607以外のステップは、第1実施形態における図16に示すフローチャートと同様であり、その説明を省略する。
ステップS607において、マイクロプロセッサ121は、Xパス稼働率テーブル360を参照し、共有メモリ132へのアクセスに使用するXパスの過負荷フラグが1(ON)であるは判定する。アクセスするCMPK130と使用するXパスとの関係を示す制御情報は、ローカルメモリ122内に格納されており、それにより、マイクロプロセッサ121は、使用するXパスを特定することができる。
過負荷フラグがONである場合(S607:YES)、マイクロプロセッサ121は、共有メモリ132の制御情報を更新しないことを決定する(S608)。過負荷フラグがOFF(0)である場合(S607:NO)、マイクロプロセッサ121は、共有メモリ132の制御情報を更新することを決定する(S608)。本例はデータキャッシング制御情報の更新判定においてXパスの稼働率を参照するが、他の実施形態で説明した他の判定処理も、Xパスの稼働率を参照することができる。
次に、図54のフローチャートを参照して、Xパス稼働率テーブル360におけるXパス稼働率の更新を説明する。典型的には、この処理は、定期的に、例えば1秒毎に実行される。マイクロプロセッサ121は、一つのXパス、一例としてXパス195を選択し、スイッチ198からそのXパス195の稼働率を取得する(S612)。
マイクロプロセッサ121は、取得した稼働率の値により、Xパス稼働率テーブル360の該当エントリの稼働率の値を更新する(S613)。マイクロプロセッサ121は、取得した稼働率の値が、Xパス稼働率閾値テーブル370におけるXパス稼働率閾値以上であるか判定する(S614)。稼働率が閾値以上である場合(S614:YES)、マイクロプロセッサ121は、Xパス稼働率テーブル360における当該エントリの過負荷フラグを1(ON)に設定する(S615)。
一方、稼働率が閾値未満である場合(S614:NO)、マイクロプロセッサ121は、Xパス稼働率テーブル360における当該エントリの過負荷フラグを0(OFF)に設定する(S616)。マイクロプロセッサ121は、全てのXパスの稼働率を更新したか判定し(S617)、全てのXパスについて判定している場合(S617:YES)にこのフローを終了し、未判定のXパスが残っている場合(S617:NO)には、残りのXパスから一つのXパスを選択して、このフローを繰り返す。
第6実施形態
本実施形態は、MPPK120が、複数の異なる種別のデバイスに分散している複数の共有メモリ領域にアクセス可能な構成を説明する。本実施形態において、上記他の実施形態と異なる点について主に説明する。
本実施形態は、MPPK120が、複数の異なる種別のデバイスに分散している複数の共有メモリ領域にアクセス可能な構成を説明する。本実施形態において、上記他の実施形態と異なる点について主に説明する。
図55は、本実施形態の計算機システムの構成を模式的に示している。ストレージシステム10において、複数の異なるデバイスに共有メモリ(記憶領域)が存在している。具体的には、CPMK130上の共有メモリ132の他、MPPK120上に共有メモリ124、そして記憶ドライブ170に共有メモリ178が存在している。MPPK120上に共有メモリ124の領域は、ローカルメモリ122内の記憶領域である。記憶ドライブ170上の共有メモリ178の領域は、記憶ドライブにおける不揮発性記憶媒体の記憶領域である。
図56は、本実施形態のローカルメモリ122が格納している制御情報を示している。図56において、MP稼働率テーブル380、MP稼働率閾値テーブル390、SM領域管理テーブル400がローカルメモリ122内に格納されている。
図57は、MP稼働率テーブル380の一例を示す。MP稼働率テーブル380は、MP番号のカラム381、稼働率のカラム382、過負荷判定フラグ1のカラム383、過負荷判定フラグ2のカラム384、稼働時間のカラム385を有する。過負荷判定フラグ2のカラム384以外のカラムは、図11に示すMP稼働率テーブル270と同様である。過負荷判定フラグ1のカラム383は、過負荷判定フラグのカラム273に相当する。
図58は、MP稼働率閾値テーブル390の一例を示す。MP稼働率閾値テーブル390は、MP稼働率閾値1のカラム391及びMP稼働率閾値2のカラム392を有する。MP稼働率閾値1の値は、MP稼働率閾値2の値より高い。MP稼働率閾値1は、図12に示すMP稼働率閾値に相当する。
図59は、SM領域管理テーブル400の一例を示す。SM領域管理テーブル400は、複数のデバイスに分散している共有メモリ領域を管理する。SM領域管理テーブル400は、種別のカラム401、番号のカラム402、先頭アドレスのカラム403、空き容量のカラム404を有する。「種別」は、共有メモリ領域が存在するデバイスの種別を示す。「番号」は、同一種別のデバイスにおける識別子である。「先頭アドレス」は、各デバイスにおける共有メモリ領域の先頭アドレスを示す。「空き容量」は、共有メモリ領域の空き容量である。
種別のカラム401、番号のカラム402、先頭アドレスのカラム403には、予め値が設定されている。マイクロプロセッサ121は、各デバイスのコントローラ(MPPKにおいてはマイクロプロセッサ121)から、共有メモリ領域の空き容量の値を取得し、それを空き容量のカラム404に格納する。
図60A及び60Bを参照して、データキャッシングに関する共有メモリ領域に格納された制御情報の更新についての判定を説明する。図60AのフローチャートにおけるステップS702からステップS707は、図16のフローチャートにおけるステップS122からステップS127までと同様である。ただし、ステップS706において、当該CMPK130の過負荷フラグがONである場合(S706:YES)、マイクロプロセッサは図60BにおけるステップS709に進む。
ステップS706において当該CMPK130の過負荷フラグがOFFである場合(S706:NO)又はステップS702において当該論理ボリュームの性能ブースト機能がOFFである場合(S702:NO)、マイクロプロセッサ121は、当該CMPK130の共有メモリの制御情報を更新すると決定する。
図60BにおけるステップS709において、マイクロプロセッサ121は、SM領域管理テーブル400を参照し、必要な空き共有メモリ領域を有するMPPK120が存在するか判定する。いずれかのMPPK120が必要な空き共有メモリ領域を有する場合(S709:YES)、マイクロプロセッサ121は、そのMPPK120の番号を特定し、キャッシング制御情報を当該MPPK120の共有メモリ124に格納し、その更新を行うことを決定する(S710)。このMPPK120は、マイクロプロセッサ121が実装されたMPPK120と異なるMPPKである。
必要な空き共有メモリ領域を有するMPPK120が存在しない場合(S709:NO)、マイクロプロセッサ121は、自身の過負荷フラグ2が1(ON)であるか判定する(S711)。過負荷フラグ2がONである場合(S711:YES)、マイクロプロセッサ121は、共有メモリ領域における制御情報の更新を行わないことを決定する(S716)。
過負荷フラグ2がOFFである場合(S711:NO)、マイクロプロセッサ121は、SM領域管理テーブル400を参照し、必要な空き共有メモリ領域を有するSSD RAIDグループが存在するか判定する(S712)。
いずれかのSSD RAIDグループが必要な空き共有メモリ領域を有する場合(S712:YES)、マイクロプロセッサ121は、当該SSD RAIDグループの番号を特定し、キャッシュ制御情報を当該SSD RAIDグループの共有メモリ領域に格納し、その更新を行うことを決定する(S713)。
必要な空き共有メモリ領域を有するSSD RAIDグループが存在しない場合(S712:NO)、マイクロプロセッサ121は、SM領域管理テーブル400を参照し、必要な空き共有メモリ領域を有するHDD RAIDグループが存在するか判定する(S714)。必要な空き共有メモリ領域を有するHDD RAIDグループが存在しない場合(S714:NO)、マイクロプロセッサ121は、共有メモリ132における制御情報を更新しないことを決定する(S716)。
必要な空き共有メモリ領域を有するHDD RAIDグループが存在する場合(S714:NO)、マイクロプロセッサ121は、当該HDD RAIDグループの番号を特定し、キャッシュ制御情報を当該HDD RAIDグループの共有メモリ領域に格納し、その更新を行うことを決定する(S715)。
マイクロプロセッサ121は、共有メモリ132以外のいずれかの共有メモリに制御情報を格納し、その制御情報を更新することを決定すると、ローカルメモリ122におけるデータキャッシング制御情報を、選択した共有メモリにコピーする。共有メモリ132におけるデータキャッシング制御は削除してよい。
このように、制御情報を現在の共有メモリ132の領域から他の共有メモリ領域に移動することで、共有メモリにおける制御情報の更新を、ローカルメモリにおける更新に同期させることができ、障害発生時のキャッシュヒット率を向上することができる。上記フローは、アクセス性能が高いデバイスから、空き共有メモリ領域の有無を判定する。これにより、よりアクセス性能が高い共有メモリに制御情報を格納することができ、システム性能の低下を抑えることができる。
本実施形態の共有メモリ領域管理は、データキャッシング制御情報の格納及び更新管理の他、上記他の実施形態で説明した他の制御情報の格納及び更新管理に適用することができる。MPPK障害時には、他のMPPK120は、共有メモリ領域管理テーブル400を参照し、分散している共有メモリ領域において対応する制御情報を検索することができる。
図61のフローチャートを参照して、MP稼働率の更新を説明する。このフローは、1秒などの周期で呼び出される。マイクロプロセッサ121は、自身のMP稼働時間を取得し(S722)、MP稼働率テーブル380の稼働率の値を更新する(S723)。ステップS722、S723は、図24におけるステップS232、S233と同様である。
次に、ステップS724において、マイクロプロセッサ121は、更新した稼働率の値が、MP稼働率閾値1の値以上であるか判定する。稼働率の値がMP稼働率閾値1以上である場合(S724:YES)、マイクロプロセッサ121は、MP稼働率テーブル380の過負荷フラグ1を1(ON)に設定する(S725)。稼働率の値がMP稼働率閾値1未満である場合(S724:NO)、マイクロプロセッサ121は、MP稼働率テーブル380の過負荷フラグ1を0(OFF)に設定する(S726)。
次に、ステップS727において、マイクロプロセッサ121は、更新した稼働率の値が、MP稼働率閾値2以上であるか判定する。稼働率の値がMP稼働率閾値2以上である場合(S727:YES)、マイクロプロセッサ121は、MP稼働率テーブル380の過負荷フラグ2を1(ON)に設定する(S728)。稼働率の値がMP稼働率閾値2未満である場合(S727:NO)、マイクロプロセッサ121は、MP稼働率テーブル380の過負荷フラグ1を0(OFF)に設定する(S729)。
第7実施形態
本実施形態のストレージシステムは、ホストデータのキャッシングによるアクセス性能の向上に基づき、低ヒット率フラグのON/OFFを決定する。低ヒット率フラグは大1実施形態で説明した通りである。アクセス性能は、例えば、レスポンスタイムやスループットで表される。以下に説明する構成は、レスポンスタイムを使用する。
本実施形態のストレージシステムは、ホストデータのキャッシングによるアクセス性能の向上に基づき、低ヒット率フラグのON/OFFを決定する。低ヒット率フラグは大1実施形態で説明した通りである。アクセス性能は、例えば、レスポンスタイムやスループットで表される。以下に説明する構成は、レスポンスタイムを使用する。
データキャッシングの使用によるレスポンスタイムの向上が大きい場合に低ヒット率フラグ(第1実施形態参照)はOFFに設定され、データキャッシングの使用によるレスポンスタイムの向上が小さい場合に低ヒット率フラグはONに設定される。これにより、平均レスポンスタイムを向上することができる。
以下において、本実施形態を具体的に説明する。主に上記他の実施形態と異なる点を説明する。図62は、本実施形態のローカルメモリ122に格納されている制御情報を示している。レスポンステーブル410及びCM利用閾値テーブル420がローカルメモリ122に格納されている。図63はレスポンステーブル410の一例を示し、図64はCM利用閾値テーブル420の一例を示す。
レスポンステーブル410は、メディアのレスポンスタイムを管理するテーブルである。図63において、レスポンステーブル410は、メディア種別のカラム411及びレスポンスタイムのカラム412を有する。本例のレスポンステーブル410は、メディア種別によりレスポンスタイムを管理するが、RAIDグループや論理ボリュームによりレスポンスタイムを管理してもよい。
本例において、レスポンスタイムは、メディアからデータを読み出すために要する時間である。レスポンスタイムのカラム412には、予め値が格納されている、又は、マイクロプロセッサ121は、レスポンスタイムのカラム412の値を更新してもよい。マイクロプロセッサ121は、データ読み出しにおけるレスポンスタイムを測定し、例えば測定値の平均値をレスポンスタイムのカラム412に格納する。
レスポンスタイムの決定は、データライトにおけるレスポンスタイムも使用してもよい。データライトのレスポンスタイムとデータリードのレスポンスタイムを個別に管理し、それに合わせて、データライトとデータリードのヒット率を個別に管理してもよい。データキャシング制御は、ライトデータキャッシングとリードデータキャッシングで個別に行うことができる。
図64において、CM利用閾値テーブル420は、レスポンス向上のカラム421において、レスポンス向上を示す値の閾値を格納している。閾値は予め設定されている。例えば、管理者により設定された値が、ストレージシステム内の不揮発性記憶領域に格納されている。後述するように、マイクロプロセッサ121は、メディアのレスポンスタイムとCMPK130(キャッシュメモリ131)のレスポンスタイムとの差を使用して、レスポンス向上を表す値を算出する。この値が上記閾値より大きい場合、レスポンス向上がデータキャッシングに見合うレベルにあることを示す。
図65のフローチャートを参照して、本実施形態のレスポンス向上に基づく低ヒット率フラグ更新を含むヒット率更新処理を説明する。MPPK120は、定期的に、例えば、1秒毎にこの処理を実行する。図65のフローチャートにおけるステップS802、S803、S805〜S807は、それぞれ、図23のフローチャートにおけるステップS222、S223、S225〜S227と同様である。
ステップS804において、マイクロプロセッサ121は、下記の式に従って、レスポンス向上を表す値を算出する。
ヒット率×(当該メディアのレスポンスタイム−CMPKレスポンスタイム)/100
ヒット率×(当該メディアのレスポンスタイム−CMPKレスポンスタイム)/100
マイクロプロセッサ121は、当該ボリュームのRAIDグループから、メディア種別テーブル230を参照して、当該メディアの種別を特定することができる。レスポンスタイムの値は、上述のように、レスポンステーブル410に格納されている。マイクロプロセッサ121は、算出した値とCM利用閾値テーブル420のCM利用閾値とを比較する。
算出した値がCM利用閾値以下である場合(S804:YES)、マイクロプロセッサ121は、当該ボリュームの低ヒット率フラグを1(ON)に設定する(S805)。算出した値がCM利用閾値より大きい場合(S804:NO)、マイクロプロセッサ121は、当該ボリュームの低ヒット率フラグを0(OFF)に設定する(S806)。
第8実施形態
キャッシュ制御においては、キャッシュミスした場合にはキャッシュスロットを確保するのが一般的である。本実施形態では、HDDとSSDの混在するストレージシステムにおいて、このようなキャッシュ制御の前提を維持しつつも、SSDの特性を考慮した効率のよいキャッシュ制御方法を説明する。
キャッシュ制御においては、キャッシュミスした場合にはキャッシュスロットを確保するのが一般的である。本実施形態では、HDDとSSDの混在するストレージシステムにおいて、このようなキャッシュ制御の前提を維持しつつも、SSDの特性を考慮した効率のよいキャッシュ制御方法を説明する。
本実施形態のストレージシステムは、論理ボリューム空間に関連付けされた通常のキャッシュ領域を用いるキャッシングを行って、リードデータをホストに転送するか、I/O処理制御プロセス(ジョブ)に関連付けされたキャッシュ領域(ジョブバッファ)を用いてリードデータをホストに転送するか、予め定められている条件に従って決定する。
本実施形態において、ジョブとはI/O処理を制御するプロセスを示しており、ジョブは各MP内で一意に特定できるジョブ#を持っている。ジョブ#毎の管理領域には、例えば、処理中のI/Oのアクセス先アドレスや転送長の情報、使用しているキャッシュ領域の情報などが記憶されている。
キャッシュにユーザデータがあるかないかを検索する場合、論理ボリューム空間のアドレスを用いて検索する。前出のジョブバッファが確保済みかどうかを検索する場合、論理ボリューム空間に未割り当てのアドレスを各MPのジョブ番号に割り当て、そのアドレスを用いて検索する。
以下において、本実施形態を具体的に説明する。主に上記他の実施形態と異なる点を説明する。図72は、本実施形態のローカルメモリ122に格納されている制御情報を示している。ジョブ管理テーブル450、ジョブバッファアドレステーブル460、バッファ転送比率算出テーブル470、バッファ転送比率テーブル480がローカルメモリ122に格納されている。図73はジョブ管理テーブル450の一例を示し、図74はジョブバッファアドレステーブル460の一例を示し、図75はバッファ転送比率算出テーブル470の一例を示し、図76はバッファ転送比率テーブル480の一例を示す。
図73は、ジョブ管理テーブル450の構成例を示している。ジョブ管理テーブル450は、各ジョブ番号が使用中かどうかを管理するテーブルである。ジョブ管理テーブル450は、マイクロプロセッサ番号のカラム451、ジョブ番号のカラム452、使用有無のカラム453を有する。本例のジョブ番号の空き管理は、使用有無のカラムで行うが、使用有キューと使用無キューを用いたキュー管理をしてもよい。
図74は、ジョブバッファアドレステーブル460の構成例を示している。ジョブバッファアドレステーブル460は、各MPの各ジョブ番号が割り当てられているバッファ検索用アドレスを管理する。ジョブバッファアドレステーブル460は、マイクロプロセッサ番号のカラム461、ジョブ番号のカラム462、ジョブバッファ用アドレス番号のカラム463を有する。ジョブバッファ用アドレス番号は、ストレージシステム内において一意な値であり、論理ボリュームのアドレスと重複しない値である。
図75は、バッファ転送比率算出テーブル470の構成例を示している。バッファ転送比率算出テーブル470は、論理ボリューム毎のキャッシュヒット率及びMP稼働率からジョブバッファを用いて転送する比率を算出するテーブルである。バッファ転送比率算出テーブル470は、ヒット率のカラム471、マイクロプロセッサ稼働率のカラム472、バッファ転送比率のカラム473を有する。
キャッシュヒットしないデータに対するリード処理のマイクロプロセッサOVHを減らす目的から、ヒット率が低い場合にバッファ転送比率は高い値が設定され、マイクロプロセッサ稼働率が高い場合にバッファ転送比率は高い値が設定される。
バッファ転送比率の下限は0であり、上限は99以下である。上限で99以下である理由は、100%ジョブバッファを用いて転送する場合、ヒット率を計算できないためである。本例で用いるヒット率は、ジョブバッファを用いない場合のヒット率である。
図76は、バッファ転送比率テーブル480の構成例を示している。バッファ転送比率テーブル480は、各論理ボリュームに対するリード処理においてジョブバッファを用いる比率を管理するテーブルである。バッファ転送比率テーブル480は、論理ボリューム番号のカラム481、バッファ転送比率のカラム482を有する。
本例におけるホスト計算機180から受信したリードコマンドに対する処理を、図77A及び図77Bに示すフローチャートを参照して説明する。ホスト計算機180からのリードコマンドを受けた(S901)マイクロプロセッサ121は、ジョブ管理テーブル430を参照し、不使用のジョブ番号を検索し、不使用のジョブ番号を確保する(S902)。
マイクロプロセッサ121は、リードコマンドが示す論理ボリューム(LDEV)に、自身がアクセス権を有するか判定する(S903)。アクセス権を有していない場合(S903:NO)、そのマイクロプロセッサ121は、アクセス権を有するMPPK120にリードコマンドを転送する(S904)。
マイクロプロセッサ121がアクセス権を有する場合(S903:YES)、そのマイクロプロセッサ121は、同一MPPK120上のローカルメモリ122内で、論理ボリュームのアドレスを用いて、キャッシュディレクトリ310を検索する(S905)。リードコマンドが指定するアドレス(データ)が見つかった(キャッシュヒット)場合(S906:YES)、マイクロプロセッサ121は、キャッシュディレクトリ310の情報に従って、キャッシュメモリ131からリードデータを読み出し、ホスト計算機180に送信する(S907)。
リードコマンドが指定するアドレス(データ)が見つからなかった(キャッシュミス)場合(S906:NO)、マイクロプロセッサ121は、ローカルメモリ122の未キャッシュフラグを確認する(S908)。未キャッシュフラグは、共有メモリ132のキャッシュディレクトリ510の全てのデータが、ローカルメモリ122にキャッシュされているかを示すフラグであり、ローカルメモリ122内に格納されている。一部のデータが読み込まれていない場合、その値はONである。例えば、障害フェイルオーバ直後で共有メモリ132からローカルメモリ122へ制御情報が読み込まれてない場合、未キャッシュフラグはONである。
未キャッシュフラグがONである場合(S908:YES)、共有メモリ132のキャッシュディレクトリ510の一部データがキャッシュされていない。マイクロプロセッサ121は、CMPK130のコントローラを介して、共有メモリ132からローカルメモリ122へキャッシュディレクトリ(制御情報)を転送する(S909)。
マイクロプロセッサ121は、ローカルメモリ122内で、キャッシュディレクトリ310を検索する(S910)。リードコマンドが指定するデータが見つかった(キャッシュヒット)場合(S911:YES)、マイクロプロセッサ121は、キャッシュディレクトリ310の情報に従って、キャッシュメモリ131からリードデータを読み出し、ホスト計算機180に送信する(S912)。
キャッシュミスの場合(S911:NO)又は未キャッシュフラグがOFFの場合(S908:NO)、マイクロプロセッサ121は、論理ボリューム空間に関連付けされた通常のキャッシュ領域を用いるキャッシングを行って、リードデータをホストに転送するか、I/O処理制御プロセス(ジョブ)に関連付けされたキャッシュ領域(ジョブバッファ)を用いてリードデータをホストに転送する(バッファ転送)か、を判定する(S913)。この判定の具体的な方法については後に詳述する。
バッファ転送を用いないと判定した場合(S914:NO)、マイクロプロセッサ121は、リードデータのためのスロットをキャッシュメモリ131に確保し、さらに、ローカルメモリ122のキャッシュディレクトリ310及び共有メモリ132のキャッシュディレクトリ510を更新する(S915)。
マイクロプロセッサ121は、BEPK140及びCMPK130により、記憶ドライブ170(永続メディア)からリードデータを読み出し、キャッシュメモリ131上の確保したスロットに格納する。その後、マイクロプロセッサ121は、そのキャッシュデータを、CMPK130及びFEPK100により、ホスト計算機180に送信する(S916)。
バッファ転送を用いると判定した場合(S914:YES)、マイクロプロセッサ121は、ジョブバッファアドレステーブル440のジョブバッファアドレス番号を用いて、キャッシュディレクトリ310を検索する(S917)。
ジョブバッファアドレス番号(ジョブバッファ)が見つからなかった場合(S918:NO)、マイクロプロセッサ121は、ジョブバッファのためのスロットをキャッシュメモリ131に確保し、さらに、ローカルメモリ122のキャッシュディレクトリ310及び共有メモリ132のキャッシュディレクトリ510を更新して(S919)、次のステップS920に進む。
ジョブバッファアドレス番号(ジョブバッファ)が見つかった場合(S918:YES)、マイクロプロセッサ121は、ローカルメモリ122および共有メモリ132の制御情報を更新することなく、ステップ920に進む。
ステップ920において、マイクロプロセッサ121は、BEPK140及びCMPK130により、記憶ドライブ170(永続メディア)からリードデータを読み出し、キャッシュメモリ131上のジョブバッファ用のスロットに格納する。その後、マイクロプロセッサ121は、そのキャッシュデータを、CMPK130及びFEPK100により、ホスト計算機180に送信する。
図78を参照して、図77Aのフローチャートにおける、バッファ転送の要否についての判定(S914)を説明する。マイクロプロセッサ121は、このステップS914を開始し、リードコマンドの指定する論理ボリュームの性能ブースト機能がONであるか否かを、性能ブースト機能有効化テーブル210及びボリューム毎性能ブースト機能有効化テーブル220を参照して判定する(S932)。一方のテーブルが、性能ブースト機能がOFFであることを示す場合、当該ボリュームの性能ブースト機能はOFFである。
当該論理ボリュームの性能ブースト機能がONではない場合(S932:NO)、マイクロプロセッサ121は、バッファ転送を用いないことを決定する(S937)。当該論理ボリュームの性能ブースト機能がONである場合(S932:YES)、マイクロプロセッサ121は、次に、指定データが格納されているRAIDグループのメディア種別がSSDであるか否かを、RAIDグループ番号をキーとしてメディア種別テーブル230を参照し、判定する(S933)。
マイクロプロセッサ121は、ローカルメモリ122内に、各ボリュームの構成管理情報を有しており、各ボリュームの各領域がいずれのRAIDグループに属するかをその情報を参照して知ることができる。
メディア種別がSSDではない場合(S933:NO)、マイクロプロセッサ121は、バッファ転送を用いないことを決定する(S937)。そのメディア種別がSSDである場合(S933:YES)、マイクロプロセッサ121は、次に、今回のI/Oがバッファ転送対象である否かを、指定データが格納されている論理ボリューム番号をキーとしてバッファ転送比率テーブル480を参照し、判定する(S934)。
0から99の値を持つバッファ転送比率を用いて、バッファ転送対象か否かを判定する方法として、マイクロプロセッサ121は、0から100までの乱数を用いて、乱数がバッファ転送比率を下回った場合に、今回のI/Oがバッファ転送対象であると判定してもよい。マイクロプロセッサ121は、リードデータのアドレスをキーとする0から100のハッシュ値を用いて、ハッシュ値がバッファ転送比率を下回った場合に、今回のI/Oがバッファ転送対象であると判定してもよい。マイクロプロセッサ121は、0から100まで1ずつ増加するカウンタ(100の次は0に戻る)を使用して、カウンタの値がバッファ転送比率を下回った場合に、今回のI/Oがバッファ転送対象であると判定してもよい。
S934の判定の結果、今回のI/Oがバッファ転送対象であると判定した場合(S935:YES)、マイクロプロセッサ121は、バッファ転送を用いることを決定し(S936)、今回のI/Oがバッファ転送対象ではないと判定した場合(S935:NO)、バッファ転送を用いないことを決定する(S937)。
このように、規定条件を満たす場合、マイクロプロセッサ121は、ローカルメモリ122でのキャッシュディレクトリ310及び、共有メモリ132のキャッシュディレクトリ510を更新しなくてよい可能性が高いバッファ転送を用いることを決定する。これにより、マイクロプロセッサ121及びCMPK130の負荷を低減し、システムのスループットを向上することができる。
図79のフローチャートを参照して、バッファ比率の算出を説明する。このフローは、LDEV(論理ボリューム)毎に1秒などの周期で呼び出される。マイクロプロセッサ121は、ある周期で全LDEV分を算出してもよいし、I/O処理契機にI/O対象LDEVが1秒などの間更新されていない場合に算出してもよい。
マイクロプロセッサ121は、対象LDEV番号(論理ボリューム番号)をキーにボリューム毎ヒット率テーブル250を参照し、I/O数とヒット数からヒット率を求め、自身のMP番号をキーにMP稼働率テーブル380を参照し、MP稼働率を求め、ヒット率とMP稼働率をキーにバッファ転送比率算出テーブル470を参照し、バッファ転送比率を求める(S942)。
マイクロプロセッサ121は、バッファ転送比率テーブル480の当該LDEV番号(論理ボリューム番号)のバッファ転送比率のカラムをS942でもとめたバッファ転送比率で更新し(S943)、この処理を終了する(S944)。
以上が、本発明の第8の実施形態の説明である。なお、本実施形態においても、ライト処理は、バッファステージング判定を行ってもよいし、すべてのデータを通常のキャッシュ領域にキャッシュするという方法を採用してもよい。
例えば、すべてのデータを通常のキャッシュ領域にキャッシュする場合、図77AのフローチャートにおいてS901、S904、S907、S912、S916を、図18AのS141、S143、S146、S151、S156にそれぞれ置き換えたフローとほぼ同様の流れになる。但し、ライト処理の場合、バッファステージング判定に関するステップ(S913、S914)は省略され、S908またはS911のステップで否と判定された場合は、S915のステップに移る点で異なる。
発明の第8の実施形態によれば、予め定められている条件に従って、キャッシングするか、ジョブバッファを用いて転送するかを選択することで、キャッシュ領域の効率的に利用し、さらに、キャッシュメモリ及びデータキャッシングを行うプロセッサのオーバヘッドを低減することで、ストレージシステムの性能を向上する。
確保済みのジョブバッファを用いてリードデータを転送する場合、CMPKのSMの制御情報を更新する必要がないだけでなく、LMの制御情報も更新する必要がない。したがって、本実施形態において、プロセッサは、予め定められている条件に従って、キャッシングするか、ジョブバッファを用いて転送するかを選択することで、キャッシュ領域の効率的に利用し、さらに、キャッシュメモリ及びデータキャッシングを行うプロセッサのオーバヘッドを低減することで、ストレージシステムの性能を向上する。
また、時間とともに変化するキャッシュヒット率を用いることで、外部から設定できないような短時間でのI/Oパターンの変化にも対応できる。永続メディアがSSDの場合でも、ヒットする確率が高い時間帯には、通常の転送を多く行い、ヒットする確率が低い時間帯には、ジョブバッファ転送を多く行うことが、ストレージシステムの性能向上に寄与する。このように、時間で変化するI/Oパターンに対して、キャッシュの利用効率を高め、キャッシュメモリとプロセッサのOVHも削減できることが、本実施形態により実現できる。
さらに、バッファをキャッシュのスロットと同様の管理体系に置くことで、バッファとキャッシュスロットを別管理する方式と比較して、低いOVHで時間的に追随性の高い効率的なメモリ利用が可能となる。
以下において、キャッシュ制御の更新が削減され、プロセッサのオーバヘッドが低減する理由を、図80に示す本実施形態におけるキャッシュのLRU(Least Recently Used)リプレース管理とジョブ番号のリプレース管理を用いて説明する。
本発明の実施形態では、図80に示すように、キャッシュのスロットは、LRUアルゴリズムでリプレース管理されている(710)。LRUアルゴリズムのリプレースとは、新たにエントリを確保する場合、もっとも最古にアクセスされたエントリがリプレースされるアルゴリズムである。データキャッシングの場合、キャッシュされていないデータにアクセスされたとき、キャッシュスロットを新規に確保するために、もっともアクセス時間が古いキャッシュスロットがリプレースされる。
SLOT番号720は、それぞれのキャッシュスロットの一意な番号を示している。LRUポインタ730は、直前に利用されたキャッシュスロットを指している。SLOT番号s1の直前に利用されたスロットのSLOT番号がs2であり、SLOT番号s2の直前に利用されたスロットのSLOT番号はs3であることを示している。また、MRU(Most Recently Used)ポインタ740は、直後に利用されたキャッシュスロットを指している。SLOT番号s3の直後に利用されたスロットのSLOT番号s2であり、SLOT番号s2の直後に利用されたスロットのSLOT番号がs1であることを示している。すなわち、SLOT番号s3、s2、s1の順で利用されたこと示している。
また、本発明の実施形態では、不使用のジョブ番号は、MRUアルゴリズムでリプレース管理されている(720)。MRUアルゴリズムのリプレースとは、新たにエントリを確保する場合、もっとも最新にアクセスされたエントリがリプレースされるアルゴリズムである。ジョブ番号820は、ジョブ番号432に対応する。
LRUポインタ830は、直前に利用されたジョブ番号を示し、MRUポインタ840は、直後に利用されたジョブ番号を示す。すなわち、ジョブ番号j3、j2、j1の順で利用されたことを示している。I/Oを処理するためにジョブ番号を割り当てる場合に、MRUのジョブ番号j0(850)を割り当て、I/Oが終わり、ジョブ番号を返却する場合は、MRUのジョブ番号j0(850)のMRUポインタ(840)に返却する。
通常のデータキャッシングを用いた転送では、SLOT番号s1やs3のスロットのように、LDEV番号及びLDEV内のLBA750と対応付けがなされているスロット番号720を有するスロット751を用いる。
そのため、本実施形態の効果が期待されるキャッシュ容量よりもアクセスするボリューム容量が大きく、すなわちユーザデータキャッシュが再利用されないホストI/Oアクセスパターンである場合、ホストI/Oの度に、新たにスロットを確保するため、LRUのスロットs0をキャッシュディレクトリ310から削除し、確保したスロットをキャッシュディレクトリに接続しなければならない。1I/OあたりPM/SMのキャッシュディレクトリをそれぞれ2回更新しなければならない。
それに対し、ジョブバッファを用いた転送では、ジョブ番号s2と対応付けられているSLOT番号s2のスロットのように、ジョブ番号820と対応付けがなされているSLOT番号720を有するスロット821を用いる。不使用のジョブ番号をMRU管理でリプレースすることで、同じジョブ番号を再利用し、すなわちジョブ番号と関連付けされたスロットも再利用できる。これにより、ユーザデータキャッシュが再利用されないホストI/Oアクセスパターンである場合でも、キャッシュディレクトリを更新する必要がない。したがって、プロセッサのオーバヘッドが低減する。
本例では、ジョブのフリー管理にMRUアルゴリズムを用いて、同じジョブ番号を利用する確率を高め、キャッシュメモリの利用効率をより高めているが、ジョブ管理テーブル450の使用有無カラム453を先頭からサーチするなどでも、再利用確率が高く、上記効果が得られるため、その方式でもよい。
以上、本発明の実施形態を説明したが、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、ある実施形態の構成に他の実施形態の構成を加えることも可能である。各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計されたハードウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
上記実施形態において、制御情報は複数のテーブルにより表されているが、本発明が使用する制御情報は、データ構造に依存しない。制御情報は、テーブルの他、例えば、データベース、リスト、キュー等のデータ構造で表現することができる。上記実施形態において、識別子、名、ID等の表現は、互いに置換が可能である。
プロセッサである、CPU、マイクロプロセッサ又は複数のマイクロプロセッサのグループは、プログラムに従って動作することで、定められた処理を実行する。従って、本実施形態においてプロセッサを主語とする説明は、プログラムを主語とした説明でもよく、プロセッサが実行する処理は、そのプロセッサが実装された装置及びシステムが行う処理である。
Claims (7)
- ストレージシステムであって、
制御プログラムが動作するプロセッサと、
複数の論理ボリュームにストレージリソースを提供する複数の第1種または第2種の種類の物理ストレージボリュームと、
リード要求の対象データを一時的に格納するための複数のジョブバッファを含み、前記複数の物理ストレージボリュームに格納されたデータの一部を格納するキャッシュメモリと、
前記プロセッサに接続されたメモリであって、ホストからのリード要求の対象データが前記キャッシュメモリに格納されているかを示すキャッシュ制御情報と、前記リード要求の処理を管理するために使用される複数のジョブ番号が使用中か否かを管理するジョブ管理情報とを格納するメモリとを有し、
前記プロセッサは、
前記ホストから前記論理ボリュームのいずれかの領域を指定した前記リード要求を受信すると、前記ジョブ管理情報で管理されている前記複数のジョブ番号の内、ジョブバッファが割り当てられている確率が高い、使用中ではないジョブ番号を優先的に前記リード要求に割当て、
前記リード要求で指定された前記論理ボリュームの領域を特定する第1の識別子及び前記キャッシュ制御情報に基づき、前記リード要求の対象データがキャッシュメモリにあるかを判定し、前記対象データが前記キャッシュメモリにないと判定した場合、
前記リード要求が指定する論理ボリュームを構成する前記複数の物理ストレージボリュームの一部が前記第1種の種類の物理ストレージボリュームである場合は、前記第1の識別子と前記キャッシュメモリ上に確保した領域を特定する識別子とを対応付けて前記キャッシュ制御情報として前記メモリに格納し、
前記リード要求が指定する論理ボリュームを構成する前記複数の物理ストレージボリュームの一部が第2種の種類の物理ストレージボリュームである場合は、前記リード要求に割り当てられた前記ジョブ番号と前記ジョブ番号に対応するジョブバッファを特定する識別子とを対応付けて前記キャッシュ制御情報として前記メモリに格納し、
前記ジョブ番号に対応する前記ジョブバッファに、前記リード要求により前記複数の物理ストレージボリュームの一部から読み出されたデータを格納するように構成された、
ストレージシステム。 - 請求項1に記載のストレージシステムであって、
前記プロセッサは、
前記対象データが前記キャッシュメモリにないと判定し、前記リード要求が指定する論理ボリュームを構成する前記複数の物理ストレージボリュームの種類の一部が第2種のボリュームである場合、前記ジョブ番号が前記メモリ上の前記キャッシュ制御情報に存在するかを判定し、
前記ジョブ番号が前記キャッシュ制御情報に存在する場合、前記キャッシュ制御情報において、前記ジョブ番号に対応付けられ、前記キャッシュメモリ上に確保されたジョブバッファに、前記読み出されたデータを格納し、
前記ジョブ番号が前記キャッシュ制御情報に存在しない場合、前記キャッシュメモリ上に新たなジョブバッファを確保し、前記ジョブ番号と前記キャッシュメモリ上に新たに確保したジョブバッファとを対応付けて、前記キャッシュ制御情報として前記メモリに格納するように構成された、
ストレージシステム。 - 請求項2に記載のストレージシステムであって、
前記プロセッサは、
前記ジョブ管理情報で管理されている使用中ではないジョブが複数存在する場合、最も最近使用されたジョブを前記リード要求に対して割り当てるように構成された、
ストレージシステム。 - 請求項3に記載のストレージシステムであって、
前記第1種のボリュームはハードディスクドライブのボリュームであり、前記第2種のボリュームはソリッドステートドライブのボリュームである、
ストレージシステム。 - 請求項3に記載のストレージシステムであって、
前記プロセッサは、
前記複数の物理ストレージボリュームの種類が第2種のボリュームである場合、前記プロセッサの稼働率と前記キャッシュメモリ上に前記対象データが存在する確率であるキャッシュヒット率についての情報を取得し、前記プロセッサの稼働率と前記キャッシュヒット率とが所定の条件を満たす場合に、前記ジョブ番号と前記キャッシュメモリ上に確保したジョブバッファを特定する識別子とを対応付けて格納するように構成された、
ストレージシステム。 - 請求項5に記載のストレージシステムであって、
前記プロセッサに接続され、前記メモリに格納された前記キャッシュ制御情報及び前記ジョブ管理情報のコピーが格納されたローカルメモリを更に有する、
ストレージシステム。 - ストレージシステムであって、
データを格納する複数のソリッドステートドライブと、
ホストからのリード要求を処理するプロセッサと、
リード要求の対象データを一時的に格納する複数のジョブバッファを含む、キャッシュメモリと、
リード要求の処理を管理するために使用され複数のジョブ番号が使用中か否かを管理するジョブ管理情報を格納するメモリと、を有し、
前記プロセッサは、
リード要求を受信すると、前記ジョブ管理情報で管理されている複数のジョブ番号の内、ジョブバッファが割り当てられている確率が高い、使用中ではないジョブ番号を優先的に前記リード要求に割当て、
前記受信したリード要求の対象データが前記キャッシュメモリに存在しない場合、前記複数のソリッドステートドライブのうちの一つのソリッドステートドライブから読み出した前記対象データを、前記リード要求に割り当てられた前記ジョブ番号に対応する前記ジョブバッファに格納し、前記対象データを前記ホストに転送する、
ストレージシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/069889 WO2014020766A1 (ja) | 2012-08-03 | 2012-08-03 | ストレージシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2014020766A1 JPWO2014020766A1 (ja) | 2016-07-11 |
JP5965486B2 true JP5965486B2 (ja) | 2016-08-03 |
Family
ID=50027490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014527931A Expired - Fee Related JP5965486B2 (ja) | 2012-08-03 | 2012-08-03 | ストレージシステム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5965486B2 (ja) |
WO (1) | WO2014020766A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2602636A (en) * | 2021-01-06 | 2022-07-13 | Advanced Risc Mach Ltd | Technique for tracking modification of content of regions of memory |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4369470B2 (ja) * | 2006-12-26 | 2009-11-18 | 富士通株式会社 | データ中継装置、ストレージ装置、および応答遅延監視方法 |
JP2009181167A (ja) * | 2008-01-29 | 2009-08-13 | Hitachi Ltd | コンピュータシステム、リモートコピー方法及び第1コンピュータ |
US8380924B2 (en) * | 2009-05-27 | 2013-02-19 | Hitachi, Ltd. | Storage system and processing efficiency improving method of storage system |
-
2012
- 2012-08-03 WO PCT/JP2012/069889 patent/WO2014020766A1/ja active Application Filing
- 2012-08-03 JP JP2014527931A patent/JP5965486B2/ja not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2602636A (en) * | 2021-01-06 | 2022-07-13 | Advanced Risc Mach Ltd | Technique for tracking modification of content of regions of memory |
WO2022148943A1 (en) * | 2021-01-06 | 2022-07-14 | Arm Limited | Technique for tracking modification of content of regions of memory |
GB2602636B (en) * | 2021-01-06 | 2023-03-15 | Advanced Risc Mach Ltd | Technique for tracking modification of content of regions of memory |
Also Published As
Publication number | Publication date |
---|---|
JPWO2014020766A1 (ja) | 2016-07-11 |
WO2014020766A1 (ja) | 2014-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5806776B2 (ja) | ストレージシステム | |
US10936503B2 (en) | Device access point mobility in a scale out storage system | |
US8886882B2 (en) | Method and apparatus of storage tier and cache management | |
US7380059B2 (en) | Methods and systems of cache memory management and snapshot operations | |
US10346075B2 (en) | Distributed storage system and control method for distributed storage system | |
US9454317B2 (en) | Tiered storage system, storage controller and method of substituting data transfer between tiers | |
WO2017216887A1 (ja) | 情報処理システム | |
US9329999B2 (en) | Storage system improving read performance by controlling data caching | |
JP6067819B1 (ja) | 階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法 | |
US11029862B2 (en) | Systems and methods for reducing write tax, memory usage, and trapped capacity in metadata storage | |
JP6898393B2 (ja) | ストレージシステム及びデータ転送方法 | |
US10503424B2 (en) | Storage system | |
US9384147B1 (en) | System and method for cache entry aging | |
WO2015162758A1 (ja) | ストレージシステム | |
WO2013091192A1 (zh) | 提供多设备镜像和条带功能的磁盘缓存方法、设备和系统 | |
JP2017049806A (ja) | ストレージ制御装置およびストレージ制御プログラム | |
JP5965486B2 (ja) | ストレージシステム | |
US11112973B2 (en) | Computer system and data management method | |
US20200073572A1 (en) | Storage system and storage control method | |
US11989434B1 (en) | Optimizing protection of highly deduped data for performance and availability |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160509 |
|
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: 20160607 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160701 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5965486 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |