(57)【要約】【課題】入出力性能に影響させずに記憶装置の論理フォーマットを高速化する。【解決手段】記憶装置３１の入出力性能を取得する入出力性能取得部１２と、取得した入出力性能の変化に応じて、記憶装置３１の記憶領域の論理フォーマットの多重度を決定する多重度決定部１２と、決定された多重度に応じた複数の論理フォーマットコマンドを記憶装置３１に対して並行して発行するコマンド発行部１４とを備える。【選択図】図１
2020038475.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置を制御するストレージ制御装置において、
前記記憶装置の入出力性能を取得する入出力性能取得部と、
前記入出力性能取得部によって取得した前記入出力性能の変化に応じて、前記記憶装置の記憶領域の論理フォーマットの多重度を決定する多重度決定部と、
前記多重度決定部によって決定された多重度に応じた複数の論理フォーマットコマンドを前記記憶装置に対して並行して発行するコマンド発行部と
を備える、ストレージ制御装置。
【請求項２】
前記多重度決定部が、
前記入出力性能取得部によって今回取得された前記入出力性能が、前回のサンプル時に取得した入出力性能に比べて向上している場合に、前記多重度を増加させる
ことを特徴とする、請求項１記載のストレージ制御装置。
【請求項３】
前記多重度決定部が、
前記入出力性能取得部によって今回取得された前記入出力性能が、前回のサンプル時に取得した入出力性能に比べて低下している場合に、前記多重度を減少させる
ことを特徴とする、請求項１または２記載のストレージ制御装置。
【請求項４】
前記多重度決定部が、
当該ストレージ制御装置のハードウェア資源における論理フォーマットに割り当てられている第１容量を、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）構成に基づいて設定される論理フォーマット実行にかかる基準メモリ容量で除算することで、当該ストレージ制御装置における上限多重度を決定する
ことを特徴とする、請求項１〜３のいずれか１項に記載のストレージ制御装置。
【請求項５】
前記多重度決定部が、
外部装置から当該ストレージ制御装置に対して入出力要求を受け付けた場合に、前記多重度を１に設定することで、前記コマンド発行部による複数の論理フォーマットコマンドの発行を抑止する
ことを特徴とする、請求項１〜４のいずれか１項に記載のストレージ制御装置。
【請求項６】
前記多重度決定部が、
前記多重度から前記コマンド発行部から発行されている未完了の前記論理フォーマットコマンドの数を減算して新規論理フォーマットコマンド発行数を算出し、当該新規論理フォーマットコマンド発行数を前記コマンド発行部に通知し、
前記コマンド発行部が、前記新規論理フォーマットコマンド発行数の論理フォーマットコマンドを前記記憶装置に対して発行する
ことを特徴とする、請求項１〜５のいずれか１項に記載のストレージ制御装置。
【請求項７】
当該ストレージ制御装置において複数のＲＡＩＤが稼働している場合に、前記複数のＲＡＩＤのうち、前記論理フォーマットの発行対象の前記記憶装置が構成する第１のＲＡＩＤと異なる第２のＲＡＩＤにおいて論理フォーマットの実行中である場合に、
前記多重度決定部が、当該ストレージ制御装置において稼働しているＲＡＩＤの数に応じて前記多重度を減少させる
ことを特徴とする、請求項４記載のストレージ制御装置。
【請求項８】
前記多重度決定部が、
前記第１のＲＡＩＤに対して設定される第１多重度上限値と、前記第２のＲＡＩＤに対して設定される第２多重度上限値とのうち、小さい方の値を論理フォーマット実行中のＲＡＩＤの数で除算した商を用いて、前記第１多重度上限値を更新する
ことを特徴とする、請求項７記載のストレージ装置。
【請求項９】
記憶装置を制御するストレージ制御装置のプロセッサに、
前記記憶装置の入出力性能を取得し、
取得した前記入出力性能の変化に応じて、前記記憶装置の記憶領域の論理フォーマットの多重度を決定し、
決定された多重度に応じた複数の論理フォーマットコマンドを前記記憶装置に対して並行して発行する
処理を実行させる、ストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
ストレージ装置においては、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等の記憶装置を使用するために、ＣＭ（Controller Module）が、その記憶領域に0をライトするフォーマット（初期化処理）を行なう。
【０００３】
また、ＣＭは、記憶媒体のフォーマットを行なうに際して、記憶媒体にＢＣＣ（Block Check Code）を書き込む論理フォーマット（ＬＦ：Logical Format）を行なう。
【０００４】
図５はデータブロックの構成を示す図である。
【０００５】
この図５に示すデータブロックは、512Byteのデータ（Data）に8ByteのＢＣＣを付加することで構成される。ＢＣＣは論理的なデータブロックの正当性を確認するための情報であり、データの異常を検出するための冗長コード（Block CRC）とデータブロックの論理的なデータ位置をチェックするための位置情報（Block ID）とを備える。なお、CRCは、Cyclic Redundancy Checkの略語であり、IDはidentificationの略語である。
【０００６】
ＣＭは、記憶装置に対して単一のＬＦコマンドをシーケンシャルに発行することで論理フォーマットを実現する。すなわち、先に発行したＬＦコマンドの処理が完了すると、次のＬＦコマンドを発行することで、記憶装置のＬＦは行なわれる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−４１４３１号公報
【特許文献２】特開２００１−２２５２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
近年、記憶装置の大容量化が進んでおり、例えば、ＳＳＤにおいては、30TB，64TB，128TB等の容量を有するものも知られている。このような記憶装置の大容量化が進むにつれ、論理フォーマットに要する時間も増大するという課題がある。例えば、記憶装置の論理フォーマットに１週間以上かかることもある。
【０００９】
１つの側面では、本発明は、入出力性能に影響させずに記憶装置の論理フォーマットを高速化することを目的とする。
【課題を解決するための手段】
【００１０】
このため、このストレージ制御装置は、記憶装置を制御するストレージ制御装置において、前記記憶装置の入出力性能を取得する入出力性能取得部と、前記入出力性能取得部によって取得した前記入出力性能の変化に応じて、前記記憶装置の記憶領域の論理フォーマットの多重度を決定する多重度決定部と、前記多重度決定部によって決定された多重度に応じた複数の論理フォーマットコマンドを前記記憶装置に対して並行して発行するコマンド発行部とを備える。
【発明の効果】
【００１１】
一実施形態によれば、入出力性能に影響させずに記憶装置の論理フォーマットを高速化することができる。
【図面の簡単な説明】
【００１２】
【図１】実施形態の一例としてのストレージ装置の構成を例示する図である。
【図２】実施形態の一例としてのストレージ装置のＣＭのハードウェア構成を例示する図である。
【図３】実施形態の一例としてのストレージ装置のＬＦ制御部およびＬＦ実行部の処理を説明するための図である。
【図４】実施形態の一例としてのストレージ装置におけるＬＦ制御部の処理を説明するフローチャートである。
【図５】データブロックの構成を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本ストレージ制御装置およびストレージ制御プログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１４】
〔Ａ〕構成
図１は実施形態の一例としてのストレージ装置１の構成を例示する図、図２はそのＣＭ１００のハードウェア構成を例示する図である。
【００１５】
本ストレージ装置１は、ドライブエンクロージャ（Drive Enclosure：ＤＥ）３０に格納された記憶装置３１を仮想化して、仮想ストレージ環境を形成する。そして、ストレージ装置１は、仮想ボリュームを、上位装置であるホスト装置（サーバ）２に提供する。
【００１６】
本ストレージ装置１は、１以上（図１に示す例では１つ）のホスト装置２に対して通信可能に接続されている。ホスト装置２とストレージ装置１とは、後述するＣＡ（Communication Adapter）１０１により接続されている。
【００１７】
ホスト装置２は、例えば、サーバ機能を備えた情報処理装置であり、本ストレージ装置１との間において、ＮＡＳ（Network Attached Storage）やＳＡＮ（Storage Area Network）のコマンドを送受信する。ホスト装置２は、例えば、ストレージ装置１に対してリード／ライト等のストレージアクセスコマンドを送信することにより、ストレージ装置１が提供するボリュームにデータのライトまたはリードを行なう。
【００１８】
そして、本ストレージ装置１は、ホスト装置２からボリュームに対して行なわれる入出力要求（例えば、ライト要求やリード要求）に応じて、このボリュームに対応する記憶装置３１に対して、データのリードやライト等の処理を行なう。なお、以下では、ホスト装置２からの入出力要求のことをＩ／Ｏ要求という場合がある。
【００１９】
本ストレージ装置１は、図１に示すように、１つ以上（図１に示す例では２つ）のＣＭ１００−１，１００−２及び１つ以上（図２に示す例では２つ）のＤＥ３０−１，３０−２を備える。
【００２０】
ＤＥ３０−１，３０−２は、１つ以上（図１に示す例では４つ）の記憶装置（物理ディスク）３１を搭載し、これらの記憶装置３１の記憶領域（実ボリューム，実ストレージ）を、本ストレージ装置１に対して提供する。
【００２１】
図１に示す例において、ＣＭ１００−１にＤＥ３０−１が接続され、ＣＭ１００−２にＤＥ３０−２が接続されている。
【００２２】
なお、以下、ＤＥを示す符号としては、複数のＤＥのうち１つを特定する必要があるときには符号３０−１，３０−２を用いるが、任意のＤＥを指すときには符号３０を用いる。
【００２３】
例えば、ＤＥ３０は、複数段のスロット（図示省略）を備え、これらのスロットに、記憶装置３１を装着することにより、実ボリューム容量を随時変更することができる。また、複数の記憶装置３１を用いてＲＡＩＤ（Redundant Arrays of Inexpensive Disks）を構成することができる。
【００２４】
図１に示す例においては、ＤＥ３０−１に搭載された４つの記憶装置３１のうち２つを用いてＲＡＩＤ＃１が構成され、残りの２つを用いてＲＡＩＤ＃２が構成されている。また、ＤＥ３０−２に搭載された４つの記憶装置３１を用いてＲＡＩＤ＃３が構成されている。
【００２５】
記憶装置３１は、後述するメモリ１０６と比較すると容量の大きい、ＨＤＤ，ＳＳＤ等の記憶装置（ストレージ）であって、種々のデータを格納するものである。なお、以下では、記憶装置のことをドライブもしくはディスクという場合がある。
【００２６】
図２に示すように、ＤＥ３０−１は、ＣＭ１００−１のデバイスアダプタ（Device Adapter：ＤＡ）１０３，１０３と接続されている。同様に、ＤＥ３０−２は、ＣＭ１００−２のＤＡ１０３，１０３と接続されている。
【００２７】
また、ＤＥ３０−１はＣＭ１００−２のＤＡ１０３，１０３ともそれぞれ接続されてもよく、ＤＥ３０−２はＣＭ１００−１のＤＡ１０３，１０３ともそれぞれ接続されてもよい。これにより、各ＤＥ３０には、ＣＭ１００−１，１００−２のいずれからもアクセスして、データのライトやリードを行なうことができる。すなわち、ＤＥ３０の各記憶装置３１に対して、ＣＭ１００−１，１００−２のそれぞれを接続することにより、記憶装置３１へのアクセス経路が冗長化される。
【００２８】
ＣＭ１００−１，１００−２は、ストレージ装置１内の動作を制御する制御装置（コントローラ，ストレージ制御装置）であり、ホスト装置２から送信されるＩ／Ｏ要求に従って、ＤＥ３０の記憶装置３１へのデータアクセス制御等、各種制御を行なう。又、ＣＭ１００−１，１００−２は互いに同様の構成を有している。以下、ＣＭを示す符号としては、複数のＣＭのうち１つを特定する場合には符号１００−１，１００−２を用い、任意のＣＭを指すときには符号１００を用いる。また、ＣＭ１００−１をＣＭ＃１と、ＣＭ１００−２をＣＭ＃２と、それぞれ表してもよい。
【００２９】
ＣＭ１００−１，１００−２は二重化されており、例えば、通常は、ＣＭ１００−１（ＣＭ＃１）がプライマリとして各種制御を行なう。しかし、プライマリＣＭ１００−１の故障時には、セカンダリのＣＭ１００−２（ＣＭ＃２）がプライマリとしてＣＭ１００−１の動作を引き継ぐ。
【００３０】
ＣＭ１００−１，１００−２は、ＣＡ１０１を介してそれぞれホスト装置２に接続される。なお、各ＣＭ１００に複数のＣＡ１０１を備え、各ＣＭ１００とホスト装置２との経路を冗長化してもよい。
【００３１】
ＣＭ１００は、ホスト装置２から送信されるリード／ライト等のＩ／Ｏ要求を受信し、ＤＡ１０３等を介して記憶装置３１の制御を行なう。すなわち、ＣＭ１００は記憶装置３１を制御するストレージ制御装置に相当する。
【００３２】
また、ＣＭ１００−１，１００−２は、図１に示すように、通信バス１３１を介して相互に通信可能に接続されている。すなわち、ＣＭ１００−１，１００−２はＣＭ間通信を実現することができる。なお、通信バス１３１は、例えば、ＰＣＩｅ（Peripheral Component Interconnect Express）バスであってもよく、また、ＰＣＩｅ以外の規格のバスであってもよい。
【００３３】
ＣＭ１００−１，１００−２は、図示しないコントローラエンクロージャ（Controller Enclosure：ＣＥ）に搭載されてもよい。
【００３４】
ＣＭ１００は、図２に示すように、ＣＡ１０１と複数（図２に示す例では２つ）のＤＡ１０３，１０３とを備えるとともに、ＣＰＵ（Central Processing Unit）１１０，メモリ１０６，不揮発性メモリ１０７およびＩＯＣ（Input Output Controller）１０８を備える。ＣＡ１０１，ＣＰＵ１１０，メモリ１０６，不揮発性メモリ１０７，ＩＯＣ１０８および各ＤＡ１０３は、例えばＰＣＩｅインタフェースを介して相互に通信可能に接続される。
【００３５】
ＣＡ１０１は、ホスト装置２等から送信されたデータを受信したり、ＣＭ１００から出力するデータをホスト装置２等に送信したりするアダプタである。すなわち、ＣＡ１０１は、ホスト装置２等の外部装置との間でのデータの入出力を制御する。
【００３６】
ＣＡ１０１は、例えば、ＮＡＳを介してホスト装置２と通信可能に接続するネットワークアダプタであり、例えば、ＬＡＮ（Local Area Network）インタフェース等である。各ＣＭ１００は、ＣＡ１０１により図示しない通信回線を介してホスト装置２等と接続され、Ｉ／Ｏ要求の受信やデータの送受信等を行なう。図２に示す例においては、ＣＭ１００−１，１００−２のそれぞれに１つのＣＡ１０１が備えられている。
【００３７】
また、ＣＡ１０１は、ＳＡＮを介してホスト装置２と通信可能に接続するネットワークアダプタであってもよい。すなわち、例えば、ｉＳＣＳＩ（Internet Small Computer System Interface）インタフェースやＦＣ（Fibre Channel）インタフェースであってもよい。各ＣＭ１００は、ＣＡ１０１により図示しない通信回線を介してホスト装置２等と接続され、Ｉ／Ｏ要求の受信やデータの送受信等を行なってもよい。
【００３８】
ＤＡ１０３は、ＤＥ３０や記憶装置３１等と通信可能に接続するためのインタフェースである。ＤＡ１０３は、ＤＥ３０の記憶装置３１が接続され、各ＣＭ１００は、ホスト装置２から受信したＩ／Ｏ要求に基づき、記憶装置３１に対するアクセス制御を行なう。
【００３９】
各ＣＭ１００は、ＤＡ１０３を介して、記憶装置３１に対するデータのライトやリードを行なう。また、ＣＭ１００−１，１００−２のそれぞれに２つのＤＡ１０３，１０３が備えられている。そして、ＣＭ１００−１，１００−２のそれぞれにおいて、各ＤＡ１０３にＤＥ３０が接続されている。
【００４０】
不揮発性メモリ１０７は、ＣＰＵ１１０が実行するプログラムや種々のデータ等を格納する記憶装置である。
【００４１】
メモリ（メインメモリ）１０６は、種々のデータやプログラムを一時的に格納する記憶装置であり、ストレージ制御プログラムを格納するほか、キャッシュ領域を有する。ストレージ制御プログラムは、例えば、本実施形態の制御機能（例えば、図１に示すメモリ管理部１１，ＬＦ制御部１２，Ｉ／Ｏ制御部１３，ＬＦ実行部１４およびＩ／Ｏ実行部１５としての機能）を実現すべくＣＰＵ１１０が実行するプログラムであり、メモリ１０６あるいは不揮発性メモリ１０７に保存される。キャッシュ領域は、ホスト装置２から受信したデータや、ホスト装置２に対して送信するデータを一時的に格納する。なお、メモリ１０６は、前述した記憶装置（ドライブ）３１と比較するとアクセス速度は高速であるが容量の小さい、ＲＡＭ（Random Access Memory）等である。
【００４２】
メモリ１０６は、ＣＭ１００において、記憶装置３１の記憶領域に論理フォーマット（ＬＦ）を行なう際に使用されるハードウェア資源である。
【００４３】
ＩＯＣ１０８は、各ＣＭ１００内におけるデータ転送を制御する制御装置であり、例えば、メモリ１０６に格納されたデータをＣＰＵ１１０を介することなく転送させるＤＭＡ（Direct Memory Access）転送を実現する。
【００４４】
ＣＰＵ１１０は、種々の制御や演算を行なう処理装置であり、例えばマルチコアプロセッサ（マルチコアＣＰＵ）である。ＣＰＵ１１０は、メモリ１０６，不揮発性メモリ１０７等に格納されたＯＳ（Operating System）やプログラムを実行することにより、種々の機能を実現する。特に、本実施形態において、ＣＰＵ１１０は、ストレージ制御プログラムを実行することで、後述するメモリ管理部１１，ＬＦ制御部１２，Ｉ／Ｏ制御部１３，ＬＦ実行部１４およびＩ／Ｏ実行部１５としての機能を果たす。
【００４５】
なお、これらのメモリ管理部１１，ＬＦ制御部１２，Ｉ／Ｏ制御部１３，ＬＦ実行部１４およびＩ／Ｏ実行部１５としての機能を実現するためのプログラム（ストレージ制御プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００４６】
メモリ管理部１１，ＬＦ制御部１２，Ｉ／Ｏ制御部１３，ＬＦ実行部１４およびＩ／Ｏ実行部１５としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ１０６）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１１０）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【００４７】
Ｉ／Ｏ制御部１３は、各記憶装置３１に対するＩ／Ｏアクセスを制御する。例えば、Ｉ／Ｏ制御部１３は、ホスト装置２からのＩ／Ｏ要求に応じてＩ／Ｏ実行部１５に対してアクセス先の記憶装置３１に対するリードやライトの実行を指示する。また、Ｉ／Ｏ制御部１３は、ホスト装置２から自ＣＭ１００に対して発行されているＩ／Ｏ要求を管理する機能を有している。これにより、後述するＬＦ制御部１２は、Ｉ／Ｏ制御部１３に確認することで、自ＣＭ１００に対してホスト装置２からＩ／Ｏ要求が発行されているかを知ることができる。
【００４８】
Ｉ／Ｏ実行部１５は、Ｉ／Ｏ制御部１３からの指示に従って、記憶装置３１に対するＩ／Ｏアクセスを実行する。例えば、Ｉ／Ｏ実行部１５は、アクセス対象の記憶装置３１に対してリードコマンドやライトコマンド等のＩ／Ｏコマンドを発行することで、アクセス対象の記憶装置３１にリードやライトのＩ／Ｏアクセスを実行する。なお、これらのＩ／Ｏ制御部１３およびＩ／Ｏ実行部１５としての機能は、既知の種々の手法を用いて実現することができ、その詳細な説明は省略する。
【００４９】
メモリ管理部１１は、ＬＦの実行に関するメモリ容量を管理する。例えば、メモリ管理部１１は、第１メモリ容量および第２メモリ容量を管理する。
【００５０】
第１メモリ容量は、ＣＭ１００において、メモリ１０６の記憶領域のうちＬＦの実行に予め割り当てられ、論理フォーマットを実行するために使用可能な領域のサイズ（メモリ容量）である。第１メモリ容量は、例えば、6MBである。以下、第１メモリ容量を符号（Ａ）で表す場合がある。第１メモリ容量は、自ＣＭ１００のハードウェア資源（メモリ１０６）における論理フォーマットに割り当てられている容量を示す。第１メモリ容量は、ＣＭ１００のハードウェア資源における論理フォーマットに割り当てられている第１容量に相当する。
【００５１】
第２メモリ容量は、ＲＡＩＤ構成に合わせて設定される１単位の論理フォーマット動作（１単位ＬＦ動作）に必要なメモリ容量である。
【００５２】
第２メモリ容量は、例えば、ＲＡＩＤにおけるストライプの境界サイズ（ストライプサイズ）に応じて決定される値であり、例えば、1.5MBである。以下、第２メモリ容量を符号（Ｂ）で表す場合がある。
【００５３】
ＬＦの実行に際して、ＲＡＩＤのストライプの境界サイズに合わせたデータサイズで記憶装置３１にアクセスすることで、ホスト装置２からの通常のＩ／Ｏ要求に対するものと同様のアクセス効率を得ることができる。
【００５４】
この第２メモリ容量は、ＲＡＩＤ構成に基づいて設定されるＬＦ実行にかかる基準メモリ容量に相当する。
【００５５】
これらの第１メモリ容量および第２メモリ容量は、予めシステム管理者等によって規定され、不揮発性メモリ１０７の所定の領域に装置構成情報として格納されてもよい。メモリ管理部１１は、本ストレージ装置１の起動時にこの装置構成情報から第１メモリ容量や第２メモリ容量の値を読み出すことで取得してもよい。
【００５６】
メモリ管理部１１は、取得した第１メモリ容量および第２メモリ容量をメモリ１０６の所定の領域に格納する。
【００５７】
ＬＦ制御部１２は、後述するＬＦ実行部１４により記憶装置３１に対して同時に並行して発行されるＬＦコマンドの数を決定する。以下、ＬＦ実行部１４により記憶装置３１に対して同時に並行して発行されるＬＦコマンドの数をＬＦコマンド多重度という場合がある。
【００５８】
図３は実施形態の一例としてのストレージ装置１のＬＦ制御部１２およびＬＦ実行部１４の処理を説明するための図である。
【００５９】
ＬＦ制御部１２は、以下に示すフェーズ（PHASE）１〜３の処理を順番に実行することでＬＦコマンド多重度を決定する。本ストレージ装置１においては、本ストレージ装置１においては、ＬＦコマンド多重度には継続ＬＦ処理数および新規ＬＦ処理数が含まれる。そして、ＬＦ制御部１２は、継続ＬＦ処理数および新規ＬＦ処理数をＬＦ実行部１４に通知する。
【００６０】
ここで、継続ＬＦ処理数は、既にＬＦ実行部１４から発行され、処理中のＬＦコマンドの数である。ＬＦ制御部１２は、ＬＦ実行部１４から記憶装置３１に対して発行されているＬＦコマンドの数を管理する機能を有し、継続ＬＦ処理数を把握することができる。新規ＬＦ処理数は、これからＬＦ実行部１４に発行させるＬＦコマンドの数である。
【００６１】
以下、ＬＦ制御部１２が後述するＬＦ実行部１４に対してＬＦコマンドを発行させ、この発行されたＬＦコマンドの処理が完了するまでの、一つのＬＦコマンドについての一連の処理をＬＦコマンド処理という場合がある。また、１つのＬＦコマンドを１単位という場合がある。
【００６２】
［フェーズ１］
フェーズ１においては、ＬＦ制御部１２は、「ＣＭあたりＬＦ多重度上限値」を決定する。ＣＭあたりＬＦ多重度上限値は、一のＣＭ１００において並行して同時に（多重に）発行できるＬＦコマンドの最大数であり、ＣＭ１００のハードウェアリソースの制限に基づいて決定される。具体的には、ＣＭあたりＬＦ多重度上限値は、自ＣＭ１００に備えられたメモリ１０６の容量上の制限に基づいて決定される。
【００６３】
より具体的には、ＬＦ制御部１２は、第１メモリ容量を第２メモリ容量で除算することでＣＭあたりＬＦ多重度上限値を決定する。以下、ＣＭあたりＬＦ多重度上限値を符号（Ｃ）で表す場合がある。すなわち、ＬＦ制御部１２は以下の式（１）に基づきＣＭあたりＬＦ多重度上限値（Ｃ）を算出する。
【００６４】
ＣＭあたりＬＦ多重度上限値（Ｃ）＝第１メモリ容量（Ａ）／第２メモリ容量（Ｂ）
・・・（１）
例えば、第１メモリ容量が6MB（Ａ＝6MB）、第２メモリ容量が1.5MB（Ｂ＝1.5MB）の場合、ＣＭあたりＬＦ多重度上限値（Ｃ）は4（＝6MB／1.5MB）となる（Ｃ＝4）。すなわち、本例においては、ＣＭ１００のメモリ１０６の容量上の制限の観点からはＬＦコマンド多重度の上限は4となる。
【００６５】
なお、このフェーズ１の処理は、オペレータからフォーマット実施命令を受けてＬＦを開始した時に１回のみ行なわれる。
【００６６】
すなわち、ＣＭあたりＬＦ多重度上限値（Ｃ）は、論理フォーマットを開始する契機（ボリューム作成時）に決定される。また、このＣＭあたりＬＦ多重度上限値（Ｃ）は、論理フォーマットの単位の初期値となる。具体的には、ＣＭあたりＬＦ多重度上限値（Ｃ）は、後述するフェーズ２において動作可能多重度（Ｄ）（該当ＲＡＩＤ多重度上限値（Ｅ））の初期値として使用される。
【００６７】
なお、このフェーズ１において、ＬＦコマンド処理に用いるメモリ１０６の記憶領域等のリソースを獲得してもよい。
【００６８】
［フェーズ２］
フェーズ２においては、ＬＦ制御部１２は、「動作可能多重度」を決定する。以下、動作可能多重度を符号（Ｄ）で表す場合がある。
【００６９】
動作可能多重度（Ｄ）は、当該ＬＦ制御部１２が動作するＣＭ１００（自ＣＭ１００）が並行して同時に発行するＬＦコマンドの数（発行多重度）であり、ＬＦの実行により生じる負荷やホスト装置２からのＩ／Ｏ要求を勘案して決定される。
【００７０】
また、ＬＦ制御部１２は、動作可能多重度（Ｄ）を決定するために、変数として「該当ＲＡＩＤ多重度上限」を用いる。以下、該当ＲＡＩＤ多重度上限値を符号（Ｅ）で表す場合がある。該当ＲＡＩＤ多重度上限値（Ｅ）はＲＡＩＤ毎に設定される。該当ＲＡＩＤ多重度上限値（Ｅ）の初期値には、フェーズ１において決定されたＣＭあたりＬＦ多重度上限値（Ｃ）を用いてもよい。
【００７１】
フェーズ２の処理は、オペレータからフォーマット実施命令を受けてＬＦを開始した時の他、１単位の処理が完了する毎に実行される。すなわち、一つのＬＦコマンドによる処理が完了する毎にもフェーズ２の処理は実行される。
【００７２】
ＬＦ制御部１２は、ホスト装置２からＩ／Ｏ要求が発行されている場合には、このＩ／Ｏ要求への応答に影響を与えないために、動作可能多重度（Ｄ）に1を設定する（Ｄ＝1）。動作可能多重度（Ｄ）が1である場合には、１つのＬＦコマンドのみが発行される。すなわち、本ストレージ装置１においては、ホスト装置２からのＩ／Ｏ要求をＬＦよりも優先して処理する。
【００７３】
また、ＬＦ制御部１２は、一のＲＡＩＤ（処理対象ＲＡＩＤという）を構成する記憶装置３１に対してＬＦを行なうに際して、他のＲＡＩＤにおいてＬＦが実行中である場合には、これらの処理対象ＲＡＩＤの該当ＲＡＩＤ多重度上限値（Ｅ）と他のＲＡＩＤとの該当ＲＡＩＤ多重度上限値（Ｅ）とを比較する。そして、ＬＦ制御部１２は、これらの処理対象ＲＡＩＤと他のＲＡＩＤとのうち値が小さい方の該当ＲＡＩＤ多重度上限値（Ｅ）を、自ＣＭ１００の管理下において実行中のＲＡＩＤの数で除算した商（整数部）を動作可能多重度（Ｄ）として設定する。
【００７４】
例えば、処理対象ＲＡＩＤの該当ＲＡＩＤ多重度上限値（Ｅ）が6であり、他のＲＡＩＤの該当ＲＡＩＤ多重度上限値（Ｅ）が3であり、自ＣＭ１００において稼働中のＲＡＩＤ数（実行中ＲＡＩＤ数）が2である場合について考える。
【００７５】
「処理対象ＲＡＩＤの該当ＲＡＩＤ多重度上限値（Ｅ＝6）」＞「他のＲＡＩＤの該当ＲＡＩＤ多重度上限値（Ｅ＝3）」であるので、ＬＦ制御部１２は小さい方の該当ＲＡＩＤ多重度上限値（Ｅ＝3）を実行中ＲＡＩＤ数（＝2）で除算することで、3÷2＝1.5≒1を算出する。なお、小数点以下は切り捨てて整数とする。
【００７６】
ＬＦ制御部１２は、上述の如く算出した1を、処理対象ＲＡＩＤの動作可能多重度（Ｄ）として設定する（Ｄ＝1）。このように、複数のＲＡＩＤが稼働している場合において、他のＲＡＩＤにおいてもＬＦが実行中である場合には、実行中ＲＡＩＤ数に応じて多重度を低減させることで、ＣＭ１００の負荷を軽減する。
【００７７】
上述の如くＲＡＩＤ多重度上限値（Ｅ）を実行中ＲＡＩＤ数で除算することで、実行中ＲＡＩＤ数が多い程、多重度は小さくなる。
【００７８】
また、ＬＦ制御部１２は、他ＲＡＩＤにおいてＬＦの実行中でない場合には、ＣＭ１００あたりの資源を過大に獲得しないように定期的にスループットを監視し、多重度を調整する。ＬＦ制御部１２は、ＬＦを開始後に記憶装置３１におけるスループットの増減を判断する。スループットは一定時間内に処理できるデータ量であり、記憶装置３１の入出力性能（処理能力）を示す。スループットの単位は、例えば、ＭＢ／秒である。
【００７９】
ＬＦ制御部１２は、各記憶装置３１のスループットを随時測定（サンプル）して、メモリ１０６や記憶装置３１の所定の領域に記録する機能を備える。すなわち、ＬＦ制御部１２は記憶装置３１の入出力性能を取得する入出力性能取得部としての機能を備える。
【００８０】
ＬＦ制御部１２は、例えば、現在の（最新の）スループットと所定時間Ｔ前（例えばＴ＝5秒）に取得したスループットとを比較することで、スループットの増減を確認する。すなわち、ＬＦ制御部１２は、今回取得されたスループット（入出力性能）と、前回のサンプル時に取得したスループットとを比較する。ＬＦ制御部１２は、所定時間Ｔ前に比べて記憶装置３１のスループットが増加している場合には、動作可能多重度（Ｄ）を増加させる一方、スループットが低下している場合には、動作可能多重度（Ｄ）を減少させる。
【００８１】
すなわち、ＬＦ制御部１２は、今回取得されたスループット（入出力性能）が、前回のサンプル時に取得したスループットに比べて向上している場合に、ＬＦコマンド多重度（多重度）を増加させる。
【００８２】
これにより、記憶装置３１の処理能力（負荷状況）に応じた多重度でＬＦコマンドを発行することができる。例えば、所定時間Ｔ前に比べてスループットが向上している場合には、ＬＦコマンドの多重度を増加させることで、より多くのＬＦコマンドを並行して実行することができ、ＬＦに要する時間を短縮することができる。
【００８３】
上述の如く、フェーズ２の処理は、１単位処理が完了（１単位動作完了）する毎に実行される。すなわち、一つのＬＦコマンドによる処理が完了する毎にフェーズ２の処理が実行され、動作可能多重度（Ｄ）の値が更新される。
【００８４】
［フェーズ３］
フェーズ３においては、ＬＦ制御部１２は、ＬＦコマンド多重度として、「継続ＬＦ処理数」および「新規ＬＦ処理数」を決定する。
【００８５】
継続ＬＦ処理数は、ＣＭ１００から発行された処理中のＬＦコマンドの数であり、後述するＬＦ実行部１４から記憶装置３１に対して発行された、未完了のＬＦコマンドの数である。以下、継続ＬＦ処理数を符号（Ｆ）で表す場合がある。
【００８６】
新規ＬＦ処理数は、ＬＦ実行部１４から記憶装置３１に対して発行されるべきＬＦコマンドの数である。以下、新規ＬＦ処理数を符号（Ｇ）で表す場合がある。
【００８７】
フェーズ３においては、フェーズ２において決定された動作可能多重度（Ｄ）と、継続ＬＦ処理数とが用いられる。継続ＬＦ処理数（Ｆ）の初期値は0であるものとする。
【００８８】
ＬＦ制御部１２は、フェーズ２において決定された動作可能多重度（Ｄ）と継続ＬＦ処理数（Ｆ）とを比較する。
【００８９】
動作可能多重度（Ｄ）が継続ＬＦ処理数（Ｆ）以上である場合には、ＬＦ制御部１２は、新規ＬＦ処理数（Ｇ）を以下の式（２）に基づいて算出する。
新規ＬＦ処理数（Ｇ）＝動作可能多重度（Ｄ）−継続ＬＦ処理数（Ｆ）・・・（２）
例えば、動作可能多重度（Ｄ）が4（Ｄ＝4）であり、継続ＬＦ処理数（Ｆ）が2（Ｆ＝2）である場合には、新規ＬＦ処理数（Ｇ）は2（Ｇ＝4−2）となる。
【００９０】
動作可能多重度（Ｄ）と継続ＬＦ処理数（Ｆ）とが同数である場合、例えば、動作可能多重度（Ｄ）が2（Ｄ＝2）であり、継続ＬＦ処理数（Ｆ）が2（Ｆ＝2）である場合には、新規ＬＦ処理数（Ｇ）は0（Ｇ＝2−2＝0）となる。
【００９１】
動作可能多重度（Ｄ）が継続ＬＦ処理数（Ｆ）未満である場合、例えば、動作可能多重度（Ｄ）が1（Ｄ＝1）であり、継続ＬＦ処理数（Ｆ）が2（Ｆ＝2）である場合には、新規ＬＦ処理数（Ｇ）は0とする。また、ＬＦ制御部１２は、動作可能多重度（Ｄ）の値を継続ＬＦ処理数（Ｆ）として設定する。
【００９２】
すなわち、ＬＦ制御部１２は、ＬＦ実行部１４から発行中のＬＦコマンド数（継続ＬＦ処理数（Ｆ））を管理し、動作可能多重度（Ｄ）となるように新規ＬＦ処理数（Ｇ）を決定する。
【００９３】
そして、ＬＦ制御部１２は、決定した継続ＬＦ処理数および新規ＬＦ処理数をＬＦ実行部１４に通知する。
【００９４】
また、動作可能多重度（Ｄ）が継続ＬＦ処理数（Ｆ）未満である場合には、ＬＦ制御部１２は、ＬＦコマンド処理の完了後に、例えば、当該ＬＦコマンド処理に用いたメモリ１０６の記憶領域等のリソースを解放する。これにより、実行中のＬＦコマンド処理の数を減らす。
【００９５】
ＬＦ実行部１４は、記憶装置３１に対してＬＦコマンドを発行する。ＬＦ実行部１４は、ＬＦ制御部１２によって決定された新規ＬＦ処理数を取得し（ＬＦコマンド数獲得）、この新規ＬＦ処理数と同数のＬＦコマンドを生成して記憶装置３１に並行して発行する（ＬＦコマンド発行）。
【００９６】
これにより、ＬＦ実行部１４は、記憶装置３１には、ＬＦ制御部１２によって決定されたＬＦコマンド多重度と同数のＬＦコマンドが同時に発行（多重発行）される。
【００９７】
ＬＦコマンドは、例えば、記憶装置３１における指定された領域（未フォーマット領域）に対してＢＣＣの書き込み等を行なう処理等を実現するコマンドである。なお、ＬＦコマンドは既知であり、その詳細な説明は省略する。
【００９８】
１つのＬＦコマンド発行処理において、ＬＦ実行部１４は、記憶装置３１における未フォーマットの領域を検索し、この未フォーマット領域にＬＦを行なわせるＬＦコマンドを発行する。
【００９９】
ＬＦ実行部１４により発行されたいずれかのＬＦコマンドが完了した場合には、処理はフェーズ２に戻り、動作可能多重度（Ｄ）の更新が行なわれる。すなわち、一つのＬＦコマンド処理が完了した場合には、フェーズ２に戻り動作可能多重度（Ｄ）の更新が行なわれる。
【０１００】
〔Ｂ〕動作
上述の如く構成された実施形態の一例としてのストレージ装置１におけるＬＦ制御部１２の処理を図４に示すフローチャート（ステップＡ１〜Ａ１８）に従って説明する。
【０１０１】
例えば、オペレータがフォーマットの実施命令を発行することにより、ＬＦが開始される。
【０１０２】
先ず、ＬＦ制御部１２はフェーズ１の処理を行なう。すなわち、ＬＦ制御部１２は、ステップＡ１において、上記の式（１）に基づきＣＭあたりＬＦ多重度上限値（Ｃ）を算出する。すなわち、ＬＦ制御部１２は、「ＣＭあたりＬＦ多重度上限値（Ｃ）＝第１メモリ容量（Ａ）／第２メモリ容量（Ｂ）」を計算する。
【０１０３】
この算出されたＣＭあたりＬＦ多重度上限値（Ｃ）がフェーズ１のアウトプットである。
【０１０４】
次に、ＬＦ制御部１２はフェーズ２の処理を行なう。以下に示す、ステップＡ２〜Ａ１２がフェーズ２の処理に相当する。ステップＡ１において算出されたＣＭあたりＬＦ多重度上限値（Ｃ）がフェーズ２のインプットとなる。
【０１０５】
ステップＡ２において、ＬＦ制御部１２は、該当ＲＡＩＤ多重度上限値（Ｅ）が０である場合には、ＣＭあたりＬＦ多重度上限値（Ｃ）を該当ＲＡＩＤ多重度上限値（Ｅ）に設定する。このように、該当ＲＡＩＤ多重度上限値（Ｅ）の初期値にＣＭあたりＬＦ多重度上限値（Ｃ）を設定することで、以下の処理において該当ＲＡＩＤ多重度上限値（Ｅ）がＣＭあたりＬＦ多重度上限値（Ｃ）を超えることがない。
【０１０６】
ステップＡ３において、ＬＦ制御部１２は、自ＣＭ１００に対してホスト装置２からＩ／Ｏ要求が発行されているかを確認する。ホスト装置２から発行されているＩ／Ｏ要求がある場合には（ステップＡ３の“あり”ルート参照）、ステップＡ４に移行する。
【０１０７】
ステップＡ４において、ＬＦ制御部１２は、該当ＲＡＩＤ多重度上限値（Ｅ）に1を設定する。その後、ステップＡ１２に移行する。
【０１０８】
ステップＡ３における確認の結果、ホスト装置２から発行されているＩ／Ｏ要求が無い場合には（ステップＡ３の“無し”ルート参照）、ステップＡ５に移行する。
【０１０９】
ステップＡ５において、ＬＦ制御部１２は、自ＣＭ１００が他のＲＡＩＤグループのＬＦを実行中であるかを確認する。自ＣＭ１００が他のＲＡＩＤグループのＬＦを実行中である場合には（ステップＡ５のＹｅｓルート参照）、ステップＡ６に移行する。
【０１１０】
ステップＡ６において、ＬＦ制御部１２は、処理対象のＲＡＩＤの該当ＲＡＩＤ多重度上限値（Ｅ）を他のＬＦ実行中のＲＡＩＤの該当ＲＡＩＤ多重度上限値（Ｅ）と比較する。そして、ＬＦ制御部１２は、値の小さい方の該当ＲＡＩＤ多重度上限値（Ｅ）を、自ＣＭ１００の管理下において実行中のＲＡＩＤの数で除算した値を新たな該当ＲＡＩＤ多重度上限値（Ｅ）として設定する。
【０１１１】
ＬＦ制御部１２は、該当ＲＡＩＤ多重度上限（Ｅ）を、他のＬＦ中のＲＡＩＤの該当ＲＡＩＤ多重度上限（Ｅ）と比較し、値が一番小さい該当ＲＡＩＤ多重度上限（Ｅ）（例えば、4多重）をＲＡＩＤ数（例えば、2RAID）で除算した商（4 ÷ 2 = 2）を該当ＲＡＩＤ多重度上限（Ｅ）に設定する。その後、ステップＡ１２に移行する。
【０１１２】
ステップＡ５における確認の結果、自ＣＭ１００が他のＲＡＩＤグループのＬＦを実行中でない場合には（ステップＡ５のＮｏルート参照）、ステップＡ７に移行する。
【０１１３】
ステップＡ７において、ＬＦ制御部１２は、ＬＦを開始してからの経過時間が一定時間Ｔ（例えば、Ｔ=5秒）以上であるかを確認する。確認の結果、ＬＦを開始してからの経過時間が一定時間Ｔ未満である場合には（ステップＡ７のＮｏルート参照）、ステップＡ１２に移行する。
【０１１４】
一方、ＬＦを開始してからの経過時間が一定時間Ｔ以上である場合には（ステップＡ７のＹｅｓルート参照）、ステップＡ８に移行する。ステップＡ８において、ＬＦ制御部１２は、記憶装置３１の現在のスループットと、一定時間Ｔ前（例えば、前述の5秒前）の時点での記憶装置３１のスループットとを比較する。
【０１１５】
比較の結果、現在のスループットが一定時間Ｔ前のスループットよりも高い場合には（ステップＡ８の“高い”ルート参照）、該当ＲＡＩＤ多重度上限値（Ｅ）をインクリメントする（ステップＡ９）。現在のスループットが一定時間Ｔ前のスループットよりも高いということは、記憶装置３１の処理性能が一定時間Ｔ前に比べて向上していることを示す。そこで、ＬＦ制御部１２は、本ストレージ装置１において処理能力に余力があると判断し、ＬＦコマンドの多重度を増加させる。
【０１１６】
また、比較の結果、現在のスループットが一定時間Ｔ前のスループットと同じ場合には（ステップＡ８の“同じ”ルート参照）、該当ＲＡＩＤ多重度上限値（Ｅ）は変更しない（ステップＡ１０）。
【０１１７】
さらに、比較の結果、現在のスループットが一定時間Ｔ前のスループットよりも低い場合には（ステップＡ８の“低い”ルート参照）、該当ＲＡＩＤ多重度上限値（Ｅ）をデクリメントする（ステップＡ１１）。現在のスループットが一定時間Ｔ前のスループットよりも低いということは、記憶装置３１の処理性能が一定時間Ｔ前に比べて低下していることを示す。そこで、ＬＦ制御部１２は、本ストレージ装置１において処理能力に余力がないと判断し、ＬＦコマンドの多重度を減少させる。
【０１１８】
すなわち、記憶装置３１の現在のスループットと、一定時間Ｔ前（例えば、Ｔ=5秒）の時点での記憶装置３１のスループットとを比較することで、処理能力の余裕の有無を判断し、この余裕の有無に応じてＬＦコマンド多重度を増減させる。
【０１１９】
ステップＡ１２において、ＬＦ制御部１２は、動作可能多重度（Ｄ）に該当ＲＡＩＤ多重度上限値（Ｅ）を設定する。これにより動作可能多重度（Ｄ）が決定（更新）される。この更新された動作可能多重度（Ｄ）がフェーズ２のアウトプットとなる。
【０１２０】
次に、ＬＦ制御部１２はフェーズ３の処理を行なう。以下に示す、ステップＡ１３〜Ａ１６がフェーズ３の処理に相当する。ステップＡ１２において更新判別情報された動作可能多重度（Ｄ）がフェーズ３のインプットとなる。
【０１２１】
ステップＡ１３において、ＬＦ制御部１２は、動作可能多重度（Ｄ）と、ＬＦ実行部１４から記憶装置３１に対して発行され未完了のＬＦコマンドの数である継続ＬＦ処理数（Ｆ）とを比較する。なお、継続ＬＦ処理数（Ｆ）の初期値は0（Ｆ=0）である。
【０１２２】
動作可能多重度（Ｄ）が継続ＬＦ処理数（Ｆ）よりも大きい場合には（ステップＡ１３の“（Ｄ）＞（Ｆ）”ルート参照）、ＬＦ制御部１２は、新規ＬＦ処理数（Ｇ）を上述の式（２）に基づいて算出する（ステップＡ１４）。すなわち、ＬＦ制御部１２は、動作可能多重度（Ｄ）から継続ＬＦ処理数（Ｆ）を減算することで、新規ＬＦ処理数（Ｇ）を算出する。
【０１２３】
動作可能多重度（Ｄ）と継続ＬＦ処理数（Ｆ）とが同数である場合には（ステップＡ１３の“（Ｄ）＝（Ｆ）”ルート参照）、ＬＦ制御部１２は、新規ＬＦ処理数（Ｇ）を0とする（ステップＡ１５）。
【０１２４】
動作可能多重度（Ｄ）が継続ＬＦ処理数（Ｆ）未満である場合には、（ステップＡ１３の“（Ｄ）＜（Ｆ）”ルート参照）、ＬＦ制御部１２は、新規ＬＦ処理数（Ｇ）を0とする。また、ＬＦ制御部１２は、動作可能多重度（Ｄ）を継続ＬＦ処理数（Ｆ）として設定する（ステップＡ１６）。
【０１２５】
そして、ＬＦ制御部１２は、決定した継続ＬＦ処理数および新規ＬＦ処理数をＬＦ実行部１４に通知する。すなわち、ステップＡ１４〜Ａ１６において決定された新規ＬＦ処理数（Ｇ）および継続ＬＦ処理数（Ｆ）が、フェーズ３のアウトプットである。
【０１２６】
ステップＡ１７において、ＬＦ実行部１４が、新規ＬＦ処理数（Ｇ）と同数のＬＦコマンドを生成して記憶装置３１に並行して発行する。
【０１２７】
ステップＡ１８において、ＬＦ実行部１４が発行したいずれかのＬＦコマンドの処理が完了すると、ステップＡ２（フェーズ２）に戻る。
【０１２８】
〔Ｃ〕効果
このように、実施形態の一例としてのストレージ装置１においては、ＬＦ実行部１４が記憶装置３１に対して複数のＬＦコマンドを同時に並行（多重化）して発行することで、ＬＦに要する時間を短縮することができる。
【０１２９】
また、自ＣＭ１００もしくは記憶装置３１の処理状況に応じて、ＬＦ制御部１２が、並行して発行するＬＦコマンドの数（ＬＦコマンド多重度）を決定することで、より効率的にＬＦを実行することができる。
【０１３０】
ＬＦ制御部１２は、自ＣＭ１００に対してホスト装置２からＩ／Ｏ要求が発行されている状態においては、ＬＦコマンドの発行を多重化しない（ＬＦコマンド多重度＝1）。これにより、ＬＦの処理がホスト装置２からのＩ／Ｏ要求に影響を与えることがなく、ストレージ装置１としての性能を維持することができる。
【０１３１】
また、ＬＦ制御部１２は、処理対象ＲＡＩＤを構成する記憶装置３１に対してＬＦを行なうに際して、他のＲＡＩＤにおいてＬＦが実行中である場合には、これらの処理対象ＲＡＩＤと他のＲＡＩＤとの各該当ＲＡＩＤ多重度上限値（Ｅ）を比較する。そして、ＬＦ制御部１２は、値が小さい方の該当ＲＡＩＤ多重度上限値（Ｅ）を、このＣＭ１００の管理下において実行中のＲＡＩＤの数で除算した値（商）を動作可能多重度（Ｄ）として設定する。
【０１３２】
これにより、本ストレージ装置１において複数のＲＡＩＤが稼働している場合に、他のＲＡＩＤにおいてもＬＦが実行中である場合には、実行中ＲＡＩＤ数に応じて多重度を低減させることで、ＣＭ１００の負荷を軽減することができる。
【０１３３】
また、ＬＦ制御部１２は、現在のスループットと所定時間Ｔ前のスループットとを比較し、所定時間Ｔ前に比べてスループットが増加している場合には、動作可能多重度（Ｄ）、すなわち、ＬＦコマンド多重度を増加させる。これにより、記憶装置３１の処理能力に余裕がある場合には、ＬＦコマンド多重度を大きくすることでＬＦに要する時間を短縮することができる。
【０１３４】
一方、ＬＦ制御部１２は、現在のスループットと所定時間Ｔ前のスループットとを比較し、所定時間Ｔ前に比べてスループットが低下している場合には、動作可能多重度（Ｄ）すなわち、ＬＦコマンド多重度を減少させる。これにより、記憶装置３１の処理能力に余裕がない場合には、ＬＦコマンド多重度を小さくすることで記憶装置３１やＣＭ１００の負荷を軽減し、本ストレージ装置１の処理性能の低下を防止することができる。このように、本ストレージ装置１においては、記憶装置３１の負荷に応じた多重度でＬＦコマンドを発行することができる。
【０１３５】
また、ＬＦ実行部１４から発行中のＬＦコマンド数（継続ＬＦ処理数（Ｆ））を管理し、動作可能多重度（Ｄ）となるように新規ＬＦ処理数（Ｇ）を決定する。これにより、ＬＦ実行部１４に対して発行を指示するＬＦコマンド数（新規ＬＦ処理数（Ｇ））に、実行中のＬＦコマンド数（継続ＬＦ処理数（Ｆ））を反映させ、ＣＭ１００におけるＬＦの処理性能を確実に制御することができる。
【０１３６】
例えば、ＬＦの多重度を上げすぎることで、本ストレージ装置１のリソース（例えば、メモリ資源）を過大に使用して資源枯渇が生じることがない。
【０１３７】
〔Ｄ〕その他
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１３８】
例えば、ストレージ装置１に備えられるＣＭ１００の数は２つに限定されるものではなく、１つもしくは３つ以上であってもよい。
【０１３９】
また、ＤＥ３０に備えられる記憶装置３１の数は４つに限定されるものではなく、３つ以下、または５つ以上であってもよい。また、記憶装置３１を用いて構成するＲＡＩＤについても適宜変更して実施することができる。
【０１４０】
さらに、上述した実施形態においては、ＬＦ制御部１２は、ＬＦを開始後に記憶装置３１におけるスループットの増減を判断して、該当ＲＡＩＤ多重度上限値（Ｅ）すなわち動作可能多重度（Ｄ）を変化させているが、これに限定されるものでなない。例えば、ＬＦ制御部１２は、記憶装置３１の性能や負荷の状態を表す種々の情報を用いて、該当ＲＡＩＤ多重度上限値（Ｅ）（動作可能多重度（Ｄ））を変化させてもよい。
【０１４１】
例えば、ＬＦ制御部１２は、スループットに代えて記憶装置３１に対するＩＯＰＳ（Input Output Per Second）や平均レスポンスタイムを取得し、これらのＩＯＰＳや平均レスポンスタイムの増減を判断して該当ＲＡＩＤ多重度上限値（Ｅ）（動作可能多重度（Ｄ））を変化させてもよい。ＩＯＰＳや平均レスポンスタイムは入出力性能を表す。
【０１４２】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０１４３】
〔Ｅ〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１４４】
（付記１）
記憶装置を制御するストレージ制御装置において、
前記記憶装置の入出力性能を取得する入出力性能取得部と、
前記入出力性能取得部によって取得した前記入出力性能の変化に応じて、前記記憶装置の記憶領域の論理フォーマットの多重度を決定する多重度決定部と、
前記多重度決定部によって決定された多重度に応じた複数の論理フォーマットコマンドを前記記憶装置に対して並行して発行するコマンド発行部と
を備える、ストレージ制御装置。
【０１４５】
（付記２）
前記多重度決定部が、
前記入出力性能取得部によって今回取得された前記入出力性能が、前回のサンプル時に取得した入出力性能に比べて向上している場合に、前記多重度を増加させる
ことを特徴とする、付記１記載のストレージ制御装置。
【０１４６】
（付記３）
前記多重度決定部が、
前記入出力性能取得部によって今回取得された前記入出力性能が、前回のサンプル時に取得した入出力性能に比べて低下している場合に、前記多重度を減少させる
ことを特徴とする、付記１または２記載のストレージ制御装置。
【０１４７】
（付記４）
前記多重度決定部が、
当該ストレージ制御装置のハードウェア資源における論理フォーマットに割り当てられている第１容量を、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）構成に基づいて設定される論理フォーマット実行にかかる基準メモリ容量で除算することで、当該ストレージ制御装置における上限多重度を決定する
ことを特徴とする、付記１〜３のいずれか１項に記載のストレージ制御装置。
【０１４８】
（付記５）
前記多重度決定部が、
外部装置から当該ストレージ制御装置に対して入出力要求を受け付けた場合に、前記多重度を１に設定することで、前記コマンド発行部による複数の論理フォーマットコマンドの発行を抑止する
ことを特徴とする、付記１〜４のいずれか１項に記載のストレージ制御装置。
【０１４９】
（付記６）
前記多重度決定部が、
前記多重度から前記コマンド発行部から発行されている未完了の前記論理フォーマットコマンドの数を減算して新規論理フォーマットコマンド発行数を算出し、当該新規論理フォーマットコマンド発行数を前記コマンド発行部に通知し、
前記コマンド発行部が、前記新規論理フォーマットコマンド発行数の論理フォーマットコマンドを前記記憶装置に対して発行する
ことを特徴とする、付記１〜５のいずれか１項に記載のストレージ制御装置。
【０１５０】
（付記７）
当該ストレージ制御装置において複数のＲＡＩＤが稼働している場合に、前記複数のＲＡＩＤのうち、前記論理フォーマットの発行対象の前記記憶装置が構成する第１のＲＡＩＤと異なる第２のＲＡＩＤにおいて論理フォーマットの実行中である場合に、
前記多重度決定部が、当該ストレージ制御装置において稼働しているＲＡＩＤの数に応じて前記多重度を減少させる
ことを特徴とする、付記４記載のストレージ制御装置。
【０１５１】
（付記８）
前記多重度決定部が、
前記第１のＲＡＩＤに対して設定される第１多重度上限値と、前記第２のＲＡＩＤに対して設定される第２多重度上限値とのうち、小さい方の値を論理フォーマット実行中のＲＡＩＤの数で除算した商を用いて、前記第１多重度上限値を更新する
ことを特徴とする、付記７記載のストレージ制御装置。
【０１５２】
（付記９）
記憶装置を制御するストレージ制御装置のプロセッサに、
前記記憶装置の入出力性能を取得し、
取得した前記入出力性能の変化に応じて、前記記憶装置の記憶領域の論理フォーマットの多重度を決定し、
決定された多重度に応じた複数の論理フォーマットコマンドを前記記憶装置に対して並行して発行する
処理を実行させる、ストレージ制御プログラム。
【０１５３】
（付記１０）
今回取得された前記入出力性能が、前回のサンプル時に取得した入出力性能に比べて向上している場合に、前記多重度を増加させる
処理を前記プロセッサに実行させる、付記９記載のストレージ制御プログラム。
【０１５４】
（付記１１）
今回取得された前記入出力性能が、前回のサンプル時に取得した入出力性能に比べて低下している場合に、前記多重度を減少させる
処理を前記プロセッサに実行させる、付記９または１０記載のストレージ制御プログラム。
【０１５５】
（付記１２）
当該ストレージ制御装置のハードウェア資源における論理フォーマットに割り当てられている第１容量を、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）構成に基づいて設定される論理フォーマット実行にかかる基準メモリ容量で除算することで、当該ストレージ制御装置における上限多重度を決定する
処理を前記プロセッサに実行させる、付記９〜１１のいずれか１項に記載のストレージ制御プログラム。
【０１５６】
（付記１３）
外部装置から当該ストレージ制御装置に対して入出力要求を受け付けた場合に、前記多重度を１に設定することで、複数の論理フォーマットコマンドの発行を抑止する
処理を前記プロセッサに実行させる、付記９〜１２のいずれか１項に記載のストレージ制御プログラム。
【０１５７】
（付記１４）
前記多重度から発行されている未完了の前記論理フォーマットコマンドの数を減算して新規論理フォーマットコマンド発行数を算出し、
前記新規論理フォーマットコマンド発行数の論理フォーマットコマンドを前記記憶装置に対して発行する
処理を前記プロセッサに実行させる、付記９〜１３のいずれか１項に記載のストレージ制御プログラム。
【０１５８】
（付記１５）
当該ストレージ制御装置において複数のＲＡＩＤが稼働している場合に、前記複数のＲＡＩＤのうち、前記論理フォーマットの発行対象の前記記憶装置が構成する第１のＲＡＩＤと異なる第２のＲＡＩＤにおいて論理フォーマットの実行中である場合に、
当該ストレージ制御装置において稼働しているＲＡＩＤの数に応じて前記多重度を減少させる
処理を前記プロセッサに実行させる、付記１４記載のストレージ制御プログラム。
【０１５９】
（付記１６）
前記第１のＲＡＩＤに対して設定される第１多重度上限値と、前記第２のＲＡＩＤに対して設定される第２多重度上限値とのうち、小さい方の値を論理フォーマット実行中のＲＡＩＤの数で除算した商を用いて、前記第１多重度上限値を更新する
処理を前記プロセッサに実行させる、付記１５記載のストレージ制御プログラム。
【符号の説明】
【０１６０】
１    ストレージ装置
２    ホスト装置
１１    メモリ管理部
１２    ＬＦ制御部
１３    Ｉ／Ｏ制御部
１４    ＬＦ実行部
１５    Ｉ／Ｏ実行部
３０−１，３０−２，３０    ディスクエンクロージャ
３１    記憶装置
１００−１，１００−２，１００    ＣＭ
１０１    ＣＡ
１０３    ＤＡ
１０６    メモリ
１０７    不揮発性メモリ
１０８    ＩＯＣ
１１０    ＣＰＵ
【図１】
2020038475.tif 000003
【図２】
2020038475.tif 000004
【図３】
2020038475.tif 000005
【図４】
2020038475.tif 000006
【図５】
2020038475.tif 000007