JP6013609B2 - ストレージ装置及びデータ入出力方法 - Google Patents
ストレージ装置及びデータ入出力方法 Download PDFInfo
- Publication number
- JP6013609B2 JP6013609B2 JP2015532605A JP2015532605A JP6013609B2 JP 6013609 B2 JP6013609 B2 JP 6013609B2 JP 2015532605 A JP2015532605 A JP 2015532605A JP 2015532605 A JP2015532605 A JP 2015532605A JP 6013609 B2 JP6013609 B2 JP 6013609B2
- Authority
- JP
- Japan
- Prior art keywords
- storage
- data
- read
- storage medium
- command
- 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/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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk 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)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、ストレージ装置及びデータ入出力方法に関し、特に、スキャッタギャザー(Scatter-Gather)コマンドに対応したストレージ装置に適用して好適なものである。
スキャッタギャザーI/Oコマンドは、標準化活動中のSCSI(Small Computer System Interface)コマンドであり、I/O(Input/Output)コマンドとしてリードコマンドの一種であるリードギャザー(Read Gather)コマンドと、ライトコマンドの一種であるライトスキャッタ(Write Scatter)コマンドがある。
これらリードギャザーコマンド及びライトスキャッタコマンドは、パラメータリストと共に送信先に送信される。パラメータリストは、非連続な複数の記憶領域にそれぞれ格納されているリード/ライト対象のデータについて、これらデータが格納されている又は格納すべき記憶領域の先頭アドレス及びこれらデータのデータ長をリスト化したものである。
そして、これらリードギャザーコマンド及びライトスキャッタコマンドのうち、例えばリードギャザードコマンドを受信したストレージ装置は、パラメータリストにおいて指定された各記憶領域から指定されたデータ長のデータをそれぞれ読み出し、読み出したすべてのデータを纏めて1回のデータ転送でリードギャザーコマンドの送信元に送信する。
このようなスキャッタギャザーコマンドを利用することによって、非連続の複数の記憶領域に対するリード/ライト要求を1回のコマンド送信で行うことができるため、個々の記憶領域ごとにリードコマンドやライトコマンドをストレージ装置に送信する場合と比べて、ストレージ装置の処理負荷を低減することができる。
ところで、リードギャザーコマンドを受信したストレージ装置のストレージコントローラは、まず、パラメータリストにおいて指定された各データをキャッシュメモリ上で探索し、キャッシュミスしたデータについて、対応する記憶メディアにリードコマンドを発行することにより、そのデータをその記憶メディアから読み出す。そしてストレージコントローラは、このような記憶メディアからのデータの読み出しを、キャッシュミスしたデータについてそれぞれ行うことになる。
このためリードギャザーコマンドを受信したストレージ装置側では、このようなストレージコントローラによる複数回に渡る記憶メディアからのデータのリード処理の処理負荷がネックとなって、例え記憶メディアとして高性能な記憶メディアを利用したとしても、ストレージ装置全体の応答性能として十分な応答性能を得ることが難しい問題があった。
本発明は以上の点を考慮してなされたもので、ストレージ装置全体としての応答性能を向上させ得るストレージ装置及びデータ入出力方法を提案しようとするものである。
かかる課題を解決するため本発明においては、ストレージ装置において、接続される複数の記憶メディアと、前記記憶メディアに対するデータの入出力を制御するストレージコントローラとを設け、前記ストレージコントローラが、ホスト計算機に論理ボリュームを提供し、前記ホスト計算機から送信される前記論理ボリューム内の複数の記憶領域をリード先として指定した第1のリードコマンドを受信した場合に、リード先として指定された当該論理ボリューム内の前記記憶領域ごとに、当該記憶領域に書き込まれたデータが実際に格納されている前記記憶メディア及び当該記憶メディア内のアドレスをそれぞれ特定し、特定した前記記憶メディア内の特定した一部又は全部の各前記アドレスをそれぞれリード先として指定した第2のリードコマンドを特定した前記記憶メディアごとにそれぞれ作成すると共に、作成した各前記第2のリードコマンドをそれぞれ対応する前記記憶メディアにそれぞれ送信し、前記第2のリードコマンドを受信した各前記記憶メディアが、受信した前記第2のリードコマンドにおいて指定された各前記アドレスからデータをそれぞれ読み出して前記ストレージコントローラに送信し、前記ストレージコントローラが、前記第2のリードコマンドを送信した各前記記憶メディアからそれぞれ送信される、前記第2のリードコマンドにおいて指定した各前記アドレスからそれぞれ読み出されたデータを前記ホスト計算機に転送するようにした。
以上のストレージ装置によれば、ストレージコントローラが記憶メディア内の複数の記憶領域に対するリードを1回のコマンド発行により行うことができる。
本発明によれば、リード処理に関するストレージコントローラの処理負荷を低減することができ、ストレージ装置全体としての応答性能を向上させることができる。
以下図面について、本発明の一実施の形態を詳述する。
(1)第1の実施の形態
(1−1)本実施の形態による計算機システムの概要
図1及び図2は、第1の実施の形態による計算機システム1において実行されるリード処理(図1)と、ライト処理及びデステージング処理(図2)との流れの概要を示す。本計算機システム1は、ストレージ装置3において、データを記憶メディア5からストレージコントローラ4内のキャッシュ領域に読み出すステージング時や、当該キャッシュ領域に格納されているデータを対応する記憶メディア5に書き込むデステージング時に、ストレージコントローラ4が記憶メディア5内の非連続な複数の記憶領域に分散して格納された又は格納すべきデータを、スキャッタギャザーコマンドを利用して一括してその記憶メディア5にリード/ライトする点を特徴とする。
(1−1)本実施の形態による計算機システムの概要
図1及び図2は、第1の実施の形態による計算機システム1において実行されるリード処理(図1)と、ライト処理及びデステージング処理(図2)との流れの概要を示す。本計算機システム1は、ストレージ装置3において、データを記憶メディア5からストレージコントローラ4内のキャッシュ領域に読み出すステージング時や、当該キャッシュ領域に格納されているデータを対応する記憶メディア5に書き込むデステージング時に、ストレージコントローラ4が記憶メディア5内の非連続な複数の記憶領域に分散して格納された又は格納すべきデータを、スキャッタギャザーコマンドを利用して一括してその記憶メディア5にリード/ライトする点を特徴とする。
なお、図1及び図2は、ストレージ装置3が備える記憶メディア5が「メディア1」及び「メディア2」の2つである場合の例であるが、記憶メディア5が1つだけの場合や、記憶メディア5が3つ以上存在する場合も処理の流れは同様である。また図1及び図2では、ホスト計算機2からのデータを1つの記憶メディア5が提供する記憶領域にリード/ライトする場合の例であるが、複数の記憶メディア5によりRAID(Redundant Arrays of Independent Disks)グループを構成し、当該RAIDグループが提供する記憶領域にホスト計算機2からのデータをリード/ライトする場合も処理の流れは同様である。
まず、図1を参照して、本計算機システム1におけるリード処理の流れについて説明する。ホスト計算機2は、ストレージ装置3内の非連続な複数の記憶領域からデータを一括して読み出す場合、これらの記憶領域をリード先としてそれぞれ指定したパラメータリストをリードギャザーコマンドと共にストレージ装置3に送信する(SP1)。
このリードギャザーコマンド及びパラメータリストを受信したストレージ装置3のストレージコントローラ4は、パラメータリストにおいて指定された各データをキャッシュ領域上で探索し(SP2)、キャッシュ領域に格納されていないデータ(キャッシュヒットしなかったデータ)については、そのデータが格納されている記憶メディア5及び当該記憶メディア5上のアドレスをそれぞれ特定する(SP3)。
またストレージコントローラ4は、このようにして記憶メディア5及び当該記憶メディア5上のアドレスを特定した各データを、そのデータが格納されている記憶メディア5ごとに分類する(SP4)。そしてストレージコントローラ4は、分類結果に基づいて、記憶メディア5ごとのリードギャザーコマンド及びパラメータリストを生成し、生成したリードギャザーコマンド及びパラメータリストをそれぞれ対応する記憶メディア5に送信する(SP5A,SP5B)。
リードギャザーコマンド及びパラメータリストを受信した各記憶メディア5は、それぞれそのパラメータリストにおいて指定された各記憶領域からデータをそれぞれ読み出し、読み出した各データを一括してストレージコントローラ4に転送する(SP6A,SP6B)。
ストレージコントローラ4は、記憶メディア5から転送されてきたリード対象のデータを受信すると、このデータをキャッシュ領域に順次格納する(SP7A,SP7B)。またストレージコントローラ4は、すべての記憶メディア5からすべてのデータを受信し終えると、ステップSP2においてキャッシュ領域上で検出したリード対象のデータ(キャッシュヒットしたデータ)と、上述のように各記憶メディア5から読み出したリード対象のデータとを上述のリードギャザーコマンドの送信元のホスト計算機2に一括して送信する(SP8)。このようなストレージコントローラ4からホスト計算機2へのデータ転送の完了により、リード処理が終了する。
次に、図2を参照して、本計算機システム1におけるライト処理及びデステージング処理の流れについて説明する。ホスト計算機2は、ストレージ装置3にデータを書き込む際、ライトコマンドをストレージ装置3に送信する(SP10)。なお、このときホスト計算機2からストレージ装置3に送信されるライトコマンドはライトスキャッタコマンド及び通常のライトコマンドのいずれであってもよい。
ライトコマンドを受信したストレージ装置3のストレージコントローラ4は、必要な容量の記憶領域をキャッシュメモリ上に確保し(SP11)、その後、データの転送開始を要求する通知(以下、これをデータ転送開始通知と呼ぶ)をホスト計算機2に送信する(SP12)。かくして、データ転送開始通知を受信したホスト計算機2は、データ転送を開始して、ライト対象のデータを順次ストレージ装置3に転送する(SP13)。
ストレージコントローラ4は、かかるライト対象のデータを受信すると、これをキャッシュ領域に順次格納する(SP14)。そしてストレージコントローラ4は、やがてすべてのライト対象のデータを受信し、これらのデータをすべてキャッシュ領域に格納し終えると、データの格納が完了した旨の通知(以下、これを格納完了通知と呼ぶ)をホスト計算機2に送信する(SP15)。これによりホスト計算機2及びストレージ装置3間におけるライト対象のデータの転送処理が完了する。
一方、ストレージコントローラ4は、キャッシュ領域に格納されているデータのうち、記憶メディア5にデステージングされていないデータを、そのデータについてのライトコマンドにおいて指定された記憶メディア5内の当該ライトコマンドにおいて指定された記憶領域に書き込むデステージング処理を定期的に実行する(SP16A〜SP20A,SP16B〜SP20B)。
デステージング処理において、ストレージコントローラ4は、そのとき対象とする記憶メディア5を1つ選択し、キャッシュ領域に格納されているデータの中から、その記憶メディアに書き込むべきデータであって、その記憶メディア5に未だ書き込まれていないデータを検索する(SP16A)。
そしてストレージコントローラ4は、かかる検索により検出したすべてのデータについて、そのデータを格納すべきアドレスと、そのデータのデータ長とを指定したライトスキャッタコマンド及びパラメータリストを生成し、生成したライトスキャッタコマンド及びパラメータリストを、ステップSP16Aにおいて選択した記憶メディア5に送信する(SP17A)。
また、このライトスキャッタコマンド及びパラメータリストを受信した記憶メディア5は、データ受信の準備が完了するとデータ転送開始通知をストレージコントローラ4に送信する(SP18A)。かくして、このデータ転送開始通知を受信したストレージコントローラ4は、データ転送を開始して、パラメータリストにおいて格納先のアドレスを指定したすべてのデータをキャッシュ領域から順次読み出して当該記憶メディア5に一括して転送する(SP19A)。
記憶メディア5は、これらのデータを受信すると、受信した各データをそれぞれパラメータリストにおいて指定されたアドレスに格納する。そして記憶メディア5は、やがてパラメータリストにおいて指定されたすべてのデータを受信し、これらのデータをすべてパラメータリストにおいて指定されたアドレスにそれぞれ格納し終えると、格納完了通知をストレージコントローラ4に送信する(SP20A)。これにより、その記憶メディア5に対するデステージング処理が完了する。
そしてストレージコントローラ4は、他の記憶メディア5についてもステップSP16A〜ステップSP20Aと同様の処理を、記憶メディア5ごとに順番に又はすべての記憶メディア5について並列的に実行する(SP16B〜SP20B)。
このように本実施の形態による計算機システム1では、ストレージ装置3内におけるストレージコントローラ4及び記憶メディア5間におけるデータの転送にも近年技術開発が盛んに行われているスキャッタギャザーコマンド(ギャザーリードコマンド及びライトスキャッタコマンド)を使用するため、ストレージコントローラ4及び記憶メディア5間におけるデータ転送時におけるオーバヘッドをさらに低減することができる。かくするにつきストレージコントローラ4の処理負荷を低減して、ストレージ装置3全体としての応答性能をさらに向上することができる。
以下、このような機能を有する本実施の形態による計算機システム1の詳細について説明する。
(1−2)本実施の形態による計算機システムの構成
図3は、本実施の形態による計算機システム1を示す。本計算機システム1では、ホスト計算機2及びストレージ装置3がSCSIネットワークNWを介して接続されている。
図3は、本実施の形態による計算機システム1を示す。本計算機システム1では、ホスト計算機2及びストレージ装置3がSCSIネットワークNWを介して接続されている。
ホスト計算機2は、例えばCPU(Central Processing Unit)やメモリなどの情報処理資源を備えたコンピュータ装置であり、パーソナルコンピュータ、ワークステーション又はメインフレームなどから構成される。ホスト計算機2には、ストレージ装置3に対するデータのリード要求やライト要求を発行するアプリケーション10と、アプリケーション10から発行されたリード要求やライト要求をSCSI規格に応じたI/Oコマンド(リードコマンド、ライトコマンド、リードギャザーコマンド又はライトスキャッタコマンドなど)に変換してストレージ装置3に送信するOS(Operating System)・ドライバ11となどのソフトウェアが実装される。
ストレージ装置3は、1又は複数の記憶メディア5と、記憶メディア5に対するデータの入出力(リード/ライト)を制御するストレージコントローラ4とを備えて構成される。
記憶メディア5は、SAS(Serial Attached SCSI)ディスク、SATA(Serial AT Attachment)ディスク等のハードディスク装置や、フラッシュメモリやSSD(Solid State Drive)等の半導体メモリなどから構成される。同一種別の複数の記憶メディア5が1つのRAIDグループRGとして管理され、1つのRAIDグループRGを構成する各記憶メディア5が提供する物理的な記憶領域上に1又は複数の論理的なボリューム(以下、これを論理ボリュームと呼ぶ)VOLが設定される。そして、ホスト計算機2からのデータは、この論理ボリュームVOL内に所定大きさのブロック(以下、これを論理ブロックと呼ぶ)を単位として格納される。
論理ボリュームVOLには、固有の識別子(以下、これをボリューム番号と呼ぶ)が付与される。本実施の形態の場合、論理ボリュームVOLに対するデータの入出力は、データをリード/ライトする論理ボリュームVOL内の先頭のLBA(以下、これを先頭LBAと呼ぶ)と、リード/ライトすべきデータのデータ長とを指定して行われる。
なお本実施の形態の場合、記憶メディア5としては、上述のスキャッタギャザーコマンドに対応したものが適用される。従って、記憶メディア5は、ストレージコントローラ4からリードギャザーコマンド及びパラメータリストが与えられた場合には、そのパラメータリストにおいて指定された各記憶領域からそれぞれデータを読み出してストレージコントローラ4に転送する一方、ストレージコントローラ4からライトスキャッタコマンド、パラメータリスト及びライト対象のデータが与えられた場合には、そのパラメータリストにおいて指定された各記憶領域にそれぞれ対応するライト対象のデータを格納する。
ストレージコントローラ4は、ホストバスアダプタ(HBA:Host Bus Adapter)12、チップセット13、メモリ14、マイクロプロセッサ(MP:Microprocessor)15及び複数のディスクアダプタ16などを備えて構成される。
ホストバスアダプタ12は、ホスト計算機2との通信時におけるプロトコル制御を行う機能を有するインタフェースであり、ホスト計算機2との間で各種コマンドやデータを送受する。チップセット13は、ストレージコントローラ4内の各要素間でのデータ転送を制御する機能を有する。ホストバスアダプタ12、メモリ14、マイクロプロセッサ15及びディスクアダプタ16間におけるデータの転送は、このチップセット13を介して行われる。
メモリ14は、例えばダイナミック・ランダム・アクセス・メモリ(DRAM)などの半導体メモリから構成され、記憶領域がキャッシュメモリ領域14Aと、ローカルメモリ領域14Bとに分割されて使用される。そして、記憶メディア5に入出力するデータや、ホスト計算機2からのコマンドがキャッシュメモリ領域14Aに一時的に格納され、ストレージ装置3の起動時等に特定の記憶メディア5から読み出された各種プログラムや各種データがローカルメモリ領域14Bに格納される。
マイクロプロセッサ15は、ストレージコントローラ4全体の動作制御を司る機能を有する。マイクロプロセッサ15は、メモリ14のキャッシュメモリ領域14Aに格納されたホスト計算機2からのコマンドと、メモリ14のローカルメモリ領域14Bに格納された制御プログラム及び各種データとに基づいて必要な演算処理や制御処理を実行する。
ディスクアダプタ16は、各記憶メディア5との通信を制御するインタフェースであり、各記憶メディア5とSCSIケーブル又はSCSIネットワーク等の通信路17を介して接続される。ディスクアダプタ16は、SAS規格による通信プロトコルに従って記憶メディア5との間の通信を制御する。
(1−3)各種プログラム及び各種情報の構成
上述のように本計算機システム1は、ストレージ装置3において、記憶メディア5に格納されているデータをストレージコントローラ4内のメモリ14のキャッシュメモリ領域14Aにステージングする際や、当該キャッシュメモリ領域14Aから記憶メディア5にデータをデステージングする際に、スキャッタギャザーコマンドを利用してデータを記憶メディア5に一括してリード/ライトするステージング/デステージング機能がストレージ装置3に搭載されている点を特徴とする。
上述のように本計算機システム1は、ストレージ装置3において、記憶メディア5に格納されているデータをストレージコントローラ4内のメモリ14のキャッシュメモリ領域14Aにステージングする際や、当該キャッシュメモリ領域14Aから記憶メディア5にデータをデステージングする際に、スキャッタギャザーコマンドを利用してデータを記憶メディア5に一括してリード/ライトするステージング/デステージング機能がストレージ装置3に搭載されている点を特徴とする。
このようなステージング/デステージング機能を実現するための手段として、ストレージ装置3におけるメモリ14のローカルメモリ領域14Bには、図4に示すように、キャッシュ管理情報20、マップ情報21及び制御プログラム群22が格納されている。
このうちキャッシュ管理情報20は、メモリ14のキャッシュメモリ領域14Aに一時的に格納されているデータを管理するために利用される情報であり、図5に示すように、キャッシュメモリアドレス欄20A、ボリューム番号欄20B、先頭LBA欄20C、属性欄20D及び状態欄20Eを備えるテーブル状のデータ構成を有する。
そしてキャッシュメモリアドレス欄20Aには、メモリ14のキャッシュメモリ領域14A内の各アドレス(以下、これをキャッシュメモリアドレスと呼ぶ)がそれぞれ格納される。またボリューム番号欄20Bには、対応するキャッシュメモリアドレスに格納されたデータが書き込まれた論理ボリュームVOLのボリューム番号が格納され、先頭LBA欄20Cには、そのデータが書き込まれたその論理ボリュームVOL内の記憶領域の先頭LBAが格納される。
属性欄20Dには、対応するキャッシュメモリアドレスに格納されているデータの属性が格納される。データの属性としては、ホスト計算機2によりライトされたユーザデータ(「Data」)と、当該ユーザデータに基づき生成されたパリティデータ(「Parity」)などがある。
状態欄20Eには、対応するキャッシュメモリアドレスに格納されているデータの状態が格納される。データの状態としては、そのデータがデステージング済みのデータ(以下、これをクリーンデータと呼ぶ)であることを表すクリーン(「Clean」)と、そのデータがデステージングされていないデータ(以下、これをダーティデータと呼ぶ)であることを表す(「Dirty」)となどがある。
従って、図5の例の場合、例えばメモリ14の「0x00000000」というキャッシュメモリアドレスに格納されているデータは、「0」というボリューム番号の論理ボリュームVOLにおける先頭LBAが「0x02009101」の記憶領域に格納されたユーザデータ(「Data」)であり、既にデステージング済み(「Clean」)であることが示されている。
なおキャッシュ管理情報20において、メモリ14のデータが格納されていないキャッシュメモリアドレスについては、情報が存在しないことを表す「Null」がボリューム番号欄20B、先頭アドレス欄20C及び属性欄20Dにそれぞれ格納されると共に、「Free」という情報が状態欄20Eに格納される。
マップ情報21は、各論理ボリュームVOLの構成を管理するために利用される情報であり、図6に示すように、ボリューム番号欄21A、構成欄21B及びメディア番号欄21Cを備えるテーブル状のデータ構成を有する。
そしてボリューム番号欄21Aには、ストレージコントローラ4がホスト計算機2に提供している各論理ボリュームVOLのボリューム番号が格納され、構成欄21Bには、対応する論理ボリュームVOLを提供するRAIDグループRGのRAID構成を表す情報が格納される。またメディア番号欄21Cには、対応するRAIDグループRGを構成するすべての記憶メディア5の識別番号(記憶メディア番号)が格納される。
従って、図6の例の場合、例えば「0」というボリューム番号の論理ボリュームVOLは、それぞれ「0」、「1」、「2」及び「3」という記憶メディア番号がそれぞれ付与された4つの記憶メディア5から構成される「RAID10」というRAID構成のRAIDグループRGが提供する記憶領域であることが示されている。また図6では、そのRAIDグループRGは、データを2つの記憶メディア5に分散して格納すると共に、これをミラーリングした構成(「2D+2D」)であることも示されている。
なお、マップ情報21において、定義されていない論理ボリュームVOLのボリューム番号のエントリ(行)については、構成欄21B及びメディア番号欄21Cにそれぞれ情報が存在しないことを意味する「null」が格納される。
一方、制御プログラム群22は、図4に示すように、リード処理プログラム23、ライト処理プログラム24及びデステージング処理プログラム25を備えて構成される。
リード処理プログラム23は、リードギャザーコマンドを含むリードコマンドがホスト計算機2から送信されてきたときに起動されるプログラムであり、ライト処理プログラム24は、ライトスキャッタコマンドを含むライトコマンドがホスト計算機2から送信されてきたときに起動されるプログラムである。
またデステージング処理プログラム25は、メモリ14のキャッシュメモリ領域14Aに格納されているダーティデータを対応する記憶メディア5にデステージングする際に起動されるプログラムである。
これらリード処理プログラム23、ライト処理プログラム24及びデステージング処理プログラム25のより詳細な機能については、後述する。
(1−4)スキャッタギャザーコマンド等の構成
ここで、ホスト計算機2及びストレージ装置3間、及びストレージ装置3のストレージコントローラ4及び記憶メディア5間においてやり取りされるスキャッタギャザーコマンド(リードギャザーコマンド及びライトスキャッタコマンド)のコマンドフォーマットについて説明する。
ここで、ホスト計算機2及びストレージ装置3間、及びストレージ装置3のストレージコントローラ4及び記憶メディア5間においてやり取りされるスキャッタギャザーコマンド(リードギャザーコマンド及びライトスキャッタコマンド)のコマンドフォーマットについて説明する。
図7は、スキャッタギャザーコマンドのコマンドフォーマットを示す。この図7に示すように、スキャッタギャザーコマンドの0バイト目には、このスキャッタギャザーコマンドのオペレーションコード(「OPERATION CODE」)が格納される。ここで用いられるオペレーションコードは、そのスキャッタギャザーコマンドがリードギャザーコマンド及びライトスキャッタコマンドのいずれであるかを表すコードである。
またスキャッタギャザーコマンドの4〜7バイト目には、このスキャッタギャザーコマンドと共にコマンド送信先に送信されるパラメータリスト(図8)に格納されている後述のLBAレンジディスクリプタ(「LBA range descriptor」)の数が格納され、スキャッタギャザーコマンドの8〜11バイト目には、このスキャッタギャザーコマンドによりリード/ライトしようとしている各データのデータ長の合計値が格納される。
なおリード/ライト対象の論理ボリュームの指定は、ネットワークのトランスポート層においてその論理ボリューム番号(LUN:Logical Unit Number)を指定することにより行われる。具体的には、SCSIネットワークNW(図1)における通信プロトコルとしてファイバチャネルプロトコルが採用されている場合には、そのファイバチャネルプロトコルにおけるLUNフィールドに対象とする論理ボリュームのLUNが格納されることにより行われ、SCSIネットワークNWにおける通信プロトコルとしてiSCSIプロトコルが採用されている場合には、BHS(Basic Header Segment)部に格納される(「http://tools.ietf.org/html/rfc3720#page-116」の「10.2.1」のByte 8を参照)。
図8は、上述のスキャッタギャザーコマンド(図7)と共にコマンド送信元からコマンド送信先に送信されるパラメータリストのフォーマットを示す。この図8に示すように、パラメータリストの32バイト目以降には、それぞれ32バイトのデータサイズを有するLBAレンジディスクリプタ(「LBA range descriptor」)が、そのスキャッタギャザーコマンドによりリード/ライトしようとしているデータ数と同じ数だけ格納される。
図9は、かかるパラメータリスト(図8)に格納されたLBAレンジディスクリプタ(「LBA range descriptor」)の具体的な内容を示す。LBAレンジディスクリプタは、スキャッタギャザーコマンドにより論理ボリュームVOL内又は記憶メディア5内の非連続な複数の記憶領域にデータをリード/ライトする際、当該記憶領域及びその記憶領域にリード/ライトすべきデータのデータ長を指定するためのディスクリプタであり、データをリード/ライトしようとする記憶領域ごとに作成される。図9に示すように、LBAレンジディスクリプタの0〜7バイト目には、論理ボリュームVOL又は記憶メディア5内の記憶領域のうち、データをリード/ライトすべき記憶領域の先頭LBA(「LOGICAL BLOCK ADDRESS」)が格納され、8〜11バイト目には、その記憶領域にリード/ライトされるデータのデータ長(「TRANSFER LENGTH」)が格納される。
図10は、スキャッタギャザーコマンドのうちのリードギャザーコマンドを受信したストレージ装置3又は記憶メディア5から当該リードギャザーコマンドの送信元のホスト計算機2又はストレージコントローラ4に送信されるパラメータデータのデータフォーマットを示す。リードギャザーコマンドを受信したストレージ装置3又は記憶メディア5は、この図10に示すように、対応する論理ボリュームVOL又は記憶メディア5内のリードギャザーコマンドにおいて指定された各記憶領域からそれぞれ読み出したデータを、当該リードギャザーコマンドにおける対応するLBAレンジディスクリプタ(「LBA range descriptor」)と同じ順番で並べ、これをリードギャザーコマンドの送信元のホスト計算機2又はストレージコントローラ4に送信する。
(1−5)I/Oに関連する各種処理
次に、本計算機システム1においてデータのリード/ライトに関連して実行される各種処理の具体的な処理内容について説明する。なお、以下においては、各種処理の処理主体を「プログラム」として説明するが、実際上、そのプログラムに基づいてストレージ装置3のマイクロプロセッサ15がその処理を実行することは言うまでもない。
次に、本計算機システム1においてデータのリード/ライトに関連して実行される各種処理の具体的な処理内容について説明する。なお、以下においては、各種処理の処理主体を「プログラム」として説明するが、実際上、そのプログラムに基づいてストレージ装置3のマイクロプロセッサ15がその処理を実行することは言うまでもない。
(1−5−1)リード処理
図11は、ホスト計算機2からのリードギャザーコマンド(図6参照)及びパラメータリスト(図7参照)を受信したストレージ装置3のリード処理プログラム23(図4)により実行されるリード処理の処理手順を示す。
図11は、ホスト計算機2からのリードギャザーコマンド(図6参照)及びパラメータリスト(図7参照)を受信したストレージ装置3のリード処理プログラム23(図4)により実行されるリード処理の処理手順を示す。
リード処理プログラム23は、ストレージコントローラ4がホスト計算機2からのリードギャザーコマンド及びパラメータリストを受信すると、このリード処理を開始し、まず、受信したパラメータリストに登録されている未処理のLBAレンジディスクリプタの中から1つのLBAレンジディスクリプタを選択する(SP30)。
続いて、リード処理プログラム23は、キャッシュ管理情報20(図5)を参照して、論理ボリュームVOL内のステップSP30で選択したLBAレンジディスクリプタ(以下、これを選択LBAレンジディスクリプタと呼ぶ)において指定されたLBAを先頭LBAとする記憶領域に書き込まれたデータが未だメモリ14のキャッシュメモリ領域14A内に存在するか否かを判定する(SP31)。
そしてリード処理プログラム23は、この判断で肯定結果を得るとステップSP30に戻る。これに対してリード処理プログラム23は、ステップSP30の判断で否定結果を得ると、その選択LBAレンジディスクリプタにおいて指定されているデータ長と同じ容量の記憶領域をメモリ14のキャッシュメモリ領域14A上に確保すると共に、キャッシュ管理情報20のエントリ(行)のうち、このときキャッシュメモリ領域14A上に確保した記憶領域に対応するエントリの状態欄20E(図5)に「Clean」を格納する(SP32)。
次いで、リード処理プログラム23は、論理ボリュームVOL内の選択LBAレンジディスクリプタにおいて指定された記憶領域に書き込まれたデータ(以下、このデータをそのLBAレンジディスクリプタにおいて指定されたデータと呼ぶ)が実際に格納されている記憶メディア5と、その記憶メディア5における当該データが格納されているアドレスとを特定するメディア及びアドレス特定処理を実行する(SP33)。
またリード処理プログラム23は、ステップSP33の特定結果に基づいて、選択LBAレンジディスクリプタと、当該選択LBAレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア5と対応付ける(SP34)。
この後、リード処理プログラム23は、そのとき受信したパラメータリストに登録されているすべてのLBAレンジディスクリプタについてステップSP30〜ステップSP34の処理を実行し終えたか否かを判断する(SP35)。
リード処理プログラム23は、この判断で否定結果を得るとステップSP30に戻り、この後ステップSP30において選択するLBAレンジディスクリプタを未処理の他のLBAレンジディスクリプタに順次切り替えながら、ステップSP30〜ステップSP35の処理を繰り返す。
そしてリード処理プログラム23は、そのとき受信したパラメータリストに登録されたすべてのLBAレンジディスクリプタについてステップSP30〜ステップSP34の処理を実行し終えることによりステップSP35で肯定結果を得ると、上述のステップSP30〜ステップSP35の繰返し処理により少なくとも1つのLBAレンジディスクリプタが対応付けられた記憶メディア5の中から1つの記憶メディア5を選択する(SP36)。
続いて、リード処理プログラム23は、ステップSP36で選択した記憶メディア(以下、これを選択記憶メディアと呼ぶ)5に対応付けられた各LBAレンジディスクリプタにおいて指定されたデータを当該選択記憶メディア5から一括してリードするためのリードギャザーコマンド及びパラメータリストをステップSP30〜ステップSP35の繰返し処理の処理結果に基づいて作成する。そしてリード処理プログラム23は、作成したリードギャザーコマンド及びパラメータリストを選択記憶メディア5に送信する(SP37)。
具体的に、リード処理プログラム23は、ステップSP30〜ステップSP35の繰返し処理により選択記憶メディア5に対応付けられた各LBAレンジディスクリプタについて、当該LBAレンジディスクリプタにおいて指定されている先頭LBAを、ステップSP33において特定した選択記憶メディア5上のアドレスに置き換える。そしてリード処理プログラム23は、このように先頭LBAを選択記憶メディア5上のアドレスに置き換えたLBAレンジディスクリプタをすべて登録したパラメータリストを作成する。
またリード処理プログラム23は、そのとき作成したパラメータリストに登録されているLBAレンジディスクリプタの数を図7の4〜7バイト目に格納し、パラメータリストに登録されている各LBAレンジディスクリプタにおいてそれぞれ指定されたデータ長を合算したデータサイズを図7の8〜11バイト目に格納したリードギャザーコマンドを作成する。そしてリード処理プログラム23は、このように作成したリードギャザーコマンド及びパラメータリストを選択記憶メディア5に送信する。
次いで、リード処理プログラム23は、上述のステップSP30〜ステップSP35の繰返し処理により少なくとも1つのLBAレンジディスクリプタが対応付けられたすべての記憶メディア5についてステップSP36及びステップSP37の処理を実行し終えたか否かを判断する(SP38)。
リード処理プログラム23は、この判断で否定結果を得るとステップSP36に戻り、この後ステップSP36において選択する記憶メディア5を未処理の他の記憶メディアに順次切り替えながら、ステップSP36〜ステップSP38の処理を繰り返す。
そしてリード処理プログラム23は、上述のステップSP36〜ステップSP38の繰返し処理により少なくとも1つのLBAレンジディスクリプタが対応付けられたすべての記憶メディア5に対してリードギャザーコマンド及びパラメータリストを送信し終えることによりステップSP38で肯定結果を得ると、リードギャザーコマンド及びパラメータリストを送信した各記憶メディア5からそれぞれ転送されてくるリード対象のデータを、それぞれステップSP32においてメモリ14のキャッシュメモリ領域14A上に確保した記憶領域に順次格納する(SP39)。
さらにリード処理プログラム23は、リードギャザーコマンド及びパラメータリストを送信したすべての記憶メディア5からリード対象のすべてのデータの転送が終了し、かつ、これらすべてのデータをメモリ14のキャッシュメモリ領域14Aに格納し終えると、このリード処理を実行するトリガとなったリードギャザーコマンドの送信元のホスト計算機2にリード対象のすべてのデータを転送する(SP41)。
具体的に、リード処理プログラム23は、かかるリードギャザーコマンドと共に送信されてきたパラメータリストに登録されている各LBAレンジディスクリプタにそれぞれ対応するリード対象のデータを、当該パラメータリストにおける対応するLBAレンジディスクリプタの順番でメモリ14のキャッシュメモリ領域14Aから順次読み出し、読み出したデータを図10のデータフォーマットでかかるリードギャザーコマンドの送信元のホスト計算機2に順次送信する。
そしてリード処理プログラム23は、リードギャザーコマンド及びパラメータリストにおいて指定されたすべてのデータを当該リードギャザーコマンド及び当該パラメータリストの送信元のホスト計算機2に送信し終えると、このリード処理を終了する。
なお、上述したリード処理のステップSP33においてリード処理プログラム23により実行される処理(以下、これをメディア及びアドレス特定処理と呼ぶ)の具体的な処理内容を図12に示す。以下においては、RAIDグループRGのRAIDレベルは「RAID10」、「RAID5」及び「RAID6」のいずれかに設定されるものとして説明を進める。
リード処理プログラム23は、リード処理のステップSP33に進むと、このメディア及びアドレス特定処理を開始し、まず、マップ情報21を参照して、選択LBAレンジディスクリプタにおいて指定されたデータが書き込まれた論理ボリュームVOLのRAIDレベルを判定する(SP50)。
そしてリード処理プログラム23は、この判定によりその論理ボリュームVOLのRAIDレベルがRAID5又はRAID6であることを認識すると、当該論理ボリュームVOL内の選択LBAレンジディスクリプタにおいて指定されたLBAと、その論理ボリュームVOLについて定義されているストライプサイズとから、当該選択LBAレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア5と、当該記憶メディア5上のアドレスとを特定する(SP51)。そしてリード処理プログラム23は、この後、このメディア及びアドレス特定処理を終了してリード処理のステップSP34に進む。
これに対してリード処理プログラム23は、ステップSP50の判定によりその論理ボリュームVOLのRAIDレベルがRAID10であることを認識すると、当該論理ボリュームVOL内の選択LBAレンジディスクリプタにおいて指定されたLBAと、その論理ボリュームVOLについて定義されているストライプサイズとから、当該選択LBAレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア5と、当該記憶メディア5上のアドレスとを特定する(SP52)。
なお、論理ボリュームVOLのRAIDレベルがRAID10の場合、データが複数の記憶メディア5に分散された上でミラーリングされて保存されるため、ステップSP52では選択LBAレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア5として複数の記憶メディア5が特定されることになる。
そこでリード処理プログラム23は、かかる複数の記憶メディア5から順番にデータを読み出すことによりリード処理のスループット性能を向上させるため、ステップSP52において特定された複数の記憶メディア5の中から前回のリード処理時に選択しなかった記憶メディア5を、選択LBAレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア5として決定する(SP53)。
そしてリード処理プログラム23は、この後、このメディア及びアドレス特定処理を終了してリード処理のステップSP34に進む。
(1−5−2)ライト処理
一方、図13は、ホスト計算機2からのライトスキャッタコマンドを受信したストレージ装置3のライト処理プログラム24(図4)により実行されるライト処理の処理手順を示す。
一方、図13は、ホスト計算機2からのライトスキャッタコマンドを受信したストレージ装置3のライト処理プログラム24(図4)により実行されるライト処理の処理手順を示す。
ライト処理プログラム24は、ストレージコントローラ4がホスト計算機2からのライトスキャッタコマンド(図7参照)及びパラメータリスト(図8参照)を受信すると、このライト処理を開始し、まず、受信したパラメータリストに登録されている未処理のLBAレンジディスクリプタの中から1つのLBAレンジディスクリプタを選択する(SP60)。
続いて、ライト処理プログラム24は、キャッシュ管理情報20(図5)を参照して、ステップSP60で選択したLBAレンジディスクリプタ(以下、これを選択LBAレンジディスクリプタと呼ぶ)に対応するデータを格納するための記憶領域がメモリ14のキャッシュメモリ領域14A上に確保済みであるか否かを判断する(SP61)。なお選択LBAレンジディスクリプタに対応するデータが、既にメモリ14のキャッシュメモリ領域14Aに格納されているデータを上書きするデータである場合には、ステップSP61において肯定結果が得られることになる。
そしてライト処理プログラム24は、この判断で肯定結果を得るとステップSP60に戻る。これに対してライト処理プログラム24は、ステップSP61の判断で否定結果を得ると、選択LBAレンジディスクリプタに対応するデータのデータ長と同じサイズの記憶領域をメモリ14のキャッシュメモリ領域14A上に確保すると共に、キャッシュ管理情報20のエントリ(行)のうち、このとき確保した記憶領域に対応するエントリの状態欄20E(図5)に「Dirty」を格納する(SP62)。
次いで、ライト処理プログラム24は、そのとき受信したパラメータリスト内のすべてのLBAレンジディスクリプタについてステップSP60〜ステップSP62の処理を実行し終えたか否かを判断する(SP63)。
ライト処理プログラム24は、この判断で否定結果を得るとステップSP60に戻り、この後ステップSP60において選択するLBAレンジディスクリプタを未処理の他のLBAレンジディスクリプタに順次切り替えながら、ステップSP60〜ステップSP63の処理を繰り返す。
そしてライト処理プログラム24は、やがてそのとき受信したパラメータリストに登録されたすべてのLBAレンジディスクリプタについてステップSP60〜ステップSP62の処理を実行し終えることによりステップSP63で肯定結果を得ると、図2について上述したデータ転送開始通知(図2のSP12を参照)をホスト計算機2に送信する(SP64)。
この後、ライト処理プログラム24は、ホスト計算機2からライト対象のデータが転送されてくるのを待ち受け(SP65)、やがてライト対象のデータがホスト計算機2から転送されてくると(SP65:YES)、パラメータリストに登録されている各LBAレンジディスクリプタの登録順序に従って、メモリ14のキャッシュメモリ領域14Aにおけるライト対象のデータの格納順序を判断する(SP66)。なお、本実施の形態の場合、パラメータリストに登録されている各LBAレンジディスクリプタの登録順序が早いものほどメモリ14のキャッシュメモリ領域14Aにおけるキャッシュメモリアドレスが小さい記憶領域に格納されるものとする。
続いて、ライト処理プログラム24は、その後、ホスト計算機2から転送されてくるライト対象のデータを、ステップSP62においてメモリ14のキャッシュメモリ領域14A上に確保した記憶領域等に順次格納する(SP67)。そしてライト処理プログラム24は、ライト対象のデータをすべてメモリ14のキャッシュメモリ領域14Aに格納し終えると、図2について上述した格納完了通知(図2のステップSP15を参照)をホスト計算機2に送信し(SP68)、この後、このライト処理を終了する。
(1−5−3)デステージング処理
他方、図14は、ストレージ装置3のデステージング処理プログラム25(図4)により定期的に、かつ記憶メディア5ごとに順番に又は並列的に実行されるデステージング処理の処理手順を示す。
他方、図14は、ストレージ装置3のデステージング処理プログラム25(図4)により定期的に、かつ記憶メディア5ごとに順番に又は並列的に実行されるデステージング処理の処理手順を示す。
デステージング処理プログラム25は、このデステージング処理を開始すると、まず、今回の周期でデステージング処理が未処理の記憶メディア5を1つ選択する(SP70)。
続いて、デステージング処理プログラム25は、キャッシュ管理情報20(図5)を参照して、メモリ14のキャッシュメモリ領域14Aのキャッシュメモリアドレスであって未処理のキャッシュメモリアドレスを1つ選択する(SP71)。
次いで、デステージング処理プログラム25は、キャッシュ管理情報20を参照して、メモリ14のキャッシュメモリ領域14A内のステップSP71で選択したキャッシュメモリアドレス(以下、これを選択キャッシュメモリアドレスと呼ぶ)で特定される記憶領域に格納されているデータはダーティデータであるか否かを判断する(SP72)。
デステージング処理プログラム25は、この判断で否定結果を得るとステップSP71に戻る。これに対してデステージング処理プログラム25は、ステップSP72の判断で肯定結果を得ると、キャッシュ管理情報20を参照して、メモリ14のキャッシュメモリ領域14A内の選択キャッシュメモリアドレスにより特定される記憶領域に格納されているデータは、ステップSP70で選択した記憶メディア(以下、これを選択記憶メディアと呼ぶ)5に格納すべきデータであるか否かを判断する(SP73)。
デステージング処理プログラム25は、この判断で否定結果を得るとステップSP71に戻る。これに対してデステージング処理プログラム25は、ステップSP73の判断で肯定結果を得ると、選択キャッシュメモリアドレスに対応する記憶メディア5上のアドレス(以下、これをメディアアドレスと呼ぶ)を検出するメディアアドレス検出処理を実行する(SP74)。
この後、デステージング処理プログラム25は、メモリ14のキャッシュメモリ領域14A内のすべてのキャッシュメモリアドレスについてステップSP71〜ステップSP74の処理を実行し終えたか否かを判断する(SP75)。そしてデステージング処理プログラム25は、この判断で否定結果を得るとステップSP71に戻り、この後、ステップSP71において選択するキャッシュメモリアドレスを未処理の他のキャッシュメモリアドレスに順次切り替えながら、ステップSP71〜ステップSP75の処理を繰り返す。
そしてデステージング処理プログラム25は、やがてメモリ14のキャッシュメモリ領域14A内のすべてのキャッシュメモリアドレスについてステップSP71〜ステップSP74の処理を実行し終えることによりステップSP75で肯定結果を得ると、選択記憶メディア5にライトスキャッタコマンド及びパラメータリストを送信する(SP76)。
具体的に、デステージング処理プログラム25は、まず、ステップSP70〜ステップSP75の繰返し処理により検出した、選択記憶メディア5に格納すべきダーティデータごとのLBAレンジディスクリプタをそれぞれ作成する。このLBAレンジディスクリプタでは、ステップSP74において検出された対応するメディアアドレスが先頭LBAとして設定される。そしてデステージング処理プログラム25は、このようにして作成したダーティデータごとのLBAレンジディスクリプタをすべて登録したパラメータリストを作成する。
またデステージング処理プログラム25は、そのとき作成したパラメータリストに登録されているLBAレンジディスクリプタの数を図7の4〜7バイト目に格納し、パラメータリストに登録されている各LBAレンジディスクリプタにおいてそれぞれ指定されたデータ長を合算したデータサイズを図7の8〜11バイト目に格納したライトスキャッタコマンドを作成する。そしてデステージング処理プログラム25は、このように作成したライトスキャッタコマンド及びパラメータリストを選択記憶メディア5に送信する。
続いて、デステージング処理プログラム25は、図2のステップSP18A,SP18Bについて上述したデータ転送開始通知が対象記憶メディア5から送信されてくるのを待ち受け(SP77)、やがて当該データ転送開始通知が対象記憶メディア5から送信されてくると、ステップSP74において対象記憶メディア5上のアドレスとの対応を記憶した各対象キャッシュメモリアドレスにより特定される、メモリ14のキャッシュメモリ領域14A内の記憶領域に格納されているデータをそれぞれ当該キャッシュメモリ領域14Aから読み出して図10のデータフォーマットで対象記憶メディア5に転送する(SP78)。
この後、デステージング処理プログラム25は、図2のステップSP20A,SP20Bについて上述した格納完了通知が対象記憶メディア5から送信されてくるのを待ち受け(SP79)、やがて当該格納完了通知が選択記憶メディア5から送信されてくると、キャッシュ管理情報20のエントリ(行)のうち、ステップSP78で選択記憶メディア5に転送した各データにそれぞれ対応するエントリの状態欄20E(図5)に格納されている値をそれぞれ「Clean」に設定する(SP80)。そしてデステージング処理プログラム25は、この後、このデステージング処理を終了する。
なお上述したデステージング処理のステップSP74においてデステージング処理プログラム25により実行されるメディアアドレス検出処理の具体的な処理内容を図15に示す。以下においても、RAIDグループRGのRAIDレベルは「RAID10」、「RAID5」及び「RAID6」のいずれかに設定されるものとして説明を進める。
デステージング処理プログラム25は、デステージング処理のステップSP74に進むと、このメディアアドレス検出処理を開始し、まず、マップ情報21を参照して、メモリ14のキャッシュメモリ領域14Aにおける選択キャッシュメモリアドレスに格納されているダーティデータが書き込まれた論理ボリュームVOLのRAIDレベルを判定する(SP90)。
そしてデステージング処理プログラム25は、この判定によりその論理ボリュームVOLのRAIDレベルがRAID5又はRAID6であることを認識すると、キャッシュ管理情報20及びマップ情報21を参照して、その論理ボリュームVOLにおけるそのダーティデータが書き込まれた記憶領域の先頭LBAと、その論理ボリュームVOLについて定義されているストライプサイズと、そのダーティデータの属性とに基づいて、当該ダーティデータを格納すべき選択記憶メディア5上のアドレス(メディアアドレス)を特定する(SP91)。そしてデステージング処理プログラム25は、この後、このメディアアドレス特定処理を終了してデステージング処理のステップSP75に進む。
これに対してデステージング処理プログラム25は、ステップSP50の判定によりその論理ボリュームVOLのRAIDレベルがRAID10であることを認識すると、キャッシュ管理情報20及びマップ情報21を参照して、その論理ボリュームVOLにおけるそのダーティデータが書き込まれた記憶領域の先頭LBAと、その論理ボリュームVOLについて定義されているストライプサイズとに基づいて、そのダーティデータを格納すべきもう1つの記憶メディア5を特定し、当該記憶メディア5及び選定記憶メディア5におけるそのダーティデータを格納すべきアドレス(メディアアドレス)を特定する(SP92)。そしてデステージング処理プログラム25は、この後、このメディアアドレス特定処理を終了してデステージング処理のステップSP75に進む。
(1−6)本実施の形態の効果
以上の本計算機システム1によれば、ストレージコントローラ4が、記憶メディア5内の複数の記憶領域に対するデータのリード/ライトを1回のコマンド発行により行うことができる。従って、リード処理及びライト処理に関するストレージコントローラ4の処理負荷を低減することができ、その結果として、ストレージ装置3全体としてのスループット性能を向上させることができる。
以上の本計算機システム1によれば、ストレージコントローラ4が、記憶メディア5内の複数の記憶領域に対するデータのリード/ライトを1回のコマンド発行により行うことができる。従って、リード処理及びライト処理に関するストレージコントローラ4の処理負荷を低減することができ、その結果として、ストレージ装置3全体としてのスループット性能を向上させることができる。
(2)第2の実施の形態
(2−1)本実施の形態による計算機システムの構成
図1との対応部分に同一符号を付して示す図16は、第2の実施の形態による計算機システム30を示す。本計算機システム30は、ストレージ装置31に仮想化機能が搭載されている点が第1の実施の形態による計算機システム1と大きく異なる。
(2−1)本実施の形態による計算機システムの構成
図1との対応部分に同一符号を付して示す図16は、第2の実施の形態による計算機システム30を示す。本計算機システム30は、ストレージ装置31に仮想化機能が搭載されている点が第1の実施の形態による計算機システム1と大きく異なる。
実際上、本実施の形態の場合、ストレージ装置31のストレージコントローラ32は、図17に示すように、複数の記憶メディア5から構成されるRAIDグループRGが提供する物理的な記憶領域をプールボリュームPLVOLとして管理すると共に、1又は複数のプールボリュームPLVOLをまとめてプールPLとして管理している。
またストレージコントローラ32は、ホスト計算機2に対して仮想的な論理ボリューム(以下、これを仮想ボリュームと呼ぶ)VVOLを提供すると共に、ホスト計算機2からこの仮想ボリュームVVOLに対してデータの書き込みがあった場合には、当該仮想ボリュームVVOL内のデータの書き込みがあった記憶領域(以下、これをページと呼ぶ)PGに対してプールPL内のいずれかのプールボリュームPLVOLから所定大きさの被参照領域ARを割り当て、当該被参照領域ARにそのとき書き込まれたデータを格納する。この仮想化機能はThin Provisioningと呼ばれる技術で有り、第2の実施の形態はこのThin provisioningに対応させた実施形態である。
図18は、本実施の形態によるストレージ装置31のメモリ構成を示す。本計算機システム30の場合、メモリ14の記憶領域がキャッシュメモリ領域14A及びローカルメモリ領域14Bに分割され、キャッシュメモリ領域14Aには、ホスト計算機2及び記憶メディア5間でやり取りされるデータが一時的に格納されると共に、ローカルメモリ領域14Bには、キャッシュ管理情報20及びマップ情報33が格納される点は第1の実施の形態と同様である。また本計算機システム30の場合、ローカルメモリ領域14Bに、制御プログラム群34として、リード処理プログラム35、ライト処理プログラム24及びデステージング処理プログラム36が格納される点も第1の実施の形態と同様である。
ただし、本計算機システム30の場合、マップ情報33の構成と、リード処理プログラム35及びデステージング処理プログラム36の機能(つまりリード処理プログラム35により実行されるリード処理の処理内容及びデステージング処理プログラム36により実行されるデステージング処理の処理内容)とが第1の実施の形態と相違する。リード処理プログラム35及びデステージング処理プログラム36の機能については後述するとして、ここでは、本実施の形態のマップ情報33の構成について説明する。
本実施の形態のマップ情報33は、図19に示すように、仮想ボリューム管理テーブル37及びプールボリューム構成管理テーブル38から構成される。
仮想ボリューム管理テーブル37は、ストレージ装置31がホスト計算機2に提供している仮想ボリュームVVOLを管理するために利用されるテーブルであり、図19(A)に示すように、ボリューム番号欄37A、ページ番号欄37B、プールボリューム番号欄37C及び被参照領域番号欄37Dから構成される。
そしてボリューム番号欄37Aには、ストレージ装置31がホスト計算機2に提供している各仮想ボリュームVVOLのボリューム番号が格納され、ページ番号欄37Bには、対応する仮想ボリュームVVOL内の各ページPGにそれぞれ付与された識別番号(ページ番号)が格納される。
またプールボリューム番号欄37Cには、対応する仮想ボリュームVVOL内の対応するページPGに被参照領域ARが割り当てられている(つまりそのページPGにホスト計算機2からのデータの書き込まれている)場合に、その被参照領域ARを提供するプールボリュームPLVOLの識別子(プールボリューム番号)が格納され、その被参照領域ARの識別子(被参照領域番号)が被参照領域番号欄37Dに格納される。
従って、図19(A)の例の場合、「0」というボリューム番号が付与された仮想ボリュームVVOL内の「0」というページ番号のページPGに対しては、「0」というプールボリューム番号のプールボリュームPLVOLから「72」という被参照領域番号の被参照領域ARが割り当てられていることが示されている。
なお、仮想ボリューム管理テーブル37において、仮想ボリュームVVOL内の被参照領域ARが割り当てられていないページPGについては、情報が存在しないことを意味する「null」がプールボリューム番号欄37C及び被参照領域番号欄37Dにそれぞれ格納される。
一方、プールボリューム構成管理テーブル38は、ストレージ装置31内に作成されたプールボリュームPLVOLを管理するために利用されるテーブルであり、図19(B)に示すように、プールボリューム番号欄38A、構成欄38B及びメディア番号欄38Cから構成される。
そしてプールボリューム番号欄38Aには、ストレージ装置31内に作成された各プールボリュームPLVOLのプールボリューム番号が格納され、構成欄38Bには、対応するプールボリュームPLVOLを提供するRAIDグループRGのRAID構成が格納される。またメディア番号欄38Cには、対応するプールボリュームPLVOLを提供するRAIDグループRGを構成するすべての記憶メディア5のメディア番号が格納される。
従って、図19(B)の例の場合、例えば「0」というプールボリューム番号のプールボリュームPLVOLは、それぞれ「0」、「1」、「2」及び「3」という記憶メディア番号がそれぞれ付与された4つの記憶メディア5から構成される「RAID10(2D+2D)」というRAID構成のRAIDグループRGが提供する記憶領域であることが示されている。
なお、プールボリューム構成管理テーブル38において、対応するプールボリューム番号が付与されたプールボリュームPLVOLが定義されていない場合には、構成欄38B及びメディア番号欄38Cには、それぞれ情報が存在しないことを意味する「null」が格納される。
(2−2)I/Oに関連する各種処理
次に、本計算機システム30のストレージ装置31において実行されるリード処理、デステージング処理の具体的な処理内容について説明する。なお本計算機システム30のストレージ装置31において実行されるライト処理の処理内容は、図13について第1の実施の形態のライト処理と同様であるので、ここでの説明は省略する。
次に、本計算機システム30のストレージ装置31において実行されるリード処理、デステージング処理の具体的な処理内容について説明する。なお本計算機システム30のストレージ装置31において実行されるライト処理の処理内容は、図13について第1の実施の形態のライト処理と同様であるので、ここでの説明は省略する。
(2−2−1)リード処理
まず、リード処理について説明する。本計算機システム30において、ストレージ装置31に実装されたリード処理プログラム35(図4)により実行されるリード処理の処理内容は、図11について上述した第1の実施の形態によるリード処理とほぼ同様である。
まず、リード処理について説明する。本計算機システム30において、ストレージ装置31に実装されたリード処理プログラム35(図4)により実行されるリード処理の処理内容は、図11について上述した第1の実施の形態によるリード処理とほぼ同様である。
ただし本計算機システム30の場合、ストレージ装置31がホスト計算機2に対して仮想ボリュームVVOLを提供しているため、図11のステップSP33において実行される記憶メディア及びアドレス特定処理の処理内容が第1の実施の形態と異なる。
図20は、図11のステップSP33において、図12について上述したメディア及びアドレス特定処理に代えて、本実施の形態のリード処理プログラム35により実行される本実施の形態によるメディア及びアドレス特定処理の処理手順を示す。なお、以下においては、RAIDグループRGのRAIDレベルは「RAID10」、「RAID5」及び「RAID6」のいずれかに設定されるものとして説明を進める。
本実施の形態のリード処理プログラム35は、図11のステップSP33に進むとこの図20に示すメディア及びアドレス特定処理を開始し、まず、仮想ボリューム管理テーブル37(図19(A))を参照して、リード処理のステップSP30において選択したLBAレンジディスクリプタ(選択LBAレンジディスクリプタ)においてデータのリード先の先頭LBAとして指定された仮想ボリュームVVOL上のLBAが属するページPGに被参照領域ARを割り当てているプールボリュームPLVOLを特定する(SP100)。
続いて、リード処理プログラム35は、選択LBAレンジディスクリプタにおいてデータのリード先の先頭LBAとして指定されたLBAが属するページPGの先頭から、当該LBAまでのオフセット量(ページPGの先頭からそのLBAまでのLBAの数)を算出する(SP101)。
次いで、リード処理プログラム35は、プールボリューム構成管理テーブル38(図19(B))を参照して、ステップSP100で特定したプールボリュームPLVOLのRAIDレベルを判定する(SP102)。
そしてリード処理プログラム35は、この判定によりそのプールボリュームPLVOLのRAIDレベルがRAID5又はRAID6であることを認識すると、ステップSP101において算出したオフセット量と、そのプールボリュームPLVOLについて定義されているストライプサイズとから、選択LBAレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア5と、当該記憶メディア5上のアドレスとを特定する(SP103)。そしてリード処理プログラム35は、この後、このメディア及びアドレス特定処理を終了してリード処理(図11)のステップSP34に進む。
これに対してリード処理プログラム35は、ステップSP102の判定によりそのプールボリュームPLVOLのRAIDレベルがRAID10であることを認識すると、テップSP101において算出したオフセット量と、そのプールボリュームPLVOLについて定義されているストライプサイズとから、選択LBAレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア5と、当該記憶メディア5上のアドレスとを特定する(SP104)。
またリード処理プログラム35は、ステップSP104において特定された複数の記憶メディア5の中から前回のリード処理時に選択しなかった記憶メディア5を、選択LBAレンジディスクリプタにおいて指定されたデータが実際に格納されている記憶メディア5として決定する(SP105)。
そしてリード処理プログラム35は、この後、このメディア及びアドレス特定処理を終了してリード処理(図11)のステップSP34に進む。
(2−2−2)デステージング処理
次に、デステージング処理について説明する。本計算機システム30において、ストレージ装置31に実装されたデステージング処理プログラム36(図18)により実行されるデステージング処理の処理内容は、図14について上述した第1の実施の形態によるデステージング処理とほぼ同様である。
次に、デステージング処理について説明する。本計算機システム30において、ストレージ装置31に実装されたデステージング処理プログラム36(図18)により実行されるデステージング処理の処理内容は、図14について上述した第1の実施の形態によるデステージング処理とほぼ同様である。
ただし本計算機システム30では、ストレージ装置31がホスト計算機2に対して仮想ボリュームVVOLを提供しているため、図14のステップSP74において実行されるメディアアドレス検出処理の処理内容が第1の実施の形態と異なる。
図21は、図14のステップSP74において、図12について上述したメディアアドレス検出処理に代えて、本実施の形態のデステージング処理プログラム36により実行される本実施の形態によるメディアアドレス検出処理の処理手順を示す。なお、以下においても、RAIDグループRGのRAIDレベルは「RAID10」、「RAID5」及び「RAID6」のいずれかに設定されるものとして説明を進める。
本実施の形態のデステージング処理プログラム36は、図14のステップSP74に進むと、この図21に示すメディアアドレス検出処理を開始し、まず、ステップSP110及びステップSP111を図20について上述したメディア及びアドレス特定処理のステップSP100及びステップSP101と同様に処理する。
続いて、デステージング処理プログラム36は、プールボリューム構成管理テーブル38(図19(B))を参照して、ステップSP100で特定したプールボリュームPLVOLのRAIDレベルを判定する(SP112)。
そしてデステージング処理プログラム36は、この判定によりそのプールボリュームPLVOLのRAIDレベルがRAID5又はRAID6であることを認識すると、ステップSP111において算出したオフセット量と、そのプールボリュームPLVOLについて定義されているストライプサイズとから、そのとき対象としているダーティデータを格納すべき選択記憶メディア5上のアドレスを特定する(SP113)。そしてデステージング処理プログラム36は、この後、このメディアアドレス特定処理を終了してリード処理(図11)のステップSP34に進む。
これに対してデステージング処理プログラム36は、ステップSP112の判定によりそのプールボリュームPLVOLのRAIDレベルがRAID10であることを認識すると、テップSP111において算出したオフセット量と、そのプールボリュームPLVOLについて定義されているストライプサイズとに基づいて、そのとき対象としているダーティデータを格納すべきもう1つの記憶メディア5を特定し、当該記憶メディア5及び選定記憶メディア5におけるそのダーティデータを格納すべきアドレス(メディアアドレス)を特定する(SP114)。そしてデステージング処理プログラム36は、この後、このメディアアドレス特定処理を終了してデステージング処理(図14)のステップSP75に進む。
(2−3)本実施の形態の効果
以上のように本実施の形態の計算機システム30では、第1の実施の形態による計算機システム1と同様に、ストレージコントローラ32が、記憶メディア5内の複数の記憶領域に対するデータのリード/ライトを1回のコマンド発行により行うことができる。かくするにつきThin Provisioning仮想化機能が搭載されたホスト計算機30についても、リード処理及びライト処理に関するストレージコントローラ42の処理負荷を低減することができ、その結果として、ストレージ装置31全体としてのスループット性能を向上させることができる。
以上のように本実施の形態の計算機システム30では、第1の実施の形態による計算機システム1と同様に、ストレージコントローラ32が、記憶メディア5内の複数の記憶領域に対するデータのリード/ライトを1回のコマンド発行により行うことができる。かくするにつきThin Provisioning仮想化機能が搭載されたホスト計算機30についても、リード処理及びライト処理に関するストレージコントローラ42の処理負荷を低減することができ、その結果として、ストレージ装置31全体としてのスループット性能を向上させることができる。
(3)第3の実施の形態
図16において、40は全体として第3の実施の形態による計算機システムを示す。この計算機システム40は、後述する第1のデータ再配置機能がストレージ装置41(図16)に搭載されている点を除いて第2の実施の形態による計算機システム30と同様に構成されている。
図16において、40は全体として第3の実施の形態による計算機システムを示す。この計算機システム40は、後述する第1のデータ再配置機能がストレージ装置41(図16)に搭載されている点を除いて第2の実施の形態による計算機システム30と同様に構成されている。
ここで、第1のデータ再配置処理機能について説明する。第2の実施の形態による計算機システム30において、ホスト計算機2からのリードギャザーコマンド及びパラメータリストを受信したストレージ装置31は、当該パラメータリストにおいて指定された複数のデータのうち、メモリ14のキャッシュメモリ領域14Aに格納されていないデータについては、対応する記憶メディア5から読み出す必要がある。
この場合において、同一のパラメータリストにおいて高頻度でリード対象とされるデータ同士が同一の記憶メディア5に格納されていれば、これらのデータが複数の記憶メディア5に分散されて格納されている場合に比べて、効率良くステージングを行い得るものと考えられる。
そこで本実施の形態による計算機システム40には、ホスト計算機2からストレージ装置41に送信される同一のパラメータリストにおいて高頻度でリード/ライトの対象となるデータのペア(組)を検出し、これらのデータを同一の記憶メディア5に再配置する上述の第1のデータ再配置機能がストレージ装置41に搭載されている。
実際上、本実施の形態のストレージ装置41の場合、このような第1のデータ再配置機能を発揮するための手段として、図18との対応部分に同一符号を付した図22に示すように、ストレージコントローラ42のメモリ14のローカルメモリ領域14Bには、制御プログラム群43として、リード処理プログラム35、ライト処理プログラム24及びデステージング処理プログラム36に加えて第1の再配置処理プログラム44が格納されている。
そして第1の再配置処理プログラム44は、定期的又は不定期に図23に示す第1のデータ再配置処理を実行することにより、上述のようにホスト計算機2からストレージ装置41に送信される同一のパラメータリストにおいて高頻度でリード/ライトの対象となるデータのペアを検出し、これらのデータを同一の記憶メディア5に再配置する。
すなわち第1の再配置処理プログラム44は、この図23に示す第1のデータ再配置処理を開始すると、まず、ホスト計算機2からリードギャザーコマンド又はライトスキャッタコマンドと共に送信されてきた所定時間(例えば数分)分のパラメータリストを収集する(SP120)。
続いて、第1の再配置処理プログラム44は、ステップSP120において収集した各パラメータリストにそれぞれ登録されているLBAレンジディスクリプタを参照して、同一のパラメータリストにおいて高頻度(予め定められた閾値以上の回数)でリード元又はライト先の先頭LBAとして指定されている同一仮想ボリュームVVOL内のLBAのペア(以下、これをLBAペアと呼ぶ)をすべて検出する(SP121)。
次いで、第1の再配置処理プログラム44は、ステップSP121において検出したLBAペアであってステップSP124以降の処理を未処理のLBAペアが存在するか否かを判断する(SP122)。そして第1の再配置処理プログラム44は、この判断で肯定結果を得ると、ステップSP121において検出したLBAペアであってステップSP124以降の処理が未処理のLBAペアの中から1つのLBAペアを選択する(SP123)。
さらに第1の再配置処理プログラム44は、マップ情報33(図19)を参照して、ステップSP121において選択したLBAペアを構成する各LBAとそれぞれ対応付けられた記憶メディア5(つまり仮想ボリュームVVOL内のそれらのLBAにそれぞれ割り当てられた被参照領域ARを提供している記憶メディア5)を特定する(SP124)。
また第1の再配置処理プログラム44は、ステップSP124の特定結果に基づいて、ステップSP123において選択したLBAペアを構成する各LBAとそれぞれ対応付けられた記憶メディア5は異なる記憶メディアであるか否かを判断する(SP125)。
そして第1の再配置処理プログラム44は、この判断で否定結果を得るとステップSP122に戻る。これに対して、第1の再配置処理プログラム44は、ステップSP125の判断で肯定結果を得ると、仮想ボリュームVVOL内のステップSP123において選択したLBAペアを構成する各LBAで指定される記憶領域にそれぞれ格納されているデータを、同じ記憶メディア5に集約することができるか否かを判断する(SP126)。
第1の再配置処理プログラム44は、この判断で否定結果を得るとステップSP122に戻る。これに対して、第1の再配置処理プログラム44は、ステップSP126の判断で肯定結果を得ると、仮想ボリュームVVOL内のステップSP123で選択したLBAペアを構成する各LBAで指定されている記憶領域にそれぞれ格納されているデータを同じ記憶メディア5に移動させるデータ移動処理を実行する(SP127)。
具体的に、第1の再配置処理プログラム44は、仮想ボリュームVVOL内のステップSP123で選択したLBAペアを構成する各LBAで指定されている記憶領域にそれぞれ格納されているデータの一方を他方のデータが格納されている記憶メディア5に移動させ、又は、これらのデータをいずれも他の同一の記憶メディア5に移動させるようディスクアダプタ16を介して対応する記憶メディア5を制御する。また第1の再配置処理プログラム44は、これと併せてマップ情報33を構成する仮想ボリューム管理テーブル37をかかるデータ移動後の状態に更新する。
続いて、第1の再配置処理プログラム44は、上述のようなデータ移動処理を終えるとステップSP122に戻り、この後、ステップSP123において選択するLBAペアを他の未処理のLBAペアに順次切り替えながら、ステップSP122〜ステップSP127の処理を繰り返す。
そして第1の再配置処理プログラム44は、やがてステップSP121において検出したすべてのLBAペアに対してステップSP124以降の処理を実行し終えることによりステップSP122で肯定結果を得ると、この第1のデータ再配置処理を終了する。
以上のように本実施の形態による計算機システム40では、ホスト計算機2からストレージ装置41に送信される同一のパラメータリストにおいて高頻度でリード/ライトの対象となるデータの組を検出し、これらのデータを同一の記憶メディア5に再配置するため、第2の実施の形態による計算機システム30と比べて効率良くステージングを行うことができる。この結果、リード処理及びライト処理に関するストレージコントローラ42の処理負荷を低減させることができ、第2の実施の形態の計算機システム30と比べてより一層とストレージ装置41全体としてのスループット性能を向上させることができる。
(4)第4の実施の形態
図16において、50は全体として第4の実施の形態による計算機システムを示す。この計算機システム50は、後述する第2のデータ再配置機能がストレージ装置51(図16)に搭載されている点を除いて第2の実施の形態による計算機システム30と同様に構成されている。
図16において、50は全体として第4の実施の形態による計算機システムを示す。この計算機システム50は、後述する第2のデータ再配置機能がストレージ装置51(図16)に搭載されている点を除いて第2の実施の形態による計算機システム30と同様に構成されている。
ここで、第2のデータ再配置機能について説明する。第2の実施の形態による計算機システム30において、上述のようなリードギャザーコマンドを利用したリード処理の性能は、パラメータリストにおいて指定された各データがそれぞれ格納されている記憶メディア5のうちの最も応答性能が低い記憶メディア5の応答性能に依存する。
例えばホスト計算機2からストレージ装置31に送信されたリードギャザーコマンド及びパラメータリストにおいて指定されたリード対象の複数のデータが、それぞれ応答性能が異なる複数種別の記憶メディア5に分散して格納されている場合、これらすべてのデータをそれぞれ対応する記憶メディア5から読み出してホスト計算機2に転送するために、ストレージコントローラ32は最も応答性能が低い記憶メディア5からのデータ転送を待つ必要がある。
従って、第2の実施の形態による計算機システム30において、高頻度で同一のリードギャザーパラメータコマンドにおいてリード対象として指定されるデータ同士については、同一種別の記憶メディア5に格納されていることが望ましく、このようにすることによって応答性能が低い記憶メディア5からのデータの読み出しに起因するストレージ装置31全体としてのリード処理の遅延を有効に防止できるものと考えられる。
そこで本実施の形態による計算機システム50の場合、ホスト計算機2からストレージ装置51(図16)に送信される同一のパラメータリストにおいて高頻度でリード/ライトの対象となるデータの組を検出し、これらのデータを同一種別の記憶メディア5に再配置する第2のデータ再配置機能がストレージ装置51に搭載されている。
実際上、本実施の形態のストレージ装置51においては、このような第2のデータ再配置機能を発揮するための手段として、図22に示すように、ストレージコントローラ42のメモリ14のローカルメモリ領域14Bに、制御プログラム群53として、リード処理プログラム35、ライト処理プログラム24及びデステージング処理プログラム36に加えて第2の再配置処理プログラム54が格納されている。
そして第2の再配置処理プログラム54は、定期的又は不定期に図24に示す第2のデータ再配置処理を実行することにより、上述のようにホスト計算機2からストレージ装置41に送信される同一のパラメータリストにおいて高頻度でリード/ライトの対象となるデータの組を検出し、これらのデータを同種の記憶メディア5に再配置する。
すなわち第2の再配置処理プログラム54は、この図24に示す第2のデータ再配置処理を開始すると、まず、ホスト計算機2から送信されてくる所定時間(例えば数分)分のパラメータリスト(リードギャザーパラメータリスト又はライトスキャッタパラメータリスト)を収集する(SP130)。
続いて、第2の再配置処理プログラム54は、ステップSP130において収集した各パラメータリストにそれぞれ登録されているLBAレンジディスクリプタを参照して、同一のパラメータリストにおいて高頻度(予め定められた閾値以上の回数)でリード元又はライト先の先頭LBAとして指定されている同一仮想ボリュームVVOL内のLBAのペア(以下、これをLBAペアと呼ぶ)をすべて検出する(SP131)。
次いで、第2の再配置処理プログラム54は、ステップSP131において検出したLBAペアであってステップSP134以降の処理を未処理のLBAペアが存在するか否かを判断する(SP132)。そして第2の再配置処理プログラム54は、この判断で肯定結果を得ると、ステップSP131において検出したLBAペアであってステップSP134以降の処理が未処理のLBAペアの中から1つのLBAペアを選択する(SP133)。
さらに第2の再配置処理プログラム54は、マップ情報33(図19)を参照して、ステップSP131において選択したLBAペアを構成する各LBAとそれぞれ対応付けられた記憶メディア5(つまり仮想ボリュームVVOL内のそれらのLBAにそれぞれ割り当てられた被参照領域ARを提供している記憶メディア5)を特定する(SP134)。
また第2の再配置処理プログラム54は、ステップSP134の特定結果に基づいて、ステップSP133において選択したLBAペアを構成する各LBAとそれぞれ対応付けられた記憶メディア5は異種の記憶メディア5であるか否かを判断する(SP135)。なお、本実施の形態の場合、ストレージ装置51のストレージコントローラ42は、個々の記憶メディア5の種別を予め記憶しているものとする。
そして第2の再配置処理プログラム54は、この判断で否定結果を得るとステップSP132に戻る。これに対して、第2の再配置処理プログラム54は、ステップSP135の判断で肯定結果を得ると、仮想ボリュームVVOL内のステップSP133において選択したLBAペアを構成する各LBAで指定される記憶領域にそれぞれ格納されているデータを、同種別の記憶メディア5に集約することができるか否かを判断する(SP136)。
第2の再配置処理プログラム54は、この判断で否定結果を得るとステップSP132に戻る。これに対して、第2の再配置処理プログラム54は、ステップSP136の判断で肯定結果を得ると、仮想ボリュームVVOL内のステップSP133で選択したLBAペアを構成する各LBAで指定されている記憶領域にそれぞれ格納されているデータを同一種別の記憶メディア5に移動させるデータ移動処理を実行する(SP137)。
具体的に、第2の再配置処理プログラム54は、仮想ボリュームVVOL内のステップSP133で選択したLBAペアを構成する各LBAで指定されている記憶領域にそれぞれ格納されているデータの一方を他方のデータが格納されている記憶メディア5と同種別の記憶メディア5に移動させ、又は、これらのデータをいずれも他の同種別の記憶メディア5に移動させるようディスクアダプタ16を介して対応する記憶メディア5を制御する。また第2の再配置処理プログラム54は、これと併せてマップ情報33を構成する仮想ボリューム管理テーブル37をかかるデータ移動後の状態に更新する。
続いて、第2の再配置処理プログラム54は、上述のようなデータ移動処理を終えるとステップSP132に戻り、この後、ステップSP133において選択するLBAペアを他の未処理のLBAペアに順次切り替えながら、ステップSP132〜ステップSP137の処理を繰り返す。
そして第2の再配置処理プログラム54は、やがてステップSP131において検出したすべてのLBAペアに対してステップSP134以降の処理を実行し終えることによりステップSP132で肯定結果を得ると、この第2のデータ再配置処理を終了する。
以上のように本実施の形態による計算機システム50では、ホスト計算機2からストレージ装置51に送信される同一のパラメータリストにおいて高頻度でリード/ライトの対象となるデータの組を検出し、これらのデータを同一種別の記憶メディア5に再配置するため、応答性能が低い記憶メディア5からのデータの読み出しに起因するストレージ装置31全体としてのリード処理の遅延を有効に防止することができる。かくして第2の実施の形態の計算機システム30と比べて、より一層とストレージ装置51全体としての応答性能を向上させることができる。
(5)他の実施の形態
なお上述の第1〜第4の実施の形態においては、本発明を図1又は図16のように構成されたストレージ装置3,31,41,51に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成を有するストレージ装置に広く適用することができる。
なお上述の第1〜第4の実施の形態においては、本発明を図1又は図16のように構成されたストレージ装置3,31,41,51に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成を有するストレージ装置に広く適用することができる。
また上述の第1〜第4の実施の形態においては、ホスト計算機2からストレージ装置3,31,41,51に送信される当該ストレージ装置3,31,41,51内の論理ボリュームVOL又は仮想ボリュームVVOL内の複数の記憶領域をリード先として指定した第1のリードコマンドや、ストレージコントローラ4,32,42,52から各記憶メディア5に送信される当該記憶メディア5内の複数の記憶領域をリード先として指定した第2のリードコマンド、並びに、ストレージコントローラ4,32,42,52から各記憶メディア5に送信される当該記憶メディア5内の複数の記憶領域をライト先として指定した第1のライトコマンドを、図7〜図9に規定されたコマンドフォーマットにより作成して送信するようにした場合について述べたが、本発明はこれに限らず、これら第1及び第2のリードコマンド並びに第1のライトコマンドのコマンドフォーマットとしては、この他種々のフォーマットを広く適用することができる。
また上述の第3及び第4の実施の形態においては、第2の実施の形態の計算機システム30に第1又は第2のデータ再配置機能の一方のみを搭載するようにして計算機システム40,50を構築するようにした場合について述べたが、本発明はこれに限らず、これら第1及び第2のデータ再配置機能を第2の実施の形態の計算機システム30に搭載するようにしても良い。
さらに上述の第4の実施の形態においては、第2のデータ再配置処理のステップSP137において、LBAペアを構成する各LBAにより特定される仮想ボリュームVVOL内の記憶領域にそれぞれ格納されたデータを、単に同一種別の記憶メディア5に格納するだけの場合について述べたが、本発明はこれに限らず、例えば、これらのデータのアクセス頻度に応じた応答性能を有する記憶メディア5の種別を選択して、その種別の記憶メディア5にこれらのデータを再配置するようにしても良い。
この場合、ストレージコントローラ42が各記憶メディア5に格納されているすべてのデータのアクセス頻度を常時計測しておき、第2の再配置処理プログラム54が、これらのデータのアクセス頻度に基づいて、アクセス頻度の高い方のデータを基準にして、そのデータのアクセス頻度がより高いものほどより応答性能が高い記憶メディア5に再配置するように、ストレージコントローラ4がこれらのデータの再配置先を決定すれば良い。
1,30,40,50……計算機システム、2……ホスト計算機、3,31,41,51……ストレージ装置、4,32,42,52……ストレージコントローラ、5……記憶メディア、14……メモリ、14A……キャッシュメモリ領域、14B……ローカルメモリ領域、15……マイクロプロセッサ、VOL……論理ボリューム、VVOL……仮想ボリューム、20……キャッシュ管理情報、21,33……マップ情報、22,34,43,53……制御プログラム群、23,35……リード処理プログラム、24……ライト処理プログラム、25,36……デステージング処理プログラム、37……仮想ボリューム管理テーブル、38……プールボリューム構成管理テーブル、44,54……再配置処理プログラム、PL……プールボリューム、PLVOL……プールボリューム、RG……RAIDグループ。
Claims (12)
- 複数の記憶メディアと、
前記記憶メディアに対するデータの入出力を制御するストレージコントローラと
を備え、
前記ストレージコントローラは、
接続されるホスト計算機に論理ボリュームを提供し、前記ホスト計算機から送信される前記論理ボリューム内の複数の記憶領域をリード先として指定した第1のリードコマンドを受信した場合に、リード先として指定された当該論理ボリューム内の前記記憶領域ごとに、当該記憶領域に書き込まれたデータが実際に格納されている前記記憶メディア及び当該記憶メディア内のアドレスをそれぞれ特定し、
特定した前記記憶メディア内の特定した一部又は全部の各前記アドレスをそれぞれリード先として指定した第2のリードコマンドを特定した前記記憶メディアごとにそれぞれ作成すると共に、作成した各前記第2のリードコマンドをそれぞれ対応する前記記憶メディアにそれぞれ送信し、
前記第2のリードコマンドを受信した各前記記憶メディアは、
受信した前記第2のリードコマンドにおいて指定された各前記アドレスからデータをそれぞれ読み出して前記ストレージコントローラに送信し、
前記ストレージコントローラは、
前記第2のリードコマンドを送信した各前記記憶メディアからそれぞれ送信される、前記第2のリードコマンドにおいて指定した各前記アドレスからそれぞれ読み出されたデータを前記ホスト計算機に転送する
ことを特徴とするストレージ装置。 - 前記ストレージコントローラは、
前記記憶メディアに入出力するデータを一時的に記憶するキャッシュ領域を有し、
前記第1のリードコマンドにおいてリード先として指定された前記論理ボリューム内の前記記憶領域のうち、当該記憶領域に書き込まれたデータが前記キャッシュ領域に格納されていない各前記記憶領域とそれぞれ対応する前記記憶メディア内の前記アドレスをリード先として指定した前記第2のリードコマンドを作成する
ことを特徴とする請求項1に記載のストレージ装置。 - 前記ストレージコントローラは、
前記記憶メディアに入出力するデータを一時的に記憶するキャッシュ領域を有し、
定期的又は不定期に、前記キャッシュ領域に記憶された前記データのうちの前記記憶メディアに格納されていない各データについて、当該データを格納すべき前記記憶メディア及び当該記憶メディア内の記憶領域をそれぞれ検出し、
検出結果に基づいて、前記キャッシュ領域から前記記憶メディアに格納すべき各データのライト先をそれぞれ指定した第1のライトコマンドを前記記憶メディアごとにそれぞれ作成し、作成した前記第1のライトコマンドと、当該第1のライトコマンドにおいてライト先を指定した各データとを、それぞれ対応する前記記憶メディアに送信する
ことを特徴とする請求項1に記載のストレージ装置。 - 前記論理ボリュームは、仮想的な論理ボリュームであり、
前記ストレージコントローラは、
前記複数の記憶メディアの記憶領域をプールとして管理し、
前記論理ボリュームに対する前記ホスト計算機からのライト要求に応じて、前記プールから記憶領域を当該論理ボリュームに動的に割り当て、割り当てた前記記憶領域にライト対象のデータを格納する
ことを特徴とする請求項1に記載のストレージ装置。 - 前記ストレージコントローラは、
同一の前記第1のリードコマンドにおいて高頻度でリード対象として指定される前記データのペアを検出し、
当該ペアを構成する各前記データを同一の前記記憶メディアに再配置するよう対応する前記記憶メディアを制御する
ことを特徴とする請求項4に記載のストレージ装置。 - 前記ストレージコントローラは、
同一の前記第1のリードコマンドにおいて高頻度でリード対象として指定される前記データのペアを検出し、
当該ペアを構成する各前記データを同一種別の前記記憶メディアに再配置するよう対応する前記記憶メディアを制御する
ことを特徴とする請求項4に記載のストレージ装置。 - 複数の記憶メディアと、前記記憶メディアに対するデータの入出力を制御するストレージコントローラとを有するストレージ装置において実行される前記記憶メディアに対するデータ入出力方法において、
前記ストレージコントローラが、接続されるホスト計算機に論理ボリュームを提供し、前記ホスト計算機から送信される前記論理ボリューム内の複数の記憶領域をリード先として指定した第1のリードコマンドを受信した場合に、リード先として指定された当該論理ボリューム内の前記記憶領域ごとに、当該記憶領域に書き込まれたデータが実際に格納されている前記記憶メディア及び当該記憶メディア内のアドレスをそれぞれ特定する第1のステップと、
前記ストレージコントローラが、特定した前記記憶メディア内の特定した一部又は全部の各前記アドレスをそれぞれリード先として指定した第2のリードコマンドを特定した前記記憶メディアごとにそれぞれ作成すると共に、作成した各前記第2のリードコマンドをそれぞれ対応する前記記憶メディアにそれぞれ送信する第2のステップと、
前記第2のリードコマンドを受信した各前記記憶メディアが、受信した前記第2のリードコマンドにおいて指定された各前記アドレスからデータをそれぞれ読み出して前記ストレージコントローラに送信する第3のステップと、
前記ストレージコントローラが、前記第2のリードコマンドを送信した各前記記憶メディアからそれぞれ送信される、前記第2のリードコマンドにおいて指定した各前記アドレスからそれぞれ読み出されたデータを前記ホスト計算機に転送する第4のステップと
を備えることを特徴とするデータ入出力方法。 - 前記ストレージコントローラは、
前記記憶メディアに入出力するデータを一時的に記憶するキャッシュ領域を有し、
前記第2のステップにおいて、前記第1のリードコマンドにおいてリード先として指定された前記論理ボリューム内の前記記憶領域のうち、当該記憶領域に書き込まれたデータが前記キャッシュ領域に格納されていない各前記記憶領域とそれぞれ対応する前記記憶メディア内の前記アドレスをリード先として指定した前記第2のリードコマンドを作成する
ことを特徴とする請求項7に記載のデータ入出力方法。 - 前記ストレージコントローラは、
前記記憶メディアに入出力するデータを一時的に記憶するキャッシュ領域を有し、
定期的又は不定期に、前記キャッシュ領域に記憶された前記データのうちの前記記憶メディアに格納されていない各データについて、当該データを格納すべき前記記憶メディア及び当該記憶メディア内の記憶領域をそれぞれ検出し、
検出結果に基づいて、前記キャッシュ領域から前記記憶メディアに格納すべき各データのライト先をそれぞれ指定した第1のライトコマンドを前記記憶メディアごとにそれぞれ作成し、作成した前記第1のライトコマンドと、当該第1のライトコマンドにおいてライト先を指定した各データとを、それぞれ対応する前記記憶メディアに送信する
ことを特徴とする請求項7に記載のデータ入出力方法。 - 前記論理ボリュームは、仮想的な論理ボリュームであり、
前記ストレージコントローラは、
前記複数の記憶メディアの記憶領域をプールとして管理し、
前記論理ボリュームに対する前記ホスト計算機からのライト要求に応じて、前記プールから記憶領域を当該論理ボリュームに動的に割り当て、割り当てた前記記憶領域にライト対象のデータを格納する
ことを特徴とする請求項7に記載のデータ入出力方法。 - 前記ストレージコントローラは、
同一の前記第1のリードコマンドにおいて高頻度でリード対象として指定される前記データのペアを検出し、
当該ペアを構成する各前記データを同一の前記記憶メディアに再配置するよう対応する前記記憶メディアを制御する
ことを特徴とする請求項10に記載のデータ入出力方法。 - 前記ストレージコントローラは、
同一の前記第1のリードコマンドにおいて高頻度でリード対象として指定される前記データのペアを検出し、
当該ペアを構成する各前記データを同一種別の前記記憶メディアに再配置するよう対応する前記記憶メディアを制御する
ことを特徴とする請求項10に記載のデータ入出力方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/072196 WO2015025363A1 (ja) | 2013-08-20 | 2013-08-20 | ストレージ装置及びデータ入出力方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6013609B2 true JP6013609B2 (ja) | 2016-10-25 |
JPWO2015025363A1 JPWO2015025363A1 (ja) | 2017-03-02 |
Family
ID=52483176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015532605A Expired - Fee Related JP6013609B2 (ja) | 2013-08-20 | 2013-08-20 | ストレージ装置及びデータ入出力方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20150370484A1 (ja) |
JP (1) | JP6013609B2 (ja) |
WO (1) | WO2015025363A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10558383B2 (en) | 2015-10-08 | 2020-02-11 | Hitachi, Ltd. | Storage system |
US11099779B2 (en) * | 2018-09-24 | 2021-08-24 | Micron Technology, Inc. | Addressing in memory with a read identification (RID) number |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003084921A (ja) * | 2001-09-10 | 2003-03-20 | Toshiba Corp | データ処理装置およびデータ読み出し方法 |
JP2008544421A (ja) * | 2005-06-27 | 2008-12-04 | ドット・ヒル・システムズ・コーポレイション | アクティブ−アクティブraidコントローラ間の証明されたメモリ間データ転送 |
JP2012155583A (ja) * | 2011-01-27 | 2012-08-16 | Toshiba Corp | ディスクアレイ装置及び論理ボリュームアクセス方法 |
JP2012531656A (ja) * | 2009-11-10 | 2012-12-10 | 株式会社日立製作所 | 複数のコントローラを備えたストレージシステム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8775718B2 (en) * | 2008-05-23 | 2014-07-08 | Netapp, Inc. | Use of RDMA to access non-volatile solid-state memory in a network storage system |
US8166258B2 (en) * | 2009-07-24 | 2012-04-24 | Lsi Corporation | Skip operations for solid state disks |
US8219776B2 (en) * | 2009-09-23 | 2012-07-10 | Lsi Corporation | Logical-to-physical address translation for solid state disks |
US8356147B2 (en) * | 2010-08-20 | 2013-01-15 | Hitachi, Ltd. | Tiered storage pool management and control for loosely coupled multiple storage environment |
US20130145095A1 (en) * | 2011-12-06 | 2013-06-06 | Lsi Corporation | Melthod and system for integrating the functions of a cache system with a storage tiering system |
-
2013
- 2013-08-20 WO PCT/JP2013/072196 patent/WO2015025363A1/ja active Application Filing
- 2013-08-20 JP JP2015532605A patent/JP6013609B2/ja not_active Expired - Fee Related
- 2013-08-20 US US14/765,275 patent/US20150370484A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003084921A (ja) * | 2001-09-10 | 2003-03-20 | Toshiba Corp | データ処理装置およびデータ読み出し方法 |
JP2008544421A (ja) * | 2005-06-27 | 2008-12-04 | ドット・ヒル・システムズ・コーポレイション | アクティブ−アクティブraidコントローラ間の証明されたメモリ間データ転送 |
JP2012531656A (ja) * | 2009-11-10 | 2012-12-10 | 株式会社日立製作所 | 複数のコントローラを備えたストレージシステム |
JP2012155583A (ja) * | 2011-01-27 | 2012-08-16 | Toshiba Corp | ディスクアレイ装置及び論理ボリュームアクセス方法 |
Also Published As
Publication number | Publication date |
---|---|
US20150370484A1 (en) | 2015-12-24 |
WO2015025363A1 (ja) | 2015-02-26 |
JPWO2015025363A1 (ja) | 2017-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180173632A1 (en) | Storage device and method for controlling storage device | |
US9229653B2 (en) | Write spike performance enhancement in hybrid storage systems | |
US8850114B2 (en) | Storage array controller for flash-based storage devices | |
US9792073B2 (en) | Method of LUN management in a solid state disk array | |
US9009395B2 (en) | Storage subsystem and its data processing method for reducing the amount of data to be stored in nonvolatile memory | |
US9547446B2 (en) | Fine-grained control of data placement | |
US8316195B2 (en) | Storage system and data transfer method of storage system | |
US9612745B2 (en) | Raid set initialization | |
US8904105B2 (en) | System and method for performing raid I/O operations in PCIE-based storage resources | |
US20140173223A1 (en) | Storage controller with host collaboration for initialization of a logical volume | |
US20190243758A1 (en) | Storage control device and storage control method | |
US8949528B2 (en) | Writing of data of a first block size in a raid array that stores and mirrors data in a second block size | |
US9612756B1 (en) | Data storage system with parallel handling of sub-I/O requests for individual host I/O requests | |
WO2014188479A1 (ja) | ストレージ装置及びストレージ装置の制御方法 | |
JP6013609B2 (ja) | ストレージ装置及びデータ入出力方法 | |
US10037289B1 (en) | Data storage system with efficient processing of single mapping callback for host I/O requests | |
US10154113B2 (en) | Computer system | |
WO2012137256A1 (en) | Disk array apparatus and control method thereof | |
US8966173B1 (en) | Managing accesses to storage objects | |
US9317419B1 (en) | System and method for thin provisioning | |
US9104330B1 (en) | System and method for interleaving storage | |
US9658803B1 (en) | Managing accesses to storage | |
US9116636B1 (en) | System and method for adjusting QOS | |
JP2022539788A (ja) | 読出しヒート・データ分離をサポートしている書込みキャッシュ・アーキテクチャ内でのデータ配置 | |
JP2015191443A (ja) | ストレージシステム、制御装置、ストレージ装置、入出力制御方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160722 |
|
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: 20160823 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160921 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6013609 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |