JP2021144288A - 計算機システム、ファイルストレージ、及び、データ転送方法 - Google Patents

計算機システム、ファイルストレージ、及び、データ転送方法 Download PDF

Info

Publication number
JP2021144288A
JP2021144288A JP2020040747A JP2020040747A JP2021144288A JP 2021144288 A JP2021144288 A JP 2021144288A JP 2020040747 A JP2020040747 A JP 2020040747A JP 2020040747 A JP2020040747 A JP 2020040747A JP 2021144288 A JP2021144288 A JP 2021144288A
Authority
JP
Japan
Prior art keywords
file
storage
difference
file storage
data
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.)
Granted
Application number
JP2020040747A
Other languages
English (en)
Other versions
JP7061635B2 (ja
Inventor
昌忠 ▲高▼田
昌忠 ▲高▼田
Masatada Takada
鎮平 野村
Shimpei Nomura
鎮平 野村
光雄 早坂
Mitsuo Hayasaka
光雄 早坂
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 JP2020040747A priority Critical patent/JP7061635B2/ja
Priority to US17/004,909 priority patent/US20210286765A1/en
Publication of JP2021144288A publication Critical patent/JP2021144288A/ja
Application granted granted Critical
Publication of JP7061635B2 publication Critical patent/JP7061635B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1865Transactional file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】差分データのバイト単位転送によるデータ転送量の削減と、差分のバイト単位転送時における管理データおよびセッション数増大を回避する。【解決手段】ファイルシステムを有する第1のファイルストレージと、第1のファイルストレージからのオブジェクト要求を受け付ける第2のファイルストレージと、オブジェクトとして転送されてきたファイルもしくはディレクトリを格納するオブジェクトストレージと、を有する計算機システムにおいて、第1のファイルストレージは、クライアントからファイルシステムが更新されると、ファイルシステムの更新されたファイル若しくはディレクトリを検出し、検出されたファイル若しくはディレクトリの差分データと差分データの更新情報を、複数まとめて差分集約オブジェクトに集約し、差分集約オブジェクトを第2のファイルストレージに転送する。【選択図】図1

Description

本発明は、複数のファイルストレージ装置間でデータを転送するための技術に関する。
複数の拠点にそれぞれ設置されたストレージ装置が、オブジェクトストレージ装置に接続され、ストレージ装置間でデータ転送を実現する計算機システムが知られている。
例えば、特許文献1は、ファイルストレージ装置にてファイルデータを固定長のチャンクに分割し、クライアントから更新されたチャンクをMulti−part Upload APIを用いてオブジェクトストレージ装置に転送する技術を開示している。
また、特許文献2は、ファイルストレージ装置にてファイルデータをチャンクに分割し、クライアントから更新されたチャンクを単独のオブジェクトとしてオブジェクトストレージ装置に格納する技術を開示している。ファイルデータが複数のオブジェクトで構成されるため、ファイルストレージ装置にてチャンクごとに(Offset, Length, Object address}の組を保持する。
国際公開2018/154698号 米国特許第9720777号明細書
しかし、特許文献1および特許文献2による技術では、ファイルストレージ装置からオブジェクトストレージ装置への転送は、数MBのチャンク単位で行うため、たとえ1バイトの更新であっても数MBの転送が必要である。そのため、転送時間が長期化する。
また、特許文献2による技術では、チャンクサイズを小さくすると、チャンクごとにチャンクを管理する情報(Offset, Length, Object address}の組が増大する。そのため、ファイルストレージ装置にて管理する情報が増大し、容量効率が低下する。さらに、1つのファイルが複数のオブジェクトに分割格納されているため、細かい単位でのセッション確立によるリコール性能が低下する。
従って、差分データのバイト単位転送によるデータ転送量の削減と、差分のバイト単位転送時における管理データおよびセッション数増大の回避が課題となる。
本発明の目的は、各拠点とデータセンタとのデータ転送量を削減した計算機システム、ファイルストレージ、及び、データ転送方法を提供することにある。
上記の課題を解決するため、本発明にかかる計算機システムは、ファイルシステムを有する第1のファイルストレージと、第1のファイルストレージからのオブジェクト要求を受け付ける第2のファイルストレージと、オブジェクトとして転送されてきたファイルもしくはディレクトリを格納するオブジェクトストレージと、を有する。第1のファイルストレージは、クライアントからの要求に応じてファイルシステムが更新されると、ファイルシステムの更新されたファイル若しくはディレクトリを検出し、検出されたファイル若しくはディレクトリの差分データと差分データの更新情報を、複数まとめて差分集約オブジェクトに集約し、差分集約オブジェクトを第2のファイルストレージに転送する。第2のファイルストレージは、差分集約オブジェクトを受信し、差分集約オブジェクトの差分データ更新情報に従って、差分データの各々を、オブジェクトストレージのオブジェクトに反映する。
本発明の計算機システムは、各拠点とデータセンタとのデータ転送量を削減できる。また、拠点のファイルストレージ装置の管理データおよびセッション数の増大を軽減できる。
本実施例の概要の一例を説明する図である。 本実施例1にかかる計算機システムの構成図の一例である。 Edgeファイルストレージ100の構成図である。 Coreファイルストレージ200の構成図である。 オブジェクトストレージ300の構成図である。 オペレーションログ500の一例である。 ファイル/ディレクトリ作成処理1000のフローチャートの一例である。 ファイル更新処理2000のフローチャートの一例である。 ファイルマイグレーション処理3000のフローチャートである。 単一ファイル転送処理4000のフローチャートである。 集約ファイル転送処理5000のフローチャートの一例である。 ディレクトリマイグレーション処理6000のフローチャートの一例である。 差分反映処理7000のフローチャートである。 ファイル参照処理8000のフローチャートである。 参照要求時の差分反映処理9000のフローチャートである。 本実施例2にかかる計算機システムの構成図の一例である。 Coreストレージの構成図である。
以下、図面を参照し実施例を説明する。
なお、以下の説明では「aaaテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。各種情報は、データ構造に依存しないことを示すために「aaaテーブル」を「aaa情報」と呼ぶことができる。また、プログラムやソフトウェアを主語にして説明する場合には、実際には、プロセッサ等がそのプログラムやソフトウェアを実行しているものと解する。
各情報の内容を説明する際に、識別情報について「識別子」、「名」、「ID」等の表現を用いるが、これらはお互いが置換可能である。これらのうちの少なくとも1つに代えて、多種の識別情報が使用されてよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、処理部であるプロセッサによって実行されることで、定められた処理を、適宜に記憶資源(例えば、メモリ)及び/又は通信インターフェイスデバイス(例えば、通信ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。逆に、プロセッサが主語となっている処理は、1以上のプログラムを実行することにより行われると解釈することができる。プロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、処理の一部(例えば、暗号化/復号化、圧縮/伸張)を実行するハードウェア回路を含んでもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号を使用し、同種の要素を区別して説明する場合には、その要素の参照符号に代えて、その要素に割り振られた識別子(例えば番号及び符号のうちの少なくとも1つ)を使用することがある。
図1は、実施例1の概要の一例を説明する図である。
実施例1の計算機システムは、サイト10−1のファイルストレージ装置の一例であるEdgeファイルストレージ100と、Edgeファイルストレージ100に接続するクライアント600と、ネットワーク30を介してEdgeファイルストレージ100と接続するデータセンタ20のファイルストレージ装置の一例であるCoreファイルストレージ200(単に、Coreを称する場合がある)と、オブジェクトストレージ装置の一例であるオブジェクトストレージ300とを含む。
Edgeファイルストレージ100は、クライアント600にファイル共有サービスを提供し、ファイルシステム130を有する。Edgeファイルストレージ100は、ファイルシステム130内の要素であるファイル及びディレクトリに対する操作をそれぞれ実行可能である。
Edgeファイルストレージ100は、IO Hookプログラム111とData Moverプログラム112を有し、Coreファイルストレージ200と連携してファイル共有サービスを実現する。IO Hookプログラム111はファイルシステム130に格納されたファイルおよびディレクトリに対する操作を検出する検出部を構成する。Data Moverプログラム112は、IO Hookプログラム111が検出したファイルおよびディレクトリをCoreファイルストレージ200に転送する転送部を構成する。転送する目的は、バックアップやアーカイブを含む。
Coreファイルストレージ200は、オブジェクト操作プログラム210と差分反映プログラム211を含む。オブジェクト操作プログラム210は、Edgeファイルストレージ100からのオブジェクト要求を受け付け、オブジェクトとして転送されたファイルおよびディレクトリをオブジェクトストレージ300に格納する。
オブジェクトストレージ300は、Edgeファイルストレージ100から受け付けたオブジェクト要求に基づいて、Coreファイルストレージ200からオブジェクトとして転送されてきたファイルもしくはディレクトリを格納する。
実施例1では、Edgeファイルストレージ100は、ファイルシステム130に格納された差分データ800と、その差分データの更新情報(oplog500)を1つの差分集約オブジェクト700に集約し、Coreファイルストレージ200に転送する。
データ転送の具体例を説明する。
(1)クライアント600により、ファイルシステム130に対する操作が行われる。この操作の内容は、例えば、操作の対象であるEdgeファイルストレージ100のファイルシステム130のファイルFileAに対する、「データ更新」である。ここで、FileAにデータa0を更新する例を示している。
(2)続いて、IO Hookプログラム111は、FileAに対するデータ更新をFileAに対する操作として検出する。検出した情報をFileAのメタデータ、別ファイル、或いはデータベースなどに更新情報として格納する。
(3)Data Moverプログラム112は、マイグレーション処理を実行する。マイグレーション処理は、Edgeファイルストレージ100のファイルシステム130に格納されたファイルおよびディレクトリをCoreファイルストレージ200に転送する処理である。マイグレーション処理は、所定の条件を満たす場合に行われてよい。例えば、マイグレーション処理は、定期的又は不定期に行われてもよいし、クライアント600がファイルシステム130に対して操作を行ったときに実行されてもよい。マイグレーション処理において、Data Moverプログラム112は、IO Hookプログラム111が検出したファイルシステム130の更新情報を参照し、差分データ800を集約する。
図1では、FileAのデータa0と、FileBのデータb0と、FileCのデータc0、c1を集約している例を示している。差分データ800に加え、差分データの更新情報をオペレーションログ500として差分集約オブジェクト700に格納する。オペレーションログ500は、操作内容、操作対象、操作対象のオブジェクトアドレス、Offset、Lengthを含む(図6参照)。
(4)Data Moverプログラム112は、上記(3)で集約した差分データ800とオペレーションログ500を1つの差分集約オブジェクト700としてCoreファイルストレージ200に転送する。
(5)Coreファイルストレージ200のオブジェクト操作プログラム210は、Edgeファイルストレージ100から転送された差分集約オブジェクト700を受理し、オブジェクトストレージ300に格納する。
(6)Coreファイルストレージ200の差分反映プログラム211は、差分反映処理を実行する。差分反映処理は、差分集約オブジェクト700を取得し、差分集約オブジェクト700に格納されたオペレーションログ500から操作対象を認識し、差分データ800をオブジェクトストレージ300内の個々のオブジェクトに反映する。差分反映処理は、所定の条件を満たす場合に行われてよい。例えば、差分反映処理は、定期的又は不定期に行われてもよいし、Edgeファイルストレージ100がCoreファイルストレージ200に対して操作を行ったときに実行されてもよい。
上記処理により、Edgeファイルストレージ100のファイルシステム130に格納された差分データを1つの差分集約オブジェクト700に集約してCoreファイルストレージ200に転送することで、ネットワーク30のネットワーク転送量を削減することができる。
以下に用語の説明を示す。
「差分データ」は、クライアント600から入力され、ファイルシステム130に格納されたデータ自体を示す。図1において差分データは、a0、b0、c0、c1を示す。
「差分データの更新情報」は、どのファイルのどの部分が更新されたかを示す情報である。差分データの更新情報は、更新されたファイルごとに、当該ファイルのメタデータに格納されてもよいし、当該ファイルとは別のファイルに格納されてもよいし、差分データの更新情報を管理するデータベースに格納されてもよい。差分データの更新情報は、操作内容、操作対象、操作対象のオブジェクトアドレス,Offset、Lengthを含む。
「差分集約オブジェクト700」は、1または複数の差分データと、その差分データの更新情報を集約したオブジェクトである。
「オペレーションログ500」は、差分集約オブジェクトのうち、差分データの更新情報を示す。
「ファイル状態」は、Edgeファイルストレージ100のファイルシステム130内に格納されているファイルの状態を示す管理情報である。ファイル状態は、Dirty、Cached、Stubbedの3つの状態を持つ。
「ファイル部分状態」(またはファイルデータ状態、またはオフセット状態)は、Edgeファイルストレージ100のファイルシステム130内に格納されているファイルデータのオフセットごとの状態を示す管理情報である。ファイル部分状態は、ファイル部分、つまりファイルデータのオフセットごとにDirty、Cached、Stubbedの3つの状態を持つ。
状態がDirtyとは、ファイルまたはファイルデータのオフセットが、データセンタ20に反映されていない状態を示す。
状態がCachedとは、ファイルまたはファイルデータのオフセットが、データセンタ20に反映されており、かつ、Edgeファイルストレージ100のファイルシステム130にファイルデータを格納している状態を示す。
状態がStubbedとは、ファイルまたはファイルデータのオフセットが、データセンタ20に反映されており、かつ、Edgeファイルストレージ100のファイルシステム130にファイルデータを格納していない状態を示す。
ファイル状態およびファイル部分状態の格納場所は、各ファイルのメタデータでもよいし、当該ファイルとは別のファイルでもよいし、ファイル状態およびファイル部分状態を管理する管理するデータベースでもよい。
図2は、実施例1にかかる計算機システムの構成図の一例である。
本計算機システムは、各サイト10−1、10−2とデータセンタ20と、それらを接続するネットワーク30を有する。サイト10−1、10−2には、1つまたは複数のクライアント600と、1つまたは複数のEdgeファイルストレージ100が配置される。データセンタ20には、1つまたは複数のクライアント600と、1つまたは複数のCoreファイルストレージ200と、1つまたは複数のオブジェクトストレージ300を有する。
各サイト10−1、10−2において、クライアント600とEdgeファイルストレージ100は、例えば、拠点内LAN(Local Area Network)等のネットワークで接続されている。クライアント600は、例えば、NFS(Network File System)やCIFS(Common Internet File System)などのファイル共有プロトコルを用いてEdgeファイルストレージ100が提供するファイル共有サービスを利用する。
データセンタ20において、クライアント600とCoreファイルストレージ200と、オブジェクトストレージ300は、例えば、拠点内LAN(Local Area Network)等のネットワークで接続されている。
各サイトを接続するネットワーク30は、例えばWAN(Wide Area Network)等であり、例えば、各Edgeファイルストレージ100は、例えば、HTTP(Hypertext Transfer Protocol)などのプロトコルを用いて、Coreファイルストレージ200にアクセスする。
なお、実施例1では、計算機システム内に2つのサイト10−1、10−2を有する例を示して説明しているが、計算機システム内のサイトの数はいくつでもよい。
なお、ネットワークの種類は上記ネットワークに限定されず、種々のネットワークを利用可能である。
図3は、Edgeファイルストレージ100の構成図である。
Edgeファイルストレージ100は、コントローラ101と、記憶装置102とを有する。コントローラ101は、メモリ103、CPU105、ネットワークインタフェース(I/F)106、107及びインタフェース104を有する。これらは、例えばバス等の通信路により相互に接続される。CPU105は、メモリ103に格納されたプログラムを実行する。ネットワークI/F106は、サイト内のネットワークを介してクライアント600と通信するインタフェースである。ネットワークI/F107は、ネットワーク30を介してデータセンタ20と通信するインタフェースである。I/F104は、記憶装置102と相互に通信するために、I/F120に接続されるインタフェースである。
メモリ103には、Edgeファイルストレージ100を制御するプログラム及び情報が格納される。具体的には、例えば、メモリ103は、ファイル共有プログラム110と、IO Hookプログラム111と、Data Moverプログラム112と、ファイルシステムプログラム113と、オペレーティングシステム(OS)114と、を格納する。なお、メモリ103に格納されている各プログラム及び情報は、記憶装置102に格納されてもよい。この場合、これらはCPU105によってメモリ103に読み出されて実行される。
ファイル共有プログラム110は、クライアント600との間で、ファイル共有プロトコルを用いたインタフェースを提供するプログラムである。IO Hookプログラム111は、ファイル共有プログラム110を介してファイルシステム130に格納されたファイルおよびディレクトリをに対する操作を検出するプログラムである。Data Moverプログラム112は、IO Hookプログラム111が検出したディレクトリおよびファイルをCoreファイルストレージ200に転送するためのプログラムである。ファイルシステムプログラム113は、ファイルシステム130を制御するプログラムである。
記憶装置102は、メモリ121、CPU122及びI/F120を有する。これらは、例えばバス等の通信路により、相互に接続される。I/F120は、コントローラ101との接続に使用するインタフェースである。メモリ121及びディスク123には、プログラムやデータが格納される。CPU122は、コントローラ101からの命令に基づき、メモリ121内のプログラムを実行する。記憶装置102は、FC−SAN(Fibre Channel Storage Area Network)等のブロック形式のストレージ機能をコントローラ101に提供してよい。
図4は、Coreファイルストレージ200の構成図である。
Coreファイルストレージ200は、コントローラ201と、記憶装置202とを有する。コントローラ201は、メモリ203、CPU205、ネットワークインタフェース(I/F)206、207及びインタフェース204を有する。これらは、例えばバス等の通信路により相互に接続される。CPU205は、メモリ203に格納されたプログラムを実行する。ネットワークI/F206は、ネットワーク30を介してEdgeファイルストレージ100と通信するインタフェースである。ネットワークI/F207は、データセンタ20内のネットワークを介してオブジェクトストレージ300と通信するインタフェースである。I/F204は、記憶装置202と相互に通信するために、I/F220に接続されるインタフェースである。
メモリ203には、Coreファイルストレージ200を制御するプログラム及び情報が格納される。具体的には、例えば、メモリ203は、オブジェクト操作プログラム210と、差分反映プログラム211と、ファイルシステムプログラム212と、オペレーティングシステム(OS)213と、を格納する。なお、メモリ203に格納されている各プログラム及び情報は、記憶装置202に格納されてもよい。この場合、これらはCPU205によってメモリ203に読み出されて実行される。
オブジェクト操作プログラム210は、Edgeファイルストレージ100およびオブジェクトストレージ300との間で、例えばHTTPプロトコルを用いたインタフェースを提供するプログラムである。ファイルシステムプログラム212は、記録装置202に格納されるファイルシステムを制御するプログラムである。
記憶装置202は、メモリ221、CPU222及びI/F220を有する。これらは、例えばバス等の通信路により、相互に接続される。I/F220は、コントローラ201との接続に使用するインタフェースである。メモリ221及びディスク223には、プログラムやデータが格納される。CPU222は、コントローラ201からの命令に基づき、メモリ221内のプログラムを実行する。記憶装置202は、FC−SAN(Fibre Channel Storage Area Network)等のブロック形式のストレージ機能をコントローラ201に提供してよい。
図5は、オブジェクトストレージ300の構成図である。オブジェクトストレージ300は、コントローラ301と、記憶装置302とを有する。コントローラ301は、メモリ303、CPU305、ネットワークI/F306及びI/F304を有する。これらは、例えばバス等の通信路により相互に接続される。CPU305は、メモリ303に格納されたプログラムを実行する。ネットワークI/F306は、データセンタ20内ネットワークを介してCoreファイルストレージ200と通信するインタフェースである。I/F304は、記憶装置302と通信するために、I/F320に接続されるインタフェースである。
メモリ303には、オブジェクトストレージ300を制御するプログラム及び情報が格納される。具体的には、例えば、メモリ303には、オブジェクト操作プログラム310と、ネームスペース管理プログラム311と、オペレーティングシステム(OS)312と、が格納される。なお、メモリ303に格納されている各プログラム及び情報は、記憶装置302格納されてもよい。この場合、これらはCPU305によってメモリ203に読み出されて実行される。
オブジェクト操作プログラム310は、Coreファイルストレージ200からの要求(例えば、PUT要求やGET要求)を処理するプログラムである。ネームスペース管理プログラム311は、ネームスペースを作成・管理するプログラムである。
記憶装置302は、メモリ321、CPU322、ディスク323及びI/F320を有する。これらは、例えばバス等の通信路により相互に接続される。I/F320は、コントローラ301との接続に使用するインタフェースである。メモリ321及びディスク323には、プログラムやデータが格納される。CPU322は、コントローラ301からの命令に基づき、メモリ321内のプログラムを実行する。記憶装置302は、FC−SAN等のブロック形式のストレージ機能をコントローラ301に提供してよい。
図6は、オペレーションログ500の一例である。オペレーションログ500には、オペレーション種別501と、オブジェクトアドレス502と、Offset503と、Length504と、が記録されている。オペレーション種別501は、例えば、ファイル作成、ファイル更新、メタデータ更新などがある。
以下に、実施例1における処理のフローチャートを示す。
図7は、ファイル/ディレクトリ作成処理1000のフローチャートの一例である。ファイル/ディレクトリ作成処理1000は、各Edgeファイルストレージ100において、コントローラ101のCPU105がファイル共有プログラム110およびIO Hookプログラム111を実行することにより行われる。
ファイル共有プログラム110は、クライアント600からのファイル/ディレクトリ作成要求を受理する(S1001)。
IO Hookプログラム111は、ファイル共有プログラム110が受理したファイル/ディレクトリ操作を検出する(S1002)
IO Hookプログラム111は、S1002で検出した操作がファイル/ディレクトリ作成か否か判定する(S1003)。
S1002で検出した操作がファイル/ディレクトリ作成ではない場合(S1003:No)、ファイル/ディレクトリ作成処理1000を終了する(S1009)。
一方、S1002で検出した操作がファイル/ディレクトリ作成の場合(S1003:Yes)、IO Hookプログラム111は、ファイルシステムプログラム113にファイル/ディレクトリ作成を要求し、ファイルシステムプログラム113はファイルシステム130にファイル/ディレクトリを作成する。本ステップにおいてIO Hookプログラム111は、S1002で検出した操作の対象ファイルのファイルタイプに応じて、ファイルタイプが通常ファイルであればファイル作成を、ファイルタイプがディレクトリであればディレクトリ作成をファイルシステムプログラム113に要求する。ファイルシステムプログラム113は、要求されたファイル種別に基づいてファイル/ディレクトリを作成する(S1004)。
IO Hookプログラム111は、作成したファイル/ディレクトリの状態をDirtyに設定する(S1005)。ファイル/ディレクトリの状態を管理する方法は、ファイルのメタデータに格納する方法、作成したファイル/ディレクトリとは別の管理ファイルに格納する方法、データベースに格納する方法など、何れの方法でもよい。
IO Hookプログラム111は、作成したファイル/ディレクトリの親ディレクトリの状態を判定する(S1006)。
作成したファイル/ディレクトリの親ディレクトリの状態がDirtyではない場合(ステップS1006:No)、IO Hookプログラム111は、親ディレクトリの状態をDirtyに変更する(S1007)。
一方、作成したファイル/ディレクトリの親ディレクトリの状態がDirtyの場合(ステップS1006:Yes)、S1008に遷移する。
ファイル共有プログラム110は、クライアント600にファイル/ディレクトリ作成完了を応答し(S1008)、ファイル/ディレクトリ作成処理1000を終了する(S1009)。
上記ステップS1004およびS1005において、ファイル/ディレクトリ作成とファイル/ディレクトリの状態の設定を2つのステップで実行しているが、これらを1つのステップで実行してもよい。
上記ファイル/ディレクトリ作成処理1000により、作成されたファイル/ディレクトリの状態および親ディレクトリの状態がDirtyに設定され、前回のマイグレーション処理以降に更新されたファイル/ディレクトリを特定できる。
図8は、ファイル更新処理2000のフローチャートの一例である。ファイル更新処理2000は、各Edgeファイルストレージ100において、コントローラ101のCPU105がファイル共有プログラム110およびIO Hookプログラム111を実行することにより行われる。
ファイル共有プログラム110は、クライアント600からのファイル更新要求を受理する(S2001)。ファイル更新は、具体的にはWriteオペレーションによるファイルデータの更新および追加、Truncateオペレーションによるファイルデータの伸張および切り詰め、ファイルのオーナー/グループやアクセス権の変更や、拡張属性の更新および追加などのメタデータの更新を含む。
IO Hookプログラム111は、ファイル共有プログラム110が受理したファイル/ディレクトリ操作を検出する(S2002)
IO Hookプログラム111は、S1002で検出した操作がファイル更新か否か判定する(S2003)。
S2002で検出した操作がファイル更新ではない場合(S2003:No)、ファイル更新処理2000を終了する(S2010)。
一方、S2002で検出した操作がファイル更新の場合(S2003:Yes)、IO Hookプログラム111は、ファイルシステムプログラム113にファイル更新を要求し、ファイルシステムプログラム113はファイルシステム130の当該ファイルを更新する(S2004)。本ステップにおいてIO Hookプログラム111は、S2002で検出したファイル更新のオペレーションに応じて、データ更新ならばWriteオペレーションやTruncateオペレーション、メタデータ更新ならばメタデータ更新オペレーションをファイルシステムプログラム113に要求する。ファイルシステムプログラム113は、要求されたファイルオペレーションに基づいてファイルを更新する。
IO Hookプログラム111は、更新したファイルの更新範囲のファイル部分状態を確認し、Dirtyか否か判定する(S2005)。
更新したファイルのファイルデータの更新範囲の状態がDirtyではない場合(ステップS2005:No)、IO Hookプログラム111は、更新範囲のファイル部分状態をDirtyに変更する(S2006)。ファイルデータ(ファイルの一部)の範囲ごとの状態を管理する方法は、更新情報として、ファイルのメタデータに格納する方法、操作対象ファイルとは別の管理ファイルに格納する方法、データベースに格納する方法など、何れの方法でもよい。本ステップにおいて、一部の更新範囲がDirtyではなく、そのほかの更新範囲がDirtyの場合は、Dirtyではない部分のみDirtyに変更する。
一方、更新したファイルのファイルデータの更新範囲のファイル状態がDirtyの場合(ステップS2005:Yes)、S2007に遷移する。
IO Hookプログラム111は、更新したファイルの状態を確認し、Dirtyか否か判定する(S2007)。
更新したファイルの状態がDirtyではない場合(ステップS2007:No)、IO Hookプログラム111は、ファイルの状態をDirtyに変更する(S2008)。
一方、更新したファイルの状態がDirtyの場合(ステップS2007:Yes)、S2009に遷移する。
ファイル共有プログラム110はクライアント600にファイル更新完了を応答し(S2009)、ファイル更新処理2000を終了する(S2010)。
上記ファイル更新処理2000により、更新されたファイルのファイルデータの範囲およびファイルの状態がDirtyに設定され、前回のマイグレーション処理以降に更新されたファイルデータおよびファイルを特定できる。
図9は、ファイルマイグレーション処理3000のフローチャートの一例である。ファイルマイグレーション処理3000は、各Edgeファイルストレージ100において、コントローラ101のCPU105がData Moverプログラム112を実行することにより行われる。なお、ファイルマイグレーション処理3000は、所定の条件を満たす場合に行われてよい。例えば、ファイルマイグレーション処理3000は、定期的又は不定期に行われてもよいし、クライアント600がファイルシステム130に対して操作を行ったときに実行されてもよい。また、ファイルマイグレーション処理3000とディレクトリマイグレーション処理は順番に実行してもよいし、同時に実行してもよい。
Data Moverプログラム112は、ファイルシステム130に格納されているファイル/ディレクトリの中から、ファイルの状態がDirtyで、ファイルタイプがファイルの条件を満たすものを取得し、リスト化する(S3001)。本ステップにおいて条件を満たすファイルを取得する方法は、ファイルシステム130をクローリングする方法でもよいし、ファイルシステムのオペレーションを記録した操作ログから抽出する方法でもよいし、ファイルシステム操作情報を管理するデータベースから抽出する方法でもよく、何れの方法でもよい。
Data Moverプログラム112は、S3001で作成したリストが空か否か判定する(ステップS3002)。
リストが空の場合(ステップS3002:Yes)、ファイルマイグレーション処理3000を終了する(S3011)。
一方、リストが空でない場合(ステップS3002:No)、Data Moverプログラム112は、リストからDirtyであるファイルに対応するエントリを1つ取得する(S3003)。
Data Moverプログラム112は、当該エントリの差分データの更新情報を管理情報として取得する(S3004)。管理情報(更新情報)の格納場所は、ファイルの拡張属性でもよいし、管理ファイルでもよいし、データベースでもよい。
Data Moverプログラム112は、S3004で取得した管理情報からファイルデータの状態がDirtyのエントリ(差分データ)を転送部分リストとして取得する(S3005)。つまり、ファイルの更新部分を示すオフセットとDirty情報等の部分管理情報が複数ある場合、複数の更新個所をリスト(転送部分リスト)として取得する。この転送部分リストには、図6に示したようなoplog500の情報(Offset、Length,Object address)が含まれる。
Data Moverプログラム112は、S3005で取得した転送部分リストの差分データサイズが集約閾値以下か否か判定する(S3006)。集約閾値とは、差分データを単一ファイルとしてCore200に転送するか、集約してCoreに転送するかを判定するための閾値であり、集約閾値より大きい場合は単一ファイル転送し、集約閾値以下の場合は集約ファイル転送する。
差分データサイズが集約閾値以下の場合、Data Moverプログラム112は、集約ファイル転送処理5000を実行する(S3008)。
一方、差分データサイズが集約閾値より大きい場合、Data Moverプログラム112は、単一ファイル転送処理4000を実行する(S3007)。
Data Moverプログラム112は、Coreに転送したファイルのファイル状態と転送部分のファイルデータの状態をCachedに変更する(S3009)。
Data Moverプログラム112は、S3001で作成したリストから転送したファイルのエントリを削除し、S3002に遷移する(S3010)。
図10は、単一ファイル転送処理4000のフローチャートの一例である。単一ファイル転送処理4000は、Edgeファイルストレージ100で作成されたファイルおよび更新されたファイルを単一のファイルとしてCoreに転送する処理であり、ファイルマイグレーション処理3000のS3007で実行される。
Data Moverプログラム112は、転送部分リストに記録された箇所を、差分データとして本体ファイルからファイルシステムプログラム113を介して取得する(S4001)。
Data Moverプログラム112は、管理情報からオブジェクトアドレスを取得し、当該オブジェクトアドレスに対して更新要求を行う。この時、S4001で取得したファイルデータを転送する(S4002)。
Coreファイルストレージ200のオブジェクト操作プログラム210は、Edgeファイルストレージ100からのオブジェクト更新要求を受理し、受理した要求で指定されたオブジェクトアドレスに基づいて、受理したデータをオブジェクトストレージ300に転送する(S4003)。
オブジェクトストレージ300は、Coreファイルストレージ200からの要求を受理し、指定されたオブジェクトアドレスに対して受理したデータを格納する(S4004)。
Coreファイルストレージ200は、Edgeファイルストレージ100に対して応答を返す(S4005)。
図10において、Coreファイルストレージ200が、Edgeファイルストレージ100から受理したオブジェクトを、オブジェクトストレージ300に転送する例を示したが、Edgeファイルストレージ100の記憶装置202にオブジェクトを格納し、応答を返してもよい。また、Edgeファイルストレージ100から受理した要求への応答とは非同期にオブジェクトストレージ300に当該オブジェクトを格納してもよい。
図11は、集約ファイル転送処理5000のフローチャートの一例である。集約ファイル転送処理5000は、Edgeファイルストレージ100で作成されたファイルおよび更新されたファイルを集約してCoreに転送する処理であり、ファイルマイグレーション処理3000のS3008で実行される。
Data Moverプログラム112は、転送部分リストに記録された箇所を差分データとして、本体ファイルからファイルシステムプログラム113を介して取得する(S5001)。
Data Moverプログラム112は、本体ファイルから取得したデータ(更新情報)を差分集約オブジェクトに追加する(S5002)。差分集約オブジェクトは、集約ファイル転送処理5000が転送する複数のファイルのデータを集約して保持する一時的なデータであり、一時的にメモリ103または記憶装置102に格納する。差分集約オブジェクトは、1つでもよいし、複数でもよい。例えば、ディレクトリごとに分けてもよいし、ファイル名や拡張子やオブジェクトアドレスなどの名前で分けてもよいし、ファイルサイズごとに分けてもよい。
Data Moverプログラム112は、S5002で追加したデータの情報(オブジェクトアドレス、Offset、Length}を、差分集約オブジェクトのOplog500に追加する(S5003)。
Data Moverプログラム112は、差分集約オブジェクトが集約転送閾値を超えたか否か判定する(S5004)。集約転送閾値は、差分集約オブジェクトが転送の条件を満たすか否かを判定するために用いる。集約転送閾値は1つに限定されない。例えば、差分集約オブジェクトの総データサイズやデータの個数や作成してからの経過時間や、それらの組み合わせでもよい。
差分集約オブジェクトが集約転送閾値を超えていない場合(S5004:No)、集約ファイル転送処理5000を終了する(S5009)。
一方、集約データが集約転送閾値を超えている場合(S5004:Yes)、Data Moverプログラム112は、差分集約オブジェクトのオブジェクトアドレスを決定し、当該オブジェクトアドレスに対して更新要求を行うため、差分集約オブジェクトを転送する(S5005)。差分集約オブジェクトのオブジェクトアドレスの決定方法は、あらかじめ決められたアドレスを用いてもよいし、Edgeファイルストレージ100がCoreファイルストレージ200に問い合わせて決めてもよいし、Edgeファイルストレージ100またはCoreファイルストレージ200が外部サーバに問い合わせる方法でもよい。
Coreファイルストレージ200のオブジェクト操作プログラム210は、Edgeファイルストレージ100からの更新要求を受理し、受理した要求で指定されたオブジェクトアドレス(Oplogに含まれる)に基づいて、当該オブジェクトアドレスに対して受理したデータをオブジェクトストレージ300に転送する(S5006)。
オブジェクトストレージ300は、Coreファイルストレージ200からの要求を受理し、指定されたオブジェクトアドレスに対して受理したデータを格納する(S5007)。
Coreファイルストレージ200は、Edgeファイルストレージ100に対して応答を返す(S5008)。
図11において、Coreファイルストレージ200がEdgeファイルストレージ100から受理したオブジェクトをオブジェクトストレージ300に転送する例を示したが、Edgeファイルストレージ100の記憶装置202にオブジェクトを格納し、応答を返してもよい。また、Edgeファイルストレージ100から受理した要求への応答とは非同期にオブジェクトストレージ300に当該オブジェクトを格納してもよい。
図12は、ディレクトリマイグレーション処理6000のフローチャートの一例である。ディレクトリマイグレーション処理6000は、各Edgeファイルストレージ100において、コントローラ101のCPU105がData Moverプログラム112を実行することにより行われる。なお、ディレクトリマイグレーション処理3000は、所定の条件を満たす場合に行われてよい。例えば、ディレクトリマイグレーション処理3000は、定期的又は不定期に行われてもよいし、クライアント600がファイルシステム130に対して操作を行ったときに実行されてもよい。また、ファイルマイグレーション処理3000とディレクトリマイグレーション処理は順番に実行してもよいし、同時に実行してもよい。なお、コア操作S6008からS6010は、Coreファイルストレージ200のCPU205が、メモリ203に格納されたプログラムを実行することにより行われる。
Data Moverプログラム112は、ファイルシステム130に格納されているファイル/ディレクトリの中から、ファイルの状態がDirtyで、ファイルタイプがディレクトリの条件を満たすものを取得し、リスト化する(S6001)。本ステップにおいて条件を満たすファイルを取得する方法は、ファイルシステム130をクローリングする方法でもよいし、ファイルシステムのオペレーションを記録した操作ログから抽出する方法でもよいし、ファイルシステム操作情報を管理するデータベースから抽出する方法でもよく、何れの方法でもよい。
Data Moverプログラム112は、S6001で作成したリストが空か否か判定する(ステップS6002)。
リストが空の場合(ステップS6002:Yes)、ディレクトリマイグレーション処理6000を終了する(S6013)。
一方、リストが空でない場合(ステップS6002:No)、Data Moverプログラム112は、リストからDirty状態にあるディレクトリに対応するエントリを1つ取得する(S6003)。
Data Moverプログラム112は、当該エントリのディレクトリ名やファイル名を含む管理情報を取得する(S6004)。管理情報の格納場所は、ファイルの拡張属性でもよいし、管理ファイルでもよいし、データベースでもよい。
Data Moverプログラム112は、S6004で取得したディレクトリ名やファイル名等の管理情報からディレクトリ情報を取得する(S6005)。ディレクト情報は、当該ディレクトリのメタデータと、当該ディレクトリのディレクトリエントリ情報を含む。ディレクトリエントリ情報は、配下のファイル/ディレクトリの名前やオブジェクトアドレスを含む。
Data Moverプログラム112は、S6005で取得したディレクトリ情報からオブジェクトストレージ用ディレクトリ情報を生成する(S6006)。
Data Moverプログラム112は、管理情報からオブジェクトアドレスを取得し、当該オブジェクトアドレスに対して更新要求を行う。この時、S6006で生成したオブジェクトストレージ用ディレクトリ情報を転送する(S6007)。
Coreファイルストレージは、受理したオブジェクトアドレスに基づいて、受理したデータをオブジェクトストレージに転送する。つまり、Coreファイルストレージ200のオブジェクト操作プログラム210は、Edgeファイルストレージ100からの更新要求を受理し、受理した要求で指定されたオブジェクトアドレスをオブジェクトストレージ300のオブジェクトアドレスに変換し、当該オブジェクトアドレスに対して受理したデータをオブジェクトストレージ300に転送する(S6008)。
オブジェクトストレージ300は、Coreファイルストレージ200からの要求を受理し、指定されたオブジェクトアドレスに対して受理したデータを格納する(S6009)。
Coreファイルストレージ200は、Edgeファイルストレージ100に対して応答を返す(S6010)。
Data Moverプログラム112は、Coreに転送したディレクトリのファイル状態をCachedに変更する(S6011)。
Data Moverプログラム112は、S6001で作成したリストから転送したディレクトリのエントリを削除し、S6002に遷移する(S6012)。
図12において、Coreファイルストレージ200がEdgeファイルストレージ100から受理したオブジェクトをオブジェクトストレージ300に転送する例を示したが、Edgeファイルストレージ100の記憶装置202にオブジェクトを格納し、Edgeファイルストレージ100に応答を返してもよい。また、Edgeファイルストレージ100から受理した要求への応答とは非同期にオブジェクトストレージ300に当該オブジェクトを格納してもよい。
図13は、差分反映処理7000のフローチャートの一例である。差分反映処理7000は、Coreファイルストレージ200において、コントローラ201のCPU205が差分反映プログラム211を実行することにより行われる。なお、差分反映処理7000は、所定の条件を満たす場合に行われてよい。例えば、差分反映処理7000は、定期的又は不定期に行われてもよいし、Edgeファイルストレージ100がCoreファイルストレージ200に対して操作を行ったときに実行されてもよい。
差分反映プログラム211は、差分集約オブジェクト700があるか否かを確認する(S7001)。本ステップは、オブジェクト操作プログラム210を用いてオブジェクトストレージ300に格納されているオブジェクトの存在を確認してもよいし、ファイルシステムプログラム212を用いて記憶装置202に格納されているオブジェクトの存在を確認してもよい。
差分集約オブジェクトが1つもない場合(S7002:No)、差分反映プログラム211は、差分反映処理7000を終了する。
一方、差分集約オブジェクトが1つ以上ある場合(S7002:Yes)、差分反映プログラム211は、差分集約オブジェクトのすべての反映が完了したか判定する(S7003)。
差分集約オブジェクトのすべての反映が完了した場合(S7003:Yes)、差分反映プログラム211は、差分反映処理7000を終了する。
一方、差分集約オブジェクトのすべての反映が完了していない場合(S7003:No)、差分反映プログラム211は、未反映の差分集約オブジェクトの1つを取得し、差分集約オブジェクトからOplogを取得する(S7004)。本ステップは、オブジェクト操作プログラム210を用いてオブジェクトストレージ300に格納されている差分集約オブジェクトを取得してもよいし、ファイルシステムプログラム212を用いて記憶装置202に格納されているオブジェクトを取得してもよい。
差分反映プログラム211は、Oplogに対応するすべての差分データに対して、個々へのオブジェクトの反映が完了しているか判定する(S7005)。完了している場合(S7005:Yes)、S7003に遷移し、一方、完了していない場合、S7006に遷移する。
差分反映プログラム211は、差分集約オブジェクトから1つまたは複数の差分データを取得する(S7006)。
差分反映プログラム211は、S7006で取得した差分データが新規ファイルか否かを判定する(S7007)。本ステップは、Oplogに格納されたオペレーションタイプを基に判定してもよいし、Oplogに格納されたオブジェクトアドレスがオブジェクトストレージ300に存在するか否かで判定してもよい。差分データが新規ファイルの場合(S7007:Yes)、S7008に遷移する。一方、差分データが新規ファイルでない場合(S7007:No)、S7010に遷移する。
S7007で差分データが新規ファイルの場合、差分反映プログラム211は、Oplogに格納されたオブジェクトアドレスに基づいて、S7006で取得したデータをオブジェクトストレージに転送する(S7008)。
オブジェクトストレージ300は、Coreファイルストレージ200からの要求を受理し、指定されたオブジェクトアドレスに新規オブジェクトを作成し受理したデータを格納し、S7005に遷移する(S7009)。
S7007で差分データが新規ファイルではない場合、差分反映プログラム211は、Oplogに格納されたOffsetとLengthからオブジェクトストレージ300に格納されたオブジェクトに対する更新部分である更新パートを決定する(S7010)。本ステップは、オブジェクトストレージ300の更新パートの最小サイズに依存し、差分データが更新パートの最小サイズよりも小さい場合は、更新パートを最小サイズとする。
差分反映プログラム211は、更新パートのうち、差分データ以外のデータをオブジェクトストレージ300から取得する(ステップS7011)。差分データと差分データ以外のデータをマージし、更新パートとするためである。
差分反映プログラム211は、Oplogに格納されたオブジェクトアドレスに基づいて、オブジェクトの更新パートをオブジェクトストレージ300に転送する(S7012)。
オブジェクトストレージ300は、Coreファイルストレージ200からの要求を受理し、指定されたオブジェクトアドレスの更新パートに、受理したデータを格納し、S7005に遷移する(S7013)。
図13において、全差分の反映を完了した差分集約オブジェクトをオブジェクトストレージ300から削除してもよい。
本処理により、Edgeファイルストレージ100から差分集約オブジェクトとして転送された差分データを、オブジェクトストレージ300の個々のオブジェクトに反映できる。
図14は、ファイル参照処理8000のフローチャートの一例である。ファイル参照処理8000は、各Edgeファイルストレージ100において、コントローラ101のCPU105がファイル共有プログラム110、IO Hookプログラム111およびData Moverプログラム112を実行することにより行われる。
ファイル共有プログラム110は、クライアント600からのファイル参照要求を受理する(S8001)。
IO Hookプログラム111は、ファイル共有プログラム110が受理したファイル/ディレクトリ操作を検出する(S8002)
IO Hookプログラム111は、S8002で検出した操作がファイル参照か否か判定する(S8003)。
S8002で検出した操作がファイル参照ではない場合(S8003:No)、ファイル参照処理8000を終了する(S8011)。
一方、S8002で検出した操作がファイル参照の場合(S8003:Yes)、IO Hookプログラム111は、操作範囲の状態がStubbedか否かを判定する(S8004)。
操作範囲の状態がStubbedの場合(S8004:Yes)、S8005に遷移し、一方、操作範囲の状態がStubbedではない場合(S8004:No)、S8009に遷移する。操作範囲のうち、一部でもStubbedであればS8004はYesと判定する。
操作範囲の状態がStubbedの場合、IO Hookプログラム111は、Data Moverプログラム112にリコールを要求し、Data Moverプログラム112は、Coreファイルストレージ200からデータを要求する(S8005)。リコールとは、データがEdgeファイルストレージ100のファイルシステム130に格納されておらず、Coreからデータを取得する処理である。
Coreファイルストレージ200は、参照要求時の差分反映処理9000を実行する(S8012)。
Data Moverプログラム112は、Coreファイルストレージ200からデータを受理する(S8006)。
Data Moverプログラム112は、ファイルシステムプログラム113を介してデータをファイルシステム130に格納する(S8007)。
Data Moverプログラム112は、操作範囲の状態をStubbedからCachedに変更する(S8008)。
IO Hookプログラム111は、ファイルシステムプログラム113を介してファイル参照を実行する(S8009)。
IO Hookプログラム111は、クライアント600に応答を返し(S8010)、ファイル参照処理8000を終了する(S8011)。
図15は、参照要求時の差分反映処理9000のフローチャートの一例である。参照要求時の差分反映処理9000は、Coreファイルストレージ200において、コントローラ201のCPU205が差分反映プログラム211を実行することにより行われる。参照要求時の差分反映処理9000は、ファイル参照処理のS8012で実行される。
差分反映プログラム211は、差分集約オブジェクトがあるか否かを確認する(S9001)。本ステップは、オブジェクト操作プログラム210を用いてオブジェクトストレージ300に格納されているオブジェクトの存在を確認してもよいし、ファイルシステムプログラム212を用いて記憶装置202に格納されているオブジェクトの存在を確認してもよい。
差分集約オブジェクトが1つもない場合(S9002:No)、差分反映プログラム211は、差分反映処理9000を終了する。
一方、差分集約オブジェクトが1つ以上ある場合(S9002:Yes)、差分反映プログラム211は、差分集約オブジェクトのすべての確認が完了したか判定する(S9003)。
差分集約オブジェクトのすべての確認が完了した場合(S9003:Yes)、差分反映プログラム211は、差分反映処理9000を終了する。
一方、差分集約オブジェクトのすべての確認が完了していない場合(S9003:No)、差分反映プログラム211は、未確認の差分集約オブジェクトからOplogを取得する(S9004)。本ステップは、オブジェクト操作プログラム210を用いてオブジェクトストレージ300に格納されている差分集約オブジェクトを取得してもよいし、ファイルシステムプログラム212を用いて記憶装置202に格納されているオブジェクトを取得してもよい。
差分反映プログラム211は、参照要求されたオブジェクトアドレスと一致するオブジェクトアドレスがOplogにあるか検索する(S9005)。参照要求されたオブジェクトアドレスと一致するオブジェクトアドレスがOplogにない場合(S9005:No)、S9003に遷移し、一方、ある場合、S9006に遷移する。
差分反映プログラム211は、差分集約オブジェクトからオブジェクトアドレスが一致する差分データを取得する(S9006)。
差分反映プログラム211は、S9006で取得した差分データが新規ファイルか否かを判定する(S9007)。本ステップは、Oplogに格納されたオペレーションタイプを基に判定してもよいし、Oplogに格納されたオブジェクトアドレスがオブジェクトストレージ300に存在するか否かで判定してもよい。差分データが新規ファイルの場合(S9007:Yes)、S9008に遷移する。一方、差分データが新規ファイルでない場合(S9007:No)、S9010に遷移する。
S9007で差分データが新規ファイルの場合、Oplogに格納されたオブジェクトアドレスに基づいて、データをオブジェクトストレージに転送する。つまり、差分反映プログラム211は、Oplogに格納されたオブジェクトアドレスをオブジェクトストレージ300のオブジェクトアドレスに変換し、S9006で取得したデータをオブジェクトストレージに転送する(S9008)。
オブジェクトストレージ300は、Coreファイルストレージ200からの要求を受理し、指定されたオブジェクトアドレスに新規オブジェクトを作成し受理したデータを格納し、S9005に遷移する(S9009)。
S9007で差分データが新規ファイルではない場合、差分反映プログラム211は、Oplogに格納されたOffsetとLengthからオブジェクトストレージ300に格納されたオブジェクトに対する更新部分である更新パートを決定する(S9010)。本ステップは、オブジェクトストレージ300の更新パートの最小サイズに依存し、差分データが更新パートの最小サイズよりも小さい場合は、更新パートを最小サイズとする。
差分反映プログラム211は、更新パートのうち、差分データ以外のデータをオブジェクトストレージ300から取得する(ステップS9011)。
差分反映プログラム211は、Oplogに格納されたオブジェクトアドレスに基づいて、データをオブジェクトストレージに転送する。つまり、Oplogに格納されたオブジェクトアドレスをオブジェクトストレージ300のオブジェクトアドレスに変換し、オブジェクトの更新パートをオブジェクトストレージ300に転送する(S9012)。
オブジェクトストレージ300は、Coreファイルストレージ200からの要求を受理し、指定されたオブジェクトアドレスの更新パートに、受理したデータを格納し、S9005に遷移する(S9013)。
図15において、参照要求により差分を反映した差分データを記録しておき、次回の参照要求時に差分反映処理をスキップしてもよい。これにより、同じ差分データを複数回反映する処理を削減できる。
図15において、参照要求されたオブジェクトアドレスと一致するオブジェクトアドレスの差分のみ反映してもよいし、差分集約オブジェクト全体を差分反映してもよい。また、全差分の反映を完了した差分データを差分集約オブジェクトから削除し、Oplogから当該更新情報を削除してもよい。
本処理により、Edgeファイルストレージ100から差分集約オブジェクトとして転送された差分データを、クライアント600からの参照要求時にオンデマンドでオブジェクトストレージ300の個々のオブジェクトに反映し、最新のデータをクライアント600に返すことができる。
図16は、実施例2にかかる計算機システムの構成図の一例である。実施例1との違いは、実施例1のCoreファイルストレージ200とオブジェクトストレージ300がCoreストレージ400に置き換わる点である。
図17は、Coreストレージ400の構成例である。Coreストレージ200は、コントローラ401と、記憶装置402とを有する。コントローラ401は、メモリ403、CPU405、ネットワークインタフェース(I/F)406及びインタフェース404を有する。これらは、例えばバス等の通信路により相互に接続される。CPU405は、メモリ403に格納されたプログラムを実行する。ネットワークI/F406は、ネットワーク30を介してEdgeファイルストレージ100と通信するインタフェースである。I/F404は、記憶装置402と相互に通信するために、I/F420に接続されるインタフェースである。
メモリ403には、Coreストレージ400を制御するプログラム及び情報が格納される。具体的には、例えば、メモリ403は、オブジェクト操作プログラム410と、差分反映プログラム411と、ネームスペース管理プログラム412と、ファイルシステムプログラム413と、オペレーティングシステム(OS)414と、を格納する。なお、メモリ403に格納されている各プログラム及び情報は、記憶装置402に格納されてもよい。この場合、これらはCPU405によってメモリ403に読み出されて実行される。
記憶装置402は、メモリ421、CPU422及びI/F420を有する。これらは、例えば、バス等の通信路により、相互に接続される。I/F420は、コントローラ401との接続に使用するインタフェースである。メモリ421及びディスク423には、プログラムやデータが格納される。CPU422は、コントローラ401からの命令に基づき、メモリ421内のプログラムを実行する。記憶装置402は、FC−SAN(Fibre Channel Storage Area Network)等のブロック形式のストレージ機能をコントローラ401に提供してよい。
以上、幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
10−1、10−2…サイト、 20データセンタ、 100…Edgeファイルストレージ、 130…ファイルシステム、 200…Coreファイルストレージ、 300…オブジェクトストレージ、 500…オペレーションログ

Claims (10)

  1. クライアントに対してファイル共有サービスを提供し、ファイルシステムを有する第1のファイルストレージと、
    前記第1のファイルストレージとネットワークを介して接続され、前記第1のファイルストレージからのオブジェクト要求を受け付ける第2のファイルストレージと、
    前記第1のファイルストレージから受け付けたオブジェクト要求に基づいて、前記第2のファイルストレージからオブジェクトとして転送されてきたファイルもしくはディレクトリを格納するオブジェクトストレージと、を有する計算機システムにおいて、
    前記第1のファイルストレージは、
    前記クライアントから前記ファイルシステムのファイル若しくはディレクトリの更新を検出し、
    検出されたファイル若しくはディレクトリの差分データと差分データの更新情報を、複数まとめて差分集約オブジェクトに集約し、
    前記差分集約オブジェクトを前記第2のファイルストレージに転送し、
    前記第2のファイルストレージは、
    前記差分集約オブジェクトを受信し、前記差分集約オブジェクトの前記差分データの更新情報に従って、前記差分データの各々を、前記オブジェクトストレージのオブジェクトに反映することを特徴とする計算機システム。
  2. 請求項1に記載の計算機システムにおいて、
    前記第1のファイルストレージは、Edgeファイルストレージであり、
    前記第2のファイルストレージが、Coreファイルストレージであることを特徴とする計算機システム。
  3. 請求項2に記載の計算機システムにおいて、
    前記Edgeファイルストレージで集約される前記差分集約オブジェクトは、複数の前記差分データと、複数の前記差分データの更新情報として前記差分データにそれぞれ対応する前記ファイルシステムに対する操作の種別、オブジェクトアドレス、オフセット、レングスとの関係を管理するオペレーションログとを有することを特徴とする計算機システム。
  4. 請求項1に記載の計算機システムにおいて、
    前記第1のファイルストレージは、
    前記差分集約オブジェクトの前記差分データが所定値を超える場合、単一ファイル転送処理を実行し、
    前記差分集約オブジェクトの前記差分データが所定値以下の場合、複数の差分データと差分データの更新情報を集約して転送する集約ファイル転送処理を実行することを特徴とする計算機システム。
  5. 請求項4に記載の計算機システムにおいて、
    前記第1のファイルストレージによる、前記差分集約オブジェクトを前記第2のファイルストレージに転送と、
    前記第2のファイルストレージによる、前記差分データの前記オブジェクトストレージのオブジェクトへの反映とは、非同期に実行されることを特徴とする計算機システム。
  6. 請求項4に記載の計算機システムにおいて、
    前記第1のファイルストレージによる、前記差分集約オブジェクトを前記第2のファイルストレージに転送と、前記第2のファイルストレージによる、前記差分データの前記オブジェクトストレージのオブジェクトへの反映とを、同期して実行することを特徴とする計算機システム。
  7. 請求項4に記載の計算機システムにおいて、
    前記クライアントから前記ファイルシステムへの参照要求時に、前記第2のファイルストレージによる、前記差分データの前記オブジェクトストレージのオブジェクトへの反映を実行することを特徴とする計算機システム。
  8. クライアントに対してファイル共有サービスを提供し、ファイルシステムを有する第1のファイルストレージと、前記第1のファイルストレージとネットワークを介して接続され、前記第1のファイルストレージからのオブジェクト要求を受け付ける第2のファイルストレージと、前記第1のファイルストレージから受け付けたオブジェクト要求に基づいて、前記第2のファイルストレージからオブジェクトとして転送されてきたファイルもしくはディレクトリを格納するオブジェクトストレージと、を有する計算機システムにおける前記第1のファイルストレージは、
    前記クライアントから前記ファイルシステムのファイル若しくはディレクトリの更新を検出する検出部と、
    検出されたファイル若しくはディレクトリの差分データと差分データの更新情報を、複数まとめて差分集約オブジェクトに集約し、前記差分集約オブジェクトを前記第2のファイルストレージに転送する転送部とを有することを特徴とするファイルストレージ。
  9. 請求項8に記載のファイルストレージにおいて、
    前記転送部は、
    前記差分集約オブジェクトの前記差分データが所定値を超える場合、単一ファイル転送処理を実行し、
    前記差分集約オブジェクトの前記差分データが所定値以下の場合、複数の差分データと差分データの更新情報を集約して転送する集約ファイル転送処理を実行することを特徴とするファイルストレージ。
  10. クライアントに対してファイル共有サービスを提供し、ファイルシステムを有する第1のファイルストレージと、前記第1のファイルストレージとネットワークを介して接続され、前記第1のファイルストレージからのオブジェクト要求を受け付ける第2のファイルストレージと、前記第1のファイルストレージから受け付けたオブジェクト要求に基づいて、前記第2のファイルストレージからオブジェクトとして転送されてきたファイルもしくはディレクトリを格納するオブジェクトストレージと、を有する計算機システムにおけるデータ転送方法において、
    前記第1のファイルストレージは、
    前記クライアントから前記ファイルシステムのファイル若しくはディレクトリの更新を検出し、検出されたファイル若しくはディレクトリの差分データと差分データの更新情報を、複数まとめて差分集約オブジェクトに集約し、
    前記差分集約オブジェクトを前記第2のファイルストレージに転送し、
    前記第2のファイルストレージは、
    前記差分集約オブジェクトを受信し、前記オブジェクトストレージに転送して、前記差分集約オブジェクトの前記差分データの更新情報に従って、前記差分データの各々を、前記オブジェクトストレージのオブジェクトに反映することを特徴とするデータ転送方法。
JP2020040747A 2020-03-10 2020-03-10 計算機システム、ファイルストレージ、及び、データ転送方法 Active JP7061635B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020040747A JP7061635B2 (ja) 2020-03-10 2020-03-10 計算機システム、ファイルストレージ、及び、データ転送方法
US17/004,909 US20210286765A1 (en) 2020-03-10 2020-08-27 Computer system, file storage and data transfer method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020040747A JP7061635B2 (ja) 2020-03-10 2020-03-10 計算機システム、ファイルストレージ、及び、データ転送方法

Publications (2)

Publication Number Publication Date
JP2021144288A true JP2021144288A (ja) 2021-09-24
JP7061635B2 JP7061635B2 (ja) 2022-04-28

Family

ID=77664705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020040747A Active JP7061635B2 (ja) 2020-03-10 2020-03-10 計算機システム、ファイルストレージ、及び、データ転送方法

Country Status (2)

Country Link
US (1) US20210286765A1 (ja)
JP (1) JP7061635B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11940884B2 (en) * 2022-02-24 2024-03-26 Dell Products L.P. Containerized data mover for data protection workloads

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10198607A (ja) * 1997-01-08 1998-07-31 Hitachi Ltd データ多重化システム
JP2015207305A (ja) * 2015-06-29 2015-11-19 株式会社インテック ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム
JP2016212902A (ja) * 2016-07-19 2016-12-15 株式会社日立製作所 ファイルサーバ、情報システム、及び情報システムの制御方法
JP2018049394A (ja) * 2016-09-20 2018-03-29 株式会社東芝 データベース管理装置、データベース管理方法、およびデータベース管理プログラム
WO2018154698A1 (ja) * 2017-02-24 2018-08-30 株式会社日立製作所 ファイルストレージ、オブジェクトストレージ、およびストレージシステム
WO2019026222A1 (ja) * 2017-08-03 2019-02-07 株式会社日立製作所 ストレージシステム及びデータ転送制御方法
JP2019046180A (ja) * 2017-09-01 2019-03-22 株式会社日立製作所 計算機システム、データ管理方法、及びデータ管理プログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10198607A (ja) * 1997-01-08 1998-07-31 Hitachi Ltd データ多重化システム
JP2015207305A (ja) * 2015-06-29 2015-11-19 株式会社インテック ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム
JP2016212902A (ja) * 2016-07-19 2016-12-15 株式会社日立製作所 ファイルサーバ、情報システム、及び情報システムの制御方法
JP2018049394A (ja) * 2016-09-20 2018-03-29 株式会社東芝 データベース管理装置、データベース管理方法、およびデータベース管理プログラム
WO2018154698A1 (ja) * 2017-02-24 2018-08-30 株式会社日立製作所 ファイルストレージ、オブジェクトストレージ、およびストレージシステム
WO2019026222A1 (ja) * 2017-08-03 2019-02-07 株式会社日立製作所 ストレージシステム及びデータ転送制御方法
JP2019046180A (ja) * 2017-09-01 2019-03-22 株式会社日立製作所 計算機システム、データ管理方法、及びデータ管理プログラム

Also Published As

Publication number Publication date
US20210286765A1 (en) 2021-09-16
JP7061635B2 (ja) 2022-04-28

Similar Documents

Publication Publication Date Title
US11016749B1 (en) Architecture for incremental deployment
JP4547264B2 (ja) プロキシ・キャッシュに関する装置および方法
US9183213B2 (en) Indirection objects in a cloud storage system
JP4547263B2 (ja) データをネットワーク中で処理する装置および方法
US6922761B2 (en) Method and system for migrating data
US9830231B2 (en) Processes and methods for client-side fingerprint caching to improve deduplication system backup performance
US9705979B2 (en) Policy-based file management for a storage delivery network
US8429360B1 (en) Method and system for efficient migration of a storage object between storage servers based on an ancestry of the storage object in a network storage system
US20070055703A1 (en) Namespace server using referral protocols
US20070088702A1 (en) Intelligent network client for multi-protocol namespace redirection
US9218346B2 (en) File system and method for delivering contents in file system
US7376681B1 (en) Methods and apparatus for accessing information in a hierarchical file system
JP4491269B2 (ja) ストレージシステム及びファイル管理装置
US7366836B1 (en) Software system for providing storage system functionality
CN104641369B (zh) 文件服务器、信息系统及其控制方法
TW201734750A (zh) 包含固態硬碟儲存裝置及類似物的重複資料刪除快取記憶體
CN111273863B (zh) 高速缓存管理
US7080102B2 (en) Method and system for migrating data while maintaining hard links
JP7061635B2 (ja) 計算機システム、ファイルストレージ、及び、データ転送方法
US6952699B2 (en) Method and system for migrating data while maintaining access to data with use of the same pathname
US11153385B2 (en) Leveraging NAS protocol for efficient file transfer
JP7241105B2 (ja) ファイルストレージシステム及びファイルストレージシステムによるファイル管理方法
CN115328857A (zh) 文件访问方法、装置、客户端及存储介质
US7979665B1 (en) Method and apparatus for processing access requests in a computer system
US11977448B2 (en) Directory restore from remote object store

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220323

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: 20220405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220418

R150 Certificate of patent or registration of utility model

Ref document number: 7061635

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150