JP5976937B2 - コンピュータシステム - Google Patents
コンピュータシステム Download PDFInfo
- Publication number
- JP5976937B2 JP5976937B2 JP2015528086A JP2015528086A JP5976937B2 JP 5976937 B2 JP5976937 B2 JP 5976937B2 JP 2015528086 A JP2015528086 A JP 2015528086A JP 2015528086 A JP2015528086 A JP 2015528086A JP 5976937 B2 JP5976937 B2 JP 5976937B2
- Authority
- JP
- Japan
- Prior art keywords
- write
- data
- temporary storage
- read
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
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)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、コンピュータシステムでのデータ転送に関する。
近年、社会活動で生み出される膨大なデータを分析することにより価値を出すビッグデータ分析と呼ばれる技術が普及している。このため、ストレージシステムにはより一層、高い性能が求められるようになる。
特に、システムの信頼性を担保するためにハードウェアに障害等が生じてもデータを失わないことが求められる。よってライト(書込み)データはストレージ内で多重化して保持されることが必要であり、ストレージ装置の書込性能を向上させることが望ましい。
例えば、ストレージコントローラが二重化されたストレージ装置の書込性能を向上させる技術として、ホストコンピュータからのライト要求に従うデータを受信し、そのデータを、プロセッサが一方のストレージコントローラのメモリに格納した後、プロセッサの指示に従って、そのメモリからDMA(Direct Memory Access)がデータを読み出し、他方のストレージコントローラのメモリにデータをコピーすると共に、コピー先のメモリに対しダミーのリードリクエストを発行することで、コピー先のメモリにデータがコピーされたことを自動的に確認する技術が知られている(特許文献1)
上記従来技術においては、ストレージコントローラのプロセッサにより、いったんメモリに書き込まれたデータについて、プロセッサを介さずに、データの二重化処理を自動化することで、プロセッサの負荷を低減することができる。
しかし、ホストコンピュータから受信したライト要求に従うデータを受信することと、そのデータを、一旦ストレージ装置内の1つのメモリに格納することは、プロセッサが行っている。このため、プロセッサの負荷が十分に低減されてはいない。特に、データは容量が大きいため、データの送受信は他のステップに比べてプロセッサには負荷がかかる。さらに、書込み要求に従うデータを2つのメモリに二重化し、メモリまで到達したことを確認した後の処理については、プロセッサが逐次行う必要がある。そのため、これらの処理により、性能が十分上がらない。
コンピュータシステムは、一時記憶領域、及び、演算部を有するプロセッサを有するストレージコントローラと、ストレージコントローラに接続され、ホストコンピュータからのリード要求又はライト要求を、前記ストレージコントローラに送信するインタフェース装置と、を備える。ストレージコントローラが、リード要求又はライト要求を受信した場合、プロセッサが、インタフェース装置に対して、リード要求に従うリードデータのリード処理の一部又は全部を実行することの指示であるリード支援指示、又は、前記ライト要求に従うライトデータのライト処理の一部又は全部の指示であるライト支援指示を送信する。そして、インタフェース装置が、ストレージコントローラからのリード支援指示又はライト支援指示に従い、リードデータのリード処理の一部又は全部、又は、ライトデータのライト処理の一部又は全部を実行し、ホストコンピュータに対して、リード処理が完了した旨の第1の応答又はライト処理が完了した旨第2の応答を送信する。
本発明により、ストレージコントローラのプロセッサにかかる負荷を低減し、コンピュータシステムのリード/ライト性能が向上する。
本発明は、ストレージシステムを含むコンピュータシステムにおいて、性能を向上させるための技術に関する。
以下、添付図面を参照して本発明の幾つかの実施例にかかるコンピュータシステムについて説明する。ただし、これらの実施例は、本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。なお、複数の同種のものについては、999a、999bなど、数字の最後に英文字を付すことで個々を区別するが、必要に応じて英文字を省略して説明する場合がある。
以下の説明においては、必要に応じて、リード要求及びライト要求を総称して「リード/ライト要求」といい、リード要求に従うリード処理及びライト要求に従うライト処理を総称して「リード/ライト処理」ということがある。つまり、「リード/ライト」という表記は、リード又はライトのことである。
また、以下の説明においては、必要に応じて、ライト要求に従うデータをライトデータ、リード要求に従うデータをリードデータという場合がある。なお、特に特定する必要がない場合は、単にデータという。
図1は、実施例1にかかるコンピュータシステム1の構成及び概要を説明するための図である。
以下、図1を参照して、本実施例にかかるコンピュータシステム1の概要を説明する。
本実施例にかかるコンピュータシステム1は、ホストコンピュータ又はサーバ(以下、ホストという)2と、ストレージコントローラ4と、インタフェース装置3とを含む。インタフェース装置3に、ホスト2とストレージコントローラ4が接続されている。インタフェース装置3は、例えば、半導体インタフェース装置であってよく、本実施例では、インタフェースLSI(Large Scale Integration)とする(以下、単にLSIという)。LSI3により、ホスト2とストレージコントローラ4間で行われるリード/ライト処理の性能を向上することができる。
一般に、ストレージコントローラが、ホストからのリード/ライト要求を受信し、ストレージコントローラにおけるプロセッサのプロセッサコアが、そのリード/ライト要求に基づくリード/ライト処理を行う。リード/ライト処理は、多くのステップから構成され、さらに、リード/ライトデータの送受信もプロセッサコアを介して行われ、リード/ライトデータが一時記憶領域であるキャッシュメモリに格納される。このため、リード/ライト処理のためにプロセッサにかかる負荷が大きい。一般に、リード処理では、プロセッサコアは、ホストからのリードデータがキャッシュメモリに存在するか否かを判定し、判定の結果、リードデータがキャッシュメモリに存在している場合は、リード応答とともにリードデータをホストに送信する。一方、リードデータがキャッシュメモリに存在していない場合は、プロセッサコアは、図示しないHDD(Hard Disk Drive)のような最終記憶デバイス(補助記憶デバイス)からリードデータをキャシュに読み出し、そのリードデータをリード応答とともにホストに送信する。またライト処理では、プロセッサコアは、ホストから受信したライトデータを1つのキャッシュメモリに書き込むと共に、そのライトデータが正しいか否かの判定を行い、キャッシュディレクトリ(キャッシュメモリの管理情報)を更新し、ホストに対しライト応答を行う。ライト応答を行った後、プロセッサコアは、ライトデータを別のキャッシュメモリにコピーし(データの二重化)、キャッシュディレクトリを更新する。さらに、プロセッサコアは、必要に応じて、応答後にバックエンド処理(典型的には、ライトデータをキャッシュメモリから最終記憶デバイスに書き込む処理)を行う。
そこで、本実施例においては、ストレージコントローラ4がホスト2からリード/ライト要求を受信した場合に、プロセッサ6は、リード/ライト処理で行われるステップのうちの一部又は全部のステップを、プロセッサコアに代えてLSI3に実行させるように、LSI3の処理制御部5(後述)に対し指示を出す。例えば、プロセッサ6は、データがキャッシュメモリ(以下、キャッシュという)41に格納されている等の状況に応じて、種々の指示をLSI3に出すことができる。一方、処理制御部5は、プロセッサ6からの指示に応じてリード/ライト処理で行われるステップのうちの別の一部又は全部のステップを行う。この結果、リード/ライト処理に関してプロセッサコアの介在が減るので、ストレージコントローラ4の性能を向上させることができる。特に、データの送受信、つまり、リード/ライトデータの送受信にプロセッサコアが介在しないので、プロセッサ6の負荷を軽減させることができる。さらに、リード処理に比べてステップ数の多いライト処理については、より性能を向上させることができる。例えば、オンライントランザクション処理など、信頼性の観点から、ホスト2からのライトデータを、ホスト2の外部に設けたストレージ装置に多重化して格納する必要がある場合には、上述の通り、LSI3のライト性能を向上させることで、より大量なデータのやりとりによる大規模な処理を効率よく実現することが可能となる。
以下、図1を参照して、本実施例にかかるコンピュータシステム1の構成を詳細に説明する。
コンピュータシステム1は、前述したように、ホスト2、ストレージコントローラ4、及び、LSI3を有する。
ホスト2は、プロセッサ21(図13参照)及びメモリ(図示なし)を有する計算機であり、ストレージコントローラ4に対し、LSI3を介してリード/ライト要求を送信する。
ストレージコントローラ4は、1つ以上の物理記憶デバイスを有してもよいし(、ストレージコントローラ4の外部に1つ以上の物理記憶デバイスが接続されてもよい。なお、これら1つ以上の物理記憶デバイスの複数の物理記憶領域を基に、複数の論理領域を有する1つ以上の論理ボリュームが形成される。当該論理ボリューム、又は、論理ボリュームの記憶領域が割り当てられた仮想ボリュームはホスト2に提供される。ストレージコントローラ4は、複数のキャッシュ41、複数のキャッシュディレクトリ(以下、ディレクトリという)42、及び、プロセッサ6を有する。
キャッシュ41は、リード/ライトデータを一時的に格納する不揮発性又は揮発性のメモリである。また、キャッシュ41には、データが格納される論理領域を有する論理ボリュームの番号(以下、ボリューム番号という。)に対応付けて、各論理ボリュームに追加処理が必要か否かの情報を示す追加情報が格納される。具体的には、追加情報は、例えば、論理ボリューム毎に、リモートコピーが必要か否かの情報と、スナップショットが必要か否かの情報であるが、これに限られない。なお、リード要求には、リード元のボリューム番号及び論理領域を示すアドレス(以下、論理アドレスという)が含まれる。ライト要求には、ライト先のボリューム番号、論理アドレス及びライトデータが含まれる。
また、信頼性を保つため、キャッシュ41にデータを書き込む際に、データには、そのデータの所定の範囲毎(例えば1セクタ毎)にメタデータが付されてもよい。具体的には、例えば、メタデータは、データ格納先の論理アドレスを含んだ参照情報(例えばReference Tag)と、データの誤り符号(例えばCRC値)を設定するGuard部と、を含む。以下の説明では、データが格納される論理領域のアドレスを論理アドレス、データ格納先の論理アドレスを含んだ参照情報をReference Tag、データの誤り符号をCRC値として説明するが、これに限定されない。
ディレクトリ42は、キャッシュ41の管理情報である(図8参照)。具体的には、例えば、図8に示すように、ディレクトリ42には、キャシュ41内に格納されているデータについて、当該データのボリューム番号421及びボリューム内の論理アドレス(LogicalBlockAddress)422と、そのデータのキャッシュ41におけるキャッシュ領域のメモリアドレス423とが対応づけて管理される。また、ディレクトリ42には、このメモリアドレス423で指定されたキャッシュ領域にライトデータが保持されているか否かを示すDirtyフラグ424が設定される。Dirtyフラグ424は、例えば、デフォルトで「0」が設定されて、Write処理等で対応するキャッシュメモリ42に書き込みデータが格納された場合に、「1」が設定される。
キャッシュ41は、ハードウェア等の故障時にもデータを格納し動作を継続できるように(つまり、データを多重化させるために)、2つ以上(本実施例では2つ、41a及び41b)搭載されている。本実施例では、ディレクトリ42は、それぞれキャッシュ41毎の情報を管理するように、キャッシュ41に対応させて同じ数(図では42a及び42b)搭載されるが、これに限られない。以下、2つのキャシュ(2つのディレクトリ)を区別するときには、キャシュ41a、41b(ディレクトリ42a、42b)といい、それらを区別しないときには、キャッシュ41(ディレクトリ42)という。
プロセッサ6は、ストレージコントローラ4を制御するプログラムを動作させる。このプログラムは、例えば、ホスト2からのリード要求に基づくリード処理を実行するリード処理プログラム61、ライト要求に基づくライト処理を実行するライト処理プログラム63である。リード処理及びライト処理は、LSI3に対して、データ等の状況に応じた指示を行う処理である。
LSI3は、データ送信部31、データ受信部32、コマンド応答部33、データ書込部34、データ読出部35、データ確認部36、フラグ更新部37、及び、処理制御部5を有する。これらの各部は以下詳述する動作を行うようなハード構成で構成されるものを想定する。データ送信部31は、リードデータをホスト2に送信する。データ受信部32は、ホスト2からライト要求及びライトデータを受信する。コマンド応答部33は、ホスト2からのリード/ライト要求に対する応答を行う。データ書込部34は、ライトデータをキャッシュ41に書き込む。データ読出部35は、キャッシュ41からリードデータを読み出す。データ確認部36は、キャシュ41にデータが格納されているか否かを確認する。フラグ更新部37は、ディレクトリ42の更新処理を行う。処理制御部5は、プロセッサ6からの指示により、上記各部31乃至37を制御する。各部31乃至37が行う処理については、後に詳述する。
処理制御部5は、プロセッサ6からの指示に従い実現されるリード+応答機能51、応答機能53、ライト+確認+更新+応答機能54、ライト+確認機能55、及び、確認+応答機能56を含む、複数の機能を提供する。リード+応答機能51は、プロセッサ6からのリード要求に基づく指示に対し、ホスト2へのデータ送信及び処理完了通知を行う機能である。応答機能53は、プロセッサ6からのライト要求に基づく指示に対し、ホスト2に処理完了を通知する機能である。ライト+確認+更新+応答機能54は、プロセッサ6からのライト要求に基づく指示に対し、ライトデータのキャッシュ41への書き込み処理、確認処理、及び、ディレクトリ42の更新処理を実行し、ホスト2への処理完了を通知する機能である。ここで、本実施例においてはライトデータのキャッシュ41への書き込み処理では、キャッシュ41a、キャッシュ42bの二箇所に対して書き込みを行う。また、確認、更新処理についても同様に、確認処理では41aと41bの二箇所、更新処理では42aと42bの二箇所に対し処理を行う。本構成により何れかのハードウェア障害の場合にもデータを保持することが可能となりシステムの信頼性を向上することが可能となる。ライト+確認機能55は、プロセッサ6からのライト要求に基づく指示に対し、キャッシュ41への書き込み処理、及び確認処理を行う機能である。確認+応答機能56は、プロセッサ6からのライト要求に基づく指示に対し、キャッシュ41に書込処理が行われたデータの確認処理を行い、ホスト2に処理完了を通知する機能である。こちらについても、キャッシュメモリ41の二箇所にデータが正しく保管されたことを確認してからホストコンピュータに応答するため、確認処理は、キャッシュメモリ41a、41bの両方に対して行う。各処理の詳細は、後に詳述する。なお、これらの各処理は、LSI3のメモリ(図示なし)に格納されたプログラムをプロセッサ(図示なし)が実行してもよい。また、これらの各処理は、ハードウェア回路により実現されてもよい。従って、プロセッサは、LSI3の必須要素ではない。
以下、ホスト2からのリード要求に対する、ストレージコントローラ4及びLSI3が実行する処理について、順を追って説明する。
図2は、リードコマンド処理プログラム61のフローチャートである。本プログラムはストレージコントローラ4がホスト2からリード要求を、LSI13を介して受け取った場合に、プロセッサ6(具体的には、プロセッサ6内部のプロセッサコア、この説明について以下同様)により実行される。この時点では、LSI13は要求を転送するのみである。
プロセッサ6は、ディレクトリ42を検索し、ホスト2から要求されたリードデータが、キャッシュ41に存在するかを判定する(S611)。本実施例においてはキャッシュ41a、bに同じデータが格納されていることを前提としている。よって、S611は少なくとも何れかのディレクトリを検索するようにしても良いし、両方検索しても良い。具体的には、プロセッサ6は、ディレクトリ42を参照し、リード要求に含まれるリード元の論理アドレスに対応するキャッシュ41のメモリアドレスがキャッシュディレクトリの管理情報にあるか否かを判定する。キャッシュ41a、bの何れにもリードデータが存在しない場合(S611で、No)、プロセッサ6は、データを保持する物理記憶デバイス等からキャッシュ41にリードデータを読み出し(S612)、S613に処理を進める。一方、キャッシュ41a、bの少なくとも何れかにリードデータが存在する場合(S611で、Yes)、プロセッサ6は、S613に処理を進める。S613で、プロセッサ6は、LSI3の処理制御部5に対し、Read+応答を行うよう指示し、処理を終了する。
図3は、リード+応答機能51の処理のフローチャートである。本処理は、ストレージコントローラ4がホスト2からリード要求を受け取った場合に、プロセッサ6からの指示によって起動される。
本処理の起動により、処理制御部5は、データ読み出し部35に対し、リードデータをキャッシュ41から読み出すよう指示する(S511)。本実施例においては、少なくともデータを有するキャッシュ41a、bの何れかに読み出し要求を出す。キャッシュ41a,41bの両方にデータが存在する場合,何れから読み出すかは、メモリへのアクセス量などといった負荷を考慮して決定しても良い。そして、処理制御部5は、読み出しが成功したか否かを判定する(S512)。具体的には、例えば、処理制御部5は、まず、リードデータが読み出しされた否か、つまり読み出しに対してエラー応答、 タイムアウトなどが発生していないかを判定する。そして、リードデータが読みだされた場合には、処理制御部5は、例えば、リードデータに付されたメタデータを参照し、Reference Tagが、期待値と一致しているか、Guard部に設定されたCRC値がリードデータから算出したCRC値と一致するかを比較し、リードデータが正しいか否かを判定する。この場合の期待値は、リード要求に含まれる論理アドレスであってよい。リードデータの読み出しに成功した場合(S512で、Yes)、処理制御部5は、データ送信部31に読み出したデータの送信を指示し(S513)、コマンド応答部33に、リード要求に対する完了応答をホスト2に送信するよう指示する(S514)。そして、処理制御部5は、プロセッサ6に対し、ホスト2に対するリードデータの送信及び完了応答が終わったことを通知し(S515)、処理を終了する。一方、リードデータの読み出しに失敗した場合は(S512で、No)、処理制御部5は、プロセッサ6に処理失敗を通知し(S516)、処理を終了する。なお、S516の通知と共に、処理制御部5は、前述した処理の失敗の要因をプロセッサ6に通知することとすることもできる。ここで、失敗の要因とは、例えば、Read要求に対し、一定時間以内に応答が来なかったことを示すタイムアウト、メモリ故障などによりデータ読み取りができなかった読み取り失敗、DIFのフィールドが期待値と異なった場合などである。
一般に、多くの場合に処理は正常終了される。一方、処理失敗の要因は様々であって、対失敗要因分析や、その後の対応決定のためには非常に複雑な処理が必要とされることが多い。但し、処理が失敗となる確率は低い。このため、失敗の場合の処理は、複雑な処理を容易に記述できるソフトウェア処理が好適であって、本実施例におけるプロセッサ6にて実施するようにすることが望ましい。一方で、正常処理は規定の処理を迅速に処理可能なハードウェア主体構成をとるLSI3に分担させる。本構成により通常時の性能と、異常時の高度な処理を両立することができる。これは、以下の例についても同様である。尚、失敗要因の通知の後にプロセッサ6が行う処理の具体例としては、失敗の要因を調査した結果に従い再度処理を実行し、成功すれば正常完了をホスト2に通知する。また、成功が困難と判断した場合は、プロセッサ6が、ホスト2に処理失敗を通知してもよい。
上記より、リード処理における、ホスト2へのリードデータの送信及びリード要求に対する完了応答を、LSI3に対する1回の指示で実現でき、LSI3との間で処理を分散することができる。プロセッサ6は、実行すべき処理のステップ数を減らせるため、負荷を軽減できる。この結果、リード処理について、プロセッサ6の介在を減少させることで負荷が軽減されて、ストレージ装置の性能が向上する。また、ホスト2に対しては、リード要求から完了応答までの時間も減少するため、ホスト2の処理能力も向上する。さらに、発生頻度が少ない複雑な処理については、プロセッサ6が実行し、発生頻度が多いが、比較的簡易な処理についてはLSI3が行うことで、処理の分担が明確になり、結果として、コンピュータシステム1全体の処理能力が向上する。
以下、ホスト2からのライト要求に対する、ストレージコントローラ4のプロセッサ6及びLSI3が実行する処理について、順を追って説明する。
図4は、ライト処理プログラム63のフローチャートの一部である。本プログラムは、ストレージコントローラ4がホスト2からライト要求及びライトデータを受け取った場合に、プロセッサ6(具体的には、プロセッサ6内部のプロセッサコア、この説明について以下同様)により実行される。
本処理が起動されると、プロセッサ6は、ディレクトリ42a、bを検索し、キャッシュ41に旧データ(ライトデータに対応し、ライトデータに更新されるデータ)が格納されているかどうかを判定する(S631)。例えば、この判定は、ライト要求に含まれるライト先の論理アドレスが、ディレクトリ42に存在するか否かの判定である。キャッシュ41にライトデータに対応する旧データが格納されている場合には、キャッシュ41でデータの更新(上書き)が行われる。なお、ライトデータの送信時に旧データを上書きした場合、上書き処理中に何らかの理由(ホスト側のエラーなど)で中断するなど、旧データを破壊してしまう可能性がある。そのため、ストレージコントローラ4内にキャッシュとは異なる一時記憶領域としてバッファを設けることもできる(図14の44a,b)。キャッシュ41上でライトデータによる旧データの更新が行われる場合には、以下に示すように、ホスト2から受信したライトデータをバッファ44に一旦格納し、その後、そのライトデータを旧データが格納されているキャッシュ42に上書きするとしてもよい。
S631の判定の結果、キャッシュ41に旧データが格納されている場合は(S631で、Yes)、プロセッサ6は、データを一時的に格納するため、バッファ44a,44bのいずれかの領域を確保する。その後、処理制御部5に対し、確保したバッファ43a、bのアドレスを通知し、この領域を転送先としたライト+確認処理を指示する(S632)。処理制御部5がバッファ44の領域にライトデータを書込むライト+確認処理で、ライトデータが正しく書き込まれたことを確認できた場合は、処理制御部5より「処理完了」が通知され、確認できなかった場合は、「処理失敗」が通知される。一方、判定の結果、キャッシュ41a、bの少なくとも何れかに旧データが格納されていない場合は(S631で、No)、プロセッサ6は、S636に処理を進める(図5参照)。
プロセッサ6は、ライトデータの書き込みが両方のバッファ44a、b(図13参照)に正常に行われたことが確認できたか否かを判定する(S633)。確認できた場合は(S633で、Yes)、プロセッサ6は、S632で書き込まれたバッファ44上のライトデータをキャッシュ41の旧データに上書きする(S634)。この際、プロセッサ6は、ライトデータを多重化する。例えば、旧データが2つのキャシュ41a、41bに格納されている場合は、プロセッサ6は、それぞれのキャッシュ41a、41bの旧データをライトデータで上書きする。
その後、プロセッサ6は、処理制御部5に対し、確認+応答処理を指示し(S635)、処理を終了する。確認+応答処理については、後に詳述するが、この処理において、ライトデータが正しく書き込まれたことを確認できた場合は、処理制御部5より「処理完了」が通知され、確認できなかった場合は、「処理失敗」が通知される(図9参照)。ここで、データはキャッシュ41a、41bに二重化されているので、確認処理は、データが格納される全てのキャッシュ(例えば、41aと41b)について確認される。なお、上書き後の確認は、S634でプロセッサ6により行われてもよい。この場合、S635では、プロセッサ6は、例えば、S640と同様に、単に応答の指示を行えば良い。
S633で、ライトデータの書き込みが正常に行われたことが確認できなかった場合は(S633で、No)、プロセッサ6は、処理を終了する。処理の終了後、プロセッサ6は、ライトデータの書き込みが正常に終了しなかった原因を分析する。そして、ホスト2に対して、例えば、ライトデータの再送信要求などの適切な処理を行う。
ここで、S634のライトデータ上書きは、インタフェースLSI3が行っても良い。この場合、S633の後、プロセッサ6はインタフェースLSI3に対し、二重書きの指示を行う。そして、指示を受けたインタフェースLSI3は、バッファ44上のデータを読み出し、キャッシュ41a、41bの二箇所へ書き込む。更にこの場合、S635の確認+応答まで含め、インタフェースLSI3の一連の動作としても良い。
又、バッファ44は、例えばホストコンピュータ2上のメモリにあっても良い。この場合、インタフェースLSI3は、S632の指示を受けると、ホストコンピュータ2から受信したデータを、ホストコンピュータ2上のバッファ領域に書き込む。又は、既にメモリ上に格納されている場合には、データを改めて格納することなく、書込み完了をプロセッサ6側に通知する。その後、S634において、インタフェースLSI3がホストコンピュータ2上のバッファ領域に書き込まれたデータを読み出し、キャッシュ41a、41bの2箇所に書き込む。この場合、ストレージ側のデータ転送の回数を1回削減することができるため、データ転送に要するプロセッサやインタフェースLSI3の処理を減らすことができる。このため、更に性能を向上させることができる。
上記の場合も含めて本構成によれば、データの二重化をインタフェースLSI3が行うことで、プロセッサ6の負荷を減らすことができ、性能を向上させることができる。
図5は、ライトコマンド処理プログラム63のフローチャートの残りである。以下のステップは、キャッシュ41に旧データが存在しなかった場合(図4のS631で、No)に、プロセッサ6(具体的には、プロセッサ6内部のプロセッサコア、この説明について以下同様)により実行される。
ライトコマンド処理プログラム63を実行することでプロセッサ6は、ライトデータをキャッシュ41に格納した後に追加処理があるか否かを判定する(S636)。具体的には、プロセッサ6は、キャッシュ41に格納された追加情報を参照し、ライト要求に含まれる書き込み先のボリューム番号について、追加処理が必要か否かを判定する。
判定の結果、追加処理が必要な場合は(S636で、Yes)、LSI3に対しバッファ領域44、或いはキャッシュメモリ41a、bのアドレスを通知してライト+確認処理を指示し(S637)、その後、追加処理を行う(S638)。追加処理は、前述の通り、例えば、リモートコピー処理、スナップショット処理である。リモートコピー処理を行う場合、プロセッサ6は、例えば、リモート接続されたストレージシステムに対して、コピー先のボリューム番号と論理アドレスを含むコピー要求及びライトデータを送信し、コピー先からの応答を受信することで処理を完了する。また、スナップショット処理の場合、プロセッサ6は、例えば、ライト要求に含まれるライト先の論理ボリュームの論理アドレスが示す論理領域(この説明では、対象領域という)にデータが存在する場合には、その時点のボリュームイメージを取り出せるように、対象領域のデータを別のボリューム(例えば、プール)の別領域に待避させることで処理を完了する。その後、プロセッサ6は、ディレクトリ42を更新する(S639)本処理は後述のS545と同じである。その後、LSI3に応答を指示し(S640)、処理を終了する。一般に、追加処理はストレージの機能であって、非常に複雑になる場合が多い一方、通常の処理に比べ、処理時間をかけても良い。そこで、このように、追加処理前後の部分をハードウェア化し、追加処理部分をソフトウェアで行えるようにすることで、ストレージシステムの機能拡張性と性能を両立することができる。
一方、S636の判定の結果、追加処理が必要無い場合は(S636で、No)、プロセッサ6は、キャッシュメモリ41a、bのアドレスを通知してLSI3にライト+確認+更新+応答を指示し(S641)、処理を終了する。
上記より、様々な状況において、ストレージ装置に求められる信頼性及び機能を損なわず、プロセッサ6が行う処理のステップ数を減らし負荷を減らすことができる。これにより、ストレージ装置の性能、ホスト2の処理能力を向上させることができ、結果として、コンピュータシステム1の処理能力を向上させることができる。また、例えば、追加処理や上書きなど発生頻度が少ない複雑な処理についてはプロセッサ6が実行し、キャッシュ41へのライト処理、確認処理、応答処理、更新処理などの発生頻度が多いが、比較的簡易な処理についてはLSI3が行うことで、処理の分担が明確になり、結果として、コンピュータシステム1全体の処理能力が向上する。
図6は、応答機能53の処理のフローチャートである。
本処理は、プロセッサ6からの応答の指示によって起動する(図5のS640参照)。以下、順を追って説明する。
本処理の起動により、処理制御部5は、コマンド応答部33に、ホスト2への転送完了応答の送信を指示する(S531)。そして、処理制御部5は、プロセッサ6に応答を行ったことを通知し(S532)、処理を終了する。
なお、本処理は、図5のS640での応答の指示があった場合に限られず、ライトデータのキャッシュ41へのライト処理、確認処理などの応答以外の処理が、何らかの方法で既に行われている場合に行われてよい。
図7は、ライト+確認+更新+応答機能54の処理のフローチャートである。
本処理は、プロセッサ6からのライト+確認+更新+応答の指示によって起動する(図5のS641参照)。尚、ここで、ホストコンピュータから受領したデータはハードウェア障害等が発生した場合においても、保持し続ける必要がある。そのため、ライト及び確認処理は、キャッシュメモリ41a、41bの両方に対して行う。また、更新処理も、キャッシュディレクトリ42a、42bの両方に対して行う。
本処理の起動により、処理制御部5は、データ受信部32に、ホスト2からのライトデータ受信を指示する(S541)。そして、処理制御部5は、データ書込部34に、受信したライトデータをキャッシュ41a,bに書き込むよう指示する(S542)。この時、ライトデータの書き込み先アドレスは、予めプロセッサ6からの処理指示で指定されたものを用いる。この指示に基づき、データ書込部34は、2つのキャッシュ41a、41bにライトデータを書込む。また、データ書き込み部34は、ライトデータから論理アドレス及びCRC値を算出し、メタデータ(Reference Tag及びGuard部)としてライトデータに付与してもよい。
処理制御部5は、データ確認部36に対し、キャッシュ41にデータが正しく格納されたか否かの確認を行う確認処理を指示する(S543)。この処理も、書き込みを行ったキャッシュ41a、キャッシュ41b両方に対して行う。確認処理について、詳細は後述する。確認処理により、データがキャッシュ41a、bに正しく格納されていることが確認する(S544)。結果がYesの場合、処理制御部5は、ライト要求により指定された論理領域を示す論理アドレスに対応するメモリアドレスのキャッシュ41領域にデータが格納されたことを示すフラグを書き込むようフラグ更新部37指示することで(S545)、データが格納されたことをディレクトリ42に反映する。なお、この処理も、2つのディレクトリ42a、42bに対して行う。そして、処理制御部5は、コマンド応答部33に、ホスト2への転送完了応答の送信を指示し(S546)、プロセッサ6に応答を行ったことを通知して(S547)、処理を終了する。
一方、S544で、データが少なくともキャッシュ41a、bの何れかに正しく格納されていることが確認できなかった場合(S544で、No)、処理制御部5は、プロセッサ6に確認処理の失敗を通知し(S548)、処理を終了する。なお、S548では、本処理の再実行、又は、ホスト2に対するエラー応答は行っていない。この場合、プロセッサ6が、確認処理の失敗の原因を調査し、本処理を再実行するか、ホスト2に対してエラー応答等を行うか等の判断を行う。そして、プロセッサ6は、その判断に従い、確認処理の成功又は失敗の通知を行うよう処理制御部5に指示するようにしてもよい。
上記より、プロセッサ6の処理制御部5に対する1つの指示により、キャッシュ41へのデータ書き込み処理、確認処理、ディレクトリ42の更新処理、応答処理の4つのステップが行われる。従って、プロセッサ6の負荷を減らすことができ、ストレージコントローラ4の性能やホスト2の処理能力が向上し、結果として、コンピュータシステム1全体の処理能力が向上する。
次にライト+確認機能55の処理のフローチャートを説明する。
本処理は、プロセッサ6からのライト+確認の指示によって起動する(図4のS632、又は、図5のS637参照)。
本処理は、ライト+確認+更新+応答機能54のステップの一部の処理と同様の処理が行われる。具体的にはS545,546以外のS541〜544,S547,S548処理を行うことを想定する。
図9は、確認+応答機能56の処理のフローチャートである。
本処理は、プロセッサ6からの確認+応答の指示によって起動する(図4の635参照)。
本処理の起動により、処理制御部5は、データ確認部36に対し、キャッシュ41にデータが正しく格納されたか否かの確認を行う確認処理を指示する(S561)。ここで、ストレージシステムが書き込み完了を応答するためには、データがキャッシュ41a、41bの両方に書き込まれている必要がある。そのため、この確認処理は、キャッシュ41a、41b両方に対して行う。確認処理について、詳細は後述する。確認処理により、データがキャッシュ41a、bの両方からに正しく格納されている旨の通知を確認できた場合(S562で、Yes)、処理制御部5は、コマンド応答部33に、ホスト2への転送完了応答の送信を指示し(S563)、プロセッサ6に応答を行ったことを通知して(S564)、処理を終了する。
一方、S562で、データが少なくとも何れかのキャッシュ41a、bに正しく格納されていることが確認できなかった場合(S562で、No)、処理制御部5は、プロセッサ6に確認処理の失敗を通知し(S565)、処理を終了する。
なお、上述したように、本処理が呼び出されるのは、例えば、キャッシュ41上の旧データを、ホスト2からのライトデータで上書きするために、一時的に空き領域にライトデータを格納する場合である(図4のS635)。このため、ディレクトリ42を更新する必要は無く、確認処理の後、直ちに応答処理を行い、処理を完了すればよい。
以下、確認処理について、幾つかの例を挙げて説明する。 確認処理は、例えば、処理制御部5からの指示に基づいて行われる(具体的には、例えば、図8のS553、図9のS561等の指示)。
図10は、データ確認部36により、1つのキャッシュメモリに対し、データ確認を行う処理の一例(第一の例)を示すフローチャートである。
本処理の起動により、データ確認部36は、ストレージコントローラ4に対し、リードコマンドを発行する(S361)。具体的には、例えば、リードコマンドは、確認したいデータの宛先(例えば、本処理の直前に発行されたホスト2からのライト要求に基づくライト先の論理ボリューム及び論理アドレス)を指定して発行される。
データ確認部35は、リードコマンドに対するプロセッサ6からの応答を受信し、その応答結果を判定する(S362)。判定の結果、エラー応答を受信した場合、又は、応答が無かった場合は(S362で、失敗)、確認処理が失敗したと判断し(S363)、処理を終了する。この判断は、例えば、リードコマンドで指定した宛先に対する、データの伝送路が正しく動作していないため、対象となるデータのライト処理が完了しておらず、キャッシュ41に対象のデータが格納されていないとの推測に基づく判断である。一方、S362でリードコマンドに対する応答が返ってきた場合は(S362で、成功)、確認処理が成功したと判断し(S364)、処理を終了する。この判断は、例えば、リードコマンドで指定した宛先に対する、データの伝送路が正しく動作しているため、対象となるデータのライト処理が正常に完了しており、キャッシュ41に対象のデータが正しく格納されているとの判断である。
上記では、確認したい対象の宛先へリードコマンドを発行するという、極めて簡単な処理のみで、キャッシュ41に対象のデータが存在するか否かを判定できる。この結果、確認処理は、少ない処理量でデータの存在を確認することができる。
図11は、データ確認部36によるデータ確認処理の変形例(第二の例)を示すフローチャートである。本実施例では対象データの内容確認まで行う。
本処理の起動により、データ確認部36は、キャッシュ41から、確認の対象となる1セクタ分のデータ(以下、対象データという)に付されたメタデータのReference Tagを読み出す(S371)。具体的には、データ確認部36は、対象データの論理アドレスを指定したリードコマンドをストレージコントローラ4に発行してもよいし、その他の周知の方法により対象データのReference Tagを読み出してもよい。そして、データ確認部36は、読み出した1セクタ分のデータに付されたReference Tagと、期待値とを比較する(S372)。この場合の期待値は、対象データが書き込まれた際にライトコマンドで指定された論理アドレスであってよい。また、期待値として、対象データの格納場所の論理アドレスが予め設定されていてもよい。また、期待値は、プロセッサ6から処理制御部5経由で送信されてよい。これらの値が一致した場合(S372で、一致)、データ確認部36は、S373に処理を進める。一方、これらの値が一致しなかった場合(S372で、不一致)、データ確認部26は、確認失敗と判断し(S375)、処理を終了する。
S373で、データ確認部36は、対象データに付された残り全てのReference Tagにについて、セクタ毎にS371及びS372の処理を繰り返す(S373)。対象データの全セクタについて、Reference Tagと期待値とが一致した場合(S373で、一致)、データ確認部36は、確認成功と判断する(S374)。一方、いずれかのセクタでReference Tagと期待値とが一致しなかった場合(S373で、不一致)、データ確認部36は、確認失敗と判断し(S375)処理を終了する。
上記により、対象データの取り違え(つまり、データを格納される位置の誤り)を検出することができる。また、S371及びS373においては、対象データの一部、具体的にはメタデータであるReference Tagのみを読み出しているため、読み出すデータの量を低減することができる。また、CRC演算を行わないため、処理の負荷も軽減できる。
図12は、データ確認部36によるデータ確認処理の変形例(第三の例)を示すフローチャートである。
本処理の起動により、データ確認部36は、対象データ(データ部及びメタデータ)を1セクタ分読み出す(S381)。具体的には、データ確認部36は、対象データの論理アドレスを指定したリードコマンドをストレージコントローラ4に発行してもよいし、その他の周知の方法により対象データのReference Tagを読み出してもよい。そして、データ確認部36は、読み出したセクタのReference Tagと、期待値とを比較する(S382)。本ステップ詳細はS372と同様である。これらの値が一致した場合(S382で、一致)、データ確認部36は、S383に処理を進める。一方、これらの値が一致しなかった場合(S382で、不一致)、データ確認部26は、確認失敗と判断し(S387)、処理を終了する。
次に、データ確認部36は、読み出したセクタのデータ部について、CRC値を算出する(S383)。そして、算出したCRC値と読み出したセクタのGuard部のCRC値を比較する(S384)。比較の結果、これらの値が不一致であった場合(S384で、不一致)、データ確認部36は、確認失敗と判断し(S387)、処理を終了する。一方、比較の結果、これらの値が一致した場合(S384で、一致)、データ確認部36は、S385に処理を進める。
S385で、データ確認部36は、対象データの残りの全セクタについて、セクタ毎にS381乃至384の処理を繰り返す(S375)。対象データの全セクタについて、Reference Tagと期待値、及び、CRC値とGuard部のCRC値がそれぞれ一致した場合(S385で、一致)、データ確認部36は、確認成功と判断し(S386)、処理を終了する。一方、いずれかのセクタでReference Tagと期待値、及び、CRC値とGuard部のCRC値がそれぞれ一致しなかった場合(S385で、不一致)、データ確認部36は、確認失敗と判断し(S387)、処理を終了する。
本処理では、対象データの取り違え、対象データの誤り発生なども検出することができる。
上記いずれかのデータ確認処理により、対象データがキャッシュ41格納されていること、又は対象データの正確性を保証できる。これにより、ストレージ装置の信頼性を保ちつつ、コンピュータシステム1の性能を向上させることができる。なお、確認処理は、上記のいずれかの例を実行してもよいし、複数の例を組み合わせて実行してもよい。
上記いずれかのデータ確認処理により、対象データがキャッシュ41格納されていること、又は対象データの正確性を保証できる。これにより、ストレージ装置の信頼性を保ちつつ、コンピュータシステム1の性能を向上させることができる。なお、確認処理は、上記のいずれかの例を実行してもよいし、複数の例を組み合わせて実行してもよい。
図13は、実施例2にかかるコンピュータシステム1のハードウェア構成を示す図である。実施例1と同様の構成要素については、同じ符号を付し説明を省略する場合がある。
本実施例では、LSI3は、ホスト2側のインタフェースとして、ホスト2に実装される。以下、具体的に説明する。ストレージコントローラ4は、互いにバスで接続されたプロセッサ6a、6bを有する。この構成をとることにより、例えばプロセッサ6a、6bのいずれか、或いはキャッシュ41a、41bが動作しなくなる障害の場合においても、他方のプロセッサ6、及びキャッシュ41を使うことで、ストレージ動作を継続させることができる。本実施例においてはメモリ43a、43bはプロセッサ6a、6bの其々とバスで接続されている。プロセッサ6a、6bは、それぞれ、スイッチと、プロセッサコアとを有しており、スイッチがLSI3と、メモリ43a、43bに接続されている。図では、プロセッサ6とメモリ43は、2つであるが、3つ以上であってもよい。また、ホスト2の有するプロセッサ21とLSI3も複数であってもよいし、ホスト2も複数であってよい。メモリ43a、43bには、それぞれ、キャッシュ41a、41b、ディレクトリ42a、42b、及び、バッファ44a、44bの領域が確保される。各処理は実施例1に記載の通りであり、LSI3は、ディレクトリ42aとメモリ43aにアクセスする際には、プロセッサ6a内のスイッチを経由する経路7aを用いる。又、キャッシュディレクトリ42bとメモリ43bにアクセスする際には、プロセッサb内のスイッチを経由する経路7bを用いる。
これにより、LSI3から、それぞれメモリ43a、43bまでの経路が対称となり、どちらの経路を選んでもコンピュータシステム1の処理量は変わらない。このため、処理を均等に分散するだけで全ての資源を効率よく使うことができる。更に、従来のデュアルコントローラ形態では片側のプロセッサ側でデータを格納した後で、他方へのコピーが行なわれていた。従来方式に比べて、本実施例によればプロセッサ6a−プロセッサ6b間のデータ流量が減るため、性能向上にも繋がる。又、LSI3をサーバ側に設けることでサーバ・ストレージ間の冗長構成を担保することも可能になり信頼性向上に寄与する。又、本構成において、サーバ・ストレージ間をPCIe方式にて接続することも可能である。本方式によれば通常のFibre Channel等で接続する方式に比べてIO帯域の低下が少なく、データのやりとりによる性能低下を低減することが可能である。
尚、この構成において、ハードウェア障害等により、経路7a、7bのうち片方が使えなくなる場合のフローを説明する。例として、経路7aを使う処理が失敗した場合に、LSI3又はストレージコントローラ4は経路7aが使えないと判断する。LSI3が故障を認識した場合にはストレージコントローラ4に通知する。経路7aが使えない場合、LSI3は、キャッシュ41aやディレクトリ42aへアクセスすることができないため、その後のフローは一方の経路7aが使えない場合の処理フローに移行する。具体的には、ストレージコントローラ4は、ホスト2からの要求を、経路7b経由でストレージコントローラ4に送信するよう、LSI3の設定を変更する。また、その後の各処理の指示においてデータ書込、読出、確認などの指示を行う際、経路7bを経由して行うよう指示する。
そして、キャッシュ41aやディレクトリに42aに対して操作を行う場合は、プロセッサ6aと6bとの間のパス(具体的には、プロセッサ6aのスイッチとプロセッサ6bのスイッチとの間のパス)を用いて行う。例えば書き込み処理であれば、プロセッサ6bがキャッシュメモリ41bのデータを読み出し、キャッシュメモリ41aに書き込むことで実現する。また、確認処理については、プロセッサ6b内のプロセッサコアがプロセッサ6a内のプロセッサコアに依頼し、プロセッサ6a内のプロセッサコアが確認処理を代替する。ディレクトリ42の更新処理についても同様である。
次に、実施例3にかかるコンピュータシステム1について説明する。
図14は、第三実施例にかかるコンピュータシステム1のハードウェア構成を示す図である。第一及び第二実施例と同様の構成要素については、同じ符号を付し説明を省略する場合がある。
本実施例では、LSI3は、ストレージコントローラ4側のインタフェースとして、ストレージコントローラ4に実装される。以下、具体的に説明する。ストレージコントローラ4は、2つのLSI3a、3bを有し、LSI3aがプロセッサ6a内のスイッチに接続され、LSI3bがプロセッサ6b内のスイッチに接続される。図では、プロセッサ6a、6b、メモリ43a、43b及びLSI3a、3bは、それぞれ2つであるが、3つ以上であってもよい。LSI3aは、メモリ43aにアクセスする際は、プロセッサ6a内のスイッチを経由する経路7aを用い、メモリ43bにアクセスする際は、プロセッサ6a内のスイッチ、及び、プロセッサ6b内のスイッチを経由する経路7bを用いる。
これにより、プロセッサ6と密に連携するLSI3をストレージコントローラ4内に一体化することができる。そのため、ホスト2とストレージコントローラ4の独立性を高めることができ、保守や設計が容易となる。
以上により、ホスト2からのリード/ライト要求に対し、プロセッサ6の指示に応じて、処理の大部分をLSI3が行えるようになる。そして、一連の処理におけるプロセッサ6の処理介在が減少し、プロセッサ6が処理できるアクセス要求が増加する。その結果、ストレージコントローラ4の性能が向上し、ホスト2からのリード/ライト要求から完了応答までの時間も減少するため、ホスト2の処理能力も向上する。以上によりコンピュータシステム1の処理能力が向上する。また、このとき、データが正しく格納されていることを保証する確認処理や、リモートコピーやスナップショットなどの追加処理についても、従来と同じ機能を保つことができる。以上により、高信頼・高機能を保ちつつ、コンピュータシステム1の性能を向上させることができる。
1:コンピュータシステム、2:ホストコンピュータ、3:インタフェースLSI、4:ストレージコントローラ
Claims (15)
- 記憶デバイスに対するデータの入出力を制御し、一時記憶領域と、演算処理を行う演算部を有するプロセッサとを有するストレージコントローラと、
前記ストレージコントローラに接続され、ホストコンピュータからのリード要求又はライト要求を、前記ストレージコントローラに送信するインタフェース装置と
を備え、
前記ストレージコントローラが、前記リード要求又は前記ライト要求を受信した場合、前記プロセッサが、前記インタフェース装置に対して、前記リード要求に従うリードデータのリード処理の一部又は全部を実行することの指示であるリード支援指示、又は、前記ライト要求に従うライトデータのライト処理の一部又は全部を実行することの指示であるライト支援指示を送信し、
前記インタフェース装置が、
前記ストレージコントローラからの前記リード支援指示又は前記ライト支援指示に従い、前記リードデータのリード処理の一部又は全部、又は、前記ライトデータのライト処理の一部又は全部を実行し、
前記ホストコンピュータに対して、前記リード処理が完了した旨の第1の応答又は前記ライト処理が完了した旨第2の応答を送信するコンピュータシステム。 - 前記一時記憶領域が、前記ストレージコントローラに複数存在し、
前記ライト処理は、前記ライトデータを前記複数の一時記憶領域へそれぞれ書き込む一時記憶ライト処理と、前記複数の一時記憶領域に書き込まれたライトデータの正当性を確認する確認処理とを含み、
前記ライト支援指示として、前記一時記憶ライト処理を実行することの指示である第1のライト支援指示と、前記確認処理を実行することの指示である第2のライト支援指示とがあり、
前記インタフェース装置は、前記一時記憶領域のアドレスを指定した第1のライト支援指示に従い、前記ライトデータを前記複数の一時記憶領域の前記指定されたアドレスにそれぞれ書き込む一時記憶ライト処理を実行し、前記第2のライト支援指示に従い、前記複数の一時記憶領域にそれぞれ格納されたライトデータの正当性を確認する確認処理を実行する
請求項1に記載のコンピュータシステム。 - 前記インタフェース装置は、前記確認処理において、
前記複数の一時記憶領域にそれぞれ格納されたライトデータの正当性が確認された場合は、前記ストレージコントローラに対して、前記確認処理が成功した旨の通知を送信し、かつ、前記ホストコンピュータに対して、前記第2の応答を送信し、
前記複数の一時記憶領域にそれぞれ格納された前記データの正当性が確認されなかった場合は、前記ストレージコントローラに対して、前記確認処理が失敗した旨の通知を送信する
請求項2に記載のコンピュータシステム。 - 前記ストレージコントローラは、
前記ライトデータにより更新される旧データが、前記複数の一時記憶領域に存在する場合には、前記インタフェース装置に対して、前記複数の一時記憶領域のうちの1つにおける空き領域を対象とした、前記第1のライト支援指示及び前記第2のライト支援指示を送信し、
前記インタフェース装置は、
前記第1のライト支援指示に従い、対象の空き領域にライトデータを書き込み、前記第2のライト支援指示に従い、対象の空き領域に対して確認処理を行い、
前記確認処理が成功した場合に、前記複数の一時記憶領域に存在する前記旧データに、前記空き領域に格納されたライトデータを上書きする
請求項3に記載のコンピュータシステム。 - 前記インタフェース装置が、前記ホストコンピュータに存在する
請求項2に記載のコンピュータシステム。 - 前記複数の一時記憶領域のそれぞれは、その一時記憶領域に格納されたデータの管理情報と、前記記憶デバイスに対して追加処理が必要か否かの情報を示す追加情報とを格納し、
前記ライト処理は、さらに、前記管理情報を更新する更新処理、及び、前記記憶デバイスに対して所定の処理を行う追加処理を含み、
前記ストレージコントローラの前記プロセッサが、
前記ライトデータに対応し前記ライトデータにより更新される旧データが前記複数の一時記憶領域に存在せず、前記データを格納する記憶デバイスに追加処理が必要でないと判定した場合には、前記インタフェース装置に対して、前記一時記憶ライト処理及び前記確認処理の後に、前記更新処理を実行することの指示である第3のライト支援指示を送信し、
前記旧データが前記複数の一時記憶領域に存在せず、前記データを格納する記憶デバイスに追加処理が必要であると判定した場合には、前記一時記憶ライト処理及び確認処理が行われた後に、前記追加処理及び前記更新処理を実行する
請求項2に記載のコンピュータシステム。 - 前記インタフェース装置が、前記ホストコンピュータに存在し、
前記プロセッサは第1のプロセッサと第2のプロセッサを有し、
前記一時記憶領域は第1の一時記憶領域と第2の一時記憶領域とを有し、
前記インタフェース装置は、第1のパスを介して前記第1のプロセッサに対応づけられる前記第1の一時記憶領域にアクセスし、第2のパスを介して前記第2のプロセッサに対応づけられる前記第2の一時記憶領域にアクセスする
請求項1に記載のコンピュータシステム。 - 前記確認処理は、前記ストレージコントローラに対し、前記ライトデータのライト先の論理領域を指定したリードコマンドを発行することを含む
請求項2に記載のコンピュータシステム。 - 前記ライトデータに、メタデータが付されており、前記メタデータが、前記ライトデータのライト先の論理アドレスを含んだ情報である参照情報を含み、
前記ライト要求が、前記ライトデータのライト先の論理アドレスを含み、
前記確認処理は、前記ライトデータに付されたメタデータにおける参照情報中の論理アドレスを一時記憶領域からそれぞれ読み出すこととし、読み出したそれぞれの論理アドレスと、前記ライト要求が含む論理アドレスとを比較することを含む
請求項2に記載のコンピュータシステム。 - 前記メタデータが、さらに、前記ライトデータの誤り符号を含み、
前記確認処理は、さらに、前記ライトデータに付されたメタデータにおける誤り符号を前記複数の一時記憶領域からそれぞれ読み出すことと、読み出したそれぞれの誤り符号と、前記ライトデータから算出される誤り符号とを比較することとを含む、
請求項9に記載のコンピュータシステム。 - 前記第1のパスが使用不可となった場合に、
前記第2のプロセッサは前記第1のパスが使用不可に対応するモードに切り替える旨を前記インタフェース装置に通知し、
前記第2のプロセッサは前記第2のパスを介して受信したライトデータを前記第1のプロセッサを介して前記第1の一時記憶領域に格納する
請求項7に記載のコンピュータシステム。 - 記憶デバイスに対するデータの入出力を制御し、一時記憶領域と、演算処理を行う演算部を有するプロセッサとを有するストレージコントローラと、
前記ストレージコントローラに接続され、ホストコンピュータからのリード要求又はライト要求を、前記ストレージコントローラに送信するインタフェース装置と、
を備えるコンピュータシステムにより実行される方法であって、
前記ストレージコントローラが、前記リード要求又は前記ライト要求を受信した場合、前記プロセッサが、前記インタフェース装置に対して、前記リード要求に従うリードデータのリード処理の一部又は全部を実行することの指示であるリード支援指示、又は、前記ライト要求に従うライトデータのライト処理の一部又は全部を実行することの指示であるライト支援指示を送信し、
前記インタフェース装置が、
前記ストレージコントローラからの前記リード支援指示又は前記ライト支援指示に従い、前記リードデータのリード処理の一部又は全部、又は、前記ライトデータのライト処理の一部又は全部を実行し、
前記ホストコンピュータに対して、前記リード処理が完了した旨の第1の応答又は前記ライト処理が完了した旨第2の応答を送信する方法。 - 前記一時記憶領域が、前記ストレージコントローラに複数存在し、
前記ライト処理は、前記ライトデータを前記複数の一時記憶領域へそれぞれ書き込む一時記憶ライト処理と、前記複数の一時記憶領域に書き込まれたライトデータの正当性を確認する確認処理とを含み、
前記ライト支援指示として、前記一時記憶ライト処理を実行することの指示である第1のライト支援指示と、前記確認処理を実行することの指示である第2のライト支援指示とがあり、
前記インタフェース装置は、前記一時記憶領域のアドレスを指定した第1のライト支援指示に従い、前記ライトデータを前記複数の一時記憶領域の前記指定されたアドレスにそれぞれ書き込む一時記憶ライト処理を実行し、前記第2のライト支援指示に従い、前記複数の一時記憶領域にそれぞれ格納されたライトデータの正当性を確認する確認処理を実行する
請求項12に記載の方法。 - 前記インタフェース装置は、前記確認処理において、
前記複数の一時記憶領域にそれぞれ格納されたライトデータの正当性が確認された場合は、前記ストレージコントローラに対して、前記確認処理が成功した旨の通知を送信し、かつ、前記ホストコンピュータに対して、前記第2の応答を送信し、
前記複数の一時記憶領域にそれぞれ格納された前記データの正当性が確認されなかった場合は、前記ストレージコントローラに対して、前記確認処理が失敗した旨の通知を送信する
請求項13に記載の方法。 - 前記ストレージコントローラは、
前記ライトデータにより更新される旧データが、前記複数の一時記憶領域に存在する場合には、前記インタフェース装置に対して、前記複数の一時記憶領域のうちの1つにおける空き領域を対象とした、前記第1のライト支援指示及び前記第2のライト支援指示を送信し、
前記インタフェース装置は、
前記第1のライト支援指示に従い、対象の空き領域にライトデータを書き込み、前記第2のライト支援指示に従い、対象の空き領域に対して確認処理を行い、
前記確認処理が成功した場合に、前記複数の一時記憶領域に存在する前記旧データに、前記空き領域に格納されたライトデータを上書きする
請求項14に記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/070378 WO2015011835A1 (ja) | 2013-07-26 | 2013-07-26 | コンピュータシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5976937B2 true JP5976937B2 (ja) | 2016-08-24 |
JPWO2015011835A1 JPWO2015011835A1 (ja) | 2017-03-02 |
Family
ID=52392911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015528086A Expired - Fee Related JP5976937B2 (ja) | 2013-07-26 | 2013-07-26 | コンピュータシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US9740423B2 (ja) |
JP (1) | JP5976937B2 (ja) |
WO (1) | WO2015011835A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017149674A1 (ja) | 2016-03-01 | 2017-09-08 | 株式会社日立製作所 | ストレージシステム、ストレージ装置、およびストレージシステムの制御方法 |
GB2578924B (en) * | 2018-11-14 | 2021-09-29 | Advanced Risc Mach Ltd | An apparatus and method for controlling memory accesses |
WO2022055512A1 (en) * | 2020-09-14 | 2022-03-17 | Google Llc | Memory request timeouts using a common counter |
US20240143539A1 (en) * | 2022-10-31 | 2024-05-02 | Mellanox Technologies, Ltd. | Remote direct memory access operations with integrated data arrival indication |
US11785087B1 (en) * | 2022-10-31 | 2023-10-10 | Mellanox Technologies, Ltd. | Remote direct memory access operations with integrated data arrival indication |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003208267A (ja) * | 2002-01-10 | 2003-07-25 | Hitachi Ltd | クラスタ型ディスク制御装置および負荷分散方法 |
JP2003256150A (ja) * | 2002-03-01 | 2003-09-10 | Hitachi Ltd | 記憶制御装置および記憶制御装置の制御方法 |
JP2007249729A (ja) * | 2006-03-17 | 2007-09-27 | Hitachi Ltd | マイクロプロセッサの負荷分散機能を備えたストレージシステム |
JP2008181382A (ja) * | 2007-01-25 | 2008-08-07 | Hitachi Ltd | ストレージ装置及び負荷分散方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6820181B2 (en) * | 2002-08-29 | 2004-11-16 | Micron Technology, Inc. | Method and system for controlling memory accesses to memory modules having a memory hub architecture |
US8195903B2 (en) * | 2006-06-29 | 2012-06-05 | Oracle America, Inc. | System and method for metering requests to memory |
US8572342B2 (en) | 2010-06-01 | 2013-10-29 | Hitachi, Ltd. | Data transfer device with confirmation of write completion and method of controlling the same |
JP5547154B2 (ja) * | 2011-09-21 | 2014-07-09 | 株式会社東芝 | メモリ・デバイス |
BR122016006764B1 (pt) * | 2013-03-15 | 2022-02-01 | Intel Corporation | Aparelhos e métodos de memória |
-
2013
- 2013-07-26 WO PCT/JP2013/070378 patent/WO2015011835A1/ja active Application Filing
- 2013-07-26 US US14/772,887 patent/US9740423B2/en active Active
- 2013-07-26 JP JP2015528086A patent/JP5976937B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003208267A (ja) * | 2002-01-10 | 2003-07-25 | Hitachi Ltd | クラスタ型ディスク制御装置および負荷分散方法 |
JP2003256150A (ja) * | 2002-03-01 | 2003-09-10 | Hitachi Ltd | 記憶制御装置および記憶制御装置の制御方法 |
JP2007249729A (ja) * | 2006-03-17 | 2007-09-27 | Hitachi Ltd | マイクロプロセッサの負荷分散機能を備えたストレージシステム |
JP2008181382A (ja) * | 2007-01-25 | 2008-08-07 | Hitachi Ltd | ストレージ装置及び負荷分散方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015011835A1 (ja) | 2015-01-29 |
US20160132271A1 (en) | 2016-05-12 |
JPWO2015011835A1 (ja) | 2017-03-02 |
US9740423B2 (en) | 2017-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11455289B2 (en) | Shared volumes in distributed RAID over shared multi-queue storage devices | |
US8943358B2 (en) | Storage system, apparatus, and method for failure recovery during unsuccessful rebuild process | |
US7516268B2 (en) | Method for improving writing data efficiency and storage subsystem and system implementing the same | |
US9836404B2 (en) | Write mirroring to storage class memory devices | |
US10102070B2 (en) | Information processing system, storage apparatus and storage device | |
JP4920291B2 (ja) | 計算機システム、アクセス制御方法及び管理計算機 | |
JP5976937B2 (ja) | コンピュータシステム | |
US20130290777A1 (en) | Storage system and storage control apparatus | |
EP2765515B1 (en) | System and method for rebuilding redundant secondary storage caches | |
JP5353887B2 (ja) | ディスクアレイ装置の制御ユニット、データ転送装置及び復電処理方法 | |
US9652407B2 (en) | Method for processing error directory of node in CC-NUMA system, and node | |
US20230251931A1 (en) | System and device for data recovery for ephemeral storage | |
JP4945663B2 (ja) | 情報処理装置およびデータの復旧方法 | |
US20220308761A1 (en) | Storage system and control method of storage system | |
JP2006099802A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 | |
US10191690B2 (en) | Storage system, control device, memory device, data access method, and program recording medium | |
US10656867B2 (en) | Computer system, data management method, and data management program | |
US12013753B2 (en) | Proactive loss notification and handling in data storage devices | |
US20180052749A1 (en) | Information processing system and information processing method | |
US20190205044A1 (en) | Device for restoring lost data due to failure of storage drive | |
JP3894220B2 (ja) | 記憶制御装置 | |
JP2004164666A (ja) | 記憶制御装置 | |
JP2007115287A (ja) | 記憶制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160628 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160720 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5976937 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |