JP7241105B2 - ファイルストレージシステム及びファイルストレージシステムによるファイル管理方法 - Google Patents

ファイルストレージシステム及びファイルストレージシステムによるファイル管理方法 Download PDF

Info

Publication number
JP7241105B2
JP7241105B2 JP2021007742A JP2021007742A JP7241105B2 JP 7241105 B2 JP7241105 B2 JP 7241105B2 JP 2021007742 A JP2021007742 A JP 2021007742A JP 2021007742 A JP2021007742 A JP 2021007742A JP 7241105 B2 JP7241105 B2 JP 7241105B2
Authority
JP
Japan
Prior art keywords
file
storage system
management information
counter value
program
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
JP2021007742A
Other languages
English (en)
Other versions
JP2022112094A (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 JP2021007742A priority Critical patent/JP7241105B2/ja
Priority to US17/210,854 priority patent/US11204899B1/en
Priority to CN202110895345.8A priority patent/CN114817141A/zh
Priority to US17/547,474 priority patent/US11636073B2/en
Publication of JP2022112094A publication Critical patent/JP2022112094A/ja
Application granted granted Critical
Publication of JP7241105B2 publication Critical patent/JP7241105B2/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/13File access structures, e.g. distributed indices
    • 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/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • 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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • 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/172Caching, prefetching or hoarding of files
    • 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/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • 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/182Distributed file systems

Landscapes

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

Description

本発明は、ファイルストレージシステム及びファイルストレージシステムによるファイル管理方法に関する。
本発明は、好ましくは、分散ファイルシステムのノード間でデータの整合性を保証するための技術に関する。
複数の拠点にそれぞれ設置されたストレージ装置がオブジェクトストレージ装置に接続され、ストレージ装置間のデータ転送を実現する計算機システムが知られている。
本明細書に開示される計算機システム(ファイルストレージシステム)は、拠点に設置されたストレージ装置に格納されたユーザファイルをオブジェクトストレージにレプリケーション(マイグレーション)する機能を提供する。また、アクセスの少ないユーザファイルは、メタデータを残してデータを拠点に設置されたストレージ装置から削除するスタブ化機能、及び、スタブ化されたユーザファイルの再参照時にオブジェクトストレージからデータを取得するリコール機能を提供する。これらの拠点に設置されたストレージ装置とオブジェクトストレージが連携して提供するこれらの機能をファイル仮想化機能と呼ぶ。
また、各拠点のストレージ装置を複数のノードで構成するスケールアウト型の分散ファイルシステムが知られている。
ファイル仮想化機能を高信頼とするためには、電断などの障害時にもデータの整合性を保証するため、ファイル仮想化の適用状況を管理するメタデータを損失しないように、ジャーナリングにより保護が必要である。分散ファイルシステムにおいては、複数のノードがユーザファイルを格納するため、ノード間のデータ整合性を保証する必要がある。
特許文献1に開示された技術では、データとメタデータ(データ管理ファイル)のうちメタデータにのみジャーナルを適用する。さらに、クラスタでユニークとなる擬似タイムスタンプを共有し、複数ノードで受け付けるデータ操作に対して、疑似タイムスタンプを付与したジャーナルを作成し、信頼性を向上させている。
米国特許出願公開第2017/0192989号明細書
しかし、特許文献1に開示された技術では、複数ノードから擬似タイムスタンプという単一リソースへのアクセス競合が生じる。また、クライアントのIOに対して疑似タイムスタンプを加算してから付与するため、クライアントIOへの応答性能の低下につながる。また、更新するジャーナルの格納先がクライアントIO受領ノードと異なり、応答性能低下の要因となる。
従って、クライアントのIO性能の低下を防ぎつつ、分散ファイルシステムにおいてファイル仮想化の管理情報の整合性を保証することが望まれている。
本発明は、上記事情に鑑みなされたものであり、その目的は、クライアントのIO性能の低下を防ぎつつ、分散ファイルシステムにおいてファイル仮想化の管理情報の整合性を保証することが可能なファイルストレージシステム及びファイルストレージシステムによるファイル管理方法を提供することにある。
本発明の一つの観点に従うファイルストレージシステムは、プロセッサと記憶装置とを有する複数のノードから構成され、分散ファイルシステムによりファイルを格納してクライアントへのファイルの入出力を行う第1のストレージシステムと、第1のストレージシステムに格納されたファイルが転送される第2のストレージシステムとを有し、これら第1のストレージシステム及び第2のストレージシステムによりファイル仮想化機能を実現するファイルストレージシステムであって、時系列順序を示すカウンタ値を含みファイル毎に設けられた管理情報ファイルと、カウンタ値とともにファイルの操作内容が記述されるオペレーションログと、を有し、第1のストレージシステムは、ファイルへの操作要求に基づいて第1のストレージシステムに格納されたファイルの操作を行い、ファイルへの操作内容とともに操作を行うファイルに対応付けられた管理情報ファイルのカウンタ値をオペレーションログに記述して、操作要求の返答を行い、第1のストレージシステムに格納されたファイルを第2のストレージシステムに転送した場合に、管理情報ファイルのカウンタ値を更新する。
本発明によれば、クライアントのIO性能の低下を防ぎつつ、分散ファイルシステムにおいてファイル仮想化の管理情報の整合性を保証することが可能なファイルストレージシステム及びファイルストレージシステムによるファイル管理方法を実現することができる。
実施形態のファイルストレージシステムの概要の一例を説明する図である。 実施形態のファイルストレージシステムの構成図の一例である。 実施形態のファイルストレージシステムに係るEdgeファイルストレージの構成図である。 実施形態のファイルストレージシステムに係るオブジェクトストレージの構成図である。 実施形態のファイルストレージシステムに係る管理情報ファイル400の一例である。 実施形態のファイルストレージシステムに係るオペレーションログの一例である。 実施形態のファイルストレージシステムにおけるファイル/ディレクトリ作成処理のフローチャートの一例である。 実施形態のファイルストレージシステムにおけるファイル更新処理のフローチャートの一例である。 実施形態のファイルストレージシステムにおけるファイル参照処理のフローチャートの一例である。 実施形態のファイルストレージシステムにおけるファイルマイグレーション処理のフローチャートの一例である。 実施形態のファイルストレージシステムにおけるディレクトリマイグレーション処理のフローチャートの一例である。 実施形態のファイルストレージシステムにおけるファイルスタブ化処理のフローチャートの一例である。 実施形態のファイルストレージシステムにおける整合性回復処理のフローチャートの一例である。
以下、本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
なお、以下の説明において、「メモリ」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、以下の説明において、「プロセッサ」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。
また、少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
本開示において、記憶装置(デバイス)は、1台のHDD(Hard Disk Drive)やSSD(Solid State Drive)等の1台のストレージドライブ、複数台のストレージドライブを含むRAID装置、及び複数のRAID装置を含む。また、ドライブがHDDである場合には、例えば、SAS(Serial Attached SCSI) HDDを含んでもよく、NL-SAS(ニアラインSAS) HDDを含んでもよい。
また、以下の説明において、「xxxテーブル」といった表現により、入力に対して出力が得られる情報を説明することがあるが、この情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。
各情報の内容を説明する際に、識別情報について「識別子」、「名」、「ID」等の表現を用いるが、これらはお互いが置換可能である。これらのうちの少なくとも1つに代えて、多種の識別情報が使用されてよい。
また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明において、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶資源(例えば、メモリ)及び/又は通信インターフェースデバイス(例えば、ポート)を用いながら行うため、処理の主語がプログラムとされてもよい。プログラムを主語として説明された処理は、プロセッサまたはそのプロセッサを有する計算機が行う処理としてもよい。
なお、以降の説明において、"○○部は"と動作主体を記した場合、それは、ファイルストレージシステムを構成する情報処理装置のプロセッサがメモリに格納されたプログラムである○○部の処理内容を読み出してロードしたうえで○○部の機能(詳細後記)を実現することを意味する。
プログラムは、計算機のような装置にインストールされてもよいし、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体にあってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
なお、実施例を説明する図において、同一の機能を有する箇所には同一の符号を付し、その繰り返しの説明は省略する。
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号(又は、参照符号のうちの共通符号)を使用し、同種の要素を区別して説明する場合は、要素の識別番号(又は参照符号)を使用することがある。
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
本実施形態のファイルストレージシステムは、一例として次のような構成を有する。
すなわち、本実施形態にかかるファイルストレージシステムは、各拠点の複数のファイルストレージ装置と、各拠点の複数のファイルストレージ装置に接続されるデータセンタのファイルストレージ装置と、データセンタのオブジェクトストレージ装置とを備える。
各ファイルストレージ装置は複数のノードから構成され、ファイルシステムを格納し、ファイルシステム内の要素のパスと、オブジェクトストレージ装置内における、要素のアーカイブ先とを対応づけて記憶する。クライアントからのリクエストによりファイルシステムが更新された場合、その操作内容を自身のノード内のオペレーションログに追記し、また、操作の対象となる要素ごとに管理情報ファイルを更新する。この時、ファイルごとにカウンタを持ち、オペレーションログに現在のカウンタの値を含める。ファイルごとのカウンタの値は、クライアントからのリクエストによりファイルシステムが更新された場合には値を更新しない。これによってクライアントIOの応答性能の低下を防ぐ。
さらに、ファイル仮想化機能がマイグレーション処理とスタブ化処理を実行するときには、当該ファイルのカウンタの値を+1した値をオペレーションログに追記する。また、当該ファイルに対応する管理情報ファイル内のカウンタ値を+1する。これにより、クライアントからのリクエストによるファイルシステム更新と、ファイル仮想化による前後関係が分かる、つまり、最終的なファイルの状態を一意に決定することができ、ファイル仮想化の管理情報の整合性を回復可能とする。
図1は、本実施形態のファイルストレージシステムの概要の一例を説明する図である。
サイト10-1はファイルストレージ装置の一例であるEdgeファイルストレージ(第1のストレージシステム)100を含む。Edgeファイルストレージ100は複数のノード150を有する。本実施形態のEdgeファイルストレージ100は3つのノード150-1、150-2、150-3から構成されている。
Edgeファイルストレージ100は、クライアント600にファイル共有サービスを提供し、分散ファイルシステム130を有する。Edgeファイルストレージ100は、ファイルシステム130内の要素であるファイル及びディレクトリに対する操作をそれぞれ実行可能である。
Edgeファイルストレージ100を構成するノード150は、IO Hookプログラム111とData Moverプログラム112を有し、ファイル共有サービスを実現する。IO Hookプログラム111はファイルシステム130に格納されたファイルおよびディレクトリに対する操作を検出し、各ノード150のオペレーションログ500に操作内容を追記する。また、IO Hookプログラム111は、ファイルおよびディレクトリに対応する管理情報ファイル400を分散ファイルシステム130に格納する。ここで、オペレーションログ500がそれぞれのノード150に設けられているのは、オペレーションログ500にアクセスするためのノード150間アクセスを少なくするためである。
Data Moverプログラム112は、IO Hookプログラム111が検出したファイルおよびディレクトリをオブジェクトストレージ(第2のストレージシステム、図2参照)300に転送する。転送する目的は、バックアップやアーカイブを含む。Data Moverプログラム112は、オブジェクトストレージ300にレプリケーションしたという情報を、各ノード150のオペレーションログ500に追記する。また、Data Moverプログラム112は、オブジェクトストレージ300にレプリケーションしたファイルのデータをEdgeファイルストレージ100から削除するスタブ化処理を実施する。この時も同様に、Data Moverプログラム112は、スタブ化したという情報を、各ノード150のオペレーションログ500に追記する。
整合性回復に用いるオペレーションログ500に関わるファイル処理の具体例を説明する。ここで、()内の番号は図1に示す吹き出しの番号に対応付けられている。
(1)クライアント600により、ファイルシステム130に対する操作が行われる。この操作の内容は、例えば、操作の対象であるEdgeファイルストレージ100のファイルシステム130のファイルBに対する、「データ更新」である。ここで、ファイルBにデータを更新する例を示している。
(2)続いて、IO Hookプログラム111は、ファイルBに対するデータ更新を検出し、ファイルBに対してデータ更新を実行する。
(3)IO Hookプログラム111は、現在のファイルBのCounter414(図5参照)の値とファイル更新の情報をオペレーションログ500に追記する。
(4)IO Hookプログラム111は、検出したファイルBの更新範囲の情報を部分状態の変更としてファイルBのメタデータや別ファイルやデータベースなどに格納する。本実施形態は、ファイルB管理情報ファイル400の例を示している。
(5)Data Moverプログラム112は、マイグレーションまたはスタブ化処理実行後、現在のファイルBのCounter414の値を+1した値とマイグレーションまたはスタブ化情報をオペレーションログ500に追記する。
(6)Data Moverプログラム112は、ファイルBの管理情報ファイル400のCounter506の値を+1する。
上記処理により、Edgeファイルストレージ100のファイルシステム130に格納されたファイルに対するクライアント600からの操作とData Moverプログラム112の操作をオペレーションログ500に格納することで、電断等の所外発生時にファイルと管理情報ファイル400とが不整合になった場合において、オペレーションログ500から操作を検出でき、整合性を回復することができる。
以下に用語の説明を示す。
差分データの更新情報は、更新されたファイルごとに、当該ファイルのメタデータに格納されてもよいし、当該ファイルとは別のファイルに格納されてもよいし、差分データの更新情報を管理するデータベースに格納されてもよい。差分データの更新情報は、操作内容、操作対象、操作対象のオブジェクトアドレス、Offset、Lengthを含む。
ファイル状態は、Edgeファイルストレージ100のファイルシステム130内に格納されているファイルの状態を示す管理情報である。ファイル状態は、Dirty、Cached、Stubの3つの状態を持つ。
ファイル部分状態(またはファイルデータ状態、またはオフセット状態)は、Edgeファイルストレージ100のファイルシステム130内に格納されているファイルデータのオフセットごとの状態を示す管理情報である。ファイル部分状態は、ファイル部分、つまりファイルデータのオフセットごとにDirty、Cached、Stubの3つの状態を持つ。
状態がDirtyとは、ファイルまたはファイルデータのオフセットが、データセンタ20に反映されていない状態を示す。
状態がCachedとは、ファイルまたはファイルデータのオフセットが、データセンタ20に反映されており、かつ、Edgeファイルストレージ100のファイルシステム130にファイルデータを格納している状態を示す。
状態がStubとは、ファイルまたはファイルデータのオフセットが、データセンタ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にアクセスする。
なお、本実施形態では、計算機システム内に2つのサイト10-1、10-2を有する例を示して説明しているが、計算機システム内のサイトの数はいくつでもよい。
なお、ネットワークの種類は上記ネットワークに限定されず、種々のネットワークを利用可能である。
図3は、Edgeファイルストレージ100の構成図である。
Edgeファイルストレージ100は、1または複数のノード150で構成される。図3のEdgeファイルストレージ100はノード150-1、ノード150-2、ノード150-3の3ノードの例を示しているが、Edgeファイルストレージ100を構成するノード数はいくつでもよい。
ノード150は、コントローラ101と、記憶装置102とを有する。コントローラ101は、メモリ103、CPU105、ネットワークインタフェース(I/F)106、107及びインタフェース104を有する。これらは、例えばバス等の通信路により相互に接続される。
CPU105は、メモリ103に格納されたプログラムを実行する。ネットワークI/F106は、サイト内のネットワークを介してクライアント600と通信するインタフェースである。ネットワークI/F107は、ネットワーク30を介してデータセンタ20と通信するインタフェースである。I/F104は、記憶装置102と相互に通信するために、I/F120に接続されるインタフェースである。Edgeファイルストレージ100の内部の複数のノード150間を接続するI/Fは、ネットワークI/F106と共通でもよいし、ネットワークI/F107と共通でもよいし、これらとは独立した内部ネットワークのI/Fでもよい。
メモリ103には、Edgeファイルストレージ100を制御するプログラム及び情報が格納される。具体的には、例えば、メモリ103は、ファイル共有プログラム110と、IO Hookプログラム111と、Data Moverプログラム112と、ファイルシステムプログラム113と、整合性回復プログラム115と、オペレーティングシステム(OS)114と、を格納する。なお、メモリ103に格納されている各プログラム及び情報は、記憶装置102に格納されてもよい。この場合、これらはCPU105によってメモリ103に読み出されて実行される。
ファイル共有プログラム110は、クライアント600との間で、ファイル共有プロトコルを用いたインタフェースを提供するプログラムである。IO Hookプログラム111は、ファイル共有プログラム110を介してファイルシステム130に格納されたファイルおよびディレクトリを検出するプログラムである。Data Moverプログラム112は、IO Hookプログラム111が検出したディレクトリおよびファイルをCoreファイルストレージ200に転送するためのプログラムである。整合性回復プログラム115は、電断等の障害によりファイルの状態や部分状態に不整合が発生した場合に、整合性回復処理を実行するプログラムである。ファイルシステムプログラム113は、ファイルシステム130を制御するプログラムである。
記憶装置102は、メモリ121、CPU122及びI/F120を有する。これらは、例えばバス等の通信路により、相互に接続される。I/F120は、コントローラ101との接続に使用するインタフェースである。メモリ121及びディスク123には、プログラムやデータが格納される。CPU122は、コントローラ101からの命令に基づき、メモリ121内のプログラムを実行する。記憶装置102は、FC-SAN(Fibre Channel Storage Area Network)等のブロック形式のストレージ機能をコントローラ101に提供してよい。
Coreファイルストレージ200の構成はEdgeファイルストレージ100と同じであるので、図示及び説明を簡略化する。
図4は、オブジェクトストレージ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は、メモリ312、CPU322、ディスク323及びI/F320を有する。これらは、例えばバス等の通信路により相互に接続される。I/F320は、コントローラ301との接続に使用するインタフェースである。メモリ312及びディスク323には、プログラムやデータが格納される。CPU322は、コントローラ301からの命令に基づき、メモリ321内のプログラムを実行する。記憶装置302は、FC-SAN等のブロック形式のストレージ機能をコントローラ301に提供してよい。
図5は、管理情報ファイル400の一例である。
管理情報ファイル400は、Edgeファイルストレージ100に格納されているユーザファイル毎に、このユーザファイルに対応付けられて生成される。管理情報ファイル400は、ユーザファイル管理情報410及び部分管理情報420を有する。
ユーザファイル管理情報410は、オブジェクトアドレス411毎にエントリを有する。各エントリは、ユーザファイルに付与されたオブジェクトアドレス411、ユーザファイルのファイル状態412、ユーザファイルのファイルハンドラ413、Counter414である。
オブジェクトアドレス411は、管理情報ファイル400に対応するユーザファイルが格納されたオブジェクトストレージ300上のアドレスである。ファイル状態412はユーザファイルの状態を示し、DirtyまたはCachedまたはStubのいずれかである。Counter414は、ファイルが生成されてからData Moverプログラム112によってマイグレーション、またはスタブ化された回数を示す。Data Moverプログラム112は、ファイルをマイグレーション、またはスタブ化されるたびにそのファイルに対応する管理情報ファイル400内部に保持するCounter414をインクリメントする。
部分管理情報420は、オフセット(Offset)421、長さ(Length)422及び部分状態423を有する。オフセット421は、ユーザファイルが部分的に更新処理されたときのその更新処理の開始位置を示し、長さ422はオフセット421の位置からどれだけのデータ長だけ更新処理がされたかを示し、部分状態423は当該部分の状態を示し、Dirty、またはStub、またはCachedのいずれかである。
図6は、オペレーションログ500の一例である。
既に説明したように、オペレーションログ500はノード150毎に設けられている。オペレーションログ500には、オペレーション種別501と、ファイルハンドラ502と、タイプ503と、Offset504と、Length505と、Counter506と、Timestamp507が記録されている。
オペレーション種別501は、例えば、作成、更新、メタデータ更新、レプリケーション、スタブ化などがある。ファイルハンドラ502は、操作対象ファイル本体のファイルハンドルである。タイプ503は操作対象となるものがファイルであるのかディレクトリであるのかを示す値である。
Offset504は、当該オペレーションのファイル内の対象範囲の開始オフセットである。Length505は、対象オペレーションのサイズである。
Counter506は、ファイルが生成されてからData Moverプログラム112によってマイグレーション、またはスタブ化された回数を示す。オペレーション種別が生成、更新、参照、メタデータ更新、メタデータ参照など、IO Hookプログラム111が操作する場合は管理情報ファイル400のCounter414の値を格納し、オペレーション種別がマイグレーション、スタブ化の場合、つまり、Data Moverプログラム112が操作する場合は管理情報ファイル400のCounter414の値を+1した値を格納する。タイムスタンプ3109はオペレーションを実行した時刻である。
次に、本実施形態に係るファイルストレージシステム1の処理を、図7~図13のフローチャートを参照して説明する。
図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を終了する(S1010)。
一方、S1002で検出した操作がファイル/ディレクトリ作成の場合(S1003:Yes)、IO Hookプログラム111は、ファイルシステムプログラム113にファイル/ディレクトリ作成を要求し、ファイルシステムプログラム113はファイルシステム130にファイル/ディレクトリを作成する。
本ステップにおいてIO Hookプログラム111は、S1002で検出した操作の対象ファイルのファイルタイプに応じて、ファイルタイプが通常ファイルであればファイル作成を、ファイルタイプがディレクトリであればディレクトリ作成をファイルシステムプログラム113に要求する。
ファイルシステムプログラム113は、要求されたファイル種別に基づいてファイル/ディレクトリを作成する(S1004)。IO Hookプログラム111は、作成したファイル/ディレクトリの情報をオペレーションログ500に追記する。この時、Counter506にはゼロを格納する(S1005)。
IO Hookプログラム111は、作成したファイル/ディレクトリの状態をDirtyに設定し、Counter414には初期値であるゼロを格納する(S1006)。ファイル/ディレクトリの状態を管理する方法は、ファイルのメタデータに格納する方法、作成したファイル/ディレクトリとは別の管理ファイルに格納する方法(本実施形態)、データベースに格納する方法など、いずれの方法でもよい。
IO Hookプログラム111は、作成したファイル/ディレクトリの親ディレクトリの状態を判定する(S1007)。
作成したファイル/ディレクトリの親ディレクトリの状態がDirtyではない場合(ステップS1007:No)、IO Hookプログラム111は、親ディレクトリの状態をDirtyに変更する(S1008)。
一方、作成したファイル/ディレクトリの親ディレクトリの状態がDirtyの場合(ステップS1007:Yes)、S1009に遷移する。
ファイル共有プログラム110はクライアント600にファイル/ディレクトリ作成完了を応答し(S1009)、ファイル/ディレクトリ作成処理1000を終了する(S1010)。
上記ファイル/ディレクトリ作成処理1000により、作成されたファイル/ディレクトリの情報がオペレーションログ500に格納され、また、作成されたファイル/ディレクトリの状態および親ディレクトリの状態が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を終了する(S2011)。
一方、S2002で検出した操作がファイル更新の場合(S2003:Yes)、IO Hookプログラム111は、ファイルシステムプログラム113にファイル更新を要求し、ファイルシステムプログラム113はファイルシステム130の当該ファイルを更新する。
本ステップにおいてIO Hookプログラム111は、S2002で検出したファイル更新のオペレーションに応じて、データ更新ならばWriteオペレーションやTruncateオペレーション、メタデータ更新ならばメタデータ更新オペレーションをファイルシステムプログラム113に要求する。ファイルシステムプログラム113は、要求されたファイルオペレーションに基づいてファイルを更新する。
IO Hookプログラム111は、更新したファイルの更新範囲のファイル部分状態を確認し、Dirtyか否か判定する(S2005)。
更新したファイルのファイルデータの更新範囲のファイル部分状態がDirtyではない場合(ステップS2005:No)、IO Hookプログラム111は、当該ファイルの更新情報をオペレーションログ500に追記する。この時、Counter506にはユーザファイル管理情報410のCounter414を格納する(S2006)。
IO Hookプログラム111は、更新範囲のファイル部分状態をDirtyに変更する(S2007)。この時、ユーザファイル管理情報410のCounter414の値は変更しない。
ファイルデータの範囲ごとの状態を管理する方法は、ファイルのメタデータに格納する方法、操作対象ファイルとは別の管理ファイルに格納する方法(本実施形態)、データベースに格納する方法など、いずれの方法でもよい。本ステップにおいて、一部の操作範囲がDirtyではなく、そのほかの操作範囲がDirtyの場合は、Dirtyではない部分のみDirtyに変更する。
一方、更新したファイルのファイルデータの更新範囲のファイル部分状態がDirtyの場合(ステップS2005:Yes)、S2008に遷移する。
IO Hookプログラム111は、更新したファイルの状態を確認し、Dirtyか否か判定する(S2008)。
更新したファイルの状態がDirtyではない場合(ステップS2008:No)、IO Hookプログラム111は、ファイルの状態をDirtyに変更する(S2009)。
一方、更新したファイルの状態がDirtyの場合(ステップS2008:Yes)、S2010に遷移する。
ファイル共有プログラム110はクライアント600にファイル更新完了を応答し(S2010)、ファイル更新処理2000を終了する(S2011)。
上記ファイル更新処理2000により、更新されたファイルの情報がオペレーションログ500に格納され、また、更新されたファイルのファイルデータの範囲およびファイルの状態がDirtyに設定され、前回のマイグレーション処理以降に更新されたファイルデータおよびファイルを特定できる。
図9は、ファイル参照処理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を終了する(S8012)。
一方、S8002で検出した操作がファイル参照の場合(S8003:Yes)、IO Hookプログラム111は、操作範囲の部分状態がStubか否かを判定する(S8004)。
操作範囲の部分状態がStubの場合(S8004:Yes)、S8005に遷移し、一方、操作範囲の部分状態がStubではない場合(S8004:No)、S8008に遷移する。操作範囲のうち、一部でもStubであればS8004はYesと判定する。
操作範囲の状態がStubの場合、IO Hookプログラム111は、Data Moverプログラム112にリコールを要求し、Data Moverプログラム112は、Coreファイルストレージ200からデータを要求する(S8005)。リコールとは、データがEdgeファイルストレージ100のファイルシステム130に格納されておらず、Coreからデータを取得する処理である。
Data Moverプログラム112は、オブジェクトストレージ300からデータを受理する(S8006)。
Data Moverプログラム112は、ファイルシステムプログラム113を介してデータをファイルシステム130に格納する(S8007)。
IO Hookプログラム111は、リコール情報をオペレーションログ500に追記する。この時、Counter506にはユーザファイル管理情報410のCounter414を格納する(S8008)。
IO Hookプログラム111は、操作範囲の部分状態をStubからCachedに変更する(S8009)。
IO Hookプログラム111は、ファイルシステムプログラム113を介してファイル参照を実行する(S8010)。
IO Hookプログラム111は、クライアント600に応答を返し(S8011)、ファイル参照処理8000を終了する(S8012)。
図10は、ファイルマイグレーション処理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を終了する(S3013)。
一方、リストが空でない場合(ステップS3002:No)、Data Moverプログラム112は、リストからエントリを1つ取得する(S3003)。
Data Moverプログラム112は、当該エントリの管理情報を取得する。管理情報の格納場所は、ファイルの拡張属性でもよいし、管理ファイル(本実施例)でもよいし、データベースでもよい。
Data Moverプログラム112は、S3004で取得した管理情報からファイルデータの状態がDirtyのエントリを転送部分リストとして取得する(S3005)。
Data Moverプログラム112は、S3005で取得した転送部分リストに記録された箇所を本体ファイルからファイルシステムプログラム113を介して取得する(S3006)。
Data Moverプログラム112は、管理情報からオブジェクトアドレスを取得し、当該オブジェクトアドレスに対して更新要求を行う。この時、S3006で取得したファイルデータを転送する(S3007)。
オブジェクトストレージ300は、Edgeファイルストレージ100からの要求を受理し、指定されたオブジェクトアドレスに対して受理したデータを格納する(S3008)。
オブジェクトストレージ300は、Edgeファイルストレージ100に対して応答を返す(S3009)。
Data Moverプログラム112は、ファイルマイグレーション情報をオペレーションログ500に追記する(S3010)。この時、Counter506にはユーザファイル管理情報410のCounter414の値を+1した値を格納する。
Data Moverプログラム112は、Coreに転送したファイルのファイル状態と転送部分のファイルデータの部分状態をCachedに変更し、ユーザファイル管理情報410のCounter414の値を+1する(S3011)。
Data Moverプログラム112は、S3001で作成したリストから転送したファイルのエントリを削除し、S3002に遷移する(S3012)。
図11は、ディレクトリマイグレーション処理6000のフローチャートの一例である。ディレクトリマイグレーション処理6000は、各Edgeファイルストレージ100において、コントローラ101のCPU105がData Moverプログラム112を実行することにより行われる。
なお、ディレクトリマイグレーション処理6000は、所定の条件を満たす場合に行われてよい。例えば、ディレクトリマイグレーション処理6000は、定期的又は不定期に行われてもよいし、クライアント600がファイルシステム130に対して操作を行ったときに実行されてもよい。また、ファイルマイグレーション処理3000とディレクトリマイグレーション処理は順番に実行してもよいし、同時に実行してもよい。
Data Moverプログラム112は、ファイルシステム130に格納されているファイル/ディレクトリの中から、ファイルの状態がDirtyで、ファイルタイプがディレクトリの条件を満たすものを取得し、リスト化する(S6001)。
本ステップにおいて条件を満たすファイルを取得する方法は、ファイルシステム130をクローリングする方法でもよいし、ファイルシステムのオペレーションを記録した操作ログから抽出する方法(本実施例)でもよいし、ファイルシステム操作情報を管理するデータベースから抽出する方法でもよく、いずれの方法でもよい。
Data Moverプログラム112は、S6001で作成したリストが空か否か判定する(ステップS6002)。
リストが空の場合(ステップS6002:Yes)、ディレクトリマイグレーション処理6000を終了する(S6013)。
一方、リストが空でない場合(ステップS6002:No)、Data Moverプログラム112は、リストからエントリを1つ取得する(S6003)。
Data Moverプログラム112は、当該エントリの管理情報を取得する(S6004)。管理情報の格納場所は、ファイルの拡張属性でもよいし、管理ファイル(本実施例)でもよいし、データベースでもよい。
Data Moverプログラム112は、S6004で取得した管理情報からディレクトリ情報を取得する(S6005)。ディレクト情報は、当該ディレクトリのメタデータと、当該ディレクトリのディレクトリエントリ情報を含む。ディレクトリエントリ情報は、配下のファイル/ディレクトリの名前やオブジェクトアドレスを含む。
Data Moverプログラム112は、S6005で取得したディレクトリ情報からオブジェクトストレージ用ディレクトリ情報を生成する(S6006)。
Data Moverプログラム112は、管理情報からオブジェクトアドレスを取得し、当該オブジェクトアドレスに対して更新要求を行う。この時、S6006で生成したオブジェクトストレージ用ディレクトリ情報を転送する(S6007)。
オブジェクトストレージ300は、Edgeファイルストレージ100からの要求を受理し、指定されたオブジェクトアドレスに対して受理したデータを格納(更新)する(S6008)。
オブジェクトストレージ300は、Edgeファイルストレージ100に対して応答を返す(S6009)。
Data Moverプログラム112は、ディレクトリマイグレーション情報をオペレーションログ500に追記する(S6010)。この時、Counter506にはユーザファイル管理情報410のCounter414の値を+1した値を格納する。
Data Moverプログラム112は、Coreに転送したディレクトリのファイル状態をCachedに変更し、ユーザファイル管理情報410のCounter414の値を+1する(S6011)。
Data Moverプログラム112は、S6001で作成したリストから転送したディレクトリのエントリを削除し、S6002に遷移する(S6012)。
図12は、ファイルスタブ化処理9000のフローチャートの一例である。ファイルスタブ化処理9000は、オブジェクトストレージ300にマイグレーション済みのファイルのうち、ファイル状態412がCachedのファイルのデータを削除し、ファイル状態412をStubに変更する処理である。
ファイルスタブ化処理9000は、各Edgeファイルストレージ100において、コントローラ101のCPU105がData Moverプログラム112を実行することにより行われる。なお、ファイルスタブ化処理9000は、所定の条件を満たす場合に行われてよい。例えば、ファイルスタブ化処理9000は、定期的又は不定期に行われてもよいし、クライアント600がファイルシステム130に対して操作を行ったときに実行されてもよい。また、ファイルマイグレーション処理3000やディレクトリマイグレーション処理6000と順番に実行してもよいし、同時に実行してもよい。
ファイルスタブ化処理が開始すると(ステップS9000)、Data Moverプログラム112は、ファイル状態412がCachedで、かつ、タイプがファイルのエントリをリストとして取得する(ステップS9001)。
本ステップにおいて条件を満たすファイルを取得する方法は、ファイルシステム130をクローリングする方法でもよいし、ファイルシステムのオペレーションを記録した操作ログから抽出する方法でもよいし、ファイルシステム操作情報を管理するデータベースから抽出する方法でもよく、いずれの方法でもよい。
次いで、Data Moverプログラム112は、ステップS9001で取得したファイルリストが空であるかどうかを判定する(ステップS9002)。その結果、判定が肯定されたら(ステップS9002においてYES)プログラムはステップS9009に移行し、判定が否定されたら(ステップS9002においてNO)プログラムはステップS9003に移行する。
ステップS9003では、Data Moverプログラム112は、ステップS9001で取得したリストからエントリを1つ取得する。次いで、Data Moverプログラム112は、ステップS9003で取得したエントリが示す管理情報ファイル400を取得する(ステップS9004)。次いで、Data Moverプログラム112は、ステップS9004で取得した管理情報ファイル400が示すユーザファイルを取得する(ステップS9005)。
Data Moverプログラム112は、スタブ化情報をオペレーションログ500に追記する(S9006)。この時、Counter506にはユーザファイル管理情報410のCounter414の値を+1した値を格納する。
Data Moverプログラム112は、スタブ化したファイルのファイル状態412をCachedからStubに変更し、データを削除した範囲の部分状態423をCachedからStubに変更し、ユーザファイル管理情報410のCounter414の値を+1する(S9007)。
Data Moverプログラム112は、ステップS901で取得したファイルリストからエントリを削除する(ステップS9008)。
図13は、整合性回復処理7000のフローチャートの一例である。整合性回復処理7000は、オペレーションログ500を参照し、整合性が取れていないファイルに対して整合性を回復する処理である。各Edgeファイルストレージ100において、コントローラ101のCPU105が整合性回復プログラム115を実行することにより行われる。
なお、整合性回復処理7000は、所定の条件を満たす場合に行われてよい。例えば、整合性回復処理7000は、電断等の障害からの復帰後に、ノード150が起動した後に時行ってもよい。また、定期的又は不定期に行われてもよいし、クライアント600がファイルシステム130に対して操作を行ったときに実行されてもよい。
整合性回復プログラム115は、全ノード150のオペレーションログ500を収集する(S7001)。
整合性回復プログラム115は、オペレーションログ500に情報が格納されているファイルすべての整合性回復が完了したか判定する(S7002)。
オペレーションログ500に情報が格納されているファイルすべての整合性回復が完了した場合(S7002:Yes)、整合性回復処理7000を終了する(S7012)。
一方、オペレーションログ500に情報が格納されているファイルすべての整合性回復が完了していない場合(S7002:No)、回復対象ファイルを1つ選択する(S7003)。
整合性回復プログラム115は、回復対象のファイルの管理情報ファイル400をバックアップからリストアする(S7004)。本実施例は、管理情報ファイル400もマイグレーション対象としてオブジェクトストレージ300に転送されていることを想定しており、S7004は、オブジェクトストレージ300から管理情報ファイル400をリストアする。ただし、このバックアップ方法に限定されることはなく、別のバックアップの仕組みでもよい。
整合性回復プログラム115は、回復対象ファイルのオペレーションログ500を収集し、Counter506の値でソートする(S7005)。
整合性回復プログラム115は、回復対象ファイルに対してすべての部分の回復が完了したか判定する(S7006)。
回復対象ファイルに対してすべての部分の回復が完了した場合(S7006:Yes)、S7002に遷移する。
一方、回復対象ファイルに対してすべての部分の回復が完了していない場合(S7006:No)、整合性回復プログラム115は、当該部分の最も大きいCounter506の値の中にWriteオペレーションが含まれているか判定する(S7007)。
当該部分の最も大きいCounter506の値の中にWriteオペレーションが含まれている場合(S7007:Yes)、整合性回復プログラム115は、当該部分の部分状態423にDitryを設定する(S7008)。
一方、当該部分の最も大きいCounter506の値の中にWriteオペレーションが含まれていない場合(S7007:No)、整合性回復プログラム115は、当該部分の最も大きいCounter506の値がStubか否かを判定する(S7008)。
当該部分の最も大きいCounter506の値がStubの場合(S7008:Yes)、整合性回復プログラム115は、当該部分の部分状態423にStubを設定し、S7006に遷移する(S7010)。
一方、当該部分の最も大きいCounter506の値がStubではない場合(S7008:No)、整合性回復プログラム115は、当該部分の部分状態423にCachedを設定し、S7007に遷移する(S7011)。
なお、簡略化してStubとCachedを区別しないことも可能である。この場合、CachedもStubと擬制して取り扱う。そのために、スタブ化によりCachedからStubに変更した場合でも、カウンタ値は更新しない。また、S7008ではStubとして取り扱い、すべてS7010に進み、部分状態がCachedのときに障害が発生してもStubとして回復を行う。このようにしても、Edgeファイルストレージ100内のキャッシュされたファイルのデータが無視され、オブジェクトストレージから同じデータを取得するリコール処理が余分に発生するだけが違いなので、問題は生じない。
このように構成される本実施形態によれば、クライアントのIO性能の低下を防ぎつつ、分散ファイルシステムにおいてファイル仮想化の管理情報の整合性を保証することが可能となる。
なお、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)、Python等の広範囲のプログラム又はスクリプト言語で実装できる。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
1…ファイルストレージシステム 10-1、10-2…サイト 20…データセンタ 100…Edgeファイルストレージ(第1のストレージシステム) 111…IO Hookプログラム 112 Data Moverプログラム 115…整合性回復プログラム 130…ファイルシステム 150…ノード 200…Coreファイルストレージ 300…オブジェクトストレージ(第2のストレージシステム) 400…管理情報ファイル 500…オペレーションログ 600…クライアント

Claims (10)

  1. プロセッサと記憶装置とを有する複数のノードから構成され、分散ファイルシステムによりファイルを格納してクライアントへの前記ファイルの入出力を行う第1のストレージシステムと、前記第1のストレージシステムに格納された前記ファイルが転送される第2のストレージシステムとを有し、これら第1のストレージシステム及び第2のストレージシステムによりファイル仮想化機能を実現するファイルストレージシステムであって、
    時系列順序を示すカウンタ値を含み前記ファイル毎に設けられた管理情報ファイルと、前記カウンタ値とともに前記ファイルの操作内容が記述されるオペレーションログと、を有し、
    前記第1のストレージシステムは、
    前記ファイルへの操作要求に基づいて前記第1のストレージシステムに格納された前記ファイルの操作を行い、前記ファイルへの前記操作内容とともに前記操作を行う前記ファイルに対応付けられた前記管理情報ファイルの前記カウンタ値を前記オペレーションログに記述して、前記操作要求の返答を行い、
    前記第1のストレージシステムに格納された前記ファイルを前記第2のストレージシステムに転送した場合に、前記管理情報ファイルの前記カウンタ値を更新する
    ことを特徴とするファイルストレージシステム。
  2. 前記ファイルを前記第2のストレージシステムに格納した状態で前記第1のストレージシステムから削除した場合にも、前記管理情報ファイルの前記カウンタ値を更新する
    ことを特徴とする請求項1に記載のファイルストレージシステム。
  3. 前記ファイルを第2のストレージシステムに転送した場合に前記操作に係る前記ファイルに対応付けられた前記管理情報ファイルの前記カウンタ値を更新し、前記第1のストレージシステムに格納された内での前記ファイルの操作では前記カウンタ値を更新しないことを特徴とする請求項1に記載のファイルストレージシステム。
  4. 前記ファイルの第2のストレージシステムへの転送は、前記ファイルを前記第1のストレージシステムに残して転送するマイグレーション処理であり、転送を受信した第2のストレージシステムは、前記転送されたファイルを格納するまたは格納されている前記ファイルを更新し、
    前記第1のストレージシステムからの前記ファイルの削除はスタブ化処理であり、前記削除したファイルを前記第2のストレージシステムから前記第1のストレージシステムへ転送するリコール処理が可能である
    ことを特徴とする請求項2に記載のファイルストレージシステム。
  5. 障害が発生した場合に、前記カウンタ値に基づいて、前記オペレーションログの操作内容と前記第1のストレージシステムに格納されたファイルと前記第2のストレージシステムに格納されたファイルとの関係を特定して、前記ファイルと前記管理情報ファイルとの整合性を回復する
    ことを特徴とする請求項1に記載のファイルストレージシステム。
  6. 前記第1のストレージシステムは、前記複数のノードのそれぞれに配置されており、
    前記管理情報ファイルは前記複数のノードの少なくともいずれかに配置されており、
    前記ファイルの操作を行う第1のストレージシステムは、前記操作要求の受付を行って、前記操作の対象となるファイルの前記管理情報ファイルの前記カウンタ値をいずれかの前記ノードから取得し、その操作内容及び前記カウンタ値を自身が配置された前記ノードの前記オペレーションログに記述することを特徴とする請求項1に記載のファイルストレージシステム。
  7. 前記管理情報ファイルは、前記第2のストレージシステムの前記ファイルに対する前記第1のストレージシステムの前記ファイルの状態を有しており、
    前記第1のストレージシステムの前記ファイルに対する操作を行ったときに、このファイルの状態を更新する
    ことを特徴とする請求項4に記載のファイルストレージシステム。
  8. 前記ファイルの状態は、前記ファイルの部分ごとの部分状態であり、
    前記ファイルの部分状態は、操作後の前記ファイルが前記第2のストレージシステムに反映されていないことを示すDirty、操作後の前記ファイルが前記第2のストレージシステムに反映されておりかつ前記ファイルが前記第1のストレージシステムに格納されていることを示すCached、及び、操作後の前記ファイルが前記第2のストレージシステムに反映されておりかつ前記ファイルが前記第1のストレージシステムに格納されていないことを示すStubを含む
    ことを特徴とする請求項6に記載のファイルストレージシステム。
  9. 前記プロセッサは、前記ファイルと前記管理情報ファイルとの整合性を回復する際、
    前記カウンタ値が最大である前記ファイルの操作内容に前記ファイルの更新が含まれていたら、前記部分状態を前記Dirtyであるとして前記整合性を回復し、前記カウンタ値が最大である前記ファイルの操作内容が前記ファイルのマイグレーション処理のみであったら、前記部分状態を前記Cachedであるとして前記管理情報ファイルの整合性を回復し、前記カウンタ値が最大である前記ファイルの操作内容が前記ファイルのスタブ化処理のみであったら、前記部分状態を前記Stubであるとして前記管理情報ファイルの整合性を回復することを特徴とする請求項に記載のファイルストレージシステム。
  10. プロセッサと記憶装置とを有する複数のノードから構成され、分散ファイルシステムによりファイルを格納してクライアントへのファイルの入出力を行う第1のストレージシステムと、前記第1のストレージシステムに格納された前記ファイルが転送される第2のストレージシステムとを有し、これら第1のストレージシステム及び第2のストレージシステムによりファイル仮想化機能を実現するファイルストレージシステムによるファイル管理方法であって、
    時系列順序を示すカウンタ値を含み前記ファイル毎に設けられた管理情報ファイルと、前記カウンタ値とともに前記ファイルの操作内容が記述されるオペレーションログと、を有し、
    前記ファイルへの操作要求に基づいて前記第1のストレージシステムに格納された前記ファイルの操作を行い、前記ファイルへの操作内容とともに前記操作を行う前記ファイルに対応付けられた前記管理情報ファイルの前記カウンタ値を前記オペレーションログに記述して、前記操作内容の返答を行い、
    前記第1のストレージシステムに格納された前記ファイルを前記第2のストレージシステムに転送した場合に、前記管理情報ファイルの前記カウンタ値を更新する
    ことを特徴とするファイルストレージシステムによるファイル管理方法。
JP2021007742A 2021-01-21 2021-01-21 ファイルストレージシステム及びファイルストレージシステムによるファイル管理方法 Active JP7241105B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2021007742A JP7241105B2 (ja) 2021-01-21 2021-01-21 ファイルストレージシステム及びファイルストレージシステムによるファイル管理方法
US17/210,854 US11204899B1 (en) 2021-01-21 2021-03-24 File storage system and file management method by file storage system
CN202110895345.8A CN114817141A (zh) 2021-01-21 2021-08-05 文件存储系统及通过文件存储系统进行的文件管理方法
US17/547,474 US11636073B2 (en) 2021-01-21 2021-12-10 File storage system and file management method by file storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021007742A JP7241105B2 (ja) 2021-01-21 2021-01-21 ファイルストレージシステム及びファイルストレージシステムによるファイル管理方法

Publications (2)

Publication Number Publication Date
JP2022112094A JP2022112094A (ja) 2022-08-02
JP7241105B2 true JP7241105B2 (ja) 2023-03-16

Family

ID=78918330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021007742A Active JP7241105B2 (ja) 2021-01-21 2021-01-21 ファイルストレージシステム及びファイルストレージシステムによるファイル管理方法

Country Status (3)

Country Link
US (2) US11204899B1 (ja)
JP (1) JP7241105B2 (ja)
CN (1) CN114817141A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022189454A (ja) * 2021-06-11 2022-12-22 株式会社日立製作所 ファイルストレージシステム、及び管理情報ファイル回復方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011039805A (ja) 2009-08-12 2011-02-24 Hitachi Ltd 階層管理ストレージシステムおよびストレージシステムの運用方法
US20110246416A1 (en) 2010-03-30 2011-10-06 Commvault Systems, Inc. Stubbing systems and methods in a data replication environment
JP2012181798A (ja) 2011-03-03 2012-09-20 Nec Corp データ転送装置、ftサーバ、データ転送方法、及びプログラム
WO2017145214A1 (ja) 2016-02-22 2017-08-31 株式会社日立製作所 センタノードからエッジノードにデータを転送する計算機システム
US20190155960A1 (en) 2017-11-20 2019-05-23 Fujitsu Limited Information processing apparatus and computer-readable storage medium storing information processing program
JP2019204278A (ja) 2018-05-23 2019-11-28 富士通株式会社 情報処理システム、情報処理装置およびプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612404B2 (en) * 2002-07-30 2013-12-17 Stored Iq, Inc. Harvesting file system metsdata
US9002890B2 (en) * 2012-03-14 2015-04-07 International Business Machines Corporation Rule-based access control list management
US10536357B2 (en) * 2015-06-05 2020-01-14 Cisco Technology, Inc. Late data detection in data center
US10649658B2 (en) * 2015-12-31 2020-05-12 Vmware, Inc. File system based key value service
US10956415B2 (en) * 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11238012B1 (en) * 2018-05-15 2022-02-01 Splunk Inc. Log data extraction from data chunks of an isolated execution environment
US10997127B2 (en) * 2018-07-18 2021-05-04 International Business Machines Corporation Preventing inefficient recalls in a hierarchical storage management (HSM) system
US11620157B2 (en) * 2019-10-18 2023-04-04 Splunk Inc. Data ingestion pipeline anomaly detection
US20210303164A1 (en) * 2020-03-25 2021-09-30 Pure Storage, Inc. Managing host mappings for replication endpoints

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011039805A (ja) 2009-08-12 2011-02-24 Hitachi Ltd 階層管理ストレージシステムおよびストレージシステムの運用方法
US20110246416A1 (en) 2010-03-30 2011-10-06 Commvault Systems, Inc. Stubbing systems and methods in a data replication environment
JP2012181798A (ja) 2011-03-03 2012-09-20 Nec Corp データ転送装置、ftサーバ、データ転送方法、及びプログラム
WO2017145214A1 (ja) 2016-02-22 2017-08-31 株式会社日立製作所 センタノードからエッジノードにデータを転送する計算機システム
US20190155960A1 (en) 2017-11-20 2019-05-23 Fujitsu Limited Information processing apparatus and computer-readable storage medium storing information processing program
JP2019095925A (ja) 2017-11-20 2019-06-20 富士通株式会社 情報処理装置および情報処理プログラム
JP2019204278A (ja) 2018-05-23 2019-11-28 富士通株式会社 情報処理システム、情報処理装置およびプログラム

Also Published As

Publication number Publication date
CN114817141A (zh) 2022-07-29
US11204899B1 (en) 2021-12-21
US20220229816A1 (en) 2022-07-21
US11636073B2 (en) 2023-04-25
JP2022112094A (ja) 2022-08-02

Similar Documents

Publication Publication Date Title
US11520670B2 (en) Method and apparatus for restoring data from snapshots
JP4168626B2 (ja) 記憶装置間のファイル移行方法
JP4336129B2 (ja) 複数のスナップショットを管理するシステム及び方法
US8650168B2 (en) Methods of processing files in a multiple quality of service system
JP5706966B2 (ja) 情報処理システム、及び、それを用いたファイル復元方法
US6976060B2 (en) Symmetric shared file storage system
JP5876592B2 (ja) ファイルストレージシステムとファイルクローニング方法
JP4568115B2 (ja) ハードウェアベースのファイルシステムのための装置および方法
JP5775177B2 (ja) クローンファイル作成方法と、それを用いたファイルシステム
JP5873187B2 (ja) 階層化ストレージシステムの管理装置及び管理方法
US8433863B1 (en) Hybrid method for incremental backup of structured and unstructured files
US20110029487A1 (en) Simultaneously accessing file objects through Web services and file services
US8849877B2 (en) Object file system
JP2013524358A (ja) 情報処理システムの管理方法、及びデータ管理計算機システム
US20130325814A1 (en) System and method for archive in a distributed file system
JP4175789B2 (ja) 記憶装置のファイルレベルリモートコピー方法
JP7241105B2 (ja) ファイルストレージシステム及びファイルストレージシステムによるファイル管理方法
WO2014064740A1 (en) Computer system and file server migration method
US20130325813A1 (en) System and method for archive in a distributed file system
JP7344352B2 (ja) ファイルストレージシステム及びファイルストレージシステムの管理方法
JP2021144288A (ja) 計算機システム、ファイルストレージ、及び、データ転送方法
JP2022189454A (ja) ファイルストレージシステム、及び管理情報ファイル回復方法
Brodsky et al. Using versioning to simplify the implementation of a highly-available file system
Uehara Split file model for big data in low throughput storage
Prodi et al. IBM General Parallel File System

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230127

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230306

R150 Certificate of patent or registration of utility model

Ref document number: 7241105

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150