(57)【要約】  ホスト装置２０からディスクドライブ２１０へのデータ書き込み要求を受信した際、当該データ書き込み要求によってディスクドライブ２１０に書き込まれる書き込みデータについて第１誤り検出符号を生成して記憶し、書き込みデータのディスクドライブ２１０への書き込み処理を実行し、書き込み処理に要した時間である応答時間が予め設定された閾値を超えているか否かを判断し、応答時間が閾値を超えていた場合に、書き込みデータの書き込み先のセクタから当該セクタに格納されているデータを読み出し、読み出したデータについて第２誤り検出符号を生成し、第１誤り検出符号と第２誤り検出符号を比較して、両者が一致しない場合に書き込み処理が正常に行われなかった旨を示す信号を生成するようにする。【選択図】図１
2011525643.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ及びメモリを有し、外部装置から送信されるデータ入出力要求応じて記憶装置へのデータの書き込み又は読み出しを行うストレージ装置であって、
前記ＣＰＵが前記メモリに格納されているプログラムを読み出して実行することにより実現される、
前記データ入出力要求として前記記憶装置へのデータ書き込み要求を受信した際、当該データ書き込み要求によって前記記憶装置に書き込まれる書き込みデータについて第１誤り検出符号を生成して記憶する第１誤り検出符号生成部と、
前記書き込みデータの前記記憶装置への書き込み処理を実行する書き込み処理実行部と、
前記書き込み処理に要した時間である応答時間が予め設定された閾値を超えているか否かを判断するタイムアウト判断部と、
前記応答時間が前記閾値を超えていた場合に、前記書き込みデータの書き込み先である前記記憶装置の単位記憶領域から当該記憶領域に格納されているデータを読み出す検証用データ読出部と、
読み出したデータについて第２誤り検出符号を生成する第２誤り検出符号生成部と、
前記第１誤り検出符号と前記第２誤り検出符号を比較して、両者が一致しない場合に前記書き込み処理が正常に行われなかった旨を示す信号を生成する比較検証処理部と
を備えるストレージ装置。
【請求項２】
請求項１に記載のストレージ装置であって、
前記記憶装置の前記単位記憶領域の夫々について、現在有効なデータが書き込まれているか否かを管理する単位記憶領域状態管理テーブルを記憶し、
前記書き込み処理の実行に先立ち、前記単位記憶領域状態管理テーブルを参照して前記書き込みデータの書き込み先の前記単位記憶領域に現在有効なデータが書き込まれているか否かを判断し、前記単位記憶領域に現在有効なデータが書き込まれている場合に前記書き込み処理が正常に行われなかった旨を示す信号を生成する単位記憶領域状態管理部をさらに備える
ストレージ装置。
【請求項３】
請求項２に記載のストレージ装置であって、
前記比較検証処理部が、前記第１誤り検出符号と前記第２誤り検出符号を比較した結果両者が一致した場合、前記単位記憶領域状態管理テーブルの内容を、前記書き込みデータの書き込み先である前記記憶装置の前記単位記憶領域に現在有効なデータが書き込まれていることを示す内容に更新する
ストレージ装置。
【請求項４】
請求項１に記載のストレージ装置であって、
前記記憶装置の前記単位記憶領域の夫々について、現在有効なデータが書き込まれているか否かを管理する単位記憶領域状態管理テーブルを記憶し、
前記記憶装置の前記単位記憶領域についての初期化処理を実行するのに先立ち、前記単位記憶領域状態管理テーブルを参照して初期化処理の対象の前記単位記憶領域に現在有効なデータが書き込まれているか否かを判断し、前記単位記憶領域に現在有効なデータが書き込まれている場合に前記初期化処理が正常に行われなかった旨を示す信号を生成する単位記憶領域状態管理部をさらに備える
ストレージ装置。
【請求項５】
請求項４に記載のストレージ装置であって、
前記判断の結果、前記単位記憶領域に現在有効なデータが書き込まれていない場合に前記単位記憶領域の初期化処理を実行する初期化処理実行部を備え、
前記単位記憶領域状態管理部は、前記単位記憶領域状態管理テーブルの内容を、前記初期化処理の対象の前記記憶装置の前記単位記憶領域に現在有効なデータが書き込まれていないことを示す内容に更新する
ストレージ装置。
【請求項６】
請求項１に記載のストレージ装置であって、
前記記憶装置の前記単位記憶領域の夫々について、現在有効なデータが書き込まれているか否かを管理する単位記憶領域状態管理テーブルを記憶し、
前記記憶装置の前記単位記憶領域からデータの読み出し処理を実行するのに先立ち、前記単位記憶領域状態管理テーブルを参照して前記読み出しデータの格納先の前記単位記憶領域に現在有効なデータが書き込まれているか否かを判断し、前記単位記憶領域に現在有効なデータが書き込まれていない場合に前記読み出し処理が正常に行われなかった旨を示す信号を生成する単位記憶領域状態管理部をさらに備える
ストレージ装置。
【請求項７】
請求項６に記載のストレージ装置であって、
前記判断の結果、前記単位記憶領域に現在有効なデータが書き込まれている場合に前記単位記憶領域からのデータの読み出し処理を実行する読み出し処理実行部をさらに備える
ストレージ装置。
【請求項８】
請求項３に記載のストレージ装置であって、
互いに通信可能に接続された、チャネル制御部、ディスク制御部、キャッシュメモリを有する制御装置と、ディスクドライブを有する前記記憶装置とを備え、
前記チャネル制御部は、前記外部装置から前記データ入出力要求を受信すると前記ディスク制御部にＩ／Ｏコマンドを送信し、
前記ディスク制御部は、前記Ｉ／Ｏコマンドを受信すると、前記ディスクドライブに対してデータの書き込み又は読み出しを行い、
前記チャネル制御部と前記ディスク制御部は、前記キャッシュメモリにアクセスすることにより前記ディスクドライブへの書き込みデータ、又は前記ディスクドライブから読み出されたデータの授受を行い、
前記制御装置又は前記記憶装置は、ＣＰＵ及びメモリを有するとともに、前記ディスク制御部と前記ディスクドライブとの間に介在され、前記ディスク制御部から送受信されるデータフレーム構造と前記ディスクドライブから送受信されるデータフレーム構造との間の変換を行う変換基盤を備え、
前記第１誤り検出符号生成部、前記書き込み処理実行部、前記タイムアウト判断部、前記検証用データ読出部、前記第２誤り検出符号生成部、前記第２誤り検出符号生成部、及び前記単位記憶領域状態管理部は、前記変換基盤の前記ＣＰＵが前記メモリに格納されているプログラムを実行することにより実現されるストレージ装置。
【請求項９】
請求項８に記載のストレージ装置であって、
前記記憶装置の単位記憶領域は、前記ディスクドライブのセクタであり、
前記変換基盤が行う、前記ディスク制御部から送受信されるデータフレーム構造と前記ディスクドライブから送受信されるデータフレーム構造との間の変換は、前記ディスク制御部から送受信されるデータフレームのセクタサイズと、前記ディスクドライブから送受信されるデータフレームのセクタサイズの変換であるストレージ装置。
【請求項１０】
請求項９に記載のストレージ装置であって、
前記ディスク制御部から送受信されるデータフレームのセクタサイズはＳＡＳタイプのディスクドライブのセクタサイズであり、前記ディスクドライブから送受信されるデータフレームのセクタサイズはＳＡＴＡタイプのディスクドライブのセクタサイズであるストレージ装置。
【請求項１１】
請求項８に記載のストレージ装置であって、
前記変換基盤は、前記単位記憶領域状態管理テーブルを記憶し、
前記変換基盤において、当該変換基盤の電源電圧が予め設定された閾値以下となった場合に前記単位記憶領域状態管理テーブルの内容を前記ディスクドライブに書き込む障害時退避処理部が、前記変換基盤の前記ＣＰＵが前記メモリに格納されているプログラムを実行することにより実現されるストレージ装置。
【請求項１２】
ＣＰＵ及びメモリを有し、外部装置から送信されるデータ入出力要求応じて記憶装置へのデータの書き込み又は読み出しを行うストレージ装置におけるデータ検証方法であって、
前記ストレージ装置が、
前記データ入出力要求として前記記憶装置へのデータ書き込み要求を受信した際、当該データ書き込み要求によって前記記憶装置に書き込まれる書き込みデータについて第１誤り検出符号を生成して記憶するステップと、
前記書き込みデータの前記記憶装置への書き込み処理を実行するステップと、
前記書き込み処理に要した時間である応答時間が予め設定された閾値を超えているか否かを判断するステップと、
前記応答時間が前記閾値を超えていた場合に、前記書き込みデータの単位記憶領域である前記記憶装置の単位記憶領域から当該記憶領域に格納されているデータを読み出すステップと、
読み出したデータについて第２誤り検出符号を生成するステップと、
前記第１誤り検出符号と前記第２誤り検出符号を比較して、両者が一致しない場合に前記書き込み処理が正常に行われなかった旨を示す信号を生成するステップと
を実行する、ストレージ装置におけるデータ検証方法。
【請求項１３】
請求項１２に記載のストレージ装置におけるデータ検証方法であって、
前記ストレージ装置は、前記記憶装置の前記単位記憶領域の夫々について、現在有効なデータが書き込まれているか否かを管理する単位記憶領域状態管理テーブルを記憶し、
前記ストレージ装置が、前記書き込み処理に先立ち、前記単位記憶領域状態管理テーブルを参照して前記書き込みデータの書き込み先の前記単位記憶領域に現在有効なデータが書き込まれているか否かを判断し、前記単位記憶領域に現在有効なデータが書き込まれている場合に前記書き込み処理が正常に行われなかった旨を示す信号を生成するステップをさらに実行する、ストレージ装置におけるデータ検証方法。
【請求項１４】
請求項１３に記載のストレージ装置におけるデータ検証方法であって、
前記ストレージ装置が、前記第１誤り検出符号と前記第２誤り検出符号を比較した結果両者が一致した場合、前記単位記憶領域状態管理テーブルの内容を、前記書き込みデータの書き込み先である前記記憶装置の前記単位記憶領域に現在有効なデータが書き込まれていることを示す内容に更新するステップをさらに実行する、
ストレージ装置におけるデータ検証方法。
【請求項１５】
請求項１２に記載のストレージ装置におけるデータ検証方法であって、
前記ストレージ装置は、
互いに通信可能に接続された、チャネル制御部、ディスク制御部、キャッシュメモリを有する制御装置と、ディスクドライブを有する前記記憶装置とを備え、
前記チャネル制御部は、前記外部装置から前記データ入出力要求を受信すると前記ディスク制御部にＩ／Ｏコマンドを送信し、
前記ディスク制御部は、前記Ｉ／Ｏコマンドを受信すると、前記ディスクドライブに対してデータの書き込み又は読み出しを行い、
前記チャネル制御部と前記ディスク制御部は、前記キャッシュメモリにアクセスすることにより前記ディスクドライブへの書き込みデータ、又は前記ディスクドライブから読み出されたデータの授受を行い、
前記制御装置又は前記記憶装置は、ＣＰＵ及びメモリを有するとともに、前記ディスク制御部と前記ディスクドライブとの間に介在され、前記ディスク制御部から送受信されるデータフレーム構造と前記ディスクドライブから送受信されるデータフレーム構造との間の変換を行う変換基盤を備える、ストレージ装置におけるデータ検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、及びストレージ装置におけるデータ検証方法に関し、とくにオーバーヘッドを増大させることなくストレージ装置におけるデータの信頼性を向上させる技術に関する。
【背景技術】
【０００２】
ディスクドライブ（ハードディスクドライブ）の大容量化、低価格化に伴い、ディスクアレイ装置等のストレージ装置においてもＳＡＴＡ（Serial ATA）等の安価かつ大容量のディスクドライブが用いられるようになってきている。しかしながらこれら安価かつ大容量のドライブは従来のＳＡＳ（Serial Attached SCSI）ドライブに比べて信頼性が十分ではないことが多く、これらを高信頼性が要求されるストレージ装置に用いる場合は信頼性を向上させるための対策が求められる。
【０００３】
そのための仕組みとして、例えば特許文献１には、ライトデータに基づく第１のチェックコードをキャッシュメモリに記憶しておき、第１のチェックコードが付加されたライトデータの書き込みを所定の記憶領域を指定して実行した後、当該記憶領域に記録されているデータを読み出して第２のチェックコードを生成し、第１および第２のチェックコードの対応関係が正しい場合にライトデータがストレージに正常に記録されたと判断する技術（以下、ＲＡＷ（Read After Write）方式と称する。）が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−７２４３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし上記ＲＡＷ方式では、データの書き込みに伴い必ずディスクドライブからデータの読み出しが行われることになり、その分、オーバーヘッドが増大する。また従来の書き込みデータの保証方式は、ディスクドライブ上の不正データの検出をブロック単位で行っているため、何らかの理由で書き込みコマンド自体が抜け落ちて当該書き込みコマンドの書き込み対象ブロックへの書き込みが行われなかった場合にそのことを検出することができない。
【０００６】
またＳＡＳドライブに対応したストレージ装置にＳＡＴＡドライブを装着して用いる場合（ＳＡＳ／ＳＡＴＡ混在型ストレージシステム）、ディスクドライブへの書き込みを行う制御回路とディスクドライブとの間にセクタサイズの変換回路を介在させる必要があるが、この変換回路の誤動作によってディスクドライブの予定しないアドレスにデータが書き込まれてしまった場合、そのことを従来の保証方式では検出することができない。
【０００７】
本発明はこのような背景に鑑みてなされたもので、オーバーヘッドを増大させることなくストレージ装置におけるデータの信頼性を向上させることが可能なストレージ装置、及びストレージ装置におけるデータ検証方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記のおよび他の課題を解決するために、本発明の一態様によるストレージ装置は、
ＣＰＵ及びメモリを有し、外部装置から送信されるデータ入出力要求応じて記憶装置へのデータの書き込み又は読み出しを行うストレージ装置であって、
前記ＣＰＵが前記メモリに格納されているプログラムを読み出して実行することにより実現される、
前記データ入出力要求として前記記憶装置へのデータ書き込み要求を受信した際、当該データ書き込み要求によって前記記憶装置に書き込まれる書き込みデータについて第１誤り検出符号を生成して記憶する第１誤り検出符号生成部と、
前記書き込みデータの前記記憶装置への書き込み処理を実行する書き込み処理実行部と、
前記書き込み処理に要した時間である応答時間が予め設定された閾値を超えているか否かを判断するタイムアウト判断部と、
前記応答時間が前記閾値を超えていた場合に、前記書き込みデータの書き込み先である前記記憶装置の単位記憶領域から当該記憶領域に格納されているデータを読み出す検証用データ読出部と、
読み出したデータについて第２誤り検出符号を生成する第２誤り検出符号生成部と、
前記第１誤り検出符号と前記第２誤り検出符号を比較して、両者が一致しない場合に前記書き込み処理が正常に行われなかった旨を示す信号を生成する比較検証処理部と
を備えることとする。
【０００９】
本発明のストレージ装置は、書き込み処理に要した応答時間が閾値を超えている場合にのみ、第２誤り検出符号の生成、及び第１誤り検出符号と第２誤り検出符号の比較が行われる。このため、書き込み処理に要した応答時間が閾値を超えない限り（通常は超えない）、書き込みデータの検証のための処理は書き込み処理のオーバーヘッドに殆ど影響を与えない。尚、第１誤り検出符号の生成は応答時間が閾値を超えない場合でも行われるが、第１誤り検出符号の生成処理によって生じる負荷は一般に小さく、この処理が書き込み処理のオーバーヘッドに与える影響は殆ど無い。
【００１０】
また書き込み処理に要した応答時間が閾値を超えた場合には、第２誤り検出符号の生成、及び第１誤り検出符号と第２誤り検出符号の比較が行われ、データの書き込みの信頼性を向上することができる。尚、書き込み処理に要した応答時間が閾値を超える場合とは、例えば記憶装置に何らかの理由で正しくデータが書き込めず、リトライが多発した場合である。即ち本発明はこのようにデータが正しく書き込まれていない可能性が高い場合には必ずデータの検証が行われる。
【００１１】
本発明の一態様によるストレージ装置は、上記ストレージ装置であって、
前記記憶装置の前記単位記憶領域の夫々について、現在有効なデータが書き込まれているか否かを管理する書き込み先状態管理テーブルを記憶し、
前記書き込み処理の実行に先立ち、前記書き込み先状態管理テーブルを参照して前記書き込みデータの書き込み先の前記単位記憶領域に現在有効なデータが書き込まれているか否かを判断し、前記単位記憶領域に現在有効なデータが書き込まれている場合に前記書き込み処理が正常に行われなかった旨を示す信号を生成する書き込み先状態管理部をさらに備えることとする。
【００１２】
このように、本発明によれば、データの書き込み処理の実行に先立ち、単位記憶領域状態管理テーブル（セクタ状態管理テーブル）を参照し、書き込み先の単位記憶領域（セクタ）に現在有効なデータが書き込まれているか否かを判断し、単位記憶領域に現在有効なデータが書き込まれている場合には、正常に行われなかった旨を示す信号を生成する（エラーとする）。
本発明によれば、単位記憶領域に不正なデータが存在する場合にそのことを検出することができる。このため、例えば前述したセクタサイズの変換回路が誤動作することにより、ディスクドライブの予定しないアドレスにデータが書き込まれてしまっている場合に、当該アドレスに書き込まれているデータが不正なデータであることを検出することができる。
【００１３】
本発明の一態様によるストレージ装置は、上記ストレージ装置であって、前記比較検証処理部が、前記第１誤り検出符号と前記第２誤り検出符号を比較した結果両者が一致した場合、前記単位記憶領域状態管理テーブルの内容を、前記書き込みデータの書き込み先である前記記憶装置の前記単位記憶領域に現在有効なデータが書き込まれていることを示す内容に更新することとする。
【００１４】
このように第１誤り検出符号と第２誤り検出符号が一致する場合、即ち検証に成功した場合には、単位記憶領域に現在有効なデータが書き込まれていることが単位記憶領域状態管理テーブルに登録され、有効なデータを有効なデータとして確実に管理することができる。
【００１５】
本発明の一態様によるストレージ装置は、上記ストレージ装置であって、
前記記憶装置の前記単位記憶領域の夫々について、現在有効なデータが書き込まれているか否かを管理する単位記憶領域状態管理テーブルを記憶し、
前記記憶装置の前記単位記憶領域についての初期化処理を実行するのに先立ち、前記単位記憶領域状態管理テーブルを参照して初期化処理の対象の前記単位記憶領域に現在有効なデータが書き込まれているか否かを判断し、前記単位記憶領域に現在有効なデータが書き込まれている場合に前記初期化処理が正常に行われなかった旨を示す信号を生成する単位記憶領域状態管理部をさらに備えることとする。
【００１６】
このように、本発明によれば、単位記憶領域を初期化する場合にも、単位記憶領域に現在有効なデータが書き込まれているか否かを判断する。このため、書き込みの場合と同様に単位記憶領域に不正なデータが存在する場合にそのことを検出することができる。
【００１７】
本発明の一態様によるストレージ装置は、上記ストレージ装置であって、
前記判断の結果、前記単位記憶領域に現在有効なデータが書き込まれていない場合に前記単位記憶領域の初期化処理を実行する初期化処理実行部を備え、
前記単位記憶領域状態管理部は、前記単位記憶領域状態管理テーブルの内容を、前記初期化処理の対象の前記記憶装置の前記単位記憶領域に現在有効なデータが書き込まれていないことを示す内容に更新することとする。
【００１８】
このように、本発明によれば、初期化処理に成功した場合、初期化した単位記憶領域に現在有効なデータが書き込まれていないことが単位記憶領域状態管理テーブルに登録され
る。書き込み可能な単位記憶領域を書き込み可能な単位記憶領域として確実に管理することができる。
【００１９】
本発明の一態様によるストレージ装置は、上記ストレージ装置であって、
前記記憶装置の前記単位記憶領域の夫々について、現在有効なデータが書き込まれているか否かを管理する単位記憶領域状態管理テーブルを記憶し、
前記記憶装置の前記単位記憶領域からデータの読み出し処理を実行するのに先立ち、前記単位記憶領域状態管理テーブルを参照して前記読み出しデータの格納先の前記単位記憶領域に現在有効なデータが書き込まれているか否かを判断し、前記単位記憶領域に現在有効なデータが書き込まれていない場合に前記読み出し処理が正常に行われなかった旨を示す信号を生成する単位記憶領域状態管理部をさらに備えることとする。
【００２０】
このように、本発明によれば、単位記憶領域からデータの読み出し処理を実行するのに先立ち、単位記憶領域状態管理テーブルを参照して読み出しデータの格納先の単位記憶領域に現在有効なデータが書き込まれているか否かを判断し、単位記憶領域に現在有効なデータが書き込まれていない場合には、読み出し処理が正常に行われなかった旨を示す信号を生成する（エラーとする）。
【００２１】
本発明によれば、単位記憶領域に本来存在すべき有効なデータが存在しない場合に、そのことを検出することができる。このため、例えば前述したセクタサイズの変換回路が誤動作することにより、ディスクドライブの予定しないアドレスにデータが書き込まれてしまい、本来書き込まれているべき単位記憶領域にデータが書き込まれていない場合に、そのことを検出することができる。また例えば何らかの理由で書き込みコマンド自体が抜け落ちて当該書き込みコマンドの書き込み対象ブロックへの書き込みが行われなかった場合に、そのことを検出することができる。
【００２２】
本発明の一態様によるストレージ装置は、上記ストレージ装置であって、
互いに通信可能に接続された、チャネル制御部、ディスク制御部、キャッシュメモリを有する制御装置と、ディスクドライブを有する前記記憶装置とを備え、
前記チャネル制御部は、前記外部装置から前記データ入出力要求を受信すると前記ディスク制御部にＩ／Ｏコマンドを送信し、
前記ディスク制御部は、前記Ｉ／Ｏコマンドを受信すると、前記ディスクドライブに対してデータの書き込み又は読み出しを行い、
前記チャネル制御部と前記ディスク制御部は、前記キャッシュメモリにアクセスすることにより前記ディスクドライブへの書き込みデータ、又は前記ディスクドライブから読み出されたデータの授受を行い、
前記制御装置又は前記記憶装置は、ＣＰＵ及びメモリを有するとともに、前記ディスク制御部と前記ディスクドライブとの間に介在され、前記ディスク制御部から送受信されるデータフレーム構造と前記ディスクドライブから送受信されるデータフレーム構造との間の変換を行う変換基盤を備え、
前記第１誤り検出符号生成部、前記書き込み処理実行部、前記タイムアウト判断部、前記検証用データ読出部、前記第２誤り検出符号生成部、前記第２誤り検出符号生成部、及び前記単位記憶領域状態管理部は、前記変換基盤の前記ＣＰＵが前記メモリに格納されているプログラムを実行することにより実現されることとする。
【００２３】
第１誤り検出符号生成部、前記書き込み処理実行部、前記タイムアウト判断部、前記検証用データ読出部、前記第２誤り検出符号生成部、前記第２誤り検出符号生成部、及び前記単位記憶領域状態管理部を、このようにデータフレーム構造の変換を行う変換基盤に設けることで、信頼性の確保が必要な特定のディスクドライブ（例えばＳＡＴＡドライブ）についてのみ、前述した信頼性確保のための仕組みを選択的に設けることができる。このため、不必要な機材の導入及びそれによるコストの上昇を防ぐことができる。
【００２４】
本発明の一態様によるストレージ装置は、上記ストレージ装置であって、
前記変換基盤は、前記単位記憶領域状態管理テーブルを記憶し、
前記変換基盤において、当該変換基盤の電源電圧が予め設定された閾値以下となった場合に前記単位記憶領域状態管理テーブルの内容を前記ディスクドライブに書き込む障害時退避処理部が、前記変換基盤の前記ＣＰＵが前記メモリに格納されているプログラムを実行することにより実現されることとする。
【００２５】
変換基盤に何らかの障害が発生し、変換基盤に格納されている単位記憶領域状態管理テーブルが喪失してしまうと、ストレージ装置の運用に支障が生じるが、本発明によれば、変換基盤の電源電圧が予め設定された閾値以下となった場合に単位記憶領域状態管理テーブルの内容をディスクドライブに書き込むので、単位記憶領域状態管理テーブルの喪失を防ぐことができる。また障害の復旧後にディスクドライブに書き込んだ単位記憶領域状態管理テーブルの内容を変換基盤に格納することで、容易かつ迅速にディスクドライブの運用を再開することができる。
【００２６】
その他本願が開示する課題やその解決方法については、発明の実施形態の欄及び図面により明らかにされる。
【発明の効果】
【００２７】
本発明によれば、オーバーヘッドを増大させることなくストレージ装置におけるデータの信頼性を向上させることができる。
【図面の簡単な説明】
【００２８】
【図１】ストレージシステム１のハードウエア構成を示す図である。
【図２Ａ】ＣＨＡ１１０のハードウエア構成を示す図である。
【図２Ｂ】ＤＫＡ１２０のハードウエア構成を示す図である。
【図３】ストレージ装置１０の外観斜視図（一例）である。
【図４】記憶装置２００の内部構成を説明する図である。
【図５】変換基盤２１５の実装状態（一例）を示す図である。
【図６】変換基盤２１５のハードウエア構成を示す図である。
【図７】変換基盤２１５の主な機能を示す図である。
【図８Ａ】ＳＡＳタイプのディスクドライブ２１０のデータフレームの構造を示す図である。
【図８Ｂ】ＳＡＴＡタイプのディスクドライブ２１０のデータフレームの構造を示す図である。
【図９】セクタ状態管理テーブル９００を示す図である。
【図１０】Ｗｒｉｔｅ処理Ｓ１０００を説明するフローチャートである。
【図１１】図１０のＳ１０１９において、応答時間が閾値を超えていなかった場合に対応する、ＤＫＡ１２０、変換基盤２１５、及びディスクドライブ２１０間で行われる通信シーケンスを説明する図である。
【図１２】図１０のＳ１０１９において、応答時間が閾値を超えていた場合に対応する、ＤＫＡ１２０、変換基盤２１５、及びディスクドライブ２１０間で行われる通信シーケンスを説明する図である。
【図１３】Ｎｕｌｌ処理Ｓ１３００を説明するフローチャートである。
【図１４】Ｒｅａｄ処理Ｓ１４００を説明するフローチャートである。
【図１５】障害時退避処理Ｓ１５００を説明するフローチャートである。
【発明を実施するための形態】
【００２９】
以下、実施形態について図面を参照しつつ詳細に説明する。
図１に実施形態において説明するストレージシステム１の概略的な構成を示している。同図に示すように、このストレージシステム１は、ストレージ装置１０、ホスト装置２０、及び管理端末３０を備えている。
【００３０】
ホスト装置２０とストレージ装置１０とは、例えばＬＡＮ（Local Area Network）、ＳＡＮ（Storage Area Network）、インターネット（Internet）、公衆通信網、専用線等の通信手段５０を介して通信可能に接続されている。また管理端末３０とストレージ装置１０とは、例えばＬＡＮ、インターネット等の通信手段５０を介して通信可能に接続されている。尚、ＬＡＮの通信プロトコルとしては例えばＴＣＰ／ＩＰが用いられる。ＳＡＮの通信プロトコルとしては例えばファイバーチャネル（Fibre Channel）が用いられる。ホスト装置２０がメインフレームである場合はＦＩＣＯＮ（Fibre Connection：登録商標）、ＥＳＣＯＮ（Enterprise System Connection：登録商標）、ＡＣＯＮＡＲＣ（Advanced Connection Architecture：登録商標）、ＦＩＢＡＲＣ（Fibre Connection Architecture：登録商標）等の通信プロトコルに従ってデータ転送が行われる。
【００３１】
ホスト装置２０は、例えばパーソナルコンピュータ、ワークステーション、メインフレーム等のコンピュータ（情報処理装置）である。ホスト装置２０は、例えばクライアント装置（不図示）と通信可能に接続し、クライアント装置から送られてくる要求に応じてストレージ装置１０に対してデータ入出力要求を送信し、クライアント装置に対して様々なサービスを提供する。
【００３２】
ストレージ装置１０は、例えばディスクアレイ装置である。図１に示すように、ストレージ装置１０は、制御装置１００と記憶装置２００とを備える。後述するように、制御装置１００及び記憶装置２００は、例えば夫々異なる筐体に収容されるが、制御装置１００及び記憶装置２００の実施形態は必ずしもこれに限られない。
【００３３】
同図に示すように、制御装置１００は、１つ以上のチャネル制御部（ＣＨＡ１１０(CHA: Channel Adaptor）)、１つ以上のディスク制御部（ＤＫＡ１２０（DKA: Disk Adaptor））、１つ以上のキャッシュメモリ１３０（Cache Memory）、１つ以上の共有メモリ１４０（Shared Memory）、これらを互いに通信可能に接続するクロスバースイッチ（Cross Bar Switch）等のスイッチ機構１５０、及びＳＶＰ１６０（Service Processor）を備える。
【００３４】
記憶装置２００は、データの記憶領域を提供する一台以上のディスクドライブ２１０及び一台以上のスイッチ（ＳＷ２４０）を備える。ディスクドライブ２１０は、例えばハードディスクドライブであるが、記憶装置２００は、ディスクドライブ２１０とは異なる記憶媒体、例えばＳＳＤ（Solid State Drive(Disk））、光ディスクドライブ、光磁気ディスクドライブ等によってデータの記憶領域を提供するものであってもよい。尚、以下の説明では、記憶装置２００には、ディスクドライブ２１０としてＳＡＳ（Serial Attached SCSI）及びＳＡＴＡ（Serial ATA）の２種類が実装可能であるものとする。
【００３５】
制御装置１００のＣＨＡ１１０は、１つ以上の通信ポート１１１１を備え、ホスト装置２０との間でデータ通信を行う。ＣＨＡ１１０は、ホスト装置２０から送られてくるデータ入出力要求を受信すると、ＤＫＡ１２０にＩ／Ｏコマンドを送信する。ＣＨＡ１１０は、データ入出力要求に応じてキャッシュメモリ１３０へのデータの書き込み又は読み出しを行う。ホスト装置２０から送られてくるデータ入出力要求は、入出力しようとするデータをブロック単位（又はチャンク単位）で指定するブロックアクセス要求、又は入出力しようとするデータをファイル単位で指定するファイルアクセス要求である。後者の場合、ＣＨＡ１１０は、例えばＮＡＳ（Network Attached Storage）としての機能を備え、ＮＦＳ（Network File System）やＣＩＦＳ（Common Internet File System）などのファイル共有システム、ＦＡＴ（File Allocation Table）やＮＴＦＳ（NT File System）、ＵＮＩＸ（登録商標）ファイルシステムなどのファイルシステム等の機能を備える。
【００３６】
図２ＡにＣＨＡ１１０のハードウエア構成を示している。ＣＨＡ１１０は、外部通信インタフェース１１１、プロセッサ１１２、メモリ１１３、内部通信インタフェース１１４、及びＤＭＡ１１５（DMA: Direct Memory Access）を備えている。外部通信インタフェース１１１は、１つ以上の通信ポート１１１１を備え、例えばホスト装置２０とイーサネット（登録商標）（Ethernet）やファイバーチャネル（Fibre Channel）等の通信規格に準拠した通信を行う。外部通信インタフェース１１１は、例えばＮＩＣ（Network Interface Card）やＨＢＡ（Host Bus Adaptor）である。
【００３７】
プロセッサ１１２は、例えばＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）である。メモリ１１３は、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）である。内部通信インタフェース１１４は、スイッチ機構１５０を介してＤＫＡ１２０、キャッシュメモリ１３０、及び共有メモリ１４０と通信する。ＤＭＡ１１５は、ＣＨＡ１１０とキャッシュメモリ１３０との間のデータ転送を高速化する。ＣＨＡ１１０は、主に通信プロトコルに関する処理を行い、いわゆるプロトコルプロセッサとして機能する。
【００３８】
制御装置１００のＤＫＡ１２０は、ＣＨＡ１１０から送られてくるＩ／Ｏコマンドを受信し、受信したＩ／Ｏコマンドに応じて記憶装置２００のディスクドライブ２１０に対して制御コマンド（Writeコマンド、Nullコマンド、Readコマンド）を送信する。またＤＫＡ１２０は、受信したＩ／Ｏコマンドに応じて、キャッシュメモリ１３０へのデータの書き込み又は読み出しを行う。
【００３９】
図２ＢにＤＫＡ１２０のハードウエア構成を示している。ＤＫＡ１２０は、内部通信インタフェース１２１、プロセッサ１２２、メモリ１２３、ディスクインタフェース１２４、及びＤＭＡ１２５を備えている。内部通信インタフェース１２１は、スイッチ機構１５０を介してＣＨＡ１１０、キャッシュメモリ１３０、及び共有メモリ１４０と通信する。プロセッサ１２２は、例えばＣＰＵやＭＰＵである。メモリ１２３は、ＲＡＭやＲＯＭである。ディスクインタフェース１２４は、ディスクドライブ２１０と通信するための装置である。ＤＭＡ１２５は、ＤＫＡ１２０とキャッシュメモリ１３０又はディスクドライブ２１０との間のデータ転送を高速化する。
【００４０】
キャッシュメモリ１３０には、ディスクドライブ２１０に書き込まれるデータ、ディスクドライブ２１０から読み出されたデータが格納される。一方、共有メモリ１４０には、各種制御情報、ＣＨＡ１１０からＤＫＡ１２０に通知されるＩ／Ｏコマンド等が格納される。
【００４１】
ＣＨＡ１１０がホスト装置２０からデータ入出力要求としてデータ書き込み要求を受信した場合、ＣＨＡ１１０は、データ書き込みコマンドを共有メモリ１４０に書き込み、データ書き込み要求とともに受信した書き込みデータをキャッシュメモリ１３０に書き込む。
【００４２】
ＤＫＡ１２０は、共有メモリ１４０の内容を監視している。ＤＫＡ１２０は、共有メモリ１４０に書き込みコマンドが書き込まれたことを検出すると、当該コマンドに従ってキャッシュメモリ１３０から書き込みデータを読み出し、読み出した書き込みデータをディスクドライブ２１０に書き込む。
【００４３】
ＣＨＡ１１０がホスト装置２０からデータ入出力としてデータ読み出し要求を受信した場合、ＣＨＡ１１０は、読み出し対象のデータがキャッシュメモリ１３０に存在するか否かを調べる。読み出し対象のデータがキャッシュメモリ１３０に存在すれば、ＣＨＡ１１０は、そのデータをホスト装置２０に送信する。一方、読み出し対象のデータがキャッシュメモリ１３０に存在しなければ、ＣＨＡ１１０は、読み出しコマンドを共有メモリ１４０に書き込んで共有メモリ１４０を監視する。
【００４４】
ＤＫＡ１２０は、読み出しコマンドが共有メモリ１４０に書き込まれたことを検出すると、ディスクドライブ２１０から読み出し対象データを読み出し、読み出したデータをキャッシュメモリ１３０に書き込む。
【００４５】
ＣＨＡ１１０は、読み出し対象データがキャッシュメモリ１３０に書き込まれたことを検出すると、そのデータをホスト装置２０に送信する。
【００４６】
尚、ＣＨＡ１１０からＤＫＡ１２０に対するデータの書き込みや読み出しの指示は、以上のように共有メモリ１４０を介して間接的に行う以外に、例えば、ＣＨＡ１１０からＤＫＡ１２０にデータの書き込みや読み出しの指示を直接行う方法がある。
【００４７】
ＳＶＰ１６０は、ＣＨＡ１１０、ＤＫＡ１２０、キャッシュメモリ１３０、共有メモリ１４０、及びスイッチ機構１５０と通信可能に接続している。ＳＶＰ１６０は、ＣＰＵ及びメモリを備え、制御装置１００の他の構成要素とは独立して動作することができる。ＳＶＰ１６０は、ユーザやオペレータ等の操作入力を受け付けてストレージ装置１０の動作状態の監視や制御、各種設定等を行う。
【００４８】
記憶装置２００が備えるディスクドライブ２１０は、ＳＷ２４０及び通信線を介してＤＫＡ１２０と通信可能に接続している。ＳＷ２４０は、例えばファイバチャネルスイッチ（Fibre Channel Switch）であり、通信線は、例えば光ファイバ又はメタルケーブルである。図１に示したストレージ装置１０では、ＳＷ２４０及び通信線によってＦＣ−ＡＬ（Fibre Channel Arbitrated Loop）が形成されている。各ＳＷ２４０は、マルチプレクサやＤＣ／ＤＣコンバータ等が実装されたＦＳＷ２３０（FSW: Fibre Switch PCB）に設けられている。尚、図１に示す例では、ＦＣ−ＡＬは冗長構成されており、各ディスクドライブ２１０は、夫々異なるＤＫＡ１２０に接続する２つのＦＣ−ＡＬに接続している。また各ＦＣ−ＡＬを構成しているＳＷ２４０は、異なるＦＳＷ２３０に所属している。
【００４９】
ディスクドライブ２１０は、ＲＡＩＤ（RAID: Redundant Arrays of Inexpensive （or Independent) Disks）によって制御されていてもよい。ディスクドライブ２１０は、その記憶領域を用いて構成される論理的な記憶領域（論理ボリューム）を提供する。論理ボリュームは、例えばＲＡＩＤによって提供される記憶領域（例えばＲＡＩＤグループの記憶領域）であるＬＤＥＶ（LDEV: Logical Device）として提供される。
【００５０】
管理端末３０は、例えばパーソナルコンピュータやオフィスコンピュータである。管理端末３０は、ストレージ装置１０に一体化されていてもよい。管理端末３０は、ＳＶＰ１６０と通信可能に接続している。管理端末３０は、ＧＵＩ（Graphical User Interface）、ＣＬＩ（Command Line Interface）等によるユーザインタフェースを備える。ユーザやオペレータ等は、管理端末３０を利用してストレージ装置１０の制御や監視を行う。
【００５１】
図３は以上の構成を備えたストレージ装置１０の外観斜視図（一例）である。同図に示すように、このストレージ装置１０は、１つの基本筐体１１と４つの増設筐体１２を備える。基本筐体１１は、ストレージ装置１０の最小構成単位であり、前述の制御装置１００及び記憶装置２００の双方を備える。増設筐体１２は、例えば基本筐体１１のオプションとして位置づけられ、前述の記憶装置２００を備える。増設筐体１２の記憶装置２００は、基本筐体１１の制御装置１００によって制御される。
【００５２】
基本筐体１１には、１つ以上の制御パッケージ１３、１つ以上の電源ユニット１４、１つ以上のバッテリユニット１５、及び１つ以上のディスクドライブ２１０が、いずれも着脱可能に設けられている。基本筐体１１及び増設筐体１２には、所定位置の冷却ファン１６が設けられている。基本筐体１１と増設筐体１２との間は、ＦＣ−ＡＬを構成するための光ファイバ又はメタルケーブルが配線されている。
【００５３】
制御パッケージ１３には、ＣＨＡ１１０、ＤＫＡ１２０、キャッシュメモリ１３０、又は共有メモリ１４０を実現するためのモジュールが実装されている。このような構造により基本筐体１１にはＣＨＡ１１０、ＤＫＡ１２０、キャッシュメモリ１３０、及び共有メモリ１４０を制御パッケージ１３単位で着脱可能である。
【００５４】
図４は記憶装置２００の内部構成を説明する図である。前述したように、本実施形態の記憶装置２００には、ＳＡＳ及びＳＡＴＡの２つのタイプのディスクドライブ２１０が実装可能である。但し、本実施形態の記憶装置２００におけるＳＷ２４０は、セクタサイズが５２０（Byte／Sector）のＳＡＳタイプのディスクドライブ２１０を直接接続して用いる回路設計になっているため、異なるセクタサイズ（５１２（Byte／Sector））のＳＡＴＡタイプのディスクドライブ２１０は直接ＳＷ２４０に接続して用いることができない。そこで同図に示すように、ＳＡＴＡタイプのディスクドライブ２１０とＳＷ２４０の間にセクタサイズの変換（５２０（Byte／Sector）から５１２（Byte／Sector）への変換及びその逆の変換）を行う回路（変換基盤２１５）を設けてＳＡＴＡタイプのディスクドライブ２１０を接続して用いることができるようにしている。尚、本実施形態では、変換基盤２１５は、記憶装置２００側に設けられているとして説明するが、変換基盤２１５は制御装置１００側に設けられていてもよい。
【００５５】
図５に上記変換基盤２１５の実装状態（一例）を示している。同図にはディスクドライブ２１０を基本筐体１１又は増設筐体１２に実装する際に用いられるキャニスタ２１８にディスクドライブ２１０が実装された状態を示しており、キャニスタ２１８及びこれに実装されているディスクドライブ２１０を側方から眺めた状態を示している。
【００５６】
同図に示すように、キャニスタ２１８は、ディスクドライブ２１０が収容される内部空間を有しており、内部に収容されているディスクドライブの背面側に変換基盤２１５が設けられている。変換基盤２１５のディスクドライブ２１０側の面にはＳＡＴＡタイプのコネクタ２１５１が設けられ、他方の面にはＳＷ２４０のポートに接続するための２つのコネクタ２１５２が設けられている。尚、２つのコネクタ２１５２の夫々には異なるＦＳＷ２３０に所属するＳＷ２４０が接続される。
【００５７】
図６に変換基盤２１５のハードウエア構成を示している。同図に示すように、変換基盤２１５は、プロセッサ２１５５（ＣＰＵ又はＭＰＵ）、メモリ２１５６（ＲＡＭ、ＲＯＭ）、及び当該変換基盤２１５を駆動するための電源電圧を監視する電源電圧監視回路２１５７を備えている。
【００５８】
図７に変換基盤２１５の主な機能を示している。同図に示すように、変換基盤２１５は、セクタマッピング変換部７１１、Ｗｒｉｔｅコマンド処理部７１２、Ｎｕｌｌコマンド処理部７１３、Ｒｅａｄコマンド処理部７１４、及び障害時退避処理部７１５を備える。尚、同図に示した各機能は、変換基盤２１５が本来的に備える機能によって、もしくはＣＰＵ２１５５が、メモリ２１５６に記憶されているプログラムを実行することにより実現される。
【００５９】
同図に示す機能のうち、セクタマッピング変換部７１１は、前述したセクタサイズの変換を行う。即ちセクタマッピング変換部７１１は、ＳＷ２４０を介してＤＫＡ１２０から、ＳＡＳタイプ形式（５２０（Byte／Sector））でデータの格納位置（ＳＡＳの場合のシリンダ、トラック、セクタ）が指定された制御コマンドを受信すると、その指定をＳＡＴＡタイプ形式（５１２（Byte／Sector））に変換し、ＳＡＴＡタイプのディスクドライブ２１０における対応するデータの格納位置（ＳＡＴＡの場合のシリンダ、トラック、セクタで指定される格納位置）を求める。
【００６０】
図８ＡにＳＡＴＡタイプのセクタサイズ（５１２（Byte／Sector））に対応したデータフレーム（ＤＫＡ１２０から変換基盤２１５に送信される制御コマンドとともに送信されるデータフレーム）の構造を示す。同図に示すように、このデータフレーム８１０は、書き込みデータ又は読み出しデータが格納される５０４（Byte）のデータ領域８１１と、領域に格納されるデータから算出される誤り検出符号（ＣＲＣ（Cyclic Redundancy Check），ＬＲＣ（Longitudinal Redundancy Check）等）が格納される、８（Byte）のデータ領域８１２とを有する。
【００６１】
図８ＢにＳＡＳタイプのセクタサイズ（５２０（Byte／Sector））に対応したデータフレーム（変換基盤２１５によってＳＡＳタイプに変換された後のデータフレーム）の構造を示す。同図に示すように、このデータフレーム８２０は、書き込みデータ又は読み出しデータが格納される５１２（Byte）のデータ領域８２１と、領域に格納されるデータから算出される誤り検出符号が格納される８（Byte）のデータ領域８２２とを有する。
【００６２】
図９は変換基盤２１５のメモリ２１５６に格納されているセクタ状態管理テーブル９００（単位記憶領域状態管理テーブル）である。同図に示すように、セクタ状態管理テーブル９００には、ディスクドライブ２１０の各セクタに現在有効なデータが格納されているか否かを示す情報が管理される。同図において、ＬＢＡ９１１には、ディスクドライブ２１０のセクタを特定する（識別する）情報であるＬＢＡ（Logical Block Address）が設定される。尚、このＬＢＡは、ＳＡＳタイプ形式（５２０（Byte／Sector））のセクタを特定するＬＢＡであってもよいし、ＳＡＴＡタイプ形式（５１２（Byte／Sector））のセクタを特定するＬＢＡであってもよい。本実施形態ではＳＡＴＡタイプ形式（５１２（Byte／Sector））のセクタを特定するＬＢＡであるものとする。
【００６３】
フラグ９１２には、対応するＬＢＡで特定されるセクタに現在有効なデータが格納されている場合には「１」が、有効なデータが格納されていない場合には「０」が設定される。セクタ状態管理テーブル９００の用途や更新方法等の詳細については後述する。またＷｒｉｔｅコマンド処理部７１２、Ｎｕｌｌコマンド処理部７１３、Ｒｅａｄコマンド処理部７１４、及び障害時退避処理部７１５の各機能の詳細については後述する。
【００６４】
＝処理説明＝
次に、ストレージ装置１０のＤＫＡ１２０、変換基盤２１５、及びディスクドライブ２１０において行われる処理について詳細に説明する。尚、以下の説明において、符号の前に付した「Ｓ」の文字はステップを意味する。
【００６５】
＜Ｗｒｉｔｅ処理＞
図１０は、ＤＫＡ１２０から変換基盤２１５に制御コマンドとしてＷｒｉｔｅコマンドが送信された場合にＤＫＡ１２０と変換基盤２１５との間で行われる処理（以下、Ｗｒｉｔｅ処理Ｓ１０００と称する。）を説明するフローチャートである。尚、Ｗｒｉｔｅコマンドは、ディスクドライブ２１０の対象セクタへの書き込みデータの書き込み（格納）を指示するコマンドである。以下、同図とともにＷｒｉｔｅ処理Ｓ１０００について説明する。
【００６６】
ＤＫＡ１２０からＷｒｉｔｅコマンドが送信されると（Ｓ１０１１）、変換基盤２１５がこれを受信する（Ｓ１０１２）。
【００６７】
次に変換基盤２１５のセクタマッピング変換部７１１は、Ｗｒｉｔｅコマンドに書き込みデータの書き込み先として指定されている、ＳＡＳタイプ形式（５２０（Byte／Sector））のＬＢＡを、ＳＡＴＡタイプ形式（５１２（Byte／Sector））のＬＢＡに変換する（Ｓ１０１３）。
【００６８】
次に変換基盤２１５のＷｒｉｔｅコマンド処理部７１２のセクタ状態管理部７１２０は、セクタ状態管理テーブル９００を参照し、受信したＷｒｉｔｅコマンドに指定されているＬＢＡに対応するフラグの値を調べる（Ｓ１０１４）。フラグの値が「１」であれば（Ｓ１０１４：１）、Ｓ１０１５に進み、フラグの値が「０」であれば（Ｓ１０１４：０）、Ｓ１０１６に進む。
【００６９】
Ｓ１０１５では、Ｗｒｉｔｅコマンド処理部７１２は、ＤＫＡ１２０にエラー通知を送信する（書き込み処理が正常に行われなかった旨の信号を生成する）。このようにフラグの値が「１」である場合にＤＫＡ１２０にエラー通知を返すのは、現在有効データが書き込まれているセクタに対してデータが上書きされてしまうからである。
【００７０】
一方、Ｓ１０１６では、Ｗｒｉｔｅコマンド処理部７１２の第１誤り検出符号生成部７１２１は、Ｗｒｉｔｅコマンドとともに受信した書き込みデータに基づき、誤り検出符号（第１誤り検出符号）を生成してメモリ２１５６に記憶する（Ｓ１０１６）。尚、ここでは誤り検出符号はＣＲＣであるものとし、以下、ここで生成されたＣＲＣをＣＲＣ１と称するものとする。
【００７１】
続くＳ１０１７では、Ｗｒｉｔｅコマンド処理部７１２の書き込み処理実行部７１２２が、ディスクドライブ２１０にＷｒｉｔｅ信号を出力（書き込み処理を実行）し、Ｗｒｉｔｅコマンド処理部７１２のタイムアウト判断部７１２３が、応答時間（Ｗｒｉｔｅ信号を出力してから、ディスクドライブ２１０から書き込み処理が完了した旨の応答を受信するまでの時間）の計測を開始する。
【００７２】
Ｓ１０１８では、Ｗｒｉｔｅコマンド処理部７１２は、ディスクドライブ２１０から送られてくる応答を受信する。
【００７３】
Ｓ１０１９では、Ｗｒｉｔｅコマンド処理部７１２のタイムアウト判断部７１２３が、応答時間が予め設定された閾値を超えたか否かを判断する。応答時間が閾値を超えている場合には（Ｓ１０１９：ＹＥＳ）、Ｓ１０２０に進み、応答時間が閾値を超えていない場合には（Ｓ１０１９：ＮＯ）、Ｓ１０２４に進む。
【００７４】
Ｓ１０２０では、Ｗｒｉｔｅコマンド処理部７１２の検証用データ読出部７１２４は、今回受信したＷｒｉｔｅコマンドの対象となったセクタ（書き込みデータの書き込み先のセクタ。以下、対象セクタと称する。）から、当該セクタに格納されているデータを読み出す。
【００７５】
続くＳ１０２１では、Ｗｒｉｔｅコマンド処理部７１２の第２誤り検出符号生成部７１２５が、読み出したデータに基づき、誤り検出符号（第２誤り検出符号）を生成する（Ｓ１０２１）。尚、ここでは誤り検出符号はＣＲＣであるものとし、以下、ここで生成されたＣＲＣをＣＲＣ２と称するものとする。
【００７６】
Ｓ１０２２では、Ｗｒｉｔｅコマンド処理部７１２の比較検証処理部７１２６は、Ｓ１０１６においてメモリ２１５６に記憶したＣＲＣ１と、Ｓ１０２１で生成したＣＲＣ２を比較し、両者が一致するか否かを判断する。両者が一致する場合には（Ｓ１０２２：ＹＥＳ）、Ｓ１０２４に進む。両者が一致しない場合には（Ｓ１０２２：ＮＯ）、Ｓ１０２３に進む。
【００７７】
Ｓ１０２３では、Ｗｒｉｔｅコマンド処理部７１２の比較検証処理部７１２６は、ＤＫＡ１２０にエラー通知を送信する（書き込み処理が正常に行われなかった旨の信号を生成する）。
【００７８】
Ｓ１０２４では、Ｗｒｉｔｅコマンド処理部７１２が、ディスクドライブ２１０からの応答の内容が正常（status good）か否かを判断する。正常であればＳ１０２５に進み、正常でなければＳ１０２３に進んでＤＫＡ１２０にエラー通知を送信する。
【００７９】
尚、Ｓ１０２４で正常でないと判断される場合として、所定の閾値時間（Ｓ１０１９における閾値とは異なる閾値（WR_TOV : WRite Time Over threshold）。この閾値はＳ１０１９における閾値よりも長い。）以上待ってもディスクドライブ２１０から応答が返ってこない場合がある。
【００８０】
Ｓ１０２５では、Ｗｒｉｔｅコマンド処理部７１２が、セクタ状態管理テーブル９００の対象セクタのＬＢＡ９１１のフラグ９１２の値を「１」に設定する。
【００８１】
Ｓ１０２６では、Ｗｒｉｔｅコマンド処理部７１２は、ＤＫＡ１２０にＷｒｉｔｅ完了通知を送信する。
【００８２】
このように、変換基盤２１５のＷｒｉｔｅコマンド処理部７１２は、ＤＫＡ１２０からＷｒｉｔｅコマンドを受信した場合（Ｓ１０１２）、対象セクタのフラグ値が「０」であればＣＲＣ１を生成する。そしてＷｒｉｔｅ信号についてディスクドライブ２１０からの応答時間が閾値を超えた場合には（Ｓ１０１９：ＹＥＳ）、対象セクタからデータを読み出し、読み出したデータに基づきＣＲＣ２を生成し、このＣＲＣ２とＣＲＣ１とを比較して対象セクタに書き込みデータが正しく書き込まれたか否かを判断する。
【００８３】
即ち本実施形態のストレージ装置１０にあっては、ディスクドライブ２１０からの応答時間が閾値を超えた場合にのみ、誤り検出符号の検証を行うので、応答時間が閾値を超えない限り、Ｗｒｉｔｅコマンドについての処理を迅速に行うことができる。尚、ＣＲＣ１の生成は応答時間が閾値を超えない場合でも行われるが、ＣＲＣ１の生成のための負荷は一般に小さく、ＣＲＣ１の生成処理が書き込み処理のオーバーヘッドに与える影響は殆ど無い。
【００８４】
また応答時間が閾値を超えた場合には、誤り検出符号の検証が行われるので、ディスクドライブ２１０に格納されるデータの信頼性を確保することができる。
【００８５】
尚、変換基盤２１５からディスクドライブ２１０に送信されるＷｒｉｔｅ信号に対する応答時間が閾値を超える場合としては、例えばＷｒｉｔｅ信号で指定された書き込み先のディスクドライブ２１０の記憶領域に何らかの理由でデータを書き込めず、リトライが繰り返された後に書き込みに成功した場合がある。例えばＳＡＴＡタイプのディスクドライブ２１０は、内蔵ディスクへのデータの書き込みに失敗すると、内蔵されているアナログ回路によって自動的に内部でリトライを繰り返し、リトライが所定回数を超えると他のセクタにデータを書き込むオートリアサイン機能を有するが、このオートリアサイン機能が動作した場合に上記応答時間が閾値を超えることがある。
【００８６】
Ｓ１０１９における閾値をユーザやオペレータが設定できるように、例えばＳＶＰ１６０にそのためのユーザインタフェースを設けても良い。この場合、ユーザインタフェースは、例えばＤＫＡ１２０を介して変換基盤２１５のメモリ２１５６に記憶されている閾値を更新する。
【００８７】
Ｓ１０１６において生成されるＣＲＣ１は、これをＤＫＡ１２０に送信し、ＤＫＡ１２０において、キャッシュメモリ１３０から取得した対応するセクタに格納される予定の(又は格納されていた）データに基づくＣＲＣとこのＣＲＣ１とを比較することにより、ディスクドライブ２１０に格納されているデータの検証を行う目的で利用することもできる。
【００８８】
再び図１０を参照しつつ説明を続ける。Ｓ１０３１において、ＤＫＡ１２０は、Ｓ１０１５において変換基盤２１５から送信されたエラー通知を受信する。
【００８９】
Ｓ１０３２では、ＤＫＡ１２０は、エラーカウンタの値をインクリメントする。
Ｓ１０３３では、ＤＫＡ１２０は、エラー回数が予め設定されている閾値を超えたか否かを判断する。エラー回数が閾値を超えていない場合には（Ｓ１０３３：ＮＯ）、Ｓ１０１１に進み、再度Ｗｒｉｔｅコマンドを変換基盤２１５に送信する。エラー回数が閾値を超えている場合には（Ｓ１０３３：ＹＥＳ）、Ｓ１０３４に進む。
【００９０】
Ｓ１０３４では、ＤＫＡ１２０は、Ｗｒｉｔｅコマンドによる書き込みデータの書き込み先として指定されていたディスクドライブ２１０を閉塞（アンマウント）する。
【００９１】
Ｓ１０３５では、ＤＫＡ１２０は、閉塞したディスクドライブ２１０についてのリカバリ処理を実施する。リカバリ処理は、例えば閉塞したディスクドライブ２１０がＲＡＩＤ５のＲＡＩＤグループを構成していた場合には、当該ＲＡＩＤグループに所属する他のディスクドライブ２１０（パリティドライブを含む）に格納されているデータにより、閉塞したディスクドライブ２１０に格納されていたデータが供給されるようにする処理である。また閉塞したディスクドライブ２１０をスペアディスクと交換し、当該ＲＡＩＤグループに所属する他のディスクドライブ２１０（パリティドライブを含む）に格納されているデータにより、閉塞したディスクドライブ２１０に格納されていたデータを生成し、生成したデータを交換後したスペアディスクに格納する処理である。
【００９２】
Ｓ１０４０では、ＤＫＡ１２０は、変換基盤２１５から送信されてくるＷｒｉｔｅ完了通知を受信する。
【００９３】
図１１は、図１０のＳ１０１９において、応答時間が閾値を超えていなかった場合に対応する、ＤＫＡ１２０、変換基盤２１５、及びディスクドライブ２１０間で行われる通信シーケンスを説明する図である。
【００９４】
Ｓ１１１１では、ＤＫＡ１２０が変換基盤２１５にＷｒｉｔｅコマンドを送信する。  
Ｓ１１１２では、変換基盤２１５とディスクドライブ２１０との間で行われる、ディスクドライブ２１０へのデータ書き込みのためのデータ転送の準備シーケンス（ＤＭＡのセットアップ）が行われる。
【００９５】
Ｓ１１１３では、変換基盤２１５からＤＫＡ１２０に、データ転送の準備完了通知が送信される。
Ｓ１１１４では、ＤＫＡ１２０から変換基盤２１５にデータが転送される。
Ｓ１１１５では、変換基盤２１５が、ＤＫＡ１２０から受信したデータに基づきＣＲＣ１を生成して記憶する。
【００９６】
Ｓ１１１６では、変換基盤２１５からディスクドライブ２１０にデータが転送される。
Ｓ１１１７では、ディスクドライブ２１０から変換基盤２１５に、Ｗｒｉｔｅ完了通知が送信される。
Ｓ１１１８では、変換基盤２１５からＤＫＡ１２０に、Ｗｒｉｔｅ完了通知が送信される。
【００９７】
図１２は、図１０のＳ１０１９において、応答時間が閾値を超えていた場合に対応する、ＤＫＡ１２０、変換基盤２１５、及びディスクドライブ２１０間で行われる通信シーケンスを説明する図である。
【００９８】
Ｓ１２１１〜Ｓ１２１７については、図１１のＳ１１１１〜Ｓ１１１７と同様である。
Ｓ１２１８では、変換基盤２１５とディスクドライブ２１０との間で行われる、ディスクドライブ２１０からのデータの読み出しのためのデータ転送の準備シーケンス（ＤＭＡのセットアップ）が行われる。
【００９９】
Ｓ１２１９では、ディスクドライブ２１０から変換基盤２１５にデータが読み出される。
Ｓ１２２０では、ディスクドライブ２１０から変換基盤２１５に読み出し完了通知が送信される。
【０１００】
Ｓ１２２１では、変換基盤２１５が、ディスクドライブ２１０から読み出したデータに基づきＣＲＣ２を生成する。
【０１０１】
Ｓ１２２２では、変換基盤２１５が、ＣＲＣ１とＣＲＣ２を比較する。尚、同図は図１０のＳ１０２２においてＣＲＣ１とＣＲＣ２が一致する場合である。
Ｓ１２２３では、変換基盤２１５からＤＫＡ１２０に、Ｗｒｉｔｅ完了通知が送信される。
【０１０２】
＜Ｎｕｌｌ処理＞
図１３は、ＤＫＡ１２０から変換基盤２１５に制御コマンドとしてＮｕｌｌコマンドが送信された場合にＤＫＡ１２０と変換基盤２１５との間で行われる処理（以下、Ｎｕｌｌ処理Ｓ１３００と称する。）を説明するフローチャートである。尚、Ｎｕｌｌコマンドは、ディスクドライブ２１０の対象セクタの初期化を指示するコマンド（Ｎｕｌｌ値を格納するコマンド）である。以下、同図とともにＮｕｌｌ処理Ｓ１３００について説明する。
【０１０３】
ＤＫＡ１２０からＮｕｌｌコマンドが送信されると（Ｓ１３１１）、変換基盤２１５がこれを受信する（Ｓ１３１２）。
【０１０４】
次に変換基盤２１５のセクタマッピング変換部７１１は、Ｎｕｌｌコマンドに書き込みデータの書き込み先として指定されている、ＳＡＳタイプ形式（５２０（Byte／Sector））のＬＢＡを、ＳＡＴＡタイプ形式（５１２（Byte／Sector））のＬＢＡに変換する（Ｓ１３１３）。
【０１０５】
次に変換基盤２１５のＮｕｌｌコマンド処理部７１３のセクタ状態管理部７１３１は、セクタ状態管理テーブル９００を参照し、受信したＮｕｌｌコマンドに指定されているＬＢＡに対応するフラグの値を調べる（Ｓ１３１４）。フラグの値が「１」であれば（Ｓ１３１４：１）、Ｓ１３１５に進み、フラグの値が「０」であれば（Ｓ１３１４：０）、Ｓ１３１７に進む。
【０１０６】
Ｓ１３１５では、Ｎｕｌｌコマンド処理部７１３のセクタ状態管理部７１３１は、ＤＫＡ１２０にエラー通知を送信する。このようにフラグの値が「１」である場合にＤＫＡ１２０にエラー通知を返すのは、現在有効データが書き込まれているセクタに対してＮｕｌｌ値が格納されてしまうからである。
【０１０７】
Ｓ１３１７では、Ｎｕｌｌコマンド処理部７１３の初期化処理実行部７１３２は、ディスクドライブ２１０にＮｕｌｌ信号（対象セクタにＮｕｌｌを格納させる信号）を出力する。
【０１０８】
Ｓ１３１８では、Ｎｕｌｌコマンド処理部７１３は、ディスクドライブ２１０からの応答の内容が正常か否かを判断する。正常であればＳ１３１９に進み、正常でなければＳ１３１５に進んでＤＫＡ１２０にエラー通知を送信する。
【０１０９】
Ｓ１３１９では、Ｎｕｌｌコマンド処理部７１３のセクタ状態管理部７１３１は、セクタ状態管理テーブル９００の対象セクタのＬＢＡ９１１のフラグ９１２の値を「０」に設定する。これにより当該セクタへの書き込みが可能になる。
【０１１０】
Ｓ１３２０では、Ｎｕｌｌコマンド処理部７１３は、ＤＫＡ１２０にＮｕｌｌ完了通知を送信する。
Ｓ１３３１〜Ｓ１３３５及びＳ１３４０のＤＫＡ１２０の処理は、図１０におけるＳ１０３１〜Ｓ１０３５及びＳ１０４０の処理と同様であるのでここでは説明を省略する。
【０１１１】
このように、変換基盤２１５のＮｕｌｌコマンド処理部７１３は、ＤＫＡ１２０からＮｕｌｌコマンドを受信した場合（Ｓ１３１２）、対象セクタのフラグ値が「０」であればディスクドライブ２１０にＮｕｌｌ信号を出力するが（Ｓ１３１７）、Ｗｒｉｔｅコマンドを受信（Ｓ１０１２）した場合のように応答時間の計測や応答時間の閾値との比較、ＣＲＣの生成や比較等、Ｗｒｉｔｅ処理Ｓ１０００の場合に行っているこれらの処理を基本的に実行しない。このため、Ｎｕｌｌコマンドに関する処理を高速に実行することができる。
【０１１２】
＜Ｒｅａｄ処理＞
図１４は、ＤＫＡ１２０から変換基盤２１５に制御コマンドとしてＲｅａｄコマンドが送信された場合にＤＫＡ１２０と変換基盤２１５との間で行われる処理（以下、Ｒｅａｄ処理Ｓ１４００と称する。）を説明するフローチャートである。尚、Ｒｅａｄコマンドは、ディスクドライブ２１０の対象セクタからのデータの読み出しを指示するコマンドである。以下、同図とともにＲｅａｄ処理Ｓ１４００について説明する。
【０１１３】
ＤＫＡ１２０からＲｅａｄコマンドが送信されると（Ｓ１４１１）、変換基盤２１５がこれを受信する（Ｓ１４１２）。
【０１１４】
次に変換基盤２１５のセクタマッピング変換部７１１は、Ｒｅａｄコマンドに読み出しデータの格納位置として指定されている、ＳＡＳタイプ形式（５２０（Byte／Sector））のＬＢＡを、ＳＡＴＡタイプ形式（５１２（Byte／Sector））のＬＢＡに変換する（Ｓ１４１３）。
【０１１５】
次に変換基盤２１５のＲｅａｄコマンド処理部７１４のセクタ状態管理部７１４１は、セクタ状態管理テーブル９００を参照し、受信したＲｅａｄコマンドに指定されているＬＢＡに対応するフラグの値を調べる（Ｓ１４１４）。そしてフラグの値が「０」であれば（Ｓ１４１４：０）、Ｓ１４１５に進み、フラグの値が「１」であれば（Ｓ１４１４：１）、Ｓ１４１６に進む。
【０１１６】
Ｓ１４１５では、Ｒｅａｄコマンド処理部７１４のセクタ状態管理部７１４１は、ＤＫＡ１２０にエラー通知を送信する。このようにフラグの値が「０」である場合にＤＫＡ１２０にエラー通知を返すのは、現在有効データが書き込まれていないセクタからデータを読みだそうとしているからである。
【０１１７】
Ｓ１４１７では、Ｒｅａｄコマンド処理部７１４の読み出し処理実行部７１４２は、ディスクドライブ２１０にＲｅａｄ信号（対象セクタに格納されているデータを読み出す信号）を出力する。
【０１１８】
Ｓ１４１８では、Ｒｅａｄコマンド処理部７１４は、ディスクドライブ２１０からの応答の内容が正常か否かを判断する。正常であればＳ１４１９に進み、正常でなければＳ１４１５に進んでＤＫＡ１２０にエラー通知を送信する。
【０１１９】
Ｓ１４２０では、Ｒｅａｄコマンド処理部７１４は、ＤＫＡ１２０にＲｅａｄ完了通知を送信する。
Ｓ１４３１〜Ｓ１４３５及びＳ１４４０のＤＫＡ１２０の処理は、図１０におけるＳ１０３１〜Ｓ１０３５及びＳ１０４０の処理と同様であるのでここでは説明を省略する。
【０１２０】
このように、変換基盤２１５のＲｅａｄコマンド処理部７１４は、ＤＫＡ１２０からＲｅａｄコマンドを受信した場合（Ｓ１４１２）、対象セクタのフラグ値が「１」であればディスクドライブ２１０にＲｅａｄ信号を出力する（Ｓ１４１７）。しかしＷｒｉｔｅコマンドを受信（Ｓ１０１２）したときのように、応答時間の計測や応答時間の閾値との比較、ＣＲＣの生成や比較等、Ｗｒｉｔｅ処理Ｓ１０００の場合に行っているこれらの処理を基本的に実行しない。このため、Ｒｅａｄコマンドに関する処理を高速に実行することができる。
【０１２１】
＜障害時退避処理＞
ところで、変換基盤２１５に何らかの障害が発生し、変換基盤２１５のメモリ２１５６に格納されているセクタ状態管理テーブル９００を喪失してしまうと、前述のＷｒｉｔｅ処理Ｓ１０００、Ｎｕｌｌ処理Ｓ１３００、Ｒｅａｄ処理Ｓ１４００の実行に支障を来すことになる。そこで変換基盤２１５は、障害の発生を検知すると自動的にディスクドライブ２１０にセクタ状態管理テーブル９００を退避する。以下、この処理（以下、障害時退避処理Ｓ１５００と称する。）について図１５に示すフローチャートとともに説明する。
【０１２２】
変換基盤２１５の障害時退避処理部７１５は、電源電圧監視回路２１５７から入力される信号に基づき、変換基盤２１５の電源電圧（駆動電圧）が、予め設定された閾値を超えているか否かをリアルタイムに監視している（Ｓ１５１１）。
【０１２３】
何らかの障害によって電源電圧が閾値以下になったことを検知すると（Ｓ１５１１：ＮＯ）、障害時退避処理部７１５は、セクタ状態管理テーブル９００の内容をディスクドライブ２１０に書き込む（デステージする）（Ｓ１５１２）。
【０１２４】
そして、障害時退避処理部７１５は、セクタ状態管理テーブル９００のディスクドライブ２１０への格納（退避）が完了すると、当該ディスクドライブ２１０を停止させる（閉塞する）（Ｓ１５１３）。このようにディスクドライブ２１０を停止させてしまうのは、変換基盤２１５に障害が生じている場合にディスクドライブ２１０へのアクセスが行われると、ディスクドライブ２１０に格納されているデータの破損等、障害範囲が拡大する可能性が高いからである。
【０１２５】
Ｓ１５１４では、障害時退避処理部７１５は、ＤＫＡ１２０に障害が発生している旨を通知する。
【０１２６】
尚、変換基盤２１５の障害が復旧した場合や、正常な変換基盤２１５に交換された場合には、当該変換基盤２１５の障害時退避処理部７１５はディスクドライブ２１０に退避しておいたセクタ状態管理テーブル９００を読み出してメモリ２１５６に格納する。
【０１２７】
以上によれば、変換基盤２１５に何らかの障害が発生した場合に、セクタ状態管理テーブル９００を安全に退避することができる。また障害が復旧した場合には、ディスクドライブ２１０の現在の状態に対応したセクタ状態管理テーブル９００を変換基盤２１５に書き戻すことができ、ディスクドライブ２１０の運用をスムーズに再開することができる。
【０１２８】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図１】
2011525643.tif 000003
【図２Ａ】
2011525643.tif 000004
【図２Ｂ】
2011525643.tif 000005
【図３】
2011525643.tif 000006
【図４】
2011525643.tif 000007
【図５】
2011525643.tif 000008
【図６】
2011525643.tif 000009
【図７】
2011525643.tif 000010
【図８Ａ】
2011525643.tif 000011
【図８Ｂ】
2011525643.tif 000012
【図９】
2011525643.tif 000013
【図１０】
2011525643.tif 000014
【図１１】
2011525643.tif 000015
【図１２】
2011525643.tif 000016
【図１３】
2011525643.tif 000017
【図１４】
2011525643.tif 000018
【図１５】
2011525643.tif 000019
【国際調査報告】
2011525643.tif 000020
2011525643.tif 000021
2011525643.tif 000022