(57)【要約】【課題】一つの実施形態は、ストレージ装置の利便性を向上できるストレージ装置、制御方法、及び制御プログラムを提供することを目的とする。【解決手段】一つの実施形態によれば、ストレージとインタフェースと制御部とを有するストレージ装置が提供される。インタフェースは、通信装置と物理的に接続可能である。制御部は、第１の論理通信路と第２の論理通信路とを構築する。第１の論理通信路は、インタフェースを介して第１の通信層でストレージへ接続するための通信路である。第２の論理通信路は、インタフェースを介して第２の通信層でストレージへ接続するための通信路である。第２の通信層は、第１の通信層より上位の通信層である。【選択図】図２
2019160075.tif 000002
【特許請求の範囲】
【請求項１】
ストレージと、
通信装置と物理的に接続可能であるインタフェースと、
前記インタフェースを介して第１の通信層で前記ストレージへ接続する第１の論理通信路と前記インタフェースを介して前記第１の通信層より上位の第２の通信層で前記ストレージへ接続する第２の論理通信路とを構築する制御部と、
を備えたストレージ装置。
【請求項２】
前記制御部は、
前記ストレージの少なくとも一部の領域に対する読み込みか書き込みの少なくとも一方が前記第１の論理通信路もしくは前記第２の論理通信路の少なくとも一方を介して実行できるように前記ストレージを１以上の論理ストレージとして再構成し、読み書きの可否判断を含むアクセス制御に必要なメタ情報を前記第２の論理通信路を介して受信し、前記第２の論理通信路を介して受信したメタ情報に基づいて、アクセス制御を行うアクセス制御部を有する
請求項１に記載のストレージ装置。
【請求項３】
前記アクセス制御部は、前記メタ情報に含まれる領域を少なくとも含むよう前記論理ストレージを再構成し、前記メタ情報に含まれるアクセス制御情報に基づいて、前記第１の論理通信路もしくは前記第２の論理通信路の少なくとも一方を介して前記再構成された論理ストレージを参照できるよう制御する
請求項２に記載のストレージ装置。
【請求項４】
前記アクセス制御部は、決定された読み込み、書き込み、もしくはその両方の許可に基づいて、前記論理ストレージの種類及び読み書き許可を決定し、要求されたアクセスと読み書き許可の組み合わせとが既存の論理ストレージによって実現できない場合に新たな論理ストレージを構成する
請求項３に記載のストレージ装置。
【請求項５】
前記アクセス制御部は、前記再構成された論理ストレージに対するアクセス制御条件として、前記メタ情報に含まれる読み書き制限、読み出し回数、読み出し可能開始時刻、読み出し可能終了時刻、書き込み可能時刻、書き込み可能終了時刻、アクセス元プロセス情報、アクセス元ユーザ情報の少なくとも１つを用いる
請求項４に記載のストレージ装置。
【請求項６】
前記アクセス制御部は、通知された前記メタ情報がアクセス制御条件に合致するか否かを判断する情報を前記アクセス制御部の内部に保持しない場合、前記第２の論理通信路を介して前記通信装置に対して情報提供の要求もしくは判断を依頼する通信を行う
請求項５に記載のストレージ装置。
【請求項７】
前記制御部は、
前記ストレージに対する情報の保存と参照との少なくとも一方を実行し、前記第２の論理通信路を介して前記通信装置と情報の送受信を行い、情報の送受信先と保存または参照する情報の種類とにより区別される複数のサービスを実行するサービス部と、
前記メタ情報を前記サービス部で実行されるサービスと関連づけて管理する管理部と、
を有し、
前記アクセス制御部は、前記論理ストレージを前記サービス部によるサービスの実行に先立ち構成し、
前記管理部は、前記構成された論理ストレージを前記サービス部によるサービスと関連づけて管理する
請求項３に記載のストレージ装置。
【請求項８】
前記アクセス制御部は、前記サービス部によるサービスと関連づけて管理する論理ストレージとアクセス制御の条件が異なる第２のメタ情報に基づいて、前記ストレージにおいて第２の論理ストレージを再構成し、前記第１の論理通信路を介して前記通信装置から前記再構成された第２の論理ストレージを利用可能な状態にする
請求項７に記載のストレージ装置。
【請求項９】
ストレージと通信装置に物理的に接続可能であるインタフェースとを有するストレージ装置の制御方法であって、
前記インタフェースを介して第１の通信層で前記ストレージへ接続する第１の論理通信路と前記インタフェースを介して前記第１の通信層より上位の第２の通信層で前記ストレージへ接続する第２の論理通信路とを構築すること
を含む制御方法。
【請求項１０】
ストレージと通信装置に物理的に接続可能であるインタフェースとを有するストレージ装置に、
前記インタフェースを介して第１の通信層で前記ストレージへ接続する第１の論理通信路と前記インタフェースを介して前記第１の通信層より上位の第２の通信層で前記ストレージへ接続する第２の論理通信路とを構築すること
を実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、ストレージ装置、制御方法、及び制御プログラムに関する。
【背景技術】
【０００２】
通信装置に接続可能であるストレージ装置は、通信装置を介してネットワークに接続されることがある。このとき、ストレージ装置の利便性を向上することが望まれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−２１５８９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、ストレージ装置の利便性を向上できるストレージ装置、制御方法、及び制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、ストレージとインタフェースと制御部とを有するストレージ装置が提供される。インタフェースは、通信装置と物理的に接続可能である。制御部は、第１の論理通信路と第２の論理通信路とを構築する。第１の論理通信路は、インタフェースを介して第１の通信層でストレージへ接続するための通信路である。第２の論理通信路は、インタフェースを介して第２の通信層でストレージへ接続するための通信路である。第２の通信層は、第１の通信層より上位の通信層である。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態に係るストレージ装置の構成を示す図である。
【図２】図２は、第１の実施形態に係るストレージ装置における制御及び情報の流れを示す図である。
【図３】図３は、第１の実施形態に係るストレージ装置と通信装置との接続を示す図である。
【図４】図４は、第１の実施形態に係るストレージ装置と通信装置との接続における情報の流れを示す図である。
【図５】図５は、第１の実施形態における通信アプリケーションのユースケースを示す図である。
【図６】図６は、第２の実施形態に係るストレージ装置の構成を示す図である。
【図７】図７は、第２の実施形態に係るアクセス制御部の動作を示すフローチャートである。
【図８】図８は、第２の実施形態におけるアクセス制御部にて管理する対応表の構成を示す図である。
【図９】図９は、第１の実施形態及び第２の実施形態の変形例における通信アプリケーションの具体的な形態を示す図である。
【図１０】図１０は、第１の実施形態及び第２の実施形態の変形例における通信アプリケーションの具体的な形態を示す図である。
【図１１】図１１は、第１の実施形態及び第２の実施形態の変形例における通信アプリケーションのユースケースを示す図である。
【図１２】図１２は、第１の実施形態及び第２の実施形態の変形例における通信アプリケーションの他のユースケースを示す図である。
【図１３】図１３は、第１の実施形態及び第２の実施形態の変形例における通信アプリケーションの他のユースケースを示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるストレージ装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
第１の実施形態に係るストレージ装置は、通信装置に接続可能である。例えば、エッジコンピューティングやフォグコンピューティングと呼ばれる分野において、通信装置で何らかのサービスを実行し、データを処理する方法が普及しつつある。この際、通信装置にストレージ装置を搭載することが増えている。また、主に家庭用のブロードバンドルータなどではＵＳＢポートを具備し、ＵＳＢ接続のストレージをネットワーク上で共有する機能を具備するものがある。
【０００９】
しかしながら、これらの装置に接続するストレージ装置は、情報を記憶する本来のストレージとしての機能に終始しており、装置単体ではネットワークに接続する別の装置に対して何らかのサービスを提供できない。すなわち、有線ＬＡＮや無線ＬＡＮ、ＵＳＢなどの外部接続インタフェースを介して接続した通信装置にてサービスを提供するプログラムが実行され、ストレージ側は情報の保存に特化している。
【００１０】
この方法は、通信装置が事前にストレージ装置と接続されることを考慮して設計されているか、通信装置が稼働を開始した後でソフトウェアを追加する場合しか利用できない。これらに対応するためには、装置を接続した際に起こりうる多くの可能性を考慮した設計・実装・検証が必要になるため、開発コストの増加につながる。無線ＬＡＮアクセスポイントのような通信装置では、事前に動作内容を細かく定義したうえで設計・実装されるため、多様な可能性を考慮した設計や装置内ソフトウェアを柔軟に再構築することは困難である。
【００１１】
そこで、本実施形態では、ストレージ装置において、インタフェースを介して第１の通信層でストレージへ接続する論理通信路に加えて、インタフェースを介してより上位の第２の通信層でストレージへ接続する論理通信路を構築することで、ストレージとしての機能とネットワークサービスを提供する機能とを持たせ、ストレージ装置の利便性の向上を図る。第１の通信層は、例えば、物理層又はネットワークインタフェース層を含み、第２の通信層は、ネットワーク層又はインターネット層を含む。
【００１２】
具体的には、ストレージ装置１００は、例えば、図１に示すように構成される。図１は、ストレージ装置１００の構成を示す機能ブロック図である。図１は、本実施形態に必要な機能をプロセッサなどの演算部にて実行する場合を想定したものである。
【００１３】
ストレージ装置１００は、インタフェース１０１、プロセッサ１０２、メモリ１０３、ストレージ１０４を有する。
【００１４】
インタフェース１０１は、ストレージ装置１００を外部（例えば、通信装置）に物理的に接続可能である。インタフェース１０１は、例えばＵＳＢやＰＣＩ  Ｅｘｐｒｅｓｓなどの規格に対応したコネクタを有してもよいし、Ｃｏｎｖｅｒｇｅｄ  Ｅｔｈｅｒｎｅｔや１０ＧＢＡＳＥ−ＫＲのようなバックプレーン用の通信規格に対応したコネクタを有してもよい。ストレージ装置１００はこのインタフェース１０１を介して外部の通信装置（例えば、ルータやスイッチングハブ、無線ＬＡＮアクセスポイントなど）に接続する。
【００１５】
なお、本明細書では、インタフェース１０１を主に物理的な外部との接続点（コネクタなど）を含むものとして扱う。
【００１６】
プロセッサ１０２は、ストレージ装置１００の動作を司る。プロセッサ１０２は、インタフェース１０１に対する適切なコントローラ（例えば、ＵＳＢコントローラ、ＰＣＩ  Ｅｘｐｒｅｓｓコントローラなど）とメモリ１０３に対する適切なコントローラ（例えば、メモリ１０３用のメモリコントローラなど）とストレージ１０４に対する適切なコントローラ（例えば、ストレージ１０４用のメモリコントローラなど）とを含む。プロセッサ１０２は、バス１０５を介してインタフェース１０１に接続され、バス１０６を介してメモリ１０３に接続され、バス１０７を介してストレージ１０４に接続されている。
【００１７】
メモリ１０３は、プロセッサ１０２で動作するプログラムやそのプログラムが使用するデータを一時的に保存する。メモリ１０３には、揮発性メモリであるＤＲＡＭが用いられてもよいし、ＭＲＡＭやＳＴＴ−ＲＡＭ、ＲｅＲＡＭ等の不揮発性メモリが用いられても良いし、揮発性メモリと不揮発性メモリとが組み合わされて実現されてもよい。
【００１８】
ストレージ１０４は、プロセッサ１０２で動作するプログラムやプログラムが永続的に使用するデータなどが保存されている。ストレージ１０４は、例えば、ＮＡＮＤ型フラッシュメモリなどの大容量の不揮発性メモリが利用される。なお、ＮＡＮＤ型フラッシュメモリを利用する場合には、メモリコントローラと呼ばれるメモリ用のインタフェースを介して制御情報やデータのやり取りを行う。本明細書では、メモリコントローラの機能には依存しないため、簡略化のため省略して説明する。
【００１９】
プロセッサ１０２の内部では、複数のソフトウェアが動作し得る。複数のソフトウェアは、デバイスドライバ１１０、デバイスドライバ１１１、デバイスドライバ１１４、通信プロトコルスタック１１２、通信アプリケーション１１３、ファイルシステム１１５、及びデバイスドライバ１１６を含む。
【００２０】
デバイスドライバ１１０は、インタフェース１０１の動作を制御するためのソフトウェアである。
【００２１】
デバイスドライバ１１１は、デバイスドライバ１１０の上で論理的なネットワークインタフェースを構成するソフトウェアである。デバイスドライバ１１１は、論理ネットワークインタフェースドライバ１１１と呼ぶこともある。
【００２２】
デバイスドライバ１１４は、デバイスドライバ１１０の上で論理的なストレージデバイスを構成するドライバである。ドライバ１１４は、論理ストレージデバイスドライバ１１４と呼ぶこともある。
【００２３】
通信プロトコルスタック１１２は、ネットワークインタフェースを構成するデバイスドライバ１１１の上で動作する通信プロトコルスタックである。通信プロトコルスタック１１２は、例えば、ＴＣＰ／ＩＰスタックを含む。
【００２４】
通信アプリケーション１１３は、通信プロトコルスタック１１２を利用する通信アプリケーションである。通信アプリケーション１１３は、インタフェース１０１を介して接続する通信相手に対して、ネットワークを介した何らかのサービスを提供する。
【００２５】
ファイルシステム１１５は、論理的なストレージデバイスを構成するドライバ１１４の上で動作するファイルシステムである。ファイルシステム１１５は、通信アプリケーション１１３に対して各種ファイルのＩ／Ｏを提供する。
【００２６】
デバイスドライバ１１６は、物理的なストレージ１０４に対するデバイスドライバである。デバイスドライバ１１６は、物理ストレージデバイスドライバ１１６と呼ぶこともある。
【００２７】
以降では、インタフェース１０１のプロトコルとしてＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）が用いられる場合を例示する。この場合、デバイスドライバ１１０は、ＵＳＢのコントローラの制御と上位の利用形態に依存しない基本的な処理とを担当する。論理ネットワークインタフェースドライバ１１４は、通信デバイスクラスを実現するデバイスドライバが相当し、論理ストレージデバイスドライバ１１６は、ＵＳＢ  Ｍａｓｓ  Ｓｔｏｒａｇｅクラスを提供するためのデバイスドライバが相当する。
【００２８】
ストレージ装置１００の各要素間での制御ならびに情報の流れは、例えば、図２に示すようになる。図２は、ストレージ装置における制御及び情報の流れを示す図である。
【００２９】
ストレージ装置１００には、大きく３つの流れ２０１〜２０３が存在する。流れ２０１は、外部のノード（例えば、通信装置）がネットワークサービスを提供する機能を利用する流れであり、流れ２０１，２０３は、第２の通信層（ネットワーク層又はインターネット層）でストレージ１０４の読み書きを行う場合の流れである。流れ２０１，２０３は、インタフェース１０１を介して第２の通信層（ネットワーク層又はインターネット層）でストレージへ接続する論理通信路に対応している。
【００３０】
流れ２０１は、外部のノードとの間でＴＣＰ／ＩＰなどの通信プロトコルを使って通信アプリケーション１１３が行う制御ならびにデータの流れである。通信アプリケーション１１３から通信を開始してもよいし、外部の通信ノードが送信した制御やデータを受信することで通信を開始してもよい。送信もしくは受信する情報はメモリ１０３に一時的に保存されている。
【００３１】
通信アプリケーション１１３は、必要に応じてストレージ１０４に保存されているものを読み出したり、書き込んだりする。ストレージ１０４に対して読み書きする際には、ファイルシステム１１５や物理ストレージデバイスドライバ１１６を介して行う。これは流れ２０３として示されている。
【００３２】
なお、図２中の矢印は制御情報とデータを区別なく記載している。そのため各構成要素を通過する矢印で記載したが、制御情報だけが図の矢印に従い、実際のデータはインタフェース１０１とメモリ１０３との間でＤＭＡ転送されたり、インタフェース１０１とストレージ１０４との間で転送されたりしてもよい。その際、各構成要素は必要なタイミングでメモリ１０３に転送されたデータを参照する。例えば、通信プロトコルスタック１１２や通信アプリケーション１１３は、受信したデータがメモリ１０３に書き込まれたら処理を起動する。
【００３３】
流れ２０２は、外部のノード（例えば、通信装置）がストレージとしてのストレージ装置１００の機能を利用する流れであり、第１の通信層（物理層又はネットワークインタフェース層）でストレージ１０４の読み書きを行う場合の流れである。外部のノードは、ＵＳＢデバイスドライバ１１０と論理ストレージドライバ１１４によって構成されるストレージデバイスに対してアクセスし、物理ストレージデバイスドライバ１１６を介してストレージへとアクセスする。ファイルシステム１１５を介してアクセスする場合と介さずにアクセスする場合の二つの可能性があり、一部点線を用いることで表現している。流れ２０２は、インタフェース１０１を介して第１の通信層（物理層又はネットワークインタフェース層）でストレージへ接続する論理通信路に対応している。
【００３４】
流れ２０３は、通信アプリケーション１１３がストレージ１０４にアクセスして読み書きを行う場合の流れである。ファイルシステム１１５、論理ストレージドライバ１１４、物理ストレージドライバ１１６を介して、ストレージ１０４へとアクセスする。
【００３５】
このように１つの物理的なインタフェース（コネクタ）１０１の上で論理的なインタフェースおよびデバイスを実現することによって、接続先となる通信装置との間でネットワークを介した制御およびデータの交換と、ストレージとしてのデータの読み書きとをそれぞれ実現する。以降、ストレージ装置１００の想定される利用形態に沿って、ストレージ装置１００の特徴となる処理を説明する。
【００３６】
例えば、ストレージ装置１００が通信装置３００に接続された状態は、図３に示すようになる。図３は、ストレージ装置１００と通信装置３００との接続を示す図である。
【００３７】
ストレージ装置１００は、通信線２００を介して通信装置３００に物理的に接続される。通信線２００は、例えば、シリアル通信線であってもよいし、パラレル通信線であってもよい。通信装置３００は、通信インタフェース（通信Ｉ／Ｆ）３０１、通信インタフェース（通信Ｉ／Ｆ）３０２、プロセッサ３０３、メモリ３０４、及びインタフェース３０５を有する。
【００３８】
インタフェース３０５は、ストレージ装置１００のインタフェース１０１と同様のインタフェース規格に対応しており、通信線２００を介してインタフェース１０１と通信可能に接続され得る。
【００３９】
プロセッサ３０３は、通信Ｉ／Ｆ３０１，３０２による通信処理を司る。メモリ３０４は、プロセッサ３０３上のソフトウェアが作業領域として使用することができる。通信Ｉ／Ｆ３０１、３０２は、通信処理を行い、例えば、有線もしくは無線のネットワークと通信装置３００並びにストレージ装置１００を接続する役割を担う。通信Ｉ／Ｆ３０１と通信Ｉ／Ｆ３０２との両方を通信装置３００の内部でブリッジ接続し、ブリッジ（無線ＬＡＮアクセスポイント）として動作させても良いし、通信Ｉ／Ｆ３０１と通信Ｉ／Ｆ３０２とに異なるサブネットを割り当ててルータとして動作させてもよい。いずれにせよ、プロセッサ３０３は、ネットワークを介して送受信されるパケットを通信Ｉ／Ｆ３０１，３０２とインタフェース３０５との間で転送する処理を行う。さらに、プロセッサ３０３内で通信アプリケーションが動作してストレージ装置１００のストレージ１０４に保存されている情報をネットワークに送信したり、ネットワークに接続するノードから情報を受信し、ストレージ装置１００のストレージ１０４に保存したりする機能を実行することもできる。
【００４０】
なお、図３では、図示の簡略化のため、通信装置３００の内部構成やソフトウェアの機能の図示を省略している。例えば、図１に示したような物理インタフェースに対応するデバイスドライバ、物理インタフェース上で構成される論理インタフェースのデバイスドライバ、ファイルシステム等を保持している必要がある。
【００４１】
ストレージ装置１００が通信装置３００に接続された状態におけるアプリケーションを含めた具体的な情報の流れは、図４に示すようになる。図４は、ストレージ装置１００と通信装置３００との接続における情報の流れを示す図である。
【００４２】
図４には、ストレージ装置１００上で動作する通信アプリケーション１１３と通信装置３００上で動作する通信アプリケーション３１１とが示されている。通信アプリケーション１１３は、論理ネットワークインタフェースドライバ１１１（図２参照）を介してＴＣＰ／ＩＰなどの通信を行うアプリケーションである。通信アプリケーション３１１は、ストレージ装置１００の論理ストレージデバイスドライバ１１４（図２参照）を介してストレージ１０４にアクセスを行うアプリケーションである。通信アプリケーション１１３は、流れ４０２及び流れ４０３を制御できる。流れ４０２は、通信装置３００の通信Ｉ／Ｆ３０１，３０２とインタフェース３０５、通信線２００、インタフェース１０１を介して行うパケット通信の流れである。流れ４０３は、通信アプリケーション１１３がストレージ１０４上のデータを読み書きする際のストレージＩ／Ｏの流れである。同様に、通信アプリケーション３１１は、流れ４１２及び流れ４１３を制御できる。流れ４１２は、通信Ｉ／Ｆ３０１，３０２を介して行うパケット通信の流れである。流れ４１３は、インタフェース３０５、通信線２００、インタフェース１０１を介してストレージ１０４上のデータを読み書きする際のストレージＩ／Ｏの流れである。
【００４３】
２つの通信アプリケーション１１３，３１１のユースケースについて図５を用いて説明する。図５は、通信アプリケーション１１３，３１１のユースケースを示す図である。
【００４４】
図５では、ストレージ１０４に保存された動画をネットワーク５００に接続された端末５０２に配信する場合を例示する。この動作は大きく３つのシーケンスＳ５１１〜Ｓ５１３を含む。
【００４５】
シーケンスＳ５１１は、配信対象の動画をストレージ１０４に保存するシーケンスである。シーケンスＳ５１２は、保存した動画をネットワーク５００に接続した端末５０２に送信するシーケンスである。シーケンスＳ５１３は、動画に対するアクセス権の設定や確認、動画を送信したログの収集などのメンテナンス処理に関するシーケンスである。
【００４６】
以下、各シーケンスＳ５１１〜Ｓ５１３について詳細に述べる。なお、各シーケンスＳ５１１〜Ｓ５１３において通信アプリケーション１１３と通信アプリケーション３１１の役割は柔軟に設計しうる。本実施形態では、その効果が顕著に表現できる形態を対象として述べる。
【００４７】
シーケンスＳ５１１は、ネットワーク５００を介してストレージ装置１００の通信アプリケーション１１３が行う。動画の配置を管理する管理サーバ５０１と通信アプリケーション１１３が通信し、管理サーバ５０１から適切な動画がインストールされる。これを実現するため、管理サーバ５０１はストレージ装置１００の論理インタフェースに割り当てされたＩＰアドレス（以下、ＩＰ１とする。図５ではＩＰ１は論理インタフェースのほか、代理送受信のため通信装置の通信Ｉ／Ｆ３０１にも割り当てられていると仮定する。）に対して接続要求を送信する。ネットワーク５００に問題が無い場合、宛先ＩＰアドレスとしてＩＰ１を持つパケットが通信Ｉ／Ｆ３０１を介して通信装置３００に到達する。通信装置３００は、当該パケットを検出すると、パケットをストレージ装置１００に接続するインタフェースに転送する処理を行う。この時、通信装置３００の通信Ｉ／Ｆ３０１が有線ＬＡＮであれば、受信したパケットは有線ＬＡＮのフレームフォーマット（ＩＥＥＥ８０２．３形式）であり、そのフォーマットを維持したまま物理インタフェースのフレームにカプセル化して転送する。例えば、インタフェースとしてＵＳＢを使っている場合には、ＵＳＢのヘッダを付加した有線ＬＡＮのフレームが転送される。
【００４８】
なお、通信装置３００が複数台のストレージ装置１００を接続できる形態である場合や、ストレージ装置１００の論理ネットワークインタフェース１１１に複数のＩＰアドレス（ＩＰ１，ＩＰ２）が割り当てられている場合、通信装置３００の通信Ｉ／Ｆ３０１はそれらのＩＰアドレスも保持する。さらに必要であれば、通信装置３００の内部にそれらＩＰアドレスと転送先となるインタフェースの識別子（例えば論理ネットワークインタフェース１１１のＭＡＣアドレスや物理インタフェースの識別子）とを対応づける管理表を保持していても良い。この仕組みは通信装置３００側で独自に構築しても良いし、ストレージ装置１００から通信装置３００に必要な情報を送信することで管理表の構築をサポートしても良い。
【００４９】
ストレージ装置１００は、物理インタフェースのヘッダでカプセル化された有線ＬＡＮのフレームを受信すると、初めにデバイスドライバ１１０にて物理インタフェースのヘッダを除去するとともに、物理インタフェース上に多重化されている複数の論理デバイスのうち、どのデバイスに該当するかを判断する。本実施形態では、論理ネットワークインタフェースデバイスと論理ストレージデバイスとインタフェース１０１上に実現しているが、受信したフレームは有線ＬＡＮのフレームフォーマットであるため、論理ネットワークインタフェースドライバ１１１に転送する。論理ネットワークインタフェースドライバ１１１は、通知されたフレームを有線ＬＡＮ（ＩＥＥＥ８０２．３）のフレームとして解釈し、宛先ＭＡＣアドレスが論理ネットワークインタフェースデバイス１１１のＭＡＣアドレスに一致することを確認する。一致しない場合には、当該フレームは破棄する。
【００５０】
宛先ＭＡＣアドレスが論理ネットワークインタフェース１１１に一致した場合、当該フレームは通信プロトコルスタック１１２に渡される。通信プロトコルスタック１１２は、ＴＣＰ／ＩＰの処理を行い（宛先ＩＰアドレスが論理ネットワークインタフェースに割り当てたＩＰ１であることを確認するなどして）、通信アプリケーション１１３に管理サーバ５０１からの接続要求を渡す。その後、さらなるパケット送受信の後に管理サーバ５０１と通信アプリケーション１１３との第２の通信層での接続が確立される。
【００５１】
管理サーバ５０１と通信アプリケーション１１３との接続が確立された後は、管理サーバ５０１と通信アプリケーション１１３との間で事前に決められた手順に基づいて処理を行う。管理サーバ５０１は動画ファイルをストレージ装置１００に向けて送信し、通信アプリケーション１１３が受信した後、バッファとしてメモリ１０３を使用するなどしながら最終的にストレージ１０４に動画ファイルが保存される。動画ファイルの保存にあたっては、ファイルシステム１１５が提供するファイルＩ／Ｏを通信アプリケーション１１３が利用する形態である。
【００５２】
さらにシーケンスＳ５１１を用いて、その公開を制御するメタ情報を伝送しても良い。メタ情報には、流れ２０２（図２参照）によるストレージ１０４へのアクセスを制御するために必要な情報を含めることができる。例えば、参照回数（当該情報を参照できる上限回数）、参照可能時刻（当該情報を参照できるようになる時刻）、参照終了時刻（当該情報が参照できなくなる時刻）、読み書きの種別、読み書きの主体（プロセス情報、ユーザ情報など）などを含めても良い。この機能を用いることで、保存する情報とその参照可否を遠隔から制御することが可能となる。これら参照可否の制御は、単純な制御は論理ストレージドライバ１１４もしくはファイルシステム１１５が実現する。複雑な制御（ユーザ認証など）は第２の実施形態にて述べる。以上が、シーケンスＳ５１１である。
【００５３】
続いて、シーケンスＳ５１２について述べる。シーケンスＳ５１２は、シーケンスＳ５１１でストレージ１０４に保存した動画を通信装置３００経由でネットワーク５００上の端末５０２に向けて送信する。送信するアプリケーションは通信装置３００上で動作する通信アプリケーション３１１である。
【００５４】
通信アプリケーション３１１は、ネットワーク５００上の端末５０２から動画を取得する要求を受信する。そして、その要求に含まれる識別子を解析することにより、送信対象となる動画を特定する。対象が特定できると、通信アプリケーション３１１は、当該識別子を持つファイルがストレージ１０４に保存されているかどうかを確認する。この操作は図４に示す流れ４１３（通信アプリケーション３１１→インタフェース３０５→インタフェース１０１→プロセッサ１０２→ストレージ１０４）に沿って行われる。
【００５５】
なお、ストレージ装置１００の論理ストレージデバイスドライバ１１４（図２参照）は、ストレージ装置１００からのアクセスと通信装置３００からのアクセスとに対して適切な排他制御機能を提供してもよい。例えば、図５に示すシーケンスＳ５１１が実行されている際にはシーケンスＳ５１２に基づくアクセスを遮断もしくは待機させる。他にも、シーケンスＳ５１１が実行できる時間をあらかじめ指定しておき、その時間だけシーケンスＳ５１１を許可し、それ以外はシーケンスＳ５１２のみを許可する、などが考えられる。排他制御を行う際に、ストレージ１０４が双方に対して常時接続されているように振る舞っても良いし、アクセスを遮断している際には切断されているかのように振る舞っても良い。
【００５６】
また、排他制御を行う代わりにファイルシステム１１５（図２参照）が提供するスナップショットの機能を活用しても良い。その際は、通信装置３００とストレージ装置１００との双方がファイルシステム１１５を介したアクセスを行う。シーケンスＳ５１１にて書き込み処理が必要となるため、ストレージ装置１００では通常のファイルシステムとして参照できるようにしておく。一方、シーケンスＳ５１２では書き込み処理は不要であるため、ストレージ装置１００の内部で定期的にスナップショットを作成し、そのスナップショットを通信装置３００に公開する。
【００５７】
なお、スナップショットの作成タイミングは、前述のようにシーケンスＳ５１１とは無関係の定期的なタイミングで実行しても良いし、シーケンスＳ５１１の実行タイミングに同期させてもよい。また、シーケンスＳ５１１が不規則に起動させるようであれば、シーケンスＳ５１１が終了する際に作成しても良い。
【００５８】
要求されたファイルが存在しない場合、通信アプリケーション３１１は、要求した端末５０２にエラー応答を送信する。ファイルが存在した場合、先ほどと同じ流れ４１３（図４参照）を通ってファイルを読み込む。読み込む際に、ストレージ装置１００の物理ストレージデバイスドライバ１１６もしくは論理ストレージデバイスドライバ１１４（図２参照）は、メモリ１０３をバッファとして利用してもよい。いずれにせよ、ストレージ１０４から指定された動画ファイルが読み出され、通信アプリケーション３１１は、適切な処理（具体的にはＴＣＰ／ＩＰの処理など）を行って要求元の端末５０２へと送り返す。以上がシーケンスＳ５１２である。
【００５９】
続いて、シーケンスＳ５１３について述べる。このシーケンスＳ５１３はさらに２つのサブシーケンスＳ５１３ａ，Ｓ５１３ｂに分かれる。
【００６０】
１つ目のサブシーケンスＳ５１３ａは、通信装置の通信アプリケーション３１１が保存・管理している情報のストレージ装置１００への収集である。通信装置３００上の通信アプリケーション３１１は、実行した動画の配信ログを保持しており、ストレージ装置１００上の通信アプリケーション１１３がそのログを定期的に収集する。ログの収集にあたっては、両方の通信アプリケーション１１３，３１１が互いにＴＣＰ／ＩＰで通信すればよい。なお、ログをファイルの形でストレージ１０４に保存しておき、通信アプリケーション１１３がそれを参照する方法を用いても良い。
【００６１】
２つ目のサブシーケンスＳ５１３ｂは、ストレージ装置１００の通信アプリケーション１１３が収集した情報の外部への送信である。通信アプリケーション１１３は、定期的に管理サーバ５０１と通信し、管理情報を入手したり、収集したログを送信したりする。この処理は１つ目のサブシーケンスＳ５１３ａと同様に、論理ネットワークインタフェースを介した通信として実現する。以上がシーケンスＳ５１３である。
【００６２】
これまでに述べたシーケンスＳ５１１〜Ｓ５１３では、ストレージ装置１００の接続相手となる通信装置３００が多くの読み出し処理を実行するシーケンスＳ５１２にて論理ストレージデバイスドライバ１１４（図２参照）を用い、それ以外の細かな制御が必要なケースにて論理的ネットワークインタフェースを使う。通信装置３００とストレージ装置１００とのインタフェースをストレージ１０４とすることで、端末装置５０２の通信が通信装置３００にて終端され、通信処理全体のオーバヘッドを削減できる。一方、動画のインストールやログの収集などの細かい制御においては、動作の柔軟性が重要である。これには標準的な通信プロトコルが適している。
【００６３】
以上のように、第１の実施形態では、ストレージ装置１００において、ひとつの物理的なインタフェース１０１上に複数の論理インタフェース（複数の論理通信路）を構築し、ストレージ１０４に対するアクセス処理に用いる論理インタフェース（論理通信路）をその特性に応じて使い分けられるようにしている。これによって、通信装置３００に対してストレージ１０４を容易に接続できるようになり、用途に応じて通信装置３００側にアプリケーションを追加したり、ストレージ装置１００側にアプリケーションを追加したりできるようになる。この結果、ストレージ装置１００にストレージとしての機能とネットワークサービスを提供する機能とを持たせることができ、ストレージ装置１００の利便性を向上できる。すなわち、ネットワーク内におけるストレージ装置１００の柔軟性を向上でき、より容易にストレージ１０４を含むＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）システムを構築できるようになる。
【００６４】
（第２の実施形態）
第２の実施形態にかかるストレージ装置１００ｋについて説明する。以下では、第１の実施形態と異なる部分を中心に説明する。
【００６５】
第２の実施形態では、第１の実施形態で示したメタ情報とその制御に関わる部分を追加する。
【００６６】
具体的には、ストレージ装置１００ｋは、図６に示すように、プロセッサ１０２ｋ内で動作し得るソフトウェアが第１の実施形態と異なる。図６は、ストレージ装置１００ｋの構成を示す図である。プロセッサ１０２ｋ内で動作し得る複数のソフトウェアは、論理ストレージデバイスドライバ１１４、ファイルシステム１１５（図１参照）に代えて論理ストレージデバイスドライバ１１４ｋ、ファイルシステム１１５ｋを含み、アクセス制御部１１７ｋをさらに含む。
【００６７】
論理ストレージデバイスドライバ１１４ｋは、メタ情報に基づくストレージ１０４へのアクセス制御を実現するために、複数の要素１１４ｋ１〜１１４ｋ５に分割されている。ファイルシステム１１５ｋは、メタ情報に基づくストレージ１０４へのアクセス制御を実現するために、複数の要素１１５ｋ１〜１１５ｋ５に分割されている。分割された各要素１１４ｋ１〜１１４ｋ５，１１５ｋ１〜１１５ｋ５は、ストレージ１０４に対する異なるアクセス制御と異なる機能とを持った１以上のパーティション（１以上の論理ストレージ）を外部（通信装置、もしくは本願装置内のアプリケーション１１３）に提供し得る。その際、ファイルシステム１１５ｋは各パーティションに対して独立したファイルシステムを提供する。アクセス制御部１１７ｋは、メタ情報に基づいて論理ストレージデバイスドライバ１１４ｋとファイルシステム１１５ｋとを制御し、指定されたアクセス制御に対して適切なパーティション（適切な論理ストレージ）をストレージ内に論理的に再構成する機能、パーティション（論理ストレージ）に対するアクセス制御を司る機能を具備する。
【００６８】
図６では分割数として５を採用したが、この数に特段の制約は無い。より少ない数でも多い数でもよい。また、図６では両要素を明示的に分割して複数の機能要素が存在するとしているが、実際には１つの要素でソフトウェアによって複数のパーティションを提供するようにしても良い。提供するパーティションの数より少ない数に分割され、幾つかの分割された構成要素が複数のパーティションを提供するようにしても良い。
【００６９】
第１の実施形態で示した流れ２０１，２０２，２０３については、概ね同じ動作を行う。ただし、本実施形態では流れ２０１と流れ２０２とにメタ情報に基づくアクセス制御が加わる。以下に具体的に述べる。
【００７０】
流れ２０１によって情報およびそのメタ情報がストレージ１０４に保存される点については、第１の実施形態と同じである。アクセス制御部１１７ｋは、メタ情報が通知されているか否かを確認し、さらに通知されている場合にはそのアクセス制御の内容を確認する。通知されており、且つ、新たに指定された内容が既存のパーティションに一致する、もしくは既存パーティションで対応できる場合には、パーティションの変更処理は行わない。一方、既存パーティションで対応できないと判断した場合には、パーティションの作成を行う。
【００７１】
この判断を行う条件は、対応するメタ情報に基づいてアクセス制御部１１７ｋが判断できる形で実現する。例えば、アクセス制御部１１７ｋのプログラムに直接判断条件を記載しても良いし、メモリ１０３に保存された条件テーブルを参照しても良い。条件テーブルは第２の論理通信路を用いてインストール可能であるとする。その判断条件の内容は、例えば、以下の（１）〜（３）である。
（１）ストレージ１０４へアクセスする主体（インタフェース１０１を介して接続する通信装置、もしくはアプリケーション１１３、それらを使用する利用者・利用者群）が既パーティションの主体と同じか、否か。
（２）ストレージ１０４への書き込みを要求するか、否か。
（３）ストレージ１０４へ保存する情報に対して特別な処理を要求するか、否か（例えば、情報を別途指定される鍵で暗号・復号処理を必要とするか、など）。
【００７２】
なお、この条件は（１）〜（３）に限定されない。また、ここでは保存された情報の参照回数や参照開始タイミングの制御（所定の時刻になったら参照を許可し、所定の時刻になったら参照を拒否する）については、パーティションの作成とは独立にアクセス制御部１１７ｋにて実現されるものとする。
【００７３】
また、アクセス制御部１１７ｋにて要求を受信した場合の動作フローは、例えば、図７のようになる。図７は、アクセス制御部１１７ｋの動作を示すフローチャートである。
【００７４】
アクセス制御部１１７ｋは、要求の種別を判断する（Ｓ１）。要求には大きく２つあり、ひとつはストレージ１０４へのアクセス可否判断、もうひとつはメタ情報の追加・削除・更新に関するものである。
【００７５】
アクセス可否判断とは、インタフェース１０１もしくはアプリケーション１１３が要求するストレージ１０４へのアクセスに対して、その可否を決定する処理である。この要求は、ストレージ１０４もしくはその内部のパーティションに対して最初にアクセスする際に１回発生するように実装しても良いし、アクセスのたびに発生するように実装しても良い。前者であれば、例えばパーティションをマウントする際にアクセス可否判断を行い、後者であれば、アクセスを発生させる命令を実行するたびに判断を行う。前者の方がオーバヘッドは小さいが、後者の方が細かい可否判断ができる可能性がある。
【００７６】
アクセス制御部１１７ｋは、要求の種別がアクセス可否判断である場合（Ｓ１で「アクセス可否判断」）、判断情報を収集し（Ｓ２）、パーティションが既に使用中であるなどの理由からアクセスが不可である場合（Ｓ３で「不許可」）、対応する要求を拒否する旨をアクセス元に返す（Ｓ４）。アクセス制御部１１７ｋは、パーティションがアイドル中であるなどの理由からアクセスが可能である場合（Ｓ３で「許可」）、対応する要求を既存のパーティションに対応付けて許可する（Ｓ５）。
【００７７】
メタ情報の追加・削除・更新は、ストレージ１０４に保存する情報に対して、対応するメタ情報を新たに追加したり、削除したり、更新する処理である。追加の処理はストレージ１０４へ情報を保存する前に行われ、その処理結果に応じた適切なパーティションに対して情報の保存が実行される。一方、削除および更新は、削除済みの情報もしくは保存済みの情報に対応するメタ情報に対して行われる。
【００７８】
メタ情報を追加する場合の処理は大きく２つに分かれる。ひとつは、当該メタ情報により定義されるアクセス制御が既存のパーティションにて実現できる場合（例えば、許可されているアクセス元が同じで参照可能時刻等の制限が無い、など）である。この場合、新たなパーティション作成は不要であり、既存パーティションをそのまま使用する。アクセス制御部１１７ｋは、指定されたメタ情報とそのメタ情報を用いるストレージ１０４へのアクセスが当該パーティションに向かうよう対応づけを行う。この対応づけはアクセス制御部１１７ｋの内部で対応表を構成して管理する（図８参照）。また、アクセス元へ対応関係を通知しても良い。例えば、パーティションに対して直接アクセスさせる実装とし、当該パーティションの識別子を通知する。
【００７９】
もうひとつは、既存のパーティションでは実現できない場合である。この場合、アクセス制御部１１７ｋは新たなパーティションを作成し、当該メタ情報とパーティションとを対応づけて管理する。なお、新たなパーティションが作成できなかった場合には、当該アクセスを拒否する旨の応答を返す。パーティションが作成できない状況としては、論理ストレージデバイスドライバ１１４ｋやファイルシステム１１５ｋの許容できる要素数を超える場合や、ストレージ１０４に十分な空き容量が無い場合が考えられる。
【００８０】
メタ情報を更新する場合の処理は、原則として追加する場合と同様である。更新の結果、既存のパーティションで対応できない場合、新しいパーティションを割り当てる。その際、既存パーティションに含まれる情報をコピーしても良いし、何も含まないパーティションを用意しても良い。
【００８１】
アクセス制御部１１７ｋは、要求の種別が追加・更新である場合（Ｓ１で「追加・更新」）、既存のメタ情報を確認し（Ｓ６）、既存のパーティションで対応が可能である場合（Ｓ７で「Ｙｅｓ」）、対応する要求を既存のパーティションに対応付けて許可する（Ｓ８）。アクセス制御部１１７ｋは、既存のパーティションで対応が不可能である場合（Ｓ７で「Ｎｏ」）、新規パーティションを作成し（Ｓ９）、作成できた場合（Ｓ１０で「Ｙｅｓ」）、対応する要求を新規パーティションに対応付けて許可する（Ｓ１１）。アクセス制御部１１７ｋは、新規パーティションが作成できなかった場合（Ｓ１０で「Ｎｏ」）、対応する要求を拒否する旨をアクセス元に返す（Ｓ１２）。
【００８２】
メタ情報を削除する場合、そのメタ情報に対応するパーティションの有無を確認する。パーティションが存在する場合、当該パーディションを削除する。削除の際、当該パーティションに対するアクセスが発生している場合には、削除が必要であることを通知してそれらの完了を待ってから削除しても良いし、一定時間待機してそれらの完了を待ってから削除しても良いし、それらをエラーとして強制終了させて即座に削除しても良い。いずれにせよ、メタ情報に対応づけられていないパーティションが残らないように処理を実行する。
【００８３】
アクセス制御部１１７ｋは、削除対象のメタ情報を確認し（Ｓ１３）、メタ情報に対応するパーティションが存在する場合（Ｓ１４で「Ｙｅｓ」）、その対応するパーティションを削除する（Ｓ１５）。アクセス制御部１１７ｋは、メタ情報に対応するパーティションが存在しない場合（Ｓ１４で「Ｎｏ」）、処理を終了する。
【００８４】
一連のメタ情報に関する制御は、図２で述べた流れ２０１に従って行う。すなわち、アクセス制御部１１７ｋに通信アプリケーション１１３の機能を持たせるか、通信アプリケーション１１３が外部とやり取りする情報を受け取る機能を持たせることで実現する。いずれにせよ、ストレージ装置１００ｋのメタ情報は、物理的に接続している範囲を超えて、その外部から制御できるという特徴を有する。なお、メタ情報を外部から制御させるにあたり、メタ情報の送受信を行う通信を暗号化したり、通信相手の認証を行ったりしても良い。これらは通信アプリケーション１１３の機能として実現すればよい。
【００８５】
さらにメタ情報の送信元を直接接続している通信装置３００（図３参照）に限定しても良い。この制限を実現するにあたり、第１の論理通信路と第２の論理通信路とで協調して情報を送るようにしてもよい。例えば、２つの通信路にメタ情報を分割して送信したり、第２の論理通信路には暗号化したメタ情報を流した上で第１の論理通信路で暗号鍵を通知する等である。
【００８６】
アクセス制御部１１７ｋにて管理する対応表は、例えば図８に示す構成を有する。図８は、アクセス制御部１１７ｋにて管理する対応表の構成を示す図である。
【００８７】
図８に示す対応表は、図６に示した論理ストレージデバイスドライバ１１４ｋとファイルシステム１１５ｋの分割数（５つ）に対応し、５つのエントリを保持している。各エントリは対応するパーティション、ファイルシステム、メタ情報の識別子（メタ情報ＩＤ）、アクセス元識別子、参照可能時間などを保持している。エントリを構成する情報は一例であり、必ずしもこれに従う必要は無い（例えば、パーティションサイズ等を保持していても良い）。
【００８８】
ファイルシステムの情報として記載されている“ＦＳ＿ｔｙｐｅ１”や“ＦＳ＿ｔｙｐｅ２”は実際に使用するファイルシステムの識別子を保持しているとする。
【００８９】
メタ情報ＩＤは、ストレージ装置内でメタ情報を一意に特定可能な識別子であり、アクセス制御部１１７ｋが割り当てる（割り当てた識別子は適切にアクセス元に通知される）。なお、図８において“ＥＸＴ＿Ｐ１”は「インタフェース１０１を介して接続する装置のプロセスＰ１」、“ＩＮＴ＿Ｐ１”は「ストレージ装置内で動作する通信アプリケーション１１３であるプロセスＰ２」、“ＥＸＴ＿Ｐ３，ＵＳＥＲ２”は「外部装置で動作するプロセスＰ３であって、そのユーザがＵＳＥＲ２であるもの」、「ＥＸＴ＿＊」と「ＩＮＴ＿＊」はそれぞれ「外部装置で動作する任意のプロセス」と「ストレージ装置内で動作する任意の通信アプリケーション」を意味する。このように「ストレージ装置の外部」と「ストレージ装置の内部」という情報だけにとどまらず、プロセス名やプロセスＩＤ、通信元のユーザ情報などより詳細な情報が利用できる場合には、その情報をアクセス制御に用いてよい。
【００９０】
アクセス制御部１１７ｋは、これらの情報を入手・判断するため必要な手段を具備し、それは第２の論理通信路上の通信として実施する（例えば、通信アプリケーション１１３から通知された通信相手ユーザの情報（ユーザ名やパスワード）を管理する機能や、それらを外部の認証サーバに問い合わせる機能、など）。また、外部装置に対応する機能を持たせても良い（例えば、外部装置上で動作するアプリケーションの識別情報を調査してストレージ装置１００ｋに送信する機能、など）。
【００９１】
続いて、本実施形態で使用したパーティションの概念について補足する。一般に、パーディションとは、物理的なストレージを論理的に分割した際の一部分を指す。これに対して、本実施形態でのパーティションは、より広範な意味を含む。具体的には、論理的な領域に対してソフトウェアで構築された一部の領域（例えば、名前空間の分離のより隔離された領域）、ストレージ上に保存されたディスクイメージファイルを参照することによって作られる仮想ディスク、既に「パーティション」として認識されている領域のスナップショット、スナップショットと差分情報の組み合わせ、などを含む。これらを踏まえ、例えば、物理的なストレージ１０４の一部として確保した領域を第１パーティションとしてストレージ装置１００ｋの通信アプリケーション１１３から読み書き可能な状態で参照させ、同パーティションのスナップショットを外部装置（図５に示す通信装置３００、管理サーバ５０１など）に読み出しのみ可能な状態で参照させる、などの使い方が可能となる。
【００９２】
このように、第２の実施形態では、物理的なインタフェース１０１上に構成される２つの論理通信路のうち、より上位の通信層で通信が可能な第２の論理通信路を用いて、ストレージ１０４に対するアクセスを制御する情報を送受信し、同情報に基づいてアクセス制御を行う。これにより、物理的に通信装置３００に接続されるストレージ装置１００ｋにおいて、ストレージ装置１００ｋ上で動作するサービスに即した制御が実現できる。
【００９３】
なお、通信アプリケーション１１３の具体的な形態のバリエーションは、例えば、図９（ａ）〜図９（ｃ）、図１０（ａ）〜図１０（ｂ）に示す形態であってもよい。図９（ａ）〜図９（ｃ）、図１０（ａ）〜図１０（ｂ）は、それぞれ、第１の実施形態及び第２の実施形態の変形例における通信アプリケーション１１３の具体的な形態を示す図である。
【００９４】
図９（ａ）〜図９（ｃ）、図１０（ａ）〜図１０（ｂ）は、第２の実施形態のブロック図（図６）に基づいているが、第１の実施形態のブロック図（図１）でも同様に適用可能である。ここでは、プロセッサ１０２上で一般的なＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が動作するものとしている。
【００９５】
図９（ａ）は、複数の通信アプリケーション１１３−１〜１１３−ｎ（ｎは２以上の整数）が全てユーザ空間に配置され、他のソフトウェア（デバイスドライバ１１０、論理ネットワークインタフェースドライバ１１１、通信プロトコルスタック１１２、論理ストレージデバイスドライバ１１４ｋ、ファイルシステム１１５ｋ、物理ストレージデバイスドライバ１１６、アクセス制御部１１７ｋ）がカーネル空間に配置される例を示す。
【００９６】
図９（ｂ）は、複数の通信アプリケーション１１３−１〜１１３−ｎと他のソフトウェア１１０〜１１２，１１４ｋ、１１５ｋ，１１６，１１７ｋとがカーネル空間に配置される例を示す。
【００９７】
図９（ｃ）は、図９（ａ）と図９（ｂ）とを組み合わせたものであり、複数の通信アプリケーション１１３−１〜１１３−ｎの一部の通信アプリケーション１１３がユーザ空間に配置され、他の一部の通信アプリケーション１１３がカーネル空間に配置される例を示す。
【００９８】
図９（ａ）〜図９（ｃ）のそれぞれの場合において、通信アプリケーション１１３の数は重要ではなく、メモリなどのリソースが許す範囲において複数の通信アプリケーション１１３を実行して良い。
【００９９】
図１０（ａ）はストレージ装置１００ｋに仮想化機能１００１を搭載し、それを用いて通信アプリケーション１１３を仮想マシンＶＭ１〜ＶＭｎ上で動作させる例である。仮想マシンＶＭ１〜ＶＭｎ内に通信アプリケーション１１３を複数実行させることができ、仮想マシンＶＭ１〜ＶＭｎも複数実行させることができる。
【０１００】
例えば、ユーザ空間には、複数の仮想マシンＶＭ１〜ＶＭｎが配置され、カーネル空間には、図９（ａ）と同様のソフトウェア（デバイスドライバ１１０、論理ネットワークインタフェースドライバ１１１−Ｐ、通信プロトコルスタック１１２−Ｐ、論理ストレージデバイスドライバ１１４ｋ−Ｐ、ファイルシステム１１５ｋ−Ｐ、物理ストレージデバイスドライバ１１６、アクセス制御部１１７ｋ）に加えて仮想化機能１００１が配置される。各仮想マシンＶＭ１〜ＶＭｎは、仮想的なユーザ空間と仮想的なカーネル空間とを有する。仮想マシンＶＭ１の仮想的なユーザ空間には、複数の通信アプリケーション１１３−ａ１〜１１３−ｎ１が配置され、仮想マシンＶＭ１の仮想的なカーネル空間には、複数のソフトウェア（論理ネットワークインタフェースドライバ１１１−Ｖ、通信プロトコルスタック１１２−Ｖ、論理ストレージデバイスドライバ１１４ｋ−Ｖ、ファイルシステム１１５ｋ−Ｖ）が配置される。仮想マシンＶＭ１の仮想的なユーザ空間には、複数の通信アプリケーション１１３−ａＸ〜１１３−ｎＸが配置され、仮想マシンＶＭ１の仮想的なカーネル空間には、仮想マシンＶＭ１と同様の複数のソフトウェア１１１−Ｖ，１１２−Ｖ，１１４ｋ−Ｖ，１１５ｋ−Ｖが配置される。通信アプリケーション１１３の数と仮想マシンＶＭ１〜ＶＭｎの数は重要ではない。
【０１０１】
仮想マシンＶＭ１〜ＶＭｎを用いることで仮想マシンＶＭ１〜ＶＭｎ間に高い独立性を維持できるが、仮想化に伴うオーバヘッドが大きい。これを解決するため名前空間などの管理情報を分離するコンテナ技術がある。図１０（ｂ）は、コンテナ技術を適用した例である。この図では分離された各名前空間ＮＳ１〜ＮＳｎ内に１つの通信アプリケーション１１３−ａ〜１１３−ｎを記載しているが、１つの名前空間（各コンテナ）ＮＳ１〜ＮＳｎ内に複数の通信アプリケーションを含めても良い。また、図には記載していないが、図９と図１０に記載した形態を各々組合せも良い。
【０１０２】
図１０に記載の形態では、各仮想マシンＶＭ１〜ＶＭｎもしくは名前空間（各コンテナ）ＮＳ１〜ＮＳｎはストレージ１０４内に論理的に再構成された固有の論理ストレージが割り当てられ、その内部だけを利用する。第２の実施形態で述べた本願のパーティションは、仮想マシンおよびコンテナに対する固有の論理ストレージとして利用できる。これにより、ストレージ装置１００ｋ上で独立した複数の通信アプリケーションが動作し、そのパーティションのスナップショットを他方の論理伝送路（物理的な範囲に限定される論理伝送路）を介して通信装置３００に公開するという使い方が可能となる。また、基礎となるパーティションとスナップショットとの関係は逆でもよく、通信装置３００に基礎となるパーティションを公開し、そのスナップショットを範囲が限定されない論理伝送路を利用する通信アプリケーション１１３に公開するようにしてもよい。
【０１０３】
例えば、図１１に示すユースケースが考えられる。図１１（ａ）及び図１１（ｂ）は、それぞれ、第１の実施形態及び第２の実施形態の変形例における通信アプリケーション１１３のユースケースを示す図である。図１１（ａ）は、これまでに述べた通信アプリケーション１１３がネットワーク上の管理サーバ５０１（図５参照）から情報を取得・保存し、通信装置３００（図５参照）はスナップショットから情報を読み出して通信装置３００が接続するネットワーク５００内の端末５０２等に配布するような場合を例示する。ストレージ１０４内に再構成されたパーティション１〜パーティション３のうちパーティション３が仮想マシンＶＭ及び通信装置３００で利用される場合、アクセス制御部１１７ｋは、図１１（ｃ）に示すように、パーティション３について、仮想マシンＶＭに対してＲｅａｄ／Ｗｒｉｔｅ可能とし、通信装置３００に対してＲｅａｄ  Ｏｎｌｙにアクセス制御する。
【０１０４】
図１１（ｂ）は、通信装置３００（図５参照）が局所的な情報を収集してストレージ１０４に保存し、通信アプリケーション１１３はそのスナップショットから情報を読み出して、適宜変換処理を行った後、管理サーバ５０１（図５参照）に保存するような場合である。ストレージ１０４内に再構成されたパーティション１〜パーティション３のうちパーティション３が仮想マシンＶＭ及び通信装置３００で利用される場合、アクセス制御部１１７ｋは、図１１（ｄ）に示すように、パーティション３について、仮想マシンＶＭに対してＲｅａｄ  Ｏｎｌｙとし、通信装置３００に対してＲｅａｄ／Ｗｒｉｔｅ可能にアクセス制御する。
【０１０５】
なお、図１０（ａ）、図１０（ｂ）の例では仮想マシンＶＭを１台用いる場合を例示したが、図１２（ａ）に示すように、複数台の仮想マシンＶａ，Ｖｂを用いても良い。図１２（ａ）は、第１の実施形態及び第２の実施形態の変形例における通信アプリケーションの他のユースケースを示す図である。ストレージ１０４内に再構成されたパーティション１〜パーティション３のうちパーティション１が仮想マシンＶａ及び通信装置３００で利用される場合、アクセス制御部１１７ｋは、図１２（ｂ）に示すように、パーティション１について、仮想マシンＶＭａに対してＲｅａｄ  Ｏｎｌｙとし、通信装置３００に対してＲｅａｄ／Ｗｒｉｔｅ可能にアクセス制御する。ストレージ１０４内に再構成されたパーティション１〜パーティション３のうちパーティション３が仮想マシンＶｂ及び通信装置３００で利用される場合、アクセス制御部１１７ｋは、パーティション３について、仮想マシンＶＭｂに対してＲｅａｄ  Ｏｎｌｙとし、通信装置３００に対してＲｅａｄ／Ｗｒｉｔｅ可能にアクセス制御する。
【０１０６】
あるいは、図１３（ａ）に示すように、組み合わせの際に図１１（ａ）及び図１１（ｂ）の形態を組み合わせても良い。図１３（ａ）は、第１の実施形態及び第２の実施形態の変形例における通信アプリケーションの他のユースケースを示す図である。すなわち、ストレージ１０４内に再構成されたパーティション１〜パーティション３のうちパーティション１が仮想マシンＶａ及び通信装置３００で利用される場合、アクセス制御部１１７ｋは、図１３（ｂ）に示すように、パーティション１について、仮想マシンＶＭａに対してＲｅａｄ／Ｗｒｉｔｅ可能とし、通信装置３００に対してＲｅａｄ  Ｏｎｌｙにアクセス制御する。ストレージ１０４内に再構成されたパーティション１〜パーティション３のうちパーティション３が仮想マシンＶｂ及び通信装置３００で利用される場合、アクセス制御部１１７ｋは、パーティション３について、仮想マシンＶＭｂに対してＲｅａｄ  Ｏｎｌｙとし、通信装置３００に対してＲｅａｄ／Ｗｒｉｔｅ可能にアクセス制御する。
【０１０７】
あるいは、仮想マシンを使用しない場合、コンテナ技術を用いる場合（図１０（ｂ）参照）などでも同様に適用できる。
【０１０８】
なお、パーティションやスナップショットを作成するタイミングは、それらパーティションやスナップショットを必要とする通信装置が接続したとき、もしくは通信アプリケーション１１３が起動する時のいずれかである。通信アプリケーション１１３には単なるアプリケーションだけではなく、前述の仮想マシンを用いた提供形態やコンテナ技術を用いた提供形態も含む。いずれにせよ、実際にアクセスが発生する前に第２の実施形態で述べたメタ情報の追加・更新処理が発生することにより、必要なパーティションもしくはスナップショットが作成される。なお、第２の実施形態で述べた通り、既存のパーティションで同じアクセス制限が実現できる場合には、新たなパーティションは作成されず、既存パーティションを使用するような処理が実行される。
【０１０９】
あるいは、物理的な接続の範囲に限定されない第２の論理通信路は、ストレージ装置１００ｋにおいて複数構築されてもよい。第２の論理通信路を構築する方法は大きく２つあり、第２の論理通信路そのものを増やす方法と、論理通信路上に更なる識別子を追加して多重化する方法がある。前者の例として、ＰＣＩ  ＥｘｐｒｅｓｓやＵＳＢの多機能デバイスにおける機能もしくはインタフェースの数を増やす方法がある。後者の例として、第２の論理通信路がＩＥＥＥ８０２．３に基づく通信プロトコルを利用する場合、ＩＥＥＥ  ８０２．１Ｑに基づくＶＬＡＮタグを挿入することで１つの第２の論理通信路を複数の論理通信路として扱うことができる。
【０１１０】
あるいは、第１の実施形態及び第２の実施形態では、大容量ストレージからパーティションを構成する際に、その内部情報を変化させることは想定していないが、ファイルシステムに所有者情報等が含まれる場合、その情報が外部装置とストレージ装置１００ｋとで異なる可能性がある。そのため、ストレージ装置１００ｋにおいて、プロセッサ１０２内に、当該情報を動的にマッピングする手段を追加してもよい。マッピングする機能は、メタ情報の一部として第２の論理通信路を介して通知される。ストレージ装置１００ｋはマッピング情報を含むメタ情報を受信すると、パーティション参照可否の判断を実行した後、通知されたマッピング情報に基づいた変換処理を行った後、所定のアクセス主体から参照できるようにする。なお、変換処理は最初に一括して行っても良いし、情報にアクセスするたびに逐次変換するようにしてもよい。
【０１１１】
あるいは、第１の実施形態及び第２の実施形態では、ストレージ装置１００ｋならびにストレージ装置１００ｋに接続する外部装置（例えば、通信装置３００）で動作するアプリケーションは事前にインストールされていることを想定しているが、必ずしも外部装置に適切なアプリケーションがインストールされているとは限らない。そこで、ストレージ装置１００ｋ側に事前に格納されたアプリケーションを、ストレージ装置１００ｋが接続する外部装置にインストールして実行する動作を行ってもよい。この場合、ストレージ１０４は、インタフェース１０１を介して接続する外部装置に適したプログラムを保持している。保持するプログラムは外部装置のＣＰＵアーキテクチャやライブラリ等を加味したものでなければならない。それらの制約を緩和するため、インタープリタ型言語を使用するプログラムや、中間言語を使用するプログラムでもよい。また、ライブラリの整合性を解決するため実行ファイルと必要なライブラリなどの実行環境をまとめたコンテナとして保存していてもよい。
【０１１２】
ストレージ装置１００ｋと外部装置とは、何らかの方法で両装置が接続されたことを認識すると、何らかの形でストレージ１０４に保存されているアプリケーションを外部装置側にインストールする。インストールは外部装置から実行してもよいし、ストレージ装置１００ｋ側が何らかのトリガーを発して外部装置がインストールを実行してもよい。
【０１１３】
インストールが実行されている間もしくはインストールが完了後、ストレージ装置１００ｋは外部装置からメタ情報の通知を受け付ける。前述の通り、ストレージ装置１００ｋは受信したメタ情報に基づいて新規パーティションの要否判断、必要に応じたパーティション作成、割り当てを行う。そのほかの動作については、これまでに述べた各動作と同じである。
【０１１４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１５】
１００，１００ｋ  ストレージ装置、１０１  インタフェース、１０２  プロセッサ、１０４  ストレージ。
【図１】
2019160075.tif 000003
【図２】
2019160075.tif 000004
【図３】
2019160075.tif 000005
【図４】
2019160075.tif 000006
【図５】
2019160075.tif 000007
【図６】
2019160075.tif 000008
【図７】
2019160075.tif 000009
【図８】
2019160075.tif 000010
【図９】
2019160075.tif 000011
【図１０】
2019160075.tif 000012
【図１１】
2019160075.tif 000013
【図１２】
2019160075.tif 000014
【図１３】
2019160075.tif 000015