(57)【特許請求の範囲】
【請求項１】
データを格納する記録媒体を有する記憶装置と、
上位装置と接続し、前記記憶装置に対するスキャンおよび前記上位装置からの要求に基づく前記データの書き込みおよび読み出しを行う制御装置と、
を備える記憶システムにおいて、
前記制御装置は、
前記上位装置からの要求に基づく前記記憶装置に対する前記データの書き込みまたは読み出しを行っているか否か判定し、
前記データの書き込みまたは読み出しを行っている場合、第１の時間間隔ごとに前記記録媒体のスキャンを前記記録媒体の論理ブロックアドレスの昇順または降順のうち一方の第１の方向に行い、
前記記憶装置は、
第２の時間前から現在までの間に、前記上位装置からの要求に基づく前記データの書き込みまたは読み出しがあったか否か判定し、前記データの書き込みおよび読み出しが無かった場合、前記記録媒体のスキャンを前記第１の方向とは反対方向である第２の方向に行う
ことを特徴とする記憶システム。
【請求項２】
前記制御装置は、
前記上位装置からの要求に基づく前記記憶装置に対する前記データの書き込みまたは読み出しを行っている場合、前記第１の方向が論理ブロックアドレスの降順方向であるとき、前記制御装置が行ったスキャンの範囲を示す第１の論理ブロックアドレスと前記記憶装置が行ったスキャンの範囲を示す第２の論理ブロックアドレスとを比較し、
前記第２の論理ブロックアドレスが前記第１の論理ブロックアドレス以上の場合、前記第１の論理ブロックアドレスを前記記録媒体の論理ブロックアドレスの最大値に設定し、前記第２の論理ブロックアドレスを前記記録媒体の論理ブロックの最小値に設定することを特徴とする請求項１記載の記憶システム。
【請求項３】
前記記憶装置は、前記第１の方向が論理ブロックアドレスの降順方向であるとき、第３の時間間隔ごとに
前記第１の論理ブロックアドレスと前記第２の論理ブロックアドレスとを比較し、
前記第２の論理ブロックアドレスが前記第１の論理ブロックアドレス以上の場合、前記第１の論理ブロックアドレスを前記記録媒体の論理ブロックアドレスの最大値に設定し、第２の論理ブロックアドレスを前記記録媒体の論理ブロックの最小値に設定することを特徴とする請求項２記載の記憶システム。
【請求項４】
前記制御装置は、
前記上位装置からの要求に基づく前記記憶装置に対する前記データの書き込みまたは読み出しを行っている場合、前記第１の方向が論理ブロックアドレスの昇順方向であるとき、前記制御装置が行ったスキャンの範囲を示す第１の論理ブロックアドレスと前記記憶装置が行ったスキャンの範囲を示す第２の論理ブロックアドレスとを比較し、
前記第１の論理ブロックアドレスが前記第２の論理ブロックアドレス以上の場合、前記第２の論理ブロックアドレスを前記記録媒体の論理ブロックアドレスの最大値に設定し、前記第１の論理ブロックアドレスを前記記録媒体の論理ブロックの最小値に設定することを特徴とする請求項１記載の記憶システム。
【請求項５】
前記記憶装置は、前記第１の方向が論理ブロックアドレスの昇順方向であるとき、第３の時間間隔ごとに
前記第１の論理ブロックアドレスと前記第２の論理ブロックアドレスとを比較し、
前記第１の論理ブロックアドレスが前記第２の論理ブロックアドレス以上の場合、前記第２の論理ブロックアドレスを前記記録媒体の論理ブロックアドレスの最大値に設定し、第１の論理ブロックアドレスを前記記録媒体の論理ブロックの最小値に設定することを特徴とする請求項４記載の記憶システム。
【請求項６】
前記記憶装置は、エラーを検出した場合、前記制御装置にエラーの発生を示すエラー信号を送信することを特徴とする請求項１乃至５記載の記憶システム。
【請求項７】
上位装置およびデータを格納する記録媒体を有する記憶装置に接続する制御装置において、
前記制御装置は、
前記上位装置からの要求に基づく前記記憶装置に対する前記データの書き込みまたは読み出しを行っているか否か判定し、
前記データの書き込みまたは読み出しを行っている場合、第１の時間間隔ごとに前記記録媒体のスキャンを前記記録媒体の論理ブロックアドレスの昇順または降順のうち一方の第１の方向に行い、
前記上位装置からの要求に基づく前記記憶装置に対する前記データの書き込みまたは読み出しを行っている場合、前記第１の方向が論理ブロックアドレスの降順方向であるとき、前記制御装置が行ったスキャンの範囲を示す第１の論理ブロックアドレスと前記記憶装置が行ったスキャンの範囲を示す第２の論理ブロックアドレスとを比較し、
前記第２の論理ブロックアドレスが前記第１の論理ブロックアドレス以上の場合、前記第１の論理ブロックアドレスを前記記録媒体の論理ブロックアドレスの最大値に設定し、前記第２の論理ブロックアドレスを前記記録媒体の論理ブロックの最小値に設定することを特徴とする制御装置。
【請求項８】
前記制御装置は、
前記上位装置からの要求に基づく前記記憶装置に対する前記データの書き込みまたは読み出しを行っている場合、前記第１の方向が論理ブロックアドレスの昇順方向であるとき、前記制御装置が行ったスキャンの範囲を示す第１の論理ブロックアドレスと前記記憶装置が行ったスキャンの範囲を示す第２の論理ブロックアドレスとを比較し、
前記第１の論理ブロックアドレスが前記第２の論理ブロックアドレス以上の場合、前記第２の論理ブロックアドレスを前記記録媒体の論理ブロックアドレスの最大値に設定し、前記第１の論理ブロックアドレスを前記記録媒体の論理ブロックの最小値に設定することを特徴とする請求項７記載の制御装置。
【請求項９】
上位装置に接続する制御装置に接続し、データを格納する記録媒体を有する記憶装置において、
前記記憶装置は、
前記制御装置の指示に従って、前記記録媒体のスキャンを前記記録媒体の論理ブロックアドレスの昇順または降順のうち一方の第１の方向に行い、
第１の時間前から現在までの間に、前記上位装置からの要求に基づく前記データの書き込みまたは読み出しがあったか否か判定し、前記データの書き込みおよび読み出しが無かった場合、前記記録媒体のスキャンを前記第１の方向とは反対方向である第２の方向に行うことを特徴とする記憶装置。
【請求項１０】
前記記憶装置は、第１の方向が論理ブロックアドレスの降順方向である場合、所定の時間間隔ごとに
前記制御装置の指示により行ったスキャンの範囲を示す第１の論理ブロックアドレスと前記記憶装置が行ったスキャンの範囲を示す第２の論理ブロックアドレスとを比較し、
前記第２の論理ブロックアドレスが前記第１の論理ブロックアドレス以上の場合、前記第１の論理ブロックアドレスを前記記録媒体の論理ブロックアドレスの最大値に設定し、前記第２の論理ブロックアドレスを前記記録媒体の論理ブロックの最小値に設定することを特徴とする請求項９記載の記憶装置。
【請求項１１】
前記記憶装置は、第１の方向が論理ブロックアドレスの昇順方向である場合、所定の時間間隔ごとに
前記制御装置の指示により行ったスキャンの範囲を示す第１の論理ブロックアドレスと前記記憶装置が行ったスキャンの範囲を示す第２の論理ブロックアドレスとを比較し、
前記第１の論理ブロックアドレスが前記第２の論理ブロックアドレス以上の場合、前記第２の論理ブロックアドレスを前記記録媒体の論理ブロックアドレスの最大値に設定し、前記第１の論理ブロックアドレスを前記記録媒体の論理ブロックの最小値に設定することを特徴とする請求項９記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記録媒体のチェックを行う記憶システム、制御装置、および記憶装置に関する。
【背景技術】
【０００２】
磁気ディスク装置の大容量化に伴い、最近のRedundant Arrays of Inexpensive Disks （RAID）装置は大容量化が進んでいる。磁気ディスク装置の品質を保証するために、RAID装置は、通常のI/O処理とは別処理で、Verifyコマンドによるスキャンを磁気ディスク装置の全範囲に実施するディスクパトロール機能を有する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２１７１４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のディスクパトロール機能では、RAID装置が通常I/O処理とは別処理で2秒間隔でVerifyコマンドをRAIDグループの磁気ディスク装置に対して発行し、磁気ディスク装置の全範囲に対してスキャンを実施している。
【０００５】
その場合、磁気ディスク装置の容量が約1TBの場合で約9ヶ月もの長い時間が掛かってしまうという問題があった。また、Verifyコマンドの発行間隔を2秒以下にすれば、スキャン時間は早くなるが、通常I/O処理の性能に影響が出てしまうという問題があった。
【０００６】
本発明の課題は、記憶装置のチェックを短時間で行うことが可能な装置を提供することである。
【課題を解決するための手段】
【０００７】
実施の形態の記憶システムは、データを格納する記録媒体を有する記憶装置と、上位装置と接続し、前記記憶装置に対するスキャンおよび前記上位装置からの要求に基づく前記データの書き込みおよび読み出しを行う制御装置と、を備える。
【０００８】
前記制御装置は、前記上位装置からの要求に基づく前記記憶装置に対する前記データの書き込みまたは読み出しを行っているか否か判定し、前記データの書き込みまたは読み出しを行っている場合、第１の時間間隔ごとに前記記録媒体のスキャンを前記記録媒体の論理ブロックアドレスの昇順または降順のうち一方の第１の方向に行う。
【０００９】
前記記憶装置は、第２の時間前から現在までの間に、前記上位装置からの要求に基づく前記データの書き込みまたは読み出しがあったか否か判定し、前記データの書き込みおよび読み出しが無かった場合、前記記録媒体のスキャンを前記第１の方向とは反対方向である第２の方向に行う。
【発明の効果】
【００１０】
実施の形態の装置によれば、記憶装置のチェックを短時間で行うことが可能となる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態に係るRAIDシステムの構成図である。
【図２】BMS Logテーブルの例である。
【図３】MAX LBAテーブルの例である。
【図４】RAID開始LBAテーブルの例である。
【図５】実施の形態に係るRAIDシステムの動作を示す図である。
【図６】実施の形態に係るディスクパトロール処理のフローチャートである。
【図７】BMS処理の詳細なフローチャートである。
【図８】I/Oによるスキャン処理の詳細なフローチャートである。
【図９】実施の形態に係るBMS監視処理のフローチャートである。
【図１０】BMS中のエラー処理のフローチャートである。
【図１１】RAID装置によるスキャン中のエラー処理のフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら実施の形態について説明する。
図１は、実施の形態に係るRAIDシステムの構成図である。
RAIDシステム１０１は、RAID装置２０１および磁気ディスク装置３０１を備える。
【００１３】
RAID装置２０１は、RAID制御部２１１、データバッファ２１２、およびI/O制御部２１３を備える。
RAID装置２０１は、データの読み書きを要求するホスト（上位装置）１０２と接続している。ホスト１０２は、RAID２０１装置に、データの書き込みおよび読み出しを要求する。
【００１４】
RAID制御部２１１は、コマンド発行の指示などの各種処理を行う。
データバッファ２１２は、RAID装置２０１で使用されるデータ等を格納するための記憶手段である。
【００１５】
I/O制御部２１３は、RAID制御部２１１の指示に従い、コマンドを磁気ディスク装置３０１に発行する。
磁気ディスク装置３０１は、制御ボード３１１およびディスクエンクロージャ３２１を備える。
【００１６】
制御ボード３１１は、磁気ディスク装置３０１の制御を行う。
制御ボード３１１は、データバッファ３１２、コントローラ制御部３１３、Micro Processing Unit（MPU）３１４、メモリ３１５、サーボ制御部３１６、リードライト制御部３１７を備える。
【００１７】
データバッファ３１２は、RAID装置から受信したデータおよびRAID装置へ送信するデータを一時的に格納しておくための記憶手段である。
コントローラ制御部３１３は、RAID装置から受信したコマンドの実行やバックグラウンドメディアスキャン（BMS）などの各種処理を行う。
【００１８】
ＭＰＵ３１４は、ヘッドの位置決めや読み出したデータのエラー判定などの各種処理を行う。
メモリ３１５は、ファームウェアや設定データを格納するための記憶手段である。
【００１９】
サーボ制御部３１６は、スピンドルモータ３２３およびボイスコイルモータ３２６のサーボ制御を行う。
リードライト制御部３１７は、磁気ディスク３２２へのデータの書き込みおよび磁気ディスク３２２からのデータの読み出しを制御する。
【００２０】
ディスクエンクロージャ３２１は、磁気ディスク３２２などを搭載するための筐体である。
ディスクエンクロージャ３２１は、磁気ディスク３２２、スピンドルモータ３２３、ヘッド３２４、ヘッドアンプ３２５、およびボイスコイルモータ３２６を備える。
【００２１】
磁気ディスク３２２は、情報を記録するための記録媒体であり、例えば磁性体を塗布または蒸着した金属のディスクである。
スピンドルモータ３２３は、磁気ディスク３２２を回転させるためのモータであり、サーボ制御部３１６により制御される。
【００２２】
ヘッド３２４は、磁気ディスク３２２へのデータの書き込みおよび磁気ディスク３２２からのデータの読み出しを行う。
ヘッドアンプ３２５は、磁気ディスク３２２へ書き込むデータ信号および磁気ディスク３２２から読み出したデータ信号を増幅する。
【００２３】
ボイスコイルモータ３２６は、ヘッド３２４を動かし、ヘッド３２４を磁気ディスク３２２上の所定の位置に移動させる。
本実施の形態では、記憶装置として磁気ディスク装置３０１を用いているが、磁気ディスク装置３０１の代わりに光ディスク装置や半導体記憶装置などを用いることも出来る。
【００２４】
図２は、BMS Logテーブルの例である。
BMS Logテーブルには、電源投入時間、BMS Status、Scan実施回数、進捗率、BMS開始LBA、交代処理Stasus、エラーセンス、エラーLBAが記述されている。
【００２５】
BMS Logテーブルは、磁気ディスク３２２に記録されている。
電源投入時間は、磁気ディスク３０１に電源が投入された時間である。
BMS Statusは、BMSの状態（例えば、実施中、正常終了、エラー終了など）である。
【００２６】
Scan実施回数は、スキャンを実施した回数である。
進捗率は、スキャンの進捗率である。
BMS開始LBAは、次にスキャンを行う開始地点の論理ブロックアドレス（LBA）である。または、スキャンが完了している最終地点のLBAを示す。
【００２７】
交代処理Statusは、エラー処理で交代処理を実施したか否かを示す。
エラーセンスは、エラーを示すエラーコードである。
エラーLBAは、エラーを検出した箇所のLBAである。
【００２８】
図３は、MAX LBAテーブルの例である。
MAX LBAテーブルは、データバッファ２１２に格納されている。
MAX LBAテーブルには、MAX LBAが記述されている。
MAX LBAは、磁気ディスク装置３０１のLBAの最大値である。
【００２９】
図４は、RAID開始LBAテーブルの例である。
RAID開始LBAテーブルは、データバッファ２１２に格納されている。
RAID開始LBAテーブルには、RAID装置スキャン開始LBA、コマンド指定Block数、コマンド指定LBA、次開始LBAが記述されている。
RAID装置スキャン開始LBAは、次にスキャンを開始する地点を算出するためのLBAである。または、スキャンが完了している最終地点のLBAを示す。
【００３０】
コマンド指定Block数は、１回のスキャンにおいて、スキャンを実行するブロック数である。
コマンド指定LBAは、次のスキャンの開始地点のLBAである。コマンド指定LBAは、RAID装置スキャン開始LBA-コマンド指定Block数+1で算出される。
次開始LBAは、次にスキャンを行うときのRAID装置スキャン開始LBAである。次開始LBAはコマンド指定LBAから1を引いた値である。
【００３１】
図５は、実施の形態に係るRAIDシステムの動作を示す図である。
図５のRAIDシステム１０１は、４つの磁気ディスク装置３０１−ｎ（ｎ＝１〜４）を
備える。また、４つの磁気ディスク装置３０１−ｎを一つのRAIDグループとする。
磁気ディスク３０１−１、３０１−３には、通常I/O処理（書き込みまたは読み込み）およびディスクパトロール処理（Verifyコマンドの発行によるスキャン）が行われている。尚、ディスクパトロール処理は、２秒間隔ごとに行われている。また、Verifyコマンドの発行によるスキャンを行うことをI/Oによるスキャンと呼ぶ。
【００３２】
磁気ディスク装置３０１−２には、通常I/O処理は行われていない。したがって、磁気ディスク装置３０１−２は、アイドルとなり、ＢＭＳによるスキャンを行う。
磁気ディスク装置３０１−４には、通常I/O処理の後、ディスクパトロール処理が行われる。その後、磁気ディスク装置３０１−４には、通常I/O処理が行われない。それにより、磁気ディスク装置３０１−４は、アイドルとなり、ＢＭＳによるスキャンを行う。
【００３３】
図６は、実施の形態に係るディスクパトロール処理のフローチャートである。
ステップＳ５０１において、RAID制御部２１１は、MAX LBAテーブルのMAX LBAを磁気ディスク装置３０１のLBAの最大値に設定する。
【００３４】
ステップＳ５０２において、RAID制御部２１１は、RAID装置スキャン開始LBAをMAX LBAに設定する。
ステップＳ５０３において、RAID制御部２１１は、磁気ディスク装置３０１からBMS開始LBAを取得する。
【００３５】
ステップＳ５０４において、RAID制御部２１１は、磁気ディスク装置３０１への通常I/O（書き込み要求または読み出し要求）の発行があるか否か判定する。
詳細には、RAID装置２０１は、ホスト１０２からのデータの書き込み要求または読み出し要求を受信し、磁気ディスク装置３０１にデータの書き込み要求または読み出し要求を送信する。磁気ディスク装置３０１は、データの書き込みまたは読み出しを行い、データの書き込みまたは読み出しが完了した場合、データの書き込みまたは読み出しが完了したことをRAID装置２０１に報告（応答）する。RAID制御部２１１は、データの書き込みまたは読み出しが未完了の場合、すなわち磁気ディスク３０１からのデータの書き込み要求または読み出し要求に対する応答を待っている場合、磁気ディスク装置３０１への通常I/Oの発行があると判定する。
【００３６】
通常I/Oの発行がある場合、制御はステップＳ５０６に進み、通常I/Oの発行がない場合、制御はステップＳ５０５に進む。
ステップＳ５０５において、コントローラ制御部３１３は、BMSを実行する。
【００３７】
BMSは、磁気ディスク装置３０１のアイドル時間を利用し、磁気ディスクに対してVerifyを行う。
BMSは、Pre Scan機能とBackground Media Scan機能の２つの機能を有する。
【００３８】
Pre Scan機能は、磁気ディスク装置３０１の電源投入直後から磁気ディスク３２２の全ユーザ領域のVerifyを実施する。
Background Media Scan機能は、Pre Scan機能が実施されていない場合に実施され、所定の時間を空けて、再度Verifyを行う。
尚、BMS処理についての詳細は後述する。
【００３９】
ステップＳ５０６において、RAID制御部２１１は、BMS開始LBAがRAID装置スキャン開始LBAより小さいか否か判定する。BMS開始LBAがRAID装置スキャン開始LBAより小さい場合、制御はステップＳ５０９に進み、BMS開始LBAがRAID装置スキャン開始LBA以上の場合、制御はステップＳ５０７に進む。
【００４０】
尚、BMS開始LBAがRAID装置スキャン開始LBA以上であるということは、RAID装置２０１によるスキャンとBMSによるスキャンにより、磁気ディスク３２２全体のスキャンが行われたことを意味している。
【００４１】
ステップＳ５０７において、RAID制御部２１１は、BMS開始LBAを初期化する。すなわち、BMS開始LBAを磁気ディスク３２２のLBAの最小値とする。
ステップＳ５０８において、RAID制御部２１１は、RAID装置スキャン開始LBAをMAX LBAに設定する。また、RAID制御部２１１は、Scan実施回数に１を加算する。
【００４２】
ステップＳ５０９において、RAID制御部２１１は、I/Oによるスキャンを行う。尚、I/Oによるスキャン処理の詳細については後述する。
ステップＳ５１０において、RAID制御部２１１は、２秒間待機する。尚、実施の形態においては、待機時間は２秒としているが、これに限られず適宜変更可能である。
【００４３】
ステップＳ５１１において、RAID制御部２１１は、磁気ディスク装置３０１への通常I/Oの発行があるか否か判定する。通常I/Oの発行がある場合、制御はステップＳ５０９に戻り、通常I/Oの発行がない場合、制御はステップＳ５１２に進む。
ステップＳ５１２において、コントローラ制御部３１３は、BMSを実行する。
【００４４】
図７は、BMS処理（ステップＳ５０７、Ｓ５１２）の詳細なフローチャートである。
ステップＳ６０１において、コントローラ制御部３１３は、磁気ディスク装置３０１がPre Scan中か否か判定する。Pre Scanが実行中の場合、制御はステップＳ６０３に進み、Pre Scanが実行中でない場合、制御はステップＳ６０２に進む。
【００４５】
ステップＳ６０２において、コントローラ制御部３１３は、磁気ディスク装置３０１がBMS Interval中か否か判定する。BMS Interval中の場合、制御はステップＳ６０２に戻り、BMS Interval中で無い場合、制御はステップＳ６０３に進む。BMS Interval中か否かは、例えば、後述するインターバルタイマーが起動してから所定の時間（例えば、２４時間）経過したか否かで判定する。例えば、インターバルタイマーが起動してから所定の時間経過した場合は、BMS Interval中で無いと判断する。
【００４６】
ステップＳ６０３において、コントローラ制御部３１３は、磁気ディスク装置３０１がアイドル中か否か判定する。アイドル中の場合、制御はステップＳ６０４に進み、アイドル中で無い場合、ステップＳ６０３に戻る。アイドル中か否かの判断は、例えば、所定時間（例えば、500ミリ秒）前から現在までの間に、RAID装置２０１からホスト１０２からの要求に基づくデータの書き込み要求または読み出し要求があったか否かにより判定する。例えば、所定時間前から現在までの間に、RAID装置２０１からホスト１０２からの要求に基づくデータの書き込み要求および読み出し要求が無かった場合、アイドル中と判定する。
【００４７】
ステップＳ６０４において、コントローラ制御部３１３は、BMS開始LBAからLBAの昇順方向（すなわち、LBAが増加する方向）に所定のブロック数分、磁気ディスク３２２のスキャンを行う。所定のブロック数は、例えば、予めユーザが指定しておく。スキャンは、例えば、BMS開始LBAからLBAの昇順方向に所定のブロック数分のデータを読み出して、エラーの有無を判定する処理などを行う。
【００４８】
ステップＳ６０５において、コントローラ制御部３１３は、BMS開始LBAに所定のブロック数の値を加算して、加算した値をBMS開始LBAとしてBMS Logテーブルに記述する。これにより、BMS開始LBAは次にスキャンを行うときの開始地点のLBAとなる。
【００４９】
ステップＳ６０６において、コントローラ制御部３１３は、データの読み出しや書き込みなどのコマンドを受信したか判定する。コマンドを受信した場合は、制御はステップＳ６０７に進み、コマンドを受信していない場合は、制御はステップＳ６０８に進む。
ステップＳ６０７において、コントローラ制御部３１３は、スキャンを停止する。
【００５０】
ステップＳ６０８において、コントローラ制御部３１３は、スキャンが完了したか否か判定する。スキャンが完了した場合、制御はステップＳ６０９に進み、完了していない場合、制御はステップＳ６０４に戻る。スキャンが完了したか否かは、例えばBMS開始LBAが磁気ディスク３２２の最大LBA以上であるか否かで判定する。例えば、BMS開始LBAが磁気ディスク３２２の最大LBA以上である場合にスキャンが完了したと判定する。
ステップＳ６０９において、コントローラ制御部３１３は、インターバルタイマーを起動し、スキャン完了からの時間をカウントする。
【００５１】
図８は、I/Oによるスキャン処理（ステップＳ５０９）の詳細なフローチャートである。
ステップＳ７０１において、RAID制御部２１１は、コマンド指定Block数を設定する。ここで、コマンド指定Block数は、予め決められた値に設定する。
ステップＳ７０２において、RAID制御部２１１は、コマンド指定LBAを設定する。ここで、コマンド指定LBAは、RAID装置スキャン-コマンド指定ブロック数+1に設定する。
【００５２】
ステップＳ７０３において、RAID制御部２１１は、次開始LBAを設定する。ここで、次開始LBAは、RAID装置スキャン開始LBA-コマンド指定Block数+1に設定する。
ステップＳ７０４において、RAID制御部２１１は、I/O（Verifyコマンド）の発行をI/O制御部２１３に指示する。I/O制御部２１３は、Verifyコマンドを磁気ディスク装置３０１に送信する。Verifyコマンドには、コマンド指定Block数およびコマンド指定LBAが含まれている。コントローラ制御部３１３は、磁気ディスク３２２をコマンド指定LBAからコマンド指定Block数分、LBAの昇順方向にスキャンする。スキャンは、例えば、磁気ディスク３２２からデータを読み出して、エラーの有無を判定する処理などを行う。
【００５３】
ステップＳ７０５において、RAID制御部２１１は、次開始LBAをRAID装置スキャン開始LBAに設定する。すなわち、RAID装置スキャン開始LBAからコマンド指定Block数を引いた値が新たなRAID装置スキャン開始LBAとなる。したがって、次にスキャンを開始する地点のLBAは、今回スキャンを開始した地点のLBAよりも小さくなる。
このように、I/Oによるスキャン処理では、LBAが小さくなる方向（降順方向）にスキャンを行った領域が増加していく。
【００５４】
図９は、実施の形態に係るBMS監視処理のフローチャートである。
ステップＳ８０１において、コントローラ制御部３１３は、BMS監視タイマー基準値を設定する。BMS監視タイマー基準値としては、例えば１時間などが設定される。
ステップＳ８０２において、コントローラ制御部３１３内のBMS監視タイマーは、BMS監視タイマー値をカウントする。
【００５５】
ステップＳ８０３において、コントローラ制御部３１３は、BMS監視タイマー値がBMS監視タイマー基準値以上であるか判定する。監視タイマー値がBMS監視タイマー基準値以上である場合、制御はステップＳ８０４へ進み、監視タイマー値がBMS監視タイマー基準値未満である場合、制御はステップＳ８０２に戻る。
【００５６】
ステップＳ８０４において、コントローラ制御部３１３は、BMS監視タイマー値を初期化する。
ステップＳ８０５において、コントローラ制御部３１３は、BMS開始LBAを取得する。
【００５７】
ステップＳ８０６において、コントローラ制御部３１３は、BMS開始LBAがRAID装置スキャン開始LBAより小さいか判定する。BMS開始LBAがRAID装置スキャン開始LBAより小さい場合、制御はステップＳ８０２に戻り、BMS開始LBAがRAID装置スキャン開始LBA以上の場合、制御はステップＳ８０７へ進む。
【００５８】
ステップＳ８０７において、コントローラ制御部３１３は、BMS開始LBAを初期化する。すなわち、BMS開始LBAを磁気ディスク３２２のLBAの最小値とする。
ステップＳ８０８において、コントローラ制御部３１３は、RAID装置スキャン開始LBAをMAX LBAに設定する指示をRAID装置２０１に送信する。RAID制御部２１１は、RAID装置スキャン開始LBAをMAX LBAに設定する。また、RAID制御部２１１は、Scan実施回数に１を加算する。
【００５９】
次に、BMS中およびRAID装置によるスキャン中にエラーが検出された場合の処理について述べる。
図１０は、BMS中のエラー処理のフローチャートである。
ステップＳ９０１において、コントローラ制御部３１３は、BMSを実行している。
ステップＳ９０２において、エラーが検出される。
【００６０】
ステップＳ９０３において、コントローラ制御部３１３は、RAID装置２０１にUnit Attentionを送信する。Unit Attentionは、エラーの発生を示す情報と磁気ディスク３２２のエラー箇所を特定可能な情報が含まれた信号である。
ステップＳ９０４において、RAID制御部２１１は、磁気ディスク３２２に対してエラー処理を行う。エラー処理は、例えば、リトライや交代処理などである。
【００６１】
図１１は、RAID装置によるスキャン中のエラー処理のフローチャートである。
ステップＳ１００１において、RAID制御部２１１は、I/O（Verifyコマンドの発行）によるスキャンを行っている。
ステップＳ１００２において、エラーが検出される。それにより、Verifyコマンドに対する応答として、磁気ディスク３２２にエラーが検出されたことを示すエラー信号をRAID制御部２１１は受信する。
【００６２】
ステップＳ１００３において、RAID制御部２１１は、磁気ディスク３２２に対してエラー処理を行う。
実施の形態のRAIDシステムによれば、RAID装置によるスキャンと磁気ディスク装置によるBMSを併用することで、磁気ディスクのチェック時間を短縮することが可能となる。
【００６３】
上述の実施の形態では、RAID装置２０１は磁気ディスク３２２のLBAの降順方向、磁気ディスク装置３０１は磁気ディスク３２２のLBAの昇順方向にスキャンを行っていたが、他の実施形態として、RAID装置２０１は磁気ディスク３２２のLBAの昇順方向、磁気ディスク装置３０１は磁気ディスク３２２のLBAの降順方向にスキャンを行うようにしても良い。その場合、RAID制御部２１１は、磁気ディスク装置３０１への通常I/Oの発行がある場合、BMS開始LBAとRAID装置スキャン開始LBAとを比較し、RAID装置スキャン開始LBAがBMS開始LBA以上である場合、BMS開始LBAをMAX LBAに設定し、RAID装置スキャン開始LBAを初期化する。また、コントローラ制御部３１３は、所定の時間間隔ごとに、BMS開始LBAとRAID装置スキャン開始LBAとを比較し、RAID装置スキャン開始LBAがBMS開始LBA以上である場合、BMS開始LBAをMAX LBAに設定し、RAID装置スキャン開始LBAを初期化する。
【００６４】
本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または形状を取ることができる。
【符号の説明】
【００６５】
１０１    RAIDシステム
１０２    ホスト
２０１    RAID装置
２１１    RAID制御部
２１２    データバッファ
２１３    I/O制御部
３０１    磁気ディスク装置
３１１    制御ボード
３１２    データバッファ
３１３    コントローラ制御部
３１４    ＭＰＵ
３１５    メモリ
３１６    サーボ制御部
３１７    リードライト制御部
３２１    ディスクエンクロージャ
３２２    磁気ディスク
３２３    スピンドルモータ
３２４    ヘッド
３２５    ヘッドアンプ
３２６    ボイスコイルモータ
【図１】
0005521926.tif 000002
【図２】
0005521926.tif 000003
【図３】
0005521926.tif 000004
【図４】
0005521926.tif 000005
【図５】
0005521926.tif 000006
【図６】
0005521926.tif 000007
【図７】
0005521926.tif 000008
【図８】
0005521926.tif 000009
【図９】
0005521926.tif 000010
【図１０】
0005521926.tif 000011
【図１１】
0005521926.tif 000012