(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023044934
(43)【公開日】2023-04-03
(54)【発明の名称】ストレージ装置及びキャッシュ制御方法
(51)【国際特許分類】
G06F 12/0868 20160101AFI20230327BHJP
G06F 3/06 20060101ALI20230327BHJP
【FI】
G06F12/0868 100
G06F3/06 302A
G06F3/06 304P
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2021153061
(22)【出願日】2021-09-21
(71)【出願人】
【識別番号】000233295
【氏名又は名称】株式会社日立情報通信エンジニアリング
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】宮本 清久
(72)【発明者】
【氏名】白木 伸二郎
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ13
5B205MM11
5B205QQ20
(57)【要約】
【課題】処理性能を向上させるキャッシュ制御を実現する。
【解決手段】ストレージ装置は、ユーザデータに対するアクセスの履歴を管理し、任意のアクセス元が任意のユーザデータに、任意の時間帯及び任意の曜日にアクセスした履歴を集計することによって、時間帯及び曜日の組合せにおけるアクセス元のユーザデータに対するアクセス頻度を評価するための第1指標を算出し、アクセス元、ユーザデータ、時間帯、曜日、及び第1指標を含む解析データを生成し、同一アクセス元及び同一時間帯の解析データに含まれる第1指標に基づいて、同一時間帯におけるアクセス元のユーザデータに対するアクセス傾向を評価するための第2指標を算出し、アクセス元、ユーザデータ、時間帯、曜日、及び第2指標を含むアクセス傾向データを生成し、現在の時間帯より一つ先の時間帯に対応するアクセス傾向データに基づいて、キャッシュ制御を行う。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コントローラ及び複数の記憶媒体を備えるストレージ装置であって、
前記コントローラは、
キャッシュ領域を含むメモリにアクセス可能であって、
前記複数の記憶媒体に格納されるユーザデータに対するアクセス元からのアクセスの履歴をアクセス記録情報として管理し、
前記アクセス記録情報に基づいて、任意のアクセス元が任意のユーザデータに、任意の時間帯及び任意の曜日にアクセスした前記履歴を集計することによって、時間帯及び曜日の組合せにおける当該アクセス元の当該ユーザデータに対するアクセス頻度を評価するための第1指標を算出し、アクセス元、ユーザデータ、時間帯、曜日、及び前記第1指標を含む解析データを生成し、
同一アクセス元及び同一時間帯の前記解析データに含まれる前記第1指標に基づいて、同一時間帯における任意のアクセス元の前記ユーザデータに対するアクセス傾向を評価するための第2指標を算出し、アクセス元、ユーザデータ、時間帯、曜日、及び前記第2指標を含む第1アクセス傾向データを生成し、
現在の時間帯より一つ先の時間帯に対応する前記第1アクセス傾向データに基づいて、前記メモリに対する前記ユーザデータのフェッチ及び追い出しを制御することを特徴とするストレージ装置。
【請求項2】
請求項1に記載のストレージ装置であって、
前記コントローラは、前記第1指標の偏差値を前記第2指標として算出することを特徴とするストレージ装置。
【請求項3】
請求項2に記載のストレージ装置であって、
前記コントローラは、前記第2指標と閾値との比較結果に基づいて、前記メモリにフェッチするユーザデータ及び前記メモリから追い出すユーザデータを決定することを特徴とするストレージ装置。
【請求項4】
請求項3に記載のストレージ装置であって、
前記コントローラは、
前記ストレージ装置を利用する前記アクセス元の接続状態を確認し、
現在の時間帯より一つ先の時間帯に対応する前記第1アクセス傾向データであって、接続されていない前記アクセス元に対応する前記第1アクセス傾向データを検索し、
検索された前記第1アクセス傾向データに対応する前記ユーザデータを前記メモリから追い出すユーザデータに決定することを特徴とするストレージ装置。
【請求項5】
請求項2に記載のストレージ装置であって、
前記コントローラは、
前記アクセス記録情報に基づいて、任意のアクセス元が任意のユーザデータに、任意の日にち及び任意の時間帯にアクセスした前記履歴を集計することによって、当該アクセス元が当該ユーザデータに周期的にアクセスする日にち及び時間帯の組合せを特定し、アクセス元、ユーザデータ、日にち、及び時間帯を含む第2アクセス傾向データを生成し、
現在の時間帯より一つ先の時間帯に対応する前記第1アクセス傾向データ及び前記第2アクセス傾向データに基づいて、前記メモリに対する前記ユーザデータのフェッチ及び追い出しを制御することを特徴とするストレージ装置。
【請求項6】
請求項5に記載のストレージ装置であって、
前記コントローラは、
前記第2アクセス傾向データに対応する前記ユーザデータを前記メモリにフェッチするユーザデータとして決定し、
前記第2指標と閾値との比較結果に基づいて、現在の時間帯より一つ先の時間帯に対応する前記第1アクセス傾向データに対応する前記ユーザデータの中から、前記メモリにフェッチするユーザデータ及び前記メモリから追い出すユーザデータを決定することを特徴とするストレージ装置。
【請求項7】
請求項6に記載のストレージ装置であって、
前記コントローラは、
前記ストレージ装置を利用する前記アクセス元の接続状態を確認し、
現在の時間帯より一つ先の時間帯に対応する前記第2アクセス傾向データの中から、接続されていない前記アクセス元に対応する前記第2アクセス傾向データを除外し、
現在の時間帯より一つ先の時間帯に対応する前記第1アクセス傾向データであって、接続されていない前記アクセス元に対応する前記第1アクセス傾向データを検索し、
検索された前記第1アクセス傾向データに対応する前記ユーザデータを前記メモリから追い出すユーザデータに決定することを特徴とするストレージ装置。
【請求項8】
コントローラ及び複数の記憶媒体を有するストレージ装置が実行するキャッシュ制御方法であって、
前記コントローラは、
キャッシュ領域を含むメモリにアクセス可能であって、
前記複数の記憶媒体に格納されるユーザデータに対するアクセス元からのアクセスの履歴をアクセス記録情報として管理し、
前記キャッシュ制御方法は、
前記コントローラが、前記アクセス記録情報に基づいて、任意のアクセス元が任意のユーザデータに、任意の時間帯及び任意の曜日にアクセスした前記履歴を集計することによって、時間帯及び曜日の組合せにおける当該アクセス元の当該ユーザデータに対するアクセス頻度を評価するための第1指標を算出し、アクセス元、ユーザデータ、時間帯、曜日、及び前記第1指標を含む解析データを生成する第1のステップと、
前記コントローラが、同一アクセス元及び同一時間帯の前記解析データに含まれる前記第1指標に基づいて、同一時間帯における任意のアクセス元の前記ユーザデータに対するアクセス傾向を評価するための第2指標を算出し、アクセス元、ユーザデータ、時間帯、曜日、及び前記第2指標を含む第1アクセス傾向データを生成する第2のステップと、
前記コントローラが、現在の時間帯より一つ先の時間帯に対応する前記第1アクセス傾向データに基づいて、前記メモリに対する前記ユーザデータのフェッチ及び追い出しを制御する第3のステップと、を含むことを特徴とするキャッシュ制御方法。
【請求項9】
請求項8に記載のキャッシュ制御方法であって、
前記第2のステップは、前記コントローラが、前記第1指標の偏差値を前記第2指標として算出するステップを含むことを特徴とするキャッシュ制御方法。
【請求項10】
請求項9に記載のキャッシュ制御方法であって、
前記第3のステップは、前記コントローラが、前記第2指標と閾値との比較結果に基づいて、前記メモリにフェッチするユーザデータ及び前記メモリから追い出すユーザデータを決定するステップを含むことを特徴とするキャッシュ制御方法。
【請求項11】
請求項10に記載のキャッシュ制御方法であって、
前記コントローラが、前記ストレージ装置を利用する前記アクセス元の接続状態を確認するステップを含み、
前記第3のステップは、
前記コントローラが、現在の時間帯より一つ先の時間帯に対応する前記第1アクセス傾向データであって、接続されていない前記アクセス元に対応する前記第1アクセス傾向データを検索するステップと、
前記コントローラが、検索された前記第1アクセス傾向データに対応する前記ユーザデータを前記メモリから追い出すユーザデータに決定するステップと、を含むことを特徴とするキャッシュ制御方法。
【請求項12】
請求項9に記載のキャッシュ制御方法であって、
前記コントローラが、前記アクセス記録情報に基づいて、任意のアクセス元が任意のユーザデータに、任意の日にち及び任意の時間帯にアクセスした前記履歴を集計することによって、当該アクセス元が当該ユーザデータに周期的にアクセスする日にち及び時間帯の組合せを特定し、アクセス元、ユーザデータ、日にち、及び時間帯を含む第2アクセス傾向データを生成するステップを含み、
前記第3のステップは、前記コントローラが、現在の時間帯より一つ先の時間帯に対応する前記第1アクセス傾向データ及び前記第2アクセス傾向データに基づいて、前記メモリに対する前記ユーザデータのフェッチ及び追い出しを制御するステップを含むことを特徴とするキャッシュ制御方法。
【請求項13】
請求項12に記載のキャッシュ制御方法であって、
前記第3のステップは、
前記コントローラが、前記第2アクセス傾向データに対応する前記ユーザデータを前記メモリにフェッチするユーザデータとして決定するステップと、
前記コントローラが、前記第2指標と閾値との比較結果に基づいて、現在の時間帯より一つ先の時間帯に対応する前記第1アクセス傾向データに対応する前記ユーザデータの中から、前記メモリにフェッチするユーザデータ及び前記メモリから追い出すユーザデータを決定するステップと、を含むことを特徴とするキャッシュ制御方法。
【請求項14】
請求項13に記載のキャッシュ制御方法であって、
前記コントローラが、前記ストレージ装置を利用する前記アクセス元の接続状態を確認するステップを含み、
前記第3のステップは、
前記コントローラが、現在の時間帯より一つ先の時間帯に対応する前記第2アクセス傾向データの中から、接続されていない前記アクセス元に対応する前記第2アクセス傾向データを除外するステップと、
前記コントローラが、現在の時間帯より一つ先の時間帯に対応する前記第1アクセス傾向データであって、接続されていない前記アクセス元に対応する前記第1アクセス傾向データを検索するステップと、
前記コントローラが、検索された前記第1アクセス傾向データに対応する前記ユーザデータを前記メモリから追い出すユーザデータに決定するステップと、を含むことを特徴とするキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ装置のキャッシュ制御に関する。
【背景技術】
【0002】
ストレージ装置が格納するユーザデータを用いた処理の性能を向上させるためにキャッシュメモリを利用する。キャッシュメモリにデータを格納することによって、高速にユーザデータを応答することができる。キャッシュメモリの容量には限りがあるためユーザデータを管理する必要がある。キャッシュメモリのデータの管理方法として、特許文献1に記載の技術が知られている。
【0003】
特許文献1には「記憶装置から読み出されたデータを記憶するキャッシュメモリ36a~dと、上位装置20からの記憶装置10a~dに記憶されたデータに対するアクセス状況を監視するアクセス監視部と、アクセス状況に基づいて、キャッシュメモリ36a~dの記憶内容を決定するスケジュール情報を作成するスケジュール情報作成部と、スケジュール情報に基づいて、記憶装置10a~dからキャッシュメモリ36a~dへのデータの記録処理と、キャッシュメモリからのデータの削除処理とを制御するメモリ制御部とを備えて構成する。」ことが記載されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に記載の技術では、アクセス回数に基づいてスケジュール情報が生成されているため、アクセス回数は少ないが周期的にアクセスがあるユーザデータは、キャッシュ制御の対象にならない。例えば、バッチ処理で扱われるユーザデータは、アクセス回数は少ないが周期的にアクセスされるユーザデータであり、バッチ処理の開始前に当該データをキャッシュメモリに格納することによって、バッチ処理の処理性能の向上が期待される。
【0006】
本発明は、ユーザデータのアクセス傾向に基づくキャッシュ制御方法及びその方法を実行するストレージ装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、コントローラ及び複数の記憶媒体を備えるストレージ装置であって、前記コントローラは、キャッシュ領域を含むメモリにアクセス可能であって、前記複数の記憶媒体に格納されるユーザデータに対するアクセスの履歴をアクセス記録情報として管理し、前記アクセス記録情報に基づいて、任意のアクセス元が任意のユーザデータに、任意の時間帯及び任意の曜日にアクセスした前記履歴を集計することによって、時間帯及び曜日の組合せにおける前記アクセス元の前記ユーザデータに対するアクセス頻度を評価するための第1指標を算出し、アクセス元、ユーザデータ、時間帯、曜日、及び前記第1指標を含む解析データを生成し、同一アクセス元及び同一時間帯の前記解析データに含まれる前記第1指標に基づいて、同一時間帯におけるアクセス元の前記ユーザデータに対するアクセス傾向を評価するための第2指標を算出し、アクセス元、ユーザデータ、時間帯、曜日、及び前記第2指標を含む第1アクセス傾向データを生成し、現在の時間帯より一つ先の時間帯に対応する前記第1アクセス傾向データに基づいて、前記メモリに対する前記ユーザデータのフェッチ及び追い出しを制御する。
【発明の効果】
【0008】
本発明によれば、ストレージ装置は、ユーザデータのアクセス傾向に基づいて、キャッシュ領域におけるユーザデータのフェッチ及び追い出しを制御できる。
【図面の簡単な説明】
【0009】
【
図1】本発明の実施例1のシステムの構成例を示す図である。
【
図2】実施例1のアクセス記録情報のデータ構造の一例を示す図である。
【
図3】実施例1のアクセス解析情報のデータ構造の一例を示す図である。
【
図4】実施例1の第1キャッシュ制御情報のデータ構造の一例を示す図である。
【
図5】実施例1の第2キャッシュ制御情報のデータ構造の一例を示す図である。
【
図6】実施例1の制御部が実行するアクセス解析処理の一例を説明するフローチャートである。
【
図7】実施例1の制御部が実行する重み算出処理の一例を説明するフローチャートである。
【
図8A】実施例1の制御部が実行するアクセス元接続確認処理の一例を説明するフローチャートである。
【
図8B】実施例1の制御部が実行するアクセス元接続確認処理の一例を説明するフローチャートである。
【
図9】実施例1の制御部が実行するキャッシュ制御処理の一例を説明するフローチャートである。
【
図10A】実施例2の制御部が実行するアクセス解析処理の一例を説明するフローチャートである。
【
図10B】実施例2の制御部が実行するアクセス解析処理の一例を説明するフローチャートである。
【発明を実施するための形態】
【0010】
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【0011】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【0012】
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
【実施例0013】
図1は、本発明の実施例1のシステムの構成例を示す図である。
【0014】
実施例1のシステムは、ストレージ装置100及びホスト計算機101から構成される。なお、ストレージ装置100に接続するホスト計算機101の数は2以上でもよい。
【0015】
ストレージ装置100及びホスト計算機101は、WAN(Wide Area Network)、LAN(Local Area Network)、及びSAN(Storage Area Network)等のネットワークを介して接続されてもよいし、また、直接接続されてもよい。なお、接続方式は無線及び有線のいずれでもよい。
【0016】
ホスト計算機101は、ストレージ装置100に対して、データの書込及びデータの読出を行う計算機である。ホスト計算機101は、図示しないCPU、メモリ、ネットワークインタフェース、及びIOインタフェースを有する。
【0017】
ストレージ装置100は、ホスト計算機101がアクセスするユーザデータを管理する。ストレージ装置100は、コントローラ110及び複数の記憶媒体111を有する。なお、ストレージ装置100は二つ以上のコントローラ110を有していてもよい。
【0018】
コントローラ110は、ストレージ装置100を制御し、また、ホスト計算機101とストレージ装置100との間のデータ転送を制御する。コントローラ110は、プロセッサ120、メモリ121、接続インタフェース122、及びストレージインタフェース123を含む。各構成要素は内部経路を介して互いに接続される。
【0019】
プロセッサ120は、メモリ121に格納されるプログラムを実行する。プロセッサ120がプログラムを実行することによって、ストレージ装置100が備える機能が実現される。以下の説明では、プログラムを主体に処理を説明する場合、プロセッサ120によってプログラムが実行されていることを示す。
【0020】
メモリ121は、プロセッサ120によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。メモリ121に格納されるプログラム及び情報については後述する。また、メモリ121は、一時的にデータを格納する記憶領域であるキャッシュ領域140を含む。
【0021】
接続インタフェース122は、ホスト計算機101と接続するためのデバイスである。接続インタフェース122は、例えば、CA(Channel Adapter)及びNIC(Network Interface Card)等である。ストレージインタフェース123は、記憶媒体111と接続するためのデバイスである。
【0022】
記憶媒体111は、ユーザデータを格納する装置である。記憶媒体111は、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)等である。複数の記憶媒体111を用いてRAIDが構成されてもよい。本実施例では、ファイルをユーザデータの一例として説明する。
【0023】
なお、ストレージ装置100は、コントローラ110とは別にキャッシュメモリを有してもよい。また、コントローラ110はメモリ121とは別にキャッシュメモリを有してもよい。
【0024】
ここで、メモリ121に格納されるプログラム及び情報について説明する。メモリ121は、制御部130を実現するプログラムを格納し、また、アクセス記録情報150、アクセス解析情報151、第1キャッシュ制御情報152、及び第2キャッシュ制御情報153を格納する。なお、メモリ121には、記憶媒体111に格納されるデータを管理するための情報等が格納されているが本実施例では省略している。
【0025】
制御部130は、ストレージ装置100の各種制御を行う。例えば、制御部130は、RAIDボリュームを生成し、RAIDボリュームを論理的に分割することによってLUを生成する。また、制御部130は、生成されたLUをホスト計算機101に提供する。この場合、メモリ121には、LUと記憶媒体111との対応関係を示す管理情報が格納される。制御部130は、ホスト計算機101からI/O要求を受信した場合、管理情報に基づいてLUを構成する記憶領域(論理ブロック)を提供する記憶媒体111にアクセスする。また、制御部130は、LUの管理機能、データ転送機能、及びキャッシュ制御機能等の各種機能を有する。
【0026】
本実施例の制御部130は、キャッシュ制御機能に特徴を有する。キャッシュ制御機能の詳細については後述する。
【0027】
アクセス記録情報150は、記憶媒体111に格納されるユーザデータに対するアクセスの履歴を管理するための情報である。アクセス記録情報150のデータ構造は
図2を用いて説明する。
【0028】
アクセス解析情報151は、サンプル期間におけるデータのアクセス傾向の解析結果を管理するための情報である。アクセス解析情報151のデータ構造は
図3を用いて説明する。アクセス解析情報151は、後述するアクセス解析処理が実行されるたびに生成される。メモリ121には、管理期間に生成されたアクセス解析情報151が格納されるものとする。管理期間は例えば1年である。なお、管理期間は任意に設定できる。
【0029】
第1キャッシュ制御情報152及び第2キャッシュ制御情報153は、キャッシュ領域140へのデータのフェッチ及びキャッシュ領域140からのデータの追い出しを制御するための情報である。第1キャッシュ制御情報152のデータ構造は
図4を用いて説明する。第2キャッシュ制御情報153のデータ構造は
図5を用いて説明する。
【0030】
なお、実施例1では、第1キャッシュ制御情報152のみを用いてキャッシュ制御が行われる。第1キャッシュ制御情報152及び第2キャッシュ制御情報153を用いたキャッシュ制御は実施例2で説明する。
【0031】
図2は、実施例1のアクセス記録情報150のデータ構造の一例を示す図である。
【0032】
アクセス記録情報150は、ソースID201、ファイルID202、日時203、時刻204、及び曜日205を含むエントリ(履歴)を格納する。任意データ(ファイル)に対する1回のアクセスに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。
【0033】
ソースID201は、ファイルのアクセス元の識別情報を格納するフィールドである。本実施例のソースID201には、ホスト計算機101を識別するユーザIDが格納されるものとする。なお、ソースID201にはプログラムの識別情報等が格納されてもよい。ファイルID202は、アクセスされたファイルの識別情報を格納するフィールドである。日時203は、アクセス日時を格納するフィールドである。時刻204は、アクセス時刻を格納するフィールドである。曜日205は、アクセス日時の曜日を格納するフィールドである。
【0034】
図3は、実施例1のアクセス解析情報151のデータ構造の一例を示す図である。
【0035】
アクセス解析情報151は、ソースID301、ファイルID302、曜日303、時間帯304、及び重み305を含むエントリ(解析データ)を格納する。アクセス元、ファイル、曜日、及び時間帯の組合せに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。
【0036】
ソースID301は、アクセス元の識別情報を格納するフィールドである。ファイルID302は、アクセス対象のファイルの識別情報を格納するフィールドである。曜日303は、アクセスが行われる曜日を格納するフィールドである。時間帯304は、アクセスが行われる時間帯の開始時刻を格納するフィールドである。本実施例では、10分を単位時間幅として、24時間を複数の時間帯に分割している。なお単位時間幅は任意に設定できる。重み305は、時間帯及び曜日の組合せにおける、アクセス元のファイルに対するアクセス頻度を評価するための重みを格納するフィールドである。
【0037】
図4は、実施例1の第1キャッシュ制御情報152のデータ構造の一例を示す図である。
【0038】
第1キャッシュ制御情報152は、ソースID401、ファイルID402、曜日403、時間帯404、及び偏差値405を含むエントリ(第1アクセス傾向データ)を格納する。アクセス元、ファイル、曜日、及び時間帯の組合せに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。
【0039】
ソースID401、ファイルID402、曜日403、及び時間帯404は、ソースID301、ファイルID302、曜日303、及び時間帯304と同一のフィールドである。偏差値405は、同一時間帯におけるアクセス元のファイルに対するアクセス傾向を評価するための重みの偏差値を格納するフィールドである。
【0040】
図5は、実施例1の第2キャッシュ制御情報153のデータ構造の一例を示す図である。
【0041】
第2キャッシュ制御情報153は、ソースID501、ファイルID502、日にち503、及び時間帯504を含むエントリ(第2アクセス傾向データ)を格納する。アクセス元、ファイル、日にち、及び時刻の組合せに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。
【0042】
ソースID501、ファイルID502、及び時間帯504は、ソースID301、ファイルID302、及び時間帯304と同一のフィールドである。日にち503は、アクセスが行われる日にちを格納するフィールドである。
【0043】
次に、制御部130のキャッシュ制御機能について説明する。
【0044】
制御部130は、ファイルへのアクセスを検知した場合、アクセス記録情報150に当該アクセスに関する履歴を追加する。日時203、時刻204、及び曜日205の値は、制御部130が管理する時間情報に基づいて設定される。
【0045】
図6は、実施例1の制御部130が実行するアクセス解析処理の一例を説明するフローチャートである。
図7は、実施例1の制御部130が実行する重み算出処理の一例を説明するフローチャートである。
【0046】
制御部130は、周期的に、アクセス解析処理を実行する。実行周期は、例えば、1ヶ月である。なお、実行周期は任意に設定できる。
【0047】
制御部130は、前回生成されたアクセス解析情報151をコピーし、また、アクセス記録情報150から1ヶ月分の履歴を読み出し、アクセス元のループ処理を開始する(ステップS101)。具体的には、制御部130は、取得した履歴に基づいて、アクセス元のリストを生成し、当該リストの中から一つのアクセス元を選択する。なお、前回生成されたアクセス解析情報151が存在しない場合、制御部130は、空のアクセス解析情報151を生成する。
【0048】
制御部130は、選択したアクセス元がアクセスしたファイルのループ処理を開始する(ステップS102)。具体的には、制御部130は、取得した履歴に基づいて、選択したアクセス元がアクセスしたファイルのリストを生成し、当該リストの中から一つのファイルを選択する。
【0049】
制御部130は、曜日のループ処理を開始する(ステップS103)。具体的には、制御部130は曜日を選択する。本実施例では、日曜から順に曜日が選択されるものとする。
【0050】
制御部130は、時間帯のループ処理を開始する(ステップS104)。具体的には、制御部130は、24時間を単位時間幅で分割し、時間帯を一つ選択する。本実施例では、「0:00」から順に時間帯が選択されるものとする。
【0051】
制御部130は、重み算出処理を実行する(ステップS105)。ここで、
図7を用いて重み算出処理について説明する。
【0052】
制御部130は、コピーしたアクセス解析情報151を参照し、選択したアクセス元、選択したファイル、及び選択した時間帯が一致するエントリが存在するか否かを判定する(ステップS201)。具体的には、制御部130は、ソースID301、ファイルID302、及び時間帯304の値の組合せが、選択したアクセス元、選択したファイル、及び選択した時間帯の組合せに一致するエントリを検索する。
【0053】
条件を満たすエントリが存在する場合、制御部130はステップS203に進む。
【0054】
条件を満たすエントリが存在しない場合、制御部130は、アクセス解析情報151にエントリを追加し(ステップS202)、その後、ステップS203に進む。このとき、制御部130は、追加されたエントリのソースID301、ファイルID302、曜日303、及び時間帯304に、選択したアクセス元、選択したファイル、選択した曜日、及び選択した時間帯の開始時刻を設定する。また、制御部130は、追加されたエントリの重み305に0を設定する。
【0055】
ステップS203では、制御部130は、選択した時間帯に、選択したアクセス元から選択したファイルへのアクセスがあったか否かを判定する(ステップS203)。具体的には、制御部130は、取得した履歴の中に、選択した時間帯の時刻に、選択したアクセス元から選択したファイルへのアクセスの履歴が存在するか否かを判定する。
【0056】
選択した時間帯に、選択したアクセス元から選択したファイルへのアクセスがない場合、制御部130は重み算出処理を終了する。
【0057】
選択した時間帯に、選択したアクセス元から選択したファイルへのアクセスがあった場合、制御部130は、エントリの重み305に重み「+1」を加算する(ステップS204)。
【0058】
本実施例では、アクセス頻度を評価するための指標として、アクセス回数ではなく、時間帯におけるアクセスの有無を表す重みの累計値を用いる。これによって、アクセス回数は少ないが定期的にアクセスがあるユーザデータをキャッシュ制御の対象として選択することができる。
【0059】
制御部130は、アクセス時の曜日が選択した曜日と一致するか否かを判定する(ステップS205)。
【0060】
アクセス時の曜日が選択した曜日と一致しない場合、制御部130は重み算出処理を終了する。
【0061】
アクセス時の曜日が選択した曜日と一致する場合、制御部130は、エントリの重み305に重み「+2」を加算し(ステップS206)、その後、重み算出処理を終了する。
【0062】
以上が重み算出処理の説明である。
図5の説明に戻る。
【0063】
制御部130は、全ての時間帯について処理が完了したか否かを判定する(ステップS106)。
【0064】
全ての時間帯について処理が完了していない場合、制御部130は、ステップS104に戻り、新たな時間帯を選択する。
【0065】
全ての時間帯について処理が完了した場合、制御部130は、全ての曜日について処理が完了したか否かを判定する(ステップS107)。
【0066】
全ての曜日について処理が完了していない場合、制御部130は、ステップS103に戻り、新たな曜日を選択する。
【0067】
全ての曜日について処理が完了した場合、制御部130は、選択したアクセス元がアクセスした全てのファイルについて処理が完了したか否かを判定する(ステップS108)。
【0068】
選択したアクセス元がアクセスした全てのファイルについて処理が完了していない場合、制御部130は、ステップS102に戻り、新たなファイルを選択する。
【0069】
選択したアクセス元がアクセスした全てのファイルについて処理が完了した場合、制御部130は、曜日のループ処理を開始する(ステップS109)。具体的には、制御部130は曜日を選択する。
【0070】
制御部130は、時間帯のループ処理を開始する(ステップS110)。具体的には、制御部130は時間帯を一つ選択する。
【0071】
制御部130は、選択したアクセス元について、選択した曜日及び選択した時間帯におけるファイルの重みの偏差値を算出する(ステップS111)。具体的には、以下のような処理が実行される。
【0072】
(S111-1)制御部130は、アクセス解析情報151から、ソースID301、曜日303、及び時間帯304の値の組合せが、選択したアクセス元、選択した曜日、及び選択した時間帯の開始時刻の組合せに一致するエントリを検索する。制御部130は、検索されたエントリの重み305の値を取得する。
【0073】
(S111-2)制御部130は重みの平均値を算出する。また、制御部130は、各ファイルの重みと平均値との差から分散値を算出する。さらに、制御部130は、分散値から標準偏差を算出する。各ファイルの重みをwi、平均値をAw、ファイルの数をx、分散値をd、標準偏差をΣとした場合、分散値dは式(1)で与えられ、標準偏差Σは式(2)で与えられる。
【0074】
【0075】
【0076】
(S111-3)制御部130は、各ファイルについて、ファイルの重み、平均値、及び標準偏差を、式(3)に代入し、重みの偏差値を算出する。
【0077】
【0078】
(S111-4)制御部130は、第1キャッシュ制御情報152に、ファイルの数だけエントリを追加する。制御部130は、各エントリのソースID401、曜日403、及び時間帯404に、選択したアクセス元、選択した曜日、及び選択した時間帯の開始時刻を設定する。また、制御部130は、各エントリのファイルID402に、ファイルの識別情報を設定し、各エントリの偏差値405にファイルの重みの偏差値を設定する。
【0079】
重みの偏差値を用いることによって、同一の曜日及び時間帯におけるファイルのアクセス頻度の大小を比較できる。また、重みの偏差値は、異なるアクセス元の間で比較可能な数値となっている。以上がステップS111の処理の説明である。
【0080】
制御部130は、全ての時間帯について処理が完了したか否かを判定する(ステップS112)。
【0081】
全ての時間帯について処理が完了していない場合、制御部130は、ステップS110に戻り、新たな時間帯を選択する。
【0082】
全ての時間帯について処理が完了した場合、制御部130は、全ての曜日について処理が完了したか否かを判定する(ステップS113)。
【0083】
全ての曜日について処理が完了していない場合、制御部130は、ステップS109に戻り、新たな曜日を選択する。
【0084】
全ての曜日について処理が完了した場合、制御部130は、全てのアクセス元について処理が完了したか否かを判定する(ステップS114)。
【0085】
全てのアクセス元について処理が完了していない場合、制御部130は、ステップS101に戻り、新たなアクセス元を選択する。
【0086】
全てのアクセス元について処理が完了した場合、制御部130は、第1キャッシュ制御情報152のソート処理を実行し(ステップS115)、その後、アクセス解析処理を終了する。具体的には、制御部130は、曜日順にエントリをソートし、次に、時間帯順にエントリをソートする。
【0087】
なお、本実施例では、制御部130は、前回生成されたアクセス解析情報151と1ヶ月分の履歴とを用いて新たなアクセス解析情報151を生成していたがこれに限定されない。例えば、制御部130は、4ヶ月分の履歴を読み出し、当該履歴を用いてアクセス解析情報151を生成してもよい。
【0088】
図8A及び
図8Bは、実施例1の制御部130が実行するアクセス元接続確認処理の一例を説明するフローチャートである。
【0089】
制御部130は、周期的に、アクセス元接続確認処理を実行する。実行周期は、例えば、1時間である。なお、実行周期は任意に設定できる。
【0090】
ログイン情報が取得できない場合、制御部130は、
図8Aのアクセス元接続確認処理を実行する。まず、制御部130は、アクセス元のループ処理を開始する(ステップS301)。具体的には、制御部130は、アクセス記録情報150から3ヶ月分の履歴を読み出し、取得した履歴に基づいて、アクセス元のリストを生成し、当該リストの中から一つのアクセス元を選択する。
【0091】
制御部130は、アクセス記録情報150に基づいて、現在から1時間以内に、選択したアクセス元からのアクセスがあったか否かを判定する(ステップS302)。なお、判定基準の時間範囲は1時間以外でもよい。
【0092】
現在から1時間以内に、選択したアクセス元からのアクセスがあった場合、制御部130は、選択したアクセス元のフェッチフラグをONに設定し(ステップS303)、ステップS305に進む。
【0093】
現在から1時間以内に、選択したアクセス元からのアクセスがなかった場合、制御部130は、選択したアクセス元のフェッチフラグをOFFに設定し(ステップS304)、ステップS305に進む。
【0094】
ステップS305では、制御部130は、全てのアクセス元について処理が完了したか否かを判定する(ステップS305)。
【0095】
全てのアクセス元について処理が完了していない場合、制御部130は、ステップS301に戻り、新たなアクセス元を選択する。
【0096】
全てのアクセス元について処理が完了した場合、制御部130はアクセス元接続確認処理を終了する。
【0097】
ログイン情報を取得できる場合、制御部130は、
図8Bのアクセス元接続確認処理を実行する。まず、制御部130は、アクセス元のループ処理を開始する(ステップS351)。ステップS351の処理はステップS301の処理と同一である。
【0098】
制御部130は、アクセス記録情報150に基づいて、現在ログイン中であるか否かを判定する(ステップS352)。
【0099】
ログイン中である場合、制御部130は、選択したアクセス元のフェッチフラグをONに設定し(ステップS353)、ステップS355に進む。
【0100】
ログイン中でない場合、制御部130は、選択したアクセス元のフェッチフラグをOFFに設定し(ステップS354)、ステップS355に進む。
【0101】
ステップS355では、制御部130は、全てのアクセス元について処理が完了したか否かを判定する(ステップS355)。
【0102】
全てのアクセス元について処理が完了していない場合、制御部130は、ステップS351に戻り、新たなアクセス元を選択する。
【0103】
全てのアクセス元について処理が完了した場合、制御部130はアクセス元接続確認処理を終了する。
【0104】
図9は、実施例1の制御部130が実行するキャッシュ制御処理の一例を説明するフローチャートである。
【0105】
制御部130は、周期的に、キャッシュ制御処理を実行する。実行周期は、例えば、10分である。なお、実行周期は任意に設定できる。
【0106】
制御部130は、制御対象ファイルを特定する(ステップS401)。具体的には、制御部130は、第1キャッシュ制御情報152から、曜日403に現在の曜日が格納され、かつ、時間帯404に現時刻が属する時間帯より一つ先の時間帯の開始時刻が格納されるエントリを読み出す。
【0107】
制御部130は、偏差値及びフェッチフラグに基づいて、フェッチ対象ファイルを決定する(ステップS402)。具体的には、制御部130は、偏差値405の値が第1閾値より大きいエントリを選択する。ただし、制御部130は、ソースID401にフェッチフラグがOFFになっているアクセス元の識別情報が格納されるエントリは除外する。なお、第1閾値は任意に設定できる。
【0108】
制御部130は、偏差値及びフェッチフラグに基づいて、追い出し対象ファイルを決定する(ステップS403)。具体的には、制御部130は、ソースID401にフェッチフラグがOFFになっているアクセス元が設定されているエントリを選択する。また、制御部130は、偏差値405の値が第2閾値より小さいエントリを選択する。なお、第2閾値は任意に設定できる。
【0109】
制御部130は、キャッシュ領域140から追い出し対象ファイルを追い出し(ステップS404)、キャッシュ領域140にフェッチ対象ファイルをフェッチする(ステップS405)。その後、制御部130はキャッシュ制御処理を終了する。
【0110】
なお、キャッシュ領域140に全てのフェッチ対象ファイルをフェッチできない場合、制御部130は、偏差値の大きい順に所定数のファイルを選択し、選択したファイルをフェッチする。また、制御部130は、LRU等の既存の技術を用いて、キャッシュ領域140からファイルを追い出し、フェッチ対象ファイルをフェッチしてもよい。
【0111】
実施例1では、コントローラ110がキャッシュ制御に関わる全ての処理を実行しているが、以下のような変形例も考えられる。ストレージ装置100とは別に制御装置を設けて、制御装置がアクセス解析処理を実行し、第1キャッシュ制御情報152をストレージ装置100に送信する。この場合、アクセス解析情報151は、制御装置が保持することになる。
【0112】
以上のように、実施例1のストレージ装置100は、任意の曜日及び時間帯におけるユーザデータのアクセス傾向に基づいてキャッシュ制御を行うことができる。これによって、ユーザデータを用いた処理の性能を向上させることができる。
【0113】
ストレージ装置100は、周期的にアクセス傾向の解析を行うことによって、現在のアクセス傾向に沿ったキャッシュ制御を行うことができる。これによって、継続的に安定した処理性能を確保することができる。
【0114】
ストレージ装置100は、特定のユーザデータを常駐させるわけではないため、キャッシュ領域140を有効に活用できる。
【0115】
なお、本制御方式は、ストレージ装置100以外の一般的な計算機にも適用することができる。
ステップS101からステップS115までの処理は実施例1で説明した通りである。ステップS115の後に、制御部130は、アクセス記録情報150から2ヶ月分の履歴を読み出し、アクセス元のループ処理を開始する(ステップS116)。具体的には、制御部130は、取得した履歴に基づいて、アクセス元のリストを生成し、当該リストの中から一つのアクセス元を選択する。なお、読み出す履歴の範囲は2ヶ月以外でもよい。
制御部130は、選択したアクセス元がアクセスしたファイルのループ処理を開始する(ステップS117)。具体的には、制御部130は、取得した履歴に基づいて、選択したアクセス元がアクセスしたファイルのリストを生成し、当該リストの中から一つのファイルを選択する。
制御部130は、日にちのループ処理を開始する(ステップS118)。具体的には、制御部130は日にちを選択する。本実施例では、1日から順に31日までの日にちが選択される。
制御部130は、時間帯のループ処理を開始する(ステップS119)。具体的には、制御部130は、24時間を単位時間幅で分割し、時間帯を一つ選択する。本実施例では、「0:00」から順に時間帯が選択されるものとする。
制御部130は、取得した履歴に基づいて、選択した日にち及び選択した時間帯に、選択したアクセス元から選択したファイルに周期的にアクセスが行われているか否かを判定する(ステップS120)。例えば、毎月、同一時間帯に2回以上アクセスがされている場合、制御部130は、選択した日にち及び選択した時間帯に、選択したアクセス元から選択したファイルに周期的にアクセスが行われている、と判定する。
周期的なアクセスが行われている場合、制御部130は、第2キャッシュ制御情報153にエントリを追加し(ステップS121)、その後、ステップS122に進む。このとき、制御部130は、追加されたエントリのソースID501、ファイルID502、日にち503、及び時間帯504に、選択したアクセス元、選択したファイル、選択した日にち、及び選択した時間帯の開始時刻を設定する。
全ての日にちについて処理が完了した場合、制御部130は、選択したアクセス元がアクセスした全てのファイルについて処理が完了したか否かを判定する(ステップS124)。
選択したアクセス元がアクセスした全てのファイルについて処理が完了した場合、制御部130は、全てのアクセス元について処理が完了したか否かを判定する(ステップS125)。
ステップS401において、制御部130は、第1キャッシュ制御情報152から、曜日403に現在の曜日が格納され、かつ、時間帯404に現時刻が属する時間帯より一つ先の時間帯の開始時刻が格納されるエントリを読み出す。また、制御部130は、第2キャッシュ制御情報153から、日にち503に現在の日にちが格納され、かつ、時間帯504に現時刻が属する時間帯より一つ先の時間帯の開始時刻が格納されるエントリを読み出す。
ステップS402において、制御部130は、偏差値405の値が第1閾値より大きいエントリを選択する。ただし、制御部130は、ソースID401にフェッチフラグがOFFになっているアクセス元の識別情報が格納されるエントリは除外する。制御部130は、第2キャッシュ制御情報153から読み出されたエントリを選択する。ただし、制御部130は、ソースID501にフェッチフラグがOFFになっているアクセス元の識別情報が格納されるエントリは除外する。
なお、キャッシュ領域140に全てのフェッチ対象ファイルをフェッチできない場合、制御部130は、第2キャッシュ制御情報153に基づいて特定されたファイルをフェッチした後、偏差値の大きい順に所定数のファイルを選択し、選択したファイルをフェッチする。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、置換をすることが可能である。