JP5744244B2 - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
JP5744244B2
JP5744244B2 JP2013558848A JP2013558848A JP5744244B2 JP 5744244 B2 JP5744244 B2 JP 5744244B2 JP 2013558848 A JP2013558848 A JP 2013558848A JP 2013558848 A JP2013558848 A JP 2013558848A JP 5744244 B2 JP5744244 B2 JP 5744244B2
Authority
JP
Japan
Prior art keywords
stripe
data
redundant data
storage system
drive
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013558848A
Other languages
English (en)
Other versions
JP2014521130A (ja
Inventor
弘明 圷
弘明 圷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2014521130A publication Critical patent/JP2014521130A/ja
Application granted granted Critical
Publication of JP5744244B2 publication Critical patent/JP5744244B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

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

Description

本発明は、複数のドライブを冗長化されたデータの記憶領域として管理するストレージシステムに関する。
複数のHDDやSSDなどで記憶領域が構成されるディスクアレイシステムが、メインフレームやオープン系サーバのサブシステムとして利用されている。このようなシステムでは、ドライブに障害が発生してもデータロストしないように、RAID環境の構築をサポートする。
例えば4台のドライブでRAID5を構築する場合、3つのストライプデータD1からパリティP1を生成し、これらを4台のドライブに分散して格納する。そして、次の3つのストライプデータD2からパリティP2を生成し、これらを4台のドライブに分散して格納するが、パリティが一つのドライブに集中しないようにP2はP1と異なるドライブに格納される。この例であれば1台のドライブに障害が発生してもデータを回復できる。しかし、2台以上のドライブに障害(二重障害)が発生した場合には対応できない。一方、RAID6は2つのパリティを生成する。この場合は二重障害に対応できる。
また、RAID5では、データ更新時にパリティを生成するためにドライブから更新前のデータとパリティを取得する。このアクセスに伴うディスク回転待ちを回避するため、特許文献1には、RAID5のパリティをディスクI/Oとは非同期で生成する技術が開示されている。
US5720025号公報
上述のとおり、RAID環境の構築をサポートするストレージシステムでは、ユーザデータに冗長データを付加して障害耐性を確保している。ここで、冗長データとはパリティデータを、RAID1ではミラーデータを意味する。ユーザデータに対し冗長データのオーバーヘッドが小さいこと、RAID3やRAID4のようにパリティ専用ドライブのボトルネックがないことからRAID5をサポートするストレージシステムが多い。
しかし、RAID5では二重障害に対応できない。近年ドライブが大容量化しているが、これに伴い、ドライブに障害が発生した場合、その障害回復に要する時間も増加する。障害回復時間が増加すると二重障害発生のリスクも増える。障害耐性を高めるにはRAID6でストレージシステムを構築することが考えられる。
しかし、RAID6では、更新前のデータと2つのパリティをドライブから読込んで新たな2つのパリティを生成し、更新後のデータと生成した2つのパリティとをドライブに書き込むため、更新データをドライブに反映するのに6回ドライブにアクセスする必要がある。(以下、このドライブアクセス時間の長大化をライトペナルティと呼ぶ。)
そこで、本発明では、冗長化されたディスク構成をサポートするストレージシステムにおいて、障害耐性を確保する一方で、データ更新に伴い発生する冗長データの更新をドライブに反映する際に、ドライブアクセス時間が長くなり、I/Oのスループットが低下するのを防止する。
前記目的を達成するために、本発明の一実施例では、ストレージシステムにおいて、論理ボリュームのストライプデータの更新に対応して、ディスクドライブの対応するデータストライプのストライプデータと第1の冗長データとを更新する。そして、そのストライプデータの更新とは異なるタイミングで、更新されたストライプデータと同じストライプ列に属する所定数のストライプデータに基づき、第2の冗長データを更新する。
また、別の一実施例では、ストレージシステムにおいて、第2の冗長データの更新をストライプデータの更新と非同期で行うことが可能なモードを論理ボリュームに対して設定できるようにする。
更に、別の一実施例では、ストレージシステムにおいて、論理ボリュームの更新された領域に対するアクセス頻度に応じて、更新されたストライプデータと同じストライプ列に属する第2の冗長データの更新をストライプデータの更新と同期又は非同期で行うかを選択する。
本発明の他の特徴は後述の実施例で説明される。ただし、本発明の範囲を実施例に限定する意図ではない。
本発明によれば、冗長化されたディスク構成をサポートするストレージシステムにおいて、障害耐性を確保する一方で、データ更新に伴い発生する冗長データの更新をドライブに反映する際に、ドライブアクセス時間が長くなり(ドライブ稼働率が上昇)、I/Oのスループットが低下するのを防止することができる。
本発明の第一実施例に係る計算機システムの構成図である。 本発明の第一実施例に係る計算機システムの論理構成図である。 本発明の第一実施例に係る計算機システムの記憶領域の構成図である。 本発明の第一実施例に係る計算機システムの共有メモリの構成図である。 本発明の第一実施例に係る計算機システムのローカルメモリの構成図である。 本発明の第一実施例に係る計算機システムの論理物理アドレス変換テーブルの構成図である。 本発明の第一実施例に係る計算機システムの非同期中ビットマップの構成図である。 本発明の第一実施例に係る計算機システムの非同期中領域数カウンタテーブルの構成図である。 本発明の第一実施例に係る計算機システムのリビルド済みビットマップの構成図である。 本発明の第一実施例に係る計算機システムのアクセス頻度テーブルの構成図である。 本発明の第一実施例に係る計算機システムの設定テーブルの構成図である。 本発明の第一実施例に係る計算機システムのI/O処理プログラムの処理を説明するためのフローチャートである。 デステージ処理プログラムの処理を説明するためのフローチャートである。 リビルド処理プログラムの処理を説明するためのフローチャートである。 リビルド処理プログラムの処理を説明するためのフローチャートである。 ドライブコピー処理プログラムの処理を説明するためのフローチャートである。 ホストI/O処理プログラムのサブプログラムである、通常リード処理を説明するためのフローチャートである。 ホストI/O処理プログラムのサブプログラムである、コレクションリード処理を説明するためのフローチャートである。 ホストI/O処理プログラムのサブプログラムである、通常ライト処理を説明するためのフローチャートである。 ホストI/O処理プログラムのサブプログラムである、コレクションライト処理を説明するためのフローチャートである。 ホストI/O処理プログラムのサブプログラムである、高速ライト処理を説明するためのフローチャートである。 ホストI/O処理プログラムのサブプログラムである、非同期冗長データ生成判定処理を説明するためのフローチャートである。 ホストI/O処理プログラムのサブプログラムである、非同期冗長データ生成判定処理を説明するためのフローチャートである。 ドライブコピー処理プログラムのサブプログラムである、通常コピー処理を説明するためのフローチャートである。 ホストI/O処理プログラムのサブプログラムである、コレクションコピー処理を説明するためのフローチャートである。 リビルド処理プログラムのサブプログラムである、非同期冗長データコレクション処理を説明するためのフローチャートである。 論理ボリューム毎のパラメタの設定のためのGUIを表わす画面構成図である。 本発明の効果を説明するための説明図である。 リビルド処理実行制御プログラムの処理を説明するためのフローチャートである。 本発明の第二実施例に係る計算機システムの論理構成図である。
以下、本発明の実施例を図面に基づいて説明する。尚、以下に説明する実施例は、特許請求の範囲に係る発明を限定するものではなく、また、実施例の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
(第1実施例)
本実施例は、ドライブの正常時には、ホストI/Oに同期してパリティ生成を実施することなく、ホストI/Oとは非同期でパリティ生成を実施し、ドライブの障害時には、ホストI/Oに同期してパリティ生成を実施すると共に、障害ドライブのデータを復元するものである。
図1は、本発明の第1実施例に係る計算機システムの構成図である。
図1において、計算機システムは、ホスト101と、管理サーバ102と、ネットワーク103と、ストレージシステム104から構成される。ストレージシステム104は、ポート106と、保守I/F(Interface)107と、複数のプロセッサパッケージ109A、109Bと、キャッシュメモリ110と、共有メモリ111と、複数のドライブ113から構成される。
ホスト101は、CPU(Central Processing Unit)、メモリ、入出力インタフェース等の情報処理資源を備えたコンピュータ装置であり、例えば、サーバ、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成され、ネットワーク103を介して、ストレージシステム104のポート106に接続される。ホスト101は、ストレージシステム104に対して、データのリード命令やライト命令を発行し、ストレージシステム104は、ホスト101から発行されたリード命令又はライト命令に応じてデータの読み込み又は書き込みを実行する。
即ち、ホスト101は、ストレージシステム104から提供される論理ボリュームを指定したアクセス命令(アクセス要求)、例えば、リード命令又はライト命令をストレージシステム104に発行することで、その論理ボリュームにアクセスすることができる。
ネットワーク103は、例えば、SAN(Storage Area Network)や、イーサネット(登録商標)などから構成される。
管理サーバ102は、CPU、メモリ、入出力インタフェース等の情報処理資源を備えたコンピュータ装置で構成され、ネットワーク103を介して、ストレージシステム104の保守I/F107またはポート106に接続される。管理サーバ102は、ストレージ管理者の操作を基に、ストレージシステム104を運用する上で必要な各種設定情報や管理のための命令をストレージシステム104に送信する。
次に、ストレージシステム104の内部構成について説明する。
ストレージシステム104は、ポート106と、保守I/F107と、複数のプロセッサパッケージ109A、109Bと、キャッシュメモリ110と、共有メモリ111と、複数のドライブ113から構成され、これらが、内部ネットワーク112を介して相互に接続され、ポート106と、保守I/F107がネットワーク103に接続される。各プロセッサパッケージ109A、109Bには、ローカルメモリ118と、プロセッサ119が収納される。
プロセッサ119は、ストレージシステム104全体を統括制御するプロセッサであって、ホスト101からのリード命令やライト命令を処理するために、ドライブ113とキャッシュメモリ110間のデータの転送処理などを実行する。
ローカルメモリ118は、プロセッサ119がリード命令やライト命令を処理するための情報や、ストレージシステム104の機能を実行する上で、必要な制御用の情報を格納するメモリであって、プロセッサ119が占有して使用できる領域である。ローカルメモリ118には、例えば、プロセッサ119が実行する各種プログラム等が格納される。
キャッシュメモリ110は、ストレージシステム104のI/O処理のスループットやレスポンスを向上させるために、データを一時的なキャッシュデータとして格納するためのメモリであって、高速アクセスが可能なメモリである。
共有メモリ111は、プロセッサ119がリード命令やライト命令を処理するための情報や、ストレージシステム104の機能(例えば、ボリュームのコピー機能など)を実行する上で、必要な制御用の情報を格納するメモリである。この共有メモリ111には、複数のプロセッサパッケージ109A、Bのプロセッサ119間で共有している情報も格納される。図では、共有メモリ111はキャッシュメモリ110とは別のメモリとして記載されているが、キャッシュメモリ110の一部の領域を共有メモリ111として使用してもよい。
各ドライブ113は、例えば、FC(Fibre Channel)、SAS(Serial Attached SCSI)、SATA(Serial Advanced Technology Attachment)などのインタフェースを有する記憶デバイスであって、ハードディスクドライブ(HDD)や、SSD(Solid State Drive)などから構成される。
記憶デバイスとしては、例えば、ハードディスクデバイス、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス、磁気テープデバイス、フレキシブルディスクデバイス等が挙げられ、これらの記憶デバイスは、データを読み書き可能なデバイスである。
また、各ドライブ113でRAID(Redundant Array of Inexpensive Disks)グループ、例えば、RAID4、RAID5、RAID6等を構成したり、各ドライブ113を複数のRAIDグループに分割したりすることもできる。この際、各ドライブ113の物理的記憶領域上に複数の論理ボリュームを形成することもできる。
論理ボリュームは、ホスト101に、ホスト101のアクセス対象として提供される論理ユニットであって、通常ボリュームと仮想ボリュームとに分けられる。
通常ボリュームは、ドライブ113上に形成された論理的記憶領域から構成される。それに対して、仮想ボリュームは、Thin Provisioning機能により提供され、ページと呼ばれる記憶領域の単位から構成される。仮想ボリューム作成当初のデータが書き込まれる前の段階では、ページには物理的記憶領域から形成される論理的記憶領域は、対応付けられていない。そして、ページに新規のデータの書込みが行われると、当該書込みが行われたページに、ドライブ113上に形成された論理的記憶領域の一部の記憶領域が割り当てられ、この割当てられた記憶領域にデータが格納される。
通常ボリュームと仮想ボリュームには、識別子として、LUN(Logical Unit Number)が割り当てられ、各セグメントには、論理ブロックアドレスLBA(Logical Block Address)が割り当てられる。この際、ホスト101は、識別子LUNと論理ブロックアドレスLBAからなる論理アドレスをストレージシステム104に送信することにより、通常ボリュームまたは仮想ボリュームに対応した記憶領域に記憶されたデータにアクセスすることができる。
図2は、本発明の第一実施例に係る計算機システムの論理構成図である。
図2において、論理ボリューム200は、ホスト101からアクセスされる論理的な記憶デバイスを表わす。ホスト101は、論理ボリューム200に対してリードコマンドやライトコマンドを発行することにより、指定の記憶領域に、データの読み書きを実施する。この際、論理ボリューム200の実体となる記憶領域は、例えば、複数のドライブ113の中から選択された複数のドライブ113Aで構成される。データは、複数のドライブ113Aに形成されるストライプ列204のストライプデータ223の集合として、各ドライブ113Aに格納される。
複数のドライブ113AでRAID6を構成した場合、複数のデータ部D1、D2、・・・と、PパリティP1、P2、・・・と、QパリティQ1、Q2、・・・によって、複数のストライプ列204が構成される。例えば、6個のデータ部D1と、PパリティP1と、QパリティQ1によって、一つのストライプ列204が構成され、6個のデータ部D2と、PパリティP2と、QパリティQ2によって、一つのストライプ列204が構成される。一つのストライプ列204を構成する複数のデータのうち、一つのデータ、例えば、データ部D1が、一つのストライプデータ223として管理される。
スペアドライブ113Bは、ドライブ113Aの故障時に、データの復元先として使用されるドライブである。
なお、ストライプ列204の構成は、複数のドライブ113AでRAID6を構成した場合に限定されるものではない。例えば、8台のドライブ113Aでストライプ列204を構成する必要はなく、ストレージシステム104に実装される全てのドライブ113を使って、ストライプ列204を構成してもよいし、一部のドライブ113を使って、ストライプ列204を構成してもよい。スペアドライブ113Bにストライプ列204を構成する場合も同様である。
図3は、本発明の第一実施例に係る計算機システムの記憶領域の構成図である。
図3において、各ドライブ113に格納されるストライプデータ223は、複数のスロット301から構成される。各スロット301は、複数のサブブロック303から構成される。各サブブロック303のデータサイズは、一般的には、512バイトである。サブブロック303は、ドライブへのアクセスの最小単位である。各スロット301は、複数のサブブロック303を束ねた領域で構成され、キャッシュメモリ110の管理単位である。つまり、キャッシュメモリ110にドライブ113からデータを転送する場合、スロット301の大きさの単位でキャッシュメモリ110に、データ格納領域(以下、キャッシュ格納領域と称することもある。)が確保され、確保されたデータ格納領域にデータが転送される。
図4は、本発明の第一実施例に係る計算機システムの共有メモリの構成図である。
図4において、共有メモリ111には、論理物理アドレス変換テーブル401と、非同期中ビットマップ(bitmap)402と、非同期中領域数カウンタテーブル403と、リビルド済みビットマップ404と、アクセス頻度テーブル405と、設定テーブル406が格納される。
なお、非同期中ビットマップ(bitmap)402と、リビルド済みビットマップ404は、テーブルとして管理される。また、後述するキャッシュメモリ管理テーブルを共有メモリ111に格納することもできる。これらのテーブルは、共有メモリ111に配置してもよいし、各テーブルの一部又は全体をキャッシュメモリ110、ローカルメモリ118又はドライブ113に配置してもよい。
図5は、本発明の第一実施例に係る計算機システムのローカルメモリの構成図である。
図5において、ローカルメモリ118には、ホストI/O処理プログラム501と、デステージ処理プログラム502と、リビルド処理プログラム503と、ドライブコピー処理プログラム504が格納される。これらのプログラムは、プロセッサ119により実行される。これらのプログラムは、共有メモリ111に配置してもよいし、各プログラムの一部又は全体をキャッシュメモリ110、ローカルメモリ118又はドライブ113に配置してもよい。
図6は、本発明の第一実施例に係る計算機システムの論理物理アドレス変換テーブルの構成図である。
図6において、論理物理アドレス変換テーブル401は、複数の論理ボリュームと、各論理ボリュームを構成するドライブ113との関係を管理するためのテーブルであって、共有メモリ111に格納される。
論理物理アドレス変換テーブル401は、論理ボリューム番号フィールド601と、種別フィールド602と、物理ドライブ番号フィールド603と、物理開始アドレスフィールド604と、ドライブ状態フィールド605から構成される。
論理ボリューム番号は、各論理ボリュームを一意に識別するための識別子である。論理ボリューム番号フィールド601の各エントリには、各論理ボリュームを一意に識別するための識別子が格納される。例えば、2つの論理ボリュームを識別するための識別子として、第1のエントリには、「201」が格納され、第2のエントリには、「202」が格納される。
種別は、各論理ボリュームのRAIDレベルを示す情報である。種別フィールド602の各エントリには、各論理ボリュームのRAIDレベルとして、例えば、「RAID6」が格納される。
物理ドライブ番号は、各論理ボリュームを構成するドライブ113を一意に識別するための識別子である。物理ドライブ番号フィールド603の各エントリには、各論理ボリュームを構成するドライブ113を一意に識別するための識別子が格納される。例えば、論理ボリューム200(論理ボリューム番号201の論理ボリューム)が8台のドライブ113で構成され、各ドライブ113の物理ドライブ番号が、「1001」〜「1008」である場合、物理ドライブ番号フィールド603の第1のエントリには、論理ボリューム200を構成するドライブ113の識別子として、「1001」〜「1008」が格納される。
物理開始アドレスは、各論理ボリュームを構成するドライブ113のアドレスの開始位置を示す情報である。物理開始アドレスフィールド604の各エントリには、各ドライブ113のアドレスの開始位置を示すアドレスとして、例えば、「0x0000」が格納される。
ドライブ状態は、各ドライブ113の状態を示す情報である。ドライブ状態フィールド605の各エントリには、各ドライブ113の状態を示す情報として、例えば、ドライブ113が正常状態にある場合には、「正常」が格納され、ドライブ113が故障である場合には、「故障中」が格納される。
例えば、プロセッサ119は、I/O処理の実施中に、ドライブ113とキャッシュメモリ110間でデータを転送し、データ転送にエラーが生じた場合あるいは、データ転送に時間を要し、タイムアウトとなった場合に、データ転送の対象となったドライブ113を故障と判断し、故障と判断したドライブ113に対応するドライブ状態フィールド605のエントリに、「故障中」を格納する。
また、プロセッサ119は、定期的にドライブ113の記憶領域をVerifyコマンド等により診断する場合、診断結果から、診断対象となったドライブ113を故障と判断し、故障と判断したドライブ113に対応するドライブ状態フィールド605のエントリに、「故障中」を格納する。
図7は、本発明の第一実施例に係る計算機システムの非同期中ビットマップの構成図である。
図7において、計算機システムの非同期中ビットマップ402は、論理ボリューム200ごとに保持されるテーブルであって、論理ボリューム200のストライプ列204に属するストライプデータ223のうち冗長データの作成の有無を管理するためのテーブルである。
1個のビット701は、更新ビットとして管理され、論理ボリューム200内の1個のストライプ列204に対応する。論理ボリューム200内に、例えば、25個のストライプ列204が構成される場合、この論理ボリューム200に対応する非同期中ビットマップ402は、25個のビット701で構成される。
この非同期中ビットマップ402において、ビット701がON=「1」の場合、このビット701に対応するストライプ列204の冗長データ、例えば、Qパリティは、I/O処理とは、非同期でプロセッサ119によって作成される(以下、プロセッサ119が、I/O処理とは非同期で実行する処理を、非同期的な処理と称することがある。)。この場合、冗長データは、古い状態であることを表わす。
一方、ビット701がOFF=「0」の場合、このビット701に対応するストライプ列204の冗長データは、I/O処理と同期してプロセッサ119によって作成される(以下、プロセッサ119が、I/O処理と同期して実行する処理を、同期的な処理と称することがある。)。この場合、冗長データは、最新状態であることを表わす。
図8は、本発明の第一実施例に係る計算機システムの非同期中領域数カウンタテーブルの構成図である。
非同期中領域数カウンタテーブル403は、各論理ボリューム200に対応する非同期中ビットマップ402のビット701がONになっている個数(更新ビットの個数)を管理するためのテーブルである。この非同期中領域数カウンタテーブル403は、論理ボリューム番号フィールド801と、非同期中領域数カウンタフィールド802から構成される。
論理ボリューム番号は、各論理ボリューム200を一意に識別するための識別子である。論理ボリューム番号フィールド801の各エントリには、各論理ボリューム200を一意に識別するための識別子として、例えば、「201」、「202」、「203」が格納される。
非同期中領域数カウンタは、各論理ボリューム200に対応する非同期中ビットマップ402のビット701が、ONになっている個数を示す情報である。非同期中領域数カウンタフィールド802の各エントリには、各論理ボリューム200に対応する非同期中ビットマップ402のビット701がONになっている個数が格納される。例えば、論理ボリューム番号201の論理ボリューム200に対応する非同期中ビットマップ402のビット701がONになっている個数が、「100」である場合、論理ボリューム番号201に対応する、非同期中領域数カウンタフィールド802のエントリには、「100」が格納される。
図9は、本発明の第一実施例に係る計算機システムのリビルド済みビットマップの構成図である。
図9において、リビルド済みビットマップ404は、論理ボリューム200ごとに保持されるテーブルであって、論理ボリューム200のストライプ列204に割り当てられるドライブ113のうち、故障したドライブ113に格納されたストライプデータ223が、リビルド済み(修復済み)であるか否かを管理するためのテーブルである。
リビルド済みビットマップ404は、複数のビット901から構成され、1個のビット901は、論理ボリューム200内の1個のストライプ列204に対応する。論理ボリューム200内に、例えば、25個のストライプ列が構成される場合、この論理ボリューム200に対応するリビルド済みビットマップ404は、25個のビット901で構成される。
リビルド済みビットマップ404において、ビット901がON=「1」の場合、ストライプ列204内の故障したドライブ113に対応するストライプデータ223は、リビルド済みであって、データ修復済みとなっていることを表わす。
一方、ビット901がOFF=「0」の場合、ストライプ列204内の故障したドライブ113に対応するストライプデータ223は、リビルドが未実施であって、データ未修復となっていることを表わす。
リビルド済みビットマップ404は、故障中のドライブ113を含む、全ての論理ボリューム200について保持される。この際、あらかじめ全ての論理ボリューム200について、リビルド済みビットマップ404を保持する構成としてもよいし、共有メモリ111の容量削減のため、論理ボリューム200内のドライブ113が故障した際に、動的に、故障したドライブ113に対応する論理ボリューム200にリビルド済みビットマップ404を割り当ててもよい。また、リビルド済みビットマップ404は、ドライブの故障発生後、一連のリビルド処理を開始する際に、初期値OFF=「0」で初期化される。
図10は、本発明の第一実施例に係る計算機システムのアクセス頻度テーブルの構成図である。
図10において、アクセス頻度テーブル405は、各論理ボリューム200に対するアクセス頻度を管理するためのテーブルであって、論理ボリューム番号フィールド1001と、領域アドレスフィールド1002と、アクセス頻度カウンタフィールド1003から構成される。
論理ボリューム番号は、各論理ボリューム200を一意に識別するための識別子である。論理ボリューム番号フィールド1001の各エントリには、各論理ボリューム200を一意に識別するための識別子として、例えば、「201」、「202」が格納される。
領域アドレスは、各論理ボリューム200内の小領域のアドレスを示す情報である。領域アドレスフィールド1002の各エントリには、各論理ボリューム200内の小領域のアドレスが格納される。例えば、論理ボリューム番号201の論理ボリューム200内に複数の小領域が存在する場合、各小領域に対応するアドレスとして、「0x00000000」、「0x00000010」、「0x00000020」、・・・が格納される。
なお、小領域のアドレスは、例えば、論理ボリューム200内の1個のストライプ列204に対応するアドレスとしてもよいし、それよりも細かい粒度(例えば、ストライプデータ203単位や、スロット301単位、サブブロック303単位)でもよいし、大きな粒度(複数のストライプ列204や、1個または複数の仮想ボリュームのページ単位)でもよい。
アクセス頻度カウンタは、各論理ボリューム200内の小領域に対するアクセス頻度を示す情報である。アクセス頻度カウンタフィールド1003の各エントリには、各論理ボリューム200内の小領域に対するアクセス頻度が格納される。例えば、論理ボリューム番号201の論理ボリューム200内の小領域に対するアクセス頻度であって、ホスト101からのI/Oによるアクセス頻度が、「10」である場合、論理ボリューム番号201の論理ボリューム200内の小領域に対応する、アクセス頻度カウンタフィールド1003のエントリには、「10」が格納される。
なお、アクセス頻度カウンタは、プロセッサ119からドライブ113へのI/O数としてもよいし、ホスト101からのI/Oによるアクアクセス回数(キャッシュメモリ110へのヒットによりドライブ113へのアクセスが発生しない場合のアクセス回数を含む)としてもよい。
図11は、本発明の第一実施例に係る計算機システムの設定テーブルの構成図である。
図11において、設定テーブル406は、論理ボリューム200毎に保持されるテーブルであって、各論理ボリューム200に設定される設定項目と設定内容を管理するためのテーブルである。この設定テーブル406は、論理ボリューム番号フィールド1101と、設定項目フィールド1102と、設定内容フィールド1103から構成される。
論理ボリューム番号は、各論理ボリューム200を一意に識別するための識別子である。論理ボリューム番号フィールド1101の各エントリには、各論理ボリューム200を一意に識別するための識別子として、例えば、「201」、「202」が格納される。
設定項目は、各論理ボリューム200に設定される設定項目を示す情報である。設定項目フィールド1102の各エントリには、各論理ボリューム200に設定される設定項目を示す情報、例えば、「リビルド動作モード」、「非同期冗長データ生成モード」、「許容非同期化量」が格納される。
「リビルド動作モード」は、リビルドの動作(データの冗長度を回復するための動作)の速度を設定するための項目である。「非同期冗長データ生成モード」は、論理ボリューム200で本発明の効果を得るために、冗長データの生成を実施しないようにするかどうかを選択する項目である。「許容非同期化容量」は、非同期の処理の対象となるストライプ列204の容量として許容される容量を設定する項目である。
設定内容は、設定項目の内容を特定する情報である。設定内容フィールド1103の各エントリには、設定項目の内容を特定する情報が格納される。例えば、「リビルド動作モード」に対応する設定内容フィールド1103のエントリには、「High Speed」又は「Normal」が格納される。設定内容フィールド1103のエントリに「High Speed」が格納されて場合、ホストI/Oよりもリビルド処理を優先した動作が実行され、リビルド時間が短縮されることを意味する。なお、優先する方法については、後説する。
設定内容フィールド1103のエントリに「Normal」が格納された場合、ホストI/Oを優先し、リビルド処理の影響を少なくする動作が実行されることを意味する。
また、「非同期冗長データ生成モード」に対応する設定内容フィールド1103のエントリには、冗長データの生成を実施しない場合には、「ON」が格納され、冗長データの生成を実施する場合には、「OFF」が格納される。
また、「許容非同期化容量」に対応する設定内容フィールド1103のエントリには、非同期的な処理の対象となるストライプ列204の容量として許容される容量であって、非同期時に処理されるストライプ列204の最大個数、例えば、「1000」が格納される。
図12は、本発明の第一実施例に係る計算機システムのI/O処理プログラムの処理を説明するためのフローチャートである。
ホスト101から、ストレージシステム104内のプロセッサ119が、I/O処理要求を受けると、プロセッサ119は、ストレージシステム104内のホストI/O処理プログラム501を起動する。
ホストI/O処理プログラム501は、論理ボリューム200へのデータのリード要求か、論理ボリューム200へのデータのライト要求かを判定する(S1201)。
I/O処理要求がライトの場合、ホストI/O処理プログラム501は、キャッシュメモリ110に、I/O処理要求に対応する論理ボリューム上のアドレスに対応した領域(以下、キャッシュメモリ領域と称することがある。)が確保されているか否かを確認し、キャッシュメモリ領域が確保されている場合、もしくは確保されていなければ、キャッシュメモリ110にキャッシュメモリ領域を確保した後、ホスト101にライトデータの転送が可能であることを応答する。
その後、ホストI/O処理プログラム501は、ホスト101から転送されてくるライトデータを、確保されているキャッシュメモリ領域に書き込み、キャッシュメモリ管理テーブル(図示せず)に、ライトデータを書き込んだキャッシュメモリ領域は、まだ、ドライブ113にライトデータを書き込んでいない領域であるとして、ダーティフラグを立てる(S1207)。
ここで、ダーティフラグは、キャッシュメモリ110にのみデータがあり、ドライブ113にデータがない状態を示す情報であって、キャッシュメモリ110の領域を管理するキャッシュメモリ管理テーブルに保持される。あとで説明するデステージ処理プログラム502は、このダーティフラグが立っているか否かを参照し、ダーティフラグが立っている場合には、キャッシュメモリ110上にあるデータをドライブ113に書き込むためのデステージ処理を実行する。
キャッシュメモリ管理テーブルに、ダーティフラグが立っている領域のデータが、ドライブ113に書き込まれた後は、ダーティフラグはキャッシュメモリ管理テーブルから削除される。なお、リード処理時に、ドライブ113から読み込んだデータがキャッシュメモリ110に格納された場合には、キャッシュメモリ管理テーブルには、クリーンフラグが立てられる。
上記のように、キャッシュメモリ管理テーブルは、キャッシュメモリ110のアドレスに対応する論理ボリューム200のアドレスと、キャッシュメモリ110に存在するデータの状態を少なくとも保持して管理することができる。また、キャッシュメモリ110のアドレスに対応する論理ボリューム200のアドレスは、論理ボリューム200のデータを格納するために、キャッシュメモリ110にキャッシュメモリ領域が確保された場合にのみ、有効な値であるとして、キャッシュメモリ管理テーブルに保持される。
さて、ホストI/O処理プログラム501は、ステップS1207の処理を実行した後、ホスト101にライトI/O処理が完了したことを応答する(S1208)。然る後、ホストI/O処理プログラム501は、このルーチンでの処理を終了する。
一方、ステップS1201で、I/O処理要求がリード要求であると判定した場合、ホストI/O処理プログラム501は、リード要求で要求された論理ボリューム200に、故障中のドライブ113が有るかを確認する(S1202)。
具体的には、ホストI/O処理プログラム501は、論理物理アドレス変換テーブル401のドライブ状態フィールド605を参照し、論理ボリューム200に対応するドライブ113の中に、「故障中」のドライブ113があるかを確認する。
ステップS1202で肯定の判定結果を得た場合、即ち、リード要求で要求された論理ボリューム200に故障中のドライブ113が有る場合、ホストI/O処理プログラム501は、アクセス範囲に故障中のドライブ113があるかどうかをチェックする(S1203)。
具体的には、アクセス範囲は、ホスト101からのリード要求に含まれるLBA(Logical Block Addressing)で決定されるので、ホストI/O処理プログラム501は、リード要求に含まれるLBAから、アクセス先のストライプ列204を求め、求めたストライプ列204の中に、故障中のドライブ113のストライプデータ223が含まれるかどうかを、論理物理アドレス変換テーブル401のドライブ状態フィールド605をチェックして判断する。
ステップS1203で肯定の判定結果を得た場合、即ち、アクセス範囲に故障中のドライブ113がある場合、ホストI/O処理プログラム501は、コレクションリード処理を実行する(S1205)。コレクションリード処理はデータを復元しながら、復元されたデータをリードする処理であるが、詳細については後述する。
ステップS1203で否定の判定結果を得た場合、即ち、アクセス範囲に故障中のドライブ113がない場合、あるいは、ステップS1202で否定の判定結果を得た場合、即ち、リード要求で要求された論理ボリューム200に故障中のドライブ113が存在しない場合、ホストI/O処理プログラム501は、通常リード処理を実行する(S1204)。
通常リード処理は、読みたいデータがキャッシュメモリ110にない場合(キャッシュミスした場合)、ドライブ113から、キャッシュメモリ110にデータを転送する処理であるが、詳細については後述する。
通常リードド処理又はコレクションリード処理が終了した場合、ホストI/O処理プログラム501は、キャッシュメモリ110上のデータをホスト101に転送する(S1206)。
ホストI/O処理プログラム501は、ホスト101が要求したデータを全てホスト101に転送した後、リード処理完了応答をホスト101に転送し、このルーチンでの処理を終了する。
図13は、デステージ処理プログラムの処理を説明するためのフローチャートである。
ホストI/O処理プログラム501は、ホスト101からのデータのライト要求(書き込み要求)に応じて、ホスト101からのライトデータをキャッシュメモリ110に書き込んだ後、キャッシュメモリ管理テーブルにダーティフラグを立てる。このため、プロセッサ119は、キャッシュメモリ110上に存在するライトデータをドライブ113に定期的に書き込むために、デステージ処理プログラム502を定期的に起動する。
デステージ処理プログラム502は、キャッシュメモリ管理テーブルを参照し、キャッシュメモリ110のキャッシュ領域に、未反映データ(ダーティフラグが立っているデータであって、ドライブ113への書き込みがなされていないデータ)が存在するか否かを定期的に判定する(S1301)。
ステップS1301で肯定の判定結果を得た場合、即ち、キャッシュメモリ110上に、未反映データが存在する場合、デステージ処理プログラム502は、キャッシュ管理テーブルに登録された論理ボリューム番号の論理アドレスを基に、論理ボリューム200に故障中のドライブ113が有るかどうかを判定する(S1302)。この際、デステージ処理プログラム502は、図12のステップS1202と同様の処理を実行する。
ステップS1302で肯定の判定結果を得た場合、即ち、論理ボリューム200に故障中のドライブ113が有る場合、デステージ処理プログラム502は、アクセス範囲に故障中のドライブ113が有るかどうかを判定する(S1303)。
この際、デステージ処理プログラム502は、図12のステップS1203と同様の処理を実行する。
ステップSで肯定の判定結果を得た場合、即ち、アクセス範囲に故障中のドライブ113がある場合は、デステージ処理プログラム502は、コレクションライト処理を実施する(S1305)。コレクションライト処理は、故障中のドライブ113を含む領域に対するライト処理であるが、詳細は後説する。
コレクションライト処理を実施後、デステージ処理プログラム502は、再度S1301に戻り、未反映データの有無を判定するための処理を実施する。
一方、ステップS1303で否定の判定結果を得た場合、即ち、アクセス範囲に故障中のドライブ113がない場合は、デステージ処理プログラム502は、通常ライト処理を実施する(S1304)。通常ライト処理の詳細は後説する。
通常ライト処理を実施後、デステージ処理プログラム502は、再度S1301に戻り、未反映データの有無を判定するための処理を実施する。
また、ステップS1302で否定の判定結果を得た場合、即ち、論理ボリューム200に故障中のドライブ113が無い場合、デステージ処理プログラム502は、非同期冗長データ生成判定処理を実施する(S1306)。非同期冗長データ生成判定処理の詳細は後説する。
非同期冗長データ生成判定処理を実施した後、デステージ処理プログラム502は、非同期冗長データ生成判定処理の実施が必要か否かを判定する(S1307)。
ステップS1307で肯定の判定結果を得た場合、即ち、非同期冗長データ生成判定処理を実施要の場合、デステージ処理プログラム502は、高速ライト処理を実施する(S1308)。高速ライト処理は、冗長データを生成しないことでドライブ負荷の低いライト処理を実現する処理であるが、詳細は後説する。
高速ライト処理を実施後、デステージ処理プログラム502は、再度S1301に戻り、未反映データの有無を判定するための処理を実施する。
一方、ステップS1307で否定の判定結果を得た場合、即ち、非同期冗長データ生成判定処理を実施不要の場合、デステージ処理プログラム502は、通常ライト処理を実施する(S1304)。
通常ライト処理を実施後、デステージ処理プログラム502は、再度S1301に戻り、未反映データの有無を判定するための処理を実施する。
また、S1301で否定の判定結果を得た場合、即ち、即ち、キャッシュメモリ110上に、未反映データが存在しない場合、デステージ処理プログラム502は、このルーチンでの処理を終了する。
図14は、リビルド処理プログラムの処理を説明するためのフローチャートである。
この処理は、プロセッサ119が、ドライブ113の故障発生時、又は、一定時間毎に、周期的にリビルド処理プログラム503を起動することによって開始される。
リビルド処理プログラム503は、まず、全ての非同期中ビットマップ402のうち、ONの領域を、処理済みか否かを判定する(S1401)。これは具体的には、リビルド処理プログラム503が、ステップS1401とステップS1402で、全ての論理ボリューム200のストライプ列204について順番にチェックをしていき、全てのチェック処理が完了したことを想定している。
この具体的な処理としては、リビルド処理プログラム503が、非同期中ビットマップ402の全てのビット701がOFFになっているか否かを判定し(S1402)、最終的に、非同期中領域数カウンタテーブル403の非同期中領域数カウンタフィールド802の全てのエントリが、0になっていれば、処理済みとして終了してもよい。
ステップS1401で肯定の判定結果を得た場合、即ち、全ての非同期中ビットマップ402がONの領域を処理済みの場合、リビルド処理プログラム503は、処理Aに進む。この処理Aについては、図15で詳細に説明する。
ステップS1401で否定の判定結果を得た場合、即ち、全ての非同期中ビットマップ402がONの領域を処理済みで無い場合、リビルド処理プログラム503は、その処理済みでない領域について、次の処理を進める。
具体的には、リビルド処理プログラム503は、非同期中ビットマップ402の中に、非同期中ビットがONの領域が存在するか否かを判定し(S1402)、このステップS1402で否定の判定結果を得た場合、ステップS1401の処理に戻り、ステップS1402で肯定の判定結果を得た場合、即ち、非同期中ビットマップ402の中に、非同期中ビットがONの領域が存在する場合、コレクション先の領域があるか否かを判定する(S1403)。
ステップS1403で肯定の判定結果を得た場合、即ち、未使用のスペアドライブ113Bの中に、コレクション先の領域がある場合、リビルド処理プログラム503は、コレクションコピー処理を実施する(S1404)。コレクションコピー処理は、コレクション先の領域に復元データをコピーする処理であるが、詳細については後説する。
なお、未使用のスペアドライブ113Bが無い場合でも、故障中のドライブ113が、物理的にリプレースされた場合には、リプレースされたドライブ113の記憶領域をコレクション先の領域とすることもできる。
ステップS1403で肯定の判定結果を得た場合、即ち、未使用のスペアドライブ113Bの中に、コレクション先の領域が存在しない場合、リビルド処理プログラム503は、非同期冗長データコレクション処理を実施する(S1405)。非同期冗長データコレクション処理は、冗長データの作成を非同期化(以下、ホストI/Oとは非同期で処理することを、非同期化と称することがある。)する領域について、冗長データを作成する処理であるが、詳細については後説する。
コレクションコピー処理(S1404)又は非同期冗長データコレクション処理(S1405)が完了した場合、次の領域について、また、S1401に戻って処理を開始する。
図15は、リビルド処理プログラムの処理を説明するためのフローチャートである。
この処理は、図14のステップS1401で肯定の判定結果が得られた場合に実行される。
リビルド処理プログラム503は、まず、全てのリビルド済みビットがOFFの領域を、処理済みか否かを判定する(S1501)。この判定処理は、前述のステップS1401と同様に、リビルド処理プログラム503が、ステップS1501とステップS1502で、全ての論理ボリューム200のストライプ列204について順番にチェックをしていき、全てのチェック処理が完了したことを想定している。
ステップS1501で肯定の判定結果を得た場合、即ち、全てのリビルド済みビットマップ404がOFFの領域を処理済みの場合、リビルド処理プログラム503は、このルーチンでの処理を終了する。
ステップS1501で否定の判定結果を得た場合、即ち、全てのリビルド済みビットマップ404がOFFの領域を処理済みで無い場合、リビルド処理プログラム503は、その処理済みでない領域について、次の処理を進める。
具体的には、リビルド処理プログラム503は、リビルド済みビットマップ404の中に、ビット901がOFFの領域が存在するか否かを判定し(S1502)、このステップS1502で否定の判定結果を得た場合、ステップS1501の処理に戻り、ステップS1502で肯定の判定結果を得た場合、即ち、リビルド済みビットマップ404の中に、ビット901がOFFの領域が存在する場合、コレクション先の領域があるか否かを判定する(S1503)。
ステップS1503で肯定の判定結果を得た場合、即ち、コレクション先の領域がある場合、リビルド処理プログラム503は、コレクションコピー処理を実行し(S1504)、その後、次の領域について、また、ステップS1501に戻って処理を開始する。
以上に説明した、図14及び図15の処理では、ドライブ故障発生時に非同期中ビットマップ402がONの領域から先にデータの復元処理を実施し、その後、その他の領域ついてデータの復元処理を実施する。この理由は、非同期中ビットマップ402がONの領域はその他の領域よりも冗長度が低いため、冗長性の低い領域を早急にデータの復元処理を実施することによって、全体としての信頼性を向上させる効果を得ることができる。
図16は、ドライブコピー処理プログラムの処理を説明するためのフローチャートである。
この処理は、プロセッサ119が、ドライブ故障の兆候を事前に検出した場合などに、故障しそうなドライブ113から、スペアドライブ113Bへのコピー処理のために、ドライブコピー処理プログラム504を起動することによって開始される。以下、この事前コピー処理をダイナミックスペアリングと称することがある。
プロセッサ119が、ドライブ故障の兆候を事前に検出する方法としては、例えば、S.M.A.R.T情報を用いた方法などがある。また、ダイナミックスペアリングの他にも、特定の論理ボリュームのデータを別の論理ボリュームのデータにコピーする際に、プロセッサ119が、ドライブコピー処理プログラム504を起動してもよい。
まず、ドライブコピー処理プログラム504は、論理ボリューム200の全領域をコピー完了したか否かを判定する(S1601)。この判定処理は、前述のS1401と同様に、ドライブコピー処理プログラム504が、ステップS1601とステップS1602で全ての論理ボリューム200のストライプ列204について順番にチェックをしていき、全てのチェック処理が完了したことを想定している。ただし、故障中のドライブ113が無い場合は、処理済みとして、終了する。
また、論理ボリューム200の一部の領域をコピーする場合は、その領域に含まれるストライプ列204について、コピーが完了済みかをS1601で判定することもできる。
ステップS1601で否定の判定結果を得た場合、即ち、論理ボリューム200の全領域をコピー完了していない場合、ドライブコピー処理プログラム504は、そのコピー済みでない領域について、次の処理を進める。
ドライブコピー処理プログラム504は、論理ボリューム200の領域のうち、コピーが完了していない領域が、非同期冗長データ領域であるか否かを判定する(S1602)。
具体的には、ドライブコピー処理プログラム504は、設定テーブル406の各論理ボリューム200について、非同期冗長データ生成モードフィールド1102に対応した設定内容フィールド1103のエントリがONの場合、コピーが完了していない領域が、非同期冗長データ領域であると判定する。
ステップS1602で肯定の判定結果を得た場場合、即ち、非同期冗長データ領域で有る場合、ドライブコピー処理プログラム504は、非同期中ビット701がONの領域か否かを判定する(S1603)。
ステップS1603で肯定の判定結果を得た場合、即ち、非同期中ビット701がONの領域が存在する場合、ドライブコピー処理プログラム504は、コレクションコピー処理を実施し(S1605)、その後、次の領域について、またS1601に戻って処理を実行する。
ステップS1602で否定の判定結果を得た場合、即ち、非同期冗長データ領域で無かった場合、又はステップS1603で否定の判定結果を得た場合、即ち、非同期中ビット701がONの領域で無かった場合、ドライブコピー処理プログラム504は、通常コピー処理を実行し(S1604)、その後、次の領域について、またS1601に戻って、処理を実行する。
以上に説明したドライブコピー処理プログラム504の処理は、リビルド処理プログラム503で説明したように、ドライブ故障発生時に非同期中ビットマップ402がONの領域から先にデータの復元処理を実施し、その後、その他の領域ついてデータの復元処理を実施すれば、全体としての信頼性を向上させる効果を得ることができる。
図17は、ホストI/O処理プログラムのサブプログラムである、通常リード処理を説明するためのフローチャートである。
まず、ホストI/O処理プログラム501は、キャッシュメモリ管理テーブルを参照し、キャッシュメモリ110に、リード命令で要求されたデータ(当該データ)が有るか否かを判定する(S1701)。
ステップS1701で否定の判定結果を得た場合、即ち、キャッシュメモリ110に当該データが無い場合、ホストI/O処理プログラム501は、ドライブ113からデータをリードしてキャッシュメモリ10に転送する(S1702)し、その後、アクセス頻度テーブル405を更新する(S1703)。
具体的には、ホストI/O処理プログラム501は、アクセス頻度テーブル405のうち、領域アドレスフィールド1002の領域アドレスに対応するアクセス頻度カウンタフィールド1003のアクセス頻度カウンタを、ドライブ113へのコマンド発行回数分インクリメントする。
ホストI/O処理プログラム501は、アクセス頻度テーブル405を更新した場合、又は、ステップS1701で肯定の判定結果を得た場合、このルーチンでの処理を終了する。
図18は、ホストI/O処理プログラムのサブプログラムである、コレクションリード処理を説明するためのフローチャートである。
まず、ホストI/O処理プログラム501は、リード対象領域のうち、故障中のドライブ113を含まないリード対象領域について、通常リード処理を実行する(S1801)。
具体的には、ホスト101からのリード要求に含まれるLBAに対応する1個または複数のストライプ列204、またはその一部について、ストライプ列204に属するドライブ113のうち、故障中のドライブ113以外のドライブ113のストライプデータ223の部分を読み込む。このリード処理は、図17で説明した、ホストI/O処理プログラムのサブプログラムである、通常リード処理と同様である。
なお、このリード処理は、このステップS1801で実施しなくても、コレクションリード処理の過程で、別のドライブ113へのリード処理が発生するタイミングに合わせて実施することができ。この場合、ホスト101は、リードコマンド発行回数を削減することできる。
次に、ホストI/O処理プログラム501は、リード対象領域が、リビルド済みビット901がOFFの領域か否かを判定する(S1802)。
具体的には、ホストI/O処理プログラム501は、リード対象のストライプ列224に対応するリビルド済みビットマップ404のビット901がOFFかどうかを判定する。
ステップS1802で否定の判定結果を得た場合、即ち、リード対象のストライプ列204に対応するリビルド済みビットマップ404のビット901がONの場合は、既に、スペアドライブ113B等の復元先の領域に、データが復元済みであるため、ホストI/O処理プログラム501は、復元先の領域から直接リード処理を実行し(S1803)、このルーチンでの処理を終了する。
このリード処理は、図17で説明した、I/O処理プログラムのサブプログラムである、通常リード処理と同様である。
ステップS1802で肯定の判定結果を得た場合、即ち、リード対象のストライプ列204に対応するリビルド済みビットマップ404のビット901がOFFの場合、ホストI/O処理プログラム501は、コレクション先の領域があるか否かを判定する(S1804)。この判定処理では、ホストI/O処理プログラム501は、前述のS1403と同様に、コレクション先の領域があるか否かを判定する。
ステップS1804で肯定の判定結果を得た場合、即ち、コレクション先の領域がある場合、ホストI/O処理プログラム501は、I/O同期リビルドの実行が必要か否かを判定する(S1806)。
具体的には、ホストI/O処理プログラム501は、設定テーブル406の設定項目フィールド1102の「リビルド動作モード」に対応した設定内容フィールド1103のエントリをチェックする。この際、設定内容が、「High Speed」である場合、ホストI/O処理プログラム501は、I/O同期リビルドの実行が必要であると判定する。
一方、ホストI/O処理プログラム501は、設定内容が、「Normal」である場合、当該論理ボリューム200の負荷をチェックし、負荷に応じて、I/O同期リビルドの実行が必要か、不要かを判定する。論理ボリューム200の負荷は、対応するドライブの稼働率を使用してもよいし、ライトペンド量(キャッシュ上の未反映データの量)から判断してもよい。例えば、負荷が低い場合には、レスポンス低下を防ぐためにI/O同期リビルドの実行を不要と判定し、負荷が高い場合は、I/O同期リビルドの効果が高いため、I/O同期リビルドの実行を必要と判定する。なお、ホストI/O処理プログラム501は、論理ボリューム200の負荷量に応じて、I/O同期リビルドの実行頻度を動的に変更してもよい。また、ホストI/Oがシーケンシャルアクセスの場合には、I/O同期リビルドの実行が必要であると判定してもよい。
ステップS1806で肯定の判定結果を得た場合、即ち、I/O同期リビルドの実行が必要であると判定した場合、ホストI/O処理プログラム501は、コレクションコピー処理を実行し(S1810)、その後、このルーチンでの処理を終了する。
ステップS1806で否定の判定結果を得た場合、即ち、I/O同期リビルドの実行が不要であると判定した場合、ホストI/O処理プログラム501は、キャッシュメモリ管理テーブルを参照し、キャッシュメモリ10に、当該データ、即ち、リード対象のストライプ列204の全ての復元元データが有るか否かを判定する(S1805)。
リード範囲のデータに対応するストライプデータ223が、故障中のドライブ113に存在する場合(S1801で故障中のドライブ113以外のデータはリード済み)、このときのリード対象データは、復元元のストライプデータ223内のリード領域に対応するデータとなる。
具体的には、例えば、RAID6の場合、ストライプ列204に属するデータのうち、あるデータ部が故障した場合、それ以外のデータ部と、Pパリティ(又はQパリティ)から復元するので、それらのデータが、リード対象データとなる。
S1805で否定の判定結果を得た場合、即ち、キャッシュメモリ110に、当該データのストライプ列204の全ての復元元データが無い場合、ホストI/O処理プログラム501は、その足りない復元元データをドライブ113からリードしてキャッシュメモリ110に転送する(S1807)。
ステップS1805で肯定の判定結果を得た場合、即ち、キャッシュメモリ110に、当該データのストライプ列204の全ての復元元データが有る場合、又は、ステップS1807の処理の後、ホストI/O処理プログラム501は、キャッシュメモリ110上の復元元データを基にデータコレクション処理(S1808)を実行する。
このデータコレクション処理として、ホストI/O処理プログラム501は、例えば、RAID6の場合、復元元データと、PパリティデータとのXOR演算によりデータを復元する。
ステップS1808の後、ホストI/O処理プログラム501は、アクセス頻度テーブル405を更新する処理を実行し(S1809)、その後、このルーチンでの処理を終了する。
具体的には、ホストI/O処理プログラム501は、アクセス頻度テーブル405のうち、領域アドレスフィールド1002に対応するアクセス頻度カウンタフィールド1003のアクセス頻度カウンタを、ドライブ113へのコマンド発行回数分インクリメントし、アクセス頻度テーブル405を更新したら、処理を終了する。
なお、ステップS1805〜S1809は、既に実施済みなどの理由で、復元データがキャッシュメモリ110に有る場合、実行せずに処理を終了してもよい。
図19は、ホストI/O処理プログラムのサブプログラムである、通常ライト処理を説明するためのフローチャートである。
まず、ホストI/O処理プログラム501は、冗長データを生成する(S1901)。例えば、RAID6の場合、ホストI/O処理プログラム501は、ライト先の領域の更新前データと、Pパリティの更新前データと、Qパリティの更新前データから、XOR演算およびガロア演算を実行し、更新後のデータに対応するPパリティのデータとQパリティのデータを算出する。
この際、この算出処理に必要な更新前データが、キャッシュメモリ110上に無い場合、ホストI/O処理プログラム501は、ドライブ113から更新前データをキャッシュメモリ110に転送する。
その後、ホストI/O処理プログラム501は、キャッシュメモリ110からドライブ113に更新後のデータを転送する(S1902)。
その後、ホストI/O処理プログラム501は、アクセス頻度更新処理を実施する(S1903)。
具体的には、ホストI/O処理プログラム501は、アクセス頻度テーブル405のうち、対応する領域のアクセス頻度カウンタフィールド1003のアクセス頻度カウンタをドライブ113へのコマンド発行回数分インクリメントし、アクセス頻度を更新した後、このルーチンでの処理を終了する。
図20は、ホストI/O処理プログラムのサブプログラムである、コレクションライト処理を説明するためのフローチャートである。
まず、ホストI/O処理プログラム501は、ライト対象領域について、故障中のドライブ113を含まない領域の通常ライト処理を実行する(S2001)。
具体的には、ホスト101からのリード要求に含まれるLBAに対応する1個または複数のストライプ列204、またはその一部について、ストライプ列204に属するドライブ113のうち、故障中のドライブ113以外のドライブ113のストライプデータ223の部分をドライブ113に書き込む。
このライト処理は、図19で説明した、ホストI/O処理プログラムのサブプログラムである、通常ライト処理と同様である。
なお、このライト処理は、このステップS2001で実施しなくても、コレクションライト処理の過程で、別のドライブ113へのライト処理が発生するタイミングに合わせて実施することができ。この場合、ホスト101は、ライトコマンド発行回数を削減することできる。
次に、ホストI/O処理プログラム501は、ライト対象領域が、リビルド済みビット901がOFFの領域か否かを判定する(S2002)。
具体的には、ホストI/O処理プログラム501は、ライト対象のストライプ列204に対応するリビルド済みビットマップ404のビット901がOFFかどうかを判定する。
ステップS2002で否定の判定結果を得た場合、即ち、ライト対象のストライプ列204に対応するリビルド済みビットマップ404のビット901がONの場合は、既に、スペアドライブ113B等の復元先の領域が、復元済みであるため、ホストI/O処理プログラム501は、復元先の領域から直接ライト処理を実行し(S2003)、このルーチンでの処理を終了する。
このライト処理は、図19で説明した、ホストI/O処理プログラムのサブプログラムである、通常リード処理と同様である。
ステップS2002で肯定の判定結果を得た場合、即ち、ライト対象のストライプ列204に対応するリビルド済みビットマップ404のビット901がOFFの場合、ホストI/O処理プログラム501は、コレクション先の領域があるか否かを判定する(S2004)。この判定処理では、ホストI/O処理プログラム501は、前述のS1403と同様に、コレクション先の領域があるか否かを判定する。
ステップS2004で肯定の判定結果を得た場合、即ち、コレクション先の領域がある場合、ホストI/O処理プログラム501は、I/O同期リビルドの実行が必要か否かを判定する(S2005)。
具体的には、ホストI/O処理プログラム501は、設定テーブル406の設定項目フィールド1102の「リビルド動作モード」に対応した設定内容フィールド1103のエントリをチェックする。この際、設定内容が、「High Speed」である場合、ホストI/O処理プログラム501は、I/O同期リビルドの実行が必要であると判定する。
一方、ホストI/O処理プログラム501は、設定内容が、「Normal」である場合、当該論理ボリューム200の負荷をチェックし、負荷が低い場合には、I/O同期リビルドの実行が必要であると判定し、負荷が高い場合は、ホストI/O処理を優先するために、I/O同期リビルドの実行が不要であると判定する。なお、ホストI/O処理プログラム501は、論理ボリューム200の負荷量に応じて、動的にI/O同期リビルドの実行頻度を変更することもでき、また、ホストI/Oがシーケンシャルアクセスの場合には、I/O同期リビルドの実行が必要であると判定することもできる。
ステップS2005で肯定の判定結果を得た場合、即ち、I/O同期リビルドの実行が必要であると判定した場合、ホストI/O処理プログラム501は、コレクションコピー処理を実行し(S2009)、その後、このルーチンでの処理を終了する。
ステップS2005で否定の判定結果を得た場合、即ち、I/O同期リビルドの実行が不要であると判定した場合、又は、ステップS2004で否定の判定結果を得た場合、即ち、コレクション先の領域がない場合、ホストI/O処理プログラム501は、ホストI/O処理プログラム501は、冗長データを生成する(S2006)。
例えば、RAID6の場合、ホストI/O処理プログラム501は、ライト先の領域の更新前データと、Pパリティの更新前データと、Qパリティの更新前データから、XOR演算およびガロア演算を実行し、更新後のデータに対応するPパリティのデータとQパリティのデータを算出する。
この際、この算出処理に必要な更新前データが、キャッシュメモリ110上に無い場合、ホストI/O処理プログラム501は、ドライブ113から更新前データをキャッシュメモリ110に転送する。但し、図19のステップS1902と異なる点は、冗長データやデータの記憶先のドライブ113が、故障中の状態であるデータは、生成する必要がない点である。
その後、ホストI/O処理プログラム501は、キャッシュメモリ110からドライブ113に更新後のデータを転送する(S2007)。
その後、ホストI/O処理プログラム501は、アクセス頻度更新処理を実施する(S2008)。
具体的には、ホストI/O処理プログラム501は、アクセス頻度テーブル405のうち、対応する領域のアクセス頻度カウンタフィールド1003のアクセス頻度カウンタをドライブ113へのコマンド発行回数分インクリメントし、アクセス頻度を更新した後、このルーチンでの処理を終了する。
図21は、ホストI/O処理プログラムのサブプログラムである、高速ライト処理を説明するためのフローチャートである。
高速ライト処理は、特定の冗長データをドライブ113にライトしないことにより、1回のライト処理当たりのドライブ113へのコマンド発行回数を削減する効果を持つ。
まず、ホストI/O処理プログラム501は、非同期化対象を除く冗長データの生成を実施する(S2101)。
この際、2個以上(N個とする)の冗長データを持つRAIDレベルにおいて、N-1個以下の種類の冗長データを非同期化対象として、冗長データを生成することが有効である。これは、全ての冗長データ(N個)を非同期化すると、1台のドライブ113が故障した時点で、データを失う領域が発生するためである。
例えば、RAID6の場合、Pパリティと、Qパリティの2個の冗長データのうち、Qパリティを非同期化対象とする場合は、Pパリティのみを更新することになる。
また、例えば、パリティを3種類(Pパリティ、Qパリティ、Rパリティ)持つRAIDレベルにおいて、3種類の冗長データのうち、QパリティとRパリティ両方を非同期化対象としてもよいし、いずれか1つを非同期化対象としてもよい。一般に、N種類のパリティを持つ場合に、段階的に高負荷領域ほど非同期化パリティの種数を減らすことにより、システム全体の性能・信頼性をさらに効率化することが可能である。その場合は、非同期化パリティの種数が多いページ(=高負荷なページ)から順にリビルド処理を実行することで、信頼性(MTTDL : Mean Time To Data Loss)を最大化する。例えば、3種類のパリティを持つ場合に、超高負荷領域(超小容量)はQパリティ、Rパリティを非同期化対象とし、高負荷領域(小容量)はRパリティを非同期化対象とし、低負荷領域(大容量)は全てのパリティを非同期化対象としない。障害発生時は超高負荷領域についてまずリビルドを完了させ、次に高負荷領域についてリビルドを完了させ、最後に低負荷領域についてリビルドを完了させるという順番で実施する。
具体的な冗長データの生成は、図19のS1901と同様であるが、前述したとおり、非同期化対象の冗長データは、除いて処理を実施する。
その後、ホストI/O処理プログラム501は、キャッシュメモリ110からドライブ113に更新後のデータを転送する(S2102)。
その後、ホストI/O処理プログラム501は、アクセス頻度更新処理を実施する(S2103)。
具体的には、ホストI/O処理プログラム501は、アクセス頻度テーブル405のうち、対応する領域のアクセス頻度カウンタフィールド1003のアクセス頻度カウンタをドライブ113へのコマンド発行回数分インクリメントし、アクセス頻度を更新する。
次に、ホストI/O処理プログラム501は、非同期中ビットマップ402のビット701をONとし(S2104)、その後、このルーチンでの処理を終了する。
なお、高速ライト処理では、高頻度領域について非同期化するパリティ分のキャッシュメモリ110を確保しないため、確保しない分のキャッシュメモリ110の領域を別のデータのキャッシュに活用でき、ストレージシステム104全体の処理効率を向上させることができる。
図22は、ホストI/O処理プログラムのサブプログラムである、非同期冗長データ生成判定処理を説明するためのフローチャートである。
まず、ホストI/O処理プログラム501は、ホスト101からのI/O処理要求を基にシーケンシャルアクセスか否かを判定する(S2201)。
この際、ホストI/O処理プログラム501は、ホスト101からのI/O処理要求のコマンドに含まれる転送長(Transfer length)が一定長を超える場合や、複数のI/O処理要求のLBAのアドレスの履歴から、連続的な領域にアクセスが来ているかどうかなどで、シーケンシャルアクセスか否かを判定する。
ステップS2201で、肯定の判定結果を得た場合、即ち、シーケンシャルアクセスである場合、ホストI/O処理プログラム501は、当該領域は非同期化不要とし(S2205)、このルーチンでの処理を終了する。
この理由は、シーケンシャルアクセスだった場合は、キャッシュ上のライトデータだけで冗長データが生成できるので、ドライブにアクセス必要がないためである。
ステップS2201で否定の判定結果を得た場合、即ち、シーケンシャルアクセスでは無かった場合、ホストI/O処理プログラム501は、対象の非同期中ビットマップ402のビット701がONか否かを判定する(S2202)。
ステップS2202で否定の判定結果を得た場合、即ち、対象の非同期中ビットマップ402のビット701がOFFの場合、ホストI/O処理プログラム501は、対象が高アクセス頻度領域か否かを判定する(S2203)。
この際、ホストI/O処理プログラム501は、例えば、アクセス頻度テーブル405のうち、対象領域のアクセス頻度カウンタフィールド1003の値が、アクセス頻度の閾値を超えたか否かで判定することができる。
ステップS2203で否定の判定結果を得た場合、即ち、対象が高アクセス頻度領域ではなかった場合、ホストI/O処理プログラム501は、当該領域は非同期化不要とし(S2205)、このルーチンでの処理を終了する。
ステップS2203で肯定の判定結果を得た場合、即ち、対象が高アクセス頻度領域だった場合、ホストI/O処理プログラム501は、対象が、許容非同期化容量以内かどうかを判定する(S2203)。
具体的には、ホストI/O処理プログラム501は、設定テーブル406のうち、対象となる論理ボリューム200に対応する設定項目フィールド1102の「許容非同期化容量」の設定内容フィールド1103の値と、非同期中領域数カウンタテーブル403のうち、対象となる論理ボリューム200に対応する非同期中領域数カウンタフィールド802の値とを比較し、次に、非同期中領域数カウンタフィールド802の値がインクリメントされた場合に、非同期中領域数カウンタフィールド802の値が、「許容非同期化容量」の設定内容フィールド1103の値を超える場合に、許容非同期化容量以内ではないと判定する。
また、ホストI/O処理プログラム501は、非同期中領域数カウンタフィールド802の値が、「許容非同期化容量」の設定内容フィールド1103の値を超えない場合は、許容非同期化容量以内あると判定する。
また、既に対象の領域の非同期中ビットマップ402のビット701がONの場合、ホストI/O処理プログラム501は、無条件で許容非同期化容量以内と判定する。
ステップS2204で否定の判定結果を得た場合、即ち、許容非同期化容量以内ではないと判定された場合、ホストI/O処理プログラム501は、当該領域は非同期化不要とし(S2205)、このルーチンでの処理を終了する。
ステップS2204で肯定の判定結果を得た場合、即ち、許容非同期化容量以内であると判定された場合、又は、ステップS2202で肯定の判定結果を得た場合、即ち、対象の非同期中ビットマップ402のビット701がONである場合、ホストI/O処理プログラム501は、当該領域は非同期化要とし(S2206)、このルーチンでの処理を終了する。
なお、上記で述べたステップは、その一部の判定処理を省いてもよいし、全ての判定処理を実施してもよいものとする。
図23は、ホストI/O処理プログラムのサブプログラムである、非同期冗長データ生成判定処理を説明するためのフローチャートである。
この処理は、図22で説明した方法とは異なり、アクセス頻度テーブル405を使用せずに、高頻度な領域を優先して非同期化する方法である。なお、この処理では、図22で説明したフローチャートと異なる点のみを説明する。
ホストI/O処理プログラム501は、ステップS2301で、対象が、シーケンシャルアクセスでないと判定された場合、対象の非同期中ビットマップ402のビット701がONであるか否かを判定する(S2302)。
ステップS2302で肯定の判定結果を得た場合、即ち、対象の非同期中ビットマップ402のビット701がONである場合、ホストI/O処理プログラム501は、ステップS2304に移行し、ステップS2204と同様の処理を実行する。
ステップS2302で否定の判定結果を得た場合、即ち、対象の非同期中ビットマップ402のビット701がOFFである場合、ホストI/O処理プログラム501は、確率判定の結果を基に実施要か否かを判定する(S2303)。
具体的には、ホストI/O処理プログラム501は、例えば、ローカルメモリ118上のカウンタを使用して、M回に1回だけ実施要と判定することができる。なお、この際、その他の頻度をコントロールする方法を使用してもよい。
ホストI/O処理プログラム501は、ステップS2303で肯定の判定結果を得た場合、ステップS2304の処理に移行し、ステップS2204と同様の処理を実行する。また、ホストI/O処理プログラム501は、ステップS2303で否定の判定結果を得た場合、ステップS2305の処理に移行し、ステップS2205と同様の処理を実行する。
以上の処理により、アクセス頻度テーブル405を使用しなくても、アクセス頻度の高い領域が、確率的に非同期化される可能性が高くなるため、図22で説明した方法と近い効果を得ることができる。
また、以上の説明で述べた方法以外に、ドライブの稼働率やライトペンド量(キャッシュ上の未反映データの量)に応じて、“非同期化不要”か“非同期化要”を切り分ける条件判定を、例えばS2303の直前に加えてもよい。例えば、ドライブの稼働率が低い場合には、スループットやレスポンスの悪化影響が少ないと判断し、既に対象の非同期中bitが ONの場合を除いて“非同期化不要”とすることを選択してもよい。また、ライトペンド量が少ない場合に、同様にスループットやレスポンスの悪化影響が少ないと判断し、既既に対象の非同期中bitが ONの場合を除いて“非同期化不要”とすることを選択してもよい。これらの条件判定を追加することにより、非同期化対象の領域を不必要に広げることを抑止し、信頼性のさらなる向上効果を生むことができる。
図24は、ドライブコピー処理プログラムのサブプログラムである、通常コピー処理を説明するためのフローチャートである。
まず、ドライブコピー処理プログラム504は、対象の全てのコピー元のストライプデータ223がキャッシュメモリ110に有るか否かを判定する(S2401)。
S2401で否定の判定結果を得た場合、即ち、対象の全てのコピー元のストライプデータ223がキャッシュメモリ110に無い場合、ドライブコピー処理プログラム504は、キャッシュメモリ110にない対象データをコピー元ドライブ113からリードし、リードした対象データをキャッシュメモリ110に転送する(S2402)。
その後、ドライブコピー処理プログラム504は、キャッシュメモリ110からコピー先ドライブ113にデータを転送し(S2403)、このルーチンでの処理を終了する。
また、ステップS2401で肯定の判定結果を得た場合、即ち、対象の全てのコピー元のストライプデータ223がキャッシュメモリ110にある場合、ドライブコピー処理プログラム504は、キャッシュメモリ110からコピー先ドライブ113にデータを転送し(S2403)、このルーチンでの処理を終了する。
図25は、ドライブコピー処理プログラム、リビルド処理プログラム、およびホストI/O処理プログラムのサブプログラムである、コレクションコピー処理を説明するためのフローチャートである。
この処理は、ドライブコピー処理プログラム504、リビルド処理プログラム503、およびホストI/O処理プログラム501のうち、いずれかのプログラムによって実行される。なお、この処理では、ホストI/O処理プログラム501が実行する場合について説明する。
ホストI/O処理プログラム501は、対象の全ての復元元のストライプデータ223が、キャッシュメモリ110に有るか否かを判定する(S2501)。
ステップS2501で否定の判定結果を得た場合、即ち、対象の全ての復元元のストライプデータ223がキャッシュメモリ110に無い場合、ホストI/O処理プログラム501は、キャッシュメモリ110にない対象データを、復元元ドライブ13からリードし、リードした対象データをキャッシュメモリ110に転送する(S2502)。
その後、ホストI/O処理プログラム501は、対象のストライプデータ223の復元を実施し(S2503)、復元された復元データをキャッシュメモリ110から復元先ドライブ113に転送し(S2504)、ステップS2505に進む。
一方、ステップS2401で肯定の判定結果を得た場合、即ち、対象の全ての復元元のストライプデータ223がキャッシュメモリ110にある場合、ホストI/O処理プログラム501は、対象のストライプデータ223の復元を実施し(S2503)、復元された復元データをキャッシュメモリ110から復元先ドライブ113に転送し(S2504)、ステップS2505に進む。
ステップS2505で、ホストI/O処理プログラム501は、処理対象のストライプ列204に相当するリビルド済みビットをONにし(S2505)、その後、処理対象のストライプ列204に相当する非同期中ビットがONで有る場合(S2506)は、非同期中ビットをOFFにし(S2507)、その後、非同期中領域数カウンタフィールド802の個数をデクリメントし(S2508)、このルーチンを終了する。このデクリメント処理によって、リビルド処理プログラム503は、リビルド済みビットがONの領域数の管理が可能となる。
一方、ステップS2506で処理対象のストライプ列204に相当する非同期中ビットがONでない場合は、このルーチンを終了する。
図26は、リビルド処理プログラムのサブプログラムである、非同期冗長データコレクション処理を説明するためのフローチャートである。
まず、リビルド処理プログラム503は、対象の全ての冗長データ生成元のデータがキャッシュメモリ110に有るか否かを判定する(S2601)。
ステップS2601で否定の判定結果を得た場合、即ち、対象の全ての冗長データ生成元のストライプデータ223がキャッシュメモリ110に無い場合、リビルド処理プログラム503は、対象のストライプデータ223をドライブ113から読み出し、読み出したストライプデータ223をキャッシュメモリ110に転送する(S2602)。
その後、リビルド処理プログラム503は、対象となる冗長データの復元を実施し(S2603)、復元された冗長データをキャッシュメモリ110から対象のドライブ113に転送し(S2604)、処理対象のストライプ列204に相当するリビルド済みビットをONにし(S2605)、その後、非同期中ビットをOFFにし(S2606)、その後、非同期中領域数カウンタフィールド802の個数をデクリメントし(S2607)、このルーチンでの処理を終了する。
ステップS2401で肯定の判定結果を得た場合、即ち、対象の全ての復元元のストライプデータ223がキャッシュメモリ110にある場合、リビルド処理プログラム503は、対象となる冗長データの復元を実施し(S2603)、復元された冗長データをキャッシュメモリ110から対象のドライブ113に転送し(S2604)、処理対象のストライプ列204に相当するリビルド済みビットをONにし(S2605)、その後、非同期中ビットをOFFにし(S2606)、その後、非同期中領域数カウンタフィールド802の個数をデクリメントし(S2607)、このルーチンでの処理を終了する。
図27は、論理ボリューム毎のパラメタの設定のためのGUIを表わす画面構成図である。
図27において、設定画面2701は、設定対象の論理ボリューム200を特定できる論理ボリューム番号を表示する領域2702と、簡易設定を選択する領域2703と、詳細設定を行う領域2704,2705,2706で構成される。
領域2704には、非同期冗長データ生成モードとして、高頻度アクセス領域のみ冗長データの更新を遅らせる場合、「ON」が設定され、常に冗長データの更新を実施する場合、「OFF」が設定される。
領域2705には、リビルド動作モードとして、I/O同期リビルドを常に実施する場合、「High Speed」が設定され、ホストI/Oに優先してリビルド処理を実行する場合、「Normal」が設定される。
領域2706には、許容非同期化容量として、高頻度アクセス領域のみ冗長データの更新を遅らせる場合に、対象とする領域の最大サイズ、例えば、10MBが設定される。
領域2704、2705、2706がそれぞれ設定された場合、プロセッサ119は、設定テーブル406のうち、領域2702で設定された論理ボリューム200のエントリを新規設定又は更新する。ただし、領域2706に設定される許容非同期化容量は、対象とする領域の容量(MB)を、ストライプ列204の個数に換算し、換算した個数を、設定テーブル406の設定項目フィールド1102のうち、「許容非同期化容量」に対応した設定内容フィールド1103の値として、設定テーブル406に格納する。
なお、上記で述べた詳細設定の設定値を「preSet1」のようなラベルで保存しておき、領域2703に、「preSet1」を簡便に設定するようにしてもよい。
図28は、本発明の効果を説明するための説明図である。
図28において、ライトアクセスの対象となる領域2800は、例えば、高頻度Writeアクセスが発生している領域2801と、低頻度Writeアクセスが発生している領域2802に分けることができる。
この際、領域2801は、例えば、80%のI/O負荷が、領域2800全体の20%の領域に集中している領域(以下、ホットスポットと称することがある。)である。領域2802は、例えば、20%のI/O負荷が、領域2800全体の80%の領域に発生している領域(以下、非アクティブ領域と称することがある。)。
上述のように、IOに偏りがあることを仮定した場合に、本発明の効果は、以下のテーブル2804で表される。
テーブル2804では、本発明の方式により、高頻度Writeアクセスの領域2801のパリティライトを遅らすために、RAID6と比較して、ライトペナルティの影響をシステム全体として抑えることができ、RAID5と比較して、信頼性も向上させることができることを示している。
具体的には、ホストアクセスがWriteのみのRandomアクセスであると仮定すると、RAID5の場合、1回のホストアクセスにより、4回のドライブアクセスが発生する。よって、ホストI/Oのスループット性能は、1/4となる。RAID6の場合、1回のホストアクセスにより、6回のドライブアクセスが発生する。よって、ホストI/Oのスループット性能は、1/6となる。
これに対して、本方式では、ホットスポット2801に対する1回のホストアクセスは、4回のドライブアクセスとなり、非アクティブ領域2802に対する1回のホストアクセスは、6回のドライブアクセスとなる。
よって、1回のホストアクセスに対する平均のドライブアクセス回数は、1/(4*0.8 + 6*0.2) = 4.4となり、ホストI/Oのスループット性能は、1/4.4となる。
ここで、RAID5のスループットを1としたときに、RAID6のスループットは、ライトペナルティの影響が大きく、0.66となるが、本方式のスループットは、0.9であり、RAID6ほどのライトペナルティの影響は受けず、スループット低下を抑えることができる。
また、ホットスポット2801は、領域2800全体の20%程度であるため、ドライブ故障時の冗長度の回復時間を20%に削減することができる。これにより、論理ボリューム200の信頼性(MTTDL : Mean Time To Data Loss)をRAID5と比較し、最大で5倍に向上させることができる。
また、リビルド動作 モードを「High Speed」に設定した場合、ホストI/Oが、高負荷な状態でも、I/Oに同期したリビルド処理を実施することにより、リビルド時間を削減する効果を持つため、さらに信頼性を向上させることができる。
図29は、リビルド処理実行制御プログラムの処理を説明するためのフローチャートである。
リビルド処理実行制御プログラム505は、リビルド処理プログラム503を実行する契機を制御するプログラムである。
リビルド処理実行制御プログラム505は、ストレージシステムがホストからI/Oアクセスが可能になるまでに実行が開始され、非同期的に動作し続ける処理である。
まず、リビルド処理実行制御プログラム505は、ドライブ故障が発生したか否かを判定する(S2901)。この際、リビルド処理実行制御プログラム505は、例えば、論理物理アドレス変換テーブル401のドライブ状態フィールド605を参照し、故障中のドライブ113が有るかどうかで判断する。
ステップS2901で否定の判定結果を得た場合、即ち、ドライブ故障が発生していない場合、リビルド処理実行制御プログラム505は、対象のドライブ113が低負荷か否かを判定する(S2902)。
この際、リビルド処理実行制御プログラム505は、例えば、アクセス頻度テーブル405の対象の論理ボリューム200のアクセス頻度カウンタフィールド1003のアクセス頻度カウンタの合計値が、一定の閾値を超えたかどうかで判断する。なお、アクセス頻度カウンタフィールド1003の値とは別の論理ボリューム番号ごとのアクセス頻度カウンタを保持し、保持した量が、一定の閾値を超えたかどうかで判断してもよい。
ステップS2902で否定の判定結果を得た場合、即ち、対象のドライブ113が低負荷でない場合、リビルド処理を実行し(S2903)、その後、一定期間待ってから(S2904)、再度ステップS2901に戻り、ステップS2901の処理を実行する。
なお、リビルド処理実行制御プログラム505は、ドライブ故障が発生した契機又は、対象のドライブ113が低負荷となった状態で、一定期間待つステップS2904の処理を中断し、ステップS2901の処理に移行することもできる。
ステップS2902が肯定の判定結果を得た場合、即ち、対象のドライブ113が低負荷である場合、リビルド処理実行制御プログラム505は、リビルド処理を実行し(S2905)、その後、一定期間待ってから(S2906)、再度ステップS2901に戻り、ステップS2901の処理を実行する。
なお、リビルド処理実行制御プログラム505は、ドライブ故障が発生した契機で、一定期間待つステップS2906の処理を中断し、ステップS2901の処理に移行することもできる。
一方、ステップS2901で肯定の判定結果を得た場合、即ち、故障中のドライブ113が存在する場合、リビルド処理実行制御プログラム505は、リビルド処理を実行し(S2907)、その後、一定期間待ってから(S2908)、再度ステップS2901に戻り、ステップS2901の処理を実行する。
上記のステップS2904、S2906、S2908における一定期間待つ期間の量(t1、t2、t3)については、それぞれの期間の量に差をつける(例:t1>t2>t3)ことにより、リビルド処理の頻度やリビルド処理によるドライブ113に対する負荷量を調整することができる。例えば、ドライブ故障時は、データロストの危険を回避すべく、他よりもリビルド処理時間を短くするため、短い待ち時間とすることができる。また、ドライブ113が低負荷の場合は、ホスト101によるドライブ113への負荷が低いため、よりリビルド処理を積極的に実施するため、短い待ち時間とすることができる。もちろん、上記の例のように“高負荷”、“低負荷”の2段階だけでなく、より段階的に待ち時間を調整してもよい。
本実施例によれば、冗長化されたディスク構成をサポートするストレージシステムにおいて、障害耐性を確保する一方で、データ更新に伴い発生する冗長データの更新をドライブに反映する際に、ドライブアクセス時間が長くなり、I/Oのスループットが低下するのを防止することができる。
(第2実施例)
図30は、本発明の第2実施例に係る計算機システムの論理構成図である。
以下、本発明の第2実施例に係る計算機システムの論理構成のうち、図2と異なる点についてのみ説明する。
第1実施例の方法は、ドライブ113のどこにストライプデータ223を配置しているかは依存しない。例えば、図2のように8台のドライブ113Aでストライプ列204を構成する必要はなく、ストレージシステム104に実装される全てのドライブ113を使って、ストライプ列204を構成してもよいし、一部のドライブ113を使って、ストライプ列204を構成してもよい。スペアドライブ113Bの使用領域も同様である。
これに対して、第2実施例では、図30に示すように、ストライプ列3001が、不規則にドライブ113から割り当てられている。
ストライプ列3001を、不規則にドライブ113に割り当てる際には、同一のドライブ113に複数のストライプデータ3002を配置しないようにする。
これは、冗長度が低くならないようにするためである。スペアドライブ113Bは、未使用のストライプデータ3002を割り当てて使用する。勿論、同一のドライブ113Bに複数のストライプデータ3002を配置しないようにスペアドライブ113Bを選択する。
また、本実施例は、RAID6のようなデータ配置だけでなく、Triplicationにおいても適用できる。
具体的には、通常のTriplicationの構成の場合、1個のデータに対して、2個の冗長データをドライブ113に作成し、3重に同期的に更新を実施する。
本実施例によれば、高負荷の領域に対して、3個目のデータの更新を非同期に実施することで、ライトペナルティによる性能影響を低減する(RAID1のような2重化の状態に近くする)ことが可能となる。
また、上述の方法は、特許文献2に記載のようなパリティの容量を削減する技術と組み合わせることにより、ユーザの使用できる容量を物理的な容量により近づけ効率化することが可能である。
以上詳述したように、本発明は、複数のドライブ113を冗長化されたデータの記憶領域として管理するストレージシステムに利用することでき、障害耐性を確保する一方で、データ更新に伴い発生する冗長データの更新をドライブに反映する際に、ドライブアクセス時間が長くなり、I/Oのスループットが低下するのを防止することができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、IC(Integrated Circuit)カード、SD(Secure Digital)メモリカード、DVD(Digital Versatile Disc)等の記録媒体に記録して置くことができる。
101 ホスト、102 管理サーバ、103 ネットワーク、104 ストレージシステム、106 ポート、107 保守I/F、109 プロセッサパッケージ、110 キャッシュメモリ、111 共有メモリ、112 内部ネットワーク、113 ドライブ、118 ローカルメモリ、119 プロセッサ。

Claims (16)

  1. ホストコンピュータに接続されたストレージシステムであって、プロセッサ、複数のドライブ、及び前記複数のドライブにより提供され、前記ホストコンピュータからのI/O要求のターゲットとなる論理ボリュームとを有し、
    前記複数のドライブは、それぞれが前記論理ボリュームに対する書き込みデータが分割された所定数のストライプデータとそのストライプデータに基づき生成される複数の冗長データとで構成された複数のストライプ列を有し、
    前記プロセッサは、
    前記ホストコンピュータからI/O要求を受信した場合、
    前記各ストライプ列が属する領域に対するアクセス頻度の高低を判別し、アクセス頻度の低い領域に属するストライプ列の中の冗長データを非同期化対象外の第1の冗長データとし、アクセス頻度の高い領域に属するストライプ列の中の冗長データのうち少なくとも一部を非同期化対象の第2の冗長データとし、前記I/O要求で指定されたストライプ列のストライプデータと当該ストライプ列の中の第1の冗長データとを更新し、
    前記I/O要求で指定されたストライプ列のストライプデータの更新とは異なるタイミングで、前記I/O要求で指定されたストライプ列の中の第2の冗長データを更新し、
    前記いずれかのドライブの障害時には、前記ホストコンピュータからのI/O要求に同期して、前記アクセス頻度の低い領域に属するストライプ列よりも、前記アクセス頻度の高いストライプ列であって、前記第2の冗長データを含むストライプ列に対するデータの復元処理を優先して実行することを特徴とするストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記複数のストライプ列の各々に対応したフラグ情報を格納するメモリを更に有し、
    前記プロセッサは、前記第2の冗長データを更新するまで、前記ストライプ列に対応するフラグをオンにすることを特徴とするストレージシステム。
  3. 請求項2に記載のストレージシステムであって、
    前記プロセッサは、前記フラグがオンになっているストライプに含まれる前記第2の冗長データを更新し、その更新が完了したら前記フラグをオフにすることを特徴とするストレージシステム。
  4. 請求項3に記載のストレージシステムであって、
    スペアドライブを更に有し、
    前記複数のドライブのいずれかが故障した場合、前記プロセッサは、前記フラグがオンになっている全てのストライプに含まれる前記第2の冗長データを更新し、その更新が完了したら、故障した前記ドライブに格納されていたデータを前記スペアドライブに復元することを特徴とするストレージシステム。
  5. ホストコンピュータに接続されたストレージシステムであって、プロセッサ、複数のドライブ、及び前記複数のドライブにより提供され、前記ホストコンピュータからのI/O要求のターゲットとなる論理ボリュームとを有し、
    前記複数のドライブは、それぞれが前記論理ボリュームに対する書き込みデータが分割された所定数のストライプデータとそのストライプデータに基づき生成される複数の冗長データとで構成された複数のストライプ列を有し、
    前記プロセッサは、
    前記ホストコンピュータからI/O要求を受信した場合、
    前記各ストライプ列が属する領域に対するアクセス頻度の高低を判別し、アクセス頻度の低い領域に属するストライプ列の中の冗長データを非同期化対象外の第1の冗長データとし、アクセス頻度の高い領域に属するストライプ列の中の冗長データのうち少なくとも一部を非同期化対象の第2の冗長データとし、前記I/O要求で指定されたストライプ列のストライプデータと当該ストライプ列の中の第1の冗長データとを更新し、
    前記I/O要求で指定されたストライプ列のストライプデータの更新と非同期で、前記I/O要求で指定されたストライプ列の中の第2の冗長データを更新し、
    前記いずれかのドライブの障害時には、前記ホストコンピュータからのI/O要求に同期して、前記アクセス頻度の低い領域に属するストライプ列よりも、前記アクセス頻度の高いストライプ列であって、前記第2の冗長データを含むストライプ列に対するデータの復元処理を優先して実行することを特徴とするストレージシステム。
  6. 請求項5に記載のストレージシステムであって、
    前記複数のストライプ列の各々に対応したフラグ情報を格納するメモリを更に有し、
    前記プロセッサは、前記モードが設定されていて前記第2の冗長データの更新が前記ストライプデータの更新と非同期で行われる場合、前記第2の冗長データを更新するまで、前記第2の冗長データが属する前記ストライプ列に対応するフラグをオンにすることを特徴とするストレージシステム。
  7. 請求項6に記載のストレージシステムであって、
    前記プロセッサは、前記フラグがオンになっているストライプに含まれる前記第2の冗長データを更新し、その更新が完了したら前記フラグをオフにすることを特徴とするストレージシステム。
  8. 請求項7に記載のストレージシステムであって、
    スペアドライブを更に有し、
    前記複数のドライブのいずれかが故障した場合、前記プロセッサは、前記フラグがオンになっている全てのストライプに含まれる前記第2の冗長データを更新し、その更新が完了したら、故障した前記ドライブに格納されていたデータを前記スペアドライブに復元することを特徴とするストレージシステム。
  9. ホストコンピュータに接続されたストレージシステムであって、プロセッサ、複数のドライブ、及び前記複数のドライブにより提供され、前記ホストコンピュータからのI/O要求のターゲットとなる論理ボリュームとを有し、
    前記複数のドライブは、それぞれが前記論理ボリュームに対する書き込みデータが分割された所定数のストライプデータとそのストライプデータに基づき生成される複数の冗長データとで構成された複数のストライプ列を有し、
    前記プロセッサは、
    前記ホストコンピュータからI/O要求を受信した場合、
    前記各ストライプ列が属する領域に対するアクセス頻度の高低を判別し、アクセス頻度の低い領域に属するストライプ列の中の冗長データを非同期化対象外の第1の冗長データとし、アクセス頻度の高い領域に属するストライプ列の中の冗長データのうち少なくとも一部を非同期化対象の第2の冗長データとし、前記I/O要求で指定されたストライプ列のストライプデータと当該ストライプ列の中の第1の冗長データとを更新し、
    前記I/O要求で指定されたストライプ列のストライプデータの更新と同期又は非同期で、前記I/O要求で指定されたストライプ列の中の第2の冗長データを更新し、
    前記いずれかのドライブの障害時には、前記ホストコンピュータからのI/O要求に同期して、前記アクセス頻度の低い領域に属するストライプ列よりも、前記アクセス頻度の高いストライプ列であって、前記第2の冗長データを含むストライプ列に対するデータの復元処理を優先して実行することを特徴とするストレージシステム。
  10. 請求項9に記載のストレージシステムであって、
    前記論理ボリュームの更新された領域に対するアクセス頻度が所定値よりも低い場合、更新された前記ブロックデータと同じストライプに属する前記第2の冗長データの更新を前記ブロックデータの更新と同期して行い、
    前記論理ボリュームの更新された領域に対するアクセス頻度が所定値よりも高い場合、更新された前記ブロックデータと同じストライプに属する前記第2の冗長データの更新を前記ストライプデータの更新と非同期で行うことを特徴とするストレージシステム。
  11. 請求項9に記載のストレージシステムであって、
    更新された前記ストライプデータを含む前記ストライプ列にはアクセス可能だが、前記論理ボリュームを提供する複数のドライブのいずれかに障害が発生している場合には、前記アクセス頻度に関わらず、更新された前記ストライプデータと同じストライプ列に属する前記第2の冗長データの更新を前記ストライプデータの更新と同期して行うことを特徴とするストレージシステム。
  12. 請求項9に記載のストレージシステムであって、
    前記ホストコンピュータからのI/O要求がシーケンシャルアクセスの場合には、前記アクセス頻度に関わらず、更新された前記ストライプデータと同じストライプ列に属する前記第2の冗長データの更新を前記ストライプデータの更新と同期して行うことを特徴とするストレージシステム。
  13. 請求項9に記載のストレージシステムであって、
    前記複数のストライプ列の各々に対応したフラグ情報を格納するメモリを更に有し、
    前記プロセッサは、前記第2の冗長データを更新するまで、前記ストライプ列に対応するフラグをオンにすることを特徴とするストレージシステム。
  14. 請求項13に記載のストレージシステムであって、
    前記プロセッサは、前記フラグがオンになっているストライプに含まれる前記第2の冗長データ更新し、その更新が完了したら前記フラグをオフにし、前記論理ボリュームに対して、前記フラグがオンになっているストライプ列の容量の上限を設定でき、
    スペアドライブを更に有し、
    前記複数のドライブのいずれかが故障した場合、前記プロセッサは、前記フラグがオンになっている全てのストライプ列に含まれる前記第2の冗長データを更新し、その更新が完了したら、故障した前記ドライブに格納されていたデータを前記スペアドライブに復元することを特徴とするストレージシステム。
  15. 請求項に記載のストレージシステムであって、
    前記プロセッサは、アクセス頻度の高い領域に属するストライプ列の容量が許容非同期化容量内であるか否かを判定し、当該判定で肯定の判定結果を得た場合、前記アクセス頻度の高い領域に属するストライプ列の中の冗長データを前記非同期化対象の第2の冗長データとし、前記判定で否定の判定結果を得た場合、前記アクセス頻度の高い領域に属するストライプ列の中の冗長データを前記非同期化対象外の第1の冗長データすることを特徴とするストレージシステム。
  16. 請求項1又は15に記載のストレージシステムであって、
    スペアドライブを更に有し、
    前記複数のドライブのいずれかからドライブ故障の兆候を検出した場合、前記プロセッサは、前記ドライブ故障の兆候が検出されたドライブに設定されたストライブ列のストライプデータのうち前記第2の冗長データと同じストライプ列のストライプデータを他のストライプデータに優先して前記スペアドライブに復元することを特徴とするストレージシステム。
JP2013558848A 2011-10-19 2011-10-19 ストレージシステム Expired - Fee Related JP5744244B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/005862 WO2013057764A1 (en) 2011-10-19 2011-10-19 Storage system

Publications (2)

Publication Number Publication Date
JP2014521130A JP2014521130A (ja) 2014-08-25
JP5744244B2 true JP5744244B2 (ja) 2015-07-08

Family

ID=48136972

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013558848A Expired - Fee Related JP5744244B2 (ja) 2011-10-19 2011-10-19 ストレージシステム

Country Status (3)

Country Link
US (2) US8707090B2 (ja)
JP (1) JP5744244B2 (ja)
WO (1) WO2013057764A1 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
CN105308574A (zh) 2013-06-28 2016-02-03 惠普发展公司,有限责任合伙企业 永久主存储器的容错
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
CN104658550A (zh) * 2013-11-19 2015-05-27 株式会社东芝 磁盘装置及其控制方法
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
GB201408125D0 (en) 2014-05-08 2014-06-25 Optasense Holdings Ltd Fibre optic distributed sensing
US9703491B2 (en) * 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10372613B2 (en) * 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10146448B2 (en) * 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10656840B2 (en) * 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9921754B2 (en) * 2015-07-28 2018-03-20 Futurewei Technologies, Inc. Dynamic coding algorithm for intelligent coded memory system
US10180803B2 (en) 2015-07-28 2019-01-15 Futurewei Technologies, Inc. Intelligent memory architecture for increased efficiency
US10437480B2 (en) 2015-12-01 2019-10-08 Futurewei Technologies, Inc. Intelligent coded memory architecture with enhanced access scheduler
KR102527992B1 (ko) 2016-03-14 2023-05-03 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR102665540B1 (ko) 2016-11-25 2024-05-10 삼성전자주식회사 비휘발성 메모리를 포함하는 raid 시스템
CN109213695B (zh) * 2017-06-30 2023-07-21 伊姆西Ip控股有限责任公司 缓存管理方法、存储系统以及计算机程序产品
US20190034306A1 (en) * 2017-07-31 2019-01-31 Intel Corporation Computer System, Computer System Host, First Storage Device, Second Storage Device, Controllers, Methods, Apparatuses and Computer Programs
CN109725827B (zh) * 2017-10-27 2022-05-13 伊姆西Ip控股有限责任公司 管理存储系统的方法、系统和计算机程序产品
JP6791834B2 (ja) * 2017-11-30 2020-11-25 株式会社日立製作所 記憶システム及び制御ソフトウェア配置方法
US10365826B1 (en) 2018-01-24 2019-07-30 Micron Technology, Inc. Command processing for a storage system
US10509753B2 (en) 2018-02-26 2019-12-17 Micron Technology, Inc. Dynamic allocation of resources of a storage system utilizing single root input/output virtualization
US11194663B2 (en) * 2019-09-20 2021-12-07 DigitalOcean, LLC Protocol for improving rebuild times of redundant array of independent disks
US11366601B2 (en) * 2020-06-22 2022-06-21 EMC IP Holding Company LLC Regulating storage device rebuild rate in a storage system

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2923702B2 (ja) * 1991-04-01 1999-07-26 株式会社日立製作所 記憶装置及びそのデータ修復方法
US5761402A (en) * 1993-03-08 1998-06-02 Hitachi, Ltd. Array type disk system updating redundant data asynchronously with data access
US5522031A (en) * 1993-06-29 1996-05-28 Digital Equipment Corporation Method and apparatus for the on-line restoration of a disk in a RAID-4 or RAID-5 array with concurrent access by applications
US5822584A (en) * 1995-10-13 1998-10-13 Compaq Computer Corporation User selectable priority for disk array background operations
US5720025A (en) 1996-01-18 1998-02-17 Hewlett-Packard Company Frequently-redundant array of independent disks
JP3133004B2 (ja) * 1996-11-21 2001-02-05 株式会社日立製作所 ディスクアレイ装置およびその制御方法
JP2001519563A (ja) * 1997-10-08 2001-10-23 シーゲイト テクノロジー エルエルシー ディスクドライブアレイおよびデータ格納方法
US6101615A (en) 1998-04-08 2000-08-08 International Business Machines Corporation Method and apparatus for improving sequential writes to RAID-6 devices
US6647514B1 (en) * 2000-03-23 2003-11-11 Hewlett-Packard Development Company, L.P. Host I/O performance and availability of a storage array during rebuild by prioritizing I/O request
US6675318B1 (en) * 2000-07-25 2004-01-06 Sun Microsystems, Inc. Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension
US6766480B2 (en) 2001-03-14 2004-07-20 Hewlett-Packard Development Company, L.P. Using task description blocks to maintain information regarding operations
US6732232B2 (en) * 2001-11-26 2004-05-04 International Business Machines Corporation Adaptive resource allocation in multi-drive arrays
US7139931B2 (en) * 2002-08-19 2006-11-21 Aristos Logic Corporation Method of controlling the system performance and reliability impact of hard disk drive rebuild
US7350101B1 (en) * 2002-12-23 2008-03-25 Storage Technology Corporation Simultaneous writing and reconstruction of a redundant array of independent limited performance storage devices
US7234077B2 (en) * 2003-06-24 2007-06-19 International Business Machines Corporation Rapid restoration of file system usage in very large file systems
US20060041793A1 (en) * 2004-08-17 2006-02-23 Dell Products L.P. System, method and software for enhanced raid rebuild
GB2418769B (en) * 2004-10-02 2009-06-17 Hewlett Packard Development Co Method and system for storing data
JP2006107311A (ja) * 2004-10-08 2006-04-20 Hitachi Ltd ディスクアレイ装置およびその制御方法
US20060123312A1 (en) 2004-11-19 2006-06-08 International Business Machines Corporation Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
US7386758B2 (en) * 2005-01-13 2008-06-10 Hitachi, Ltd. Method and apparatus for reconstructing data in object-based storage arrays
JP4817783B2 (ja) * 2005-09-30 2011-11-16 富士通株式会社 Raidシステム及びそのリビルド/コピーバック処理方法
JP4472617B2 (ja) * 2005-10-28 2010-06-02 富士通株式会社 Raidシステム、raidコントローラ及びそのリビルド/コピーバック処理方法
US7650533B1 (en) * 2006-04-20 2010-01-19 Netapp, Inc. Method and system for performing a restoration in a continuous data protection system
JP2009104412A (ja) * 2007-10-23 2009-05-14 Hitachi Ltd ストレージ装置及びその制御方法
US7962690B2 (en) 2008-01-04 2011-06-14 International Business Machines Corporation Apparatus and method to access data in a raid array
US7979635B2 (en) * 2008-02-14 2011-07-12 International Business Machines Corporation Apparatus and method to allocate resources in a data storage library
JP4862847B2 (ja) * 2008-03-07 2012-01-25 日本電気株式会社 ディスクアレイのデータ復旧方法、ディスクアレイシステム及び制御プログラム
US8086797B2 (en) * 2008-06-06 2011-12-27 Pivot3 Method and system for distributing commands to targets
US8006128B2 (en) * 2008-07-31 2011-08-23 Datadirect Networks, Inc. Prioritized rebuilding of a storage device
US8285952B2 (en) * 2009-09-17 2012-10-09 Hitachi, Ltd. Method and apparatus to utilize large capacity disk drives
US8918534B2 (en) * 2009-09-29 2014-12-23 Cleversafe, Inc. Writing data slices to ready and non-ready distributed storage units in a distributed storage network
US8589625B2 (en) * 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
US8726070B2 (en) * 2010-09-27 2014-05-13 Dell Products L.P. System and method for information handling system redundant storage rebuild
US9348696B2 (en) * 2010-10-01 2016-05-24 Pure Storage, Inc. Distributed multi-level protection in a raid array based storage system
US9128910B1 (en) * 2011-03-16 2015-09-08 Tintri Inc. Avoiding long access latencies in redundant storage systems
US8751861B2 (en) * 2012-02-08 2014-06-10 Lsi Corporation System and method for improved rebuild in RAID

Also Published As

Publication number Publication date
US20140223223A1 (en) 2014-08-07
US8707090B2 (en) 2014-04-22
JP2014521130A (ja) 2014-08-25
US20130103978A1 (en) 2013-04-25
WO2013057764A1 (en) 2013-04-25
US9519554B2 (en) 2016-12-13

Similar Documents

Publication Publication Date Title
JP5744244B2 (ja) ストレージシステム
JP5971354B2 (ja) ストレージシステム
US9378093B2 (en) Controlling data storage in an array of storage devices
US9037795B1 (en) Managing data storage by provisioning cache as a virtual device
US10042869B1 (en) Method for data transfer between compute clusters and file system
JP4818812B2 (ja) フラッシュメモリストレージシステム
US8938582B2 (en) Storage systems with reduced energy consumption
WO2016090541A1 (zh) 数据存储系统和数据存储方法
JP6889742B2 (ja) ストレージシステム、データ管理方法、及びデータ管理プログラム
US8495295B2 (en) Mass storage system and method of operating thereof
US10564865B2 (en) Lockless parity management in a distributed data storage system
US8386837B2 (en) Storage control device, storage control method and storage control program
Thomasian et al. Higher reliability redundant disk arrays: Organization, operation, and coding
US10372538B2 (en) Computer system
JP6663482B2 (ja) 計算機システム、物理記憶デバイスの制御方法、および記録媒体
US9223655B2 (en) Storage system and method for controlling storage system
US11449402B2 (en) Handling of offline storage disk
CN111857552A (zh) 存储管理方法、电子设备和计算机程序产品
WO2018051505A1 (ja) ストレージシステム
US20180307427A1 (en) Storage control apparatus and storage control method
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
Luo et al. Cdb: Critical data backup design for consumer devices with high-density flash based hybrid storage
Thomasian RAID Organizations for Improved Reliability and Performance: A Not Entirely Unbiased Tutorial
US11663080B1 (en) Techniques for performing live rebuild in storage systems that operate a direct write mode
Thomasian Mirrored and hybrid disk arrays: Organization, scheduling, reliability, and performance

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150318

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150428

R150 Certificate of patent or registration of utility model

Ref document number: 5744244

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees