JP7282114B2 - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
JP7282114B2
JP7282114B2 JP2021021300A JP2021021300A JP7282114B2 JP 7282114 B2 JP7282114 B2 JP 7282114B2 JP 2021021300 A JP2021021300 A JP 2021021300A JP 2021021300 A JP2021021300 A JP 2021021300A JP 7282114 B2 JP7282114 B2 JP 7282114B2
Authority
JP
Japan
Prior art keywords
chunk
storage device
difference
data
fingerprint
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.)
Active
Application number
JP2021021300A
Other languages
English (en)
Other versions
JP2022123774A (ja
Inventor
悠冬 鴨生
光雄 早坂
鎮平 野村
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2021021300A priority Critical patent/JP7282114B2/ja
Priority to CN202110986459.3A priority patent/CN114924687A/zh
Priority to US17/468,654 priority patent/US11372570B1/en
Publication of JP2022123774A publication Critical patent/JP2022123774A/ja
Application granted granted Critical
Publication of JP7282114B2 publication Critical patent/JP7282114B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、複数のストレージ装置間でデータを転送するための技術に関する。
ハイブリッドクラウドやEdge-Core連携のような拠点間で連携するプラットフォームへのニーズが高まっている。ファイル仮想化機能は、こうしたニーズに対応する技術である。ファイル仮想化機能には、Edgeストレージで生成/更新されたファイルのデータをバイト単位で検知して非同期にCoreストレージにマイグレーションする機能、クライアントからアクセスされていないファイルをストレージから削除するスタブ化機能、およびクライアントから再参照されたときにCoreストレージからバイト単位で対象のデータを取得するリコール機能等がある。
ファイル仮想化機能における最大のボトルネックは、拠点間のネットワーク転送(例えば、WAN(Wide Area Network)転送)であり、ネットワーク通信量を削減する技術が求められる。
特許文献1には、Edgeでチャンクのフィンガプリント(FP)を計算して、FPをCoreに転送し、Coreで重複判定することにより、CoreでFPが同一のチャンクが存在する場合におけるチャンクの転送を削減する技術(ネットワーク重複排除という)が開示されている。
米国特許第6928526号明細書
例えば、特許文献1に開示された技術によると、必ずしもCoreとEdgeとの間のネットワークにおける通信量の削減に有効でない場合がある。例えば、特許文献1による技術では、更新が生じた転送対象のチャンクのFPを計算する。FPの計算にはチャンクのデータが必要であり、チャンク内の大部分がスタブ化された領域(スタブ領域)である場合、スタブ領域のデータをリコールする必要があり、結果としてネットワークの通信量が増加してしまう虞がある。また、チャンク内の更新領域が少ない場合には、FPを通信することにより、ネットワークの通信量が増加してしまう虞がある。
本発明は、上記事情に鑑みなされたものであり、データを転送するストレージ装置間の通信量を低減することのできる技術を提供することにある。
上記目的を達成するため、一観点に係るストレージ装置は、所定のデータ単位のデータを所定の分割データ単位を単位として重複排除して管理可能な他のストレージ装置にネットワークを介して接続され、プロセッサを備えるストレージ装置であって、前記プロセッサは、差分を含むデータ単位のデータを前記他のストレージ装置に転送する場合に、差分部分のサイズと、前記差分部分を含む分割データ単位である差分分割データ単位のフィンガプリントのサイズとに基づいて、前記差分部分を前記他のストレージ装置に送信するか、前記差分分割データ単位のフィンガプリントを前記他のストレージ装置に送信するかを判定し、判定結果に従って、前記差分部分又は前記フィンガプリントを前記他のストレージ装置に送信する。
本発明によれば、データを転送するストレージ装置間の通信量を低減することができる。
図1は、第1実施例に係る計算機システムの構成の一例を示す図である。 図2は、第1実施例に係るEdgeストレージ及びCoreストレージの構成の一例を示す図である。 図3は、第1実施例に係るファイル仮想化管理情報の構成図である。 図4は、第1実施例に係る重複状態管理表の構成図である。 図5は、第1実施例に係る重複チャンク管理表の構成図である。 図6は、第1実施例に係る重複判定表の構成図である。 図7は、第1実施例に係る転送重複チャンクリストの構成図である。 図8は、第1実施例に係るファイルマイグレーション処理の一例のフローチャートである。 図9は、第1実施例に係る差分転送処理の一例のフローチャートである。 図10は、第1実施例に係るネットワーク重複排除処理の一例のフローチャートである。 図11は、第1実施例に係る差分反映処理の一例のフローチャートである。 図12は、第2実施例に係る差分転送処理の一例のフローチャートである。 図13は、第3実施例に係るスタブファイルの重複排除処理の一例のフローチャートである。
いくつかの実施例について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「AAA表」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAA表」を「AAA情報」と呼ぶことができる。
また、以下の説明では、「プログラム」を動作主体として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェースデバイス等を用いながら行うため、処理の動作主体が、プロセッサ(或いは、そのプロセッサを有する装置又はシステム)とされてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記録メディア(例えば可搬型の記録メディア)であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
第1実施例に係る計算機システム1では、Coreサイト20において、ファイル(データ単位の一例)に対する可変長重複排除処理を行う。ここで、可変長重複排除とは、ファイルのデータを所定の方法により可変長チャンク(分割データ単位の一例)に分割し、可変長チャンクを単位として重複排除する処理である。
図1は、第1実施例に係る計算機システムの構成の一例を示す図である。
計算機システム1は、Edgeサイト10-1、10-2と、Coreサイト20とを有する。Edgeサイト10-1、10-2と、Coreサイト20との間は、ネットワーク30を介して接続されている。ネットワーク30は、例えば、WANである。なお、ネットワーク30はこれに限定されず、種々のネットワークを利用可能である。また、図1に示す計算機システム1では、2つのEdgeサイト10-1、10-2を備えているが、Edgeサイトの数は、これに限定されない。
Edgeサイト10-1は、ストレージ装置(第2ストレージ装置)の一例としてのEdgeストレージ100と、クライアント400と、管理端末500とを有する。Edgeストレージ100、クライアント400、及び管理端末500は、例えば、LAN(Local Area Network)により相互に接続されている。
Edgeストレージ100は、例えば、HTTP(Hypertext Transfer Protocol)などのプロトコルを用いて、Coreストレージ200にアクセスする。Edgeストレージ100の具体的構成については後述する。
クライアント400は、各種情報処理が可能なコンピュータ等の情報処理装置である。クライアント400は、例えば、NFS(Network File System)やCIFS(Common Internet File System)、HTTP(HyperText Transfer Protocol)などのプロトコルを用いてEdgeストレージ100が提供するストレージサービスを利用する。
管理端末500は、Edgeストレージ100の管理を行い、Edgeストレージ100に異常があった際などにEdgeストレージ100に対して各種操作指示等を行う。
Edgeサイト10-2は、ストレージ装置(第2ストレージ装置)の一例としてのEdgeストレージ100と、クライアント400とを有する。なお、図1に示すEdgeサイト10-1、10-2のハードウェア構成は単なる例示であり、少なくともそれぞれ1台のEdgeストレージ100及びクライアント400を有する構成であれば、その台数に制限はなく、他のハードウェアを有していてもよい。
Coreサイト20は、ストレージ装置(第1ストレージ装置)の一例としてのCoreストレージ200と、クライアント400とを有する。Coreストレージ200は、Edgeサイト10-1、10-2のEdgeストレージ100に格納されたファイル(データ単位の一例)のバックアップ先として機能する。
図2は、第1実施例に係るEdgeストレージ及びCoreストレージの構成の一例を示す図である。なお、図2においては、Edgeストレージ100と、Coreストレージ200とを、いずれとしても動作可能な機能を有するストレージとして構成した例を示している。
ストレージ(Edgeストレージ100,Coreストレージ200)は、コントローラ110と、ストレージシステム130とを有する。
コントローラ110は、プロセッサの一例としてのCPU111と、メモリ112と、キャッシュ113と、LAN インターフェース(I/F)114と、WAN I/F115と、I/F116と、を有する。これらの構成は、例えばバス等の通信路により相互に接続されている。
CPU111は、コントローラ110及びストレージ全体の動作制御を行う。
メモリ112は、例えば、RAM(RANDOM ACCESS MEMORY)であり、CPU111による動作制御を実行するためのプログラム及びデータを一時的に記憶する。メモリ112は、ネットワークストレージプログラムP1、IO HookプログラムP3、ローカルストレージプログラムP5、Data MoverプログラムP7、差分反映プログラムP9、及びデータ容量削減プログラムP11を格納する。なお、メモリ112に格納されている各プログラム及び情報は、後述する記憶デバイス134に格納されていてもよい。
ネットワークストレージプログラムP1は、CPU111に実行されることにより、クライアント400等からのRead/Write等の各種要求を受領し、この要求に含まれるプロトコルを処理する。例えば、ネットワークストレージプログラP1は、NFS(Network File System)やCIFS(Common Internet File System)、HTTP(HyperText Transfer Protocol)などのプロトコルを処理する。
IO HookプログラムP3は、CPU111に実行されることにより、ネットワークストレージプログラムP1によるストレージシステム130に格納されたファイルに対する操作を検出する。なお、I/O HookプログラムP3は、ディレクトリや、オブジェクト(データ単位の一例)に対する操作を検出対象としてもよい。
ローカルストレージプログラムP5は、CPU111に実行されることにより、ネットワークストレージプログラムP1に対して、ファイルシステムやオブジェクトストレージを提供する。
Data MoverプログラムP7は、IO HookプログラムP3により検出された記憶デバイス134内のファイルをCoreストレージ200にマイグレーション、スタブ化、またはリストアする。
差分反映プログラムP9は、CPU111に実行されることにより、他拠点(他サイト)のData MoverプログラムP7からファイルに対するデータ更新を受け付け、そのデータ更新を記憶デバイス134に反映する。
データ容量削減プログラムP11は、CPU111に実行されることにより、記憶デバイス134に格納されたユーザファイルをインラインまたはポストプロセスで重複排除する。
なお、第1実施例においては、図2に示すストレージをEdgeストレージ100として使用する場合には、差分反映プログラムP9と、データ容量削減プログラムP11とを実行させない、すなわち、重複排除や、Edgeストレージ100での差分反映を行わないようにしている。したがて、ストレージをEdgeストレージ100としてのみ使用する場合には、差分反映プログラムP9と、データ容量削減プログラムP11とがなくてもよい。
キャッシュ113は、例えば、RAMであり、クライアント400からライトされるデータや、ストレージシステム130からリードしたデータを一時的に格納する。LAN I/F114は、サイト内の他の装置(クライアント400等)との間での通信を行う。WAN I/F115は、他のサイト(他のEdgeサイト10、Coreサイト20)の装置との間でネットワーク30を介して通信を行う。I/F116は、ストレージシステム130との間での通信を行う。なお、図1においては、I/F116にストレージシステム130が接続されているが、記憶デバイス134が接続されていてもよい。
ストレージシステム130は、例えば、FC-SAN(Fibre Channel Storage Area Network)等のブロック形式のストレージ機能をコントローラ110に提供する。ストレージシステム130は、プロセッサの一例としてのCPU131と、メモリ132と、キャッシュ133と、記憶デバイス134と、I/F136と、を有する。
CPU131は、ストレージシステム130の動作制御を行う。メモリ132は、例えば、RAMであり、CPU131の動作制御を実行するプログラム及びデータを一時的に記憶する。キャッシュ133は、コントローラ110からライトされるデータや記憶デバイス134からリードされたデータを一時的に格納する。I/F136は、記憶デバイス134とコントローラ110との間での通信を行う。記憶デバイス134は、例えば、ハードディスクやフラッシュメモリなどであり、クライアント400のユーザが利用するファイル(ユーザファイル)を含む各種ファイルを格納する。
また、記憶デバイス134は、ファイル仮想化管理情報T10と、重複状態管理表T20と、重複チャンク管理表T30と、重複判定表T40とを格納する。これら情報及び表の詳細については後述する。なお、第1実施例においては、図2に示すストレージをEdgeストレージ100として使用する場合には、Edgeストレージ100は、重複排除を行わないため、記憶デバイス134は、重複状態管理表T20、重複チャンク管理表T30、重複判定表T40を格納していなくてよい。
次に、ファイル仮想化管理情報T10について説明する。
図3は、第1実施例に係るファイル仮想化管理情報の構成図である。
ファイル仮想化管理情報T10は、ユーザファイル毎に作成される。なお、この例では、ユーザファイルと別にファイル仮想化管理情報T10が記憶される例を示しているが、ファイル仮想化管理情報T10をユーザファイル内に格納するようにしてもよい。ファイル仮想化管理情報T10は、ユーザファイル管理情報T11と、部分管理情報T12とを有する。
ユーザファイル管理情報T11は、アクセスパスC11と、ファイル状態C12と、ファイルID C13とを含む。
アクセスパスC11は、ファイル仮想化管理情報T10に対応するユーザファイルが格納されたCoreストレージ200上のアドレス(アクセスパス)である。ファイル状態C12は、ファイル仮想化管理情報T10に対応するユーザファイルの状態を示す。ファイルの状態には、ユーザファイルにCoreストレージ200に反映させていない差分データがあることを示す「Dirty」と、ユーザファイルがCoreファイル200に格納されていることを示す「Cached」と、ユーザファイルの少なくとも一部の領域がスタブ化されていることを示す「Stub」とがある。ファイルID C13は、ファイル仮想化管理情報T10に対応するユーザファイルの本体データを示す識別子(ファイルID)である。ファイルIDは、本体データの操作に用いられる。
部分管理情報T12は、ユーザファイルにおいて更新、追加等された場合におけるそれそれの対応する部分に対応するエントリを格納する。部分管理情報T12のエントリは、オフセット(Offset)C16と、長さ(Length)C17と、部分状態C18とのフィールドを含む。
オフセットC16には、ユーザファイルが更新等されたときの対応する部分の開始位置が格納される。長さC17には、エントリに対応する部分の開始位置からのデータ長が格納される。部分状態C18には、エントリに対応する部分の状態(部分状態)が格納される。部分状態には、部分のデータがCoreストレージ200に反映されていないこと、すなわち、前回のファイルマイグレーション処理(図8参照)の後に更新(追加も含む)されたことを示す「Dirty」と、部分のデータがCoreストレージ200に格納されていること、すなわち、ローカル(Edgeストレージ100)にも、Coreストレージ200にもデータがあることを示す「Cached」と、部分のデータがスタブ化されている、すなわち、ファイルマイグレーション処理(図8参照)後にローカル(Edgeストレージ100)から消去されたことを示す「Stub」と、がある。
次に、重複状態管理表T20について説明する。
図4は、第1実施例に係る重複状態管理表の構成図である。
重複状態管理表T20は、ユーザファイル毎に作成される。重複状態管理表T20は、1つのファイルID C21のフィールドと、ユーザファイル内のチャンク毎のフィールド群(C22~C27)とを含む。
ファイルID C21には、重複状態管理表T20に対応するユーザファイルの本体データのファイルIDが格納される。
チャンク毎のフィールド群は、ファイル内オフセットC22と、チャンク長C23と、データ削減処理済みフラグC24と、チャンク状態C25と、重複チャンク格納ファイルID C26と、参照オフセットC27とのフィールドを含む。
ファイル内オフセットC22には、フィールド群に対応するチャンクのユーザファイル内の開始位置が格納される。チャンク長C23には、フィールド群に対応するチャンクのデータ長が格納される。データ削減処理済みフラグC24には、フィールド群に対応するチャンクがデータ削減処理済みか否かを示すデータ削除処理済みフラグが格納される。データ削除処理済みフラグは、チャンク内のデータが更新された際にFalseに設定され、データ削減処理後にTrueに設定される。チャンク状態C25には、フィールド群に対応するチャンクの状態が格納される。チャンクの状態としては、チャンクが他のチャンクと重複をしていないことを示す非重複と、チャンクが他のチャンクと重複していることを示す重複とがある。なお、チャンク状態が非重複であるチャンクについては、重複チャンク格納ファイルID C26及び参照オフセットC27には値が設定されない。重複チャンク格納ファイルID C26には、フィールド群に対応するチャンクと重複しているチャンクのデータを格納するファイル(重複チャンク格納ファイル)のID(ファイルID)が格納される。参照オフセットC27には、フィールド群に対応するチャンクと重複するチャンク(重複チャンク)のデータを格納する、重複チャンク格納ファイル内のオフセットが格納される。
次に、重複チャンク管理表T30について説明する。
図5は、第1実施例に係る重複チャンク管理表の構成図である。
重複チャンク管理表T30は、重複チャンク格納ファイルに格納された重複チャンクの参照数を管理するための表であり、重複チャンク格納ファイル毎のエントリを格納する。重複チャンク管理表T30のエントリは、ファイルID C31と、オフセットC32と、チャンク長C33と、参照数C34とのフィールドを含む。
ファイルID C31には、エントリに対応する重複チャンク格納ファイルの本体データのID(ファイルID)が格納される。オフセットC32には、エントリに対応する重複チャンク格納ファイル内の各重複チャンクの開始位置が格納される。チャンク長C33には、各重複チャンクのデータ長が格納される。参照数C34には、各重複チャンクのユーザファイルから参照されている数(参照数)が格納される。
次に、重複判定表T40について説明する。
図6は、第1実施例に係る重複判定表の構成図である。
重複判定表T40は、チャンクの重複判定に用いる情報を格納する表であり、Coreストレージ200に格納されているチャンク毎のエントリを格納する。重複判定表T40のエントリは、フィンガプリントC41と、ファイルID C42と、オフセットC43と、チャンク長C44とのフィールドを含む。
フィンガプリントC41には、エントリに対応するチャンクのフィンガプリントが格納される。フィンガプリントは、チャンクのデータにハッシュ関数を適用した値であり、チャンクの同一性(重複)を確認するために使用される。フィンガプリントを計算する方法としては、例えば、MD5(message digest algorithm 5)やSHA-1(Secure Hash Algorithm 1)等を用いてもよい。ファイルID C42には、エントリに対応するチャンクを格納するファイルのファイルIDが格納される。オフセットC43には、エントリに対応するチャンクのファイル内のオフセットが格納される。チャンク長C44には、エントリに対応するチャンクのデータ長が格納される。
次に、後述するファイルマイグレーション処理において使用される転送重複チャンクリストT50について説明する。
図7は、第1実施例に係る転送重複チャンクリストの構成図である。
転送重複チャンクリストT50は、マイグレーション対象(転送対象)のファイル内で差分を有するチャンク(差分チャンク:差分分割データ単位の一例)の中のCoreストレージ200と重複するチャンクについてのCoreストレージ200上での格納先を管理する。転送重複チャンクリストT50は、チャンク毎のエントリを格納する。転送重複チャンクリストT50のエントリは、ファイル内オフセットC51と、チャンク長C52と、重複チャンク可能ファイルID C53と、参照オフセットC54とのフィールドを含む。
ファイル内オフセットC51には、エントリに対応するチャンクのマイグレーション対象のファイル内でのオフセットが格納される。チャンク長C52には、チャンクのデータ長が格納される。重複チャンク格納ファイルID C53には、エントリに対応するチャンクと重複しているチャンクを格納しているCoreストレージ200上の重複チャンク格納ファイルのファイルIDが格納される。参照オフセットC54には、エントリに対応するチャンクと重複するチャンクを格納する重複チャンク格納ファイル内のオフセットが格納される。
次に、第1実施例に係る計算機システム1においてファイルをマイグレーションするファイルマイグレーション処理について説明する。
図8は、第1実施例に係るファイルマイグレーション処理の一例のフローチャートである。
ファイルマイグレーション処理は、各Edgeストレージ100において、コントローラ110のCPU111がData MoverプログラムP7を実行することにより行われる。ファイルマイグレーション処理は、所定の条件を満たす場合、例えば、定期的又は不定期に行われてもよいし、クライアント400がEdgeストレージ100に対してI/O操作を行ったときに実行されてもよい。ファイルマイグレーション処理では、Data MoverプログラムP7は、新たに作成されて、又は更新されて、差分となる部分(差分部分)を含むファイル、すなわち、ファイル状態C12がDirtyであるファイルを処理対象のファイル(対象ファイル)として取得する。ファイル状態C12がDirtyであるファイルを取得する方法は、ファイルシステムをクローリングする方法でもよいし、ファイルシステムのオペレーションを記録した操作ログから抽出する方法でもよい。
S101:Data MoverプログラムP7は、差分転送処理(図9参照)を実行する。差分転送処理では、対象ファイルの差分部分をCoreストレージ200に転送等して反映させる処理を行う。
S102:Data MoverプログラムP7は、対象ファイルのファイル状態C12と、対象ファイルの差分部分に対応する部分状態C18と、をCachedに変更し、ファイルマイグレーション処理を終了する。
次に、ステップS101の差分転送処理について説明する。
図9は、第1実施例に係る差分転送処理の一例のフローチャートである。
差分転送処理は、基本的には、Edgeストレージ100で作成されたファイル及び更新されたファイルの差分部分を、可変長重複排除を行うCoreストレージ200に転送し、Coreストレージ200に反映させる処理である。
S201:Data MoverプログラムP7は、対象ファイルの部分管理情報T12から部分状態C18がDirtyであるエントリ(転送対象部分に対応)を転送部分リストとして取得する。
S202:Data MoverプログラムP7は、対象ファイルがスタブ化された領域を含むスタブファイルか否か、すなわち、対象ファイルのファイル状態C12がstubであるか否かを確認する。この結果、対象ファイルがスタブファイルである場合(S202:Yes)には、Data MoverプログラムP7は、転送対象部分のデータについてのネットワーク重複排除処理(S206)等を行わずに、処理をステップS210に進める。ここで、対象ファイルがスタブファイルである場合に、ネットワーク重複排除処理等を行わないのは、スタブ化されたデータのリコール処理等における転送するデータ量を容易に見積もることができないからである。一方、対象ファイルがスタブファイルでない場合(S202:No)には、Data MoverプログラムP7は、処理をステップS203に進める。
S203:Data MoverプログラムP7は、対象ファイルを、ローリングハッシュ等を利用して可変長のチャンク(可変長チャンク)に分割する。ここで、ローリングハッシュとは、対象ファイルに対して、所定の長さのウインドウのデータに対するハッシュ値を計算する処理を、ウインドウをずらしながら実行する処理であり、可変長チャンクに分割する方法としては、計算されたハッシュ値が所定の値になった場合に、その部分を可変長チャンクの分割点とする方法がある。可変長チャンクに分割する具体的な処理としては、例えば、Rabin-Karpアルゴリズムを採用することができる。なお、可変長チャンクに分割する処理は上記に限られず、任意の処理を使用してもよい。
S203で分割された各チャンク(可変長チャンク)に対して、以下のステップS204~209の処理が実行される。
S204:Data MoverプログラムP7は、分割された各チャンクの1つのチャンクを処理対象のチャンク(対象チャンク)として、対象チャンクの管理情報(ファイル内オフセット、チャンク長等)を取得する。
S205:Data MoverプログラムP7は、対象チャンク内の部分状態がDirtyである部分(差分部分)のサイズ(チャンク内Dirtyサイズ)が、後述するネットワーク重複排除処理(S206)で用いるチャンクのフィンガプリントサイズより大きいか否かを判定する。ここで、対象チャンク内に部分状態がDirtyである部分(差分部分)を含むチャンクが差分チャンクに相当する。この結果、チャンク内Dirtyサイズが、フィンガプリントサイズよりも大きい場合(S205:Yes)には、ネットワーク重複排除処理を実行することにより、重複するデータの転送を削減できる効果が得られる可能性があるので、Data MoverプログラムP7は、処理をステップS206に進める。一方、チャンク内Dirtyサイズが、フィンガプリントサイズよりも大きくない場合(S205:No)には、ネットワーク重複排除処理を実行するよりも、チャンク内のDirtyデータ(差分データ)を送信する方が転送するデータ量が少ないこととなるので、Data MoverプログラムP7は、ネットワーク重複排除処理を行わずに、処理をステップS209に進める。なお、この場合には、以降の処理において、チャンク内の差分データがCoreストレージ200に送信されることとなる。
なお、上記したチャンク内Dirtyサイズと、フィンガプリントサイズとに基づいてのネットワーク重複排除処理の実行可否の判定は、Coreストレージ200に対象ファイルのチャンクと同一のデータが存在すると見込まれる確率(ネットワーク重複排除率:予測割合)が100%又はこれに近い値となる場合に好ましい例である。チャンク内Dirtyサイズと、フィンガプリントサイズとを用いたネットワーク重複排除処理の実行可否の判定は、上記した比較に限らない。
また、上記したチャンク内Dirtyサイズと、フィンガプリントサイズとの他に、ネットワーク重複排除率をネットワーク重複排除処理の実行可否の判定に使用するようにしてもよい。例えば、フィンガプリントサイズ+チャンク内Dirtyサイズ×(1-ネットワーク重複排除率)<(チャンク内Dirtyサイズ)を満たす場合に、処理をステップS206に進め、満たさない場合に、処理をステップS209に進めてもよい。
例えば、ネットワーク重複排除率は、ファイルの属性に基づいて決定してもよい。例えば、ファイルの属性が暗号化ファイルであれば、重複と判定される可能性が低いので、ネットワーク重複排除率は低い率(例えば、10%)とし、ファイルの属性が、例えば、マイクロソフトオフィス(登録商標)等のワードプロセッサソフトや、表計算ソフト等のファイルを示しているある場合には、重複と判定される可能性が比較的高いので、ネットワーク重複排除率を高い率(例えば、80%)とし、ファイルの属性に応じてステップS205の条件を変えるようにしてもよい。
S206:Data MoverプログラムP7は、対象チャンクのフィンガプリントをCoreストレージ200に送信して、Coreストレージ200で対象チャンクの重複判定を行わせるネットワーク重複排除処理(図10参照)を実行する。なお、本例では、チャンクごとにステップS206を実行するようにしているが、ステップS205の条件を満たす全てのチャンクに対して、まとめてステップS206の処理を行うようにしてもよい。
S207:Data MoverプログラムP7は、ネットワーク重複排除処理S206による結果に基づいて、Coreストレージ200に対象チャンクと重複するデータが存在するか否かを判定する。この結果、対象チャンクと重複するデータが存在する場合(S207:Yes)、Data MoverプログラムP7は、処理をステップS208に進める。一方、対象チャンクと重複するデータが存在しない場合(S207:No)、Data MoverプログラムP7は、処理をステップS209に進める。
S208:Data MoverプログラムP7は、対象チャンク内の領域を転送部分リストから削除し、転送重複チャンクリストT50に、対象チャンクのファイル内オフセットと、チャンク長と、チャンクと重複するCoreストレージ200上のチャンクのファイルIDと、参照オフセットとを含むエントリを追加する。
S209:Data MoverプログラムP7は、対象チャンクがチャンクの末尾(チャンク末尾)か否かを判定する。対象チャンクがチャンク末尾である場合(S209:Yes)、Data MoverプログラムP7は、処理をステップS210に進める。一方、対象チャンクがチャンク末尾でない場合(S209:No)、Data MoverプログラムP7は、処理をステップS204に進め、次のチャンクに対する処理を行う。
S210:Data MoverプログラムP7は、転送部分リストに記録された部分のデータを、ファイルIDを用いて、ユーザファイルの本体ファイルから取得する。
S211:Data MoverプログラムP7は、対象ファイルのCoreストレージ200へのアクセスパス(対象ファイルのアクセスパスC11の値)を取得し、Coreストレージ200に対し、このアクセスパスの更新要求を行う。この時、Data MoverプログラムP7は、ステップS210で取得したデータと、転送部分リストと、転送重複チャンクリストT50とを転送する。
S212:Coreストレージ200の差分反映プログラムP9(厳密には、差分反映プログラムP9を実行するCPU111)は、Edgeストレージ100からの更新要求を受理し、更新要求で指定されたアクセスパスに対して、差分反映処理(図11参照)を行う。
S213:差分反映プログラムP9は、Edgeストレージ100に対して更新が完了した応答を返す。なお、Edgeストレージ100のData MoverプログラムP7がこの応答を受け取ることにより、差分転送処理を終了する。
次に、ステップS206のネットワーク重複排除処理について説明する。
図10は、第1実施例に係るネットワーク重複排除処理の一例のフローチャートである。
ネットワーク重複排除処理は、Edgeストレージ100と同一のチャンクがCoreストレージ200に存在するか否かを確認し、存在する場合に重複チャンクの格納先を取得する処理である。
S301:Data MoverプログラムP7は、対象チャンクのフィンガプリントを計算する。フィンガプリントは、例えば、対象チャンクに対して、SHA-1で計算されたハッシュ値としてもよい。
S302:Data MoverプログラムP7は、Coreストレージ200に、対象チャンクと同一のデータが存在するか否かを確認させる要求(重複検索要求)を送信する。この重複検索要求には、ステップS301で計算された対象チャンクのフィンガプリントが含まれている。
S303:Coreストレージ200のデータ容量削減プログラムP11は、Edgeストレージ100からの重複検索要求を受理し、重複判定表T40を参照し、重複検索要求に含まれているフィンガプリント(対象フィンガプリント)に一致するチャンク(重複チャンク)が存在するか否かを確認する。この結果、フィンガプリントに一致するチャンクが存在する場合(S303:Yes)、データ容量削減プログラムP11は、処理をステップS304に進める。一方、フィンガプリントに一致するチャンクが存在しない場合(S303:No)、データ容量削減プログラムP11は、処理をステップS305に進める。
なお、フィンガプリントに一致するチャンクを格納するファイルが重複チャンク格納ファイルではなく、ユーザファイルかつ重複状態管理表T20のチャンク状態C25のチャンク状態が非重複の場合に、このファイルのチャンクのフィンガプリントの再計算を行って、フィンガプリントに変更がないこと、すなわち、チャンクが更新されていないことを確認してもよい。さらに、対象チャンクの重複排除を行い、重複チャンク格納ファイルにこのチャンクを格納し、重複判定表T40のこのチャンクに対応するエントリのファイルID等を重複チャンク格納ファイルのファイルID等に更新してもよい。
S304:Coreストレージ200のデータ容量削減プログラムP11は、重複判定表T40の対象フィンガプリントに一致するエントリのファイルID C42、オフセットC43、チャンク長C44の値をEdgeストレージ100に返却し、ネットワーク重複排除処理を終了する。
S305:Coreストレージ200のデータ容量削減プログラムP11は、対象チャンクと同一のデータが存在しないことをEdgeストレージ100に返却し、ネットワーク重複排除処理を終了する。
次に、ステップS212の差分反映処理について説明する。
図11は、第1実施例に係る差分反映処理の一例のフローチャートである。
差分反映処理は、Coreストレージ200の差分反映プログラムP9がEdgeストレージ100の更新要求を受理し、更新要求で指定されたアクセスパスに対して、指定された転送部分リストを用いた更新の反映と、転送重複チャンクリストT50を用いた重複排除結果の反映を行う処理である。
S401:差分反映プログラムP9は、受理した転送部分リストのエントリ(対象エントリ)を1つ取得する。
S402:差分反映プログラムP9は、更新要求で指定されたアクセスパスに対し、対象エントリの示す領域(更新領域、差分領域)の更新を反映する。
S403:差分反映プログラムP9は、重複状態管理情報T20を参照し、更新要求で指定されたアクセスパスに対応するファイルの更新領域にチャンク状態C25のチャンク状態が重複であるエントリが含まれるか否かを確認する。この結果、チャンク状態が重複であるエントリが含まれる場合(S403:Yes)、差分反映プログラムP9は、処理をステップS404に進める。一方、チャンク状態が重複であるエントリが含まれていない場合(S403:No)、差分反映プログラムP9は、処理をステップS405に進める。
S404:差分反映プログラムP9は、チャンク状態が重複であるエントリにおける重複チャンク格納ファイルID C26のファイルIDと、参照オフセットC27の参照オフセットとに対応する、重複チャンク管理表T30のエントリにおける参照数C34の参照数から1を減算する。
S405:差分反映プログラムP9は、重複状態管理表T20の更新領域に対応するエントリにおけるデータ削減処理フラグC24の値をfalseに変更し、チャンク状態C25の値を非重複に変更する。
S406:差分反映プログラムP9は、対象エントリが転送部分リストの末尾か否か確認する。この結果、対象エントリが末尾である場合(S406:Yes)、差分反映プログラムP9は、処理をステップS407に進める。一方、対象エントリが末尾でない場合(S406:No)、差分反映プログラムP9は、処理をステップS401に進め、次のエントリを処理対象として後続の処理を行う。
S407:差分反映プログラムP9は、受理した転送重複チャンクリストT50のエントリを処理対象のエントリ(対象エントリ)として1つ取得する。
S408:差分反映プログラムP9は、対象エントリの重複チャンク格納ファイルID C53のファイルIDと、参照オフセットC54の参照オフセットとに対応する重複チャンク管理表T30のエントリの参照数C34の参照数に1を加算する。
S409:差分反映プログラムP9は、更新要求で指定されたアクセスパスに対応するファイルの重複状態管理情報T20を参照し、転送重複チャンクリストT50の対象エントリのファイル内オフセットC51のオフセットと、チャンク長C52のチャンク長とに対応する領域に、チャンク状態C25が重複であるチャンク(重複チャンク)が含まれているか否かを確認する。この結果、重複チャンクが含まれている場合(S409:Yes)、差分反映プログラムP9は、処理をステップS410に進める。一方、重複チャンクが含まれていない場合(S409:No)、差分反映プログラムP9は、処理をステップS411に進める。
S410:差分反映プログラムP9は、重複状態管理情報T20の重複チャンクのエントリの重複チャンク格納ファイルID C26のファイルIDと、参照オフセットC27のオフセットとに対応する重複チャンク管理表T30のエントリにおける参照数C34の参照数から1を減算する。
S411:差分反映プログラムP9は、重複状態管理情報T20の重複チャンクのエントリにおいて、ファイル内オフセットC22とチャンク長C23とに、転送重複チャンクリストT50の対象エントリのファイル内オフセットC51のオフセットとチャンク長C52のチャンク長とを設定し、データ削減処理フラグC24にtrueを設定し、チャンク状態C25に重複を設定し、重複チャンク格納ファイルID C26と参照オフセットC27とに、転送重複チャンクリストT50の対象エントリの重複チャンク格納ファイルID C53のファイルIDと参照オフセットC54のオフセットとを設定する。
S412:差分反映プログラムP9は、対象エントリが転送重複チャンクリストT50の末尾か否かを確認する。この結果、対象エントリが末尾の場合(S412:Yes)、差分反映プログラムP9は、差分反映処理を終了する。一方、対象エントリが末尾でない場合(S412:No)、差分反映プログラムP9は、処理をステップS407に進め、次のエントリに対する後続の処理を行う。
上記したファイルマイグレーション処理によると、フィンガプリントサイズと、チャンク内Dirtyサイズとに基づいて、ネットワーク重複排除処理(S206)を行うか、ネットワーク重複排除処理を行わずに、Dirtyデータを送信する(S211)かを判定して、実行するようにしているので、Edgeストレージ100と、Coreストレージ200との間のデータの転送量を抑えることができる。
次に、第2実施例に係る計算機システムについて説明する。なお、第1実施例に係る計算機システムと同様な部分には同一の符号を付し、重複する説明を省略する場合がある。
第2実施例に係る計算機システムの構成は、図1に示す計算機システムと同様である。
第2実施例に係るEdgeストレージ100およびCoreストレージ200の構成は、図2に示す第1実施例に係るEdgeストレージ100およびCoreストレージ200と同様である。なお、第2実施例における、データ削減プログラムP11は、固定長のチャンク(固定長チャンク:分割データ単位の一例)を対象に重複排除(固定長重複排除)を行う点が異なる。
第2実施例に係るファイル仮想化管理情報T10は、図3に示す第1実施例に係るファイル仮想化管理情報T10と同じである。
第2実施例に係る重複状態管理表T20は、図4に示す第1実施例に係る重複状態管理表T20と同じである。なお、第2実施例では、データ削減プログラムP11は固定長重複排除を行うため、重複状態管理表T20において、チャンク長C23のフィールドはなくてもよい。
第2実施例に係る重複チャンク管理表T30は、図5に示す第1実施例に係る重複チャンク管理表T30と同じである。なお、第2実施例では、データ削減プログラムP11は固定長重複排除を行うため、重複チャンク管理表T30において、チャンク長C33のフィールドはなくてもよい。
第2実施例に係る重複判定表T40は、図6に示す第1実施例に係る重複判定表T40と同じである。なお、第2実施例では、データ削減プログラムP11は固定長重複排除を行うため、重複判定表T40において、チャンク長C44のフィールドはなくてもよい。
第2実施例に係る転送重複チャンクリストT50は、図7に示す第1実施例に係る転送重複チャンクリストT50と同じである。なお、第2実施例では、データ削減プログラムP11は固定長重複排除を行うため、転送重複チャンクリストT50においてチャンク長C52のフィールドはなくてもよい。
第2実施例に係るファイルマイグレーション処理は、図8に示す第1実施例に係るファイルマイグレーション処理と同様である。但し、第2実施例に係るファイルマイグレーション処理では、ステップS101の差分転送処理として、図12に示す差分転送処理を行う。
次に、差分転送処理について説明する。
図12は、第2実施例に係る差分転送処理の一例のフローチャートである。なお、図8に示す差分転送処理と同様な部分には同一の符号を付し、重複する説明は省略する。
差分転送処理は、基本的には、Edgeストレージ100で作成されたファイル及び更新されたファイルの差分部分を、固定長重複排除を行うCoreストレージ200に転送し、Coreストレージ200に反映させる処理である。
ファイルについて固定長単位で分割されている各固定長チャンクに対して、以下のステップS501~504,S205~S209の処理が実行される。なお、転送部分リストの転送部分に含まれる固定長チャンクのみを対象としてステップS501以降の処理を実施してもよい。
S501:Data MoverプログラムP7は、それぞれの固定長チャンクの1つのチャンクを処理対象のチャンク(対象チャンク)として、対象チャンクの管理情報(ファイル内オフセット、チャンク長等)を取得する。
S502:Data MoverプログラムP7は、対象チャンク内にスタブ化された領域(スタブ領域)が含まれるか否か、具体的には、部分管理情報T12を参照し、対象チャンク内に部分状態C18がStubの部分が存在するか否かを確認する。この結果、対象チャンク内にスタブ領域が存在する場合(S502:Yes)、Data MoverプログラムP7は、処理をステップS503に進める。一方、対象チャンク内にスタブ領域が存在しない場合(S502:No)、Data MoverプログラムP7は、処理をステップS205に進める。
S503:Data MoverプログラムP7は、対象チャンク内の部分状態がDirtyである部分(差分部分)のサイズ(チャンク内Dirtyサイズ)が、ネットワーク重複排除処理S206で用いるフィンガプリントサイズにチャンク内のStubの領域のサイズ(チャンク内Stubサイズ)を加算したサイズ(すなわち、スタブ領域のデータをリコールし、フィンガプリントサイズを転送する際の転送する合計のデータサイズ)より大きいか否かを確認する。この結果、チャンク内Dirtyサイズが大きい場合(S503:Yes)、スタブ領域のデータをリコールし、フィンガプリントを送信する方がデータ量を抑えられる可能性があるので、Data MoverプログラムP7は、処理をステップS504に進める。一方、チャンク内Dirtyサイズが大きくない場合(S503:No)、差分部分のデータを転送したほうがデータ量を押さえられることを意味しているので、Data MoverプログラムP7は、処理をステップS209に進める。
なお、上記したチャンク内Dirtyサイズと、フィンガプリントサイズと、チャンク内Stubサイズとに基づいてのネットワーク重複排除処理の実行可否の判定は、Coreストレージ200に対象ファイルのチャンクと同一のデータが存在すると見込まれる確率(ネットワーク重複排除率:予測割合)が100%又はこれに近い値となる場合に好ましい例である。チャンク内Dirtyサイズと、フィンガプリントサイズと、チャンク内Stubサイズとを用いたネットワーク重複排除処理の実行可否の判定は、上記した比較に限らない。
また、上記したチャンク内Dirtyサイズと、フィンガプリントサイズと、チャンク内Stubサイズとの他に、ネットワーク重複排除率をネットワーク重複排除処理の実行可否の判定に使用するようにしてもよい。例えば、フィンガプリントサイズ+チャンク内Stubサイズ+チャンク内Dirtyサイズ×(1-ネットワーク重複排除率)<(チャンク内Dirtyサイズ)を満たす場合に、処理をステップS504に進め、満たさない場合に、処理をステップS209に進めてもよい。
S504:Data MoverプログラムP7は、チャンク内のスタブ領域のデータをCoreストレージ200からリコール(読み出す)し、処理をステップS206に進める。ステップS206以降において、第2実施例においては、チャンク長は固定であるため、チャンク長に関する処理はスキップしてもよい。
上記した第2実施例によると、チャンク内にスタブ領域が含まれる場合であっても、Edgeストレージ100と、Coreストレージ200との間のデータの転送量を抑えることができる。
次に、第3実施例に係る計算機システムについて説明する。なお、第1実施例に係る計算機システムと同様な部分には同一の符号を付し、重複する説明を省略する場合がある。
第3実施例に係る計算機システムの構成は、図1に示す計算機システムと同様である。
第3実施例に係るEdgeストレージ100およびCoreストレージ200の構成は、図2に示す第1実施例に係るEdgeストレージ100およびCoreストレージ200と同様である。なお、第3実施例においては、Edgeストレージ100においてデータ削減プログラムP11が動作し、可変長重複排除を行う点が異なる。なお、Coreストレージ200でデータ削減プログラムP11は動作しなくてもよいし、動作して、第1実施形態と同様の重複排除を行ってもよい。
第3実施例に係るファイル仮想化管理情報T10は、図3に示す第1実施例に係るファイル仮想化管理情報T10と同じであるが、Edgeストレージ100に格納されている。
第3実施例に係る重複状態管理表T20は、図4に示す第1実施例に係る重複状態管理表T20と同じであるが、Edgeストレージ100に格納されている。
第3実施例に係る重複判定表T40は、図6に示す第1実施例に係る重複判定表T40と同じであるが、Edgeストレージ100に格納されている。
第3実施例においては、転送重複チャンク管理表T50は、不要である。
次に、第3実施例に係るスタブファイルの重複排除処理について説明する。
図13は、第3実施例に係るスタブファイルの重複排除処理の一例のフローチャートである。なお、図8,9等の処理と同様な部分には同一の符号を付し、重複する説明は省略する。
スタブファイルの重複排除処理は、各Edgeストレージ100において、コントローラ110のCPU111がデータ容量削減プログラムP11を実行することにより行われる。スタブファイルの重複排除処理は、所定の条件を満たす場合、例えば、定期的又は不定期に行われてもよいし、クライアント400がEdgeストレージ100に対してI/O操作(例えば、データ書き込み操作)を行ったときに実行されてもよい。
S603:Edgeストレージ100のData MoverプログラムP7は、対象ファイルに対応するユーザファイル管理情報T11からCoreストレージ200へのアクセスパス(対象ファイルのアクセスパスC11の値)を取得し、Coreストレージ200に対し、このアクセスパスの更新と更新領域のフィンガプリントの計算とを要求する。この時、Data MoverプログラムP7は、S210で取得したデータと、転送部分リストと、対象ファイルのチャンクの分割点に関する情報(分割点情報)を転送する。
S604:Coreストレージ200の差分反映プログラムP9は、更新要求で指定されたアクセスパスに対し、転送部分リストの各エントリの示す領域(更新領域、差分領域)の更新を反映する。
S605:差分反映プログラムP9は、更新したファイルをローリングハッシュ等の処理により、可変長チャンクに分割し、チャンクの分割点を計算する。
S606:差分反映プログラムP9は、計算した分割点と、受理した分割点情報とを比較して、分割点が変更したチャンク及びデータを更新したチャンクのフィンガプリントを計算し、計算したチャンクのオフセット、チャンク長、及びフィンガプリントが格納されたエントリを含むフィンガプリントリストを作成する。
S607:差分反映プログラムP9は、計算した分割点の情報(変更後分割点情報)と、フィンガプリントリストとをEdgeストレージ100に返却する。
S609:Data MoverプログラムP7は、データ容量削減プログラムP11に、変更後分割点情報とフィンガプリントリストとを返却する。データ容量削減プログラムP11は、返却された変更後分割点情報に基づき、重複状態管理情報T20を更新する。ここで、データ容量削減プログラムP11は、分割点が変更されたチャンクに対応するエントリにおいて、データ削減処理済みフラグC24の値をFalseに変更し、チャンク状態C25の値を非重複に変更する。なお、このエントリのチャンク状態C25が重複である場合、データ容量削減プログラムP11は、重複チャンク格納ファイルID C26のファイルIDと、参照オフセットC27のオフセットとに対応する重複チャンク管理表T30のエントリの参照数C34の参照数から1を減算する。
S610:データ容量削減プログラムP11は、フィンガプリントリストから処理対象とするエントリ(対象エントリ)を一つ取得する。
S611:データ容量削減プログラムP11は、重複判定表T40に、対象エントリのフィンガプリントに一致するエントリが存在するか否かを確認する。この結果、一致するエントリが存在する場合、データ容量削減プログラムP11は、処理をステップS612に進める。存在しない場合、データ容量削減プログラムP11は、処理をステップS613に進める。
S612:データ容量削減プログラムP11は、対象エントリに対応するチャンクを重複排除する。
S613:データ容量削減プログラムP11は、対象エントリに対応するチャンクを重複判定表T40に追加する。
S614:データ容量削減プログラムP11は、対象エントリがフィンガプリントリストの末尾か否かを判定する。この結果、対象エントリが末尾の場合、データ容量削減プログラムP11は、スタブファイルの重複排除処理を終了する。一方、対象エントリがフィンガプリントリストの末尾でない場合、データ容量削減プログラムP11は、処理をステップS610に進め、次のエントリを処理対象として後続する処理を行う。
なお、Edgeストレージ100で可変長重複排除を行う例を示したが、本発明はこれに限られず、Edgeストレージ100で固定長重複排除を行うようにしてもよく、この場合には、ステップS605で分割点計算を行わず、更新したチャンクのみについてフィンガプリントを計算し、ステップS609の処理を行わないようにすればよい。
第3実施例では、ファイルマイグレーション処理は、図8に示す第1実施例と同じ処理を行えばよい。また、第3実施例では、ステップ101での差分転送処理は、図9に示す第1実施例における差分転送処理におけるステップS202~S208を行わなくてよい。また、第3実施例では、ステップS212での差分反映処理は、図11に示す第1実施例における差分反映処理におけるステップS403~405、S407~S412を行わなくてよい。
上記した第3実施例では、ファイルがスタブ領域を有するスタブファイルである場合において、ファイルのスタブ領域のデータをCoreストレージ200からEdgeストレージ100に送信しないで済むので、Edgeストレージ100と、Coreストレージ200との間のデータの転送量を抑えることができる。
なお、本発明は、上述の実施例に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施例における差分転送処理においては、ステップS205において、フィンガプリントサイズとチャンク内Dirtyサイズとに基づいて、ネットワーク重複排除処理をするのか、差分部分を送信するのかを判定するようにしていたが、本発明はこれに限られず、チャンクの差分部分のサイズに基づく通信における課金額と、差分を含むチャンク(差分チャンク)の差分部分を用いてCoreストレージ200における差分チャンクについてCoreストレージ200のチャンクとの重複を判定するネットワーク重複排除処理に対する課金額とを合計した第1の合計額と、チャンクのフィンガプリントのサイズに基づく通信における課金額と、差分チャンクのフィンガプリントを用いてCoreストレージ200における差分チャンクについてのCoreストレージ200のチャンクとの重複を判定する処理に対する課金額と、を合計した第2の合計額と、に基づいて、差分部分をCoreストレージ200に送信するか、差分チャンクのフィンガプリントをCoreストレージ200に送信するかを判定するようにしてもよい。
具体的には、ネットワーク転送量当たりの課金額*(フィンガプリントサイズ+チャンク内Dirtyサイズ×(1-ネットワーク重複排除率))+計算量当たりの課金額*Coreストレージ200のネットワーク重複排除処理の計算量<ネットワーク転送量当たりの課金額*チャンク内Dirtyサイズ)+計算量当たりの課金額*(Coreストレージ200での差分反映処理とネットワーク重複排除処理の計算量)の式を満たす場合に、差分チャンクのフィンガプリントをCoreストレージ200に送信するネットワーク重複排除処理を行い、上記式を満たさない場合に、差分部分をCoreストレージ200に送信するように判定してもよい。このようにすると、転送時のデータ量の削減のみに着目するのではなく、転送の課金額と処理の課金額とを加味して適切なデータ転送を行うことができる。
また、上記実施形態において、CPUが行っていた処理の一部又は全部を、ハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
1…計算機システム、10,10-1,10-2…Edgeサイト、20…Coreサイト、30…ネットワーク、100…Edgeストレージ、110…コントローラ、111…CPU、112…メモリ、113…キャッシュ、114…LAN I/F、115…WAN I/F、116…I/F、130…ストレージシステム、131…CPU、132…メモリ、133…キャッシュ、134…記憶デバイス、136…I/F、200…Coreストレージ、400…クライアント



Claims (7)

  1. 所定のデータ単位を所定のチャンクを単位として重複排除して管理可能な他のストレージ装置にネットワークを介して接続され、プロセッサを備えるストレージ装置であって、
    前記プロセッサは、
    差分を含むデータ単位のデータを前記他のストレージ装置に転送する場合に、差分部分のサイズと、前記差分部分を含むチャンクである差分チャンクのフィンガプリントのサイズとに基づいて、前記差分部分を前記他のストレージ装置に送信するか、前記差分チャンクのフィンガプリントを前記他のストレージ装置に送信するかを判定し、
    判定結果に従って、前記差分部分又は前記フィンガプリントを前記他のストレージ装置に送信し、
    前記チャンクは、固定長のチャンクであり、
    前記プロセッサは、
    差分を含むデータ単位のデータを前記他のストレージ装置に転送する場合であって、前記差分を含むデータ単位における差分部分を含む差分チャンクにスタブ化されたスタブ領域が含まれている場合に、前記差分チャンクの差分部分のサイズと、前記スタブ領域のサイズと、前記差分チャンクのフィンガプリントのサイズとに基づいて、前記差分部分を前記他のストレージ装置に送信するか、前記スタブ領域のデータを前記他のストレージから取得するかを判定し、
    前記スタブ領域のデータを前記他のストレージから取得すると判定した場合には、前記他のストレージに前記スタブ領域のデータの送信要求を送信し、前記他のストレージから前記スタブ領域のデータを受信し、受信した前記スタブ領域のデータを用いて前記差分チャンクのフィンガプリントを計算し、前記差分チャンクのフィンガプリントを前記他のストレージ装置に送信す
    トレージ装置。
  2. 所定のデータ単位を所定のチャンクを単位として重複排除して管理可能な他のストレージ装置にネットワークを介して接続され、プロセッサを備えるストレージ装置であって、
    前記プロセッサは、
    差分を含むデータ単位のデータを前記他のストレージ装置に転送する場合に、差分部分のサイズと、前記差分部分を含むチャンクである差分チャンクのフィンガプリントのサイズとに基づいて、前記差分部分を前記他のストレージ装置に送信するか、前記差分チャンクのフィンガプリントを前記他のストレージ装置に送信するかを判定し、
    判定結果に従って、前記差分部分又は前記フィンガプリントを前記他のストレージ装置に送信し、
    前記チャンクは、可変長のチャンクであり、
    前記プロセッサは、
    差分を含むデータ単位のデータを前記他のストレージ装置に転送する場合であって、前記差分を含むデータ単位における差分部分を含む差分チャンクにスタブ化されたスタブ領域が含まれている場合に、前記差分部分を前記他のストレージ装置に送信す
    トレージ装置。
  3. 所定のデータ単位を所定のチャンクを単位として重複排除して管理可能な他のストレージ装置にネットワークを介して接続され、プロセッサを備えるストレージ装置であって、
    前記プロセッサは、
    差分を含むデータ単位のデータを前記他のストレージ装置に転送する場合に、差分部分のサイズと、前記差分部分を含むチャンクである差分チャンクのフィンガプリントのサイズとに基づいて、前記差分部分を前記他のストレージ装置に送信するか、前記差分チャンクのフィンガプリントを前記他のストレージ装置に送信するかを判定し、
    判定結果に従って、前記差分部分又は前記フィンガプリントを前記他のストレージ装置に送信し、
    前記プロセッサは、
    前記データ単位の属性によって、前記差分部分を前記他のストレージ装置に送信するか、前記差分チャンクのフィンガプリントを前記他のストレージ装置に送信するかを判定する、前記差分部分のサイズと前記差分チャンクのフィンガプリントのサイズとに基づく条件を変え
    トレージ装置。
  4. 所定のデータ単位を所定のチャンクを単位として重複排除して管理可能な他のストレージ装置にネットワークを介して接続され、プロセッサを備えるストレージ装置であって、
    前記プロセッサは、
    差分を含むデータ単位のデータを前記他のストレージ装置に転送する場合に、差分部分のサイズと、前記差分部分を含むチャンクである差分チャンクのフィンガプリントのサイズとに基づいて、前記差分部分を前記他のストレージ装置に送信するか、前記差分チャンクのフィンガプリントを前記他のストレージ装置に送信するかを判定し、
    判定結果に従って、前記差分部分又は前記フィンガプリントを前記他のストレージ装置に送信し、
    前記プロセッサは、
    差分を含むデータ単位のデータを前記他のストレージ装置に転送する場合に、前記差分チャンクの前記差分部分のサイズと、前記差分チャンクのフィンガプリントのサイズと、前記データ単位のチャンクについて前記他のストレージ装置のチャンクと重複する可能性を示す予測割合とに基づいて、前記差分部分を前記他のストレージ装置に送信するか、前記差分チャンクのフィンガプリントを前記他のストレージ装置に送信するかを判定す
    トレージ装置。
  5. 前記チャンクは、可変長のチャンクであり、
    前記プロセッサは、
    差分を含むデータ単位のデータを前記他のストレージ装置に転送する場合に、
    (前記差分チャンクのフィンガプリントのサイズ)+(前記データ単位の前記チャンクの差分部分のサイズ)×(1-予測割合)<(前記データ単位の前記チャンクの差分部分のサイズ)を満たす場合に、前記差分チャンクのフィンガプリントを前記他のストレージ装置に送信すると判定し、満たさない場合に、前記差分部分を前記他のストレージ装置に送信すると判定する、
    請求項に記載のストレージ装置。
  6. 前記チャンクは、固定長のチャンクであり、
    前記プロセッサは、
    差分を含むデータ単位のデータを前記他のストレージ装置に転送する場合であって、前記差分を含むデータ単位における差分部分を含む差分チャンクにスタブ化されたスタブ領域が含まれている場合に、
    (前記差分チャンクのフィンガプリントのサイズ)+(前記差分チャンク内のスタブ領域のサイズ)+(前記データ単位の前記チャンクの差分部分のサイズ)×(1-予測割合)<(前記データ単位の前記チャンクの差分部分のサイズ)を満たす場合に、前記スタブ領域のデータを前記他のストレージから取得すると判定し、満たさない場合に、前記差分部分を前記他のストレージ装置に送信すると判定する、
    請求項に記載のストレージ装置。
  7. 所定のデータ単位を所定のチャンクを単位として重複排除して管理可能な他のストレージ装置にネットワークを介して接続され、プロセッサを備えるストレージ装置であって、
    前記プロセッサは、
    差分を含むデータ単位のデータを前記他のストレージ装置に転送する場合に、差分部分のサイズと、前記差分部分を含むチャンクである差分チャンクのフィンガプリントのサイズとに基づいて、前記差分部分を前記他のストレージ装置に送信するか、前記差分チャンクのフィンガプリントを前記他のストレージ装置に送信するかを判定し、
    判定結果に従って、前記差分部分又は前記フィンガプリントを前記他のストレージ装置に送信し、
    前記プロセッサは、
    差分を含むデータ単位のデータを前記他のストレージ装置に転送する場合に、
    前記データ単位の前記チャンクの差分部分のサイズに基づく通信における課金額と、前記チャンクの差分部分を用いて前記他のストレージ装置における前記差分チャンクについての前記他のストレージ装置のチャンクとの重複を判定する処理に対する課金額とを合計した第1の合計額と、
    前記差分チャンクのフィンガプリントのサイズに基づく通信における課金額と、前記差分チャンクのフィンガプリントを用いて前記他のストレージ装置における前記差分チャンクについての前記他のストレージ装置のチャンクとの重複を判定する処理に対する課金額と、を合計した第2の合計額と、
    に基づいて、前記差分部分を前記他のストレージ装置に送信するか、前記差分チャンクのフィンガプリントを前記他のストレージ装置に送信するかを判定す
    トレージ装置。
JP2021021300A 2021-02-12 2021-02-12 ストレージ装置 Active JP7282114B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2021021300A JP7282114B2 (ja) 2021-02-12 2021-02-12 ストレージ装置
CN202110986459.3A CN114924687A (zh) 2021-02-12 2021-08-26 存储装置、计算机系统及数据传送程序
US17/468,654 US11372570B1 (en) 2021-02-12 2021-09-07 Storage device, computer system, and data transfer program for deduplication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021021300A JP7282114B2 (ja) 2021-02-12 2021-02-12 ストレージ装置

Publications (2)

Publication Number Publication Date
JP2022123774A JP2022123774A (ja) 2022-08-24
JP7282114B2 true JP7282114B2 (ja) 2023-05-26

Family

ID=82320261

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021021300A Active JP7282114B2 (ja) 2021-02-12 2021-02-12 ストレージ装置

Country Status (3)

Country Link
US (1) US11372570B1 (ja)
JP (1) JP7282114B2 (ja)
CN (1) CN114924687A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10419401B2 (en) * 2016-01-08 2019-09-17 Capital One Services, Llc Methods and systems for securing data in the public cloud
CN116909492B (zh) * 2023-09-12 2023-12-08 合肥康芯威存储技术有限公司 一种存储设备及其控制方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014115276A1 (ja) 2013-01-24 2014-07-31 株式会社日立製作所 環境設定サーバ、計算機システム、及び環境設定方法
US20170206022A1 (en) 2016-01-15 2017-07-20 Falconstor, Inc. Data Deduplication Cache Comprising Solid State Drive Storage and the Like
JP2018049653A (ja) 2012-04-05 2018-03-29 マイクロソフト テクノロジー ライセンシング,エルエルシー キャッシュ管理

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6928526B1 (en) 2002-12-20 2005-08-09 Datadomain, Inc. Efficient data storage system
US9141301B1 (en) * 2012-06-13 2015-09-22 Emc Corporation Method for cleaning a delta storage system
US20160150012A1 (en) * 2014-11-25 2016-05-26 Nimble Storage, Inc. Content-based replication of data between storage units
US9348880B1 (en) * 2015-04-01 2016-05-24 Palantir Technologies, Inc. Federated search of multiple sources with conflict resolution
US10574751B2 (en) * 2016-03-22 2020-02-25 International Business Machines Corporation Identifying data for deduplication in a network storage environment
US10359965B1 (en) * 2017-07-28 2019-07-23 EMC IP Holding Company LLC Signature generator for use in comparing sets of data in a content addressable storage system
US11061713B2 (en) * 2017-08-07 2021-07-13 Datto, Inc. Prioritization and source-nonspecific based virtual machine recovery apparatuses, methods and systems
US11841768B2 (en) * 2020-04-01 2023-12-12 Datto, Inc. Multi-client backup deduplication apparatuses, methods and systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018049653A (ja) 2012-04-05 2018-03-29 マイクロソフト テクノロジー ライセンシング,エルエルシー キャッシュ管理
WO2014115276A1 (ja) 2013-01-24 2014-07-31 株式会社日立製作所 環境設定サーバ、計算機システム、及び環境設定方法
US20170206022A1 (en) 2016-01-15 2017-07-20 Falconstor, Inc. Data Deduplication Cache Comprising Solid State Drive Storage and the Like

Also Published As

Publication number Publication date
US11372570B1 (en) 2022-06-28
CN114924687A (zh) 2022-08-19
JP2022123774A (ja) 2022-08-24

Similar Documents

Publication Publication Date Title
JP5343166B2 (ja) 通信ネットワークを介してリモートのファイルサーバにファイルを転送するローカルのファイルサーバ、及び、それらのファイルサーバを有するストレージシステム
US9043287B2 (en) Deduplication in an extent-based architecture
US9715434B1 (en) System and method for estimating storage space needed to store data migrated from a source storage to a target storage
US8943032B1 (en) System and method for data migration using hybrid modes
US8949208B1 (en) System and method for bulk data movement between storage tiers
US9367448B1 (en) Method and system for determining data integrity for garbage collection of data storage systems
AU2012214744B2 (en) Processes and methods for client-side fingerprint caching to improve deduplication system backup performance
US10656858B1 (en) Deduplication featuring variable-size duplicate data detection and fixed-size data segment sharing
US10191934B2 (en) De-duplication system and method thereof
JP7282114B2 (ja) ストレージ装置
US11093442B1 (en) Non-disruptive and efficient migration of data across cloud providers
US10838923B1 (en) Poor deduplication identification
CN110908589B (zh) 数据文件的处理方法、装置、系统和存储介质
US20180107404A1 (en) Garbage collection system and process
US11567913B2 (en) Method and system for improving efficiency in the management of data references
US10331362B1 (en) Adaptive replication for segmentation anchoring type
JP6406283B2 (ja) ストレージ装置およびストレージ方法
US20170124107A1 (en) Data deduplication storage system and process
US20210034577A1 (en) File layer to block layer communication for selective data reduction
US9626332B1 (en) Restore aware cache in edge device
WO2023040305A1 (zh) 一种数据备份系统及装置
US20210286765A1 (en) Computer system, file storage and data transfer method
US20230367477A1 (en) Storage system, data management program, and data management method
US11768608B2 (en) Computer system, compute node, and data management method
US11847334B2 (en) Method or apparatus to integrate physical file verification and garbage collection (GC) by tracking special segments

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211223

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230303

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230418

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230516

R150 Certificate of patent or registration of utility model

Ref document number: 7282114

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150