JP2023150248A - ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置 - Google Patents

ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置 Download PDF

Info

Publication number
JP2023150248A
JP2023150248A JP2022059254A JP2022059254A JP2023150248A JP 2023150248 A JP2023150248 A JP 2023150248A JP 2022059254 A JP2022059254 A JP 2022059254A JP 2022059254 A JP2022059254 A JP 2022059254A JP 2023150248 A JP2023150248 A JP 2023150248A
Authority
JP
Japan
Prior art keywords
chunks
storage
chunk
file
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022059254A
Other languages
English (en)
Inventor
悌 伊藤
Tei Ito
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2022059254A priority Critical patent/JP2023150248A/ja
Publication of JP2023150248A publication Critical patent/JP2023150248A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】外部ストレージからデータが短期間で削除される事態の発生を抑制する。【解決手段】ストレージ制御装置1は、外部ストレージ2に格納された保管データセットの中から、直近の一定期間に外部ストレージ2への格納が要求されたファイルから参照されているチャンクCK1,CK5,CK7を特定し、チャンクCK1,CK5,CK7とそれぞれ同じデータを有するチャンクCK1’,CK5’,CK7’を生成し、チャンクCK1,CK5,CK7のそれぞれに対応する参照数をチャンクCK1’,CK5’,CK7’にそれぞれ付け替えるとともに、チャンクCK1,CK5,CK7のそれぞれに対応する参照数を0に更新し、チャンクCK1’,CK5’,CK7’をまとめて新たな保管データセットACxを生成して外部ストレージ2に格納する。【選択図】図1

Description

本発明は、ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置に関する。
オンラインストレージサービス、クラウドストレージサービスなど、ネットワークを介してストレージ領域を提供するストレージサービスが普及している。また、このようなストレージサービスと顧客のコンピュータとの間でゲートウェイとして機能するストレージゲートウェイがある。
例えば、顧客のコンピュータとクラウドストレージなどの外部ストレージとの間で書き込みデータを中継するストレージゲートウェイが提案されている。このストレージゲートウェイは、顧客のコンピュータからファイル単位でデータの書き込み要求を受け付け、書き込みが要求されたデータの重複を排除し、重複が排除されたデータをオブジェクト単位で外部ストレージに転送する。
また、データの重複排除技術に関しては、例えば、データが同一である複数のチャンクをマージする際に、一方のチャンクに対応する参照カウントを他方のチャンクに引き継ぐようにしたストレージ装置が提案されている。さらに、ストレージに対するデータ格納技術に関しては、例えば、メタデータに含まれる単語の出現頻度および書き込み時刻が比較的近いファイルセット同士を同じクラスタに分類して、共通のテープ媒体に格納するようにした情報処理システムが提案されている。
特開2019-95925号公報 特開2017-45177号公報 特開2018-190393号公報
ところで、ストレージサービスの1つとして、データの長期保管に適したアーカイブストレージを提供するサービスがある。上記のストレージゲートウェイでも、データ格納先の外部ストレージとしてアーカイブストレージが利用される場合がある。この場合、例えば、1つまたは複数のオブジェクトを含むアーカイブストレージ用のデータセットが生成され、このデータセットを単位としてアーカイブストレージに格納される。
また、アーカイブストレージに格納されたデータセットのデフラグ処理は、例えば、次のような手順で実行される。データセットの中から、参照数が「0」のチャンクが多い第1のデータセットが特定され、第1のデータセットがアーカイブストレージから取り出されるとともに、アーカイブストレージから削除される。取り出されたデータセットから、参照数が「0」でない有効なチャンクが抽出され、抽出されたチャンクによって第2のデータセットが新たに生成(再構築)されて、アーカイブストレージに格納される。
しかし、このような手順のデフラグ処理が繰り返されると、デフラグ処理によって新たに生成されたデータセットがアーカイブストレージに格納された後、短期間でそのデータセットがアーカイブストレージから削除されるというケースが発生し得る。このケースは、再構築されてアーカイブストレージに格納されたデータセットにおいて、参照数が「0」のチャンクが早期に増え、そのデータセットが再構築のために取り出されるとともにアーカイブストレージから削除される、というケースである。
アーカイブストレージでは、長期保管という目的から、データセットの最短保管期間が定められ、最短保管期間が経過する前にデータセットを削除する場合には追加料金が発生する場合がある。上記のように、デフラグ処理によって生成されてアーカイブストレージに格納されたデータセットが短時間で削除されると、削除のための追加料金が発生してしまうという問題がある。
1つの側面では、本発明は、外部ストレージからデータが短期間で削除される事態の発生を抑制可能なストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置を提供することを目的とする。
1つの案では、コンピュータに、書き込みが要求された複数のファイルのそれぞれを分割することで得られた複数の分割データセットから、重複を排除して複数のチャンクを取得し、複数のチャンクから選択された2以上のチャンクをそれぞれまとめて複数の保管データセットを生成し、複数のファイルのうち第1のファイルの格納要求を受信すると、複数のチャンクのうち第1のファイルから参照されるチャンクを含む1以上の第1の保管データセットを特定し、1以上の第1の保管データセットを外部ストレージに格納するとともに、複数のチャンクのうち第1のファイルから参照されるチャンクに対応付けられた参照数を、複数の分割データセットのうち第1のファイルに含まれる分割データセットから参照される数の分だけ増加させ、複数のファイルのうち第2のファイルの削除要求を受信すると、複数のチャンクのうち第2のファイルから参照されるチャンクに対応する参照数を、複数の分割データセットのうち第2のファイルに含まれる分割データセットから参照される数の分だけ減少させ、複数の保管データセットのうち外部ストレージに格納された保管データセットの中から、複数のファイルのうち、直近の一定期間に外部ストレージへの格納が要求されたファイルから参照されている1以上の第1のチャンクを特定して外部ストレージから取得し、1以上の第1のチャンクとそれぞれ同じデータを有する1以上の第2のチャンクを生成し、1以上の第1のチャンクのそれぞれに対応する参照数を1以上の第2のチャンクにそれぞれ付け替えるとともに、1以上の第1のチャンクのそれぞれに対応する参照数を0に更新し、1以上の第2のチャンクをまとめて新たな保管データセットを生成して外部ストレージに格納し、複数の保管データセットのうち外部ストレージに格納された保管データセットおよび新たな保管データセットの中から、対応する保管データセット内のすべてのチャンクに対応する参照数が0である第2の保管データセットが検出されると、第2の保管データセットを外部ストレージから削除する、処理を実行させるストレージ制御プログラムが提供される。
また、1つの案では、上記のストレージ制御プログラムに基づく処理と同様の処理をコンピュータが実行するストレージ制御方法が提供される。
さらに、1つの案では、上記のストレージ制御プログラムに基づく処理と同様の処理を実行するストレージ制御装置が提供される。
1つの側面では、外部ストレージからデータが短期間で削除される事態の発生を抑制できる。
第1の実施の形態に係るストレージシステムの構成例および処理例を示す図である。 第2の実施の形態に係る情報処理システムの構成例を示す図である。 クラウドストレージゲートウェイのハードウェア構成例を示す図である。 クラウドストレージゲートウェイが備える処理機能の構成例を示す図である。 チャンクマップテーブルのデータ構成例を示す図である。 チャンク管理テーブルのデータ構成例を示す図である。 オブジェクトの生成例を示す図である。 チャンクグループ管理テーブルのデータ構成例を示す図である。 デフラグ判定テーブルのデータ構成例を示す図である。 オブジェクトストレージおよびアーカイブストレージに対するデータ格納処理例を示す第1の図である。 オブジェクトストレージおよびアーカイブストレージに対するデータ格納処理例を示す第2の図である。 オブジェクトストレージおよびアーカイブストレージに対するデータ格納処理例を示す第3の図である。 デフラグ処理の比較例を示す第1の図である。 デフラグ処理の比較例を示す第2の図である。 第2の実施の形態におけるデフラグ処理例を示す第1の図である。 第2の実施の形態におけるデフラグ処理例を示す第2の図である。 第2の実施の形態におけるデフラグ処理例を示す第3の図である。 ファイル書き込み処理の手順を示すフローチャートの例(その1)である。 ファイル書き込み処理の手順を示すフローチャートの例(その2)である。 アーカイブストレージに対するデータ格納処理の手順を示すフローチャートの例である。 アーカイブストレージからのデータ削除処理の手順を示すフローチャートの例である。 デフラグ処理の手順を示すフローチャートの例(その1)である。 デフラグ処理の手順を示すフローチャートの例(その2)である。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージシステムの構成例および処理例を示す図である。図1に示すストレージシステムは、ストレージ制御装置1と外部ストレージ2を有する。
ストレージ制御装置1は、例えば図示しないクライアント装置からの要求に応じて、外部ストレージ2へのデータの格納や、外部ストレージ2からのデータの取り出し、外部ストレージ2に格納されたデータの削除などの制御処理を実行する。ストレージ制御装置1は、例えば、図示しないプロセッサを有するコンピュータである。この場合、上記の制御処理は、例えば、プロセッサがプログラムを実行することで実現される。
外部ストレージ2は、ストレージ制御装置1の外部に接続されたストレージ領域である。外部ストレージ2は、データの長期保存に適するが、データの短期保存には適さない。例えば、外部ストレージ2にはデータの最短保管期間が設定されており、データの格納から最短保管期間が経過する前にそのデータが外部ストレージ2から削除される場合、追加の料金が発生する。
以下、ストレージ制御装置1の処理を説明する。
ストレージ制御装置1は、書き込みが要求された複数のファイルのそれぞれを分割することで得られた複数の分割データセットから、重複を排除することで複数のチャンクを取得する。また、ストレージ制御装置1は、取得した複数のチャンクから選択された2以上のチャンクをそれぞれまとめて、複数の保管データセットを生成する。図1の例では、m個のファイルFL1~FLmからチャンクCK1~CK9,・・・,CK21,CK22が取得されている。また、チャンクCK1~CK9,・・・,CK21,CK22から、n個の保管データセットAC1~ACnが生成されている。
ここで、図1では、ファイルFL1~FLmに含まれる各分割データセットには、対応するチャンクの符号が表示されている。例えば、ファイルFL1は4つの分割データセットに分割され、これらの分割データセットはそれぞれチャンクCK1,CK2,CK3,CK4に対応する。また、ファイルFL2は4つの分割データセットに分割され、これらの分割データセットはそれぞれチャンクCK1,CK5,CK3,CK6に対応する。ファイルFL1とファイルFL2との間では、チャンクCK1,CK3に対応する同じ内容の分割データセットが重複していることがわかる。
また、重複が排除された各チャンクには、参照数が対応付けられている。参照数は、対応するチャンクが、外部ストレージ2に格納されたファイルの分割データセットのうちいくつの分割データセットから参照されているかを示す。参照数の初期値は「0」である。
ストレージ制御装置1は、複数のファイルのうち第1のファイルの格納要求を受信すると、この第1のファイルから参照されるチャンクを含む1以上の保管データセットを特定する。ストレージ制御装置1は、特定された1以上の第1の保管データセットを外部ストレージ2に格納する。これとともに、ストレージ制御装置1は、第1のファイルから参照されるチャンクに対応する参照数を、この第1のファイルに含まれる分割データセットから参照される数の分だけ増加させる。
例えば、ファイルFL1の格納が要求されると、ストレージ制御装置1は、ファイルFL1から参照されるチャンクCK1~CK4を含む保管データセットAC1を特定し、保管データセットAC1を外部ストレージ2に格納する。これとともに、ストレージ制御装置1は、チャンクCK1~CK4にそれぞれ対応する参照数を、ファイルFL1に含まれる分割データセットから参照される数の分だけ増加させる。例えば、チャンクCK1は、ファイルFL1内の1つの分割データセットから参照されているので、チャンクCK1に対応する参照数を「1」だけ増加させる。これにより、チャンクCK1に対応する参照数は「1」となる。
このような手順で、外部ストレージ2に対するファイルFL1~FLmの格納が要求され、ファイルFL1~FLmに対応するチャンクを含むすべての保管データセットAC1~ACnが外部ストレージ2に格納されたとする。このとき、チャンクCK1~CK9に対応する参照数は、それぞれ「8」、「1」、「3」、「1」、「6」、「2」、「4」、「1」、「1」になったとする。また、チャンクCK21,CK22に対応する参照数は、それぞれ「1」、「1」になったとする。
また、ストレージ制御装置1は、第2のファイルの削除要求を受信すると、この第2のファイルから参照されるチャンクに対応する参照数を、第2のファイルに含まれる分割データセットから参照される数の分だけ減少させる。例えば、ファイルFL1,FL2の削除が要求されたとする。この場合、ストレージ制御装置1は、図1に示すように、ファイルFL1,FL2から参照されるチャンクCK1~CK6に対応する参照数を、それぞれ「8」、「1」、「3」、「1」、「6」、「2」から「6」、「0」、「1」、「0」、「5」、「1」に更新する。
また、ストレージ制御装置1は、外部ストレージ2に格納された保管データセットAC1~ACnの中から、直近の一定期間に外部ストレージ2への格納が要求されたファイルから参照されている1以上のチャンクを特定する。ストレージ制御装置1は、このような条件を満たすチャンクが特定されると、特定されたチャンクを外部ストレージ2から取得する。
図1では例として、上記条件を満たすチャンクとしてチャンクCK1,CK5,CK7が特定されたとする。ストレージ制御装置1は、例えば、チャンクCK1,CK5を含む保管データセットAC1とチャンクCK7を含む保管データセットAC2とを外部ストレージ2から取り出すことで、チャンクCK1,CK5,CK7を取得する。
ストレージ制御装置1は、取得したチャンクCK1,CK5,CK7とそれぞれ同じデータを有する新たなチャンクCK1’,CK5’,CK7’を生成する。このとき、ストレージ制御装置1は、元のチャンクCK1,CK5,CK7のそれぞれに対応する参照数を新たなチャンクCK1’,CK5’,CK7’にそれぞれ付け替える。図1の例では、チャンクCK1の参照数「6」がチャンクCK1’に付け替えられ、チャンクCK5の参照数「5」がチャンクCK5’に付け替えられ、チャンクCK7の参照数「4」がチャンクCK7’に付け替えられる。また、ストレージ制御装置1は、元のチャンクCK1,CK5,CK7のそれぞれに対応する参照数を「0」に更新する。
なお、図示しないが、ストレージ制御装置1は、ファイルと元のチャンクCK1,CK5,CK7との対応関係を示す情報を、そのファイルと新たなチャンクCK1’,CK5’,CK7’との対応関係を示すように更新する。例えば、あるファイルのある分割データセットに元のチャンクCK1が対応付けられていた場合、この分割データセットに対応するチャンクが新たなチャンクCK1’に更新される。
そして、ストレージ制御装置1は、新たなチャンクCK1’,CK5’,CK7’をまとめて新たな保管データセットACxを生成し、この保管データセットACxを外部ストレージ2に格納する。一方、上記の条件を満たすチャンクCK1,CK5,CK7が含まれる保管データセットAC1,AC2は、上記のように参照数が付け替えられるだけで、外部ストレージ2に格納され続ける。
また、ストレージ制御装置1は、外部ストレージ2に格納された保管データセットAC1~ACnおよび新たな保管データセットACxの中から、対応する保管データセット内のすべてのチャンクに対応する参照数が「0」である保管データセットが検出されると、この保管データセットを外部ストレージ2から削除する。ただし、上記のように保管データセットACxが外部ストレージ2に格納された時点では、すべてのチャンクに対応する参照数が「0」である保管データセットは検出されない。
この後、図示しないが、例えばファイルFL3,FL4の削除が要求されたとする。この場合、ストレージ制御装置1は、ファイルFL3,FL4から参照されるチャンクに対応する参照数を、ファイルFL3,FL4に含まれる分割データセットから参照される数の分だけ減少させる。この処理により、チャンクCK3,CK6,CK8,CK9にそれぞれ対応する参照数が「0」になる。
これにより、保管データセットAC1,AC2に含まれるすべてのチャンクの参照数が「0」になることから、ストレージ制御装置1は、保管データセットAC1,AC2を外部ストレージ2から削除する。一方、外部ストレージ2に格納されたばかりの保管データセットACxは、削除されずに格納され続ける。
ここで、ファイルFL1,FL2の削除要求を受信した場合のデフラグ処理の比較例について説明する。
この比較例では、ファイルの削除要求に伴い、参照数が「0」になるチャンクが多くなった保管データセットが発生すると、その保管データセットが取り出される。そして、取り出された保管データセット内のチャンクのうち、参照数が「0」でないチャンクだけによって新たな保管データセットが生成されて、外部ストレージ2に格納される。一方、取り出された保管データセットは外部ストレージ2から削除される。
例えば、ファイルFL1,FL2の削除要求に応じて参照数が更新された後、参照数が「0」になるチャンクが多くなった保管データセットとして保管データセットAC1が特定される。すると、保管データセットAC1が取り出され、参照数が「0」でないチャンクCK1,CK3,CK5,CK6によって新たな保管データセットが生成されて、外部ストレージ2に格納される。一方、保管データセットAC1は外部ストレージ2から削除される。
次に、ファイルFL3,FL4の削除が要求されると、チャンクCK3,CK6の参照数が「0」となる。この場合、参照数が「0」になるチャンクが多くなった保管データセットとして、新たに格納されたばかりの保管データセットが特定されて取り出されるとともに、外部ストレージ2から削除される。このように、比較例では、外部ストレージ2に格納されてから短期間で削除される保管データセットが発生しやすい。
これに対して、本実施の形態のストレージ制御装置1は、ファイルFL1,FL2の削除要求に応じて参照数が更新された後、参照数が「0」になるチャンクが多くなった保管データセットAC1を、外部ストレージ2から削除せずに残す。その代わり、ストレージ制御装置1は、直近の一定期間に外部ストレージ2への格納が要求されたファイルから参照されているチャンクCK1,CK5,CK7を特定する。
ストレージ制御装置1は、特定されたチャンクCK1,CK5,CK7とそれぞれ同じデータを有する新たなチャンクCK1’,CK5’,CK7’を生成する。このとき、元のチャンクCK1,CK5,CK7のそれぞれに対応する参照数が新たなチャンクCK1’,CK5’,CK7’にそれぞれ付け替えられ、元のチャンクCK1,CK5,CK7のそれぞれに対応する参照数が「0」に更新される。そして、ストレージ制御装置1は、新たなチャンクCK1’,CK5’,CK7’をまとめて新たな保管データセットACxを生成し、この保管データセットACxを外部ストレージ2に格納する。
格納された保管データセットACxは、直近の一定期間に外部ストレージ2への格納が要求されたファイルから参照されているチャンクだけを含むので、各チャンクの参照数は短期間では「0」になりにくい。このため、保管データセットACxは、外部ストレージ2に格納されてから早期に削除される可能性が低い。一方、元のチャンクCK1,CK5,CK7を含む保管データセットAC1は、すべてのチャンクの参照数が「0」になるまで外部ストレージ2に格納され続ける。このため、保管データセットAC1についても、外部ストレージ2に格納されてから早期に削除される可能性が低い。
このように、本実施の形態のストレージ制御装置1によれば、外部ストレージ2からデータが短期間で削除される事態の発生を抑制できる。
〔第2の実施の形態〕
次に、図1の外部ストレージ2としてアーカイブストレージが用いられ、図1のストレージ制御装置1としてクラウドストレージゲートウェイが用いられた場合の例について説明する。
図2は、第2の実施の形態に係る情報処理システムの構成例を示す図である。図2に示す情報処理システムは、クラウドストレージゲートウェイ100、NAS(Network Attached Storage)クライアント210およびクラウドストレージシステム220を含む。クラウドストレージゲートウェイ100は、ネットワーク231を介してNASクライアント210と接続され、また、ネットワーク232を介してクラウドストレージシステム220と接続されている。ネットワーク231は、例えばLAN(Local Area Network)であり、ネットワーク232は、例えばWAN(Wide Area Network)である。
クラウドストレージシステム220は、ネットワーク232を介してクラウドストレージサービスを提供する。クラウドストレージシステム220は、クラウドストレージ領域として、オブジェクトストレージ221とアーカイブストレージ222とを提供する。オブジェクトストレージ221では、データがオブジェクト単位で管理される。例えば、オブジェクトストレージ221は、分散型のストレージシステムとして実現される。一方、アーカイブストレージ222は、データの長期保管に適したストレージ領域である。
クラウドストレージシステム220は、サービスのクライアント(ここではクラウドストレージゲートウェイ100)から、オブジェクトストレージ221に対するオブジェクトの格納要求を受け付けて、オブジェクトをオブジェクトストレージ221に格納する。また、クラウドストレージシステム220は、オブジェクトストレージ221に格納されたオブジェクトの中から、アーカイブストレージ222に格納するオブジェクトの指定を受け付け、指定されたオブジェクトをアーカイブストレージ222に格納する。アーカイブストレージ222に対するデータの格納は、1つ以上のオブジェクトを含むアーカイブを単位として実行される。例えば、アーカイブストレージ222への格納対象として複数のオブジェクトが指定されると、それらの複数のオブジェクトを含むアーカイブが作成され、そのアーカイブがアーカイブストレージ222に格納される。なお、アーカイブストレージ222に格納されたオブジェクトは、オブジェクトストレージ221から削除されてもよい。
オブジェクトストレージ221とアーカイブストレージ222のいずれについても、データの格納や読み出しの際に料金が発生する。また、前述のように、アーカイブストレージ222はデータの長期保管に適している。このため、例えば、アーカイブストレージ222ではアーカイブの最短保管期間が定められており、最短保管期間が経過する前にアーカイブを削除する場合には追加料金が発生する。
なお、図示しないが、クラウドストレージシステム220には、オブジェクトストレージ221およびアーカイブストレージ222に対するアクセス要求の受け付けや、各ストレージへのアクセス制御などの処理を実行するサーバ装置が含まれる。これらの処理は、複数のサーバ装置によって分散して実行されてもよい。
NASクライアント210は、クラウドストレージゲートウェイ100を、ファイルシステムによって管理される記憶領域を提供するNASサーバとして認識する。この記憶領域とは、クラウドストレージシステム220によって提供される記憶領域である。そして、NASクライアント210は、例えばNFS(Network File System)プロトコルやCIFS(Common Internet File System)プロトコルにしたがって、クラウドストレージゲートウェイ100に対してファイル単位でデータの読み書きを要求する。すなわち、NASクライアント210は、クラウドストレージゲートウェイ100のNASサーバ機能により、クラウドストレージシステム220の記憶領域を大容量の仮想的なネットワークファイルシステムとして利用できるようになる。
NASクライアント210は、例えば、データバックアップのためのバックアップソフトウェアを実行する。この場合NASクライアント210は、NASクライアント210に記憶されたファイル、またはNASクライアント210に接続されたサーバ(例えば業務サーバ)に記憶されたファイルを、NASサーバから提供される記憶領域にバックアップする。
クラウドストレージゲートウェイ100は、図1に示したストレージ制御装置1の一例である。クラウドストレージゲートウェイ100は、NASクライアント210とクラウドストレージシステム220との間で転送されるデータを中継する。
例えば、クラウドストレージゲートウェイ100は、NASサーバ機能により、NASクライアント210からファイルの書き込み要求を受信し、書き込みが要求されたファイルを内部にキャッシュする。クラウドストレージゲートウェイ100は、書き込みが要求されたファイルをチャンク単位に分割し、チャンク内の実データ(チャンクデータ)をオブジェクトストレージ221に格納する。このとき、所定個数のチャンクデータがグループ化されてオブジェクトが生成され、生成されたオブジェクトがオブジェクトストレージ221に転送される。
また、クラウドストレージゲートウェイ100は、NASクライアント210からのファイルをキャッシュする時点で、ファイルをチャンク単位に分割し、同一内容のチャンクデータが重複して保存されないようにする「重複排除」を行う。さらに、チャンクデータは圧縮された状態で格納されてもよい。例えば、クラウドストレージサービスでは、格納されるデータ量に応じて課金が行われる場合がある。重複排除やデータ圧縮を行うことで、クラウドストレージシステム220内の記憶領域に格納されるデータ量を削減し、サービス利用コストを抑制することができる。
さらに、クラウドストレージゲートウェイ100は、NASクライアント210から、アーカイブストレージ222に対するデータの格納要求を受け付ける。この格納要求は、例えば、クラウドストレージゲートウェイ100が提供するGUI(Graphical User Interface)やAPI(Application Programming Interface)を用いて受け付けられる。また、この格納要求は、ファイル単位で受け付けられる。クラウドストレージゲートウェイ100は、アーカイブストレージ222に格納するファイルの指定を受け付けると、そのファイルに含まれるチャンクデータのうち、アーカイブストレージ222に格納されていないチャンクデータを含むオブジェクトを特定する。クラウドストレージゲートウェイ100は、特定されたオブジェクトをアーカイブストレージ222に格納するようにクラウドストレージシステム220に要求する。この要求に応じて、特定されたオブジェクトがオブジェクトストレージ221から読み出され、アーカイブストレージ222に格納される。
図3は、クラウドストレージゲートウェイのハードウェア構成例を示す図である。クラウドストレージゲートウェイ100は、例えば、図3に示すようなコンピュータとして実現される。
クラウドストレージゲートウェイ100は、プロセッサ101、RAM(Random Access Memory)102、HDD(Hard Disk Drive)103、GPU(Graphics Processing Unit)104、入力インタフェース(I/F)105、読み取り装置106および通信インタフェース(I/F)107を備える。
プロセッサ101は、クラウドストレージゲートウェイ100全体を統括的に制御する。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。また、プロセッサ101は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
RAM102は、クラウドストレージゲートウェイ100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、プロセッサ101による処理に必要な各種データが格納される。
HDD103は、クラウドストレージゲートウェイ100の補助記憶装置として使用される。HDD103には、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を使用することもできる。
GPU104には、表示装置104aが接続されている。GPU104は、プロセッサ101からの命令にしたがって、画像を表示装置104aに表示させる。表示装置104aとしては、液晶ディスプレイや有機EL(Electroluminescence)ディスプレイなどがある。
入力インタフェース105には、入力装置105aが接続されている。入力インタフェース105は、入力装置105aから出力される信号をプロセッサ101に送信する。入力装置105aとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
読み取り装置106には、可搬型記録媒体106aが脱着される。読み取り装置106は、可搬型記録媒体106aに記録されたデータを読み取ってプロセッサ101に送信する。可搬型記録媒体106aとしては、光ディスク、半導体メモリなどがある。
通信インタフェース107は、ネットワーク107aを介して他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、クラウドストレージゲートウェイ100の処理機能を実現することができる。なお、NASクライアント210も、図3と同様のハードウェア構成を有するコンピュータとして実現可能である。
図4は、クラウドストレージゲートウェイが備える処理機能の構成例を示す図である。クラウドストレージゲートウェイ100は、記憶部110、ファイル入出力部120、重複排除処理部130およびクラウド通信部140を備える。
なお、記憶部110は、例えば、RAM102やHDD103など、クラウドストレージゲートウェイ100が備える記憶装置に確保される記憶領域である。また、ファイル入出力部120、重複排除処理部130およびクラウド通信部140の処理は、例えば、プロセッサ101が所定のプログラムを実行することで実現される。
記憶部110には、ディレクトリテーブル111、チャンクマップテーブル112、チャンク管理テーブル113、チャンクグループ管理テーブル114およびデフラグ判定テーブル115が記憶される。また、記憶部110の記憶領域の一部は、データキャッシュ116として利用される。
ディレクトリテーブル111は、ファイルシステムにおけるディレクトリ構造を表現するための管理情報である。ディレクトリテーブル111には、ディレクトリ構造上のディレクトリ(フォルダ)、またはディレクトリ内のファイルに対応するレコードが登録される。各レコードには、ディレクトリまたはファイルを識別するためのinode番号が登録されている。また、例えば、各レコードに親ディレクトリのinode番号が登録されることで、ディレクトリ間、およびディレクトリとファイルとの関係が表現される。
チャンクマップテーブル112は、ファイルと重複排除されたチャンクとの対応関係を管理するための管理情報である。チャンク管理テーブル113は、チャンクとオブジェクトおよびチャンクグループとの対応関係や、チャンクの参照数、チャンクに対応するハッシュキーなどを管理するための管理情報である。なお、チャンクグループとは、1以上のオブジェクト(本実施の形態では、例として2以上の所定個数のオブジェクト)に含まれるチャンクのグループである。
チャンクグループ管理テーブル114は、アーカイブストレージ222に格納されたチャンクグループごとに、チャンクグループに含まれるチャンクのうち有効なチャンクを示す有効チャンク数と無効なチャンクを示す無効チャンク数とを管理するための管理情報である。デフラグ判定テーブル115は、アーカイブのグループごとに、そのグループに含まれるチャンクのうち有効なチャンクを示す有効チャンク数と無効なチャンクを示す無効チャンク数とを管理するための管理情報である。これらのチャンクグループ管理テーブル114およびデフラグ判定テーブル115は、アーカイブストレージ222に格納されたオブジェクトについてのデフラグの実行要否を判定するために利用される。
データキャッシュ116は、重複排除されたチャンクをキャッシュするための記憶領域である。NASクライアント210から書き込みが要求されたファイルに対応するチャンクのデータは、重複排除された上で一旦データキャッシュ116に格納された後、オブジェクトに組み込まれてオブジェクトストレージ221に格納される。チャンクの格納によりデータキャッシュ116の容量が少なくなると、オブジェクトストレージ221に格納済みで、かつNASクライアント210からのアクセス頻度が低いチャンクは、データキャッシュ116から削除される。
ファイル入出力部120は、NASサーバとしてのインタフェース処理を実行する。例えば、ファイル入出力部120は、NASクライアント210からファイルの読み書き要求や、アーカイブストレージ222へのファイルの格納要求を受け付け、要求内容に応じた処理を重複排除処理部130に依頼して、NASクライアント210に応答する。
クラウド通信部140は、重複排除処理部130からの要求に応じて、クラウドストレージシステム220との間の通信処理を実行する。例えば、重複排除処理部130は、オブジェクトストレージ221に対するオブジェクトのアップロードや、オブジェクトストレージ221からのオブジェクトのダウンロードを実行する。また、クラウド通信部140は、アーカイブストレージ222へのオブジェクトの格納要求や、アーカイブストレージ222からのアーカイブの取り出し要求をクラウドストレージシステム220に送信する。
重複排除処理部130は、ファイルの実データを重複を排除した状態で格納するための処理を実行する。重複排除処理部130は、重複判定部131、チャンク管理部132およびデフラグ処理部133を備える。
重複判定部131は、書き込みが要求されたファイルの実データをチャンク単位に分割し、分割された実データを重複を排除しながらデータキャッシュ116に格納する。
チャンク管理部132は、重複判定部131によってデータキャッシュ116に格納されたチャンクを、適切なサイズになるように複数まとめてオブジェクトを生成する。チャンク管理部132は、生成されたオブジェクトを、クラウド通信部140を介してオブジェクトストレージ221に格納する。本実施の形態では例として、所定個数のチャンクによってオブジェクトが生成される。
デフラグ処理部133は、アーカイブストレージ222に格納されたファイルの削除要求に伴って参照されなくなったチャンク(無効チャンク)を監視し、その監視結果に基づいて、アーカイブストレージ222に格納されたオブジェクトのデフラグを実行する。本実施の形態において、デフラグとは、発生した無効チャンクをアーカイブストレージ222から削除して、アーカイブストレージ222の使用容量を削減するための処理である。
次に、重複排除処理で利用される管理情報について、図5~図7を用いて説明する。
図5は、チャンクマップテーブルのデータ構成例を示す図である。チャンクマップテーブル112は、ファイルと重複排除されたチャンクとの対応関係を管理するための管理情報である。図5に示すように、チャンクマップテーブル112には、ファイル番号、オフセット、サイズおよびチャンク番号の各項目を有するレコードが登録される。各レコードは、ファイルの実データを分割して生成された1つのチャンクに対応付けられている。
ファイル番号は、ファイルの識別番号を示す。オフセットは、ファイルの先頭からチャンクの先頭までのオフセット量を示す。サイズは、チャンクのサイズを示す。オフセットおよびサイズの値によって、ファイルにおけるチャンクの領域が特定される。
チャンク番号は、ファイル上のチャンクに対応する、重複排除されたチャンクの識別番号を示す。あるファイル上の第1のチャンクと、それと同じファイルまたは他のファイル上の第2のチャンクとの間でデータの内容が同じ場合、第1のチャンクに対応するレコードと第2のチャンクに対応するレコードには同じチャンク番号が登録される。例えば図5では、ファイル番号「f1」およびオフセット「o1」で識別されるチャンクのレコードと、ファイル番号「f2」およびオフセット「o14」で識別されるチャンクのレコードとには、同じチャンク番号「ck1」が登録されている。これは、前者のチャンクと後者のチャンクとの間ではデータの内容が同じであり、このデータがチャンク番号「ck1」のチャンクとしてデータキャッシュ116やクラウドストレージシステム220に格納されていることを示す。
図6は、チャンク管理テーブルのデータ構成例を示す図である。チャンク管理テーブル113は、重複排除されたチャンクとオブジェクトおよびチャンクグループとの対応関係や、チャンクの参照数、チャンクに対応するハッシュキーなどを管理するための管理情報である。図6に示すように、チャンク管理テーブル113には、チャンク番号、オブジェクト番号、オフセット、サイズ、チャンクグループ番号、参照数(1)、ハッシュキー、参照数(2)、アーカイブ番号およびアーカイブ格納日時の各項目を有するレコードが登録される。各レコードは、重複排除された1つのチャンクに対応付けられている。
オブジェクト番号は、チャンクが属するオブジェクトの識別番号を示す。オフセットは、オブジェクトの先頭からチャンクの先頭までのオフセット量を示す。サイズは、チャンクのサイズを示す。オフセットおよびサイズの値によって、オブジェクトにおけるチャンクの領域が特定される。
チャンクグループ番号は、チャンクが属するチャンクグループの識別番号を示す。チャンクグループは、所定個数のオブジェクトに含まれるチャンクを含む。本実施の形態において、チャンクグループは、クラウドストレージシステム220との間におけるデータの転送単位となる。
参照数(1)は、チャンク番号が示すチャンクが、ファイルを分割して生成されたチャンクのうちいくつのチャンクから参照されているかを示す。すなわち、参照数(1)は、チャンク番号が示すチャンクがファイル上のいくつのチャンクの間で重複しているかを示す。例えば、あるチャンク番号に対応する参照数(1)が「2」の場合、同じチャンク番号の値が登録された2つのレコードがチャンクマップテーブル112に存在することになる。
ここで、図5の例では、ファイル番号「f1」のファイルは2つのチャンクに分割されており、ファイル番号「f2」のファイルは4つのチャンクに分割されている。また、図6の例では、前者のファイルに含まれる2つのチャンクのデータと、後者のファイルに含まれるチャンクのうち先頭から2つのチャンクのデータとが、オブジェクト番号「ob1」のオブジェクトに属するチャンクとしてクラウドストレージシステム220に格納されている。
ハッシュキーは、チャンクのデータに基づいて算出されたハッシュ値である。ハッシュキーは、書き込みが要求されたファイル内のチャンクのデータと同一のチャンクを検索するために利用される。
ここで、図7は、オブジェクトの生成例を示す図である。この図7を用いて、オブジェクトの生成方法について説明する。
なお、図7に示すテーブル113aは、チャンク管理テーブル113から、オブジェクト番号「ob11」のオブジェクトに属するチャンクに対応するレコードのチャンク番号およびオブジェクト番号の各項目を抽出したものである。同様に、図7に示すテーブル113bは、チャンク管理テーブル113から、オブジェクト番号「ob12」のオブジェクトに属するチャンクに対応するレコードのチャンク番号およびオブジェクト番号の各項目を抽出したものである。また、図7に示すテーブル113cは、チャンク管理テーブル113から、オブジェクト番号「ob13」のオブジェクトに属するチャンクに対応するレコードのチャンク番号およびオブジェクト番号の各項目を抽出したものである。
NASクライアント210から新規のファイルの書き込みや既存のファイルの更新が要求されると、重複判定部131は、ファイルの実データをチャンク単位に分割する。図7の例では、ファイルf11の実データが8個のチャンクに分割され、ファイルf12の実データが5個のチャンクに分割されたものとする。
ここでは説明を簡単にするために、これらのチャンクのデータはすべて異なる(重複していない)ものとする。このため、ファイルf11を分割して得られたチャンクのデータには個別のチャンク番号「ck11」~「ck18」が付与され、ファイルf12を分割して得られたチャンクのデータには個別のチャンク番号「ck19」~「ck23」が付与されている。そして、チャンク番号「ck11」~「ck23」にそれぞれ対応するチャンクのデータ(チャンクck11~ck23)は、データキャッシュ116に個別に格納される。
各チャンクにはオブジェクトのオブジェクト番号が割り当てられ、そのオブジェクト番号がチャンク管理テーブル113に登録される。また、本実施の形態では、同じオブジェクト番号に割り当てられたチャンクの個数が所定数に達すると、オブジェクト番号がカウントアップされ、次のチャンクにはカウントアップ後のオブジェクト番号が割り当てられる。これにより、同一のオブジェクトに対しては所定個数のチャンクが割り当てられる。
なお、チャンクの個数が所定数に達していないオブジェクトの状態を、次のチャンクを受け入れ可能な「アクティブ」と呼ぶことにする。アクティブなオブジェクトは、オブジェクトストレージ221への格納準備が整っていない未完成なオブジェクトである。また、チャンクの個数が所定数に達したオブジェクトの状態を、次のチャンクを受け入れ不可能な「非アクティブ」と呼ぶことにする。非アクティブなオブジェクトは、オブジェクトストレージ221への格納準備が整ったオブジェクトとなり、所定のタイミングでオブジェクトストレージ221に転送される。実際には、所定個数の非アクティブなオブジェクトが発生した段階で、それらのオブジェクトがチャンクグループとしてまとめてオブジェクトストレージ221に転送される。
図7の例では、まず、チャンクck11~ck15がオブジェクト番号「ob11」のオブジェクト(オブジェクトob11)に割り当てられる。そして、この段階で、オブジェクトob11に含まれるチャンクの個数が所定数(図7では例として5個)に達し、オブジェクトob11が非アクティブになったとする。すると、次のチャンクck16には新たなオブジェクト番号「ob12」が割り当てられる。
この後、チャンクck16~ck20がオブジェクト番号「ob12」のオブジェクト(オブジェクトob12)に割り当てられ、この段階でオブジェクトob12が非アクティブになったとする。すると、次のチャンクck21には新たなオブジェクト番号「ob13」が割り当てられる。図7の例では、チャンクck21~ck23がオブジェクト番号「ob13」のオブジェクト(オブジェクトob13)に割り当てられるが、この段階ではオブジェクトob13はアクティブの状態である。この場合、次に生成されるチャンク(図示せず)にはオブジェクト番号「ob13」が割り当てられることになる。
以上の手順により、ファイルの書き込みに伴うオブジェクトの生成では、重複排除によって所定個数のチャンクが新たに出現するたびに新たなオブジェクトが完成される。オブジェクトには、生成順にオブジェクト番号が付与される。また、1つのオブジェクトには、連続するチャンク番号を有するチャンクが割り当てられる。
以上の図7では、データの重複がない場合について説明した。例えば、この後に書き込みが要求されたファイル内のチャンクに、チャンクck11~ck23のいずれかと同じ内容のデータを含むチャンクが存在した場合、そのチャンクのデータはデータキャッシュ116に新たに格納されず、クラウドストレージシステム220にも転送されない。すなわち、このチャンクについては実データの書き込みが行われず、ファイルと格納済みのチャンクとを対応付けるためのメタデータのみがチャンクマップテーブル112に書き込まれる。このようにして、重複するデータが記憶されないようにする「重複排除処理」が実行される。
なお、本実施の形態では、所定個数のチャンクがオブジェクトに割り当てられると、そのオブジェクトが非アクティブ化される。しかし、他の方法として、例えば、オブジェクトに割り当てられたチャンクの合計サイズが所定サイズを超えた場合に、そのオブジェクトが非アクティブ化されてもよい。
以下、図6を参照して説明を続ける。
参照数(2)は、チャンク番号が示すチャンクが、アーカイブストレージ222に格納されたファイルを分割して生成されたチャンクのうちいくつのチャンクから参照されているかを示す。すなわち、参照数(2)は、参照数(1)のうち、アーカイブストレージ222に格納されているファイルからの参照数を示す。
アーカイブ番号は、チャンクが含まれるアーカイブの識別番号を示す。アーカイブ番号は、チャンクを含むオブジェクトがアーカイブストレージ222に格納されたときに登録される。
アーカイブ格納日時は、チャンクを参照するファイルが、アーカイブストレージ222に格納されたときの日時を示す。チャンクは複数のファイルから参照され得るが、アーカイブ格納日時としては、チャンクを参照するファイルが直近にアーカイブストレージ222に格納されたときの日時が登録される。したがって、参照数(2)がインクリメントされるとアーカイブ格納日時も更新される。
次に、デフラグの実行要否を判定するために利用される管理情報について、図8、図9を用いて説明する。
図8は、チャンクグループ管理テーブルのデータ構成例を示す図である。チャンクグループ管理テーブル114には、チャンクグループがアーカイブストレージ222に格納されるごとに、そのチャンクグループに対応するレコードが作成される。各レコードには、チャンクグループ番号、有効チャンク数および無効チャンク数が登録される。
チャンクグループ番号は、チャンクグループの識別番号を示す。有効チャンク数は、チャンクグループに含まれるチャンクのうち、参照数(2)が1以上であるチャンクの数を示す。無効チャンク数は、チャンクグループに含まれるチャンクのうち、参照数(2)が0であるチャンクの数を示す。
図9は、デフラグ判定テーブルのデータ構成例を示す図である。デフラグ判定テーブル115には、所定数のアーカイブを含むアーカイブグループごとにレコードが作成される。アーカイブグループには、アーカイブの作成順に所定数のアーカイブが含められる。図9の例では、アーカイブグループには10個のアーカイブが含まれている。
デフラグ判定テーブル115の各レコードには、アーカイブ番号、有効チャンク数および無効チャンク数が登録される。アーカイブ番号は、アーカイブグループに含まれるアーカイブの識別番号を示す。有効チャンク数は、アーカイブグループ内の各アーカイブに含まれるチャンクのうち、参照数(2)が1以上であるチャンクの数を示す。無効チャンク数は、アーカイブグループ内の各アーカイブに含まれるチャンクのうち、参照数(2)が0であるチャンクの数を示す。
次に、図10~図12を用いて、オブジェクトストレージ221およびアーカイブストレージ222に対するデータ格納処理例について説明する。
図10は、オブジェクトストレージおよびアーカイブストレージに対するデータ格納処理例を示す第1の図である。図10の例では、NASクライアント210からクラウドストレージゲートウェイ100に対して、ファイルF1,F2の書き込みが順に要求されたとする。
可変長チャンキングにより、ファイルF1はチャンクA~Dに分割され、ファイルF1はチャンクA,E,C,Fに分割されたとする。ここで、同じアルファベットの文字が付与されたチャンクのデータは同じ内容であるとする。例えば、ファイルF1,F2からそれぞれ分割されたチャンクAは、いずれも同じ内容のデータである。すなわち、ファイルF1,F2の間ではチャンクAのデータが重複している。
このようなファイルF1,F2の書き込みが要求された場合、重複排除処理により、チャンクA~Fが1つずつデータキャッシュ116に格納される。また、チャンクA~Fに対応する参照数(ここでは参照数(1))は、それぞれ「2」、「1」、「2」、「1」、「1」、「1」となる。
また、図10では例として、オブジェクトには3個のチャンクが割り当てられるものとする。この場合、チャンクA~CによりオブジェクトO1が生成され、チャンクD~FによりオブジェクトO2が生成される。そして、オブジェクトO1,O2は、PUTコマンドによりクラウドストレージゲートウェイ100からオブジェクトストレージ221に転送される。
さらにこの後、NASクライアント210からクラウドストレージゲートウェイ100に対して、アーカイブストレージ222に対するファイルF1,F2の格納が要求されたとする。この場合、ファイルF1,F2に参照されるチャンクを含むオブジェクトO1,O2が特定される。そして、これらのオブジェクトO1,O2を含むアーカイブA1が生成され、アーカイブA1がアーカイブストレージ222に格納される。また、アーカイブA1に含まれるチャンクA~Fの参照数(2)として、参照数(1)と同じ値が設定される。
図11は、オブジェクトストレージおよびアーカイブストレージに対するデータ格納処理例を示す第2の図である。図11の例では、図10の処理の後に、NASクライアント210からクラウドストレージゲートウェイ100に対して、ファイルF3,F4の書き込みが順に要求されたとする。
可変長チャンキングにより、ファイルF3はチャンクA,C,E,G,Fに分割され、ファイルF4はチャンクA,E,G,H,Iに分割されたとする。これらのうち、チャンクA、C,Eはすでにデータキャッシュ116に格納されているので、チャンクA、C,Eについては参照数(1)のインクリメントのみが行われる。すなわち、チャンクA、C,Eの参照数(1)は、それぞれ「4」、「3」、「3」に更新される。一方、チャンクG~Iはデータキャッシュ116に新たに格納され、チャンクG~Iに対応する参照数(1)は、それぞれ「2」、「1」、「1」となる。また、チャンクG~IによってオブジェクトO3が生成され、オブジェクトO3がオブジェクトストレージ221に転送される。
その後、NASクライアント210からクラウドストレージゲートウェイ100に対して、アーカイブストレージ222に対するファイルF3,F4の格納が要求されたとする。この場合、ファイルF3,F4に参照されるチャンクのうち、アーカイブストレージ222に格納されていないチャンクG,H,Iを含むオブジェクトO3が特定される。そして、このオブジェクトO3を含むアーカイブA2が生成され、アーカイブA2がアーカイブストレージ222に格納される。また、アーカイブA2に含まれるチャンクG~Iの参照数(2)として、参照数(1)と同じ値が設定される。
図12は、オブジェクトストレージおよびアーカイブストレージに対するデータ格納処理例を示す第3の図である。
図10、図11に示した手順により、NASクライアント210からクラウドストレージゲートウェイ100に対して、m番目のファイルFmまでの書き込みが要求されたとする。また、これに伴ってチャンクA~Mが生成され、チャンクA~Mを含む複数のオブジェクトがオブジェクトストレージ221に転送されたとする。
さらに、NASクライアント210からクラウドストレージゲートウェイ100に対して、ファイルFmまでのすべてのファイルについてのアーカイブストレージ222への格納が要求されたとする。これにより、先頭のアーカイブA1からn番目のアーカイブAnまでのアーカイブがアーカイブストレージ222に格納されたとする。このとき、チャンクA~Mの参照数(1)は、それぞれ「8」、「1」、「3」、「1」、「6」、「2」、「4」、「1」、「1」、「1」、「1」であったとする。また、チャンクA~Mの参照数(2)は、いずれも参照数(1)と同数であったとする。
なお、データキャッシュ116は容量の上限があるため、クラウドストレージシステム220に転送済みのチャンク(オブジェクト)はデータキャッシュ116から削除されていく。ここでは、チャンクA~Mはデータキャッシュ116から削除されているとする。ただし、参照数(1),(2)などのチャンクA~Mの管理情報は、クラウドストレージゲートウェイ100の記憶部110に残される。また、オブジェクトストレージ221に転送済みのオブジェクトのうち、アーカイブストレージ222に格納済みのオブジェクトも、オブジェクトストレージ221から削除され得る。ここでは、ファイルF1~Fmに基づいて生成されたすべてのオブジェクトが、オブジェクトストレージ221から削除されているとする。
次に、図12の状態から、アーカイブストレージ222に格納されたデータのデフラグ処理が実行される場合について説明する。まず、図13、図14を用いてデフラグ処理の比較例を説明し、その後に図15~図17を用いて第2の実施の形態におけるデフラグ処理を説明する。
図13は、デフラグ処理の比較例を示す第1の図である。また、図14は、デフラグ処理の比較例を示す第2の図である。
オブジェクトストレージ221やアーカイブストレージ222を提供するサービスでは、一般的に、オブジェクト内の一部のデータ領域だけを削除するようなコマンドは用意されていない。このため、図13、図14に示すデフラグ処理の比較例では、無効なチャンクを含むオブジェクトを取得し、無効なチャンクを除去してオブジェクトを再構築した上で、再構築されたオブジェクトをアーカイブとしてアーカイブストレージ222に格納する、という手順が実行される。なお、図13、図14では、参照数として参照数(1)のみが用いられ、参照数(2)は用いられないものとする。
図13では、NASクライアント210からクラウドストレージゲートウェイ100に対して、アーカイブストレージ222からのファイルF1,F2の削除が要求されたとする。例えば、ユーザ側(NASクライアント210側)においてファイルF1,F2の保管が必要とされる期間が終了した場合に、アーカイブストレージ222からのファイルF1,F2の削除が要求される。
この場合、ファイルF1,F2に含まれる各チャンクの参照数(1)がデクリメントされ、デクリメント後に参照数(1)が「0」となったチャンクを一定数含むオブジェクトが再構築の対象として特定される。図13の例では、チャンクB,Dの参照数(1)が「0」となって再構築の対象となる。このため、チャンクB,Dを含むオブジェクトO1,O2を含むアーカイブA1がアーカイブストレージ222から取り出され、オブジェクトO1,O2が、例えばオブジェクトストレージ221を介して、クラウドストレージゲートウェイ100に転送される。また、取り出されたアーカイブA1は、アーカイブストレージ222から削除される。
クラウドストレージゲートウェイ100は、取得したオブジェクトO1,O2から参照数(1)が「0」のチャンクB,Dを除外し、残りのチャンクA,C,E,Fを用いてオブジェクトを再構築する。図13では例として、参照数(1)が大きいチャンクA,Eを用いてオブジェクトOxが生成され、参照数(1)が小さいチャンクC,Fを用いてオブジェクトOyが生成される。そして、オブジェクトOxを含むアーカイブAxと、オブジェクトOyを含むアーカイブAyとがアーカイブストレージ222に格納される。このように参照数(1)が大きいチャンクをまとめたオブジェクトと参照数(1)が小さいチャンクをまとめたオブジェクトとを別々に生成することで、後者のオブジェクト内のチャンクの参照数(1)が早期に「0」になり、このオブジェクトを一括して削除できる可能性を高められる。
次に、図14に示すように、NASクライアント210からクラウドストレージゲートウェイ100に対して、アーカイブストレージ222からのファイルF3,F4の削除が要求されたとする。この場合、ファイルF3,F4に含まれる各チャンクの参照数(1)がデクリメントされ、デクリメント後に参照数(1)が「0」となったチャンクを一定数含むオブジェクトが再構築の対象として特定される。図14の例では、チャンクC,F,H,Iの参照数(1)が「0」となって再構築の対象となる。このため、チャンクC,F,H,Iを含むオブジェクトO3,Oyを含むアーカイブA2,Ayがアーカイブストレージ222から取り出され、オブジェクトO3,Oyが、例えばオブジェクトストレージ221を介して、クラウドストレージゲートウェイ100に転送される。また、取り出されたアーカイブA2,Ayは、アーカイブストレージ222から削除される。
クラウドストレージゲートウェイ100は、取得したオブジェクトO3,Oyから参照数(1)が「0」のチャンクC,F,H,Iを除外し、残りのチャンクGを用いてオブジェクトOzを再構築する。そして、オブジェクトOz含むアーカイブAzがアーカイブストレージ222に格納される。
以上の処理により、参照数(1)が「0」となった無効チャンクをアーカイブストレージ222から削除し、残りの有効チャンクだけを含むアーカイブをアーカイブストレージ222に残すことができる。これにより、アーカイブストレージ222の使用容量を減らすことができる。
しかしながら、図14でファイルF3,F4の削除が要求された際には、前回アーカイブストレージ222に格納されたばかりのアーカイブAyが削除されている。前述のように、アーカイブストレージ222ではアーカイブの最短保管期間が定められており、最短保管期間が経過する前にアーカイブを削除する場合には追加料金が発生する。図14の処理では、アーカイブAyが格納された後、最短保管期間が経過する前にこのアーカイブAyが削除されることになり、追加料金が発生してしまう。
このように、上記のデフラグ処理の比較例によれば、アーカイブストレージ222に定められた最短保管期間が経過する前に削除されるアーカイブが発生する可能性があり、料金コストが増大する可能性があるという問題がある。そこで、本実施の形態では、デフラグ処理において、保管期間が短いアーカイブが削除されにくくなるようにオブジェクトおよびアーカイブの再構築手順を変更する。
以下、図15~図17を用いて、本実施の形態におけるデフラグ処理例について説明する。なお、図15~図17では、説明を簡単にするためにオブジェクト単位でデフラグ対象を選択するものとするが、実際には複数のオブジェクトを含むチャンクグループ単位でデフラグ対象が選択される。
図15は、第2の実施の形態におけるデフラグ処理例を示す第1の図である。また、図16は、第2の実施の形態におけるデフラグ処理例を示す第2の図である。
図15では、図12の状態から、NASクライアント210からクラウドストレージゲートウェイ100に対して、アーカイブストレージ222からのファイルF1,F2の削除が要求されたとする。
この場合、クラウドストレージゲートウェイ100は、ファイルF1,F2に含まれる各チャンクの参照数(1),(2)をデクリメントする。そのデクリメントの後、クラウドストレージゲートウェイ100は、次の条件(1),(2)の少なくとも一方を満たすチャンクを含むオブジェクト(実際はチャンクグループ)を、デフラグ対象として選択する。
条件(1):直近の一定期間にアーカイブストレージ222に対する格納が要求されたファイルから参照されている。
条件(2):参照数(2)が所定の閾値を超えている。
クラウドストレージゲートウェイ100は、デフラグ対象として選択されたオブジェクトから上記条件(1),(2)の少なくとも一方を満たすチャンクを抽出し、抽出された各チャンクと同じ内容のデータを含む新たなチャンクを生成する。このとき、クラウドストレージゲートウェイ100は、生成されたチャンクに対して、元のチャンクの参照数(1),(2)を付け替える。元のチャンクの参照数(1),(2)は、「0」となる。クラウドストレージゲートウェイ100は、生成された新たなチャンクを用いて新たなオブジェクトを生成し、生成されたオブジェクトを含む新たなアーカイブをアーカイブストレージ222に格納するようにクラウドストレージシステム220に要求する。
図15では例として、上記の条件(1),(2)の少なくとも一方を満たすチャンクを含むオブジェクトとして、オブジェクトO1~O3が特定されたとする。例えば、オブジェクトO3に含まれるチャンクGは、最も遅くアーカイブストレージ222への格納が要求されたファイルFmから参照されており、条件(1)を満たす。また、オブジェクトO1に含まれるチャンクAやオブジェクトO2に含まれるチャンクEは、参照数(2)が大きく、条件(2)を満たす。
この場合、クラウドストレージゲートウェイ100は、オブジェクトO1,O2を含むアーカイブA1と、オブジェクトO3を含むアーカイブA2とをアーカイブストレージ222から取り出す。ただし、クラウドストレージゲートウェイ100は、これらのアーカイブA1,A2を、この時点では削除しない。クラウドストレージゲートウェイ100は、アーカイブA1,A2に含まれるオブジェクトO1~O3を、例えばオブジェクトストレージ221を介して取得する。これにより、オブジェクトO1~O3がデフラグ対象として選択される。
次に、図16に示すように、クラウドストレージゲートウェイ100は、取得したオブジェクトO1~O3から、条件(1),(2)の少なくとも一方を満たすチャンクを選択する。図16の例では、チャンクA,E,Gが選択されたとする。クラウドストレージゲートウェイ100は、選択されたチャンクA,E,Gとそれぞれ同じ内容のデータを含む新たなチャンクA’,E’,G’を生成する。クラウドストレージゲートウェイ100は、生成されたチャンクA’,E’,G’に対して、それぞれ元のチャンクA,E,Gの参照数「6」、「5」、「4」を付け替え、元のチャンクA,E,Gの参照数を「0」に更新する。このような参照数の付け替えは、参照数(1),(2)の両方について行われる。
また、元のチャンクA,E,Gに対応するファイルを示す管理情報が、それぞれ新たなチャンクA’,E’,G’に付け替えられる。すなわち、チャンクマップテーブル112において、ファイル番号に対応付けられた元のチャンクのチャンク番号が、新たなチャンクのチャンク番号に更新される。
クラウドストレージゲートウェイ100は、生成されたチャンクA’,E’,G’によって新たなオブジェクトOwを生成し、生成されたオブジェクトOwをアーカイブストレージ222に格納するようにクラウドストレージシステム220に要求する。これにより、オブジェクトOwを含むアーカイブAwが生成され、アーカイブストレージ222に格納される。
図17は、第2の実施の形態におけるデフラグ処理例を示す第3の図である。図17では、図16の状態から、NASクライアント210からクラウドストレージゲートウェイ100に対して、アーカイブストレージ222からのファイルF3,F4の削除が要求されたとする。
この場合、クラウドストレージゲートウェイ100は、ファイルF3,F4に含まれる各チャンクの参照数(1),(2)をデクリメントする。図17の例では、このデクリメントにより、チャンクC,F,H,Iの参照数(2)が「0」になる。これにより、アーカイブA1,A2に含まれるすべてのチャンクの参照数(2)が「0」になる。このため、クラウドストレージゲートウェイ100は、アーカイブA1,A2を削除するようにクラウドストレージシステム220に要求する。アーカイブA1,A2はアーカイブストレージ222に格納されてから十分長い時間が経過しているので、追加領域が発生することなく、アーカイブA1,A2をアーカイブストレージ222から削除できる。
ここで、図13に示した比較例では、チャンクを参照するファイルがアーカイブストレージ222に格納された時期や、参照数の「多さ」には関係なく、単に参照数(1)が「0」のチャンクが多いオブジェクトが再構築の対象として選択されていた。このため、再構築されたオブジェクトを含む新たなアーカイブ(図13ではオブジェクトOyを含むアーカイブAy)がアーカイブストレージ222に格納された後、図14のように短時間でそのアーカイブが削除されるという事態が発生していた。
これに対して、本実施の形態のクラウドストレージゲートウェイ100は、参照数(1)が「0」のチャンクが多いオブジェクトをデフラグ対象として選択しない。その代わり、クラウドストレージゲートウェイ100は、上記の条件(1),(2)の少なくとも一方を満たすチャンクを含むオブジェクトをデフラグ対象として選択する。クラウドストレージゲートウェイ100は、条件(1),(2)の少なくとも一方を満たすチャンクと同じ内容のデータを含む新たなチャンクを生成し、新たなチャンクに元のチャンクの参照数(1),(2)を付け替え、元のチャンクの参照数(1),(2)を「0」にする。クラウドストレージゲートウェイ100は、新たなチャンクを用いて新たなオブジェクトを生成し、生成されたオブジェクトをアーカイブ化してアーカイブストレージ222に格納する。
このようにして格納されたアーカイブは、条件(1),(2)の少なくとも一方を満たすチャンクだけを含む。条件(1)を満たすチャンクは、今後にある程度長い時間が経過してから削除が要求される可能性が高いファイルによって参照されているので、このチャンクの参照数(2)はすぐには「0」になりにくい。また、条件(2)を満たすチャンクも、現時点での参照数(2)が大きいので、参照数(2)はすぐには「0」になりにくい。このため、新たに格納されたアーカイブは、アーカイブに含まれるすべてのチャンクの参照数(2)が「0」になるまでに長い時間がかかる可能性が高く、短時間でアーカイブストレージ222からの削除の対象にはなりにくい。したがって、最短保管期間が経過する前に削除されることによる追加コストが発生しにくい。
一方、新たに生成されたチャンクに対応する元のチャンクは、参照数が「0」に更新されてアーカイブストレージ222に残される。このような元のチャンクを含むアーカイブでは、アーカイブ内のすべてのチャンクの参照数(2)が「0」になるまでアーカイブストレージ222に格納され続ける。
このように、アーカイブの消去は、あくまで、アーカイブ内のすべてのチャンクの参照数(2)が「0」になったときに行われる。すなわち、上記の比較例のように、アーカイブに含まれるオブジェクト内の一部のチャンクを消去してオブジェクトを再構築するという処理が行われない。これにより、最短保管期間が経過する前にアーカイブが削除されるという事態を発生しにくくすることができる。
ここで、本実施の形態の処理では、上記の比較例の場合より、アーカイブストレージ222におけるデータの格納容量や、アーカイブストレージ222との間のアーカイブの入出力回数は多くなる可能性がある。しかし、格納容量や入出力回数の増加によるコストの増加より、最短保管期間が経過する前のアーカイブ削除による追加コストの発生回数を抑制する方が、全体としてコスト削減効果は高い。
また、本実施の形態の処理により、アーカイブストレージ222には、デフラグが進むにつれて削除されにくいアーカイブが増えていく。このため、アーカイブストレージ222との間のアーカイブの入出力回数は、時間経過とともに減少していく。したがって、ある程度長い期間を通して見れば、上記の比較例の場合よりアーカイブストレージ222との間のアーカイブの入出力回数は少なくなるので、このような入出力回数の削減によるコスト削減効果も得ることが可能である。
なお、後のフローチャートで説明するように、実際の処理では、参照数(2)が「0」のチャンクを多く含むチャンクグループの中から、デフラグ対象が選択される。これにより、デフラグ対象として選択されたチャンクグループにおいて、参照数(2)が「0」となるチャンクを増やし、そのチャンクグループ内の全チャンクの参照数(2)が早期に「0」となるようにすることができる。
次に、クラウドストレージゲートウェイ100の処理について、フローチャートを用いて説明する。
図18、図19は、ファイル書き込み処理の手順を示すフローチャートの例である。
[ステップS11]ファイル入出力部120は、NASクライアント210からファイルの書き込み要求とファイルのデータとを受信する。重複排除処理部130の重複判定部131は、書き込みが要求されたファイルのデータを取得し、ディレクトリテーブル111に、そのファイルのディレクトリ情報を示すレコードを追加する。このとき、ファイルにファイル番号が付与される。また、重複判定部131は、ファイルのデータを可変長のチャンクに分割する。
[ステップS12]重複判定部131は、ファイルの先頭側から順に、処理対象のチャンクを1つ選択する。また、重複判定部131は、選択されたチャンクのデータに基づくハッシュキーを算出する。
[ステップS13]重複判定部131は、チャンクマップテーブル112にレコードを追加し、このレコードに次のような情報を登録する。ファイル番号の項目には、書き込みが要求されたファイルのファイル番号が登録され、オフセットおよびサイズの項目には、処理対象のチャンクについての情報が登録される。
[ステップS14]重複判定部131は、チャンク管理テーブル113を参照し、ステップS13で算出されたハッシュキーが登録されたレコードが存在するかを判定する。これにより、ステップS12で選択されたチャンクと同じ内容のチャンクがすでに格納済みか(重複しているか)が判定される。該当するレコードが見つかった場合、処理がステップS15に進められ、該当するレコードが存在しない場合、処理が図19のステップS21に進められる。
[ステップS15]重複判定部131は、ステップS14でチャンク管理テーブル113から検索されたレコードからチャンク番号を取得し、取得したチャンク番号をステップS13でチャンクマップテーブル112に追加したレコードに登録する。
[ステップS16]重複判定部131は、チャンク管理テーブル113のレコードのうち、ステップS15で取得したチャンク番号を含むレコードを参照し、このレコードに登録されている参照数(1)をカウントアップする。
[ステップS17]重複判定部131は、ステップS11で分割されたすべてのチャンクについて処理済みかを判定する。未処理のチャンクがある場合、処理がステップS12に進められ、未処理のチャンクが先頭側から1つ選択されて処理が継続される。一方、すべてのチャンクを処理済みの場合、重複判定部131は、ファイル書き込みが完了したことをファイル入出力部120に通知する。通知を受けたファイル入出力部120は、NASクライアント210に対してファイル書き込みの完了を示す応答情報を送信する。
以下、図19を参照して説明を続ける。
[ステップS21]重複判定部131は、ステップS12で選択されたチャンクについての新たなチャンク番号を算出する。このチャンク番号は、チャンク管理テーブル113に登録されているチャンク番号の最大値に「1」を加算した値とされる。重複判定部131は、チャンク管理テーブル113に新たなレコードを追加する。重複判定部131は、追加されたレコードに対して、算出された新たなチャンク番号と、チャンクのサイズと、ステップS12で算出されたハッシュキーとを登録し、参照数(1)として「1」を登録する。
[ステップS22]重複判定部131は、ステップS12で選択されたチャンクのデータをデータキャッシュ117に格納する。
[ステップS23]重複判定部131は、ステップS21で算出された新たなチャンク番号を、ステップS13でチャンクマップテーブル112に追加されたレコードに登録する。
[ステップS24]ステップS12で選択されたチャンクに対して、オブジェクト番号が割り当てられる。このオブジェクト番号は、チャンクが属するオブジェクトを示す。このオブジェクト番号としては、現在作成中のオブジェクトのオブジェクト番号が割り当てられる。チャンク管理部132は、ステップS21でチャンク管理テーブル113に追加されたレコードに対して、割り当てられたオブジェクト番号を登録する。
また、チャンク管理部132は、同じレコードに対して、現在作成中のオブジェクトが属するチャンクグループを示すチャンクグループ番号を登録する。チャンクグループには、所定数のオブジェクトが作成順に含められる。このため、チャンクグループ番号は、所定数のオブジェクトが作成されるたびにインクリメントされる。
なお、新たなチャンクグループ番号が登録された場合、チャンク管理部132は、そのチャンクグループ番号を含む新たなレコードをチャンクグループ管理テーブル114に追加する。このレコードには、有効チャンク数および無効チャンク数として初期値「0」が登録される。
[ステップS25]チャンク管理部132は、現在作成中のオブジェクトに含まれるチャンクの数が、所定の閾値(Mとする)に達したかを判定する。チャンク数が閾値Mに達した場合、処理がステップS26に進められる。一方、チャンク数が閾値Mに達していない場合、現在作成中のオブジェクトはアクティブ状態であるので、オブジェクトストレージ221に対してアップロードされない。この場合、ステップS26,S27の処理がスキップされる。
[ステップS26]現在作成中のオブジェクトはM個のチャンクを含む非アクティブ状態となり、チャンク管理部132は、このオブジェクトをオブジェクトストレージ221にアップロードするようにクラウド通信部140に依頼する。クラウド通信部140は、PUTコマンドによりオブジェクトをオブジェクトストレージ221にアップロードする。
[ステップS27]チャンク管理部132は、現在作成中のオブジェクトを示すオブジェクト番号をインクリメントする。これにより、次回のステップS24の実行時には、チャンクに対して新たなオブジェクトのオブジェクト番号が割り当てられるようになる。
この後、処理が図18のステップS17に進められる。
図20は、アーカイブストレージに対するデータ格納処理の手順を示すフローチャートの例である。ファイル入出力部120が、NASクライアント210からアーカイブストレージ222に対するファイルの格納要求を受信すると、図20の処理が開始される。この格納要求では、格納対象として1以上のファイルが指定される。
[ステップS31]チャンク管理部132は、格納対象として指定されたファイルに含まれるチャンクに対応するオブジェクト(チャンクのデータを含むオブジェクト)の中から、アーカイブストレージ222に格納されていないオブジェクトを特定する。この処理では、指定されたファイルに対応付けられたチャンク番号に対して、チャンク管理テーブル113においてアーカイブ番号が登録されていない場合に、そのチャンク番号が示すチャンクを含むオブジェクトがアーカイブストレージ222に格納されていないと判定される。
[ステップS32]チャンク管理部132は、ステップS31で特定されたオブジェクトを含むアーカイブをアーカイブストレージ222に格納するように、クラウド通信部140に依頼する。クラウド通信部140は、特定されたオブジェクトのオブジェクト番号を指定して、クラウドストレージシステム220に対してアーカイブストレージ222に対する格納を要求する。これにより、特定されたオブジェクトを含むアーカイブが、オブジェクトストレージ221からアーカイブストレージ222に格納される。
[ステップS33]チャンク管理部132は、チャンク管理テーブル113から、ステップS31で特定されたオブジェクトに含まれる各チャンクに対応するレコードを特定する。チャンク管理部132は、特定された各レコードに対して、アーカイブストレージ222に格納されたアーカイブを示すアーカイブ番号を登録する。
[ステップS34]チャンク管理部132は、ステップS31で特定されたオブジェクトのそれぞれについて、次のような処理を実行する。チャンク管理部132は、チャンクグループ管理テーブル114から、該当オブジェクトを含むチャンクグループに対応するレコードを特定する。チャンク管理部132は、特定されたレコードに登録された有効チャンク数に、該当オブジェクトに含まれるチャンクの数(上記のM)を加算する。
[ステップS35]チャンク管理部132は、デフラグ判定テーブル115から、ステップS32でアーカイブストレージ222に格納されたアーカイブが属するアーカイブグループに対応するレコードを特定する。チャンク管理部132は、特定されたレコードに登録された有効チャンク数に、当該アーカイブに含まれるチャンクの数(ステップS34で加算されたチャンク数の合計値)を加算する。
[ステップS36]チャンク管理部132は、チャンク管理テーブル113から、アーカイブストレージ222への格納が要求された各ファイルに対応付けられたチャンク番号を含むレコードを特定する。チャンク管理部132は、特定された各レコードに対して、アーカイブ格納時刻として現在の日時を登録する。すでに日時が登録されている場合には、その日時が現在の日時によって更新される。
[ステップS37]チャンク管理部132は、アーカイブストレージ222への格納が要求された各ファイルに対応付けられたチャンク番号のそれぞれについて、次のような処理を実行する。チャンク管理部132は、チャンク管理テーブル113から該当チャンク番号を含むレコードを特定し、特定されたレコードに登録された参照数(2)をインクリメントする。
図21は、アーカイブストレージからのデータ削除処理の手順を示すフローチャートの例である。ファイル入出力部120がNASクライアント210から、アーカイブストレージ222からのファイルの削除要求を受信すると、図21の処理が開始される。この削除要求では、削除対象として1以上のファイルが指定される。
[ステップS41]チャンク管理部132は、チャンク管理テーブル113を参照し、削除対象として指定されたファイルに含まれる各チャンクに対応する参照数(1),(2)を減算する。具体的には、チャンク管理部132は、指定された各ファイルに対応付けられたチャンク番号のそれぞれについて、次のような処理を実行する。チャンク管理部132は、チャンク管理テーブル113から該当チャンク番号を含むレコードを特定し、特定されたレコードに登録された参照数(1),(2)をデクリメント(「1」だけ減算)する。
[ステップS42]チャンク管理部132は、ステップS41の処理により参照数(2)が「0」のチャンクが発生したかを判定する。該当するチャンクが発生した場合、処理がステップS43に進められ、該当するチャンクが発生していない場合、データ削除処理が終了する。
[ステップS43]チャンク管理部132は、チャンク管理テーブル113およびデフラグ判定テーブル115の該当レコードに登録された有効チャンク数および無効チャンク数を更新する。具体的には、チャンク管理部132は、参照数(2)が「0」になったチャンクのそれぞれについて、次のような処理を実行する。
チャンク管理部132は、チャンク管理テーブル113から、該当チャンクが属するチャンクグループに対応するレコードを特定する。チャンク管理部132は、特定されたレコードに登録された有効チャンク数をデクリメントし、無効チャンク数をインクリメントする。また、チャンク管理部132は、デフラグ判定テーブル115から、該当チャンクが属するアーカイブグループに対応するレコードを特定する。チャンク管理部132は、特定されたレコードに登録された有効チャンク数をデクリメントし、無効チャンク数をインクリメントする。
[ステップS44]チャンク管理部132は、有効チャンク数が「0」のアーカイブ(所属するすべてのチャンクの参照数(2)が「0」のアーカイブ)があるかを判定する。該当するアーカイブがある場合、処理がステップS45に進められ、該当するアーカイブがない場合、処理がステップS46に進められる。
[ステップS45]チャンク管理部132は、有効チャンク数が「0」のアーカイブをアーカイブストレージ222から削除するように、クラウド通信部140に依頼する。クラウド通信部140は、該当するアーカイブのアーカイブ番号を指定して、クラウドストレージシステム220に対してアーカイブストレージ222からの削除を要求する。これにより、該当するアーカイブがアーカイブストレージ222から削除される。
なお、ステップS44,S45の処理は、アーカイブ単位でなく、アーカイブグループ単位で実行されてもよい。この場合、ステップS44では、デフラグ判定テーブル115において有効チャンク数が「0」のアーカイブグループがあるかが判定される。そして、該当するアーカイブグループがある場合、ステップS45では、そのアーカイブグループに含まれる各アーカイブがアーカイブストレージ222から削除される。
[ステップS46]チャンク管理部132は、デフラグ判定テーブル115を参照し、無効チャンク数の割合が所定の閾値を超えたアーカイブグループがあるかを判定する。無効チャンク数の割合は、有効チャンク数と無効チャンク数との合計値に対する、無効チャンク数の割合として算出される。該当するアーカイブグループがある場合、処理がステップS47に進められ、該当するアーカイブグループがない場合、データ削除処理が終了する。
[ステップS47]チャンク管理部132は、デフラグ処理部133に対してデフラグ処理の開始を指示する。これにより、図22、図23に示すデフラグ処理の実行が開始される。
図22、図23は、デフラグ処理の手順を示すフローチャートの例である。
[ステップS51]デフラグ処理部133は、図21のステップS47でデフラグ処理の開始が指示されてから、一定時間が経過するのを待つ。そして、デフラグ処理部133は、一定時間が経過するとステップS52の処理を実行する。このように開始指示から一定時間後にデフラグ処理を開始することで、参照数(2)が「0」の無効チャンクがさらに発生し、一括して削除可能なアーカイブがより多く発生することを期待できる。
[ステップS52]デフラグ処理部133は、デフラグ判定テーブル115を参照し、無効チャンク数の割合が所定の閾値を超えたアーカイブグループを特定する。図21のステップS46と同様に、無効チャンク数の割合は、有効チャンク数と無効チャンク数との合計値に対する、無効チャンク数の割合として算出される。
[ステップS53]デフラグ処理部133は、ステップS52で特定されたアーカイブグループに含まれるチャンクグループの中から、処理対象として1つを選択する。
[ステップS54]デフラグ処理部133は、選択されたチャンクグループが、前述の条件(1),(2)の少なくとも一方を満たすチャンクを含むかを判定する。チャンクが条件(1)を満たすことは、チャンク管理テーブル113の該当レコードに登録されたアーカイブ格納時刻が直近の一定期間内の時刻であることにより判定される。また、チャンクが条件(2)を満たすことは、チャンクに対応する参照数(2)が所定の閾値を超えていることにより判定される。なお、条件(2)の閾値としては、例えば、参照数(2)が「2」以上の全チャンク(N個とする)の参照数(2)に基づく中央値(昇順でN/2番目の値)が設定される。
選択されたチャンクグループが該当するチャンクを1つ以上含む場合、処理がステップS55に進められ、該当するチャンクを1つも含まない場合、処理がステップS56に進められる。
[ステップS55]デフラグ処理部133は、選択されたチャンクグループをデフラグ対象に指定する。
[ステップS56]デフラグ処理部133は、ステップS52で特定されたアーカイブグループに含まれるチャンクグループのすべてを処理対象として選択済みかを判定する。未選択のチャンクグループがある場合、処理がステップS53に進められ、未選択のチャンクグループが1つ選択される。一方、すべてのチャンクグループが選択済みの場合、処理がステップS57に進められる。
[ステップS57]デフラグ処理部133は、デフラグ対象に指定されたチャンクグループを含むアーカイブをアーカイブストレージ222からダウンロードするように、クラウド通信部140に依頼する。クラウド通信部140は、該当するアーカイブのアーカイブ番号を指定して、クラウドストレージシステム220に対してアーカイブストレージ222からの取り出しを要求する。これにより、該当するアーカイブがクラウドストレージゲートウェイ100にダウンロードされる。
[ステップS58]デフラグ処理部133は、ダウンロードされたアーカイブに含まれるチャンクから、条件(1),(2)の少なくとも一方を満たすチャンクを抽出する。デフラグ処理部133は、抽出されたチャンクを、第1キーとしてチャンク管理テーブル113のアーカイブ格納日時を用い、第2キーとしてチャンク管理テーブル113の参照数(2)を用いてソートする。すなわち、抽出されたチャンクが、アーカイブ格納日時が新しい順にソートされ、アーカイブ格納日時が同じチャンクについて、参照数(2)が多い順にソートされる。
以下、図23を参照して説明を続ける。
[ステップS61]デフラグ処理部133は、ステップS58でソートされたチャンクのうち、先頭側から処理対象として1つを選択する。
[ステップS62]デフラグ処理部133は、デフラグ処理において作成中の既存チャンクグループがない、または、作成中の既存チャンクグループがあるがそのチャンクグループのサイズが規定サイズを超えている、という条件のいずれかを満たすかを判定する。いずれかの条件を満たす場合、処理がステップS63に進められ、いずれの条件も満たさない場合、処理がステップS64に進められる。
[ステップS63]デフラグ処理部133は、チャンクグループを新たに作成する。作成されたチャンクグループには、新たなチャンクグループ番号が割り当てられる。また、チャンクグループ管理テーブル114に、新たなチャンクグループに対応するレコードが追加され、チャンクグループ番号が登録される。
[ステップS64]デフラグ処理部133は、選択されたチャンクと同じ内容のデータを含む新たなチャンクをチャンクグループに追加する。ステップS63が実行された場合、ステップS63で新たに作成されたチャンクグループに新たなチャンクが追加される。一方、ステップS62でNoと判定された場合、作成中の既存チャンクグループに新たなチャンクが追加される。
この処理では、デフラグ処理部133は、新たなチャンクに新たなチャンク番号を割り当て、チャンク管理テーブル113にレコードを追加して、そのレコードにチャンク番号を登録する。また、デフラグ処理部133は、追加されたレコードに、追加先のチャンクグループのチャンクグループ番号を登録し、オブジェクト番号として、チャンクグループ番号と一対一で対応する新たなオブジェクト番号を登録する。なお、オフセットおよびサイズとしては、チャンクグループにおけるチャンクの先頭位置を示す値が登録される。
[ステップS65]デフラグ処理部133は、元のチャンク(ステップS61で選択されたチャンク)から新たなチャンクに対して、参照数(1),(2)を付け替える。具体的には、デフラグ処理部133は、チャンク管理テーブル113において、元のチャンクに対応する参照数(1),(2)の値を新たなチャンクに対応する参照数(1),(2)の項目にそれぞれコピーし、元のチャンクに対応する参照数(1),(2)の値を「0」に更新する。
また、デフラグ処理部133は、チャンク管理テーブル113において、元のチャンクに対応するハッシュキーの値を新たなチャンクに対応するハッシュキーの項目にコピーする。さらに、デフラグ処理部133は、チャンクマップテーブル112に登録された、元のチャンクのチャンク番号を、すべて新たなチャンクのチャンク番号に更新する。これにより、チャンクとファイルとの対応関係を示す管理情報が更新され、元のチャンクはファイルから参照されなくなる。
[ステップS66]デフラグ処理部133は、ステップS58でソートされたチャンクのすべてを処理対象として選択済みかを判定する。未選択のチャンクがある場合、処理がステップS61に進められ、未選択のチャンクのうち先頭のチャンクが選択される。一方、該当するすべてのチャンクが選択済みの場合、処理がステップS67に進められる。
[ステップS67]デフラグ処理部133は、ステップS61~S66の処理で作成されたチャンクグループを含むアーカイブをアーカイブストレージ222に格納するように、クラウド通信部140に依頼する。クラウド通信部140は、作成された各チャンクグループを個別のオブジェクトとしてオブジェクトストレージ221にアップロードする。その後、クラウド通信部140は、アップロードされた各オブジェクトを含むアーカイブをアーカイブストレージ222に格納するように要求する。これにより、該当オブジェクトがアーカイブストレージ222に格納される。
[ステップS68]デフラグ処理部133は、チャンク管理テーブル113のレコードのうち、アーカイブストレージ222に格納されたアーカイブに含まれる全チャンクのレコードに対して、そのアーカイブのアーカイブ番号を登録する。また、デフラグ処理部133は、それらのレコードのアーカイブ格納日時の項目に、現在の日時を登録する。
さらに、デフラグ処理部133は、チャンクグループ管理テーブル114のレコードのうち、上記アーカイブに含まれる各チャンクグループに対応するレコードの有効チャンク数に、チャンクグループに含まれるチャンクの数を加算する。また、デフラグ判定テーブル115において上記アーカイブのアーカイブ番号に対応付けられた有効チャンク数に、上記アーカイブに含まれるチャンクの数を加算する。
また、デフラグ処理部133は、ステップS65で参照数(1),(2)が「0」に更新された元のチャンクのそれぞれについて、以下の処理を実行する。デフラグ処理部133は、チャンクグループ管理テーブル114のレコードのうち、該当チャンクが属するチャンクグループに対応するレコードにおいて、有効チャンク数をデクリメントし、無効チャンク数をインクリメントする。さらに、デフラグ処理部133は、デフラグ処理部133は、デフラグ判定テーブル115のレコードのうち、該当チャンクが属するアーカイブに対応するレコードにおいて、有効チャンク数をデクリメントし、無効チャンク数をインクリメントする。
[ステップS69]チャンク管理部132は、有効チャンク数が「0」のアーカイブ(所属するすべてのチャンクの参照数(2)が「0」のアーカイブ)があるかを判定する。該当するアーカイブがある場合、処理がステップS70に進められ、該当するアーカイブがない場合、デフラグ処理が終了する。
[ステップS70]チャンク管理部132は、有効チャンク数が「0」のアーカイブをアーカイブストレージ222から削除するように、クラウド通信部140に依頼する。クラウド通信部140は、該当するアーカイブのアーカイブ番号を指定して、クラウドストレージシステム220に対してアーカイブストレージ222からの削除を要求する。これにより、該当するアーカイブがアーカイブストレージ222から削除される。
なお、ステップS44,S45と同様に、ステップS69,S70の処理は、アーカイブ単位でなく、アーカイブグループ単位で実行されてもよい。
以上の処理によれば、クラウドストレージゲートウェイ100はデフラグ処理において、早期に削除されにくいアーカイブをアーカイブストレージ222に格納する。これにより、アーカイブが既定の最短保管期間の経過前にアーカイブストレージ222から削除される事態の発生確率を抑制できる。その結果、アーカイブストレージ222の利用コストを削減できる可能性を高めることができる。
なお、図22のステップS53~S56では、チャンクグループ単位でなくオブジェクト単位でデフラグ対象が指定されてもよい。しかし、実際の処理では大量のオブジェクトが作成されることから、オブジェクト単位でデフラグ対象が指定されると、小さなデフラグ対象データを用いたデフラグ処理が高頻度で実行される可能性があり、その場合には処理効率が低い。これに対して、複数のオブジェクトを含むチャンクグループ単位でデフラグ対象が指定されることで、処理効率を高めることができる。
同様に、図21のステップS46や図22のステップS52では、アーカイブグループ単位でなくアーカイブ単位で無効チャンクの割合が算出されてもよい。しかし、アーカイブグループ単位で無効チャンクの割合が算出される方が、処理効率を高めることができる。
なお、上記の各実施の形態に示した装置(例えば、ストレージ制御装置1、クラウドストレージゲートウェイ100)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
1 ストレージ制御装置
2 外部ストレージ
AC1,AC2,ACn,ACx 保管データセット
CK1~CK9,CK21,CK22,CK1’,CK5’,CK7’ チャンク
FL1~FL4,FLm ファイル

Claims (5)

  1. コンピュータに、
    書き込みが要求された複数のファイルのそれぞれを分割することで得られた複数の分割データセットから、重複を排除して複数のチャンクを取得し、前記複数のチャンクから選択された2以上のチャンクをそれぞれまとめて複数の保管データセットを生成し、
    前記複数のファイルのうち第1のファイルの格納要求を受信すると、前記複数のチャンクのうち前記第1のファイルから参照されるチャンクを含む1以上の第1の保管データセットを特定し、前記1以上の第1の保管データセットを外部ストレージに格納するとともに、前記複数のチャンクのうち前記第1のファイルから参照されるチャンクに対応付けられた参照数を、前記複数の分割データセットのうち前記第1のファイルに含まれる分割データセットから参照される数の分だけ増加させ、
    前記複数のファイルのうち第2のファイルの削除要求を受信すると、前記複数のチャンクのうち前記第2のファイルから参照されるチャンクに対応する前記参照数を、前記複数の分割データセットのうち前記第2のファイルに含まれる分割データセットから参照される数の分だけ減少させ、
    前記複数の保管データセットのうち前記外部ストレージに格納された保管データセットの中から、前記複数のファイルのうち、直近の一定期間に前記外部ストレージへの格納が要求されたファイルから参照されている1以上の第1のチャンクを特定して前記外部ストレージから取得し、
    前記1以上の第1のチャンクとそれぞれ同じデータを有する1以上の第2のチャンクを生成し、前記1以上の第1のチャンクのそれぞれに対応する前記参照数を前記1以上の第2のチャンクにそれぞれ付け替えるとともに、前記1以上の第1のチャンクのそれぞれに対応する前記参照数を0に更新し、前記1以上の第2のチャンクをまとめて新たな保管データセットを生成して前記外部ストレージに格納し、
    前記複数の保管データセットのうち前記外部ストレージに格納された保管データセットおよび前記新たな保管データセットの中から、対応する保管データセット内のすべてのチャンクに対応する前記参照数が0である第2の保管データセットが検出されると、前記第2の保管データセットを前記外部ストレージから削除する、
    ストレージ制御プログラム。
  2. 前記1以上の第1のチャンクとして、前記複数の保管データセットのうち前記外部ストレージに格納された保管データセットの中から、前記参照数が所定の閾値より大きいチャンクがさらに特定される、
    請求項1記載のストレージ制御プログラム。
  3. 前記1以上の第1のチャンクの特定では、
    前記複数の保管データセットのうち前記外部ストレージに格納された保管データセットの中から、前記参照数が0のチャンクの割合が所定割合を超える1以上の第3の保管データセットを特定し、
    前記1以上の第3の保管データセットの中から前記1以上の第1のチャンクを特定する、
    請求項1または2記載のストレージ制御プログラム。
  4. コンピュータが、
    書き込みが要求された複数のファイルのそれぞれを分割することで得られた複数の分割データセットから、重複を排除して複数のチャンクを取得し、前記複数のチャンクから選択された2以上のチャンクをそれぞれまとめて複数の保管データセットを生成し、
    前記複数のファイルのうち第1のファイルの格納要求を受信すると、前記複数のチャンクのうち前記第1のファイルから参照されるチャンクを含む1以上の第1の保管データセットを特定し、前記1以上の第1の保管データセットを外部ストレージに格納するとともに、前記複数のチャンクのうち前記第1のファイルから参照されるチャンクに対応付けられた参照数を、前記複数の分割データセットのうち前記第1のファイルに含まれる分割データセットから参照される数の分だけ増加させ、
    前記複数のファイルのうち第2のファイルの削除要求を受信すると、前記複数のチャンクのうち前記第2のファイルから参照されるチャンクに対応する前記参照数を、前記複数の分割データセットのうち前記第2のファイルに含まれる分割データセットから参照される数の分だけ減少させ、
    前記複数の保管データセットのうち前記外部ストレージに格納された保管データセットの中から、前記複数のファイルのうち、直近の一定期間に前記外部ストレージへの格納が要求されたファイルから参照されている1以上の第1のチャンクを特定して前記外部ストレージから取得し、
    前記1以上の第1のチャンクとそれぞれ同じデータを有する1以上の第2のチャンクを生成し、前記1以上の第1のチャンクのそれぞれに対応する前記参照数を前記1以上の第2のチャンクにそれぞれ付け替えるとともに、前記1以上の第1のチャンクのそれぞれに対応する前記参照数を0に更新し、前記1以上の第2のチャンクをまとめて新たな保管データセットを生成して前記外部ストレージに格納し、
    前記複数の保管データセットのうち前記外部ストレージに格納された保管データセットおよび前記新たな保管データセットの中から、対応する保管データセット内のすべてのチャンクに対応する前記参照数が0である第2の保管データセットが検出されると、前記第2の保管データセットを前記外部ストレージから削除する、
    ストレージ制御方法。
  5. 書き込みが要求された複数のファイルのそれぞれを分割することで得られた複数の分割データセットから、重複を排除して複数のチャンクを取得し、前記複数のチャンクから選択された2以上のチャンクをそれぞれまとめて複数の保管データセットを生成し、
    前記複数のファイルのうち第1のファイルの格納要求を受信すると、前記複数のチャンクのうち前記第1のファイルから参照されるチャンクを含む1以上の第1の保管データセットを特定し、前記1以上の第1の保管データセットを外部ストレージに格納するとともに、前記複数のチャンクのうち前記第1のファイルから参照されるチャンクに対応付けられた参照数を、前記複数の分割データセットのうち前記第1のファイルに含まれる分割データセットから参照される数の分だけ増加させ、
    前記複数のファイルのうち第2のファイルの削除要求を受信すると、前記複数のチャンクのうち前記第2のファイルから参照されるチャンクに対応する前記参照数を、前記複数の分割データセットのうち前記第2のファイルに含まれる分割データセットから参照される数の分だけ減少させ、
    前記複数の保管データセットのうち前記外部ストレージに格納された保管データセットの中から、前記複数のファイルのうち、直近の一定期間に前記外部ストレージへの格納が要求されたファイルから参照されている1以上の第1のチャンクを特定して前記外部ストレージから取得し、
    前記1以上の第1のチャンクとそれぞれ同じデータを有する1以上の第2のチャンクを生成し、前記1以上の第1のチャンクのそれぞれに対応する前記参照数を前記1以上の第2のチャンクにそれぞれ付け替えるとともに、前記1以上の第1のチャンクのそれぞれに対応する前記参照数を0に更新し、前記1以上の第2のチャンクをまとめて新たな保管データセットを生成して前記外部ストレージに格納し、
    前記複数の保管データセットのうち前記外部ストレージに格納された保管データセットおよび前記新たな保管データセットの中から、対応する保管データセット内のすべてのチャンクに対応する前記参照数が0である第2の保管データセットが検出されると、前記第2の保管データセットを前記外部ストレージから削除する、処理部、
    を有するストレージ制御装置。
JP2022059254A 2022-03-31 2022-03-31 ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置 Pending JP2023150248A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022059254A JP2023150248A (ja) 2022-03-31 2022-03-31 ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022059254A JP2023150248A (ja) 2022-03-31 2022-03-31 ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置

Publications (1)

Publication Number Publication Date
JP2023150248A true JP2023150248A (ja) 2023-10-16

Family

ID=88326422

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022059254A Pending JP2023150248A (ja) 2022-03-31 2022-03-31 ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置

Country Status (1)

Country Link
JP (1) JP2023150248A (ja)

Similar Documents

Publication Publication Date Title
JP6304406B2 (ja) ストレージ装置、プログラム、情報処理方法
US10621142B2 (en) Deduplicating input backup data with data of a synthetic backup previously constructed by a deduplication storage system
US9880746B1 (en) Method to increase random I/O performance with low memory overheads
JP6033241B2 (ja) データー重複排除のためのバックアップおよび復元方策
US9141621B2 (en) Copying a differential data store into temporary storage media in response to a request
US20190361850A1 (en) Information processing system and information processing apparatus
US9990395B2 (en) Tape drive system server
US9189494B2 (en) Object file system
US11372576B2 (en) Data processing apparatus, non-transitory computer-readable storage medium, and data processing method
US9471245B1 (en) Method and apparatus for transferring modified data efficiently
EP3495964B1 (en) Apparatus and program for data processing
TW201734750A (zh) 包含固態硬碟儲存裝置及類似物的重複資料刪除快取記憶體
US9268832B1 (en) Sorting a data set by using a limited amount of memory in a processing system
JP2013222230A (ja) 情報処理システム
JP2019506667A (ja) プロセッサ・グリッド内の分散データ重複排除
US8904128B2 (en) Processing a request to restore deduplicated data
JP7295422B2 (ja) 情報処理装置および情報処理プログラム
JP7323801B2 (ja) 情報処理装置および情報処理プログラム
JP2023150248A (ja) ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置
JP6281333B2 (ja) ストレージシステム
JP2022074654A (ja) 情報処理装置、情報処理方法および情報処理プログラム
US20240037034A1 (en) Data intake buffers for deduplication storage system
JP2024001607A (ja) 情報処理装置および情報処理方法