JP3713788B2 - 記憶装置および記憶装置システム - Google Patents
記憶装置および記憶装置システム Download PDFInfo
- Publication number
- JP3713788B2 JP3713788B2 JP04094596A JP4094596A JP3713788B2 JP 3713788 B2 JP3713788 B2 JP 3713788B2 JP 04094596 A JP04094596 A JP 04094596A JP 4094596 A JP4094596 A JP 4094596A JP 3713788 B2 JP3713788 B2 JP 3713788B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- update
- record
- control device
- redundant data
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1009—Cache, i.e. caches used in RAID system with parity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、計算機システムにおける記憶装置サブシステムに係り、特に、キャッシュメモリを有する記憶装置サブシテムの高性能化、高信頼化に関する。
【0002】
【従来の技術】
計算機システムにおいて用いられる記憶装置サブシステムの一つとして、従来より、磁気ディスクを記憶媒体とするディスクシステムが用いられている。このようなディスクシステムの高性能化、高信頼化を実現するための技術として、例えば、エー.シー.エム.シグモッド コンファレンス プロシーディング,1988年,6月,109−116ページに掲載されているパターソン等の論文(D. Patterson et al : A Case for Redundant Arrays of Inexpensive Disks(RAID), ACM SIGMOD conference proceeding, Chicago, IL, June 1-3,1988, pp.109-116、以下、パターソン論文と呼ぶ)に開示されるようなディスクアレイシステムが知られている。ディスクアレイシステムでは、物理的には複数のディスク装置を、処理装置に対しては1台の論理的なディスク装置に見せかけることで高性能化を実現している。また、データを格納したディスク装置に障害が発生した場合、障害が発生したディスク装置に記憶されているデータの回復を行うことを可能とする冗長データをデータを記憶したディスク装置とは別のディスク装置に格納しておくことにより高信頼化を達成している。
【0003】
パターソン論文では、ディスクアレイシステム上の冗長データの配置方法について、以下に述べるいくつかの技術が開示されている。第1のデータ配置方法は、まったく同じ内容のデータを2つのディスク装置に格納する方法であり、RAID1(レイド1)、あるいは、2重書きと呼ばれる。第2のデータ配置方法は、処理装置装置が、論理的なディスク装置との間で、リード/ライト処理を行う際の、リード/ライト単位となるデータの集合であるレコードを分割して、複数のディスク装置に格納する方法である。このようなデータ配置方法は、RAID3と呼ばれる。RAID3では、レコードを分割したそれぞれの分割単位から冗長データが作成される。また、第3のデータ配置方法では、RAID3のようにレコードを分割せずに、1つのレコードは1つのディスク装置に格納し、別々のディスク装置に格納された複数のレコードから冗長データを作成する。このようなデータの配置方法には、RAID4、RAID5と呼ばれるものがある。
【0004】
一般に、処理装置が直接読み書きするデータを格納したレコードは、データレコードと呼ばれ、冗長データを格納したレコードは、パリティレコードと呼ばれる。また、複数のディスク装置に、データを分割する単位をストライプと呼んでいる。ストライプは、レコードの集合であり、データレコードで構成されるストライプを、データストライプと呼び、パリティレコードで構成されるストライプを、パリティストライプと呼ぶ。通常、ディスクアレイシステムでは、1つ以上のm個のデータストライプから1つ以上n個のパリティストライプが作成される。以下、これらm+n個のストライプの集合をパリティグループと呼ぶ。これらm+n個のストライプは、別々のディスク装置に格納される。パリティグループ内のパリティストライプの数がn個であれば、n台までのディスク装置に障害が発生しても、そのディスク装置内のデータを回復することが可能である。
【0005】
データレコードが書き替えられると、これに伴いパリティレコードも書き替える必要が生ずる。例えば、パリティグループ内の1つのデータレコードだけが書き替えられた場合には、書き変えられた内容と、そのデータレコードの更新前の値、パリティレコードの更新前の値とから、パリティレコードの更新値が作成される。このようなパリティレコードの更新処理を効率よく行いシステムの高性能化を実現する技術として、次のような技術がある。
【0006】
例えば、特開平4−245342号公報に開示される技術では、データレコードに対する更新処理をキャッシュ上で実行し、パリティレコードの更新値の作成、データレコード、パリティレコードのディスク装置への書き込みは後から実行する。パリティレコードの更新値の作成を開始する前に、同一パリティグループ内のデータレコードにライト処理が発生した場合、複数のライト処理に対して、パリティレコードの更新値の作成をまとめて実行することにより高性能化を実現している。
【0007】
また、PCT WO 91/20025号には、ディスクアレイにおけるライト処理を効率化するために動的マッピングという技術が開示されている。この技術は、ライト処理が発生するとそのデータレコードを書き込むディスク上の位置を変えるというものである。具体的には、ライトされたデータだけで、パリティグループを構成し、これらのデータからパリティデータを作成し、ディスクアレイを構成するディスクに書き込みを行うというものである。ただし、以上の処理を実行するためには、パリティグループ全体のデータストライプを空き領域にする必要がある。
【0008】
一方、電子情報通信学会技術研究報告、DE93−45(茂木他:仮想ストライピングによるRAID5型ディスクアレイの性能評価、1993年 9月、信学会技報Vol.25-No.251、pp.69-75、以下、茂木論文と呼ぶ)ではさらに効率的な技術が開示されている。本論文では、パリティグループそのもののディスク上の位置を動的に変更するために、より効率的にパリティグループ全体のデータストライプを空き領域にすることができる。
【0009】
さらに、特開平5−46324号公報には、パリティレコードの更新に必要な情報をパリティレコードを格納したディスク装置に転送し、ディスク装置側でパリティレコードの更新値を作成することで、データ更新時に発生する制御装置とディスク装置との間のデータ転送の回数を削減し、ディスクアレイシステムの高性能化を図る技術が開示されている。
【0010】
一方、特開平4−230512号公報には、ディスク装置上のデータストライプ、パリティストライプに、空き状態のレコードを適当な割合で確保し、パリティレコードの更新値を元々の場所ではなく、空き領域に書き込むことにより、書き込み時間を短縮する技術が開示されている。ここに示されている空き領域は、先の、PCT WO 91/20025号や、茂木論文で開示されている空き領域とは異なるものである。特開平4−230512号公報に開示される技術では、パリティレコードの更新値の生成が終了した後、パリティレコード、データレコードの更新値を書き込む際、元々の場所でなく、空き領域に、更新値を書き込む。これにより、パリティレコードの元々の格納場所は、空き領域になる。これに対して、PCT WO 91/20025号、あるいは茂木論文で開示されている技術では、パリティグループ全体が空き領域になっている領域に対し、新たなライトデータだけで新たにパリティグループを構成して、そのパリティグループ全体をディスク装置に書き込む。元々データを格納していた場所は空き領域として管理する。したがって、両者の間には、次の2つの点で本質的な相違がある。
【0011】
(1)特開平4−230512号公報の技術では、空き領域の選択がパリティレコードの更新値の生成後であるのに対し、PCT WO 91/20025、あるいは茂木論文の技術では、パリティレコードの更新値の生成の前、すなわち、書き込みを行うパリティグループを選択した時に、ディスク装置のどの領域にデータを書き込むのかが、決まったことになる。
【0012】
(2)特開平4−230512号公報の技術では、1つのパリティグループを構成するデータレコード、パリティレコードは変化しない。他方、PCT WO 91/20025、あるいは茂木論文の技術では、1つのパリティグループを構成するデータレコードの集合は動的に変化する。
【0013】
【発明が解決しようとする課題】
特開平4−230512号公報に開示された技術では、ディスクアレイを制御する制御装置が、ディスク装置に、データレコードの読み込み要求、書き込み要求、パリティレコードの読み込み要求、書き込み要求と計4回の要求を発行する。さらに、パリティレコードの更新値も制御装置が生成する。例えば、制御装置には、更新前のデータレコードと更新後のデータレコードが用意されている状況で、ディスク装置内で、記憶媒体から更新前のパリティレコードの読み込みが完了したとする。当然、ディスク装置は、媒体から読み込んだ更新前のパリティレコードを送ろうとする。しかし、通常、制御装置とディスク装置の間のデータ転送路は、他のディスク装置と共有されていることが多いため、データ転送路が占有されていて、直ちに、更新前のパリティレコードを送る処理には入れない可能性がある。また、制御装置に更新前のパリティレコードが送られてから、パリティレコードの更新値を作成処理が開始するまでにも、制御装置が別の仕事を行っているため、時間を要する可能性がある。さらに、パリティレコードの更新値の生成が完了した後、この値をディスク装置に送るまでにも、ディスク装置、データ転送路の共有資源を確保する必要があり、競合時には待ち時間が発生する可能性がある。
【0014】
以上のように、制御装置で、パリティレコードの更新値を作成し、この更新値をディスク装置に送るという方法をとったのでは、更新前の値を読み出してから、更新後の値を書き込むまでに、かなりの時間を要する可能性が充分あることになる。このため、更新前の値のすぐ後に、空いたレコードが存在しても、更新後の値がディスク装置に送られてくる前に、ヘッドが空いたレコード上を、通過してしまうので、性能向上効果が得られにくくなる。このため、特開平4−230512号公報の技術では、原理的に、読み出した直後の領域が空き領域であっても、その領域に、データレコードの更新値を書き込むことは実質的に困難である。
【0015】
一方、特開平5−46324の発明では、ディスク装置に、パリティレコードの更新値を作成する機能をもたせることで、制御装置の負荷はある程度分散させることができる。しかし、制御装置の負荷を軽減するという点では、検討の余地を残していた。また、パリティレコードの更新後の値は、更新前の値を読み出した場所に書き込まれるため、更新前の値を読み出してから、更新後の値を書き込むまでに、最低でもディスク1回転分の時間を必要としていた。
【0016】
本発明の目的は、パリティレコードの更新時に、その更新前の値を読み出してから、更新後の値を書き込むまでの時間を短縮し、記憶装置サブシステムの性能向上を図ることにある。
【0017】
また、本発明の他の目的は、パリティレコードの更新に伴う制御装置の負荷を軽減することにある。
【0018】
【課題を解決するための手段】
上記目的を達成するために、本発明の記憶装置サブシステムでは、制御装置は、更新前のデータレコードと更新後のデータレコードから生成したパリティレコードの更新値を得るための中間値をディスク装置に送る。ディスク装置では、更新前のパリティレコードを読み出すと、制御装置から受け取った中間値と読み出した更新前のパリティレコードの値から、パリティレコードの更新値を生成する。デイスク装置内部では、とくに競合資源がないため、すぐにこの処理の実行に入れる。さらに、パリティレコードの更新値を生成した後、空いた領域があれば、その領域に、生成したパリティレコードの更新値を書き込む。具体的には、例えば、パリティレコードを読み出しながら、パリティレコードの更新値を生成する回路をディスク装置内に設ける。これにより、更新前のパリティレコードの読み出しを行った、直後の領域に書き込みを行うことができ、更新前の値を読み出してから、更新後の値を書き込むまでの時間を短縮することができる。
【0019】
一方、データレコードに関しては、制御装置は、ディスク装置に、データレコードの更新値を送る。ディスク装置は、更新前のデータレコードを読み出し、空いた領域に、データレコードの更新値を書き込む。この場合も、特に競合資源はないため、空き領域があれば、読み出した直後の領域に、データレコードの更新値を書き込むことができる。したがって、この場合も、更新前の値を読み出してから、更新後の値を書き込むまでの時間を短縮することができる。
【0020】
このように、ディスク装置内で、更新前の値を読み出してから、更新後の値を書き込むまでに必要な処理を実行させることにより、極めて短時間で更新値を書き込むことができる。
【0021】
また、上記他の目的を達成するために、本発明の記憶装置サブシステムは、制御装置が、処理装置からライト要求を受けると、更新後のデータとともに更新前のデータをパリティレコードを格納するディスク装置に送る。パリティレコードを格納するディスク装置では、更新前のパリティレコードを読み出し、制御装置から受け取った更新前後のデータ、及び読み出した更新前のパリティレコードの値からパリティレコードの更新値を作成する。
【0022】
このように、制御装置から更新前後のデータをパリティレコードを格納するディスク装置に転送してディスク装置側でパリティレコードの更新値を作成することで、制御装置の負荷をより軽減することができる。
【0023】
【発明の実施の形態】
以下、本発明の実施の態様につき、実施例に従い説明する。
【0024】
図2は、本発明が適用される計算機システムの一実施例における構成を示すブロック図である。計算機システムは、処理装置1300、制御装置1305、および、複数台のディスク装置1304により構成する。処理装置1300は、CPU1301、主記憶1302、および、チャネル1303により構成される。制御装置1305は、処理装置1300からのリード/ライト要求にしたがって、処理装置1300と、ディスク装置1304の間で、転送処理を実行する。制御装置1305は、1つ以上のディスクアレイ制御プロセッサ1310、キャッシュメモリ(以下、単にキャッシュと略す)1308、ディレクトリ1309、不揮発性メモリ1400、および、不揮発性メモリ管理情報1401を含む。キャッシュ1308は、ディスク装置1304の中のアクセス頻度の高いデータをロード格納する。ディレクトリ1309には、キャッシュ1308の管理情報を格納する。不揮発性メモリ1400は、不揮発の媒体であり、キャッシュ1308と同様に、ディスク装置1304の中のアクセス頻度の高いデータをロードしておく。不揮発性メモリ管理情報1401も不揮発の媒体であり、不揮発性メモリ1400の管理情報を格納する。なお、キャッシュ1308や、ディレクトリ1309が不揮発化されていてもよい。さらに、制御装置1305が、不揮発性メモリ1400、および、不揮発性メモリ管理情報1401を含まなくてもよい。ディスクアレイ制御プロセッサ1310は、制御装置1305内で、処理装置1300からのリード/ライト要求を受け取り、キャッシュ1308等を利用し、処理装置1300とディスク装置1304の間でデータの転送処理を実行する機能をもつ。
【0025】
制御装置1305は、処理装置1300からのライト要求を、キャッシュ1308、あるいは、キャッシュ1308と不揮発性メモリ1400にデータを格納した段階で完了させる。ディスク装置1304へのデータの書き込みは、後から、制御装置1305が実行する。この処理をライトアフタ処理と呼ぶ。
【0026】
ディスク装置1304は、ディスク制御プロセッサ1311、記憶媒体1312、演算回路1314、読み書きヘッド1315を含む。ディスク制御プロセッサ1311は、読み書きヘッド1315を利用して、記憶媒体1312と制御装置1305の間のデータ転送を制御する。バッファ1313には、記憶媒体1312と制御装置1305の間で転送されるデータ等を格納する。演算回路1314は、記憶媒体1312から読み出したデータに所定の演算を施すために使用する。なお、演算をディスク制御プロセッサ1311により実行することで、演算回路1314を不要とすることができる。
【0027】
通常、処理装置1300がディスク装置1304との間で、リード/ライトするデータの単位は、レコード1701と呼ばれる。図3は、本実施例におけるレコードの考え方をまとめたものである。処理装置1300が制御装置との間でリード/ライトするレコードをデータレコード1700と呼ぶ。一方、パリティレコード1702は、ディスク装置1304に障害が発生し、データレコード1700の内容が消失した時、その消失した内容を回復する処理に用いるレコードである。この場合、データレコード1700の値が変更されると、これに対応して、パリティレコード1702の内容も変更する必要が生ずる。なお、ここでは、m個のデータレコード1700から、n個のパリティレコード1702を生成するものとする。これにより、n個のデータレコード1700の内容が失われても回復可能である。
【0028】
ディスク装置1304上に格納されたレコードを物理レコードと呼ぶ。本実施例においては、ディスク装置1304上に格納されている物理レコードには、物理データレコード1500、物理パリティレコード1501、空きレコード1503の3種類が存在する。物理データレコード1500は、データレコード1700の内容を格納した物理レコード1502である。一方、物理パリティレコード1501は、パリティレコード1702の内容を格納する。本実施例では、性能向上のために、ディスク装置1304において、空いた状態の領域が必要になる。空きレコード1503は、そのための物理レコードである。
【0029】
図4、図5は、本実施例におけるディスクアレイでのパリティグループの構成である。本実施例では、新しい値をディスク装置1304に書き込む際、それまで値を格納していた物理データレコード1500や物理パリティレコード1501ではなく、空きレコード1503に格納する。ただし、性能向上のためには、もともとの物理データレコード1500や物理パリティレコード1501の近くの空きレコード1503を選択する必要がある。以上から、本実施例では、論理ストライプと物理ストライプ1612という考え方を用いる。なお、論理ストライプと物理ストライプをあわせてストライプと呼ぶ。論理ストライプは、データレコード1700、あるいは、パリティレコード1702の集合である。データレコード1700の集合の方を、論理データストライプ1613と呼び、パリティレコード1702の集合の方を、論理パリティストライプ1614と呼ぶ。物理ストライプ1612には、物理データストライプ1615、物理パリティストライプ1616がある。物理データストライプ1615は、物理データレコード1500と空きレコード1503の集合であり、物理パリティストライプ1616は、物理パリティレコード1501と空きレコード1503の集合である。論理ストライプと物理ストライプは1対1に対応する。データレコード1700を新たに空きレコード1503に格納する場合、そのデータレコード1700を含む論理ストライプに対応する物理ストライプ内の空きレコード1503を選択する。これは、パリティレコード1702についても同様である。新たに値を格納された物理レコードは、物理データレコード1500、あるいは、物理パリティレコード1501となり、それまで物理データレコード1500、あるいは、物理パリティレコード1501だった物理レコードが空きレコード1503となる。
【0030】
本実施例では、m個の論理データストライプ1613とn個の論理パリティストライプ1614が、論理ストライプグループ1617を構成する。同様に、m個の物理データストライプ1615とn個の物理パリティストライプ1616が、物理ストライプグループ1618を構成する。なお、同一物理ストライプグループ1618内の物理ストライプは、異なったディスク装置1304に割り当てる。論理ストライプグループ1617と物理ストライプグループ1618をあわせてストライプグループと呼ぶ。図4では、各物理ストライプの長さは等しい。確かに、複数の物理パリティストライプ1616を常に同一のディスク装置1304に格納する場合には、各物理ストライプの長さは等しくする必要がある。しかし、物理パリティストライプ1616を配置するディスク装置を循環させる場合、図5に示すように、物理パリティストライプ1616と物理データストライプ1615の長さを変えても問題ない。さらに、物理パリティストライプ1616と物理データストライプ1615のどちらか一方は、空きレコード1503をまったく設けなくともよい。空きレコード1503をまったく設けない場合、データレコード1700、パリティレコード1702は常に同じ物理レコードに値を書き込むことになる。物理パリティストライプ1616と物理データストライプ1615の両方に、空きレコード1503をまったく設けないとすると本発明の意味がなくなるため、少なくとも物理パリティストライプ1616と物理データストライプ1615のどちらか一方は、空きレコード1503をもつものとする。
【0031】
図1は、本実施例の記憶装置サブシステムの概要を表す機能ブロック図である。
【0032】
パリティレコード1701の更新値は、データレコード1700の更新値、データレコード1700の更新前の値、および、パリティレコード1701の更新前の値により、作成することができる。
【0033】
制御装置側1305内のライト要求受付部110は、処理装置1300からライト要求を受け付け、当該ライト要求において受け取ったデータレコード1700の更新値を、更新後データ100として、キャッシュ1308、不揮発メモリ1400に格納する。格納が完了すると、制御装置1305は、当該ライト要求の完了を処理装置に報告する。なお、本発明は、以下の処理を、当該ライト要求の完了を報告する前に実行しても有効である。
【0034】
次に、制御装置1305内のデータデステージ部111とディスク装置1304内のデータ書き込み部112の処理について説明する。データデステージ部111は、データレコード1700の更新前の値である更新前データ101がキャッシュ1308に存在するかチェックする。存在する場合、更新前データ101と更新後データ100からパリティレコードを作成するための中間値、すなわち、パリティ中間値102を作成し、キャッシュ1308、不揮発メモリ1400に格納する。この後、データデステージ部111は、更新後データ100をディスク装置1304に書き込むよう、要求を発行する。物理データストライプ1615が空きレコード1503を含む場合、ディスク装置1304内のデータ書き込み部112は、更新後データ100を、もともと割り当てられていた物理データレコード1500か、空きレコード1503に書き込めばよいことになる。これにより、ディスク装置1304のアクセス時間を短縮させることができる。
【0035】
更新前データ101が、キャッシュ1308に存在しない場合、データデステージ部111は、ディスク装置1304に対し、更新前データ101に対応する物理データレコード1500から更新前データ101を読み出し、さらに、更新後データ100を、空きレコード1503に書き込むよう要求する。ディスク装置1304内のデータ書き込み部112は、更新後データ100を任意の空きレコード1503に書き込めるため、ディスク装置1304のアクセス時間を短縮させることができる。さらに、データ書き込み部112は、更新前データ101と更新後データ100からパリティ中間値102を作成し、パリティ中間値102を制御装置1305に送る。制御装置1305のデータデステージ部111は、受け取ったパリティ中間値102をキャッシュ1308、不揮発メモリ1400に格納する。以上は、ディスク装置1304が、パリティ中間値102を作成する場合の説明であるが、パリティ中間値102は、制御装置1305が作成してもよい。この場合、ディスク装置1304のデータ書き込み部112は、読み出した更新前データ101を制御装置1304に送る。制御装置1305のデータデステージ部111は、更新前データ101と更新後データ100とからパリティ中間値102を作成し、キャッシュ1308、不揮発メモリ1400に格納する。
【0036】
次に、制御装置1305内のパリティデステージ部113とディスク装置1304内のパリティ書き込み部114の処理について説明する。パリティデステージ部113は、パリティレコード1700の更新前の値である更新前パリティ103がキャッシュ1308に存在するかチェックする。存在する場合、更新前パリティ103とパリティ中間値102からパリティレコード1702の更新値、すなわち、更新後パリティ104を作成し、キャッシュ1308、不揮発メモリ1400に格納する。この後、パリティデステージ部113は、更新後パリティ104をディスク装置1304に書き込むよう、要求を発行する。物理パリティストライプ1616が空きレコード1503を含む場合、ディスク装置1304内のパリティ書き込み部114は、更新後パリティ104を、もともと割り当てられていた物理パリティレコード1501か、空きレコード1503に書き込めばよいことになる。これにより、ディスク装置1304のアクセス時間を短縮させることができる。
【0037】
更新前パリティ103が、キャッシュ1308に存在しない場合、パリティデステージ部113は、ディスク装置1304に対し、更新前パリティ103に対応する物理パリティレコード1501から更新前パリティ103を読み出し、読み出した更新前パリティ103と制御装置1305から送ったパリティ中間値102から更新後パリティ104を作成し、さらに、更新後パリティ104を、空きレコード1503、あるいは、もともとの更新前パリティ101に対応する物理データレコードに書き込むよう要求する。ディスク装置1304内のパリティ書き込み部114は、更新後パリティ104を、任意の空きレコード1503に書き込めるため、ディスク装置1304のアクセス時間を短縮させることができる。
【0038】
図6は、キャッシュ1308の構造図である。キャッシュ1308は、複数のセグメント2000に分割されている。各セグメント2000には、論理データストライプ1613、あるいは、論理パリティストライプ1614が格納される。セグメントポインタ2001は、未割り当て状態にあるセグメント2000を結合する。不揮発メモリ1400の構造は、キャッシュ1308と同様でよいため、説明を省略する。
【0039】
図7は、ディレクトリ1309の構造図である。ディレクトリ1309は、マッピング情報2100、空きレコードビットマップ2101、キャッシュ割当情報2102、セグメント管理情報2103、空きセグメントキューポインタ2104、空きセグメント管理情報キューポインタ2105から構成される。なお、セグメント管理情報2103は、キャッシュ1308内のセグメント2000の数だけ存在する。ただし、後述するように、セグメント2000に1対1に対応するわけではない。なお、マッピング情報2100、空きレコードビットマップ2101は、ディスク装置1304にもつ場合もあり、この時には、制御装置1305は、マッピング情報2100、空きレコードビットマップ2101を持つ必要はない。以下、各情報を詳細に説明する。なお、不揮発メモリ管理情報1401の構造は、ディレクトリ1309と同様であるため、詳細な説明は行わない。
【0040】
図8は、マッピング情報2100の構造図である。マッピング情報2100は、論理データレコード1700、及び、論理パリティレコード1702が、どの物理データレコード1500、あるいは、どの物理パリティレコード1501に割り当ててあるかを表している。レコードエントリ2200は、データレコード1700、あるいは、パリティレコード1702に対応して存在する情報である。レコードエントリ2200には、対応するレコードが割り当ててある物理レコードの物理レコードアドレスが設定される。
【0041】
図9は、空きレコードビットマップ2101の構造図である。空きレコード状態2300は、物理データレコード、及び、物理パリティレコードに対応して、その物理レコードが、空きレコード1503であるかそうでないかを表す。
【0042】
図10は、キャッシュ割当情報2102の構造図である。論理ストライプ(論理データストライプ1613、及び、論理パリティストライプ1614)がキャッシュ1308に格納されているかどうかを表す。ストライプ割当ポインタ2400は、論理ストライプ単位に対応して設けられる情報である。ストライプ割当ポインタ2400は、対応する論理ストライプ1611がキャッシュ1308に格納されていれば、そのキャッシュセグメントを管理するセグメント管理情報2103をポイントする。対応する論理ストライプ1611がキャッシュ1308に格納されていなければヌル値となる。
【0043】
図11は、セグメント管理情報2103の中で本発明に関係した情報を表したものである。
【0044】
更新前セグメントポインタ2500は、キャッシュ内のセグメント2000の1つをポイントするポインタである。そのセグメント管理情報2103が、論理データストライプのセグメント管理情報2103の場合、ポイントされるセグメント2000には、パリティレコード1702の更新値を作成していないデータレコード1700の値が格納されている。また、そのセグメント管理情報2103が、論理パリティストライプ1612のセグメント管理情報2103である場合、更新前セグメントポインタ2500は、パリティレコード1702の更新値を作成する際に生成されるパリティレコードの中間値102を格納するセグメント2000をポイントする。
【0045】
更新後セグメントポインタ2501もキャッシュ内のセグメント2000の1つをポイントするポインタである。更新後セグメントポインタ2501は、そのセグメント管理情報2103が論理データストライプ1611のセグメント管理情報2103である場合、新たに作成されたパリティレコード1702の更新値を格納したセグメント2000をポイントしている。また、そのセグメント管理情報2103が物理パリティレコード1501のセグメント管理情報2103の場合、更新前パリティ103、更新後パリティ104の値を、本ポインタが示すセグメント2200に格納する。
【0046】
更新前ビットマップ2502は、対応する論理ストライプ内のレコード(データレコード、あるいは、パリティレコード)のうち、更新前セグメントポインタ2500がポイントするセグメント2000の中に、値が格納されているレコードを示すためのビットマップを保持している。
【0047】
更新前ダーティビットマップ2503は、対応する論理ストライプ内のレコードのうち、更新前セグメントポインタ2500がポイントするセグメント2000の中に、その値がまだディスク装置1304に書き込まれていないデータレコード1700、あるいは、パリティレコード1702を表すビットマップである。
【0048】
更新後ビットマップ2504は、対応する論理ストライプ内のレコードのうち、更新後セグメントポインタ2501がポイントするセグメント2000の中に、値が格納されているデータレコード1700、あるいは、パリティレコード1702を表すビットマップである。
【0049】
更新後ダーティビットマップ2505は、更新後セグメントポインタ2501でポイントするセグメント2200に格納されているデータレコード1700、あるいは、パリティレコード1702の中で、その値がまだディスク装置1304に書き込まれていないデータレコード1700、あるいは、パリティレコード1702を表すビットマップである。
【0050】
使用中フラグ2506は、そのセグメント管理情報2103が使用中であることを表すふらぐであり、空きポインタ2507は、空き状態にあるセグメント管理情報2103を相互に結合するためのポインタである。
【0051】
図12は、空きセグメントキューと空きセグメント管理情報キューの構造図である。図に示すように、空きセグメントキューは、空きセグメントキューポインタ2104を先頭として、空き状態にあるセグメント2000をそのセグメントポインタ2001でチェーン状に結合して構成されている。また、空きセグメント管理情報キューは、空きセグメント管理情報キューポインタ2105を先頭として、空き状態にあるセグメント管理情報2103をその空きポインタ2507でチェーン状に結合して構成されている。
【0052】
図13は、ディスク装置1304内のバッファ1313の構造である。バッファ1313は、データ格納領域1200、マッピング情報2100、空きレコードビットマップ2101から構成される。データ格納領域1200には、記憶媒体1312と制御装置1305の間で転送されるデータを格納する。マッピング情報2100、空きレコードビットマップ2101は、制御装置1305に含まれる場合、バッファ1313にはもつ必要がない。なお、マッピング情報2100、空きレコードビットマップ2101は、バッファ1313に含まれる場合、バッファ1313は不揮発化しておくことが望ましい。また、バッファ1313に含まれるマッピング情報2100、空きレコードビットマップ2101は、当該ディスク装置1304に含まれる論理ストライプ、物理ストライプの情報である。なお、マッピング情報2100、空きレコードビットマップ2101の構造自体は、制御装置1305上に含む場合(図8、図9)と同様であるため説明を省略する。
【0053】
図14は、制御装置1305内のライト要求受付部110の処理フローである。
【0054】
ライト要求受付部110は、処理装置1300からライト要求を受け付けた時、動作を開始する。ステップ1000では、当該ライト要求において受け取ったデータレコード1700に、キャッシュ1308、あるいは、不揮発メモリ1400が割り当てられているかどうかを、ディレクトリ1309、不揮発メモリ管理情報1401のセグメント割当情報2102を参照して確認する。割り当てられている場合、ステップ1002にジャンプする。割り当てられていない場合、ステップ1001でセグメント2000を割り当てる。具体的には、セグメント管理情報2103の更新前セグメントポインタ2500が、割り当てたセグメント2000を示すようにする。ステップ1002では、ライト要求受付部110は、処理装置1300からライトデータ、すなわち、更新後データ104を受付け、キャッシュ1308、および、不揮発メモリ1400に、更新後データ104格納する。このとき、ディレクトリ1309、不揮発メモリ管理情報1401のセグメント割当情報2102の中の必要な情報を更新する。具体的には、更新前ビットマップ2503の対応するビットをオンにする。以上で、動作を終了する。
【0055】
次に、制御装置1305内のデータデステージ部111の処理フローを図15に示す。データデステージ部111は、ステップ1100で、デステージすべきデータレコード1700があるかどうかを、セグメント管理情報2103をサーチして見つける。具体的には、更新前ビットマップ2503がオンの論理データストライプ1611に割り当てたセグメント管理情報2103を見つける。見つかった場合、以下の処理を実行する。
【0056】
まず、ステップ1101で、データデステージ部111は、この論理データストライプ1613に対応する論理パリティストライプ1614にキャッシュ1308、不揮発メモリ1400が割り当てられているか、セグメント割当情報2103を参照して、チェックする。割り当てられている場合、ステップ1103にジャンプする。割り当てられていない場合、ステップ1102で、キャッシュ1308、不揮発メモリ1400のセグメント2000を割り当てる。
【0057】
次に、データデステージ部111は、ステップ1103で、データレコード1700の更新前の値、すなわち、更新前データ101が、キャッシュ1308に存在するかチェックする。具体的には、更新前ビットマップ2503がオンのデータレコード1700に対応する更新後ビットマップ2504がオンになっているかチェックする。存在しない場合、ステップ1107にジャンプする。存在する場合、ステップ1104で、パリティ中間値作成ルーチンをコールする。
【0058】
この後、データデステージ部111は、ステップ1105で、更新後データ100をディスク装置1304に書き込むよう、要求を発行する。ここで、制御装置1305とディスク装置1304の機能分担によって、要求の具体的な内容が異なってくる。まず、第1に、論理ストライプと物理ストライプの変換(データレコード1700、パリティレコード1702から、物理データレコード1500、物理パリティレコード1502への変換)をディスク装置1304が実行する場合である。この場合、図16に示すように、データデステージ部111は、書き込みを行うデータレコード1701を指定し、ディスク装置1304側で、書き込みを行う物理レコード1502を決定する。第2に、論理ストライプと物理ストライプの変換を、制御装置1305が実行する場合、さらに、2つの方法が考えられる。図17に示す方法は、制御装置1305が、物理ストライプの中のすべての空きレコード1503と元々当該データレコード1700が格納されていた物理レコードを通知し、ディスク装置1304が指定された物理レコードの中で最初に見つけた物理レコードに、受け取ったデータを書き込むものである。この場合、ディスク装置1304は、実際に書き込みを行った物理レコードを制御装置1305に報告する。一方、制御装置1305は受け取った情報にしたがって、マッピング情報2100を変更することになる。また、図18に示す方法は、制御装置1305が、更新後データ103を書き込む物理レコードを直接指定する方法である。この場合、ディスク装置1304は、指定された物理レコードに受け取ったデータを書き込むだけである。したがって、書き込み時間を短縮するには、ディスク装置1304の読み書きヘッド1315の位置を制御装置1305が認識して、どの物理レコードに書き込むのが、書き込み時間を短縮できるか計算する必要がある。このため、制御装置1305は、図18に示すように、ディスク装置1304から、読み書きヘッド1315の位置を通知してもらうよう要求する。ディスク装置1304は、要求にしたがって、この位置を制御装置1305に通知する。
【0059】
図16〜図18に示した処理は、データレコード1700の内容を物理データレコード1500に書き込んでいるだけである。したがって、図4に示すようなパリティレコード1702を含まない場合にも適用可能である。パリティレコード1702を含まない場合には、ストライプ1610の構成は図33に示すような構成となる。さらに、データレコード1700の内容を2つ以上の物理レコード1501に書き込んだ場合にも、図16〜図18に示した処理は、適用可能である。この場合のストライプ1610の構成は図34に示すような構成となる。
【0060】
データデステージ部111は、この後、デステージ要求の完了を待つため、一度処理を完了する。
【0061】
データデステージ部111は、ディスク装置1304からのデータの書き込み完了通知を受け取ると再び処理を開始する。ステップ1106で、対応するセグメント管理情報2103の更新後ダーティセグメント2505をオフする。なお、マッピング情報2100を制御装置1305で管理している場合、書き込みを行った物理レコード1502にしたがって、マッピング情報2100を更新する。以上で、処理を完了する。
【0062】
一方、ステップ1103において、更新前データ101が、キャッシュ1308に存在しない場合は、ステップ1107で、更新前データ101を格納するためのセグメント2000が割り当てられていれるかどうかをチェックし、割り当てられていない場合、セグメント2000を割り当てる。
【0063】
次に、データデステージ部111は、ステップ1108で、ディスク装置1304に、更新前データ101に対応する物理データレコード1500から更新前データ101を読み出し、さらに、更新後データ100を、空きレコード1503に書き込むよう要求する。この場合も、制御装置1305とディスク装置1304の機能分担によって、要求の具体的な内容が異なってくる。まず、第1に、論理ストライプと物理ストライプの変換をディスク装置1305が実行する場合である。この場合、図19に示すように、データデステージ部111は、読み出しと書き込みを行うデータレコード1700を指定するだけである。ディスク装置1304は、指定されたデータレコード1700がどの物理レコードに対応しているか認識し、さらに、どの物理レコードが空きレコード1503になっているか把握する。
【0064】
第2に、論理ストライプと物理ストライプの変換を、制御装置1305が実行する場合である。この場合は、さらに、3つの方法が考えられる。まず、図20に示す方法は、制御装置1305が、物理ストライプの中のすべての空きレコード1503を通知する。ディスク装置1304が最初に見つけた空きレコード1503に、受け取ったデータを書き込み、指定を受けた物理レコードを読み出す。残りの2つの方法は、制御装置1305が、データをどの物理レコードに書き込むかを直接指定する方法である。図21に示す方法は、制御装置1305が、書き込み時間を短縮するために、ディスク装置1304の読み書きヘッド1415の位置を制御装置1305が認識して、どの物理レコード1502に書き込むのが、書き込み時間を短縮できるか計算する。このため、制御装置1305は、図21に示すように、ディスク装置1304から、読み書きヘッド1415の位置を通知してもらうよう要求する。ディスク装置1304は、要求にしたがって、この位置を制御装置1305に通知する。
【0065】
図22に示す方法は、物理データレコード1500の読み出しを最初に実行し、次に、空きレコード1503の書き込みを実行する場合である。この場合には、物理データレコード1500の後にある空きレコード1503の中で、最も近くにある空きレコード1503を、データを書き込むべき物理レコードとして選択する。
【0066】
データデステージ部111は、この後、ディスク装置1304からの報告を待つため、一度処理を完了する。
【0067】
ディスク装置1304からの読み出し完了報告を受け取ると、データデステージ部111は再び処理を開始する。ステップ1110で、データデステージ部111は、ディスク装置1304から、読み出した物理データレコード1500を受け取り、セグメント2000に格納する。この後、ステップ1109で、ディスク装置1304から、デステージ要求の完了報告を受取、対応するセグメント管理情報2103の更新前ダーティセグメント2503をオフする。さらに、この後、セグメント管理情報2102の中の対応する更新後ビットマップ2504をセットする。なお、マッピング情報2100を制御装置1305で管理している場合、書き込みを行った物理レコード1502にしたがって、マッピング情報2100を更新する。
【0068】
ステップ1111では、データデステージ部111は、パリティ中間値作成ルーチンをコールする。以上で、処理を完了する。
【0069】
図23は、パリティ中間値作成ルーチンの処理フローである。ステップ2300では、すでに、パリティ中間値102が作成されているかどうかをチェックする。具体的には、論理パリティストライプ1614に割り当てたセグメント管理情報2103の中の対応する更新前ビットマップ2503がオンになっているかチェックする。作成ずみの場合、ステップ2303へジャンプする。ステップ2301では、更新前データ101と更新後データ100からパリティ中間値102を作成し、キャッシュ1308、不揮発メモリ1400内の、論理パリティストライプ1614に割り当てたセグメント2000に格納する。ステップ2302では、論理パリティストライプ1614に割り当てたセグメント管理情報2103の中の対応する更新前ビットマップ2502、更新前ダーティビットマップ2503をオンにする。この後、ステップ2304にジャンプする。
【0070】
ステップ2303でデータデステージ部111は、更新前データ101、更新後データ100、さらに作成済みのパリティ中間値103とから、新たなパリティ中間値103を作成し、キャッシュ1308、不揮発メモリ1400内の、論理パリティストライプ1614に割り当てたセグメント2000に格納する。
【0071】
ステップ2304では、論理データストライプ1611に割り当てたセグメント管理情報2103の中の更新前セグメントポインタ2500が示すセグメント2000内の更新前ビットマップ2502がオンのデータレコード1700の内容を、更新後セグメントポインタ2501が示すセグメント2000の対応位置にコピーする。さらに、更新前ビットマップ2502がオンのビットを、更新後ビットマップ2504にコピーする。
【0072】
ステップ2305では、論理データストライプ1611に割り当てたセグメント管理情報2103の中の論理データストライプ更新前ダーティビットマップ2503がオンのビットを、更新後ダーティビットマップ2505にコピーする。
【0073】
ステップ2306では、論理データストライプ1611に割り当てたセグメント管理情報2103の中の更新前セグメントポインタ2500が示すセグメント2000を空き状態にする。加えて、更新前ビットマップ2502、および、更新前ダーティビットマップ2503をオフにし、更新前セグメントポインタ2500をヌルにする。
【0074】
ステップ2304〜2306の処理は、キャッシュ1308、ディレクトリ1309だけでなく、不揮発メモリ1400、不揮発メモリ管理情報1401についても、同様に実行される。
【0075】
図24は、ディスク装置1304内のデータ書き込み部112の処理フローである。まず、ステップ2400では、制御装置1305から受け取った情報を解析する。マッピング情報2100をディスク装置1304で管理する場合には、関係する論理ストライプの中から、空きレコード1503がどれかを認識する。ステップ2401では、制御装置1305から書き込みを行うデータを受け取る。次に、ステップ2402で、読み書きヘッド1413の位置付けを実行する。ステップ2403では、読み書きヘッド1413が、どの物理レコード1502に位置付いたかを認識する。
【0076】
ステップ2404では、当該物理レコード1502が、読み出しを指定された物理レコード1502であるか判断する。そうであれば、ステップ2408へジャンプする。ステップ2405では、当該物理レコード1502は書き込みを指定された物理レコード1502、あるいは、書き込みを行ってよい物理レコード1502か判断する。そうであれば、ステップ2410へジャンプする。
【0077】
ステップ2406では、次の物理レコードが当該物理ストライプ1618に含まれるか判断する。そうであれば、次の物理レコードの処理に入るため、ステップ2404にジャンプする。含まれない場合、ステップ2408で、当該物理ストライプの最初の物理レコードに位置付くよう、読み書きヘッド1413の位置付けを実行する。この後、ステップ2403にジャンプする。
【0078】
ステップ2408では、読み書きヘッド1413が位置付いた物理レコードを読み出す。そして、ステップ2409で、書き込みが完了したかをチェックする。完了していない場合、ステップ2404にジャンプする。完了している場合、ステップ2412へジャンプする。
【0079】
ステップ2410では、読み書きヘッド1413が位置付いた物理レコードにライトデータを書き込む。ステップ2411では、物理レコードの読み出しを行う必要があるか判断し、読み出しの必要がまだ有れば、ステップ2404へジャンプする。
【0080】
ステップ2412では、物理レコード1502の読み出しを行ったかチェックし、読み出していれば、物理レコード1502を制御装置1305に送る。ステップ2413では、要求の完了を制御装置1305に報告する。なお、ディスク装置1304がマッピング情報を持つ場合、完了報告を返す前に、マッピング情報2100を更新する。
【0081】
以上は、ディスク装置1304側に、パリティ中間値102の作成機能を持たない場合の、データデステージ部111、データ書き込み部112の処理フローである。図25、図26は、ディスク装置1304側に、パリティ中間値102の作成機能を持った場合の、データデステージ部111、データ書き込み部112の処理フローである。それぞれの処理フローで、図15、図23、図24の処理フローと同一の番号が付されたステップは、それらにおける対応する処理と同じ処理内容を持つ。以下、処理内容が異なる部分のみ説明を行う。
【0082】
図25の処理フローでは、データデステージ部111が、ディスク装置1304から、更新前データ101ではなく、パリティ中間値102を受け取る。この場合、ステップ2502で、作成ずみのパリティ中間値102があるかチェックする。パリティ中間値がない場合、ステップ2503のキャッシュ1308、不揮発性メモリ1400それぞれのパリティストライプ1612に対応するセグメント2000に、パリティ中間値102をコピーする。さらに、ステップ2504で、対応する更新前ビットマップ2502と更新前ダーティビットマップ2503をセットする。この後、ステップ2304へジャンプする。ステップ2505では、ディスク装置1304から受け取ったパリティ中間値102と作成済みのパリティ中間値102から、最新のパリティ中間値102を作成し、キャッシュ1308、不揮発性メモリ1400それぞれのパリティストライプ1612に対応するセグメント2000に、パリティ中間値102をコピーする。(ステップ2304〜2306は、図23に示したとおりの内容であるため、説明を省略する。)
図26の処理フローでは、データ書き込み部112が、ステップ2600で、読み出した物理レコード1502と受け取ったライトデータとからパリティ中間値102を作成し、ステップ2601で作成したパリティ中間値102を制御装置1305に送る点のみが異なる。
【0083】
図27は、制御装置1305内のパリティデステージ部113の処理フローである。パリティデステージ部113は、ステップ2700で、デステージすべきパリティレコード1702があるかどうかを、セグメント管理情報2103をサーチして見つける。具体的には、更新前ビットマップ2503がオンの論理パリティストライプ1612に割り当てたセグメント管理情報2103を見つける。見つかった場合、以下の処理を実行する。
【0084】
ステップ2701でパリティデステージ部113は、パリティレコード1702の更新前の値が、キャッシュ1308に存在するかチェックする。具体的には、更新前ビットマップ2503がオンのデータレコード1700に対応する更新後ビットマップ2504がオンになっているかチェックする。存在しない場合、ステップ2708にジャンプする。存在する場合、ステップ2702以下のステップで、更新後パリティ104の作成処理に入る。ステップ2702では、パリティ中間値102と更新前パリティ103とから更新後パリティ104を作成し、キャッシュ1308、不揮発性メモリ1400のセグメント2000に格納する。ステップ2703では、対応する更新前ビットマップ2502、更新前ダーティビットマップ2504をオンにする。
【0085】
ステップ2704では、更新前ダーティビットマップ2503、更新前ビットマップ2502をオフする。ステップ2705では、更新前セグメントポインタ2500が示すセグメントを空き状態にし、更新前セグメントポインタ2500をヌルにする。
【0086】
ステップ2703〜2305の処理は、キャッシュ1308、ディレクトリ1309だけでなく、不揮発メモリ1400、不揮発メモリ管理情報1401についても、同様に実行される。
【0087】
この後、パリティデステージ部113は、ステップ2706で、更新後パリティ104をディスク装置1304に書き込むよう、要求を発行する。この要求は、データデステージ部111がディスク装置1304に更新後データ101を書き込む際の内容と同様である。具体的には、図16〜図18に示した更新後データのディスク装置への書き込み要求と同様に行われる。したがって、この要求に対しては、ディスク装置1304のデータ書き込み部112が動作する。データ書き込み部112の処理内容は、図24に示した処理フローの通りである。
【0088】
パリティステージ部113は、この後、デステージ要求の完了を待つため、一度処理を完了する。
【0089】
ディスク装置1304からの書き込み要求完了通知を受け取ると、パリティデステージ部113は再び処理を開始する。ステップ2707で、対応するセグメント管理情報2103の更新後ダーティセグメント2505をオフする。なお、マッピング情報2100を制御装置1305で管理している場合、書き込みを行った物理レコード1502にしたがって、マッピング情報2100を更新する。以上で、処理を完了する。
【0090】
一方、ステップ2701において、更新前パリティ103が、キャッシュ1308に存在しない場合、ステップ2708で、更新前データ101を格納するためのセグメント2000が割り当てられていれるかどうかをチェックし、割り当てられていない場合、セグメント2000を割り当てる。具体的には、更新後セグメントポインタ2501が割り当てたセグメント2000を示すようにする。
【0091】
次に、パリティデステージ部113は、ステップ2708で、ディスク装置1304に、更新前パリティ103に対応する物理データレコード1500から更新前データ101を読み出し、さらに、制御装置1305から受け取ったパリティ中間値102と読み出した更新前パリティ103とから更新後パリティ104を作成し、更新後パリティ104を空きレコード1503に書き込むよう要求する。この場合も、制御装置1305とディスク装置1304の機能分担によって、要求の具体的な内容が異なってくる。まず、第1に、論理ストライプと物理ストライプの変換をディスク装置1305を実行する場合である。この場合、図28に示すように、パリティデステージ部113は、読み出しと書き込みを行うパリティレコード1701を指定し、パリティ中間値102を送信する。ディスク装置1304は、該当する物理レコード1501から更新前パリティ102を読み出し、更新後パリティ104を作成し、最初に見つけた空きレコード1502に、更新後パリティ104を書き込む。
【0092】
第2に、論理ストライプ1611と物理ストライプ1612の変換を、制御装置1305が実行する場合である。この場合は、さらに、2つの方法が考えられる。まず、図29に示す方法は、制御装置1305が、更新前パリティ103が格納された物理レコード、すなわち、読み出しを行う物理レコードと、物理ストライプ1613の中のすべての空きレコード1503、すなわち、書き込みを行う1つ以上の物理レコードを通知する。ディスク装置1304は、指定された物理レコードから更新前パリティ103を読み出し、更新後パリティ104を作成し、指定された物理レコードの中で、最初に見つけた物理レコードに、作成した更新後パリティ104を書き込む。
【0093】
また、図30に示す方法では、制御装置1305が、更新後パリティ104を書き込む物理レコード1502を直接指定する。制御装置1305は、更新前パリティ103を読み出してから、更新後パリティ104を作成する時間を考慮して、作成が完了してから、最も近くにある空きレコード1503を、データを書き込むべき物理レコードとして選択する。なお、ディスク装置1304が、更新前パリティ103の読み込みと更新後パリティ104の作成を並列に実行可能な場合、制御装置1305は、読み出しを行う物理レコードの後で最も近くにある空きレコード1503を選択すればよいことになる。パリティデステージ部113は、この後、パリティ生成を含むデステージ要求の完了を待つため、一度処理を完了する。
【0094】
ディスク装置1304からのデステージ要求完了通知を受け取ると、データデステージ部113は再び処理を開始する。ステップ2710で、ディレクトリ1309、不揮発メモリ管理情報の対応するセグメント管理情報2103の更新前ダーティセグメント2503、更新前ビットマップ2502をオフする。さらに、ステップ2711で、更新前セグメントポインタ2500が示すセグメントを空き状態にし、更新前セグメントポインタ2500をヌル値にする。なお、マッピング情報2100を制御装置1305で管理している場合、書き込みを行った物理レコード1502にしたがって、マッピング情報2100を更新する。以上で、処理を完了する。
【0095】
図31は、ディスク装置1304内のパリティ書き込み部114の処理フローである。まず、ステップ3100では、制御装置1305から受け取った情報を解析する。マッピング情報2100をディスク装置1304で管理する場合は、ここで、関係する論理ストライプ1618の中から、空きレコード1503がどれかを認識する。そして、ステップ3101では、制御装置1305からパリティ中間値102を受け取る。
【0096】
ステップ3102で、読み書きヘッド1413の位置付けを実行し、ステップ3103では、読み書きヘッド1413が読み出しを行う物理レコードに位置付つくまで待つ。
【0097】
ステップ3104では、当該物理レコードを読み出し、読み出した物理レコードとパリティ中間値102とから更新後パリティ104を作成する。読み出し処理と更新後パリティ104の作成処理は、並列に実行可能である。
【0098】
ステップ3105では、パリティ書き込み部114では、最初に見つけた空きレコード、制御装置1305が指定した複数の物理レコードの中で最初に見つけた物理レコード、あるいは、制御装置1305が指定した物理レコードに、更新後パリティ104を書き込む。この後、パリティ書き込み部114は、要求の完了を制御装置1305に報告する。なお、ディスク装置1304がマッピング情報を持つ場合、完了報告を返す前に、マッピング情報2100を更新する。
【0099】
以上説明した実施例によれば、データレコードの更新に伴うパリティレコードの更新の際、パリティの作成処理の一部をディスク装置側で実施するため、制御装置の処理負荷をある程度軽減することができる。さらに、各ディスク装置は、制御装置からの書き込み要求に対して、制御装置から受け取った情報、あるいは、自らが作成した情報を、読み書きヘッドがもっとも早く位置付く空きレコードの書き込むので、制御装置から要求に対する応答時間を短くすることができる。
【0100】
なお、上述した実施例において、ディスク装置の作成した更新後パリティを制御装置に送り、制御装置内のキャッシュに格納するようにしてもよい。これにより、次の更新後パリティの作成が、制御装置で可能になり、ディスク装置から物理レコードを読みださずに、更新後パリティを書き込むことが可能になる。
【0101】
また、以上の実施例では、パリティレコード1702の更新を行う場合、制御装置1305からは、パリティ中間値102を送っている。更新前データ101がキャッシュ1308に存在する場合、パリティ中間値102の計算は、制御装置1305が実行している。制御装置1305の負荷を軽減するという観点からは、この計算をディスク装置1305に分散した方が、効果的である。図35は、このような観点からの動作概要を表している。図では、制御装置1305内のパリティデステージ部112が、ディスク装置1305内のパリティ書き込み部114に、更新前データ101と更新後データ100を送る。パリティデステージ部114では、更新前データ101と更新後データ100からパリティ中間値102を作成する。この後、記憶媒体1312から更新前パリティ103を読み出し、読み出した更新前パリティ103とパリティ中間値102とから、更新後パリティ104を生成して、記憶媒体1312に、更新後パリティ104を書き込む。もちろん、パリティ中間値102を生成せずに、更新前データ101と更新後データ100と更新前パリティ103とから、直接、更新後パリティ104を生成してもよい。
【0102】
制御装置1305とディスク装置1304の具体的なインターフェイスについては、図28〜図30に示した考え方をそのまま用いることができる。これを、図36〜図39にまとめる。図28〜図30と図36〜図39の相違は、以下のとおりである。
【0103】
(1)制御装置1305がディスク装置1304に送る情報が、パリティ中間値102から、更新前データ101と更新後データ100に代わっている。
【0104】
(2)制御装置1305からディスク装置1304へ、更新前データ101と更新後データ100の2つの情報を送る。ディスク装置1304では、更新前データ101と更新後データ100から更新後パリティ104を生成して、記憶媒体1313に書き込む。ここで、この2つの情報を別々に送信したのでは、制御装置1305とディスク装置1304の転送オーバヘッドが増加する。このため、2つの情報を一括して送信することが望ましい。また、制御装置1305がこれらの情報を送信する際、指定する情報の長さは、更新前データ101と更新後データ100を合わせた長さ、あるいは、ディスク装置1305に書き込む更新後パリティ104の長さ(更新前データ101、更新後データ100単独の長さ)とすることができる。なお、パリティレコード1702の更新を行う際に、制御装置1304が、パリティレコード1702を格納したディスク装置1305に更新前データ101と更新後データ100を送るという方式は、図39に示すような場合にも適用できる。具体的には、更新前パリティ103を読み出した物理レコード1502に更新後パリティ104を必ず書き込むという場合、すなわち、パリティレコード1702を常に同じ物理レコード1502に格納する場合にである。この場合の効果は、制御装置1305の負荷を軽減するということである。
【0105】
次に第2の実施例を説明する。図32は、第2の実施例における計算機システムの構成を示すブロック図である。第1の実施例における計算機システムとの構成上の相違は、処理装置1300に直接ディスク装置1304が接続されている点にある。本実施例では、キャッシュ1308、ディレクトリ1304は、処理装置1300の主記憶1302上に実現される。処理装置1300の主記憶1302は、不揮発化されていても、いなくてもかまわない。処理装置1300上では、応用プログラム300と管理プログラム301が実行される。キャッシュ1308、ディレクトリ1309、および、パリティグループ等の管理機能は、管理プログラム301がもつ。また、本実施例では、データレコード1700を、応用プログラム300が直接リード/ライトするレコードことになる。すなわち、本実施例においては、応用プログラム300が、第1の実施例における図2の処理装置1300に、管理プログラム301が同じく図2の制御装置1305に相当すると考えることができる。したがって、図1において、制御装置1305内に設けられる各機能を実現する構成要素は、管理プログラム301内に設けられることになる。このため、管理プログラム301内に実現されている各構成要素の機能については、ここでは、説明を省略する。また、詳細な内容についても、第1の実施例で説明した内容をそのまま適用できるため、説明を省略する。
【0106】
以上説明した第1、第2の実施例では、m個のデータレコード1700に対し、n個のパリティレコード1702を作成する場合について述べた。しかし、本発明は、パリティレコード1702がない場合についても有効である。この場合、論理ストライプグループ1617と物理ストライプグループの関係は、図33に示すようになる。この時には、データレコードライト部111は、更新後データ100をディスク装置1304に書き込むよう要求することになる。ディスク装置1304側では、更新前データ101が格納されている物理データレコード1500か、当該物理データストライプ1615の中の空きレコード1503の中で、最初位置ついた物理レコード1502に更新後データを書き込む。これにより、ディスク装置1304のアクセス時間を短縮することができる。制御装置1305とディスク装置の間のインターフェイスについては、図17〜図18に示したいずれかに準じればよい。
【0107】
一方、図34のように、1つのデータレコード1700を2つ以上の物理レコード1502に書き込む場合も、本発明は有効である。図34は、この場合の論理ストライプグループ1617と物理ストライプグループの関係を示してある。この場合も、ディスク装置1304側では、更新前データ101が格納されている物理データレコード1500か、当該物理データストライプ1615の中の空きレコード1503の中で、最初位置ついた物理レコード1502に更新後データを書き込む。これにより、ディスク装置1304のアクセス時間を短縮することができる。制御装置1305とディスク装置の間のインターフェイスについても、図17〜図18に示したいずれかを用いればよい。
【0108】
【発明の効果】
本発明では、ディスクアレイにおけるライト処理を高速化するため、(1)ディスク装置の記憶媒体上に適当な比率で空き領域を設け、(2)ディスク装置側に、データの読み書き、冗長データの作成を一括して実行する機能をもたせる。ディスクアレイにおいては、処理装置からライト要求を受け付けると、受け付けたデータの書き込みだけでなく、新たな冗長データの作成、および、この冗長データのディスク書き込みが発生する。新たな冗長データの作成のためには、旧いデータと冗長データが必要であり、これらをディスク装置から読み出す。つまり、合計で4回のディスクアクセスが必要である。一方、本発明を適用すると、データの場合、旧いデータの読み出しと新しいデータの書き込みがほとんど1回のディスクアクセス程度の時間で実行できる。同様に、古い冗長データの読み出しと新しい冗長データの書き込みがほとんど1回のディスクアクセス程度の時間で実行できる。したがって、本発明によりライト処理によるディスクアクセス数を半分程度に抑えることができる。
【図面の簡単な説明】
【図1】第1の実施例の記憶装置サブシステムの概要を表す機能ブロック図である。
【図2】第1の実施例の計算機システムの構成を示すブロック図である。
【図3】第1の実施例におけるレコードの考え方説明するための概念図である。
【図4】第1の実施例におけるパリティグループの考え方を説明するための概念図である。
【図5】パリティグループについての他の考え方を説明するための概念図である。
【図6】キャッシュメモリの構造図である。
【図7】ディレクトリの構造図である。
【図8】マッピング情報の構造図である。
【図9】空きレコードビットマップの構造図である。
【図10】キャッシュ割当情報の構造図である。
【図11】セグメント管理情報の構成図である。
【図12】空きセグメントキューと空きセグメント管理情報キューの構造図である。
【図13】ディスク装置内に設けられるバッファの構造図である。
【図14】ライト要求受付部の処理フロー図である。
【図15】データデステージ部の処理フロー図である。
【図16】ディスク装置にマッピング機能を割り当てた場合における更新後データ書き込み時の制御装置とディスク装置の機能分担を説明する概念図である。
【図17】制御装置にマッピング機能を割り当てた場合における更新後データ書き込み時の制御装置とディスク装置の機能分担を説明する概念図である。
【図18】制御装置にマッピング機能を割り当てた場合における更新後データ書き込み時の制御装置とディスク装置の機能分担を説明する概念図である。
【図19】ディスク装置にマッピング機能を割り当てた場合における更新前データ読み出し、及び更新後データ書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図20】制御装置にマッピング機能を割り当てた場合における更新前データ読み出し、及び更新後データ書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図21】制御装置にマッピング機能を割り当てた場合における更新前データ読み出し、及び更新後データ書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図22】制御装置にマッピング機能を割り当てた場合における更新前データ読み出し、及び更新後データ書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図23】パリティ中間値作成ルーチンの処理フロー図である。
【図24】データ書き込み部の処理フロー図である。
【図25】パリティ中間値をディスク装置で作成した場合のデータデステージ部の処理フロー図である。
【図26】パリティ中間値をディスク装置で作成した場合のデータ書き込み部の処理フロー図である。
【図27】パリティデステージ部の処理フロー図である。
【図28】ディスク装置にマッピング機能を割り当てた場合における更新前パリティ読み出し、更新後パリティ作成、及び書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図29】制御装置にマッピング機能を割り当てた場合における更新前パリティ読み出し、更新後パリティ作成、及び書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図30】制御装置にマッピング機能を割り当てた場合における更新前パリティ読み出し、更新後パリティ作成、及び書き込みの際の制御装置とディスク装置の機能分担を説明する概念図である。
【図31】パリティ書き込み部の処理フロー図である。
【図32】第2の実施例の計算機システムの構成を示すブロック図である。
【図33】パリティレコードがない場合のストライプの構成を説明するための概念図である。
【図34】データレコードを2つ以上の物理レコードに書き込んだ場合のストライプの構成を説明するための概念図である。
【図35】記憶装置サブシステムの他の機能構成を表す機能ブロック図である。
【図36】図37に示す機能構成において、ディスク装置にマッピング機能を割り当てた場合の更新前パリティ読み出し、更新後パリティ作成、及び書き込み実行時の制御装置とディスク装置の機能分担を説明する概念図である。
【図37】図37に示す機能構成において、制御装置にマッピング機能を割り当てた場合の更新前パリティ読み出し、更新後パリティ作成、及び書き込みの実行時の制御装置とディスク装置の機能分担を説明する概念図である。
【図38】図37に示す機能構成において、制御装置にマッピング機能を割り当てた場合の更新前パリティ読み出し、更新後パリティ作成、及び書き込みの実行時の制御装置とディスク装置の機能分担を説明する概念図である。
【図39】制御装置1305が、ディスク装置1304に更新後データ100と更新前データを送り、ディスク装置1304が、パリティレコード1702を常に同じ物理レコード1502に格納する場合の処理概念図である。
【符号の説明】
1300・・・処理装置、1304・・・ディスク装置、1305・・・制御装置、1308・・・キャッシュメモリ、1309・・・ディレクトリ、1310・・・ディスクアレイ制御プロセッサ、1311・・・ディスク制御プロセッサ、1312・・・記憶媒体。
Claims (12)
- 複数台の記憶装置と、該複数台の記憶装置の制御を行う制御装置とを備え、m個(m≧1)の通常データと前記通常データを回復するための n 個( n ≧1)の冗長データによりデータグループを構成し、該データグループ内の通常データ及び冗長データをそれぞれ異なる記憶装置の記憶媒体上にレコードを格納単位として記憶する記憶装置システムであって、
記憶装置上のレコードが取り得る状態には、通常データ若しくは冗長データが格納されている状態と、通常データおよび冗長データのいずれもが格納されていない空き状態とがあり、
前記制御装置は、
処理装置からのライト要求に従って更新後通常データを受信する手段と、
前記更新後通常データと同じデータグループに属する更新後冗長データを作成するために用いられる中間データを作成する手段と、
前記中間データと、前記更新後冗長データを作成するために用いられる更新前冗長データが格納されているレコードのアドレスを、前記更新後冗長データを格納する記憶装置に送信する手段とを有し、
前記複数台の記憶装置は各々、
該記憶装置上のレコードの状態を示す情報と、
前記制御装置から受信した前記更新前冗長データが格納されているレコードのアドレスから該更新前冗長データを読み出す手段と、
読み出された前記更新前冗長データと前記制御装置から受信した前記中間データとから、前記更新後冗長データを作成する手段と、
該記憶装置が最初に見つけた空き状態のレコードに前記更新後冗長データを書き込む手段とを有することを特徴とする記憶装置システム。 - 請求項1記載の記憶装置システムであって、
前記制御装置は更に、
前記更新後通常データを該更新後通常データを格納する記憶装置に送信する手段を有し、
前記複数台の記憶装置の各々は更に、
前記制御装置から受信した前記更新後通常データを書き込む該記憶装置上のレコードを決定する手段を有することを特徴とする記憶装置システム。 - 請求項2記載の記憶装置システムであって、
前記制御装置は更に、
キャッシュメモリと、
前記キャッシュメモリに前記更新後通常データによって更新される更新前通常データが存在するかを確認する手段と、
前記キャッシュメモリに前記更新前通常データが存在しない場合に、該更新前通常データを格納している記憶装置に該更新前通常データの送信を要求する手段とを有し、
前記中間データを作成する手段は、前記更新前通常データと前記更新後通常データとから、前記中間データを作成し、
前記複数台の記憶装置は各々、
前記制御装置からの要求に従って、前記更新前通常データを読み出してこれを前記制御装置に送信する手段を有することを特徴とする記憶装置システム。 - 請求項3記載の記憶装置システムであって、
前記制御装置は更に、
前記キャッシュメモリに前記更新前冗長データが存在するかを確認する手段と、
前記キャッシュメモリに前記更新前冗長データが存在する場合に、該更新前冗長データと前記中間データを用いて更新後冗長データを作成する手段と、
作成された前記更新後冗長データを、該更新後冗長データを格納する記憶装置に送信する手段を有し、
前記複数台の記憶装置の各々は更に、
前記制御装置から受信した前記更新後冗長データを書き込む該記憶装置上のレコードを決定する手段を有することを特徴とする記憶装置システム。 - 複数台の記憶装置と、該複数台の記憶装置の制御を行う制御装置とを備え、m個(m≧1)の通常データと前記通常データを回復するための n 個( n ≧1)の冗長データによりデータグループを構成し、該データグループ内の前記通常データ及び前記冗長データをそれぞれ異なる記憶装置の記憶媒体上にレコードを格納単位として記憶する記憶装置システムであって、
記憶装置上のレコードが取り得る状態には、通常データ若しくは冗長データが格納されている状態と、通常データおよび冗長データのいずれもが格納されていない空き状態とがあり、
前記制御装置は、
記憶装置上のレコードの状態を示す情報と、
処理装置からのライト要求に従って更新後通常データを受信する手段と、
前記更新後通常データと同じデータグループに属する更新後冗長データを作成するための中間データを作成する手段と、
前記中間データ、前記更新後冗長データを作成するために用いられる更新前冗長データが格納されているレコードのアドレス、及び前記更新後冗長データを書き込むべきレコードの候補として少なくとも一の空き状態のレコードのアドレスを、前記更新後冗長データを格納する記憶装置に送信する手段とを有し、
前記複数台の記憶装置は各々、
前記制御装置から受信した前記更新前冗長データが格納されているレコードのアドレスから該更新前冗長データを読み出す手段と、
読み出された前記更新前冗長データと前記制御装置から受信した前記中間データとから、前記更新後冗長データを作成する手段と、
前記制御装置から通知された、空き状態のレコード及び前記更新前冗長データが格納されているレコードの中から、最初に見つけたレコードに前記更新後冗長データを書き込む手段とを有することを特徴とする記憶装置システム。 - 請求5記載の記憶装置システムであって、
前記制御装置は更に、
前記更新後通常データと、該更新後通常データを書き込むべきレコードの候補として少なくとも一の空き状態のレコードのアドレス及び前記更新後通常データによって更新される更新前通常データを格納しているレコードのアドレスを、該更新後通常データを格納する記憶装置に送信する手段を有し、
前記複数台の記憶装置の各々は更に、
前記制御装置から指定されたレコードの候補から、最初に見つけたレコードに前記更新後通常データを書き込む手段を有することを特徴とする記憶装置システム。 - 請求項6記載の記憶装置システムであって、
前記制御装置は更に、
キャッシュメモリと、
前記キャッシュメモリに前記更新前通常データが存在するかを確認する手段と、
前記キャッシュメモリに前記更新前通常データが存在しない場合に、該更新前通常データを格納している記憶装置に該更新前通常データを送信するよう要求する手段とを有し、
前記中間データを作成する手段は、前記更新後通常データと前記更新前通常データとから前記中間データを作成し、
前記複数台の記憶装置は各々更に、
前記制御装置からの要求に基づいて、前記更新前通常データを前記制御装置に送信する手段を有することを特徴とする記憶装置システム。 - 請求項7記載の記憶装置システムであって、
前記制御装置は更に、
前記キャッシュメモリに、前記更新前冗長データが存在するかを確認する手段と、
前記キャッシュメモリに前記更新前冗長データが存在する場合に、該更新前冗長データと前記中間データを用いて更新後冗長データを作成する手段と、
作成された前記更新後冗長データと、該更新後冗長データを書き込むべきレコードの候補として少なくとも一の空き状態のレコードのアドレス及び前記更新前冗長データを格納しているレコードのアドレスを、該更新後冗長データを格納する記憶装置に送信する手段を有し、
前記複数台の記憶装置の各々は更に、
前記制御装置から指定されたレコードの候補から、最初に見つけたレコードに前記更新後冗長データを書き込む手段を有することを特徴とする記憶装置システム。 - 複数台の記憶装置と、該複数台の記憶装置の制御を行う制御装置とを備え、m個(m≧1)の通常データと前記通常データを回復するための n 個( n ≧1)の冗長データによりデータグループを構成し、該データグループ内の前記通常データ及び前記冗長データをそれぞれ異なる記憶装置の記憶媒体上にレコードを格納単位として記憶する記憶装置システムであって、
記憶装置上のレコードが取り得る状態には、通常データ若しくは冗長データが格納されている状態と、通常データおよび冗長データのいずれもが格納されていない空き状態とがあり、
前記制御装置は、
記憶装置上のレコードの状態を示す情報と、
処理装置からのライト要求に従って更新後通常データを受信する手段と、
前記更新後通常データと同じデータグループに属する更新後冗長データを作成するために用いられる中間データを作成する手段と、
前記更新後冗長データを記憶装置が作成するのに要する時間を考慮して、該更新後冗長データを格納する空き状態のレコードを決定する手段と、
前記中間データ、前記更新後冗長データを作成するために用いられる更新前冗長データが格納されているレコードのアドレス、及び前記更新後冗長データを書き込むべきレコードのアドレスを、前記更新後冗長データを格納する記憶装置に送信する手段とを有し、
前記複数台の記憶装置は各々、
前記制御装置から受信した前記更新前冗長データが格納されているレコードのアドレスから該更新前冗長データを読み出す手段と、
読み出された前記更新前冗長データと前記制御装置から受信した前記中間データとから、前記更新後冗長データを作成する手段と、
前記制御装置から通知された、前記更新後冗長データを書き込むべきレコードに、作成した前記更新後冗長データを書き込む手段を有することを特徴とする記憶装置システム。 - 請求項9記載の記憶装置システムであって、
前記制御装置は更に、
記憶装置から受信した読み書きヘッドの位置に基づいて、前記更新後通常データを格納すべきレコードを決定する手段と、
前記更新後通常データと、決定された該更新後通常データを格納すべきレコードのアド レスとを、該更新後通常データを格納する記憶装置に送信する手段を有し、
前記複数台の記憶装置の各々は更に、
該記憶装置の読み書きヘッドの位置を前記制御装置に通知する手段と、
前記制御装置から指定されたレコードに、前記更新後通常データを書き込む手段を有することを特徴とする記憶装置システム。 - 請求項10記載の記憶装置システムであって、
前記制御装置は更に、
キャッシュメモリと、
前記キャッシュメモリに前記更新後通常データによって更新される更新前通常データが存在するかを確認する手段と、
前記キャッシュメモリに前記更新前通常データが存在しない場合に、該更新前通常データを格納している記憶装置に、該更新前通常データを送信するよう要求する手段とを有し、
前記中間データを作成する手段は、前記更新後通常データと前記更新前通常データとから前記中間データを作成し、
前記複数台の記憶装置各々は更に、
前記制御装置からの要求に従って、前記更新前通常データを前記制御装置に送信する手段を有することを特徴とする記憶装置システム。 - 請求項11記載の記憶装置システムであって、
前記制御装置は更に、
前記キャッシュメモリに前記更新前冗長データが存在するかを確認する手段と、
前記キャッシュメモリに前記更新前冗長データが存在する場合に、該更新前冗長データと前記中間データを用いて更新後冗長データを作成する手段と、
記憶装置から受信した記憶装置の読み書きヘッドの位置に基づいて、前記更新後冗長データを格納すべきレコードを決定する手段と、
作成された前記更新後冗長データと、決定された該更新後冗長データを格納すべきレコードのアドレスとを、該更新後冗長データを格納する記憶装置に送信する手段を有し、
前記複数の記憶装置の各々は更に、
前記制御装置から指定されたレコードに、前記更新後冗長データを書き込む手段を有することを特徴とする記憶装置システム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04094596A JP3713788B2 (ja) | 1996-02-28 | 1996-02-28 | 記憶装置および記憶装置システム |
US08/797,606 US5958078A (en) | 1996-02-28 | 1997-02-07 | Storage unit and storage unit subsystem |
US09/327,158 US6098191A (en) | 1996-02-28 | 1999-06-03 | Storage unit and storage unit subsystem |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04094596A JP3713788B2 (ja) | 1996-02-28 | 1996-02-28 | 記憶装置および記憶装置システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09231015A JPH09231015A (ja) | 1997-09-05 |
JP3713788B2 true JP3713788B2 (ja) | 2005-11-09 |
Family
ID=12594655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP04094596A Expired - Fee Related JP3713788B2 (ja) | 1996-02-28 | 1996-02-28 | 記憶装置および記憶装置システム |
Country Status (2)
Country | Link |
---|---|
US (2) | US5958078A (ja) |
JP (1) | JP3713788B2 (ja) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6874101B2 (en) * | 1991-01-31 | 2005-03-29 | Hitachi, Ltd. | Storage unit subsystem |
US6115788A (en) * | 1998-02-20 | 2000-09-05 | Seagate Technology, Inc. | Multi-drive array with improved data transfer rate performance |
US6151685A (en) * | 1998-05-15 | 2000-11-21 | International Business Machines Corporation | System and method for recovering a segment directory for a log structured array |
US6754661B1 (en) * | 1999-07-13 | 2004-06-22 | Microsoft Corporation | Hierarchical storage systems for holding evidentiary objects and methods of creating and operating upon hierarchical storage systems |
JP3951547B2 (ja) * | 2000-03-24 | 2007-08-01 | 株式会社日立製作所 | レプリケーションによるホスト間データ共有方式 |
US6619545B2 (en) | 2002-01-15 | 2003-09-16 | International Business Machines Corporation | Kiosk having a people presence detector to determine if a kiosk item is to be presented to a customer |
US6826656B2 (en) | 2002-01-28 | 2004-11-30 | International Business Machines Corporation | Reducing power in a snooping cache based multiprocessor environment |
US7007220B2 (en) * | 2002-03-01 | 2006-02-28 | Broadlogic Network Technologies, Inc. | Error correction coding across multiple channels in content distribution systems |
US7118622B2 (en) * | 2004-05-19 | 2006-10-10 | Engelhard Corporation | Organic dyes suitable for use in drugs and cosmetics laked onto a platy titanium dioxide pigment |
US7467281B2 (en) * | 2004-06-10 | 2008-12-16 | Intel Corporation | Mapping data blocks to storage blocks to wrap around storage devices |
US7318190B2 (en) * | 2004-06-10 | 2008-01-08 | Intel Corporation | Storage device parity computation |
KR100827677B1 (ko) * | 2006-06-20 | 2008-05-07 | 한국과학기술원 | 행렬 스트라이프 캐쉬를 이용한 raid 시스템의 입출력성능 향상 방법 |
US8583865B1 (en) * | 2007-12-21 | 2013-11-12 | Emc Corporation | Caching with flash-based memory |
US8245111B2 (en) * | 2008-12-09 | 2012-08-14 | Intel Corporation | Performing multi-bit error correction on a cache line |
US8850114B2 (en) | 2010-09-07 | 2014-09-30 | Daniel L Rosenband | Storage array controller for flash-based storage devices |
US8984374B2 (en) | 2012-04-27 | 2015-03-17 | Hitachi, Ltd. | Storage system and storage control apparatus |
US9684591B2 (en) * | 2012-04-27 | 2017-06-20 | Hitachi, Ltd. | Storage system and storage apparatus |
JP6039699B2 (ja) | 2012-07-23 | 2016-12-07 | 株式会社日立製作所 | ストレージシステム及びデータ管理方法 |
US9569303B2 (en) * | 2014-08-08 | 2017-02-14 | Kabushiki Kaisha Toshiba | Information processing apparatus |
JP6328335B2 (ja) | 2015-06-01 | 2018-05-23 | 株式会社日立製作所 | ストレージ装置及びその制御方法 |
US10521152B2 (en) * | 2016-11-07 | 2019-12-31 | Samsung Electronics Co., Ltd. | Storage device storing data in raid manner |
BR112017020736B8 (pt) | 2016-11-25 | 2021-08-17 | Huawei Tech Co Ltd | método de verificação de dados e sistema de armazenamento |
CN109725824A (zh) * | 2017-10-27 | 2019-05-07 | 伊姆西Ip控股有限责任公司 | 用于向存储系统中的盘阵列写入数据的方法和设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US34100A (en) * | 1862-01-07 | Improved step-ladder | ||
JP2783369B2 (ja) * | 1989-12-22 | 1998-08-06 | シーゲイト テクノロジー インターナショナル | 並列伝送装置に於ける読み込み失敗チャンネルのデータ再生復元方法並びに装置 |
US5375128A (en) * | 1990-10-18 | 1994-12-20 | Ibm Corporation (International Business Machines Corporation) | Fast updating of DASD arrays using selective shadow writing of parity and data blocks, tracks, or cylinders |
JPH04245342A (ja) * | 1991-01-30 | 1992-09-01 | Toshiba Corp | 分散型データベースシステム |
JP2913917B2 (ja) * | 1991-08-20 | 1999-06-28 | 株式会社日立製作所 | 記憶装置および記憶装置システム |
US5729397A (en) * | 1992-12-31 | 1998-03-17 | International Business Machines Corporation | System and method for recording direct access storage device operating statistics |
US5689678A (en) * | 1993-03-11 | 1997-11-18 | Emc Corporation | Distributed storage array system having a plurality of modular control units |
JP3687111B2 (ja) * | 1994-08-18 | 2005-08-24 | 株式会社日立製作所 | 記憶装置システムおよび記憶装置の制御方法 |
-
1996
- 1996-02-28 JP JP04094596A patent/JP3713788B2/ja not_active Expired - Fee Related
-
1997
- 1997-02-07 US US08/797,606 patent/US5958078A/en not_active Expired - Fee Related
-
1999
- 1999-06-03 US US09/327,158 patent/US6098191A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5958078A (en) | 1999-09-28 |
US6098191A (en) | 2000-08-01 |
JPH09231015A (ja) | 1997-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3713788B2 (ja) | 記憶装置および記憶装置システム | |
US5579474A (en) | Disk array system and its control method | |
JP2501752B2 (ja) | コンピユ―タ・システムのストレ―ジ装置及びデ―タのストア方法 | |
JP3176157B2 (ja) | ディスクアレイ装置及びそのデータ更新方法 | |
US6912669B2 (en) | Method and apparatus for maintaining cache coherency in a storage system | |
US6381674B2 (en) | Method and apparatus for providing centralized intelligent cache between multiple data controlling elements | |
US5802345A (en) | Computer system with a reduced number of command end interrupts from auxiliary memory unit and method of reducing the number of command end interrupts | |
EP0768599B1 (en) | On-line disk array reconfiguration | |
US7600152B2 (en) | Configuring cache memory from a storage controller | |
US7032070B2 (en) | Method for partial data reallocation in a storage system | |
US6886075B2 (en) | Memory device system and method for copying data in memory device system | |
US20010049774A1 (en) | Apparatus system and method for n-way raid controller having improved performance and fault tolerance | |
JP2004213064A (ja) | Raid装置及びその論理デバイス拡張方法 | |
CN111857540B (zh) | 数据存取方法、装置和计算机程序产品 | |
JPH0863298A (ja) | ディスクアレイ装置 | |
JP3400328B2 (ja) | データ記憶方法およびデータ記憶装置 | |
JP2003131818A (ja) | クラスタ構成ストレージにおけるクラスタ間raid構成 | |
JP3687111B2 (ja) | 記憶装置システムおよび記憶装置の制御方法 | |
JPH07200187A (ja) | ディスクアレイ装置 | |
JP4708669B2 (ja) | パス冗長化装置及び方法 | |
JP3793544B2 (ja) | ディスクアレイ装置及びその制御方法 | |
JPH10312246A (ja) | 記憶装置サブシステム | |
Gibson et al. | RAIDframe: Rapid prototyping for disk arrays | |
JPH09265435A (ja) | 記憶装置システム | |
JPH10269695A (ja) | コンピュータシステムにおける記憶装置の制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040818 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040907 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041102 |
|
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: 20050802 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050815 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080902 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090902 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090902 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100902 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110902 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120902 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130902 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |