(57)【要約】【課題】ストレージ制御装置において、シーケンシャルアクセス媒体からのオブジェクトの読み出しに要する時間を短縮させる。【解決手段】記憶媒体４６にデータを格納させる制御を行なうストレージ制御装置４０において複数のデータの各属性情報に基づき、複数のデータにおける相関性を求める制御部４５を備え、制御部４５は、相関性が高いデータを記憶媒体４６上の近傍位置に配置する。【選択図】図３
2020119145.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体にデータを格納させる制御を行なうストレージ制御装置であって、
複数のデータの各属性情報に基づき、複数のデータにおける相関性を求める制御部を備え、
前記制御部は、前記相関性が高いデータを前記記憶媒体上の近傍位置に配置する、
ことを特徴とするストレージ制御装置。
【請求項２】
前記記憶媒体はシーケンシャルアクセスの媒体であり、
前記制御部は、前記複数のデータを使用する複数のユーザ間の相関性、及び、前記ユーザによる要求に伴って実行される複数のプロセス間の相関性、のうち少なくともいずれかに基づき、前記複数のデータにおける相関性を求め、
前記制御部は、前記相関性が高いデータから順番に前記記憶媒体に配置するように順序を決定する、
ことを特徴とする、請求項１に記載のストレージ制御装置。
【請求項３】
前記属性情報は、前記データへの書き込み頻度、前記データの読み出し頻度、前記データが生成された時刻、前記データを使用したユーザの識別子、前記ユーザによる要求に伴って実行されたプロセスの識別子、及び、前記ユーザによる要求に伴って発生したイベントの識別子、のうち少なくともいずれかを含む、
ことを特徴とする、請求項１又は２に記載のストレージ制御装置。
【請求項４】
前記制御部は、前記データを使用したユーザの識別子の値の差に基づき、前記ユーザ間の相関性を求め、
前記制御部は、前記ユーザによる要求に伴って実行された複数のプロセスの識別子の値の差に基づき、前記プロセス間の相関性を求める、
ことを特徴とする、請求項３に記載のストレージ制御装置。
【請求項５】
複数のデータの各属性情報に基づき、複数のデータにおける相関性を求め、
前記相関性が高いデータを記憶媒体上の近傍位置に配置する、
処理をコンピュータに実行させることを特徴とするストレージ制御プログラム。
【請求項６】
ユーザからのデータを取得するアプリケーションサーバと、複数のデータの各属性情報を格納するプロキシサーバと、記憶媒体にデータを格納させる制御を行なうストレージ制御装置とを備えるストレージシステムにおいて、
前記アプリケーションサーバは、ユーザからのデータを前記プロキシサーバを介して前記ストレージ制御装置に送信し、
前記ストレージ制御装置は、受信した前記データの各属性情報に基づき、前記プロキシサーバが格納する属性情報を参照しながら、前記複数のデータにおける相関性を求め、前記相関性が高いデータを前記記憶媒体上の近傍位置に配置する、
ことを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージ制御プログラム、及び、ストレージシステムに関する。
【背景技術】
【０００２】
データをオブジェクト単位で管理するオブジェクトストレージを用いたシステムの開発が広く行なわれている。このようなオブジェクトストレージを用いたシステムでは、オブジェクトが磁気テープ等のシーケンシャルアクセスの媒体（以下、シーケンシャルアクセス媒体という）に書き込まれる際、直前に書き込まれたオブジェクトに追記される場合が多い。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−３６８６５号公報
【特許文献２】特開２０１５−１２５５９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述したシステムでは、シーケンシャルアクセス媒体から所望のオブジェクトを読み出す際、当該オブジェクトのシーケンシャルアクセス媒体上での位置付け（Locationともいう）に要する時間が増大する。その結果、オブジェクトの読み出し（読み込み）に要する時間が長くなってしまう。
【０００５】
１つの側面では、シーケンシャルアクセス媒体からのオブジェクトの読み出しに要する時間を短縮させることを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るストレージ制御装置は、各データの複数の属性情報に基づき、複数のデータにおける相関性を求め、求めた前記相関性が高いデータを記憶媒体上の近傍位置に配置する。
【発明の効果】
【０００７】
一実施形態によれば、シーケンシャルアクセス媒体からのオブジェクトの読み出しに要する時間を短縮させることができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態の一例としてのストレージシステムのハードウェア構成を例示する図である。
【図２】実施形態の一例としてのストレージシステムにおける各サーバのハードウェア構成を例示する図である。
【図３】実施形態の一例としてのストレージシステムにおける各サーバの機能構成を例示する図である。
【図４】実施形態の一例としてのストレージシステムにおけるユーザＩＤ情報を例示する図である。
【図５】実施形態の一例としてのストレージシステムにおけるユーザ関連重み情報を例示する図である。
【図６】実施形態の一例としてのストレージシステムにおけるプロセスＩＤ情報を例示する図である。
【図７】実施形態の一例としてのストレージシステムにおけるプロセス関連重み情報を例示する図である。
【図８】実施形態の一例としてのストレージシステムにおける類似度情報を例示する図である
【図９】実施形態の一例としてのストレージシステムにおけるメタ情報を例示する図である。
【図１０】実施形態の一例としてのストレージシステムにおいてオブジェクトの類似性を概念的に説明した図である。
【図１１】実施形態の一例としてのストレージシステムにおけるユーザ関連重み情報を例示する図である。
【図１２】実施形態の一例としてのストレージシステムにおけるプロセス関連重み情報を例示する図である。
【図１３】実施形態の一例としてのストレージシステムにおけるメタ情報を例示する図である。
【図１４】（ａ）は、実施形態の一例としてのストレージシステムにおいて修正前のユーザ関連重み情報を例示する図であり、（ｂ）は実施形態の一例としてのストレージシステムにおいて修正後のユーザ関連重み情報を例示する図である。
【図１５】（ａ）は、実施形態の一例としてのストレージシステムにおいて修正前の類似度を例示する図であり、（ｂ）は実施形態の一例としてのストレージシステムにおいて修正後の類似度を例示する図である。
【図１６】実施形態の一例としてのストレージシステムにおけるユーザ間の重み修正の処理を例示する図である。
【図１７】（ａ）は、実施形態の一例としてのストレージシステムにおいて修正前のプロセス関連重み情報を例示する図であり、（ｂ）は実施形態の一例としてのストレージシステムにおいて修正後のプロセス関連重み情報を例示する図である。
【図１８】（ａ）は、実施形態の一例としてのストレージシステムにおいて修正前の類似度を例示する図であり、（ｂ）は実施形態の一例としてのストレージシステムにおいて修正後の類似度を例示する図である。
【図１９】実施形態の一例としてのストレージシステムにおけるプロセス間の重み修正の処理を例示する図である。
【図２０】実施形態の一例としてのストレージシステムにおけるユーザ間の重みとプロセス間の重みとの修正の処理を例示する図である。
【図２１】実施形態の一例としてのストレージシステムにおけるユーザ間の重みとプロセス間の重みとの修正処理の概要を例示する図である。
【図２２】実施形態の一例としてのストレージシステムにおける書き込み制御の処理を例示する図である。
【図２３】（ａ）は、実施形態の一例としてのストレージシステムにおける修正前の類似度を例示する図であり、（ｂ）は、実施形態の一例としてのストレージシステムにおいて新たに生成されたオブジェクトとの類似度を例示する図であり、（ｃ）は、実施形態の一例としてのストレージシステムにおいて修正後の類似度を例示する図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図等はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１０】
〔１〕一実施形態
〔１−１〕一実施形態に係るストレージシステムのハードウェア構成例
図１は、実施形態の一例としてのストレージシステム１のハードウェア構成を例示する図である。
【００１１】
この図１に示すように、ストレージシステム１は、アプリケーションサーバ１０、プロキシサーバ２０、オブジェクトサーバ３０、及び、アーカイバサーバ４０を備える。また、アプリケーションサーバ１０は、ユーザ端末２、及び、プロキシサーバ２０と、それぞれ、インターネット等のネットワーク９０を介して接続される。
【００１２】
また、プロキシサーバ２０は、アプリケーションサーバ１０、オブジェクトサーバ３０、及び、アーカイバサーバ４０と、それぞれ、ネットワーク９０を介して接続される。
【００１３】
アプリケーションサーバ１０は、ユーザ端末２を使用するユーザに対し、オブジェクトの読み出し（取得）やオブジェクトの書き込み等を実行するためのアプリケーションを提供するコンピュータである。
【００１４】
すなわち、ユーザは、ユーザ端末２を介して、例えば、アプリケーションサーバ１０上の所定のアプリケーションを用いて、オブジェクト単位でのデータの読み出しや書き込みを要求するものとする。なお、オブジェクトの書き込みは、オブジェクトの登録、オブジェクトのマイグレート、又は、オブジェクトの移動ともいう。
【００１５】
また、アプリケーションサーバ１０は、ユーザの要求に伴って実行される、例えば、プロセス（プログラム）を監視する。そして、ユーザの要求対象となるオブジェクトに対して、監視結果（例えば、プロセスに関する情報）を後述するメタ情報（メタデータ）２５（図９等参照）として付加し、ユーザからの要求（書き込み要求，読み出し要求）と共に、プロキシサーバ２０に送信する。このメタ情報２５が付加されたオブジェクトをイベント情報ともいう。
【００１６】
プロキシサーバ２０は、プロキシ機能、及び、ゲートウェイ機能を備え、アプリケーションサーバ１０から受信したユーザの要求を、オブジェクトサーバ３０やアーカイバサーバ４０に対して送信（転送）するコンピュータである。また、プロキシサーバ２０は、当該要求に対する結果をオブジェクトサーバ３０やアーカイバサーバ４０から受信し、ユーザに送信するコンピュータでもある。
【００１７】
そして、プロキシサーバ２０は、ユーザからの要求と共に、アプリケーションサーバ１０からメタ情報２５が付加されたオブジェクトを受信する。そして、プロキシサーバ２０は、受信したメタ情報２５を用いて、自身が備えるメタ情報ストレージ２１（後述）に格納される当該オブジェクトに関するメタ情報２５を更新する。
【００１８】
また、プロキシサーバ２０は、アプリケーションサーバ１０からユーザによるオブジェクトの読み出し要求を受信すると、オブジェクトサーバ３０とアーカイバサーバ４０とに対して、当該読み出し要求を送信する。そして、プロキシサーバ２０は、当該読み出し要求に対して、オブジェクトサーバ３０、又は、アーカイバサーバ４０から取得した読み出し対象のオブジェクトをアプリケーションサーバ１０を介してユーザ端末２に送信する。
【００１９】
また、プロキシサーバ２０は、アプリケーションサーバ１０からユーザによるオブジェクトの書き込み要求を受信すると、メタ情報ストレージ２１（後述）に格納されている当該オブジェクトに関するメタ情報２５のうち必要なメタ情報２５を抽出する。そして、プロキシサーバ２０は、抽出したメタ情報２５を当該オブジェクトに付加し、オブジェクトサーバ３０に送信する。
【００２０】
さらに、プロキシサーバ２０は、アーカイバサーバ４０に対して、メタ情報ストレージ２１に格納されているメタ情報２５を提供する。
【００２１】
なお、本実施形態に係るストレージシステム１は、アプリケーションサーバ１０とプロキシサーバ２０とを備える構成としたが、ハードウェア構成はこれに限られるものではない。例えば、アプリケーションサーバ１０がプロキシサーバ２０としての機能を備えてもよい。
【００２２】
オブジェクトサーバ３０は、オブジェクトを、自身の備えるオブジェクトストレージ３１（後述）に格納するコンピュータである。本実施形態において、このオブジェクトストレージ３１は、頻繁に使用されるオブジェクトを格納するものとする。
【００２３】
このオブジェクトサーバ３０は、プロキシサーバ２０から、ユーザによるオブジェクトの読み出し要求を受信すると、当該読み出し要求の対象となるオブジェクトを、オブジェクトストレージ３１（後述）に格納しているか否かを判定する。オブジェクトストレージ３１（後述）に格納していると判定した場合、オブジェクトサーバ３０は、当該オブジェクトをオブジェクトストレージ３１（後述）から読み出し、プロキシサーバ２０を介して、読み出したオブジェクトをユーザ端末２に送信する。一方、オブジェクトストレージ３１（後述）に格納していないと判定した場合、オブジェクトサーバ３０は、当該読み出し要求をユーザ端末２に送信（転送）する。
【００２４】
また、オブジェクトサーバ３０が、プロキシサーバ２０から、ユーザによるオブジェクトの書き込み要求と当該書き込み要求の対象となるオブジェクトを受信すると、当該書き込み要求をアーカイバサーバ４０に送信（転送）する。
【００２５】
アーカイバサーバ４０は、自身の備えるアーカイブストレージ４６（後述）やスタブ（Stub）ストレージ４７（後述）へのオブジェクトの書き込みや読み出しを制御するコンピュータである。本実施形態では、オブジェクトをアーカイブストレージ４６へ書き込む（格納する）処理を実行する主体をアーカイバ、又は、アーカイバサーバという。
【００２６】
具体的に、アーカイバサーバ４０は、プロキシサーバ２０やオブジェクトサーバ３０からユーザによるオブジェクトの書き込み要求を受信すると、アーカイブストレージ４６（後述）やスタブストレージ４７（後述）に当該要求の対象となるオブジェクトを書き込む。その際、アーカイバサーバ４０は、当該書き込み要求の対象となるオブジェクトと、アーカイブストレージ４６（後述）に格納されているオブジェクトとの類似度をメタ情報２５に基づき算出する。
【００２７】
そして、アーカイバサーバ４０は、算出した類似度に基づき、書き込み先アーカイブと、アーカイブストレージ４６への書き込み順序とを決定した上で書き込みを行なう。この類似の算出方法、書き込み先アーカイブの決定方法、及び、書き込み順序の決定方法については後述する。
【００２８】
また、アーカイバサーバ４０は、プロキシサーバ２０から、ユーザによるオブジェクトの読み出し要求を受信すると、アーカイブストレージ４６（後述）、又は、スタブストレージ４７（後述）から当該要求の対象となるオブジェクトを読み出す。そして、アーカイバサーバ４０は、プロキシサーバ２０を介して、読み出したオブジェクトをユーザ端末２に送信する。
【００２９】
なお、この図１では、プロキシサーバ２０、オブジェクトサーバ３０、及び、アーカイバサーバ４０がそれぞれ１つであり、さらに、それぞれに記憶装置を１つ備える構成を例示したが、これに限定されない。
【００３０】
また、この図１では、ユーザが１人であり、また、ユーザ端末２を１つ備える構成を例示したが、ユーザは複数人であってもよく、その場合、ユーザ端末２を複数備えてもよい。
【００３１】
また、プロキシサーバ２０、オブジェクトサーバ３０、及び、アーカイバサーバ４０は、それぞれ、図示しないネットワークを介して、例えば、図示しない管理者の管理端末と接続されてもよい。
【００３２】
〔１−２〕一実施形態に係るストレージシステムにおけるアーカイバサーバのハードウェア構成例
図２は、実施形態の一例としてのストレージシステム１におけるアーカイバサーバ４０のハードウェア構成を例示する図である。
【００３３】
この図２を用いて、まず、アーカイバサーバ４０のハードウェア構成を説明する。
【００３４】
アーカイバサーバ４０は、ＣＰＵ（Central Processing Unit）４１、記憶部４２、メモリ４３、ＩＦ部４４、コントローラ４５、アーカイブストレージ４６、及び、スタブストレージ４７を備えてよい。
【００３５】
ＣＰＵ４１は、後述する記憶部４２に格納されるＯＳ（Operating System）やプログラムを実行する。そして、ユーザ端末２から入力された要求に応じ、後述するコントローラ４５を介してシーケンシャルアクセス媒体に対する情報の読み出し又は書き込み等の制御を行なう。本実施形態では、ＣＰＵ４１は、制御プログラム９１（図２参照）を実行する。
【００３６】
記憶部４２は、種々のデータやプログラム等を格納するハードウェアの一例である。例えば、記憶部４２は、アーカイバサーバ４０の二次記憶装置として使用されてよく、ＯＳやファームウェア、アプリケーション等のプログラム、及び各種データが格納されてよい。記憶部４２としては、例えば、ＨＤＤ(Hard Disk Drive)の磁気ディスク装置の他、ＳＳＤ(Solid State Drive)やＳＣＭ(Storage Class Memories)が挙げられる。記憶部４２は、アーカイバサーバ４０の各種機能の全部若しくは一部を実現するプログラム（制御プログラム９１）を格納してもよい。
【００３７】
メモリ４３は、種々のデータやプログラム等を格納するハードウェアの一例である。メモリ４３としては、ＲＡＭ（Random Access Memory）等の揮発性メモリや、フラッシュメモリ、ＳＣＭ、ＲＯＭ（Read Only Memory）等の不揮発性メモリが挙げられる。
【００３８】
ＩＦ部４４は、ネットワーク９０を介して、プロキシサーバ２０やオブジェクトサーバ３０との間の各接続及び各通信の制御等を行なう通信インタフェースの一例である。例えば、ＩＦ部４４としては、イーサネット（登録商標）、光通信（例えばFibre Channel）等に準拠したアダプタが挙げられる。なお、アーカイバサーバ４０は、図示しない管理者の管理端末との間の接続及び通信の制御等を行なう通信インタフェースを備えてもよく、当該通信インタフェースを用いて制御プログラム９１をダウンロードしてもよい。
【００３９】
コントローラ４５は、後述するアーカイブストレージ４６の制御や管理を行なう。
【００４０】
アーカイブストレージ４６は、オブジェクトを格納（保存）するシーケンシャルアクセスの媒体である。本実施形態において、アーカイブストレージ４６は磁気テープ（以下、シーケンシャルアクセス媒体、又は、記憶媒体という）を備えるものとし、永続化を目的としてオブジェクトを格納するものとする。なお、オブジェクトを格納する具体的手法については公知であるためここではその説明を省略する。
【００４１】
スタブストレージ４７は、オブジェクトサーバ３０からコピーされた（移動された）オブジェクトを例えば一時的に格納するキャッシュとしての機能を備える。このスタブストレージ４７はＨＤＤやＳＳＤであってもよく、各種の記憶装置が混在するものであってもよい。
【００４２】
なお、この図２では、アーカイバサーバ４０が、アーカイブストレージ４６とスタブストレージ４７とをそれぞれ１つずつ備える場合を例示したが、これに限定されない。
【００４３】
また、図示を省略したが、アーカイバサーバ４０は、例えば、マウスやキーボード等の入力部を備えてもよいし、また、ディスプレイやプリンタ等の出力装置を有する表示部を備えてもよい。
【００４４】
なお、本実施形態に係るアプリケーションサーバ１０、プロキシサーバ２０、及び、オブジェクトサーバ３０のハードウェア構成は、アーカイバサーバ４０とは、記憶装置（アーカイブストレージ４６，スタブストレージ４７）を除き概ね同等である。したがって、重複部分に関する図示を省略したが、以下に、アプリケーションサーバ１０、プロキシサーバ２０、及び、オブジェクトサーバ３０がそれぞれ備える記憶装置について、図１を参照しながら説明する。
【００４５】
本実施形態に係るプロキシサーバ２０は、記憶装置としてメタ情報ストレージ２１を備えるものとする。このメタ情報ストレージ２１は、後述するメタ情報２５を格納し、例えば、データベースのような記憶装置によって構成されてもよく、また、ＨＤＤやＳＳＤであってもよい。
【００４６】
また、本実施形態に係るオブジェクトサーバ３０は、記憶装置としてオブジェクトストレージ３１を備えるものとする。このオブジェクトストレージ３１はオブジェクトを格納する記憶装置によって構成されてもよく、例えば、ＨＤＤやＳＳＤであってもよい。
【００４７】
〔１−３〕一実施形態に係るストレージシステムの各サーバにおける機能構成例
図３は、図２に示す実施形態の一例としてのストレージシステム１における各サーバの機能構成を例示する図である。
【００４８】
この図３を用いて、まず、アーカイバサーバ４０の機能構成について説明する。
【００４９】
この図３に示すように、アーカイバサーバ４０は、例示的に、アーカイバマネージャ５０、及び、アーカイバエージェント６０を備えてよい。また、このアーカイバサーバ４０の記憶部４２には、ユーザＩＤ情報７１、ユーザ関連重み情報７２、プロセスＩＤ情報７３、プロセス関連重み情報７４、及び、類似度情報７５を格納してもよい。
【００５０】
さらに、このアーカイバマネージャ５０は、類似度計算部５１、及び、重み制御部５２を備えてよい。
【００５１】
なお、これらのアーカイバマネージャ５０、及び、アーカイバエージェント６０は、コントローラ４５によって実現されてもよい。
【００５２】
このアーカイバマネージャ５０の類似度計算部５１は、プロキシサーバ２０やオブジェクトサーバ３０からユーザによるオブジェクトの書き込み要求を受信すると、メタ情報２５に基づき当該オブジェクトに関する類似度を算出する。この類似度算出の具体的方法については後述する。
【００５３】
そして、類似度計算部５１は、算出した類似度に基づき、書き込み先のアーカイブを決定する。その際、本実施形態では、類似性があると判定したオブジェクトを同一のアーカイブに格納できるよう書き込み先のアーカイブを決定する。本実施形態において、このアーカイブとは、シーケンシャルアクセス媒体（アーカイブストレージ４６）上における、１つ以上のオブジェクトが連続して書き込まれた記憶領域である。
【００５４】
例えば、新しいオブジェクトを書き込む際、オブジェクト間での類似度が変化する場合があり、既に書き込まれているオブジェクトであっても別のアーカイブに格納する方が望ましくなる場合がある。したがって、類似度計算部５１は、算出した類似度に基づいて各オブジェクトの書き込み先アーカイブを決定する。そして、類似度計算部５１は、各オブジェクトについての書き込み先アーカイブをアーカイバエージェント６０のアーカイブ制御部６１（後述）に通知する。
【００５５】
また、類似度計算部５１は、算出した類似度に基づきアーカイブストレージ４６への書き込み順序を決定する。なお、本実施形態において、アーカイブストレージ４６に複数のアーカイブがある場合、類似度計算部５１は、アーカイブのそれぞれについて書き込み順序を決定するものとする。
【００５６】
本実施形態において、類似度計算部５１は、オブジェクトの類似度が大きいほど隣接する位置に書き込むように順序（書き込み順序）を決定する。これは、書き込まれた複数のオブジェクトをユーザが読み出す際に、関連性（相関性）が大きい（高い）オブジェクトほど連続して読み出すことを要求する場合が多いためである。したがって、関連性が大きいオブジェクトを、例えば、シーケンシャルアクセス媒体（アーカイブストレージ４６）上の近傍位置になるように書き込む（配置する）。これにより、オブジェクトの読み出し時に、当該オブジェクトのシーケンシャルアクセス媒体（アーカイブストレージ４６）上での位置付けに要する時間が少なくなり、オブジェクトを読み出す際の時間を短縮することができる。そして、類似度計算部５１は、各オブジェクトについての書き込み先アーカイブをアーカイバエージェント６０のアーカイブ制御部６１（後述）に通知する。
【００５７】
また、類似度計算部５１は、書き込み要求の対象となるオブジェクトのリストをアーカイブ制御部６１（後述）に送信する。
【００５８】
アーカイバマネージャ５０の重み制御部５２は、記憶部４２のユーザ関連重み情報７２（後述）、及び、プロセス関連重み情報７４（後述）に格納される、ユーザやプロセスに関する重みを修正（更新）する。本実施形態における重み制御部５２は、アプリケーションサーバ１０のファイルモニタ１２（後述）によって監視情報が取得される度に、取得された監視情報に基づきユーザ関連重み情報７２（後述）やプロセス関連重み情報７４（後述）を修正するものとする。これらの重み修正の具体的手法については後述する。
【００５９】
また、アーカイバエージェント６０は、アーカイブ制御部６１、及び、スタブ制御部６２を備えてよい。
【００６０】
このアーカイバエージェント６０のアーカイブ制御部６１は、アーカイブストレージ４６に対する書き込みや読み出しを制御する。
【００６１】
具体的に、アーカイブ制御部６１は、類似度計算部５１から通知された、書き込み要求の対象となるオブジェクトのリストに基づき、オブジェクトサーバ３０に対して移動呼び出しコマンドを送信する。なお、このようなコマンドは、公知であるためここではその説明を省略する。
【００６２】
そして、アーカイブ制御部６１は、スタブストレージ４７に格納されたオブジェクトを、類似度計算部５１によって決定された書き込み順序にしたがって、アーカイブストレージ４６に書き込む。
【００６３】
また、アーカイブ制御部６１は、ユーザによるオブジェクトの読み出し要求の対象となるオブジェクトがスタブストレージ４７に格納されていない場合、読み出しの対象となるオブジェクトをアーカイブストレージ４６から読み出す。そして、アーカイブ制御部６１は、読み出したオブジェクトをプロキシサーバ２０に送信する。
【００６４】
アーカイバエージェント６０のスタブ制御部６２は、スタブストレージ４７に対するオブジェクトの書き込みや読み出しを制御する。
【００６５】
具体的に、スタブ制御部６２は、オブジェクトサーバ３０から書き込み要求の対象となるオブジェクトを受信すると、受信したオブジェクトをスタブストレージ４７に格納（コピー）する。その後、アーカイブ制御部６１が、スタブストレージ４７に格納したオブジェクトをアーカイブストレージ４６へ書き込む。
【００６６】
また、スタブ制御部６２は、プロキシサーバ２０からユーザによるオブジェクトの読み出し要求を受信すると、読み出しの対象となるオブジェクトが、スタブストレージ４７に格納されているか（実態であるか）否かを判定する。スタブストレージ４７に格納されている場合、スタブ制御部６２は、スタブストレージ４７から読み出しの対象となるオブジェクトを読み出してプロキシサーバ２０に送信する。一方、スタブストレージ４７に格納されていない場合、アーカイブ制御部６１は、読み出しの対象となるオブジェクトをアーカイブストレージ４６から読み出してプロキシサーバ２０に送信する。
【００６７】
次に、記憶部４２に格納される、ユーザＩＤ情報７１、及び、ユーザ関連重み情報７２についてそれぞれ説明する。
【００６８】
まず、図４を用いて、ユーザＩＤ情報７１について説明する。
【００６９】
図４は、図３に示すストレージシステム１におけるユーザＩＤ情報７１を例示する図である。なお、本実施形態では、図４に示すように、ユーザＩＤ情報７１をテーブル形式で表現しているが、ユーザＩＤ情報７１に格納される情報の表現形式はテーブルに限られるものではなく、種々変形して実施することができる。
【００７０】
この図４に例示するユーザＩＤ情報７１は、“ユーザＩＤ”、及び、“ユーザ名”の各フィールドを備える。
【００７１】
ユーザＩＤ情報７１のフィールド“ユーザＩＤ”は、ユーザを一意に特定するためのＩＤ（識別子）を格納するものである。本実施形態において、この“ユーザＩＤ”に格納される値は、管理者によって付与されるものとする。
【００７２】
ユーザＩＤ情報７１のフィールド“ユーザ名”は、フィールド“ユーザＩＤ” に格納される値により特定されるユーザの名称を格納するものである。本実施形態において、この“ユーザＩＤ”に格納される値は、管理者によって付与されるものとする。
【００７３】
この図４は、例えば、ユーザＩＤが「１０」であるユーザのユーザ名が「yoshida」であることを示している。
【００７４】
次に、図５を用いて、ユーザ関連重み情報７２について説明する。
【００７５】
図５は、図３に示すストレージシステム１におけるユーザ関連重み情報７２を例示する図である。
【００７６】
この図５に例示するユーザ関連重み情報７２は、“ユーザＩＤ”のフィールドを備え、“ユーザＩＤ”同士でマトリックスを構成している。このユーザ関連重み情報７２のフィールド“ユーザＩＤ”に格納される値は、ユーザＩＤ情報７１のフィールド“ユーザＩＤ”に格納される値に対応している。なお、本実施形態では、図５に示すように、ユーザ関連重み情報７２をマトリックス形式で表現しているが、ユーザ関連重み情報７２に格納される情報の表現形式はマトリックスに限られるものではなく、種々変形して実施することができる。
【００７７】
この図５に例示するユーザ関連重み情報７２は、ユーザ間での関連性を、０以上の値で示される重みとして格納するものであり、この値が「０」に近ければ近いほどユーザ間の関連性が小さい（弱い）ことを示す。なお、このユーザ関連重み情報７２に格納される値は、ユーザ間の重みともいう。
【００７８】
図５は、例えば、“ユーザＩＤ”が「１０」であるユーザ（「yoshida」）と、“ユーザＩＤ”が「２０」であるユーザ（「saitou」）との間の重み（関連性）が「０．８」であることを示している。また、例えば、“ユーザＩＤ”が「１０」であるユーザ（「yoshida」）と、“ユーザＩＤ”が「３０」であるユーザ（「kobayashi」）との間の重みが「０．９」であることを示している。以上のことから、ユーザ「yoshida」は、ユーザ「saitou」よりもユーザ「kobayashi」との関連性が大きい（強い）ということになる。
【００７９】
次に、記憶部４２に格納される、プロセスＩＤ情報７３、及び、プロセス関連重み情報７４についてそれぞれ説明する。
【００８０】
まず、図６を用いて、プロセスＩＤ情報７３について説明する。
【００８１】
図６は、図３に示すストレージシステム１におけるプロセスＩＤ情報７３を例示する図である。なお、本実施形態では、図６に示すように、プロセスＩＤ情報７３をテーブル形式で表現しているが、プロセスＩＤ情報７３に格納される情報の表現形式はテーブルに限られるものではなく、種々変形して実施することができる。
【００８２】
この図６に例示するプロセスＩＤ情報７３は、“プロセスＩＤ”、及び、“プロセス名”の各フィールドを備える。
【００８３】
プロセスＩＤ情報７３のフィールド“プロセスＩＤ”は、プロセスを一意に特定するためのＩＤを格納するものである。本実施形態において、この“プロセスＩＤ”に格納される値は、管理者によって付与されるものとする。
【００８４】
プロセスＩＤ情報７３のフィールド“プロセス名”は、フィールド“プロセスＩＤ” に格納される値により特定されるプロセスの名称を格納するものである。本実施形態において、この“プロセスＩＤ”に格納される値は、管理者によって付与されるものとする。
【００８５】
この図６は、プロセスＩＤが「５０」のプロセスのプロセス名が「sparc」であることを示している。
【００８６】
次に、図７を用いて、プロセス関連重み情報７４について説明する。
【００８７】
図７は、図３に示すストレージシステム１におけるプロセス関連重み情報７４を例示する図である。
【００８８】
この図７に例示するプロセス関連重み情報７４は、“プロセスＩＤ”のフィールドを備え、“プロセスＩＤ”同士でマトリックスを構成している。このプロセス関連重み情報７４のフィールド“プロセスＩＤ”に格納される値は、プロセスＩＤ情報７３のフィールド“プロセスＩＤ”に格納される値に対応している。なお、本実施形態では、図７に示すように、プロセス関連重み情報７４をマトリックス形式で表現しているが、プロセス関連重み情報７４に格納される情報の表現形式はマトリックスに限られるものではなく、種々変形して実施することができる。
【００８９】
この図７に例示するプロセス関連重み情報７４は、プロセス間での関連性を、「０」以上の値で示される重みとして格納するものであり、この値が「０」に近ければ近いほどプロセス間の関連性が小さいということになる。なお、このプロセス関連重み情報７４に格納される値は、プロセス間の重みともいう。
【００９０】
図７は、例えば、“プロセスＩＤ”が「５０」であるプロセス（「sparc」）と、“プロセスＩＤ”が「６０」であるプロセス（「kibana」）との間の重み（関連性）が「０．２」であることを示している。また、例えば、“プロセスＩＤ”が「５０」であるプロセス（「sparc」）と、“プロセスＩＤ”が「７０」であるプロセス（「logstash」）との間の重みが「１．０」であることを示している。以上のことから、プロセス「sparc」は、プロセス「kibana」よりもプロセス「logstash」との関連性が大きいということになる。
【００９１】
次に、記憶部４２に格納される類似度情報７５について、図８を用いて、説明する。
【００９２】
この図８に例示する類似度情報７５は、“オブジェクトＩＤ”のフィールドを備え、“オブジェクトＩＤ”同士でマトリックスを構成している。この類似度情報７５のフィールド“オブジェクトＩＤ”に格納される値は、オブジェクトを一意に特定するためのＩＤである。なお、本実施形態では、図８に例示するように、類似度情報７５をマトリックス形式で表現しているが、類似度情報７５に格納される情報の表現形式はマトリックスに限られるものではなく、種々変形して実施することができる。
【００９３】
図８は、例えば、“オブジェクトＩＤ”が「ＯＢＪ．１０ｖ」であるオブジェクトと、“オブジェクトＩＤ”が「ＯＢＪ．２０ｖ」であるオブジェクトとの類似度が「０．７５９」であることを示している。なお、この類似度については後述する。
【００９４】
次に、図３に例示する機能構成の説明に戻り、アプリケーションサーバ１０の機能構成について説明する。
【００９５】
図３に例示するように、アプリケーションサーバ１０は、例示的に、要求送受信部１１、及び、ファイルモニタ１２を備えてもよい。
【００９６】
要求送受信部１１は、ユーザからのオブジェクトの読み出し要求や書き込み要求を受信する。そして、要求送受信部１１は、当該要求の対象となるオブジェクトに対して、後述するファイルモニタ１２によって取得されるメタ情報２５を付加する。そして、要求送受信部１１は、ユーザから受信した要求とメタ情報２５を付加したオブジェクトをプロキシサーバ２０に送信する。
【００９７】
なお、要求送受信部１１は、ユーザから要求を受信する度に、当該要求とメタ情報２５を付加したオブジェクトとをプロキシサーバ２０に送信してもよい。また、要求送受信部１１は、アーカイバサーバ４０からプロキシサーバ２０を介してメタ情報２５の取得要求を受けると、当該取得要求に対してメタ情報２５をプロキシサーバ２０を介してアーカイバサーバ４０に送信してもよい。
【００９８】
ファイルモニタ１２は、オブジェクトを利用（使用）するプロセスを監視する。そして、ファイルモニタ１２は、要求送受信部１１によって受信されたユーザの要求対象となるオブジェクトに関する監視結果（利用されているプロセス名）を、要求送受信部１１に渡す。
【００９９】
次に、図３を用いて、プロキシサーバ２０の機能構成について説明する。
【０１００】
図３に例示するように、プロキシサーバ２０は、例示的に、メタ情報抽出部２２を備えてもよい。
【０１０１】
メタ情報抽出部２２は、ユーザの要求と、アプリケーションサーバ１０からメタ情報２５が付加されたオブジェクトとを受信し、当該メタ情報２５を用いて、メタ情報ストレージ２１に格納される当該オブジェクトに関するメタ情報２５を更新する。
【０１０２】
また、メタ情報抽出部２２は、アプリケーションサーバ１０から、ユーザによるオブジェクトの書き込み要求を受信すると、当該書き込み要求の対象となるオブジェクトに関し、メタ情報ストレージ２１から必要なメタ情報２５を抽出する。そして、メタ情報抽出部２２は、当該オブジェクトに抽出したメタ情報２５を付加し、ユーザからの要求と共に、オブジェクトサーバ３０に送信する。
【０１０３】
メタ情報抽出部２２は、アプリケーションサーバ１０から、ユーザによるオブジェクトの読み出し要求を受信すると、オブジェクトサーバ３０とアーカイバサーバ４０とに対して、当該読み出し要求を送信（転送）する。そして、メタ情報抽出部２２は、当該読み出し要求に対して、オブジェクトサーバ３０、又は、アーカイバサーバ４０から取得した読み出し対象のオブジェクトをアプリケーションサーバ１０を介してユーザ端末２に送信する。
【０１０４】
また、メタ情報抽出部２２は、アーカイバサーバ４０に対して、メタ情報ストレージ２１に格納されているメタ情報２５を提供する。
【０１０５】
次に、メタ情報ストレージ２１に格納されるメタ情報２５について図９を用いて説明する。
【０１０６】
図９は、図３に示すメタ情報ストレージ２１に格納されるメタ情報２５を例示する図である。なお、本実施形態では、図９に示すように、メタ情報２５をテーブル形式で表現しているが、メタ情報２５として格納される情報の表現形式はテーブルに限られるものではなく、種々変形して実施することができる。
【０１０７】
図９は、３つのオブジェクト（「ＯＢＪ１」〜「ＯＢＪ３」）に関するメタ情報２５を例示したものである。この図９に例示するメタ情報２５は、“オブジェクト名”、“オブジェクトＩＤ”、“ＷＲＩＴＥ頻度”、“ＲＥＡＤ頻度”、“生成時刻”、“ユーザＩＤ”、“プロセスＩＤ”、及び、“イベントＩＤ”の各フィールドを備える。これらのメタ情報２５に含まれる各種情報をベクトル要素ともいう。
【０１０８】
メタ情報２５のフィールド“オブジェクト名”は、オブジェクトの名称（図９の例では、「ＯＢＪ１」〜「ＯＢＪ３」）を格納するものである。本実施形態において、例えば、「ＯＢＪｉ」（ｉは０以上の整数）は、後述するオブジェクトＩＤ「ＯＢＪ．ｉｖ」で特定されるオブジェクトの名称（オブジェクト名）を表すものとする。
【０１０９】
メタ情報２５のフィールド“オブジェクトＩＤ”は、オブジェクトを一意に特定するためのＩＤ（図９の例では、「ＯＢＪ．１ｖ」〜「ＯＢＪ．３ｖ」）を格納するものである。本実施形態において、例えば、「ＯＢＪ．ｉｖ」（ｉは０以上の整数）はＯＢＪｉのオブジェクトＩＤを表すものとする。
【０１１０】
なお、この“オブジェクトＩＤ”に格納される値は、例えば、管理者や当該ストレージシステム１によって付与されるものであってもよい。
【０１１１】
メタ情報２５のフィールド“ＷＲＩＴＥ頻度”は、フィールド“オブジェクトＩＤ”によって特定されるオブジェクトに対する書き込み頻度（回数）であり、本実施形態では、０以上の整数を格納するものとする。
【０１１２】
なお、この“ＷＲＩＴＥ頻度”に格納される値は、プロキシサーバ２０のメタ情報抽出部２２が、アプリケーションサーバ１０から受信したユーザの書き込み要求に基づき更新するものとする。例えば、メタ情報抽出部２２が、受信したユーザの要求が書き込み要求である場合、“ＷＲＩＴＥ頻度”に格納されていた値をインクリメントし、インクリメントした後の値を“ＷＲＩＴＥ頻度”に格納する。
【０１１３】
図９は、“オブジェクトＩＤ”が「ＯＢＪ．１ｖ」であるオブジェクトの“ＷＲＩＴＥ頻度”が「６９」回であることを例示している。
【０１１４】
メタ情報２５のフィールド“ＲＥＡＤ頻度”は、フィールド“オブジェクトＩＤ”によって特定されるオブジェクトに対する読み出し頻度（回数）であり、本実施形態では、０以上の整数を格納するものとする。
【０１１５】
なお、この“ＲＥＡＤ頻度”に格納される値は、プロキシサーバ２０のメタ情報抽出部２２が、アプリケーションサーバ１０から受信したユーザの読み出し要求に基づき更新するものとする。例えば、メタ情報抽出部２２が、受信したユーザの要求が読み出し要求である場合、“ＲＥＡＤ頻度”に格納されていた値をインクリメントし、インクリメントした後の値を“ＲＥＡＤ頻度”に格納する。
【０１１６】
図９では、“オブジェクトＩＤ”が「ＯＢＪ．１ｖ」であるオブジェクトの“ＲＥＡＤ頻度”が「４１」回であることを例示している。
【０１１７】
メタ情報２５のフィールド“生成時刻”は、フィールド“オブジェクトＩＤ”によって特定されるオブジェクトが生成された時刻であり、本実施形態では、１０進法による生成時刻も併せて格納するものとする。
【０１１８】
図９では、“オブジェクトＩＤ”が「ＯＢＪ．１ｖ」であるオブジェクトの“生成時刻”が「１０：２０」（１０時２０分）であり、これを１０進法で表現すると、「０．４３０５５６」であることを例示している。
【０１１９】
メタ情報２５のフィールド“ユーザＩＤ”は、フィールド“オブジェクトＩＤ”によって特定されるオブジェクトに対して読み出し、又は、書き込みを要求したユーザのＩＤを格納する。なお、読み出し、又は、書き込みを要求したユーザが複数ある場合、これらのユーザＩＤを「，」で繋げて格納するものとする。
【０１２０】
図９では、“オブジェクトＩＤ”が「ＯＢＪ．１ｖ」であるオブジェクトに対して読み出し、又は、書き込みを要求したユーザの“ユーザＩＤ”が「１０」，「０」であることを例示している。
【０１２１】
メタ情報２５のフィールド“プロセスＩＤ”は、フィールド“オブジェクトＩＤ”によって特定されるオブジェクトに対してユーザが読み出しや書き込みを要求した際に、当該ユーザの要求に伴って実行されるプロセスのＩＤを格納する。なお、実行されるプロセスが複数ある場合、これらのプロセスＩＤを「，」で繋げて格納するものとする。
【０１２２】
図９では、“オブジェクトＩＤ”が「ＯＢＪ．１ｖ」であるオブジェクトに対してユーザが読み出しや書き込みを要求した際に、当該ユーザの要求に伴って実行されるプロセスの“プロセスＩＤ”が「５０」，「０」であることを例示している。
【０１２３】
メタ情報２５のフィールド“イベントＩＤ”は、フィールド“オブジェクトＩＤ”によって特定されるオブジェクトに対してユーザが読み出しや書き込みを要求した際に、当該ユーザの要求に伴って発生するイベントのＩＤを格納する。
【０１２４】
図９では、“オブジェクトＩＤ”が「ＯＢＪ．１ｖ」であるオブジェクトに対してユーザが読み出しや書き込みを要求した際に、当該ユーザの要求に伴って発生するイベントの“イベントＩＤ”が「２」であることを例示している。
【０１２５】
次に、図３に例示する機能構成の説明に戻り、オブジェクトサーバ３０の機能構成について説明する。
【０１２６】
図３に例示するように、オブジェクトサーバ３０は、例示的に、オブジェクト制御部３２を備えてもよい。
【０１２７】
オブジェクト制御部３２は、プロキシサーバ２０から、ユーザによるオブジェクトの書き込み要求と当該書き込み要求の対象となるオブジェクトを受信すると、当該書き込み要求をアーカイバサーバ４０に送信（転送）する。
【０１２８】
また、オブジェクト制御部３２は、プロキシサーバ２０から、ユーザによるオブジェクトの読み出し要求を受信すると、当該読み出し要求の対象となるオブジェクトがオブジェクトストレージ３１に格納しているものであるか否かを判定する。自身のオブジェクトストレージ３１に格納しているものであると判定した場合、オブジェクト制御部３２は、当該オブジェクトをオブジェクトストレージ３１から読み出し、読み出したオブジェクトをプロキシサーバ２０を介してユーザ端末２に送信する。一方、自身のオブジェクトストレージ３１に格納しているものではないと判定した場合、オブジェクト制御部３２は、アーカイバサーバ４０に送信（転送）する。
【０１２９】
〔１−４〕一実施形態に係るストレージシステムにおける類似度算出の処理
上述の如く構成された実施形態の一例として、ストレージシステム１での類似度計算部５１が行なう類似度を算出する処理について、図１０〜図１２を用いて説明する。
【０１３０】
図１０は、一実施形態に係るストレージシステム１における、オブジェクトの類似性を判断する処理を概念的に説明する図である。
【０１３１】
図１１は、一実施形態に係るストレージシステム１におけるユーザ関連重み情報７２を例示する図である。
【０１３２】
図１２は、一実施形態に係るストレージシステム１におけるプロセス関連重み情報７４を例示した図である。
【０１３３】
本実施形態では、オブジェクト間の類似性を判断するために、まず、各オブジェクトを多次元ベクトルで表現する。このベクトルは、図９に例示したメタ情報２５（“ＷＲＩＴＥ頻度”、“ＲＥＡＤ頻度”、“生成時刻”、“ユーザＩＤ”、“プロセスＩＤ”、及び、“イベントＩＤ”）を用いて表現するものとする。
【０１３４】
そして、本実施形態では、以下の計算式（１）を用いて２つのベクトル化したオブジェクト間の類似度（近似）を算出し、算出した類似度をこれらのオブジェクト間の類似度とする。この計算式（１）は、ＯＢＪｎとＯＢＪｍ間の類似度を算出する場合を例示する（ｎ，ｍは０以上の整数）。
【０１３５】
類似度（ＯＢＪｎ，ＯＢＪｍ）＝ｃｏｓθ・・・（１）
【０１３６】
本実施形態では、上記計算式（１）を用いて算出した類似度の値が所定の閾値（例えば、０．８）以上である場合には類似性がある（類似する）と判定する。一方、上記計算式（１）を用いて算出した類似度の値が所定の閾値（例えば、０．８）未満である場合には類似性がない（類似しない）と判定する。
【０１３７】
また、本実施形態では、上記計算式（１）により算出した類似度の値が大きければ大きいほど類似性が大きい（より類似する）と判定する。一方、上記計算式（１）を用いて算出した類似度の値が小さければ小さいほど類似性が小さい（より類似しない）と判定する。
【０１３８】
図１０には、５つのオブジェクト（ＯＢＪ１〜ＯＢＪ５）を多次元ベクトル（ＯＢＪ．１ｖ〜ＯＢＪ．５ｖ）で表現したもの（ベクトル化したオブジェクト）を例示する。この図１０に示す例を用いて、ＯＢＪ１が、他のオブジェクトと類似性があるか否かを判定する場合を例にとり説明する。
【０１３９】
図１０に示す例において、上記計算式（１）に基づいてＯＢＪ１とＯＢＪ５との類似度（θ１５）を求めると０．２（０．８未満）となり、ＯＢＪ１とＯＢＪ３との類似度（θ１３）を求めると０．９（０．８以上）となったと仮定する。この場合、類似度計算部５１は、ＯＢＪ１はＯＢＪ３とは類似性があるが、ＯＢＪ１はＯＢＪ５とは類似性がないと判定することになる。
【０１４０】
また、図１０に示す例において、上記計算式（１）に基づいてＯＢＪ１とＯＢＪ４との類似度（θ１４）を求めると０．８（０．８以上）となったと仮定する。この場合、類似度計算部５１は、ＯＢＪ１は、ＯＢＪ４よりもＯＢＪ３により類似すると判定する。
【０１４１】
以上のことから、図１０に例示するように、上記計算式（１）を用いて算出した、ＯＢＪ１との類似度の値が０．８以上であるオブジェクトのグループをアーカイブ・グループ１とすると、当該グループにはＯＢＪ１と類似するオブジェクトが含まれることになる。したがって、アーカイブ・グループ１には、例えば、ＯＢＪ３，ＯＢＪ４が含まれることになる。
【０１４２】
一方、上記計算式（１）を用いて算出した、ＯＢＪ１との類似度の値が０．８未満であるオブジェクトのグループをアーカイブ・グループ２とすると、当該グループにはＯＢＪ１と類似しないオブジェクトが含まれることになる。したがって、アーカイブ・グループ２には、例えば、ＯＢＪ２，ＯＢＪ５が含まれることになる。
【０１４３】
次に、図９を参照しながら、図１１、及び、図１２を用いて、上記計算式（１）の具体的な計算手法（ｃｏｓθを求める計算手法）について説明する。
【０１４４】
図１１は、図９に例示する３つのオブジェクト（「ＯＢＪ１」〜「ＯＢＪ３」）の使用者となるユーザについてのユーザ関連重み情報７２を例示する図である。
【０１４５】
図１２は、図９に例示する３つのオブジェクト（「ＯＢＪ１」〜「ＯＢＪ３」）に関連するプロセスについてのプロセス関連重み情報７４を例示する図である。
【０１４６】
本実施形態では、以下の計算式（２）を用いて、上記計算式（１）のｃｏｓθを求める。すなわち、この計算式（２）は、ＯＢＪｎとＯＢＪｍとの間の類似度の算出を例示する（ｎ，ｍは０以上の整数）。    
【０１４７】
【数１】
2020119145.tif 000003
【０１４８】
上記計算式（２）に例示するように、本実施形態における類似度（ｃｏｓθ）は、図１１に例示するユーザ関連重み情報７２と、図１２に例示するプロセス関連重み情報７４を考慮して算出する。すなわち、本実施形態では、メタ情報２５のうち、ユーザＩＤとプロセスＩＤとに関して重みを考慮して類似度を算出する。したがって、本実施形態では、上記以外のメタ情報２５（ＷＲＩＴＥ頻度、ＲＥＡＤ頻度、生成時刻、及び、イベントＩＤ）については重みを考慮しないものとしたので、これらに関する重みをすべて「１」として類似度を算出するものとする。
【０１４９】
上記計算式（２）を用いて、ＯＢＪ１とＯＢＪ２の類似度を求める場合を例にとり説明する。この場合、上記計算式（２）の分子は、以下に示す計算式（２−１）〜（２−８）によって求められた値を加算したものである。
【０１５０】
ＷＲＩＴＥ頻度の重み＊ＯＢＪ１の“ＷＲＩＴＥ頻度”の値＊ＯＢＪ２の“ＷＲＩＴＥ頻度”の値・・・（２−１）
【０１５１】
ＲＥＡＤ頻度の重み＊ＯＢＪ１の“ＲＥＡＤ頻度”の値＊ＯＢＪ２の“ＲＥＡＤ頻度”の値・・・（２−２）
【０１５２】
生成時刻の重み＊ＯＢＪ１の“生成時刻”の値＊ＯＢＪ２の“生成時刻”の値・・・（２−３）
【０１５３】
ＯＢＪ１を使用したユーザ（ユーザＩＤ「１０」）とＯＢＪ２を使用したユーザ（ユーザＩＤ「２０」）とのユーザ間の重み＊ＯＢＪ１を使用したユーザ（ユーザＩＤ「１０」）のユーザＩＤの値＊ＯＢＪ２を使用したユーザ（ユーザＩＤ「２０」）のユーザＩＤの値・・・（２−４）
【０１５４】
ＯＢＪ１を使用したユーザ（ユーザＩＤ「０」）とＯＢＪ２を使用したユーザ（ユーザＩＤ「０」）とのユーザ間の重み＊ＯＢＪ１を使用したユーザ（ユーザＩＤ「０」）のユーザＩＤの値＊ＯＢＪ２を使用したユーザ（ユーザＩＤ「０」）のユーザＩＤの値・・・（２−５）
【０１５５】
ＯＢＪ１に伴うプロセス（プロセスＩＤ「５０」）とＯＢＪ２に伴うプロセス（プロセスＩＤ「６０」）とのプロセス間の重み＊ＯＢＪ１に伴うプロセス（プロセスＩＤ「５０」）のプロセスＩＤの値＊ＯＢＪ２に伴うプロセス（プロセスＩＤ「６０」）のプロセスＩＤの値・・・（２−６）
【０１５６】
ＯＢＪ１に伴うプロセス（プロセスＩＤ「０」）とＯＢＪ２に伴うプロセス（プロセスＩＤ「０」）とのプロセス間の重み＊ＯＢＪ１に伴うプロセス（プロセスＩＤ「０」）のプロセスＩＤの値＊ＯＢＪ２に伴うプロセス（プロセスＩＤ「０」）のプロセスＩＤの値・・・（２−７）
【０１５７】
イベントＩＤの重み＊ＯＢＪ１の“イベントＩＤ”の値＊ＯＢＪ２の“イベントＩＤ”の値・・・（２−８）
【０１５８】
上述したＯＢＪ１とＯＢＪ２の類似度を求める場合、上記計算式（２−１）においては、図９の矢印Ｐ１に示す値を入力し、上述したように、“ＷＲＩＴＥ頻度の重み”には「１」を代入するものとする。
【０１５９】
上記計算式（２−２）においては、図９の矢印Ｐ２に示す値を入力し、上述したように、“ＲＥＡＤ頻度の重み”には「１」を代入するものとする。
【０１６０】
上記計算式（２−３）においては、図９の矢印Ｐ３に示す値（１０進数）を入力し、上述したように、“生成時刻の重み”には「１」を代入するものとする。
【０１６１】
上記計算式（２−４）においては、“ユーザ間の重み”には、図９の矢印Ｐ４に示すユーザＩＤ（「１０」，「２０」）に基づき、図１１の矢印Ｑ１に示す値（「１．０」）を入力するものとする。
【０１６２】
上記計算式（２−５）においては、“ユーザ間の重み”には、図９の矢印Ｐ４に示すユーザＩＤ（「０」，「０」）に基づき、図１１の矢印Ｑ２に示す値（「１．０」）を入力するものとする。
【０１６３】
上記計算式（２−６）においては、“プロセス間の重み”には、図９の矢印Ｐ５に示すプロセスＩＤ（「５０」，「６０」）に基づき、図１２の矢印Ｑ３に示す値（「０．８」）を入力するものとする。
【０１６４】
上記計算式（２−７）においては、“プロセス間の重み”には、図９の矢印Ｐ５に示すプロセスＩＤ（「０」，「０」）に基づき、図１２の矢印Ｑ４に示す値（「１．０」）を入力するものとする。
【０１６５】
上記計算式（２−８）においては、図９の矢印Ｐ６に示す値を入力し、上述したように、“イベントＩＤの重み”には「１」を代入するものとする。
【０１６６】
また、上記計算式（２）の分母は、ＯＢＪ１とＯＢＪとの内積であるから、以下に示す計算式（２−９）と（２−１０）との積を求めることになる。
【０１６７】
ＳＱＲＴ（ＯＢＪ１の“ＷＲＩＴＥ頻度”の値＾２＋“ＲＥＡＤ頻度”の値＾２＋“生成時刻”の値＾２＋“ユーザＩＤ”の値＾２＋“プロセスＩＤ”の値＾２＋“イベントＩＤ”の値＾２）・・・（２−９）
【０１６８】
ＳＱＲＴ（ＯＢＪ２の“ＷＲＩＴＥ頻度”の値＾２＋“ＲＥＡＤ頻度”の値＾２＋“生成時刻”の値＾２＋“ユーザＩＤ”の値＾２＋“プロセスＩＤ”の値＾２＋“イベントＩＤ”の値＾２）・・・（２−１０）
【０１６９】
以上の代入を行なうことにより、ＯＢＪ１とＯＢＪ２とのｃｏｓθは０．９５９となり、ＯＢＪ１とＯＢＪ２とは類似性があることになる。
【０１７０】
〔１−５〕一実施形態に係るストレージシステムにおける重みの修正処理
本実施形態におけるストレージシステム１における重み制御部５２が行なうユーザ間の重みを修正する処理、及びプロセス間の重みを修正する処理について説明する。
【０１７１】
まず、本実施形態におけるストレージシステム１の重み制御部５２が行なうユーザ間の重みを修正する処理について、図１３，図１４（ａ），（ｂ），図１５（ａ），（ｂ）を参照しながら、図１６に示すフローチャート（ＳＵ１〜ＳＵ２）を用いて説明する。
【０１７２】
図１３は、ユーザ間の重みの修正処理の説明に用いる、「ＯＢＪ１０」〜「ＯＢＪ３０」に関するメタ情報２５を例示する図である。
【０１７３】
図１４の（ａ）は本実施形態における修正前（初期値）のユーザ関連重み情報７２を例示する図であり、図１４の（ｂ）は本実施形態における修正後のユーザ関連重み情報７２を例示する図である。
【０１７４】
これらの図１４の（ａ），（ｂ）は、具体的には、ユーザＩＤが「１０」であるユーザ、ユーザＩＤが「５０」であるユーザ、及び、ユーザＩＤが「４０」であるユーザのうち、各２者間での重みを例示する。
【０１７５】
なお、図１４（ａ）に例示する初期値は、管理者によって設定されてもよいし、ランダムに設定されるものであってもよい。
【０１７６】
図１５の（ａ）は、図１３に例示したメタ情報２５と、修正前のユーザ間の重み（初期値；図１４（ａ）参照）とを用いて上記計算式（２）により算出した類似度を例示する図である。また、図１５の（ｂ）は、図１３に例示するメタ情報２５と、修正後のユーザ間の重み（図１４（ｂ）参照）とを用いて上記計算式（２）により算出した類似度を例示する図である。
【０１７７】
図１６は、本実施形態におけるユーザ間の重み修正の処理を説明するためのフローチャートである。
【０１７８】
ステップＳＵ１に示す処理は、アーカイバマネージャ５０の例えば類似度計算部５１が、ユーザから書き込み要求を受信したことを契機として開始されるものとする。
【０１７９】
このステップＳＵ１において、重み制御部５２は、ユーザＩＤのすべての組み合わせについてユーザＩＤの値の差の絶対値を算出し、これらの総和（ユーザＩＤの値の差の絶対値の総和）を求める。
【０１８０】
図１４の（ａ）を例にとると、ユーザＩＤのすべての組み合わせは、ユーザＩＤが「１０」と「５０」との組み合わせ、ユーザＩＤが「１０」と「４０」との組み合わせ、及び、ユーザＩＤが「４０」と「５０」との組み合わせの３通りがある。そして、これらの組み合わせについてユーザＩＤの値の差の絶対値を算出すると、それぞれ、４０（｜１０−５０｜）、３０（｜１０−４０｜）、及び、１０（｜４０−５０｜）となる。そして、算出したこれらの絶対値の総和を求めると、４０＋３０＋１０＝８０となる。
【０１８１】
続くステップＳＵ２において、重み制御部５２は、以下の計算式（３）を用いて重みを修正する。
【０１８２】
修正後のユーザ間の重み＝修正前のユーザ間の重み×（ユーザＩＤの値／ユーザＩＤの値の差の絶対値の総和＋１）・・・（３）
【０１８３】
図１４の（ａ）を例にとると、ユーザＩＤが「１０」であるユーザとユーザＩＤが「４０」であるユーザ間の重みの初期値（修正前の重み）は「０．４」である（矢印Ｒ１参照）。この重みを上記計算式（３）を用いて修正すると、０．４×（４０／８０＋１）＝０．６となり、図１４の（ｂ）に例示するような重みに修正されることがわかる（矢印Ｒ２参照）。そして、処理が終了する。
【０１８４】
このように、修正後のユーザ間の重み（図１４の（ｂ）参照）を用いて上記計算式（２）により類似度を求めると、図１５の（ｂ）に例示するような値が得られる。すなわち、ユーザ間の重みを、図１４の（ａ）から図１４の（ｂ）に例示する値に修正することにより、類似度も図１５の（ａ）から図１５の（ｂ）に例示する値に変化することになる。
【０１８５】
上述したように、本実施形態では、オブジェクトの類似度を求めるうえで、実際にオブジェクトを利用する主体となる複数ユーザ間の重み、すなわち、ユーザ同士の関連性を反映させる。これに加え、本実施形態では、オブジェクトに紐付いて実行される複数プロセス間の重み、すなわち、プロセス同士の関連性を反映させて、オブジェクトの類似度を求める。以下に、オブジェクトに紐付いて実行される複数プロセス間の重みを修正する処理について、図１３，図１７（ａ），（ｂ），図１８（ａ），（ｂ）を参照しながら、図１９に示すフローチャート（ＳＰ１〜ＳＰ２）を用いて説明する。
【０１８６】
図１７の（ａ）は、本実施形態における修正前（初期値）のプロセス関連重み情報７４を例示する図である。また、図１７の（ｂ）は本実施形態における修正後のプロセス関連重み情報７４を例示する図である。
【０１８７】
これらの図１７の（ａ），（ｂ）では、具体的には、プロセスＩＤが「１０」であるプロセス、プロセスＩＤが「５０」であるプロセス、及び、プロセスＩＤが「４０」であるプロセスの３つのプロセスのうち、２つのプロセス間の重みを例示する。
【０１８８】
図１７（ａ）は、本実施形態におけるプロセス間の重みの初期値を例示する。この初期値は、管理者によって設定されてもよいし、ランダムに設定されるものであってもよい。
【０１８９】
図１８の（ａ）は、図１３に例示するメタ情報２５と、修正前のプロセス間の重み（初期値；図１７（ａ）参照）とを用いて上記計算式（２）により算出した類似度を例示する図である。また、図１８の（ｂ）は、図１３に例示するメタ情報２５と、修正後のプロセス間の重み（図１７（ｂ）参照）とを用いて上記計算式（２）により算出した類似度を例示する図である。
【０１９０】
図１９は、本実施形態におけるプロセス間の重み修正の処理を説明するためのフローチャートである。
【０１９１】
ステップＳＰ１に示す処理は、アーカイバマネージャ５０の例えば類似度計算部５１が、プロセスから書き込み要求を受信したことを契機として開始されるものとする。ステップＳＰ１に示す処理を実行するにあたり、重み制御部５２は、プロキシサーバ２０のメタ情報抽出部２２に依頼して、当該要求に関するメタ情報２５を受け取るものとする。
【０１９２】
このステップＳＰ１において、重み制御部５２は、プロセスＩＤのすべての組み合わせについてプロセスＩＤの値の差の絶対値を算出し、これらの総和（プロセスＩＤの値の差の絶対値の総和）を求める。
【０１９３】
図１７の（ａ）を例にとると、プロセスＩＤのすべての組み合わせは、プロセスＩＤが「１０」と「５０」との組み合わせ、プロセスＩＤが「１０」と「４０」との組み合わせ、及び、プロセスＩＤが「４０」と「５０」との組み合わせの３通りがある。そして、これらの組み合わせについてプロセスＩＤの値の差の絶対値を算出すると、それぞれ、４０（｜１０−５０｜）、３０（｜１０−４０｜）、及び、１０（｜４０−５０｜）となる。そして、算出したこれらの絶対値の総和を求めると、４０＋３０＋１０＝８０となる。
【０１９４】
続くステップＳＰ２において、重み制御部５２は、以下の計算式（４）を用いて重みを修正する。
【０１９５】
修正後のプロセス間の重み＝修正前のプロセス間の重み×（プロセスＩＤの値／プロセスＩＤの値の差の絶対値の総和＋１）・・・（４）
【０１９６】
図１７の（ａ）を例にとると、プロセスＩＤが「１０」であるプロセスとプロセスＩＤが「４０」であるプロセス間の重みの初期値（修正前の重み）は「０．５」である（矢印Ｒ３参照）。この重みを上記計算式（４）を用いて修正すると、０．５×（４０／８０＋１）＝０．７５となり、図１７の（ｂ）に例示するような重みに修正されることがわかる（矢印Ｒ４参照）。そして、処理が終了する。
【０１９７】
このように、修正後のプロセス間の重み（図１７の（ｂ）参照）を用いて上記計算式（２）により類似度を求めると、図１８の（ｂ）に例示するような値が得られる。すなわち、プロセス間の重みを、図１７の（ａ）から図１７の（ｂ）に例示する値に修正することにより、類似度も図１８の（ａ）から図１８の（ｂ）に例示する値に変化することになる。
【０１９８】
本実施形態では、図１２〜図１９を用いて上述したような重み修正処理を施すことにより、相関関係（共起）が大きいユーザやプロセスほど重みが大きくなるように重みの修正を行なう。
【０１９９】
なお、本実施形態では、ユーザからの書き込み要求を受信すると、これらの重みを修正するものとしたが、共起の発生、ユーザ再呼び出し、及び、利用状況の変化等に応じて随時これらの重みを修正してもよい。これにより、上述した計算式（２）に代入されるユーザやプロセスの重みには実際の運用状況を反映することができ、オブジェクトの類似度を正確に算出することができる。
【０２００】
また、ユーザ同士の関連性だけでなく、プロセス間同士の関連性をも考慮するため、オブジェクトが利用される際に必要となる複数の要素を考慮してオブジェクトの類似度を求めることができる。
【０２０１】
次に、上述したユーザ間の重みとプロセス間の重みとを連続して修正する処理について図２１を参照しながら、図２０を用いて説明する。
【０２０２】
図２０は、本実施形態におけるユーザ間の重みとプロセス間の重みとの修正の処理を例示する図である。
【０２０３】
図２１は、本実施形態におけるユーザ間の重みとプロセス間の重みとの修正処理の概要を例示する図である。
【０２０４】
なお、ステップＣ１の処理は、ユーザから書き込み要求を受信したことを契機として開始するものとする。また、上述したように、メタ情報２５に含まれる「ユーザＩＤ」，「プロセスＩＤ」を、ベクトル要素ともいう。
【０２０５】
ステップＣ１において、重み制御部５２は、メタ情報２５のベクトル要素毎に、ＩＤの値の差の絶対値の総和を算出する。本実施形態では、ベクトル要素であるユーザＩＤとプロセスＩＤについて、ＩＤの値の差の絶対値の総和を算出する。
【０２０６】
図２１の例では、ユーザＩＤのすべての組み合わせは、ユーザＩＤが「１０」と「５０」との組み合わせ、ユーザＩＤが「１０」と「４０」との組み合わせ、及び、ユーザＩＤが「４０」と「５０」との組み合わせの３通りがある。そして、これらの組み合わせについてユーザＩＤの値の差の絶対値を算出すると、それぞれ、４０（｜１０−５０｜）、３０（｜１０−４０｜）、及び、１０（｜４０−５０｜）となる。そして、算出したこれらの絶対値の総和を求めると、４０＋３０＋１０＝８０となる（図２１における矢印Ｄ１参照）。また、プロセスＩＤについても同様にプロセスＩＤの値の差の絶対値を算出すると、８０となる（図２１における矢印Ｄ１参照）。
【０２０７】
続くステップＣ２において、重み制御部５２は、上記ステップＣ１にて算出した総和が最も大きいベクトル要素を検出する。図２１の例では、ユーザＩＤとプロセスＩＤとの各総和は「８０」と等しくなるため、本実施形態では、このような場合、ユーザＩＤについての重み（ユーザ間の重み）を先に修正するものとする（図２１のＡ１参照）。
【０２０８】
続くステップＣ３において、重み制御部５２は、上記ステップＣ２にて検出したベクトル要素について、上記計算式（３）を用いて重みを修正する（図２１のＡ１−１参照）。この修正を施した後のユーザ間の重み（修正後のユーザ間の重み）を図２１の矢印Ｄ２に示す。なお、この重み修正の処理は、上述した図１４〜図１６を用いて説明した、計算式（３）を用いた重みの算出と同様であるので、ここでは説明を省略する。
【０２０９】
続くステップＣ４において、類似度計算部５１は、上記ステップＣ３にて修正した重みを用いて、上記計算式（２）を用いて類似度を算出する（図２１のＡ１−２参照）。この算出した類似度（修正後の類似度）を図２１の矢印Ｄ３に示す。なお、この処理は、図１４〜図１６を用いて説明した、計算式（２）を用いた類似度の算出と同様であるので、ここでは説明を省略する。
【０２１０】
続くステップＣ５において、重み制御部５２は、上記ステップＣ２にて検出したベクトル要素のすべてについて、重み修正の処理をしたか（調べたか）を判断する。すべてのベクトル要素について重み修正の処理をしていないと判断した場合（ステップＣ５の“Ｎｏ”ルート参照）、処理がステップＣ６に移行する。一方、すべてのベクトル要素について重み修正の処理をしたと判断した場合（ステップＣ５の“Ｙｅｓ”ルート参照）、処理がステップＣ８に移行する。
【０２１１】
図２１に示す例では、ユーザＩＤについてのみ重みの修正をしたが、プロセスＩＤについては重みの修正をしていないので、ステップＣ５の“Ｎｏ”ルートに進み、処理がステップＣ６に移行する。
【０２１２】
ステップＣ６において、類似度計算部５１は、すべてのオブジェクトの類似度が類似度判定基準を上回ったかを判断する。本実施形態では、類似度判定基準を、類似度の値が「０．８」であるとし、類似度の値が「０．８」以上となった場合に、類似度計算部５１は、オブジェクトの類似度が類似度判定基準を上回ったものと判断する。なお、本実施形態では、類似度判定基準を、類似度の値が「０．８」であるものとしたが、これに限られない。
【０２１３】
このステップＣ６において、類似度判定基準を上回ったと判断した場合（ステップＣ６の“Ｙｅｓ”ルート参照）、処理が終了する。一方、類似度判定基準を上回らなかったと判断した場合（ステップＣ６の“Ｎｏ”ルート参照）、処理がステップＣ７に移行する。
【０２１４】
図２１に示す例では、類似度判定基準を上回らなかったオブジェクトが存在する（図２１の矢印Ｄ４参照）ため、ステップＣ６における“Ｎｏ”ルートに進み、処理がステップＣ７に移行する。
【０２１５】
ステップＣ７において、類似度計算部５１は、上記ステップＣ１にて算出した総和が次に大きいベクトル要素を検出する。そして、処理がステップＣ３に戻る。図２１の例では、上記ステップＣ１にて算出した総和が次に大きいベクトル要素として、プロセスＩＤを検出し、プロセスＩＤについての重み（プロセス間の重み）の修正処理を行なう（図２１のＢ１参照）。なお、この修正を施した後のプロセス間の重み（修正後のプロセス間の重み）を図２１の矢印Ｄ５に示す。そして、上記計算式（３）を用いて重みを修正し（図２１のＢ１−１参照）、計算式（２）を用いて類似度を算出する（図２１のＢ１−２参照）。なお、この重み修正の処理と類似度を算出する処理とは、上述した図１７〜図１９を用いて説明した、計算式（２），（３）を用いた重みと類似度との算出と同様であるので、ここでは説明を省略する。
【０２１６】
また、ステップＣ８において、類似度計算部５１は、類似度が最も類似度判定基準に近い重みに基づき、ユーザ関連重み情報７２、プロセス関連重み情報７４、及び、類似度情報７５を修正（更新）する。
【０２１７】
図２１に示す例では、上記ステップＣ１〜ステップＣ８を経ることにより、修正後のプロセス間の重みを用いて類似度を算出した結果、すべてのオブジェクトの類似度の値が「０．８」以上となる。この場合、上記ステップＣ６において、類似度計算部５１は、類似度判定基準を上回ったと判断し、処理が終了する（図２１の矢印Ｄ６参照）。
【０２１８】
以上の結果から、図２１に示す例では、類似度の判定において、ユーザＩＤよりもプロセスＩＤの値の方が重要視されていることがわかる。
【０２１９】
〔１−６〕一実施形態に係るストレージシステムにおける書き込み制御の処理
上述の如く構成された実施形態の一例として、ストレージシステム１での書き込み制御の処理を、図２３（ａ）〜（ｃ）を参照しながら、図２２に示すシーケンスチャート（ステップＴ１〜Ｔ１５）に従って説明する。
【０２２０】
図２２は、本実施形態におけるオブジェクトの書き込み制御を説明するためのシーケンスチャートである。この図２２では、ユーザからのオブジェクトの書き込み要求を受けたことを契機とし、アーカイブストレージ４６に当該オブジェクトを書き込み、当該書き込み終了通知を送信するまでの処理を例示する。
【０２２１】
図２３の（ａ）は、本実施形態における修正前のオブジェクトの類似度を例示する図である。そして、図２３の（ｂ）は、本実施形態において新たに生成されたオブジェクトとの類似度を例示する図である。また、図２３の（ｃ）は、本実施形態における修正後の類似度を例示する図である。
【０２２２】
この図２３の（ａ）は、「ＯＢＪ１」〜「ＯＢＪ５」のオブジェクト「ＯＢＪ１」〜「ＯＢＪ５」間での修正前の類似度を例示する。
【０２２３】
また、図２３の（ａ）に例示するように、修正前には、「ＯＢＪ１」〜「ＯＢＪ３」は、アーカイブストレージ４６の「Ａｒｃｈｉｖｅ１」のアーカイブに書き込まれているものとする。また、修正前には、「ＯＢＪ４」，「ＯＢＪ５」はアーカイブストレージ４６の「Ａｒｃｈｉｖｅ２」のアーカイブに書き込まれているものとする。
【０２２４】
また、図２３の（ａ）の例では、「Ａｒｃｈｉｖｅ１」の先頭のオブジェクトを「ＯＢＪ１」とし、修正前には、図２３の（ａ）における矢印ＥＯで示す順番でアーカイブに書き込まれているものとする。すなわち、「ＯＢＪ１」に最も類似している「ＯＢＪ２」が「ＯＢＪ１」に追記される形で書き込まれており、「ＯＢＪ２」に続いて「ＯＢＪ１」に類似している「ＯＢＪ３」が「ＯＢＪ２」に追記される形で書き込まれているものとする。この書き込まれている順番である、「ＯＢＪ１」，「ＯＢＪ２」，「ＯＢＪ３」を、書き込み順序という。
【０２２５】
図２２に示すステップＴ１において、ユーザは、アプリケーションサーバ１０に対してオブジェクトの書き込みを要求する。この図２２では、一例として、「ＯＢＪ６」のオブジェクトの書き込みを要求した場合を例にとり説明する。
【０２２６】
続くステップＴ２において、アプリケーションサーバ１０は、プロキシサーバ２０を介して、オブジェクトサーバ３０に対し「ＯＢＪ６」の書き込みを要求する。ここで、オブジェクトサーバ３０は、プロキシサーバ２０を介して「ＯＢＪ６」を受信し、自身のオブジェクトストレージ３１に格納するものとする。
【０２２７】
続くステップＴ３において、アプリケーションサーバ１０は、プロキシサーバ２０を介して、アーカイバサーバ４０に対しオブジェクトの書き込みを要求する。この図２２では、一例として、アプリケーションサーバ１０が、「ＯＢＪ１」〜「ＯＢＪ６」のオブジェクトを指定して当該書き込み要求をアーカイバサーバ４０に対して送信するものとする。
【０２２８】
なお、図２２に例示するシーケンスチャートでは、ステップＴ３に示す書き込み要求がステップＴ２に示す書き込み要求に続けて送信されるものとしたが、これらの要求は同時に送信されてもよいし、前後が逆になってもよい。
【０２２９】
続くステップＴ４において、アプリケーションサーバ１０の類似度計算部５１は、アーカイバサーバ４０から受信した「ＯＢＪ１」〜「ＯＢＪ６」のオブジェクトについて、上記計算式（２）を用いて類似度を算出する。
【０２３０】
図２３の（ｂ）には、類似度計算部５１が上記計算式（２）を用いて算出した、書き込み対象の「ＯＢＪ６」と、他のオブジェクト（「ＯＢＪ１」〜「ＯＢＪ５」）と間の類似度を例示する。
【０２３１】
上述したように、本実施形態では、類似度計算部５１は、上記計算式（２）を用いて算出した類似度が０．８以上であれば類似性があり、０．８未満であれば類似性がないと判断する。このことから、この図２３の（ｂ）を参照すると、類似度計算部５１は、書き込み対象の「ＯＢＪ６」が「ＯＢＪ１」，「ＯＢＪ２」と類似性があり、「ＯＢＪ３」〜「ＯＢＪ５」とは類似性がないと判断する。
【０２３２】
続くステップＴ５において、類似度計算部５１は、上記ステップＴ４にて算出した類似度に基づき、書き込み先のアーカイブを決定する。上記ステップＴ４において、書き込み対象の「ＯＢＪ６」は、「ＯＢＪ１」，「ＯＢＪ２」と類似性があると判断したので、「ＯＢＪ６」の書き込み先アーカイブは、「ＯＢＪ１」，「ＯＢＪ２」と同一のアーカイブである「Ａｒｃｈｉｖｅ１」に決定する。
【０２３３】
ここで「ＯＢＪ３」に注目すると、「ＯＢＪ３」は、修正前には、「Ａｒｃｈｉｖｅ１」に書き込まれている（図２３の（ａ）における矢印Ｅ１参照）。しかしながら、新たに「ＯＢＪ６」を書き込む場合、「ＯＢＪ３」と「ＯＢＪ６」との類似度は「０．７２１」となり（図２３の（ｂ）における矢印Ｅ２参照）、「ＯＢＪ３」は、「ＯＢＪ６」と類似しないと判断された。そのため、「ＯＢＪ３」が「ＯＢＪ６」の書き込み先と同一のアーカイブ（「Ａｒｃｈｉｖｅ１」）に書き込まれることは望ましくない。そこで、類似度計算部５１は、「ＯＢＪ３」の書き込み先アーカイブを「Ａｒｃｈｉｖｅ２」に決定（変更）する（図２３の（ｃ）における矢印Ｅ４参照）。
【０２３４】
次に、類似度計算部５１は、上記ステップＴ４にて算出した類似度に基づきアーカイブストレージ４６への書き込み順序を決定する。
【０２３５】
図２３の（ａ）の例を参照すると、本実施形態において、「Ａｒｃｈｉｖｅ１」の先頭のオブジェクトが「ＯＢＪ１」である場合、類似度計算部５１は、「ＯＢＪ１」と関連性が大きいオブジェクトほど「ＯＢＪ１」の近傍位置に書き込みを行なう。
【０２３６】
具体的には、類似度計算部５１は、書き込み先アーカイブが「Ａｒｃｈｉｖｅ１」であるオブジェクト（「ＯＢＪ１」，「ＯＢＪ２」，「ＯＢＪ６」）のうち、最も「ＯＢＪ１」に類似しているオブジェクトである「ＯＢＪ２」を「ＯＢＪ１」の次に書き込む。そして、類似度計算部５１は、２番目に「ＯＢＪ１」に類似しているオブジェクトである「ＯＢＪ６」を「ＯＢＪ２」の次に書き込むものとする（図２３の（ｃ）における矢印Ｅ３参照）。すなわち、類似度計算部５１は、書き込み順序を、「ＯＢＪ１」，「ＯＢＪ２」，「ＯＢＪ６」と決定する。
【０２３７】
また、本実施形態において、類似度計算部５１は、「Ａｒｃｈｉｖｅ２」の先頭のオブジェクトを「ＯＢＪ３」とした場合、「ＯＢＪ３」と関連性が大きいオブジェクトほど「ＯＢＪ３」の近傍位置に書き込みを行なう。
【０２３８】
具体的には、類似度計算部５１は、書き込み先アーカイブが「Ａｒｃｈｉｖｅ２」であるオブジェクト（「ＯＢＪ３」，「ＯＢＪ４」，「ＯＢＪ５」）のうち、最も「ＯＢＪ３」に類似しているオブジェクトである「ＯＢＪ４」を「ＯＢＪ３」の次に書き込む。そして、類似度計算部５１は、２番目に「ＯＢＪ３」に類似しているオブジェクトである「ＯＢＪ５」を「ＯＢＪ４」の次に書き込むものとする。すなわち、類似度計算部５１は、書き込み順序を、「ＯＢＪ３」，「ＯＢＪ４」，「ＯＢＪ５」と決定する。
【０２３９】
続くステップＴ６において、類似度計算部５１は、書き込み要求の対象となるオブジェクトのリスト（「ＯＢＪ１」〜「ＯＢＪ６」）をアーカイブ制御部６１に送信する。さらに、類似度計算部５１は、上記ステップＴ５にて決定した、各オブジェクトについての書き込み先アーカイブと書き込み順序をアーカイブ制御部６１に送信する。
【０２４０】
続くステップＴ７において、アーカイバマネージャ５０は、オブジェクトサーバ３０に対して、上記ステップＴ６にて受信したリストに含まれるオブジェクトについて移動呼び出しを要求する。この要求の処理は、アーカイバマネージャ５０のアーカイブ制御部６１によって実行される。
【０２４１】
続くステップＴ８において、オブジェクトサーバ３０のオブジェクト制御部３２は、上記ステップＴ７にて要求されたオブジェクトをオブジェクトストレージ３１から読み出す。
【０２４２】
そして、オブジェクト制御部３２は、読み出したオブジェクトをアーカイバサーバ４０のスタブストレージ４７にコピー（例えば、読み出したオブジェクト複製を送信）する。本実施形態において、このスタブストレージ４７へのコピーは、アーカイバサーバ４０のスタブ制御部６２によって実行される。
【０２４３】
続くステップＴ９において、アーカイバマネージャ５０は、アーカイブ制御部６１に対して、上記ステップＴ８にてスタブストレージ４７にコピーしたオブジェクトを、アーカイブストレージ４６に書き込むよう指示する。この指示は、アーカイバマネージャ５０のアーカイブ制御部６１によって実行される。
【０２４４】
続くステップＴ１０において、アーカイバマネージャ５０は、アーカイブストレージ４６に書き込みを行なうためのアーカイブファイル（「Ａｒｃｈｉｖｅ１」，「Ａｒｃｈｉｖｅ２」）を作成する。この作成は、アーカイバマネージャ５０のアーカイブ制御部６１によって実行される。
【０２４５】
続くステップＴ１１において、アーカイバマネージャ５０は、アーカイブストレージ４６への書き込みを行なう。この書き込みは、上記ステップＴ６にて受信した、各オブジェクトの書き込み先アーカイブと書き込み順序とに基づき行なう。なお、この書き込みは、アーカイバマネージャ５０のアーカイブ制御部６１によって実行される。
【０２４６】
続くステップＴ１２において、アーカイバマネージャ５０は、アーカイブしたオブジェクトのファイル名を作成する。この作成は、アーカイバマネージャ５０のアーカイブ制御部６１によって実行される。
【０２４７】
続くステップＴ１３において、アーカイバマネージャ５０は、アーカイブストレージ４６への書き込みが終了したことを受け、オブジェクトサーバ３０に書き込み終了通知を送信する。この作成は、アーカイバマネージャ５０のアーカイブ制御部６１によって実行される。
【０２４８】
続くステップＴ１４において、アーカイバエージェント６０は、プロキシサーバ２０を介して、アプリケーションサーバ１０に対して書き込み終了通知を送信する。この送信は、アーカイバマネージャ５０のアーカイブ制御部６１によって実行される。
【０２４９】
続くステップＴ１５において、アプリケーションサーバ１０はユーザ端末２に対して書き込み終了通知を送信する。この送信は、アーカイバマネージャ５０の要求送受信部１２によって実行される。
【０２５０】
このように、上述したステップＴ１〜Ｔ１５を経ることにより、ユーザが今回書き込みを要求した対象となるオブジェクトは、アーカイブストレージ４６において、当該オブジェクトと類似度が大きいオブジェクトに追記されることになる。これにより、今後ユーザが読み出す可能性の高いオブジェクトが当該オブジェクトの近傍に配置されることになるため、読み出し時間を短縮することができる。
【０２５１】
〔２〕効果
上述のように、本実施形態のストレージシステム１では、オブジェクトの類似度が大きいほど、例えば、シーケンシャルアクセス媒体（アーカイブストレージ４６）上の隣接する位置に書き込むように書き込み順序を決定し、アーカイブストレージ４６に書き込む。これにより、シーケンシャルアクセス媒体からのオブジェクトの読み出し時に、当該オブジェクトのアーカイブストレージ４６における位置付けに要する時間が少なくなり、オブジェクトを読み出す際の時間を短縮することができる。
【０２５２】
さらに、本ストレージシステム１では、求めたオブジェクトの類似度に基づき、書き込み先のアーカイブを決定する。これにより、類似性があるオブジェクトを同一のアーカイブに書き込み、また、新たなオブジェクトの生成により類似度が小さくなったオブジェクトを別のアーカイブに書き込むことが可能となる。
【０２５３】
〔３〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【０２５４】
上述した一実施形態では、オブジェクトを利用する複数のユーザ間の関連性、及び、ユーザによる要求に伴って実行されるプロセス間の関連性を重みとして考慮し、オブジェクトの類似度を算出したが、これに限られない。例えば、メタ情報２５のうち、イベントＩＤによって特定される、ユーザによる要求に伴って実行されるイベント間の関連性を重みとして考慮して類似度を算出してもよい。
【０２５５】
上述した一実施形態では、オブジェクトを利用する複数のユーザ間の関連性と、ユーザによる要求に伴って実行されるプロセス間の関連性との両方を重みとして考慮したが、これらの関連性のうちいずれか一方の重みのみを考慮して類似度を算出してもよい。
【０２５６】
上述した一実施形態では、ユーザ間での重み修正の処理、及び、プロセス間での重み修正を、ユーザから書き込み要求を受信したことを契機として開始するものとしたが、これに限られない。例えば、相関関係（共起）が発生したことを契機として重み修正の処理を開始してもよい。
【０２５７】
上述した一実施形態では、ユーザＩＤとプロセスＩＤと共に、ＩＤの値の差の絶対値の総和が等しくなった場合、ユーザＩＤについて先に重みを修正するものとしてが、これに限られない。
【０２５８】
上述した一実施形態では、ファイルモニタ１２は、オブジェクトを利用するプロセスを監視するものとしたが、監視対象はプロセスだけでなく、例えば利用されるアプリケーションをも含めてもよい。
【０２５９】
〔４〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０２６０】
（付記１）
記憶媒体にデータを格納させる制御を行なうストレージ制御装置であって、
複数のデータの各属性情報に基づき、複数のデータにおける相関性を求める制御部を備え、
前記制御部は、前記相関性が高いデータを前記記憶媒体上の近傍位置に配置する、
ことを特徴とするストレージ制御装置。
【０２６１】
（付記２）
前記記憶媒体はシーケンシャルアクセスの媒体であり、
前記制御部は、前記複数のデータを使用する複数のユーザ間の相関性、及び、前記ユーザによる要求に伴って実行される複数のプロセス間の相関性、のうち少なくともいずれかに基づき、前記複数のデータにおける相関性を求め、
前記制御部は、前記相関性が高いデータから順番に前記記憶媒体に配置するように順序を決定する、
ことを特徴とする、付記１に記載のストレージ制御装置。
【０２６２】
（付記３）
前記属性情報は、前記データへの書き込み頻度、前記データの読み出し頻度、前記データが生成された時刻、前記データを使用したユーザの識別子、前記ユーザによる要求に伴って実行されたプロセスの識別子、及び、前記ユーザによる要求に伴って発生したイベントの識別子、のうち少なくともいずれかを含む、
ことを特徴とする、付記１又は２に記載のストレージ制御装置。
【０２６３】
（付記４）
前記制御部は、前記データを使用したユーザの識別子の値の差に基づき、前記ユーザ間の相関性を求め、
前記制御部は、前記ユーザによる要求に伴って実行された複数のプロセスの識別子の値の差に基づき、前記プロセス間の相関性を求める、
ことを特徴とする、付記３に記載のストレージ制御装置。
【０２６４】
（付記５）
複数のデータの各属性情報に基づき、複数のデータにおける相関性を求め、
前記相関性が高いデータを記憶媒体上の近傍位置に配置する、
処理をコンピュータに実行させることを特徴とするストレージ制御プログラム。
【０２６５】
（付記６）
前記記憶媒体はシーケンシャルアクセスの媒体であり、
前記複数のデータを使用する複数のユーザ間の相関性、及び、前記ユーザによる要求に伴って実行される複数のプロセス間の相関性、のうち少なくともいずれかに基づき、前記複数のデータにおける相関性を求め、
前記相関性が高いデータから順番に前記記憶媒体に配置するように順序を決定する、
処理をコンピュータに実行させることを特徴とする、付記５に記載のストレージ制御プログラム。
【０２６６】
（付記７）
前記属性情報は、前記データへの書き込み頻度、前記データの読み出し頻度、前記データが生成された時刻、前記データを使用したユーザの識別子、前記ユーザによる要求に伴って実行されたプロセスの識別子、及び、前記ユーザによる要求に伴って発生したイベントの識別子、のうち少なくともいずれかを含む、
ことを特徴とする、付記５又は６に記載のストレージ制御プログラム。
【０２６７】
（付記８）
前記データを使用したユーザの識別子の値の差に基づき、前記ユーザ間の相関性を求め、
前記ユーザによる要求に伴って実行された複数のプロセスの識別子の値の差に基づき、前記プロセス間の相関性を求める、
処理をコンピュータに実行させることを特徴とする、付記７に記載のストレージ制御プログラム。
【０２６８】
（付記９）
複数のデータの各属性情報に基づき、複数のデータにおける相関性を求め、
前記相関性が高いデータを記憶媒体上の近傍位置に配置する、
ことを特徴とするストレージ制御方法。
【０２６９】
（付記１０）
前記記憶媒体はシーケンシャルアクセスの媒体であり、
前記複数のデータを使用する複数のユーザ間の相関性、及び、前記ユーザによる要求に伴って実行される複数のプロセス間の相関性、のうち少なくともいずれかに基づき、前記複数のデータにおける相関性を求め、
前記相関性が高いデータから順番に前記記憶媒体に配置するように順序を決定する、
ことを特徴とする、付記９に記載のストレージ制御方法。
【０２７０】
（付記１１）
前記属性情報は、前記データへの書き込み頻度、前記データの読み出し頻度、前記データが生成された時刻、前記データを使用したユーザの識別子、前記ユーザによる要求に伴って実行されたプロセスの識別子、及び、前記ユーザによる要求に伴って発生したイベントの識別子、のうち少なくともいずれかを含む、
ことを特徴とする、付記９又は１０に記載のストレージ制御方法。
【０２７１】
（付記１２）
前記データを使用したユーザの識別子の値の差に基づき、前記ユーザ間の相関性を求め、
前記ユーザによる要求に伴って実行された複数のプロセスの識別子の値の差に基づき、前記プロセス間の相関性を求める、
ことを特徴とする、付記１１に記載のストレージ制御方法。
【０２７２】
（付記１３）
ユーザからのデータを取得するアプリケーションサーバと、複数のデータの各属性情報を格納するプロキシサーバと、記憶媒体にデータを格納させる制御を行なうストレージ制御装置とを備えるストレージシステムにおいて、
前記アプリケーションサーバは、ユーザからのデータを前記プロキシサーバを介して前記ストレージ制御装置に送信し、
前記ストレージ制御装置は、受信した前記データの各属性情報に基づき、前記プロキシサーバが格納する属性情報を参照しながら、前記複数のデータにおける相関性を求め、前記相関性が高いデータを前記記憶媒体上の近傍位置に配置する、
ことを特徴とするストレージシステム。
【符号の説明】
【０２７３】
１    ストレージシステム
２    ユーザ端末
１０    アプリケーションサーバ
１１    要求送受信部
１２    ファイルモニタ
２０    プロキシサーバ
２１    メタ情報ストレージ
２２    メタ情報抽出部
２５    メタ情報
３０    オブジェクトサーバ
３１    オブジェクトストレージ
３２    オブジェクト制御部
４０    アーカイバサーバ（ストレージ制御装置）
４１    ＣＰＵ
４２    記憶部
４３    メモリ
４４    ＩＦ部
４５    コントローラ
４６    アーカイブストレージ
４７    スタブストレージ
５０    アーカイバマネージャ
５１    類似度計算部
５２    重み制御部
６０    アーカイバエージェント
６１    アーカイブ制御部
６２    スタブ制御部
７１    ユーザＩＤ情報
７２    ユーザ関連重み情報
７３    プロセスＩＤ情報
７４    プロセス関連重み情報
７５    類似度情報
９０    ネットワーク
９１    制御プログラム
【図１】
2020119145.tif 000004
【図２】
2020119145.tif 000005
【図３】
2020119145.tif 000006
【図４】
2020119145.tif 000007
【図５】
2020119145.tif 000008
【図６】
2020119145.tif 000009
【図７】
2020119145.tif 000010
【図８】
2020119145.tif 000011
【図９】
2020119145.tif 000012
【図１０】
2020119145.tif 000013
【図１１】
2020119145.tif 000014
【図１２】
2020119145.tif 000015
【図１３】
2020119145.tif 000016
【図１４】
2020119145.tif 000017
【図１５】
2020119145.tif 000018
【図１６】
2020119145.tif 000019
【図１７】
2020119145.tif 000020
【図１８】
2020119145.tif 000021
【図１９】
2020119145.tif 000022
【図２０】
2020119145.tif 000023
【図２１】
2020119145.tif 000024
【図２２】
2020119145.tif 000025
【図２３】
2020119145.tif 000026