(57)【要約】【課題】ＳＡＮインタフェースとＮＡＳインタフェースの両者を有するハイブリッド型の記憶装置において、ＮＡＳ機能の障害やＮＡＳの負荷などにかかわらず、ＳＡＮ機能として独立に動作できるようにし、しかも、簡易なハードウェアで実現する。【解決手段】記憶装置のコントローラを、ファイル単位のＩ／Ｏコマンドを受け付けるＮＡＳ制御ボードと、ブロック単位のＩ／Ｏコマンドを受け付けるＳＡＮ制御ボードとで、独立に動作できるように実装する。そして、ＮＡＳ制御ボードが、ＮＡＳインタフェースのファイル単位のＩ／Ｏコマンドを、ブロック単位のＩ／Ｏコマンドに変換して、ＳＡＮ制御ボードに送信する。ＳＡＮ制御ボードは、ＳＡＮから受け付けたブロック単位のＩ／Ｏコマンドと、ＮＡＳ制御ボードから受信したブロック単位のＩ／Ｏコマンドとによりディスク装置に記憶されたデータをアクセスする。【選択図】        図２
2005215947.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位のＩ／ＯコマンドによるＳＡＮインタフェースと、ファイル単位のＩ／ＯコマンドによるＮＡＳインタフェースとによりデータのアクセスをおこなう記憶装置において、
ディスク装置と、ディスク装置を制御するコントローラとを有し、
前記コントローラは、
計算機からネットワークを介して前記ファイル単位のＩ／Ｏコマンドを受け付けるＮＡＳ制御ボードと、
計算機からネットワークを介して前記ブロック単位のＩ／Ｏコマンドを受け付け、それにより前記ディスク装置に記憶されたデータをアクセスするＳＡＮ制御ボードとを有し、
前記ＮＡＳ制御ボードは、前記ファイル単位のＩ／Ｏコマンドを、ブロック単位のＩ／Ｏコマンドに変換して、前記ＳＡＮ制御ボードに送信し、
前記ＳＡＮ制御ボードは、前記ＮＡＳ制御ボードから送信されるブロック単位のＩ／Ｏコマンドにより、前記ディスク装置に記憶されたデータをアクセスすることを特徴とする記憶装置。
【請求項２】
前記ＮＡＳ制御ボード上のプロセッサにより動作するコマンド変換プログラムにより、前記ファイル単位のＩ／Ｏコマンドを、前記ブロック単位のＩ／Ｏコマンドに変換することを特徴とする請求項１記載の記憶装置。
【請求項３】
前記ＳＡＮ制御ボード上のプロセッサにより動作するディスク装置制御プログラムは、前記ＮＡＳ制御ボードから送信されるファイル単位のＩ／Ｏコマンドの有無の如何によらず動作することを特徴とする請求項１記載の記憶装置。
【請求項４】
前記ＮＡＳ制御ボード上のプロセッサと、前記ＳＡＮ制御ボード上のプロセッサとは、両者を結合する内部バスにより通信することを特徴とする請求項１記載の記憶装置。
【請求項５】
前記ＮＡＳ制御ボードと、前記ＳＡＮ制御ボードとは、別々のメモリを有することを特徴とする請求項１記載の記憶装置。
【請求項６】
前記ＮＡＳ制御ボードは、前記ＳＡＮ制御ボードに装着され、
前記ＳＡＮ制御ボードの動作中にＮＡＳ制御ボードが着脱されても、この記憶装置がネットワークを介して計算機から受け付けたブロック単位のＩ／Ｏコマンドを、前記ＳＡＮ制御ボードが処理することが可能なことを特徴とする請求項１記載の記憶装置。
【請求項７】
前記ブロック単位のＩ／Ｏコマンドと前記ファイル単位のＩ／Ｏコマンドとのいずれかを優先的に処理してデータをアクセスすることが可能なことを特徴とする請求項１記載の記憶装置。
【請求項８】
ブロック単位のＩ／ＯコマンドによるＳＡＮインタフェースと、ファイル単位のＩ／ＯコマンドによるＮＡＳインタフェースとによりデータのアクセスをおこなう記憶装置において、
この記憶装置は、ディスク装置を制御するコントローラを有し、
前記コントローラは、
前記ファイル単位のＩ／Ｏコマンドを受け付けるためのＮＡＳ制御ボードと、
前記ブロック単位のＩ／Ｏコマンドを受け付けるためのＳＡＮ制御ボードとを備え、
前記ＮＡＳ制御ボードは、前記ＮＡＳインタフェースの通信コントローラと、ＮＡＳプロセッサと、ＮＡＳメモリと、前記ＮＡＳメモリのコントローラとを有し、
前記ＳＡＮ制御ボードは、前記ＳＡＮインタフェースの通信コントローラと、ＳＡＮプロセッサと、ＳＡＮメモリと、前記ＳＡＮメモリのコントローラと、前記ＮＡＳプロセッサと前記ＳＡＮプロセッサのプロセッサ間通信コントローラと、ディスク装置を制御するディスクコントローラとを有し、
前記ＮＡＳ制御ボードは、前記ＳＡＮ制御ボードに装着され、
前記ＳＡＮ制御ボードの動作中にＮＡＳ制御ボードが着脱されても、前記ＳＡＮインタフェースの通信コントローラを介して受信したブロック単位のＩ／Ｏコマンドを処理することが可能であって、
前記ＮＡＳメモリには、コマンド変換プログラムが格納され、
前記ＳＡＮメモリには、ディスクアレイ制御プログラムが格納され、
前記ＮＡＳプロセッサは、前記コマンド変換プログラムを実行して、前記ＮＡＳインタフェースの通信コントローラを介して受信したファイル単位のＩ／Ｏコマンドを、前記ブロック単位のＩ／Ｏコマンドに変換し、前記ＮＡＳメモリ内の通信用領域に格納して、
前記プロセッサ間通信コントローラは、前記ＮＡＳメモリ内の通信用領域に格納された前記ブロック単位のＩ／Ｏコマンドを、前記ＳＡＮメモリ内の通信用領域に転送して、
前記ＳＡＮプロセッサは、前記ディスクアレイ制御プログラムを実行して、前記ＳＡＮメモリ内の通信用領域に転送された前記ブロック単位のＩ／Ｏコマンドと、前記ＳＡＮインタフェースの通信コントローラを介して受信した前記ブロック単位のＩ／Ｏコマンドをキューイングして、前記キューイングされたブロック単位のＩ／Ｏコマンドを参照して、前記ディスクコントローラを介して、この記憶装置に接続されたディスク装置に記憶されたデータをアクセスすることを特徴とする記憶装置。
【請求項９】
ブロック単位のＩ／ＯコマンドによるＳＡＮインタフェースと、ファイル単位のＩ／ＯコマンドによるＮＡＳインタフェースとによりデータのアクセスをおこなう記憶装置において、
この記憶装置は、ディスク装置を制御する制御ボードを有し、
前記制御ボードは、１ボードにより実装され、
前記ファイル単位のＩ／Ｏコマンドを、ブロック単位のＩ／Ｏコマンドに変換し、前記ブロック単位のＩ／Ｏコマンドにより、前記ディスク装置に記憶されたデータをアクセスすることを特徴とする記憶装置。
【請求項１０】
前記ファイル単位のＩ／Ｏコマンドをブロック単位のＩ／Ｏコマンドに変換するプログラムと、前記ブロック単位のＩ／Ｏコマンドを処理するプログラムが独立して動作可能なことを特徴とする請求項９記載の記憶装置。
【請求項１１】
前記ファイル単位のＩ／Ｏコマンドをブロック単位のＩ／Ｏコマンドに変換するプログラムと、前記ブロック単位のＩ／Ｏコマンドを処理するプログラムとが単一のメモリを共有することを特徴とする請求項９記載の記憶装置。
【請求項１２】
ブロック単位のＩ／ＯコマンドによるＳＡＮインタフェースと、ファイル単位のＩ／ＯコマンドによるＮＡＳインタフェースとによりデータのアクセスをおこなう記憶装置の制御方法において、
記憶装置は、
ネットワークを介して計算機から前記ファイル単位のＩ／Ｏコマンドを受け付けるＮＡＳ制御ボードと、
ネットワークを介して計算機から前記ブロック単位のＩ／Ｏコマンドを受け付け、それにより前記ディスク装置に記憶されたデータをアクセスするＳＡＮ制御ボードとを有し、
前記ファイル単位のＩ／Ｏコマンドを、ブロック単位のＩ／Ｏコマンドに変換するステップと、
前記変換された前記ブロック単位のＩ／ＯコマンドをＳＡＮ制御ボードに送信するステップと、
前記ＮＡＳ制御ボードから送信されるブロック単位のＩ／Ｏコマンドにより、前記ディスク装置に記憶されたデータをアクセスするステップとを有することを特徴とする記憶装置の制御方法。
【請求項１３】
前記ファイル単位のＩ／Ｏコマンドをブロック単位のＩ／Ｏコマンドに変換するステップの処理は、前記コントローラ上のプロセッサで動作するコマンド変換プログラムによりおこなわれることを特徴とすること請求項１２記載の記憶装置の制御方法。
【請求項１４】
前記ファイル単位のＩ／Ｏコマンドを変換したブロック単位のＩ／Ｏコマンドは、
外部から受け付けたブロック単位のＩ／Ｏコマンドと同一のコマンドキューに格納されて実行されることを特徴とする請求項１２記載の記憶装置の制御方法。
【請求項１５】
前記ファイル単位のＩ／Ｏコマンドを変換したブロック単位のＩ／Ｏコマンドは、
外部から受け付けたブロック単位のＩ／Ｏコマンドと別のコマンドキューに格納されて実行されることを特徴とする請求項１２記載の記憶装置の制御方法。
【請求項１６】
前記コントローラが、前記ファイル単位のＩ／Ｏコマンドが変換されたブロック単位のＩ／Ｏコマンドと、外部から受け付けたブロック単位のＩ／Ｏコマンドのいずれかに優先度を付けて実行することが可能なことを特徴とする請求項１５記載の記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数インタフェースを有する記憶装置に係り、特に、ＳＡＮインタフェースとＮＡＳインタフェースのコマンドの両者によりデータアクセスをおこなうことのできるハイブリッド型の記憶装置に関する。
【背景技術】
【０００２】
近年、情報システムの適用分野の拡大および計算機システムの分散化の進行にともない、一つのサイト内で管理されるホストの数が飛躍的に増大している。これにともない、計算機システムの管理コストの増大が問題となっている。特に、分散したホストが持つ記憶装置の管理を個別に行えば、運用に必要とされる容量を事前に予測することの難しさから、容量の追加をおこなう必要が生じた場合に各ホストに個別に記憶装置を増設する必要があり、管理コストは大きくなる。
【０００３】
この問題を解決するための技術として、ＳＡＮ(Storage Area Network)およびＮＡＳ(Network Attached Storage)が利用されている。いずれの技術も、分散したホストが個別に持つ記憶装置の集約を目的としているが、それぞれの技術が持つ特徴から異なる適用分野に用いられている。
【０００４】
ＳＡＮは、複数の記憶装置と複数のホストを、ホスト−記憶装置間通信専用のネットワークによって接続し、高速で遅延が少ないＩ／Ｏを実現する技術である。ＳＡＮにおいては、ホストと記憶装置の間のＩ／Ｏはブロック単位でおこなわれる。ブロックとは、記憶装置の容量をあるサイズに分割した、アドレスによって識別される固定長のデータの管理単位である。ブロック単位のＩ／Ｏが適したアプリケーションとしては、主にデータベースが挙げられる。複数のデータベースサーバのボリュームを単一の記憶装置に集約し、管理を一元化することによって、計算機システムの管理コストを削減することが可能である。また、ＳＡＮが高信頼な専用ネットワークであり、効率の良い通信がおこなえることから、ボリューム単位のデータ転送のための通信路としての使用も有効である。ボリューム単位のデータ転送は、バックアップや、災害対策のための、遠隔の記憶装置へボリューム複製の目的で利用される。
【０００５】
一方、ＮＡＳは、ファイルサーバ機能を持つ記憶装置であり、ＬＡＮ(Local Area Network)上の複数のホストに対するファイルサービスを提供する。ＮＡＳとホストの間のＩ／Ｏは、ファイル単位でおこなわれる。ファイルは、一般的に文字列の識別子によって識別される、可変長のデータの管理単位である。ファイル単位のＩ／Ｏが適したアプリケーションとしては、複数のホストによるファイル共有が挙げられる。複数のＷｅｂサーバによる同一コンテンツのサービスや、複数のオフィスＰＣによる文書の共有を実現することができる。
【０００６】
このように、ＳＡＮとＮＡＳは互いを補完する関係にある技術である。したがって、ＳＡＮに対応した記憶装置とＮＡＳを単一の装置に統合することで、さらに管理コストが削減できるという発想に到る。下記非特許文献１および特許文献１に記載された技術は、記憶装置の制御プログラムをＳＡＮとＮＡＳの両方の制御をおこなえるようにすることで、ＳＡＮとＮＡＳに両対応した記憶装置を実現するものである。この技術を使用した記憶装置は、ＳＡＮとＮＡＳのインタフェースを持ち、記憶容量をＳＡＮとＮＡＳに自由に割り当てることができる。
【０００７】
【特許文献１】特開２００３−１６２４３９号公報
【０００８】
【非特許文献１】Stephen Daniel、 “Converging SAN and NAS Storage  A Comparison of Unified and Gateway Solutions、” Network Appliance Inc. White Paper、 OCT 2002.
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記非特許文献１の従来技術により、ＳＡＮとＮＡＳに単一の記憶装置で対応することができる。しかしながら、ＳＡＮとＮＡＳを単一の制御プログラムによって実現するので、互いの機能が干渉するという問題がある。ＮＡＳ機能の障害によってＳＡＮ機能が停止する可能性が高く、耐障害性に問題がある。また、ＮＡＳ機能のみを停止して保守をおこなうことができない。また、ＮＡＳの負荷が高くなると、ＳＡＮの性能が著しく低下する。逆に、ＳＡＮの負荷が高くなると、ＮＡＳの性能が著しく低下する。このような現象は、システム全体の性能設計を困難にする。一般に、ＳＡＮがストレージシステムの基幹となることが多いため、ＮＡＳ機能が停止してもＳＡＮ機能による記憶装置のデータアクセスが止まらないことが要望される。
【００１０】
一方、上記特許文献１に記述された従来技術により、ＮＡＳ機能とＳＡＮ機能の独立性を高め、ＮＡＳ機能の障害によってＳＡＮ機能が停止しない記憶装置を実現することができる。しかしながら、ＮＡＳ機能およびＳＡＮ機能を持つ複数のインタフェースがそれぞれディスクの制御をおこなうため、内部ネットワークと共有メモリによって通信しなければならずハードウェアが高価になり、インタフェース数が小規模構成の記憶装置に適用するのは困難である。
【００１１】
本発明は、上記従来技術の問題点を解決するためになされたもので、その目的は、ＳＡＮインタフェースとＮＡＳインタフェースの両者を有するハイブリッド型の記憶装置において、ＮＡＳ機能の障害やＮＡＳの負荷などにかかわらず、ＳＡＮ機能として独立に動作し、しかも、簡易なハードウェアで実現する記憶装置を提供することにある。
【課題を解決するための手段】
【００１２】
本発明では、ブロック単位のＩ／ＯコマンドによるＳＡＮインタフェースと、ファイル単位のＩ／ＯコマンドによるＮＡＳインタフェースとによりデータのアクセスをおこなう記憶装置において、ディスク装置を制御するコントローラを、ファイル単位のＩ／Ｏコマンドを受け付けるＮＡＳ制御ボードと、ブロック単位のＩ／Ｏコマンドを受け付け、それによりディスク装置に記憶されたデータをアクセスするＳＡＮ制御ボードとで構成する。
【００１３】
そして、ＮＡＳ制御ボードは、受け付けたファイル単位のＩ／Ｏコマンドを、ブロック単位のＩ／Ｏコマンドに変換して、ＳＡＮ制御ボードに送信する。
【００１４】
ＳＡＮ制御ボードは、ＳＡＮインタフェースから受け付けるブロック単位のＩ／Ｏコマンドと、ＮＡＳ制御ボードから送信されるブロック単位のＩ／Ｏコマンドの両者により、ディスク装置に記憶されたデータをアクセスする。
【発明の効果】
【００１５】
本発明によれば、ＳＡＮインタフェースとＮＡＳインタフェースの両者を有するハイブリッド型の記憶装置において、ＮＡＳ機能の障害やＮＡＳの負荷などにかかわらず、ＳＡＮ機能として独立に動作し、しかも、簡易なハードウェアで実現することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明に係る各実施形態を、図１ないし図１１を用いて説明する。
【００１７】
〔実施形態１〕
以下、本発明に係る第一の実施形態を、図１ないし図９を用いて説明する。
【００１８】
先ず、図１を用いて本発明の第一の実施形態に係る記憶装置を用いた計算機システムの構成について説明する。
図１は、本発明の第一の実施形態に係る記憶装置を用いた計算機システムの構成図である。
【００１９】
第一の実施形態おける記憶装置１００は、ファイバチャネルにより構成されたＳＡＮ５０を経由して複数の計算機（以下、ＳＡＮクライアント３０と呼ぶ）に接続されており、ＳＡＮクライアント３０からのＩ／Ｏコマンドを受け付ける。また、ＬＡＮ４０を経由して複数の計算機（以下、ＮＡＳクライアント２０と呼ぶ）に接続されており、ＮＡＳクライアント２０からのＩ／Ｏコマンドを受け付ける。ＳＡＮ５０は、ファイバチャネル以外にも、ｉＳＣＳＩプロトコルが使用可能なＩＰネットワークの場合もある。
【００２０】
記憶装置１００は、ディスク装置１０５とコントローラ１１０によって構成されている。
【００２１】
ディスク装置１０５は、複数のディスクドライブ１５０と、ディスクドライブ１５０間とコントローラ１１０とを接続する通信路１５５からなる。
【００２２】
コントローラ１１０は、通信路１５５を経由して、任意のディスクドライブ１５０に対してＩ／Ｏをおこなうことができる。ディスクドライブ１５０と通信路１５５が、コントローラ１１０に含まれる形態もある。記憶装置１００には、複数のディスク装置１０５が含まれる形態もある。
【００２３】
コントローラ１１０は、ＳＡＮ制御ボード１４０が主な構成部品であり、このＳＡＮ制御ボード上にＮＡＳ制御ボード１４５を実装するようになっている。ＳＡＮ制御ボード１４０は、コントローラ１１０内に二枚搭載される形態もある。その形態は、一枚の障害時にもう一枚が処理を引き継ぐ冗長構成とすることで信頼化性を高めることを目的としている。
【００２４】
ここで、複数個のディスクドライブ１５０の記憶領域の一部分を集めてグループ化して、連続したアドレス空間を割り当てた論理的な記憶領域を「論理ボリューム」といい、論理ボリュームのアドレス空間を使用するブロック単位のＩ／Ｏコマンドを「論理ブロックコマンド」という。これに対して、各ディスクドライブ１５０固有のアドレス空間を使用するブロック単位のＩ／Ｏコマンドを「物理ブロックコマンド」という。
【００２５】
このＳＡＮ制御ボード１４０は、ディスク装置１０５、管理端末６０、ＳＡＮ５０と接続されており、ＳＡＮクライアント３０から受信した論理ブロックコマンドに従って、ディスク装置１０５を構成するディスクドライブ１５０に対して物理ブロックコマンドを送信する機能を持つ。
【００２６】
ＮＡＳ制御ボード１４５は、ＳＡＮ制御ボード１４０の上のコネクタ１６０に着脱１４１することができ、ＬＡＮ４０と接続されている。ＮＡＳ制御ボード１４５は、ＮＡＳクライアント２０から受信したファイル単位のＩ／Ｏコマンド（以下、「ファイルコマンド」という）を論理ブロックコマンドに変換し、ＳＡＮ制御ボード１４０に対して送信する機能を持つ。
【００２７】
ＳＡＮ制御ボード１４０が論理ボリュームとディスクの対応関係を記述した構成情報１６５を管理することによって、ＮＡＳ制御ボード１４５が使用できるＮＡＳ領域１７０とＳＡＮクライアント３０が使用できるＳＡＮ領域１７５にディスクドライブ１５０を自由に割り当てることができる。ＮＡＳ制御ボード１４５と、ＳＡＮ制御ボード１４０が、同一基板上に実装される形態もあるが、これは実施形態２で説明する。
【００２８】
管理端末６０は、ＬＡＮ等によりＳＡＮ制御ボード１４０およびＮＡＳ制御ボード１４５と接続され、画面・キーボード・マウスを用いて、記憶装置１００に対する管理操作をおこなう。管理操作には、記憶装置１００の起動および停止、ＮＡＳ制御ボード１４５の起動および停止、ＳＡＮ制御ボード１４０とＮＡＳ制御ボード１４５を含む記憶装置１００の設定変更および障害情報の参照が含まれる。
【００２９】
次に、図２を用いてＮＡＳ制御ボードとＳＡＮ制御ボードの構成について説明する。
図２は、ＮＡＳ制御ボードとＳＡＮ制御ボードの詳細なブロック図である。
【００３０】
ＳＡＮプロセッサ１４０９は、主にディスクアレイ制御プログラム１４０５とＮＡＳ制御ボード管理プログラム１４０６を解釈・実行するプロセッサであり、一時記憶装置としてＳＡＮメモリコントローラ１４１０に接続されたＳＡＮメモリ１４０７を使用する。ＳＡＮメモリ１４０７に格納されているディスクアレイ制御プログラム１４０５は、ファイバチャネルコントローラ１４０１が受信した論理ブロックコマンドを解釈し、物理ブロックコマンドに変換することでディスクコントローラ１４０３を制御する機能を持つ。ディスクアレイ制御プログラム１４０５は、ディスクキャッシュ１４０２を用いて、コマンドに対する応答速度を向上させる。
【００３１】
ＮＡＳ制御ボード管理プログラム１４０６は、管理端末６０からの管理操作に従って、ＮＡＳ制御ボード１４５の起動および停止や、障害情報の参照をおこなう機能を持つ。これらのプログラムは、ＳＡＮプロセッサ１４０９によって実行される。
【００３２】
ＮＡＳ制御ボード１４５上のＮＡＳプロセッサ１４５７は、主にコマンド変換プログラム１４５３を解釈・実行するプログラムであり、一時記憶装置としてＮＡＳメモリコントローラ１４５６に接続されたＮＡＳメモリ１４５２を使用する。ＮＡＳメモリ１４５２に格納されているコマンド変換プログラム１４５３は、ＬＡＮコントローラ１４５１が受信したファイルコマンドを解釈し、論理ブロックコマンドに変換する機能を持つ。コマンド変換プログラム１４５３は、作成した論理ブロックコマンドをＳＡＮプロセッサ１４０９に送信する。
【００３３】
ＳＡＮプロセッサ１４０９上で実行されるディスクアレイ制御プログラム１４０５は、ＮＡＳ制御ボード１４５から送信されてきた論理ブロックコマンドを、物理ブロックコマンドに変換する機能を持つ。これは、ファイバチャネルコントローラ１４０１が受信した論理ブロックコマンドを物理ブロックコマンドに変換するときの処理と同様である。
【００３４】
論理ブロックコマンドをＮＡＳプロセッサ１４５７からＳＡＮプロセッサ１４０９へ送信するときには、コマンド変換プログラム１４５３は、プロセッサ間通信コントローラ１４０８を制御する。論理ブロックコマンドは、通信用領域１４５５に格納され、例えば、プロセッサ間通信コントローラ１４０８が持つＤＭＡ機能により通信用領域１４０４に転送される。コマンドの実行結果であるステータスは、コマンド完了後、通信用領域１４０４から通信用領域１４５５に転送される。プロセッサ間通信コントローラ１４０８が、ＳＡＮプロセッサ１４０９およびＮＡＳプロセッサ１４５７への割り込み機能を持っていれば、コマンドまたはステータスの送信完了を各プロセッサに即座に通知できる。
【００３５】
ＮＡＳクライアント２０からのファイルコマンドが記憶装置への書き込みを要求するものであった場合には、データは、ファイルキャッシュ１４５４に一時的に格納される。次に、前記手順で論理ブロックコマンドが通信用領域１４０４に転送される。次に、ディスクアレイ制御プログラム１４０５が、転送された論理ブロックコマンドに基づいて、格納されているデータをディスクキャッシュ１４０２に転送する。
【００３６】
また、ＮＡＳクライアント２０からのファイルコマンドが記憶装置からの読み込みを要求するものであった場合、前記手順で通信用領域１４０４に転送された論理ブロックコマンドに従ってディスクアレイ制御プログラム１４０５がディスクキャッシュ１４０２に読み込んだデータを、ファイルキャッシュ１４５４に転送する。ＮＡＳ制御ボード１４５とＳＡＮ制御ボード１４０の間のコネクタ１６０に接続されたバスにより、論理ブロックコマンドやデータの送受信をおこなうことができ、また、ＳＡＮ制御ボード１４０の通電中にも、ＮＡＳ制御ボード１４５の着脱ができる。このような条件を満たすバスには、例えば、ＰＣＩバスがある。ＮＡＳ制御ボード１４５がＳＡＮ制御ボード１４０上に複数設置される形態もある。このような形態では、プロセッサ間通信コントローラ１４０８がＮＡＳ制御ボード１４５の数だけ設置され、各ＮＡＳ制御ボード１４５とＳＡＮプロセッサ１４０９との通信に使用される。プロセッサ間通信コントローラ１４０８がＮＡＳ制御ボード１４５上に実装される形態もある。
【００３７】
上述のようにディスクアレイ制御プログラム１４０５は、ＳＡＮを経由してクライアントから記憶装置にブロック単位で発行され、ディスクアレイ内の複数のディスクを用いて論理的に定義される論理ボリュームを対象に発行されるＩ／Ｏコマンドを、論理ボリュームを構成するディスクへのＩ／Ｏコマンドに変換する機能を持つプログラムである。
【００３８】
また、コマンド変換プログラム１４５３は、ＬＡＮ上のクライアントから発行されるファイル単位のＩ／Ｏコマンドを、ディスクアレイ制御プログラムによって処理可能なブロック単位のＩ／Ｏコマンドに変換する機能を持つプログラムである。
【００３９】
ディスクアレイ制御プログラム１４０５は、コマンド変換プログラム１４５３の機能に依存せず単独で動作できる。したがって、プログラムの不具合等によりコマンド変換プログラムの処理が継続できなくなった場合でも、ディスクアレイ制御プログラム１４０５は処理を継続することができ、ＳＡＮ上のクライアントからのＩ／Ｏコマンドの処理を続けることができる。
【００４０】
これにより、ＮＡＳ機能のみを停止して保守をおこなうことができる。また、ディスクアレイ制御プログラムが動作するプロセッサを複数にし、その一部のみがコマンド変換プログラム１４５３からのＩ／Ｏコマンドを処理するようにすることで、ＮＡＳの負荷が高いときにも、ＳＡＮの性能は一定以上に保たれる。また、ＳＡＮの負荷が高いときにも、ＮＡＳの性能は一定以上に保たれる。
【００４１】
コマンド変換プログラム１４５３とディスクアレイ制御プログラム１４０５の通信には内部バスを用い、ディスクアレイ制御プログラム１４０５がディスク装置１０５の制御をおこなうことで内部ネットワークや共有メモリを不要とし、低コストでの実装を可能にする。
【００４２】
次に、図３ないし図９を用いて本発明の第一の実施形態に係る記憶装置の制御動作について説明する。
先ず、図３により図２のディスクアレイ制御プログラム１４０５が、図２のコマンド変換プログラム１４５３またはファイバチャネルコントローラ１４０１からのコマンドを受信した時に、コマンドキューに格納するまでの処理内容について説明する。
図３は、コマンド変換処理の流れを示すフローチャートである。
【００４３】
コマンド変換プログラム１４５３は、コマンド変換（ステップ３００）をおこなった後に、そのコマンドを通信用領域１４０４に転送する（ステップ３０２）。その後、プロセッサ間通信コントローラ１４０８のレジスタを設定することにより（ステップ３０５）、コマンド受信待ち（ステップ３１０）状態にあるディスクアレイ制御プログラム１４０５は、割り込みを受信する。このとき、コマンドキューイング処理中かどうかの判定をおこない（ステップ３１５）、処理中でなけれは、受信したコマンドをキューイングし（ステップ３２０）、処理中であれば、終了するまで待つ。コマンドキューイング処理中である場合、ファイバチャネルコントローラ１４０１が受信したコマンドのキューイングを実行中である。そのため、ステップ３１５の判定処理により、コマンド変換プログラム１４５３とファイバチャネルコントローラ１４０１から同時にコマンドを受信したときの排他制御を実現する。この排他制御は、例えば、プロセッサ間通信コントローラ１４０８とファイバチャネルコントローラ１４０１がＳＡＮプロセッサ１４０９に対して送信する割り込みの優先度を同じにし、割り込み処理としてコマンドキューイングを実行することにより実現できる。
【００４４】
次に、図４および図５によりコマンドキューイングの際のコマンドのキューデータ構造について説明する。
図４および図５は、コマンドのキューのデータ構造の例を示す図である。
【００４５】
これは、図２のコマンド変換プログラム１４５３により変換されたコマンドと、ファイバチャネルコントローラ１４０１から送られてきたコマンドの両者を保存するコマンドキューのデータ構造を示すものである。
【００４６】
図４に示されるコマンドキューのデータ構造の例では、コマンドキュー先頭ポインタ４００は、次に実行されるコマンドのアドレスを指し、コマンドキュー最後尾ポインタ４１０は、新たに受信したコマンドを後続に追加するコマンドを指す。コマンドキューには、コマンド変換プログラム１４５３から受信したＮＡＳコマンド４１５と、ファイバチャネルコントローラ１４０１から受信したＳＡＮコマンド４２０が混在しており、このコマンドキューによりコマンドを処理した場合には、全てのコマンドは受信順に逐次処理される。
【００４７】
なお、コマンドキューは、図２のＳＡＮメモリ１４０７の中に保持される。
【００４８】
図５に示されるコマンドキューのデータ構造は、図４とは異なったものであり、ＮＡＳコマンド５１５と、ＳＡＮコマンド５６５を別のキューで保存している。
【００４９】
コマンド変換プログラム１４５３から受信したコマンドは、ＮＡＳコマンドキュー最後尾ポインタ５１０の指すコマンドの後続に追加し、ファイバチャネルコントローラ１４０１から受信したコマンドは、ＳＡＮコマンドキュー最後尾ポインタ５６０の指すコマンドの後続に追加する。
【００５０】
このコマンドキューで特徴的なことは、ＮＡＳコマンドとＳＡＮコマンドをどちらを優先的に処理するかを制御できることである。すなわち、次に実行するコマンドを、ＮＡＳコマンドキュー先頭ポインタ５００から先に検索すれば、図１のＮＡＳクライアント２０からのＩ／Ｏが優先的に処理され、ＳＡＮコマンドキュー先頭ポインタ５５０から先に検索すれば、図１のＳＡＮクライアント３０からのＩ／Ｏが優先的に処理されることになる。
【００５１】
次に、図６により本発明の第一の実施形態に係るコマンド変換プログラムとディスクアレイ制御プログラムの起動処理について説明する。
図６は、本発明の第一の実施形態に係るコマンド変換プログラムとディスクアレイ制御プログラムの起動するときの処理の流れを示すフローチャートである。
【００５２】
図１の記憶装置１００の電源投入後、ＳＡＮ制御ボード１４０とＮＡＳ制御ボード１４５が初期化される。
【００５３】
ＳＡＮ制御ボード１４０の初期化後、ＩＰＬにより図２のＳＡＮメモリ１４０７にディスクアレイ制御プログラム１４０５とＮＡＳ制御ボード管理プログラム１４０６がディスクドライブ１５０よりロードされる。
【００５４】
ＳＡＮプロセッサ１４０９は、ディスクアレイ制御プログラム１４０５の実行を開始する。ＮＡＳ制御ボード１４５の初期化後、ＩＰＬによりコマンド変換プログラム１４５３の起動プログラムがＮＡＳ制御ボード１４５上のＲＯＭからロードされる。コマンド変換プログラム１４５３は、ディスクドライブ１５０に保存されているが、ＩＰＬはディスクドライブ１５０にアクセスできないため、先にコマンド変換プログラム１４５３の起動プログラムがロードされるようにしたものである。この起動プログラムは、ディスクアレイを初期化した後に（ステップ６２５）、ディスクアレイ初期化完了通知（ステップ６３０）を受信待ちし（ステップ６００）、受信するとＮＡＳメモリ１４５２の初期化を実行する（ステップ６０５）。
【００５５】
次に、初期化が完了したことをＮＡＳ制御ボード管理プログラム１４０６に通知する（ステップ６１０）。ＮＡＳ制御ボード管理プログラム１４０６は、その通知受信すると（ステップ６３５）、コマンド変換プログラム１４５３をディスクドライブ１５０からロードし、ＮＡＳメモリ１４５２に転送する（ステップ６４０）。転送には、ＤＭＡ等の手段を用いる。
【００５６】
次に、コマンド変換プログラム１４５３の転送完了を、コマンド変換プログラム１４５３の起動プログラムに通知する（ステップ６４５）。コマンド変換プログラム１４５３の起動プログラムは、コマンド変換プログラム１４５３のエントリポイントへジャンプし（ステップ６２０）、コマンド変換プログラム１４５３の実行を開始する。
【００５７】
次に、図７ないし図９によりディスクアレイ制御プログラムがＮＡＳ制御ボードを停止させるときの処理について説明する。
図７は、ディスクアレイ制御プログラムがＮＡＳ制御ボードを停止させるときの処理の流れを示すフローチャートである。
図８は、図７に示したフローチャートの処理から呼ばれるサブルーチンのＮＡＳ計画停止処理の流れを示すフローチャートである。
図９は、図７に示したフローチャートの処理から呼ばれるサブルーチンのＮＡＳ強制停止処理の流れを示すフローチャートである。
【００５８】
ディスクアレイ制御プログラムがＳＡＮ／ＮＡＳのコマンド処理をおこなっているとき（ステップ７００）、管理端末６０からのＮＡＳ制御ボード１４５の停止指示があると（ステップ７０５）、ＮＡＳ計画停止処理を実行する（ステップ７１０）。ＮＡＳ計画停止処理の詳細は、後に説明する。
【００５９】
また、コマンド変換プログラム１４５３から一定間隔で受信するハートビート信号のタイムアウト（ステップ７２５）により、ＮＡＳ制御ボード１４５の異常を検出した場合、コマンドキューからのＮＡＳコマンドの破棄を実行し（ステップ７３０）、ＮＡＳ強制停止処理を実行する（ステップ７３５）。ＮＡＳ強制停止処理の詳細も、後に説明する。ステップ７１０のＮＡＳ計画停止処理およびステップ７３５のＮＡＳ強制停止処理の実行後は、ＳＡＮコマンドを処理するＳＡＮのみの運用に遷移する（ステップ７１２）。
【００６０】
また、管理端末６０からの指示によりＮＡＳ制御ボード１４５を再起動した場合、再びＳＡＮ／ＮＡＳコマンド処理ステップ７００に遷移する。ＮＡＳ制御ボード１４５の再起動は、ディスクアレイ制御プログラム１４０５が図６のステップ６３０に制御を移すことで実行できる。
【００６１】
図８に示される計画停止処理では、ＮＡＳ制御ボード管理プログラム１４０６は、コマンド変換プログラム１４５３が、計画停止通知をおこなう（ステップ８００）。コマンド変換プログラム１４５３は、計画停止通知を受信すると（ステップ８１５）、ファイルキャッシュ１４５４の未書き込みデータをディスクキャッシュ１４０２に転送し（ステップ８２０）、停止完了の通知を実行する（ステップ８２５）。
【００６２】
ＮＡＳ制御ボード管理プログラム１４０６は、停止完了通知を受信すると（ステップ８０５）、ＮＡＳ制御ボード１４５の停止を記録し（ステップ８１０）、以降ＮＡＳ制御ボード１４５の監視はおこなわない。
【００６３】
図９に示される強制停止処理では、障害発生によりコマンド変換プログラム１４５３のハングアップしており（ステップ９０５）、無限ループに陥り（ステップ９１０）、一切の通信を受け付けなくなる。ＮＡＳ制御ボード管理プログラム１４０６は、コマンド変換プログラムの強制停止をＮＡＳプロセッサ１４５７への停止信号等ハードウェア手段により実行する（ステップ９００）。これによってＮＡＳ制御ボード１４５は通電を停止してもデータの喪失およびＳＡＮへの影響は無い状態となり、ＮＡＳ制御ボード１４５の交換等が実行できる。
【００６４】
本実施形態では、ＳＡＮ機能を持つハードウェアであるＳＡＮ制御ボード１４０の運用が、ＮＡＳ機能を持つハードウェアであるＮＡＳ制御ボード１４５に依存しない構造となっているため、ＮＡＳ制御ボード１４５のハードウェア障害時や、コマンド変換プログラム１４５３のソフトウェア障害時等、ＮＡＳ機能の障害時にもＳＡＮ機能の運用は影響を受けずに継続することが可能である。また、ＮＡＳ機能のみの計画停止や運用再開による保守をおこなうことができる。すなわち、ＳＡＮ制御ボード１４０上のプロセッサにより動作するディスクアレイ制御プログラム１４０５は、ＮＡＳ制御ボード１４５から送信されるファイル単位のＩ／Ｏコマンドの有無の如何によらず、ＳＡＮ制御ボード１４０がＳＡＮ５０よりブロック単位のＩ／Ｏコマンドを受け付けて、動作することが可能である。
【００６５】
さらに、ＮＡＳ制御ボード１４５とＳＡＮ制御ボード１４０の通信に内部ネットワークや共有メモリを必要としないため低いハードウェアコストで装置を実装できる。また、ＮＡＳ制御ボード１４５は、ディスクアレイ制御プログラム１４０５が動作するプロセッサが不要であるため、低いハードウェアコストで実装できる。
【００６６】
しかも、図５に示したようにＮＡＳコマンド５１５を管理するキューと、ＳＡＮコマンド５６５を管理するキューを別にすることで、ＮＡＳまたはＳＡＮのＩ／Ｏのいずれかを優先的に処理することができる。
【００６７】
また、図２に示したＳＡＮプロセッサ１４０９、ＳＡＮメモリ１４０７をＳＡＮ制御ボード１４０上に二組以上実装し、ＮＡＳコマンド５１５を管理するキューと、ＳＡＮコマンド５６５を管理するキューを別のプロセッサ、メモリによって処理する実施形態もあり得る。この形態によれば、ＮＡＳクライアント２０からのＩ／ＯとＳＡＮクライアント３０からのＩ／Ｏが、それぞれの処理系統で独立に処理されるため、一方の処理系統の負荷が高いときにも、影響を受けることなく、その他の処理系統の性能が保証され、システム全体の性能計画を容易におこなうことができる。
【００６８】
〔実施形態２〕
以下、本発明に係る第二の実施形態を、図１０および図１１を用いて説明する。
【００６９】
先ず、図１０により本発明に係る第二の実施形態の構成について説明する。
図１０は、ＳＡＮ／ＮＡＳ制御ボードの詳細なブロック図である。
【００７０】
本発明の第二の実施形態は、第一の実施形態における図１のＳＡＮ制御ボード１４０およびＮＡＳ制御ボード１４５に相当する部分を、図１０のＳＡＮ／ＮＡＳ制御ボード１０００で置き換えたものである。
【００７１】
ＳＡＮ／ＮＡＳ制御ボード１０００のＬＡＮ４０、ＳＡＮ５０、管理端末６０、ディスク装置１０５に対するインタフェースは、ＳＡＮ制御ボード１４０およびＮＡＳ制御ボード１４５と同じである。第一の実施形態との違いは、ＳＡＮプロセッサ１４０９とＮＡＳプロセッサ１４５７がメモリコントローラ１０２５およびメモリ１００５を共有している点である。このメモリ１００５をＮＡＳプロセッサ用領域１０１０とＳＡＮプロセッサ用領域１０１５とに分割して使用する。
【００７２】
コマンド変換プログラム１４５３は、ＮＡＳプロセッサ１４５７で動作し、ＬＡＮコントローラ１４５１が受信したファイルコマンドを解釈し、論理ブロックコマンドに変換する機能を持つ。コマンド変換プログラム１４５３は、作成した論理ブロックコマンドをＳＡＮプロセッサ１４０９に送信する。作成した論理ブロックコマンドをＮＡＳプロセッサ１４５７からＳＡＮプロセッサ１４０９へ送信するとき、コマンド変換プログラム１４５３は、共有領域１０２０に論理ブロックコマンドを転送する。共有領域１０２０は、ＳＡＮプロセッサ１４０９とＮＡＳプロセッサ１４５７がデータの送受信のために使用する。ディスクアレイ制御プログラム１４０５は、ポーリングまたはプロセッサ間割り込みによってＳＡＮプロセッサ１４０９からの論理ブロックコマンドを認識し、第一の実施形態と同様に物理ブロックコマンドに変換する機能を持つ。
【００７３】
ＳＡＮ／ＮＡＳ制御ボード１０００上のＮＡＳメモリコントローラ１０２５以外のデバイスは、ＳＡＮプロセッサ１４０９とＮＡＳプロセッサ１４５７で共有しない。ファイバチャネルコントローラ１４０１、ディスクキャッシュ１４０２、ディスクコントローラ１４０３は、ＳＡＮプロセッサ１４０９が、また、ＬＡＮコントローラ１４５１は、ＮＡＳプロセッサ１４５７が占有して使用する。メモリコントローラ１０２５に内蔵されている割り込みコントローラのルーティング設定により、各デバイスからの割り込みは、それらを占有して使用するプロセッサの割り込みを発生させる。
【００７４】
次に、図１１を用いて本発明の第二の実施形態に係るコマンド変換プログラムとディスクアレイ制御プログラムの起動処理について説明する。
図１１は、本発明の第二の実施形態に係るコマンド変換プログラムとディスクアレイ制御プログラムの起動するときの処理の流れを示すフローチャートである。
【００７５】
本実施形態では、ＳＡＮプロセッサ１４０９とＮＡＳプロセッサ１４５７がメモリコントローラ１０２５を共有しているので、コマンド変換プログラム１４５３のみをハードウェア的に起動・停止させることができない。したがって、コマンド変換プログラム１４５３を起動または再起動させる場合、先ず、ＮＡＳ制御ボード管理プログラムは、ＮＡＳプロセッサ用領域１０１０のゼロクリアを実行する（ステップ１１００）。次に、コマンド変換プログラム１４５３のディスクからＮＡＳプロセッサ用領域１０１０へのコピーを実行し（ステップ１１０５）、ＳＡＮプロセッサ１４０９への完了通知をおこなう（ステップ１１１０）。
【００７６】
ＮＡＳプロセッサ１４５７は、マルチプロセッサシステム固有の他系起動指示用プロセッサ割り込みの受信待ちをしており（ステップ１１１５）、割り込み受信後は、コマンド変換プログラム１４５３のエントリポイントへのジャンプを実行し（ステップ１１２０）、同プログラムの実行を開始する。
【００７７】
本実施形態は、第一の実施形態と比較して部品点数が少なく、より低コストでの実現が可能である。第一の実施形態は、メモリコントローラおよび付随する周辺回路が二組以上必要であるのに対して、本実施形態は、一組で済む。また、プロセッサ間通信に、両プロセッサが共有して使用するメモリ内の共有領域１０２０を使用するため、図２に示したプロセッサ間通信コントローラ１４０８のようなハードウェアも必要としない。一方で、本実施形態では、第一の実施形態のように、ＳＡＮ機能の運用に影響を与えずに、ＮＡＳ用ハードウェアの通電中の交換はできない。
【図面の簡単な説明】
【００７８】
【図１】本発明の第一の実施形態に係る記憶装置を用いた計算機システムの構成図である。
【図２】ＮＡＳ制御ボードとＳＡＮ制御ボードの詳細なブロック図である。
【図３】コマンド変換処理の流れを示すフローチャートである。
【図４】コマンドのキューのデータ構造の例を示す図である（その一）。
【図５】コマンドのキューのデータ構造の例を示す図である（その二）。
【図６】本発明の第一の実施形態に係るコマンド変換プログラムとディスクアレイ制御プログラムの起動するときの処理の流れを示すフローチャートである。
【図７】ディスクアレイ制御プログラムがＮＡＳ制御ボードを停止させるときの処理の流れを示すフローチャートである。
【図８】図７に示したフローチャートの処理から呼ばれるサブルーチンのＮＡＳ計画停止処理の流れを示すフローチャートである。
【図９】図７に示したフローチャートの処理から呼ばれるサブルーチンのＮＡＳ強制停止処理の流れを示すフローチャートである。
【図１０】ＳＡＮ／ＮＡＳ制御ボードの詳細なブロック図である。
【図１１】本発明の第二の実施形態に係るコマンド変換プログラムとディスクアレイ制御プログラムの起動するときの処理の流れを示すフローチャートである。
【符号の説明】
【００７９】
２０…ＮＡＳクライアント、３０…ＳＡＮクライアント、４０…ＬＡＮ、５０…ＳＡＮ、６０…管理端末、１００…記憶装置、１０５…ディスク筐体、１１０…コントローラ筐体、１４０…ＳＡＮ制御ボード、１４５…ＮＡＳ制御ボード、１５０…ディスク、１５５…通信路、１６０…コネクタ、１４０１…ファイバチャネルコントローラ、１４０２…ディスクキャッシュ、１４０３…ディスクキャッシュ、１４０４…通信用領域、１４０５…ディスクアレイ制御プログラム、１４０６…ＮＡＳ制御ボード管理プログラム、１４０７…ＳＡＮメモリ、１４０８…プロセッサ間通信コントローラ、１４０９…ＳＡＮプロセッサ、１４１０…ＳＡＮメモリコントローラ、１４５１…ＬＡＮコントローラ、１４５２…ＮＡＳメモリ、１４５３…コマンド変換プログラム、１４５４…ファイルキャッシュ、１４５５…通信用領域、１４５６…ＮＡＳメモリコントローラ、１４５７…ＮＡＳプロセッサ、１０００…ＳＡＮ／ＮＡＳ制御ボード、１００５…ＮＡＳメモリ、１０１０…ＮＡＳプロセッサ用領域、１０１５…ＳＡＮプロセッサ用領域、１０２０…共有領域。
【図１】
2005215947.tif 000003
【図２】
2005215947.tif 000004
【図３】
2005215947.tif 000005
【図４】
2005215947.tif 000006
【図５】
2005215947.tif 000007
【図６】
2005215947.tif 000008
【図７】
2005215947.tif 000009
【図８】
2005215947.tif 000010
【図９】
2005215947.tif 000011
【図１０】
2005215947.tif 000012
【図１１】
2005215947.tif 000013