JP5721344B2 - システム、システムの制御方法、及び、プログラム - Google Patents

システム、システムの制御方法、及び、プログラム Download PDF

Info

Publication number
JP5721344B2
JP5721344B2 JP2010107412A JP2010107412A JP5721344B2 JP 5721344 B2 JP5721344 B2 JP 5721344B2 JP 2010107412 A JP2010107412 A JP 2010107412A JP 2010107412 A JP2010107412 A JP 2010107412A JP 5721344 B2 JP5721344 B2 JP 5721344B2
Authority
JP
Japan
Prior art keywords
sector
rebuild process
failure
hdd
disk array
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
JP2010107412A
Other languages
English (en)
Other versions
JP2011237934A (ja
JP2011237934A5 (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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2010107412A priority Critical patent/JP5721344B2/ja
Priority to US13/100,109 priority patent/US8819522B2/en
Publication of JP2011237934A publication Critical patent/JP2011237934A/ja
Publication of JP2011237934A5 publication Critical patent/JP2011237934A5/ja
Application granted granted Critical
Publication of JP5721344B2 publication Critical patent/JP5721344B2/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/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
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、システム、システムの制御方法、及び、プログラムに関する。
一般にディスクアレイ装置は、複数の磁気ディスクドライブ(以下、HDDと称する)から構成されるディスクアレイと、このディスクアレイ内の各HDD(メンバーHDD)に対するアクセスを制御するディスクアレイコントローラとを備える。
ディスクアレイ装置は、複数のHDDに同一のデータを記憶させることによって信頼性の向上を図り、また、複数のHDDを並列に動かして読み出し/書き込みを分散して実行することでアクセスの高速化を図るものである。
ディスクアレイコントローラは、ホストコンピュータから転送される書き込みデータを複数のHDDに転送する、或いは、書き込みデータに対して、データ訂正情報としての冗長データを生成し、複数のHDDのうち、いずれかに転送する。
これにより、複数のHDDのうち、1台の故障に対して、この冗長データ、あるいは冗長データと残りのHDDのデータを用いて故障したHDDのデータを修復することを可能としている。
データ冗長化の手法の1つとして、RAID(Redundant Arrays of Inexpensive Disks)の手法が知られている。RAID手法では、RAIDのデータと冗長データとの関連において、種々のRAIDレベルに分類されており、中でもRAIDレベル1及びRAIDレベル5は、代表的なRAIDレベルである。
RAIDレベル1は、最低2台のHDDを必要とする。RAIDレベル1では、ホストコンピュータから転送される書き込みデータを複数のHDDにそれぞれ転送する。即ち、同一のデータを複数のHDDに書き込む。この構成により、1台のHDDが故障した場合、他のHDDを使用するように切り替えることで信頼性の向上を図る。また、故障したHDDに代えて用いられる新しいHDDに、切り替えられたHDDの全てのデータをコピーすることで、修復することができる。
RAIDレベル5は、最低3台のHDDを必要とする。例えば、RAIDレベル5をN台のHDDを用いて実現する場合、ホストコンピュータから転送される書き込みデータを分割し、該分割したデータをN−1台のHDDに分散して転送する。また、分割されたデータの排他的論理和演算を行い、該演算結果(パリティデータ)を残り1台のHDDに転送する。なお、RAIDレベル5では、パリティデータ専用のHDDは設けず、パリティデータを全てのHDDに分散して配置する。
また、データ更新時には、書き込みデータの格納先となるHDD内領域に格納されている書き込み前のデータ(旧データ)と、当該書き込みデータの格納先に対応する別のHDDの領域に格納されている更新前のパリティデータ(旧パリティデータ)を読み出す。そして、ホストコンピュータから転送される書き込みデータ(新データ)と旧データと旧パリティデータとの間の排他的論理和演算を行って、更新されたパリティデータ(新パリティデータ)を生成し、当該更新パリティデータで元のパリティデータを更新する。
RAIDレベル5では、1台のHDD故障に対して、他のHDDからディスクアレイのディスク領域を管理する単位であるストライプ毎にデータを読み出し、それらのデータの排他的論理和演算を行う。このRAIDの機能により、故障したHDDのデータを、代わりに用いられる新HDD内に修復することができる。
このように、RAID構成のディスクアレイ装置では、故障したHDDを修復することが可能となるが、近年のようにHDD容量が増加することでHDD修復時におけるHDDの未使用領域が増加する可能性が高くなっている。この時、HDDの未使用領域に故障したセクタが検出されると、HDD修復が停止してしまい、RAID手法による信頼性向上の恩恵を受けられない場合がある。
こうした状況に対して、ディスクアレイ装置内にHDD管理テーブルを設け、このHDD管理テーブルによりHDD内の故障発生個所が使用領域であるか判断し、HDD内の使用領域に保持されたデータのみを修復する技術が提案されている(特許文献1)。このような技術を用いることにより、未使用領域の故障セクタによる影響を回避することができる。
特開2002−175158号公報
しかし、HDDの故障発生率が低い場合に対して、HDD管理テーブル及び修復の必要性を判断する機能をディスクアレイ装置内に設ける構成は、次のような課題を有する。例えば、ディスクアレイ装置のコスト増加、構成の複雑化、及びHDD管理テーブルの更新に伴うHDDアクセスパフォーマンスの低下が課題となる。
なお、HDDアクセスパフォーマンスの低下を抑えるため、HDD管理テーブルの更新間隔を長くすることは可能である。しかし、HDD管理テーブルの更新間隔を長くすると、実際のHDD内の使用状態とHDD管理テーブルの情報に不一致が発生し、最悪の場合、使用領域での故障が発生したにもかかわらず、データ修復の必要がないと誤判断してしまう可能性があり問題である。
本発明は、上記の問題点を解決するためになされたものである。本発明の目的は、パフォーマンス低下やコストアップを招くことなく、リビルドによるデータ復旧を確実に行い、また、未使用領域でのエラーのように無視可能なエラーは無視してリビルドを継続させる仕組みを提供することである。
本発明は、複数の記憶装置によりRAIDを構築するシステムであって、前記複数の記憶装置のうち何れかの記憶装置に記憶されていたデータを他の記憶装置に記憶されているデータに基づいて新たな記憶装置に復元するリビルド処理を実行する実行手段と、前記リビルド処理の実行中にリード元の記憶装置においてセクタの故障が発見された際に、当該リビルド処理を停止させる停止手段と、前記故障が発見されたセクタが未使用であるか否か判断する判断手段と、前記故障が発見されたセクタが未使用であると前記判断手段が判断した場合に、当該故障が発見されたセクタからのリードをスキップして前記リビルド処理を再開させるように制御する制御手段と、を有することを特徴とする。
本発明によれば、パフォーマンス低下やコストアップを招くことなく、リビルドによるデータ復旧を確実に行い、また、未使用領域でのエラーのように無視可能なエラーは無視してリビルドを継続させることができる。
本発明の実施例1に係るディスクアレイシステム1000の構成を示す図である。 本発明の実施例1に係るディスクアレイシステム1000における記憶装置アレイ制御処理の概略フローを示す図である。 本発明の実施例1に係るディスクアレイ装置200のリビルド処理の一例を示すフローチャートである。 本発明の実施例1に係るホストコンピュータ100のリビルド処理の一例を示すフローチャートである。 本発明の実施例1に係るディスクアレイ装置200の故障セクタ情報送信処理の一例を示すフローチャートである。 本発明の実施例1に係るディスクアレイシステム1000の制御コマンド600のフォーマットを示す図である。 ディスクアレイ装置200からホストコンピュータ100に送信される割り込み要因情報のフォーマットを示す図である。 ディスクアレイ装置200からホストコンピュータ100に送信される故障セクタ情報のフォーマットを示す図である。 ホストコンピュータ100からディスクアレイ装置200から送信されるリビルド処理開始セクタ情報及びリビルド処理終了セクタ情報のフォーマットを示す図である。 本発明の実施例1に係るディスクアレイシステム1000で使用するファイルシステムのフォーマットを示す図である。 本発明の実施例2に係るディスクアレイシステム2000の構成を示す図である。 本発明の実施例2に係るディスクアレイ装置250のリビルド処理の一例を示すフローチャートである。 本発明の実施例2に係るホストコンピュータ150のリビルド処理の一例を示すフローチャートである。 本発明の実施例4に係るディスクアレイシステム1000における記憶装置アレイ制御処理の概略フローを示す図である。 本発明の実施例4に係るホストコンピュータ100のリビルド処理の一例を示すフローチャートである。
以下、本発明を実施するための形態について図面を用いて説明する。
図1は、本発明の実施例1に係るディスクアレイシステム1000の構成を示す図である。
図1に示すように、ディスクアレイシステム(記憶装置アレイシステム)1000は、情報処理装置としてのホストコンピュータ100、ディスクアレイ装置200、記憶装置であるHDD500、501及び502を有する。なお、本発明は、記憶装置をHDDに限定するものではなく、他の記憶装置、例えば、フラッシュメモリ等の半導体を使用した記憶装置等でも同様の結果を得ることが出来る。また、ディスクアレイ装置200に接続される記憶装置の台数も3台に限定されるものではなく、2台でも4台以上接続されていてもよい。
ホストコンピュータ100は、記憶装置であるHDD500、501及び502に対して、ディスクアレイ装置200を介して書き込み及び読み出しを行う。ホストコンピュータ100は、ディスクアレイ装置200の上位装置で、具体的には、パーソナルコンピュータ等の本体や、複合機(MFP)等の画像処理装置のコントローラ部等に対応する。なお、MFPは、Multifunction Peripheralを示す。なお、本発明では、記憶装置をHDDと限定するものではなく、半導体を使用した記憶装置等でも同様の結果を得ることが出来る。
ホストコンピュータ100、ディスクアレイ装置200、HDD500、501及び502は、シリアルATAインタフェース400により接続されている。本発明では、ホストコンピュータ100、ディスクアレイ装置200、HDD500、501及び502の接続をシリアルATAインタフェースに限定するものではなく、SASインタフェース等の他のインタフェースでも同様の結果を得ることが出来る。なお、SASは、Serial Attached SCSIを示す。
また、ホストコンピュータ100とディスクアレイ装置200は、割り込み信号線300でも接続されており、ディスクアレイ装置200が生成した割り込み信号を割り込み信号線300を介してホストコンピュータ100が受信する。
ホストコンピュータ100は、ファイルシステム機能部101と、プロセッサ102と、割り込み受信部103と、故障セクタ読み取り部104と、領域判定部105および動作指示部106を有する。
プロセッサ102は、中央演算処理装置であり、不図示のROMやHDDに記録された初期化プログラム、OS(Operating System)やその他のプログラムを実行することにより、ホストコンピュータ100の主制御を行う。割り込み受信部103は、例えば、割り込みコントローラであり、ディスクアレイ装置200からの割り込みを受信し、プロセッサ102に割り込み受信を通知する。なお、割り込み受信部103が、プロセッサ102に含まれる構成であってもよい。
ファイルシステム機能部101は、プロセッサ102により実行されるOSに含まれるファイル管理システム機能に対応し、後述する図10に示すファイル管理情報(FAT803、804等)にしたがって、HDDに記憶されるファイルにアクセスする。また、ファイルシステム機能部101は、ファイル管理情報を用いて、記憶装置内(HDD内)の各領域の使用状況を示す情報を管理している。ファイルシステム機能部101は、プロセッサ102が、HDDにコンピュータ読取可能に記録されたOSのプログラムを読み出して図示しないRAM上で実行することにより実現される機能に対応する。
故障セクタ読み取り部104は、プロセッサ102からの指示を受け、SATA I/F400を介してディスクアレイ装置200から故障セクタを読み取る。領域判定部105は、プロセッサ102からの指示を受け、ファイルシステム機能部101が管理するHDDの使用領域及び未使用領域に関する情報(後述する図10に示す803,804)と故障セクタ読み取り部104が読み取った故障セクタを比較する。そして、領域判定部105は、上記比較結果から、故障セクタが使用領域であるか、未使用領域であるかを判定し、該判定結果をプロセッサ102に通知する。動作指示部106は、プロセッサ102からの指示を受け、ディスクアレイ装置200に対して動作指示を行う。
なお、故障セクタ読み取り部104、領域判定部105、動作指示部106は、ハードウェアで構成されていてもよいし、ソフトウェア(OS上で動作するディスクアレイ装置200のデバイスドライバの機能)により実現される構成でもよい。104〜106は、ソフトウェアの場合、プロセッサ102が、HDDにコンピュータ読取可能に記録されたディスクアレイ装置200のデバイスドライバプログラムを読み出して図示しないRAM上で実行することにより実現される機能に対応する。
ディスクアレイ装置200は、SATAデバイス制御部201と、RAID制御部202と、セクタ保持部203と、割り込み送信部204およびSATAホスト制御部205を有する。
SATAデバイス制御部201は、ホストコンピュータ100からSATA I/F400を介して受信する書き込み要求および読み出し要求に従い、RAID制御部202に対して情報を送信する。また、SATAデバイス制御部201は、RAID制御部202からの制御に従い、ホストコンピュータ100に対して情報を送信する。
RAID制御部202は、SATAデバイス制御部201からの情報を受けて、RAIDと呼ばれる制御を行う。RAID制御部202は、SATAホスト制御部205からのHDD故障通知を受信した場合、セクタ保持部203に対して故障セクタ情報を転送すると共に、割り込み送信部204に対して割り込み送信指示を行う。なお、故障セクタ情報は、故障セクタ、HDD故障を検出したHDD ID及びHDD故障を検出したチャンネル情報を含む。
セクタ保持部203は、RAID制御部202からの故障セクタ情報を受けて、故障セクタ情報を保持する。また、セクタ保持部203は、RAID制御部202からの故障セクタ情報読み出し要求に従い、故障セクタ情報をRAID制御部202に通知する。
割り込み送信部204は、RAID制御部202からの割り込み送信指示を受けて、ホストコンピュータ100に対して割り込み信号線300を介して割り込みを送信する。また、割り込み送信部204は、RAID制御部202からの指示に従い、割り込み送信の要因をクリアする。また、割り込み送信部204は、RAID制御部202からの指示に従い、割り込みイネーブルの設定を行う。なお、セクタ保持部203、割り込み送信部204は、RAID制御部202に含まれる構成であってもよい。
SATAホスト制御部205は、RAID制御部202からの指示に従い、SATA I/F400を介してHDD500、501及び502に書き込み要求及び読み出し要求を行う。
図2は、本発明の実施例1に係るディスクアレイシステム1000における記憶装置アレイ制御処理の概略フローを示す図である。なお、ディスクアレイ装置200の処理は、RAID制御部202の制御により実行され、ホストコンピュータ100の処理は、プロセッサ102の制御により実行される。
ディスクアレイ装置200は、条件が揃うとリビルド処理を開始する(S100)。この条件は、故障したHDDに代わり、新しいHDDが接続されたことをディスクアレイ装置200が検出した場合や、ホストコンピュータ100からのリビルド指示をディスクアレイ装置200が受信した場合が想定される。しかし、それ以外の条件によるリビルド処理の開始であっても構わない。リビルド処理は、ディスクアレイ装置200内のRAID制御部202によって実行される。リビルド処理とは、RAID構成する複数の記憶装置に含まれる何れかの記憶装置(例えばHDD502)に記憶されるデータを他の記憶装置(HDD500、501)に記憶されるデータから復元する処理を示す。例えば、HDD500及びHDD501を正常なHDDとし、HDD502を故障により交換したHDDとし、RAIDレベルが「5」である場合のリビルド処理は次のようになる。
RAID制御部202は、HDD500及び501からデータを読み出し、読み出した結果から排他的論理和演算を行い、得られた結果を修復データとしてHDD502に書き込む。また、RAIDレベルが「1」であれば、RAID制御部202は、正常なHDD500及び501の内、RAID制御部202によって予め決められているマスターとなるHDDからデータを読み出し、これを修復データとしてHDD502に書き込む。
以下、図2のフローチャートの説明にもどる。
ディスクアレイ装置200のRAID制御部202は、リビルド処理中に正常なHDDに対する故障を検出すると、リビルド処理を停止し(S101)、割り込み送信部204を介してホストコンピュータ100に対して割り込みを通知する(S102)。
ホストコンピュータ100では、割り込み受信部103が割り込みを受信すると、故障セクタ読み取り部104がディスクアレイ装置200に対して故障セクタ読み出し指示を行う(S103)。
ディスクアレイ装置200は、ホストコンピュータ100からの故障セクタ読み出し指示を受けて、ホストコンピュータ100に故障セクタ情報を通知する(S104)。
ホストコンピュータ100では、故障セクタ読み取り部104がディスクアレイ装置200から故障セクタ情報を受信すると、領域判定部105が、該故障セクタ情報とファイルシステム機能部101からのHDDの未使用領域に関する情報を元に、故障セクタの判定を行う(S105及びS108)。
故障セクタ判定の結果、故障セクタが未使用領域であった場合(S105)、ホストコンピュータ100の動作指示部106がディスクアレイ装置200に対してリビルド処理の再開を通知する(S106)。この通知を受けたディスクアレイ装置200では、RAID制御部202が、リビルド処理を再開する(S107)。
リビルド処理再開時に、再度、正常なHDDに対する故障を検出すると、RAID制御部202はリビルド処理を停止し(S101)、割り込み送信部204を介してホストコンピュータ100に対して割り込みを通知する(S102)。
故障セクタ判定の結果、故障セクタが使用領域であった場合(S108)、ホストコンピュータ100のプロセッサ102は、ユーザに対してHDD故障を通知し(S109)、故障したHDDの交換を促す。例えば、ホストコンピュータ100の不図示のディスプレイに故障しているHDDを特定する情報をユーザに通知するためのメッセージを表示して、故障したHDDの交換を促す。
図3は、本発明の実施例1に係るディスクアレイ装置200のリビルド処理の一例を示すフローチャートである。なお、このフローチャートの処理は、RAID制御部202の制御により実行される。また、本フローチャートの説明では、HDD500及び501を正常とし、HDD502を故障により交換されたものとして説明を行うが、本発明は、これに限定されるものではない。
リビルド処理を開始すると、RAID制御部202は、正常なHDD500、501からデータをリードする(S200)と同時にエラーの確認を実施する(S201)。
正常なHDD500、501の故障等によるリードエラーの発生を確認(検知)した場合(S201でYes)、RAID制御部202は、故障セクタ(リビルドリードエラーのエラー発生箇所)を特定し、セクタ保持部203に故障セクタを保持させる(S202)。この時、RAID制御部202は、リードエラーを検出したHDD500或いはHDD501のIDも故障セクタとともにセクタ保持部203に保持させておく。
そして、RAID制御部202は割り込み送信部204に対してホストコンピュータ100への割り込み要求を行う(S203)。これにより、割り込み送信部204により、リードエラーの割り込みが生成され、ホストコンピュータ100に送信される。なお、S203の処理では、割り込み送信部204は内部の割り込み要因レジスタに、割り込み要因がリビルド処理時のリードエラー(リビルドリードエラー)であることを示す情報を保持しておく。そして、RAID制御部202は、リビルド処理を停止させ(S204)、本フローチャートの処理を終了する。
なお、この後、ホストコンピュータ100から割り込み要因読み取りコマンドを受信すると、RAID制御部202は、割り込み要因がリビルド処理時のリードエラー(リビルドリードエラー)であることを示す情報を割り込み送信部204から取得してホストコンピュータ100に送信する(不図示の処理)。さらに、ホストコンピュータ100から故障セクタの確認コマンドを受信すると、RAID制御部202は、セクタ保持部203に保持された故障セクタ情報をホストコンピュータ100に送信する(後述する図5に示す処理)。さらに、ホストコンピュータ100からリビルド再開指示を受信すると、RAID制御部202は、リビルド再開指示で指示されたセクタ(例えば、故障セクタの次のセクタ)からリビルド処理を再開する。
一方、上記S201において、リードエラーが発生していないと判定した場合(S201でNo)、RAID制御部202は、リードデータから修復データを生成し、HDD502にデータを書き込みを行う(S205)。
そして、RAID制御部202は、全ての領域に対してデータ修復を行ったかどうかを確認する(S206)。そして、まだデータ修復未実施の領域が存在すると判定した場合(S206でNo)、RAID制御部202は、S200に処理を戻し、次のデータをリードする。
一方、全てのデータが修復されたと判定した場合(S206でYes)、RAID制御部202は、割り込み送信部204に対してホストコンピュータ100へのリビルド処理完了の割り込み送信指示を行う(S207)。これにより、割り込み送信部204により、リビルド処理完了の割り込みが生成され、ホストコンピュータ100に送信され、本フローチャートの処理が終了する。なお、この後、ホストコンピュータ100から割り込み要因読み取りコマンドを受信すると、RAID制御部202は、割り込み要因がリビルド処理完了であることを示す情報をホストコンピュータ100に送信する(不図示の処理)。
なお、RAID制御部202は、ホストコンピュータ100から割り込み要因クリアコマンドを受信すると、割り込み送信部204内の割り込み要因レジスタに保持されている割り込み要因を示す情報をクリアする(不図示の処理)。
図4は、本発明の実施例1に係るホストコンピュータ100のリビルド処理の一例を示すフローチャートである。なお、このフローチャートの処理は、プロセッサ102の制御により実行される。また、本フローチャートの説明では、HDD500及び501を正常とし、HDD502を故障により交換されたものとして説明を行うが、本発明は、これに限定されるものではない。
ホストコンピュータ100のプロセッサ102は、動作指示部106に対してディスクアレイ装置200にリビルド処理開始コマンドの送付を指示し、動作指示部106はこの指示に従いリビルド処理開始コマンドを送信する(S300)。ホストコンピュータ100は、ディスクアレイ装置200からの割り込み受信待ちとなる(S301)。なお、ディスクアレイ装置200が故障したHDDに代わり新しいHDDが接続されたことを検出したことにより、リビルド処理を開始した場合は、S301の処理から開始するものとする。
そして、プロセッサ102は、割り込み受信部103が割り込みを受信したと判定すると(S301でYes)、動作指示部106に対して割り込み要因読み取りコマンドの送付を指示する。この指示に従い、動作指示部106が割り込み要因読み取りコマンドをディスクアレイ装置200に送信し、ディスクアレイ装置200から割り込み要因を示す情報を取得することで、プロセッサ102は割り込み要因を確認する(S302)。なお、プロセッサ102は、割込み要因を確認した後、不図示のステップにおいて、動作指示部106に対して割り込み要因クリアコマンドの送付を指示する。この指示に従い、動作指示部106が割り込み要因クリアコマンドをディスクアレイ装置200に送信する。
次に、プロセッサ102は、割り込み要因がリビルド処理時のリードエラー(リビルドリードエラー)か否か判定する(S303)。そして、リビルドリードエラーと判定した場合(S303でYes)、プロセッサ102は、ホストコンピュータ100からHDD500、501および502内のファイルにアクセス中であるか否かを確認する(S304)。
そして、ファイルアクセス中でないと判定した場合(S304でNo)、プロセッサ102は、故障セクタ確認処理を行う(S306)。
一方、ファイルアクセス中と判定した場合(S304でYes)、プロセッサ102は、ファイルアクセス終了まで待ち、ファイルアクセスが終了したと判断した場合(S305でYes)、故障セクタ確認処理を行う(S306)。
S306の故障セクタ確認処理では、プロセッサ102は、故障セクタ読み取り部104に故障セクタの確認を指示する。この指示に従い、故障セクタ読み取り部104が故障セクタ読み取りコマンドをディスクアレイ装置200に送信し、ディスクアレイ装置200から故障セクタ情報を取得することで、故障セクタを確認する。なお、故障セクタ読み取り部104は、故障セクタ情報を領域判定部105に送信する。なお、故障セクタ情報には、故障が検出されたHDD500或いはHDD501のIDも含まれる。また、プロセッサ102は、ファイルシステム機能部101からHDD500、501及び502における未使用領域の情報を取得し、領域判定部105に未使用領域の情報を送信する。
次に、プロセッサ102からの指示により領域判定部105は、上記取得した故障セクタ情報と未使用領域情報から故障セクタが使用領域であるか、又は、未使用領域であるかを確認(判定)し(S307)、確認結果をプロセッサに通知する。
そして、故障セクタが未使用領域であると判定した場合(S307でYes)、プロセッサ102は、上記確認したリビルド処理中のエラーを無視すると判断する。即ち、この場合、プロセッサ102は、上記確認したリビルド処理中のエラーがリビルド処理を継続させるべきエラーであると判断する。そして、プロセッサ102は、動作指示部106からリビルド処理再開の指示をディスクアレイ装置200に対して送付する(S308)(エラースキップ制御処理)。なお、リビルド処理の再開に関しては、故障セクタの次のセクタから再開をさせるように指示しても良いし、また、次の使用領域の先頭セクタから再開させるように指示しても良い。
そして、リビルド処理の再開指示を行った後は、プロセッサ102は、S301に処理を戻し、再び、割り込み受信待ちとなる。なお、RAID制御部202は、このリビルド処理の再開指示を受けると、前記リビルド処理の再開指示で指示された開始セクタから(例えば、故障セクタの次のセクタや、次の使用領域の先頭セクタから)、リビルド処理を再開する。即ち、RAID制御部202は、故障セクタをスキップしてリビルド処理を再開する。なお、ここでは、ホストコンピュータ100からリビルド処理の開始セクタを指定する構成とした。しかし、ホストコンピュータ100から単にリビルドの再開を指示し、RAID制御部202が故障セクタの次のセクタから(故障セクタをスキップして)リビルド処理を再開するようにしてもよい。
一方、故障セクタが未使用領域ではなかったと判定した場合(S307でNo)、プロセッサ102は、上記確認したリビルド処理中のエラーを無視しないと判断する(エラーと認識する)。即ち、この場合、プロセッサ102は、上記確認したリビルド処理中のエラーがリビルド処理を継続不可能なエラーであると判断する。そして、プロセッサ102は、ユーザに対してHDD故障を通知する(S309)。例えば、ホストコンピュータ100の不図示のディスプレイに故障しているHDDを特定する情報をユーザに通知するためのメッセージを表示して、故障したHDDの交換を促す。そして、プロセッサ102は、ディスクアレイシステム1000としてリビルド処理を完了させ(S311)、本フローチャートの処理を終了する。
また、割り込み要因がリビルド処理時のリードエラーではないと判定した場合(S303でNo)、プロセッサ102は、割り込み要因がリビルド処理完了であるか判定する。そして、割り込み要因がリビルド処理完了であると判定した場合(S310でYes)、プロセッサ102は、ディスクアレイシステム1000としてリビルド処理を完了させ(S311)、本フローチャートの処理を終了する。
一方、割り込み要因がリビルド処理完了でないと判定した場合(S310でNo)、プロセッサ102は、割り込み要因に従ったその他の処理を実施し(S312)、S301に処理を戻し、再び、割り込み受信待ちとなる。
図5は、本発明の実施例1に係るディスクアレイ装置200の故障セクタ情報送信処理の一例を示すフローチャートである。なお、このフローチャートの処理は、RAID制御部202の制御により実行される。また、本フローチャートの説明では、HDD500及び501を正常とし、HDD502を故障により交換されたものとして説明を行うが、本発明は、これに限定されるものではない。
SATAデバイス制御部201が、ホストコンピュータ100から故障セクタ送信コマンドを受け取ると、SATAデバイス制御部201はRAID制御部202に受信コマンドに関する情報を伝達する。そして、RAID制御部202は故障セクタ送信コマンドを受信する(S400)。
RAID制御部202は、上記受信した故障セクタ送信コマンドに従った処理を開始し、セクタ保持部203に保持された故障セクタ情報を読み取る(S401)。
次に、RAID制御部202は、上記読み取った故障セクタ情報から、後述する図8に示す故障セクタ情報のフォーマットに従ったデータ(送信用の故障セクタ情報)を作成し、SATAデバイス制御部201に送信する。SATAデバイス制御部201は、上記受け取った故障セクタ情報をホストコンピュータ100に送信する(S402)。
図6は、本発明の実施例1に係るディスクアレイシステム1000の制御コマンド600のフォーマットを示す図である。
図6において、600はディスクアレイ装置200に対する制御コマンドである。実施例1のディスクアレイ装置200では、制御コマンド600としてATAで規定されているコマンドフォーマットを使用する。
制御コマンド600において、Featuresフィールド601は、対応する制御IDが挿入される。実施例1に係るディスクアレイシステム1000では、割り込みイネーブルコマンドに「0x00」、割り込み要因読み取りコマンドに「0x01」を割り当てる。また、割り込み要因クリアコマンドに「0x02」を割り当てる。また、故障セクタ読み取りコマンドに「0x10」を割り当てる。また、故障セクタクリアコマンドに「0x11」を割り当てる。また、リビルド処理開始コマンドに「0x20」を割り当てる。また、リビルド処理停止コマンドに「0x21」を割り当てる。また、リビルド処理再開コマンドに「0x22」を割り当てる。
Commandフィールド602は、ATAで規定されているコマンドが挿入される。実施例1に係るディスクアレイシステム1000では、ベンダ定義コマンドとして規定されている「0xFF」を使用する。C/I/Dフィールド603は、ソフトリセット制御、等の指示に使用される。
FIS Typeフィールド604は、Frame Information Structureと呼ばれるフレーム構造を指定する。実施例1に係るディスクアレイシステム1000では、Host−to−Device Registerタイプとして規定されている「0x27」を使用する。
Dev/Headフィールド605は、HDDヘッド番号、マスター/スレーブデバイス、LBA/CHS切り替え指示等の情報が挿入される。Cyl Highフィールド606は、上位HDDシリンダ番号、等が挿入される。Cyl Lowフィールド607は、下位HDDシリンダ番号、等が挿入される。
Sec Numフィールド608は、HDDセクタ番号が挿入される。Features(exp)フィールド609は、拡張されたFeaturesフィールド601として使用される。Cyl High(exp)フィールド610は、137GByte容量を越えるHDDに対する上位LBAが割り当てられる。Cyl Low(exp)フィールド611は、137GByte容量を越えるHDDに対する下位LBAが割り当てられる。Sec Num(exp)フィールド612は、137GByte容量を越えるHDDセクタ番号が挿入される。Controlフィールド613は、HDD制御に使用される。
Sec Cnt(exp)フィールド614は、137GByte容量を越えるHDDに対する連続的に処理されるセクタ数が挿入される。Sec Cntフィールド615は、連続的に処理されるセクタ数が挿入される。Reservedフィールド616は、今後の機能拡張用に確保され、現在は未使用となっている。
図7は、ディスクアレイ装置200からホストコンピュータ100に送信される割り込み要因情報のフォーマットを示す図である。
割り込み要因情報は、700、701に示すように、アドレス0x000〜0x003の4Byteに、割り込み要因を示す情報を格納する領域が割り当てられている。また、702、703に示すように、アドレス0x004〜0x1FFの508Byteに、Reserved領域が割り当てられている。
さらに、図示しないが、割込み要因(アドレス0x000〜0x003)のBit0にはリビルド処理リードエラーが割り当てられており、Bit0に"1"が設定されている場合、割り込み要因がリビルド処理リードエラーであることを示す。また、Bit1にはリビルド処理ライトエラーが割り当てられており、Bit1に"1"が設定されている場合、割り込み要因がリビルド処理ライトエラーであることを示す。また、Bit2にはリビルド処理完了が割り当てられており、Bit2に"1"が設定されている場合、割り込み要因がリビルド処理完了であることを示す。また、Bit8にはチャンネルAのHDD接続検出が割り当てられており、Bit8に"1"が設定されている場合、割り込み要因がチャンネルAのHDD接続検出であることを示す。また、Bit9にはチャンネルAのHDD切断検出が割り当てられており、Bit9に"1"が設定されている場合、割り込み要因がチャンネルAのHDD切断検出であることを示す。
また、Bit16にはチャンネルBのHDD接続検出が割り当てられており、Bit16に"1"が設定されている場合、割り込み要因がチャンネルBのHDD接続検出であることを示す。また、Bit17にはチャンネルBのHDD切断検出が割り当てられており、Bit17に"1"が設定されている場合、割り込み要因がチャンネルBのHDD切断検出であることを示す。また、Bit24にはチャンネルCのHDD接続検出が割り当てられており、Bit24に"1"が設定されている場合、割り込み要因がチャンネルCのHDD接続検出であることを示す。また、Bit25にはチャンネルCのHDD切断検出が割り当てられており、Bit25に"1"が設定されている場合、割り込み要因がチャンネルCのHDD切断検出であることを示す。
ディスクアレイ装置200では、RAID制御部202がイベントを検出すると、各イベントに対応した割り込み要求を割り込み送信部204に指示する。
なお、割り込み送信部204は、その内部に、割り込みイネーブルレジスタと、割り込み要因レジスタを有する。RAID制御部202は、ホストコンピュータ100から割り込みイネーブルコマンドを受け取ると、割り込みイネーブルの設定を割り込み送信部204に指示する。割り込み送信部204は、RAID制御部202からの指示に従い、割り込みイネーブルレジスタの対応したBitを"1"に設定する。これにより、割り込み送信部204は、RAID制御部202から割り込み要求を受けても、もしその割り込みに対応するイネーブルレジスタのBitに"1"が設定されていると、その割込み要求は処理しない。一方、もしその割り込みに対応するイネーブルレジスタのBitに"1"に設定されていないと、RAID制御部202からの割込み要求に対応する割込み要因レジスタのBitを"1"に設定し、割り込み信号線300を介して割り込みを送信する。
また、RAID制御部202は、割り込み要因読み取りコマンドを受け取ると、割り込み送信部204の割込み要因レジスタの値を読み取り、その値から図7に示すフォーマットに従って割り込み要因を示す情報を生成し、割り込み要因をホストコンピュータ100に送信する。
また、RAID制御部202は、割り込み要因クリアコマンドを受け取ると、割り込み要因のクリアを割り込み送信部204に指示する。割り込み送信部204は、RAID制御部202からの指示に従い、割り込み要因レジスタ内の"1"が設定されているBitに対して割り込み要因のクリアを実施する。
図8は、ディスクアレイ装置200からホストコンピュータ100に送信される故障セクタ情報のフォーマットを示す図である。
故障セクタ情報は、710、711に示すように、アドレス0x000〜0x003の4Byteに、故障セクタの下位28Bitの情報を格納する領域が割り当てられている。また、712、713に示すように、アドレス0x004〜0x007の4Byteに、故障セクタの上位20Bitの情報を格納する領域が割り当てられている。
さらに、714、715に示すように、アドレス0x008〜0x00Bの4Byteに、故障セクタが検出されたHDDのIDを格納する領域が割り当てられている。さらに、716、717に示すように、アドレス0x00C〜0x00Fの4Byteに、故障セクタが検出されたHDDの接続チャネル情報を格納する領域が割り当てられている。
また、718、719に示すように、アドレス0x010〜0x1FFの496Byteに、Reserved領域が割り当てられている。
RAID制御部202は、動作中に検出した故障セクタ48Bitの情報を、上位20Bitと下位28Bitに分け、それぞれのアドレス0x000〜0x003及びアドレス0x004〜0x007にフォーマットに従って挿入する。また同時に、RAID制御部202は、故障セクタを検出したHDDのID情報をアドレス0x008〜0x00Bに挿入し、さらに、故障セクタを検出したHDDが接続されているチャンネル情報をアドレス0x00C〜0x00Fに挿入する。そして、RAID制御部202は、このようにして生成された故障セクタ情報を、ホストコンピュータ100に送信する。
図9は、ホストコンピュータ100からディスクアレイ装置200から送信されるリビルド処理開始セクタ情報及びリビルド処理終了セクタ情報のフォーマットを示す図である。なお、リビルド処理開始セクタ情報は、リビルド処理を再開すべきセクタの情報に対応し、リビルド処理終了セクタ情報は、リビルド処理を終了すべきセクタの情報に対応する。
リビルド処理開始セクタ情報及びリビルド処理終了セクタ情報は、720、721に示すように、アドレス0x000〜0x003の4Byteに、リビルド処理開始セクタの下位28Bitの情報を格納する領域が割り当てられている。また、722、723に示すように、アドレス0x004〜0x007の4Byteに、リビルド処理開始セクタの上位20Bitの情報を格納する領域が割り当てられている。
また、724、725に示すように、アドレス0x008〜0x00Bの4Byteに、リビルド処理終了セクタの下位28Bitの情報を格納する領域が割り当てられている。また、726、727に示すように、アドレス0x00C〜0x00Fの4Byteに、リビルド処理終了セクタの上位20Bitの情報を格納する領域が割り当てられている。
また、728、729に示すように、アドレス0x010〜0x1FFの496Byteに、Reserved領域が割り当てられている。
プロセッサ102は、故障セクタが未使用領域である場合に、リビルド処理再開コマンドに、図9に示すリビルド処理開始セクタ情報及びリビルド処理終了セクタ情報を加えて、動作指示部106からディスクアレイ装置200に送信するように制御する。
ディスクアレイ装置200のRAID制御部202は、受け取ったリビルド処理再開コマンドに従い、リビルド処理開始セクタからリビルド処理を再開し、リビルド処理終了セクタまでリビルド処理を実行するように制御する。
なお、ディスクアレイシステム1000は、リビルド処理をHDD500、501の全領域に対して実行するが、ファイルシステム機能部101が管理する情報に従い、リビルド処理の領域を予め使用領域に限定して実行することも可能である。
図10は、本発明の実施例1に係るディスクアレイシステム1000で使用するファイルシステムのフォーマットを示す図である。
図10において、ファイルシステム800は、ファイルシステム機能部101が用いるファイルシステムの一例としてFAT16を使用する場合に対応する。
マスターブートレコード801は、HDD500、501及び502のセクタNo.0に保持される512Byteのデータである。マスターブートレコード801には、マスターブートレコード801が保持されたデバイスがブート可能か否か、FATの種類、先頭セクタ、等の情報が含まれる。
BIOSパラメータブロック802は、マスターブートレコード801内の先頭セクタフィールドに保持されたセクタ番号に対応したセクタに保持される512Byteのデータである。BIOSパラメータブロック802には、パーティションのパラメータ情報、1セクタあたりのByte数、1クラスタあたりのセクタ数、1FATあたりのセクタ数、等が含まれる。
FAT(File Allocation Table)803、804は、セクタNo.〔先頭セクタ数+1及び先頭セクタ数+FATセクタ数+1〕に保持される。FAT803、804のサイズであるFATセクタ数は、マスターブートレコード801内に保持されている。FAT803、804は、ディスク内のファイルの配置情報を管理するデーブルである。なお、FAT16では、ファイルへのアクセスはセクタ単位で行なわれるが、ファイルに対してディスク上の物理セクタを割り当てる場合、セクタではなく、クラスタと呼ばれる単位で割り当てを行なう。なお、クラスタは、セクタの集まりであり、ブロック等とも呼ばれる。
ファイルはクラスタを単位として構成されているが、クラスタのディスク上の物理的な位置は常に連続しているわけではなく、FAT803、804によってそれらのクラスタがどのような順につながって、1つのファイルを構成しているかが管理されている。FAT803、804の各エントリは、ディスクの各クラスタと1対1に対応しており、該当するクラスタの使用状況を表わしている。よって、このFAT803、804を参照することにより、各クラスタ(セクタの集まり)が使用されているか未使用かを判定可能である。
ルートディレクトリエントリ805は、セクタNo.〔先頭セクタ数+FATセクタ数×2+1〕に保持され、ファイル名、ファイル属性、作成時間情報、先頭クラスタ番号、ファイルサイズ、等が含まれる。
ユーザーデータ領域806は、セクタNo.〔先頭セクタ数+FATセクタ数×2+33〕に保持され、主に実データが含まれる。
本発明の実施例1に係るディスクアレイシステム1000では、FAT803、804を用いて故障セクタが使用領域であるか、未使用領域であるかの判定を行う。本実施例では、ファイルシステム機能部101が用いるファイルシステムの一例としてFAT16を使用したが、本発明のディスクアレイシステム1000は、OSを限定するものではないため、他のFAT32、UNIX(登録商標)系ファイルシステム等も同様に使用可能である。
上述した実施例1では、ホストコンピュータは、ディスクアレイ装置からの割り込み受信をトリガーとしてディスクアレイ装置でのリードエラーの発生を確認する構成を示した。実施例2では、ホストコンピュータは、ポーリングにより、ディスクアレイ装置でのリードエラーの発生を確認するように構成する。
以下、本発明の実施例2について説明する。
図11は、本発明の実施例2に係るディスクアレイシステム2000の構成を示す図であり、図1と同一のものには同一の符号を付してある。なお、実施例1の変形例である実施例2に係るディスクアレイシステム2000の構成は、そのほとんどが実施例1のディスクアレイシステム1000(図1)と共通であるため、ここでは実施例1との差分のみ説明する。
ディスクアレイシステム2000は、実施例1のディスクアレイシステム1000(図1)においてホストコンピュータ150とディスクアレイ装置250間の割り込み接続を削除した構成となる。
ホストコンピュータ150は、ファイルシステム機能部101と、プロセッサ102と、故障セクタ読み取り部104と、領域判定部105と、動作指示部106から構成される。プロセッサ102からの指示により動作指示部106は、ディスクアレイ装置250に対して定期的に問合わせを行う(後述する要因読み取りコマンドを送信する)ことにより、ディスクアレイ装置250からリビルドエラー発生時の故障セクタの情報を取得する。
ディスクアレイ装置250は、SATAデバイス制御部201と、RAID制御部252と、セクタ保持部203と、SATAホスト制御部205から構成される。なお、セクタ保持部203は、RAID制御部252に含まれる構成であってもよい。
なお、RAID制御部252は、内部にレジスタやメモリ等の要因記憶部を有し、ディスクアレイ装置250で発生したイベント等の要因(例えば、後述するリビルド処理リードエラー要因、リビルド処理完了要因等)を記憶保持する。RAID制御部252は、ホストコンピュータ150から要因読み取りコマンド(上述した問合わせ)を受信すると、内部の要因記憶部から要因の情報を取得して、ホストコンピュータ150に送信する。なお、要因読み取りコマンドは、実施例1の割り込み要因読み取りコマンドと同様のものとする。また、ホストコンピュータ150に送信する要因のフォーマットは、実施例1の割り込み要因のフォーマットと同様のものとする。また、RAID制御部252は、ホストコンピュータ150から要因クリアコマンドを受信すると、内部の要因記憶部から要因の情報を削除する。さらに、ホストコンピュータ150から故障セクタの確認コマンドを受信すると、RAID制御部252は、セクタ保持部203に保持された故障セクタ情報をホストコンピュータ150に送信する。
図12は、本発明の実施例2に係るディスクアレイ装置250のリビルド処理の一例を示すフローチャートである。なお、このフローチャートの処理は、RAID制御部252の制御により実行される。また、本フローチャートの説明では、HDD500及び501を正常とし、HDD502を故障により交換されたものとして説明を行うが、本発明は、これに限定されるものではない。
リビルド処理を開始すると、RAID制御部252は、正常なHDD500、501からデータをリードする(S500)と同時にエラーの確認を実施する(S501)。
リードエラーが発生した場合(S501でYes)、RAID制御部252は、故障セクタを特定し、セクタ保持部203に故障セクタを保持させる(S502)。この時、RAID制御部252は、リードエラーを検出したHDD500或いはHDD501のIDも故障セクタとともにセクタ保持部203に保持させておく。
そして、RAID制御部252は、リビルド処理リードエラー要因(リビルド処理時にリードエラーがあったことを示す情報)をRAID制御部252内の要因記憶部に設定する(S503)。そして、RAID制御部252は、リビルド処理を停止させ(S504)、本フローチャートの処理を終了する。
なお、この後、ホストコンピュータ150から要因読み取りコマンドを受信すると、RAID制御部252は、要因(ここではリビルド処理リードエラー要因)を内部の要因記憶部から取得して、ホストコンピュータ150に送信する(不図示の処理)。さらに、ホストコンピュータ150から故障セクタの確認コマンドを受信すると、RAID制御部252は、セクタ保持部203に保持された故障セクタ情報をホストコンピュータ150に送信する。さらに、ホストコンピュータ100からリビルド再開指示を受信すると、RAID制御部202は、リビルド再開指示で指示されたセクタ(例えば、故障セクタの次のセクタ)からリビルド処理を再開する。
一方、上記S501において、リードエラーが発生していないと判定した場合(S501でNo)、RAID制御部252は、リードデータから修復データを生成し、HDD502にデータを書き込みを行う(S505)。
そして、RAID制御部252は、全ての領域に対してデータ修復を行ったかどうかを確認する(S506)。そして、まだデータ修復未実施の領域が存在すると判定した場合(S506でNo)、RAID制御部252は、S200に処理を戻し、次のデータをリードする。
一方、全てのデータが修復されたと判定した場合(S506でYes)、RAID制御部252は、リビルド処理完了要因(リビルド処理の完了を示す情報)をRAID制御部252内のメモリに設定し(S507))、本フローチャートの処理を終了する。なお、この後、ホストコンピュータ150から要因読み取りコマンドを受信すると、RAID制御部252は、要因(ここではリビルド処理完了要因)を内部の要因記憶部から取得して、ホストコンピュータ150に送信する(不図示の処理)。
図13は、本発明の実施例2に係るホストコンピュータ150のリビルド処理の一例を示すフローチャートである。なお、このフローチャートの処理は、プロセッサ102の制御により実行される。また、本フローチャートの説明では、HDD500及び501を正常とし、HDD502を故障により交換されたものとして説明を行うが、本発明は、これに限定されるものではない。
ホストコンピュータ150のプロセッサ102は、動作指示部106に対してディスクアレイ装置250にリビルド処理開始コマンドの送付を指示し、動作指示部106はこの指示に従いリビルド処理開始コマンドを送信する(S600)。
プロセッサ102は、動作指示部106に対してディスクアレイ装置250への要因読み取りコマンドの送付を指示し、動作指示部106はこの指示に従い要因読み取りコマンドを送付する(S601)。なお、ディスクアレイ装置250が故障したHDDに代わり新しいHDDが接続されたことを検出したことにより、リビルド処理を開始した場合は、S601の処理から開始するものとする。
プロセッサ102は、ディスクアレイ装置250から取得した要因をリードし、要因が設定されていないと判定すると(S602でNo)、S601に処理を戻し、再度ディスクアレイ装置250に対して要因読み取りコマンドを送付する。なお、ホストコンピュータ150が要因読み取りコマンドを送付する時間間隔は、ディスクアレイシステム2000で最適な時間を設定することとする。例えば、1[s]間隔でも良いし、100[ms]間隔でも良い。
一方、要因が設定されていると判定すると(S602でYes)、プロセッサ102は、要因がリビルド処理時エラー要因か否か判定する(S603)。そして、リビルド処理時エラー要因と判定した場合(S603でYes)、プロセッサ102は、ホストコンピュータ150からHDD500、501および502内のファイルにアクセス中であるか否かを確認する(S604)。
そして、ファイルアクセス中でないと判定した場合(S604でNo)、プロセッサ102は、故障セクタ確認処理を行う(S606)。
一方、ファイルアクセス中と判定した場合(S604でYes)、プロセッサ102は、ファイルアクセス終了まで待ち、ファイルアクセスが終了したと判断した場合(S605でYes)、故障セクタ確認処理を行う(S606)。
S606の故障セクタ確認処理では、プロセッサ102は、故障セクタ読み取り部104に故障セクタの確認を指示する。この指示に従い、故障セクタ読み取り部104が故障セクタ読み取りコマンドをディスクアレイ装置250に送信し、ディスクアレイ装置250から故障セクタ情報を取得することで、故障セクタを確認する。なお、故障セクタ読み取り部104は、故障セクタ情報を領域判定部105に送信する。なお、故障セクタ情報には、故障が検出されたHDD500或いはHDD501のIDも含まれる。また、プロセッサ102は、ファイルシステム機能部101からHDD500、501及び502における未使用領域の情報を取得し、領域判定部105に未使用領域の情報を送信する。
次に、プロセッサ102からの指示により領域判定部105は、上記取得した故障セクタ情報と未使用領域情報から故障セクタが使用領域であるか、又は、未使用領域であるかを確認(判定)し(S607)、確認結果をプロセッサに通知する。
そして、故障セクタが未使用領域であると判定した場合(S607でYes)、プロセッサ102は、上記確認したリビルド処理中のエラーを無視すると判断する。即ち、この場合、プロセッサ102は、上記確認したリビルド処理中のエラーがリビルド処理を継続させるべきエラーであると判断する。そして、プロセッサ102は、動作指示部106からリビルド処理再開の指示をディスクアレイ装置250に対して送付する(S608)(エラースキップ制御処理)。なお、リビルド処理の再開に関しては、故障セクタの次のセクタから再開をさせても良いし、また、次の使用領域の先頭セクタから再開させても良い。
そして、リビルド処理の再開指示を行った後は、プロセッサ102は、S601に処理を戻し、再び、ディスクアレイ装置250に対して要因読み取りコマンドを送付する。
一方、故障セクタが未使用領域ではなかったと判定した場合(S607でNo)、プロセッサ102は、上記確認したリビルド処理中のエラーを無視しないと判断する(エラーと認識する)。即ち、この場合、プロセッサ102は、上記確認したリビルド処理中のエラーがリビルド処理を継続不可能なエラーであると判断する。そして、プロセッサ102は、ユーザに対してHDD故障を通知する(S609)。例えば、ホストコンピュータ150の不図示のディスプレイに故障しているHDDを特定する情報をユーザに通知するためのメッセージを表示して、故障したHDDの交換を促す。そして、プロセッサ102は、ディスクアレイシステム1000としてリビルド処理を完了させ(S611)、本フローチャートの処理を終了する。
また、要因がリビルド処理時エラー要因ではないと判定した場合(S603でNo)、プロセッサ102は、要因がリビルド処理完了要因であるか判定する。そして、要因がリビルド処理完了要因であると判定した場合(S610でYes)、プロセッサ102は、ディスクアレイシステム1000としてリビルド処理を完了させ(S611)、本フローチャートの処理を終了する。
一方、要因がリビルド処理完了要因でないと判定した場合(S610でNo)、プロセッサ102は、要因に従ったその他の処理を実施し(S612)、S601に処理を戻し、再び、ディスクアレイ装置250に対して要因読み取りコマンドを送付する。
上述した実施例1では、ホストコンピュータは、ディスクアレイ装置からの割り込み受信をトリガーとしてディスクアレイ装置でのリビルド処理時のリードエラーの発生を確認する構成を示した。また、上記実施例2では、ホストコンピュータは、ポーリングにより、ディスクアレイ装置でのリビルド処理時のリードエラーの発生を確認する構成を示した。しかし、実施例1の構成でディスクアレイ装置でのリビルド処理時のリードエラーの発生を確認する第1モードと、実施例2の構成でディスクアレイ装置でのリビルド処理時のリードエラーの発生を確認する第2モードとを切り換え可能とする構成でもよい。
上述した実施例1では、ホストコンピュータは、リビルドリードエラーのエラー発生箇所(故障セクタ)が未使用領域であった場合、ディスクアレイ装置に対して、リビルド処理を再開する指示を通知する構成を示した。実施例4では、ホストコンピュータは、リビルドリードエラーのエラー発生箇所(故障セクタ)が未使用領域であった場合、ディスクアレイ装置に対して、故障セクタに対する上書き処理を実行する指示、及び、リビルド処理を再開する指示を通知するように構成する。
以下、本発明の実施例4について説明する。
図14は、本発明の実施例4に係るディスクアレイシステム1000における記憶装置アレイ制御処理の概略フローを示す図である。なお、ディスクアレイ装置200の処理は、RAID制御部202の制御により実行され、ホストコンピュータ100の処理は、プロセッサ102の制御により実行される。なお、図2と同一のステップには同一のステップ番号を付してある。
まず、図14のS100〜S105の処理は、図2のS100〜S105の処理と同一であるので、説明は省略する。
故障セクタ判定の結果、故障セクタ(リビルドリードエラーのエラー発生箇所)が未使用領域であった場合(S105)、ホストコンピュータ100の動作指示部106がディスクアレイ装置200に対して、故障セクタに対する固定値(特定データ)の上書き処理を実行する指示、及び、故障セクタの次のセクタからリビルド処理を再開する指示を通知する(S150)。
この通知を受けたディスクアレイ装置200では、RAID制御部202は、故障セクタに対する固定値(特定データ)の上書き処理を実行し、さらに、故障セクタの次のセクタからリビルド処理を再開する(S151)。なお、上書き処理で使用されるデータ(特定データ)は、RAID制御部202で予め決められた値でもよいし、プロセッサ102からの指示に従って決定してもよい。
以後、図14の処理は、図2の処理と同一であるので、説明は省略する。
図15は、本発明の実施例4に係るホストコンピュータ100のリビルド処理の一例を示すフローチャートである。なお、このフローチャートの処理は、プロセッサ102の制御により実行される。また、本フローチャートの説明では、HDD500及び501を正常とし、HDD502を故障により交換されたものとして説明を行うが、本発明は、これに限定されるものではない。なお、図4と同一のステップには同一のステップ番号を付してある。
まず、図15のS300〜S307の処理は、図4のS300〜S307の処理と同一であるので、説明は省略する。
プロセッサ102は、故障セクタ(リビルドリードエラーのエラー発生箇所)が未使用領域であると判定した場合(S307でYes)、動作指示部106から故障セクタに対する固定値(特定データ)の上書き処理を実行する指示、及び、リビルド処理再開の指示をディスクアレイ装置200に対して送付する(S700)(エラースキップ制御処理)。なお、プロセッサ102は、上書き処理の指示に、上書き処理で使用されるデータを指定してもよい。
以後、図15の処理は、図4の処理と同一であるので、説明は省略する。
以上の構成により、リビルドリードエラー発生時に、リビルドリードエラーのエラー発生箇所(故障セクタ)を、予め決められたデータ又はホストコンピュータから指示されたデータで上書きするとこで、故障セクタを正常な状態に戻すことができる。
なお、実施例4の構成を実施例3に適用した構成も本発明に含まれるものである。即ち、上記実施例2のように、ホストコンピュータが、ポーリングにより、ディスクアレイ装置でのリビルド処理時のリードエラーの発生を確認し、さらに、リビルドリードエラーのエラー発生箇所(故障セクタ)が未使用領域であった場合に、ディスクアレイ装置に対して、故障セクタに対する上書き処理を実行する指示、及び、リビルド処理を再開する指示を通知するように構成してもよい。
また、上述した実施例1では、ホストコンピュータは、リビルドリードエラーのエラー発生箇所(故障セクタ)が未使用領域であった場合、ディスクアレイ装置に対して、リビルド処理を再開する指示を通知する構成を示した。また、上記実施例4では、ホストコンピュータは、リビルドリードエラーのエラー発生箇所(故障セクタ)が未使用領域であった場合、ディスクアレイ装置に対して、故障セクタに対する上書き処理の指示、及び、リビルド処理を再開する指示を通知する構成を示した。
しかし、故障セクタが未使用領域であった場合に、実施例1のようにリビルド処理を再開する指示を通知するモードと、実施例4のように故障セクタに対する上書き処理の指示及びリビルド処理を再開する指示を通知するモードとを切り換えて動作可能に構成してもよい。
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
(他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形(各実施例の有機的な組合せを含む)が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
以上説明したように、本発明の各実施例によれば、未使用領域に対してリビルドエラーが発生しても、リビルドを継続実行することができる。なお、エラーが発生した場合に、エラー発生箇所(故障セクタ)が未使用領域であるかの判定をホストコンピュータで行うので、エラー発生時以外のリビルド中のパフォーマンス低下を回避することができる。
また、ファイルシステムをホストコンピュータ側に実装しているため、HDDの管理状況と使用状況が完全に一致するため、使用領域/未使用領域の判定を正確に行うことができる。さらに、従来のように、ディスクアレイ装置にHDD管理テーブル等を備える構成に比べ、ディスクアレイ装置のコスト増加、構成の複雑化を回避できる。また、ディスクアレイ装置でのリビルド処理時のパフォーマンス低下を抑えることができ、RAID構成の記憶装置アレイを構成するメンバーの記憶装置が故障した場合に好適なデータ復旧を行うことができる。
このように、ホストコンピュータとディスクアレイ装置を連携させ、ホストコンピュータに記憶装置の管理を、ディスクアレイ装置にリビルド処理を割り振ることで、パフォーマンス低下やコストアップを招くことのないディスクアレイシステムを実現可能である。また、リビルドによる記憶装置のデータ復旧を確実に行うことができる。さらに、リビルドエラーが発生しても、未使用領域でのエラーのようにエラーを無視可能な場合はエラーを無視してリビルドを継続することができる。
また、リビルドリードエラー発生時に、リビルドリードエラーのエラー発生箇所(故障セクタ)を、予め決められたデータ又はホストコンピュータから指示されたデータで上書きするとこで、故障セクタを正常な状態に戻すこともできる。
100 ホストコンピュータ
101 ファイルシステム
102 プロセッサ
103 割り込み受信部
104 故障セクタ読み取り部
105 領域判定部
106 動作指示部
200 ディスクアレイ装置
201 SATAデバイス制御部
202 RAID制御部
203 セクタ保持部
204 割り込み送信部
205 SATAホスト制御部
400 SATA I/F
500,501,502 HDD
1000 ディスクアレイシステム

Claims (5)

  1. 複数の記憶装置によりRAIDを構築するシステムであって、
    前記複数の記憶装置のうち何れかの記憶装置に記憶されていたデータを他の記憶装置に記憶されているデータに基づいて新たな記憶装置に復元するリビルド処理を実行する実行手段と、
    前記リビルド処理の実行中にリード元の記憶装置においてセクタの故障が発見された際に、当該リビルド処理を停止させる停止手段と、
    前記故障が発見されたセクタが未使用であるか否か判断する判断手段と、
    前記故障が発見されたセクタが未使用であると前記判断手段が判断した場合に、当該故障が発見されたセクタからのリードをスキップして前記リビルド処理を再開させるように制御する制御手段と、
    を有することを特徴とするシステム。
  2. 前記制御手段は、前記故障が発見されたセクタが未使用でないと前記判断手段が判断した場合に、前記リード元の記憶装置が故障したことを通知するよう制御することを特徴とする請求項1に記載のシステム。
  3. 前記システムは、記憶制御装置と情報処理装置を含み、
    前記記憶制御装置は、前記実行手段及び前記停止手段を有し、
    前記情報処理装置は、前記判断手段及び前記制御手段を有することを特徴とする請求項1又は2に記載のシステム。
  4. 複数の記憶装置によりRAIDを構築するシステムの制御方法であって、
    前記複数の記憶装置のうち何れかの記憶装置に記憶されていたデータを他の記憶装置に記憶されているデータに基づいて新たな記憶装置に復元するリビルド処理を実行する実行ステップと、
    前記リビルド処理の実行中にリード元の記憶装置においてセクタの故障が発見された際に、当該リビルド処理を停止させる停止ステップと、
    前記故障が発見されたセクタが未使用であるか否か判断する判断ステップと、
    前記故障が発見されたセクタが未使用であると前記判断ステップで判断した場合に、当該故障が発見されたセクタからのリードをスキップして前記リビルド処理を再開させる再開ステップと、
    を有することを特徴とするシステムの制御方法。
  5. 複数の記憶装置によりRAIDを構築するシステムであって、
    前記システムに含まれる記憶制御装置を、
    前記複数の記憶装置のうち何れかの記憶装置に記憶されていたデータを他の記憶装置に記憶されているデータに基づいて新たな記憶装置に復元するリビルド処理を実行する実行手段、
    前記リビルド処理の実行中にリード元の記憶装置においてセクタの故障が発見された際に、当該リビルド処理を停止させる停止手段として機能させるためのプログラムと、
    前記システムに含まれる情報処理装置を、
    前記故障が発見されたセクタが未使用であるか否か判断する判断手段、
    前記故障が発見されたセクタが未使用であると前記判断手段が判断した場合に、当該故障が発見されたセクタからのリードをスキップして前記リビルド処理を再開させるように制御する制御手段として機能させるためのプログラムと、
    を有することを特徴とするプログラム。
JP2010107412A 2010-05-07 2010-05-07 システム、システムの制御方法、及び、プログラム Expired - Fee Related JP5721344B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010107412A JP5721344B2 (ja) 2010-05-07 2010-05-07 システム、システムの制御方法、及び、プログラム
US13/100,109 US8819522B2 (en) 2010-05-07 2011-05-03 Storage device array system, information processing apparatus, storage device array control method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010107412A JP5721344B2 (ja) 2010-05-07 2010-05-07 システム、システムの制御方法、及び、プログラム

Publications (3)

Publication Number Publication Date
JP2011237934A JP2011237934A (ja) 2011-11-24
JP2011237934A5 JP2011237934A5 (ja) 2013-12-26
JP5721344B2 true JP5721344B2 (ja) 2015-05-20

Family

ID=44902779

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010107412A Expired - Fee Related JP5721344B2 (ja) 2010-05-07 2010-05-07 システム、システムの制御方法、及び、プログラム

Country Status (2)

Country Link
US (1) US8819522B2 (ja)
JP (1) JP5721344B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409683B2 (en) 2016-10-25 2019-09-10 Samsung Electronics Co., Ltd. Data storage system configured to perform data rebuild operation via reduced read requests

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130339784A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Error recovery in redundant storage systems
JP6175771B2 (ja) * 2013-01-08 2017-08-09 日本電気株式会社 ディスクアレイ装置、バッドセクタ修復方法および修復プログラム
US9608670B2 (en) 2014-07-14 2017-03-28 International Business Machines Corporation Reliable data reading with data set screening by error injection
JP2017041182A (ja) 2015-08-21 2017-02-23 ファナック株式会社 数値制御装置
CN107515726B (zh) 2016-06-16 2020-05-19 伊姆西Ip控股有限责任公司 用于管理存储设备的方法和***
CN106126378A (zh) * 2016-06-29 2016-11-16 华为技术有限公司 一种触发磁盘阵列进行重构的方法及装置
JP6424303B2 (ja) * 2016-07-22 2018-11-14 義房 松澤 ディスク装置
KR20180073314A (ko) 2016-12-22 2018-07-02 삼성전자주식회사 컨볼루션 신경망 시스템 및 그것의 동작 방법
KR102521054B1 (ko) 2017-10-18 2023-04-12 삼성전자주식회사 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템
CN110058961B (zh) * 2018-01-18 2023-05-05 伊姆西Ip控股有限责任公司 用于管理存储***的方法和设备
US10802717B2 (en) * 2018-08-20 2020-10-13 Dell Products L.P. Systems and methods for efficient firmware inventory of storage devices in an information handling system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0293721A (ja) * 1988-09-29 1990-04-04 Nec Corp 磁気ディスク装置の複写転送方式
JPH0336651A (ja) * 1989-07-03 1991-02-18 Nec Corp 制御記憶読出検査方式
JPH08185274A (ja) * 1994-12-28 1996-07-16 Hitachi Ltd ディスクアレイサブシステム
JP2830840B2 (ja) * 1996-05-10 1998-12-02 日本電気株式会社 ディスクアレイ修復処理方式及び方法
JP3435400B2 (ja) 2000-12-08 2003-08-11 株式会社東芝 ディスクアレイ装置におけるデータ修復方法及びディスクアレイコントローラ
JP2004062376A (ja) * 2002-07-26 2004-02-26 Nec Corp Raidディスクリードエラー処理方式、方法及びプログラム
JP2006127217A (ja) * 2004-10-29 2006-05-18 Hitachi Ltd 計算機システムおよび計算機システムの制御方法
US7730257B2 (en) * 2004-12-16 2010-06-01 Broadcom Corporation Method and computer program product to increase I/O write performance in a redundant array
JP4542163B2 (ja) * 2008-02-27 2010-09-08 富士通株式会社 ディスクアレイ装置、ディスクアレイ制御方法及びディスクアレイ制御装置
JP2010027105A (ja) * 2008-07-15 2010-02-04 Hitachi Global Storage Technologies Netherlands Bv ディスク・ドライブ装置及びそのエラー回復処理の方法
US7954012B2 (en) * 2008-10-27 2011-05-31 International Business Machines Corporation Hierarchical debug information collection

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409683B2 (en) 2016-10-25 2019-09-10 Samsung Electronics Co., Ltd. Data storage system configured to perform data rebuild operation via reduced read requests

Also Published As

Publication number Publication date
JP2011237934A (ja) 2011-11-24
US8819522B2 (en) 2014-08-26
US20110276859A1 (en) 2011-11-10

Similar Documents

Publication Publication Date Title
JP5721344B2 (ja) システム、システムの制御方法、及び、プログラム
US9501231B2 (en) Storage system and storage control method
JP6009095B2 (ja) ストレージシステム及び記憶制御方法
JP4961319B2 (ja) 仮想ボリュームにおける仮想領域に動的に実領域を割り当てるストレージシステム
JP3176157B2 (ja) ディスクアレイ装置及びそのデータ更新方法
US20070174569A1 (en) Method of managing data snapshot images in a storage system
US7257675B2 (en) Disk array device having snapshot simulation function
US8826066B2 (en) Information processing apparatus, control method of the information processing apparatus, and recording medium
JP2010049634A (ja) ストレージシステム及びストレージシステムにおけるデータ移行方法
JP2008015769A (ja) ストレージシステム及び書き込み分散方法
JP2007156597A (ja) ストレージ装置
JP4884041B2 (ja) 自動拡張可能なボリュームに対して最適なi/oコマンドを発行するストレージシステム及びその制御方法
JP6097845B2 (ja) 不揮発性キャッシュメモリにデータをバックアップするストレージシステム
JP2012519319A (ja) ストレージサブシステム
JP2010504589A (ja) グローバルホットスペアディスクが存在するときに、故障したドライブを復元、及びコピーバックする最適化された方法
JP2005293363A (ja) ディスクアレイコントローラおよび情報処理装置
JP2008225616A (ja) ストレージシステム、リモートコピーシステム、及びデータ復元方法
US7873866B2 (en) Computer system, storage system and configuration management method
US8433949B2 (en) Disk array apparatus and physical disk restoration method
JP2006011811A (ja) 記憶制御システム及び記憶制御方法
JP4667225B2 (ja) 制御装置およびコピー制御方法
US7287182B2 (en) Method and apparatus for copying data of disk drive in disk array system
JP2023110180A (ja) ストレージ装置および制御方法
JP5913078B2 (ja) ディスクアレイシステム、データ復旧方法、および、データ復旧プログラム
WO2016006108A1 (ja) ストレージおよびその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130423

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140812

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150324

LAPS Cancellation because of no payment of annual fees