JP6298903B2 - 計算機システム、分散オブジェクト共有方法、エッジノード - Google Patents

計算機システム、分散オブジェクト共有方法、エッジノード Download PDF

Info

Publication number
JP6298903B2
JP6298903B2 JP2016571623A JP2016571623A JP6298903B2 JP 6298903 B2 JP6298903 B2 JP 6298903B2 JP 2016571623 A JP2016571623 A JP 2016571623A JP 2016571623 A JP2016571623 A JP 2016571623A JP 6298903 B2 JP6298903 B2 JP 6298903B2
Authority
JP
Japan
Prior art keywords
directory
collision
name space
namespace
policy
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.)
Expired - Fee Related
Application number
JP2016571623A
Other languages
English (en)
Other versions
JPWO2016121083A1 (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
Publication of JPWO2016121083A1 publication Critical patent/JPWO2016121083A1/ja
Application granted granted Critical
Publication of JP6298903B2 publication Critical patent/JP6298903B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/1827Management specifically adapted to NAS
    • 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/1873Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、概して、分散オブジェクト共有に関する。
複数の拠点の各々に、エッジサーバが配置され、複数の拠点から離れたデータセンタに、各エッジサーバと通信可能なコアサーバが配置される計算機システムが知られている(例えば特許文献1)。各拠点において、エッジノードが、クライアントに、ファイルシステムのような名前空間(以下、ローカル名前空間)を提供し、クライアントが、そのローカル名前空間をアップデートする(例えば、ローカル名前空間内のオブジェクト(ディレクトリ又はファイル)に対して変更操作(例えば、作成、アップデート、削除、リネーム、又はコピー)を行う)。いずれかのエッジノードが提供するローカル名前空間のアップデートが、コアノードが管理する名前空間(以下、センタ名前空間)に反映される(マイグレーション)。コアノードが管理するセンタ名前空間のアップデートが、別のエッジノードが提供するローカル名前空間に反映される(同期)。このようにして、複数のエッジノードが名前空間を共有する。
異なる複数のローカル名前空間内の同一のオブジェクトに対する異なる変更操作によりオブジェクトの衝突が発生し得る。特許文献1は、衝突ファイルを退避用特殊ディレクトリへ移動することにより衝突を解決する。非特許文献1は、衝突ファイルを退避用特殊ディレクトリへ移動する方法と、衝突ファイルに別の変更操作に従うファイルを上書きする方法とのいずれかの方法により衝突を解決する。
WO2014/154578
上書きという方法(以下、第1の方法)を単に採用した場合、先に更新したオブジェクトの内容が失われてしまう。衝突ファイルを退避用特殊ディレクトリへ移動するという方法(以下、第2の方法)を単に採用した場合、退避用特殊ディレクトリの下位に多数のオブジェクトが存在し得ることになり、管理が煩雑になり得る。
第1のエッジノード(いずれかのエッジノード)が提供する第1のローカル名前空間のアップデートをセンタ名前空間に反映することであるマイグレーションにおいて、又は、センタ名前空間のアップデートを第2のエッジノード(第1のエッジノード以外のいずれかのエッジノード)が提供する第2のローカル名前空間に反映することである同期において、センタノード又は第2のエッジノードが、反映元の名前空間と反映先の名前空間との間において異なるオブジェクトについて、(A)及び(B)を行う。具体的には、センタノード又は第2のエッジノードが、(A)定義された複数の衝突ケースのうちのいずれかの衝突ケースに該当するか否かを判断し、(B)(A)の判断の結果が肯定の場合に、該当する衝突ケースに対応した衝突解決ポリシーに従う処理を実行する。
第1及び第2の方法のいずれかだけを常に行うことに比べて、利便性及び柔軟性のうちの少なくとも1つが高い。
実施形態に係る計算機システムの概要を示す。 NASの構成を示す。 CASの構成を示す。 ポリシー情報の一例を示す。 特殊ディレクトリの構造の一例を示す。 拠点AのNASからCASへのマイグレーション処理の前後の様子の一例を示す。 CASから拠点BのNASへの同期処理の前後の様子の一例を示す。 自拠点アップデートリストの例を示す。 NASからCASへのマイグレーション処理のフローチャートである。 CASからNASへの同期処理のフローチャートである。 名前空間反映処理のフローチャートである。 第1のUIの一例を示す。 第2のUIの一例を示す。
以下、一実施形態を説明する。
以下の説明では、「×××リスト」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「×××リスト」を「×××情報」と呼ぶことができる。
また、以下の説明では、要素の識別情報として、ID又は名前が使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたIDを使用することがある。
また、以下の説明では、「記憶部」は、メモリを含んだ1以上の記憶デバイスでよい。例えば、記憶部は、主記憶デバイス(典型的には揮発性のメモリ)及び補助記憶デバイス(典型的には不揮発性の記憶デバイス)のうちの少なくとも主記憶デバイスでよい。また、記憶部は、キャッシュ領域(例えばキャッシュメモリ又はその一部領域)とバッファ領域(例えばバッファメモリ又はその一部領域)とのうちの少なくとも1つを含んでもよい。
また、以下の説明では、「PDEV」は、物理的な記憶デバイスを示し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよい。PDEVは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でよい。
また、以下の説明では、「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。RAIDグループは、複数のPDEVで構成され、そのRAIDグループに関連付けられたRAIDレベルに従いデータを記憶する。RAIDグループは、パリティグループと呼ばれてもよい。パリティグループは、例えば、パリティを格納するRAIDグループのことでよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置又はシステムが行う処理としてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディア(例えば可搬型の記憶メディア)であってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶部を含み、記憶部はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明では、管理ノードは、一以上の計算機で構成されてよい。具体的には、例えば、管理計算機が情報を表示する場合(具体的には、例えば、管理計算機が自分の表示デバイスに情報を表示する、或いは、管理計算機が表示用情報を遠隔の表示用計算機に送信する場合)、管理計算機が管理ノードである。また、例えば、複数の計算機で管理計算機と同等の機能が実現されている場合は、当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機を含んでよい)が、管理ノードである。管理計算機は、表示システムを含むI/Oシステムに接続されたインターフェースデバイスと、記憶部(例えばメモリ)と、インターフェースデバイス及び記憶部に接続されたプロセッサとを有してよい。表示システムは、管理計算機が有する表示デバイスでもよいし、管理計算機に接続された表示用計算機でもよい。I/Oシステムは、管理計算機が有するI/Oデバイス(例えばキーボード及びポインティングデバイス、タッチパネル)でもよいし、管理計算機に接続された表示用計算機又は別の計算機でもよい。管理計算機が「表示用情報を表示する」ことは、表示システムに表示用情報を表示することであり、これは、管理計算機が有する表示デバイスに表示用情報を表示することであってもよいし、管理計算機が表示用計算機に表示用情報を送信することであってもよい(後者の場合は表示用計算機によって表示用情報が表示される)。また、管理計算機が情報を入出力するとは、管理計算機が有するI/Oデバイスとの間で情報の入出力を行うことであってもよいし、管理計算機に接続された遠隔の計算機(例えば表示用計算機)との間で情報の入出力を行うことであってもよい。情報の出力は、情報の表示であってもよい。
また、以下の実施形態では、エッジノードの一例として、NAS(Network Attached Storage)が採用され、コアノードの一例として、CAS(Content Addressed Storage)が採用される。
また、以下の実施形態では、CASと複数のNASを有する計算機システムにおいて、反映先のローカル名前空間よりセンタ名前空間(言い換えれば、先にアップデートされたローカル名前空間)を優先する衝突解決ポリシーが採用される。しかし、いずれの名前空間が優先されてもよい。例えば、或るNASのローカル名前空間の優先順位はセンタ名前空間の優先順位より高く、別のNASローカル名前空間の優先順位はセンタ名前空間の優先順位より低くてもよい。また、衝突解決ポリシーは、各NAS、CAS、及び、CASと複数のNASとのうちの少なくとも1つに接続された管理ノードのうちのいずれに設けられてもよい。
また、以下の実施形態では、NASからCASへの反映(ローカル名前空間のアップデートのセンタ名前空間への反映)を「マイグレーション」と呼び、CASからNASへの反映(センタ名前空間のアップデートのローカル名前空間への反映)を「同期」と呼ぶ。
また、以下の実施形態では、計算機システムが、複数のNASと1つのCASとに代えて、複数のクライアントと、1つのNASとを有してもよい。つまり、エッジノードの一例がクライアントであって、コアノードの一例がNASであってもよい。
また、複数のNAS(又は複数のクライアント)に共通のオブジェクトを参照する際、その共通のオブジェクトを有するCAS(又はNAS)において少なくともその共通のオブジェクトについてロックが必要であるが、ロック処理は既に知られている方法を利用すればよい。そのため、以下の実施形態の説明では、ロック処理の説明は省略する。
また、以下の実施形態では、名前空間の一例として「ファイルシステム」が採用される。ファイルシステムは、「FS」と呼ばれることもある。
また、以下の説明では、或るオブジェクトよりルートノードに近いオブジェクトを、「上位のオブジェクト」と言うことがあり、そのうち、特にその或るオブジェクトに直近のオブジェクトを、「親オブジェクト」と言うことがある。一方、或るオブジェクトよりルートノードに遠いオブジェクトを、「下位のオブジェクト」と言うことがあり、そのうち、特にその或るオブジェクトに直近のオブジェクトを、「子オブジェクト」と言うことがある。なお、オブジェクトは、例えばディレクトリ又はファイルである。
図1は、実施形態に係る計算機システムの概要を示す。
1つのデータセンタ120に対して複数の拠点100が存在する。本実施形態では、複数の拠点100として、2つの拠点、すなわち、拠点A(100A)と拠点B(100B)が存在するものとするが、拠点100の数は2より多くてもよい。また、以下の説明では、拠点A内の要素については、参照符号の末尾に「A」を付して説明し、拠点B内の要素については、参照符号の末尾に「B」を付して説明することがある。また、拠点A内の要素であるか拠点B内の要素であるかを区別しない場合には、参照符号の末尾に「A」及び「B」のいずれも付さないことがある。また、以下、拠点A及び拠点Bのうちの一方を例に取って説明し他方についてその説明を省略することあるが、それは説明の冗長(重複)を避けるためである。拠点A及び拠点Bは、それぞれ同じ機能を有している。
拠点A(100A)は、クライアント101Aと、クライアント101Aに通信ネットワーク103A(例えばLAN(Local Area Network))を介してローカルFS104Aを提供するNAS102Aとを有する。同様に、拠点B(100B)は、クライアント101Bと、クライアント101Bに通信ネットワーク103B(例えばLAN)を介してローカルFS104Bを提供するNAS102Bとを有する。クライアント101A及び101Bのいずれも、1以上存在してよい。クライアント101は、NAS102が提供するファイル共有サービスを利用する計算機である。クライアント101は、NFS(Network File System)やCIFS(Common Internet File System)等のファイル共有プロトコルを利用して、ネットワーク103を経由してNAS102が提供するファイル共有サービスを利用する。
データセンタ120は、センタFS122を提供するCAS121を有する。CAS121に、通信ネットワーク105A及び105B(例えばWAN(Wide Area Network))を介してNAS102A及び102Bがそれぞれ接続される。通信ネットワーク105A及び105Bは、一体でもよいし、別の通信ネットワークでもよい。また、CAS121に、通信ネットワーク123(例えばLAN)を介して管理ノード124が接続される。管理者(管理ノード124のオペレータ)は、管理ノード124から、CAS121(及びNAS102)の管理を行う。管理として、例えば、CAS121(及びNAS102)の運用開始、CAS121(及びNAS102)の停止、クライアント101のアカウントの管理等がある。なお、管理ノード124は、少なくとも1つのNASに通信可能に接続されていてもよいし、管理ノード124とは別に少なくとも1つのNASの管理ノードとが設けられていてもよい。
クライアント101Aが読み書きするデータは、ファイルとしてローカルFS104Aに格納される。同様に、クライアント101Bが読み書きするデータは、ファイルとしてローカルFS104Bに格納される。ローカルFS104A及び104BとセンタFS122は、同一の名前空間である。
NAS102は、ローカルFS104に格納されたファイルを、或る契機(所定又は任意のタイミング)で、データセンタ120に送信し、送信されたファイルは、センタFS122に格納される(マイグレーション)。また、NAS102は、或る契機(所定又は任意のタイミング)で、センタFS122のアップデートを、ローカルFS104に反映する(同期)。
異なるローカルFS104A及び104Bにおいて同一のオブジェクト(例えば、ディレクトリ、ファイル又はファイルパス)について異なる変更操作(例えば、作成、アップデート、削除又はリネーム)が行われると、衝突が生じ得る。
本実施形態では、各NAS102が、ポリシー情報400を保持する。ポリシー情報400は、定義された複数の衝突ケースにそれぞれ対応した複数の衝突解決ポリシーを含む。各NAS102は、同期において、ポリシー情報400を参照し、センタFS122(反映元)とローカルFS104(反映先)との間において異なるオブジェクトについて、定義された複数の衝突ケースのうちのいずれかの衝突ケースに該当するか否かを判断する。その判断の結果が肯定の場合に、NAS102は、その異なるオブジェクトについて、該当する衝突ケースに対応した衝突解決ポリシーに従う処理を実行する。
該当する衝突ケースとそれに対応した衝突解決ポリシーに従う処理の一例は、図1に示す通りである。
NAS102Aが、クライアント101Aからのライト要求に応答して、ローカルFS104Aをアップデートしたとする。そのアップデートは、ローカルFS104A内のディレクトリAの子オブジェクトの1つであるファイルXに対してアップデートを行ったことであるとする。ここでのファイルXのアップデートは、ファイルXの内容又はファイル名のアップデートであるとする。NAS102AにおいてアップデートされたファイルXを「ファイルX1」と言う。一方、NAS102Bが、ローカルFS104Aのアップデート前又はそのアップデートの反映前に、クライアント101Bからのライト要求に応答して、ローカルFS104Bをアップデートしたとする。そのアップデートは、同一のファイルパスに従う同一ファイル、すなわち、ディレクトリAの子オブジェクトの1つであるファイルXに対してアップデートを行ったことであるとする。そのアップデートも、ファイルXの内容又はファイル名のアップデートであるとするが、NAS102Aでのアップデートとは異なるアップデートである。NAS102BにおいてアップデートされたファイルXを「ファイルX2」と言う。ファイルX1とファイルX2は衝突している。
先に、NAS102Aが、CAS121と通信したとする。これにより、NAS102Aが、ファイルX1がセンタFS122内のファイルと衝突しないことを特定したとする。そして、NAS102AとCAS121間でマイグレーションが行われたとする。すなわち、ローカルFS104AのアップデートがセンタFS122に反映されたとする。従って、センタFS122では、ディレクトリA内のファイルXが、ファイルX1にアップデートされる。
その後、NAS102Bが、CAS121と通信したとする。これにより、NAS102Bが、ファイルX2がセンタFS122内のファイルX1と衝突することを特定したとする。NAS102Bが、ポリシー情報400から、その衝突のケースに対応する衝突解決ポリシーを特定し、特定した衝突解決ポリシーに従う処理を実行する。図1の例では、その処理は、以下の通りである。すなわち、NAS102Bが、ローカルFS104Bに、特殊ディレクトリ702B(「.conflict」)の下位に退避用ディレクトリ(図示せず)を作成する。特殊ディレクトリ702Bは、退避用ディレクトリの作成先となる所定のディレクトリである。NAS102Bが、参照符号153により示すように、ローカルFS104B内のパスであり衝突ファイルX2へのパスであるファイルパス(衝突ファイルX2と、衝突ファイルX2とルートノード間のパスに存在する上位オブジェクトとの一群)を、特殊ディレクトリ702Bの下位に作成された退避ディレクトリに退避する。また、NAS102Bが、参照符号155により示すように、センタFS122内のパスでありファイルX1へのパスであるファイルパス(ファイルX1と、ファイルX1とルートノード間のパスに存在する上位オブジェクトとの一群)を、ローカルFS104Bに反映する。なお、退避ディレクトリへ退避する一群、及び、ローカルFS104へ反映する一群は、衝突ファイルとその親オブジェクトのみとしても良い。
以上のように、該当する衝突ケースに対応した衝突解決ポリシーが実行される。本実施形態では、各NAS102が、ポリシー情報400を保持するが、ポリシー情報400は、NAS102に代えて又は加えて、破線で示すように、CAS121と、CAS121とNAS102のうちの少なくとも1つに接続される管理ノード124とのうちの少なくとも1つにより保持されてもよい。NAS102以外のノードがポリシー情報400を保持するケースでは、NAS102とそのノード間で通知(又は問合せ)等の通信が必要になり得るが、本実施形態のように、各NAS102がポリシー情報400を保持していれば、そのような通信は不要である。特に、NAS102のようなエッジノードは、ファイルに対する変更操作(例えば、作成、アップデート又はリネームの要求)を最初に受け付けるノードなので、そのようなノードがポリシー情報400を持つ意義(及び、衝突解決ポリシーに従う処理を実行する意義)は、他種のノードがポリシー情報400を持つことに比べて大きいと考えられる。また、衝突ケースの特定は、NAS102に代えて、CAS121及び管理ノード124のうちのいずれかが行ってもよい。また、衝突解決ポリシーに従う処理は、NAS102により行われるが、その処理は、その衝突解決ポリシーを特定したCAS121又は管理ノード124からの指示に従って行われてよい。例えば、センタFS122内に退避用ディレクトリが作成され、退避用ディレクトリに衝突ファイルが退避されてもよい。
本実施形態では、複数の衝突ケースと、その複数の衝突ケースにそれぞれ対応した複数の衝突解決ポリシーが定義されており、該当する衝突ケースに対応した衝突解決ポリシーに従う処理が実行される。これにより、上書きという方法と衝突ファイルを退避用ディレクトリへ退避するという方法のいずれかだけを常に行うことに比べて、利便性及び柔軟性のうちの少なくとも1つが高い。具体的には、例えば、ユーザの意図する構造の名前空間を保持することが期待できる。
以下、実施形態を詳細に説明する。
図2は、NAS102の構成を示す。なお、以下の説明では、インターフェースデバイスを「I/F」と略記する。
NAS102は、ストレージ装置220と、ストレージ装置220に接続されたNASコントローラ200とを有する。
ストレージ装置220は、NASコントローラ200に接続されるI/F223と、メモリ221と、複数のPDEV224と、それらに接続されたCPU222とを有する。複数のPDEV224は、1以上のRAIDグループでよい。CPU222は、NASコントローラ200に1以上の論理ボリュームを提供してよく、その1以上の論理ボリュームの少なくとも一部に基づく記憶空間が、NASコントローラ200によりローカルFS104としてクライアント101に提供されてよい。ローカルFS104に格納されたファイルのデータは、1以上のPDEV224に格納される。
NASコントローラ200は、いわゆるNASヘッドでよい。NASコントローラ200は、プログラム及び情報を記憶するメモリ(記憶部の一例)201、ネットワーク103を経由してクライアント101に接続される外部ネットワークI/F203、ネットワーク105を経由してCAS121に接続される内部ネットワークI/F204、ストレージ装置220に接続されるI/F205、及びそれらに接続されたCPU(プロセッサの一例)202を有する。I/F203〜205は、それぞれI/Fの一例であり、I/F203〜205のうちの2以上が、同一のI/Fでもよい。CPU202は、メモリ201内のプログラムを実行する。
メモリ201は、ファイル共有サーバプログラム206、ファイル共有クライアントプログラム207、FSプログラム208、アップデートリスト生成プログラム209、同期プログラム211、マイグレーションプログラム212、自拠点アップデートリスト213、及び、同期済バージョン情報214を記憶する。メモリ201に格納されたこれらのプログラム及び情報のうちの少なくとも一部が、CPU202によりストレージ装置220からメモリ201へ読み出されてよい。
ファイル共有サーバプログラム206は、クライアント101からローカルFS104内のオブジェクト(例えばファイル又はディレクトリ)についての操作を受け付けるプログラムである。ファイル共有クライアントプログラム207は、センタFS122に格納されるファイルについての操作を行うプログラムである。FSプログラム208は、ローカルFS104を提供するプログラムである。アップデートリスト生成プログラム209は、自拠点アップデートリスト213を生成するプログラムである。同期プログラム211は、センタFS122からローカルFS104への同期を行うプログラムである。上述したポリシー情報400は、例えば同期プログラム211が保持する。ポリシー情報400は、同期プログラム211の他に他のプログラムもアクセス可能に保持されてよい。マイグレーションプログラム212は、ローカルFS104からセンタFS122へのマイグレーションを行うプログラムである。
自拠点アップデートリスト213は、ローカルFS104のアップデートに関する情報のリストである。ローカルFS104のアップデートの検知は、図示しないOS(Operating System)の監視機能により行われてよく、アップデートリスト生成プログラム209が、ローカルFS104のアップデートが検知されたことの通知を受けて、自拠点アップデートリスト213を生成してよい。自拠点アップデートリスト213の例を図8に示す。自拠点アップデートリスト213は、ローカルFS104がアップデートされた拠点のIDであるSYSTEM_ID806と、CAS121かららの同期の最新バージョンを示す情報であるCURRENT SYNC VERSION807と、クライアント101により更新されたオブジェクトのタイプ(例えばファイル又はディレクトリ)を示す情報であるMIGTYPE808と、アップデート内容を示す情報であるアップデート内容809とを含む。参照符号213A−1は、拠点A内のファイルXを編集した場合(ファイルXの内容をアップデートした場合)の自拠点アップデートリストの一例を示す。このリスト231A−1内のアップデート内容809は、編集後のファイルのファイルパス名を示す。参照符号213B−2は、拠点B内のファイルXを編集した場合の自拠点アップデートリストの一例を示す。参照符号213A−3は、拠点A内のディレクトリ「dir001」を「dir004」にリネームした場合の自拠点アップデートリストの一例を示す。このリスト213A−3内のアップデート内容809は、リネーム元とリネーム先の名前、及びその親ディレクトリの名前を示す。参照符号213A−4は、拠点A内のディレクトリ「dir001」に子ディレクトリ「dir002」を作成した場合の自拠点アップデートリストの一例を示す。このリスト213A−4内のアップデート内容809は、作成したディレクトリと、その親ディレクトリを示す。参照符号213A−5は、拠点A内のディレクトリ「dir001」を削除した場合の自拠点アップデートリストの一例を示す。このリスト213A−5内のアップデート内容809は、削除したディレクトリを示す。このような自拠点アップデートリスト213が、CAS121に送信される。自拠点アップデートリスト213に従うアップデートが、CAS121を通じて他のNAS102のローカルFS104へ反映されることで、拠点間でFSの同期が可能となる。
同期済バージョン情報214は、CAS121に保持されている自拠点アップデートリスト213の集合(1以上の自拠点アップデートリスト213)のうち、自拠点のNAS102に反映された自拠点アップデートリスト213の最新のバージョンを表す情報を含む。これにより、次回同期時に、CAS121内の自拠点アップデートリスト213の集合の中から、自拠点へまだ反映していないリストを選んで反映することが可能となる。
図3は、CAS121の構成を示す。
CAS121は、ストレージ装置320と、ストレージ装置320に接続されたCASコントローラ300とを有する。
ストレージ装置320の構成は、ストレージ装置220の構成と同じでよい。すなわち、ストレージ装置320も、CASコントローラ300に接続されるI/F323と、メモリ321と、複数のPDEV324と、それらに接続されたCPU322とを有する。
CASコントローラ300は、プログラム及び情報を記憶するメモリ(記憶部の一例)301、ネットワーク105を経由してNAS102に接続されるフロントエンドネットワークI/F303、ネットワーク123を経由して管理ノード124に接続されるバックエンドネットワークI/F304、ストレージ装置320に接続されるI/F305、及びそれらに接続されたCPU(プロセッサの一例)302を有する。I/F303〜305は、それぞれI/Fの一例であり、I/F303〜305のうちの2以上が、同一のI/Fでもよい。CPU322は、メモリ301内のプログラムを実行する。
メモリ301は、ファイル共有サーバプログラム306、FSプログラム307、アップデートリスト309、及びアップデートリストバージョン情報310を記憶する。メモリ301に格納されたこれらのプログラム及び情報のうちの少なくとも一部が、CPU302によりストレージ装置320からメモリ301へ読み出されてよい。
ファイル共有サーバプログラム306は、各NAS102からセンタFS122内のオブジェクト(例えばファイル又はディレクトリ)についての操作を受け付けるプログラムである。FSプログラム307は、センタFS122を提供する。
アップデートリスト309は、各NAS102からマイグレーション時等で受信した自拠点アップデートリストである。アップデートリストバージョン情報310は、各NAS102から受信された各アップデートリスト309のバージョン(例えばバージョンのID(数字))を含んだ情報である。
図4は、ポリシー情報400の一例を示す。
ポリシー情報400は、複数のNAS102の各々が保持する。ポリシー情報400は、複数のNAS102において全て同じでもよいし、少なくとも1つのNAS102において異なっていてもよい。ポリシー情報400は、1以上のエントリを含み、各エントリが保持する情報が、ポリシー名401、衝突ケース402及び衝突解決ポリシー403を含む。ポリシー名401は、ポリシーの名称を示す。衝突ケース402が、定義された衝突ケースを示す。衝突解決ポリシー403が、該当する衝突ケースを解決するための定義された処理の内容を示す。
第1のエントリ404によれば、自拠点及び他拠点の双方のアップデートがマージされる。具体的には、他拠点及び自拠点で同じディレクトリの下の異なるパスを作成、削除又はリネームした場合は、自拠点及び他拠点のそれぞれの操作がマージされる。第1のエントリ404の衝突ケース402によれば、実質的に衝突は生じていないためである。
第2のエントリ405によれば、ファイルよりディレクトリが優先される。具体的には、他拠点で作成又はリネームされたディレクトリと同名のファイルが自拠点で作成されていた場合、他拠点で作成したディレクトリが自拠点で保持され、自拠点で作成されたファイルが退避用ディレクトリへ移動される。
第3のエントリ406によれば、最先のマイグレーションが優先される。具体的には、他拠点で作成、アップデート、削除又はリネームされたファイルパスと同名のファイルパスが、自拠点で作成、アップデート/削除/リネームされていた場合、CAS121上の状態(他拠点での操作)が自拠点に反映される。自拠点で作成、アップデート又はリネームされたファイルパスが、退避用ディレクトリへ移動される。
第4のエントリ407によれば、他拠点でのオブジェクト削除が優先される。具体的には、 他拠点で削除されたディレクトリより下位のいずれかのオブジェクトへのファイルパスが自拠点でアップデートされていた場合、他拠点での操作が反映される。その際、自拠点でアップデートされたファイルは削除され、退避用ディレクトリに移動されない。
このようなポリシー情報400を、複数のNAS102と、CAS121と、管理ノード124とのうちの少なくとも1つである対象ノードが、アップデートできる。具体的には、対象ノード内のメモリに格納されており対象ノード内のCPUにより実行されるポリシーアップデートプログラム(図示せず)(又は、いずれかのプログラムが有するポリシーアップデート機能)が、エントリの作成、アップデート及び削除のうちの少なくとも1つを行うことができる。ポリシー更新プログラムは、計算機システムの構成変更(例えば、NAS102(拠点100)の追加、NAS102の障害等によるNAS102の減少)に応答してポリシー情報400を自動でアップデートしてもよい。また、対象ノード(ポリシーアップデートプログラム)が、ユーザ又は管理者から情報の入力を受け付けるユーザインターフェース(以下、UI)を提供し、UIを通じて入力された情報に従い、エントリの少なくとも一部をアップデートしたり、エントリを追加又は削除したりしてもよい。UI(例えばGUI(Graphical User Interface))は、例えば、クライアント101の表示システム(例えば表示デバイス)、又は、管理ノード124の表示システム(例えば表示デバイス又は表示用計算機)に表示される。
図12は、第1のUIの一例を示す。
第1のUIは、エントリの作成(追加)、アップデート又は削除を手動で行うためのUIである。ユーザ又は管理者は、ポリシー名、衝突ケース及び衝突解決ポリシーのうちの少なくとも1つを第1のUIを通じて計算機システムに定義することができる。対象ノードは、第1のUIを通じて入力された情報に従い、ポリシー情報400にエントリを追加したり、ポリシー情報400からエントリを削除したり、ポリシー情報400内のエントリの少なくとも一部をアップデートしたりする(図示の例では、既存ポリシーの修正が選択され、且つ、修正対象として、第2のエントリが選択されている状態)。このようなUIにより、ユーザ又は管理者は、衝突ケースと、優先順位及びその基準(例えば、拠点100とデータセンタ120のうちのいずれを優先するか、いずれの拠点100を優先するか、ディレクトリとファイルのうちのいずれを優先するか)とに基づいて、ポリシー名、衝突ケース及び衝突解決ポリシーのうちの少なくとも1つを作成、アップデート又は削除できる。つまり、衝突ケース毎にユーザ又は管理者にとって最も望ましい衝突解決ポリシーを定義し易い。
図13は、第2のUIの一例を示す。
第2のUIは、複数の拠点(NAS)とデータセンタ(CAS)のうちの2以上についてそれぞれ優先順位の入力を受け付けるUIである(また、第2のUIは、図示のように、ディレクトリとファイルのそれぞれの優先順位を受け付けてもよい)。対象ノード(ポリシー更新プログラム)は、2以上のノードの各々の入力された優先順位に従い(及び、ディレクトリとファイルの優先順位に従い)、定義された複数の衝突ケースと、定義された複数の衝突ケースにそれぞれ対応した複数の衝突解決ポリシーとのうちの少なくとも1つを、例えば自動でアップデートしてよい。例えば、自拠点のNAS102と他拠点のNAS102の優先順位が逆にされた場合、対象ノード(ポリシーアップデートプログラム)は、図4に例示した[他拠点]を「自拠点」に自動で変更し、且つ、図4に例示した[自拠点]を「他拠点」に自動で変更してよい。このような自動アップデートにより、ユーザ又は管理者の負担を軽減できる。
以上のように、定義された複数の衝突ケースの各々に衝突解決ポリシーを関連付け、且つ、少なくとも衝突解決ポリシーがアップデート可能であることは、複数のNAS102で名前空間を共有する計算機システムにおいて、より優れた利便性及び柔軟性を提供できる。なお、図12と図13のUIは、一例であり、且つ、図12及び図13は、模試的な図である。ポリシー情報400のアップデートのためのUIは、ユーザ又は管理者の知識レベルや操作スキル等を考慮した構成にすることができる。
例えば、拠点100が増加した又は減少したことに伴い、既存の拠点100の優先順位を下げる又は上げる必要性が生じ得る。或いは、拠点100の数に変更が無くても、時区間(例えば1日、1月又は1年等の所定の期間における時区間)によって、拠点100間の優先順位、又は、拠点100とデータセンタ120間の優先順位が異なることがあり得る。本実施形態では、そのような状況に柔軟に対応できる。なお、時区間と優先順位との対応関係を予め定義した情報が対象ノードに設定されていれば、対象ノード(ポリシーアップデートプログラム)は、その設定されている情報と、タイマーにより検出される時刻とに基づいて、自動で、ポリシー情報400をアップデートしてもよい。
また、拠点100間で、従業員が異動することもある。例えば、拠点Aが、経理部門に対応し、拠点Bが、技術部門に対応していて、特定の従業員が拠点間を移動した場合、拠点Aと拠点Bの優先順位を逆にすることが望ましいこともあり得る。本実施形態では、そのような状況にも柔軟に対応できる。
複数のNAS102と複数のNAS102に共通のCAS121とを有する計算機システムにおいて、複数の衝突ケースとそれら複数の衝突ケースにそれぞれ対応した複数の衝突解決ポリシーとを定義することは、ポリシーを用いた一般的な制御の置換又は転用ではない。例えば、一般的なグループポリシーでは、ユーザの行動の制限(例えば、特定ディレクトリへのアクセスの禁止、実行ファイルのダウンロードの禁止等)が行われる。一方、本実施形態に従うポリシー情報400を用いた分散オブジェクト共有によれば、衝突ケース毎に、その衝突ケースと、拠点等の優先順位とに適した衝突解決のための処理が行われる。これは、本実施形態に係る計算機システムに特有の問題を解決するものであり、ポリシーを用いた一般的な制御を置換又は転用するだけで導くことはできない。
図5は、特殊ディレクトリの構造の一例を示す。
特殊ディレクトリ702Bの下位に作成された退避用ディレクトリへのファイルパスに、NAS102B(同期プログラム211B)により、移動(退避)されるオブジェクトの使用に関する情報として、以下のうちの少なくとも1つ、
(a)そのオブジェクトが作成、アップデート又はリネームされた最新の時刻を表す時刻情報、
(b)そのオブジェクトを使用するユーザのユーザID、
が含まれる。ファイルパスでは、ユーザIDより時刻情報が上位に位置するが、ユーザIDが上位に位置してもよい。図5の例によれば、同期処理において、ファイルパス505(ファイルX)が、特殊ディレクトリ702Bに移動された。具体的には、参照符号504に示す通り、ファイルXを最後にアップデートしたユーザのIDは「User_D」であり、アップデート時刻は、「年/月/日 時:分:秒」で表現すると、「2014/07/07 13:45:00」である。この場合、同期プログラム211Bは、特殊ディレクトリ702Bの下位に、ディレクトリ501B及び502Bで構成された退避用ディレクトリを作成する。具体的には、同期プログラム211Bは、特殊ディレクトリ702Bの子ディレクトリとして、アップデート時刻を示す情報のうちの上位部分「20140707」を含んだ名前をディレクトリ名として有するディレクトリ501Bを作成する。また、同期プログラム211Bは、ディレクトリ501の子ディレクトリとして、ユーザID「User_D」を含んだ名前をディレクトリ名として有するディレクトリ502Bを作成する。同期プログラム211Bは、ディレクトリ502Bに、ファイルパス505を移動する。移動されるファイルパスは、ファイルXと、ファイルXとルートノード間のパスにおける全てのオブジェクトを含む(または、ファイルXとその親ディレクトリを含む)。図5の例では、ファイルパス505は、ファイルX及びそれの親ディレクトリで構成されている。ファイルパス505がディレクトリ502に移動されることにより、ファイルパス505内の最上位ディレクトリ(ファイルXの親ディレクトリ)が、ディレクトリ502の1つの子ディレクトリとなる。更に、同期プログラム211Bは、ディレクトリ502内のファイルXのファイル名に、アップデート時刻が示す情報のうちの下位部分「134500」を含める。
このように、特殊ディレクトリ702B内で、オブジェクトが、アップデート時刻とユーザIDとに基づいて分類される。このため、例えば、退避されたファイルの検索容易化が期待でき、衝突ファイルの修正解決ポリシーを決めやすくなることが期待できる。なお、NAS102B(例えばFSプログラム208B)は、特殊ディレクトリ702B内のファイルのファイルパスから特定されるアップデート時刻から一定時間が経過していれば、そのファイル及び退避用ディレクトリ(501B及び502B)を特殊ディレクトリ702Bから削除してもよい。
また、NAS102B(ファイル共有サーバプログラム206B)は、クライアント101Bに対して、特殊ディレクトリ702B内の少なくとも1つのオブジェクトに対する変更操作を制限する。具体的には、例えば、NAS102B(ファイル共有サーバプログラム206B)は、作成した退避用オブジェクトに、アクセス制限として、リードオンリー(参照は許可されるが書き込みは禁止)を関連付ける。これにより、特殊ディレクトリ702B内の構造が崩れるのを防ぐことができる。
以下、図6〜図11を用いて、マイグレーション処理及び同期処理を説明する。その際、衝突解決ポリシーに従う処理も説明する。
図6は、拠点AのNAS102AからCAS121へのマイグレーション処理の前後の様子の一例を示す。
まず、マイグレーション前の状態は、以下の通りである。CAS121のアップデートリストバージョン情報310が、バージョンID「1」〜「99」を含んでいる。これは、センタFS122が、複数のNAS102から合計99回アップデートされたことを意味する。また、バージョンID「1」〜「99」にそれぞれ対応したアップデートリスト309がCAS121に格納されている。NAS102Aには、バージョンID「99」までのアップデートリスト309が、ローカルFS104Aに反映済(同期処理済)とする。そのため、同期済バージョン情報214AにバージョンID「99」が登録されている。その後、クライアント101AによりファイルXがファイルX1に編集されたとする。そして、そのアップデート(編集)に対応した自拠点アップデートリスト213Aが生成されている。即ち、CAS121からNAS102Aへ同期したときのCAS121の最新の状態が参照符号603により示される状態であり、その後、クライアント101AによりファイルXが編集されたときのNAS102Aの最新の状態が参照符号601により示される状態である。以上が、マイグレーション前の状態である。
図6の上記状態において、NAS102AからCAS121へのマイグレーション処理を、図9のフローチャートを用いて説明する(マイグレーション後のCAS121の状態は、参照符号604により示される状態である)。
S901で、マイグレーションプログラム212Aは、同期処理を実行する。これは、CAS121の最新の状態を自拠点Aへ反映し、その差分のみをCAS121へ送信するためである。ただし、最近同期した時から、CAS121のアップデートリストバージョン情報310にバージョンIDの追加がない場合は、本処理は不要である。図6の例では、拠点AのNAS102A(601)の同期済バージョン情報214は「99」を示し、CAS121(603)のアップデートリストバージョン情報310は「1,2,…,99」を示している。拠点AのNAS102A(601)が最後に同期したバージョン「99」からCAS121に変化がないため、本処理は不要である。
S902で、マイグレーションプログラム212Aは、データマイグレーションを行う。本ステップでは、同期済バージョンからのアップデート分をCAS121へ反映する。なお、反映する際には、アップデートされた箇所の親ディレクトリを含めて反映する。図6の例では、ファイルXにアップデートがある(内容が「X」から「X1」にアップデートされている)ため、ファイルXとその親ディレクトリA(dirA)とを含んだファイルパス609がセンタFS122へ反映される。反映後は、参照符号604に示すようになる。すなわち、ファイルXの内容は「X1」となる。
S903で、マイグレーションプログラム212Aは、自拠点アップデートリスト213をCAS121へ送信する。図6の例では、ファイルXのアップデートに対応した自拠点アップデートリスト213A−1(図8参照)が送信される。
S904で、マイグレーションプログラム212Aは、アップデートリストバージョン情報310のアップデートを行う。本ステップでは、アップデートリストバージョン情報310の最終エントリの値を一つインクリメントした値を、アップデートリストバージョン情報310の末尾へ追加する。図6の例では、アップデートリストバージョン情報310の最終エントリの値は「99」である。このため、マイグレーションプログラム212Aは、これに1を加えた「100」をアップデートリストバージョン情報310へ追加する。従って、アップデートリストバージョン情報310は、「1,2,…,99,100」を含む(参照符号604)。
なお、S902〜S904は、自拠点アップデートリスト213がある間、処理が継続される。
以上が、マイグレーション処理の説明である。
続いて、CAS121からNAS102Bへの同期処理を説明する。
図7は、CAS121から拠点BのNAS102Bへの同期処理の前後の様子の一例を示す。
まず、同期処理前の状態を以下に示す。CAS121は、参照符号604により示す状態である。つまり、アップデートリストバージョン情報310には、「1」から「100」までが登録されており、アップデートリストバージョン「100」に対応するアップデートリストはリスト213A−1(図8参照)であるとする。また、NAS102Bの同期済バージョン情報は「99」を示しており、その後、クライアント101BによりファイルXが編集され内容が「X2」になっている。そして、そのアップデートにより、NAS102Bの自拠点アップデートリストとしてリスト213B−2(図8参照)が生成されている。以上が、同期処理前の状態の説明である。
図7の上記状態において、CAS121からNAS102Bへの同期処理を、図10のフローチャートを用いて説明する(同期処理後のNAS102Bの状態は参照符号701により示される状態である)。
S1001で、同期プログラム211Bは、CAS121のアップデートリストバージョン情報310を参照する。図7の例では、「1,2,…,100」を含むアップデートリストバージョン情報310が参照される。
S1002で、同期プログラム211Bは、同期が必要か否か判断する。判断結果が肯定の場合(S1002:Yes)、S1003へ進む。判断結果が否定の場合(S1002:No)、処理が終了する。本ステップでは、同期プログラム211Bは、前回CAS121からNAS102Bへの同期を行った状態から、センタFS122にアップデートがあったか否かを判断する。その判断結果が肯定の場合、S1002:Yesとなり、その判断結果が否定の場合、S1002:Noとなる。本実施形態では、同期済バージョン情報214とアップデートリストバージョン情報310を用いてその判断が行われる。図7の例では、NAS102Bの同期済バージョン情報には「99」が登録されており、CAS121のアップデートリストバージョン情報310には、「1」から「100」までが登録されている。これは、前回CAS121からNAS102Bへ同期を行った状態から、CAS121のアップデートバージョンが1つ上がっていることを意味する。故に、同期が必要との判断結果となる(S1002:Yes)。
S1003で、同期プログラム211Bは、前回同期以降に作成されたアップデートリストをCAS121から取得する。図7の例では、アップデートリストバージョン「99」までは同期済であるため、アップデートリストバージョン「100」に対応するアップデートリスト309(213A−1)が取得される。
S1004で、同期プログラム211Bは、未処理のアップデートリスト309があるか否かを判断する。判断結果が肯定の場合(S1004:Yes)、S1005へ進み、判断結果が否定の場合(S1004:No)、処理が終了する。図7の例では、S1003で取得した未処理のアップデートリスト309(213A−1)があるため、S1005へ進む。
S1005で、同期プログラム211Bは、名前空間反映処理を実行する。本ステップでは、センタFS122(CAS121の名前空間)がNAS102Bへ反映される。本ステップは、本実施形態の1つの特徴を含み、本ステップの詳細が、図11に示される。従って、S1006を説明する前に、図11を用いてS1005の説明を行う。
図11は、名前空間反映処理のフローチャートである。
S1101で、同期プログラム211Bは、ポリシー情報400を参照し、反映元の名前空間と反映先の名前空間との間において異なるオブジェクト(ここではファイルX)について、ファイル退避が必要ないずれかの衝突ケースに合致するか否かを判断する。本実施形態では、図4によれば、例えば、以下のいずれかに該当する場合、
(c−1)CAS121のファイルにアップデートがあり、且つ、同じファイル名のファイルを自拠点100Bで新規作成又はアップデートしていた(ポリシー名「First-Mig-Win」)
(c−2)CAS121で作成又はリネームされたディレクトリと同名のファイルを自拠点Bで作成していた(ポリシー「Directory-Win」)
ファイル退避が必要ないずれかの衝突ケースに合致するとの判断結果が得られる。また、(c−1)及び(c−2)のいずれかに該当するか否かを判断するためには、S1003で取得したアップデートリスト309と自拠点アップデートリスト213とを比較すればよい。
図7の例では、処理対象のアップデートリスト309(213A−1)のアップデート内容809より、CAS121の名前空間において、「/Root/dirA」下の「fileX」にアップデートがあったことがわかる。また、NAS102Bの自拠点アップデートリスト213(213B−2)のアップデート内容809より、NAS102Bにおいても名前空間において、「/Root/dirA」下の「fileX」にアップデートがあったことがわかる。即ち、CAS121とNAS102Bで同じファイル名をアップデートしていることから、ファイル退避条件(c−1)に合致するため(S1101:Yes)、S1102へ進む。
S1102で、同期プログラム211Bは、特殊ディレクトリ(ディレクトリ「.conflict」)702Bの下位に退避用ディレクトリを作成する。図7では図を簡略化しているが、図5に示す通り、「.conflict」702Bの下位に、アップデート日付を表すディレクトリ501B、ファイルを最後にアップデートしたユーザを表すディレクトリ502Bが設けられる。例えば、参照符号504に示すように、ファイルを最終アップデートしたユーザのユーザIDが「User_D」で、ファイル最終アップデート時刻が「2014/07/07 13:45:00」の場合、「.conflict」702Bの下位に、名前が「20140707」であるディレクトリ501Bが作成され、その下位に、名前が「User_D」であるディレクトリ502Bが作成される。本ディレクトリ階層は一例であり、発明を限定するものではない。名前が日付であるディレクトリを設けることにより、ある日付以降のファイルを削除して容量を削減する等の対応がとりやすくなる。
S1103で、同期プログラム211Bは、衝突ファイルの名称変更と退避先ディレクトリの下位への配置とを行う。本ステップでは、S1102で作成したディレクトリの下位へ衝突ファイルが移動される。図7の例では、同期プログラム211Bは、衝突ファイルを含んだファイルパス703を、参照符号701に示す通り、「.conflict」702Bの下位に移動する。より詳しくは、図5に示す通り、ファイルパス703は、ファイルパス703中の日付を含んだディレクトリ名を有するディレクトリ501と、ファイルパス703中のユーザIDを含んだディレクトリ名を有するディレクトリ502との下位に移動される。同期プログラム211Bは、図5に示す通り、移動したファイルのファイル名に、時刻情報の下位部分(時分秒)を含める(「fileX_134500」)。
更に、同期プログラム211Bは、S1103で退避用ディレクトリに移動したファイルのアクセス制御属性として、読み込み専用を割り当て、これにより、クライアント101Bからの、退避用ディレクトリ内のファイルの更新が禁止される。これにより、衝突ファイルの更新やディレクトリ階層の変更が回避され、その後の検索容易性を保つことが期待できる。
S1104で、同期プログラム211Bは、センタFS122のアップデートをローカルFS104Bへ反映し、処理を終了する。図7の例では、参照符号701に示すように、内容が「X1」のファイルXを含んだファイルパス705が、ルートノードに追加される。
以上により、図11の名前空間反映処理の説明を終了する。本処理は、図10のS1005に該当するものであり、図10のS1006の説明に戻る。
S1006で、同期プログラム211Bは、NASの同期済バージョン情報214をアップデートする。図7の例では、CAS121のアップデートリストバージョン情報のバージョン「100」に該当する同期を実行したため、同期前(参照符号602)の同期済バージョン情報214の「99」を、「100」にアップデートする(参照符号701)。
S1004に戻り、S1003で取得した未処理のアップデートリスト309が存在する間、S1005とS1006が繰り返される。未処理のアップデートリスト309が無くなったら処理が終了する。図7の例では、S1003で取得したアップデートリスト309は、バージョン「100」に該当する1つのみであり、他に未処理のアップデートリスト309は存在しないため、処理が終了する。
以上が、同期処理の説明である。
以上、一実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
101:クライアント、102:NAS、121:CAS

Claims (13)

  1. ローカル名前空間をそれぞれ提供する複数のエッジノードと、
    前記複数のエッジノードに接続され前記ローカル名前空間に対応したセンタ名前空間を提供するセンタノードと
    を有し、
    前記エッジノードが提供するローカル名前空間、センタ名前空間から他の名前空間への反映において、反映元の名前空間と反映先の名前空間との間においてオブジェクトが異なる衝突が発生した場合について、衝突ケースと、その衝突ケースに対応する衝突解決ポリシーと、の組み合わせを複数有するポリシー情報を有し、
    前記衝突が発生した場合に、前記ポリシー情報に基づいて、発生した衝突ケースに対応する衝突解決ポリシーにかかる処理を実行し、
    前記ポリシー情報の各衝突解決ポリシーは、ノード、ディレクトリ、またはファイルの優先順位を含む内容であり、いずれかのノードが提供するインタフェースが前記優先順位の変更を受け付けた場合に、前記ポリシー情報の複数の衝突解決ポリシーを変更する
    計算機システム。
  2. 前記優先順位は、時刻に応じて変更される
    請求項1記載の計算機システム。
  3. ローカル名前空間をそれぞれ提供する複数のエッジノードと、
    前記複数のエッジノードに接続され前記ローカル名前空間に対応したセンタ名前空間を提供するセンタノードと
    を有し、
    前記エッジノードが提供するローカル名前空間、センタ名前空間から他の名前空間への反映において、反映元の名前空間と反映先の名前空間との間においてオブジェクトが異なる衝突が発生した場合について、衝突ケースと、その衝突ケースに対応する衝突解決ポリシーと、の組み合わせを複数有するポリシー情報を有し、
    前記衝突が発生した場合に、前記ポリシー情報に基づいて、発生した衝突ケースに対応する衝突解決ポリシーにかかる処理を実行し、
    前記ポリシー情報の各衝突解決ポリシーは、ノード、ディレクトリ、またはファイルの優先順位を含む内容であり、
    前記ポリシー情報の衝突解決ポリシーは、ファイルよりディレクトリを優先するポリシーであり、
    反映元の名前空間のディレクトリと、反映先の名前空間のファイルと、が同名である場合に、前記反映先の名前空間に、前記ディレクトリが格納され、
    前記ファイルが、前記反映先の名前空間に作成された退避用ディレクトリに移動される、
    計算機システム。
  4. 前記退避用ディレクトリへの書き込みは禁止される、
    請求項3記載の計算機システム。
  5. 前記退避用ディレクトリへのファイルパスに、移動されるオブジェクトの使用に関する情報として、以下のうちの少なくとも1つが含まれる、
    (a)そのオブジェクトが作成、アップデート又はリネームされた最新の時刻を表す時刻情報、
    (b)そのオブジェクトを使用するユーザのユーザID、
    請求項3記載の計算機システム。
  6. ローカル名前空間をそれぞれ提供する複数のエッジノードと、
    前記複数のエッジノードに接続され前記ローカル名前空間に対応したセンタ名前空間を提供するセンタノードと
    を有し、
    前記エッジノードが提供するローカル名前空間、センタ名前空間から他の名前空間への反映において、反映元の名前空間と反映先の名前空間との間においてオブジェクトが異なる衝突が発生した場合について、衝突ケースと、その衝突ケースに対応する衝突解決ポリシーと、の組み合わせを複数有するポリシー情報を有し、
    前記衝突が発生した場合に、前記ポリシー情報に基づいて、発生した衝突ケースに対応する衝突解決ポリシーにかかる処理を実行し、
    前記衝突解決ポリシーの実行に際し、前記反映先の名前空間における衝突オブジェクトの退避を必要とする場合、その衝突オブジェクトの退避先とする退避用ディレクトリを、前記反映先の名前空間に作成し、作成した退避用ディレクトリに、その衝突オブジェクトを移動し、
    前記反映先の名前空間に、退避用ディレクトリの上位ディレクトリとなる特殊ディレクトリがあり、
    前記特殊ディレクトリの子ディレクトリとして、刻情報の上位部分とユーザIDとのうちの一方を含んだ名前をディレクトリ名として有する第1のディレクトリを作成し、
    前記第1のディレクトリの子ディレクトリとして、前記時刻情報の上位部分とユーザIDとのうちの他方を含んだ名前をディレクトリ名として有する第2のディレクトリを作成し、
    前記衝突オブジェクトは、その名前に前記時刻情報の下位部分を含められ、前記第2のディレクトリに移動される
    計算機システム。
  7. 前記複数のエッジノードの各々が、前記ポリシー情報を記憶し、
    前記複数のエッジノードの各々が、前記センタ名前空間のアップデートをそのエッジノードが提供するローカル名前空間に反映する同期において、前記ポリシー情報に基づいて、衝突解決ポリシーにかかる処理を行う
    請求項1乃至6のいずれか一項に記載の計算機システム。
  8. ローカル名前空間をそれぞれ提供する複数のエッジノードと、前記複数のエッジノードに接続され前記ローカル名前空間に対応したセンタ名前空間を提供するセンタノードとを有する計算機システムにおいて行われる分散オブジェクト共有方法であって、
    前記エッジノードが提供するローカル名前空間、センタ名前空間から他の名前空間への反映において、反映元の名前空間と反映先の名前空間との間においてオブジェクトが異なる衝突が発生した場合について、衝突ケースと、その衝突ケースに対応する衝突解決ポリシーと、の組み合わせを複数有するポリシー情報を有し、
    前記衝突が発生した場合に、前記ポリシー情報に基づいて、発生した衝突ケースに対応する衝突解決ポリシーにかかる処理を実行し、
    前記ポリシー情報の各衝突解決ポリシーは、ノード、ディレクトリ、またはファイルの優先順位を含む内容であり、いずれかのノードが提供するインタフェースが前記優先順位の変更を受け付けた場合に、前記ポリシー情報の複数の衝突解決ポリシーを変更する
    分散オブジェクト共有方法。
  9. ローカル名前空間をそれぞれ提供する複数のエッジノードと、前記複数のエッジノードに接続され前記ローカル名前空間に対応したセンタ名前空間を提供するセンタノードとを有する計算機システムにおいて行われる分散オブジェクト共有方法であって、
    前記エッジノードが提供するローカル名前空間、センタ名前空間から他の名前空間への反映において、反映元の名前空間と反映先の名前空間との間においてオブジェクトが異なる衝突が発生した場合について、衝突ケースと、その衝突ケースに対応する衝突解決ポリシーと、の組み合わせを複数有するポリシー情報を有し、
    前記衝突が発生した場合に、前記ポリシー情報に基づいて、発生した衝突ケースに対応する衝突解決ポリシーにかかる処理を実行し、
    前記ポリシー情報の各衝突解決ポリシーは、ノード、ディレクトリ、またはファイルの優先順位を含む内容であり、
    前記ポリシー情報の衝突解決ポリシーは、ファイルよりディレクトリを優先するポリシーであり、
    反映元の名前空間のディレクトリと、反映先の名前空間のファイルと、が同名である場合に、前記反映先の名前空間に、前記ディレクトリが格納され、
    前記ファイルが、前記反映先の名前空間に作成された退避用ディレクトリに移動される、
    分散オブジェクト共有方法。
  10. ローカル名前空間をそれぞれ提供する複数のエッジノードと、前記複数のエッジノードに接続され前記ローカル名前空間に対応したセンタ名前空間を提供するセンタノードとを有する計算機システムにおいて行われる分散オブジェクト共有方法であって、
    前記エッジノードが提供するローカル名前空間、センタ名前空間から他の名前空間への反映において、反映元の名前空間と反映先の名前空間との間においてオブジェクトが異なる衝突が発生した場合について、衝突ケースと、その衝突ケースに対応する衝突解決ポリシーと、の組み合わせを複数有するポリシー情報を有し、
    前記衝突が発生した場合に、前記ポリシー情報に基づいて、発生した衝突ケースに対応する衝突解決ポリシーにかかる処理を実行し、
    前記衝突解決ポリシーの実行に際し、前記反映先の名前空間における衝突オブジェクトの退避を必要とする場合、その衝突オブジェクトの退避先とする退避用ディレクトリを、前記反映先の名前空間に作成し、作成した退避用ディレクトリに、その衝突オブジェクトを移動し、
    前記反映先の名前空間に、退避用ディレクトリの上位ディレクトリとなる特殊ディレクトリがあり、
    前記特殊ディレクトリの子ディレクトリとして、刻情報の上位部分とユーザIDとのうちの一方を含んだ名前をディレクトリ名として有する第1のディレクトリを作成し、
    前記第1のディレクトリの子ディレクトリとして、前記時刻情報の上位部分とユーザIDとのうちの他方を含んだ名前をディレクトリ名として有する第2のディレクトリを作成し、
    前記衝突オブジェクトは、その名前に前記時刻情報の下位部分を含められ、前記第2のディレクトリに移動される
    分散オブジェクト共有方法。
  11. 別のエッジノードに接続されたセンタノードに接続されたインターフェースデバイスと、
    前記インターフェースデバイスに接続されローカル名前空間を提供するプロセッサと
    を有し、
    前記センタノードは、センタ名前空間を提供し、
    前記別のエッジノードが提供するローカル名前空間、センタ名前空間から他の名前空間への反映において、反映元の名前空間と反映先の名前空間との間においてオブジェクトが異なる衝突が発生した場合について、衝突ケースと、その衝突ケースに対応する衝突解決ポリシーと、の組み合わせを複数有するポリシー情報を有し、
    前記衝突が発生した場合に、前記ポリシー情報に基づいて、発生した衝突ケースに対応する衝突解決ポリシーにかかる処理を実行し、
    前記ポリシー情報の各衝突解決ポリシーは、ノード、ディレクトリ、またはファイルの優先順位を含む内容であり、いずれかのノードが提供するインタフェースが前記優先順位の変更を受け付けた場合に、前記ポリシー情報の複数の衝突解決ポリシーを変更する
    エッジノード。
  12. 別のエッジノードに接続されたセンタノードに接続されたインターフェースデバイスと、
    前記インターフェースデバイスに接続されローカル名前空間を提供するプロセッサと
    を有し、
    前記センタノードは、センタ名前空間を提供し、
    前記別のエッジノードが提供するローカル名前空間、センタ名前空間から他の名前空間への反映において、反映元の名前空間と反映先の名前空間との間においてオブジェクトが異なる衝突が発生した場合について、衝突ケースと、その衝突ケースに対応する衝突解決ポリシーと、の組み合わせを複数有するポリシー情報を有し、
    前記衝突が発生した場合に、前記ポリシー情報に基づいて、発生した衝突ケースに対応する衝突解決ポリシーにかかる処理を実行し、
    前記ポリシー情報の各衝突解決ポリシーは、ノード、ディレクトリ、またはファイルの優先順位を含む内容であり、
    前記ポリシー情報の衝突解決ポリシーは、ファイルよりディレクトリを優先するポリシーであり、
    反映元の名前空間のディレクトリと、反映先の名前空間のファイルと、が同名である場合に、前記反映先の名前空間に、前記ディレクトリが格納され、
    前記ファイルが、前記反映先の名前空間に作成された退避用ディレクトリに移動される、
    エッジノード。
  13. 別のエッジノードに接続されたセンタノードに接続されたインターフェースデバイスと、
    前記インターフェースデバイスに接続されローカル名前空間を提供するプロセッサと
    を有し、
    前記センタノードは、センタ名前空間を提供し、
    前記別のエッジノードが提供するローカル名前空間、センタ名前空間から他の名前空間への反映において、反映元の名前空間と反映先の名前空間との間においてオブジェクトが異なる衝突が発生した場合について、衝突ケースと、その衝突ケースに対応する衝突解決ポリシーと、の組み合わせを複数有するポリシー情報を有し、
    前記衝突が発生した場合に、前記ポリシー情報に基づいて、発生した衝突ケースに対応する衝突解決ポリシーにかかる処理を実行し、
    前記衝突解決ポリシーの実行に際し、前記反映先の名前空間における衝突オブジェクトの退避を必要とする場合、その衝突オブジェクトの退避先とする退避用ディレクトリを、前記反映先の名前空間に作成し、作成した退避用ディレクトリに、その衝突オブジェクトを移動し、
    前記反映先の名前空間に、退避用ディレクトリの上位ディレクトリとなる特殊ディレクトリがあり、
    前記特殊ディレクトリの子ディレクトリとして、刻情報の上位部分とユーザIDとのうちの一方を含んだ名前をディレクトリ名として有する第1のディレクトリを作成し、
    前記第1のディレクトリの子ディレクトリとして、前記時刻情報の上位部分とユーザIDとのうちの他方を含んだ名前をディレクトリ名として有する第2のディレクトリを作成し、
    前記衝突オブジェクトは、その名前に前記時刻情報の下位部分を含められ、前記第2のディレクトリに移動される
    エッジノード。
JP2016571623A 2015-01-30 2015-01-30 計算機システム、分散オブジェクト共有方法、エッジノード Expired - Fee Related JP6298903B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/052622 WO2016121083A1 (ja) 2015-01-30 2015-01-30 計算機システム、分散オブジェクト共有方法、エッジノード

Publications (2)

Publication Number Publication Date
JPWO2016121083A1 JPWO2016121083A1 (ja) 2017-08-24
JP6298903B2 true JP6298903B2 (ja) 2018-03-20

Family

ID=56542734

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016571623A Expired - Fee Related JP6298903B2 (ja) 2015-01-30 2015-01-30 計算機システム、分散オブジェクト共有方法、エッジノード

Country Status (3)

Country Link
US (1) US10412163B2 (ja)
JP (1) JP6298903B2 (ja)
WO (1) WO2016121083A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10015249B2 (en) * 2015-11-04 2018-07-03 Dropbox, Inc. Namespace translation
JP7119340B2 (ja) * 2017-11-02 2022-08-17 富士フイルムビジネスイノベーション株式会社 情報処理装置及びプログラム
JP6805196B2 (ja) * 2018-02-23 2020-12-23 日本電信電話株式会社 ポリシー競合解消システム及びポリシー競合解消方法
CN112231296B (zh) * 2020-09-30 2024-05-28 北京金山云网络技术有限公司 一种分布式日志处理方法、装置、系统、设备及介质
US12038947B2 (en) * 2021-10-04 2024-07-16 EMC IP Holding Company LLC Destination file copying
US11599506B1 (en) * 2021-10-28 2023-03-07 EMC IP Holding Company LLC Source namespace and file copying
CN115174603B (zh) * 2022-07-06 2023-08-22 中国联合网络通信集团有限公司 Nas服务系统、实现方法、电子设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7778963B2 (en) * 2005-04-26 2010-08-17 Microsoft Corporation Constraint-based conflict handling for synchronization
US7769727B2 (en) * 2006-05-31 2010-08-03 Microsoft Corporation Resolving update-delete conflicts
US9104715B2 (en) 2010-06-23 2015-08-11 Microsoft Technology Licensing, Llc Shared data collections
CN102404338B (zh) * 2011-12-13 2014-08-20 华为技术有限公司 一种文件同步方法和装置
JP6033949B2 (ja) 2013-02-19 2016-11-30 株式会社日立製作所 情報処理システム
EP2784300B1 (en) 2013-03-28 2016-05-18 Continental Automotive GmbH Valve assembly for a fluid injection valve and fluid injection valve
WO2015183301A1 (en) * 2014-05-30 2015-12-03 Hitachi Data Systems Corporation Metadata favored replication in active topologies

Also Published As

Publication number Publication date
US10412163B2 (en) 2019-09-10
JPWO2016121083A1 (ja) 2017-08-24
WO2016121083A1 (ja) 2016-08-04
US20180109611A1 (en) 2018-04-19

Similar Documents

Publication Publication Date Title
JP6298903B2 (ja) 計算機システム、分散オブジェクト共有方法、エッジノード
US20230315690A1 (en) System and method for content synchronization
US10936547B2 (en) Filesystem replication using a minimal filesystem metadata changelog
JP6430499B2 (ja) Posix互換なファイル・システム、ファイル・リストを生成する方法および記憶デバイス
JP5775177B2 (ja) クローンファイル作成方法と、それを用いたファイルシステム
US9116913B2 (en) File storage system and file cloning method
JP5082310B2 (ja) データ移行装置及びプログラム
US8266176B2 (en) Storage system and file access determination method of the same
US10169165B2 (en) Restoring data
US8060711B2 (en) Storage system
JP2019204278A (ja) 情報処理システム、情報処理装置およびプログラム
WO2016079629A1 (en) Optimizing database deduplication
US20070061540A1 (en) Data storage system using segmentable virtual volumes
US11010082B2 (en) Mechanisms for performing accurate space accounting for volume families
JP2005267600A (ja) 長期データ保護システム及び方法
EP3314469B1 (en) Cloud-native documents integrated with legacy tools
US20160162210A1 (en) Openstack swift interface for tape library (ossitl)
US7549029B2 (en) Methods for creating hierarchical copies
US7730351B2 (en) Per file dirty region logging
JP4937863B2 (ja) 計算機システム、管理計算機及びデータ管理方法
JPWO2016121093A1 (ja) ファイルサーバ装置
US8595272B2 (en) File server system and file management method using management policy and setting file to indicate management competence of storage area
US9286318B2 (en) Edge server and storage control method
US10489353B2 (en) Computer system and data management method
JP2005215940A (ja) ストレージシステム、サーバ装置及び先行コピーデータ生成方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180119

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180226

R150 Certificate of patent or registration of utility model

Ref document number: 6298903

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees