(57)【要約】【課題】ストレージ装置のファーム活性適用の際に、ストレージ装置に構成制御を依頼したサーバ上のソフトウェアが異常を検出してサーバが停止することを防ぐこと。【解決手段】ＡＰＩプロバイダ３２が外部ソフトウェア３１のＡＰＩ実行を受け付けてＣＬＩコマンドに変換し、ＣＬＩ制御部４１が、ＣＬＩコマンドのうち非同期コマンドからコマンドセットを生成してコマンド管理部４２に渡す。コマンド管理部４２は、コマンドセットからコマンドを１つずつ取り出してコマンド制御部４３に実行を依頼する。コマンド制御部４３は、コマンドを実行する。また、コマンド制御部４３は、ストレージ装置１のファームウェアの改版を制御し、改版処理においてコマンドを実行できないタイミングでコマンド管理部４２にコマンドの実行停止を指示する。コマンド管理部４２は、外部ソフトウェア３１が異常を検出しないための処理を行った後でコマンドの実行を停止する。【選択図】図２
2020112865.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する不揮発性記憶装置と該不揮発性記憶装置へのアクセスを制御する２つの制御装置とを有するストレージ装置において、
前記制御装置は、
外部ソフトウェアからの指示をタスクとして受け付けて前記不揮発性記憶装置を制御するコマンドセットを生成するコマンドセット生成部と、
前記コマンドセット生成部により生成されたコマンドセットに含まれるコマンドの実行を管理するコマンド管理部と、
前記コマンド管理部により管理されるコマンドを実行すると共に、前記ストレージ装置のファームウェアの改版処理を制御し、前記改版処理において前記コマンドを実行できないタイミングで前記コマンド管理部に前記コマンドの実行停止を指示するコマンド制御部とを有し、
前記コマンド管理部は、前記実行停止を指示されると、外部ソフトウェアが異常を検出しないための処理を実行した後で前記コマンドの実行を停止することを特徴とするストレージ装置。
【請求項２】
前記コマンド制御部は、前記制御装置の切り離し及び組み込みのタイミングと他の制御装置とのキャッシュテーブルの同期処理のタイミングで前記コマンドの実行の一時停止を指示し、他の制御装置をマスター制御装置に切り替えるタイミングで前記コマンドの実行の完全停止を指示することを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記コマンド管理部は、前記コマンド制御部に前記一時停止を指示されると、前記外部ソフトウェアからの指示にタイムアウト要件がある場合には、前記タスクの状態が成功又は失敗になるまで処理を行って処理を停止し、前記外部ソフトウェアからの指示にタイムアウト要件がない場合には、実行中のコマンドについて応答を受信した時点で処理を停止することを特徴とする請求項２に記載のストレージ装置。
【請求項４】
前記コマンド管理部は、前記タスクの状態が成功又は失敗になるまでの処理が所定の時間内に完了しない場合には、前記外部ソフトウェアからの指示にタイムアウト要件があって前記タスクの状態が未実行の状態であると、前記タスクの状態を未実行に維持して処理を停止することを特徴とする請求項３に記載のストレージ装置。
【請求項５】
前記コマンド管理部は、前記コマンド制御部に前記完全停止を指示されると、前記タスクの状態が成功又は失敗になるまで処理を行って処理を停止することを特徴とする請求項２に記載のストレージ装置。
【請求項６】
前記コマンド管理部は、前記タスクの状態が成功又は失敗になるまでの処理が所定の時間内に完了しない場合には、前記外部ソフトウェアからの指示にタイムアウト要件があって前記タスクの状態が未実行の状態であると、前記タスクの状態を未実行に維持して処理を停止し、前記外部ソフトウェアからの指示にタイムアウト要件がなくて前記タスクの状態が実行中の状態であると、実行中のコマンドについて応答を受信した時点で処理を停止することを特徴とする請求項５に記載のストレージ装置。
【請求項７】
不揮発性記憶装置へデータを記憶するストレージ装置を制御するストレージ制御装置において、
外部ソフトウェアからの指示をタスクとして受け付けて前記不揮発性記憶装置を制御するコマンドセットを生成するコマンドセット生成部と、
前記コマンドセット生成部により生成されたコマンドセットに含まれるコマンドの実行を管理するコマンド管理部と、
前記コマンド管理部により管理されるコマンドを実行すると共に、前記ストレージ装置のファームウェアの改版処理を制御し、前記改版処理において前記コマンドを実行できないタイミングで前記コマンド管理部に前記コマンドの実行停止を指示するコマンド制御部とを有し、
前記コマンド管理部は、前記実行停止を指示されると、外部ソフトウェアが異常を検出しないための処理を実行した後で前記コマンドの実行を停止することを特徴とするストレージ制御装置。
【請求項８】
不揮発性記憶装置へデータを記憶するストレージ装置を制御するストレージ制御装置が有するコンピュータで実行されるストレージ制御プログラムにおいて、
外部ソフトウェアからの指示をタスクとして受け付けて前記不揮発性記憶装置を制御するコマンドセットを生成し、
生成したコマンドセットに含まれるコマンドを実行すると共に、前記ストレージ装置のファームウェアの改版処理を制御し、前記改版処理において前記コマンドを実行できないタイミングにおいて、前記外部ソフトウェアが異常を検出しないための処理を実行した後で前記コマンドの実行を停止する
処理を前記コンピュータに実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、ストレージ制御装置及びストレージ制御プログラムに関する。
【背景技術】
【０００２】
ストレージ装置を停止することなく、ストレージ装置をオンライン状態に維持したまま、ストレージ装置のファームウェアを改版するファーム活性適用機能は、ストレージ装置の重要な機能の１つである。なお、「ファーム」は、ファームウェアを表す。
【０００３】
ストレージ装置は複数のモジュールから構成され、各モジュールはそれぞれ独立したファームウェアで動作する。各モジュールには、稼働面と非稼働面の２つの面にファームウェアを書き込む領域が存在する。ファーム活性適用時には、非稼働面に改版後のファームウェアが書き込まれた後で非稼働面に切替が行われ、リブート時に改版後のファームウェアでストレージ装置が起動される。
【０００４】
また、ストレージ制御装置は、マスター系と、マスター系に異常がある場合に動作する系の２つの系を有し、ファームウェアの改版を片系ずつ行うことで、ストレージ装置をオンライン状態に維持したままファームウェアの改版を行うことができる。
【０００５】
なお、ファームウェアの適用対象となるストレージ装置に対するアクセス状況を監視し、監視結果に基づいて、適用対象のストレージ装置についてのファームウェアの適用を指示することで、稼働中でもファームウェアの適用を実行できるようにする従来技術がある。
【０００６】
また、複数のプログラムが階層的に呼び出されて一つの機能を提供するシステムにおいて、ユーザが下位レイヤのプログラムの動作を直接意識することなく、ユーザが操作する上位プログラムの操作性を向上する従来技術がある。この従来技術では、下位レイヤのプログラムは、多数のリクエストを受け付けた場合に、リクエストのタイムアウト要件と、各リクエストの元になったタスクとの関連を特定する。そして、下位レイヤのプログラムは、リクエスト発行元のプログラムにおけるタスクの実行順序と各リクエストのタイムアウト要件にしたがって、タイムアウトをできるだけ抑止するようにリクエスト実行順を制御する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−２８２８３４号公報
【特許文献２】国際公開第２０１７／０５６２０８号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
近年、クラウドシステムでの運用自動化や仮想化ソフトウェアを使用する環境が増加している。クラウドシステムでの運用自動化や仮想化ソフトウェアを使用する環境では、サーバで動作するソフトウェアがストレージ装置の構成制御を行う。ここで、構成制御とは、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）設定等の装置設定や、ＲＡＩＤ構成変更等の装置構成変更である。このため、ファーム活性適用中にストレージ装置の構成制御が行われることがある。
【０００９】
しかしながら、ファーム活性適用は改版対象モジュールのリブートを伴うことから、モジュール内部の各種制御テーブルの整合性を２つの系の間で維持するために、外部ソフトウェアからの構成制御を受け付けることができないタイミングが存在する。ここで、外部ソフトウェアとは、サーバで動作するソフトウェアである。
【００１０】
外部ソフトウェアからの構成制御を受け付けることができないと、外部ソフトウェアが異常を検出し、外部ソフトウェアを使用しているシステムの運用が止まるという問題がある。なお、ストレージ制御装置は、外部ソフトウェア以外にもユーザから構成制御を受け付けることがある。
【００１１】
本発明は、１つの側面では、ファーム活性適用の際に外部ソフトウェアからの構成制御によるシステム運用の停止を防ぐことを目的とする。
【課題を解決するための手段】
【００１２】
１つの態様では、ストレージ装置は、データを記憶する不揮発性記憶装置と該不揮発性記憶装置へのアクセスを制御する２つの制御装置とを有し、前記制御装置は、コマンドセット生成部と、コマンド管理部と、コマンド制御部とを有する。前記コマンドセット生成部は、外部ソフトウェアからの指示をタスクとして受け付けて前記不揮発性記憶装置を制御するコマンドセットを生成する。前記コマンド管理部は、前記コマンドセット生成部により生成されたコマンドセットに含まれるコマンドの実行を管理する。前記コマンド制御部は、前記コマンド管理部により管理されるコマンドを実行する。また、前記コマンド制御部は、前記ストレージ装置のファームウェアの改版処理を制御し、前記改版処理において前記コマンドを実行できないタイミングで前記コマンド管理部に前記コマンドの実行停止を指示する。前記コマンド管理部は、前記実行停止を指示されると、外部ソフトウェアが異常を検出しないための処理を実行した後で前記コマンドの実行を停止する。
【発明の効果】
【００１３】
１つの側面では、本発明は、ファーム活性適用の際に外部ソフトウェアからの構成制御によるシステム運用の停止を防ぐことができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例に係るストレージ装置の構成を示す図である。
【図２】図２は、ＣＭの機能構成を示す図である。
【図３】図３は、コマンドセットの一例を示す図である。
【図４】図４は、コマンド管理部が管理するタスクの状態を示す図である。
【図５】図５は、ステップ１の一時停止動作を示す図である。
【図６】図６は、ステップ２の一時停止動作を示す図である。
【図７】図７は、ステップ１の完全停止動作を示す図である。
【図８】図８は、ステップ２の完全停止動作を示す図である。
【図９】図９は、非同期コマンドの処理の流れを示す図である。
【図１０】図１０は、ファームウェア改版の処理のフローを示す図である。
【図１１Ａ】図１１Ａは、ファーム活性適用の動作を示す第１の図である。
【図１１Ｂ】図１１Ｂは、ファーム活性適用の動作を示す第２の図である。
【図１１Ｃ】図１１Ｃは、ファーム活性適用の動作を示す第３の図である。
【図１１Ｄ】図１１Ｄは、ファーム活性適用の動作を示す第４の図である。
【図１２】図１２は、一時停止指示のフローを示すフローチャートである。
【図１３】図１３は、他のストレージ装置の構成例を示す図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示するストレージ装置、ストレージ制御装置及びストレージ制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１６】
まず、実施例に係るストレージ装置の構成について説明する。図１は、実施例に係るストレージ装置の構成を示す図である。図１に示すように、実施例に係るストレージ装置１は、ＣＥ（Controller  Enclosure）１ａと、ＤＥ（Drive  Enclosure）＃００〜ＤＥ＃１９で表される２０個のＤＥ１ｂを有する。ＣＥ１ａは、ＣＭ（Controller  Module）＃０及びＣＭ＃１で表される２つのＣＭ１０を有する筐体である。ＤＥ１ｂは、ＨＤＤ（Hard  Disk  Drive）２３を搭載する筐体である。なお、ＤＥ１ｂは、ＨＤＤ２３の代わりにＳＳＤ（Solid  State  Drive）等の他の不揮発性記憶装置を搭載してもよい。あるいは、ＤＥ１ｂは、複数種類の不揮発性記憶装置を搭載してもよい。
【００１７】
ＣＭ１０は、ストレージ装置１を制御する制御装置である。ＣＭ＃０とＣＭ＃１は冗長系を構成し、一方がマスターとして動作する。ＣＭ１０は、ＣＰＵ（Central  Processing  Unit）１１と、メモリ１１ａと、ＩＯＣ（Input  Output  Controller）１２と、ＣＭ−ＥＸＰ(EXPander)１３と、ＣＭ−ＢＩＯＳ（Basic  Input/Output  System）１４とを有する。また、ＣＭ１０は、ＢＵＤ（Bootup  and  Utility  Device）１５と、２つのＣＡ（Channel  Adapter）１６とを有する。
【００１８】
ＣＰＵ１１は、メモリ１１ａが記憶するファームウェアを実行することでＣＭ１０を制御装置として動作させる。メモリ１１ａは、ＣＰＵ１１で実行されるファームウェアやファームウェアが使用するデータ等を記憶するＲＡＭ（Random  Access  Memory）である。ＣＰＵ１１で実行されるファームウェアは、例えばフラッシュメモリから読み出されてメモリ１１ａに格納される。あるいは、ＣＰＵ１１で実行されるファームウェアは、コンピュータ読取可能媒体であるＣＤ−Ｒから読み出されてメモリ１１ａに格納されてもよい。
【００１９】
ＩＯＣ１２は、ＳＡＳ（Serial  Attached  ＳＣＳＩ）のコントローラである。ＣＭ−ＥＸＰ１３は、ＳＡＳによって、ＣＭ１０とＤＥ１ｂを接続する。ＣＭ−ＢＩＯＳ１４は、ＣＰＵ１１で動作するＯＳ（Operating  System）を起動するＢＩＯＳを記憶するＲＯＭ（Read  Only  Memory）である。ＢＵＤ（Bootup  and  Utility  Device）１５は、ストレージ装置１の構成設定情報等を記憶する。ＣＡ１６は、サーバ等の情報処理装置とのインタフェースである。サーバ等の情報処理装置は、ストレージ装置１へのデータの書き込み及びストレージ装置１からのデータの読み出しを行う。
【００２０】
ＤＥ１ｂは、ＩＯＭ（I/O  Module）＃０及びＩＯＭ＃１で表されるＩＯＭ２１を有する。ＩＯＭ２１は、ＣＭ１０により指定されたＨＤＤ２３へＳＡＳフレームを転送する。なお、ＤＥ＃００及びＤＥ＃１９で表されるＤＥ１ｂは、ＦＥＭ（Fan  Expander  Module）＃００及びＦＥＭ＃０１で表されるＦＥＭ２２を有し、他のＤＥ１ｂは、複数のＨＤＤ２３を有する。ＦＥＭ２２は、複数のＨＤＤ２３を有し、ＩＯＭ２１が転送したＳＡＳフレームをＣＭ１０により指定されたＨＤＤ２３へ転送する。また、ＦＥＭ２２は、ファンを有し、ＤＥ１ｂを冷却する。
【００２１】
なお、ストレージ装置１は、より多くのＤＥ１ｂ、あるいは、より少ないＤＥ１ｂを有してもよい。また、より多くのＤＥ１ｂがＦＥＭ２２を有してもよく、より少ないＤＥ１ｂがＦＥＭ２２を有してもよい。
【００２２】
次に、ＣＭ１０の機能構成について説明する。図２は、ＣＭ１０の機能構成を示す図である。なお、２つのＣＭ１０は同様の機能構成を有するので、図２では１つのＣＭ１０だけを示す。ＣＭ１０の機能は、メモリ１１ａに記憶されたファームウェアがＣＰＵ１１で実行されることにより実現される。図２に示すように、ＣＭ１０は、ＣＬＩ（Command  Line  Interface）制御部４１と、コマンド管理部４２と、コマンド制御部４３と、構成制御部４４と、ＩＯ制御部４５とを有する。
【００２３】
ＣＬＩ制御部４１は、ＡＰＩ（Application  Programming  Interface）プロバイダ３２からＣＬＩコマンドを受け取り、受け取ったＣＬＩコマンドが同期コマンドであればコマンド制御部４３に渡す。また、ＣＬＩ制御部４１は、受け取ったＣＬＩコマンドが非同期コマンドであれば対応するコマンドセットを生成してコマンド管理部４２に渡す。
【００２４】
ここで、ＡＰＩプロバイダ３２は、サーバ３で動作する外部ソフトウェア３１によるＡＰＩ実行を受け付けて１つ以上のＣＬＩコマンドに変換してストレージ装置１に送信するソフトウェアである。ＡＰＩプロバイダ３２は、ＣＬＩコマンドの実行状態や実行結果をストレージ装置１から受け取って外部ソフトウェア３１に応答する。なお、ここでは、ＡＰＩプロバイダ３２はサーバ３で動作するが、ストレージ装置１がＡＰＩプロバイダ３２の機能を備えてもよい。
【００２５】
また、同期コマンドは、外部ソフトウェア３１がＡＰＩ復帰時に応答を受信することを期待するコマンドであり、非同期コマンドは、外部ソフトウェア３１がＡＰＩ実行の進捗状況を確認するコマンドである。また、非同期コマンドには、タイムアウト要件があるＡＰＩから変換されたコマンドとタイムアウト要件がないＡＰＩから変換されたコマンドがある。なお、ストレージ装置１は、処理中の同期コマンドが存在しないタイミングを検出してファームウェア改版を実行する。
【００２６】
図３は、コマンドセットの一例を示す図である。図３に示すように、コマンドセットには、ＡＰＩ名と、コマンドセット中のコマンド数と、コマンド数のコマンドが含まれる。図３では、コマンド数はｎ（正の整数）である。コマンドには、コマンドコードとコマンドコードの制御データが含まれる。ＡＰＩ名は、コマンドセットの元となるＡＰＩを識別する名前である。
【００２７】
コマンド管理部４２は、コマンドセットに含まれるコマンドを１つずつコマンド制御部４３に渡して実行を依頼する。コマンド管理部４２は、ＡＰＩをタスクに紐づけ、タスク情報をキューを用いて管理し、外部ソフトウェア３１からＡＰＩ実行の進捗状況の問合せがあると、ＣＬＩ制御部４１及びＡＰＩプロバイダ３２を介してタスクの進捗状況を応答する。
【００２８】
図４は、コマンド管理部４２が管理するタスクの状態を示す図である。図４に示すように、タスクの状態には、「Ｑｕｅｕｅｄ」と「Ｒｕｎｎｉｎｇ」と「Ｓｕｃｃｅｓｓ」と「Ｅｒｒｏｒ」とがある。「Ｑｕｅｕｅｄ」は、タスク情報がキューイングされていてタスクが未実行の状態である。「Ｒｕｎｎｉｎｇ」は、タスクが開始されていてコマンド実行が開始されている状態である。「Ｓｕｃｃｅｓｓ」は、タスクの全コマンドが正常終了した状態である。「Ｅｒｒｏｒ」は、タスクのコマンドの実行に失敗した状態である。なお、タスク情報は、２つのＣＭ１０の間で同期がとられる。
【００２９】
コマンド制御部４３は、ＣＬＩ制御部４１から受け取った同期コマンド、コマンド管理部４２から受け取ったコマンドを実行する。コマンド制御部４３は、同期コマンドの実行結果をＣＬＩ制御部４１に通知し、コマンドの実行結果をコマンド管理部４２に通知する。コマンド制御部４３は、構成制御に関するコマンドについては構成制御部４４に処理を依頼する。コマンド制御部４３は、同期コマンドの実行及びコマンドの実行においてＨＤＤ２３へのアクセスが必要になるとＩＯ制御部４５に処理を依頼する。なお、サーバ３からのデータの読み出し及び書き込み要求については、図２に示す経路とは別の経路でＩＯ制御部４５に処理が依頼される。
【００３０】
構成制御部４４は、構成制御を行い、構成制御の結果をコマンド制御部４３に通知する。構成制御部４４は、構成制御においてＨＤＤ２３へのアクセスが必要になるとＩＯ制御部４５に処理を依頼する。
【００３１】
ＩＯ制御部４５は、コマンド制御部４３から処理を依頼されると処理結果をコマンド制御部４３に通知する。ＩＯ制御部４５は、構成制御部４４から処理を依頼されると処理結果を構成制御部４４に通知する。なお、ＩＯ制御部４５は、図２に示す経路とは別の経路でサーバ３からのデータの読み出し及び書き込み要求を受け取り、ＨＤＤ２３へのデータの書き込み及びＨＤＤ２３からのデータの読み出しを制御する。
【００３２】
コマンド制御部４３は、改版制御部５０を有する。改版制御部５０は、ファームウェア活性適用を制御する。改版制御部５０は、ファーム活性適用処理中に、ＡＰＩを用いて実行される構成制御を受け付けることができないタイミングにおいて、コマンド管理部４２に停止指示を出す。
【００３３】
ここで、ファーム活性適用処理中に構成制御を受け付けることができないタイミングとしては、ＣＭ１０のファームウェアの改版におけるＣＭ１０の切り離し及びＣＭ１０の組み込み、ＣＭ１０のファームウェアの改版におけるキャッシュテーブルの同期処理がある。また、ファーム活性適用処理中に構成制御を受け付けることができない他のタイミングとして、マスターＣＭ１０の切替がある。
【００３４】
そこで、改版制御部５０は、ＣＭ１０の切り離し及びＣＭ１０の組み込みを開始する前に、コマンド管理部４２に一時停止を指示する。また、改版制御部５０は、キャッシュテーブルの同期処理を開始する前に、コマンド管理部４２に一時停止を指示する。
【００３５】
コマンド管理部４２は、一時停止を指示されると、ステップ１として、タイムアウト要件があるＡＰＩについては、外部ソフトウェア３１がタイムアウトを検出しないように優先的に処理し、停止前にコマンド掃き出し処理を行う。ここで、コマンド掃き出し処理とは、タスクの状態が「Ｓｕｃｃｅｓｓ（成功）」又は「Ｅｒｒｏｒ（失敗）」になるまで処理を実行することである。また、コマンド管理部４２は、ステップ１として、タイムアウト要件がないＡＰＩについては、処理途中のコマンドの処理結果を受領後に、後続するコマンドの処理を停止する。
【００３６】
図５は、ステップ１の一時停止動作を示す図である。図５に示すように、タイムアウト要件があり、タスクの状態が「Ｑｕｅｕｅｄ」又は「Ｒｕｎｎｉｎｇ」である場合には、コマンド管理部４２は、コマンド掃き出し処理を行い、タスクの状態が「Ｓｕｃｃｅｓｓ」又は「Ｅｒｒｏｒ」に確定されるまで処理を行う。また、タイムアウト要件があり、タスクの状態が「Ｓｕｃｃｅｓｓ」又は「Ｅｒｒｏｒ」である場合には、コマンド管理部４２は、タスク情報を保持し、「成功」又は「失敗」を通知後にタスク情報を削除する。
【００３７】
また、一時停止を指示され、タイムアウト要件がなく、タスクの状態が「Ｑｕｅｕｅｄ」である場合には、コマンド管理部４２は、「Ｑｕｅｕｅｄ」を維持する。すなわち、「Ｑｕｅｕｅｄ」の状態のタスクの実行は停止される。また、一時停止を指示され、タイムアウト要件がなく、タスクの状態が「Ｒｕｎｎｉｎｇ」である場合には、コマンド管理部４２は、コマンドの応答受信時に処理を停止する。すなわち、「Ｒｕｎｎｉｎｎｇ」の状態のタスクの次のコマンドの実行は停止される。また、一時停止を指示され、タイムアウト要件がなく、タスクの状態が「Ｓｕｃｃｅｓｓ」又は「Ｅｒｒｏｒ」である場合には、コマンド管理部４２は、タスク情報を保持し、「成功」又は「失敗」を通知後にタスク情報を削除する。
【００３８】
そして、コマンド管理部４２は、改版制御部５０からの状態確認に対して、一時停止処理が完了すると一時停止完了を応答し、改版制御部５０は、一時停止完了を受け取るか第１閾値時間が経過すると、一時停止指示を出す原因となった処理を開始する。すなわち、コマンド管理部４２は、ＣＭ１０の切り離し及びＣＭ１０の組み込み開始前に一時停止指示を出した場合には、ＣＭ１０の切り離し及びＣＭ１０の組み込みを開始する。また、コマンド管理部４２は、キャッシュテーブルの同期処理の開始前に一時停止指示を出した場合には、キャッシュテーブルの同期処理を開始する。そして、改版制御部５０は、ＣＭ１０の切り離し及びＣＭ１０の組み込み、又はキャッシュテーブルの同期処理を完了すると、コマンド管理部４２に再開を指示する。
【００３９】
また、コマンド管理部４２は、ステップ１の一時停止動作が第２閾値（＜第１閾値）時間内に完了しない場合には、ステップ２に移行する。図６は、ステップ２の一時停止動作を示す図である。図６に示すように、タイムアウト要件があり、タスクの状態が「Ｑｕｅｕｅｄ」である場合には、コマンド管理部４２は、「Ｑｕｅｕｅｄ」を維持する。また、タイムアウト要件があり、タスクの状態が「Ｒｕｎｎｉｎｇ」である場合には、コマンド管理部４２は、コマンド掃き出し処理を行い、タスクの状態が「Ｓｕｃｃｅｓｓ」又は「Ｅｒｒｏｒ」に確定されるまで処理を実行する。また、タイムアウト要件があり、タスクの状態が「Ｓｕｃｃｅｓｓ」又は「Ｅｒｒｏｒ」である場合には、コマンド管理部４２は、タスク情報を保持し、「成功」又は「失敗」を通知後にタスク情報を削除する。
【００４０】
また、ステップ２の一時停止動作において、タイムアウト要件がなく、タスクの状態が「Ｑｕｅｕｅｄ」である場合には、コマンド管理部４２は、「Ｑｕｅｕｅｄ」を維持する。また、ステップ２の一時停止動作において、タイムアウト要件がなく、タスクの状態が「Ｒｕｎｎｉｎｇ」である場合には、コマンド管理部４２は、コマンドの応答受信時に処理を停止する。また、ステップ２の一時停止動作において、タイムアウト要件がなく、タスクの状態が「Ｓｕｃｃｅｓｓ」又は「Ｅｒｒｏｒ」である場合には、コマンド管理部４２は、タスク情報を保持し、「成功」又は「失敗」を通知後にタスク情報を削除する。
【００４１】
また、マスターＣＭ１０の切替では、ネットワークが一旦リセットされるため、外部ソフトウェア３１とマスターＣＭ１０の通信が一度切断される。外部ソフトウェア３１は、ストレージ装置１との接続が切れたことを検出した後では、接続リトライ回数によっては、処理を継続することができず、異常を検出する。外部ソフトウェア３１による異常検出を可能な限り回避するため、改版制御部５０は、切替前に、コマンド管理部４２に完全停止を指示し、キューイングされているタスクがない状態でファームウェア改版を継続する。
【００４２】
コマンド管理部４２は、完全停止を指示されると、ステップ１として、タイムアウト要件の有無にかかわらず、停止前にコマンド掃き出し処理を行う。
【００４３】
図７は、ステップ１の完全停止動作を示す図である。図７に示すように、タイムアウト要件の有無にかかわらず、タスクの状態が「Ｑｕｅｕｅｄ」又は「Ｒｕｎｎｉｎｇ」である場合には、コマンド管理部４２は、コマンド掃き出し処理を行う。また、タイムアウト要件の有無にかかわらず、タスクの状態が「Ｓｕｃｃｅｓｓ」又は「Ｅｒｒｏｒ」である場合には、コマンド管理部４２は、タスク情報を保持し、「成功」又は「失敗」を通知後にタスク情報を削除する。
【００４４】
そして、コマンド管理部４２は、改版制御部５０からの状態確認に対して、完全停止動作の完了後に完全停止完了を応答し、改版制御部５０は、完全停止完了を受け取るか第１閾値時間が経過すると、ＣＭ１０の切替を開始する。そして、改版制御部５０は、ＣＭ１０の切替を完了すると、コマンド管理部４２に再開を指示する。
【００４５】
また、コマンド管理部４２は、ステップ１の完全停止動作が第２閾値時間内に完了しない場合には、ステップ２に移行する。図８は、ステップ２の完全停止動作を示す図である。図８に示すように、タイムアウト要件があり、タスクの状態が「Ｑｕｅｕｅｄ」である場合には、コマンド管理部４２は、「Ｑｕｅｕｅｄ」を維持する。また、タイムアウト要件があり、タスクの状態が「Ｒｕｎｎｉｎｇ」である場合には、コマンド管理部４２は、コマンド掃き出し処理を行う。また、タイムアウト要件があり、タスクの状態が「Ｓｕｃｃｅｓｓ」又は「Ｅｒｒｏｒ」である場合には、コマンド管理部４２は、タスク情報を保持し、「成功」又は「失敗」を通知後にタスク情報を削除する。
【００４６】
また、ステップ２の完全停止動作において、タイムアウト要件がなく、タスクの状態が「Ｑｕｅｕｅｄ」である場合には、コマンド管理部４２は、コマンド掃き出し処理を行う。また、ステップ２の完全停止動作において、タイムアウト要件がなく、タスクの状態が「Ｒｕｎｎｉｎｇ」である場合には、コマンド管理部４２は、コマンドの応答受信時に処理を停止する。また、ステップ２の完全停止動作において、タイムアウト要件がなく、タスクの状態が「Ｓｕｃｃｅｓｓ」又は「Ｅｒｒｏｒ」である場合には、コマンド管理部４２は、タスク情報を保持し、「成功」又は「失敗」を通知後にタスク情報を削除する。
【００４７】
次に、非同期コマンドの処理の流れについて説明する。図９は、非同期コマンドの処理の流れを示す図である。図９に示すように、外部ソフトウェア３１は、ＡＰＩを実行する（ｔ１）。また、外部ソフトウェア３１は、実行したＡＰＩに関して、ストレージ装置１による処理の結果をポーリングする（ｔ１’）。
【００４８】
ＡＰＩプロバイダ３２は、ＡＰＩ実行を受け付けて１つ以上のＣＬＩコマンドに変換し、ストレージ装置１にＣＬＩコマンド実行を指示する（ｔ２）。ＣＬＩ制御部４１は、非同期コマンドからコマンドセットを生成してコマンド管理部４２に実行を依頼する（ｔ３）。
【００４９】
コマンド管理部４２は、コマンドセットからコマンドを１つずつ取り出してコマンド制御部４３にコマンドの処理を依頼する（ｔ４）。コマンド制御部４３は、構成制御については構成制御部４４に処理を依頼する（ｔ５）。コマンド管理部４２は、コマンド処理の進捗を管理し（ｔ６）、依頼したコマンドの処理結果をコマンド制御部４３から受け取ると、コマンドセットから次のコマンドを取り出してコマンド制御部４３にコマンドの処理を依頼する（ｔ４）。
【００５０】
このように、コマンド処理が完了するまでｔ４〜ｔ６の処理が繰り返される。ただし、ファーム活性適用が行われると、コマンド処理は停止される場合がある。特に、タイムアウト要件がない非同期コマンドは、タイムアウト要件がある非同期コマンドと比較すると、停止される可能性が高い。
【００５１】
次に、ファームウェア改版の処理のフローについて説明する。図１０は、ファームウェア改版の処理のフローを示す図である。なお、図１０において、「改版」はファームウェアの改版を意味する。図１０に示すように、改版制御部５０は、ＩＯＭ２１及びＦＥＭ２２の改版を行う（ステップＳ１）。
【００５２】
そして、改版制御部５０は、ＣＭ１０の改版を行う（ステップＳ２）。ＣＭ１０の改版中、ＣＭ１０の切り離し及び組み込みを開始するタイミングにおいて、改版制御部５０は、コマンド管理部４２に一時停止を指示する（ステップＳ３）。コマンド管理部４２は、一時停止を指示されると、一時停止処理を実行し（ステップＳ４）、改版制御部５０からの状態確認に対して、一時停止処理が完了すると完了を応答する（ステップＳ５）。改版制御部５０は、コマンド管理部４２から完了応答を受け取るか第１閾値時間が経過すると、ＣＭ１０の切り離し及び組み込みを開始し、ＣＭ１０の切り離し及び組み込みが完了すると、コマンド管理部４２に処理の再開を指示する。
【００５３】
また、改版制御部５０は、キャッシュテーブルの同期処理を開始するタイミングにおいて、コマンド管理部４２に一時停止を指示する（ステップＳ３）。コマンド管理部４２は、一時停止を指示されると、一時停止処理を実行し（ステップＳ４）、改版制御部５０からの状態確認に対して、一時停止処理が完了すると完了を応答する（ステップＳ５）。改版制御部５０は、コマンド管理部４２から完了応答を受け取るか第１閾値時間が経過すると、キャッシュテーブルの同期処理を開始し、キャッシュテーブルの同期処理が完了すると、コマンド管理部４２に処理の再開を指示する。
【００５４】
そして、改版制御部５０は、マスターＣＭ切替の前に、コマンド管理部４２に完全停止を指示する（ステップＳ６）。コマンド管理部４２は、完全停止を指示されると、完全停止処理を実行し（ステップＳ７）、改版制御部５０からの状態確認に対して、完全停止処理が完了すると完了を応答する（ステップＳ８）。改版制御部５０は、コマンド管理部４２から完了応答を受け取るか第１閾値時間が経過すると、マスターＣＭ切替を実行し（ステップＳ９）、マスターＣＭ切替が完了すると、コマンド管理部４２に処理の再開を指示する。
【００５５】
そして、改版制御部５０は、ＣＭ１０の改版を行う（ステップＳ１０）。ＣＭ１０の改版中、ＣＭ１０の切り離し及び組み込みを開始するタイミングにおいて、改版制御部５０は、コマンド管理部４２に一時停止を指示する（ステップＳ１１）。コマンド管理部４２は、一時停止を指示されると、一時停止処理を実行し（ステップＳ１２）、改版制御部５０からの状態確認に対して、一時停止処理が完了すると完了を応答する（ステップＳ１３）。改版制御部５０は、コマンド管理部４２から完了応答を受け取るか第１閾値時間が経過すると、ＣＭ１０の切り離し及び組み込みを開始し、ＣＭ１０の切り離し及び組み込みが完了すると、コマンド管理部４２に処理の再開を指示する。
【００５６】
また、改版制御部５０は、キャッシュテーブルの同期処理を開始するタイミングにおいて、コマンド管理部４２に一時停止を指示する（ステップＳ１１）。コマンド管理部４２は、一時停止を指示されると、一時停止処理を実行し（ステップＳ１２）、改版制御部５０からの状態確認に対して、一時停止処理が完了すると完了を応答する（ステップＳ１３）。改版制御部５０は、コマンド管理部４２から完了応答を受け取るか第１閾値時間が経過すると、キャッシュテーブルの同期処理を開始し、キャッシュテーブルの同期処理が完了すると、コマンド管理部４２に処理の再開を指示する。
【００５７】
そして、改版制御部５０は、マスターＣＭ切替の前に、コマンド管理部４２に完全停止を指示する（ステップＳ１４）。コマンド管理部４２は、完全停止を指示されると、完全停止処理を実行し（ステップＳ１５）、改版制御部５０からの状態確認に対して、完全停止処理が完了すると完了を応答する（ステップＳ１６）。改版制御部５０は、コマンド管理部４２から完了応答を受け取るか第１閾値時間が経過すると、マスターＣＭ切替を実行し（ステップＳ１７）、マスターＣＭ切替が完了すると、コマンド管理部４２に処理の再開を指示する。
【００５８】
そして、改版制御部５０は、ＩＯＭ２１及びＦＥＭ２２の改版を行う（ステップＳ１８）。
【００５９】
このように、改版制御部５０は、ファーム活性適用処理中に、ＡＰＩを用いて実行される構成制御を受け付けることができないタイミングにおいて、コマンド管理部４２に停止指示を出す。そして、コマンド管理部４２は、停止指示を受け取ると、外部ソフトウェア３１が異常を検出することがないように対策をとった後に処理を停止する。したがって、改版制御部５０は、ファーム活性適用の際に、外部ソフトウェア３１が構成制御を実行して異常を検出することを防ぐことができる。
【００６０】
次に、ファーム活性適用の動作について図１１Ａ〜図１１Ｄ用いて説明する。図１１Ａ〜図１１Ｄは、ファーム活性適用の動作を示す図である。図１１Ａ〜図１１Ｄにおいて、○で囲まれたＭは、マスターＣＭ１０を示す。図１１Ａ（ａ）は、ファーム活性適用処理を開始する前の状態を示す。図１１Ａ（ａ）では、ＣＭ＃０、ＩＯＭ＃０、ＦＥＭ＃０がマスターとして動作している。
【００６１】
改版制御部５０は、まず、マスターとしては動作していないＩＯＭ＃１系及びＦＥＭ＃１系のファームウェアの改版を行う。図１１Ａ（ｂ）は、ＩＯＭ＃１系及びＦＥＭ＃１系のファーム改版動作を示す。図１１Ａ（ｂ）に示すように、ＤＥ＃００〜ＤＥ＃１９において、ＩＯＭ＃１系及びＦＥＭ＃１系のファームウェアが改版される。
【００６２】
そして、改版制御部５０は、ＣＭ＃１のファームウェアの改版を行う。ＣＭ＃１のファームウェアの改版中に、ＣＭ＃１の切り離し及びＣＭ＃１の組み込みのタイミング、キャッシュテーブルの同期処理のタイミングになると、改版制御部５０は、コマンド管理部４２に一時停止を指示する。図１１Ｂ（ｃ）は、ＣＭ＃１のファーム改版動作を示す。図１１Ｂ（ｃ）に示すように、ＣＭ＃１のＣＰＵ１１、ＩＯＣ１２及びＣＭ−ＥＸＰ１３で実行されるファームの改版中に、ＣＭ＃１の切り離し及びＣＭ＃１の組み込みのタイミング、キャッシュテーブルの同期処理のタイミングになると一時停止指示が行われる。
【００６３】
そして、改版制御部５０は、マスターＣＭ１０の切替を行う。マスターＣＭ１０の切替の前に改版制御部５０は、コマンド管理部４２に完全停止を指示する。図１１Ｂ（ｄ）は、マスターＣＭ１０の切替動作を示す。図１１Ｂ（ｄ）に示すように、完全停止指示が行われた後、マスターＣＭ１０がＣＭ＃０からＣＭ＃１に切替られる。
【００６４】
そして、改版制御部５０は、ＣＭ＃０のファームウェアの改版を行う。ＣＭ＃０のファームウェアの改版中に、ＣＭ＃０の切り離し及びＣＭ＃０の組み込みのタイミング、キャッシュテーブルの同期処理のタイミングになると、改版制御部５０は、コマンド管理部４２に一時停止を指示する。図１１Ｃ（ｅ）は、ＣＭ＃０のファーム改版動作を示す。図１１Ｃ（ｃ）に示すように、ＣＭ＃０のＣＰＵ１１、ＩＯＣ１２及びＣＭ−ＥＸＰ１３で実行されるファームの改版中に、ＣＭ＃０の切り離し及びＣＭ＃０の組み込みのタイミング、キャッシュテーブルの同期処理のタイミングになると一時停止指示が行われる。
【００６５】
そして、改版制御部５０は、マスターＣＭ１０の切り戻しを行う。マスターＣＭ１０の切り戻しの前に改版制御部５０は、コマンド管理部４２に完全停止を指示する。図１１Ｃ（ｆ）は、マスターＣＭ１０の切り戻し動作を示す。図１１Ｃ（ｆ）に示すように、完全停止指示が行われた後、マスターＣＭ１０がＣＭ＃１からＣＭ＃０に切り戻される。
【００６６】
そして、改版制御部５０は、マスターとしては動作していないＩＯＭ＃０系及びＦＥＭ＃０系のファームウェアの改版を行う。図１１Ｄ（ｇ）は、ＩＯＭ＃１系及びＦＥＭ＃１系のファーム改版動作を示す。図１１Ｄ（ｇ）に示すように、ＤＥ＃００〜ＤＥ＃１９において、ＩＯＭ＃１系及びＦＥＭ＃１系のファームウェアが改版される。
【００６７】
そして、改版制御部５０は、ファーム改版を終了する。図１１Ｄ（ｈ）は、ファーム改版終了後の状態を示す。図１１Ｄ（ｈ）では、ストレージ装置１の状態は、ファームウェア改版前の図１１Ａ（ａ）の状態に戻る。
【００６８】
次に、一時停止指示のフローについて説明する。図１２は、一時停止指示のフローを示すフローチャートである。図１２に示すように、改版制御部５０は、コマンド管理部４２に一時停止を指示する（ステップＳ２１）。そして、改版制御部５０は、コマンド管理部４２に状態を問い合わせることで、コマンド管理部４２から状態を取得し（ステップＳ２２）、取得した状態に基づいて、コマンド管理部４２の一時停止処理が完了したか否かを判定する（ステップＳ２３）。
【００６９】
そして、コマンド管理部４２の一時停止処理が完了した場合には、改版制御部５０は、次の処理に進む。一方、コマンド管理部４２の処理が完了していない場合には、改版制御部５０は、第１閾値内か否かを判定し（ステップＳ２４）、第１閾値内の場合には、ステップＳ２２へ戻り、第１閾値内でない場合には、次の処理に進む。
【００７０】
このように、改版制御部５０は、第１閾値内にコマンド管理部４２の一時停止処理が完了しない場合には、次の処理に進むので、ファームウェアの改版処理の中断時間を抑えることができる。なお、完全停止指示についても図１２と同様なフローで処理が行われる。
【００７１】
上述してきたように、実施例では、ＡＰＩプロバイダ３２が外部ソフトウェア３１のＡＰＩ実行を受け付けてＣＬＩコマンドに変換し、ＣＬＩ制御部４１が、ＣＬＩコマンドのうち非同期コマンドからコマンドセットを生成してコマンド管理部４２に渡す。そして、コマンド管理部４２は、コマンドセットからコマンドを１つずつ取り出してコマンド制御部４３に実行を依頼する。そして、コマンド制御部４３は、コマンドを実行する。また、コマンド制御部４３は、ストレージ装置１のファームウェアの改版を制御し、改版処理においてコマンドを実行できないタイミングでコマンド管理部４２にコマンドの実行停止を指示する。そして、コマンド管理部４２は、外部ソフトウェア３１が異常を検出しないための処理を行った後でコマンドの実行を停止する。したがって、ＣＭ１０は、外部ソフトウェア３１が異常を検出してサーバ３が停止することを防ぐことができる。
【００７２】
また、実施例では、コマンド制御部４３は、ＣＭ１０のファームウェアの改版において、ＣＭ１０の切り離し及び組み込みのタイミングとＣＭ１０間でのキャッシュテーブルの同期処理のタイミングでコマンド管理部４２に一時停止を指示する。また、コマンド制御部４３は、マスターＣＭ１０の切替のタイミングでコマンド管理部４２に完全停止を指示する。したがって、コマンド制御部４３は、適切なタイミングで停止を指示することができる。
【００７３】
また、実施例では、コマンド管理部４２は、一時停止を指示されると、ＡＰＩにタイムアウト要件があるタスクについては、掃き出し処理を行って処理を停止する。また、コマンド管理部４２は、一時停止を指示されると、タイムアウト要件がなく状態が実行中であるタスクについては、実行中のコマンドについて応答を受信した時点で処理を停止する。したがって、コマンド管理部４２は、外部ソフトウェア３１がＡＰＩ実行のタイムアウトにより異常を検出することを防ぐことができる。
【００７４】
また、実施例では、コマンド管理部４２は、一時停止を指示され、掃き出し処理が第２閾値時間内に完了しない場合には、ＡＰＩにタイムアウト要件があってもタスクの状態が未実行の状態であると、タスクの状態を未実行に維持して処理を停止する。したがって、コマンド管理部４２は、ファームウェアの改版処理に著しい遅れが生じることを防ぐことができる。
【００７５】
また、実施例では、コマンド管理部４２は、完全停止を指示されると、ＡＰＩにタイムアウト要件があるかないかにかかわらず、掃き出し処理を行って処理を停止する。したがって、コマンド制御部４３は、非同期コマンドが実行されない状態でマスターＣＭ１０の切替を行うことができる。
【００７６】
また、実施例では、コマンド管理部４２は、掃き出し処理が第２閾値時間内に完了しない場合には、ＡＰＩにタイムアウト要件があってもタスクの状態が未実行の状態であると、タスクの状態を未実行に維持して処理を停止する。したがって、コマンド管理部４２は、ファームウェアの改版処理に著しい遅れが生じることを防ぐことができる。
【００７７】
なお、実施例に係るストレージ装置には、図１に示した以外に様々な構成がある。そこで、他のストレージ装置の構成例について説明する。図１３は、他のストレージ装置の構成例を示す図である。図１３に示すように、ストレージ装置２は、ＣＥ＃０〜ＣＥ＃Ｂで表される１２個のＣＥ２ａと、ＤＥ＃００〜ＤＥ＃ＢＦで表される１９２個のＤＥ２ｂと、ＦＥ（Front  Enclosure）２ｃとを有する。
【００７８】
ＦＥ２ｃは、ＦＭ（Front  Module）＃００及びＦＭ＃０１で表される２つのＦＭ６０を有する筐体である。ＦＭ６０は、ＣＥ２ａを管理するとともに、ＣＥ２ａ間の通信を中継する。ＦＭ＃０は、ＳＶＣ（Service  Controller）＃０で表されるＳＶＣ６１と、ＦＲＴ（Frontend  Router）＃０及びＦＲＴ＃１で表される２つのＦＲＴ６２を有する。ＦＭ＃１は、ＳＶＣ＃１で表されるＳＶＣ６１と、ＦＲＴ＃２及びＦＲＴ＃３で表される２つのＦＲＴ６２を有する。ＳＶＣ６１は、ＣＥ２ａを管理し、ＣＥ２ａに搭載されるモジュールの監視及び制御を行う。ＦＲＴ６２は、ＣＥ２ａ間の通信経路を提供する。
【００７９】
ＣＥ２ａは、ＣＭ＃０とＣＭ＃１で表される２つのＣＭ１０ａを有する。ＣＭ１０ａは、ＣＰＵ１１と、２つのＩＯＣ１２と、ＣＭ−ＥＸＰ１３と、ＣＭ−ＢＩＯＳ１４と、４つのＣＡ１６と、ＮＴＢ（Non  Transparent  Bridge）１７とを有する。ＮＴＢ１７は、ＦＲＴ６２と接続するインタフェースである。
【００８０】
ＤＥ２ｂは、ＩＯＭ＃０及びＩＯＭ＃１で表される２つのＩＯＭ２１と、ＦＥＭ＃０及びＦＥＭ＃１で表される２つのＦＥＭ２２を有する。
【００８１】
なお、ストレージ装置２は、より多くの又はより少ないＣＥ２ａを有してもよい。また、ストレージ装置２は、より多くの又はより少ないＤＥ２ｂを有してもよい。
【００８２】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８３】
（付記１）データを記憶する不揮発性記憶装置と該不揮発性記憶装置へのアクセスを制御する２つの制御装置とを有するストレージ装置において、
前記制御装置は、
外部ソフトウェアからの指示をタスクとして受け付けて前記不揮発性記憶装置を制御するコマンドセットを生成するコマンドセット生成部と、
前記コマンドセット生成部により生成されたコマンドセットに含まれるコマンドの実行を管理するコマンド管理部と、
前記コマンド管理部により管理されるコマンドを実行すると共に、前記ストレージ装置のファームウェアの改版処理を制御し、前記改版処理において前記コマンドを実行できないタイミングで前記コマンド管理部に前記コマンドの実行停止を指示するコマンド制御部とを有し、
前記コマンド管理部は、前記実行停止を指示されると、外部ソフトウェアが異常を検出しないための処理を実行した後で前記コマンドの実行を停止することを特徴とするストレージ装置。
【００８４】
（付記２）前記コマンド制御部は、前記制御装置の切り離し及び組み込みのタイミングと他の制御装置とのキャッシュテーブルの同期処理のタイミングで前記コマンドの実行の一時停止を指示し、他の制御装置をマスター制御装置に切り替えるタイミングで前記コマンドの実行の完全停止を指示することを特徴とする付記１に記載のストレージ装置。
【００８５】
（付記３）前記コマンド管理部は、前記コマンド制御部に前記一時停止を指示されると、前記外部ソフトウェアからの指示にタイムアウト要件がある場合には、前記タスクの状態が成功又は失敗になるまで処理を行って処理を停止し、前記外部ソフトウェアからの指示にタイムアウト要件がない場合には、実行中のコマンドについて応答を受信した時点で処理を停止することを特徴とする付記２に記載のストレージ装置。
【００８６】
（付記４）前記コマンド管理部は、前記タスクの状態が成功又は失敗になるまでの処理が所定の時間内に完了しない場合には、前記外部ソフトウェアからの指示にタイムアウト要件があって前記タスクの状態が未実行の状態であると、前記タスクの状態を未実行に維持して処理を停止することを特徴とする付記３に記載のストレージ装置。
【００８７】
（付記５）前記コマンド管理部は、前記コマンド制御部に前記完全停止を指示されると、前記タスクの状態が成功又は失敗になるまで処理を行って処理を停止することを特徴とする付記２に記載のストレージ装置。
【００８８】
（付記６）前記コマンド管理部は、前記タスクの状態が成功又は失敗になるまでの処理が所定の時間内に完了しない場合には、前記外部ソフトウェアからの指示にタイムアウト要件があって前記タスクの状態が未実行の状態であると、前記タスクの状態を未実行に維持して処理を停止し、前記外部ソフトウェアからの指示にタイムアウト要件がなくて前記タスクの状態が実行中の状態であると、実行中のコマンドについて応答を受信した時点で処理を停止することを特徴とする付記５に記載のストレージ装置。
【００８９】
（付記７）不揮発性記憶装置へデータを記憶するストレージ装置を制御するストレージ制御装置において、
外部ソフトウェアからの指示をタスクとして受け付けて前記不揮発性記憶装置を制御するコマンドセットを生成するコマンドセット生成部と、
前記コマンドセット生成部により生成されたコマンドセットに含まれるコマンドの実行を管理するコマンド管理部と、
前記コマンド管理部により管理されるコマンドを実行すると共に、前記ストレージ装置のファームウェアの改版処理を制御し、前記改版処理において前記コマンドを実行できないタイミングで前記コマンド管理部に前記コマンドの実行停止を指示するコマンド制御部とを有し、
前記コマンド管理部は、前記実行停止を指示されると、外部ソフトウェアが異常を検出しないための処理を実行した後で前記コマンドの実行を停止することを特徴とするストレージ制御装置。
【００９０】
（付記８）前記コマンド制御部は、前記制御装置の切り離し及び組み込みのタイミングと他の制御装置とのキャッシュテーブルの同期処理のタイミングで前記コマンドの実行の一時停止を指示し、他の制御装置をマスター制御装置に切り替えるタイミングで前記コマンドの実行の完全停止を指示することを特徴とする付記７に記載のストレージ制御装置。
【００９１】
（付記９）前記コマンド管理部は、前記コマンド制御部に前記一時停止を指示されると、前記外部ソフトウェアからの指示にタイムアウト要件がある場合には、前記タスクの状態が成功又は失敗になるまで処理を行って処理を停止し、前記外部ソフトウェアからの指示にタイムアウト要件がない場合には、実行中のコマンドについて応答を受信した時点で処理を停止することを特徴とする付記８に記載のストレージ制御装置。
【００９２】
（付記１０）前記コマンド管理部は、前記コマンド制御部に前記完全停止を指示されると、前記タスクの状態が成功又は失敗になるまで処理を行って処理を停止することを特徴とする付記８に記載のストレージ制御装置。
【００９３】
（付記１１）不揮発性記憶装置へデータを記憶するストレージ装置を制御するストレージ制御装置が有するコンピュータで実行されるストレージ制御プログラムにおいて、
外部ソフトウェアからの指示をタスクとして受け付けて前記不揮発性記憶装置を制御するコマンドセットを生成し、
生成したコマンドセットに含まれるコマンドを実行すると共に、前記ストレージ装置のファームウェアの改版処理を制御し、前記改版処理において前記コマンドを実行できないタイミングにおいて、前記外部ソフトウェアが異常を検出しないための処理を実行した後で前記コマンドの実行を停止する
処理を前記コンピュータに実行させることを特徴とするストレージ制御プログラム。
【００９４】
（付記１２）前記コマンドの実行を停止する処理は、前記制御装置の切り離し及び組み込みのタイミングと他の制御装置とのキャッシュテーブルの同期処理のタイミングで前記コマンドの実行を一時停止し、他の制御装置をマスター制御装置に切り替えるタイミングで前記コマンドの実行を完全停止することを特徴とする付記１１に記載のストレージ制御プログラム。
【００９５】
（付記１３）前記一時停止する処理は、前記外部ソフトウェアからの指示にタイムアウト要件がある場合には、前記タスクの状態が成功又は失敗になるまで処理を行って処理を停止し、前記外部ソフトウェアからの指示にタイムアウト要件がない場合には、実行中のコマンドについて応答を受信した時点で処理を停止することを特徴とする付記１２に記載のストレージ制御プログラム。
【００９６】
（付記１４）前記完全停止する処理は、前記タスクの状態が成功又は失敗になるまで処理を行って処理を停止することを特徴とする付記１２に記載のストレージ制御プログラム。
【符号の説明】
【００９７】
１，２    ストレージ装置
１ａ，２ａ    ＣＥ
１ｂ，２ｂ    ＤＥ
２ｃ    ＦＥ
３    サーバ
１０，１０ａ    ＣＭ
１１    ＣＰＵ
１１ａ    メモリ
１２    ＩＯＣ
１３    ＣＭ−ＥＸＰ
１４    ＣＭ−ＢＩＯＳ
１５    ＢＵＤ
１６    ＣＡ
１７    ＮＴＢ
２１    ＩＯＭ
２２    ＦＥＭ
２３    ＨＤＤ
３１    外部ソフトウェア
３２    ＡＰＩプロバイダ
４１    ＣＬＩ制御部
４２    コマンド管理部
４３    コマンド制御部
４４    構成制御部
４５    ＩＯ制御部
５０    改版制御部
６０    ＦＭ
６１    ＳＶＣ
６２    ＦＲＴ
【図１】
2020112865.tif 000003
【図２】
2020112865.tif 000004
【図３】
2020112865.tif 000005
【図４】
2020112865.tif 000006
【図５】
2020112865.tif 000007
【図６】
2020112865.tif 000008
【図７】
2020112865.tif 000009
【図８】
2020112865.tif 000010
【図９】
2020112865.tif 000011
【図１０】
2020112865.tif 000012
【図１１Ａ】
2020112865.tif 000013
【図１１Ｂ】
2020112865.tif 000014
【図１１Ｃ】
2020112865.tif 000015
【図１１Ｄ】
2020112865.tif 000016
【図１２】
2020112865.tif 000017
【図１３】
2020112865.tif 000018