JP2021189520A - 分散ファイルシステム、及び分散ファイル管理方法 - Google Patents
分散ファイルシステム、及び分散ファイル管理方法 Download PDFInfo
- Publication number
- JP2021189520A JP2021189520A JP2020091286A JP2020091286A JP2021189520A JP 2021189520 A JP2021189520 A JP 2021189520A JP 2020091286 A JP2020091286 A JP 2020091286A JP 2020091286 A JP2020091286 A JP 2020091286A JP 2021189520 A JP2021189520 A JP 2021189520A
- Authority
- JP
- Japan
- Prior art keywords
- file
- distributed file
- distributed
- server
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
- G06F16/1844—Management specifically adapted to replicated file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】分散ファイルシステムにおいてノード間通信を低減できるようにする。【解決手段】分散ファイルシステム1において、分散FSサーバ100は、ファイルの本体データを管理して自分散FSサーバ100又はクラウドストレージ300に格納するとともに、本体データの格納先情報を格納し、クライアント600からI/O要求を受信した分散FSサーバ100は、対象のファイルの格納先情報を管理している分散FSサーバ100を特定し、対象のファイルのI/O処理を実行させる転送I/O要求を送信し、特定された分散FSサーバ100は、転送I/O要求の対象のファイルに対応する格納先情報に基づいて、対象のファイルの本体データに対する処理を、本体データに対して実行し、I/O処理の処理結果を要求元の分散FSサーバ100に返送し、要求元の分散FSサーバ100は、返送された処理結果をクライアント600に返送するように構成する。【選択図】図2
Description
本発明は、ファイルを分散して管理する技術に関する。
データ分析などで用いる大量のデータを保存するために、スケールアウト型の分散ファイルシステムが広く用いられている。近年では、クラウドのバックアップや、クラウドでのデータ分析や、拠点間でのデータ共有のために、分散ファイルシステムにおいて、ファイル仮想化機能を提供することが行われている。
ファイル仮想化機能においては、ファイルの更新領域の管理や、スタブ化した領域の管理をするために、ファイルごとの管理情報を管理する必要がある。例えば、特許文献1には、ファイルとは別のデータ構造として管理情報を格納する技術が記載されている。また、特許文献2には、ファイル内に管理情報を格納する技術が記載されている。
例えば、分散ファイルシステムにおいてファイルを仮想化した場合には、ユーザI/Oを受け付けたノード(I/O受付ノード)と、ファイルの管理情報を格納しているノード(格納ノード)とが異なるノードとなる場合がある。この場合においては、I/O受付ノードが、ユーザI/Oに従うI/O処理を実行する際に、格納ノードから管理情報を取得し、管理情報を更新したりするためにノード間通信が多くなり、処理に長時間を有し、ユーザI/Oのレイテンシが悪化してしまう虞がある。
また、ファイルを所定の単位(チャンク)に分割して管理している分散ファイルシステムにおいて、ファイルのデータをクラウドストレージにレプリケーション(転送)する場合には、ファイルの転送を制御するノードが、ファイルを構成する各チャンクを格納しているノードからチャンクのデータを取得してクラウドストレージに転送する処理を行うこととなるが、この場合においても、ノード間通信が多くなり、処理に長時間を有してしまうという問題がある。
本発明は、上記事情に鑑みなされたものであり、その目的は、分散ファイルシステムにおいてノード間通信を低減することのできる技術を提供することにある。
上記目的を達成するため、一観点に係る分散ファイルシステムは、ファイルを単位として分散して管理する複数の分散ファイルサーバと、前記複数の分散ファイルサーバが管理する前記ファイルの本体データの少なくとも一部を格納可能なストレージノードと、を備える分散ファイルシステムであって、前記分散ファイルサーバは、管理対象のファイルの本体データを管理して自分散ファイルサーバ又は前記ストレージノードに格納するとともに、前記本体データの格納先を管理する格納先情報を自分散ファイルサーバに格納し、上位装置からファイルのI/O要求を受信した第1分散ファイルサーバは、前記I/O要求の対象のファイルの格納先情報を管理している第2分散ファイルサーバを特定し、前記I/O要求の対象のファイルのI/O処理を実行させる転送I/O要求を前記分散ファイルサーバに送信し、前記第2分散ファイルサーバは、前記転送I/O要求の対象のファイルに対応する前記格納先情報に基づいて、前記対象のファイルの本体データに対するI/O処理を、前記第2分散ファイルサーバ又は前記ストレージノードに格納された本体データに対して実行し、前記I/O処理の処理結果を前記第1分散ファイルサーバに返送し、前記第1分散ファイルサーバは、前記処理結果を前記上位装置に返送する。
本発明によれば、分散ファイルシステムにおいてノード間通信を低減することができる。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「プログラム」を動作主体として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶部及びインターフェース部のうちの少なくとも1つを用いながら行うため、処理の動作主体が、プロセッサ(或いは、プロセッサを有する計算機又は計算機システム)とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。また、プログラムが実行されることによって実現される処理のうちの少なくとも一部が、ハードウェア回路(例えばASIC(Application Specific Integrated Circuit)又はFPGA(Field−Programmable Gate Array)によって実現されてもよい。
まず、第1実施形態に係る分散ファイルシステムの処理概要について説明する。
図1は、第1実施形態に係る分散ファイルシステムの処理概要を示す図である。
分散ファイルシステム1において、クライアント600からユーザによるI/O要求(ユーザI/O要求:ここでは、リード(READ)要求)が発行されると(図1(1))、分散ファイルストレージ200の中のいずれかの分散FS(ファイルシステム)サーバ100(受付ノード)のファイル共有プログラム110がユーザI/O要求を受信する。ここで、リード要求は、リード対象のファイルを識別する情報(例えば、ユーザファイル名)と、ユーザファイル中のリード対象の領域(対象領域)のオフセット及びデータ長とを含む。
IO Hookプログラム111は、ファイル共有プログラム110がユーザI/O要求を受信したことを認識し、ユーザI/O要求の対象のファイルを格納している分散FSサーバ100(格納ノード)を計算して特定する(図1(2))。
次いで、IO Hookプログラム111は、特定した格納ノードに、ユーザI/O要求を転送する(図1(3))。
格納ノードのIO Hookプログラム111は、送信されたユーザI/O要求を受信すると、分散データ配置プログラム115及びデータ格納プログラム116を介してユーザI/O要求の対象のファイルに対応する管理情報ファイル2100を取得する(図1(4))。
次いで、IO Hookプログラム111は、取得した管理情報ファイル2100を参照して、ユーザI/O要求に対応するファイルの対象領域に対するユーザI/O処理(ここでは、リード処理)を実施する(図1(5))。ここで、格納ノード内にあるデータは、格納ノードのストレージメディアから取得され、格納ノードにないデータについては、ネットワーク30を介してオブジェクトストレージ300から取得される。これにより、IO Hookプログラム111は、ファイルの対象領域のデータを取得することができる。
次いで、IO Hookプログラム111は、ユーザI/O要求の転送元の受付ノードにユーザI/O要求の応答(ここでは、リードした対象領域のデータを含む)を行う。次いで、受付ノードのIO Hookプログラム111は、応答をファイル共有プログラム110に渡す。次いで、ファイル共有プログラム110は、ユーザI/O要求の発行元のクライアント600に応答を返す。
このように、本実施形態に係る分散ファイルシステムによると、ユーザI/O要求を受け付けた受付ノードが、ユーザI/O要求を格納ノードに転送し、I/O処理を実行しないので、ファイルの管理情報ファイル2100を受信したり、ファイルの対象領域を読み出す処理をしたりするために、ノード間通信を行うことがなく、ノード間通信を低減することができ、結果として、ユーザI/O要求に対するレイテンシを向上することができる。
次に、分散ファイルシステム1の構成について説明する。
図2は、第1実施形態に係る分散ファイルシステムの全体構成図である。
分散ファイルシステム1は、複数の分散FSサーバ100と、1以上のオブジェクトストレージ300と、1以上のクライアント600と、1以上の管理端末700とを備える。分散FSサーバ100と、オブジェクトストレージ300と、クライアント600と、管理端末700とは、ネットワーク30を介して接続されている。ネットワーク30は、例えば、有線LAN(Local Area Network)や無線LANや、WAN(Wide Area Network)などである。
分散ファイルシステム1の各構成は、サイト(エッジともいう)10−1,10−2と、データセンタ20(クラウドともいう)とのいずれかに配置されている。
サイト10−1には、複数の分散FSサーバ100と、1以上のクライアント600と、管理端末700とが備えられている。複数の分散FSサーバ100と、1以上のクライアント600と、管理端末700とは、例えば、LANを介して接続されている。複数の分散FSサーバ100は、専用のネットワーク(バックエンドネットワーク)で接続されていてもよい。複数の分散FSサーバ100によって分散ファイルストレージ200が構成されている。分散ファイルストレージ200は、ファイルを分散して管理する。クライアント600は、上位装置の一例であり、例えば、プロセッサ、メモリ等を備えるPC(Personal Computer)で構成される。クライアント600は、種々の処理を実行し、処理に関わるファイルを分散ファイルストレージ200から読み出したり、分散ファイルストレージ200に格納したりする。管理端末700は、分散ファイルストレージ200の設定等を行う。
サイト10−2には、複数の分散FSサーバ100と、1以上のクライアント600とが備えられている。複数の分散FSサーバ100によって分散ファイルストレージ200が構成されている。
データセンタ20には、ストレージノードの一例としてのオブジェクトストレージ300と、クライアント600とが備えられている。オブジェクトストレージ300は、データをオブジェト単位で格納し管理する。オブジェクトストレージ300に代えて、データをファイル形式で格納し管理するファイルストレージとしてもよい。また、データセンタ20に管理端末を備えるようにしてもよい。
次に、分散FSサーバ100の構成について説明する。
図3は、第1実施形態に係る分散FSサーバの構成図である。
分散FSサーバ100は、分散ファイルサーバの一例であり、コントローラ101と、1以上のストレージメディア123とを含む。
ストレージメディア123は、記憶デバイスの一例であり、例えば、HDD(ハードディスクドライブ)やSSD(Solid State Drive)などのデータを記憶可能なデバイスであり、CPU105で実行されるプログラムや、CPU105に利用されるデータや、クライアント600で使用されるファイルやファイルの管理情報等を記憶する。
コントローラ101は、メモリ103と、I/F104と、プロセッサの一例としてのCPU105と、LANインターフェース(I/F)106と、WAN インターフェース(I/F)107とを含む。
メモリ103は、CPU105に実行される各種プログラムや情報を記憶する。メモリ103は、ファイル共有プログラム110と、IO Hookプログラム111と、Data Moverプログラム112と、ファイルシステムプログラム113と、オペレーティングシステム114と、分散データ配置プログラム115と、データ格納プログラム116とを格納する。
ファイル共有プログラム110は、CPU105に実行されることにより、ネットワーク上の複数の装置(例えば、分散FSストレージ100)のストレージメディアを共有する処理を行う。
IO Hookプログラム111は、CPU105に実行されることにより、ファイル共有プログラム110がユーザI/O要求を受け取ったことを検知して、ユーザI/O要求に従って、ユーザI/O要求に対応するファイルを管理している分散FSサーバ100を格納ノードと特定し、ユーザI/O要求を格納ノードに転送する処理を行う。また、IO Hookプログラム111は、ファイル共有プログラム110が受け取ったユーザI/O要求に関するログを記録する。
Data Moverプログラム112は、CPU105に実行されることにより、新規作成または更新されたファイルを非同期的にデータセンタ20のオブジェクトストレージ300に反映する。また、Data Moverプログラム112は、CPU105に実行されることにより、エッジ側の記憶容量がひっ迫した際にアクセス頻度の低いファイルをスタブ化する。ファイルシステムプログラム113は、CPU105に実行されることにより、データをファイルとして管理する処理を行う。
オペレーティングシステム114は、CPU105に実行されることにより、分散FSサーバ100の全体を管理、制御する処理を行う。分散データ配置プログラム115は、CPU105に実行されることにより、ファイルのデータを分散して配置し管理する処理を行う。データ格納プログラム116は、CPU105に実行されることにより、データをストレージメディア123に格納して管理する処理を行う。
I/F104は、ストレージメディア123や、ストレージアレイ102との通信を仲介する。CPU105は、メモリ103に格納されたプログラムを実行することにより各種処理を実行する。LAN I/F106は、LANを介して他の装置との通信を仲介する。WAN I/F107は、WANを介して他の装置との通信を仲介する。
分散FSサーバ100に、ストレージアレイ102を接続してもよい。ストレージアレイ102は、インターフェース(I/F)120と、メモリ121と、CPU122と、1以上のストレージメディア123とを備える。I/F120は、コントローラ101との間の通知を仲介する。メモリ121は、CPU122がストレージメディア123に対する入出力処理(I/O処理)を実行するためのプログラムや、情報を格納する。CPU122は、メモリ121に格納されたプログラムを実行することにより、ストレージメディア123に対するI/O処理を実行する。このストレージアレイ102によると、コントローラ101は、ストレージアレイ102のストレージメディア123に対するI/O処理を実行することができるようになる。
なお、分散FSサーバ100は、ベアメタルサーバ(物理サーバ)で構成されてもよく、VM(仮想計算機)で構成されてもよく、いわゆるコンテナで構成されてもよい。
次に、オブジェクトストレージ300の構成について説明する。
図4は、第1実施形態に係るオブジェクトストレージの構成図である。
オブジェクトストレージ300は、データをオブジェクトとして格納して管理するストレージであり、コントローラ301と、1以上のストレージメディア323とを含む。なお、オブジェクトストレージ300は、データを分散配置してもよい。
ストレージメディア323は、記憶デバイスの一例であり、例えば、HDD(ハードディスクドライブ)やSSD(Solid State Drive)などのデータを記憶可能なデバイスであり、CPU305で実行されるプログラムや、CPU305に利用されるデータや、オブジェクトやオブジェクトの管理情報等を記憶する。
コントローラ301は、メモリ303と、I/F304と、プロセッサの一例としてのCPU305と、WAN インターフェース(I/F)306と、を含む。
メモリ303は、CPU305に実行される各種プログラムや情報を記憶する。メモリ303は、オブジェクト操作プログラム310と、ネームスペース管理プログラム311と、差分反映プログラム312と、オペレーティングシステム314と、を格納する。
オブジェクト操作プログラム310は、CPU305に実行されることにより、ストレージメディア323に格納されているオブジェクトの操作処理を行う。ネームスペース管理プログラム311は、CPU305に実行されることにより、ネームスペースを管理する処理を行う。差分反映プログラム312は、CPU305に実行されることにより、オブジェクトに対して差分を反映させる処理を行う。オペレーティングシステム314は、CPU305に実行されることにより、オブジェクトストレージ300の全体を管理、制御する処理を行う。
I/F304は、ストレージメディア323や、ストレージアレイ302との通信を仲介する。CPU305は、メモリ303に格納されたプログラムを実行することにより各種処理を実行する。WAN I/F306は、WANを介して他の装置との通信を仲介する。
オブジェクトストレージ300に、ストレージアレイ302を接続してもよい。ストレージアレイ302は、インターフェース(I/F)320と、メモリ321と、CPU322と、1以上のストレージメディア323とを備える。I/F320は、コントローラ301との間の通知を仲介する。メモリ321は、CPU322がストレージメディア323に対する入出力処理(I/O処理)を実行するためのプログラムや、情報を格納する。CPU322は、メモリ321に格納されたプログラムを実行することにより、ストレージメディア323に対するI/O処理を実行する。このストレージアレイ302によると、コントローラ301は、ストレージアレイ302のストレージメディア323に対するI/O処理を実行することができるようになる。
次に、分散ファイルストレージ200において、ユーザデータ(本体データ)を格納するファイル(本体ファイル)と、本体ファイルを管理する管理情報を格納するファイル(管理情報ファイル:格納先情報ファイル)との構成について説明する。
図5は、第1実施形態に係る本体ファイル及び管理情報ファイルの構成図である。
本実施形態では、管理情報ファイル2100と、本体ファイル2200とは、同一の分散FSサーバ100におけるストレージメディア123に格納される。
管理情報ファイル2100は、格納先情報の一例であり、本体ファイル管理情報2110と、部分管理情報2120とを含む。
本体ファイル管理情報2110は、本体ファイル2200を管理する情報であり、UUID2111と、ファイル状態2112と、本体ハンドラ2113と、レプリケーション有無2114とのフィールドを含む。
UUID2111には、本体ファイル2200をオブジェクトストレージ300上で一意に識別するための識別子(UUID:Universally Unique Identifier)が格納される。ファイル状態2112には、本体ファイル2200のファイル状態が格納される。ファイル状態としては、本体ファイル2200がオブジェクトストレージ300に反映されていないデータを含む状態であるDirtyと、本体ファイルの全体がスタブ(Stub)化されている状態であるStubと、本体ファイル2200のデータの全体がオブジェクトストレージ300に反映され、且つ分散FSサーバ100に格納されている状態であるCachedとがある。本体ハンドラ2113には、本体ファイル2200の位置が格納される。レプリケーション有無2114には、本体ファイル2200のデータをオブジェクトストレージ300にレプリケーションしたことが有るか否かが格納される。
部分管理情報2120は、本体ファイル2200の1以上の部分ごとの状態を管理するエントリを含む。部分管理情報2120のエントリは、オフセット2121と、長さ2122と、部分状態2123とのフィールドを含む。
オフセット2121には、エントリに対応する部分のオフセット(ファイルの先頭からの位置)が格納される。長さ2122には、エントリに対応する部分の長さ(データ長)が格納される。部分状態2123には、エントリに対応する部分の状態が格納される。部分の状態としては、部分のデータがオブジェクトストレージ300に反映されていない状態であるDirtyと、部分のデータがスタブ(Stub)化されている状態であるStubと、部分のデータがオブジェクトストレージ300に反映され、且つ分散FSサーバ100に格納されている状態であるCachedとがある。
本体ファイル2200は、ユーザデータを構成する1以上の部分を含むファイルであり、各部分は、Dirty2201、Stub2203、Cached2202のいずれかの状態となる。Dirty2201は、その部分のデータがオブジェクトストレージ300に反映されていない状態である。Stub2203は、その部分のデータがスタブ(Stub)化されている状態である。Cached2202は、その部分のデータがオブジェクトストレージ300に反映され、且つ分散FSサーバ100に格納されている状態である。
次に、分散ファイルストレージ200におけるファイル分散の概要を説明する。
図6は、第1実施形態に係るファイル分散の概要を説明する図である。
本実施形態に係る分散ファイルストレージ200においては、ファイルを単位として、ファイルが複数の分散FSサーバ100に分散して配置される。例えば、ファイル3001(FileA)は、分散データ配置プログラム115によって、管理される分散FSサーバ100Aが決定され、データ格納プログラム116によって、その分散FSサーバ100Aにファイル3011として管理される。同様にして、ファイル3002(FileB)は、分散FSサーバ100Bにファイル3012として管理され、ファイル3003(FileC)は、分散FSサーバ100Cにファイル3013として管理される。
次に、分散ファイルシステム1におけるファイル作成処理について説明する。
図7は、第1実施形態に係るファイル作成処理のフローチャートである。
ファイル作成処理は、いずれかの分散FSサーバ100がクライアント600からファイルの作成要求(ファイル作成要求)を受け付けた場合に実行される。
ファイル作成要求を受け付けた分散FSサーバ100(受付ノード)は、ユーザI/O転送処理(図8参照)を実行する(ステップS101)。これにより、ファイル作成要求は、ファイル作成要求に対応するファイルを管理(格納)する担当の分散FSサーバ100(格納ノード)に送信されることとなる。
格納ノードは、ファイル作成要求を受け取ると、ファイル作成処理を実施する(ステップS102)。具体的には、格納ノードは、ファイル作成要求に指定されたファイルを作成する分散FSサーバ100をファイル名に基づいて決定する。本実施形態では、ファイル名に対するハッシュ値を算出し、このハッシュ値に基づいて分散FSサーバ100を決定する。ここで、ファイル作成要求を転送する分散FSサーバ100を決定する際にも同じ処理で決定されているので、この処理を実行している分散FSサーバ100自身に決定されることとなる。次いで、分散FSサーバ100は、ユーザデータを格納する本体ファイルを自身のストレージメディア123に作成する。
次いで、格納ノードは、本体ファイルに対応する管理情報を格納するファイル(管理情報ファイル)を作成する(ステップS103)。具体的には、格納ノードは、管理情報ファイル2100を作成する分散FSサーバ100を管理情報ファイル名に基づいて決定する。本実施形態では、管理情報ファイル2100は、本体ファイル2200のファイル名を含む管理情報ファイル名に設定されており、管理情報ファイル2200に対しては、管理情報ファイル名の本体ファイル2200のファイル名を用いてハッシュ値を算出し、このハッシュ値に基づいて分散FSサーバ100を決定する。例えば、管理情報ファイル名を、「.“本体ファイルのファイル名”.mnr」とし、この管理情報ファイル名から、本体ファイルのファイル名を取り出すようにしてもよい。この結果、本体ファイル2200を格納する分散FSサーバ100と同一の分散FSサーバ100が、管理情報ファイル2100を作成する分散FSサーバ100に決定される。すなわち、この処理を実行している分散FSサーバ100自身に決定されることとなる。次いで、分散FSサーバ100は、管理情報ファイル2100を自身のストレージメディア123に作成する。
次いで、格納ノードは、受付ノードに対してファイル作成処理の完了を応答する(ステップS104)。この後、受付ノードは、ファイル作成要求の応答を要求元のクライアント600に送信することとなる。
次に、受付ノードによるユーザI/O転送処理(図7のステップS101、図9のステップS401、図10のステップS501)について説明する。
図8は、第1実施形態に係るユーザI/O転送処理のフローチャートである。
受付ノードは、ユーザI/O要求(図7のステップS101では、ファイル作成要求)中の対象ファイルのアクセス先(格納先)の分散FSサーバ100(格納ノード)を計算して特定する(ステップS201)。本実施形態では、対象ファイルのファイル名のハッシュ値に基づいて、格納ノードを特定する。
次いで、受付ノードは、ユーザI/O要求を格納ノードに転送し(ステップS202)、処理を終了する。ここで、本実施形態では、ユーザI/O要求は、格納ノードに、受信したユーザI/O要求に含まれるI/O処理を実行させる要求である。
次に、分散ファイルシステム1におけるファイルライト処理について説明する。
図9は、第1実施形態に係るファイルライト処理のフローチャートである。
ファイルライト処理は、いずれかの分散FSサーバ100がクライアント600からファイルのライト要求を受け付けた場合に実行される。
ライト要求を受け付けた分散FSサーバ100(受付ノード:第1ストレージノードの一例)は、ユーザI/O転送処理(図8参照)を実行する(ステップS401)。これにより、ライト要求は、ライト要求に対応するファイルを格納する分散FSサーバ100(格納ノード:第2ストレージノードの一例)に送信されることとなる。
格納ノードは、ライト要求を受け取ると、ライト処理を実施する(ステップS402)。具体的には、格納ノードは、ライト要求に指定されたファイルを格納する分散FSサーバ100をファイル名に基づいて決定する。本実施形態では、ファイル名に対するハッシュ値を算出し、このハッシュ値に基づいて分散FSサーバ100を決定する。ここで、ライト要求を転送する分散FSサーバ100を決定する際にも同じ処理で決定されているので、この処理を実行している分散FSサーバ100自身に決定されることとなる。次いで、分散FSサーバ100は、ライト要求の対象のユーザデータを本体ファイルに格納する。
次いで、格納ノードは、本体ファイルに対応する管理情報を格納するファイル(管理情報ファイル2100)を読込む(ステップS403)。ここで、格納ノードは、管理情報ファイル2100を格納している分散FSサーバ100を本体ファイルのファイル名に対応する管理情報ファイル名に基づいて特定する。本実施形態では、管理情報ファイルは、本体ファイル2100のファイル名を含む管理情報ファイル名に設定されており、管理情報ファイル2100に対しては、管理情報ファイル名の本体ファイルのファイル名を用いてハッシュ値を算出し、このハッシュ値に基づいて分散FSサーバ100を特定する。この結果、本体ファイルを格納する分散FSサーバ100と同一の分散FSサーバ100が、管理情報ファイル2100を格納している分散FSサーバ100として特定される。すなわち、この処理を実行している分散FSサーバ100自身が管理情報ファイル2100を格納している分散FSサーバ100として特定されることとなる。次いで、格納ノードは、特定した分散FSサーバ100すなわち、自身のストレージメディア123から管理情報ファイル2100を読込む。
次いで、格納ノードは、管理情報ファイル2100の更新が必要であるか否かを判定する(ステップS404)。具体的には、格納ノードは、ライト対象のファイルの部分(領域)の状態がDirtyであるか否かを判定し、ライト対象のファイルの部分の状態がDirtyである場合には、更新が必要ないと判定し、Dirty以外である場合には、更新が必要であると判定する。
この結果、管理情報ファイル2100の更新が必要ないと判定した場合(ステップS404:No)には、格納ノードは処理をステップS406に進める。一方、管理情報ファイル2100の更新が必要であると判定した場合(ステップS404:Yes)には、格納ノードは、ライト対象のファイルの部分のオフセットに対応する部分管理情報2120のエントリにおける部分状態2123をDirtyに更新するとともに、本体ファイル管理情報2110のファイル状態2112をDirtyに設定し(ステップS405)、処理をステップS406に進める。
ステップS406では、格納ノードは、ファイルのライトが完了した旨の応答(完了応答)を受付ノードに送信する。次いで、格納ノードは、処理を終了する。なお、受付ノードは、完了応答を受信すると、ライト要求を行ったクライアント600に対して、ライト要求に対する応答を返送する。
上記したファイルライト処理によると、管理情報ファイル2100読込み時や、更新時において、他の分散FSサーバ100との間の通信(ノード間通信)が発生しないで済み、ライト要求に関わる処理効率が向上する。これにより、クライアント600のライト要求に対するレイテンシが向上する。
次に、分散ファイルシステム1におけるファイルリード処理について説明する。
図10は、第1実施形態に係るファイルリード処理のフローチャートである。
ファイルリード処理は、いずれかの分散FSサーバ100がクライアント600からファイルのリード要求(I/O要求)を受け付けた場合に実行される。
リード要求を受け付けた分散FSサーバ100(受付ノード)は、ユーザI/O転送処理(図8参照)を実行する(ステップS501)。これにより、リード要求は、リード要求に対応するファイルを格納する分散FSサーバ100(格納ノード)に送信されることとなる。
格納ノードは、リード要求を受け取ると、リード要求の対象の本体ファイルに対応する管理情報ファイル2100を読込む(ステップS502)。具体的には、まず、格納ノードは、管理情報ファイル2100を格納している分散FSサーバ100を本体ファイルのファイル名に対応する管理情報ファイル名に基づいて特定する。本実施形態では、管理情報ファイル2100は、本体ファイル2100のファイル名を含む管理情報ファイル名に設定されており、管理情報ファイル2100に対しては、管理情報ファイル名の本体ファイルのファイル名を用いてハッシュ値を算出し、このハッシュ値に基づいて分散FSサーバ100を特定する。ここで、リード要求を転送する分散FSサーバ100を決定する際にも同じ処理で決定されているので、この処理を実行している分散FSサーバ100自身に決定されることとなる。次いで、格納ノードは、リード要求の対象のファイルの管理情報ファイル2100を自身のストレージメディア123から読込む。
次いで、格納ノードは、管理情報ファイル2100に基づいて、リード要求の対象の箇所が、スタブ(Stub)状態の部分を含むか否かを判定する(ステップS503)。
この結果、リード要求の対象の箇所がスタブ(Stub)状態の部分を含まないと判定した場合(ステップS503:No)には、すべてのデータが自ノードのストレージメディア123に格納されていることを示すので、格納ノードは、処理をステップS507に進める。
一方、リード要求の対象の箇所がスタブ(Stub)状態の部分を含むと判定した場合(ステップS503:Yes)には、スタブ状態の部分のデータをオブジェクトストレージ300から取得する必要があるので、格納ノードは、スタブ状態の部分のデータをオブジェクトストレージ300に要求する(ステップS504)。
スタブ状態の部分のデータの要求を受け取ったオブジェクトストレージ300は、ストレージメディア323から要求されたデータを読み出し、読み出したデータを格納ノードに転送する(ステップS505)。
格納ノードは、オブジェクトストレージ300からスタブ状態の部分のデータを受信すると、管理情報ファイル2100内の受信した部分に対応するエントリの部分状態2123の値をCachedに更新し(ステップS506)、処理をステップS507に進める。
ステップS507では、格納ノードは、リード要求の対象の本体ファイル2200から対応するデータをリードするリード処理を実行し、処理をステップS508に進める。
ステップS508では、格納ノードは、ファイルのリードが完了した旨の応答(完了応答)を受付ノードに送信する。次いで、格納ノードは、処理を終了する。なお、受付ノードは、完了応答を受信すると、リード要求を行ったクライアント600に対して、リード要求に対する応答を返送する。
上記したファイルリード処理によると、格納ノードにおいて、管理情報ファイル2100の読込み時や、更新時において、他の分散FSサーバ100との間の通信(ノード間通信)が発生しないで済み、また、本体ファイル2200のデータを読込む際に、他の分散FSサーバ100との間の通信が発生しないで済む。これにより、リード処理の効率が向上し、クライアント600のリード要求に対するレイテンシが向上する。
次に、第2実施形態に係る分散ファイルシステムについて説明する。ここで、第2実施形態に係る分散ファイルシステムは、第1実施形態に係る分散ファイルシステムと共通する部分が多いので、便宜的に第1実施形態に係る分散ファイルシステムにおける各構成と同一の符号を用い、異なる点を中心に説明する。
第2実施形態に係る分散ファイルシステムは、ユーザデータを管理する本体ファイルを所定の単位(チャンク単位)に分散させて管理する。
まず、第2実施形態に係る分散ファイルシステムの処理概要について説明する。
図11は、第2実施形態に係る分散ファイルシステムの処理概要を示す図である。
分散ファイルシステム1Aにおいて、分散ファイルストレージ200の或る本体ファイル(この例では、FileA)をオブジェクトストレージ300に初めて移動(レプリケーション)する際には、或る分散FSサーバ100のData Moverプログラム112は、レプリケーション対象のファイルを格納している1以上の分散FSサーバ100(格納ノード)を計算して特定する(図11(1))。
次いで、Data Moverプログラム112は、レプリケーション対象のファイル(対象ファイル)のそれぞれのチャンクを格納している1以上の分散FSサーバ100のそれぞれに、対象ファイルのチャンクをオブジェクトストレージ300に転送する要求(転送要求)を送信する(図11(2))。
転送要求を受け取ったそれぞれの分散FSサーバ100では、Data Moverプログラム112は、転送要求の対象のファイルのチャンクのデータを自身の属する分散FSサーバ100のストレージメディア123から読込み(図11(3))、読込んだデータをデータセンタ20のオブジェクトストレージ300に転送する(図11(4))。なお、読込んだデータを転送した場合には、Data Moverプログラム112は、転送要求の要求元の分散FSサーバ100に対して転送を行った旨の応答を返す。
転送要求の要求元の分散FSサーバ100は、要求を行ったすべての分散FSサーバ100からの転送を行ったとの応答を受け取った場合に、データセンタ20のオブジェクトストレージ300に対して、本体ファイルに対応する全てのチャンクのデータをマージ(結合)させる指示(マージ指示)を送信する(図11(5))。
マージ指示を受け取ったオブジェクトストレージ300は、マージ指示の対象の本体ファイルの全てのチャンクのデータをマージする(図11(6))。
次に、分散ファイルストレージ200におけるファイル分散の概要を説明する。
図12は、第2実施形態に係るファイル分散の概要を説明する図である。
本実施形態に係る分散ファイルストレージ200においては、ファイルは、チャンクを単位として複数の分散FSサーバ100に分散して配置される。例えば、ファイル4001(FileA)については、分散データ配置プログラム115によって、チャンク4011(チャンクA0)を管理する分散FSサーバ100Aと、チャンク4012(チャンクA1)を管理する分散FSサーバ100Cが決定され、それぞれの分散FSサーバ100A,Cのデータ格納プログラム116によって、チャンクA0,A1は、それぞれの分散FSサーバ100A、Cに格納される。同様にして、ファイル4002(FileB)については、チャンク4021(チャンクB0),4022(チャンクB1)は、それぞれ分散FSサーバ100C,Bに格納され、ファイル4003(FileC)については、チャンク4031(チャンクC0),4032(チャンクC1)は、それぞれ分散FSサーバ100A,Bに格納される。
本実施形態においては、分散データ配置プログラム115は、管理情報ファイル2100における本体ファイル管理情報2110については、各チャンクを格納する全ての分散FSサーバ100に格納させてもよく、或いは、分散ファイルストレージ200内の予め決められた所定の領域、例えば、ファイルシステムのメタデータを格納するプールの領域に格納させてもよい。一方、管理情報ファイル2100の部分管理情報2120については、各チャンクに対応するエントリの情報を、各チャンクを格納する分散FSサーバ100に格納するようにしてもよい。なお、各チャンクに対応するエントリの情報を、チャンクの拡張属性として格納するようにしてもよい。
次に、ファイルレプリケーション処理(初回)について説明する。
図13は、第2実施形態に係るファイルレプリケーション処理(初回)のフローチャートである。
ファイルレプリケーション処理(初回)は、所定の分散FSサーバ100のIO Hookプログラム111が、所定の時点において、ファイル共有プログラム110によって受信されたユーザI/O要求のログを参照して、書込みがあったファイルを特定し、このファイルに対応する管理情報ファイル2100の本体ファイル管理情報2110のレプリケーション有無2114の値が「無」であること、すなわち、対応する本体ファイルがオブジェクトストレージ300にまだリプリケーションされていないことを検出した場合に実行される処理である。
ファイル共有プログラム110によって受信されたユーザI/O要求のログを参照して、書込みがあったファイルを特定し、このファイルに対応する管理情報ファイル2100の本体ファイル管理情報2110のレプリケーション有無2114の値が「無」であることが検出した分散FSサーバ100(検出ノード:第1ストレージノードの一例)は、特定したファイル(この処理の説明において、対象ファイルという)の各チャンクのデータを格納している分散FSサーバ100(格納ノード:第2ストレージノードの一例)のリスト(格納ノードリスト)を取得する(ステップS701)。ここで、格納ノードリストは、例えば、各ファイルを構成する各チャンクと、各チャンクを格納している分散FSサーバ100(ノード)の識別情報とを対応付けたファイル配置情報から取得することができる。なお、ファイル配置情報は、各分散FSサーバ100に格納されていてもよく、予め決められた記憶領域に格納されていてもよい。また、ファイル配置情報は、ファイル名とサイズとから計算によって求められてもよい。
次いで、検出ノードは、格納ノードリストの各格納ノードに対して、各格納ノードが格納している対象ファイルのチャンクのデータをオブジェクトストレージ300に転送する依頼(転送依頼)を送信する(ステップS702)。
転送依頼を受け取った各格納ノードは、転送依頼で指定されている対象ファイルのチャンクのデータを、自身のストレージメディア123から取得する(ステップS703)。次いで、格納ノードは、取得した対象ファイルのチャンクのデータをオブジェクトストレージ300に送信する(ステップS706)。
オブジェクトストレージ300は、格納ノードから送信された対象ファイルのチャンクのデータを、オブジェクトとして、ストレージメディア323に格納し(ステップS707)、格納が完了した旨の通知(完了通知)を格納ノードに送信する(ステップS708)。ここで、完了通知には、例えば、チャンクのデータに対応するオブジェクトの識別情報(UUID)が含まれている。
格納ノードは、オブジェクトストレージ300から完了通知を受け取ると、転送依頼の依頼元の検出ノードに転送結果を返送する(ステップS709)。転送結果には、例えば、対象のチャンクの識別情報と、そのチャンクが格納されたオブジェクトの識別情報とが含まれている。
検出ノードでは、対象ファイルのすべてのチャンクの転送依頼の転送結果を受け取ると、転送結果に含まれている各チャンクに対応するオブジェクトを結合させる結合要求をオブジェクトストレージ300に送信する(ステップS710)。この結合要求には、例えば、結合させるオブジェクトの識別情報が含まれている。
オブジェクトストレージ300は、結合要求に対応するオブジェクトを結合したオブジェクト、すなわち、本体ファイルのデータに対応するオブジェクトを生成して、ストレージメディア323に格納する(ステップS711)。次いで、オブジェクトストレージ300は、結合が完了したことを示す結合完了を検出ノードに返す(ステップS712)。この結合完了には、結合して得られたオブジェクトの識別情報が含まれている。
検出ノードでは、結合完了を受領して、結合完了に含まれているオブジェクトの識別情報を本体ファイルと対応付け(ステップS713)、処理を終了する。
上記したファイルレプリケーション処理(初回)によると、検出ノードと、格納ノードとの間でチャンクのデータの通信が発生しないで済み、処理効率が向上する。
次に、ファイルレプリケーション処理(差分反映)について説明する。
図14は、第2実施形態に係るファイルレプリケーション処理(差分反映)のフローチャートである。
ファイルレプリケーション処理(差分反映)は、所定の分散FSサーバ100のIO Hookプログラム111が、所定の時点において、ファイル共有プログラム110によって受信されたユーザI/O要求のログを参照して、書込みがあったファイルを特定し、このファイルに対応する管理情報ファイル2100の本体ファイル管理情報2110のレプリケーション有無2114の値が「有」であること、すなわち、対応する本体ファイルがオブジェクトストレージ300にリプリケーションされたことがあることを検出した場合に実行される処理である。
ファイル共有プログラム110によって受信されたユーザI/O要求のログを参照して、書込みがあったファイルを特定し、このファイルに対応する管理情報ファイル2100の本体ファイル管理情報2110のレプリケーション有無2114の値が「有」であることを検出した分散FSサーバ100(検出ノード)は、特定したファイル(この処理の説明において、対象ファイルという)の各チャンクのデータを格納している分散FSサーバ100(格納ノード)のリスト(格納ノードリスト)を取得する(ステップS801)。ここで、格納ノードリストは、例えば、各ファイルを構成する各チャンクと、各チャンクを格納している分散FSサーバ(ノード)の識別情報とを対応付けたファイル配置情報から取得することができる。
次いで、検出ノードは、格納ノードリストの各格納ノードに対して、各格納ノードが格納している対象ファイルについて更新されたチャンクのデータをオブジェクトストレージ300に転送する依頼(転送依頼)を送信する(ステップS802)。
各格納ノードは、転送依頼を受け取ると、転送依頼の対象ファイルに対応する、自身が格納しているチャンクの部分管理情報2200を読込む(ステップS803)。ここで、格納ノードは、自身が格納しているチャンクの部分管理情報2200を自身のストレージメディア123に格納しているので、そのストレージメディア123からチャンクの部分管理情報2200を読込む。
格納ノードは、取得した部分管理情報2200を参照し、転送依頼のあったファイルのチャンクに対応するエントリの中から、部分状態2123がDirtyであるエントリを転送部分リストとして取得する(ステップS804)。
次いで、格納ノードは、転送部分リストの各エントリに対応するチャンクのデータをストレージメディア123から取得し(ステップS805)、取得したチャンクのデータをオブジェクトストレージ300へ転送する(ステップS806)。
オブジェクトストレージ300は、格納ノードから送信された対象ファイルのチャンクのデータを、オブジェクトとして、ストレージメディア323に格納し(ステップS807)、格納が完了した旨の通知(完了通知)を格納ノードに送信する(ステップS808)。ここで、完了通知には、例えば、チャンクのデータに対応するオブジェクトの識別情報(UUID)が含まれている。
格納ノードは、オブジェクトストレージ300から完了通知を受け取ると、転送依頼の依頼元の検出ノードに、転送結果を返送する(ステップS809)。転送結果には、例えば、対象のチャンクのオフセットと、そのチャンクが格納されたオブジェクトの識別情報とが含まれている。
検出ノードでは、転送依頼を出した格納ノードからの転送結果を受け取ると、転送結果に含まれているチャンクに対応するオブジェクトを本体ファイルのオブジェクトに反映させる差分反映要求をオブジェクトストレージ300に送信する(ステップS810)。ここで、差分反映要求には、例えば、チャンクの本体ファイルでのオフセットと、チャンクのオブジェクトの識別情報が含まれている。
オブジェクトストレージ300は、差分反映要求を受け取ると、差分反映要求に含まれているチャンクのオブジェクトのデータを、差分反映要求のオフセットに従って本体ファイルのオブジェクトに反映する(ステップS811)。次いで、オブジェクトストレージ300は、差分反映が完了したことを示す反映完了を検出ノードに返す(ステップS812)。
検出ノードでは、反映完了を受領し(ステップS813)、処理を終了する。
上記したファイルレプリケーション処理(差分反映)によると、検出ノードと、格納ノードとの間でチャンクのデータの通信が発生しないで済み、処理効率が向上する。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施形態では、ユーザデータと、ユーザデータを管理する管理情報とをそれぞれ別ファイルとした例を示していたが、本発明はこれに限られず、例えば、ユーザデータを格納するファイルの一部の領域(例えば拡張領域)に、管理情報を含ませるようにしてもよい。
また、上記実施形態において、CPUが行っていた処理の一部又は全部を、ハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
1,1A…分散ファイルシステム、30…ネットワーク、100…分散FSサーバ、101…コントローラ、103…メモリ、105…CPU、123…ストレージメディア、200…分散ファイルストレージ、300…オブジェクトストレージ、600…クライアント
Claims (10)
- ファイルを単位として分散して管理する複数の分散ファイルサーバと、前記複数の分散ファイルサーバが管理するファイルの本体データの少なくとも一部を格納可能なストレージノードと、を備える分散ファイルシステムであって、
前記分散ファイルサーバは、
管理対象のファイルの本体データを管理して自分散ファイルサーバ又は前記ストレージノードに格納するとともに、前記本体データの格納先を管理する格納先情報を自分散ファイルサーバに格納し、
上位装置からファイルのI/O要求を受信した第1分散ファイルサーバは、
前記I/O要求の対象のファイルの格納先情報を管理している第2分散ファイルサーバを特定し、前記I/O要求の対象のファイルのI/O処理を実行させる転送I/O要求を前記第2分散ファイルサーバに送信し、
前記第2分散ファイルサーバは、
前記転送I/O要求の対象のファイルに対応する前記格納先情報に基づいて、前記対象のファイルの本体データに対するI/O処理を、前記第2分散ファイルサーバ又は前記ストレージノードに格納された本体データに対して実行し、
前記I/O処理の処理結果を前記第1分散ファイルサーバに返送し、
前記第1分散ファイルサーバは、前記処理結果を前記上位装置に返送する
分散ファイルシステム。 - 前記格納先情報は、前記本体データのファイル内に格納されている
請求項1記載の分散ファイルシステム。 - 前記格納先情報は、前記本体データのファイルとは異なる格納先情報ファイルに格納されている
請求項1に記載の分散ファイルシステム。 - 前記格納先情報ファイルのファイル名である格納先情報ファイル名は、前記本体データのファイルのファイル名を含んでおり、
前記第1分散ファイルサーバは、前記本体データのファイルのファイル名に基づいたハッシュ値に従って、前記本体データのファイルを管理する分散ファイルサーバを特定し、前記格納先情報ファイルについては、前記格納先情報ファイル名に含まれる前記本体データのファイル名に基づいたハッシュ値に従って管理する分散ファイルサーバを決定する
請求項3に記載の分散ファイルシステム。 - ファイルを分割したチャンクを単位として分散して管理する複数の分散ファイルサーバと、前記複数の分散ファイルサーバが管理するファイルの本体データの少なくとも一部を格納可能なストレージノードと、を備える分散ファイルシステムであって、
ファイルのチャンクを管理する分散ファイルサーバを示す配置情報を所定の記憶装置に記憶し、
前記分散ファイルサーバは、
管理対象のファイルのチャンクの本体データを管理して自分散ファイルサーバ又は前記ストレージノードに格納するとともに、前記本体データの格納先を管理する格納先情報を自分散ファイルサーバに格納し、
所定のファイルを前記ストレージノードに転送する場合に、第1分散ファイルサーバは、
前記配置情報に基づいて、転送対象のファイルの各チャンクの格納先情報を管理している1以上の第2分散ファイルサーバを特定し、前記転送対象のファイルのチャンクの前記ストレージノードへの転送処理を前記第2分散ファイルサーバに実行させる転送要求を1以上の前記第2分散ファイルサーバに送信し、
1以上の前記第2分散ファイルサーバは、
前記転送要求の対象のファイルのチャンクに対応する前記格納先情報に基づいて、前記対象のファイルのチャンクの本体データを、前記第2分散ファイルサーバから読み出し、
読み出したチャンクの前記本体データを前記ストレージノードに転送し、
前記第1分散ファイルサーバは、1以上の前記第2分散ファイルサーバから前記ストレージノードに転送された各チャンクの本体データを結合させる結合要求を前記ストレージノードに送信し、
前記ストレージノードは、
結合要求を受信した場合に、1以上の前記第2分散ファイルサーバから送信された各チャンクの本体データを結合させたファイルを自身の記憶装置に格納する
分散ファイルシステム。 - 前記第1分散ファイルサーバは、
所定のファイルの差分を前記ストレージノードに転送する場合に、前記配置情報に基づいて、前記転送対象のファイルの各チャンクを管理している1以上の第2分散ファイルサーバを特定し、前記転送対象のファイルのチャンクの差分の前記ストレージノードへの転送処理を実行させる転送要求を1以上の前記第2分散ファイルサーバに送信し、
1以上の前記第2分散ファイルサーバは、
前記転送要求の対象のファイルのチャンクの差分に対応する前記格納先情報に基づいて、前記対象のファイルのチャンクの差分の本体データを、前記第2分散ファイルサーバから読み出し、
読み出したチャンクの差分の前記本体データを前記ストレージノードに転送し、
前記第1分散ファイルサーバは、1以上の前記第2分散ファイルサーバから前記ストレージノードに転送された各チャンクの差分の本体データを反映させる反映要求を前記ストレージノードに送信し、
前記ストレージノードは、
反映要求を受信した場合に、1以上の前記第2分散ファイルサーバから送信された各チャンクの差分を前記ファイルに反映させる
請求項5に記載の分散ファイルシステム。 - 前記格納先情報は、前記チャンクの本体データのファイル内に格納されている
請求項5に記載の分散ファイルシステム。 - 前記所定の記憶装置は、前記ファイルのチャンクを管理する各分散ファイルサーバのそれぞれの記憶装置、又は前記ファイルを管理するファイルシステムのメタデータを管理する記憶装置である
請求項5に記載の分散ファイルシステム。 - ファイルを単位として分散して管理する複数の分散ファイルサーバと、前記複数の分散ファイルサーバが管理するファイルの本体データの少なくとも一部を格納可能なストレージノードと、を備える分散ファイルシステムによる分散ファイル管理方法であって、
前記分散ファイルサーバは、
管理対象のファイルの本体データを管理して自分散ファイルサーバ又はファイルサーバに格納するとともに、前記本体データの格納先を管理する格納先情報を自分散ファイルサーバに格納しており、
上位装置からファイルのI/O要求を受信した第1分散ファイルサーバは、
前記I/O要求の対象のファイルの格納先情報を管理している第2分散ファイルサーバを特定し、前記I/O要求の対象のファイルのI/O処理を実行させる転送I/O要求を前記第2分散ファイルサーバに送信し、
転送I/O要求を受信した前記第2分散ファイルサーバは、
前記転送I/O要求の対象のファイルに対応する前記格納先情報に基づいて、前記対象のファイルの本体データに対するI/O処理を、前記第2分散ファイルサーバ又は前記ストレージノードに格納された本体データに対して実行し、
前記I/O処理の処理結果を前記第1分散ファイルサーバに返送し、
前記第1分散ファイルサーバは、返送された前記処理結果を前記上位装置に返送する
分散ファイル管理方法。 - ファイルを分割したチャンクを単位として分散して管理する複数の分散ファイルサーバと、前記複数の分散ファイルサーバが管理するファイルの本体データの少なくとも一部を格納可能なストレージノードと、を備える分散ファイルシステムによる分散ファイル管理方法であって、
前記分散ファイルシステムは、
ファイルのチャンクを管理する分散ファイルサーバを示す配置情報を所定の記憶装置に記憶し、
前記分散ファイルサーバは、
管理対象のファイルのチャンクの本体データを管理して自分散ファイルサーバ又は前記ストレージノードに格納するとともに、前記本体データの格納先を管理する格納先情報を自分散ファイルサーバに格納しており、
所定のファイルを前記ストレージノードに転送する場合に、第1分散ファイルサーバは、
前記配置情報に基づいて、転送対象のファイルの各チャンクを管理している1以上の第2分散ファイルサーバを特定し、前記転送対象のファイルのチャンクの前記ストレージノードへの転送処理を前記第2分散ファイルサーバに実行させる転送要求を1以上の前記第2分散ファイルサーバに送信し、
1以上の前記第2分散ファイルサーバは、
前記転送要求の対象のファイルのチャンクに対応する前記格納先情報に基づいて、前記対象のファイルのチャンクの本体データを、前記第2分散ファイルサーバから読み出し、
読み出したチャンクの前記本体データを前記ストレージノードに転送し、
前記第1分散ファイルサーバは、1以上の前記第2分散ファイルサーバから前記ストレージノードに転送された各チャンクの本体データを結合させる結合要求を前記ストレージノードに送信し、
前記ストレージノードは、
結合要求を受信した場合に、1以上の前記第2分散ファイルサーバから送信された各チャンクの本体データを結合させたファイルを自身の記憶装置に格納する
分散ファイル管理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020091286A JP2021189520A (ja) | 2020-05-26 | 2020-05-26 | 分散ファイルシステム、及び分散ファイル管理方法 |
US17/008,865 US20210374107A1 (en) | 2020-05-26 | 2020-09-01 | Distributed file system and distributed file managing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020091286A JP2021189520A (ja) | 2020-05-26 | 2020-05-26 | 分散ファイルシステム、及び分散ファイル管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021189520A true JP2021189520A (ja) | 2021-12-13 |
Family
ID=78706324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020091286A Pending JP2021189520A (ja) | 2020-05-26 | 2020-05-26 | 分散ファイルシステム、及び分散ファイル管理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210374107A1 (ja) |
JP (1) | JP2021189520A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022189454A (ja) * | 2021-06-11 | 2022-12-22 | 株式会社日立製作所 | ファイルストレージシステム、及び管理情報ファイル回復方法 |
JP2023005618A (ja) * | 2021-06-29 | 2023-01-18 | ブラザー工業株式会社 | 管理プログラム、管理方法および管理システム |
WO2023149968A1 (en) | 2022-02-03 | 2023-08-10 | Analytics Hq, Llc | Asynchronous distributed data transfer system |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10534753B2 (en) * | 2014-02-11 | 2020-01-14 | Red Hat, Inc. | Caseless file lookup in a distributed file system |
-
2020
- 2020-05-26 JP JP2020091286A patent/JP2021189520A/ja active Pending
- 2020-09-01 US US17/008,865 patent/US20210374107A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20210374107A1 (en) | 2021-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10853339B2 (en) | Peer to peer ownership negotiation | |
US8468180B1 (en) | Porting storage metadata | |
US10031703B1 (en) | Extent-based tiering for virtual storage using full LUNs | |
EP3249889B1 (en) | Workload migration across a hybrid network | |
US9003149B2 (en) | Transparent file system migration to a new physical location | |
US8600943B1 (en) | Porting replication relationships | |
JP2021189520A (ja) | 分散ファイルシステム、及び分散ファイル管理方法 | |
US8271559B2 (en) | Storage system and method of controlling same | |
JP6600698B2 (ja) | 計算機システム | |
US20130290248A1 (en) | File storage system and file cloning method | |
CN104239575A (zh) | 一种虚拟机镜像文件存储、分发方法及装置 | |
US11644978B2 (en) | Read and write load sharing in a storage array via partitioned ownership of data blocks | |
JP2004295465A (ja) | 計算機システム | |
US20130325810A1 (en) | Creation and expiration of backup objects in block-level incremental-forever backup systems | |
JP5640151B2 (ja) | 計算機及び計算機によるデータ管理方法 | |
US10824513B1 (en) | Processing input/output operations while snapshot and extent copy operations are in progress for a logical storage volume | |
US10936243B2 (en) | Storage system and data transfer control method | |
US20240061603A1 (en) | Co-located Journaling and Data Storage for Write Requests | |
US11663166B2 (en) | Post-processing global deduplication algorithm for scaled-out deduplication file system | |
WO2016013075A1 (ja) | ストレージ、計算機およびその制御方法 | |
US11636073B2 (en) | File storage system and file management method by file storage system | |
JP2022125253A (ja) | ファイルストレージシステム及びファイルストレージシステムの管理方法 | |
US20110131181A1 (en) | Information processing device and computer readable storage medium storing program | |
US10691550B2 (en) | Storage control apparatus and storage control method | |
JP2008186141A (ja) | データ管理方法、データ管理プログラム、データ管理システム、および、構成管理装置 |