JP5531091B2 - 計算機システム及びその負荷均等化制御方法 - Google Patents

計算機システム及びその負荷均等化制御方法 Download PDF

Info

Publication number
JP5531091B2
JP5531091B2 JP2012503154A JP2012503154A JP5531091B2 JP 5531091 B2 JP5531091 B2 JP 5531091B2 JP 2012503154 A JP2012503154 A JP 2012503154A JP 2012503154 A JP2012503154 A JP 2012503154A JP 5531091 B2 JP5531091 B2 JP 5531091B2
Authority
JP
Japan
Prior art keywords
segments
control unit
segment
allocated
target value
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
Application number
JP2012503154A
Other languages
English (en)
Other versions
JP2012533781A (ja
Inventor
義裕 吉井
晋太郎 工藤
一 芹沢
山本  政行
定広 杉本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2012533781A publication Critical patent/JP2012533781A/ja
Application granted granted Critical
Publication of JP5531091B2 publication Critical patent/JP5531091B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

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

Description

本発明は、ユーザ装置にデータストレージサービスを提供する計算機システム及びその負荷制御方法に関するものである。
この種の計算機システムは、ユーザ側にあるホスト計算機などの上位装置と、上位装置に対してデータストレージ処理を実現するストレージシステムと、を備えている。そして、ストレージシステムは、データを記憶するストレージと、記憶装置とホスト計算機との間のデータの入出力要求を処理するストレージサブシステムとを備えている。
ストレージサブシステムは、論理的な記憶領域を、ホスト計算機からの入出力対象として管理しており、ストレージサブシステム内のコントローラが、論理ボリュームへのデータ書込み処理と、論理ボリュームからのデータの読み出し処理を行っている。
ストレージサブシステムには、複数のコントローラを備えるタイプのものがある。ストレージサブシステムは、複数のコントローラ間でデータ処理に伴う負荷を均等にさせるために、複数の論理ボリュームに対するデータ入出力処理を複数のコントローラに分担させている。
すなわち、ストレージサブシステムの管理者は、データストレージサービスの運用開始前に、コントローラがデータ入出力処理を担当する論理ボリュームに関する割り当てを、予めストレージサブシステムの制御メモリに設定するようにしていた。
そして、データストレージサービスの運用を開始した後、ストレージサブシステムは、複数のコントローラの間で負荷が不均一になると、負荷が集中しているコントローラが有している論理ボリュームに対する制御・処理権限を、他のコントローラに移行できるようにしている(特開2008−269424号公報)。
特開2008−269424号公報
ストレージシステムは、移行先コントローラが移行元コントローラから引き継いだ論理ボリュームに対する入出力制御を継続できるようにするために、移行元コントローラに対する制御情報、例えば、LDEV構成情報、キャッシュメモリのセグメントに関するディレクトリ情報を、移行元コントローラから移行先コントローラに割り当て直していた。
ところで、ストレージサブシステムが、コントローラにとってデータ入出力処理を行う上で必要とされる制御情報を、共有メモリからコントローラのローカルメモリに移動させて、コントローラが制御情報に迅速にアクセスできるようにすると、移行先コントローラに属する制御情報を他のコントローラが参照できないため、制御情報が複数のコントローラ間で不均衡になるという課題があった。
この結果、特開2008−269424号公報記載のように、負荷が集中しているコントローラが有している論理ボリュームに対する制御権限を、他のコントローラに移行して、複数のコントローラ間で負荷を均等しようとしても、この負荷均等化処理によって、結果的に、例えば、キャッシュメモリのセグメントの割り当てが少なくなってしまったコントローラは、ホスト計算機からのアクセスに対する処理を遅延させてしまうおそれがあった。
したがって、従来の負荷分散技術は、ストレージシステム全体における入出力処理のパフォーマンスを十分に達成できないという課題があった。
そこで、この発明は、データの入出力制御用に複数のコントローラを有する計算機システムにおいて、プロセッサの制御権限を他のプロセッサに移行し、そして、計算機システムが、コントローラがデータ入出力処理を行う上で必要な制御情報を、共有メモリからコントローラのローカルメモリに移動させても、複数のコントローラ間でデータの入出力制御に必要な制御機能の割り当てに不均衡が生じないようにした計算機システム、及び、その負荷均等化方法を提供することを目的とするものである。
そこで、この目的を達成するために、この発明は、データの入出力制御用に複数のコントローラを有する計算機システムにおいて、コントローラの制御権限を他のコントローラに移行し、そして、コントローラがデータ入出力処理を行う上で必要な制御情報を、共有メモリからコントローラのローカルメモリに移動させても、複数のコントローラ間でデータの入出力制御に必要な制御機能の割り当てに不均衡が生じないように、前記コントローラから必要な制御機能を解放し、解放した制御機能を他のコントローラに割り当てるようにしたことを特徴とするものである。
この発明は、データの入出力制御用に複数のコントローラを有する計算機システムにおいて、プロセッサの制御権限を他のプロセッサに移行し、そして、計算機システムが、コントローラがデータ入出力処理を行う上で必要な制御情報を、共有メモリからコントローラのローカルメモリに移動させても、複数のコントローラ間でデータの入出力制御に必要な制御機能の割り当てに不均衡が生じないようにした計算機システム、及び、その負荷均等化方法を提供することができる。
本発明に係る計算機システムの実施形態を説明するためのハードウエアブロック図である。 図1の計算機システムのコントローラの構成例を示す図である。 コントローラの論理的な構成例を示すブロック図である。 メモリパッケージの論理的な構成例を示すブロック図である。 制御情報のローカル化の概念を示すブロック図である。 キャッシュディレクトリとキャッシュセグメント管理ブロックの構造を示すブロック図である。 クリーンキュー管理情報の構造を示すブロック図である。 ダーティキュー管理情報の構造を示すブロック図である。 フリーキュー管理情報の構造を示すブロック図である。 コントローラへの配置済みフリーセグメント数を管理する情報の構造を示す管理テーブルである。 MPPKフリーセグメント管理情報の管理テーブルの一例である。 共有フリーセグメント管理情報である。 CMセグメント割当てを示すブロック図である。 セグメント配置の例を示すブロック図である。 ストレージサブシステムにフリーセグメントを初期配置する処理を説明するためのフローチャートである。 フリーセグメント配置処理を説明するフローチャートである。 コントローラのフリーセグメントを解放する処理を説明するフローチャートである。 コントローラにフリーセグメントを確保する処理を説明するフローチャートである。 ストレージサブシステムの構成変更時の目標値再設定処理を説明するフローチャートである。 閉塞したコントローラを検出する処理を説明するフローチャートである。 セグメントの配置状況を確認するための画面を示すブロック図である。 本発明の第2の実施形態に係るコントローラの論理的な構成例を示す図である。 ホスト計算機からリードコマンドが発行された場合にストレージサブシステムが実行するリード処理の一例を示すフローチャートである。 ホスト計算機からライトコマンドが発行された場合にストレージサブシステムが実行するライト処理の一例を示すフローチャートである。 ホスト計算機からのアクセスコマンドに対して、ストレージサブシステムがキャッシュセグメントを割り当てる処理の一例を示すフローチャートである。 キュー遷移に基づいて各コントローラに配置するセグメント数をチューニングする処理の一例を示すフローチャートである。 ダーティ率に基づいて各コントローラに配置するセグメント数をチューニングする処理の一例を示すフローチャートである。 各コントローラでのフリーセグメントの目標値を自動調整する経過を表示する画面を示すブロック図である。 各コントローラでのフリーセグメントの目標値を手動でチューニングするための操作画面を説明するブロック図である。 ホストI/Fの論理的な構成例を示すブロック図である。 パス管理テーブルの構造を示すブロック図である。 LDEV番号対応テーブルの構造を示すブロック図である。 フリーセグメントを複数のコントローラ間で移行する動作の概要を説明するブロック図である。 フリーセグメントを、共有状態を介して複数のコントローラ間で移行する動作の概要を説明するブロック図である。
次に本発明の実施形態を、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に記載された発明を限定するものではなく、当業者によって適宜可能なものである。
図1は本発明に係る記憶制御システムの構成例を示すブロック図である。符号100000はホスト計算機200000に対してデータストレージサービスを提供するストレージシステムである。
ストレージシステムは、データストレージ処理におけるコントローラ部としてのストレージサブシステム110000と、記憶装置部170000と、サービスプロセッサ(SVP)180000と、を備えている。
ストレージサブシステム110000において、符号120000はマイクロプロセッサーを含むコントロールユニットとしてのマイクロプロセッサーパッケージ(MPPK)である。MPPKは、一つ以上のマイクロプロセッサー(MP)121000と、一つ以上のローカルメモリ(LM)122000と、を備えている。LMはMPに必要な制御情報を有している。
符号130000は、制御情報の格納領域、及び、ユーザデータの一時格納領域としてキャッシュメモリパッケージ(以下、CMPK、と略称する。)、符号140000は内部ネットワーク、符号150000は一つ以上のホストI/F(インターフェース)、符号160000は一つ以上のディスクI/F、符号170000は複数の記憶装置171000を有する記憶装置部170000である。
記憶制御システムは、ストレージシステム100000と、ホスト計算機200000とを外部ネットワーク300000によって接続している。ストレージシステム100000は、データのリード(読み出し)やライト(書き込み)を行う1以上のホスト計算機200000と外部ネットワーク300000を介して接続される。
外部ネットワークとしては、SAN(Storage Area Network)、LAN(Local Area Network)、インターネット、専用回線、公衆回線等であってもよく、データ通信を行うことのできるネットワークであればよい。
また、ネットワークにおけるプロトコルとしては、ファイバチャネルプロトコルや、TCP/IPプロトコルであってもよく、ホスト計算機200000とストレージシステム100000との間でデータのやり取りが可能なプロトコルであれば、任意のプロトコルであってよい。
ホスト計算機200000は、ストレージシステム100000に対してデータの書き込みまたは読み込みを行うため、I/O(Input/Output)要求をストレージシステム100000に対して送信する。I/O要求は、例えば、SCSI(Small Computer System Interface)のコマンド等であり、リード/ライトの区別を示す情報と、アクセス対象の装置を指し示すSCSIのポート番号と、LUN(Logical Unit Number)、およびアクセス対象領域を指し示すLBA(Logical Block Address)などを含む。
ホストI/F150000は、外部ネットワーク300000に接続される。ホストI/F150000は、例えば、FCのポートである。図示していないが、ホストI/F150000は、データ転送プロセッサを有する。データ転送プロセッサは、CMPK130000からホスト計算機200000へデータを転送する。
ホストI/F150000は、図26に示すように、MPPK120000とLDEVとの対応関係の情報を管理するパス管理情報151000を保持するためのホストI/Fバッファメモリを有する。
ディスクI/F160000は、記憶装置部170000内の複数の記憶装置171000に接続している。ディスクI/F160000は、例えばFC(Fibre Channel)のポートである。図示していないが、ディスクI/F160000は、データ転送プロセッサを有し、データ転送プロセッサは、記憶装置171000とCMPK130000との間でのデータ転送を制御する。
記憶装置部170000内の複数の記憶装置171000は、全て同種類のものであってもよいし、異なる種類が混在したものであってもよい。記憶装置171000として可能なものは、HDD(Hard Disk Drive)やSSD(Solid State Drive)、テープ型記憶装置(例えば、磁気テープドライブ)などである。
ストレージサブシステム110000は、複数の記憶装置171000の記憶空間を基に1または複数の論理ボリュームを形成し、これをLDEV(Logical Devise)としてホスト計算機200000に提供することができる。
例えば、ストレージサブシステム110000は、複数の記憶装置171000のうちの2以上の記憶装置171000からRAID(Redundant Array of Independent Disks)グループを構成し、そのRAIDグループの記憶空間にLDEVを設定する。複数のLDEVの各々には、LDEV番号対応テーブル131600(後に説明する図27B)により、ホスト計算機が認識するLUNが設定されている。
ストレージサブシステム110000の制御部は、図2に示す様に、複数のMPPK12000を有しており、パス管理テーブル151000によって、LDEV毎に、LDEVに対するI/O処理を担当するMPPK120000(「担当MPPK」)が設定されている。LDEVに対する入出力処理を担当するMPPKの権限を、LDEVオーナ権と名付ける。LDEV番号対応テーブル131600は、ストレージ管理者によってCMPK130000の制御情報格納領域に記憶される。
図27Aに示すパス管理テーブル151000は、LUNフィールドと、MPPK番号(MPPK#)フィールドとを含むエントリを有する。パス管理エーブルには、ホストI/F150000に対して指定可能なLUNの数分のエントリを有している。
LUNフィールドには、ホスト計算機がLDEVを参照するためのパス名(識別情報)が格納される。LUNフィールドには、例えば、ホスト計算機との間の通信でSCSI規格を用いている場合には、ロジカルユニット番号が格納される。
一つの同じLDEVに対して複数のLUNが定義されてもよい。各MPPKは、LDEV番号対応テーブル131600と、CMPK130000に一時格納されたホスト計算機のアクセスに含まれるLUNと、を参照して、当該アクセスを自身が処理すべきかどうかを判定する。
図1に戻り説明を続けると、サービスプロセッサ(SVP)180000は、ストレージシステム100000の保守あるいは管理を行うための装置である。サービスプロセッサ(SVP)180000は、例えば、ノート型のパーソナルコンピュータなどの計算機であり、各MP121000の構成情報を設定したり、ストレージサブシステム110000の構成変更に関する設定を実行したり、ストレージサブシステム110000内のMPPK120000等のパッケージに障害が発生したときに、他のMPPKが障害箇所を使用しないように、例えば、パッケージの閉塞などMPPKに関する構成情報の変更など種々の処理を実行する。
内部ネットワーク140000は、MPPK120000、CMPK130000、ホストI/F150000、ディスクI/F160000に接続している。内部ネットワーク140000は、これら複数の要素のうちのどの要素とどの要素とを接続するかの切り替えを行うものであり、例えば、LSI(Large Scale Integration)によって実現される。また、バスによって実現されてもよい。
図2は、ストレージサブシステム110000の詳細なブロック図である。図2は、MPPK120000とCMPK130000とがそれぞれ複数備えること、そして、各パッケージの詳細な構成を示している。
CMPK130000は、制御情報を記録する共有メモリ部(SM:Shared Memory)131000とキャッシュメモリ部(CM)を備え、内部ネットワーク140000によって、MPPKに接続している。CMPKは、揮発性のメモリ、たとえばDRAM(Dynamic Random Access Memory)である。このSM131000とCM132000は、物理的に異なるDRAMから構成されても、物理的に同じDRAMを論理的に分割されることによって構成されてもよい。
CM132000は、記憶装置171000に格納されたホストデータに対するアクセス高速化のために一般的に用いられるキャッシュメモリであり、記憶装置171000に格納されたホストデータの一部を一時的に格納することにより、ホスト計算機200000から頻繁に入出力されるデータに対して、MPK120000が高速にアクセスすることを可能にしている。
CM132000は、メモリ空間を、固定長のセグメントに分割して管理する。このセグメントをキャッシュセグメント(CMセグメント)と呼ぶ。キャッシュセグメントのサイズは、任意のサイズである。例えば、1セグメントサイズは4KB(キロバイト)である。
また、ストレージサブシステム110000は、キャッシュ領域を論理的に分割し、分割した領域ごとに、セグメントのサイズを可変にしてもよい。
SM131000には、CM132000をMPが制御するためのキャッシュ制御情報が格納されている。キャッシュ制御情報は前述のCMセグメントを管理するための情報である。CMキャッシュセグメントの管理構造は後述の図6に示すとおりである。
ストレージシステム100000において、ストレージサブシステム110000内のMPPK120000、CMPK130000、ホストI/F150000などの各構成要素を管理するための構成情報は、SM131000に制御情報として格納される。キャッシュ制御情報と構成情報とを総称して、制御情報、と言うこととする。
MPPK120000は、1以上のMP121000と1以上のLM122000とを備えており、これらは内部バスによって接続されている。
内部ネットワーク140000を介することで、MPPK120000の各MP121000は、他のMPPK120000、CMPK130000、ホストI/F150000、ディスクI/F160000のいずれとも通信可能になる。すなわち、CMPK130000は全MPから参照される。
図27Bは、構成情報として、SM131000に格納されるLDEV番号対応テーブルの例である。LDEV番号対応テーブル131600には、I/F番号(I/F#)フィールド131610と、LUNフィールド131620と、LDEV番号(LDEV#)フィールド131630とからなるエントリが格納されている。
I/F#フィールド131610には、ホストI/F150000の識別番号が格納される。LUNフィールド131620には、ホスト計算機200000がLDEVを参照するために指定する論理ユニット番号が格納される。LDEV#フィールド131630には、同じエントリのI/F番号が受信した、同じエントリのLUNに対応するLDEVの識別情報(LDEV番号)が格納される。
このLDEV番号対応テーブルによって、MP121000は、ホストI/F150000から受け取った入出力要求に係るLUNと、入出力要求とともに受け取ったホストI/F150000の番号とに基づいて、LDEV番号を特定できる。
LDEV番号対応テーブル131600は、SM131000と、LM122000に格納される。SM131000に格納されるLDEV番号対応テーブル131600は、ストレージシステム100000の全てのLDEVに対応するエントリを有している。一方、LM122000に格納されるLDEV番号対応テーブル131600は、LM122000が属するMPPK120000がオーナ権を有しているLDEVに対応するエントリを有している。
MP121000は、自己の属するMPPK120000のLM122000のLDEV番号対応テーブル131600を参照することにより、オーナ権を有し、入出力要求の対象となるLDEV番号を迅速に特定することができる。
図3は、MPPKの論理的な構成の例を示すブロック図である。LM122000は、MP121000により実行される処理のプログラムやデータを記憶する領域として、あるいは、MP121000による処理に使用されているデータを格納する作業領域である。複数あるMPの各MP121000は、LM122000に格納されたプログラムを実行することにより、ホスト計算機200000からホストI/F150000を介して受信したリードコマンドやライトコマンドを処理する。MP121000が実行するリード処理及びライト処理を図19及び図20を用いて後に説明する。
MP121000は、制御情報初期設定処理121100、フリーセグメント再配置処理121200、MPPKフリーセグメント解放処理121300、MPPKフリーセグメント確保処理121400、そして、構成変更時のフリーセグメント再配置処理と、を実行する。
LM122000は、キャッシュディレクトリ122100、セグメント管理ブロック(SGCB)122200、スロット属性管理情報122300、配置済みフリーセグメント数管理情報122400、MPPKフリーセグメント管理情報122500、さらに、LDEV番号対応テーブル122600と、を備えている。これらの詳細を、後述の説明の中で明らかにする。
図4は、CMPK130000の論理的な構成例を示すブロック図である。SM131000は、キャッシュディレクトリ131100、セグメント管理ブロック(SGCB)131200、はMPPKフリーセグメント管理情報131300、共有フリーセグメント管理情報131400、構成情報131500、さらに、LDEV番号対応テーブル131600と、を有している。CM132000はCMセグメント132100を有している。
図5はSM1310000の制御情報をLM122000にローカル化することを示すブロック図である。ローカル化とは、MP121000が、SM131000上の制御情報をLM122000にコピーし、同時にSM131000のローカル化した情報に、他のMPがアクセスすることを排他するロック情報を設定することをいう。
このように、MP121000から遠いSM131000から、MP121000と同一のパッケージ内にあるLM122000にコピーされた制御情報によって、各MPは制御情報へのアクセス時間を短縮しながら制御情報をリードすることができる。
なお、MPPKの障害時にLMのデータが失われないようにするために、MPはLM上の情報を更新するときは、同時にSMのデータも更新することとする。
ただし、LMの容量はSMと比較して小さいため、ストレージサブシステム110000はSMの制御情報の全てをLMで管理することはできない。そこで、ストレージサブシステムは、ローカル化する制御情報を、各MPPKがオーナ権を持つLDEVに関するものと、「フリー」という属性を備えるキャッシュセグメント(フリーセグメント)などキャッシュセグメントに関するものに限定する。
フリーセグメントとは後述のように、ダーティデータ又はクリーンデータを格納していない属性をもったCMセグメントをいう。フリーセグメントには、特定のMPPKに割り当てられる属性を持ったものと、全てのMPPKに割り当て可能であり、共有のものとしてSMにおいて管理される属性を持ったものとがある。後者を前者と区別するために、共有フリーセグメント、と名付けることとする。
図5に示すとおり、フリーセグメントに関連する制御情報には、セグメント管理ブロック(SGCB)、MPPKフリーセグメント管理情報と、がある。LDEVに関連する制御情報は、LDEV番号対応テーブル、キャッシュディレクトリがある。
これら制御情報をLM122000に存在するかSM131000に存在するかで区別する。キャッシュディレクトリについては、SMに格納されたものをSMキャッシュディレクトリ131100、LMに格納されたものをLMキャッシュディレクトリ122100と呼ぶ。
セグメント管理ブロック(SGCB:Segment Control Block)については、SMに格納されたものをセグメント管理ブロック(SM SGCB)131200と、LMに格納されたものをセグメント管理ブロック(LM SGCB)122200と呼ぶ。
MPPKフリーセグメント管理情報については、SMに格納されたものをMPPKフリーセグメント管理情報(SM)131300と、LMに格納されたものをMPPKフリーセグメント管理情報(LM)122500と呼ぶ。
LDEV番号対応テーブルについては、SMに格納されたものをLDEV番号対応テーブル(SM)131600と、LMに格納されたものをLDEV番号対応テーブル(LM)122600と呼ぶ。
さらに、LM122000は、LMでのみ管理される制御情報として、スロット属性管理情報122300と配置済みフリーセグメント数管理情報122400とを有している。SM13100は、SMにおいてのみ管理される制御情報として、共有フリーセグメント管理情報131400と、構成情報131500と、を有している。
図6はCMセグメントの管理構造の一例を示すブロック図である。CMセグメント管理構造とは、MPがスロット番号からキャッシュセグメント管理ブロック(SGCB:Segment Control Block)を特定するためのデータ構造である。LM122000に格納される管理構造とSM13100に格納された管理構造は同一であるため、図6では、便宜上、SMの管理構造を図示し、これを説明することとする。以後同様な場合にはこのようにする。
管理構造は具体的にはハッシュテーブルを利用するものであるため、キャッシュディレクトリ131100には、ハッシュテーブルを介して、SGCB131200への複数のポインタ(SGCBポインタ)が格納される。
スロット番号とは、LDEVを分割した管理単位であり、ホスト計算機からのコマンドで指定されているアクセス先情報、例えばLUN及びLBAから算出される。
スロットサイズは、例えば、CMセグメントのサイズと同じであるか、又は、CMセグメントサイズのN倍(Nは2以上の整数)である。後者の場合、セグメントアドレスには、N個のCMセグメントのそれぞれのアドレスが記述される。SGCB131200は、CMセグメントがどのスロットに割り当てられているかを管理するためのデータ構造である。
SGCBポインタ131100はスロット番号をハッシュ化したハッシュ値である。スロット番号は他の方式で圧縮されてもよい。
MPがキャッシュディレクトリたどることによって、ホスト計算機がアクセス対象とするスロット番号に関するデータがどのCMセグメントに関するものであるかが分かる。
ハッシュテーブルによって、スロット番号をハッシュ化したハッシュ値そのものがキャッシュディレクトリのインデックスとなるため、MPは、SGCBがキャッシュディレクトリのどこに入っているかが直ちに分かる。
キャッシュディレクトリは、SM131000と、LM122000に格納されている。ハッシュテーブルはLDEV毎に用意されており、SM131000に格納されるSMキャッシュディレクトリ131100は、ストレージシステム100000の全てのLDEVに対応するハッシュテーブルを有している。一方、LM122000に格納されるLMキャッシュディレクトリ122100は、LM122000の属するMPPK120000がオーナ権を有しているLDEVに対応するハッシュテーブルのみを有している。
セグメント管理ブロック(SGCB)は、SM131000とLM122000に格納される。SM131000に格納されるセグメント管理ブロック(SM SGCB)131200は、ストレージシステム100000内の全てのキャッシュ(CM)132000のセグメントに対応している。一方、LM122000に格納されるセグメント管理ブロック(LM SGCB)122200は、LMの属するMPPKがオーナ権を有しているキャッシュセグメントに対応する。
各MPPKが使用できるCMセグメント数は、各LM上の配置済フリーセグメント数管理情報122400内の目標値122410として設定される。なお、配置済フリーセグメント数管理情報122400については、図8に基づいて後述される。
図6に示すように、SM SGCB131200には複数種類の情報要素が記述されている。SM SGCB131200には、SGCBポインタ131210、双方向キューポインタ131220、スロット番号131230、セグメントアドレス131240、スロット属性131250、ダーティビットマップ131260、ロックワード131270、及び、キュー遷移時刻131280が記述されている。
SGCBポインタ131210は、既述のとおり、スロット番号をハッシュ化したハッシュ値である。
双方向キューポインタ131220は、後述するスロット属性のLRU(Least Recently Used)管理構造において、どのSGCBと論理的に繋がるかを表す値であり、双方向に繋がるため2つのポインタを有するものである。MPは、この双方向キューポインタから、あるSGCBに論理的に繋がっている2つの他のSGCBのうち、どちらがLRU側に近い方でどちらがMRU(Most Recently Use)側に近い方であるかを特定することができる。
セグメントアドレスは、CMセグメントのキャッシュメモリ内での場所を表す。スロット属性とは、スロットに対応したセグメントの属性(ダーティ、クリーン、フリー)であり、LMに存在する。“クリーン”とは、記憶装置171000に格納済みのデータ(クリーンのデータ)を記憶しているセグメントに対する属性である。
“ダーティ”とは、記憶装置171000に未だ格納されていないデータ(ダーティのデータ)を記憶しているセグメントに対する属性である。
“フリー”とは、データの格納先の候補となるセグメントに対する属性である。すなわち、MPがCMにデータを格納する場合には、複数のセグメントの中から、セグメントの属性が“フリー”であるセグメントを選択してデータを一時格納し、その格納されたデータに対する制御ステイタスの相違によって、データが格納されたセグメントの属性が、“フリー”から、その後“クリーン”或いは“ダーティ”に変更される。
MPは、セグメントの属性が“クリーン”である複数のセグメントから、フリー化しても良いセグメントを選択し、選択されたセグメントのサブ領域の属性を、“クリーン”から“フリー”に変更する。これを“フリー化”と呼ぶ。属性が“フリー”であるキャッシュセグメントを既述のとおり“フリーセグメント”と呼ぶ。なお、MPPKが、フリーセグメントを利用する権限をLDEVに対する権限と同様にオーナ権と呼ぶこととする。
MPは、定期的に、“ダーティ”に分類されたセグメントのダーティデータを記憶装置171000に格納する。格納後、セグメントの属性を“ダーティ”から“クリーン”に変更する。
セグメントの属性が“フリー”になると、MPはフリーセグメントをキャッシュディレクトリから解放する。解放されたフリーセグメントはオーナ権を持つMPPKの制御下に置かれる。
一方、MPは、属性が「ダーティ」、又は、「クリーン」であるキャッシュセグメントを、キャッシュディレクトリを介して、ホスト計算機がアクセス対象とするスロット番号に対応付ける。このように、MPPKは、オーナ権を所有するLDEVに関係付けられたCMセグメントを制御・処理する。
ダーティビットマップ131260は、例えば、スロットに対応したCMセグメントを複数の領域に分割した場合に、各領域に対応したビットの集合である。MPは、ダーティデータが存在する領域に対応したビットを有効(例えば「1」)とし、そうでない領域に対応したビットを無効(例えば「0」)とする。
ダーティビットマップ131260は、ホスト計算機から発行されたライトコマンドにおけるデータの書込み単位サイズが、セグメントサイズと一致しない場合に有用である。具体的には、例えば、セグメントサイズが、書込み単位サイズのM倍(Mは2以上の整数)の場合には、一つのセグメントにつきM個のビットの集合でダーティビットマップが構成される。
SCSIにおいて、ホスト200からのアクセス(I/O)最小単位は512バイトであるため、セグメントサイズは4kbであれば、ダーティビットマップは8ビット(4kB/512B=8bit)となる。
ロックワード131270とは、ローカル化が適用されたMPPKを特定するための情報で、例えば、ローカル化が適用されたMPPK番号を含む。
キュー遷移時刻131280とは、SGCBがスロット属性管理キューに接続した時刻である。
図7A〜図7Cは、それぞれキャッシュディレクトリ131100の管理構造の一例である。図7Aは「クリーン」であるデータを管理するためのキュー(クリーンキュー)の管理構造を示すブロック図である。「クリーン」のデータの管理にはLRU管理が適用される。
LRU管理は、キューを用いて、CM13200に存在する「クリーン」のデータのLRUが管理されることによって達成される。MRUポインタとLRUポインタとの間に、スロット属性131250が「クリーンである」セグメント管理ブロック(SGCB)が順番に連結される。
クリーンキューのLRUポインタ122310Aに繋がっているSGCB122200から特定されるCMセグメントに記述されたデータが、CMセグメントに存在する「クリーン」のデータのうち最も過去に使われたデータであることを示す。
キューのLRUポインタ122310Aに繋がっているSGCB122200が、最後に使用、すなわち、MPにアクセスされてからの経過時間が、クリーンキューのLRU時間(クリーンLRU時間)である。
クリーンLRU時間は、クリーンキューのLRUポインタ122310に繋がっているSGCB122200内で管理されているキュー遷移時刻と、現在時刻との差を計算することによって得られる。
逆に、クリーンキューのMRUポインタ122310Bに繋がっているSGCB122200から特定されるCMセグメントに記述されたデータが、MRU、すなわち、最近使われたデータであることを示す。新たにCMのデータが利用される(アクセスされる)度に、その利用に対応したSGCB122200が、MRUポインタ122310と、それに繋がっているSGCB122200との間に挿入される。
図7Bは「ダーティ」であるデータを管理するためのキューの構造を示すブロック図である。これは、図7Aと同様であり、CM上に存在する「ダーティ」のデータのLRU/MRUを管理する。ダーティキューのLRUポインタ122320Aに繋がっているSGCB122200が、最後に使用されてからの経過時間がダーティキューのLRU時間(ダーティLRU時間)である。
図7Cはフリーセグメントを管理するためのキュー(フリーキュー)の構造を示す図である。スロット属性が“フリー”に属するSGCBが管理されればよく、LRU/MRUの管理は不要である。
したがって、双方向キューポインタに含まれる2つのポインタのうち片方が使用され、他方のポインタには、例えば、無効を意味する値が設定される。フリーキューポインタ12230から、スロット属性が「フリー」の一以上のSGCBが連結される。この連結構造の末尾のSGCBには、末尾を意味する値、例えば、NULLが関連付けられている。
図8は配置済みフリーセグメント数管理情報12240(図5)の一例である。配置済みフリーセグメント数管理情報は、目標値122410、配置済み(フリー)セグメント数122420、再配置予定(フリー)セグメント数122430を含む。
目標値122410は各MPPKにどれだけのフリーセグメントを配置するかを定義した値であり、ストレージサブシステムの管理者が構成情報を初期設定する時、又は、ストレージサブシステムの構成を変更する時などのタイミングで更新される。後者の例としては、CMPKを増設する場合である。このとき、新たに追加されたキャッシュメモリ容量を、各MPPKに均等に割り当てるように目標値を変更する。
配置済みセグメント数は通常は一定であり、かつ目標値と一致している。しかし、MPPKのLDEVに対するオーナ権を他のMPPKに移転する場合には、配置済みセグメント数が増減する。LDEVオーナ権を移行する契機は、例えば、MPPKを増減設するときなどであり、その目的は、MPPK間でLDEVに対するI/O負荷を均衡化するためである。LDEVオーナ権を移行するときには、SMからLMにローカル化している、LDEVオーナ権に属する制御情報を移行先のMPPKのLMにコピーする必要がある。ここで、LDEVオーナ権に属する制御情報とは既述の通り、LMキャッシュディレクトリ122100、LMキャッシュディレクトリに関連付けられている、LM SGCB122200、LDEV番号対応テーブル122600である。LMキャッシュディレクトリに関連付けられているLM SGCB122200とは、ホストが該LDEVに対してアクセスしたデータがキャッシュされているセグメント、すなわちセグメントの属性がクリーン、もしくはダーティのSGCBのことを指す。LDEVオーナ権を移行するときには、これら全ての制御情報を移行先MPPKのLMに移動する。この結果、LDEVオーナ権移行元のMPPKの配置済セグメント数が、クリーンもしくはダーティ属性のセグメント数だけ減少する。同時に移行先のMPPKの配置済セグメント数が、同じだけ増加することになる。このように、LDEVオーナ権を移行することによって、MPPK間のI/O負荷は均一になるが、MPPKごとの割当済セグメント数は不均一となってしまい、配置済セグメント数が減少したMPPKのキャッシュ利用効率が低下し、性能が低下するという問題がある。
配置済みセグメント数122420は、各MPPKに割り当てられたセグメント数を管理する情報である。配置済みセグメント数122420は、各MPPKのセグメント管理ブロック(LM SGCB)122200の総数を計算することで求められる。
再配置予定セグメント数122430は、複数のMPPK間でフリーなキャッシュセグメントを再配置する際に、MPPKに確保、もしくは、MPPKから解放しなければならないキャッシュセグメント数のことであり、目標値122410と配置済みセグメント数122420の差の絶対値に相当する。
通常、目標値と配置済みフリーセグメント数は一致しており、再配置予定セグメント数は0である。一方、既述したように、MPPKのLDEVに対するオーナ権が移転された場合のように、目標値と配置済みフリーセグメント数が異なった場合には、図12で示すフリーセグメント配置処理によって、配置済みセグメント数が目標値に一致するようにフリーセグメントの再配置処理を行う。
図9AはMPPKフリーセグメント管理情報(131300,122500)(図5)の管理テーブルの一例である。一つのテーブルが1つのMPPK分のテーブルに相当する。MPPKフリーセグメント管理情報131300は、各MPPKに配置済みのフリーセグメント(MPPKフリーセグメント)を管理するための情報である。MPPKフリーセグメント管理情報は、各MPPKにどのフリーセグメント配置されているかを管理するためである。特にMPPKが閉塞したときに、SM上のMPPKフリーセグメント管理情報を参照することで、閉塞したMPPKに割り当てられていたフリーセグメントを特定し、そのフリーセグメントを他のMPPKが引き継ぐことが可能になる。
MPPKフリーセグメント管理情報は、SMに記録されているが、これをLMにコピーすることによりMPはMPPKフリーセグメント管理情報を迅速に参照できる。
LM122000で管理するMPPKフリーセグメント管理情報をMPPKフリーセグメント管理情報(LM)122500、SM131000で管理するそれをMPPKフリーセグメント管理情報(SM)131300として区別すべきことは、図5において説明したとおりである。
LMに格納されているのは、LMが属するMPPK用のMPPKフリー管理情報である。これに対して、SMには、全MPPK用のMPPKフリー管理情報が記録されている。両者のデータ構造は同じであるため、図9にはMPPKフリーセグメント管理情報(SM)131300を代表して図示した。
図9Aに示す様に、フリーセグメントはビットマップによって管理される。すなわち、あるMPPKに配置済みで、かつ、スロット属性がフリーに分類されたセグメントにビット「1」がセットされ、フリーでなく、ダーティ又はクリーンである属性を持ったセグメントに「0」がセットされる。全てのセグメントに対するビット情報からビットマップが定義される。このビットをMPPKフリーbit131310と名付ける。
セグメント番号131320はSGCB内のセグメントアドレス131240に対して一意に決定される番号であり、ストレージサブシステム内のCMセグメント固有の番号である。セグメント番号は、セグメントアドレスに対して連続するように定義されてもよい。例えば、セグメントアドレスをセグメントサイズで割れば連続した番号になる。なお、フリーセグメントに関する管理をビットマップによるものではなく、図7A〜図7Cに示すように、キューによって達成してもよい。
図9Bは共有フリーセグメント管理情報テーブル131400(図5)である。共有フリーセグメント管理情報テーブル131400は、どのMPPKにも配置されておらず、どのMPPKも使用可能な属性を持ったフリーセグメント(共有フリーセグメント)を管理するための管理情報である。共有フリー管理情報はLMにローカル化されることなくSMに存在する。
キャッシュセグメントが共有フリーの属性に該当するか否かは、図9Aに示す、MPPKフリーセグメント管理情報と同様に、図9Bに示すとおり、ビットマップによって管理される。なお、このビットを共有フリーフリーbit 131410と名付ける。
なお、念のため、共有フリーセグメント管理情報のセグメント番号131320は、MPPKフリーセグメント管理情報のセグメント番号131320と共通であることを付言する。
図10Aは「CMセグメント割当て」を示すブロック図であり、図10Bは「セグメント配置」を説明するブロック図である。そこで、両者の相違について説明する。
「CMセグメント割当て」は、図6に示す様に、キャッシュディレクトリ131100にSGCB131200を接続する動作のことである。キャッシュディレクトリに、SGCBを接続することにより、ホスト計算機200000がアクセス対象とするLDEVのスロット番号がCMセグメントに対応付けられ、データがCMセグメントに転送されるようになる。「CMセグメント割当て」処理の詳細を、図21を用いて後述する。
「セグメント配置」とは、特定のMPPKがSM上のSGCB(SM SGCB)をロックし、かつロックしたSGCBをLMにコピーすることである。MPは、自己の属するMPPKのLM上のSGCBを参照することにより、オーナ権を有している、CMセグメントに対して排他的に、ホスト計算機200000がアクセス対象とするLDEVのスロット番号を対応付ける。
「セグメント配置」には「セグメント再配置」の処理も含まれる。「セグメント再配置」の処理を図12において後に説明する。なお、MPPKは、LMのセグメント管理ブロック(SM SGCB)131200を参照することによって、SMのSM SGCB131200を参照する場合に比べて、CMセグメントへ迅速にデータを転送することができる。
以下、図1に係るシステムに関連する複数の動作について説明する。図11は、制御情報を初期設定するためのフローチャートである。なお、図11を含め、後述のフローチャートにおいては、ステップを「S」と略記する。制御情報初期設定処理(図3:121100)は、ストレージ管理者がストレージサブシステム100000を最初に起動する際に、MPが実行する処理である。MPは、ストレージシステム100000の構成情報、例えば、ストレージシステムに搭載しているMPPK120000の数やキャッシュ(CM)132000の容量に基づき、SM131000とLM122000に制御情報を設定する。なお、制御情報初期設定処理121100はストレージシステム100000内の1つのMPによって実行される。なお、初期設定時、例えば、全CMセグメントを均等割りして、各MPPKに割り当てておく。
ステップ121101では、MPは、構成情報131500を元にストレージサブシステム100000内の全CMPKに搭載されているCMの容量を計算し、全容量に対するセグメント管理ブロック(SM SGCB)131200をSMに定義し、SGCB内の各情報の値を初期化する。
ステップ121102では、MPは、MPPKフリーセグメント管理情報(SM)131300を全MPPK数分定義し、さらに、この管理情報を各MPPKのLMに設定する。この時点ではどのフリーセグメントもMPPKに配置されていないため、全てのセグメント番号に対応するMPPKフリーbit(図9A)は0である。そして、共有フリーセグメント管理情報131400をSMに対して定義する。この時点では全てのセグメント番号に対応する共有フリーbitは1(図9B)である。
ステップ121103では、MPは、パス管理テーブル151000(図27A)とLDEV番号対応テーブル(図27B)に従って、LDEVに対するオーナ権を持っているMPPKを特定し、このMPPKがオーナ権を有しているLDEVに対するエントリをLDEV番号対応テーブル(SM)131600からLDEV番号対応テーブル(LM)122600にコピーする。
ステップ121104では、図5に示すように、MPは、パス管理テーブル151000に従って、SMキャッシュディレクトリ131100の内、MPPKがオーナ権を所有しているLDEVに対するエントリを、LMキャッシュディレクトリ122100として当該MPPKが所有するLMにコピーする。
ステップ121105では、MPは、各MPPKのLM122000内の配置済フリーセグメント数管理情報122400を設定する。具体的には、各MPPKに配置するフリーセグメント数を計算し、目標値122410フィールドと、配置済みセグメント数122420フィールドに登録する(図8)。
各MPPKに配置するフリーセグメント数は、例えば、ストレージシステム100000の全CMPK内の全セグメント数を全MPPK数で均等割りした値とする。
ステップ121106では、図5に示すように、MPは、配置済フリーセグメント数管理情報122400に従って、各MPPKに配置されたフリーセグメントに対するセグメントを、SMのセグメント管理ブロック(SM SGCB)131200の中から特定し、特定されたセグメントのSGCBを、SM SGCBからリードして、このセグメントが配置されたMPPKのLMのセグメント管理ブロック(LM SGCB)122200にコピーする。
ステップ121107もステップ121106と同様に、SMのMPPKフリーセグメント管理情報(SM)131300をMPPKフリーセグメント管理情報(LM)122500にコピーする。
図12はフリーセグメント配置処理のフローチャートである。フリーセグメント配置処理121200は、図11で説明した、セグメントを各MPPKに初期設定した後、各MPPKに配置されているフリーセグメント数があらかじめ設定しておいた目標値122410と一致しているかどうかを判定するものであって、不足していれば目標値に一致するようにフリーセグメントをMPPKに対して確保し、反対に過剰であれば、MPPKからフリーセグメントを共有フリーに解放する。
この処理は、図11の初期配置処理中にも実行され、そして、その後のストレージシステムの通常動作時にも、MPが所定の閾値を参照しながら、一定時間間隔で繰り返し実行される。管理者が構成情報を変更する際には、MPは、所定の閾値に基づくことなく、構成変更時のフリーセグメント配置処理121500を強制実行する。
フリーセグメント配置は全MPPK上で行なわれるが、各MPPK上の全MPが行う必要はなく、代表MP1つがフリーセグメント配置処理を行えばよい。以下、ある一つのMPPKの1MPがこの処理を実行するものとして説明するが、他のMPPKにおいても同様の処理が行なわれる。また、MPPK上の代表MP1つは、予め決めておいてもよいし、処理の都度異なるMPに代わってもよい。
以下、フローチャートを説明する。ステップ121201では、MPは、配置済みセグメント数122420を、自MPPKのセグメント管理ブロック(LM SGCB)122200の総数から計算する。そして、求めた配置済みセグメント数を配置済フリーセグメント数管理情報122400(図5、図8)に登録する。
ステップ121202では、MPは、ステップ121201で求めた配置済みセグメント数が、自MPPKの目標値122410(図8)と一致しているかどうかを調べ、フリーセグメントの再配置が必要かどうかを判定する。一致していれば、再配置の必要が無いため、何もせずに終了する。もし、一致していなければ再配置を実施する。
ステップ121203では、MPは、MPは再配置予定セグメント数122430を求め、配置済フリーセグメント数管理情報122400(図8)に登録する。ここで、再配置予定セグメント数122430は、既述の通り、目標値122410と配置済セグメント数122420の差の絶対値を計算することで求められる。
ステップ121204では、MPは、配置済セグメント数が目標値と比べて大きいかどうかを判定し、その後の処理を決定する。配置済セグメント数のほうが目標値よりも大きいときは、自MPPKに必要以上のセグメント数が配置されている状態である。
なお、目標値は、(1)ユーザが何らかの理由により直接変更する、(2)構成変更に伴い割当量が変わる、(3)後述する自動チューニング処理、の契機で決まる。
MPは、目標値に一致させるためにMPPKフリーセグメント解放処理121300(図3、図13)を呼び出し、ローカル化しているセグメント、即ち、MPPKに配置されているセグメントのうち再配置予定セグメント数122430だけのMPPKフリーセグメントを、フリー状態のセグメントはそのまま、ダーティ状態のセグメントをクリーン状態を経てフリー状態に変更し、また、クリーン状態のセグメントをフリー状態に変更するようにして、MPが属する自MPPKに対する割り当てから解放してこれを共有フリー状態にする。このとき、キャッシュヒット率を維持するために、共有フリー状態にするセグメントは、フリー状態、クリーン状態、ダーティ状態、の順で選ぶこととする。
逆に、MPは、配置済セグメント数のほうが目標値よりも小さければ、MPPKフリーセグメント確保処理121400(図3、図14)を呼び出し、不足しているセグメント数に相当する数の共有フリーセグメントを自MPPKに割り当てることによって、自MPPKに確保する。
図13はMPPKフリーセグメント解放処理(図1)のフローチャートである。この処理は各MPPKの代表MPによってMPPK毎で実行される。ステップ121251では、MPは自MPPK内のMPPKフリーセグメント数と再配置予定セグメント数122430(図8)とを比較し、解放可能なMPPKフリーセグメントが再配置予定セグメント数だけあるかどうかを判定する。ここで、再配置予定セグメント数122430は、既述の通り、目標値122410と配置済セグメント数122420の差の絶対値を計算することで求められる。
MPは、MPPKフリーセグメント数を、MPPKフリーセグメント管理情報(LM)122500を参照しMPPKフリーbit(図9A)が「1」であるセグメント番号の数を合計することにより求める。判定の結果、MPPKフリーセグメント数が再配置予定セグメント数よりも大きければ,MPはステップ121255に進む。MPPKフリーセグメント数が再配置予定セグメント数よりも小さければ、ステップ121252に進む。
ステップ121252では、MPは、既述のとおり、セグメントの属性が“フリー”ではないセグメント(“クリーン”、もしくは“ダーティ”)をフリー化する。優先度的にはまず“クリーン”のセグメントをフリー化する。
その際、不足分のセグメント数分、クリーンキューのLRUポインタに繋がっているSGCBをデキューする(S121252)。そして、ステップ121253に進む。ここで、不足分のセグメント数は、配置予定セグメント数-MPPKフリーセグメント数で求められる。
ステップ121253では、MPはデキューしたSGCBをフリーキューにエンキューする、すなわちフリーキューポインタ122330に繋ぐ。
ステップ121254では、MPはMPPKフリーセグメント管理情報(LM)122500(図5)を参照し、ステップ121253でフリー化したセグメント番号に対応するMPPKフリーbitを1にする。そして、MPはMPPKフリーセグメント管理情報(SM)131300(図9A)を同様に更新する。そして、ステップ121255に進む。
ステップ121255では、MPは、再配置予定セグメント数だけ共有フリー化する。具体的には、MPは、共有フリー化したいフリーセグメントに対応するSM SGCBのロックワード131270(図6)を破棄し、ロックを解放する。その後、MPは、望ましくは、LM SGCBを破棄する。そして、ステップ121256に進む。
ステップ121256では、MPはMPPKフリーセグメント管理情報(LM)122500(図9A)を参照し、ステップ121255で共有フリー化したセグメント番号に対応するMPPKフリーbitを0にする。さらに、MPはMPPKフリーセグメント管理情報(SM)131300(図5)を同様に更新する。そして、ステップ121257に進む。
ステップ121257では、MPは共有フリーセグメント管理情報131400(図9B)を参照し、ステップ121255で共有フリー化したセグメント番号に対応する共有フリーbitを「1」にする。そして、ステップ121258に進む。
ステップ121258では、MPは、配置済フリーセグメント数管理情報122400(図8)を参照し、配置済みフリーセグメント数を更新する。
図14は、MPPKフリーセグメント確保処理のフローチャートである。各MPPKの代表MPがこのフローチャートを実行する。ステップ121271では、MPは共有フリーセグメント数を取得する。具体的には、MPはSM上の共有フリーセグメント管理情報131400(図9B)の共有フリーbitが1であるセグメント番号の個数を数える。そしてステップ121272に進む。
ステップ121272では、MPは再配置予定セグメント数が0と一致するかどうかを判断する。一致すれば、確保すべきセグメント数を全て確保したと判断し、処理を終了する。一致しなければステップ121273に進む。
ステップ121273では、MPは共有フリーセグメント数が0に等しいかどうかを判断する。等しければ、すぐに確保可能な共有フリーセグメントが無いと判断し、処理を終了する。等しくなければステップ121274に進む。ここで、本実施例とは別に、共有フリーセグメント数が0に等しいときに、他のMPPKがMPPKフリーセグメントを解放し、共有フリー化するまで待つということも考えられる。しかし、その待ち時間によりMPの稼働率が低下するため、ストレージサブシステムの性能低下の要因となる。フリーセグメント再配置処理は、性能チューニングを目的とした処理のため、極力、ストレージサブシステムの性能に影響しないことが望ましい。そこで、本実施形態では既述の通り、すぐに確保可能な共有フリーセグメントが無ければ、すぐにフリーセグメント確保処理を終了する。このとき必要なフリーセグメントを全て確保できなくても、一定時間毎にフリーセグメント再配置処理が呼び出されるため問題ない。ただし、必要な数のフリーセグメントを確保するまでの時間が大きく伸びる可能性はある。
なお、フリーセグメント確保処理の基本方針は、以下の通りである。共有フリーセグメントがあれば1つずつセグメントを確保する。再配置予定数分確保できれば処理を終了する。再配置予定数分確保できなくても共有フリーセグメントが0になれば処理を終了する。図28で説明しているが、MPの待ち時間を排除するために、他のMPPKからセグメントが解放されるのをここでは待たない。ここで確保できなくても、一定時間たてばフリーセグメント再配置処理が動くので、その時点でもう一度確保できるかを判定する。
ステップ121274では、MPは共有フリーセグメント管理情報131400を参照し、共有フリーbitが1であるセグメントを1つ選ぶ。MPは、そのセグメント番号の共有フリーbitを0にする。そして、ステップ121275に進む。
ステップ121275では、MPはステップ121274で選んだセグメント番号に対応するSM SGCBのロックワードを設定する。そして、ステップ121276に進む。
ステップ121276では、MPはステップ121274でロックしたSGCBをLMにコピーする。そして、ステップ121277に進む。
ステップ121277では、MPはMPPKフリーセグメント管理情報(LM)122500(図5、図9A)を参照し、121274で選んだセグメント番号に対応するMPPKフリーbitを1にする。そして、ステップ121278に進む。
ステップ121278では、MPは配置済フリーセグメント数管理情報122400(図8)を参照し、割当済セグメント数を1増やし、再配置予定セグメント数を1減らす。そして、ステップ121272に戻る。MPは、S121272において、共有フリーセグメントが配置予定セグメント数分MPPKフリーセグメントになるまで、ステップを繰り返す。
図15は、ストレージサブシステムの構成変更時の目標値再設定処理のフローチャートである。
構成変更とは、例えば、ストレージ管理者が、CMPK130000を増設することにより、ストレージシステム全体のキャッシュメモリを増やす場合である。
この処理は、サービスプロセッサ(SVP)180000がストレージシステムの構成変更を検出したときに呼び出される。この処理はサービスプロセッサ(SVP)180000が指定した、ストレージシステム内の代表MPが実行する。
ステップ121511では、MPは、閉塞検出処理121530を呼び出し、閉塞中のMPPKが無いかを調べ、もしあれば閉塞中のMPPKからフリーセグメントを回収する。この閉塞検出処理を、図16を参照して後に説明する。
ステップ121512では、MPは構成情報131500(図4)を参照し、各MPPKに配置するセグメント数を再計算する。例えば、具体的には、制御情報初期設定処理121100(図11)と同様に、ストレージシステム100000内の全セグメント数を閉塞していない全MPPK数で均等割りした数のセグメントを各MPPKに配置する。
ステップ121513では、MPは、全MPPK内のLMにある配置済フリーセグメント数管理情報122400(図8)を参照し、目標値としてステップ121512で求めたセグメント数を設定する。
ステップ121514では、MPは、フリーセグメント再配置処理121200(図3)を呼び出し、フリーセグメントの再配置を行う。
図16は閉塞検出処理のフローチャートである。この処理はサービスプロセッサ(SVP)180000が指定した、ストレージシステム内の代表MP1つが実行する。
ステップ121531では、MPは閉塞中のMPPKの有無を判定する。閉塞中のMPPPKがなければステップ121534に進む。有れば、ステップ121532に進む。
ステップ121532では、MPは閉塞中のMPPKに配置済みのセグメントを全てフリー化する。ダーティセグメントはクリーン化した上でフリー化される。
MPはSM SGCB(図6)を順番に参照し、閉塞中のMPPKがロックしているSGCBを検索する。閉塞中のMPPKがロックしているSGCBがあれば、MPは共有フリーセグメント管理情報131400(図9B)を参照し、そのSGCBに対応するセグメント番号の共有フリーbitを1にする。そして、そのSGCBのロックワードを破棄する。同様にして、全てのSM SGCBを検索する。
ステップ121533では、MPは、閉塞中のMPPKの配置済フリーセグメント数管理情報122400(図8)を参照し、配置済セグメント数を0に変更する。
ステップ121534では、MPは閉塞中のCMPKの有無を判定する。閉塞中のCMPPKが有れば、ステップ121535に進む。
ステップ151535では、MPは、各MPPKに対して、各MPPKがローカル化しているSGCBのうち、閉塞中のCMPK上のセグメントを無効化するように指示を送る。具体的には、LM SGCB内のセグメントアドレスを参照し、閉塞中のCMPK上のセグメントかどうかを判断する。閉塞中のCMPK上のセグメントがあれば、そのセグメントに対応するLM SGCBを破棄する。
ステップ121536では、MPは配置済フリーセグメント数管理情報122400を参照し、割当済セグメント数をステップ121535において破棄した数だけ減らす。
図17はセグメント配置状況を確認する画面を示す図である。代表MPは、各MPPKから必要な情報を取得し、これをSM(図2)に記録する。SVP180000は、この情報を取得して画面情報を形成し、これを管理画面として表示端末装置に出力する。管理画面は、MPPK毎に目標値、配置済みセグメント数、クリーン・ダーティセグメント数を管理ユーザに対して提供する。
なお、図17は初期配置処理完了直後の管理画面であり、配置済みセグメントの属性は全て“フリー”である。すなわち、クリーン・ダーティセグメント数は最少である。
次に本発明の他の実施形態について説明する。既述の実施形態は、各MPPKに配置するフリーセグメント数、すなわち、目標値を初期設定時、もしくは構成変更時に設定していた。以下に示す実施形態は、複数のMPPK毎にキャッシュメモリの利用状況を監視し、ストレージシステム全体のキャッシュ利用効率を最大化させるような目標値を自動的に設定することを特徴とするものである。
既述の通り、MPPKごとのI/O負荷はLDEVオーナ権を適切に移行することによって実現可能であるが、同じI/O負荷でもアクセスパターンによって、キャッシュの使い方が異なるため、同じI/O負荷に対して同じキャッシュサイズを用意しても、キャッシュヒット率は一定とならない。例えば、I/Oのパターンが、連続したデータへのシーケンシャルアクセスの場合には、次にアクセスされるアドレスが予測可能なため、少ないキャッシュサイズでも効率よくキャッシュヒット率を上げることが可能である。一方、アクセス対象となるデータの範囲が広い、ランダムアクセスのような場合にはキャッシュサイズが大きいほどヒット率が高くなる。このように、キャッシュ利用効率を最大化させるためにはアクセスパターンに応じて各MPPKに配置するセグメント数を調節する必要がある。
図18はこの実施形態における制御部(MPPK)の論理的な構成例を示すブロック図である。図3と同じ構成には同一の符号を付し、その説明を省略する。以下、図3との相違点についてのみ説明する。
ホストI/O処理121600は、ホストI/F150000がホスト計算機200000から受信したホストコマンドを処理するものである。受信するホストコマンドには、リードとライトがあり、それぞれ図19、図20を参照して後述する。また、CMセグメント割当て処理121700も、図21に基づいて後述する。
セグメント動的再配置処理121800は、ストレージシステム全体でのキャッシュ利用効率を最大化させるような目標値を、それぞれのMPPKに自動的に設定する処理のことである。目標値の決定方法として、最大化させるための指標によって、複数の実現方式が存在する。これを、図22、図23に基づいて後述する。
図19は、ホスト計算機200000からストレージサブシステム11000にリードコマンドが発行された場合に実行される処理の一例を示す。
ステップ121611及びS121612では、MPは、キャッシュヒット/ミスの判定を行う。具体的には、例えば、MPは自身のMPPKのLMに格納されているキャッシュディレクトリを参照し、スロット番号に対応したSGCBの有無の判定を行う。対応したSGCBが有る場合はステップ121615に進む。対応したSGCBが無い場合はCMフリーセグメント割当て処理121700を行い、スロット番号に対して、CMセグメントを割り当てる。この処理については、後に、図21を参照して説明する。
ステップ121613では、スロット番号によって特定される、記憶装置171000上のデータ領域から、処理121700で割当てられたCMセグメントへ、データの転送を行う。
ステップ121614は、クリーン属性の設定を行う。具体的には、前記SGCB内で管理しているスロット属性を“クリーン”に設定する。
ステップ121615は、キューの遷移を行う(図6)。具体的には、MPは、前記SGCB122200を、CMクリーンキューのMRUポインタ122310Bに繋げ、前記SGCB内で管理するキュー遷移時刻を、このステップを実行した時刻に更新する。このように、リードコマンドによって、MPがCMセグメント上のデータにアクセスする毎にキュー遷移時刻を更新する。
ステップ121616は、MPが、前記SGCBに記録されているセグメントアドレスから、リードコマンド送信元が要求しているデータを格納しているCMセグメントを特定する。そして、MPは、特定したCMセグメントから、リードコマンドの送信元のホスト計算機へ、データを転送する。
ステップ121617では、MPがレスポンス(例えば読出し完了)をホスト計算機に対して送信する。
図20はホスト計算機からライトコマンドが発行された場合に、MP121000が実行する処理の一例であるフローチャートである。
ステップ121621では、ステップ121611と同様に、MPがキャッシュヒット/ミスの判定を行う。ヒットの場合はステップ121625に進む。ミスの場合はステップ121623に進む。
ステップ121623において、MPは、ダーティのデータが過多であること、例えば、スロット属性“ダーティ”のSGCBの数が所定値に達していることを検出した場合には、ステップ121628に進み、ダーティセグメントがクリーン化されるまで一定時間待つ。もし、検出されなければ、CMセグメント割当て処理121700を行う。この処理については、後に、図21を参照して説明する。
ステップ121624は、ダーティ属性の設定、ダーティビットの設定を行う。ダーティ属性の設定とダーティビットの設定は、例えば、具体的には、MPが、データ転送先のCMセグメントに対応したSGCBに、スロット属性“ダーティ”を設定し、且つ、SGCBにおけるダーティビットマップにおいて、そのCMセグメントに対応するビットを有効にすることにより実行される。なお、この段階で、ダーティとするのは、CMセグメントに書かれたデータが、未だ記憶装置にライトされていないためである。
ステップ121625では、MPは、キュー遷移を行う。キュー遷移をステップ121614と同様にして行う。具体的には、前記SGCB122200を、ダーティキューのMRUポインタ122320Bに繋げ、前記SGCB内で管理するキュー遷移時刻を、本ステップを実行した時刻に更新する。
ステップ121626では、MPが、CMセグメント割当て処理121700で割当てられたCMセグメントに、ホスト計算機からのライトコマンドに従うデータを転送する。つまり、CMセグメントにデータが書込まれる。
ステップ121627では、MPがレスポンス、例えば、書き込み完了、を送信する。
なお、図20とは別に、MPは、CMセグメントに書き込んだデータに対してパリティを計算して記憶装置171000に書き込み、CMセグメントに空きを作る処理も実行する。その際、MPはダーティキューのLRU側から順にSGCBをデキューし、記憶装置171000にCMセグメント内のデータを書き込み、クリーンキューにエンキューする。その際、ダーティキューからデキューして、ダーティLRU時間を更新する。
図21は、フリーセグメント割当て処理の流れの一例を示すフローチャートである。この処理を複数のMPPK毎に代表MPが実行する。ステップ121701では、MPは、フリーキューに、SGCBがあるかどうかを判断する(図7C)。有れば、ステップ121701に進み、無ければ、ステップ121702に進む。
ステップ121704では、MPはフリーキューからSGCBを外す、換言すれば、フリーキューポインタに繋がっているSGCBをデキューする。そして、ステップ121705に進む。
ステップ121705では、MPは、ステップ121704でデキューしたSGCBのセグメント番号に対応するMPPKフリーbit(図9A)を1にする。
ステップ121702では、MPは、クリーンキューから、LRUポインタに繋がっているSGCBをデキューし、クリーンLRU時間を更新する。例えば、このクリーンLRU時間を用いることで、MPは、各MPPKのキャッシュの利用効率を評価することができる。
クリーンLRU時間が短いことは、ホストからのリード要求が頻繁に来ている、すなわち、キャッシュの利用効率が高いことになる。一方、クリーンLRU時間が長いことは、キャッシュセグメントの利用効率が低いことになる。このように、クリーンLRU時間を用いることによって、MPPKごとのキャッシュの利用効率が評価される。
ホスト計算機がリードコマンドを頻繁に発行するときは、CMセグメント内のデータが頻繁に入れ替わるため、クリーンLRU時間が短くなる。逆に、ホストからのコマンド要求が少ないときは、CMセグメントはキューに接続し続けるため、クリーンLRU時間は長くなる。
ステップ121703では、MPは、ディレクトリ接続解除を行う。具体的には、MPは、LMキャッシュディレクトリ122100と、デキューされたSGCB122200との関連付けを解除する。
ステップ121706では、MPは、ディレクトリ接続を行う。具体的には、MPは、今回の格納先となるスロット番号及びそれのハッシュ値(SGCBポインタ)をSGCBに記録することで、LMキャッシュディレクトリ122100と、そのSGCB122200とを関連付ける。
図22は、MPがクリーンLRU時間に基づいて各MPPKに配置するセグメント数を自動的にチューニングする処理の一例を示すフローチャートである。既述のとおりクリーンキューのLRUポインタ122310に繋がっているSGCB122200内の、キュー遷移時間を、クリーンキューのLRU時間(クリーンLRU時間)と呼ぶ。
このフローチャートは、特に、クリーンLRU時間が短いMPPKに対して、クリーンLRU時間が長いMPPKからセグメントを割り当てる処理である。クリーンLRU時間が短いときは、ホスト計算機からのリード要求が頻繁に発行されていることが推定されるため、MPPKにフリーなキャッシュセグメントを優先的に割り当てることが、MPPKのキャッシュヒット率の向上につながることが期待できる。
一方、クリーンLRU時間が長いことは、キャッシュセグメントの利用効率が低い状態であるとの推定につながる。よって、配置済のCMセグメントの一部をMPPKから解放しても、キャッシュの利用効率は大きく減少しないことが期待される。
図22の処理は、ストレージサブシステム内の代表MP1つによって実行される。ステップ121811では、MPが全MPPKの中で、最小のクリーンLRU時間を持つMPPK番号と、最大のクリーンLRU時間を持つMPPK番号とを特定する。
ステップ121812では、ステップ121811で特定した、最大のクリーンLRU時間と最小のクリーンLRU時間の差が閾値以上かどうかを判定する。この閾値は、例えば、最大のキュー接続時間の30%とする。もし、閾値以下ならば、フローチャートを終了する。閾値以上ならば、ステップ121813に進む。
ステップ121813では、MPは、クリーンLRU時間が最大のMPPKのフリーセグメントの配置に関する目標値を、固定量分、例えば、ストレージシステム内の全セグメント数の1%だけ、減らす。
ステップ121814では、MPは、クリーンLRU時間が最小のMPPKの目標値を固定量分、例えば、ステップ121813で減らしセグメント数と同じか、それ以下の値だけ増やす。
MPは、目標値に対する係るチューニングを行うことによって、リードのヒット率が高いと期待できる、即ち、キャッシュの利用効率が高いMPPKに優先的にCMセグメントを配置する。
図23はダーティ率に基づいて、各MPPKに配置されるセグメント数を自動的にチューニングする処理の一例を示すフローチャートである。ダーティ率とは、各MPPKに配置済みの総セグメント数に対する、スロット属性が“ダーティ”であるSGCB数の比率のことである。すなわち、ダーティ率は、記憶装置に書き込まれていない状態のデータに関する管理情報である。
この処理は、ストレージシステム内の代表MP1つによって実行される。ステップ121821では、MPが、全てのMPPKのダーティ率を計算し、ダーティ率が第一閾値(具体的には例えば、70%)以上、かつ、ダーティLRU時間が平均よりも短いMPPKが存在するかどうかを判定する。
存在しなければ、MPは処理を終了する。存在すれば、ステップ121822に進む。MPは、ダーティLRU時間が平均より長いMPPKをセグメント確保対象から除外する。これによって、ダーティデータを記憶装置に吐き出す上でのスループットが低いためにダーティデータを溜めており、即ち、キャッシュを低い利用効率で運用するMPPKがキャッシュセグメントを消費しないようにする。
ステップ121822では、MPが、ダーティ率が第二閾値、例えば、30%以下、かつ、クリーンLRU時間が平均よりも長いMPPKが存在するかどうかを判定する。存在しなければ、フローチャートを終了する。存在すれば、ステップ121823に進む。MPは、クリーンLRU時間が平均より短いMPPKをセグメント解放対象から除外して、キャッシュの利用効率が高いと期待できるMPPKにフリーセグメント配置数が減少しないようにする。
ステップ121823では、MPが、ダーティ率が最小のMPPKの目標値を固定量分、例えば、ストレージシステム内の全セグメント数の1%だけ、減らす。ステップ121824では、MPが、ダーティ率が最大のMPPKの目標値を固定量分、例えば、ステップ121813で減らしたセグメント数と同じか、それ以下の分増やす。
このように、MPは、ライトのデータ流入量が多いなどにより、ダーティデータを溜めているMPPKに、CMセグメントを優先的に配置して、そのMPPKのライトレスポンス性能がCMセグメントの不足によって低下しないようにする。
図24は、MPPKの目標値の自動調整の経過を表示する管理画面を示すものである。管理画面では、図17と同様にMPPK毎に目標値、配置済みセグメント数、クリーン・ダーティセグメント数を管理ユーザに対し提供する。
図24は、各MPPKに性能チューニングを適用することにより、各MPPKの目標値が変更になった直後の画面であることから、各MPPKの目標値が全ては一致していない。なお、管理確認画面に、セグメントの再配置が途中であることを管理ユーザが管理できるようする表示があってもよい。
図25はMPPKに目標値を手動にて設定して、MPPKに配置されるフリーセグメントをチューニングする画面である。この管理画面を、システム管理者は、サービスプロセッサ(SVP)180000によって確認する。管理画面は、図17と同様にMPPK毎に目標値、配置済みセグメント数、クリーン・ダーティセグメント数をユーザに確認できるようにしている。
図25は、さらに、各MPPKについて、キュー接続時間183100と、MPPKに配置されるフリーセグメントの目標値の設定内容183200と、を表示している。さらに、図25に係る管理画面は、フリーセグメントの確保が推奨されるMPPKであることの表示、及び、フリーセグメントの解放が推奨されるMPPKであることの表示183300も含んでいる。
図22,23において、キャッシュ利用効率を最大化させるために自動で目標値をチューニングする処理を示したが、目標値チューニングをシステムの管理者が手動で直接行ってもよい。管理者が目標値を変更する手段は、例えば、目標値設定欄183200(図25)にサービスプロセッサ(SVP)180000に搭載されたキーボードなどの入力装置を利用することで実現される。
既述のとおり、ストレージサブシステムは、複数のMPPK間でのフリーセグメントの割り当てを、複数のMPPK間で直接フリーセグメントを受け渡しすることによって達成するのではなく、図9Bに示すように、フリーセグメントを共有フリーというステイタスの集合に設定し、共有フリーセグメントグループからMPPKにフリーセグメントを割り当てていた。
この理由を図28に基づいて説明する。図28Aは、複数のMPPK間でのフリーセグメントの割り当てを実施することを示すブロック図である。ストレージシステムが、矢印で示すように、MPPK#1からMPPK#2に対して、直接CMのフリーセグメントを移動させようとすると、MPPK#2がフリーセグメントの確保処理を完了することと、MPPK#1がフリーセグメントの解放処理を完了することとを同期させなければならず、フリーセグメントの移動において余計な待ち時間が発生する。
これに対して、ストレージシステムが、MPPKから解放されたフリーセグメントを共有フリーセグメントグループに設定し、ここからフリーセグメントをMPPKに割り当てるようにすれば、各MPPKへのフリーセグメントの受け渡しを非同期的に実行することができるために、フリーセグメントの移動に無駄な待ち時間が発生せずMPの稼働率の低下を防ぐことができる。
なお、この明細書おいて、計算機システムとは、ユーザ側の上位計算機及びストレージシステムとを備える記憶制御装置を示す他、ストレージサブシステム、又は、ストレージサブシステムと記憶装置とからなるストレージシステムを意味する。
100000:ストレージシステム
110000:コントローラ部
120000:制御部(MPPK)
121000:MP
122000:LM
130000:共有メモリ部(CMPK)
140000:内部ネットワーク
150000:ホストインタフェース(I/F)
160000:ディスクインタフェース(I/F)
170000:ディスクアレイ装置
180000:管理端末(SVP)
200000:ホスト計算機
300000:外部ネットワーク

Claims (12)

  1. ホスト計算機からの記憶装置に対するデータ入出力要求を制御する計算機システムであって、
    第1のマイクロプロセッサと第1のローカルメモリとを有し、前記入出力要求を処理する第1の制御部と、
    第2のマイクロプロセッサと第2のローカルメモリとを有し、前記入出力要求を処理する第2の制御部と、
    複数のセグメントを含むキャッシュメモリを有する共有メモリ部と、
    を備え、
    前記第1のマイクロプロセッサは、前記複数のセグメントのうちの第1の集合を前記第1の制御部に割り当て、前記第2のマイクロプロセッサは、前記複数のセグメントのうちの第2の集合を前記第2の制御部に割り当て、
    前記共有メモリ部は、前記複数のセグメントのうち、前記第1の制御部に割り当てられておらず、かつ、前記第2の制御部に割り当てられていないセグメントを共有状態として管理し、
    前記第1の制御部は、
    前記第1のローカルメモリに、前記複数のセグメントのうち前記第1の制御部に割り当てられるべき前記セグメント数の目標値を設定し、さらに、前記第1の制御部に割り当て済みの前記セグメント数を設定し、前記第1の制御部に割り当てられるべき前記セグメント数の目標値と、前記第1の制御部に割り当て済みのセグメント数とを比較し、当該目標値が当該割り当て済みセグメント数よりも小さい場合、前記第1の制御部に割り当てられた前記第1の集合のうち、データを書き込むことが出来る属性を持ったセグメントを前記第1の制御部から解放し、当該解放したセグメントを前記共有状態とし、
    前記第2の制御部は、
    前記第2のローカルメモリに、前記複数のセグメントのうち前記第2の制御部に割り当てられるべき前記セグメント数の目標値を設定し、さらに、前記第2の制御部に割り当て済みの前記セグメント数を設定し、前記第2の制御部に割り当てられるべき前記セグメント数の目標値と、前記第2の制御部に割り当て済みのセグメント数とを比較し、当該目標値が当該割り当て済みセグメント数よりも大きい場合、前記複数のセグメントのうち前記共有状態のセグメントを、前記第2の制御部に割り当てる、
    計算機システム。
  2. 複数の制御部は、各々ローカルメモリを有し、
    記憶装置の記憶領域を論理化して、これを複数の論理領域に分割してホスト計算機に提供し、
    前記共有メモリは、前記複数の論理領域に対する前記入出力要求の処理を前記複数の制御部に分担させて管理する論理領域管理テーブルを含む制御情報を有し、
    前記制御部は、前記ローカルメモリの各々に、前記論理領域管理テーブルのうち、当該ローカルメモリに対応する前記制御部に割り当てられた前記複数の論理領域に対する管理情報を、前記共有メモリからコピーし、
    前記共有メモリは、前記複数のセグメントと前記複数の論理領域との第1の対応関係テーブルと、前記複数のセグメントの共有状態を管理する第2の対応関係テーブルと、前記複数のセグメントの前記複数の制御部への割り当てを管理する第3の対応関係テーブルと、を備え、
    前記複数のローカルメモリの各々は、前記第1の対応関係テーブルのうち当該ローカルメモリに対応する前記制御部に割り当てられる情報を記録し、
    前記制御部は、前記2の対応関係テーブルの情報に基づいて、前記入出力要求の対象となった前記論理領域に対応する前記セグメントを判定して当該セグメントにアクセスし、前記データを書き込むことができる属性を持った前記セグメントを、前記他の制御部に割り当て可能な共有状態になるように、当該セグメントの割り当てを、前記第3の対応関係テーブルから解放して、さらに、前記第2の対応関係テーブルに登録し、
    前記制御部は、前記複数の制御部のそれぞれのローカルメモリに、前記複数のセグメントのうち当該制御部に割り当てられるべき前記セグメント数の目標値を設定し、さらに、割り当て済みの前記セグメント数を設定し、前記目標値と前記割り当て済みのセグメント数とを比較し、前記目標値が前記割り当て数より大きいことを判定すると、前記第2の対応関係テーブルから前記共有状態にあるセグメントを当該第2の対応関係テーブルから解放し、当該セグメントを前記第3の対応関係テーブルに登録し、前記目標値が前記割り当て数より小さいことを判定すると、前記第3の対応関係テーブルから当該セグメントを解放し、これを前記第2の対応関係テーブルに登録する、
    請求項1記載の計算機システム。
  3. 前記第1の制御部は第1のローカルメモリを有し、前記第2の制御部は第2のローカルメモリを有し、
    前記共有メモリ部は共有メモリを有し、
    前記第1の制御部と前記2の制御部とは、前記記憶装置の記憶領域を論理化して、これを複数の論理領域に分割してホスト計算機に提供し、
    前記共有メモリは、前記複数の論理領域に対する前記入出力要求の処理の前記第1制御部と前記第2制御部間の分担を管理する論理領域管理テーブルを含む制御情報を有し、
    前記第1の制御部は、前記第1のローカルメモリに、前記論理領域管理テーブルのうち、前記第1の制御部に割り当てられた前記複数の論理領域に対する管理情報を、前記共有メモリからコピーし、
    前記第2の制御部は、前記第2のローカルメモリに、前記論理領域管理テーブルのうち、前記第2の制御部に割り当てられた前記複数の論理領域に対する管理情報を、前記共有メモリからコピーする、
    請求項1記載の計算機システム。
  4. 前記共有メモリは、前記複数のセグメントと前記複数の論理領域との第1の対応関係テーブルと、前記複数のセグメントの共有状態を管理する第2の対応関係テーブルと、前記複数のセグメントの前記複数の制御部への割り当てを管理する第3の対応関係テーブルと、を備え、
    前記第1のローカルメモリは、前記第1の対応関係テーブルのうち前記第1の制御部に割り当てられる情報を記録し、
    前記第1の制御部は、前記第2の対応関係テーブルの情報に基づいて、前記入出力要求の対象となった前記論理領域に対応する前記セグメントを判定して当該セグメントにアクセスし、前記データを書き込むことができる属性を持った前記セグメントを、前記共有状態になるように、当該セグメントの割り当てを、前記第3の対応関係テーブルから解放して、さらに、前記第2の対応関係テーブルに登録する、
    請求項3記載の計算機システム。
  5. 前記マイクロプロセッサは、
    前記データが書き込まれる属性を持ったセグメントの目標値と、当該セグメントの割り当て数と、を比較し、
    前記目標値が前記割り当て数より大きいことを判定すると、前記第2の対応関係テーブルから前記共有状態にあるセグメントを当該第2の対応関係テーブルから解放し、当該セグメントを前記第3の対応関係テーブルに登録し、
    前記目標値が前記割り当て数より小さいことを判定すると、前記第3の対応関係テーブルから当該セグメントを解放し、これを前記第2の対応関係テーブルに登録する、
    請求項記載の計算機システム。
  6. 前記マイクロプロセッサは、前記キャッシュメモリの全てのセグメント数を複数の制御部の全数で均等割りして得た値を、前記目標値として、各制御部に対して設定する、
    請求項記載の計算機システム。
  7. 前記マイクロプロセッサは、前記複数の制御部に対してクリーンデータのLRUを比較し、当該比較結果に基づいて、前記複数の制御部の少なくとも一つのマイクロプロセッサの前記目標値を変更する、
    請求項記載の計算機システム。
  8. 前記制御部は前記LRUが最小の制御部と、前記LRUが最大の制御部とを特定し、
    前記LRUが最小の制御部の前記目標値を減らし、
    前記LRUが最大の制御部の前記目標値を増加させる、
    請求項記載の計算機システム。
  9. 前記マイクロプロセッサは、前記複数の制御部に対して、データがダーディデータであるセグメントの割合を求めてこれらを比較し、当該比較結果に基づいて、複数の前記制御部の少なくとも一つの制御部の前記目標値を変更する、
    請求項記載の計算機システム。
  10. 前記マイクロプロセッサは、前記複数の制御部に対してクリーンデータのLRUを比較し、
    前記ダーティデータであるセグメントの割合に対する比較と、前記LRUに対する比較とに基づいて、前記複数の制御部の少なくとも一つの制御部の前記目標値を変更する、
    請求項記載の計算機システム。
  11. 第1のマイクロプロセッサと第1のローカルメモリとを有し、前記入出力要求を処理する第1の制御部と、
    第2のマイクロプロセッサと第2のローカルメモリとを有し、前記入出力要求を処理する第2の制御部と、
    複数のセグメントを含むキャッシュメモリを有する共有メモリ部と、
    を備える計算機システムの負荷均等化方法において、
    前記複数のセグメントのうちの第1の集合を前記第1の制御部に割り当て、前記複数のセグメントのうちの第2の集合を前記第2の制御部に割り当て、
    前記複数のセグメントのうち、前記第1の制御部に割り当てられておらず、かつ、前記第2の制御部に割り当てられていないセグメントを共有状態として管理し、
    前記第1のローカルメモリに、前記複数のセグメントのうち前記第1の制御部に割り当てられるべき前記セグメント数の目標値を設定し、さらに、前記第1の制御部に割り当て済みの前記セグメント数を設定し、前記第1の制御部に割り当てられるべき前記セグメント数の目標値と、前記第1の制御部に割り当て済みのセグメント数とを比較し、当該目標値が当該割り当て済みセグメント数よりも小さい場合、前記第1の制御部に割り当てられた前記第1の集合のうち、データを書き込むことが出来る属性を持ったセグメントを前記第1の制御部から解放し、当該解放したセグメントを前記共有状態として管理し、
    前記第2のローカルメモリに、前記複数のセグメントのうち前記第2の制御部に割り当てられるべき前記セグメント数の目標値を設定し、さらに、前記第2の制御部に割り当て済みの前記セグメント数を設定し、前記第2の制御部に割り当てられるべき前記セグメント数の目標値と、前記第2の制御部に割り当て済みのセグメント数とを比較し、当該目標値が当該割り当て済みセグメント数よりも大きい場合、前記複数のセグメントのうち前記共有状態のセグメントを、前記第2の制御部に割り当てる、
    計算機システムの負荷均等化方法。
  12. データの入出力制御用に、第1のマイクロプロセッサと第1のローカルメモリとを有し、前記入出力要求を処理する第1の制御部と、
    データの入出力制御用に、第2のマイクロプロセッサと第2のローカルメモリとを有し、前記入出力要求を処理する第2の制御部と、
    複数のセグメントを含むキャッシュメモリと、共有メモリとを有する共有メモリ部と、
    を備える計算機システムの負荷均等化方法において、
    前記記憶装置の記憶領域を論理化して、これを複数の論理領域に分割してホスト計算機に提供し、
    前記複数の論理領域に対する前記入出力要求の処理の前記第1制御部と前記第2制御部分担を管理する論理領域管理テーブルを含む制御情報を有し、
    前記第1のローカルメモリに、前記論理領域管理テーブルのうち、前記第1の制御部に割り当てられた前記複数の論理領域に対する管理情報を、前記共有メモリからコピーし、
    前記第2のローカルメモリに、前記論理領域管理テーブルのうち、前記第2の制御部に割り当てられた前記複数の論理領域に対する管理情報を、前記共有メモリからコピーし、
    前記複数のセグメントのうちの第1の集合を前記第1の制御部に割り当て、前記複数のセグメントのうちの第2の集合を前記第2の制御部に割り当て、
    前記複数のセグメントのうち、前記第1の制御部に割り当てられておらず、かつ、前記第2の制御部に割り当てられていないセグメントを共有状態として管理し、
    前記第1のローカルメモリに、前記複数のセグメントのうち前記第1の制御部に割り当てられるべき前記セグメント数の目標値を設定し、さらに、前記第1の制御部に割り当て済みの前記セグメント数を設定し、前記第1の制御部に割り当てられるべき前記セグメント数の目標値と、前記第1の制御部に割り当て済みのセグメント数とを比較し、当該目標値が当該割り当て済みセグメント数よりも小さい場合、前記第1の制御部に割り当てられた前記第1の集合のうち、前記データを書き込むことが出来る属性を持ったセグメントを前記第1の制御部から解放し、当該解放したセグメントを前記共有状態として管理し、
    前記第2のローカルメモリに、前記複数のセグメントのうち前記第2の制御部に割り当てられるべき前記セグメント数の目標値を設定し、さらに、前記第2の制御部に割り当て済みの前記セグメント数を設定し、前記第2の制御部に割り当てられるべき前記セグメント数の目標値と、前記第2の制御部に割り当て済みのセグメント数とを比較し、当該目標値が当該割り当て済みセグメント数よりも大きい場合、前記複数のセグメントのうち前記共有状態のセグメントを、前記第2の制御部に割り当てる、
    計算機システムの負荷均等化方法。
JP2012503154A 2009-11-19 2009-11-19 計算機システム及びその負荷均等化制御方法 Expired - Fee Related JP5531091B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/006229 WO2011061801A1 (en) 2009-11-19 2009-11-19 Computer system and load equalization control method for the same

Publications (2)

Publication Number Publication Date
JP2012533781A JP2012533781A (ja) 2012-12-27
JP5531091B2 true JP5531091B2 (ja) 2014-06-25

Family

ID=42263945

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012503154A Expired - Fee Related JP5531091B2 (ja) 2009-11-19 2009-11-19 計算機システム及びその負荷均等化制御方法

Country Status (3)

Country Link
US (1) US8341348B2 (ja)
JP (1) JP5531091B2 (ja)
WO (1) WO2011061801A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473136B (zh) * 2010-05-31 2014-12-31 松下电器(美国)知识产权公司 存储器管理装置、存储器管理方法以及集成电路
US8806124B2 (en) * 2011-09-09 2014-08-12 Lsi Corporation Methods and structure for transferring ownership of a logical volume by transfer of native-format metadata in a clustered storage environment
JP6171430B2 (ja) * 2013-03-15 2017-08-02 日本電気株式会社 コンピュータ装置と方法とプログラム
WO2015056332A1 (ja) * 2013-10-17 2015-04-23 株式会社日立製作所 ストレージ装置及び制御方法
WO2015111135A1 (ja) * 2014-01-21 2015-07-30 株式会社日立製作所 ストレージシステムおよび処理方法
JP2015191604A (ja) * 2014-03-28 2015-11-02 富士通株式会社 制御装置、制御プログラム、および制御方法
JP6353981B2 (ja) * 2015-05-14 2018-07-04 株式会社日立製作所 ストレージシステム、及び、記憶制御方法
US9984004B1 (en) * 2016-07-19 2018-05-29 Nutanix, Inc. Dynamic cache balancing
US10333987B2 (en) * 2017-05-18 2019-06-25 Bank Of America Corporation Security enhancement tool for a target computer system operating within a complex web of interconnected systems
JP7197545B2 (ja) * 2020-09-29 2022-12-27 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
JP7266067B2 (ja) * 2021-06-25 2023-04-27 株式会社日立製作所 ストレージシステム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4124612B2 (ja) * 2002-05-01 2008-07-23 株式会社日立製作所 記憶サブシステムの制御方法および記憶サブシステム
JP4141391B2 (ja) * 2004-02-05 2008-08-27 株式会社日立製作所 ストレージサブシステム
JP5106913B2 (ja) * 2007-04-23 2012-12-26 株式会社日立製作所 ストレージシステム、ストレージシステム管理方法、及び計算機システム
JP5151559B2 (ja) * 2008-02-29 2013-02-27 富士通株式会社 プログラム実行システム

Also Published As

Publication number Publication date
US20110191547A1 (en) 2011-08-04
WO2011061801A1 (en) 2011-05-26
US8341348B2 (en) 2012-12-25
JP2012533781A (ja) 2012-12-27

Similar Documents

Publication Publication Date Title
JP5531091B2 (ja) 計算機システム及びその負荷均等化制御方法
US8566550B2 (en) Application and tier configuration management in dynamic page reallocation storage system
US11347428B2 (en) Solid state tier optimization using a content addressable caching layer
US10120601B2 (en) Storage system and data processing method
US9081690B2 (en) Storage system and management method of control information therein
JP4819369B2 (ja) ストレージシステム
US9792073B2 (en) Method of LUN management in a solid state disk array
JP5073259B2 (ja) 仮想化システム及び領域割当て制御方法
WO2016046911A1 (ja) ストレージシステム及びストレージシステムの管理方法
US9329999B2 (en) Storage system improving read performance by controlling data caching
JP2007041904A (ja) ストレージ装置、ディスクキャッシュ制御方法及びディスクキャッシュの容量割当方法
US9330009B1 (en) Managing data storage
JP2015517697A (ja) 二次記憶装置に基づく記憶領域をキャッシュ領域として用いるストレージシステム及び記憶制御方法
US8954658B1 (en) Method of LUN management in a solid state disk array
US8954666B2 (en) Storage subsystem
JP2007304794A (ja) ストレージシステム及びストレージシステムにおける記憶制御方法
US10372372B2 (en) Storage system
US9104317B2 (en) Computer system and method of controlling I/O with respect to storage apparatus
US8799573B2 (en) Storage system and its logical unit management method
US9547443B2 (en) Method and apparatus to pin page based on server state
JP5597266B2 (ja) ストレージシステム
WO2016181562A1 (ja) ストレージシステム、及び、記憶制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131031

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140421

R150 Certificate of patent or registration of utility model

Ref document number: 5531091

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees