IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7302178ストレージ制御装置、ストレージ制御プログラム、及び、ストレージシステム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-26
(45)【発行日】2023-07-04
(54)【発明の名称】ストレージ制御装置、ストレージ制御プログラム、及び、ストレージシステム
(51)【国際特許分類】
   G06F 3/06 20060101AFI20230627BHJP
   G06F 12/00 20060101ALI20230627BHJP
【FI】
G06F3/06 302J
G06F3/06 303Z
G06F3/06 304N
G06F12/00 560A
【請求項の数】 5
(21)【出願番号】P 2019008583
(22)【出願日】2019-01-22
(65)【公開番号】P2020119145
(43)【公開日】2020-08-06
【審査請求日】2021-10-07
【前置審査】
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】吉田 武俊
【審査官】田名網 忠雄
(56)【参考文献】
【文献】米国特許出願公開第2018/0143764(US,A1)
【文献】特開2015-153034(JP,A)
【文献】国際公開第2009/093280(WO,A1)
【文献】米国特許出願公開第2015/0261466(US,A1)
【文献】特開2018-190393(JP,A)
【文献】特開2011-086062(JP,A)
【文献】米国特許出願公開第2017/0255401(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
数のデータの各属性情報に基づき、記憶部から読み出した、前記複数のデータを使用する複数のユーザ間の相関性、及び、前記記憶部から読み出した、前記ユーザによる要求に伴って実行される複数のプロセス間の相関性、のうち少なくともいずれかに基づき、前記属性情報をベクトル要素とする第1のベクトルで前記複数のデータのうち第1のデータを表し、前記属性情報をベクトル要素とする第2のベクトルで前記複数のデータのうち第2のデータを表し、前記第1のベクトルと前記第2のベクトルとの内積に重みを乗算した値を前記第1のベクトルのノルムと前記第2のベクトルのノルムとを乗算した値で除算する式を用いて、前記第1のデータと前記第2のデータとの相関性を算出する制御部を備え、
前記制御部は、前記相関性が高いデータから順番にシーケンシャルアクセスの記憶媒体に配置するように順序を決定することで、前記相関性が高いデータを前記記憶媒体上の近傍位置に配置する、
ことを特徴とするストレージ制御装置。
【請求項2】
前記属性情報は、前記データへの書き込み頻度、前記データの読み出し頻度、前記データが生成された時刻、前記データを使用したユーザの識別子、前記ユーザによる前記データに対する要求に伴って実行されたプロセスの識別子、及び、前記ユーザによる前記データに対する要求に伴って発生したイベントの識別子、のうち少なくともいずれかを、前記式の前記第1のベクトルと前記第2のベクトルとの内積におけるベクトル要素として用いられる、
ことを特徴とする、請求項に記載のストレージ制御装置。
【請求項3】
前記制御部は、複数の前記ユーザの識別子間の差の総和と、前記データを使用したユーザの識別子の値との比に基づき、前記ユーザ間の相関性を修正し、
前記制御部は、複数の前記プロセスの識別子間の差の総和と、前記ユーザによる要求に伴って実行された複数の前記プロセスの識別子の値との比に基づき、前記プロセス間の相関性を修正する、
ことを特徴とする、請求項に記載のストレージ制御装置。
【請求項4】
複数のデータの各属性情報に基づき、記憶部から読み出した、前記複数のデータを使用する複数のユーザ間の相関性、及び、前記記憶部から読み出した、前記ユーザによる要求に伴って実行される複数のプロセス間の相関性、のうち少なくともいずれかに基づき、前記属性情報をベクトル要素とする第1のベクトルで前記複数のデータのうち第1のデータを表し、前記属性情報をベクトル要素とする第2のベクトルで前記複数のデータのうち第2のデータを表し、前記第1のベクトルと前記第2のベクトルとの内積に重みを乗算した値を前記第1のベクトルのノルムと前記第2のベクトルのノルムとを乗算した値で除算する式を用いて、前記第1のデータと前記第2のデータとの相関性を算出し、
前記相関性が高いデータから順番にシーケンシャルアクセスの記憶媒体に配置するように順序を決定することで、前記相関性が高いデータを前記記憶媒体上の近傍位置に配置する、
処理をコンピュータに実行させることを特徴とするストレージ制御プログラム。
【請求項5】
ユーザからのデータを取得するアプリケーションサーバと、複数のデータの各属性情報を格納するプロキシサーバと、ストレージ制御装置とを備えるストレージシステムにおいて、
前記アプリケーションサーバは、ユーザからのデータを前記プロキシサーバを介して前記ストレージ制御装置に送信し、
前記ストレージ制御装置は、受信した前記データの各属性情報に基づき、前記プロキシサーバが格納する属性情報を参照しながら、記憶部から読み出した、前記複数のデータを使用する複数のユーザ間の相関性、及び、前記記憶部から読み出した、前記ユーザによる要求に伴って実行される複数のプロセス間の相関性、のうち少なくともいずれかに基づき、前記属性情報をベクトル要素とする第1のベクトルで前記複数のデータのうち第1のデータを表し、前記属性情報をベクトル要素とする第2のベクトルで前記複数のデータのうち第2のデータを表し、前記第1のベクトルと前記第2のベクトルとの内積に重みを乗算した値を前記第1のベクトルのノルムと前記第2のベクトルのノルムとを乗算した値で除算する式を用いて、前記第1のデータと前記第2のデータとの相関性を算出し、前記相関性が高いデータから順番にシーケンシャルアクセスの記憶媒体に配置するように順序を決定することで、前記相関性が高いデータを前記記憶媒体上の近傍位置に配置する、
ことを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ制御装置、ストレージ制御プログラム、及び、ストレージシステムに関する。
【背景技術】
【0002】
データをオブジェクト単位で管理するオブジェクトストレージを用いたシステムの開発が広く行なわれている。このようなオブジェクトストレージを用いたシステムでは、オブジェクトが磁気テープ等のシーケンシャルアクセスの媒体(以下、シーケンシャルアクセス媒体という)に書き込まれる際、直前に書き込まれたオブジェクトに追記される場合が多い。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2015-36865号公報
【文献】特開2015-125597号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述したシステムでは、シーケンシャルアクセス媒体から所望のオブジェクトを読み出す際、当該オブジェクトのシーケンシャルアクセス媒体上での位置付け(Locationともいう)に要する時間が増大する。その結果、オブジェクトの読み出し(読み込み)に要する時間が長くなってしまう。
【0005】
1つの側面では、シーケンシャルアクセス媒体からのオブジェクトの読み出しに要する時間を短縮させることを目的とする。
【課題を解決するための手段】
【0006】
本発明に係るストレージ制御装置は、複数のデータの属性情報に基づき、記憶部から読み出した、前記複数のデータを使用する複数のユーザ間の相関性、及び、前記記憶部から読み出した、前記ユーザによる要求に伴って実行される複数のプロセス間の相関性、のうち少なくともいずれかに基づき、前記属性情報をベクトル要素とする第1のベクトルで前記複数のデータのうち第1のデータを表し、前記属性情報をベクトル要素とする第2のベクトルで前記複数のデータのうち第2のデータを表し、前記第1のベクトルと前記第2のベクトルとの内積に重みを乗算した値を前記第1のベクトルのノルムと前記第2のベクトルのノルムとを乗算した値で除算する式を用いて、前記第1のデータと前記第2のデータとの相関性を算出し、前記相関性が高いデータから順番にシーケンシャルアクセスの記憶媒体に配置するように順序を決定することで、前記相関性が高いデータを前記記憶媒体上の近傍位置に配置する。
【発明の効果】
【0007】
一実施形態によれば、シーケンシャルアクセス媒体からのオブジェクトの読み出しに要する時間を短縮させることができる。
【図面の簡単な説明】
【0008】
図1】実施形態の一例としてのストレージシステムのハードウェア構成を例示する図である。
図2】実施形態の一例としてのストレージシステムにおける各サーバのハードウェア構成を例示する図である。
図3】実施形態の一例としてのストレージシステムにおける各サーバの機能構成を例示する図である。
図4】実施形態の一例としてのストレージシステムにおけるユーザID情報を例示する図である。
図5】実施形態の一例としてのストレージシステムにおけるユーザ関連重み情報を例示する図である。
図6】実施形態の一例としてのストレージシステムにおけるプロセスID情報を例示する図である。
図7】実施形態の一例としてのストレージシステムにおけるプロセス関連重み情報を例示する図である。
図8】実施形態の一例としてのストレージシステムにおける類似度情報を例示する図である
図9】実施形態の一例としてのストレージシステムにおけるメタ情報を例示する図である。
図10】実施形態の一例としてのストレージシステムにおいてオブジェクトの類似性を概念的に説明した図である。
図11】実施形態の一例としてのストレージシステムにおけるユーザ関連重み情報を例示する図である。
図12】実施形態の一例としてのストレージシステムにおけるプロセス関連重み情報を例示する図である。
図13】実施形態の一例としてのストレージシステムにおけるメタ情報を例示する図である。
図14】(a)は、実施形態の一例としてのストレージシステムにおいて修正前のユーザ関連重み情報を例示する図であり、(b)は実施形態の一例としてのストレージシステムにおいて修正後のユーザ関連重み情報を例示する図である。
図15】(a)は、実施形態の一例としてのストレージシステムにおいて修正前の類似度を例示する図であり、(b)は実施形態の一例としてのストレージシステムにおいて修正後の類似度を例示する図である。
図16】実施形態の一例としてのストレージシステムにおけるユーザ間の重み修正の処理を例示する図である。
図17】(a)は、実施形態の一例としてのストレージシステムにおいて修正前のプロセス関連重み情報を例示する図であり、(b)は実施形態の一例としてのストレージシステムにおいて修正後のプロセス関連重み情報を例示する図である。
図18】(a)は、実施形態の一例としてのストレージシステムにおいて修正前の類似度を例示する図であり、(b)は実施形態の一例としてのストレージシステムにおいて修正後の類似度を例示する図である。
図19】実施形態の一例としてのストレージシステムにおけるプロセス間の重み修正の処理を例示する図である。
図20】実施形態の一例としてのストレージシステムにおけるユーザ間の重みとプロセス間の重みとの修正の処理を例示する図である。
図21】実施形態の一例としてのストレージシステムにおけるユーザ間の重みとプロセス間の重みとの修正処理の概要を例示する図である。
図22】実施形態の一例としてのストレージシステムにおける書き込み制御の処理を例示する図である。
図23】(a)は、実施形態の一例としてのストレージシステムにおける修正前の類似度を例示する図であり、(b)は、実施形態の一例としてのストレージシステムにおいて新たに生成されたオブジェクトとの類似度を例示する図であり、(c)は、実施形態の一例としてのストレージシステムにおいて修正後の類似度を例示する図である。
【発明を実施するための形態】
【0009】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図等はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【0010】
〔1〕一実施形態
〔1-1〕一実施形態に係るストレージシステムのハードウェア構成例
図1は、実施形態の一例としてのストレージシステム1のハードウェア構成を例示する図である。
【0011】
この図1に示すように、ストレージシステム1は、アプリケーションサーバ10、プロキシサーバ20、オブジェクトサーバ30、及び、アーカイバサーバ40を備える。また、アプリケーションサーバ10は、ユーザ端末2、及び、プロキシサーバ20と、それぞれ、インターネット等のネットワーク90を介して接続される。
【0012】
また、プロキシサーバ20は、アプリケーションサーバ10、オブジェクトサーバ30、及び、アーカイバサーバ40と、それぞれ、ネットワーク90を介して接続される。
【0013】
アプリケーションサーバ10は、ユーザ端末2を使用するユーザに対し、オブジェクトの読み出し(取得)やオブジェクトの書き込み等を実行するためのアプリケーションを提供するコンピュータである。
【0014】
すなわち、ユーザは、ユーザ端末2を介して、例えば、アプリケーションサーバ10上の所定のアプリケーションを用いて、オブジェクト単位でのデータの読み出しや書き込みを要求するものとする。なお、オブジェクトの書き込みは、オブジェクトの登録、オブジェクトのマイグレート、又は、オブジェクトの移動ともいう。
【0015】
また、アプリケーションサーバ10は、ユーザの要求に伴って実行される、例えば、プロセス(プログラム)を監視する。そして、ユーザの要求対象となるオブジェクトに対して、監視結果(例えば、プロセスに関する情報)を後述するメタ情報(メタデータ)25(図9等参照)として付加し、ユーザからの要求(書き込み要求,読み出し要求)と共に、プロキシサーバ20に送信する。このメタ情報25が付加されたオブジェクトをイベント情報ともいう。
【0016】
プロキシサーバ20は、プロキシ機能、及び、ゲートウェイ機能を備え、アプリケーションサーバ10から受信したユーザの要求を、オブジェクトサーバ30やアーカイバサーバ40に対して送信(転送)するコンピュータである。また、プロキシサーバ20は、当該要求に対する結果をオブジェクトサーバ30やアーカイバサーバ40から受信し、ユーザに送信するコンピュータでもある。
【0017】
そして、プロキシサーバ20は、ユーザからの要求と共に、アプリケーションサーバ10からメタ情報25が付加されたオブジェクトを受信する。そして、プロキシサーバ20は、受信したメタ情報25を用いて、自身が備えるメタ情報ストレージ21(後述)に格納される当該オブジェクトに関するメタ情報25を更新する。
【0018】
また、プロキシサーバ20は、アプリケーションサーバ10からユーザによるオブジェクトの読み出し要求を受信すると、オブジェクトサーバ30とアーカイバサーバ40とに対して、当該読み出し要求を送信する。そして、プロキシサーバ20は、当該読み出し要求に対して、オブジェクトサーバ30、又は、アーカイバサーバ40から取得した読み出し対象のオブジェクトをアプリケーションサーバ10を介してユーザ端末2に送信する。
【0019】
また、プロキシサーバ20は、アプリケーションサーバ10からユーザによるオブジェクトの書き込み要求を受信すると、メタ情報ストレージ21(後述)に格納されている当該オブジェクトに関するメタ情報25のうち必要なメタ情報25を抽出する。そして、プロキシサーバ20は、抽出したメタ情報25を当該オブジェクトに付加し、オブジェクトサーバ30に送信する。
【0020】
さらに、プロキシサーバ20は、アーカイバサーバ40に対して、メタ情報ストレージ21に格納されているメタ情報25を提供する。
【0021】
なお、本実施形態に係るストレージシステム1は、アプリケーションサーバ10とプロキシサーバ20とを備える構成としたが、ハードウェア構成はこれに限られるものではない。例えば、アプリケーションサーバ10がプロキシサーバ20としての機能を備えてもよい。
【0022】
オブジェクトサーバ30は、オブジェクトを、自身の備えるオブジェクトストレージ31(後述)に格納するコンピュータである。本実施形態において、このオブジェクトストレージ31は、頻繁に使用されるオブジェクトを格納するものとする。
【0023】
このオブジェクトサーバ30は、プロキシサーバ20から、ユーザによるオブジェクトの読み出し要求を受信すると、当該読み出し要求の対象となるオブジェクトを、オブジェクトストレージ31(後述)に格納しているか否かを判定する。オブジェクトストレージ31(後述)に格納していると判定した場合、オブジェクトサーバ30は、当該オブジェクトをオブジェクトストレージ31(後述)から読み出し、プロキシサーバ20を介して、読み出したオブジェクトをユーザ端末2に送信する。一方、オブジェクトストレージ31(後述)に格納していないと判定した場合、オブジェクトサーバ30は、当該読み出し要求をユーザ端末2に送信(転送)する。
【0024】
また、オブジェクトサーバ30が、プロキシサーバ20から、ユーザによるオブジェクトの書き込み要求と当該書き込み要求の対象となるオブジェクトを受信すると、当該書き込み要求をアーカイバサーバ40に送信(転送)する。
【0025】
アーカイバサーバ40は、自身の備えるアーカイブストレージ46(後述)やスタブ(Stub)ストレージ47(後述)へのオブジェクトの書き込みや読み出しを制御するコンピュータである。本実施形態では、オブジェクトをアーカイブストレージ46へ書き込む(格納する)処理を実行する主体をアーカイバ、又は、アーカイバサーバという。
【0026】
具体的に、アーカイバサーバ40は、プロキシサーバ20やオブジェクトサーバ30からユーザによるオブジェクトの書き込み要求を受信すると、アーカイブストレージ46(後述)やスタブストレージ47(後述)に当該要求の対象となるオブジェクトを書き込む。その際、アーカイバサーバ40は、当該書き込み要求の対象となるオブジェクトと、アーカイブストレージ46(後述)に格納されているオブジェクトとの類似度をメタ情報25に基づき算出する。
【0027】
そして、アーカイバサーバ40は、算出した類似度に基づき、書き込み先アーカイブと、アーカイブストレージ46への書き込み順序とを決定した上で書き込みを行なう。この類似の算出方法、書き込み先アーカイブの決定方法、及び、書き込み順序の決定方法については後述する。
【0028】
また、アーカイバサーバ40は、プロキシサーバ20から、ユーザによるオブジェクトの読み出し要求を受信すると、アーカイブストレージ46(後述)、又は、スタブストレージ47(後述)から当該要求の対象となるオブジェクトを読み出す。そして、アーカイバサーバ40は、プロキシサーバ20を介して、読み出したオブジェクトをユーザ端末2に送信する。
【0029】
なお、この図1では、プロキシサーバ20、オブジェクトサーバ30、及び、アーカイバサーバ40がそれぞれ1つであり、さらに、それぞれに記憶装置を1つ備える構成を例示したが、これに限定されない。
【0030】
また、この図1では、ユーザが1人であり、また、ユーザ端末2を1つ備える構成を例示したが、ユーザは複数人であってもよく、その場合、ユーザ端末2を複数備えてもよい。
【0031】
また、プロキシサーバ20、オブジェクトサーバ30、及び、アーカイバサーバ40は、それぞれ、図示しないネットワークを介して、例えば、図示しない管理者の管理端末と接続されてもよい。
【0032】
〔1-2〕一実施形態に係るストレージシステムにおけるアーカイバサーバのハードウェア構成例
図2は、実施形態の一例としてのストレージシステム1におけるアーカイバサーバ40のハードウェア構成を例示する図である。
【0033】
この図2を用いて、まず、アーカイバサーバ40のハードウェア構成を説明する。
【0034】
アーカイバサーバ40は、CPU(Central Processing Unit)41、記憶部42、メモリ43、IF部44、コントローラ45、アーカイブストレージ46、及び、スタブストレージ47を備えてよい。
【0035】
CPU41は、後述する記憶部42に格納されるOS(Operating System)やプログラムを実行する。そして、ユーザ端末2から入力された要求に応じ、後述するコントローラ45を介してシーケンシャルアクセス媒体に対する情報の読み出し又は書き込み等の制御を行なう。本実施形態では、CPU41は、制御プログラム91(図2参照)を実行する。
【0036】
記憶部42は、種々のデータやプログラム等を格納するハードウェアの一例である。例えば、記憶部42は、アーカイバサーバ40の二次記憶装置として使用されてよく、OSやファームウェア、アプリケーション等のプログラム、及び各種データが格納されてよい。記憶部42としては、例えば、HDD(Hard Disk Drive)の磁気ディスク装置の他、SSD(Solid State Drive)やSCM(Storage Class Memories)が挙げられる。記憶部42は、アーカイバサーバ40の各種機能の全部若しくは一部を実現するプログラム(制御プログラム91)を格納してもよい。
【0037】
メモリ43は、種々のデータやプログラム等を格納するハードウェアの一例である。メモリ43としては、RAM(Random Access Memory)等の揮発性メモリや、フラッシュメモリ、SCM、ROM(Read Only Memory)等の不揮発性メモリが挙げられる。
【0038】
IF部44は、ネットワーク90を介して、プロキシサーバ20やオブジェクトサーバ30との間の各接続及び各通信の制御等を行なう通信インタフェースの一例である。例えば、IF部44としては、イーサネット(登録商標)、光通信(例えばFibre Channel)等に準拠したアダプタが挙げられる。なお、アーカイバサーバ40は、図示しない管理者の管理端末との間の接続及び通信の制御等を行なう通信インタフェースを備えてもよく、当該通信インタフェースを用いて制御プログラム91をダウンロードしてもよい。
【0039】
コントローラ45は、後述するアーカイブストレージ46の制御や管理を行なう。
【0040】
アーカイブストレージ46は、オブジェクトを格納(保存)するシーケンシャルアクセスの媒体である。本実施形態において、アーカイブストレージ46は磁気テープ(以下、シーケンシャルアクセス媒体、又は、記憶媒体という)を備えるものとし、永続化を目的としてオブジェクトを格納するものとする。なお、オブジェクトを格納する具体的手法については公知であるためここではその説明を省略する。
【0041】
スタブストレージ47は、オブジェクトサーバ30からコピーされた(移動された)オブジェクトを例えば一時的に格納するキャッシュとしての機能を備える。このスタブストレージ47はHDDやSSDであってもよく、各種の記憶装置が混在するものであってもよい。
【0042】
なお、この図2では、アーカイバサーバ40が、アーカイブストレージ46とスタブストレージ47とをそれぞれ1つずつ備える場合を例示したが、これに限定されない。
【0043】
また、図示を省略したが、アーカイバサーバ40は、例えば、マウスやキーボード等の入力部を備えてもよいし、また、ディスプレイやプリンタ等の出力装置を有する表示部を備えてもよい。
【0044】
なお、本実施形態に係るアプリケーションサーバ10、プロキシサーバ20、及び、オブジェクトサーバ30のハードウェア構成は、アーカイバサーバ40とは、記憶装置(アーカイブストレージ46,スタブストレージ47)を除き概ね同等である。したがって、重複部分に関する図示を省略したが、以下に、アプリケーションサーバ10、プロキシサーバ20、及び、オブジェクトサーバ30がそれぞれ備える記憶装置について、図1を参照しながら説明する。
【0045】
本実施形態に係るプロキシサーバ20は、記憶装置としてメタ情報ストレージ21を備えるものとする。このメタ情報ストレージ21は、後述するメタ情報25を格納し、例えば、データベースのような記憶装置によって構成されてもよく、また、HDDやSSDであってもよい。
【0046】
また、本実施形態に係るオブジェクトサーバ30は、記憶装置としてオブジェクトストレージ31を備えるものとする。このオブジェクトストレージ31はオブジェクトを格納する記憶装置によって構成されてもよく、例えば、HDDやSSDであってもよい。
【0047】
〔1-3〕一実施形態に係るストレージシステムの各サーバにおける機能構成例
図3は、図2に示す実施形態の一例としてのストレージシステム1における各サーバの機能構成を例示する図である。
【0048】
この図3を用いて、まず、アーカイバサーバ40の機能構成について説明する。
【0049】
この図3に示すように、アーカイバサーバ40は、例示的に、アーカイバマネージャ50、及び、アーカイバエージェント60を備えてよい。また、このアーカイバサーバ40の記憶部42には、ユーザID情報71、ユーザ関連重み情報72、プロセスID情報73、プロセス関連重み情報74、及び、類似度情報75を格納してもよい。
【0050】
さらに、このアーカイバマネージャ50は、類似度計算部51、及び、重み制御部52を備えてよい。
【0051】
なお、これらのアーカイバマネージャ50、及び、アーカイバエージェント60は、コントローラ45によって実現されてもよい。
【0052】
このアーカイバマネージャ50の類似度計算部51は、プロキシサーバ20やオブジェクトサーバ30からユーザによるオブジェクトの書き込み要求を受信すると、メタ情報25に基づき当該オブジェクトに関する類似度を算出する。この類似度算出の具体的方法については後述する。
【0053】
そして、類似度計算部51は、算出した類似度に基づき、書き込み先のアーカイブを決定する。その際、本実施形態では、類似性があると判定したオブジェクトを同一のアーカイブに格納できるよう書き込み先のアーカイブを決定する。本実施形態において、このアーカイブとは、シーケンシャルアクセス媒体(アーカイブストレージ46)上における、1つ以上のオブジェクトが連続して書き込まれた記憶領域である。
【0054】
例えば、新しいオブジェクトを書き込む際、オブジェクト間での類似度が変化する場合があり、既に書き込まれているオブジェクトであっても別のアーカイブに格納する方が望ましくなる場合がある。したがって、類似度計算部51は、算出した類似度に基づいて各オブジェクトの書き込み先アーカイブを決定する。そして、類似度計算部51は、各オブジェクトについての書き込み先アーカイブをアーカイバエージェント60のアーカイブ制御部61(後述)に通知する。
【0055】
また、類似度計算部51は、算出した類似度に基づきアーカイブストレージ46への書き込み順序を決定する。なお、本実施形態において、アーカイブストレージ46に複数のアーカイブがある場合、類似度計算部51は、アーカイブのそれぞれについて書き込み順序を決定するものとする。
【0056】
本実施形態において、類似度計算部51は、オブジェクトの類似度が大きいほど隣接する位置に書き込むように順序(書き込み順序)を決定する。これは、書き込まれた複数のオブジェクトをユーザが読み出す際に、関連性(相関性)が大きい(高い)オブジェクトほど連続して読み出すことを要求する場合が多いためである。したがって、関連性が大きいオブジェクトを、例えば、シーケンシャルアクセス媒体(アーカイブストレージ46)上の近傍位置になるように書き込む(配置する)。これにより、オブジェクトの読み出し時に、当該オブジェクトのシーケンシャルアクセス媒体(アーカイブストレージ46)上での位置付けに要する時間が少なくなり、オブジェクトを読み出す際の時間を短縮することができる。そして、類似度計算部51は、各オブジェクトについての書き込み先アーカイブをアーカイバエージェント60のアーカイブ制御部61(後述)に通知する。
【0057】
また、類似度計算部51は、書き込み要求の対象となるオブジェクトのリストをアーカイブ制御部61(後述)に送信する。
【0058】
アーカイバマネージャ50の重み制御部52は、記憶部42のユーザ関連重み情報72(後述)、及び、プロセス関連重み情報74(後述)に格納される、ユーザやプロセスに関する重みを修正(更新)する。本実施形態における重み制御部52は、アプリケーションサーバ10のファイルモニタ12(後述)によって監視情報が取得される度に、取得された監視情報に基づきユーザ関連重み情報72(後述)やプロセス関連重み情報74(後述)を修正するものとする。これらの重み修正の具体的手法については後述する。
【0059】
また、アーカイバエージェント60は、アーカイブ制御部61、及び、スタブ制御部62を備えてよい。
【0060】
このアーカイバエージェント60のアーカイブ制御部61は、アーカイブストレージ46に対する書き込みや読み出しを制御する。
【0061】
具体的に、アーカイブ制御部61は、類似度計算部51から通知された、書き込み要求の対象となるオブジェクトのリストに基づき、オブジェクトサーバ30に対して移動呼び出しコマンドを送信する。なお、このようなコマンドは、公知であるためここではその説明を省略する。
【0062】
そして、アーカイブ制御部61は、スタブストレージ47に格納されたオブジェクトを、類似度計算部51によって決定された書き込み順序にしたがって、アーカイブストレージ46に書き込む。
【0063】
また、アーカイブ制御部61は、ユーザによるオブジェクトの読み出し要求の対象となるオブジェクトがスタブストレージ47に格納されていない場合、読み出しの対象となるオブジェクトをアーカイブストレージ46から読み出す。そして、アーカイブ制御部61は、読み出したオブジェクトをプロキシサーバ20に送信する。
【0064】
アーカイバエージェント60のスタブ制御部62は、スタブストレージ47に対するオブジェクトの書き込みや読み出しを制御する。
【0065】
具体的に、スタブ制御部62は、オブジェクトサーバ30から書き込み要求の対象となるオブジェクトを受信すると、受信したオブジェクトをスタブストレージ47に格納(コピー)する。その後、アーカイブ制御部61が、スタブストレージ47に格納したオブジェクトをアーカイブストレージ46へ書き込む。
【0066】
また、スタブ制御部62は、プロキシサーバ20からユーザによるオブジェクトの読み出し要求を受信すると、読み出しの対象となるオブジェクトが、スタブストレージ47に格納されているか(実態であるか)否かを判定する。スタブストレージ47に格納されている場合、スタブ制御部62は、スタブストレージ47から読み出しの対象となるオブジェクトを読み出してプロキシサーバ20に送信する。一方、スタブストレージ47に格納されていない場合、アーカイブ制御部61は、読み出しの対象となるオブジェクトをアーカイブストレージ46から読み出してプロキシサーバ20に送信する。
【0067】
次に、記憶部42に格納される、ユーザID情報71、及び、ユーザ関連重み情報72についてそれぞれ説明する。
【0068】
まず、図4を用いて、ユーザID情報71について説明する。
【0069】
図4は、図3に示すストレージシステム1におけるユーザID情報71を例示する図である。なお、本実施形態では、図4に示すように、ユーザID情報71をテーブル形式で表現しているが、ユーザID情報71に格納される情報の表現形式はテーブルに限られるものではなく、種々変形して実施することができる。
【0070】
この図4に例示するユーザID情報71は、“ユーザID”、及び、“ユーザ名”の各フィールドを備える。
【0071】
ユーザID情報71のフィールド“ユーザID”は、ユーザを一意に特定するためのID(識別子)を格納するものである。本実施形態において、この“ユーザID”に格納される値は、管理者によって付与されるものとする。
【0072】
ユーザID情報71のフィールド“ユーザ名”は、フィールド“ユーザID”に格納される値により特定されるユーザの名称を格納するものである。本実施形態において、この“ユーザ”に格納される値は、管理者によって付与されるものとする。
【0073】
この図4は、例えば、ユーザIDが「10」であるユーザのユーザ名が「yoshida」であることを示している。
【0074】
次に、図5を用いて、ユーザ関連重み情報72について説明する。
【0075】
図5は、図3に示すストレージシステム1におけるユーザ関連重み情報72を例示する図である。
【0076】
この図5に例示するユーザ関連重み情報72は、“ユーザID”のフィールドを備え、“ユーザID”同士でマトリックスを構成している。このユーザ関連重み情報72のフィールド“ユーザID”に格納される値は、ユーザID情報71のフィールド“ユーザID”に格納される値に対応している。なお、本実施形態では、図5に示すように、ユーザ関連重み情報72をマトリックス形式で表現しているが、ユーザ関連重み情報72に格納される情報の表現形式はマトリックスに限られるものではなく、種々変形して実施することができる。
【0077】
この図5に例示するユーザ関連重み情報72は、ユーザ間での関連性を、0以上の値で示される重みとして格納するものであり、この値が「0」に近ければ近いほどユーザ間の関連性が小さい(弱い)ことを示す。なお、このユーザ関連重み情報72に格納される値は、ユーザ間の重みともいう。
【0078】
図5は、例えば、“ユーザID”が「10」であるユーザ(「yoshida」)と、“ユーザID”が「20」であるユーザ(「saitou」)との間の重み(関連性)が「0.8」であることを示している。また、例えば、“ユーザID”が「10」であるユーザ(「yoshida」)と、“ユーザID”が「30」であるユーザ(「kobayashi」)との間の重みが「0.9」であることを示している。以上のことから、ユーザ「yoshida」は、ユーザ「saitou」よりもユーザ「kobayashi」との関連性が大きい(強い)ということになる。
【0079】
次に、記憶部42に格納される、プロセスID情報73、及び、プロセス関連重み情報74についてそれぞれ説明する。
【0080】
まず、図6を用いて、プロセスID情報73について説明する。
【0081】
図6は、図3に示すストレージシステム1におけるプロセスID情報73を例示する図である。なお、本実施形態では、図6に示すように、プロセスID情報73をテーブル形式で表現しているが、プロセスID情報73に格納される情報の表現形式はテーブルに限られるものではなく、種々変形して実施することができる。
【0082】
この図6に例示するプロセスID情報73は、“プロセスID”、及び、“プロセス名”の各フィールドを備える。
【0083】
プロセスID情報73のフィールド“プロセスID”は、プロセスを一意に特定するためのIDを格納するものである。本実施形態において、この“プロセスID”に格納される値は、管理者によって付与されるものとする。
【0084】
プロセスID情報73のフィールド“プロセス名”は、フィールド“プロセスID”に格納される値により特定されるプロセスの名称を格納するものである。本実施形態において、この“プロセス”に格納される値は、管理者によって付与されるものとする。
【0085】
この図6は、プロセスIDが「50」のプロセスのプロセス名が「sparc」であることを示している。
【0086】
次に、図7を用いて、プロセス関連重み情報74について説明する。
【0087】
図7は、図3に示すストレージシステム1におけるプロセス関連重み情報74を例示する図である。
【0088】
この図7に例示するプロセス関連重み情報74は、“プロセスID”のフィールドを備え、“プロセスID”同士でマトリックスを構成している。このプロセス関連重み情報74のフィールド“プロセスID”に格納される値は、プロセスID情報73のフィールド“プロセスID”に格納される値に対応している。なお、本実施形態では、図7に示すように、プロセス関連重み情報74をマトリックス形式で表現しているが、プロセス関連重み情報74に格納される情報の表現形式はマトリックスに限られるものではなく、種々変形して実施することができる。
【0089】
この図7に例示するプロセス関連重み情報74は、プロセス間での関連性を、「0」以上の値で示される重みとして格納するものであり、この値が「0」に近ければ近いほどプロセス間の関連性が小さいということになる。なお、このプロセス関連重み情報74に格納される値は、プロセス間の重みともいう。
【0090】
図7は、例えば、“プロセスID”が「50」であるプロセス(「sparc」)と、“プロセスID”が「60」であるプロセス(「kibana」)との間の重み(関連性)が「0.2」であることを示している。また、例えば、“プロセスID”が「50」であるプロセス(「sparc」)と、“プロセスID”が「70」であるプロセス(「logstash」)との間の重みが「1.0」であることを示している。以上のことから、プロセス「sparc」は、プロセス「kibana」よりもプロセス「logstash」との関連性が大きいということになる。
【0091】
次に、記憶部42に格納される類似度情報75について、図8を用いて、説明する。
【0092】
この図8に例示する類似度情報75は、“オブジェクトID”のフィールドを備え、“オブジェクトID”同士でマトリックスを構成している。この類似度情報75のフィールド“オブジェクトID”に格納される値は、オブジェクトを一意に特定するためのIDである。なお、本実施形態では、図8に例示するように、類似度情報75をマトリックス形式で表現しているが、類似度情報75に格納される情報の表現形式はマトリックスに限られるものではなく、種々変形して実施することができる。
【0093】
図8は、例えば、“オブジェクトID”が「OBJ.10v」であるオブジェクトと、“オブジェクトID”が「OBJ.20v」であるオブジェクトとの類似度が「0.759」であることを示している。なお、この類似度については後述する。
【0094】
次に、図3に例示する機能構成の説明に戻り、アプリケーションサーバ10の機能構成について説明する。
【0095】
図3に例示するように、アプリケーションサーバ10は、例示的に、要求送受信部11、及び、ファイルモニタ12を備えてもよい。
【0096】
要求送受信部11は、ユーザからのオブジェクトの読み出し要求や書き込み要求を受信する。そして、要求送受信部11は、当該要求の対象となるオブジェクトに対して、後述するファイルモニタ12によって取得されるメタ情報25を付加する。そして、要求送受信部11は、ユーザから受信した要求とメタ情報25を付加したオブジェクトをプロキシサーバ20に送信する。
【0097】
なお、要求送受信部11は、ユーザから要求を受信する度に、当該要求とメタ情報25を付加したオブジェクトとをプロキシサーバ20に送信してもよい。また、要求送受信部11は、アーカイバサーバ40からプロキシサーバ20を介してメタ情報25の取得要求を受けると、当該取得要求に対してメタ情報25をプロキシサーバ20を介してアーカイバサーバ40に送信してもよい。
【0098】
ファイルモニタ12は、オブジェクトを利用(使用)するプロセスを監視する。そして、ファイルモニタ12は、要求送受信部11によって受信されたユーザの要求対象となるオブジェクトに関する監視結果(利用されているプロセス名)を、要求送受信部11に渡す。
【0099】
次に、図3を用いて、プロキシサーバ20の機能構成について説明する。
【0100】
図3に例示するように、プロキシサーバ20は、例示的に、メタ情報抽出部22を備えてもよい。
【0101】
メタ情報抽出部22は、ユーザの要求と、アプリケーションサーバ10からメタ情報25が付加されたオブジェクトとを受信し、当該メタ情報25を用いて、メタ情報ストレージ21に格納される当該オブジェクトに関するメタ情報25を更新する。
【0102】
また、メタ情報抽出部22は、アプリケーションサーバ10から、ユーザによるオブジェクトの書き込み要求を受信すると、当該書き込み要求の対象となるオブジェクトに関し、メタ情報ストレージ21から必要なメタ情報25を抽出する。そして、メタ情報抽出部22は、当該オブジェクトに抽出したメタ情報25を付加し、ユーザからの要求と共に、オブジェクトサーバ30に送信する。
【0103】
メタ情報抽出部22は、アプリケーションサーバ10から、ユーザによるオブジェクトの読み出し要求を受信すると、オブジェクトサーバ30とアーカイバサーバ40とに対して、当該読み出し要求を送信(転送)する。そして、メタ情報抽出部22は、当該読み出し要求に対して、オブジェクトサーバ30、又は、アーカイバサーバ40から取得した読み出し対象のオブジェクトをアプリケーションサーバ10を介してユーザ端末2に送信する。
【0104】
また、メタ情報抽出部22は、アーカイバサーバ40に対して、メタ情報ストレージ21に格納されているメタ情報25を提供する。
【0105】
次に、メタ情報ストレージ21に格納されるメタ情報25について図9を用いて説明する。
【0106】
図9は、図3に示すメタ情報ストレージ21に格納されるメタ情報25を例示する図である。なお、本実施形態では、図9に示すように、メタ情報25をテーブル形式で表現しているが、メタ情報25として格納される情報の表現形式はテーブルに限られるものではなく、種々変形して実施することができる。
【0107】
図9は、3つのオブジェクト(「OBJ1」~「OBJ3」)に関するメタ情報25を例示したものである。この図9に例示するメタ情報25は、“オブジェクト名”、“オブジェクトID”、“WRITE頻度”、“READ頻度”、“生成時刻”、“ユーザID”、“プロセスID”、及び、“イベントID”の各フィールドを備える。これらのメタ情報25に含まれる各種情報をベクトル要素ともいう。
【0108】
メタ情報25のフィールド“オブジェクト名”は、オブジェクトの名称(図9の例では、「OBJ1」~「OBJ3」)を格納するものである。本実施形態において、例えば、「OBJi」(iは0以上の整数)は、後述するオブジェクトID「OBJ.iv」で特定されるオブジェクトの名称(オブジェクト名)を表すものとする。
【0109】
メタ情報25のフィールド“オブジェクトID”は、オブジェクトを一意に特定するためのID(図9の例では、「OBJ.1v」~「OBJ.3v」)を格納するものである。本実施形態において、例えば、「OBJ.iv」(iは0以上の整数)はOBJiのオブジェクトIDを表すものとする。
【0110】
なお、この“オブジェクトID”に格納される値は、例えば、管理者や当該ストレージシステム1によって付与されるものであってもよい。
【0111】
メタ情報25のフィールド“WRITE頻度”は、フィールド“オブジェクトID”によって特定されるオブジェクトに対する書き込み頻度(回数)であり、本実施形態では、0以上の整数を格納するものとする。
【0112】
なお、この“WRITE頻度”に格納される値は、プロキシサーバ20のメタ情報抽出部22が、アプリケーションサーバ10から受信したユーザの書き込み要求に基づき更新するものとする。例えば、メタ情報抽出部22が、受信したユーザの要求が書き込み要求である場合、“WRITE頻度”に格納されていた値をインクリメントし、インクリメントした後の値を“WRITE頻度”に格納する。
【0113】
図9は、“オブジェクトID”が「OBJ.1v」であるオブジェクトの“WRITE頻度”が「69」回であることを例示している。
【0114】
メタ情報25のフィールド“READ頻度”は、フィールド“オブジェクトID”によって特定されるオブジェクトに対する読み出し頻度(回数)であり、本実施形態では、0以上の整数を格納するものとする。
【0115】
なお、この“READ頻度”に格納される値は、プロキシサーバ20のメタ情報抽出部22が、アプリケーションサーバ10から受信したユーザの読み出し要求に基づき更新するものとする。例えば、メタ情報抽出部22が、受信したユーザの要求が読み出し要求である場合、“READ頻度”に格納されていた値をインクリメントし、インクリメントした後の値を“READ頻度”に格納する。
【0116】
図9では、“オブジェクトID”が「OBJ.1v」であるオブジェクトの“READ頻度”が「41」回であることを例示している。
【0117】
メタ情報25のフィールド“生成時刻”は、フィールド“オブジェクトID”によって特定されるオブジェクトが生成された時刻であり、本実施形態では、10進法による生成時刻も併せて格納するものとする。
【0118】
図9では、“オブジェクトID”が「OBJ.1v」であるオブジェクトの“生成時刻”が「10:20」(10時20分)であり、これを10進法で表現すると、「0.430556」であることを例示している。
【0119】
メタ情報25のフィールド“ユーザID”は、フィールド“オブジェクトID”によって特定されるオブジェクトに対して読み出し、又は、書き込みを要求したユーザのIDを格納する。なお、読み出し、又は、書き込みを要求したユーザが複数ある場合、これらのユーザIDを「,」で繋げて格納するものとする。
【0120】
図9では、“オブジェクトID”が「OBJ.1v」であるオブジェクトに対して読み出し、又は、書き込みを要求したユーザの“ユーザID”が「10」,「0」であることを例示している。
【0121】
メタ情報25のフィールド“プロセスID”は、フィールド“オブジェクトID”によって特定されるオブジェクトに対してユーザが読み出しや書き込みを要求した際に、当該ユーザの要求に伴って実行されるプロセスのIDを格納する。なお、実行されるプロセスが複数ある場合、これらのプロセスIDを「,」で繋げて格納するものとする。
【0122】
図9では、“オブジェクトID”が「OBJ.1v」であるオブジェクトに対してユーザが読み出しや書き込みを要求した際に、当該ユーザの要求に伴って実行されるプロセスの“プロセスID”が「50」,「0」であることを例示している。
【0123】
メタ情報25のフィールド“イベントID”は、フィールド“オブジェクトID”によって特定されるオブジェクトに対してユーザが読み出しや書き込みを要求した際に、当該ユーザの要求に伴って発生するイベントのIDを格納する。
【0124】
図9では、“オブジェクトID”が「OBJ.1v」であるオブジェクトに対してユーザが読み出しや書き込みを要求した際に、当該ユーザの要求に伴って発生するイベントの“イベントID”が「2」であることを例示している。
【0125】
次に、図3に例示する機能構成の説明に戻り、オブジェクトサーバ30の機能構成について説明する。
【0126】
図3に例示するように、オブジェクトサーバ30は、例示的に、オブジェクト制御部32を備えてもよい。
【0127】
オブジェクト制御部32は、プロキシサーバ20から、ユーザによるオブジェクトの書き込み要求と当該書き込み要求の対象となるオブジェクトを受信すると、当該書き込み要求をアーカイバサーバ40に送信(転送)する。
【0128】
また、オブジェクト制御部32は、プロキシサーバ20から、ユーザによるオブジェクトの読み出し要求を受信すると、当該読み出し要求の対象となるオブジェクトがオブジェクトストレージ31に格納しているものであるか否かを判定する。自身のオブジェクトストレージ31に格納しているものであると判定した場合、オブジェクト制御部32は、当該オブジェクトをオブジェクトストレージ31から読み出し、読み出したオブジェクトをプロキシサーバ20を介してユーザ端末2に送信する。一方、自身のオブジェクトストレージ31に格納しているものではないと判定した場合、オブジェクト制御部32は、アーカイバサーバ40に送信(転送)する。
【0129】
〔1-4〕一実施形態に係るストレージシステムにおける類似度算出の処理
上述の如く構成された実施形態の一例として、ストレージシステム1での類似度計算部51が行なう類似度を算出する処理について、図10図12を用いて説明する。
【0130】
図10は、一実施形態に係るストレージシステム1における、オブジェクトの類似性を判断する処理を概念的に説明する図である。
【0131】
図11は、一実施形態に係るストレージシステム1におけるユーザ関連重み情報72を例示する図である。
【0132】
図12は、一実施形態に係るストレージシステム1におけるプロセス関連重み情報74を例示した図である。
【0133】
本実施形態では、オブジェクト間の類似性を判断するために、まず、各オブジェクトを多次元ベクトルで表現する。このベクトルは、図9に例示したメタ情報25(“WRITE頻度”、“READ頻度”、“生成時刻”、“ユーザID”、“プロセスID”、及び、“イベントID”)を用いて表現するものとする。
【0134】
そして、本実施形態では、以下の計算式(1)を用いて2つのベクトル化したオブジェクト間の類似度(近似)を算出し、算出した類似度をこれらのオブジェクト間の類似度とする。この計算式(1)は、OBJnとOBJm間の類似度を算出する場合を例示する(n,mは0以上の整数)。
【0135】
類似度(OBJn,OBJm)=cosθ・・・(1)
【0136】
本実施形態では、上記計算式(1)を用いて算出した類似度の値が所定の閾値(例えば、0.8)以上である場合には類似性がある(類似する)と判定する。一方、上記計算式(1)を用いて算出した類似度の値が所定の閾値(例えば、0.8)未満である場合には類似性がない(類似しない)と判定する。
【0137】
また、本実施形態では、上記計算式(1)により算出した類似度の値が大きければ大きいほど類似性が大きい(より類似する)と判定する。一方、上記計算式(1)を用いて算出した類似度の値が小さければ小さいほど類似性が小さい(より類似しない)と判定する。
【0138】
図10には、5つのオブジェクト(OBJ1~OBJ5)を多次元ベクトル(OBJ.1v~OBJ.5v)で表現したもの(ベクトル化したオブジェクト)を例示する。この図10に示す例を用いて、OBJ1が、他のオブジェクトと類似性があるか否かを判定する場合を例にとり説明する。
【0139】
図10に示す例において、上記計算式(1)に基づいてOBJ1とOBJ5との類似度(θ15)を求めると0.2(0.8未満)となり、OBJ1とOBJ3との類似度(θ13)を求めると0.9(0.8以上)となったと仮定する。この場合、類似度計算部51は、OBJ1はOBJ3とは類似性があるが、OBJ1はOBJ5とは類似性がないと判定することになる。
【0140】
また、図10に示す例において、上記計算式(1)に基づいてOBJ1とOBJ4との類似度(θ14)を求めると0.8(0.8以上)となったと仮定する。この場合、類似度計算部51は、OBJ1は、OBJ4よりもOBJ3により類似すると判定する。
【0141】
以上のことから、図10に例示するように、上記計算式(1)を用いて算出した、OBJ1との類似度の値が0.8以上であるオブジェクトのグループをアーカイブ・グループ1とすると、当該グループにはOBJ1と類似するオブジェクトが含まれることになる。したがって、アーカイブ・グループ1には、例えば、OBJ3,OBJ4が含まれることになる。
【0142】
一方、上記計算式(1)を用いて算出した、OBJ1との類似度の値が0.8未満であるオブジェクトのグループをアーカイブ・グループ2とすると、当該グループにはOBJ1と類似しないオブジェクトが含まれることになる。したがって、アーカイブ・グループ2には、例えば、OBJ2,OBJ5が含まれることになる。
【0143】
次に、図9を参照しながら、図11、及び、図12を用いて、上記計算式(1)の具体的な計算手法(cosθを求める計算手法)について説明する。
【0144】
図11は、図9に例示する3つのオブジェクト(「OBJ1」~「OBJ3」)の使用者となるユーザについてのユーザ関連重み情報72を例示する図である。
【0145】
図12は、図9に例示する3つのオブジェクト(「OBJ1」~「OBJ3」)に関連するプロセスについてのプロセス関連重み情報74を例示する図である。
【0146】
本実施形態では、以下の計算式(2)を用いて、上記計算式(1)のcosθを求める。すなわち、この計算式(2)は、OBJnとOBJmとの間の類似度の算出を例示する(n,mは0以上の整数)。
【0147】
【数1】
【0148】
上記計算式(2)に例示するように、本実施形態における類似度(cosθ)は、図11に例示するユーザ関連重み情報72と、図12に例示するプロセス関連重み情報74を考慮して算出する。すなわち、本実施形態では、メタ情報25のうち、ユーザIDとプロセスIDとに関して重みを考慮して類似度を算出する。したがって、本実施形態では、上記以外のメタ情報25(WRITE頻度、READ頻度、生成時刻、及び、イベントID)については重みを考慮しないものとしたので、これらに関する重みをすべて「1」として類似度を算出するものとする。
【0149】
上記計算式(2)を用いて、OBJ1とOBJ2の類似度を求める場合を例にとり説明する。この場合、上記計算式(2)の分子は、以下に示す計算式(2-1)~(2-8)によって求められた値を加算したものである。
【0150】
WRITE頻度の重み*OBJ1の“WRITE頻度”の値*OBJ2の“WRITE頻度”の値・・・(2-1)
【0151】
READ頻度の重み*OBJ1の“READ頻度”の値*OBJ2の“READ頻度”の値・・・(2-2)
【0152】
生成時刻の重み*OBJ1の“生成時刻”の値*OBJ2の“生成時刻”の値・・・(2-3)
【0153】
OBJ1を使用したユーザ(ユーザID「10」)とOBJ2を使用したユーザ(ユーザID「20」)とのユーザ間の重み*OBJ1を使用したユーザ(ユーザID「10」)のユーザIDの値*OBJ2を使用したユーザ(ユーザID「20」)のユーザIDの値・・・(2-4)
【0154】
OBJ1を使用したユーザ(ユーザID「0」)とOBJ2を使用したユーザ(ユーザID「0」)とのユーザ間の重み*OBJ1を使用したユーザ(ユーザID「0」)のユーザIDの値*OBJ2を使用したユーザ(ユーザID「0」)のユーザIDの値・・・(2-5)
【0155】
OBJ1に伴うプロセス(プロセスID「50」)とOBJ2に伴うプロセス(プロセスID「60」)とのプロセス間の重み*OBJ1に伴うプロセス(プロセスID「50」)のプロセスIDの値*OBJ2に伴うプロセス(プロセスID「60」)のプロセスIDの値・・・(2-6)
【0156】
OBJ1に伴うプロセス(プロセスID「0」)とOBJ2に伴うプロセス(プロセスID「0」)とのプロセス間の重み*OBJ1に伴うプロセス(プロセスID「0」)のプロセスIDの値*OBJ2に伴うプロセス(プロセスID「0」)のプロセスIDの値・・・(2-7)
【0157】
イベントIDの重み*OBJ1の“イベントID”の値*OBJ2の“イベントID”の値・・・(2-8)
【0158】
上述したOBJ1とOBJ2の類似度を求める場合、上記計算式(2-1)においては、図9の矢印P1に示す値を入力し、上述したように、“WRITE頻度の重み”には「1」を代入するものとする。
【0159】
上記計算式(2-2)においては、図9の矢印P2に示す値を入力し、上述したように、“READ頻度の重み”には「1」を代入するものとする。
【0160】
上記計算式(2-3)においては、図9の矢印P3に示す値(10進数)を入力し、上述したように、“生成時刻の重み”には「1」を代入するものとする。
【0161】
上記計算式(2-4)においては、“ユーザ間の重み”には、図9の矢印P4に示すユーザID(「10」,「20」)に基づき、図11の矢印Q1に示す値(「1.0」)を入力するものとする。
【0162】
上記計算式(2-5)においては、“ユーザ間の重み”には、図9の矢印P4に示すユーザID(「0」,「0」)に基づき、図11の矢印Q2に示す値(「1.0」)を入力するものとする。
【0163】
上記計算式(2-6)においては、“プロセス間の重み”には、図9の矢印P5に示すプロセスID(「50」,「60」)に基づき、図12の矢印Q3に示す値(「0.8」)を入力するものとする。
【0164】
上記計算式(2-7)においては、“プロセス間の重み”には、図9の矢印P5に示すプロセスID(「0」,「0」)に基づき、図12の矢印Q4に示す値(「1.0」)を入力するものとする。
【0165】
上記計算式(2-8)においては、図9の矢印P6に示す値を入力し、上述したように、“イベントIDの重み”には「1」を代入するものとする。
【0166】
また、上記計算式(2)の分母は、OBJ1とOBJとの内積であるから、以下に示す計算式(2-9)と(2-10)との積を求めることになる。
【0167】
SQRT(OBJ1の“WRITE頻度”の値^2+“READ頻度”の値^2+“生成時刻”の値^2+“ユーザID”の値^2+“プロセスID”の値^2+“イベントID”の値^2)・・・(2-9)
【0168】
SQRT(OBJ2の“WRITE頻度”の値^2+“READ頻度”の値^2+“生成時刻”の値^2+“ユーザID”の値^2+“プロセスID”の値^2+“イベントID”の値^2)・・・(2-10)
【0169】
以上の代入を行なうことにより、OBJ1とOBJ2とのcosθは0.959となり、OBJ1とOBJ2とは類似性があることになる。
【0170】
〔1-5〕一実施形態に係るストレージシステムにおける重みの修正処理
本実施形態におけるストレージシステム1における重み制御部52が行なうユーザ間の重みを修正する処理、及びプロセス間の重みを修正する処理について説明する。
【0171】
まず、本実施形態におけるストレージシステム1の重み制御部52が行なうユーザ間の重みを修正する処理について、図13図14(a),(b),図15(a),(b)を参照しながら、図16に示すフローチャート(SU1~SU2)を用いて説明する。
【0172】
図13は、ユーザ間の重みの修正処理の説明に用いる、「OBJ10」~「OBJ30」に関するメタ情報25を例示する図である。
【0173】
図14の(a)は本実施形態における修正前(初期値)のユーザ関連重み情報72を例示する図であり、図14の(b)は本実施形態における修正後のユーザ関連重み情報72を例示する図である。
【0174】
これらの図14の(a),(b)は、具体的には、ユーザIDが「10」であるユーザ、ユーザIDが「50」であるユーザ、及び、ユーザIDが「40」であるユーザのうち、各2者間での重みを例示する。
【0175】
なお、図14(a)に例示する初期値は、管理者によって設定されてもよいし、ランダムに設定されるものであってもよい。
【0176】
図15の(a)は、図13に例示したメタ情報25と、修正前のユーザ間の重み(初期値;図14(a)参照)とを用いて上記計算式(2)により算出した類似度を例示する図である。また、図15の(b)は、図13に例示するメタ情報25と、修正後のユーザ間の重み(図14(b)参照)とを用いて上記計算式(2)により算出した類似度を例示する図である。
【0177】
図16は、本実施形態におけるユーザ間の重み修正の処理を説明するためのフローチャートである。
【0178】
ステップSU1に示す処理は、アーカイバマネージャ50の例えば類似度計算部51が、ユーザから書き込み要求を受信したことを契機として開始されるものとする。
【0179】
このステップSU1において、重み制御部52は、ユーザIDのすべての組み合わせについてユーザIDの値の差の絶対値を算出し、これらの総和(ユーザIDの値の差の絶対値の総和)を求める。
【0180】
図14の(a)を例にとると、ユーザIDのすべての組み合わせは、ユーザIDが「10」と「50」との組み合わせ、ユーザIDが「10」と「40」との組み合わせ、及び、ユーザIDが「40」と「50」との組み合わせの3通りがある。そして、これらの組み合わせについてユーザIDの値の差の絶対値を算出すると、それぞれ、40(|10-50|)、30(|10-40|)、及び、10(|40-50|)となる。そして、算出したこれらの絶対値の総和を求めると、40+30+10=80となる。
【0181】
続くステップSU2において、重み制御部52は、以下の計算式(3)を用いて重みを修正する。
【0182】
修正後のユーザ間の重み=修正前のユーザ間の重み×(ユーザIDの値/ユーザIDの値の差の絶対値の総和+1)・・・(3)
【0183】
図14の(a)を例にとると、ユーザIDが「10」であるユーザとユーザIDが「40」であるユーザ間の重みの初期値(修正前の重み)は「0.4」である(矢印R1参照)。この重みを上記計算式(3)を用いて修正すると、0.4×(40/80+1)=0.6となり、図14の(b)に例示するような重みに修正されることがわかる(矢印R2参照)。そして、処理が終了する。
【0184】
このように、修正後のユーザ間の重み(図14の(b)参照)を用いて上記計算式(2)により類似度を求めると、図15の(b)に例示するような値が得られる。すなわち、ユーザ間の重みを、図14の(a)から図14の(b)に例示する値に修正することにより、類似度も図15の(a)から図15の(b)に例示する値に変化することになる。
【0185】
上述したように、本実施形態では、オブジェクトの類似度を求めるうえで、実際にオブジェクトを利用する主体となる複数ユーザ間の重み、すなわち、ユーザ同士の関連性を反映させる。これに加え、本実施形態では、オブジェクトに紐付いて実行される複数プロセス間の重み、すなわち、プロセス同士の関連性を反映させて、オブジェクトの類似度を求める。以下に、オブジェクトに紐付いて実行される複数プロセス間の重みを修正する処理について、図13図17(a),(b),図18(a),(b)を参照しながら、図19に示すフローチャート(SP1~SP2)を用いて説明する。
【0186】
図17の(a)は、本実施形態における修正前(初期値)のプロセス関連重み情報74を例示する図である。また、図17の(b)は本実施形態における修正後のプロセス関連重み情報74を例示する図である。
【0187】
これらの図17の(a),(b)では、具体的には、プロセスIDが「10」であるプロセス、プロセスIDが「50」であるプロセス、及び、プロセスIDが「40」であるプロセスの3つのプロセスのうち、2つのプロセス間の重みを例示する。
【0188】
図17(a)は、本実施形態におけるプロセス間の重みの初期値を例示する。この初期値は、管理者によって設定されてもよいし、ランダムに設定されるものであってもよい。
【0189】
図18の(a)は、図13に例示するメタ情報25と、修正前のプロセス間の重み(初期値;図17(a)参照)とを用いて上記計算式(2)により算出した類似度を例示する図である。また、図18の(b)は、図13に例示するメタ情報25と、修正後のプロセス間の重み(図17(b)参照)とを用いて上記計算式(2)により算出した類似度を例示する図である。
【0190】
図19は、本実施形態におけるプロセス間の重み修正の処理を説明するためのフローチャートである。
【0191】
ステップSP1に示す処理は、アーカイバマネージャ50の例えば類似度計算部51が、プロセスから書き込み要求を受信したことを契機として開始されるものとする。ステップSP1に示す処理を実行するにあたり、重み制御部52は、プロキシサーバ20のメタ情報抽出部22に依頼して、当該要求に関するメタ情報25を受け取るものとする。
【0192】
このステップSP1において、重み制御部52は、プロセスIDのすべての組み合わせについてプロセスIDの値の差の絶対値を算出し、これらの総和(プロセスIDの値の差の絶対値の総和)を求める。
【0193】
図17の(a)を例にとると、プロセスIDのすべての組み合わせは、プロセスIDが「10」と「50」との組み合わせ、プロセスIDが「10」と「40」との組み合わせ、及び、プロセスIDが「40」と「50」との組み合わせの3通りがある。そして、これらの組み合わせについてプロセスIDの値の差の絶対値を算出すると、それぞれ、40(|10-50|)、30(|10-40|)、及び、10(|40-50|)となる。そして、算出したこれらの絶対値の総和を求めると、40+30+10=80となる。
【0194】
続くステップSP2において、重み制御部52は、以下の計算式(4)を用いて重みを修正する。
【0195】
修正後のプロセス間の重み=修正前のプロセス間の重み×(プロセスIDの値/プロセスIDの値の差の絶対値の総和+1)・・・(4)
【0196】
図17の(a)を例にとると、プロセスIDが「10」であるプロセスとプロセスIDが「40」であるプロセス間の重みの初期値(修正前の重み)は「0.5」である(矢印R3参照)。この重みを上記計算式(4)を用いて修正すると、0.5×(40/80+1)=0.75となり、図17の(b)に例示するような重みに修正されることがわかる(矢印R4参照)。そして、処理が終了する。
【0197】
このように、修正後のプロセス間の重み(図17の(b)参照)を用いて上記計算式(2)により類似度を求めると、図18の(b)に例示するような値が得られる。すなわち、プロセス間の重みを、図17の(a)から図17の(b)に例示する値に修正することにより、類似度も図18の(a)から図18の(b)に例示する値に変化することになる。
【0198】
本実施形態では、図12図19を用いて上述したような重み修正処理を施すことにより、相関関係(共起)が大きいユーザやプロセスほど重みが大きくなるように重みの修正を行なう。
【0199】
なお、本実施形態では、ユーザからの書き込み要求を受信すると、これらの重みを修正するものとしたが、共起の発生、ユーザ再呼び出し、及び、利用状況の変化等に応じて随時これらの重みを修正してもよい。これにより、上述した計算式(2)に代入されるユーザやプロセスの重みには実際の運用状況を反映することができ、オブジェクトの類似度を正確に算出することができる。
【0200】
また、ユーザ同士の関連性だけでなく、プロセス間同士の関連性をも考慮するため、オブジェクトが利用される際に必要となる複数の要素を考慮してオブジェクトの類似度を求めることができる。
【0201】
次に、上述したユーザ間の重みとプロセス間の重みとを連続して修正する処理について図21を参照しながら、図20を用いて説明する。
【0202】
図20は、本実施形態におけるユーザ間の重みとプロセス間の重みとの修正の処理を例示する図である。
【0203】
図21は、本実施形態におけるユーザ間の重みとプロセス間の重みとの修正処理の概要を例示する図である。
【0204】
なお、ステップC1の処理は、ユーザから書き込み要求を受信したことを契機として開始するものとする。また、上述したように、メタ情報25に含まれる「ユーザID」,「プロセスID」を、ベクトル要素ともいう。
【0205】
ステップC1において、重み制御部52は、メタ情報25のベクトル要素毎に、IDの値の差の絶対値の総和を算出する。本実施形態では、ベクトル要素であるユーザIDとプロセスIDについて、IDの値の差の絶対値の総和を算出する。
【0206】
図21の例では、ユーザIDのすべての組み合わせは、ユーザIDが「10」と「50」との組み合わせ、ユーザIDが「10」と「40」との組み合わせ、及び、ユーザIDが「40」と「50」との組み合わせの3通りがある。そして、これらの組み合わせについてユーザIDの値の差の絶対値を算出すると、それぞれ、40(|10-50|)、30(|10-40|)、及び、10(|40-50|)となる。そして、算出したこれらの絶対値の総和を求めると、40+30+10=80となる(図21における矢印D1参照)。また、プロセスIDについても同様にプロセスIDの値の差の絶対値を算出すると、80となる(図21における矢印D1参照)。
【0207】
続くステップC2において、重み制御部52は、上記ステップC1にて算出した総和が最も大きいベクトル要素を検出する。図21の例では、ユーザIDとプロセスIDとの各総和は「80」と等しくなるため、本実施形態では、このような場合、ユーザIDについての重み(ユーザ間の重み)を先に修正するものとする(図21のA1参照)。
【0208】
続くステップC3において、重み制御部52は、上記ステップC2にて検出したベクトル要素について、上記計算式(3)を用いて重みを修正する(図21のA1-1参照)。この修正を施した後のユーザ間の重み(修正後のユーザ間の重み)を図21の矢印D2に示す。なお、この重み修正の処理は、上述した図14図16を用いて説明した、計算式(3)を用いた重みの算出と同様であるので、ここでは説明を省略する。
【0209】
続くステップC4において、類似度計算部51は、上記ステップC3にて修正した重みを用いて、上記計算式(2)を用いて類似度を算出する(図21のA1-2参照)。この算出した類似度(修正後の類似度)を図21の矢印D3に示す。なお、この処理は、図14図16を用いて説明した、計算式(2)を用いた類似度の算出と同様であるので、ここでは説明を省略する。
【0210】
続くステップC5において、重み制御部52は、上記ステップC2にて検出したベクトル要素のすべてについて、重み修正の処理をしたか(調べたか)を判断する。すべてのベクトル要素について重み修正の処理をしていないと判断した場合(ステップC5の“No”ルート参照)、処理がステップC6に移行する。一方、すべてのベクトル要素について重み修正の処理をしたと判断した場合(ステップC5の“Yes”ルート参照)、処理がステップC8に移行する。
【0211】
図21に示す例では、ユーザIDについてのみ重みの修正をしたが、プロセスIDについては重みの修正をしていないので、ステップC5の“No”ルートに進み、処理がステップC6に移行する。
【0212】
ステップC6において、類似度計算部51は、すべてのオブジェクトの類似度が類似度判定基準を上回ったかを判断する。本実施形態では、類似度判定基準を、類似度の値が「0.8」であるとし、類似度の値が「0.8」以上となった場合に、類似度計算部51は、オブジェクトの類似度が類似度判定基準を上回ったものと判断する。なお、本実施形態では、類似度判定基準を、類似度の値が「0.8」であるものとしたが、これに限られない。
【0213】
このステップC6において、類似度判定基準を上回ったと判断した場合(ステップC6の“Yes”ルート参照)、処理が終了する。一方、類似度判定基準を上回らなかったと判断した場合(ステップC6の“No”ルート参照)、処理がステップC7に移行する。
【0214】
図21に示す例では、類似度判定基準を上回らなかったオブジェクトが存在する(図21の矢印D4参照)ため、ステップC6における“No”ルートに進み、処理がステップC7に移行する。
【0215】
ステップC7において、類似度計算部51は、上記ステップC1にて算出した総和が次に大きいベクトル要素を検出する。そして、処理がステップC3に戻る。図21の例では、上記ステップC1にて算出した総和が次に大きいベクトル要素として、プロセスIDを検出し、プロセスIDについての重み(プロセス間の重み)の修正処理を行なう(図21のB1参照)。なお、この修正を施した後のプロセス間の重み(修正後のプロセス間の重み)を図21の矢印D5に示す。そして、上記計算式(3)を用いて重みを修正し(図21のB1-1参照)、計算式(2)を用いて類似度を算出する(図21のB1-2参照)。なお、この重み修正の処理と類似度を算出する処理とは、上述した図17図19を用いて説明した、計算式(2),(3)を用いた重みと類似度との算出と同様であるので、ここでは説明を省略する。
【0216】
また、ステップC8において、類似度計算部51は、類似度が最も類似度判定基準に近い重みに基づき、ユーザ関連重み情報72、プロセス関連重み情報74、及び、類似度情報75を修正(更新)する。
【0217】
図21に示す例では、上記ステップC1~ステップC8を経ることにより、修正後のプロセス間の重みを用いて類似度を算出した結果、すべてのオブジェクトの類似度の値が「0.8」以上となる。この場合、上記ステップC6において、類似度計算部51は、類似度判定基準を上回ったと判断し、処理が終了する(図21の矢印D6参照)。
【0218】
以上の結果から、図21に示す例では、類似度の判定において、ユーザIDよりもプロセスIDの値の方が重要視されていることがわかる。
【0219】
〔1-6〕一実施形態に係るストレージシステムにおける書き込み制御の処理
上述の如く構成された実施形態の一例として、ストレージシステム1での書き込み制御の処理を、図23(a)~(c)を参照しながら、図22に示すシーケンスチャート(ステップT1~T15)に従って説明する。
【0220】
図22は、本実施形態におけるオブジェクトの書き込み制御を説明するためのシーケンスチャートである。この図22では、ユーザからのオブジェクトの書き込み要求を受けたことを契機とし、アーカイブストレージ46に当該オブジェクトを書き込み、当該書き込み終了通知を送信するまでの処理を例示する。
【0221】
図23の(a)は、本実施形態における修正前のオブジェクトの類似度を例示する図である。そして、図23の(b)は、本実施形態において新たに生成されたオブジェクトとの類似度を例示する図である。また、図23の(c)は、本実施形態における修正後の類似度を例示する図である。
【0222】
この図23の(a)は、「OBJ1」~「OBJ5」のオブジェクト「OBJ1」~「OBJ5」間での修正前の類似度を例示する。
【0223】
また、図23の(a)に例示するように、修正前には、「OBJ1」~「OBJ3」は、アーカイブストレージ46の「Archive1」のアーカイブに書き込まれているものとする。また、修正前には、「OBJ4」,「OBJ5」はアーカイブストレージ46の「Archive2」のアーカイブに書き込まれているものとする。
【0224】
また、図23の(a)の例では、「Archive1」の先頭のオブジェクトを「OBJ1」とし、修正前には、図23の(a)における矢印EOで示す順番でアーカイブに書き込まれているものとする。すなわち、「OBJ1」に最も類似している「OBJ2」が「OBJ1」に追記される形で書き込まれており、「OBJ2」に続いて「OBJ1」に類似している「OBJ3」が「OBJ2」に追記される形で書き込まれているものとする。この書き込まれている順番である、「OBJ1」,「OBJ2」,「OBJ3」を、書き込み順序という。
【0225】
図22に示すステップT1において、ユーザは、アプリケーションサーバ10に対してオブジェクトの書き込みを要求する。この図22では、一例として、「OBJ6」のオブジェクトの書き込みを要求した場合を例にとり説明する。
【0226】
続くステップT2において、アプリケーションサーバ10は、プロキシサーバ20を介して、オブジェクトサーバ30に対し「OBJ6」の書き込みを要求する。ここで、オブジェクトサーバ30は、プロキシサーバ20を介して「OBJ6」を受信し、自身のオブジェクトストレージ31に格納するものとする。
【0227】
続くステップT3において、アプリケーションサーバ10は、プロキシサーバ20を介して、アーカイバサーバ40に対しオブジェクトの書き込みを要求する。この図22では、一例として、アプリケーションサーバ10が、「OBJ1」~「OBJ6」のオブジェクトを指定して当該書き込み要求をアーカイバサーバ40に対して送信するものとする。
【0228】
なお、図22に例示するシーケンスチャートでは、ステップT3に示す書き込み要求がステップT2に示す書き込み要求に続けて送信されるものとしたが、これらの要求は同時に送信されてもよいし、前後が逆になってもよい。
【0229】
続くステップT4において、アプリケーションサーバ10の類似度計算部51は、アーカイバサーバ40から受信した「OBJ1」~「OBJ6」のオブジェクトについて、上記計算式(2)を用いて類似度を算出する。
【0230】
図23の(b)には、類似度計算部51が上記計算式(2)を用いて算出した、書き込み対象の「OBJ6」と、他のオブジェクト(「OBJ1」~「OBJ5」)と間の類似度を例示する。
【0231】
上述したように、本実施形態では、類似度計算部51は、上記計算式(2)を用いて算出した類似度が0.8以上であれば類似性があり、0.8未満であれば類似性がないと判断する。このことから、この図23の(b)を参照すると、類似度計算部51は、書き込み対象の「OBJ6」が「OBJ1」,「OBJ2」と類似性があり、「OBJ3」~「OBJ5」とは類似性がないと判断する。
【0232】
続くステップT5において、類似度計算部51は、上記ステップT4にて算出した類似度に基づき、書き込み先のアーカイブを決定する。上記ステップT4において、書き込み対象の「OBJ6」は、「OBJ1」,「OBJ2」と類似性があると判断したので、「OBJ6」の書き込み先アーカイブは、「OBJ1」,「OBJ2」と同一のアーカイブである「Archive1」に決定する。
【0233】
ここで「OBJ3」に注目すると、「OBJ3」は、修正前には、「Archive1」に書き込まれている(図23の(a)における矢印E1参照)。しかしながら、新たに「OBJ6」を書き込む場合、「OBJ3」と「OBJ6」との類似度は「0.721」となり(図23の(b)における矢印E2参照)、「OBJ3」は、「OBJ6」と類似しないと判断された。そのため、「OBJ3」が「OBJ6」の書き込み先と同一のアーカイブ(「Archive1」)に書き込まれることは望ましくない。そこで、類似度計算部51は、「OBJ3」の書き込み先アーカイブを「Archive2」に決定(変更)する(図23の(c)における矢印E4参照)。
【0234】
次に、類似度計算部51は、上記ステップT4にて算出した類似度に基づきアーカイブストレージ46への書き込み順序を決定する。
【0235】
図23の(a)の例を参照すると、本実施形態において、「Archive1」の先頭のオブジェクトが「OBJ1」である場合、類似度計算部51は、「OBJ1」と関連性が大きいオブジェクトほど「OBJ1」の近傍位置に書き込みを行なう。
【0236】
具体的には、類似度計算部51は、書き込み先アーカイブが「Archive1」であるオブジェクト(「OBJ1」,「OBJ2」,「OBJ6」)のうち、最も「OBJ1」に類似しているオブジェクトである「OBJ2」を「OBJ1」の次に書き込む。そして、類似度計算部51は、2番目に「OBJ1」に類似しているオブジェクトである「OBJ6」を「OBJ2」の次に書き込むものとする(図23の(c)における矢印E3参照)。すなわち、類似度計算部51は、書き込み順序を、「OBJ1」,「OBJ2」,「OBJ6」と決定する。
【0237】
また、本実施形態において、類似度計算部51は、「Archive2」の先頭のオブジェクトを「OBJ3」とした場合、「OBJ3」と関連性が大きいオブジェクトほど「OBJ3」の近傍位置に書き込みを行なう。
【0238】
具体的には、類似度計算部51は、書き込み先アーカイブが「Archive2」であるオブジェクト(「OBJ3」,「OBJ4」,「OBJ5」)のうち、最も「OBJ3」に類似しているオブジェクトである「OBJ4」を「OBJ3」の次に書き込む。そして、類似度計算部51は、2番目に「OBJ3」に類似しているオブジェクトである「OBJ5」を「OBJ4」の次に書き込むものとする。すなわち、類似度計算部51は、書き込み順序を、「OBJ3」,「OBJ4」,「OBJ5」と決定する。
【0239】
続くステップT6において、類似度計算部51は、書き込み要求の対象となるオブジェクトのリスト(「OBJ1」~「OBJ6」)をアーカイブ制御部61に送信する。さらに、類似度計算部51は、上記ステップT5にて決定した、各オブジェクトについての書き込み先アーカイブと書き込み順序をアーカイブ制御部61に送信する。
【0240】
続くステップT7において、アーカイバマネージャ50は、オブジェクトサーバ30に対して、上記ステップT6にて受信したリストに含まれるオブジェクトについて移動呼び出しを要求する。この要求の処理は、アーカイバマネージャ50のアーカイブ制御部61によって実行される。
【0241】
続くステップT8において、オブジェクトサーバ30のオブジェクト制御部32は、上記ステップT7にて要求されたオブジェクトをオブジェクトストレージ31から読み出す。
【0242】
そして、オブジェクト制御部32は、読み出したオブジェクトをアーカイバサーバ40のスタブストレージ47にコピー(例えば、読み出したオブジェクト複製を送信)する。本実施形態において、このスタブストレージ47へのコピーは、アーカイバサーバ40のスタブ制御部62によって実行される。
【0243】
続くステップT9において、アーカイバマネージャ50は、アーカイブ制御部61に対して、上記ステップT8にてスタブストレージ47にコピーしたオブジェクトを、アーカイブストレージ46に書き込むよう指示する。この指示は、アーカイバマネージャ50のアーカイブ制御部61によって実行される。
【0244】
続くステップT10において、アーカイバマネージャ50は、アーカイブストレージ46に書き込みを行なうためのアーカイブファイル(「Archive1」,「Archive2」)を作成する。この作成は、アーカイバマネージャ50のアーカイブ制御部61によって実行される。
【0245】
続くステップT11において、アーカイバマネージャ50は、アーカイブストレージ46への書き込みを行なう。この書き込みは、上記ステップT6にて受信した、各オブジェクトの書き込み先アーカイブと書き込み順序とに基づき行なう。なお、この書き込みは、アーカイバマネージャ50のアーカイブ制御部61によって実行される。
【0246】
続くステップT12において、アーカイバマネージャ50は、アーカイブしたオブジェクトのファイル名を作成する。この作成は、アーカイバマネージャ50のアーカイブ制御部61によって実行される。
【0247】
続くステップT13において、アーカイバマネージャ50は、アーカイブストレージ46への書き込みが終了したことを受け、オブジェクトサーバ30に書き込み終了通知を送信する。この作成は、アーカイバマネージャ50のアーカイブ制御部61によって実行される。
【0248】
続くステップT14において、アーカイバエージェント60は、プロキシサーバ20を介して、アプリケーションサーバ10に対して書き込み終了通知を送信する。この送信は、アーカイバマネージャ50のアーカイブ制御部61によって実行される。
【0249】
続くステップT15において、アプリケーションサーバ10はユーザ端末2に対して書き込み終了通知を送信する。この送信は、アーカイバマネージャ50の要求送受信部12によって実行される。
【0250】
このように、上述したステップT1~T15を経ることにより、ユーザが今回書き込みを要求した対象となるオブジェクトは、アーカイブストレージ46において、当該オブジェクトと類似度が大きいオブジェクトに追記されることになる。これにより、今後ユーザが読み出す可能性の高いオブジェクトが当該オブジェクトの近傍に配置されることになるため、読み出し時間を短縮することができる。
【0251】
〔2〕効果
上述のように、本実施形態のストレージシステム1では、オブジェクトの類似度が大きいほど、例えば、シーケンシャルアクセス媒体(アーカイブストレージ46)上の隣接する位置に書き込むように書き込み順序を決定し、アーカイブストレージ46に書き込む。これにより、シーケンシャルアクセス媒体からのオブジェクトの読み出し時に、当該オブジェクトのアーカイブストレージ46における位置付けに要する時間が少なくなり、オブジェクトを読み出す際の時間を短縮することができる。
【0252】
さらに、本ストレージシステム1では、求めたオブジェクトの類似度に基づき、書き込み先のアーカイブを決定する。これにより、類似性があるオブジェクトを同一のアーカイブに書き込み、また、新たなオブジェクトの生成により類似度が小さくなったオブジェクトを別のアーカイブに書き込むことが可能となる。
【0253】
〔3〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【0254】
上述した一実施形態では、オブジェクトを利用する複数のユーザ間の関連性、及び、ユーザによる要求に伴って実行されるプロセス間の関連性を重みとして考慮し、オブジェクトの類似度を算出したが、これに限られない。例えば、メタ情報25のうち、イベントIDによって特定される、ユーザによる要求に伴って実行されるイベント間の関連性を重みとして考慮して類似度を算出してもよい。
【0255】
上述した一実施形態では、オブジェクトを利用する複数のユーザ間の関連性と、ユーザによる要求に伴って実行されるプロセス間の関連性との両方を重みとして考慮したが、これらの関連性のうちいずれか一方の重みのみを考慮して類似度を算出してもよい。
【0256】
上述した一実施形態では、ユーザ間での重み修正の処理、及び、プロセス間での重み修正を、ユーザから書き込み要求を受信したことを契機として開始するものとしたが、これに限られない。例えば、相関関係(共起)が発生したことを契機として重み修正の処理を開始してもよい。
【0257】
上述した一実施形態では、ユーザIDとプロセスIDと共に、IDの値の差の絶対値の総和が等しくなった場合、ユーザIDについて先に重みを修正するものとしてが、これに限られない。
【0258】
上述した一実施形態では、ファイルモニタ12は、オブジェクトを利用するプロセスを監視するものとしたが、監視対象はプロセスだけでなく、例えば利用されるアプリケーションをも含めてもよい。
【0259】
〔4〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0260】
(付記1)
記憶媒体にデータを格納させる制御を行なうストレージ制御装置であって、
複数のデータの各属性情報に基づき、複数のデータにおける相関性を求める制御部を備え、
前記制御部は、前記相関性が高いデータを前記記憶媒体上の近傍位置に配置する、
ことを特徴とするストレージ制御装置。
【0261】
(付記2)
前記記憶媒体はシーケンシャルアクセスの媒体であり、
前記制御部は、前記複数のデータを使用する複数のユーザ間の相関性、及び、前記ユーザによる要求に伴って実行される複数のプロセス間の相関性、のうち少なくともいずれかに基づき、前記複数のデータにおける相関性を求め、
前記制御部は、前記相関性が高いデータから順番に前記記憶媒体に配置するように順序を決定する、
ことを特徴とする、付記1に記載のストレージ制御装置。
【0262】
(付記3)
前記属性情報は、前記データへの書き込み頻度、前記データの読み出し頻度、前記データが生成された時刻、前記データを使用したユーザの識別子、前記ユーザによる要求に伴って実行されたプロセスの識別子、及び、前記ユーザによる要求に伴って発生したイベントの識別子、のうち少なくともいずれかを含む、
ことを特徴とする、付記1又は2に記載のストレージ制御装置。
【0263】
(付記4)
前記制御部は、前記データを使用したユーザの識別子の値の差に基づき、前記ユーザ間の相関性を求め、
前記制御部は、前記ユーザによる要求に伴って実行された複数のプロセスの識別子の値の差に基づき、前記プロセス間の相関性を求める、
ことを特徴とする、付記3に記載のストレージ制御装置。
【0264】
(付記5)
複数のデータの各属性情報に基づき、複数のデータにおける相関性を求め、
前記相関性が高いデータを記憶媒体上の近傍位置に配置する、
処理をコンピュータに実行させることを特徴とするストレージ制御プログラム。
【0265】
(付記6)
前記記憶媒体はシーケンシャルアクセスの媒体であり、
前記複数のデータを使用する複数のユーザ間の相関性、及び、前記ユーザによる要求に伴って実行される複数のプロセス間の相関性、のうち少なくともいずれかに基づき、前記複数のデータにおける相関性を求め、
前記相関性が高いデータから順番に前記記憶媒体に配置するように順序を決定する、
処理をコンピュータに実行させることを特徴とする、付記5に記載のストレージ制御プログラム。
【0266】
(付記7)
前記属性情報は、前記データへの書き込み頻度、前記データの読み出し頻度、前記データが生成された時刻、前記データを使用したユーザの識別子、前記ユーザによる要求に伴って実行されたプロセスの識別子、及び、前記ユーザによる要求に伴って発生したイベントの識別子、のうち少なくともいずれかを含む、
ことを特徴とする、付記5又は6に記載のストレージ制御プログラム。
【0267】
(付記8)
前記データを使用したユーザの識別子の値の差に基づき、前記ユーザ間の相関性を求め、
前記ユーザによる要求に伴って実行された複数のプロセスの識別子の値の差に基づき、前記プロセス間の相関性を求める、
処理をコンピュータに実行させることを特徴とする、付記7に記載のストレージ制御プログラム。
【0268】
(付記9)
複数のデータの各属性情報に基づき、複数のデータにおける相関性を求め、
前記相関性が高いデータを記憶媒体上の近傍位置に配置する、
ことを特徴とするストレージ制御方法。
【0269】
(付記10)
前記記憶媒体はシーケンシャルアクセスの媒体であり、
前記複数のデータを使用する複数のユーザ間の相関性、及び、前記ユーザによる要求に伴って実行される複数のプロセス間の相関性、のうち少なくともいずれかに基づき、前記複数のデータにおける相関性を求め、
前記相関性が高いデータから順番に前記記憶媒体に配置するように順序を決定する、
ことを特徴とする、付記9に記載のストレージ制御方法。
【0270】
(付記11)
前記属性情報は、前記データへの書き込み頻度、前記データの読み出し頻度、前記データが生成された時刻、前記データを使用したユーザの識別子、前記ユーザによる要求に伴って実行されたプロセスの識別子、及び、前記ユーザによる要求に伴って発生したイベントの識別子、のうち少なくともいずれかを含む、
ことを特徴とする、付記9又は10に記載のストレージ制御方法。
【0271】
(付記12)
前記データを使用したユーザの識別子の値の差に基づき、前記ユーザ間の相関性を求め、
前記ユーザによる要求に伴って実行された複数のプロセスの識別子の値の差に基づき、前記プロセス間の相関性を求める、
ことを特徴とする、付記11に記載のストレージ制御方法。
【0272】
(付記13)
ユーザからのデータを取得するアプリケーションサーバと、複数のデータの各属性情報を格納するプロキシサーバと、記憶媒体にデータを格納させる制御を行なうストレージ制御装置とを備えるストレージシステムにおいて、
前記アプリケーションサーバは、ユーザからのデータを前記プロキシサーバを介して前記ストレージ制御装置に送信し、
前記ストレージ制御装置は、受信した前記データの各属性情報に基づき、前記プロキシサーバが格納する属性情報を参照しながら、前記複数のデータにおける相関性を求め、前記相関性が高いデータを前記記憶媒体上の近傍位置に配置する、
ことを特徴とするストレージシステム。
【符号の説明】
【0273】
1 ストレージシステム
2 ユーザ端末
10 アプリケーションサーバ
11 要求送受信部
12 ファイルモニタ
20 プロキシサーバ
21 メタ情報ストレージ
22 メタ情報抽出部
25 メタ情報
30 オブジェクトサーバ
31 オブジェクトストレージ
32 オブジェクト制御部
40 アーカイバサーバ(ストレージ制御装置)
41 CPU
42 記憶部
43 メモリ
44 IF部
45 コントローラ
46 アーカイブストレージ
47 スタブストレージ
50 アーカイバマネージャ
51 類似度計算部
52 重み制御部
60 アーカイバエージェント
61 アーカイブ制御部
62 スタブ制御部
71 ユーザID情報
72 ユーザ関連重み情報
73 プロセスID情報
74 プロセス関連重み情報
75 類似度情報
90 ネットワーク
91 制御プログラム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23