(57)【要約】  本発明は、記憶デバイスの応答遅延、一時的応答停止状態を解消又は回避可能とするストレージ装置、システム、方法を提供する。ホストに接続されるストレージ装置は、該ホストからのアクセス要求を記憶デバイスへのアクセス用に変換したアクセスコマンドを一旦保持するコマンドキューと、前記コマンドキューに保持されているアクセスコマンドの分析結果に基づき、前記記憶デバイスへの書き込みを禁止とすべきか否かを判断する第１の手段と、書き込み禁止の場合、前記ホストからのアクセス要求に対してエラー応答を返す第２の手段を含む。
2015170702.tif 000002
【特許請求の範囲】
【請求項１】
ホストからのアクセス要求を記憶デバイスへのアクセス用に変換したアクセスコマンドを一旦保持するコマンドキューと、
前記コマンドキューに保持されているアクセスコマンドの分析結果に基づき、前記記憶デバイスへの書き込みを禁止とすべきか否かを判断する第１の手段と、
書き込み禁止の場合、前記ホストからのアクセス要求に対してエラー応答を返す第２の手段と、
を含む、ことを特徴とするストレージ装置。
【請求項２】
前記第１の手段が、
前記コマンドキューで待機中のアクセスコマンド、又は、
前記コマンドキューで待機中のアクセスコマンド及びアクセス実行中のアクセスコマンドについて、
前記アクセスコマンドの数と前記アクセスコマンドの内容の少なくとも一方の分析に基づき、負荷を判定する負荷判定手段と、
前記負荷が予め定められた所定の閾値を超えている場合、前記記憶デバイスへの書き込みを禁止とする書き込み許可変更手段と、
を含む、ことを特徴とする請求項１記載のストレージ装置。
【請求項３】
前記第１の手段が前記記憶デバイスへの書き込み禁止と判断すると、前記コマンドキューに保持されているアクセスコマンドのうち少なくとも一部のアクセスコマンドをクリアし、前記少なくとも一部のアクセスコマンドを中断するコマンド中断手段をさらに含む、ことを特徴とする請求項１又は２記載のストレージ装置。
【請求項４】
前記コマンド中断手段は、前記第１の手段が前記記憶デバイスへの書き込み禁止と判断すると、その時点でアクセス実行中のアクセスコマンドうち少なくとも一部のアクセスコマンドを中断する、ことを特徴とする請求項３記載のストレージ装置。
【請求項５】
前記ホストからのアクセス要求を受け、前記記憶デバイスに発行するアクセスコマンドに変換して前記コマンドキューに格納するアクセス変換手段をさらに含む、ことを特徴とする請求項１乃至４のいずれか１項に記載のストレージ装置。
【請求項６】
前記第２の手段は、前記記憶デバイスへの書き込みが禁止の場合に、前記ホストから問い合わせを受けると、書き込み禁止状態であることをエラー応答として返す、ことを特徴とする請求項１乃至５のいずれか１項に記載のストレージ装置。
【請求項７】
前記記憶デバイスへの書き込みが禁止の場合に、前記ホストから書き込み要求を受けると、前記書き込み要求に対するアクセスコマンドを前記コマンドキューに格納することなく、前記エラー応答を返すか、前記書き込み要求を廃棄するように制御する手段をさらに含む、ことを特徴とする請求項１乃至６のいずれか１項に記載のストレージ装置。
【請求項８】
前記記憶デバイスへの書き込みが禁止の状態において、前記ホストからの読み出し要求に対する前記記憶デバイスに対する読み出し処理は継続して行う、ことを特徴とする請求項１乃至７のいずれか１項に記載のストレージ装置。
【請求項９】
前記コマンド中断手段は、前記記憶デバイスへの書き込み禁止の状態において、読み出し要求に対応するアクセスコマンドについては、
前記コマンドキューに保持されているアクセスコマンドは残し、
アクセス実行中のアクセスコマンドは、中断せずに、実行を継続する、ことを特徴とする請求項３記載のストレージ装置。
【請求項１０】
前記記憶デバイスは、ブロック単位に一括消去される不揮発性半導体装置を含む、ことを特徴とする請求項１乃至９のいずれか１項に記載のストレージ装置。
【請求項１１】
請求項１乃至１０のいずれか１項に記載のストレージ装置を少なくとも１つ備え、
さらに、ホストを備えた、ことを特徴とする情報処理システム。
【請求項１２】
前記ホストは、前記ストレージ装置へのアクセス要求に対してエラー応答を受けると、前記ストレージ装置に対して、
前記アクセス要求を再発行するか、
別のストレージ装置に対して前記アクセス要求を発行する、ことを特徴とする請求項１１記載の情報処理システム。
【請求項１３】
前記ホストは、前記ストレージ装置に対して書き込み禁止状態であるか否かを問い合わせる手段を備えた、ことを特徴とする請求項１１又は１２記載の情報処理システム。
【請求項１４】
前記ホストは、前記エラー応答を受けとった前記ストレージ装置に対して、読み出しアクセス要求を選択的に再発行し、書き込みアクセス要求を、他のストレージ装置に発行する、ことを特徴とする請求項１２又は１３記載の情報処理システム。
【請求項１５】
前記ホストは、前記ストレージ装置からエラー応答を受け取ると、書き込み禁止と判断して、読み出しアクセス要求を、前記ストレージ装置に発行する、ことを特徴とする請求項１２又は１３記載の情報処理システム。
【請求項１６】
少なくとも１つのストレージ装置と、
ホストと、
を備え、
前記ホストは、前記ストレージ装置へのアクセス要求に対してエラー応答を受けると、前記ストレージ装置に対して前記アクセス要求を再発行するか、別のストレージ装置に対して前記アクセス要求を発行する、情報処理システム。
【請求項１７】
ホストからのアクセス要求を記憶デバイスへのアクセス用に変換したアクセスコマンドをコマンドキューで一旦保持し、
前記コマンドキューに保持されているアクセスコマンドの分析結果に基づき、前記記憶デバイスへの書き込みを禁止とすべきか否かを判断し、
書き込み禁止の場合、前記ホストからのアクセス要求に対してエラー応答を返す、ことを特徴とするストレージ制御方法。
【請求項１８】
前記コマンドキューで待機中のアクセスコマンド、又は、
前記コマンドキューで待機中のアクセスコマンド及びアクセス実行中のアクセスコマンドについて、
前記アクセスコマンドの数と前記アクセスコマンドの内容の少なくとも一方の分析に基づき、負荷を判定し、
前記負荷が、所定の閾値を超えている場合、前記記憶デバイスへの書き込みを禁止とする、ことを特徴とする請求項１７記載のストレージ制御方法。
【請求項１９】
前記記憶デバイスへの書き込み禁止と判断すると、前記コマンドキューに保持されているアクセスコマンドのうち少なくとも一部のアクセスコマンドをクリアし、前記少なくとも一部のアクセスコマンドを中断する、ことを特徴とする請求項１７又は１８記載のストレージ制御方法。
【請求項２０】
前記記憶デバイスへの書き込み禁止の判別結果に応じて、その時点でアクセス実行中のアクセスコマンドのうち少なくとも一部のアクセスコマンドを中断する、ことを特徴とする請求項１９記載のストレージ制御方法。
【請求項２１】
前記記憶デバイスへの書き込みが禁止の場合、前記ホストからのアクセス要求又は問い合わせに対して、書き込み禁止状態であることをエラー応答として返す、ことを特徴とする請求項１７乃至２０のいずれか１項に記載のストレージ制御方法。
【請求項２２】
前記ホストから書き込み要求を受けると、前記記憶デバイスへの書き込み禁止の状態にある場合、前記書き込み要求に対するアクセスコマンドを前記コマンドキューに格納することなく、エラー情報を返すか、前記書き込み要求を廃棄するように制御する、ことを特徴とする請求項１７乃至２１のいずれか１項に記載のストレージ制御方法。
【請求項２３】
前記記憶デバイスへの書き込みが禁止の状態において、前記ホストからの読み出し要求に対するアクセス処理は継続して行う、ことを特徴とする請求項１７乃至２２のいずれか１項に記載のストレージ制御方法。
【請求項２４】
前記記憶デバイスへの書き込み禁止の状態において、前記コマンドキューに保持されている読み出し要求に対応するアクセスコマンドはクリアせずに残し、実行中の読み出し要求に対応するアクセスコマンドは中断せずに実行を継続する、ことを特徴とする請求項１７乃至２３のいずれか１項に記載のストレージ制御方法。
【請求項２５】
前記ホストは、前記エラー応答を受けとった前記ストレージに対して、読み出しアクセス要求を選択的に再発行し、書き込みアクセス要求を、他のストレージに発行する、ことを特徴とする請求項１７乃至２４のいずれか１項に記載のストレージ制御方法。
【請求項２６】
前記ホストは、前記ストレージから前記エラー応答を受け取ると、前記ストレージは障害ではなく、書き込み禁止と判断して、読み出しアクセス要求を、前記ストレージに発行する、ことを特徴とする請求項１７乃至２４のいずれか１項に記載のストレージ制御方法。
【請求項２７】
ストレージを構成するコンピュータに、
ホストからのアクセス要求を記憶デバイスへのアクセス用に変換したアクセスコマンドを一旦保持するコマンドキューに保持されているアクセスコマンドの分析結果に基づき、前記記憶デバイスへの書き込みを禁止とすべきか否かを判断する第１の処理と、
書き込み禁止の場合、前記ホストからのアクセス要求に対してエラー応答を返す第２の処理と、
を実行させるプログラム。
【請求項２８】
前記第１の処理が、
前記コマンドキューで待機中のアクセスコマンド、又は、
前記コマンドキューで待機中のアクセスコマンド及びアクセス実行中のアクセスコマンドについて、
前記アクセスコマンドの数と前記アクセスコマンドの内容の少なくとも一方の分析に基づき、負荷を判定する負荷判定処理と、
前記負荷が、所定の閾値を超えている場合、前記記憶デバイスへの書き込みを禁止とする書き込み許可変更処理と、
を含む、ことを特徴とする請求項２７記載のプログラム。
【請求項２９】
前記第１の処理が前記記憶デバイスへの書き込み禁止と判断すると、前記コマンドキューに保持されているアクセスコマンドのうち少なくとも一部のアクセスコマンドをクリアし、前記少なくとも一部のアクセスコマンドを中断するコマンド中断処理を前記コンピュータに実行させる請求項２７又は２８記載のプログラム。
【請求項３０】
ストレージ装置へのアクセス要求に対して、書き込み禁止状態の前記ストレージ装置からエラー応答を受けると、前記ストレージ装置に対して前記アクセス要求を再発行するか、別のストレージ装置に対して前記アクセス要求を発行する処理を、ホストを構成するコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願についての記載）
本発明は、日本国特許出願：特願２０１４−０９８０１２号（２０１４年５月９日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、ストレージ装置と情報処理システム及びストレージ制御方法とプログラムに関する。
【背景技術】
【０００２】
情報処理システムの記憶媒体として、例えばＨＤＤ（Hard Disk Drive）のほか、記憶デバイスとして、例えばＮＡＮＤフラッシュメモリを用いたＳＳＤ（Solid State Drive）等のストレージ装置が普及している。ＮＡＮＤフラッシュメモリでは、読み出し（Read）と書き込み（Write）はページ（page）単位に行われる。ＮＡＮＤフラッシュメモリのページは、一般的な例として、２Ｋ（Ｋは１０２４）バイトから１６ＫＢ程度のサイズであり、さらにエラー訂正情報等を格納するための追加の情報を併せて格納する。このページは、ＳＳＤにアクセスする計算機（ＣＰＵ（Central Processing Unit）、プロセッサ、データ処理装置）（「ホスト」と呼ぶ）がアクセスを行う単位とは異なる。なお、ＮＡＮＤフラッシュメモリでは、１セル１ビット（SLC：Single-Level Cell）のほかにも、１セルに２ビット又は３ビット等を保持する多値セル（ＭＬＣ（Multi Level Cell）、ＴＬＣ（Triple Level Cell））等も用いられている。【０００３】
ＳＳＤは、例えばＳＡＳ（Serial Attached SCSI（Small Computer System Interface）)やＳＡＴＡ（Serial ATA)等、ＨＤＤと同様のインタフェースを有する。アクセスの要求元となるホストは、ＳＳＤに対して、ＨＤＤと同様に、Ｒｅａｄアクセス及びＷｒｉｔｅアクセスが可能である。ただし、ＳＳＤの記憶デバイスであるＮＡＮＤフラッシュメモリは、ＨＤＤとは異なるアクセス形態を提供する。ＮＡＮＤフラッシュメモリは、格納されたデータの直接的な更新（上書き）が不可能であることから、データのＲｅａｄ、Ｗｒｉｔｅに加えて、格納されたデータの消去（Erase）処理を提供する。ＮＡＮＤフラッシュメモリに対する消去（Erase）処理は複数ページからなるブロック（Block）単位で実行される。【０００４】
ＳＳＤでは、例えばＳＳＤ内に設けられているコントローラ（制御装置）において、ホストからのストレージに対するアクセス要求からＮＡＮＤフラッシュメモリに対するアクセスへの変換処理を行う。これは、ＮＡＮＤフラッシュメモリに対して、ＨＤＤとのアクセス形態の違いを吸収し、ホストからみてＨＤＤと同一にアクセス可能とするためである。例えば、ホストからのＷｒｉｔｅアクセスにおいて、ＮＡＮＤフラッシュメモリに格納されたデータの更新が発生する場合に、ＳＳＤのコントローラは、ＮＡＮＤフラッシュメモリに対して、データのＷｒｉｔｅを行う前に、更新対象のデータを格納しているページを含むブロックの一括消去を実行する。ＳＳＤのコントローラは、ＮＡＮＤフラッシュメモリの当該ブロックの消去にあたり、当該ブロックにおいて有効なページ（消去不可のデータを保持するページ）のデータを保護するために、ＮＡＮＤフラッシュメモリの当該有効なページのデータを読み出し、例えばＤＲＡＭ（Dynamic Random Access Memory）等のバッファメモリに退避する。つづいて、ＳＳＤのコントローラは、ＮＡＮＤフラッシュメモリの当該ブロックを一括消去する。つづいて、ＳＳＤのコントローラは、バッファメモリ上で、退避されたデータと更新対象のデータとをマージし、ＮＡＮＤフラッシュメモリの一括消去された当該ブロックに、当該バッファメモリ上のデータを、ページ単位にに書き込む。【０００５】
また、ＳＳＤのコントローラは、ＮＡＮＤフラッシュメモリにおける新規にデータを格納可能なブロック、ページを確保するために、ガーベッジコレクション等の記憶領域管理処理を、例えば自動的（自律的）に実行する場合がある。ガーベッジコレクションの処理では、データが既に書き込まれているために新たなデータを記録することができないブロックに対して、当該ブロックに再び新しいデータを格納することができるように、当該ブロックの有効なページを他のブロックへ移動した上で、当該ブロックの消去を行う。また、ホストからのＷｒｉｔｅアクセス要求に対して、既にデータが書き込まれているページを更新する場合、ＳＳＤのコントローラは、ＮＡＮＤフラッシュメモリにおいて、新規データを、別のデータが格納されていないブロックに格納する。その際、Ｗｒｉｔｅアクセス要求を処理する前の同じブロックに含まれるページに格納されていた有効データは、記憶領域管理処理により、通常、別の空きブロックのページに書き込まれる。つまり、ホストにおける当該有効データに関する論理アドレスと、ＳＳＤ側における当該有効データの格納アドレス（物理アドレス）との対応は、記憶領域管理処理による当該有効データの別のページへの書き込みによって、元の状態から変化する。【０００６】
ストレージ装置へのアクセスを制御する関連技術として、例えば特許文献１には、外部よりストレージ装置に対してデータをアップロードする場合のストレージ装置の処理を制御する制御装置が、ストレージ装置にアクセスがあったことを契機に、ストレージ装置より送信されるイベントを受信してストレージ装置の処理負荷を算出し、処理負荷が閾値を超えている場合、リモートサーバに対してストレージ装置へのデータ転送量を制限するように指示する構成が開示されている。【０００７】
またＳＳＤの制御に関して、例えば特許文献２には、ストレージデバイスの応答特性を整合させるため、ストレージデバイスの特性を用いてＩ／Ｏ要求をスケジュールし、デバイスが、ｕｎｋｎｏｗｎ（未知）状態にあることを示す動作を示す場合、デバイスの状態をｋｎｏｗｎ（既知）な状態とする操作をデバイスに対して行う構成が開示されている。【０００８】
そして、ＮＡＮＤフラッシュメモリの関連技術として、例えば特許文献３には、ＳＳＤ内に設けられているコントローラは、ユーザが書き込んだコンテンツに対して保護するライトプロテクトが有効のとき（当該デバイスに対する書き込みを禁止）、上位装置から書き込みコマンドが発行された場合、エラーを返す構成が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−３０５０９５号公報
【特許文献２】米国特許出願公開第２０１２／００６６４４８号明細書
【特許文献３】特開２００６−３０９６８７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
以下に関連技術の分析を与える。【００１１】
前述したように、ＳＳＤでは、ホストからのアクセス要求がＷｒｉｔｅの場合、ＮＡＮＤフラッシュメモリのブロック内の有効ページの読み出し、ブロック単位の消去、ページ単位の書き込み等のアクセスコマンドが実行される。すなわち、ホストがＷｒｉｔｅ先として指定したアドレス、データサイズや、ＮＡＮＤフラッシュメモリにおけるデータの格納状況等に応じて、ＮＡＮＤフラッシュメモリに対して実行されるアクセスの数や種類が変化する。また、ホスト側で参照するＳＳＤのアドレス空間に対するマッピング情報（ホスト側の論理アドレスとＳＳＤでの物理アドレスとの対応等）も動的に変化する。【００１２】
このため、ホスト側からＳＳＤのＮＡＮＤフラッシュメモリに対するアクセス負荷を正確に予測することは、一般に困難である。【００１３】
更に、ＳＳＤのコントローラは、空き領域確保のためのガーベッジコレクション等の記憶領域管理処理を自律的に実行する（記憶領域管理処理の処理負荷は相対的に大である）。また、ホストは、基本的に、ＳＳＤへのアクセス要求を発行し、その応答にしたがって、ＳＳＤの状態を把握している。このため、ＳＳＤの動作が予期せぬ状態（例えば応答遅延や一時的な応答停止等）に推移した場合など、ＳＳＤの状態を、ホスト側で、常に正確に知ることができない場合もある。【００１４】
そして、ＳＳＤにおいては、ホストから同一サイズのＷｒｉｔｅアクセスを行った場合に、ＳＳＤ内部で発生するアクセス負荷は同一とはならない場合がある。例えばＮＡＮＤフラッシュメモリのデバイス特性に起因するアクセス特性が、ホストからのアクセス負荷の予測を困難にしている。また、多値セル（ＭＬＣ、ＴＬＣ）のＮＡＮＤフラッシュメモリは、一般的に、ページに対するＷｒｉｔｅアクセスの完了時間が不均一となる場合があることが知られている。この場合、ＮＡＮＤフラッシュメモリを含むＳＳＤにおいて、ホストから同一サイズのＷｒｉｔｅアクセスを行った場合に、ＳＳＤ内部で発生するアクセス負荷は同一とはならない。【００１５】
このように、ホストからアクセス負荷の予測が困難である結果、ホストからのアクセス要求によってＳＳＤが意図せずに高負荷の状態となることで、ＳＳＤに対するアクセスの応答遅延、又は、一時的な応答停止が発生する。特に、ＳＳＤに格納されたデータのＲｅａｄを伴うアクセス要求に対して、応答が遅延するか、又は一時的に応答が不可能となる場合がある。【００１６】
そして、ＳＳＤにおけるアクセスの応答遅延は、情報処理システムの性能低下に加えて、例えば、システム全体の動作におけるタイムアウトの形で、障害として影響を与える可能性が存在する。以上から、情報処理システムの信頼性、安定性の維持においてＳＳＤに代表される記憶媒体の応答遅延、一時的応答停止状態の解消、回避は、重要な課題である。【００１７】
ここで、上記課題の観点から、改めて上記特許文献をレビューしてみると、上記特許文献１では、ストレージ装置での処理負荷が閾値を超えていたとき、ストレージ装置へのデータ転送量を制限しているが、データ転送量を制限する指示を行うだけでは、ＳＳＤにおけるアクセスの応答遅延や一時的な応答停止が発生に対する有効な対処とはなり得ない。【００１８】
また、上記特許文献２では、記憶媒体を再初期化することで応答遅延、停止状態から復帰させる。しかしながら、記憶媒体が異常停止に対してホストから格納されたデータ、及び記憶媒体の制御、管理に用いるデータの保護機能を持たない場合に、前記データを破壊する可能性がある。【００１９】
さらに、上記特許文献３の開示は、コンテンツ保護を目的とした書き込み禁止であり、ＳＳＤにおけるアクセスの応答遅延や一時的な応答停止の発生という問題を解消又は回避するという上記課題とは相違している（上記課題の解決には結びつかない）。【００２０】
したがって、本発明は、上記課題のいずれかを解決する装置、システム、方法、プログラムを提供することを目的の１つとしている。
【課題を解決するための手段】
【００２１】
本発明の１つの側面(aspect)によれば、ホストからのアクセス要求を記憶デバイスへのアクセス用に変換したアクセスコマンドを一旦保持するコマンドキューと、前記コマンドキューに保持されているアクセスコマンドの分析結果に基づき、前記記憶デバイスへの書き込みを禁止とすべきか否かを判断する第１の手段と、書き込み禁止の場合、前記ホストからのアクセス要求に対してエラー応答を返す第２の手段と、を含むストレージ装置が提供される（第１側面）。【００２２】
本発明の他の側面によれば、ストレージ装置を少なくとも１つ備え、ホストを備え、前記ホストは、前記ストレージ装置へのアクセス要求に対してエラー応答を受けると、前記ストレージ装置に対して前記アクセス要求を再発行するか、別のストレージ装置に対して前記アクセス要求を発行する情報処理システムが提供される（第２側面）。【００２３】
前記第２の側面の情報処理システムにおいて、ストレージ装置は、前記第１側面のストレージ装置で構成してもよい（第３側面）。【００２４】
本発明の他の側面によれば、ホストに接続されるストレージの制御方法であって、前記ホストからのアクセス要求を記憶デバイスへのアクセス用に変換したアクセスコマンドをコマンドキューに一旦保持し、前記コマンドキューに保持されているアクセスコマンドの分析結果に基づき、前記記憶デバイスへの書き込みを禁止とすべきか否かを判断し、書き込み禁止の場合、前記ホストからのアクセス要求に対してエラー応答を返すストレージ制御方法が提供される（第４側面）。【００２５】
本発明のさらに別の側面によれば、ホストに接続されるストレージを構成するコンピュータに、前記ホストからのアクセス要求を記憶デバイスへのアクセス用に変換したアクセスコマンドを一旦保持するコマンドキューに保持されているアクセスコマンドの分析結果に基づき、前記記憶デバイスへの書き込みを禁止とすべきか否かを判断する第１の処理と、
書き込み禁止の場合、前記ホストからのアクセス要求に対してエラー応答を返す第２の処理と、を実行させるプログラムが提供される（第５側面）。【００２６】
本発明のさらに別の側面によれば、ストレージ装置へのアクセス要求に対して、書き込み禁止状態の前記ストレージ装置からエラー応答を受けると、前記ストレージ装置に対して前記アクセス要求を再発行するか、別のストレージ装置に対して前記アクセス要求を発行する処理を、ホストを構成するコンピュータに実行させるプログラムが提供される（第６側面）。【００２７】
本発明のさらに別の側面によれば、上記第５又は第６側面に係るプログラムを記録したコンピュータ読み出し可能な半導体メモリあるいは磁気／光記録媒体等の記録媒体（non-transitory recording medium）が提供される（第７側面）。
【発明の効果】
【００２８】
本発明によれば、記憶デバイスの応答遅延、一時的応答停止状態を解消又は回避可能としている。
【図面の簡単な説明】
【００２９】
【図１】本発明の一実施形態のシステム構成を例示する図である。
【図２】本発明の一実施形態のホストの構成を例示する図である。
【図３】本発明の一実施形態の記憶媒体の構成を例示する図である。
【図４】図２のマッピングテーブルを例示する図である。
【図５】図２のストレージ（記憶媒体）状態テーブルを例示する図である。
【図６】図３のアクセス要求テーブルを例示する図である。
【図７】図３のコマンドキューを例示する図である。
【図８】本発明の一実施形態の動作（アクセス要求）を説明する流れ図である。
【図９】本発明の一実施形態の動作（代替記憶媒体へアクセス変更）を説明する流れ図である。
【図１０】本発明の一実施形態の動作（Ｗｒｉｔｅ禁止状態からＷｒｉｔｅ許可状態への移行）を説明する流れ図である。
【図１１】本発明の一実施形態の動作（アクセス処理実行）を説明する流れ図である。
【図１２】本発明の一実施形態の動作（Ｗｒｉｔｅ禁止状態に移行）を説明する流れ図である。
【図１３】一実施形態におけるホストからのアクセス要求一覧を表形式で例示する図である。
【図１４】一実施例におけるコマンドキューの状態を例示する図である。
【図１５】一実施例におけるホストのマッピングテーブルを例示する図である。
【図１６】本発明の基本概念を説明する図である。
【図１７】本発明の基本概念を説明する図である。
【発明を実施するための形態】
【００３０】
以下では、本発明の基本概念、基本原理を説明し、つづいて例示的な実施形態について説明する。
【００３１】
＜基本概念＞
図１６を参照すると、本発明の一形態に係るストレージ装置２００は、図示されないアクセス要求元（ホスト）に接続され、前記アクセス要求元（ホスト）からのアクセス要求を記憶デバイス２０１へのアクセス用に変換したアクセスコマンドを一旦保持するコマンドキュー(command queue)２０２と、コマンドキュー２０２に保持されているアクセスコマンドの分析結果に基づき、記憶デバイス２０１への書き込みを禁止とすべきか否かを判断する第１の手段（第１のユニット）２０３と、書き込み禁止の場合、アクセス要求元（ホスト）からの前記アクセス要求に対して、エラー応答を返す第２の手段（第２のユニット）２０４と、を含む。
【００３２】
例えば高負荷状況と判断されたとき、記憶デバイス２０１への書き込みを禁止として、ホストからのアクセス要求に対してエラー応答を返すことで、ストレージ装置２００の高負荷状況の解消と回避を図ることができる。また、記憶デバイス２０１が書き込み禁止のとき、エラー応答を返すことで、アクセス要求元のホストは、アクセス要求が失敗（fail）したことをただちに認識することができる。アクセス要求元のホストでは、アクセス先のストレージ装置を、例えばストレージ装置２００とは別の代替ストレージ装置に切り替えるか、あるいは、当該ストレージ装置２００の高負荷状態が解消されてから、再度、アクセスする等、適正なアクセス処理の選択が可能である。その結果、アクセスの安全性、効率化を確保可能としている。なお、第１、第２の手段（第１、第２のユニット）２０３、２０４、及び、コマンドキュー２０２の処理（例えばキューへの挿入処理（enqueue）、キューからの取り外し処理(dequeue)）は、コンピュータで実行されるプログラムでその処理・機能を実行するようにしてもよいことは勿論である。
【００３３】
＜形態（modes）＞
また、図１７を参照すると、本発明の一形態（mode）に係るストレージ装置２００において、第１の手段（第１のユニット）２０３は、前記コマンドキュー２０２で待機中のアクセスコマンド、又は、前記コマンドキュー２０２で待機中のアクセスコマンド及びアクセス実行中のアクセスコマンドについて、前記アクセスコマンドの数と前記アクセスコマンドの内容の少なくとも一方の分析に基づき、負荷を判定する負荷判定手段（負荷判定ユニット）２０５と、前記負荷が、所定の閾値（基準値）を超えている場合、記憶デバイス２０１への書き込みを禁止とする書き込み許可変更手段（書き込み許可変更ユニット）２０６と、を含む。本発明の一形態によれば、負荷量、処理遅延量等の分析あるいは予測結果等に基づき、記憶デバイス２０１への書き込み禁止の設定を行い、高負荷状況、応答遅延の解消と回避を図るとともに、さらに、記憶デバイス２０１の書き込み禁止状態から書き込み許可状態への復旧を図ることができる。
【００３４】
さらに、図１７を参照すると、本発明の一形態に係るストレージ装置２００において、前記第１の手段２０３が記憶デバイス２０１への書き込みを禁止と判断すると、前記コマンドキュー２０２にキューイングされているアクセスコマンドのうち少なくとも一部のアクセスコマンド（例えばＷｒｉｔｅアクセスコマンド）をクリアし、前記少なくとも一部のアクセスコマンドを中断するコマンド中断手段（コマンド中断ユニット）２０７をさらに含む構成としてもよい。コマンド中断手段２０７は、第１の手段２０３が記憶デバイス２０１への書き込み禁止と判断すると、その時点で記憶デバイス２０１に対してアクセス実行状態のアクセスコマンドのうち一部又は全部のアクセスコマンド（例えばＷｒｉｔｅアクセスコマンド）を中断する制御を行うようにしてもよい。こうすることで、ストレージ装置２００の高負荷状態が解消するまでの時間を短縮することができる。なお、中断されたアクセスコマンドに対応するアクセス要求を発行したホスト１では、当該アクセス要求に対応するエラー応答、またはタイムアウト発生等（例えばアクセス要求の発行先のストレージ装置から何の応答も無いまま一定期間経過）で、当該アクセス要求が失敗したことを認識することができる。なお、第１、第２の手段２０３、２０４、及び、コマンドキュー２０２の処理、コマンド中断手段２０７は、コンピュータで実行されるプログラムでその処理・機能を実行するようにしてもよいことは勿論である。特に制限されないが、記憶デバイス２０１は、例えばＮＡＮＤ型フラッシュメモリを備えた構成とされる。
【００３５】
ストレージ装置２００において、ホスト１からのアクセス要求に対する応答遅延を検出するか、応答遅延状態を引き起こすストレージ装置２００の内部の高負荷を予見した場合等に、ストレージ装置２００は、
（ａ）記憶デバイス２０１に対するアクセス、及び、
（ｂ）ホスト１からのアクセス要求に対する処理
のいずれか、又は両者を中止する。
【００３６】
ストレージ装置２００は、ホスト１に対して、中止したアクセス、及び、処理に関連したアクセス要求に対応したエラー情報（アクセス要求が行われなかったことを示す情報であってもよい）を応答として返す。
【００３７】
ストレージ装置２００は、記憶デバイス２０１に対するアクセス、及び、ホスト１からのアクセス要求の処理を中止することで、ストレージ装置２００の負荷を低減する。その結果、応答遅延状態を解消する。あるいは、又は応答遅延状態の発生を未然に回避することができる。
【００３８】
ストレージ装置２００からアクセス要求に対するエラー、又は、アクセス要求が未実行の応答を受理したホスト１は、ストレージ装置２００に対するＷｒｉｔｅアクセス要求を一時的に中断する。
【００３９】
Ｗｒｉｔｅアクセス要求発行対象のストレージ装置２００から、エラー又は未実行の応答を受け取ったＷｒｉｔｅアクセス要求の要求元のホスト１は、ストレージ装置２００が応答遅延状態となることを避けるために、ストレージ装置２００にＷｒｉｔｅアクセス要求を発行する代わりに、
（１）ホスト１に接続された不図示の他のストレージ(例えば図１の代替ストレージ３)、
（２）ホスト１上の不図示のＤＲＡＭ（Dynamic Random Access Memory）等のストレージ、
（３）不図示の他のホスト、
の少なくともいずれかに対して、Ｗｒｉｔｅアクセス要求を行うようにしてもよい。
【００４０】
アクセス要求元のホスト１は、応答遅延状態を解消途中のストレージ装置２００において、未実行のＲｅａｄアクセス、及び、当該Ｗｒｉｔｅアクセス要求後のＲｅａｄアクセスについて、所定のタイミングで（例えば即時に、又は、所定の時間経過後に）、ストレージ装置２００に対して要求を行うようにしてもよい。ストレージ装置２００は、ストレージ装置２００の内部の負荷が下がり、応答遅延が解消するか、回避可能と判断される前であっても、ホスト１からのＲｅａｄアクセス要求を、継続的に受け付けるようにしてもよい。Ｒｅａｄアクセスは、例えば、ストレージ装置２００がＳＳＤである場合、記憶デバイス２０１として使用するＮＡＮＤフラッシュメモリに格納されたデータを参照することで、アクセス処理が完了する。Ｒｅａｄアクセス要求は、Ｗｒｉｔｅアクセス要求に比べて負荷が軽い（Ｒｅａｄでは、ＮＡＮＤフラッシュメモリに格納されたデータの更新処理は伴わず、データの格納、記憶領域のマッピング情報の更新、及び消去（Ｅｒａｓｅ）等は行われない）。このため、ＮＡＮＤフラッシュメモリに対するＲｅａｄアクセスを禁止しなくても、ストレージ装置２００が応答遅延を、さらに悪化させることにはならない。
【００４１】
上記したように、ホスト１は、Ｗｒｉｔｅ禁止状態のストレージ装置２００に対して、応答遅延が解消されるか、回避可能とされるまでの間は、Ｗｒｉｔｅアクセス要求を行わない。ホスト１は、ストレージ装置２００に対するＷｒｉｔｅアクセス要求について、ホスト１に接続された、ストレージ装置２００を除く、不図示の他のストレージや、ホスト１上の主記憶をはじめとしたストレージ、又は、他のホストに対するＷｒｉｔｅアクセス要求を行う。
【００４２】
また、ホスト１は、ストレージ装置２００における応答遅延の解消、回避の完了の判定を、
（Ａ）アクセス要求に対するエラー又はアクセス要求未実行の応答から予め定められた所定時間が経過した時点、
（Ｂ）ホストからストレージ装置２００に対する内部の負荷状態又は応答遅延の解消状態の問い合わせ、又は、
（Ｃ）ホストからのＲｅａｄ以外のアクセス要求に対するエラー、未実行応答の有無等の情報によって行うようにしてもよい。
【００４３】
ストレージ装置２００は、ホストからの内部の負荷状態又は応答遅延の解消状態の問い合わせに対して、ストレージ装置２００の状態情報を通知するようにしてもよい。ストレージ装置２００は、応答遅延が解消、回避されたと判断されるまでの間、ホスト１からのＲｅａｄ以外のアクセス要求に対して、エラー情報（アクセス要求の未実行を示す情報であってもよい）を応答として返すようにしてもよい。
【００４４】
本発明の一形態によれば、図３を参照すると、ストレージ２（図１６、図１７の基本概念のストレージ装置２００に対応する一形態）は、１つ又は複数の記憶デバイス２１とストレージ制御装置（コントローラ）２９を備えている。ストレージ制御装置２９は、アクセス変換手段（アクセス変換部）２２、アクセスフィルタ手段（アクセスフィルタ部）２３、コマンドキュー（コマンドキュー手段）２４、コマンド発行手段（コマンド発行部）２５、負荷判定手段（負荷判定部）２６、Ｗｒｉｔｅ許可変更手段（Ｗｒｉｔｅ許可変更部）２７、及び、コマンド中断手段（コマンド中断部）２８を含む。なお、ストレージ制御装置２９の手段（部）２２−２８の少なくとも１つについて、コンピュータで実行されるプログラムでその処理・機能を実現するようにしてもよい。なお、ストレージ２をＳＳＤとすると、記憶デバイス２１は、例えばＮＡＮＤフラッシュメモリからなる。
【００４５】
アクセス変換手段２２は、ホスト１からストレージ２に対するアクセス要求をストレージ内の記憶デバイス２１に対するアクセスコマンドに変換する。
【００４６】
アクセスフィルタ手段２３は、ホスト１からのＲｅａｄ以外のアクセス要求についてＷｒｉｔｅ禁止状態である場合、ホスト１にエラー情報を応答として返す。
【００４７】
コマンドキュー２４は、アクセス変換手段２２によって変換されたアクセスコマンドを格納する。アクセスコマンドは、コマンド発行手段２５で処理が行われるまでコマンドキュー２４に処理待ち状態でキューイングされる。なお、コマンドキュー２４は到着順にアクセスコマンドをキューに繋ぎ（enqueue）、順番にキューから外す（dequeue）ようにしてもよいし（FiFO: First In First Out：先入れ先出し方式）、アクセスコマンドの種類、アクセスデータ長、あるいは優先度等に応じて、コマンドキュー２４のキューの再順序付けや取り出しをスケジューリングするようにしてもよい。
【００４８】
コマンド発行手段２５は、コマンドキュー２４に格納されたアクセスコマンド（FIFOの場合、キューの先頭のアクセスコマンド）を記憶デバイス２１に対して発行する。なお、コマンドキュー２４にキューイングされているアクセスコマンドは、記憶デバイス２１に対する当該アクセスコマンドのアクセス処理が完了するまで、コマンドキュー２４に繋いだ状態であってもよい。あるいは、コマンド発行手段２５は、コマンドキュー２４に格納されたアクセスコマンドをコマンドキュー２４から外し（dequeue）、記憶デバイス２１に対してアクセスを発行するようにしてもよい。この場合、記憶デバイス２１に対するアクセスが完了するまでの期間、コマンド発行手段２５はコマンドキュー２４から外した（dequeueした）アクセスコマンドを、自ユニット内で保持する。
【００４９】
負荷判定手段２６は、コマンドキュー２４にキューイングされているアクセスコマンドから、ストレージの負荷を見積もる。
【００５０】
Ｗｒｉｔｅ許可変更手段２７は、負荷判定手段２６が高負荷と判定した場合に、Ｗｒｉｔｅ禁止状態に移行し、高負荷状態から負荷が低下した場合に、Ｗｒｉｔｅ許可状態に移行する。
【００５１】
コマンド中断手段２８では、Ｗｒｉｔｅ禁止状態に移行した場合に、コマンドキュー２４におけるＲｅａｄ以外のアクセスコマンド、又は、Ｒｅａｄを含めた全てのアクセスコマンドを破棄するようにしてもよい。
【００５２】
アクセス変換手段２２は、ホスト１からストレージ２に対するアクセス要求を受け取り、応答までの処理を管理する。また、アクセス変換手段２２は、受け取ったアクセス要求を、ストレージ２内部の単体又は複数の記憶デバイス２１に対するアクセスコマンドに変換してコマンドキュー２４に格納する。さらに、アクセス変換手段２２は、変換された前記アクセスコマンドの実行結果を受け取り、前記アクセス要求に対応する処理が完了した時点で、ホスト１に、アクセス要求の結果を通知する（この機能は、図１６の第２の手段２０４に対応する）。
【００５３】
アクセスフィルタ手段２３は、アクセス変換手段２２が受けたアクセス要求に対して、ストレージ２がＷｒｉｔｅ禁止状態である場合、ホスト１からのＲｅａｄ以外のアクセス要求に対して、エラー（又は未実行であることを示すエラー情報）をホスト１に通知するように、アクセス変換手段２２に指示する。
【００５４】
コマンドキュー２４は、アクセス変換手段２２によって変換された、記憶デバイス２１に対する発行待ちのアクセスコマンドを格納する。
【００５５】
コマンド発行手段２５は、コマンドキュー２４から記憶デバイス２１に対するアクセスコマンドを読み出して、記憶デバイス２１に対してアクセスを行う。アクセスがＲｅａｄの場合、コマンド発行手段２５は、記憶デバイス２１から読み出したデータを受け取る。
【００５６】
負荷判定手段２６は、コマンドキュー２４にキューイングされているアクセスコマンドを分析して、ストレージ２における処理の負荷量、又は待ち時間を見積もる。より詳細には、負荷判定手段２６は、コマンドキュー２４にキューイングされている記憶デバイス２１に対する発行待ち（待機中）のアクセスコマンド、及び、コマンド発行手段２５において実行中のアクセスコマンドについて、待機中又は実行中のアクセスコマンドの数、及び／又は、アクセスコマンドの内容（アクセスの種類、アクセスデータ長等）から、ストレージ２における処理の負荷量（又は、待ち時間）を見積もる。なお、待ち時間は、例えばアクセスコマンドがコマンドキュー２４に格納されてから、コマンド発行手段２５によって読み出され、記憶デバイス２１に発行されるまでの、コマンドキュー２４での待機時間である。待ち時間は、コマンドキュー２４にキューイングされているアクセスコマンドの全てについて測定するのではなく、例えば最後尾に繋がれたアクセスコマンド（今回入力されたアクセス要求に対応するアクセスコマンド）がコマンドキュー２４の先頭に到達し、記憶デバイス２１に発行されるまでの時間であってもよい。待ち時間は、ストレージ２の負荷に依存している。なお、負荷判定手段２６は、負荷量と、待ち時間の両方を見積もるようにしてもよいし、いずれか一方のみ見積もるだけでもよい。
【００５７】
Ｗｒｉｔｅ許可変更手段２７は、負荷判定手段２６によるストレージ内部の負荷量、又は、待ち時間の見積結果が、予め定められた所定の基準値を上回った場合に、ストレージ２からホスト１に対する応答の遅延につながる、又は、高負荷状態である、と判定し、Ｗｒｉｔｅ禁止状態（ストレージ２に対するホスト１からの更新操作を禁止する状態）とする。
【００５８】
また、Ｗｒｉｔｅ許可変更手段２７は、高負荷状態（Ｗｒｉｔｅ禁止状態）において、負荷判定手段２６による負荷、又は待ち時間の見積もり結果が、予め定められた基準値を下回った場合に、高負荷状態が解消されたと判定してストレージに対するホストからの更新操作を許可する、Ｗｒｉｔｅ許可状態とする。
【００５９】
コマンド中断手段２８は、Ｗｒｉｔｅ許可変更手段２７によってＷｒｉｔｅ禁止状態となった場合に、コマンドキュー２４に格納されたアクセスコマンド、及び、コマンド発行手段２５が記憶デバイスに対して実行中のアクセスの一部、又は全ての実行の中断処理を行う。コマンド中断処理によって、アクセス変換手段２２に、記憶デバイス２１に対するアクセスコマンドの中断が通知される。
【００６０】
ストレージ２と接続されるホスト１は、図２を参照すると、
（ａ）Ｗｒｉｔｅデータの格納先を管理するマッピングテーブル１１と、
（ｂ）Ｗｒｉｔｅ禁止状態を記録するストレージ状態テーブル１２と、
（ｃ）アクセス要求が指し示すストレージ２と、対応するストレージ内のアドレスの変換、及び、Ｗｒｉｔｅ禁止状態のストレージ２に対するマッピングの変更を行うマッピング手段（部）１３と、
（ｄ）ストレージ２からエラー情報の応答の受けたＷｒｉｔｅアクセス要求に対して、ストレージ２のマッピングを変更するアクセス要求再発行手段(部)１４と、
（ｅ）ストレージ２に対してアクセス要求を行うアクセス要求手段(部)１５と、
を備える。なお、（ａ）乃至（ｅ）の手段の少なくとも一部は、コンピュータ上で実行されるプログラムにより、その処理・機能を実現するようにしてもよいことは勿論である。
【００６１】
マッピングテーブル１１は、ホスト１上で動作するソフトウェアからのアクセス要求において指定される論理アドレスの空間と、データが格納されるストレージ２、及び、アドレスの対応関係を記録する。
【００６２】
ストレージ状態テーブル１２は、ホスト１に接続されたストレージ２におけるＷｒｉｔｅ禁止状態を記録する。
【００６３】
マッピング手段１３は、ホスト１上で動作するソフトウェアからのアクセス要求に対して、マッピングテーブル１１を参照してアクセス先となるストレージ２、及びストレージ内のアドレスを取得する。
【００６４】
また、マッピング手段１３は、アクセス要求がＷｒｉｔｅアクセスである場合、ストレージ状態テーブル１２の情報を確認し、ストレージ２がＷｒｉｔｅ禁止状態である場合には、格納先ストレージ、及び、ストレージ内の格納先アドレスを、前記ストレージ２を除いた他のストレージ３（代替ストレージ）から選択する。さらに、マッピング部１３は、マッピングテーブル１１に格納されたマッピング先のストレージ、及びストレージ内のアドレスを更新する。
【００６５】
アクセス要求再発行手段１４は、ストレージ２からエラー情報の応答を受けたアクセス要求がＷｒｉｔｅである場合、エラーとなったＷｒｉｔｅアクセス要求のＷｒｉｔｅデータに対する格納先ストレージ、及び、ストレージ２内の格納先アドレスを、ストレージ２を除いた他のストレージ（例えば図２の３）から選択して、マッピングテーブル１１に格納されたマッピング情報を更新する。
【００６６】
アクセス要求手段１５は、マッピング部１３、及び、アクセス要求再発行手段１４によって取得、又は、更新されたストレージ２、及び、ストレージ２のアドレスに対して、ホスト１上で動作するソフトウェアからのアクセス要求を発行する。
【００６７】
また、アクセス要求手段１５は、例えばストレージ２からのアクセス要求の応答結果として、ストレージ２からエラー情報（エラー又は未実行）の応答を受け取った場合、ストレージ状態テーブル１２に対して、ストレージがＷｒｉｔｅ禁止状態であることを記録する。
【００６８】
さらに、アクセス要求手段１５は、アクセス再発行手段１４を通してエラー情報の応答の受けたＲｅａｄ又はＷｒｉｔｅアクセスの要求を再発行する。
【００６９】
さらにまた、アクセス要求手段１５は、アクセス要求の正常終了の応答をストレージから受け取った場合は、結果をアクセス要求元であるホスト１上のソフトウェアに返すと共に、ストレージ状態テーブル１２に対して、ストレージ１がＷｒｉｔｅ許可状態であることを記録する。
【００７０】
Ｗｒｉｔｅ禁止確認手段１６は、ストレージ状態テーブル１２に記録されたストレージ２のＷｒｉｔｅ禁止状態を、所定の時期にＷｒｉｔｅ許可状態に更新するか、又は、所定の時間間隔で、アクセス要求手段１５を通して、Ｗｒｉｔｅ禁止状態のストレージ２に対して、Ｗｒｉｔｅ禁止状態の問い合わせを行うことで、ストレージ２がＷｒｉｔｅ許可状態に移行したことを検出する。
【００７１】
上記したように、本発明を適用することで、ストレージ２の内部の高負荷による、ホスト１からのアクセス要求への応答遅延に対して、ホスト１からストレージ２に対するアクセスの応答遅延状態を解消し、又は、未然に回避ですることがきる。
【００７２】
また、本発明によれば、ストレージ２からホスト１に対するエラー応答を用いているため、既存のプロトコル、アクセスインタフェースを変更せずに適用可能である。以下、例示的な実施形態に即して説明する。
【００７３】
＜実施形態：システム構成＞
図１は、本発明の実施形態（exemplary embodiments）の一例の構成を例示する図である。図１を参照すると、一実施形態のシステムは、ホスト１、ホスト１に接続されるストレージ２、代替ストレージ３を含む。代替ストレージ３は、ストレージ２と同様のストレージであってもよいし、異なるストレージであってもよい。また、図１ではストレージ２、及び代替ストレージ３は直接ホスト１に接続されているが、互いに不図示のネットワークを介して接続される構成としてもよい。あるいは、ストレージ２、代替ストレージ３の一方がネットワークを介してホスト１に接続された構成としてもよい。ストレージ２は、例えば、プログラム可能な一括消去型不揮発性半導体メモリを備えた装置（例えばＳＳＤ）で構成してもよい。なお、図１では、単に説明の簡単のために、ホスト１に接続されるストレージ２、代替ストレージ３を各一台としたシステム構成が例示されているが、ストレージの台数は１台に制限されるものでないことは勿論である。また、ホスト１は、図示されない他のホスト等に、通信手段（例えばネットワーク）等を介して接続される構成としてもよいことは勿論である。
【００７４】
＜実施形態：ホスト＞
図２は、図１のホスト１の構成の一例を模式的に例示した図である。図２を参照すると、ホスト１は、マッピングテーブル１１と、ストレージ状態テーブル１２と、マッピング部１３と、アクセス要求再発行部１４と、アクセス要求部１５と、Ｗｒｉｔｅ禁止確認部１６を備える。
【００７５】
＜ホスト：マッピングテーブル＞
図４は、図２のマッピングテーブル１１を説明する図である。マッピングテーブル１１は、ホスト１上で動作するソフトウェアからのアクセス要求において指定される論理アドレスの空間と、データが格納されるストレージ２又は代替ストレージ３を示すＩＤ(Identity)等の識別子（ストレージＩＤ）、及び、該ストレージ２又は代替ストレージ３におけるアドレス（ストレージアドレス）の対応関係を記録する。なお、“０ｘ００００１１００”の“０ｘ”は以下の桁がヘキサデシマル（hexadecimal）表示であることを表している。図４では、マッピングテーブルにホスト１上で動作するソフトウェアが参照する論理アドレス毎に対応するストレージのＩＤ、及び論理アドレスに対応する前記ストレージのアドレスを格納しているが、一定の論理アドレス毎にマッピングを管理する場合は、論理アドレスの格納は省略してもよい。
【００７６】
＜ホスト：ストレージ状態テーブル＞
図５は、図２のストレージ状態テーブル１２を説明する図である。ストレージ状態テーブル１２は、ストレージ２におけるＷｒｉｔｅ禁止状態を記録する。また、代替ストレージ３をストレージ２と同等の構成とした場合、代替ストレージ３のＷｒｉｔｅ禁止状態を併せて記録するようにしてもよい。図５では、ストレージを識別するＩＤ（ストレージＩＤ）毎のＷｒｉｔｅ禁止状態をＹｅｓ、Ｎｏの形で記憶しているが、Ｙｅｓ、Ｎｏの２通りの状態を表すことが可能な形式でありさえすれば、任意の形式であってよい。また、ストレージＩＤが例えば等間隔で管理されている場合は、ストレージ状態テーブル１２におけるストレージＩＤの格納は省略してもよい。
【００７７】
＜ホスト：マッピング部＞
再び図２を参照すると、マッピング部１３は、ホスト１上で動作するソフトウェアからのアクセス要求に対して、マッピングテーブル１１を参照してアクセス先となるストレージ２、及びストレージ２に対してアクセス時に指定するアドレスを取得する。
【００７８】
また、マッピング部１３は、ホスト１からのＷｒｉｔｅアクセスに対して、ストレージ状態テーブル１２の情報を参照し、アクセス要求先となるストレージ２がＷｒｉｔｅ禁止状態である場合、Ｗｒｉｔｅ先を代替ストレージ３、及び、代替ストレージ３の他に有効なデータが格納されていない任意のアドレスに変更する。マッピング部１３は、Ｗｒｉｔｅ先のストレージ、及びストレージのアドレスに関する変更を、マッピングテーブル１１に反映する。
【００７９】
＜ホスト：アクセス要求再発行部＞
アクセス要求再発行部１４は、ストレージ２からエラー情報（エラー又はアクセス要求が未実行である旨の情報）の応答に対応するアクセス要求がＷｒｉｔｅアクセス要求である場合、エラーとなったＷｒｉｔｅアクセス要求のＷｒｉｔｅデータに対する格納先ストレージ、及び格納先ストレージにおけるアドレスを、代替ストレージ３、及び、代替ストレージ３の他に有効なデータが格納されていない任意のアドレスに変更する。なお、ホスト１においてアクセス要求に対するストレージ２からの応答として、例えば値０をアクセス成功（正常完了）を示す値（戻り値）として受け取る場合、エラーの応答は０以外の値（例えば１）とされる。同じくエラーであるが、ストレージ２において、アクセス要求が未実行である旨の情報を０以外の値に設定してもよい。以下では、ストレージ２からの応答のエラー又はアクセス要求が未実行である旨の情報をエラー情報という。
【００８０】
そして、アクセス要求再発行部１４は、変更したアドレスをマッピングテーブル１１に反映する。変更先の代替ストレージ３がストレージ２と同一の構成の場合、ストレージ状態テーブル１２の情報を参照して、Ｗｒｉｔｅ許可状態の代替ストレージ３を選択する。
【００８１】
＜ホスト：アクセス要求部＞
アクセス要求部１５は、マッピング部１３、及び、アクセス要求再発行部１４によって取得、又は、更新されたストレージ２、又は、代替ストレージ３の指定されたアドレスに対して、ホスト１上で動作するソフトウェアからのアクセス要求を発行する。
【００８２】
また、アクセス要求部１５は、ストレージ２、又は、代替ストレージ３からのアクセス要求の応答結果を受け取り、ストレージ２からエラー情報の応答を受け取った場合は、ストレージ状態テーブル１２に対してストレージ２がＷｒｉｔｅ禁止状態であることを記録する。
【００８３】
さらに、アクセス要求部１５は、アクセス要求再発行部１４を通してエラー情報の応答の受けたＲｅａｄ又はＷｒｉｔｅアクセスの要求を再発行する。
【００８４】
アクセス要求部１５は、アクセス要求の正常終了の応答をストレージ２から受け取った場合には、結果をアクセス要求元であるホスト上のソフトウェアに返すと共に、ストレージ状態テーブル１２に対して、ストレージ２がＷｒｉｔｅ許可状態であることを記録する。
【００８５】
＜ホスト：Ｗｒｉｔｅ禁止確認部＞
Ｗｒｉｔｅ禁止確認部１６は、ストレージ状態テーブル１２に記録されたストレージ２のＷｒｉｔｅ禁止状態を任意の時期にＷｒｉｔｅ許可状態に更新する。これによってホスト１からのＷｒｉｔｅアクセス要求がストレージ２に対して行われるようにすることで、ストレージ２がＷｒｉｔｅ許可状態に移行したことを検出する。
【００８６】
Ｗｒｉｔｅ禁止確認部１６は、上記構成に制限されるものでないことは勿論である。Ｗｒｉｔｅ禁止確認部１６の他の構成例として、例えば、任意の時間間隔でアクセス要求部１５を通してＷｒｉｔｅ禁止状態のストレージ２に対して、Ｗｒｉｔｅ禁止状態の問い合わせを行い、ストレージ２からの応答がＷｒｉｔｅ許可状態である場合は、ストレージ状態テーブル１２に対してストレージ２がＷｒｉｔｅ許可状態であることを記録してもよい。特に制限されないが、Ｗｒｉｔｅ禁止状態の問い合わせとして、例えば、
（１）ダミーのＷｒｉｔｅコマンドをＷｒｉｔｅ禁止状態のストレージに発行し、エラーが返されるか否かでＷｒｉｔｅ禁止状態であるか否かを判定する、
（２）ストレージ２において予め定められた特定のレジスタ等を通して、応答遅延、停止の状態を、ホスト１から読み出し可能な状態としておき、ホスト１がストレージ２の当該特定のレジスタを参照する、
等の手法を用いることができる。
【００８７】
＜実施形態：ストレージ＞
図３は、図１のストレージ２の構成の一例を模式的に例示した図である。図３を参照すると、ストレージ２は、一つ又は複数の記憶デバイス２１と、アクセス変換部２２と、アクセスフィルタ部２３と、コマンドキュー２４と、コマンド発行部２５と、負荷判定部２６と、Ｗｒｉｔｅ許可変更部２７と、コマンド中断部２８を備える。
【００８８】
＜ストレージ：記憶デバイス＞
記憶デバイス２１は、ストレージ２においてホスト１から格納されたデータを実際に記憶するためのデバイスである。例えば、ストレージ２がＳＳＤである場合、記憶デバイス２１はＮＡＮＤフラッシュメモリで構成される。なお、図３では、単に説明の簡単のため、記憶デバイス２１を１つ備えた構成が図示されているが、記憶デバイス２１は１つに制限されるものでないことは勿論である。
【００８９】
＜ストレージ：アクセス変換部＞
アクセス変換部２２は、ホスト１からストレージ２に対するアクセス要求を受け取り、アクセス変換部２２内のアクセス要求テーブル２２１に登録する。また、アクセス変換部２２は、ホスト１から受け取ったアクセス要求を解釈して、１つ以上の記憶デバイス２１に対するアクセスコマンドに変換し、該アクセスコマンドをコマンドキュー２４に格納する（キューイングする）。
【００９０】
アクセス変換部２２は、ホスト１の各アクセス要求に対応するコマンドキュー２４に格納された各アクセスコマンドの実行状況を管理し、アクセスコマンドの実行結果を、コマンド発行部２５から受け取り、アクセス要求に対応する処理が完了した時点で、ホスト１にアクセス要求の結果を通知する。
【００９１】
＜ストレージ：アクセスフィルタ部＞
アクセスフィルタ部２３は、アクセス変換部２２が受けたアクセス要求に対して、Ｗｒｉｔｅ許可変更部２７からストレージ２のＷｒｉｔｅ禁止状態を取得する。アクセスフィルタ部２３は、ストレージ２がＷｒｉｔｅ禁止状態である場合、ホスト１からのＲｅａｄ以外のアクセス要求に対して、ホスト１に、エラー情報を応答として返すように、アクセス変換部２２に指示する。
【００９２】
＜ストレージ：コマンドキュー＞
コマンドキュー２４は、アクセス変換部２２によって変換された、記憶デバイス２１に対する発行待ちのアクセスコマンドを格納する。コマンドキュー２４は、キューの最後尾に繋ぎ（enqueue）、先頭から取り出す（dequeue）構成のFIFO等の線形リストであってもよい。コマンドキュー２４はＤＲＡＭ等に実装し、キューへの繋ぎ、キューからの取り出しをソフトウェアで制御するようにしてもよい。コマンドキュー２４に保持されているアクセスコマンドを、アクセス種別、アクセスデータ長、優先度等に応じて、順番を入れ替えるスケジューリングを行うことで、トータルの待ち時間の短縮化を図るようにしてもよい。
【００９３】
＜ストレージ：コマンド発行部＞
コマンド発行部２５は、コマンドキュー２４から記憶デバイス２１に対するアクセスコマンドを読み出して、記憶デバイス２１に対してアクセスを行う。コマンド発行部２５は、記憶デバイス２１から結果を受け取り、アクセス変換部２２に、アクセスコマンドの実行結果を返す。記憶デバイス２１に対するアクセスとして、記憶デバイス２１がＮＡＮＤフラッシュメモリの場合、ＮＡＮＤフラッシュメモリのＩＯ（Input/Output）ポートにアクセスコマンドを入力する。アクセスコマンドは、例えばＮＡＮＤフラッシュメモリの動作コマンドとアドレス（例えばブロックアドレス、ブロック内のページアドレス）からなる。
【００９４】
＜ストレージ：負荷判定部＞
負荷判定部２６は、コマンドキュー２４に格納された、記憶デバイス２１に対する発行待ち、及び、コマンド発行部２５において、記憶デバイス２１に対して現在実行中のアクセスコマンドついて、アクセスコマンド数、又は、アクセスコマンドの内容（アクセスの種別、アクセスデータ長等）から、ストレージ２の内部における処理の負荷量、又は、待ち時間を計算する。具体例は実施例として後に説明する。
【００９５】
＜ストレージ：Ｗｒｉｔｅ許可変更部＞
Ｗｒｉｔｅ許可変更部２７は、負荷判定部２６によるストレージ２の内部の負荷量、又は、待ち時間の見積結果が、予め定められた基準値を上回った場合に、ストレージ２が応答の遅延、又は応答遅延につながる高負荷状態と判定し、ストレージ２に対するホスト１からの更新操作を禁止するＷｒｉｔｅ禁止状態とする。
【００９６】
また、Ｗｒｉｔｅ許可変更部２７は、Ｗｒｉｔｅ禁止状態に設定されたのち、負荷判定部２６による負荷、又は、待ち時間の見積結果が予め定められた基準値を下回った場合には、高負荷状態が解消されたものと判定し、ストレージ２に対するホスト１からの更新操作を許可するＷｒｉｔｅ許可状態とする。
【００９７】
Ｗｒｉｔｅ許可変更部２７が、ストレージ２の内部の負荷量、又は、待ち時間の見積結果と比較する予め定められた基準値は、
（イ）ストレージ２の動作中に変更されない固定値、
（ロ）ストレージ２において動作中にホスト１から指定された値、
（ハ）ストレージ２の内部でアクセス要求を受け取る前に自動的に決定される値、
のいずれであっても良い。
【００９８】
＜ストレージ：コマンド中断部＞
コマンド中断部２８は、Ｗｒｉｔｅ許可変更部２７から情報を取得した結果、ストレージ２がＷｒｉｔｅ禁止状態である場合、コマンドキュー２４に格納されたコマンド、及びコマンド発行部２５が記憶デバイス２１に対して、現在実行中のアクセスコマンドの一部、又は、全ての実行の中断処理を行う。
【００９９】
コマンド中断部２８から、アクセス変換部２２に対して、記憶デバイス２１に対するコマンドの中断が通知される。
【０１００】
＜ストレージ：アクセス要求テーブル＞
図６は、図３のアクセス変換部２２におけるアクセス要求テーブル２２１を説明する図である。なお、アクセス要求テーブル２２１は、アクセス変換部２２内に配設する構成に制限されるものでなく、ストレージ２の任意の記憶部に備えた構成としてもよい。図６を参照すると、アクセス要求テーブル２２１は、アクセス要求ＩＤ、アクセス種類、アドレス、サイズ、Ｗｒｉｔｅデータ、対応コマンドＩＤの各カラム（フィールド）を備えている。
【０１０１】
アクセス要求ＩＤは、ホスト１からの各アクセス要求に対して、アクセス要求を示すＩＤ等の識別子である。
【０１０２】
アクセス種類は、Ｒｅａｄ、Ｗｒｉｔｅ等である。
【０１０３】
アドレス、サイズ、Ｗｒｉｔｅデータ、対応コマンドＩＤは、それぞれ、アクセス先のアドレス、アクセスサイズ、ＷｒｉｔｅアクセスにおけるＷｒｉｔｅデータ、変換先の記憶デバイス２１に対するアクセスコマンドを示すＩＤ等の識別子である。
【０１０４】
アクセス要求テーブル２２１のデータ形式は、図６に示した形式に限定されるものでないことは勿論である。例えばＷｒｉｔｅデータは、図６に示したように、直接、Ｗｒｉｔｅデータ本体を格納する形式以外に、例えばストレージ２内部にメモリを別途用意し、Ｗｒｉｔｅデータをメモリに格納して、アクセス要求テーブル２２１にはメモリに対するポインタ情報のみを格納してもよい。
【０１０５】
＜ストレージ：コマンドキュー内のアクセスコマンド＞
図７は、図３のコマンドキュー２４に格納されているアクセスコマンドを説明する図である。コマンドキュー２４は、図３のアクセス変換部２２において変換された各記憶デバイス２１に対するアクセスコマンドについて、
・コマンドＩＤ、
・アクセス種類、
・記憶デバイスＩＤ、
・アドレス（アクセス先のアドレス）、
・Ｗｒｉｔｅデータ（Ｗｒｉｔｅアクセス固有）、
・対応アクセス要求ＩＤ（アクセス変換部２２における変換元であるホスト１からのアクセス要求を示すＩＤ等の識別子）、
の各カラム（フィールド）を有する。なお、コマンドキュー２４のデータ形式は、図７に示した形式に限定されるものでないことは勿論である。例えば図７では、全てのアクセスコマンドのサイズが同一になることを想定しているが、連続した記憶領域に対する複数のアクセス（図７に示した例では、コマンドＩＤが１２、及び１３の２つのＷｒｉｔｅアクセス）について、コマンドキューにサイズ欄を設け受け、アクセスサイズをコマンドキューに格納して一つのアクセスコマンドとして扱ってもよい。また、Ｗｒｉｔｅデータについても、アクセス要求テーブル２２１と同様に、コマンドキューに直接Ｗｒｉｔｅデータを格納せずに、Ｗｒｉｔｅデータを格納するメモリへのポインタ情報を格納するようにしてもよい。
【０１０６】
＜実施形態：動作＞
次に、図１乃至図７を参照して説明した本実施形態のいくつかの動作例について説明する。
【０１０７】
＜ストレージへのアクセス要求手順＞
図８は、本実施形態の動作の一例を説明する流れ図である。図８には、図２に示したホスト１で動作するソフトウェアからアクセス先として対応するストレージ２、又は代替ストレージ３に対してアクセス要求を行う手順が例示されている。図８を参照して、図２に示したホスト１からストレージへのアクセス要求手順について説明する。
【０１０８】
（ステップＳ１１）
ホスト１のマッピング部１３は、ホスト１上で動作するソフトウェアからアクセス要求を受け取ると、マッピングテーブル１１を参照して、当該アクセス要求の指し示すストレージ２に対応する識別子、及び、ストレージ２に対してアクセス時に指定するアドレスを取得する。
【０１０９】
（ステップＳ１２）
ホスト１のマッピング部１３は、アクセス要求がＷｒｉｔｅであるか否か判定する。アクセス要求がＲｅａｄである場合（ステップＳ１２のＮｏ判定）、ステップＳ１６以降の処理を実行する。
【０１１０】
（ステップＳ１３）
ホスト１のマッピング部１３は、アクセス要求がＷｒｉｔｅである場合（ステップＳ１２のＹｅｓ判定）、ステップＳ１１にて取得したアクセス要求先のストレージ２についてストレージ状態テーブル１２を参照して、Ｗｒｉｔｅ禁止状態であるか確認する。
【０１１１】
（ステップＳ１４）
ホスト１のマッピング部１３は、ステップＳ１３においてＷｒｉｔｅ先となるストレージ２がＷｒｉｔｅ禁止状態であるか否か判定する。Ｗｒｉｔｅ禁止状態でない場合（ステップＳ１４のＮｏ判定）、ステップＳ１６以降の処理を実行する。
【０１１２】
（ステップＳ１５）
ホスト１のマッピング部１３は、ステップＳ１３においてＷｒｉｔｅ先となるストレージ２がＷｒｉｔｅ禁止状態である場合（ステップＳ１４のＹｅｓ判定）、Ｗｒｉｔｅ先を代替ストレージ３、及び代替ストレージ３における他に有効なデータが格納されていない任意のアドレスに変更し、マッピングテーブル１１を更新する。
【０１１３】
（ステップＳ１６）
ホスト１のアクセス要求部１５は、マッピング部１３からアクセス先となるストレージ２又は代替ストレージ３を指し示す識別子情報と、該識別子情報が指し示すストレージにおけるアクセス先アドレスの情報を受け取り、識別子情報が指し示すストレージ２又は代替ストレージ３に対してアクセス要求を発行して手順を終了する。
【０１１４】
上記ステップＳ１１からＳ１６までの処理を行い、ホスト１で動作するソフトウェアからアクセス先として対応するストレージ２、又は代替ストレージ３に対してアクセス要求を行う動作が完了する。
【０１１５】
＜ホストの代替ストレージへのＷｒｉｔｅアクセス＞
図９は、図１乃至図７を参照して説明した本実施形態の動作の一例（エラー応答となったＷｒｉｔｅアクセス要求に対応した代替ストレージへのＷｒｉｔｅアクセス）を説明する流れ図である。図９には、図８のステップＳ１１からＳ１６において、図２のホスト１で動作するソフトウェアからアクセス先として対応するストレージ２にアクセス要求を行った結果の応答を処理し、エラー応答のＷｒｉｔｅアクセス要求に対して代替ストレージ３にＷｒｉｔｅを行う手順が例示されている。図９を参照して、代替ストレージへのＷｒｉｔｅアクセスについて説明する。
【０１１６】
（ステップＳ２０１）
ホスト１のアクセス要求部１５は、アクセス先であるストレージ２又は代替ストレージ３から応答を受け取る。
【０１１７】
（ステップＳ２０２）
ホスト１のアクセス要求部１５は、ステップＳ２０１において応答を受け取ったアクセス要求が正常終了であるか否かを確認する。
【０１１８】
（ステップＳ２０３）
正常終了の場合（ステップＳ２０２のＹｅｓ判定）、ホスト１のアクセス要求部１５は、応答を受け取ったアクセス要求がＲｅａｄであるか判定する。
【０１１９】
（ステップＳ２０４）
アクセス要求がＲｅａｄである場合（ステップＳ２０３のＹｅｓ判定）、ホスト１のアクセス要求部１５は、ホスト１上で動作するソフトウェアに対してＲｅａｄ結果（読み出しデータ）を返し、処理手順を終了する。
【０１２０】
（ステップＳ２０５）
ホスト１のアクセス要求部１５は、ステップＳ２０１において応答を受け取ったアクセス要求が正常に終了した場合であり（ステップＳ２０２のＹｅｓ判定）、該正常終了の応答を受け取ったアクセス要求がＷｒｉｔｅである場合（ステップＳ２０３のＮｏ判定）、ストレージ状態テーブル１２に対して、ストレージ２がＷｒｉｔｅ許可状態であることを記録する。
【０１２１】
（ステップＳ２０６）
ホスト１のアクセス要求部１５は、ホスト１上で動作するソフトウェアに対してＷｒｉｔｅ完了を通知して、処理手順を終了する。
【０１２２】
（ステップＳ２０７）
ホスト１のアクセス要求部１５は、ステップＳ２０１において受け取った応答が正常終了でないこと（エラー、又は未実行）を伝えるメッセージである場合（ステップＳ２０２のＮｏ判定）、ストレージ状態テーブル１２に対して、ストレージ２がＷｒｉｔｅ禁止状態であることを記録する。
【０１２３】
ホスト１のアクセス要求再発行部１４は、アクセス要求部１５がステップＳ２０１において、正常終了でないこと（エラー、又は未実行）を伝える応答を受け取ったアクセス要求に対して、該応答を受けたアクセス要求がＲｅａｄである場合（ステップＳ２０８のＮｏ判定）、ステップＳ２１０以降の処理手順を実行する。
【０１２４】
（ステップＳ２０９）
ホスト１のアクセス要求再発行部１４は、アクセス要求部１５がステップＳ２０１において、正常終了でないこと（エラー、又は未実行）を伝える応答を受け取ったアクセス要求に対して該応答がＷｒｉｔｅである場合（ステップＳ２０８のＹｅｓ判定）、アクセス要求の発行先ストレージを代替ストレージ３に変更し、アクセス要求の発行先ストレージにおける発行先アドレスを他に有効なデータが格納されていない任意のアドレスに変更してマッピングテーブル１１を更新する。
【０１２５】
（ステップＳ２１０）
ホスト１のアクセス要求再発行部１４は、アクセス要求部１５がステップＳ２０１において応答を受け取ったアクセス要求に対して、アクセス要求部１５に再発行を要求して処理手順を終了する。
【０１２６】
上記ステップＳ２０１からＳ２１０までの処理を行い、図８のステップＳ１１からＳ１６において、ホスト１で動作するソフトウェアからアクセス先として、対応するストレージ２にアクセス要求を行った結果の応答を処理し、応答がエラー情報（エラー又はアクセス要求未実行）のＷｒｉｔｅアクセス要求に対して、アクセス先を変更した代替ストレージ３に対するＷｒｉｔｅを行う動作が完了する。
【０１２７】
上記した手順では、アクセス要求部１５が直接ホスト１上で動作するソフトウェアに対して応答を行っているが、マッピング部１３を介して、応答を行ってもよい。
【０１２８】
なお、代替ストレージ３を、ストレージ２と同様の構成とした場合、ステップＳ２１０において代替ストレージ３に対して再発行を行ったアクセス要求に対して、代替ストレージ３からの応答に対する処理を、図９のステップＳ２０１からＳ２１０の処理を行うようにしてもよい（この場合、代替ストレージ３を代替するストレージは、例えば図１のストレージ２となる）。
【０１２９】
＜Ｗｒｉｔｅ禁止状態から許可状態への移行＞
図１０は、図１乃至図７を参照して説明した本実施形態の動作の一例（Ｗｒｉｔｅ許可状態への移行）を説明する流れ図である。図１０には、ホスト１においてＷｒｉｔｅ禁止確認部１６による、事前に指定されたストレージ２におけるＷｒｉｔｅ禁止状態からＷｒｉｔｅ許可状態への移行を検出する手順が例示されている。図１０を参照して、ホスト１におけるＷｒｉｔｅ禁止状態からＷｒｉｔｅ許可状態への移行動作を説明する。
【０１３０】
（ステップＳ３１）
ホスト１のＷｒｉｔｅ禁止確認部１６は、Ｗｒｉｔｅ禁止状態問い合わせが不使用であるか否かを確認する。
【０１３１】
（ステップＳ３２）
ホスト１のＷｒｉｔｅ禁止確認部１６は、Ｗｒｉｔｅ禁止状態の問い合わせを行う手段を持たない、又は該手段を利用しない場合（ステップＳ３１のＹｅｓ判定）、ストレージ状態テーブル１２に記録されたストレージ２の状態情報をＷｒｉｔｅ許可状態に更新して処理手順を終了する。
【０１３２】
（ステップＳ３３）
ホスト１のＷｒｉｔｅ禁止確認部１６は、ストレージ２がＷｒｉｔｅ禁止状態の問い合わせを行う手段を持ち、該手段を利用する場合（ステップＳ３１のＮｏ判定）、ストレージ２に対してＷｒｉｔｅ禁止状態の問い合わせを行う。
【０１３３】
（ステップＳ３５）
ホスト１のＷｒｉｔｅ禁止確認部１６は、ステップＳ３３におけるストレージ２に対する問い合わせの結果、Ｗｒｉｔｅ禁止状態であった場合（ステップＳ３４のＮｏ判定）、任意の時間待機した後に、ステップＳ３１から再び処理を実行する。
【０１３４】
（ステップＳ３６）
ホスト１のＷｒｉｔｅ禁止確認部１６は、ステップＳ３３におけるストレージ２に対する問い合わせの結果、Ｗｒｉｔｅ許可状態であった場合（ステップＳ３４のＹｅｓ判定）、ストレージ状態テーブル１２に記録されたストレージ２の状態情報をＷｒｉｔｅ許可状態に更新して処理手順を終了する。
【０１３５】
上記ステップＳ３１からＳ３６までの処理を行い、ホスト１においてＷｒｉｔｅ禁止確認部１６による、事前に指定されたストレージ２におけるＷｒｉｔｅ禁止状態からＷｒｉｔｅ許可状態への移行を検出する動作が完了する。また、上記ステップＳ３１からＳ３６までの処理は、ストレージ２のＷｒｉｔｅ禁止状態を契機に開始する以外に、ホスト１に接続された各ストレージ２に対して、常時実行する形でもよい。
【０１３６】
＜ストレージでのアクセス処理実行＞
図１１は、図１乃至図７を参照して説明した本実施形態の動作の一例（アクセス処理を実行時の動作）を説明する流れ図である。図１１には、図３を参照して説明したストレージ２においてホスト１からのアクセス要求に対して、アクセス処理を実行して応答を返す手順が例示されている。図１１を参照して、ストレージ２におけるアクセス処理実行時の動作を説明する。
【０１３７】
（ステップＳ４１）
ストレージ２のアクセス変換部２２は、ホスト１からストレージ２に対するアクセス要求を受け取り、アクセス変換部２２内のアクセス要求テーブル２２１に登録する。
【０１３８】
（ステップＳ４２）
ストレージ２のアクセスフィルタ部２３は、Ｗｒｉｔｅ許可変更部２７からストレージ２のＷｒｉｔｅ禁止状態を取得する。
【０１３９】
（ステップＳ４３）
ストレージ２のアクセスフィルタ部２３は、
ステップＳ４１にてアクセス変換部２２が受けたアクセス要求がＷｒｉｔｅであり、且つ、ストレージ２がＷｒｉｔｅ禁止状態であるか否か、
を判断する。
【０１４０】
（ステップＳ４４）
ステップＳ４１にてアクセス変換部２２が受けたアクセス要求がＷｒｉｔｅであり、且つ、ストレージ２がＷｒｉｔｅ禁止状態である場合（ステップＳ４３のＹｅｓ判定）、ストレージ２のアクセス変換部２２は、アクセス要求テーブル２２１から登録したアクセス要求を削除し、正常終了ではないことを示すエラー情報（エラー又はアクセス要求未実行の情報）を、応答としてホスト１に通知して、処理手順を終了する。
【０１４１】
（ステップＳ４５）
ステップＳ４１にて、アクセス変換部２２が受けたアクセス要求がＲｅａｄであるか、又は、ストレージ２がＷｒｉｔｅ許可状態である場合（ステップＳ４３のＮｏ判定）、ストレージ２のアクセス変換部２２は、アクセス要求を解釈して、記憶デバイス２１に対する１個以上のアクセスコマンドに変換してコマンドキュー２４に格納する。また、アクセス変換部２２は、アクセス要求テーブル２２１に、アクセスコマンドを、ホスト１からのアクセス要求に対応するコマンドとして登録する。
【０１４２】
（ステップＳ４６）
ストレージ２のコマンド発行部２５は、コマンドキュー２４に登録されたアクセスコマンドに対応するアクセスを、各記憶デバイス２１に対して発行する。
【０１４３】
（ステップＳ４７）
ストレージ２のコマンド発行部２５は、ステップＳ４６において記憶デバイス２１に対して発行したアクセスの結果を、アクセス変換部２２に通知して、該アクセスコマンドの情報を、コマンドキュー２４から削除する。
【０１４４】
（ステップＳ４８）
ストレージ２のアクセス変換部２２は、ホスト１からのアクセス要求について、アクセス要求テーブル２２１を参照して、対応する全てのアクセスコマンドについて完了を確認すると、ステップＳ４７で通知されたアクセス結果から、ホスト１に対して、アクセス要求の結果を応答として送信する。アクセス要求がＲｅａｄの場合、アクセス変換部２２は、読み出しデータをホスト１に送信する。
【０１４５】
（ステップＳ４９）
ストレージ２のアクセス変換部２２は、アクセス要求テーブル２２１に対して、ステップＳ４８で応答したホスト１からのアクセス要求に関する情報を削除し、処理手順を終了する。
【０１４６】
上記ステップＳ４１からＳ４９までの処理を行い、ストレージ２においてホスト１からのアクセス要求に対して、アクセス処理を実行して応答を返す動作が完了する。
【０１４７】
なお、上記ステップＳ４１における、アクセス要求テーブル２２１に対するアクセス要求の登録は、上記ステップＳ４５の処理の直前に行っても良い。このようにした場合、上記ステップＳ４４において、アクセス変換部２２によるアクセス要求テーブル２２１から登録したアクセス要求を削除する処理を省略することができる。
【０１４８】
＜ストレージでの応答遅延を検出時のエラー応答＞
図１２は、図１乃至図７を参照して説明した本実施形態の動作の一例（応答遅延を検出時のエラー情報を応答）を説明する流れ図である。図１２には、図３を参照して説明したストレージ２が内部の応答遅延を検出してＷｒｉｔｅ禁止状態に移行し、ホスト１に対してアクセス要求に対するエラー情報（エラーコード又はアクセス未実行の旨）を通知する手順を説明する。図１２を参照して、図３のストレージ２が応答遅延を検出時のエラー情報応答をホスト１に返す手順を説明する。
【０１４９】
（ステップＳ５１）
ストレージ２の負荷判定部２６は、コマンドキュー２４に格納されたアクセスコマンド、及び、コマンド発行部２５にて実行中のアクセスコマンドを参照して、ストレージ２内部の負荷を計算する。
【０１５０】
（ステップＳ５２）
ストレージ２のＷｒｉｔｅ許可変更部２７は、ステップＳ５１で行われた負荷判定部２６による負荷の計算結果から、応答遅延が発生しているか否か判定する。
【０１５１】
（ステップＳ５３）
ストレージ２のＷｒｉｔｅ許可変更部２７は、応答遅延状態ではないと判定した場合（ステップＳ５２のＹｅｓ判定）、ストレージ２をＷｒｉｔｅ許可状態に設定して処理手順を終了する。
【０１５２】
（ステップＳ５４）
ストレージ２のＷｒｉｔｅ許可変更部２７は、ステップＳ５１で行われた負荷判定部２６による負荷の計算結果から、応答遅延状態（応答遅延が発生している）と判定した場合（ステップＳ５２のＮｏ判定）、ストレージ２をＷｒｉｔｅ禁止状態に設定する。
【０１５３】
（ステップＳ５５）
ストレージ２のコマンド中断部２８は、Ｗｒｉｔｅ許可変更部２７から、ストレージ２がＷｒｉｔｅ禁止状態であることの検出に応答して、
（Ａ）コマンドキュー２４に格納されたストレージ２１に対するアクセスコマンド、及び、
（Ｂ）コマンド発行部２５において、ストレージ２１に対して実行中のアクセスコマンド、
から、中断の対象となる、記憶デバイス２１に対するアクセスコマンドを選択する。
コマンド中断部２８では、例えば、記憶デバイス２１に対するＷｒｉｔｅアクセスコマンド、消去コマンドを優先的に中断対象とする。ホスト１からのＷｒｉｔｅアクセス要求に関連しないＲｅａｄアクセスコマンドは、基本的に、コマンド中断部２８によるコマンド中断対象とはならない。コマンド中断部２８は、例えばホスト１からのＲｅａｄアクセス要求をアクセス変換部２２で変換したＲｅａｄアクセスコマンドについては、Ｗｒｉｔｅ禁止状態の検出時に、Ｒｅａｄアクセスコマンドがコマンドキュー２４で待機中の場合、当該Ｒｅａｄアクセスコマンドを中断対象から外し、コマンド発行部２５で実行中である場合にも、中断しない構成とされる（ただし、例えば高負荷の解消、性能向上を図るため、コマンド中断部２８において、当該Ｒｅａｄアクセスコマンドを中断するように構成してもよいことは勿論である）。
【０１５４】
（ステップＳ５６）
ストレージ２のコマンド中断部２８は、ステップＳ５５にて中断の対象として選択した、コマンド発行部２５において実行中のアクセスコマンドの中断を指示する。コマンドキュー２４に格納された中断対象のアクセスコマンドと共に、アクセス変換部２２に対してコマンドの実行中断を通知する。
【０１５５】
（ステップＳ５７）
ストレージ２のコマンド中断部２８は、ステップＳ５６において中断されたアクセスコマンドの情報を、コマンドキュー２４、またはコマンド発行部２５から削除する。
【０１５６】
（ステップＳ５８）
ストレージ２のアクセス変換部２２は、アクセス要求テーブル２２１を参照して、中断されたアクセスコマンドに対応する、ホスト１からのアクセス要求に対して、エラー、又は未実行であることを示す応答を行って処理手順を終了する。
【０１５７】
上記ステップＳ５１からＳ５８までの処理を行い、ストレージ２内部の応答遅延を検出してＷｒｉｔｅ禁止状態に移行してホスト１に対してアクセス要求に対するエラー又は未実行を通知する動作を終了する。
【０１５８】
なお、上記ステップＳ５７、及びＳ５８は、並列、又は順序を入れ替えて実行してもよい。また、上記ステップＳ５５における、中断対象のアクセスコマンドの選択の仕方は、特に限定されない。例えば記憶デバイス２１が、ＮＡＮＤフラッシュメモリを用いたＳＳＤである場合のように、ホスト１からのＷｒｉｔｅアクセス要求において、特に、ストレージ内部が高負荷となるＷｒｉｔｅアクセス要求に対する処理のアクセスコマンドのみを選択的に中断するようにしてもよい。なお、記憶デバイス２１に対するＷｒｉｔｅアクセスコマンドを中断する場合、アクセス最小単位（ＳＳＤの場合、ページ単位）のＷｒｉｔｅアクセスを完了した上で、Ｗｒｉｔｅアクセスコマンドを中断するようにしてもよい。
【０１５９】
また、上記ステップＳ５５におけるコマンド中断部２８は、コマンドキュー２４に格納された実行待ち状態、又は、コマンド発行部２５による実行中の記憶デバイス２１に対するアクセスコマンドから直接中止の対象となるアクセスコマンドを選択しているが、アクセス変換部２２のアクセス要求テーブル２２１を参照して、中断の対象となるホスト１からのアクセス要求を選択し、該アクセス要求に対応するアクセスコマンドをステップＳ５６で中断する処理手順であってもよい。
【０１６０】
＜実施例＞
前記した実施形態の作用効果の例として、ＳＳＤからなるストレージ２がホスト１からのアクセス要求によって高負荷となり、Ｗｒｉｔｅ禁止状態となった場合の動作の例を説明する。なお、本実施例では、図１の代替ストレージ３は、図３を参照して説明したストレージ２とは異なる。代替ストレージ３は、記憶デバイスとして、ＳＳＤを備えていず、例えばＨＤＤを有し、常にＷｒｉｔｅアクセスが成功するストレージであるものとする。本実施例では、説明を容易とするため、図１において、ホスト１に対して、ストレージ（ＳＳＤ）２と、及び、代替ストレージ３が１台ずつ接続されているものとする。
【０１６１】
ストレージ（ＳＳＤ）２の記憶デバイスであるＮＡＮＤフラッシュメモリについて、Ｒｅａｄ及びＷｒｉｔｅの最小単位であるページサイズを４ＫＢ（Kilo-Byte）（１ワード線に４ＫＢ相当のセルが接続される）、消去の最小単位であるブロックを６４ページとする。つまりブロックサイズは、２５６ＫＢであるものとする。また、１ページあたりのＲｅａｄ、Ｗｒｉｔｅ時間を、それぞれ２００μｓｅｃ(microsecond)、４００μsｅｃ、１ブロックの消去時間を３ｍｓｅｃ（millisecond）とする。ストレージ（ＳＳＤ）２がホスト１に対して提供する記憶領域の空間は、記憶デバイスであるＮＡＮＤフラッシュメモリの先頭アドレスから順番に割り当てられており、ストレージ（ＳＳＤ）２のアドレス空間における４ＫＢ毎、２５６ＫＢ毎の領域がそれぞれＮＡＮＤフラッシュメモリのページ、ブロックに対応するものとする。
【０１６２】
ストレージ（ＳＳＤ）２では、内部のコマンドキュー（図３の２４）における待ち時間が４００ｍｓｅｃを上回った時点で、応答遅延が発生しているものと判断し、Ｗｒｉｔｅ禁止状態に移行して、ホスト１からのアクセス要求に対応した、記憶デバイスに発行するアクセスコマンドの中断処理を行う。そして、ストレージ（ＳＳＤ）２は、ストレージ（ＳＳＤ）２におけるＷｒｉｔｅ禁止状態は、コマンドキュー（図３の２４）における待ち時間が４００ｍｓｅｃを下回った時点で解除してＷｒｉｔｅ許可状態に移行するものとする。
【０１６３】
はじめに、この実施例における初期状態について説明する。この実施例において、ホスト１上で動作するプログラムに対する記憶領域のアドレス空間は、ストレージ（ＳＳＤ）２の先頭アドレスから順番にマッピングされた状態である。なお、マッピングの変更は４ＫＢ単位で実行する。ストレージ（ＳＳＤ）２の各ページは有効、無効を問わず、何らかのデータが書き込まれた状態であり、データを格納する際に、ブロックに対する消去処理が必要になるものとする。また、ストレージ（ＳＳＤ）２は、初期状態では、アクセス要求を受けていず、ストレージ（ＳＳＤ）２の処理負荷は無負荷状態であるものとする。
【０１６４】
本実施例では、ホスト１上で動作するプログラムから、図１３で示したアクセス要求を順番にストレージ２に発行する。なお、図１３のアクセス要求一覧表１４１は、ホスト１がストレージ２に対して発行するアクセスを管理するテーブルである。アクセス要求一覧表１４１におけるアクセス要求のアドレスは、アクセス対象のデータの格納先の論理アドレスを表しており、アクセス要求のサイズはアクセス対象のデータのサイズを表している。特に制限されないが、アクセス要求のアドレス、サイズは、例えば４ＫＢを単位として表している（例えばアクセスサイズが１と表されるアクセス要求のサイズは４ＫＢである）。アクセス要求一覧表１４１は、例えばホスト１内の記憶部に記憶される。ホスト１のアクセス要求部１５は、アクセス要求一覧表１４１のアクセス要求に対してマッピング部１３でストレージ２のアドレス（ページアドレス）に変換してストレージ（ＳＳＤ）２に発行する。
【０１６５】
すなわち、ホスト１は、図１３のアクセス要求一覧表１４１のＩＤ＝１のＲｅａｄアクセス要求を、ストレージ（ＳＳＤ）２に対して発行する。記憶領域は、ストレージ（ＳＳＤ）２の先頭アドレスから、順番にマッピングされた状態であるため、ＩＤ＝１のＲｅａｄアクセス要求は、ストレージ（ＳＳＤ）２に対するアドレス：０ｘ０００００１００の８ＫＢのＲｅａｄアクセス要求となる。ストレージ（ＳＳＤ）２は、無負荷であるため、ＮＡＮＤフラッシュメモリに対する８ＫＢ（２ページ分）のＲｅａｄ処理が、即座に行われる。
【０１６６】
次に、ＩＤ＝１のＲｅａｄアクセス要求の直後に、ホスト１から、図１３のアクセス要求一覧表１４１におけるＩＤ＝２からＩＤ＝１１までのＷｒｉｔｅアクセス要求がストレージ（ＳＳＤ）２に対して発行される。記憶領域は、ストレージ（ＳＳＤ）２の先頭アドレスから順番にマッピングされた状態であることから、ＩＤ＝２からＩＤ＝１１のＷｒｉｔｅアクセス要求は、ストレージ（ＳＳＤ）２に対する４ＫＢのＷｒｉｔｅアクセス要求となる。これらのＷｒｉｔｅアクセス要求は、ストレージ（ＳＳＤ）２の記憶デバイス２１（ＮＡＮＤフラッシュメモリ）に対するアクセスコマンドに変換される。
【０１６７】
ストレージ（ＳＳＤ）２の記憶デバイス２１（ＮＡＮＤフラッシュメモリ）において、格納されたデータの更新に対してブロックの消去が必要である。このため、例えば図１３のアクセス要求一覧表１４１におけるＩＤ＝２のホストからのＷｒｉｔｅアクセス要求は、記憶デバイス２１（ＮＡＮＤフラッシュメモリ）に対する、図１４のコマンドキュー２４に示した複数のアクセスコマンド（連続する３のアクセスコマンドＲｅａｄ、Ｅｒａｓｅ、Ｗｒｉｔｅ）に変換される。
【０１６８】
記憶デバイス２１（ＮＡＮＤフラッシュメモリ）の当該ブロック内のページ退避処理が加わることで、ホスト１からのＩＤ＝２のＷｒｉｔｅアクセス要求は、
（イ）ページの退避を行うＲｅａｄアクセスコマンド６３個（図１４のＩＤ１〜ＩＤ６３）、
（ロ）ブロックのＥｒａｓｅコマンド１個（図１４のＩＤ６４）、及び、
（ハ）Ｗｒｉｔｅアクセス要求で指定されたＷｒｉｔｅデータの格納、及び、退避していたページのデータ書き戻しを行うＷｒｉｔｅアクセスコマンド６４個（図１４のＩＤ６５〜ＩＤ１２８）、
に変換される。
【０１６９】
これらのアクセスコマンドに対する記憶デバイス２１（ＮＡＮＤフラッシュメモリ）の処理時間は、合計、
２００×６３＋３×１０００＋４００×６４＝４１２００μｓｅｃ（＝４１．２ｍｓｅｃ）
である。
【０１７０】
上記合計待ち時間は、図３のストレージ２において、ストレージ２の負荷判定部２６（図３）で計算する。図１３のＩＤ＝３からＩＤ＝１１のＷｒｉｔｅアクセス要求についても、記憶デバイス２１（ＮＡＮＤフラッシュメモリ）に対する同様のアクセスコマンドに変換されることから、図１３のＩＤ＝１１のＷｒｉｔｅアクセス要求を行った時点で、ストレージ（ＳＳＤ）２のコマンドキュー２４における合計待ち時間は、
４１．２ｍｓｅｃ×１０＝４１２ｍｓｅｃ
となる。この値も、ストレージ２の負荷判定部２６で計算する。
【０１７１】
ストレージ（ＳＳＤ）２は、ＩＤ＝１１のＷｒｉｔｅアクセス要求を受け取り、記憶デバイス２１（ＮＡＮＤフラッシュメモリ）に対するアクセスコマンドへの変換を行った時点で、負荷判定部２６からの合計待ち時間を受け取ったＷｒｉｔｅ許可変更部２７は、応答遅延が発生しているものと判断し、Ｗｒｉｔｅ禁止状態に移行する。
【０１７２】
また、ストレージ（ＳＳＤ）２は、応答遅延を解消するために、コマンド中断部２８により、図１３のＩＤ＝２からＩＤ＝１１のＷｒｉｔｅアクセス要求に対応するアクセスコマンドの中断処理を開始する。これによって、ホスト１が、図１３のＩＤ＝２からＩＤ＝１１のＷｒｉｔｅアクセス要求をストレージ（ＳＳＤ）２に対して発行すると、ストレージ（ＳＳＤ）２のアクセス変換部２２（図３）からホスト１に対してエラー応答が返される。
【０１７３】
ストレージ（ＳＳＤ）２からのエラー応答を受信したホスト１は、マッピングテーブル１１（図２）を変更し、図１３のＩＤ＝２からＩＤ＝１１のＷｒｉｔｅアクセス要求に関して、Ｗｒｉｔｅ先のストレージを、代替ストレージ３に変更し、代替ストレージ３に対してＷｒｉｔｅアクセス要求を行う。
【０１７４】
その結果、図１３のＩＤ＝２からＩＤ＝１１のＷｒｉｔｅアクセス要求のデータは、代替ストレージ３に格納され、Ｗｒｉｔｅアクセスの完了後、ホスト１におけるマッピングテーブル１１は、図１５に示した状態となる。図１５では、マッピングテーブル１１のうち、マッピングが代替ストレージ３に変更された領域のみを表している（ストレージＩＤの「３」は代替ストレージ３を表している）。
【０１７５】
ストレージ（ＳＳＤ）２では、記憶デバイス２１（ＮＡＮＤフラッシュメモリ）に対するアクセスコマンドの処理が中断されたことで、後続のアクセス要求に対する応答遅延が解消される。よって、本実施例によれば、ＳＳＤの高負荷状態による応答遅延、一時停止を解消し、また未然に回避することができる。
【０１７６】
ストレージ（ＳＳＤ）２がＷｒｉｔｅ禁止状態に移行した後に、ホスト１から、ストレージ（ＳＳＤ）２の記憶領域に対して、ＩＤ＝１２のＲｅａｄアクセス要求が行われた場合、ストレージ（ＳＳＤ）２に対するアドレス０ｘ００００１０００の１６ＫＢのＲｅａｄアクセス要求となる。ストレージ（ＳＳＤ）２において、Ｒｅａｄアクセス要求は、記憶デバイス２１（ＮＡＮＤフラッシュメモリ）に対する１６ＫＢ（４ページ分）のＲｅａｄアクセスコマンドに変換される。ストレージ（ＳＳＤ）２において、図１３のＩＤ＝２からＩＤ＝１１のＷｒｉｔｅアクセス要求に対応したアクセスコマンドは実行されない。このため、図１３のＩＤ＝１２のＲｅａｄアクセス要求に対応した、記憶デバイス２１（ＮＡＮＤフラッシュメモリ）に対するＲｅａｄアクセスコマンドは、記憶デバイス２１（ＮＡＮＤフラッシュメモリ）において、４１２ｍｓｅｃの待ち時間を伴わずに、直ちに実行される。
【０１７７】
上記実施例では、ストレージ２として、ＨＤＤ等のディスクドライブのインタフェースに対応し、ストレージ内にコントローラを備えたＮＡＮＤフラッシュメモリを備えたＳＳＤを用いた例に即して説明したが、本発明において、ストレージとしては、上記したＳＳＤに制限されるものでないことは勿論である。例えば、分類の仕方によっては必ずしもＳＳＤには属さない一括消去型不揮発性半導体メモリを備えたストレージ（例えばＵＳＢ（Universal Serial Bus）メモリやメモリカード）等にも適用可能である。上記したように、本発明は、ＳＳＤ等一括消去型不揮発性半導体メモリを備えたストレージ（記憶媒体）に適用して好適とされるが、本発明は、かかるストレージへの適用に制限されるものでなく、例えばＨＤＤと同様の任意の記憶媒体等にも適用可能であることは勿論である。
【０１７８】
なお、上記実施形態では、コントローラ（図３のストレージ制御装置２９）をストレージ内に備えた例に即して説明したが、コントローラ（図３のストレージ制御装置２９）の少なくとも一部を、ストレージ２とは別のノード、例えばホスト１（プロセッサ、計算機）側に備えた構成としてもよい。あるいは、コントローラ（図３のストレージ制御装置２９）を記憶デバイス（図３の２１）内に実装するようにしてもよい。
【０１７９】
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各付記の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ乃至選択が可能である。また数値等は、上記した例に制限されるものでないことは勿論である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【０１８０】
上記した実施形態、実施例は、特に制限されないが、例えば以下のように付記される。
【０１８１】
（付記１）
ホストからのアクセス要求を記憶デバイスへのアクセス用に変換したアクセスコマンドを一旦保持するコマンドキューと、
前記コマンドキューでのアクセスコマンドのキューイング状況を分析し、前記記憶デバイスへの書き込みを禁止とすべきか否かを判断する第１の手段と、
書き込み禁止の場合、前記ホストからのアクセス要求に対してエラー応答を返す第２の手段と、
を含む、ことを特徴とするストレージ装置。
【０１８２】
（付記２）
前記第１の手段が、前記コマンドキューで待機中のアクセスコマンド、及び、アクセス実行中のアクセスコマンドの数及びその内容の少なくとも一方に基づき、負荷を判定する負荷判定手段と、
前記負荷が、所定の閾値を超えている場合、前記記憶デバイスへの書き込みを禁止とする書き込み許可変更手段と、
を含む、ことを特徴とする付記１記載のストレージ装置。
【０１８３】
（付記３）
前記第１の手段が前記記憶デバイスへの書き込み禁止と判断すると、前記コマンドキューにキューイングされているアクセスコマンドの少なくとも一部を中断するコマンド中断手段をさらに含む、ことを特徴とする付記１又は２記載のストレージ装置。
【０１８４】
（付記４）
前記コマンド中断手段は、前記第１の手段が前記記憶デバイスへの書き込み禁止と判断すると、前記記憶デバイスに対してアクセス実行中のアクセスコマンドも中断する、ことを特徴とする付記３記載のストレージ装置。
【０１８５】
（付記５）
前記ホストからのアクセス要求を前記記憶デバイスに発行するアクセスコマンドに変換して前記コマンドキューに格納するアクセス変換手段をさらに含む、ことを特徴とする付記１乃至４のいずれかに記載のストレージ装置。
【０１８６】
（付記６）
前記第２の手段は、書き込み禁止の場合、前記ホストからの書き込み要求、及び、前記ホストからの問い合わせに対して、書き込み禁止のエラー応答を返す、ことを特徴とする付記１乃至５のいずれかに記載のストレージ装置。
【０１８７】
（付記７）
書き込み禁止の場合に、前記ホストから書き込み要求を受けると、前記書き込み要求に対するアクセスコマンドを前記コマンドキューに格納することなく、前記エラー応答を返すか、前記書き込み要求を廃棄するように制御する手段をさらに含む、ことを特徴とする付記１乃至６のいずれかに記載のストレージ装置。
【０１８８】
（付記８）
書き込み禁止の状態において、前記ホストからの読み出し要求に対するアクセス処理は継続して行う、ことを特徴とする付記１乃至７のいずれかに記載のストレージ装置。
【０１８９】
（付記９）
前記コマンド中断手段は、書き込み禁止の状態において、読み出し要求に対応するアクセスコマンドに関して、前記コマンドキューにキューイングされているアクセスコマンドは残し、実行中のアクセスコマンドは中断せずに実行を継続する、ことを特徴とする付記３記載のストレージ装置。
【０１９０】
（付記１０）
前記記憶デバイスは、ブロック単位に一括消去される不揮発性半導体装置を含む、ことを特徴とする付記１乃至９のいずれかに記載のストレージ装置。
【０１９１】
（付記１１）
付記１乃至１０のいずれかに記載のストレージ装置を少なくとも１つ備え、
さらに、ホストを備え、
前記ホストは、前記ストレージ装置へのアクセス要求に対してエラー応答を受けると、前記ストレージ装置に対して前記アクセス要求を再発行するか、別のストレージ装置に対して前記アクセス要求を発行する、ことを特徴とする情報処理システム。
【０１９２】
（付記１２）
前記ホストは、前記ストレージ装置に対して書き込み禁止状態であるか否かを問い合わせる手段を備えたことを特徴とする付記１１記載の情報処理システム。
【０１９３】
（付記１３）
前記ホストは、前記エラー応答を受けとった前記ストレージ装置に対して、読み出しアクセス要求を選択的に再発行し、書き込みアクセス要求を、他のストレージ装置に発行することを特徴とする付記１１又は１２記載の情報処理システム。
【０１９４】
（付記１４）
前記ホストは、前記ストレージ装置から前記エラー応答を受け取ると、前記ストレージ装置は障害ではなく、書き込み禁止と判断して、後続の読み出しアクセス要求を、前記ストレージ装置に発行することを特徴とする付記１１又は１２記載の情報処理システム。
【０１９５】
（付記１５）
少なくとも１つのストレージ装置と、
ホストと、
を備え、
前記ホストは、前記ストレージ装置へのアクセス要求に対してエラー応答を受けると、前記ストレージ装置に対して前記アクセス要求を再発行するか、別のストレージ装置に対して前記アクセス要求を発行する、情報処理システム。
【０１９６】
（付記１６）
ホストからのアクセス要求を記憶デバイスへのアクセス用に変換したアクセスコマンドを一旦保持するコマンドキューにおける前記アクセスコマンドのキューイング状況を分析し、前記記憶デバイスへの書き込みを禁止とすべきか否かを判断し、
書き込み禁止の場合、前記ホストからのアクセス要求に対してエラー応答を返す、ことを特徴とするストレージ制御方法。
【０１９７】
（付記１７）
前記コマンドキューで待機中のアクセスコマンド、及び、アクセス実行中のアクセスコマンドの数及びその内容の少なくとも一方に基づき、負荷を判定し、
前記負荷が、所定の閾値を超えている場合、前記記憶デバイスへの書き込みを禁止とする、ことを特徴とする付記１６記載のストレージ制御方法。
【０１９８】
（付記１８）
前記記憶デバイスへの書き込み禁止と判断すると、前記コマンドキューにキューイングされているアクセスコマンドの少なくとも一部をクリアし、対応するアクセスコマンドを中断する、ことを特徴とする付記１６又は１７記載のストレージ制御方法。
【０１９９】
（付記１９）
前記記憶デバイスへの書き込み禁止の判別結果に応じて、その時点で前記記憶デバイスに発行するアクセスを実行中のアクセスコマンドも中断する、ことを特徴とする付記１８記載のストレージ制御方法。
【０２００】
（付記２０）
前記ホストからのアクセス要求を受け、前記記憶デバイスに発行するアクセスコマンドに変換して前記コマンドキューに格納する、ことを特徴とする付記１６乃至１９のいずれかに記載のストレージ制御方法。
【０２０１】
（付記２１）
前記記憶デバイスへの書き込みが禁止の場合、前記ホストからのアクセス要求又は問い合わせに対する応答として、前記エラー情報を返す、ことを特徴とする付記１６乃至２０のいずれかに記載のストレージ制御方法。
【０２０２】
（付記２２）
前記ホストから書き込み要求を受けると、前記記憶デバイスへの書き込みが禁止の状態にある場合、前記書き込み要求に対するアクセスコマンドを前記コマンドキューに格納することなく、エラー情報を返すか、前記書き込み要求を廃棄するように制御する、ことを特徴とする付記１６乃至２１のいずれかに記載のストレージ制御方法。
【０２０３】
（付記２３）
前記記憶デバイスへの書き込みが禁止の状態において、ホストからの読み出し要求に対するアクセス処理は継続して行う、ことを特徴とする付記１６乃至２２のいずれかに記載のストレージ制御方法。
【０２０４】
（付記２４）
前記記憶デバイスへの書き込みが禁止の状態において、前記コマンドキューにキューイングされている、読み出し要求に対応するアクセスコマンドはクリアせずに残す、ことを特徴とする付記１６乃至２３のいずれかに記載のストレージ制御方法。
【０２０５】
（付記２５）
前記ホストは、ストレージへのアクセス要求に対してエラー応答を受けると、前記ストレージに対して前記アクセス要求を再発行するか、別のストレージに対して前記アクセス要求を発行する、ことを特徴とする付記１６乃至２４のいずれかに記載のストレージ制御方法。
【０２０６】
（付記２６）
前記ホストは、前記ストレージに対して前記記憶デバイスへの書き込みが禁止の状態であるか否かを問い合わせる、ことを特徴とする付記２５記載のストレージ制御方法。
【０２０７】
（付記２７）
前記ホストは、前記エラー応答を受けとったストレージ装置に対して、読み出しアクセス要求を選択的に再発行し、書き込みアクセス要求を、他のストレージ装置に発行する、ことを特徴とする付記１６乃至２６のいずれかに記載のストレージ制御方法。
【０２０８】
（付記２８）
前記ホストは、前記ストレージから前記エラー応答を受け取ると、前記ストレージは障害ではなく、書き込み禁止と判断して、後続の読み出しアクセス要求を、前記ストレージに発行する、ことを特徴とする付記１６乃至２６のいずれかに記載のストレージ制御方法。
【０２０９】
（付記２９）
ホストに接続されるストレージを構成するコンピュータに、
ホストからのアクセス要求を記憶デバイスへのアクセス用に変換したアクセスコマンドを一旦保持するコマンドキューにおける前記アクセスコマンドのキューイング状況を分析し、前記記憶デバイスへの書き込みを禁止とすべきか否かを判断する第１の処理と、
書き込み禁止の場合、前記ホストからのアクセス要求に対してエラー応答を返す第２の処理と、
を実行させるプログラム。
【０２１０】
（付記３０）
前記第１の処理が、前記コマンドキューで待機中のアクセスコマンド、及び、アクセス実行中のアクセスコマンドの数及びその内容の少なくとも一方に基づき、負荷を判定する負荷判定処理と、
前記負荷が、所定の閾値を超えている場合、前記記憶デバイスへの書き込みを禁止とする書き込み許可変更処理と、
を含む、ことを特徴とする付記２９記載のプログラム。
【０２１１】
（付記３１）
前記第１の処理が前記記憶デバイスへの書き込み禁止と判断すると、前記コマンドキューにキューイングされているアクセスコマンドの少なくとも一部をクリアしアクセスコマンドを中断するコマンド中断処理を前記コンピュータに実行させる付記２９又は３０記載のプログラム。
【０２１２】
（付記３２）
前記コマンド中断処理は、前記第１の手段が前記記憶デバイスへの書き込み禁止と判断すると、前記記憶デバイスに対してアクセス実行中のアクセスコマンドも中断する、ことを特徴とする付記３１記載のプログラム。
【０２１３】
（付記３３）
前記ホストからのアクセス要求を前記記憶デバイスに発行するアクセスコマンドに変換して前記コマンドキューに格納するアクセス変換処理を、前記コンピュータに実行させる付記２９乃至３２のいずれかに記載のプログラム。
【０２１４】
（付記３４）
前記第２の処理は、書き込み禁止の場合、前記ホストからの書き込み要求、及び、前記ホストからの問い合わせに対して、書き込み禁止のエラー応答を返す処理を、前記コンピュータに実行させる付記２９乃至３３のいずれかに記載のプログラム。
【０２１５】
（付記３５）
前記記憶デバイスへの書き込みが禁止の場合に、前記ホストから書き込み要求を受けると、前記書き込み要求に対するアクセスコマンドを前記コマンドキューに格納することなく、前記エラー応答を返すか、前記書き込み要求を廃棄するように制御する処理を、前記コンピュータに実行させる付記３０乃至３４のいずれかに記載のプログラム。
【０２１６】
（付記３６）
前記記憶デバイスへの書き込みが禁止の状態において、前記ホストからの読み出し要求に対するアクセス処理は継続して行う前記コンピュータに実行させる付記３０乃至３５のいずれかに記載のプログラム。
【０２１７】
（付記３７）
前記コマンド中断処理は、前記記憶デバイスへの書き込みが禁止の状態において、読み出し要求に対応するアクセスコマンドに関して、前記コマンドキューにキューイングされているアクセスコマンドは残し、実行中のアクセスコマンドは中断せずに実行を継続する、付記３２記載のプログラム。
【０２１８】
（付記３８）
ストレージ装置へのアクセス要求に対して、書き込み禁止状態の前記ストレージ装置からエラー応答を受けると、前記ストレージ装置に対して前記アクセス要求を再発行するか、別のストレージ装置に対して前記アクセス要求を発行する処理を、ホストを構成するコンピュータに実行させるプログラム。
【０２１９】
（付記３９）
前記エラー応答を受けとったストレージ装置に対して、読み出しアクセス要求を選択的に再発行し、書き込みアクセス要求を、他のストレージ装置に発行する処理を、前記ホストを構成する前記コンピュータに実行させる付記３８記載のプログラム。
【０２２０】
（付記４０）
前記ストレージ装置から前記エラー応答を受け取ると、前記ストレージ装置は障害ではなく、書き込み禁止と判断して、後続の読み出しアクセス要求を、前記ストレージに発行する処理を、前記ホストを構成する前記コンピュータに実行させる付記３８記載のプログラム。
【符号の説明】
【０２２１】
１  ホスト
２  ストレージ（ＳＳＤ）
３  代替ストレージ
１１  マッピングテーブル
１２  ストレージ状態テーブル
１３  マッピング部
１４  アクセス要求再発行部
１５  アクセス要求部
１６  Ｗｒｉｔｅ禁止確認部
２１  記憶デバイス
２２  アクセス変換部
２２１  アクセス要求テーブル
２３  アクセスフィルタ部
２４  コマンドキュー
２５  コマンド発行部
２６  負荷判定部
２７  Ｗｒｉｔｅ許可変更部
２８  コマンド中断部
２９  ストレージ制御装置
１３１  ホスト
１４１  アクセス要求一覧表
２００  ストレージ装置
２０１  記憶デバイス
２０２  コマンドキュー
２０３  第１の手段（第１のユニット）
２０４  第２の手段（第２のユニット）
２０５  負荷判定手段（負荷判定ユニット）
２０６  書き込み許可変更手段（書き込み許可変更ユニット）
２０７  コマンド中断手段（コマンド中断ユニット）
【図１】
2015170702.tif 000003
【図２】
2015170702.tif 000004
【図３】
2015170702.tif 000005
【図４】
2015170702.tif 000006
【図５】
2015170702.tif 000007
【図６】
2015170702.tif 000008
【図７】
2015170702.tif 000009
【図８】
2015170702.tif 000010
【図９】
2015170702.tif 000011
【図１０】
2015170702.tif 000012
【図１１】
2015170702.tif 000013
【図１２】
2015170702.tif 000014
【図１３】
2015170702.tif 000015
【図１４】
2015170702.tif 000016
【図１５】
2015170702.tif 000017
【図１６】
2015170702.tif 000018
【図１７】
2015170702.tif 000019
【手続補正書】
【提出日】平成27年10月9日(2015.10.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホストからのアクセス要求を記憶デバイスへのアクセスコマンドに変換するアクセス変換手段と、
変換された前記アクセスコマンドを一旦保持するコマンドキューと、
前記コマンドキューに保持されている、待機中又は待機中と実行中のアクセスコマンドについて、
アクセスコマンドの数と、
各アクセスコマンドの内容であるアクセス種別、記憶デバイスＩＤ、アクセス先アドレス、アクセスデータ長の少なくとも一つの分析結果に基づき、処理の負荷量、及び／又は、前記コマンドキューにおける合計待ち時間を算出する負荷判定手段と、
前記負荷量又は前記合計待ち時間が予め定められた所定の閾値を超えている場合、前記記憶デバイスへの書き込みを禁止とする書き込み許可変更手段と、
前記アクセス変換手段が前記ホストから受けたアクセス要求に対して、前記書き込み許可変更手段から前記記憶デバイスの書き込み禁止状態を取得し、前記記憶デバイスの書き込み禁止である場合、前記ホストからの読み出し以外の前記アクセス要求に対する応答として、エラー応答を返すように前記アクセス変換手段に対して指示するアクセスフィルタ手段と、
を含み、
前記アクセス変換手段は、前記アクセスフィルタ手段からの指示を受け、前記アクセス要求に対するエラー応答として、前記アクセス要求が正常に終了していないこと前記ホストに伝える、ことを特徴とするストレージ装置。
【請求項２】
（削除）
【請求項３】
前記書き込み許可変更手段が前記記憶デバイスへの書き込み禁止と判断すると、前記コマンドキューに保持されているアクセスコマンドのうち少なくとも一部のアクセスコマンドをクリアし、前記少なくとも一部のアクセスコマンドを中断するコマンド中断手段をさらに含む、ことを特徴とする請求項１記載のストレージ装置。
【請求項４】
前記コマンド中断手段は、前記第１の手段が前記記憶デバイスへの書き込み禁止と判断すると、その時点でアクセス実行中のアクセスコマンドうち少なくとも一部のアクセスコマンドを中断する、ことを特徴とする請求項３記載のストレージ装置。
【請求項５】
（削除）
【請求項６】
前記アクセスフィルタ手段は、前記記憶デバイスへの書き込みが禁止の場合に、前記ホストから問い合わせを受けると、前記アクセス変換手段に指示して、書き込み禁止状態であることをエラー応答として前記ホストに返す、ことを特徴とする請求項１、３、４のいずれか１項に記載のストレージ装置。
【請求項７】
前記記憶デバイスへの書き込みが禁止の場合に、前記ホストから書き込み要求を受けると、前記書き込み要求に対するアクセスコマンドを前記コマンドキューに格納することなく、前記メッセージをエラー応答として返すか、前記書き込み要求を廃棄するように制御する手段をさらに含む、ことを特徴とする請求項１、３、４、６のいずれか１項に記載のストレージ装置。
【請求項８】
前記記憶デバイスへの書き込みが禁止の状態において、前記ホストからの読み出し要求に対する前記記憶デバイスに対する読み出し処理は継続して行う、ことを特徴とする請求項１、３、４、６、７のいずれか１項に記載のストレージ装置。
【請求項９】
前記コマンド中断手段は、前記記憶デバイスへの書き込み禁止の状態において、読み出し要求に対応するアクセスコマンドについては、
前記コマンドキューに保持されているアクセスコマンドは残し、
アクセス実行中のアクセスコマンドは、中断せずに、実行を継続する、ことを特徴とする請求項３記載のストレージ装置。
【請求項１０】
前記記憶デバイスは、ブロック単位に一括消去される不揮発性半導体装置を含む、ことを特徴とする請求項１、３、４、６、７乃至９のいずれか１項に記載のストレージ装置。
【請求項１１】
請求項１、３、４、６、７乃至１０のいずれか１項に記載のストレージ装置を少なくとも１つ備え、
さらに、ホストを備えた、ことを特徴とする情報処理システム。
【請求項１２】
前記ホストは、前記ストレージ装置へのアクセス要求に対してエラー応答を受けると、前記ストレージ装置に対して、
前記アクセス要求を再発行するか、
別のストレージ装置に対して前記アクセス要求を発行する、ことを特徴とする請求項１１記載の情報処理システム。
【請求項１３】
前記ホストは、前記ストレージ装置に対して書き込み禁止状態であるか否かを問い合わせる手段を備えた、ことを特徴とする請求項１１又は１２記載の情報処理システム。
【請求項１４】
前記ホストは、前記エラー応答を受けとった前記ストレージ装置に対して、読み出しアクセス要求を選択的に再発行し、書き込みアクセス要求を、他のストレージ装置に発行する、ことを特徴とする請求項１２又は１３記載の情報処理システム。
【請求項１５】
前記ホストは、前記ストレージ装置からエラー応答を受け取ると、書き込み禁止と判断して、読み出しアクセス要求を、前記ストレージ装置に発行する、ことを特徴とする請求項１２又は１３記載の情報処理システム。
【請求項１６】
（削除）
【請求項１７】
ホストからのアクセス要求を受け、前記アクセス要求を記憶デバイスへのアクセスコマンドに変換するアクセス変換ステップと、
変換された前記アクセスコマンドをコマンドキューで一旦保持するステップと、
前記コマンドキューに保持されている、待機中又は待機中と実行中のアクセスコマンドについて、
アクセスコマンドの数と、
各アクセスコマンドの内容であるアクセス種別、記憶デバイスＩＤ、アクセス先アドレス、アクセスデータ長の少なくとも一つの分析結果に基づき、処理の負荷量、及び／又は、前記コマンドキューにおける合計待ち時間を算出する負荷判定ステップと、
前記負荷量又は前記合計待ち時間が予め定められた所定の閾値を超えている場合、前記記憶デバイスへの書き込みを禁止とするべきか否かを判断する書き込み許可変更ステップと、
前記アクセス変換ステップが前記ホストから受けたアクセス要求に対して、前記書き込み許可変更ステップでの前記記憶デバイスの書き込み禁止状態を取得し、前記記憶デバイスが書き込み禁止である場合、前記ホストからの読み出し以外の前記アクセス要求に対する応答として、エラー応答を返すように前記アクセス変換ステップに対して指示するアクセスフィルタステップと、
を含み、
前記アクセス変換ステップでは、前記アクセスフィルタステップからの指示を受け、前記アクセス要求に対するエラー応答として、前記アクセス要求が正常に終了していないことを前記ホストに伝える、ことを特徴とするストレージ制御方法。
【請求項１８】
（削除）
【請求項１９】
前記書き込み許可変更ステップにおいて前記記憶デバイスへの書き込み禁止と判断すると、前記コマンドキューに保持されているアクセスコマンドのうち少なくとも一部のアクセスコマンドをクリアし、前記少なくとも一部のアクセスコマンドを中断するステップを含む、ことを特徴とする請求項１７記載のストレージ制御方法。
【請求項２０】
前記記憶デバイスへの書き込み禁止の判別結果に応じて、その時点でアクセス実行中のアクセスコマンドのうち少なくとも一部のアクセスコマンドを中断する、ことを特徴とする請求項１９記載のストレージ制御方法。
【請求項２１】
前記記憶デバイスへの書き込みが禁止の場合、前記ホストからの問い合わせに対して、書き込み禁止状態であることをエラー応答として返す、ことを特徴とする請求項１７、１９、２０のいずれか１項に記載のストレージ制御方法。
【請求項２２】
前記ホストから書き込み要求を受けると、前記記憶デバイスへの書き込み禁止の状態にある場合、前記書き込み要求に対するアクセスコマンドを前記コマンドキューに格納することなく、前記エラー応答を返すか、前記書き込み要求を廃棄するように制御する、ことを特徴とする請求項１７、１９、２０、２１のいずれか１項に記載のストレージ制御方法。
【請求項２３】
前記記憶デバイスへの書き込みが禁止の状態において、前記ホストからの読み出し要求に対するアクセス処理は継続して行う、ことを特徴とする請求項１７、１９乃至２２のいずれか１項に記載のストレージ制御方法。
【請求項２４】
前記記憶デバイスへの書き込み禁止の状態において、前記コマンドキューに保持されている読み出し要求に対応するアクセスコマンドはクリアせずに残し、実行中の読み出し要求に対応するアクセスコマンドは中断せずに実行を継続する、ことを特徴とする請求項１７、１９乃至２３のいずれか１項に記載のストレージ制御方法。
【請求項２５】
前記ホストは、前記エラー応答を受けとった前記ストレージに対して、読み出しアクセス要求を選択的に再発行し、書き込みアクセス要求を、他のストレージに発行する、ことを特徴とする請求項１７、１９乃至２４のいずれか１項に記載のストレージ制御方法。
【請求項２６】
前記ホストは、前記ストレージから前記エラー応答を受け取ると、前記ストレージは障害ではなく、書き込み禁止と判断して、読み出しアクセス要求を、前記ストレージに発行する、ことを特徴とする請求項１７、１９乃至２４のいずれか１項に記載のストレージ制御方法。
【請求項２７】
ストレージを構成するコンピュータに、
ホストからのアクセス要求を記憶デバイスへのアクセスコマンドに変換するアクセス変換処理と、
変換された前記アクセスコマンドを一旦保持するコマンドキューと、
前記コマンドキューに保持されている、待機中又は待機中と実行中のアクセスコマンドについて、
アクセスコマンドの数と、
各アクセスコマンドの内容であるアクセス種別、記憶デバイスＩＤ、アクセス先アドレス、アクセスデータ長の少なくとも一つの分析結果に基づき、処理の負荷量、及び／又は、前記コマンドキューにおける合計待ち時間を算出する負荷判定処理と、
前記負荷量又は前記合計待ち時間が予め定められた所定の閾値を超えている場合、前記記憶デバイスへの書き込みを禁止とする書き込み許可変更処理と、
前記アクセス変換手段が前記ホストから受けたアクセス要求に対して、前記書き込み許可変更手段から前記記憶デバイスの書き込み禁止状態を取得し、前記記憶デバイスの書き込み禁止である場合、前記ホストからの読み出し以外のアクセス要求に対する前記ホストへの応答として、エラー応答を返すように前記アクセス変換処理に対して指示するアクセスフィルタ処理と、
前記アクセス変換処理が、前記アクセスフィルタ処理からの指示を受け、前記アクセス要求に対するエラー応答として、前記アクセス要求が正常に終了していないことを前記ホストに伝える処理と、
を実行させるプログラム。
【請求項２８】
（削除）
【請求項２９】
前記書き込み許可変更処理が前記記憶デバイスへの書き込み禁止と判断すると、前記コマンドキューに保持されているアクセスコマンドのうち少なくとも一部のアクセスコマンドをクリアし、前記少なくとも一部のアクセスコマンドを中断するコマンド中断処理を前記コンピュータに実行させる請求項２７載のプログラム。
【請求項３０】
（削除）
【国際調査報告】
2015170702.tif 000020
2015170702.tif 000021
2015170702.tif 000022
2015170702.tif 000023
2015170702.tif 000024
2015170702.tif 000025
2015170702.tif 000026