説明

ディスク装置及びコマンド処理方法

【課題】ディスクリトライが多発するLBAに対応するコマンドの実行を後回しにしてコマンドタイムアウトの発生を抑制するディスク装置及びコマンド処理方法を提供する。
【解決手段】ディスク装置が備える制御部10が、コマンドをキュー20に格納し、キュー20に格納されたコマンドの実行が所定時間内に完了しなかった場合に、上記所定時間内に実行されたコマンドであってディスクリトライの回数が所定回数を超えたコマンドに対応するLBAを監視対象LBAとして監視対象LBA管理テーブル104に記憶する。また、制御部10が、実行対象のコマンドに対応するLBAが監視対象LBA管理テーブル104に記憶された監視対象LBAに該当する場合に、該コマンドをキュー20の最後尾の位置に並び替える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コマンドのタイムアウトの発生を抑制するディスク装置及びコマンド処理方法に関する。
【背景技術】
【0002】
従来のコマンド処理技術として、コマンドの実行中にエラーが発生した場合に、実行中のコマンドをコマンドキューに戻し、実行待ちコマンドの中から次に実行するコマンドを選択するディスク装置が提案されている(例えば、特許文献1を参照)。
【0003】
また、記憶装置における回復処理状況に応じたコマンド並べ替え処理を行うリオーダリングコントローラが提案されている(例えば、特許文献2を参照)。
【特許文献1】特開2001−100935号公報
【特許文献2】特開2002−304823号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
近年、ディスク装置は、装置容量の増加に伴う媒体面の記録密度向上により、データの品質を維持する事が難しくなってきている。そのため、エラー発生時には、ディスクリトライ(エラーリトライ)処理でのエラー救済を重視しており、その結果、ディスクリトライ処理時間が増大している。逆に、ディスク装置に対してコマンドの実行を要求するホストコンピュータは、性能が向上している。従って、ディスク装置のコマンド処理時間の高速化が求められている。
【0005】
ディスク装置が、エラー救済の為、ディスクリトライ処理を延々と実施すると、ホストコンピュータにおいてコマンドタイムアウトが頻発し、ホストコンピュータは、コマンドのアボート処理および再発行処理を実施する。その結果、ホストコンピュータの処理の負荷が過大になるという問題が生じる。
【0006】
また、ディスク装置は、通常、コマンドの論理ブロックアドレス(LBA:Logical Block Address) に基づいて、最も効率良くアクセス出来る順にコマンドを実行する。しかし、本発明者の検討によれば、該コマンドを実行するアルゴリズムは、ディスクリトライを想定していない。従って、あるLBAに対応するコマンドの実行処理においてエラーが発生した場合に、ディスクリトライ処理の実行時間が長くなると、エラーが発生したコマンド以降に実行対象となるコマンドであって、正常に応答できる可能性のあるコマンド(他のLBAに対応するコマンド)までコマンドタイムアウトの対象となってしまう。
【0007】
ホストコンピュータは、例えばコマンドタイムアウトの累積検出回数が閾値に達したディスク装置を交換対象としてホストコンピュータから切り離す。従って、ディスク装置が、ディスクリトライが多発する特定のLBAに対応するディスクリトライが原因となってコマンドタイムアウトの発生回数が増加し、ホストコンピュータから切り離されてしまうという問題が発生する。
【0008】
図11は、ディスク装置におけるコマンド処理の問題点について説明する図である。図11中のCMD#1乃至CMD#Nは、ホストコンピュータからディスク装置に対して送信されたコマンドである。また、X#1はCMD#1の発行時間を示すタイムスタンプ、X#2はCMD#2の発行時間を示すタイムスタンプ、X#3はCMD#3の発行時間を示すタイムスタンプ、X#4はCMD#4の発行時間を示すタイムスタンプ、X#NはCMD#Nの発行時間を示すタイムスタンプである。CMD#2がディスクリトライが多発するLBAに対応するコマンドであるものとする。図11中の#Aに示すように、ディスク装置は、時刻t1にCMD#1を実行し、#Bに示すように、時刻t2にCMD#2を実行する。時刻t3においてCMD#2の実行エラーが発生して、#Cに示すように、ディスク装置がディスクリトライ処理を実行する。例えば、図中の時刻t4までディスクリトライ処理が完了しない等、該ディスクリトライ処理に時間がかかると、CMD#2の実行以降に実行対象となるコマンドであるCMD#3、CMD#4、CMD#Nがコマンドタイムアウトとなってしまう。
【0009】
本発明は、ディスクリトライが多発するLBAに対応するコマンドの実行を後回しにして、コマンドタイムアウトの発生を抑制するディスク装置の提供を目的とする。
【0010】
また、本発明は、ディスクリトライが多発するLBAに対応するコマンドの実行を後回しにして、コマンドタイムアウトの発生を抑制するコマンド処理方法の提供を目的とする。
【課題を解決するための手段】
【0011】
本ディスク装置は、ディスクと、該ディスクに対するコマンドを実行する制御手段とを備えるディスク装置であって、前記制御手段が、前記コマンドをキューに格納し、該キューの先頭の位置に格納されているコマンドを取り出して、実行対象のコマンドとして実行し、前記キューに格納されたコマンドの該制御手段における滞在時間を監視し、該コマンドの実行が所定時間内に完了しなかった場合に、該所定時間内に実行されたコマンドであってディスクリトライの回数が所定回数を超えたコマンドに対応する論理ブロックアドレスを監視対象アドレスとして第1の記憶手段に記憶し、実行対象のコマンドの実行以降に実行されるコマンドが前記キューに格納されているかを判断し、実行対象のコマンドの実行以降に実行されるコマンドが前記キューに格納されていると判断した場合に、該実行対象のコマンドに対応する論理ブロックアドレスが前記第1の記憶手段に記憶された監視対象アドレスに該当するかを判断し、前記実行対象のコマンドに対応する論理ブロックアドレスが前記第1の記憶手段に記憶された監視対象アドレスに該当すると判断された場合に、該コマンドを前記キューの最後尾の位置に並び替える。
【0012】
また、本コマンド処理方法は、ディスクと、該ディスクに対するコマンドを実行する制御手段とを備えるディスク装置におけるコマンド処理方法であって、前記制御手段が、前記コマンドをキューに格納し、該キューの先頭の位置に格納されているコマンドを取り出して、実行対象のコマンドとして実行し、前記キューに格納されたコマンドの該制御手段における滞在時間を監視し、該コマンドの実行が所定時間内に完了しなかった場合に、該所定時間内に実行されたコマンドであってディスクリトライの回数が所定回数を超えたコマンドに対応する論理ブロックアドレスを監視対象アドレスとして第1の記憶手段に記憶し、実行対象のコマンドの実行以降に実行されるコマンドが前記キューに格納されているかを判断し、実行対象のコマンドの実行以降に実行されるコマンドが前記キューに格納されていると判断した場合に、該実行対象のコマンドに対応する論理ブロックアドレスが前記第1の記憶手段に記憶された監視対象アドレスに該当するかを判断し、前記実行対象のコマンドに対応する論理ブロックアドレスが前記第1の記憶手段に記憶された監視対象アドレスに該当すると判断された場合に、該コマンドを前記キューの最後尾の位置に並び替える。
【発明の効果】
【0013】
本ディスク装置及び本コマンド処理方法は、ディスクリトライの回数が所定回数を超えている論理ブロックアドレス(LBA)に対応するコマンドをキューの最後尾に並び替えることによって、該コマンドの処理を後回しにする。従って、本ディスク装置及び本コマンド処理方法によれば、ディスクリトライの発生回数が少なく正常に応答できる可能性が高いLBA(正常なLBA)に対応するコマンドが優先して実行されることとなるため、ホストによるコマンドタイムアウトの累積検出回数を大幅に減らすことができる。
【発明を実施するための最良の形態】
【0014】
図1は、本実施形態のディスク装置のハードウェア構成例を示す図である。図1に示すディスク装置1は、MPU(Micro Processing Unit )11、HDD(Hard Disk Drive )コントローラ12、バッファ13、メモリ14、ディスク15、ロム16を備える。ホストコンピュータ(以下、ホストという)2は、コマンドを発行し、インタフェース(I/F)を通じてディスク装置1に対して該コマンドを送信して、該コマンドの実行をディスク装置1に要求する。ホスト2が発行するコマンドは、例えば、ディスク15に対してデータを書き込むコマンド(ライトコマンド)又はディスク15からデータを読み込むコマンド(リードコマンド)である。
【0015】
MPU11は、後述するメモリ14内のコマンド処理プログラムに従って、後述するコマンドの並べ替え処理により得たコマンドをHDDコントローラ12に指示して、コマンド処理を行わせる。
【0016】
HDDコントローラ12は、バッファ13を介してディスク15へデータの書き込み(ライトコマンド)/読み込み(リードコマンド)を実行する。
【0017】
バッファ13は、コマンド、データ等を記憶する記憶手段である。メモリ14には、本実施形態のコマンド処理方法を実現するコマンド処理プログラムがロードされる。ディスク15は、HDDコントローラ12によるコマンドの実行対象となる磁気記録媒体である。ディスク15は、ユーザエリアとシステムエリアを有している。ユーザエリアは、ホスト2からディスク装置1に対して送信されるコマンドの対象となるデータが格納される領域である。システムエリアは、後述する監視対象LBAが格納される不揮発性の記憶領域である。該システムエリアに監視対象LBAが格納されることによって、ディスク装置1の電源OFF中にも監視対象LBAが消去されることなくディスク装置1内において保持される。
【0018】
監視対象LBAは、ディスクリトライの発生回数が所定回数以上であるコマンドに対応するLBAである。ロム16には、コマンド処理プログラムが予め格納されている。ロム16に格納されているコマンド処理プログラムは、ディスク装置1の電源投入時にメモリ14内にロードされる。図中に示すMPU11、HDDコントローラ12、バッファ13、メモリ14が、本実施形態のコマンド処理方法を実現する制御部10を構成する。
【0019】
図2は、図1に示す制御部の機能ブロック図の例を示す図である。制御部10は、コマンド実行部101、キューイング部102、ディスクリトライ検出部103、監視対象LBA管理テーブル104を備える。
【0020】
コマンド実行部101は、ディスク15に対するコマンドを実行する。具体的には、コマンド実行部101は、キューイング部102に指示して、図1に示すホスト2から送信されたコマンドを所定のキュー20に格納させ、キュー20の先頭から順次コマンドを取り出して、実行対象のコマンドとして実行する。また、コマンド実行部101は、ホスト2から送信されたコマンドの滞在時間を監視し、該コマンドの実行が所定時間内に完了しなかった場合に、該所定時間内に実行されたコマンドであってディスクリトライの回数が所定回数を超えたコマンドに対応するLBAを監視対象アドレス(監視対象LBA)として監視対象LBA管理テーブル104に記憶する。コマンドの滞在時間は、制御部10が該コマンドをホスト2から受信してから現時点までの経過時間である。具体的には、コマンド実行部101が備えるタイムアウト監視部110が、コマンドの滞在時間が所定時間を超えたかを判断する。また、コマンド実行部101は、後述するディスクリトライ検出部103からディスクリトライの発生の検出結果に基づいて、ディスクリトライの回数が所定回数を超えたかを判断する。
【0021】
また、コマンド実行部101は、実行対象のコマンドの実行以降に実行されるコマンドが上記キュー20に格納されているかを判断し、実行対象のコマンドの実行以降に実行されるコマンドがキュー20に格納されていると判断した場合に、該実行対象のコマンドに対応するLBAが監視対象LBA管理テーブル104に記憶された監視対象LBAに該当するかを判断し、実行対象のコマンドに対応するLBAが監視対象LBAに該当すると判断された場合に、該コマンドをキュー20の最後尾の位置に並び替える。該コマンドがキュー20の最後尾の位置に並び替えられることにより、該コマンド(ディスクリトライの発生回数が所定回数以上である監視対象LBAに対応するコマンド)の実行が後回しにされる。
【0022】
例えば、図3(A)に示すように、当初キュー20においてCMD#1というコマンドを先頭にして、CMD#2、CMD#3、CMD#4、CMD#5というコマンドが順次格納されているものとする。CMD#1が現時点における実行対象のコマンドである。CMD#1が、監視対象LBAである場合、制御部10は、CMD#1をキュー20の最後尾の位置に並び替える。その結果、キュー20におけるコマンドの並び順は、図3(B)に示すように、CMD#2、CMD#3、CMD#4、CMD#5、CMD#1の順となる。
【0023】
キューイング部102は、ホスト2から送信されたコマンドをキュー20に格納する。ディスクリトライ検出部103は、ディスク15からのディスクリトライ(エラーリトライ)発生の割り込みに基づいて、ディスクリトライの発生を検出して、検出結果をコマンド実行部101に通知する。監視対象LBA管理テーブル104には、監視対象LBAが記憶される。
【0024】
本発明の一実施形態によれば、制御部10が、上記実行対象のコマンドに対応するLBAが監視対象LBAに該当すると判断した場合に、キュー20に格納されているコマンドのうち、コマンドの種別が実行対象のコマンドの種別と異なり、かつ、キュー20に格納されているコマンドに対応する論理ブロックアドレスが上記監視対象アドレスと重なるコマンドを選択コマンドとして選択し、キュー20において上記実行対象のコマンドを該選択コマンドの直前の位置に並び替えるようにしてもよい。上記コマンドの種別は、コマンドがライトコマンドであるかリードコマンドであるかを示す。
【0025】
例えば、上述した図3(A)のキュー20に格納されているコマンドのうち、CMD#1、CMD#2、CMD#4がリードコマンドであり、CMD#3、CMD#5がライトドコマンドであるものとする。また、CMD#3に対応するLBAとCMD#1に対応するLBAとがアドレス範囲が重なり、CMD#5に対応するLBAとCMD#1に対応するLBAとはアドレス範囲が重ならないものとする。
【0026】
図3(A)に示すコマンドの格納例において、現時点で実行対象のコマンドであるCMD#1が監視対象LBAである場合、制御部10は、CMD#2乃至CMD#5のうち、CMD#1とコマンドの種別が異なり、かつ、対応するLBAの範囲が重なるCMD#3を選択コマンドとして選択する。そして、制御部10は、キュー20においてCMD#1をCMD#3の直前の位置に並び替える。その結果、キュー20におけるコマンドの並び順は、図3(C)に示すように、CMD#2、CMD#1、CMD#3、CMD#4、CMD#5の順となる。
【0027】
制御部10が、上記実行対象のコマンドを選択コマンドの直前の位置に並び替えることによって、コマンドの位置の並び替え後のコマンドの実行結果がホスト2が要求したコマンドの実行結果と矛盾することを防止することができる。例えば、当初図3(A)に示すような格納順でコマンドがキュー20に格納されている場合には、ホスト2が、CMD#1、CMD#3に対応するLBAについて、CMD#1でデータをリードした後にCMD#3でデータをライトすることを要求したことがわかる。図3(C)に示すように、制御部10がリードコマンドであるCMD#1をライトコマンドであるCMD#3の直前の位置に並び替えることによって、CMD#1、CMD#3に対応するLBAについては、CMD#1でデータがリードした後にCMD#3でデータがライトされるので、該CMD#1、CMD#3の実行結果は、ホスト2が本来要求したコマンドの実行結果と矛盾しない。
【0028】
図4は、監視対象LBA管理テーブルに記憶される監視対象LBAの例を示す図である。監視対象LBA管理テーブル104は、例えば4バイト(Byte)形式の配列で表現される。コマンド実行部101は、図4に示す監視対象LBA管理テーブル104の各レコード(一行分の格納領域)に監視対象LBAを記憶する。
【0029】
図5及び図6は、本実施形態のディスク装置によるコマンド処理フローの一例を示す図である。まず、図5のステップS1において、ディスク装置が電源ONされ、制御部10が、ディスク装置1の電源OFF以前にディスク15のシステムエリアに記憶された監視対象LBAを該システムエリアから監視対象LBA管理テーブル104にロードする(ステップS1)。なお、制御部10が、監視対象LBAをディスク15のシステムエリアからではなく、監視対象LBAが記憶された任意の不揮発性の記憶手段からロードするようにしてもよい。制御部10が、ホスト2からコマンドを受信したかを判断する(ステップS2)。制御部10が、ホスト2からコマンドを受信したと判断した場合は、ステップS3に進む。制御部10が、ホスト2からコマンドを受信していないと判断した場合、制御部10は、予め定められた時間経過したかを判断する(ステップS8)。制御部10が、予め定められた時間経過していないと判断した場合は、ステップS8に戻る。制御部10が、予め定められた時間経過したと判断した場合は、制御部10は、監視対象LBAを監視対象LBA管理テーブル104からディスク15のシステムエリアにセーブして(ステップS9)、ステップS2に戻る。なお、制御部10が、監視対象LBAをディスク15のシステムエリアにではなく、任意の不揮発性の記憶手段に記憶するようにしてもよい。ステップS3において、制御部10が、受信されたコマンドをキュー20の最後尾に追加し(ステップS3)、図6のステップS4に進む。
【0030】
図6のステップS4において、制御部10が、実行対象のコマンド(キュー20の先頭に格納されているコマンド)に対応するLBAが監視対象LBAであり、かつ、実行対象のコマンドの実行以降に実行される他のコマンドがキュー20に格納されているかを判断する(ステップS4)。
【0031】
制御部10が、実行対象のコマンドに対応するLBAが監視対象LBAであり、かつ、実行対象のコマンドの実行以降に実行される他のコマンドがキュー20に格納されていると判断した場合、制御部10は、実行対象のコマンドをキュー20の最後尾に並び替えて(ステップS10)、ステップS4に戻る。
【0032】
制御部10が、実行対象のコマンドに対応するLBAが監視対象LBAでないと判断した場合、又は、実行対象のコマンドの実行以降に実行される他のコマンドがキュー20に格納されていないと判断した場合、制御部10は、実行対象のコマンドを実行する(ステップS5)。制御部10が、コマンドの実行が完了したかを判断する(ステップS6)。制御部10が、コマンドの実行が完了したと判断した場合、制御部10は、キュー20内にコマンドが残っているかを判断する(ステップS7)、制御部10が、キュー20内にコマンドが残っていると判断した場合は、ステップS4に戻る。制御部10が、キュー20内にコマンドが残っていないと判断した場合は、図5のステップS2に戻る。
【0033】
上記ステップS6において、制御部10が、コマンドの実行が完了していないと判断した場合、制御部10は、図8を参照して説明するコマンドタイムアウト検出処理を行う(ステップS11)。
【0034】
図7は、図6のステップS4、S10における処理(コマンドの並び替え処理)の詳細を説明する図である。図7中のステップS10、ステップS5において実行される処理は、図6中のステップS10、ステップS5において実行される処理と同様である。
【0035】
まず、制御部10が、監視対象LBA管理テーブル104を参照し、実行対象のコマンドに対応するLBAが監視対象LBA管理テーブル104内にあるかを判断する(ステップS21)。制御部10が、実行対象のコマンドに対応するLBAが監視対象LBA管理テーブル104内にないと判断した場合は、ステップS5に進んで、制御部10がコマンドを実行する。制御部10が、実行対象のコマンドに対応するLBAが監視対象LBA管理テーブル104内にあると判断した場合は、制御部10が、実行対象のコマンドの実行以降に実行される他のコマンドがキュー20に格納されているかを判断する(ステップS22)。制御部10が、実行対象のコマンドの実行以降に実行される他のコマンドがキュー20に格納されていないと判断した場合は、ステップS5に進む。制御部10が、実行対象のコマンドの実行以降に実行される他のコマンドがキュー20に格納されていると判断した場合は、ステップS10に進んで、制御部10が、実行対象のコマンドをキュー20の最後尾に並び替える。
【0036】
図8は、図6のステップS11におけるコマンドタイムアウト検出処理の詳細を説明する図である。まず、制御部10が、コマンドを受信してからの経過時間が所定の制限時間(タイムアウト制限時間)を超えているかを判断する(ステップS31)。制御部10が、コマンドを受信してからの経過時間がタイムアウト制限時間を超えていないと判断した場合は、制御部10は、コマンドの実行が終了したかを判断する(ステップS32)。制御部10が、コマンドの実行が終了していないと判断した場合は、上記ステップS31に戻る。制御部10が、コマンドの実行が終了したと判断した場合は該コマンドの実行を完了する(ステップS33)。
【0037】
上記ステップS31において、制御部10が、コマンドを受信してからの経過時間がタイムアウト制限時間を超えていると判断した場合、制御部10は、コマンドタイムアウトを検出して、監視対象LBAの登録処理を実行する(ステップS34)。
【0038】
図9は、図8のステップS34における監視対象LBAの登録処理の詳細を説明する図である。まず、制御部10が、コマンドタイムアウトが検出されたコマンドの実行前に実行されたコマンドのうち、コマンドタイムアウトが検出されたコマンドの実行の直前に実行されたコマンドを対象コマンドとして選択し、対象コマンドが該コマンドタイムアウトが検出されたコマンドについてのタイムアウト制限時間中に実行されていたコマンドであるかを判断する(ステップS41)。例えば、コマンドCMD#1、コマンドCMD#2、コマンドCMD#3の順に各々のコマンドが実行されて、コマンドCMD#3についてコマンドタイムアウトが検出された場合を想定する。制御部10は、例えば、コマンドCMD#3が実行される直前に実行されたコマンドCMD#2を対象コマンドとして、該コマンドCMD#2がコマンドCMD#3についてのタイムアウト制限時間中に実行されていたコマンドであるかを判断する。
【0039】
制御部10が、対象コマンドがタイムアウト制限時間中に実行されていたコマンドでないと判断した場合は、処理を終了する。制御部10が、対象コマンドがタイムアウト制限時間中に実行されていたコマンドであると判断した場合は、制御部10は、対象コマンドについてのディスクリトライ回数が所定回数以上であるかを判断する(ステップS42)。制御部10が、対象コマンドについてのディスクリトライ回数が所定回数以上でないと判断した場合は、ステップS45に進む。制御部10が、対象コマンドについてのディスクリトライ回数が所定回数以上であると判断した場合は、制御部10は、対象コマンドに対応するLBAが監視対象LBA管理テーブル104に既に登録されている監視対象LBAと一致しないかを判断する(ステップS43)。制御部10が、対象コマンドに対応するLBAが監視対象LBA管理テーブル104に既に登録されている監視対象LBAと一致すると判断した場合は、ステップS45に進む。制御部10が、対象コマンドに対応するLBAが監視対象LBA管理テーブル104に既に登録されている監視対象LBAと一致しないと判断した場合は、対象コマンドに対応するLBAを監視対象LBAとして監視対象LBA管理テーブル104に登録する(ステップS44)。そして、制御部10が、該対象コマンドの直前に実行されたコマンドを新たな対象コマンドとして選択して(ステップS45)、ステップS41に戻る。
【0040】
図10は、本実施形態のディスク装置によるコマンド処理方法の適用例を示す図である。図中のCMD#1乃至CMD#N、X#1乃至X#Nは、それぞれ、図11を参照して前述したCMD#1乃至CMD#N、X#1乃至X#Nと同様である。また、CMD#2に対応するLBAが監視対象LBAであるものとする。
【0041】
本実施形態のディスク装置1は、時刻t1にCMD#1を実行した後(図10中の#Aを参照)、CMD#2をキュー20の最後尾に並び替えることによってCMD#2の実行を後回しにして(図10中の#Bを参照)、時刻t2、時刻t3に、それぞれ、CMD#3、CMD#4を順次実行する(図10中の#C及び#Dを参照)。そして、時刻t4にCMD#Nを実行し(図10中の#Eを参照)、キュー20に格納されているコマンドがCMD#2のみになった時(時刻t5)に、CMD#2の実行を開始する(図10中の#Fを参照)。ディスク装置1が、図10を参照して上述したコマンド処理を行うことによって、ディスクリトライ発生回数が多いLBAに対応するコマンドであるCMD#2以外のコマンドが優先して実行されるため、CMD#2以外のコマンドについてのコマンドタイムアウトの発生回数を抑えることができる。
【図面の簡単な説明】
【0042】
【図1】本実施形態のディスク装置のハードウェア構成例を示す図である。
【図2】制御部の機能ブロック図の例を示す図である。
【図3】キューへのコマンドの格納例を示す図である。
【図4】監視対象LBAの例を示す図である。
【図5】コマンド処理フローの一例を示す図である。
【図6】コマンド処理フローの一例を示す図である。
【図7】コマンドの並び替え処理の詳細を説明する図である。
【図8】コマンドタイムアウトの検出処理の詳細を説明する図である。
【図9】監視対象LBAの登録処理の詳細を説明する図である。
【図10】コマンド処理方法の適用例を示す図である。
【図11】ディスク装置におけるコマンド処理の問題点について説明する図である。
【符号の説明】
【0043】
1 ディスク装置
2 ホストコンピュータ
3 I/F
10 制御部
11 MPU
12 HDDコントローラ
13 バッファ
14 メモリ
15 ディスク
16 ロム
20 キュー
101 コマンド実行部
102 キューイング部
103 ディスクリトライ検出部
104 監視対象LBA管理テーブル
110 タイムアウト監視部

【特許請求の範囲】
【請求項1】
ディスクと、該ディスクに対するコマンドを実行する制御手段とを備えるディスク装置であって、
前記制御手段が、
前記コマンドをキューに格納し、該キューの先頭の位置に格納されているコマンドを取り出して、実行対象のコマンドとして実行し、
前記キューに格納されたコマンドの該制御手段における滞在時間を監視し、該コマンドの実行が所定時間内に完了しなかった場合に、該所定時間内に実行されたコマンドであってディスクリトライの回数が所定回数を超えたコマンドに対応する論理ブロックアドレスを監視対象アドレスとして第1の記憶手段に記憶し、
実行対象のコマンドの実行以降に実行されるコマンドが前記キューに格納されているかを判断し、実行対象のコマンドの実行以降に実行されるコマンドが前記キューに格納されていると判断した場合に、該実行対象のコマンドに対応する論理ブロックアドレスが前記第1の記憶手段に記憶された監視対象アドレスに該当するかを判断し、
前記実行対象のコマンドに対応する論理ブロックアドレスが前記第1の記憶手段に記憶された監視対象アドレスに該当すると判断された場合に、該コマンドを前記キューの最後尾の位置に並び替える
ことを特徴とするディスク装置。
【請求項2】
前記制御手段が、前記実行対象のコマンドに対応する論理ブロックアドレスが前記第1の記憶手段に記憶された監視対象アドレスに該当すると判断した場合に、前記キューに格納されているコマンドのうち、コマンドの種別が前記実行対象のコマンドの種別と異なり、かつ、該キューに格納されているコマンドに対応する論理ブロックアドレスが前記監視対象アドレスと重なるコマンドを選択コマンドとして選択し、前記キューにおいて前記実行対象のコマンドを該選択コマンドの直前の位置に並び替える
ことを特徴とする請求項1に記載のディスク装置。
【請求項3】
前記制御手段が、前記監視対象アドレスを不揮発性の第2の記憶手段に記憶する
ことを特徴とする請求項1又は請求項2に記載のディスク装置。
【請求項4】
ディスクと、該ディスクに対するコマンドを実行する制御手段とを備えるディスク装置におけるコマンド処理方法であって、
前記制御手段が、前記コマンドをキューに格納し、該キューの先頭の位置に格納されているコマンドを取り出して、実行対象のコマンドとして実行し、
前記キューに格納されたコマンドの該制御手段における滞在時間を監視し、該コマンドの実行が所定時間内に完了しなかった場合に、該所定時間内に実行されたコマンドであってディスクリトライの回数が所定回数を超えたコマンドに対応する論理ブロックアドレスを監視対象アドレスとして第1の記憶手段に記憶し、
実行対象のコマンドの実行以降に実行されるコマンドが前記キューに格納されているかを判断し、実行対象のコマンドの実行以降に実行されるコマンドが前記キューに格納されていると判断した場合に、該実行対象のコマンドに対応する論理ブロックアドレスが前記第1の記憶手段に記憶された監視対象アドレスに該当するかを判断し、
前記実行対象のコマンドに対応する論理ブロックアドレスが前記第1の記憶手段に記憶された監視対象アドレスに該当すると判断された場合に、該コマンドを前記キューの最後尾の位置に並び替える
ことを特徴とするコマンド処理方法。
【請求項5】
前記実行対象のコマンドに対応する論理ブロックアドレスが前記第1の記憶手段に記憶された監視対象アドレスに該当すると判断された場合に、前記キューに格納されているコマンドのうち、コマンドの種別が前記実行対象のコマンドの種別と異なり、かつ、該キューに格納されているコマンドに対応する論理ブロックアドレスが前記監視対象アドレスと重なるコマンドを選択コマンドとして選択し、前記キューにおいて前記実行対象のコマンドを該選択コマンドの直前の位置に並び替える
ことを特徴とする請求項4に記載のコマンド処理方法。
【請求項6】
前記制御手段が、前記監視対象アドレスを不揮発性の第2の記憶手段に記憶する
ことを特徴とする請求項4又は請求項5に記載のコマンド処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2009−282871(P2009−282871A)
【公開日】平成21年12月3日(2009.12.3)
【国際特許分類】
【出願番号】特願2008−136172(P2008−136172)
【出願日】平成20年5月26日(2008.5.26)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】