(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-24
(45)【発行日】2024-10-02
(54)【発明の名称】記録媒体管理装置、記録媒体管理方法、およびプログラム
(51)【国際特許分類】
G06F 3/06 20060101AFI20240925BHJP
【FI】
G06F3/06 301W
G06F3/06 301J
(21)【出願番号】P 2020141352
(22)【出願日】2020-08-25
【審査請求日】2023-07-14
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100109313
【氏名又は名称】机 昌彦
(74)【代理人】
【識別番号】100149618
【氏名又は名称】北嶋 啓至
(72)【発明者】
【氏名】顧 佳駿
【審査官】田中 啓介
(56)【参考文献】
【文献】特開2019-057172(JP,A)
【文献】特開2001-034487(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/06-3/08
G06F12/00-12/06
G06F13/10-13/18
(57)【特許請求の範囲】
【請求項1】
記録媒体に保存された同一の実データがいくつの仮想ボリュームによって参照されているかを示す重複度を計算する重複度計算手段と、
前記重複度に応じた前記記録媒体の一領域内に前記実データを格納する格納手段と、
前記記録媒体の領域のうち、いずれの仮想ボリュームによっても参照されない実データのみが格納された特定の領域を解放する領域開放手段と
を備え、
前記記録媒体の領域は階層構造を形成しており、
1つの仮想ボリュームから仮想データが消去されたとき、
前記重複度計算手段は、消去された前記仮想データと対応する実データについての重複度を1低下させ、
前記格納手段は、前記重複度の変化に応じて、消去された前記仮想データと対応する実データを、前記記録媒体の前記一領域から1つ下の階層の領域へ移動させる
記録媒体管理装置。
【請求項2】
前記領域開放手段は、前記記録媒体における前記特定の領域に格納された前記実データを消去し、前記特定の領域から空きブロックを削除する
ことを特徴とする請求項1に記載の記録媒体管理装置。
【請求項3】
前記領域開放手段は、前記記録媒体における前記特定の領域に格納された前記実データを消去し、前記特定の領域を少なくとも含む2つ以上の領域から空きブロックを削除する
ことを特徴とする請求項1に記載の記録媒体管理装置。
【請求項4】
前記領域開放手段は、前記記録媒体における前記特定の領域に格納された前記実データを消去し、前記特定の領域を少なくとも含む2つ以上の領域のうち、より小さい前記重複度と対応する領域から順に、予め決められた設定値以上の数の空きブロックを削除する
ことを特徴とする請求項1に記載の記録媒体管理装置。
【請求項5】
前記仮想ボリュームに格納された仮想データに対するアクセスの履歴に基づいて、前記実データが前記仮想ボリュームによって参照されない時間帯を推定する推定手段をさらに備え、
前記格納手段は、前記仮想データがアクセスされないと推定された前記時間帯に、前記重複度に応じた前記記録媒体の前記一領域内に前記実データを格納する
ことを特徴とする請求項1から4のいずれか1項に記載の記録媒体管理装置。
【請求項6】
コンピュータが、
記録媒体に保存された同一の実データがいくつの仮想ボリュームによって参照されているかを示す重複度を計算し、
前記重複度に応じた前記記録媒体の一領域内に前記実データを格納し、
前記記録媒体の領域のうち、いずれの仮想ボリュームによっても参照されない実データのみが格納された特定の領域を解放する記録媒体管理方法であって、
前記記録媒体の領域は階層構造を形成しており、
1つの仮想ボリュームから仮想データが消去されたとき、
消去された前記仮想データと対応する実データについての重複度を1低下させ、
前記重複度の変化に応じて、消去された前記仮想データと対応する実データを、前記記録媒体の前記一領域から1つ下の階層の領域へ移動させる
記録媒体管理方法。
【請求項7】
記録媒体に保存された同一の実データがいくつの仮想ボリュームによって参照されているかを示す重複度を計算する処理と、
前記重複度に応じた前記記録媒体の一領域内に前記実データを格納する処理と、
前記記録媒体の領域のうち、いずれの仮想ボリュームによっても参照されない実データのみが格納された特定の領域を解放する処理と、をコンピュータに実行させるためのプログラムであって、
前記記録媒体の領域は階層構造を形成しており、
1つの仮想ボリュームから仮想データが消去されたとき、
消去された前記仮想データと対応する実データについての重複度を1低下させる処理と、
前記重複度の変化に応じて、消去された前記仮想データと対応する実データを、前記記録媒体の前記一領域から1つ下の階層の領域へ移動させる処理と、
を
前記コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記録媒体管理装置、記録媒体管理方法、およびプログラムに関し、特に、記録媒体に保存されたデータを管理する記録媒体管理装置、記録媒体管理方法、およびプログラムに関する。
【背景技術】
【0002】
関連する技術では、メモリやストレージなどの記録媒体に割り当てられた物理ボリュームを仮想化することによって、仮想ボリュームを生成する。ユーザは、仮想ボリュームに格納されたデータ(ここでは仮想データと呼ぶ)にアクセスすることができるが、物理ボリュームはユーザから隠蔽される。物理ボリュームには、仮想ボリュームに格納された仮想データと対応するデータ(ここでは実データと呼ぶ)が格納される。ユーザが仮想データにアクセスすると、物理ボリュームに格納された実データが、仮想ボリュームにより参照される。
【0003】
仮想ボリュームの数は、自由に増減することが可能である。また、仮想ボリュームの容量は、物理ボリュームの容量によって制限されない。例えば、仮想ボリュームの領域に格納された仮想データのデータ量に応じて、その仮想ボリュームに割り当てる物理ボリュームの領域を柔軟に増減させることで、記録媒体の領域を効率的に使用することができる。
【0004】
仮想ボリュームから仮想データが消去された結果、いずれの仮想ボリュームからも参照されない実データが生じる場合がある。このようなごみデータ(ガベージ)が物理ボリュームの領域中に残っていることで、メモリリソースが無駄になる。特許文献1に記載の関連する技術では、物理ボリュームの領域から、いずれの仮想ボリュームからも参照されていない実データを探索し、削除する。このようにして、物理ボリュームの領域に空きブロック(実データの含まれないディスク区画)を生成することで、メモリリソースを回復することは、領域開放と呼ばれる。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2019-159605号公報
【文献】特開2019-179571号公報
【文献】特表2012-512462号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1に記載の関連する技術では、物理ボリュームが大きいほど、消去の対象であるごみデータを発見するには時間かかる。また、ごみデータの探索中は、物理ボリュームの全体がスキャンされることから、ユーザの業務に影響が出る可能性もある。
【0007】
本発明は、上記の課題に鑑みてなされたものであり、その目的は、記録媒体に割り当てられた物理ボリュームの領域を効率的に利用可能にすることにある。
【課題を解決するための手段】
【0008】
本発明の一態様に係わる記録媒体管理装置は、記録媒体に保存された同一の実データがいくつの仮想ボリュームによって参照されているかを示す重複度を計算する重複度計算手段と、前記重複度に応じた前記記録媒体の一領域内に前記実データを格納する格納手段と、前記記録媒体の領域のうち、いずれの仮想ボリュームによっても参照されない実データのみが格納された特定の領域を解放する領域開放手段とを備えている。
【0009】
本発明の一態様に係わる記録媒体管理方法は、記録媒体に保存された同一の実データがいくつの仮想ボリュームによって参照されているかを示す重複度を計算し、前記重複度に応じた領域内に前記実データを格納し、前記記録媒体の領域のうち、いずれの仮想ボリュームによっても参照されない実データのみが格納された特定の領域を解放する。
【0010】
本発明の一態様に係わるプログラムは、記録媒体に保存された同一の実データがいくつの仮想ボリュームによって参照されているかを示す重複度を計算する処理と、前記重複度に応じた領域内に前記実データを格納する処理と、前記記録媒体の領域のうち、いずれの仮想ボリュームによっても参照されない実データのみが格納された特定の領域を解放する処理とをコンピュータに実行させる。
【発明の効果】
【0011】
本発明の一態様によれば、記録媒体に割り当てられた物理ボリュームの領域を効率的に利用可能にすることができる。
【図面の簡単な説明】
【0012】
【
図1】全ての実施形態に共通するシステムの構成を概略的に示す。
【
図2】実施形態1に係わる記録媒体管理装置の構成を示すブロック図である。
【
図3】実施形態1に係わる記録媒体管理装置の動作を示すフローチャートである。
【
図4】複数の仮想ボリュームと、仮想ボリュームによって参照される実データが格納されたボリュームユニットとの間の対応関係の第1の例を示す図である。
【
図5】
図4に示す一例において、仮想ボリュームから仮想データが消去されたとき、複数の仮想ボリュームと、仮想ボリュームによって参照される実データが格納されたボリュームユニットとの間の対応関係の第2の例を示す図である。
【
図6】実施形態2に係わる記録媒体管理装置が実行する領域開放処理の流れを示すフローチャートである。
【
図7】
図5に示す例において、第0ボリュームユニットから実データが消去されたとき、複数の仮想ボリュームと、仮想ボリュームによって参照される実データが格納されたボリュームユニットとの間の対応関係の第3の例を示す図である。
【
図8】
図7に示す例において、第0ボリュームユニットから空きブロックが削除されたとき、複数の仮想ボリュームと、仮想ボリュームによって参照される実データが格納されたボリュームユニットとの間の対応関係の第4の例を示す図である。
【
図9】実施形態3に係わる記録媒体管理装置の動作を示すフローチャートである。
【
図10】実施形態4に係わる記録媒体管理装置の動作を示すフローチャートである。
【
図11】実施形態5に係わる記録媒体管理装置の動作を示すフローチャートである。
【
図12】実施形態6に係わる記録媒体管理装置の構成を示すブロック図である。
【
図13】実施形態6に係わる記録媒体管理装置の推定部がアクセス時間記録データから生成されるメタデータの一例を示す。
【
図14】実施形態1から6のいずれかに係わる記録媒体管理装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【0013】
図1を参照して、後述する全ての実施形態に共通するシステムについて、説明する。
【0014】
(システム1)
図1は、システム1の構成を概略的に示す図である。
図1に示すように、システム1は、記録媒体管理装置10または20、ストレージ100(記録媒体の一例)、および複数の仮想ボリューム200を備えている。記録媒体管理装置10については、実施形態1で、また、記録媒体管理装置20については、実施形態6で、それぞれ説明する。以下では、記録媒体管理装置10または20のことを、「記録媒体管理装置10(20)」と記載する。
【0015】
記録媒体管理装置10(20)は、記録媒体100に物理ボリューム110を割り当てる。言い換えれば、記録媒体管理装置10(20)は、記録媒体100の物理ボリューム110を生成する。記録媒体管理装置10(20)は、記録媒体100に保存されたデータ(実データと呼ぶ)を管理する。
【0016】
また、記録媒体管理装置10(20)は、物理ボリューム110から空きブロックを削除する機能、いわゆるガベージコレクション機能を有する。記録媒体管理装置10(20)の構成及び動作については、後述する実施形態1以降において説明する。
【0017】
物理ボリューム110は、記録媒体100が有する記憶領域を概念的に示す。物理ボリューム110は、複数の記録媒体100が有する記憶領域の論理的な集合であってもよい。物理ボリューム110は、図示しないが、データを格納するための1つ以上のブロックで構成されている。ブロックは、実データを格納するための容量の最小単位である。物理ボリューム110において、ブロックの間はパーティションによって区分けられている。そのため、ブロックは、ディスク区画とも呼ばれる。ブロックの具体例を実施形態1以降で示す。
【0018】
図1に示すように、物理ボリューム110は、複数のボリュームユニットで構成されている。N+1個のボリュームユニットは、第0から第NまでのN+1段の階層構造となっている。なお、別の視点では、各ボリュームユニットが1つの物理ボリュームであるということもできる。この視点では、符号110はいわゆるボリュームグループを示すともいえる。
【0019】
複数の仮想ボリューム200は、記録媒体100に割り当てられた物理ボリューム110を仮想化したものである。
図1には、第1から第MまでのM個の仮想ボリューム200が示されている。しかしながら、仮想ボリューム200の数は、1以上であればよい。また、仮想ボリューム200の数は、自由に増減することが可能である。仮想ボリューム200の数(M個)と、物理ボリューム110の数とは無関係である。一方、仮想ボリューム200の数(M個)と、物理ボリューム110が備えたボリュームユニットの数(N+1個)との間には、M=Nの関係がある。
【0020】
それぞれの仮想ボリューム200は、図示しない仮想ボリューム制御装置により、管理および制御される。あたかも仮想ボリューム200が実在するかのように、ユーザは、仮想ボリューム200の領域に、仮想的にデータ(仮想データと呼ぶ)を書き込んだり、あるいは読み出したりすることができる。実際には、仮想ボリューム200の領域に仮想データが格納されたとき、対応する実データが、物理ボリューム110の領域に格納される。ユーザが、仮想ボリューム200の領域に格納された仮想データにアクセスしたとき、物理ボリューム110に格納された、仮想データと対応する実データが、仮想ボリューム制御装置に渡される。これを、実データが仮想ボリューム200により参照されるという。
【0021】
(実データの重複度とボリュームユニットの階層構造)
ここでは、実データが物理ボリューム110の領域に格納されると説明した。より詳細には、実データは、重複度に応じて、物理ボリューム110のいずれかのボリュームユニットに格納される。重複度とは、物理ボリューム110のあるボリュームユニットに格納された実データが、いくつの仮想ボリューム200によって参照されているかを示す指標である。物理ボリューム110は、後述の重複度と対応する階層構造を有する。階層構造の段数(
図1ではN+1)は、重複度の最大値(M)に応じて、柔軟に変化可能である。この点については、続く実施形態1以降で詳細に説明する。
【0022】
〔実施形態1〕
図2~
図8を参照して、実施形態1について説明する。
【0023】
(記録媒体管理装置10)
図2は、本実施形態1に係わる記録媒体管理装置10の構成を示すブロック図である。
図2に示すように、記録媒体管理装置10は、重複度計算部11、格納部12、および領域開放部13を備えている。
【0024】
重複度計算部11は、記録媒体に保存された同一の実データがいくつの仮想ボリューム200によって参照されているかを示す重複度を計算する。重複度計算部11は、重複度計算手段の一例である。
【0025】
一例では、重複度計算部11は、物理ボリューム110に格納された実データについて、重複度を管理する。上述したように、重複度は、物理ボリューム110のあるボリュームユニットに格納された実データが、いくつの仮想ボリューム200によって参照されているかを示す指標である。
【0026】
一例では、仮想ボリューム200に仮想データが格納されたとき、重複度計算部11は、仮想ボリューム200(
図1)を管理する仮想ボリューム制御装置から、通知を受けとる。このとき、重複度計算部11は、格納された仮想データと対応する実データ(すなわち、仮想ボリューム200によって参照される実データ)の重複度を増加(+1)する。
【0027】
また、他の一例では、仮想ボリューム200から仮想データが消去されたときに、重複度計算部11は、仮想ボリューム200(
図1)を管理する仮想ボリューム制御装置から、通知を受けとる。このとき、重複度計算部11は、消去された仮想データと対応する実データ(すなわち、仮想ボリューム200によって参照される実データ)の重複度を減少(-1)する。結果、実データの重複度は0になる場合もある。すなわち、実データはいずれの仮想ボリューム200によっても参照されなくなる可能性がある。
【0028】
物理ボリューム110に格納された実データの重複度が変化(増加または減少)したことを、重複度計算部11は、格納部12に通知する。
【0029】
格納部12は、重複度に応じた記録媒体の一領域内に実データを格納する。格納部12は、格納手段の一例である。
【0030】
一例では、格納部12は、重複度計算部11から、物理ボリューム110に格納された実データの重複度が変化(増加または減少)したことの通知を受け取る。このとき、格納部12は、変化後の重複度に応じて、実データの格納先を変更する。具体的には、第1の例では、実データの重複度が増加(+1)したとき、格納部12は、物理ボリューム110の複数のボリュームユニットが形成するN+1段の階層構造の中で、実データの格納先を1つ上の階層に移動させる。
【0031】
すなわち、第n(n=1~N)ボリュームユニットに格納されていた実データを、第n+1ボリュームユニットに移動させる。なお、格納部12は、最上位の階層すなわち第Nボリュームユニットに格納されていた実データを1つ上の階層に移動させる場合、物理ボリューム110に第N+1ボリュームユニットを追加したのち、実データを、第nボリュームユニットから、第n+1ボリュームユニットに移動させる。
【0032】
第2の例では、実データの重複度が減少(-1)したとき、格納部12は、物理ボリューム110の複数のボリュームユニットが形成する階層構造の中で、実データの格納先を1つ下の階層に移動させる。すなわち、第n(=1~N)ボリュームユニットに格納されていた実データを、第n-1ボリュームユニットに移動させる。この移動により、第0ボリュームユニットには、重複度が0の実データが格納される。
【0033】
一例では、格納部12は、少なくとも第0ボリュームユニットのブロック数を示す情報を、領域開放部13に出力する。あるいは、格納部12は、第0から第n(nは1~Nの整数)ボリュームユニットのそれぞれのブロック数を示す情報を、領域開放部13に出力してもよい。ブロックとは、記憶領域の最小単位である。ブロック数とは、第0ボリュームユニット(あるいは他のボリュームユニット)が有するブロックの数を表す。以下では、格納部12が領域開放部13に出力する上記の情報を、ブロック数情報と呼ぶ。
【0034】
領域開放部13は、いずれの仮想ボリューム200によっても参照されない実データのみが格納された特定の領域を解放する。領域開放部13は、領域開放手段の一例である。
【0035】
一例では、領域開放部13は、格納部12から、ブロック数情報を受信する。領域開放部13は、ブロック数情報に基づいて、第0ボリュームユニットが有するブロック数を特定する。そして、第0ボリュームユニットが1以上のブロックを有する場合、領域開放部13は、領域開放処理を実行する。
【0036】
具体的には、領域開放処理において、領域開放部13は、第0ボリュームユニットの各ブロックから、実データを全て消去する。こうして、第0ボリュームユニットには、1つ以上の空きブロック(すなわち実データが格納されていないブロック)が生じる。次に、領域開放部13は、第0ボリュームユニットの空きブロックを削除する。結果、第0ボリュームユニットの領域が開放される。すなわち、ここでの領域開放とは、ボリュームユニットの空きブロック領域を削除することで、物理ボリューム110のいずれのボリュームユニットによっても確保されていない記憶領域を生成することを意味する。
【0037】
他の一例では、領域開放部13は、第1から第n(nは1~Nの整数)ボリュームユニットについて、それぞれ、空きブロックの有無を検査(スキャンと呼ぶ場合もある)する。次に、領域開放部13は、第0から第n(nは1~Nの整数)ボリュームユニットのうち、空きブロックがあるボリュームユニットについて、それぞれ、上述のブロック数情報に基づいて、領域開放処理を実行する。これにより、第0ボリュームユニットのみに対して領域開放処理を行う場合と比較して、同等あるいはより大きい領域を開放することができる。具体的には、第0ボリュームユニットに加えて、第1~第nのうち少なくとも1つのボリュームユニットにも空きブロックがあれば、それらの空きブロックを削除することで、第0ボリュームユニットの空きブロックのみを削除する場合と比較して、より大きい領域を開放することができる。
【0038】
(変形例)
一変形例では、格納部12は、物理ボリューム110におけるどの階層(すなわち何番のボリュームユニット)に、いくつの実データブロックが格納されているかを示す情報を、領域開放部13に出力する。ここで、実データブロックとは、実データの測定量の最小単位である。なお、物理ボリューム110のボリュームユニットが、いくつかのブロックに区分されていてもよい。この場合、格納部12は、ボリュームユニットのそれぞれのブロックに、いくつの実データブロックが格納されているかを示す情報も、領域開放部13に出力する。以下では、格納部12が領域開放部13に出力する上記の情報を、物理ボリューム利用情報と呼ぶ。
【0039】
本変形例において、領域開放部13は、物理ボリューム利用情報に基づいて、各ボリュームユニットから空きブロックを特定し、上述した領域開放処理によって、特定した空きブロックを削除することができる。
【0040】
(記録媒体管理装置10の動作)
図3~
図5を参照して、本実施形態1に係わる記録媒体管理装置10の動作の一例を説明する。ここでは、システム1には、3つの仮想ボリューム200と、4(=3+1)個のボリュームユニットとがある場合について説明する。
【0041】
図3は、本実施形態1に係わる記録媒体管理装置10の各部が実行する処理の流れを示すフローチャートである。
【0042】
図4は、記録媒体管理装置10の各部による処理が行われる前の、3つの仮想ボリューム200と、物理ボリューム110の4つのボリュームユニットとの一例を示す。ここでは、
図4に示す3つの仮想データ5222、5211、5212、および、2つの実データ5121、5122に着目する。
【0043】
図4に示す例では、第2の仮想ボリューム200-2の領域に格納された仮想データ5222、および第1の仮想ボリューム200-1の領域に格納された仮想データ5212は、同一の実データ5122と対応しており、第1の仮想ボリューム200-1に格納された1つの仮想データ5211は、他の一つの実データ5121と対応している。すなわち、第2ボリュームユニットの領域に格納された実データ5122は、第1の仮想ボリューム200-1、および第2の仮想ボリューム200-2によって参照されている(重複度:2)。一方、第1ボリュームユニットの領域に格納された実データ5121は、第1の仮想ボリューム200-1のみによって参照されている(重複度:1)。
【0044】
図3に示すように、まず、重複度計算部11は、物理ボリューム110の各ボリュームブロックに格納された実データの重複度を計算する(S101)。具体的には、重複度計算部11は、同一の実データを参照する仮想ボリューム200の数をカウントし、その総数を重複度とする。
【0045】
次に、重複度計算部11は、計算した重複度に基づいて、実データの重複度における変化の有無を判定する(S102)。
【0046】
実データの重複度に変化がない(S102でNo)、記録媒体管理装置10の動作のフローはステップS101に戻る。
【0047】
ここでは、ステップS102の前に、
図4の例に示す第1の仮想ボリューム200-1の領域に格納された仮想データ5211、5212が消去されたとする。
【0048】
この場合、格納部12は、第1から第3ボリュームユニットをスキャンすることによって、仮想データ5211と対応する実データ5121を第1ボリュームユニットから検出する。また、格納部12は、仮想データ5212と対応する実データ5122を第2ボリュームユニットから検出する。
【0049】
実データの重複度が変化した場合(S102でYes)、続いて、格納部12は、実データの移動先に空きブロックがあるか否かを判定する(S103)。
図4に示す例では、実データ5121の移動先は第0ボリュームユニットであり、実データ5122の移動先は第1ボリュームユニットである。
【0050】
なお、ステップS103において、完全に空のブロックが第0ボリュームユニットにない場合であっても、少なくとも移動する実データのデータブロックを格納可能な余裕領域が第0ボリュームユニットに存在する場合、格納部12は、移動先に空きブロックがあると判定する。
【0051】
実データの移動先に空きブロックがある場合(S103でYes)、フローはステップS105に進む。一方、実データの移動先に空きブロックがない場合(S103でNo)、格納部12は、実データの移動先のボリュームユニットにブロックを追加する(S104)。
【0052】
その後、格納部12は、実データをボリュームユニット間で移動させる(S105)。
【0053】
図5は、
図4に示す例において、第1の仮想ボリューム200-1の領域から、仮想データ5211、5212が消去された場合、ステップS105において、実データ5122、5121が、ボリュームユニット間でどのように移動されるのかを示す。
図5に示すように、実データ5121は、第1ボリュームユニットから第0ボリュームユニットへ移動し、実データ5122は、第2ボリュームユニットから第1ボリュームユニットへ移動する。
【0054】
図3に示すように、ステップS105の後、領域開放部13は、領域開放処理を行う(S106)。領域開放処理において、領域開放部13は、いずれの仮想ボリューム200によっても参照されない実データのみが格納された第0ボリュームユニットを解放する。その後、フローは、ステップS101に戻る。領域開放処理のいくつかの例を、この後、および、後述するいくつかの実施形態において説明する。
【0055】
(領域開放処理の一例)
図6から
図8を参照して、上述した領域開放処理の一例を説明する。
【0056】
本実施形態1では、領域開放処理の一例として、領域開放部13が、第0ボリュームユニットの領域のみを開放する場合を説明する。上述したとおり、第0ボリュームユニットには、いずれの仮想ボリューム200からも参照されていない実データが格納されている。第0ボリュームユニットは、特定の領域の一例である。
【0057】
図6は、
図3のステップS106に示す領域開放処理の流れの一例を示すフローチャートである。
【0058】
図6に示すように、まず、領域開放部13は、第0ボリュームユニットから実データを消去する(S31)。
【0059】
図7は、
図5に示す例において、第0ボリュームユニットに実データ5121が格納されていた場合、ステップS31において、実データ5121が消去された後の変化を示す。
図7に示すように、第0ボリュームユニットから実データ5121が消去された結果、第0ボリュームユニットには、1つの空きブロックが形成される。
【0060】
次に、領域開放部13は、第0ボリュームユニットの空きブロックを削除する(S32)。
【0061】
図8は、
図7に示す例において、第0ボリュームユニットに1つの空きブロックが存在していた場合、ステップS32において、その空きブロックが削除された後の変化を示す。
図8に示すように、第0ボリュームユニットには、1つのブロックも残っていない。第0ボリュームユニットから削除された空きブロックと対応する記憶領域は、のちに実データを格納するために再利用することができる。
【0062】
以上で、領域開放処理は終了する。続いて、ここで説明した領域開放処理が、どのような効果を奏するのかについて説明する。
【0063】
図1に示すシステム1において、物理ボリューム110の第0ボリュームユニットには、いずれの仮想ボリュによっても参照されていない実データのみが格納されている。そのため、第0ボリュームユニットに格納されている実データを削除したとしても、仮想ボリューム200が参照している実データが失われることはない。そのため、空きブロックがない場合に、第0ボリュームユニットを領域開放することによって、仮想ボリューム200に影響を与えることなしに、容易かつ即時に空きブロックを作成することができる。
【0064】
(本実施形態の効果)
本実施形態の構成によれば、重複度計算部11は、記録媒体に保存された同一の実データがいくつの仮想ボリューム200によって参照されているかを示す重複度を計算する。格納部12は、重複度に応じた記録媒体100の一領域内に実データを格納する。領域開放部13は、いずれの仮想ボリューム200によっても参照されない実データのみが格納された特定の領域を解放する。
【0065】
領域開放処理により、特定の領域が開放される。これにより、解放された領域を再利用できるので、記録媒体に割り当てられた物理ボリューム110の領域を効率的に利用可能にすることができる。
【0066】
〔実施形態2〕
本実施形態2では、前記実施形態1で説明した例とは異なる領域開放処理の一例を説明する。
【0067】
本実施形態2では、領域開放部13は、記録媒体100における特定の領域に格納された実データを消去し、特定の領域を少なくとも含む2つ以上の領域から空きブロックを削除する。具体的には、特定の領域は、第0ボリュームユニットである。2つ以上の領域とは、
図1に示す物理ボリューム110の第0~第N(Nは1以上の整数)ボリュームユニットである。
【0068】
(領域開放処理の一例)
図9を参照して、上述した領域開放処理の一例を説明する。
【0069】
図9に示すように、まず、領域開放部13は、第0ボリュームユニット(
図1)から実データを削除する(S51)。
【0070】
つぎに、領域開放部13は、第1~第Nボリュームユニットをスキャンする(S52)。すなわち、領域開放部13は、物理ボリューム110の各ブロックに格納された実データの有無を検査する。なお、領域開放部13は、第1~第Nボリュームユニットの全てをスキャンしなくてもよい。例えば、本実施形態2に係わる領域開放処理の一変形例では、領域開放部13は、ステップS32において、第1~第n´(1<n´<N)ボリュームユニットのみをスキャンする。本変形例については、実施形態5で詳細に説明する。
【0071】
その後、領域開放部13は、第0~第Nボリュームユニットの空きブロックを削除する(S53)。
【0072】
以上で、領域開放処理は終了する。
【0073】
(本実施形態の効果)
本実施形態の構成によれば、重複度計算部11は、記録媒体に保存された同一の実データがいくつの仮想ボリューム200によって参照されているかを示す重複度を計算する。格納部12は、重複度に応じた記録媒体100の一領域内に実データを格納する。領域開放部13は、いずれの仮想ボリューム200によっても参照されない実データのみが格納された特定の領域を解放する。
【0074】
領域開放処理により、特定の領域が開放される。これにより、解放された領域を再利用できるので、記録媒体に割り当てられた物理ボリューム110の領域を効率的に利用可能にすることができる。
【0075】
さらに、本実施形態の構成によれば、領域開放部13は、記録媒体100における特定の領域に格納された実データを消去し、特定の領域を少なくとも含む2つ以上の領域から空きブロックを削除する。
【0076】
これにより、特定の領域(一例では第0ボリュームユニット)のみから空きブロックを削除する構成と比較して、より大きい領域を解放することができる。
【0077】
〔実施形態3〕
本実施形態3では、前記実施形態1~2で説明した例とは異なる領域開放処理の一例を説明する。
【0078】
本実施形態3では、領域開放部13は、記録媒体100における特定の領域に格納された実データを消去し、特定の領域を少なくとも含む2つ以上の領域のうち、より小さい重複度と対応する領域から順に、予め決められた設定値以上の数の空きブロックを削除する。具体的には、特定の領域は、第0ボリュームユニットである。一例では、2つ以上の領域とは、
図1に示す物理ボリューム110の第0~第N(Nは1以上の整数)ボリュームユニットである。
【0079】
(領域開放処理の一例)
図10を参照して、上述した領域開放処理の一例を説明する。
【0080】
図10に示すように、まず、領域開放部13は、第0ボリュームユニット(
図1)から実データを削除する(S71)。
【0081】
続くステップS72では、物理ボリューム110における階層(すなわちボリュームユニットの番号)を表す変数nnに0がセットされる(S72)。
【0082】
領域開放部13は、第nnボリュームユニットの全てのブロックをスキャンする(S73)。すなわち、領域開放部13は、各ブロックに格納された実データの有無を検査する。
【0083】
そして、ステップS73におけるスキャンの結果、第nnボリュームユニットの空きブロックがもしあれば、領域開放部13は、空きブロックを削除する(S74)。
【0084】
領域開放部13は、削除したブロックの数の合計は、予め決められた設定値未満かどうかを判定する(S75)。
【0085】
削除したブロックの数の合計が設定値以上である場合(S75でNo)、本実施形態3に係わる領域開放処理は終了する。
【0086】
一方、削除したブロックの数の合計が設定値未満である場合(S75でYes)、続くステップS76では、物理ボリューム110における階層(すなわちボリュームユニットの番号)を表す変数nnにnn+1がセットされる(S76)。すなわち、変数nnに1が加算される。
【0087】
変数nnはN以下である場合(S77でNo)、フローはステップS73に戻る。ここで、Nは、物理ボリューム110の階層の総数から1を引いた値である(
図1)。一方、変数nnがNを超えた場合(S77でYes)、本実施形態3に係わる領域開放処理は終了する。
【0088】
(本実施形態の効果)
本実施形態の構成によれば、重複度計算部11は、記録媒体に保存された同一の実データがいくつの仮想ボリューム200によって参照されているかを示す重複度を計算する。格納部12は、重複度に応じた記録媒体100の一領域内に実データを格納する。領域開放部13は、いずれの仮想ボリューム200によっても参照されない実データのみが格納された特定の領域を解放する。
【0089】
領域開放処理により、特定の領域が開放される。これにより、解放された領域を再利用できるので、記録媒体に割り当てられた物理ボリューム110の領域を効率的に利用可能にすることができる。
【0090】
さらに、本実施形態の構成によれば、領域開放部13は、記録媒体100における特定の領域に格納された実データを消去し、特定の領域を少なくとも含む2つ以上の領域のうち、より小さい重複度と対応する領域から順に、設定値以上の数の空きブロックを削除する。
【0091】
これにより、特定の領域(一例では第0ボリュームユニット)のみから空きブロックを削除する構成と比較して、より大きい領域を解放することができる。さらに、設定値以上の数の空きブロックを削除すれば、領域開放処理が終了するので、全てのボリュームユニットをスキャンし、全てのボリュームユニットから空きブロックを削除する構成と比較して、必要十分な領域を解放することができる。
【0092】
〔実施形態4〕
本実施形態4では、前記実施形態1~3で説明した例とは異なる領域開放処理の一例を説明する。
【0093】
前記実施形態2と同様に、領域開放部13は、記録媒体100における特定の領域に格納された実データを消去し、特定の領域を少なくとも含む2つ以上の領域から空きブロックを削除する。具体的には、特定の領域は、第0ボリュームユニットである。2つ以上の領域とは、
図1に示す物理ボリューム110の第0~第N(Nは1以上の整数)ボリュームユニットである。
【0094】
本実施形態4では、特定の領域を含む2つ以上の領域のうち、より小さい重複度と対応する領域から順に、所定数(上限値をN´とする)の領域から、空きブロックを削除する。この点で、本実施形態4の構成は、前記実施形態2とは異なる。
【0095】
(領域開放処理の一例)
図11を参照して、上述した領域開放処理の一例を説明する。
【0096】
図11に示すように、まず、領域開放部13は、第0ボリュームユニット(
図1)から実データを削除する(S91)。
【0097】
続くステップS92では、物理ボリューム110における階層(すなわちボリュームユニットの番号)を表す変数nnnに0がセットされる(S92)。
【0098】
領域開放部13は、第nnnボリュームユニットをスキャンする(S93)。すなわち、領域開放部13は、第nnnボリュームユニットの各ブロックに格納された実データの有無を検査する。
【0099】
ステップS73におけるスキャンの結果、第nnnボリュームユニットの空きブロックがもしあれば、領域開放部13は、空きブロックを削除する(S94)。
【0100】
続くステップS95では、物理ボリューム110における階層(すなわちボリュームユニットの番号)を表す変数nnnにnnn+1がセットされる(S95)。すなわち、変数nnnに1が加算される。
【0101】
変数nnnはN´以下である場合(S96でNo)、フローはステップS93に戻る。ここで、N´は、1以上かつNより小さい整数であればよい(
図1)。一方、変数nnnがN´を超えた場合(S96でYes)、本実施形態4に係わる領域開放処理は終了する。
【0102】
(本実施形態の効果)
本実施形態の構成によれば、重複度計算部11は、記録媒体に保存された同一の実データがいくつの仮想ボリューム200によって参照されているかを示す重複度を計算する。格納部12は、重複度に応じた記録媒体100の一領域内に実データを格納する。領域開放部13は、いずれの仮想ボリューム200によっても参照されない実データのみが格納された特定の領域を解放する。
【0103】
領域開放処理により、特定の領域が開放される。これにより、解放された領域を再利用できるので、記録媒体に割り当てられた物理ボリューム110の領域を効率的に利用可能にすることができる。
【0104】
さらに、本実施形態の構成によれば、領域開放部13は、記録媒体100における特定の領域に格納された実データを消去し、特定の領域を少なくとも含む2つ以上の領域から空きブロックを削除する。
【0105】
これにより、特定の領域(一例では第0ボリュームユニット)のみから空きブロックを削除する構成と比較して、より大きい領域を解放することができる。
【0106】
加えて、重複度が小さい順に、物理ボリューム110の階層の総数より小さい上限値まで、各重複度と対応する階層のボリュームユニットから空きブロックを削除した時点で、領域開放処理が終了する。そのため、全てのボリュームユニットをスキャンし、全てのボリュームユニットから空きブロックを削除する構成と比較して、領域開放処理の負荷を低減することができる。
【0107】
〔実施形態5〕
図12~
図13を参照して、実施形態5について説明する。
【0108】
(記録媒体管理装置20)
図12は、本実施形態5に係わる記録媒体管理装置20の構成を示すブロック図である。
図12に示すように、記録媒体管理装置20は、重複度計算部11、格納部12、および領域開放部13に加えて、推定部24をさらに備えている。重複度計算部11、格納部12、および領域開放部13についての説明を、本実施形態5では省略し、前記実施形態1における説明を参照する。ただし、格納部12については、本実施形態5において特徴的な処理についてのみ、補足的に説明する。
【0109】
推定部24は、仮想ボリューム200に格納された仮想データに対するアクセスの履歴に基づいて、実データが仮想ボリューム200によって参照されない時間帯を推定する。推定部24は、推定手段の一例である。
【0110】
図13を参照して、推定部24が、実行する処理の一例を説明する。
図13において、符号71で示される左側のデータは、仮想データに対するアクセスの履歴(アクセス時間記録71と呼ぶ)の一例を示す。
【0111】
一例では、推定部24は、仮想ボリューム制御装置(図示せず)から、アクセス時間記録71のデータを取得する。そして、推定部24は、取得したアクセス時間記録71のデータに基づいて、仮想データと対応する実データが仮想ボリューム200によって参照されない時間帯を推定する。
【0112】
具体的には、推定部24は、仮想データに対するアクセスのあった時刻を一定の時間帯ごとに分類し、
図13の右側に示すメタデータ72を生成する。
図13の右側に示すメタデータ72は、
図13の左側に示すアクセスの履歴を、1時間ごとに分類した結果を示す。
【0113】
図13に示すメタデータ72において、「Y」は、対応する時間帯(24時間のうち特定の1時間)において、仮想データにアクセスがあったことを示し、「N」は、対応する時間帯(24時間のうち特定の1時間)において、仮想データにアクセスがなかったことを示す。
【0114】
なお、
図13に示すアクセス時間記録71には、3日分のアクセスの履歴が含まれているが、推定部24は、1週間あるいは1か月など、より長期間におけるアクセスの履歴を取得してもよい。あるいは、アクセス時間記録71は、所定の期間におけるすべてのアクセスの履歴を記録してもよいし、直近の所定件数のアクセスの履歴のみを記録してもよい。あるいはまた、アクセス時間記録71は、秒単位までではなく、もっと高精度に(例えばミニ秒単位)、またはその逆に(例えば分単位または一時間単位)、アクセスの履歴を記録してもよい。
【0115】
一例では、推定部24は、アクセス時間記録71から得たメタデータ72に基づいて、実データが仮想ボリューム200によって参照されない時間帯を推定する。
図13の右側に示すメタデータ72において、10時台の1時間のみ、アクセスの履歴があり、その他の時間帯には、アクセスの履歴がない。そのため、推定部24は、10時台の1時間を除いて、実データが仮想ボリューム200によって参照されないと推定する。
【0116】
ただし、
図13に示すアクセス時間記録71には、3日分のアクセスの履歴しか含まれていないため、推定の精度は低い可能性がある。その場合、推定部24は、十分な推定の精度を得るため、アクセスの履歴を取得する期間を延長してもよい。
【0117】
推定部24は、実データが仮想ボリューム200によって参照されない時間帯を推定した結果を示す情報を格納部12へ出力する。
【0118】
本実施形態5では、格納部12は、推定部24から、実データが仮想ボリューム200によって参照されない時間帯を推定した結果を示す情報を受信する。そして、格納部12は、仮想データがアクセスされないと推定された時間帯に、重複度に応じた記録媒体100の一領域内に実データを格納する。
【0119】
(本実施形態の効果)
本実施形態の構成によれば、重複度計算部11は、記録媒体に保存された同一の実データがいくつの仮想ボリューム200によって参照されているかを示す重複度を計算する。格納部12は、重複度に応じた記録媒体100の一領域内に実データを格納する。領域開放部13は、いずれの仮想ボリューム200によっても参照されない実データのみが格納された特定の領域を解放する。
【0120】
領域開放処理により、特定の領域が開放される。これにより、解放された領域を再利用できるので、記録媒体に割り当てられた物理ボリューム110の領域を効率的に利用可能にすることができる。
【0121】
さらに、本実施形態の構成によれば、推定部24は、仮想ボリューム200に格納された仮想データに対するアクセスの履歴に基づいて、実データが仮想ボリューム200によって参照されない時間帯を推定する。格納部12は、仮想データがアクセスされないと推定された時間帯に、重複度に応じた記録媒体100の一領域内に実データを格納する。
【0122】
これにより、実データの格納先を変更している最中に、実データと対応する仮想データがアクセスを受ける可能性を低減することができ、ユーザの業務に支障をきたすことを防止することができる。
【0123】
(ハードウェア構成について)
前記実施形態1~5で説明した記録媒体管理装置10(20)の各構成要素は、機能単位のブロックを示している。これらの構成要素の一部又は全部は、例えば
図14に示すような情報処理装置900により実現される。
図14は、情報処理装置900のハードウェア構成の一例を示すブロック図である。
【0124】
図14に示すように、情報処理装置900は、一例として、以下のような構成を含む。
【0125】
・CPU(Central Processing Unit)901
・ROM(Read Only Memory)902
・RAM(Random Access Memory)903
・RAM903にロードされるプログラム904
・プログラム904を格納する記憶装置905
・記録媒体906の読み書きを行うドライブ装置907
・通信ネットワーク909と接続する通信インタフェース908
・データの入出力を行う入出力インタフェース910
・各構成要素を接続するバス911
前記実施形態1~5で説明した記録媒体管理装置10(20)の各構成要素は、これらの機能を実現するプログラム904をCPU901が読み込んで実行することで実現される。各構成要素の機能を実現するプログラム904は、例えば、予め記憶装置905やROM902に格納されており、必要に応じてCPU901がRAM903にロードして実行される。なお、プログラム904は、通信ネットワーク909を介してCPU901に供給されてもよいし、予め記録媒体906に格納されており、ドライブ装置907が当該プログラムを読み出してCPU901に供給してもよい。
【0126】
(本実施形態の効果)
本実施形態の構成によれば、前記実施形態において説明した記録媒体管理装置10(20)が、ハードウェアとして実現される。したがって、前記実施形態において説明した効果と同様の効果を奏することができる。
【産業上の利用可能性】
【0127】
本発明は、例えば、ストレージまたはメモリなどの記録媒体に格納されたデータを管理する記録媒体管理装置と、それを備えたストレージシステム、およびクラウドストレージサービスなどに利用することができる。
【符号の説明】
【0128】
1 システム
10 記録媒体管理装置
11 重複度計算部
12 格納部
13 領域開放部
20 記録媒体管理装置
24 推定部
100 ストレージ(記録媒体)
200 仮想ボリューム