JP5738471B2 - ストレージ装置とそのメモリ制御方法 - Google Patents

ストレージ装置とそのメモリ制御方法 Download PDF

Info

Publication number
JP5738471B2
JP5738471B2 JP2014502679A JP2014502679A JP5738471B2 JP 5738471 B2 JP5738471 B2 JP 5738471B2 JP 2014502679 A JP2014502679 A JP 2014502679A JP 2014502679 A JP2014502679 A JP 2014502679A JP 5738471 B2 JP5738471 B2 JP 5738471B2
Authority
JP
Japan
Prior art keywords
control information
information
processor
memory
master
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
JP2014502679A
Other languages
English (en)
Other versions
JP2014523010A (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 JP2014523010A publication Critical patent/JP2014523010A/ja
Application granted granted Critical
Publication of JP5738471B2 publication Critical patent/JP5738471B2/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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
    • 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/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ストレージ装置及びそのメモリ制御方法に関し、コントローラのクラスタ制御技術に適用して好適なるものである。
クラスタ構成のコントローラ部(以下、CTL)を持つストレージ装置においては、データキャッシュやディスクプールなどを各CTLで共有して使い、それらを管理するために共有メモリ(Shared Memory、以下、SM)が用いられる。ストレージ装置では、SM上の消失が起きてはいけない制御情報(以下、二重化情報)などを、二重化領域と称する領域を用意し、各CTLのうちの二つのCTLに配置されたSM間の値が一致するように二重化して格納する。それ以外の制御情報(以下、非二重化情報)などは、非二重化領域と称する領域に格納する。
特許文献1には、このSMへのすべてのマイクロプロセッサ(Micro-processor、以下、MPU)から同じアクセスコスト(アクセス時間などのアクセス性能)でアクセスすることが出来る技術が開示されている。さらに、特許文献1では、SMキャッシュに関する技術も開示されている。SMキャッシュ技術は、SMアクセスを高性能化するために、MPUがSMより高速にアクセスできるMPUに直結したローカルメモリ(以下、LM)に、SMの内容の一部をキャッシングしておくものである。この技術によりMPUのSMに対するアクセス性能を向上させることができる。また、特許文献1では、前記SM、LMとは異なり、ホスト計算機からのデータやドライブ部からのデータを一時的に格納するキャッシュメモリ(以下、CM)の制御についても開示している。
日本特許公開2010−086211号公報 (米国特許公開2010/0083120号公報)
近年、システム全体のコスト低減のために廉価な汎用ハードウェア部品を使って、デュアルCTLのストレージ装置を構成することが求められている。そのハードウェア構成例として、二つのCTLが、それぞれ、MPU、LM、CTL間接続用のデバイスを備え、両CTLの前記デバイス間は、例えば、5Gbps以上の転送速度が望める高速なバスなどで接続し、MPUに直結しているLMを共有メモリとして使う方法が考えられる。
更に、2つのCTLの内、一方を「自系」CTL、他方を「他系」CTLという呼び、それぞれCTLa、CTLbとして区別する。その場合、CTLaから見てCTLa及びCTLaの各構成要素を「自系」、CTLb及びCTLbの各構成要素を「他系」と呼ぶ。また、CTLbから見ると、CTLbが自系、CTLaが他系である。前記ストレージ装置において、MPUは、前記CTL間接続用のデバイスを介して他系メモリにアクセスすることが可能である。しかしながら、前記アクセスは、CTL間接続用のデバイスを介すため、自系メモリへ直接アクセスする場合に比べ、アクセス性能が劣る。すなわち、自系のアクセスコスト(アクセス時間)と他系へのアクセスコストには差がある。
更に、非二重化情報は、いずれかのSMのみに配置される制御情報である。アクセス性能の低下を防止するには、他系アクセス頻度を低減させる配置方式が必要である。また、二重化情報については、自他系が異なる値を参照するような一貫性の欠如が起こるのを防ぎつつ、高速にアクセス可能な参照・更新方式が必要である。
しかしながら、特許文献1で開示されているSM制御方式では、大容量の異なる種類のメモリが必要で、メモリコストも増加する。更に、異なる種類のメモリを制御するハードウェアも複雑で独自開発の専用部品を用いなければならない。そのため、従来技術では、コスト低減とアクセス性能向上の両立が難しかった。そこで、本発明では、従来以上のアクセス性能でコスト低減を達成するメモリ制御方法とそのシステムを提供することにある。
上記課題解決のために、本発明のストレージ装置では、第1のプロセッサと、前記第1のプロセッサに接続され、前記第1のプロセッサのみがアクセス可能な情報を格納するローカル領域と第1および第2の領域を有する共有メモリ領域とを有する第1のメモリとを有する第1のコントローラと、第2のプロセッサと、前記第のプロセッサに接続され、前記第2のプロセッサのみがアクセス可能な情報を格納するローカル領域と第1および第2の領域を有する共有メモリ領域とを有する第2のメモリとを有する第2のコントローラとを有し、前記第1または前記第2のプロセッサは、第1の制御情報を前記第1及び前記第2のメモリの前記第1の領域に二重書きし、前記第1のメモリの前記第1の制御情報は、前記第1のプロセッサからリードされ、前記第2のメモリの前記第1の制御情報は、前記第2のプロセッサからリードされ、前記第1または前記第2のプロセッサは、第2の制御情報を前記第1及び前記第2のメモリの前記第2の領域に二重書きし、その二重書きされた第2の制御情報のうち一方のみが前記第1及び前記第2のプロセッサからリードされることを許容する。
また、本発明のストレージ装置は、前記第1のプロセッサが前記第1及び前記第2のメモリに二重書きされた前記第1の制御情報を更新する場合、その更新が完了するまで、前記第2のプロセッサが前記第1及び前記第2のメモリの共有領域に対してライトすることを許容しない。
更に、本発明のストレージ装置は、前記複数の論理ユニットの各々には、その論理ユニットに対するI/Oを制御するコントローラとして前記第1または前記第2のコントローラの一方が割り当てられており、前記第2の制御情報が前記複数の論理ユニットのいずれかに固有の制御情報は、その論理ユニットに割り当てられたコントローラの前記第1または前記第2のメモリに書かれたもののみが、前記第1及び前記第2のプロセッサからリードされることを許容する。
加えて、本発明のストレージ装置では、第1の制御情報の更新頻度は第2の制御情報の更新頻度より小さいこと、ないし、第の制御情報の更新回数は所定の閾値より大きい。また、本発明のストレージ装置では、第1の制御情報は論理ユニットのコピーペア情報または装置構成情報のいずれかを含み、前記第2の制御情報は、論理ユニットのコピーペアの差分情報または統計情報のいずれかを含む。
本発明により、廉価な汎用部品でストレージ装置を構築でき、開発・製造コストを削減できる。更に、他系MPUによる自系SMへのアクセスの頻度を減らすことによりSMアクセスの性能を向上できる。加えて、SMキャッシュの対象を他系SMのみに限定することにより、SM間で余分なデータコピーの発生を抑止でき、SMキャッシュメモリ容量の削減によるシステムのコスト低減とI/O性能向上を達成できる。
本発明の実施形態における計算機システムの全体構成を示すブロック図である。 本発明の実施形態におけるMPUメモリ構成図である。 本発明の実施形態におけるソフトウェア構成図である。 ローカルコピーでのペア情報管理テーブルの一例を示す図である。 ローカルコピーでの差分ビットテーブルの一例を示す図である。 ローカルコピーの概念図である。 SMのマッピングを概念的に表したデータ構成図である。 制御情報特性テーブルの一例を示す図である。 制御情報アドレステーブルの一例を示す図である。 LU(Logical Unit)オーナ権テーブルの一例を示す図である。 マスタ面情報テーブルの一例を示す図である。 マスタ面設定処理を示すフローチャートである。 SMリード処理を示すフローチャートである。 排他付きライト処理を示すフローチャートである。 SMライト処理を示すフローチャートである。 ライト確定処理を示すフローチャートである。 SMライトの連続発生時の処理を示すフローチャートである。 SMアトミック処理を示すフローチャートである。 LUオーナ権切り替え時のマスタ面切り替え処理を示すフローチャートである。 本発明の第2の実施形態におけるSMキャッシュメモリのデータ構成図である。 SMキャッシュを使用してのリードアクセス処理を示すフローチャートである。 本発明の第3の実施形態におけるデータキャッシュ管理情報のLUオーナ権による配置を概念的に説明する図である。 データキャッシュ管理情報をLUオーナ権に応じて配置する処理を示すフローチャートである。
以下、図面を参照しながら本発明の実施の形態を説明する。ただし、本実施形態は、本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。また、各図において共通の構成については、同一の参照番号が付されている場合がある。まず、第1の実施例として、アクセス特性またはLUオーナ権に基づいて二重化情報のマスタ面を決定する方式について説明する。次に、第2の実施例として、他系の制御情報のみをSMキャッシュにキャッシングする方式について説明する。最後に、第3の実施例として、データキャッシュ管理情報をそのオーナ権を持つCTLのSM上に配置する方式について説明する。
まず、本発明の第1の実施例であるアクセス特性またはLUオーナ権に基づいて二重化情報のマスタ面を決定する方式を図1から図19で説明する。まず、図1は、本実施例における計算機システムの全体構成を示すブロック図である。図1での計算機システム1は、ホスト計算機2、管理端末3、ストレージ装置4、ネットワーク、例えば、SAN(Storage Area Network)5及びLAN(Local Area Network)6を備えて構成される。ホスト計算機2は、SAN5を介して各ストレージ装置4と接続され、管理端末3は、LAN6を介してストレージ装置4と接続される。なお、ホスト計算機2は、例えば、大型汎用コンピュータ、サーバ、クライアント端末などである。また、管理端末3は、LAN6を介さず直接ストレージ装置4と直接接続してもよい。
図1でのストレージ装置4は、二つのコントローラCTL100a、100bと、コントローラCTL100a、CTL100bで制御されるドライブ部109を備える。以下、CTL100aを「CTLa」とし、CTL100bを「CTLb」とする。また、あるCTL内の構成要素を表現する際に、そのCTLの呼び名の一部を用いる。例えば、CTLaの一構成要素としてのSMを「SMa」と末尾に”a”を付加して呼び、CTLbの一要素としてのSMを「SMb」と末尾に”b”を付加して呼ぶことがある。これにより、同種の要素を区別する際、どちらのCTLにある要素を表しているかがすぐに分かる。
また、CTLa及びCTLbのどちらの構成要素かを区別しないで呼ぶ場合は、末尾の”a”、”b”を付けないで呼ぶ。例えば、MPU101a、101bを区別しない場合は、「MPU101」と呼び、MPUa、MPUbを区別しない場合は、MPUと呼ぶ。
CTLa、CTLbは、それぞれ、MPU101a、101b、MPUメモリ102a、102b、DMA(Direct Memory Access)回路103a、103b、HOST_I/F104a、104b、DRIVE_I/F105a、105b、管理I/F_06a、106b、CTL間を接続するためのデバイスであるNTB(Non Transparent Bridge)107a、107bを備えている。
CTLaとCTLbは、NTB107a、107bを介して、例えば、転送速度5Gbps以上の全二重方式の高速なバス108で接続されており、ユーザデータや制御情報を交換することが出来る。さらにCTLa、CTLbは、HOST_I/F104a、104bを介してホスト計算機2と通信し、DRIVE_I/F105a、105bを介してドライブ部109と通信し、管理I/F_106a、106bを介して管理端末2と通信する。なお、図示していないが、ドライブ部109には複数のLU(Logical Unit)が構成されている。
図2は、本発明の実施形態におけるMPUメモリ構成図である。MPUメモリに格納するプログラム、制御情報、データの構成について、図2と図3で説明する。MPUメモリ102は、テキスト領域10、ローカルメモリ11、共有メモリ(以下、SM)12、キャッシュメモリ13と呼ばれる領域(アドレス範囲)を有し、それぞれの領域にプログラム、制御情報ないし各種データを格納する。なお、CTLaにはMPUメモリ102aを、CTLbにはMPUメモリ102bをそれぞれ設ける。ちなみに、従来技術では、共有メモリとローカルメモリ、キャシュメモリがそれぞれ独立に存在していたが、本発明ではMPUメモリとして1つのメモリに統合している。
図3は、本発明の実施形態におけるソフトウェア構成図である。テキスト領域10には、図3に示すストレージ装置としての処理や機能を実行する各種プログラムを格納する。ローカルメモリ11には、それぞれのCTL上で動く前記プログラムが参照するが、他系のプログラムからは参照されないテーブル等を格納する。ローカルメモリ11には、例えば、マスタ面情報テーブル110などを格納する。SM12には、両CTL間で共有する制御情報を格納する。前記制御情報の中には二重化すべき制御情報、つまり、いずれかのCTLが故障した場合でも、消失することがないように、両CTLのSMに二重に配置する必要がある制御情報と、二重化しない非二重化情報がある。
また、前記制御情報はいずれのMPUから参照しても一貫して同じ値を参照出来る必要がある。SM12に配置する制御情報は、例えば、ペア情報管理テーブル120、差分ビットテーブル121、制御情報特性テーブル122、制御情報アドレステーブル123、LUオーナ権テーブル124などがある。なお、それぞれのLUへのI/O(Input/Output)処理を担当するCTLをオーナCTLと呼び、そのCTLはLUオーナ権を持つと表現する。
キャッシュメモリ13は、ホスト計算機2からのユーザデータないしディスクに格納したユーザデータを一時的に保持する領域である。つまり、アクセスに時間がかかるディスクに毎回アクセスすることを防ぐために、ディスクのユーザデータの一部をディスクよりも短時間にアクセス出来るキャッシュメモリに置いておく。更に、キャッシュメモリは、ホスト計算機2からストレージ装置4へのアクセスの高速化の役割もある。
図3に示すMPUメモリ102のテキスト領域10には、ストレージ装置における各処理を実行するためのソフトウェアであるプログラムを格納する。具体的には、構成管理部21、基本I/O制御部22、SMアクセス制御部23、複数の拡張機能制御部24という各種プログラムをテキスト領域に格納し、MPUが適宜アクセスして実行する。
構成管理部21は、管理端末3からのコマンドや他のプログラムモジュールからの指示などによって、構成管理情報を参照・更新するためのプログラムである。基本I/O制御部22は、ホスト計算機2からの指示を受け、データを参照・更新する処理を実行するためのプログラムである。基本I/O制御部22が実行される際、必要に応じて、プログラムSMアクセス制御部23などを呼び出し、一部の処理を実行させる。SMアクセス制御部23は、構成管理部21や基本I/O制御部22が、SMにアクセスするときに呼び出され、SMの制御情報を参照・更新する処理を実行するためのプログラムである。
拡張機能制御部24は、例えば、後述するローカルコピー、仮想ボリューム機能、スナップショット機能などの拡張機能を実行するプログラムで、機能ごとに独立したプログラムモジュールを構成している。ローカルコピーとは、二つのLUにおいて、一方のLUの内容を他方のLUにコピーする機能であり、ローカルコピー機能では、ペア情報管理テーブルと差分ビットテーブルという制御情報を用いる。
図4は、ローカルコピーでのペア情報管理テーブルの一例を示す図である。図4のペア情報管理テーブル120は、P−VOL(Primary Volume)とS−VOL(Secondary Volumeとのペア状態を管理するテーブルで、ローカルコピーの拡張機能制御部24が参照し、ペア番号1200に対応するP−VOL番号1201、S−VOL番号1202、ペア状態1203で構成する。なお、ペア情報管理テーブルは、コピーペア情報とも呼ばれる。ペア番号は、P−VOLとS−VOLのペアに対するユニークな番号である。
ペア状態には、”同期”と”非同期”という状態があり、”同期”状態では、P−VOLとペアを構成するS−VOLの内容は一致するように制御されている。つまり、P−VOLが更新されると、続いてS−VOLも更新される。”非同期”状態では、P−VOLが更新されてもすぐにはS−VOLの内容は更新されず、ペアに対して、再同期という操作がなされたときに、S−VOLの内容は、P−VOLと一致するように更新される。例えば、ペア番号1200が”0”であるP−VOL1201は”300”であり、ペアを構成するV−VOL1202は”400”となり、現在のペア状態1203は”同期”状態である。
図5は、ローカルコピーでの差分ビットテーブルの一例を示す図である。図5の差分ビットテーブル121は、ローカルコピー機能を制御する拡張機能制御部24が参照し、各ペアのブロック番号に対応する差分ビットを管理するテーブルである。差分ビットによって、ブロック単位での更新を管理しておくことが出来る。差分ビットは、各ペアがブロック毎に持ち、ペア状態が非同期の時に、P−VOLの特定のブロックが更新されると、そのブロックに対応する差分ビットが”0”から”1”へ更新される。例えば、ブロック番号1210が“10000”であるブロックでは、ペア0番1211とペア2番1213は“0”であるので差分は発生していないが、ペア1番1212は“1”であるのでP−VOLとS−VOLとの間には差分が発生している。このように、差分ビットを使って更新情報を管理することで、前記再同期処理が指示された際に、差分ビットが”1”であるブロックのみをコピーすれば良く、全ブロックをコピーする必要がない。なお、差分ビットテーブルは、コピーペア差分情報とも呼ばれる。
図6は、ローカルコピーの動作を示す概念図である。そのローカルコピーの動作を説明する。
(c1)最初に、ホスト計算機2からのアクセスにより、P−VOLのブロック10000−Pとブロック10003−Pとが更新される。
(c2)この時、拡張機能制御部24は、ペア情報管理テーブル120を参照し、ペア1のペア状態が非同期であると分かるため、当該ブロックに対応する差分ビットを更新する。但し、この時、P−VOLの更新データはS−VOLには反映されない。
(c3)ホスト計算機2からストレージ装置4に対し、ペア1における再同期の指示が発行される。
(c4)発行された再同期の指示をストレージ装置4が受信すると、拡張機能制御部24は、差分ビットテーブル121を参照し、差分ビットが”1”であるブロック、つまり、ブロック10000−Pの内容をブロック10000−Sに、ブロック10003−Pの内容を10003−Sにコピーする。
制御情報には、前記ペア情報管理テーブル120や前記差分ビットテーブル121などがあると説明した。ペア情報管理テーブル120は、I/O処理の中で参照されることはあっても更新されることはなく、ユーザからの指示によってのみ更新される。一方、差分ビットテーブル121はI/O処理の度に更新され、更にホスト計算機からの再同期要求で参照・更新される。このように、ストレージ装置4で使用する制御情報には、それぞれライト処理の割合が多い、または、リード処理の割合が多いという特性がある。
次に、ローカルコピー以外の機能についても以下で説明する。まず、仮想ボリューム機能を説明する。仮想ボリューム機能とは、ホストに仮想的なボリュームを見せ、ディスクプールの容量を超えた容量の仮想ボリュームを定義することを可能にする機能である。本機能では、「論理アドレス−物理アドレス変換テーブル」と呼ぶ制御情報を使う。仮想ボリュームのある論理アドレスに対してアクセスが発行された場合に、物理アドレスを当該論理アドレスに割り当て、ホストには物理アドレスに対するアクセスを論理アドレスに対するアクセスのように見せる。この論理アドレスと物理アドレスの対応関係を管理しているのが、論理アドレス−物理アドレス変換テーブルである。
次に、スナップショット機能を説明する。スナップショット機能では、一つのLUをR−VOL(Real Volume)と定義し、それに対応するV−VOL(Virtual Volume)を定義し、これらをスナップショットペアであると定義する。ペアを定義する時、V−VOLはディスクの物理的な領域を持たず、R−VOLの各アドレスに対するリンク制御情報のみを持たせる。そのため、高速にアクセスを実行することが出来て、ディスク容量の消費量も低減できる。
R−VOLが更新されると、Data Poolと定義された別のディスクの領域に、R−VOLの更新されたブロックをコピーし、V−VOL側で対応するブロックはData Pool上の当該ブロックに対するリンクを持つように変更される。スナップショット機能において使用されるR−VOLを指しているリンクの更新が発生すると、リンク制御情報も更新される。また、このリンク制御情報はLUに属するという特性を持っている。つまり、このリンク制御情報を、LUオーナ権を持つCTL上に格納すれば更新と参照を高速に行えるので、ストレージ装置4全体のライト性能とリード性能を向上することが可能である。
図7は、SMのマッピングを概念的に表したデータ構成図である。制御情報A、制御情報B、制御情報C、制御情報Dは二重化情報であるので、二重化領域に格納する。つまり、制御情報Aで説明すると、SM12aの0x1000を開始アドレスとする領域と、SM12bの0x1000を開始アドレスとする領域には、同じ値を格納する。制御情報Mと制御情報Nは非二重化情報であるので、非二重化領域に格納する。非二重化領域では、SM12aの0xF000を開始アドレスとする領域の値と、SM12bの0xF000を開始アドレスとする領域の値を一致させる必要はない。ちなみに、非二重化情報としては後述するデータキャッシュ管理情報などである。
斜線部は、マスタ面を表している。マスタ面とは、MPUa、MPUbの両方が参照(リード)の対象とするSMの領域である。二重化情報は、SMaとSMbで二重化されており、制御情報の内容の一貫性を保証するためには、各MPUが参照する内容を両SMで一致させる必要がある。これは、MPUが参照するマスタ面を決めておくことで、参照する制御情報の内容の一貫性を保証することができる。
このように、ライト比率が高い(更新頻度が大きい)制御情報である制御情報Bと制御情報Cは、図7のように、いずれかのSMをマスタ面に設定し、そのマスタ面の内容をまず更新し参照することを可能とする。これにより、SMの内容を一致させる処理が完了する前に他のMPUがリードできるので、アクセス性能を向上出来る。なお、ライト比率とは、(ライト回数)/(ライト回数+リード回数)で計算される値である。一方、リード比率は、(リード回数)/(ライト回数+リード回数)で計算され、1からライト比率を引くことでも求められる。
また、内容を一致させる処理とは、例えば、排他処理の実行し、他のMPUからの更新を禁止する処理である。また、制御情報がLUに属する制御情報である場合は、LUオーナ権を有するオーナCTLのみが更新できる。そのような制御情報は、オーナCTL上のSMにマスタ面を設定することで、オーナCTL上のMPUは参照時に高速な自系SMを参照出来て、リード性能を向上出来る。
一方、ライト比率が低い(更新頻度が小さい)制御情報の場合は、更新時に、例えば、前記排他処理を実行し、内容の一貫性を保証しつつ更新を完了させて、制御情報Aのように、いずれのSMも参照することを可能にする。このように設定することで、いずれのMPUも自系SMから必要な制御情報を高速に参照できるので、リード性能を向上させることが出来る。以下の説明では、制御情報Aと制御情報Dのような制御情報を「両マスタ情報」と呼び、制御情報Bと制御情報Cのような制御情報を「片マスタ情報」と呼ぶ。
ライト比率が低い制御情報は、両マスタ情報に設定することで参照時の性能向上を期待できる。そのため、例えば、ライト比率が低い制御情報である装置構成情報や前記ペア情報管理テーブル120などの制御情報は、両マスタ情報に設定することが望ましい。この装置構成情報とは、MPUメモリの容量、どのディスクを使ってRAIDグループを構成しているか、各LUのサイズなどの制御情報である。そのため、これら制御情報は、装置構成を変更する時にのみ更新されるので、ライト比率は極めて低くゼロに近い。
ライト比率が高くてLUに属する制御情報は、片マスタ情報とし、かつマスタ面をオーナCTL上のSMに設定する。これにより、制御情報の更新時に排他制御などの処理をせずに制御情報を更新でき、更に、参照時は高速な自系SMを参照出来るようになるため、アクセス性能を向上出来る。この制御情報としては、前記仮想ボリューム機能における論理アドレス−物理アドレス変換テーブルや前記差分ビットテーブル121などが該当する。前記テーブルは、I/O処理中に頻繁に更新されるライト比率が高い制御情報であるため、片マスタ情報に設定することが望ましい。
また、ライト比率は高いがLUに属さない片マスタ情報も、更新時に排他制御などの処理をせずに更新することで、ライト性能を向上できる。例えば、I/Oの頻度などに関する統計情報は、ライト比率は高いがLUに属さない片マスタ情報に該当し、I/O処理の度に更新される。そこで、これらの制御情報は片マスタ情報として設定し、マスタ面は、例えば、ラウンドロビンなどの方式を使って、いずれかのSMにのみマスタ面が偏ってしまわないように設定する。
図8は、制御情報特性テーブルの一例を示す図である。制御情報特性テーブル122は各制御情報の種類別に特性を管理するテーブルで、制御情報名フィールド1220に対応するライト比率フィールド1221、LUに属する制御情報フィールド1222、属するLU番号フィールド1223で構成する。なお、ライト比率フィールド1221には制御情報の更新頻度であるライト比率を、LUに属する制御情報フィールド1222にはLUに属するか否かの情報を、属するLU番号フィールド1223には、LUに属する場合の属するLU番号を格納する。この制御情報特性テーブル122をMPUが参照することで、各制御情報の特性を判定することが出来る。
以上説明したように、各制御情報のライト比率(加えて、ライト比率から必然的に算出されるリード比率(リード比率=1−ライト比率))に基づいて、制御情報を両マスタ情報として設定するか片マスタ情報として設定するかを決定できる。また、ライト比率は、ストレージ装置4のシステム構成時に予め登録しておくことも可能であるし、ユーザによって登録することも可能である。さらに、ライト比率は、ストレージ装置4がモニタリングした情報に基づいて、動的に更新することも可能である。
次に、本発明での両マスタ情報/片マスタ情報の決定方法の一例として、ライト比率とリード比率というアクセス特性を用いた方法を説明する。その決定方法は、各制御情報へのアクセス全体のオーバヘッドを最小とするように、両マスタ情報または片マスタ情報を選択する。
まず、リード比率をCr、ライト比率をCwとする。このリード比率Cr及びライト比率Cwは、ストレージ装置4の構成時に決めることも出来るし、モニタリングによって動的に決めることも出来る。
次に、両マスタ情報設定の時のリードのオーバヘッドをR_double、ライトのオーバヘッドをW_doubleと表す。また、片マスタ情報設定の時のリードのオーバヘッドをR_single、ライトのオーバヘッドをW_singleと表す。
W_doubleは、W_singleに排他制御分(排他付ライト処理分)のオーバヘッドを加算した値である。R_doubleは自系SMリードのオーバヘッドを表し、R_singleもLUオーナ権に基づく制御情報の場合は、自系SMリードのオーバヘッドを表す。LUオーナ権に基づかない制御情報の場合は、自系SMリードと他系SMリードがそれぞれ5割の確率で発生すると仮定して、R_singleは自系SMリードと他系SMリードの平均値をとる。
CTLは、これらの数値を元に、各制御情報における両マスタ情報設定時の全体オーバヘッドOH_doubleと、片マスタ情報設定時の全体オーバヘッドOH_singleを、以下の式1及び式2でそれぞれ求める。求めた2つの値の内、CTLは、小さい方に該当する両マスタ情報または片マスタ情報を選択する。CTLは、選択した結果を、マスタ面情報テーブル110で各制御情報が格納されるアドレスフィールド1100に対応するマスタ種別フィールド1101に格納する。
OH_double=R_double*Cr+W_double*Cw...式1
OH_single=R_single*Cr+W_single*Cw...式2
すなわち、CTLは、OH_doubleよりOH_singleが小さければマスタ種別フィールド1101に片マスタ情報と、逆に、OH_doubleよりOH_singleが大きければマスタ種別フィールド1101に両マスタ情報と設定する。
なお、本実施例では、ライト比率を両マスタ情報/片マスタ情報の決定の判断基準として用いるが、これ以外にも、例えば、システム内の制御情報アクセス比率、絶対値などを用いても構わない。このシステム内の制御情報アクセス比率での判断方法とは、システム内の全制御情報への更新に対して、当該制御情報への更新の比率に基づいて判断する方法である。この判断方法は、同時に使用可能な資源数や更新回数に制限があり、制御情報を排他付きで更新する時などに有効な方法である。
絶対値を使用する判断方法では、更新回数が閾値よりも大きいか小さいかで、両マスタ情報または片マスタ情報を選択する。この判断方法は、判断するプログラムを単純に構成でき、ライト回数のみを取得すれば良いため、ライト回数が動的に変化する場合でもモニタリングのオーバヘッドが少なくて済むというメリットがある。また、前記以外の方法や、前記の判断方法を複数組み合わせても良い。
なお、図8の制御情報特性テーブル122のLUに属する制御情報フィールド1222は、各制御情報がLUに属する制御情報であるかどうかを表す。制御情報フィールド1222が”YES”である場合には、その制御情報の処理を担当するオーナCTLが定められており、属するLU情報が属するLU番号フィールド1223に格納される。例えば、差分ビットテーブル121の属するLU番号は、”202”である。一方、制御情報フィールド1222が”NO”である場合には、属するLU番号は存在(属するLU番号フィールド1223が”NULL”)せず、オーナCTLも定められていない。
図9は、制御情報アドレステーブルの一例を示す図である。制御情報アドレステーブル123は、図7に示す各制御情報を格納するMPUメモリ102でのアドレス領域を管理するテーブルで、アドレスフィールド1230と制御情報名フィールド1231で構成する。なお、MPUは、制御情報アドレステーブル123を参照することで、SMの各アドレスにどのような種類の制御情報が格納されているか、判定することが出来る。例えば、アドレスフィールド1230のアドレス範囲が”0x1000−0x10FF(16進数表記)”には制御情報名1231が”ペア情報管理テーブル”である制御情報が格納されている。また、同じく、”0x1100−0x11FF(16進数表記)”には、制御情報名1231が”差分ビットテーブル”である制御情報が格納されている。ちなみに、図9の”ペア情報管理テーブル”や”差分ビットテーブル”が、図8の制御情報名1220に格納される制御情報名と同一であることは言うまでもない。
なお、アドレスと制御情報名はn対1の関係にあり、ある種類の制御情報が複数のアドレス領域に格納されている場合もある。例えば、ペア情報管理テーブルがそれに該当し、アドレス範囲”0x1400−0x14FF”にも格納されている。また、図7での制御情報A、制御情報B、制御情報C、制御情報Dは、それぞれ、図9のペア情報管理テーブル、差分ビットテーブル、統計情報、装置構成情報に相当する。
図10は、LU(Logical Unit)オーナ権テーブルの一例を示す図である。LUオーナ権テーブル124は、LUを制御できるオーナCTLを管理するもので、LU番号フィールド1240とLUオーナ権フィールド1241で構成する。MPUは、LUオーナ権テーブル124を参照することで、各LUのオーナCTLを判定することが出来る。なお、LU番号とは、それぞれのLUを識別するために割り振られるユニークな番号のことである。LUオーナ権フィールド1241には、”CTLa”か”CTLb”のいずれかを格納する。例えば、LU番号フィールド1240が“201”であるLUのオーナCTLは、LUオーナ権フィールド1241から“CTLa”である。ちなみに、LU番号が“201”の制御情報は、制御情報特性テーブル122から“ペア情報管理テーブル”であると判断できる。
図11は、マスタ面情報テーブルの一例を示す図である。マスタ面情報テーブル110は、図7での各制御情報を格納するMPUメモリ102上のアドレスとマスタ種別とマスタ面との対応関係を管理するテーブルである。マスタ面情報テーブル110は、アドレスフィールド1100とアドレスフィールド1100に対応するマスタ種別フィールド1101とマスタ面フィールド1102とで構成する。マスタ面情報テーブル110は、MPUがSMをアクセスする時に参照し、その参照結果で、MPUが各アドレスに格納される制御情報に対して、どのようにアクセスすべきかを判定する。
マスタ種別フィールド1101には、”片マスタ情報”か、”両マスタ情報”のいずれかを格納する。マスタ面フィールド1102には、片マスタ情報のマスタ面が、”SMa”か、”SMb”のいずれかを格納する。ただし、両マスタ情報のマスタ面の場合、マスタ面フィールド1102は”NULL”とする。ちなみに、マスタ面フィールド1102は、装置起動時は初期値として、全ての制御情報を“両マスタ情報”と設定している。これは、起動時の初期化処理の過程で、MPUがマスタ面情報テーブル110を参照するためである。
図12は、マスタ面設定の処理S1000を示すフローチャートである。MPUからSMへのアクセス性能及びストレージ装置全体のアクセス性能を向上させるためのマスタ面の設定方法を、図12を用いて説明する。マスタ面設定の処理S1000はストレージ装置の起動の初期設定処理であり、MPUがプログラムである構成管理部21を実行して、それぞれの制御情報のマスタ面設定を行う。すなわち、制御情報アドレステーブル123のアドレスフィールド1230毎に、MPUがマスタ面設定の処理S1000を実行し、その処理の結果を図11のマスタ面情報テーブル110に格納する。マスタ面設定の処理S1000の中で、MPUは、制御情報特性テーブル122、制御情報アドレステーブル123、LUオーナ権テーブル124を参照する。なお、図及び以下の処理の説明では明記しないが、これらのテーブルはSM上にある制御情報である。すなわち、MPUがプログラムであるSMアクセス制御部23を実行し、これらテーブルへデータの設定とデータの参照を行う。
MPUがマスタ面設定の処理S1000を実行する時には、SMのアドレス、つまり、図9に示す制御情報アドレステーブル123のアドレスフィールド1230の各行の値(アドレス範囲)を取得する。処理を開始すると、MPUは、最初、図8の制御情報特性テーブル122のライト比率フィールド1221を参照し、前述の式1と式2の両マスタ情報設定時の全体オーバヘッドOH_doubleと、片マスタ情報設定時の全体オーバヘッドOH_singleを計算する(ステップS1001)。次に、MPUは、算出した両マスタ情報設定時の全体オーバヘッドOH_doubleと、片マスタ情報設定時の全体オーバヘッドOH_singleを比較し、片マスタ情報設定時の全体オーバヘッドOH_singleの方が小さいか否かを判定する(ステップS1002)。
判定の結果、片マスタ情報設定時の全体オーバヘッドOH_singleが大きい場合(ライト性能よりリード性能を優先)(ステップS1002:No)は、当該制御情報を両マスタ情報とするため、MPUが、制御情報のアドレスに対応するマスタ種別フィールド1101に“両マスタ情報”と設定するとともに、マスタ面フィールド1102は”NULL”のままとし、処理を終了する(ステップS1004)。
前記”両マスタ情報”と設定する制御情報として、例えば、図8の制御情報特性テーブル122の制御情報名1220が”ペア情報管理テーブル”(図2で共有メモリ12の領域に格納されるペア情報管理テーブル120)や”装置構成情報”などが該当する。そこで、MPUは、ペア情報管理テーブル120ないし装置構成情報が格納されるアドレスフィールド1100の”0x1000−0x10FF”ないし”0x1300−0x13FF”に対応するマスタ種別フィールド1101を”両マスタ情報”と、マスタ面フィールド1101を”NULL”とする。
なお、両マスタ情報は、更新時に、二つのSMの一貫性を保つ排他制御を行う必要があり、その処理のオーバヘッドが大きい。しかしながら、SMaとSMbのどちらからも同一の内容が格納され、MPUそれぞれが、それぞれの自系のSMを参照することが出来るため、高速なリードアクセスが可能で、ストレージ装置4全体のアクセス性能を向上できる。
一方、片マスタ情報設定時の全体オーバヘッドOH_singleが小さい場合(ステップS1002:Yes)は、MPUが、制御情報のアドレスに対応するマスタ種別1101に”片マスタ情報”と設定する(ステップS1003)。前記”片マスタ情報”と設定する制御情報として、例えば、図8の制御情報特性テーブル122の制御情報名1220が”差分ビットテーブル”(図2で共有メモリ12に格納される差分ビットテーブル121)や”統計情報”などが該当する。
すなわち、MPUは、差分ビットテーブルないし統計情報が格納されるアドレスフィールド1100の”0x1100−0x11FF”ないし”0x1200−0x12FF”に対応するマスタ種別フィールド1101を”片マスタ情報”とする。片マスタ情報は、いずれかのSMをマスタ面とするもので、参照時には、他系のSMを読む可能性もあるため、リード性能が両マスタ情報よりも低下する場合がある。しかし、更新時に、二つのSMでの一貫性を保たなくても良い(後述する排他付ライトが不必要)ため、ライト性能は両マスタ情報よりも高い。
次に、MPUが制御情報特性テーブル122のLUに属する制御情報フィールド1222を参照し(ステップS1005)、LUに属する制御情報かどうかを判定する(ステップS1006)。判定の結果、LUに属する制御情報でない(制御情報フィールド1222に”NO”が格納)場合(S1006:No)は、その制御情報を処理するCTLは限定されないため、いずれのCTLないしMPUからでもアクセス可能である。この場合は、マスタ面の数に偏りが生じるのを防ぐために、例えば、MPUは、ラウンドロビンなどのアルゴリズムを用いて、SMaかSMbのいずれかをマスタ面に選び、選んだマスタ面をマスタ面フィールド1102に設定し(ステップS1008)、処理を終了する。
この処理対象の制御情報は、制御情報アドレステーブル123のアドレスフィールド1230が”0x1200−0x12FF”である領域に格納されている統計情報である。そこで、マスタ面情報テーブル110のアドレスフィールド1100が同じ”0x1200−0x12FF”であるマスタ種別1101に”片マスタ情報”と設定し、マスタ面フィールド1102に”SMb”と設定する。
制御情報特性テーブル122のLUに属する制御情報フィールド1222に格納された制御情報が、LUに属する制御情報である場合(S1006:Yes)は、当該制御情報を処理するCTL、つまり、オーナ権を持つCTLは、CTLaないしCTLbのいずれかである。そこで、LUオーナ権があるCTLを判定するために、制御情報特性テーブル122の属するLU番号フィールド1223を参照する(ステップS1007)。ステップS1007で参照した値(LU番号)を用いて、LUオーナ権テーブル124のLUオーナ権フィールド1241を参照し(ステップS1009)、どちらのCTLにLUオーナ権があるかを判定する(ステップS1010)。
例えば、差分ビットテーブルという制御情報名は、制御情報アドレステーブル123のアドレスフィールド1230の値より”0x1100−0x11FF”に配置されている。また、属するLU番号は制御情報特性テーブル122の属するLU番号フィールド1223から”202”となる。そこで、MPUは、そのLU番号フィールド1223の値”202”に該当するLUオーナ権テーブル124のLU番号フィールドの値を検索し、LUオーナ権を有するCTLが”CTLb”であると判断する。
次に、ステップS1010での判定結果により、MPUは、CTLaがオーナ権を持つ場合(ステップS1010:CTLa)はSMaをマスタ面とする。更に、MPUは、マスタ面情報テーブル110のマスタ面フィールド1102に”SMa”と設定して(ステップS1011)、処理を終了する。この場合、当該制御情報に対してのオーナ権を持つCTLaからのSMリードは、他系のCTLbからのSMリードと比べて、高速なアクセスが可能である。
一方、ステップS1010での判定結果で、CTLbがオーナ権を持つ場合(ステップS1010:CTLb)、SMbをマスタ面とし、MPUはマスタ面情報テーブル110のマスタ面フィールド1102に”SMb”と設定して(ステップS1011)、処理を終了する。この場合は、CTLaがオーナ権を持つ場合と逆に、当該制御情報に対してのSMリードは、オーナ権を持つCTLbの方が高速に行うことができる。ちなみに、前述の差分ビットテーブルに対するオーナ権CTLは”CTLb”なので、MPUはマスタ面情報テーブル110のマスタ面フィールド1102に”SMb”と設定する。
MPUは、S1002の判定によって決めたマスタ種別(両マスタ情報 or 片マスタ情報)をマスタ種別フィールド1101に格納し、片マスタ情報に対してS1008もしくは、S1010の判定の結果によって決めたマスタ面(SMa or SMb)をマスタ面フィールド1102に格納する。これにより、制御情報毎にマスタ種別とマスタ面の情報を細かく設定でき、更に必要に応じて情報を更新できるので、MPUによるSM100へのアクセス及びホスト計算機2からのストレージ装置全体4へのアクセス性能の向上ができる。
図13は、SMリード処理S1100を示すフローチャートである。SMへのリードアクセスを図13で説明する。SMリード処理S1100は、MPUがプログラムであるSMアクセス制御部23を実行する際に、実行される処理ルーチンであり、リードする制御情報を識別するため、SMのアドレスが引数として与えられる。最初に、MPUは、引数として渡されたSMのアドレスを用い、マスタ面情報テーブル110のマスタ種別フィールド1101を参照する(ステップS1101)。
次に、参照したマスタ種別フィールド1101の内容が、両マスタ情報か片マスタ情報かを判定する(ステップS1102)。判定の結果、両マスタ情報の場合(ステップS1102:両マスタ)は、いずれのSM(SMa、SMbどちらでもよい)も参照することが可能であるため、高速にアクセスできる自系のSMをリードして(ステップS1104)、リード処理を終了する。
判定結果が片マスタ情報の場合(ステップS1102:片マスタ)は、マスタ面情報テーブル110のマスタ面フィールド1102を参照し(ステップS1103)、どちらのSMがマスタ面かを判定する(ステップS1105)。片マスタ情報は、アクセスするマスタ面(本処理ではリードするマスタ面)を予め決めておくことで、全MPUの間で同じ値を参照でき、内容の一貫性も保証出来る。SMaがマスタ面である場合(ステップS1105:SMa)は、MPUはSMaをリードして(ステップS1106)、リード処理を終了する。SMbがマスタ面である場合(ステップS1105:SMb)は、MPUはSMbをリードして(ステップS1107)、リード処理を終了する。
例えば、MPUaによる差分ビットテーブル121へのリードアクセスの場合、引数として渡されるSMのアドレスの範囲は”0x1100−0x11FF”である。そのため、そのアドレスに対応するマスタ種別フィールド1101の値である”片マスタ情報”とマスタ面フィールド1102の値である”SMa”の情報により、MPUaは自系のSMaを高速にリードできる。また、MPUaによるペア情報管理テーブル120へのリードアクセスでも、自系のSMaをリードできるのでシステムとして高速なアクセスが可能となる。
図14は、SMライト処理S1200を示すフローチャートである。SMへのライトアクセスを図14で説明する。SMライト処理S1200は、MPUがプログラムであるSMアクセス制御部23を実行する過程で、実行される処理ルーチンであり、ライトする制御情報を識別するため、SMのアドレスが引数として与えられる。最初に、MPUは、引数として渡されたSMのアドレスを用い、マスタ面情報テーブル110のマスタ種別フィールド1101を参照する(ステップS1201)。
MPUは、参照した内容が両マスタ情報か片マスタ情報かを判定する(ステップS1202)。判定結果が両マスタ情報の場合(ステップS1202:両マスタ)は、MPUは、図15の排他付きライト処理S1300を実行する。この排他付きライト処理とは、SMa及びSMbの値の一貫性を保つ処理である排他制御をしながら両SMを更新する処理である。
判定結果が片マスタ情報の場合(ステップS1202:片マスタ)は、MPUは、マスタ面情報テーブル110のマスタ面フィールド1102を参照して(ステップS1203)、どちらのSMがマスタ面であるかを判定する(ステップS1204)。
判定の結果、マスタ面がSMaの場合(ステップS1204:SMa)は、マスタ面のSMaを優先して更新するために、まず、SMaにライトする。続いて、SMbにライトし(ステップS1205)、ライト処理を終了する。判定の結果、マスタ面がSMbの場合(ステップS1204:SMb)も、同様の理由で、マスタ面のSMbを優先して更新するために、まず、SMbにライトする。続いて、SMaにライトし(ステップS1206)、ライト処理を終了する。
図15は、排他付きライト処理S1300を示すフローチャートである。前述の排他付きライト処理(図14のステップS1300)を図15で説明する。排他付きライト処理S1300は、SMライト処理S1200や後で説明する連続SMライト処理S1400の処理の過程で実行され、処理開始時に、ライトするSMのアドレスが引数として与えられる。排他付きライト処理は、前記SMライト処理で説明したように、SMaとSMbの内容の一貫性を保つために行う処理である。
まず、本処理の必要性について説明する。例えば、CTLa上のMPUaとCTLb上のMPUbが、ほぼ同時に、SMaとSMbの同じアドレスに対して異なったデータでライトを発行すると、書き込みアドレスに対するSMaの内容とSMbの内容が異なり不一致が発生する。つまり、MPUaからのライトは、最初に自系であるSMaの更新を完了した後、SMbを更新する。反対に、MPUbからのライトは、最初に自系であるSMbの更新を完了した後、SMaを更新する。そのため、SMaはMPUbの書き込み内容とSMbはMPUaの書込み内容となり、SMaとSMbが異なる内容に更新されてしまう。そこで、本排他付きライト処理により、SM間でのデータ不整合を防止し一貫性(整合性)を維持する。
次に、処理動作を図15で説明する。まず、排他付きライト処理S1300を開始すると、最初に、ロックを取得する処理を行う(ステップS1301)。このロックを取得する処理は、1つのMPUのみがSMに対してデータの更新を実行するための処理であり、ロック取得中は特定のMPU以外はSMに対して更新はできないよう制御される。なお、このロック取得は、例えば、セマフォレジスタなどの排他機能をももつ機構を使って行う。このセマフォレジスタに、例えば、コンペア・アンド・スワップなどのアトミック命令を発行し、セマフォレジスタの値が”0”であった場合は、それを”1”に書き換えてロック成功とし、セマフォレジスタの値が”1”であった場合は、別のMPUが既にロックを取得していると判断して、ロック失敗とするような方式である。このように、あるMPUがロックを取得している間は、別のMPUがSMに対する更新を出来ないように制御することが出来る。まず、処理S1300では、ロックの取得が成功したか判定し(ステップS1302)、失敗した場合(ステップS1301:No)は、ステップS1301に戻り、ロック取得処理を再び行う。
次に、ロックの取得に成功した場合(ステップS1302:Yes)は、MPUは、SMa及びSMbに対して同一データをライトする(ステップS1303の“二重書き”)。最後に、ロックを解放し(ステップS1304)、排他付きライト処理を終了する。なお、ロック解放処理は、例えば、ロック取得中は”1”であるセマフォレジスタの値を、”0”に書き換えるという処理である。
図16は、連続して2つのSMライトが発行されたときの処理S1400のフローチャートである。SMへ連続したライトアクセスが発生した場合の処理方法について、図16を用いて説明する。複数のライトが連続する場合は、データの整合性を維持するためライトの順序を保証する必要がある。そのためには、先のライト処理が完了したことを確認してから、次のライトを開始する必要がある。そこで、SMアクセス制御部23は、S1400の処理を実行しライトする順番を保証しデータの整合性を保つ。ただし、この処理は、連続してSMライトを行う場合に、アプリケーション側で、処理S1400のような手順で複数のSMライトを実施させることも可能で、必ずしもSMアクセス制御部23が処理S1400を実行しなくとも良い。また、図16では、例として連続して2つのSMライトを行う時の処理を示すが、3つ以上連続したライトでも構わない。
まず、処理S1400が開始されると、まず、SMアクセス制御部23は、1番目のSMライト要求を受領する(ステップS1401)。1番目のSMライト要求受領後に、SMアクセス制御部23はSMライト処理S1200を呼び出す。続いて、ライト確定処理S1500を呼び出す。
ライト確定処理とは、前のライトが正常に終了したことを確認する処理のことであり、ライト確定処理の完了は、前のライト処理の完了を意味する。つまり、ライト確定処理S1500から完了応答が返って来たときに、1番目のライト処理が完了する。続いて、SMアクセス制御部23は、2番目のSMライト要求を受領する(ステップS1402)。
2番目のSMライト要求受領後に、SMアクセス制御部23は、再び、SMライト処理S1200を呼び出す。その後にSMライトが無い場合は、ライト確定をする必要はないので、そのまま、SMへの連続ライト処理を終了する。続けて、3番目以降のSMライト要求があった場合は、2番目のSMライトと同様、ライト確定処理1500/ライト要求受領/SMライト処理1200を順次実行する。
図17は、図16でのライト確定処理S1500を示すフローチャートである。ライト確定処理を図17で説明する。ライト確定処理は、SMアクセス制御部23に呼び出される処理ルーチンであり、処理の開始時にライトするSMのアドレスと、コマンド処理を担当するCTL番号(CTLa or CTLb)及びライトするデータ内容が引数として与えられる。ライト確定処理とは、前記複数ライト処理S1400などの処理で使用され、ライトが正常に完了したかどうかを確認する処理である。
最初に、確定すべきライトが、自系SMへのライトか、他系SMへのライトかを判定する(ステップ1501)。判定の結果、自系SMへのライトである場合(ステップS1501:自系)は、ノンポステッドライトであるため、そのまま、ライト確定処理を終了する。ノンポステッドライトとは、ライトが完了した時に、完了応答が返ってくるライトのことである。例えば、ストア命令などを使って自系SMにライトをすると、ストア命令はライトが完了するまでは、完了応答を返さない。そのため、ストア命令を実行し完了応答があれば、ライトが正常に終了したことが保証される。
反対に、判定の結果、他系SMへのライトである場合(ステップS1502:他系)は、ポステッドライトである。そこで、ライトしたアドレスに対してリードを行い、ライトした値とリードした値を比較し一致しているかを確認して、正常にライトが完了してことを確認(ステップ1502)し、ライト確定処理を終了する。ちなみに、ポステッドライトとは、ライトが完全に完了しない内に、完了応答を返すライト処理のことである。そのため、例えば、ライトアドレスへのリードとデータ比較によって正しく値が更新されているかを判断し、ライトの完了を確認する必要がある。もし、ステップS1502の確認の結果、正常にライトが完了していない場合は、”NULL”などを戻り値として返し、呼び出し元に再度SMライトを実行させる。
図18は、SMへのアトミックアクセスの例として、アトミック加算を示すフローチャートである。前述(図15)のアトミックアクセス処理を図18で詳細に説明する。アトミック加算の目的は、複数のMPUによる加算のすれ違いを防止することにある。例えば、”1”という値を持つレジスタなどに”1”を加算したい場合、MPUは、”1”という値をリードし、その値に”1”を加算した値である”2”をレジスタにライトする。しかし、これを複数のMPUが同時に行う場合は、例えば、MPUaが“1”をリードしたと同時に、MPUbも”1”をリードする。そして、それぞれのMPUが”1”を加算して、お互いに”2”を書いた場合、最終的にレジスタには”2“という値に更新されていて、ある事象(加算処理)が2回起きたか、1回起きたかを判別出来ない。
このようなMPU同士のすれ違いを防止するための処理の総称がアトミックアクセスである。アトミックアクセスでは、いずれかのMPUが、アトミックアクセスを実行している間は、他のMPUは、アトミックアクセスを行えないように制御しながら行う。アトミックアクセスには、アトミック加算以外にも、アトミック比較などが存在する。アトミック比較は、複数のMPUの間で、ある処理を実行するための権利を取得する時に行われる。これら処理の実現方法は、例えば、セマフォレジスタのようなレジスタを使う。具体的には、MPUがセマフォレジスタの値をリードし、その時の値が”0”である場合は、MPUがセマフォレジスタの値を”1”に書き換える。逆に、セマフォレジスタの値が”1”である場合は、MPUは、何もしないというような特徴を持つレジスタである。
SMへのアトミック処理S1600は、SMアクセス制御部23によって呼び出され処理が開始する。SMへのアトミック処理の開始時に、アドレスが引数として与えられる。最初に、MPUが、ロックを取得する処理を行い(ステップS1601)、そのロック取得が成功したか否かを判定する(ステップS1602)。ロックの取得に失敗した場合(ステップS1602:No)は、ロック取得処理を再実行するため、ステップS1601を繰り返し行う。
ロック取得の方式は、例えば、セマフォレジスタなどを使って行う。なお、ロック取得に使用するセマフォレジスタなどは、排他付きライト処理S1300で使用するセマフォレジスタと共通(同一)のものを使う。つまり、単一のセマフォレジスタを使用することで、排他付きライト処理S1300とアトミック処理S1600という異なった処理が、同じアドレスを持つSM上の領域に対して、同時に行われないようにする。
MPUがロック取得に成功したら(ステップS1602:Yes)、マスタ面情報テーブル110のマスタ種別フィールド1101を参照し(ステップS1603)、両マスタ情報か、片マスタ情報かを判定する(ステップS1604)。
判定の結果、マスタ種別フィールド1101の内容が両マスタ情報である場合(ステップS1604:両マスタ)は、MPUが自他系のいずれのSMもリードすることが可能であるため、MPUは、高速にアクセス可能な自系のSMをリードする(ステップS1606)。続いて、MPUはリードした値に”1”を加算し(ステップS1607)、加算した値をステップS1606で自系SMに対しリードしたアドレスにライトし、他系SMの同じアドレスにもライトする(ステップS1608)。最後に、ステップS1601で取得したロックを解放し(ステップS1616)、SMアトミック処理S1600を終了する。
判定の結果、マスタ種別フィールド1101の内容が片マスタ情報である場合(ステップS1604:片マスタ)は、MPUがマスタ面情報テーブル110のマスタ面フィールド1102を参照し(ステップS1605)、マスタ面を判定する(ステップS1609)。
SMaがマスタ面である場合(ステップS1609:SMa)、MPUは、SMaをリードし(ステップS1610)、リードした値に”1”を加算し(ステップS1611)、加算した値をステップS1610でリードしたSMaのアドレスに対してライトし、続いてSMbの同じアドレスにもライトする(ステップS1612)。最後に、MPUは、ステップS1601で取得したロックを解放し(ステップS1616)、SMアトミック処理S1600を終了する。
SMbがマスタ面である場合(ステップS1609:SMb)、MPUは、SMbをリードし(ステップS1613)、リードした値に”1”を加算し(ステップS1614)、加算した値をステップS1613でリードしたSMbのアドレスに対してライトし、続いてSMaの同じアドレスにもライトする(ステップS1615)。最後に、MPUは、ステップS1601で取得したロックを解放し(ステップS1616)、SMアトミック処理S1600を終了する。
図19は、LUオーナ権切り替えの処理を示すフローチャートである。LUオーナ権切り替え処理について図19で説明する。LUオーナ権切り替え処理は構成管理部21に呼び出され、オーナ権を切り替えるLUのLU番号を引数として与えられる。構成管理部21は、各LUに対する各CTLでのI/Oアクセスをモニタリングし、モニタリング結果に負荷が平坦化(するよう負荷の偏りの防止)するよう、CTLのLUオーナ権を動的に切り替える。もしくは、ユーザの指示によって、CTLのLUオーナ権を構成管理部21が切り替えても良い。LUオーナ権が切り替わると、そのLUに関連する制御情報のオーナ権も切り替わり、それに応じてマスタ面も切り替える必要があるため、本LUオーナ権切り替え処理を実施する。
LUオーナ権切り替え処理が開始されると、まず、MPUは、LUオーナ権テーブル124のLUオーナ権フィールド1241を参照し(ステップS1701)、当該LUの現在のオーナ権がCTLaにあるかCTLbにあるか判定する(ステップS1702)。次に、現在のLUオーナ権がCTLaであれば(ステップS1702:CTLa)、LUオーナ権をCTLbに切り替え(ステップS1703)、CTLbであれば(ステップS1702:CTLb)、LUオーナ権をCTLaに切り替える(ステップS1704)。
次に、オーナ権が切り替わったLUに関連する制御情報を特定するために、MPUは、制御情報特性テーブル122を参照し、属するLU番号フィールド1223に対応する制御情報名フィールド1220の中から該当する制御情報を検索する(ステップS1705)。例えば、LUオーナ権が切り替わったLU番号が“201”でLUオーナ権テーブル124のLUオーナ権フィールド1241の値が“CTLa”から“CTLb”に切り替わった場合、MPUが、制御情報特性テーブル122の属するLU番号フィールド1223で“201”である制御情報名を検索する。この場合は、“ペア情報管理テーブル”が該当する。
また、LUオーナ権が切り替わったLU番号が“202”でLUオーナ権テーブル124のLUオーナ権フィールド1241の値が“CTLb”から“CTLa”に切り替わった場合、MPUが、制御情報特性テーブル122の属するLU番号フィールド1223が“202”である制御情報名を検索する。この場合は、“差分ビットテーブル”が該当する。
次に、ループ処理であるステップS1706を、検索された制御情報に対しマスタ面とスレーブ面の内容の一致処理S1707とマスタ面設定処理S1000(図12)を実行する。なお、処理ステップS1706のループ処理の終了条件は、ステップS1705で検索された全ての制御情報に対して、マスタ面とスレーブ面の内容の一致処理S1707とマスタ面設定処理S1000を行うことである。
つまり、LUオーナ権が変更されたLUに関連する全ての制御情報のマスタ面を変更するために、マスタ面設定処理S1000を繰り返し行う。ただし、制御情報の中には、マスタ面の内容とスレーブ面(マスタ面でない方のSM)の内容が一致していない場合がある。例えば、SMaの内容が主に更新される前記の片マスタ情報である“ペア情報管理テーブル”が該当する。
そこで、マスタ面設定処理S1000を実行する前に、マスタ面とスレーブ面の内容を一致させておく(ステップS1707)。具体的には、マスタ面の内容をスレーブ面にコピーしてから、マスタ面設定処理S1000を実行する。全制御情報に対してのマスタ面設定処理が完了したら、LUオーナ権切り替え処理を終了する。
以上の説明したシステム構成、メモリ構成と各種テーブル及び各種処理方法により、従来、異なる複数の種類のメモリを使用して構成していたシステムを、本発明では1つのメモリでMPUメモリに統合できる。また、アクセスするマスタ面の制御とLUオーナ権制御で、自系及び他系のMPUが各系のMPUメモリに対し、アクセス効率を向上できる。
これにより、従来と互換性のあるソフトウェア環境及び装置制御環境を保ちつつ、異なる種類のメモリを共通化でき、さらに廉価な部品を少ない点数で従来と同等のハードウェア構成でストレージ装置を構築できる。さらに、メモリへのアクセスコストであるアクセス時間を短縮できるので、ホスト計算機からストレージ装置へのアクセス性能及びストレージ装置内の処理性能などを向上させることができる。
図20は、SMキャッシュのメモリ構成図である。図21は、SMキャッシュを使用してのリードアクセス処理を示すフローチャートである。第2の実施例として、他系の制御情報のみをSMキャッシュにキャッシングする方式について、図20及び図21で説明する。第2の実施例の特徴は、SMキャッシュ15に、片マスタ情報で他系にマスタ面がある制御情報のみをコピーすることにある。つまり、前記制御情報は、自系のMPUが、他系のSMを頻繁にリードする情報である。ところが、他系のSMリードは自系のSMリードに比べ低速であるので、高速なアクセスが可能な自系SMに前記制御情報の一部の内容をキャッシングしておくことで、MPUのリード性能を向上させることが目的である。
具体的には、SMアクセス制御部23が、SMキャッシュa(符号15a)に、SMbのみにマスタ面がある片マスタ情報をコピーし、SMキャッシュb(符号15b)に、SMaのみにマスタ面がある片マスタ情報をコピーする。例えば、図21の場合は、SMbをマスタ面とする片マスタ情報は、制御情報Wと制御情報Zなので、SMアクセス制御部23がSMキャッシュa15aに制御情報Wと制御情報Zをコピーする。
SMaをマスタ面とする片マスタ情報は、制御情報V/制御情報X/制御情報Yであるが、全ての制御情報をコピーする容量がSMキャッシュaにない。そこで、SMアクセス制御部23は、制御情報V/制御情報X/制御情報Yから制御情報Vと制御情報Xを選択し、SMキャッシュbにコピーする。選択方法は、例えば、最近に参照された制御情報から順番に選んでコピーする方法である。このようなSMbにマスタ面がある片マスタ情報を自系にあるSMキャッシュaにコピーするSMキャッシュキャッシング方法により、自系のMPUaは、必要な制御情報を高速にアクセス可能な自系MPUメモリ102aからリード出来る。
図21は、SMキャッシュを使った時のSMリードの処理S1900を示すフローチャートである。SMキャッシュキャッシング時のリード処理は、SMアクセス制御部23に呼び出され、リードする制御情報のアドレスを引数として与えられる。最初に、MPUは、引数として渡されたアドレスに該当するマスタ面情報テーブル110のマスタ種別フィールド1101を参照し(ステップS1901)、マスタ種別(両マスタ情報ないし片マスタ情報)を判定する(ステップS1902)。
判定の結果、マスタ種別フィールド1101の内容が両マスタ情報の場合(ステップS1902:両マスタ)は、自系のMPUが自系のSMをリードできるので高速なアクセスが可能となる。そこで、MPUは自系SMをリードし(ステップS1904)、リード処理を終了する。
判定の結果で、マスタ種別フィールド1101の内容が片マスタ情報の場合(ステップS1902:片マスタ)は、MPUが、マスタ面情報テーブル110のマスタ面フィールド1102を参照し(ステップS1903)、マスタ面が自系にあるか、他系にあるかを判定する(ステップS1905)。マスタ面が自系SMにある場合(ステップS1905:自系)、MPUは自系SMをリードして(ステップS1907)、リード処理を終了する。
判定の結果で、マスタ面が他系にある場合(ステップS1905:他系)は、SMキャッシュ用のキューを参照し(ステップS1906)、Hit/MissHit(以下Miss)判定を行う(ステップS1908)。Hit/Miss判定とは、自系SMキャッシュにリードしたい制御情報があるかどうかを判定することで、Hit時はリードしたい制御情報が自系SMキャッシュにあるので、高速にアクセスできる。一方、Miss時はリードしたい制御情報が自系SMキャッシュにないので、他系SMへのリードが必要なためアクセス時間が大きい。
判定の結果、自系SMキャッシュにリードしたい制御情報がある場合(ステップS1908:Hit)は、MPUは、他系SMよりも高速にアクセス出来る自系SMキャッシュをリードして(ステップS1910)、リード処理を終了する。これに相当する制御情報が、図20でSMキャッシュbに格納されている“制御情報V”である。
判定の結果、自系SMキャッシュにリードしたい制御情報がない場合(ステップS1908:Miss)は、MPUは、他系SMをリードする(ステップS1909)。続いて、リードした当該制御情報を、自系SMキャッシュにコピーして(ステップS1911)、リード処理を終了する。このように、他系SMにのみ存在する制御情報を自系SMキャッシュにコピーしておくことで、MPUが、再び、当該制御情報をリードする時に、高速アクセス可能な自系SMキャッシュからリードすることが出来る。これに相当する制御情報が、図20でSMbにもSMキャッシュbにも格納されていない“制御情報Y”である。
以上の説明したように、第2の実施例のキャッシング制御により、第1の実施例と同様に、ソフトウェア環境及び装置制御環境の互換性の維持しながら、メモリへのアクセスコストであるアクセス時間の短縮によるストレージ装置のアクセス性能向上が図れる。
図22は、本発明の第3の実施形態におけるデータキャッシュ管理情報のLUオーナ権による配置を概念的に説明する図である。図23は、データキャッシュ管理情報をLUオーナ権に応じて配置する処理を示すフローチャートである。第3の実施例として、データキャッシュ管理情報をそのオーナ権を持つCTLのSM上に配置する方式について図22及び図23で説明する。
まず、図22を用いてデータキャッシュ管理情報の配置方式について説明する。図22のデータキャッシュ管理情報は非二重化情報であるため、図7で示すアドレス0xF000以降の領域である非二重化領域に配置する。なお、データキャッシュ管理情報とは、SM12上のデータキャッシュ管理情報格納領域16に格納する制御情報で、キャッシュメモリ13のデータのアドレスとディスクのアドレスとを対応付ける情報である。
つまり、ドライブ部109のあるディスクのデータにアクセスする場合、MPUは、まず、データキャッシュ管理情報格納領域16aを参照する。そして、MPUは、キャッシュメモリ上にアクセスするデータがあるかどうかを判断でき、さらに、キャッシュメモリ13aのどのアドレスに格納されているかが直ぐに分かる。
また、データキャッシュ管理情報は、対応するユーザデータと同じCTL側に配置する。この理由を以下で説明する。ライトするデータをディスクに書く前に、一時的にキャッシュへ二重化して格納しておくとする。どちらか一方のCTLが故障した場合でもデータのアクセスを正常に実行するため、故障していない他方のCTLのMPUメモリ内には、ユーザデータとそのデータにアクセスするためのデータキャッシュ管理情報がセットになって残っている必要がある。以上のような理由から、ユーザデータとデータキャッシュ管理情報は同じCTL上に配置する。
ユーザデータとデータキャッシュ管理情報はLUに属する情報であるので、LUオーナ権を持ついずれかのCTLが、ユーザデータとデータキャッシュ管理情報の処理を担当する。そこで、これらのユーザデータおよび制御情報は、オーナ権を持つCTL側に配置する。ただし、このような配置を継続すると、いずれか一方のCTLにI/Oが集中した場合は、I/Oが集中したCTL側のキャッシュメモリが使用され続け、他方のキャッシュメモリはいつまでも古い情報を持ったまま、使用されていないこととなる。このようなメモリ使用上の無駄を省き効率的なメモリ使用とアクセスを実現するため、データの解放処理と再割り当て処理を行う。具体的には、両方のキャッシュメモリの一番古い情報同士のアクセス時刻(参照時刻ないし更新時刻など)を比較し、その時間差が所定の閾値を超えた一番古い情報を両方のキャッシュメモリから解放し、その空いた領域に新しいユーザデータを格納する。
そのキャッシュメモリ領域の解放処理と再割り当て処理を、図23で説明する。図23は、データキャッシュ管理情報の割り当て処理S2000を示すフローチャートであり、プログラムである基本I/O制御部22に呼び出され、アドレスを引数として与えられる処理ルーチンである。
最初に、基本I/O制御部22を実行するMPUは、自系及び他系のキャッシュメモリのキューを参照する。当該キューは、最近参照されたものから順番に格納し、最も古い情報から順番に除いていくキューで、CTLa、CTLbのそれぞれに備える。MPUは、キューに格納されるデータに、キューにデータが最初に格納された時間である遷移時間を付与する。
データキャッシュ管理情報割り当て処理S2000の実行が開始されると、MPUは、まず、両CTLのキューの中で、一番古いデータのキューにある遷移時間(最終アクセス時刻である参照時刻ないし更新時刻など)を求め、両者の差を算出する(ステップS2001)。次に、MPUは、両者の差が所定の閾値以上であるか否かを判定する(ステップS2002)。
両者の差が閾値以上である場合(ステップS2002:No)、MPUは、当該キューの最も古いデータの内、どちらがより古いかを両者の遷移時間で判定する(ステップS2004)。この判定によって、MPUは、二つのキャッシュメモリにある最も古いデータを削除し、新しいデータを追加することが出来る。例えば、CTLaのデータが一番古ければ(ステップS2004:CTLa)、MPUは、CTLaのキューの一番古いデータを削除し、新規データをキャッシュメモリaに配置し、そのデータの管理情報はSMaに配置する(ステップS2008)。逆に、CTLbのデータが一番古ければ(ステップS2004:CTLb)、MPUは、CTLbのキューの一番古いデータを削除し、新規データをキャッシュメモリbに配置し、そのデータの管理情報もSMbに配置する(ステップS2009)。
両者の差が閾値未満である場合(ステップS2002:Yes)、MPUは、LUオーナ権テーブル124を参照し(ステップS2003)、データのLUオーナ権を持つCTLを判定する(ステップS2005)。そして、データおよびデータの管理情報をLUオーナ権のあるCTL上に配置することで、MPUは自系SMをリード出来るため、アクセス性能を向上できる。
すなわち、CTLaがLUオーナ権を持つ場合(ステップS2005:CTLa)、MPUは、データをキャッシュメモリaに配置し、そのデータの管理情報をSMaに配置し、LUオーナ権テーブル124を更新して(ステップS2006)、処理を終了する。CTLbがLUオーナ権を持つ場合(ステップS2005:CTLb)は、データをキャッシュメモリbに配置し、そのデータの管理情報をSMbに配置し、LUオーナ権テーブル124を更新して(ステップS2007)、処理を終了する。
以上の説明したように、本発明の各CTLのLUオーナ権制御とMPUメモリへのデータ管理情報の格納制御により、MPUメモリの有効利用とアクセス性能の向上が図れる。これにより、実施例1ないし実施例2と同様、メモリへのアクセスコストであるアクセス時間の短縮によるストレージ装置のアクセス性能向上が図れる。
なお、上記の説明では「テーブル」という表現にて本発明の情報を説明したが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、「リスト」、「DB(データベース)」、「キュー」等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等については、単に「情報」と呼ぶこともできる。
また、上記の説明では「プログラム」を主語として説明を行ったが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、MPUなどのプロセッサを主語としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよいことは言うまでもない。
本発明は、大型コンピュータ、汎用コンピュータ、サーバなどの情報処理装置、ストレージシステムなどの記憶装置などに適用できる。
1 計算機システム
2 ホスト計算機
3 管理端末
4 ストレージ装置
5 SAN
6 LAN
10 テキスト領域
11 ローカルメモリ
12 SM
13 キャッシュメモリ
15、15a、15b SMキャッシュ
16、16a、16b データキャッシュ管理情報格納領域
21 構成管理部
22 基本I/O制御部
23 SMアクセス制御部
24 拡張機能制御部
100a、100b CTL
101a、101b MPU
102a、102b MPUメモリ
103a、103b DMA回路、
104a、104b HOST_I/F
105a、105b DRIVE_I/F
106a、106b 管理_I/F、
107a、107b NTB
109 ドライブ部
110 マスタ面情報テーブル
120 ペア情報管理テーブル
121 差分ビットテーブル
122 制御情報特性テーブル
123 制御情報アドレステーブル
124 LUオーナ権テーブル
1100 アドレスフィールド
1101 マスタ種別フィールド
1102 マスタ面フィールド
1220 制御情報名フィールド
1221 ライト比率フィールド
1222 LUに属する制御情報フィールド
1223 属するLU番号フィールド
1230 アドレスフィールド
1231 制御情報名フィールド
1240 LU番号フィールド
1241 LUオーナ権フィールド

Claims (15)

  1. ストレージ装置であって、
    第1のプロセッサと、前記第1のプロセッサに接続され、前記第1のプロセッサのみがアクセス可能な情報を格納するローカル領域と第1および第2の領域を有する共有メモリ領域とを有する第1のメモリとを有する第1のコントローラと、
    第2のプロセッサと、前記第のプロセッサに接続され、前記第2のプロセッサのみがアクセス可能な情報を格納するローカル領域と第1および第2の領域を有する共有メモリ領域とを有する第2のメモリとを有する第2のコントローラとを有し
    記第1または前記第2のプロセッサは、第1の制御情報を前記第1及び前記第2のメモリの前記第1の領域に二重書きし、前記第1のメモリの前記第1の制御情報は、前記第1のプロセッサからリードされ、前記第2のメモリの前記第1の制御情報は、前記第2のプロセッサからリードされ、
    前記第1または前記第2のプロセッサは、第2の制御情報を前記第1及び前記第2のメモリの前記第2の領域に二重書きし、その二重書きされた第2の制御情報のうち一方のみが前記第1及び前記第2のプロセッサからリードされることが許容されるストレージ装置。
  2. 請求項1に記載のストレージ装置であって、
    前記第1のプロセッサが前記第1及び前記第2のメモリに二重書きされた前記第1の制御情報を更新する場合、その更新が完了するまで、前記第2のプロセッサが前記第1及び前記第2のメモリの共有領域に対してライトすることを許容しないストレージ装置。
  3. 請求項2に記載のストレージ装置であって、
    複数のディスクドライブと、前記複数のディスクドライブにより提供される複数の論理ユニットとを更に有し、
    前記複数の論理ユニットの各々には、その論理ユニットに対するI/Oを制御するコントローラとして前記第1または前記第2のコントローラの一方が割り当てられており、
    前記第2の制御情報が前記複数の論理ユニットのいずれかに固有の制御情報は、その論理ユニットに割り当てられたコントローラの前記第1または前記第2のメモリに書かれたもののみが、前記第1及び前記第2のプロセッサからリードされることが許容されるストレージ装置。
  4. 請求項3に記載のストレージ装置であって、
    前記第1の制御情報の更新頻度は前記第2の制御情報の更新頻度より小さいストレージ装置。
  5. 請求項3に記載のストレージ装置であって、
    前記第の制御情報の更新回数は所定の閾値より大きいストレージ装置。
  6. 請求項3に記載のストレージ装置であって、
    前記第1の制御情報は、論理ユニットのコピーペア情報または装置構成情報のいずれかを含むストレージ装置。
  7. 請求項3に記載のストレージ装置であって、
    前記第2の制御情報は、論理ユニットのコピーペアの差分情報または統計情報のいずれかを含むストレージ装置。
  8. ストレージ装置の制御方法であって、
    前記ストレージ装置は、
    第1のプロセッサと、前記第1のプロセッサのみがアクセス可能な情報を格納するローカル領域と第1および第2の領域を有する共有メモリ領域とを有する第1のメモリとを有する第1のコントローラと、
    第2のプロセッサと、前記第2のプロセッサのみがアクセス可能な情報を格納するローカル領域と第1および第2の領域を有する共有メモリ領域とを有する第2のメモリとを有する第2のコントローラとを有し、
    前記第1または前記第2のプロセッサは、第1の制御情報を前記第1及び前記第2のメモリの前記第1の領域に二重書きし、
    前記第1のプロセッサは前記第1のメモリの前記第1の制御情報をリードし、
    前記第2のプロセッサは、前記第2のメモリの前記第1の制御情報をリードし、
    前記第1または前記第2のプロセッサは、第2の制御情報を前記第1及び前記第2のメモリの前記第2の領域に二重書きし、
    前記第1または前記第2のプロセッサは、二重書きされた前記第2の制御情報のうち予め定められた一方のみをリードする制御方法。
  9. 請求項8に記載の制御方法であって、
    前記第1のプロセッサが前記第1及び前記第2のメモリに二重書きされた前記第1の制御情報を更新する場合、その更新が完了するまで、前記第2のプロセッサが前記第1及び前記第2のメモリの共有領域に対してライトすることを許容しない制御方法。
  10. 請求項9に記載の制御方法であって、
    前記ストレージ装置の有する複数のディスクドライブにより提供される論理ユニットに対するI/Oを制御するコントローラとして前記第1のコントローラを割り当て、
    前記第1または前記第2のプロセッサは、前記第2の制御情報が前記複数の論理ユニットのいずれかに固有の制御情報の場合、前記第1のコントローラの有する前記第1のメモリに書かれた前記第2の制御情報のみをリードする制御方法。
  11. 請求項10に記載の制御方法であって、
    前記論理ユニットに割り当てるコントローラを前記第1のコントローラから前記第2のコントローラに変更し、
    コントローラが変更された前記論理ユニットに属する前記第2の制御情報の内容を、前記第1及び前記第2のメモリの間で一致させた後に、前記第1または前記第2のプロセッサは、前記第2のコントローラの有する前記第2のメモリに書かれた前記第2の制御情報のみをリードする制御方法。
  12. 請求項11に記載の制御方法であって、
    前記第1の制御情報の更新頻度は前記第2の制御情報の更新頻度より小さい制御方法。
  13. 請求項11に記載の制御方法であって、
    前記第の制御情報の更新回数は所定の閾値より大きい制御方法。
  14. 請求項11に記載の制御方法であって、
    前記第1の制御情報は、論理ユニットのコピーペア情報または装置構成情報のいずれかを含む制御方法。
  15. 請求項11に記載の制御方法であって、
    前記第2の制御情報は、論理ユニットのコピーペアの差分情報または統計情報のいずれかを含む制御方法。
JP2014502679A 2011-12-14 2011-12-14 ストレージ装置とそのメモリ制御方法 Expired - Fee Related JP5738471B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/006989 WO2013088473A1 (en) 2011-12-14 2011-12-14 Storage system and method for controlling memory in storage system

Publications (2)

Publication Number Publication Date
JP2014523010A JP2014523010A (ja) 2014-09-08
JP5738471B2 true JP5738471B2 (ja) 2015-06-24

Family

ID=48611419

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014502679A Expired - Fee Related JP5738471B2 (ja) 2011-12-14 2011-12-14 ストレージ装置とそのメモリ制御方法

Country Status (3)

Country Link
US (1) US9021214B2 (ja)
JP (1) JP5738471B2 (ja)
WO (1) WO2013088473A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6208870B2 (ja) 2014-07-11 2017-10-04 株式会社日立製作所 ストレージシステム、記憶制御方法及び中継装置
JP6327994B2 (ja) * 2014-07-28 2018-05-23 ルネサスエレクトロニクス株式会社 制御システムおよび半導体装置
US11829333B2 (en) * 2015-05-08 2023-11-28 Chicago Mercantile Exchange Inc. Thread safe lock-free concurrent write operations for use with multi-threaded in-line logging
CN107526536B (zh) * 2016-06-22 2020-11-27 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和系统
US11934670B2 (en) 2021-03-31 2024-03-19 Netapp, Inc. Performing various operations at the granularity of a consistency group within a cross-site storage solution
US11928352B2 (en) 2021-05-05 2024-03-12 Netapp, Inc. Maintaining the benefit of parallel splitting of ops between primary and secondary storage clusters in synchronous replication while adding support for op logging and early engagement of op logging
US11537314B1 (en) 2021-10-07 2022-12-27 Netapp, Inc. Resynchronization of individual volumes of a consistency group (CG) within a cross-site storage solution while maintaining synchronization of other volumes of the CG
US11892982B2 (en) 2021-10-20 2024-02-06 Netapp, Inc. Facilitating immediate performance of volume resynchronization with the use of passive cache entries
US11907562B2 (en) 2022-07-11 2024-02-20 Netapp, Inc. Methods and storage nodes to decrease delay in resuming input output (I/O) operations after a non-disruptive event for a storage object of a distributed storage system by utilizing asynchronous inflight replay of the I/O operations
KR20240106044A (ko) * 2022-12-29 2024-07-08 주식회사 알티스트 자율 주행 차량용 이중화 저장 장치

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108755A (en) * 1990-09-18 2000-08-22 Fujitsu Limited Asynchronous access system to a shared storage
JPH06202894A (ja) * 1992-09-28 1994-07-22 Nec Corp 共有メモリ制御回路
US5961623A (en) * 1996-08-29 1999-10-05 Apple Computer, Inc. Method and system for avoiding starvation and deadlocks in a split-response interconnect of a computer system
US6571324B1 (en) * 1997-06-26 2003-05-27 Hewlett-Packard Development Company, L.P. Warmswap of failed memory modules and data reconstruction in a mirrored writeback cache system
US7930278B2 (en) * 1998-02-13 2011-04-19 Oracle International Corporation Methods to perform disk writes in a distributed shared disk system needing consistency across failures
JP2000089916A (ja) * 1998-09-11 2000-03-31 Fujitsu Ltd ファイル制御装置
JP4132322B2 (ja) * 1998-12-16 2008-08-13 株式会社日立製作所 記憶制御装置およびその制御方法
GB2402297B (en) * 2003-05-15 2005-08-17 Sun Microsystems Inc Update dependency control for multi-master replication
US7299334B2 (en) * 2003-07-15 2007-11-20 Xiv Ltd. Storage system configurations
JP4454299B2 (ja) * 2003-12-15 2010-04-21 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の保守方法
JP4819369B2 (ja) * 2005-02-15 2011-11-24 株式会社日立製作所 ストレージシステム
US7970992B1 (en) * 2007-03-29 2011-06-28 Emc Corporation Asymetrical device distribution for a partitioned storage subsystem
JP5183403B2 (ja) 2008-09-30 2013-04-17 株式会社日立製作所 ストレージシステムおよび制御プログラムならびにストレージシステム制御方法
US8510334B2 (en) * 2009-11-05 2013-08-13 Oracle International Corporation Lock manager on disk
WO2011114384A1 (en) * 2010-03-19 2011-09-22 Hitachi, Ltd. Storage system and method for changing configuration of cache memory for storage system

Also Published As

Publication number Publication date
US20130159620A1 (en) 2013-06-20
US9021214B2 (en) 2015-04-28
JP2014523010A (ja) 2014-09-08
WO2013088473A1 (en) 2013-06-20

Similar Documents

Publication Publication Date Title
JP5738471B2 (ja) ストレージ装置とそのメモリ制御方法
JP4886897B2 (ja) クラスタ化されたファイル・システムへのファイル・システムのマウンティング
US10599535B2 (en) Restoring distributed shared memory data consistency within a recovery process from a cluster node failure
US20230280944A1 (en) Tiering Data Strategy for a Distributed Storage System
US7188128B1 (en) File system and methods for performing file create and open operations with efficient storage allocation
JP2005301590A (ja) ストレージシステム及びデータ複製方法
US20170177224A1 (en) Dynamic storage transitions employing tiered range volumes
US11205244B2 (en) Resiliency schemes for distributed storage systems
US12099412B2 (en) Storage system spanning multiple failure domains
US11693818B2 (en) Data migration in a distributive file system
US11609716B2 (en) Implementing coherency and page cache support for a storage system spread across multiple data centers
US10055139B1 (en) Optimized layout in a two tier storage
US10169157B2 (en) Efficient state tracking for clusters
US11288238B2 (en) Methods and systems for logging data transactions and managing hash tables
US6526492B1 (en) Method of allowing a volume manager to release and regain reserve
US12131075B2 (en) Implementing coherency and page cache support for a storage system spread across multiple data centers
Kobayashi et al. A high‐availability software update method for distributed storage systems

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150306

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150421

R150 Certificate of patent or registration of utility model

Ref document number: 5738471

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees