JP6021680B2 - 自律分散重複排除ファイルシステム、記憶装置ユニット及びデータアクセス方法 - Google Patents

自律分散重複排除ファイルシステム、記憶装置ユニット及びデータアクセス方法 Download PDF

Info

Publication number
JP6021680B2
JP6021680B2 JP2013029852A JP2013029852A JP6021680B2 JP 6021680 B2 JP6021680 B2 JP 6021680B2 JP 2013029852 A JP2013029852 A JP 2013029852A JP 2013029852 A JP2013029852 A JP 2013029852A JP 6021680 B2 JP6021680 B2 JP 6021680B2
Authority
JP
Japan
Prior art keywords
data
node
storage device
storage
device unit
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
JP2013029852A
Other languages
English (en)
Other versions
JP2014160311A (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 JP2013029852A priority Critical patent/JP6021680B2/ja
Priority to US14/184,128 priority patent/US20140237202A1/en
Publication of JP2014160311A publication Critical patent/JP2014160311A/ja
Application granted granted Critical
Publication of JP6021680B2 publication Critical patent/JP6021680B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

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

Description

本発明は、自律分散型ファイルシステムにおけるファイルのデータ列の重複排除のための装置及び方法に係り、特に、複数の異種ネットワークに接続可能な記憶装置の複製データを制御するのに適用して有効な技術に関するものである。
コンピュータシステムで取り扱われるデータ量が急激に増加するのに伴い、膨大なデータを効率良く利用して管理するために、複数のディスクアレイ装置(以下、記憶装置システムと称する)とサーバとを専用のネットワーク(Storage Area Network、以下SANと記す)で接続し、記憶装置システムへの高速かつ大量なアクセスを実現する技術が開発されている。記憶装置システムとサーバとをSANで接続して高速なデータ転送を実現するためには、ファイバチャネルプロトコルに従った通信機器を用いてネットワークを構築するのが一般的である。
一般に、ファイルの内容が同じであっても、ファイル名が異なっていれば、記憶装置に記憶される。この場合、実体が全く同じ内容のファイル(つまり、内容が完全に重複したファイル)が記憶装置に記憶されるので、その分、無駄に記憶容量が消費されることになる。そこで、このような内容の重複したファイルの保存を排除する技術が重要になってくる。
特許文献1には、複数のファイルサーバに保存されたデータの増加量を低減し、ファイル保管のためのストレージコストを削減するサーバが開示されている。特許文献1の発明では、ファイルサーバ管理用のプロキシサーバが、統括するファイルサーバに格納されたファイルの中で、重複するファイルがあった場合、利用者端末からは複数個のファイルに見せるが、保管されたファイルの実態は1つとすることで、重複ファイルの削減を図っている。このサーバによれば、ファイルアクセス管理手段が、利用者端末からのファイル保存要求の際に、当該保存要求されたファイルのハッシュ値を取得し、当該ハッシュ値に基づいて同一ファイルの有無を確認し、ファイル管理手段が、保存要求されたファイルと同一ファイルがあれば保存要求されたファイルの登録情報のみを管理し、保存要求されたファイルと同一ファイルがなければ、保存要求されたファイルの登録情報とファイルデータを管理する。
特許文献2にも、現在の仮想ファイルのハッシュ値を算出し、同じハッシュ値について実ファイル情報を検索して、記憶システムにおけるデータの非重複化を行う技術が開示されている。特許文献2の発明では、重複排除による容量圧縮と、データの保全性の両立を図っている。すなわち、まず重複する実データを削除する。ただし、重複度が閾値以上になると重複排除処理を行わない。これにより、記憶データに対する損失のリスク、ならびに、多数のデータ対象にわたる信頼性および性能の低下などの問題を緩和している。
特開2009−237979号公報 特開2009−129441号公報
ビッグデータ分野で扱われる、数百TB〜数百PBにもなるデータ手の格納・処理では、記憶装置ユニットを分散し、並列にアクセス可能な分散ストレージシステムにすると共に、データを大量に格納可能とする重複排除技術との両立が望まれる。
従来のストレージ機器で行われる重複排除は、完全に同一内容のセクタを排除することで実質データ量を削減するものである。
特許文献1の発明では、重複ファイルの削減によりデータ量は削減される。しかし、それらのデータに対する複数の利用者端末からのアクセスに対する並列処理の機会が失われる。
特許文献2の発明では、重複度が閾値に達するまでは重複する実データが削除される。この重複する実データの削減によりデータ量は削減されるが、それらのデータに対する複数の利用者端末からのアクセスに対する並列処理の機会は失われる。
このように、特許文献1や特許文献2では、ファイルシステムにおける同一データの重複排除と、並列アクセス処理とを両立することについての十分な配慮はなされていない。
本発明の主たる課題は、格納実効データ量の増加を図るための同一データの過度の重複の排除と、並列アクセス処理とを両立する、自律分散型のファイルシステム、記憶装置及びデータアクセス方法を提供することにある。
本発明の代表的なものを示すと、次のとおりである。ファイルシステムは、第1のネットワークを介してデータ参照装置に接続される自律分散型ファイルシステムであって、前記自律分散型ファイルシステムは、第2のネットワークを介して相互に接続されると共に各々前記第1のネットワークに接続される複数の記憶装置ユニットと、ストレージディレクトリと、重複データ維持ユニットとを備えており、前記各記憶装置ユニットは、各々、ローカルストレージを備えており、前記ストレージディレクトリは、保持されるデータに関して、前記各記憶装置ユニットの前記ローカルストレージの論理的ブロックのID及び物理的ブロックのID、同じ若しくは他の前記記憶装置ユニットのノードIDへのリンク及び該ノードIDの前記論理的ブロックブロックIDへのリンクの値を保持する機能を有しており、前記重複データ維持ユニットは、前記ストレージディレクトリを参照して、前記各記憶装置ユニットのストレージ容量を圧迫しない範囲で、前記データの1つの実データ及び少なくとも1つの複製データとを重複して保持し続け、前記ストレージ容量に余裕が無い場合には、前記複製データの書き込みを制限若しくは排除することを特徴とする。
本発明によれば、ファイルシステムにおいて、同一データの重複度が適度に制御され、過度の重複の排除と並列アクセスの両立を実現することができる。
本発明の第一の実施例に係る自律分散型ファイルシステムの全体構成の例を示すブロック図である。 第一の実施例の記憶装置システムの全体構成を示すブロック図である。 第一の実施例における、管理端末の構成例を示す図である。 第一の実施例における、記憶装置ユニットの構成例を示す概念図である。 第一の実施例における、1つの記憶装置ユニットのストレージディレクトリの、データ書き込み前の例を示す図である。 図6のフローに対応した、他の記憶装置ユニットにおけるストレージディレクトリの例を示す図である。 第一の実施例における、サーバから1つの記憶装置ユニットに対するデータ書き込み要求があったときの、処理を示すフロー図である。 図6のフローに対応する、他の記憶装置ユニットにおける、1つの記憶装置ユニットからのハッシュ値の受信時の処理を示すフロー図である。 図6のフローに対応する、他の記憶装置ユニットにおける、1つの記憶装置ユニットからのデータの受信時の処理を示すフロー図である。 図6のフローにおける、1つの記憶装置ユニットと他の記憶装置ユニットとの間でのデータの流れを示す図である。 第一の実施例における、ストレージディレクトリの、データ書き込み途中の例を示す図である。 第一の実施例における、ストレージディレクトリのデータ書き込み終了後の例を示す図である。 図6のフローにおける、2つの記憶装置ユニットでのデータ書き込みの同時処理時のデータの流れを示す図である。 比較例における、2つの記憶装置ユニットでのデータ書き込みの同時処理時のデータの流れを示す図である。 第一の実施例の1つの記憶装置ユニットに対するデータ読み出しの処理を示すフロー図である。 第一の実施例の1つの記憶装置ユニットに対する、複数のサーバからのデータ読み出しのアクセスについて説明する図である。 本発明の第二の実施例における、1つの記憶装置ユニットに対するデータ書き込みの処理を示すフロー図である。 第二の実施例における、ストレージディレクトリのデータ書き込み終了後の例を示す図である。 第二の実施例の1つの記憶装置ユニットに対する、複数のサーバからのデータ読み出しのアクセスについて説明する図である。
本発明の代表的な実施例によれば、データ参照装置に接続される自律分散型ファイルシステムは、ファイル(データ列)の書き込みと重複排除を行う機能・構成を備えている。ファイルは、データを保持するための容器または保持されたデータ自体であり、1つのファイルは、順序づけられたレコード列で構成される。1つのファイルのレコード列の中に、他のファイルを参照するポインタがリンクとして埋め込まれる。本発明の自律分散型ファイルシステムでは、各記憶装置ユニットが異なるファイル(データ列)に含まれる同一部分、すなわち、実データの同一内容にリンクを張ると共にその実データの実体を、当該記憶装置ユニットのストレージ容量を圧迫しない範囲で保持し続け、データの読み出し時には最も近い場所にあるファイル内容を読み出すことで、アクセスタイムの軽減および並列アクセスを可能とする。当該記憶装置ユニットのストレージ容量が圧迫される状況では、実データの同一部分にリンクを張ると共にその実体を削除し、これら同一内容の実体の数を減らすことで、ファイルシステムのストレージ総容量を増やさずに、格納データ(異なるデータ)の量を増加させ、かつ、並列処理の効率を維持する。
なお、本発明において、「データ」とは、データ参照装置から書き込み要求のあった単位のデータ、換言すると、異なるファイルに保持されるデータを意味する。例えば、ある研究論文の全文dallが、タイトル(d)+抄録(d)+本文(d〜d98)+結論(d99)で構成されているものと仮定する。全文dallのデータDl−99、抄録(d)のデータD、本文中の特定のテーマ(d20〜d25)のデータD20−25、等が各々、「データ」であり、これらの「データ」毎に各々異なるファイルに保持される。「データの同一」とは、例えば、データD20−25と、これと同じ特定のテーマ(d20〜d25)のデータD‘20−25を意味する。逆に、データD20−25と、これを内部に含む本文のデータD3−98とは、同一ではなく、異なるデータとなる。
以下、図面を参照しながら、本発明の詳細について、説明する。
なお、自律分散型ファイルシステムに対するデータ参照装置として、以下では、ネットワークに接続されたサーバを例に挙げて説明するが、本発明はこれに限定されるものではなく、各種の端末に適用可能である。
図1は、本発明の第一の実施例に係る自律分散型ファイルシステムの全体構成を示すブロック図である。
自律分散型ファイルシステムは、データ参照装置である複数のサーバが複数のアクセスパスにより繋がれており、各アクセスパスはデータを保持したファイルが格納される記憶装置ユニットに繋がれている。すなわち、複数のサーバ1000(a〜n)が、第1のネットワーク1006を介して、複数の自律分散型の記憶装置ユニット1001(a〜m)に接続されている。各記憶装置ユニット(以下、ノードとも記す)1001a〜1001nは、各サーバからの要求に基づいて、ファイル(データ列)のデータの書き込みや読み出しを行う。
各記憶装置ユニット1001(a〜m)は、第2のネットワーク1007を介して相互に接続されている。第1のネットワーク106及び第2のネットワーク1007は、例えばSAN、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、公衆回線又は専用回線などから構成される。例えば、ネットワークがLAN又はWANである場合にはNAS(Network Attached Storage)により、複数の記憶装置ユニットとサーバとが相互に接続され、TCP/IPプロトコルに従って通信が行われる。ネットワークがSANである場合にはファイバチャネルプロトコルに従って通信が行われる。ここでは、第1のネットワーク1006はSANで構成され、第2のネットワーク1007はLANで構成されている。
各記憶装置ユニット1001(a〜m)は、ストレージインタフェース1101と、ローカルストレージ1102と、ローカルコントローラ1103とを備えている。ローカルコントローラ1103は、ハッシュ値を計算するハッシュ値演算器1130と、データを比較するデータ比較器1131と、データのハッシュ値を比較するハッシュ値比較器1132と、ネットワークインタフェース1133と、ストレージディレクトリ1134と、重複データ維持ユニット1135とを備えている。
なお、ファイルシステム全体としての記憶装置ユニット1001(a〜m)の数は、用途に応じて適宜選定すれば良いが、一例として、1つのファイルシステムを10個若しくはそれより少ない複数個の記憶装置ユニット1001で構成するのが望ましい。各記憶装置ユニット1001(a〜m)には、固有のノードのIDの値が予め与えられている。例えば、記憶装置ユニット1001aのIDの値が最も小さく、記憶装置ユニット1001nのIDの値が最も大きい。これは逆の関係でも良く、他の設定方法でも良い。以下では,記憶装置ユニット1001aのIDの値が最も小さいとして説明する。
図2は、第一の実施例の記憶装置ユニット1001を含む自律分散型ファイルシステムの全体構成を示すブロック図である。
各記憶装置ユニット1001(a〜m)は、ストレージインタフェースとして機能するチャネル制御部1101と、ローカルストレージ1102と、ローカルコントローラ1103とを備えている。ローカルコントローラ1103は、ネットワークインタフェース1133と、接続部1137と、管理端末1140を含み、サーバ1000(a〜n)から受信したコマンドに従ってローカルストレージ1102に対する制御を行う。例えば、サーバ1000aからデータ入出力要求を受信して、ローカルストレージ1102aに記憶されているデータの入出力のための処理を行う。ローカルコントローラ1103aは、サーバ1000(a〜n)との間及び自記憶装置ユニット1001aを管理するための各種コマンドの授受も行う。
チャネル制御部1101は、個々にネットワークアドレス(例えばIPアドレス)が割り当てられており、ローカルコントローラ1103は、チャネル制御部1101よりSAN1006を介してサーバ1000からのファイルアクセス要求を個々に受け付ける。サーバ1000からは、各記憶装置ユニット1001に対して、ファイバチャネルプロトコルに従ってデータ・ブロック単位のデータアクセス要求(ブロックアクセス要求)が送信される。
ローカルストレージ1102は、多数のディスクドライブ(物理ディスク)を備えており、サーバ1000に対して記憶領域を提供する。データは、ディスクドライブにより提供される物理的な記憶領域上に論理的に設定される記憶領域である論理ボリューム(LU)に記憶されている。ローカルストレージ1102は、例えば複数のディスクドライブによりディスクアレイを構成するようにすることもできる。この場合、サーバ1000に対して提供される記憶領域は、RAID(Redundant Arrays of Inexpensive Disks)により管理された複数のディスクドライブにより提供される。
ローカルコントローラ1103とローカルストレージ1102の間には、ローカルストレージ1102の制御を行うディスク制御部1139があり、チャネル制御部1101、およびディスク制御部1139の間でのデータやコマンドの授受は、接続部1137を介して行われる。
ディスク制御部1139は、チャネル制御部1101がサーバ1000から受信したデータ書き込みコマンドに従ってローカルストレージ1102へのデータの書き込みを行う。また、チャネル制御部1101により送信された論理アドレス指定によるLUへのデータアクセス要求を、物理アドレス指定による物理ディスクへのデータアクセス要求に変換する。ローカルストレージ1102における物理ディスクがRAIDにより管理されている場合には、RAID構成に従ったデータのアクセスを行う。また、ディスク制御部1139は、ローカルストレージ1102に記憶されたデータの複製管理の制御やバックアップ制御も行う。
管理端末1140は、記憶装置ユニット1001を保守・管理するコンピュータであり、図3に示すように、CPU1141、メモリ1142、ポート1147、記憶装置1148、バス1149および入出力装置(図示略)を備える。
メモリ1142には、物理ディスク管理テーブル1143とLU管理テーブル1144と、ストレージディレクトリ1134と、プログラム1146とが記憶されている。CPU1141は、プログラム1146を実行することにより管理端末1140の全体の制御を行う。
ストレージディレクトリ1134は、自律分散型ファイルシステムにおける各記憶装置ユニット1001(a〜m)に対する各サーバからのデータの書き込みや読み出しを、各記憶装置ユニットの空き容量に応じて管理するためのものであり、各ストレージディレクトリ1134(a〜m)間で相互に連係するように構成されている。そのため、ストレージディレクトリ1134は、LU管理テーブルや物理ディスク管理テーブルが本来有する機能の一部を取り込んで構成されている。すなわち、各ストレージディレクトリ1134は、以下に述べる、物理ディスク管理テーブル1143及びLU管理テーブル1144の一部若しくは全体の機能を含み、これらの上位のテーブルとして構成される。あるいはまた、LU管理テーブル1144を省略し、記憶装置ユニット毎に1つのストレージディレクトリ1134を設けるように構成しても良い。
物理ディスク管理テーブル1143は、ローカルストレージ1102に備えられる物理ディスク(ディスクドライブ)を管理するためのテーブルである。この物理ディスク管理テーブル1143は、ローカルストレージ1102が備える多数の物理ディスクのそれぞれのディスク番号、物理ディスクの容量、RAID構成、使用状況を記録、管理する。LU管理テーブル1144は、物理ディスク上に論理的に設定されるLUを管理するためのテーブルである。このLU管理テーブル1144は、ローカルストレージ1102上に設定される多数のLUのLU番号、物理ディスク番号、容量、RAID構成を記録、管理する。ポート1147は、内部LANやSANに接続される。記憶装置1148は、例えばハードディスク装置やフレキシブルディスク装置、半導体記憶装置などである。
図4は、記憶装置ユニット1001の構成を示す概念図である。図4の例では、記憶装置ユニット1001b及び1001eの各物理ディスクにデータを保持するファイルの実体が1つずつ存在し、それらのアドレス(論理位置)等がストレージディレクトリ1134b及び1134eに記録されている。
図5Aは、データ書き込み(図6)を行う前の、記憶装置ユニット1001eのストレージディレクトリ113eの構成例を示す概念図である。ストレージディレクトリ1134eは、自ノードに記録されているデータの論理的ブロックのID11341及び物理的ブロックのID11342、データのハッシュ値11343、自身の記録されているデータの他のノード(記憶装置ユニット)のIDへのリンク11344、及びその他のノードの物理的ブロックIDへのリンク11345、及び処理中フラグ11346の6つの属性で構成されている。
論理的ブロックID11341は、各記憶装置ユニット1001(1001a〜1001m)内で管理する論理的なファイルパスであり、ローカルストレージのすべてのファイルに対してユニークに設定される。例えば、記憶装置ユニット1001eには、論理的ブロックIDとして、4000,4001,4002,4003,−が設定されている。
物理的ブロックID11342は、実際に各記憶装置ユニット1001(1001a〜1001m)内に格納されているファイルの実ファイルパスである。例えば、記憶装置ユニット1001eには、論理的ブロックID=4000に、ファイルの実データが格納された物理的ブロックのIDとして、5123が設定されている。各サーバは、このストレージディレクトリ1134のIDを利用して、各記憶装置ユニット1001のファイルにアクセスすることができる。
ハッシュ値11343は、ファイルアクセスに必要なファイルのハッシュ値(6100等)を示している。重複するファイルの場合は、ハッシュ値が同じ値になる。ハッシュ値に代えて、他の特徴値を用いても良い。
ノードIDへのリンク11344は、自ノードの記憶装置ユニット1001から他のノードの記憶装置ユニットへのリンクを示し、ブロックIDへのリンク11345は、その論理的ブロックIDへのリンクを示している。例えば、記憶装置ユニット1001eの論理的ブロックID4002に、ハッシュ値6103のデータに関して、記憶装置ユニット1001cの論理的ブロックID4121にリンクが張られていることを表している。
処理中フラグ11346は、各ノードが処理中の状態にあるか(=1)、否か(=0)を表している。
他の各記憶装置ユニットも、各々、記憶装置ユニット1001eと同様なストレージディレクトリ1134を備えている。図5Bに、記憶装置ユニット1001fのストレージディレクトリ1134fの例を示す。記憶装置ユニット1001fには、論理的ブロックIDとして、4100,4101,−が設定されており、論理的ブロックID=4100にハッシュ値6102のファイルの格納を示す物理的ブロックのID=5001が設定されている。
なお、本実施例の代案として、自律分散型ファイルシステムの第1、第1のネットワークに接続された管理サーバを設け、各記憶装置ユニットのローカルコントローラ1103の機能の一部を、この管理サーバで一括して管理するようにしても良い。すなわち、この管理サーバにストレージディレクトリ1134を設け、各記憶装置ユニットには物理ディスク管理テーブル及びLU管理テーブルを設ける。そして、管理サーバのストレージディレクトリに、データ書き込み時の、各記憶装置ユニット1001内の論理位置とデータ及び特徴量を保持する。この場合、データの読み出し時には、サーバがこの管理サーバに問い合わせ、ストレージディレクトリ1134を参照してデータを持つ記憶装置ユニットの位置を得るようにする。
次に、図4を参照しながら、本実施例に係る自律分散型ファイルシステムの特徴的な機能を説明する。
記憶装置ユニットb及びeのローカルコントローラは、重複データ維持ユニット及びハッシュ値・データ値の演算比較機能を備えており、ローカルストレージの論理ブロックに空きが有る場合、換言するとストレージ容量を圧迫しない場合には、データの1つの実データ及び少なくとも1つの複製データとを重複して保持し続け、論理ブロックに空きが無い場合、換言するとストレージ容量に余裕が無い場合には、複製データの書き込みを制限若しくは排除する機能を有している。より具体的には、次の通りである。
[書き込みと重複制御]
(1)各記憶装置ユニット1001は、ストレージディレクトリ1134に自身のノードが有するデータの特徴値(ハッシュ値等)を演算し記録する。
(2)(ストレージに接続された)サーバが、(論理・物理ブロック)の論理位置pに対して新規データDを書き込むと、データを受け取った記憶装置ユニット(この例では1001e)は、前記新規データDの特徴(ハッシュ値)Hを演算し、自ノードに記録されている特徴値のリストから同一のハッシュ値を持つデータを抽出し、自ノードに前記新規データDと重複するデータD’が有ればそれにリンクを張る。
(3)データを受け取った記憶装置ユニット1001eは、前記新規データDの特徴(ハッシュ値)Hを、ストレージシステムを構成する他の各記憶装置ユニットi(以下、代表して記憶装置ユニット1001b)に報告する。
(4)前記特徴値を受け取った記憶装置ユニットbは、自ノードに記録されている特徴値のリストから同一のハッシュ値を持つデータを選択する。同一値H‘が存在した記憶装置ユニットbは記憶装置ユニットeにデータDを要求する。
(5)記憶装置ユニットeは記憶装置ユニットbにデータDを転送する。
(6)記憶装置ユニットbはデータDと同一のデータD’を自ノードが有するか判定し、結果を記憶装置ユニットeに返す。
(7)もし同一のデータD’を有している記憶装置ユニットbがあった場合、記憶装置ユニットeはデータDをデータD’の複製として保持すると共に、データDからデータD’へのリンクを作成し、ストレージディレクトリ1134eに記録する。この記憶装置ユニットbへのリンクの作成は、データDが、記憶装置ユニットeのストレージ容量が圧迫される状態になった時に「重複排除できるデータ」としてあるとマークされたことを意味する。
また、記憶装置ユニットbのストレージディレクトリには、記憶装置ユニットbが有する(データDと同一の)データD’は他からリンクされたことを記録する。
[読み出し]
(1)サーバ(x)は論理位置pを指定して記憶装置ユニットeにデータDを要求する。
(2)記憶装置ユニットeは、自身が論理値pのデータDを有する場合、それを返す。
(3)記憶装置ユニットeは自ノードに要求されたデータはないが、pに対するリンクが存在する場合、そのリンク先の記憶装置ユニットbに対してデータD’の転送を要求する。
(4)記憶装置ユニットeは、記憶装置ユニットbからデータD’を受け取り後、それをサーバに返す。
次に、図5A〜図10Bを参照しながら、サーバから1つの記憶装置ユニットeへ、データ書き込みが行われる場合の、重複データ維持ユニット1135を主体とする処理について、説明する。
図6は、記憶装置ユニットeに対するデータ書き込み時の、重複データ維持ユニット1135を主体した処理(S2000)を示すフロー図である。
記憶装置ユニットeは、サーバ(x)からのデータ(D1)の書き込みを受信すると(S2001)、自ノードのストレージディレクトリ1134eの論理ブロックに空きが有るかを判定する(S2002)。
ディレクトリの論理ブロックに空きが無ければ、ストレージに「空き容量無し」として処理を終了する(S2003)。もし、ディレクトリの論理ブロックに空きが有る場合、次に、ディレクトリの物理ブロックに空きが有るかを判定する(S2004)。ディレクトリの物理ブロックに空きが無い場合(S2004でNO)には、ディレクトリにリンクを持つ論理ブロックが有るかを判定する(S2005)。リンクを持つ論理ブロックが無ければ、ストレージに「空き容量無し」と応答して処理を終了する(S2003)。もし、ディレクトリから重複した物理ブロック、例えば物理ブロック(D2)があれば、その物理ブロックへのポインタを削除し(S2006)、空きブロックを確保する。そして、この空きブロックにデータ(D1)を格納し、ストレージディレクトリに、このブロックのエントリを作成し(S2007)、ストレージディレクトリに「処理中フラグ」をセットする(S2008)。
さらに、データD1のハッジュ値H1を計算する(S2009)。そして、自ノードのストレージディレクトリに同一のハッジュ値H1を持つブロックが存在するかを判定する(S2010)。もし、同一ハッジュ値H1を持つブロックが存在する場合には、さらに、自ノードのストレージディレクトリに同一のデータD1‘を持つブロックが存在するかを判定する(S2011)。異なるファイルに含まれる同一のデータD1‘を持つブロックが存在する場合には、ステップ2019に進み、データD1‘へのリンクを作成し、データD1をデータD1‘の複製ブロックとする。一方、自ノードのストレージディレクトリに同一のデータを持つブロックが存在しない場合、ハッジュ値H1を他のノードに分配する(S2012)。
図7は、他の記憶装置ユニットbにおける、記憶装置ユニットeからのハッシュ値H1の受信時(S700)の処理を示すフロー図である。各記憶装置ユニットi(ここではi=b)では自ノードのストレージディレクトリに同一のハッシュ値H1‘が有るかないかを判定する(S701)。もし、そのストレージディレクトリにハッシュ値H1‘が無ければNO、同一のハッシュ値H1‘が有ればYESを記憶装置ユニットeへ返して終了する(S702〜S704)。
図6において、記憶装置ユニットeでは、他のノードからの応答を受けて、同一のハッジュ値H1を持つノードが存在する場合(S2013でYES)には、さらに、そのノードにデータD1を分配する(S2014)。
図8は、他の記憶装置ユニットbにおける、記憶装置ユニットeからのデータD1の受信時(S800)の処理を示すフロー図である。各記憶装置ユニットi(ここではi=b)では自ノードのストレージディレクトリにD1と同一のデータD1‘が有るかないかを判定する(S801)。もし、そのストレージディレクトリにデータD1‘が無ければNO、同一のデータD1‘が有ればYESを記憶装置ユニットeへ返して処理を終了する(S802〜S804)。なお、S801で、同一のデータD1‘が有る場合には、ストレージディレクトリに「処理中フラグ」を1にセットし、S803では、YESと共に、「処理中フラグ」の値“1”を返す。
図6において、記憶装置ユニットeでは、他の各ノードからの応答を受けて、同一のデータを持つブロックが存在するかを判定する(S2015)。もし、同一のデータを持つブロックが1つ若しくは複数存在する場合(S2015でYES)には、それらのノードからの受信結果に「処理中フラグ」がセットされているかを判定する(S2016)。「処理中フラグ」がセットされている場合には、自ノードのIDと結果を返したノードのIDの値の大小関係を比較する(S2017)。自ノードのIDが小さい場合には、ステップ2018に進み、複数のノードにデータD1と同一のデータD1‘が存在する場合には、それらのノードの中で自ノードのIDが最小かを判定する。もし、自ノードのIDが最小ではない場合には、ステップ2019に進む。ステップ2016で「処理中フラグ」がセットされていない場合にも、ステップ2019に進む。ステップ2019では、自ノードのデータD1‘若しくは自ノードよりもIDの小さい他のノードのデータD1‘へのリンクを作成してストレージディレクトリに記録し、自ノードのデータD1をデータD1‘の複製ブロックとする。逆に、ステップ2017で自ノードのIDの方が大きい場合や、ステップ2018でノードのIDが最小の場合には、データD1‘へのリンクを作成せずに、ステップ2020に進み、データD1をそのまま保存する。このようにして、IDの小さい側の特定の1つのノード(以下、特定ノード)に実データが保存され、IDの大きいノードには実データの複製ブロックが保存されあるいは実データへの(直接的有る生は間接的な)リンクが作成される。なお、特定ノードには実データの複製ブロックも保存されあるいはリンクが作成され得る。すなわち、ステップ2017〜2019は同一データに関し、「特定ノードに1つの実データを保持し、この特定ノード若しくは他ノードに1つ以上の複製を保持しあるいはリンクを作成する機能」を実現するものである。この機能により、各記憶装置ユニットは、異なる複数のファイルに同一内容のデータを保持し続けることで、アクセスタイムの軽減および並列アクセスを可能にする。
図9に、図6のフローのステップ2000からステップ2012までに対応する、データ書き込み時の、1つの記憶装置ユニットeと他の記憶装置ユニットbとの間でのデータの流れを(1)〜(7)として示す。ここでは、記憶装置ユニット1001eのストレージディレクトリeの論理ブロックが「空き無し」となっている場合、自ノードの重複した物理ブロック(D2)を削除し、この空いた物理ブロックにデータD1を格納している。また、自ノードのストレージディレクトリeに同一のデータD1‘を持つブロックが存在しないので、ハッジュ値H1を他のノードbに分配している。
図10Aに、ストレージディレクトリ1134eの、データ書き込み途中の例を示す。この例では、自ノードの論理的ブロックID4003、物理的ブロックID5391に記録されているハッシュ値6100及びデータD1が、自ノードの論理的ブロックID4000、物理ブロック5123のハッシュ値6100及びデータD1‘と同じであり、ノードIDへのリンク11344に、自ノード1001eの論理的ブロックID4000へのリンク1001eが設定され、「処理中フラグ」がセットされている。
図9に、図6のフローのステップ2013からステップ2021までに対応する、記憶装置ユニットeと記憶装置ユニットbとの間でのデータの流れを(8)〜(11)として示す。ストレージディレクトリeに、記憶装置ユニット1001bのデータD1‘へのリンクを作成し、データD1をデータD1‘の複製ブロックとしている。すなわち、異なるファイルに含まれる同一のデータ部分についてはファイルシステムに少なくとも1つの実体を1つ残し、他は複製データを保持し、あるいはリンクを作成する。この複製データは「重複排除」の対象としてマークされたデータである。これにより、ファイルシステム内におけるデータ総量を増やさずに並列処理の効率向上を図ることができる。
図10Bに、ストレージディレクトリ1134eの、データ書き込み終了後の例を示す。ここでは、自ノードの論理的ブロックID4003から論理的ブロックID4000へのリンクとして、ブロックIDへのリンク11345に、値4000が設定され、「処理中フラグ」は解除されている。なお、物理的ブロックのIDとして、同一のデータD1、D1‘に関するIDである5123と5391が設定されており、記憶装置ユニットeの異なるファイルに同一のデータが重複して保持されていることを示している。
図6において、同一のハッジュ値H1や同一のデータを持つノードが存在しない場合(S2013及びS2015でNO)、及び、自ノードのIDが大きい場合(S2017でNO)には、ステップ2020に進み、ストレージディレクトリの「処理中フラグ」をリセットして、終了する(S2021)。
なお、図6のステップ2017において、「処理中フラグ」がセットされている場合に、自ノードのIDと結果を返したノードのIDの大小関係を比較するのは、同一のデータD1、D1‘の実体が同時に削除されるのを防止するためである。これを、図12、図13で説明する。
図11は、図6のステップ2017〜2019が有る場合、すなわち、「特定ノードに1つの実データを保持し、この特定ノード若しくは他ノードに1つ以上の複製を保持しあるいはリンクを作成する機能」がある場合の、2つの記憶装置ユニットでのデータ書き込み時の、同時処理時のデータの流れを示す図である。記憶装置ユニット1001bと記憶装置ユニット1001eとが同時(t=t1)に、サーバからのデータD1、D1‘の書き込みを受信した場合、ステップ1101(b,e)からt=t2のステップ1110(b,e)までは、並行して同じ内容の処理がなされる。次に、記憶装置ユニット1001bではステップ1111bにおいてノードの大小関係が比較されるが、自ノードのIDの値が記憶装置ユニット1001eのIDの値よりも小さいので(図6のステップ2017のYESに相当)、ステップ1113bで、データ間のリンクは作成されない(図6のステップ2019に相当)。一方、記憶装置ユニット1001eでも、ステップ1112eにおいてノードの大小関係が比較されるが、自ノードのIDの値が記憶装置ユニット1001bのIDの値よりも大きいので、結果を返したノードのIDよりも小さくないと判定され(図6のステップ2017のNO、ステップ2018のYESに相当)、データD1‘からデータD1へのリンクが作成される。
その後、ステップ1115(b,e)で、すなわち記憶装置ユニット1001bはt=t3でデータDn、記憶装置ユニット1001eはt=t4でデータDmの書き込みを、各々サーバから受信したものとする。双方の記憶装置ユニットのディレクトリの論理ブロックに空きが有り物理ブロックに空きが無い状態(図6のS2004でNOに相当)では、記憶装置ユニット1001bではディレクトリにリンクを持つ論理ブロックが無く、ステップ1116bの確認の結果リンクが無いので(図6のS2005でNOに相当)、ステップ1118bでストレージに「空き容量無し」としてリンクが張られずに処理を終了する。そのため、データDnと共にデータD1が実体として残る。一方、記憶装置ユニット1001eでは、ステップ1117eで、ディレクトリにリンクを持つ論理ブロックが有るので(図6のS2005でYESに相当)、ステップ1119eで、D1‘のリンクが削除され(図6のS2006に相当)、データDmが格納される(図6のS2007に相当)。そのため、データDmのみが保持される。このようにして、ファイルシステムでは、1つのデータD1がD1、D1‘の実体として、特定ノードである記憶装置ユニット1001bに残り、IDの値が大きい記憶装置ユニット1001eにおいては、データD1‘からD1へのリンクが作成され、D1‘の実体は削除される。
次に、図12は、比較例として、「特定ノードに1つの実データを保持し、この特定ノード若しくは他ノードに1つ以上の複製を保持しあるいはリンクを作成する機能」、すなわち図6のステップ2017〜2019が無い場合の、2つの記憶装置ユニットでのデータ書き込み時の、同時処理時のデータの流れを示す図である。記憶装置ユニット1001bと記憶装置ユニット1001eとが同時(t=t1)に、サーバからのデータD1、D1‘の書き込みを受信した場合、ステップ1101(b,e)からt=t2すなわちステップ1109(b,e)までは、並行して同じ内容の処理がなされる。さらに、ステップ1114(b,e)で、データD1‘からD1へのリンクと共に、D1からD1‘へのリンクも作成される(図6のステップ2019に相当)。その後、ステップ1115(b,e)で、すなわち記憶装置ユニット1001bはt=t3でデータDn、記憶装置ユニット1001eはt=t4でデータDmの書き込みを、各々サーバから受信したものとする。双方の記憶装置ユニットのディレクトリの論理ブロックに空きが有り物理ブロックに共に空きが無い場合(図6のS2004でNOに相当)には、記憶装置ユニット1001b、記憶装置ユニット1001e共にディレクトリにリンクを持つ論理ブロックが有るのでステップ1117(b,e)の確認の結果、リンクを持つ論理ブロック有となり(図6のS2005でYESに相当)、ステップ1119(b,e)で、D1、D1‘のリンクがストレージディレクトリから共に削除され(図6のS2006に相当)、データDn、Dmが格納される(図6のS2007に相当)。このようにして、ファイルシステムから、データD1、D1‘の実体が同時に削除される(図6のS2006に相当)。
本発明では、「特定ノードに1つの実データを保持し、この特定ノード若しくは他ノードに1つ以上の複製を保持しあるいはリンクを作成する機能」により、実体の同じデータが複数存在する場合には、特定ノードのデータ、例えば、ノードIDの小さい側のデータのみを残すようにすることで、記憶装置ユニット1001からデータの実体が同時に削除されることを防止している。なお、この特定ノードの設定方法としては、ノードのIDの値の大小関係を逆にしても良く、あるいは、IDの値が最小ではなく例えば中間値を基準にして大小関係を判定するようにしても良い。
次に、図13は、1つの記憶装置ユニットにおける、データ読み出しの処理を示すフロー図である。記憶装置ユニット1001eは、サーバ(x)から論理値pのデータD1の読み出し要求を受信すると(S1500)、自身のストレージディレクトリeに要求された論理値p(論理・物理ブロック)のデータを有する場合(S1501でYES)、データを添付してサーバ(x)に応答する(S1506)。もし、要求された論理値pが自身のストレージディレクトリeにはないが、ストレージディレクトリeに、論理値pに対するリンク1134が存在する場合(S1502でYES)、リンク先の記憶装置ユニットユニットbに対してデータ転送を要求する(S1504)。記憶装置ユニット1001eは、記憶装置ユニットbからデータを受け取り、それをサーバ(x)に転送して(S1505)、終了する(S1507)。論理値pに対するリンク1134が存在しない場合(S1502でNO)は、要求された論理値pのデータが抽出されなかったものとしてサーバ(x)に応答し、処理を終了する(S1503)。
なお、上記例のS1504〜S1506に代えて、ストレージディレクトリeに論理値pに対するリンク1134が存在する場合(S1502でYES)は、記憶装置ユニット1001eからリンク先の記憶装置ユニットユニットbに対して、記憶装置ユニットユニットbから直接サーバ(x)に送信することを要求し、この要求を受信した記憶装置ユニットユニットbにおいて、要求されたデータをサーバ(x)に直接送るようにしても良い。
本実施例によれば、ディレクトリの論理ブロックに空きが有る場合には、同一データの重複書き込みが許容されているので、サーバ(x)からのアクセスタイムの軽減および複数のサーバ(x)からの並列アクセスを可能とする。
すなわち、複数のサーバが複数のアクセスパスによって繋がっている記憶装置ユニットにデータの読み書きの要求をする場合に、各サーバは別の記憶装置ユニットに読み書きの要求をすることができ、各記憶装置ユニットは独立にデータの読み書きの要求を処理できる。そのため、1つの記憶装置ユニットにデータの読み書きの要求が集中しないことによりデータへのアクセスを高速化するとことができる。
図14を用いて、本実施例のファイルシステムにおける、1つの記憶装置ユニットに対する、複数のサーバからのアクセスが有った場合の処理について説明する。ここでは、複数の記憶装置ユニット1001b、1001e、1001mの相互の関係を例に挙げる。
図14の上段はサーバ(x)からデータD1の書き込み要求を受け付ける前の状態、図14の下段はデータD1の書き込み要求を処理した、図10Bの状態に相当する。
図14の上段において、ノード1001b、1001e、1001mに、複数個の同一のデータD1‘(1)〜D1‘(3)が重複して保存されている。すなわち、特定ノード1001bに実データD1‘(3)、他のノード1001e、1001mに実データD1‘(3)の複製データD1‘(1)、D1‘(2)が保存されている。また、特定ノード1001bに実データD2、ノード1001eにリンクの張られた複製のデータD2‘が保存されている。この状態では、複数のサーバからの同一のデータD1‘(1)〜D1‘(3)、及びデータD2、D2‘に対するアクセスを並列的に受け付けることができる。
次に、図14の下段において、ノード1001eにデータD1を書き込んだ後の状態で、特定ノード1001b、及び、他のノード1001e、1001mに、複数個の同一のデータD1、D1‘(1)〜D1‘(3)が重複して存在している。ノード1001eにおいて、複製のデータD1から複製のデータD1‘(1)へリンクが張られている。一方、データD2‘に関しては、複製のデータD2‘が削除され、特定ノード1001bの実データD2へのリンクのみが記録されている。この状態では、複数のサーバからの同一のデータD1、D1‘(1)〜D1‘(3)、及びデータD2に対するアクセスを、並列的に受け付けることができる。一方、データD2‘に関しては、リンクを介した直列的なアクセスを受け付けることができる。このようにして、アクセスタイムの軽減しながら、かつ、格納データ(異なるデータ)の量を増加させることができる。
本実施例の重複データ維持ユニットによる「特定ノードに1つの実データを保持し、この特定ノード若しくは他ノードに1つ以上の複製を保持しあるいはリンクを作成する機能」によりデータの書き込み処理を継続して行うと、最終的には、ファイルシステム内に、1つの実データD1、D2、−、DZと、1つ若しくは複数の複製データD1‘、D2’、−、DZ‘とが保持され、かつ、これら各データへの1つのリンクが作成されるようになる。但し、各記憶装置ユニットに効率よく均一にデータを保存し、ファイルシステム内の格納データ(異なるデータ)の量をより増加させるためには、図6のステップ2018のYESの後の処理で特定ノードに多数の複製データが保持されないようにする等、重複データ維持ユニットを機能させる必要がある。
このように、本実施例のファイルシステムは、記憶装置ユニット1001の論理ブロック及び物理ブロックに空きが有る場合には、同じノードあるいは他のノードに、同一のデータが重複して存在するのを許容し、かつ、リンクの張られている他のデータも残す。すなわち、同一内容のデータの実体及び複製を、ストレージ容量を圧迫しない範囲で、ファイルシステム内に複数個保持し続け、サーバからのデータの読み出し時には最も近い場所にある内容を読み出すことで、アクセスタイムの軽減および並列アクセスを可能とする。
一方、記憶装置ユニット1001の論理ブロック及び物理ブロックに空きが無い場合には、ファイルシステムは、同じノードあるいは他のノードに、同一のデータが複数個存在するのを排除する。これにより、ファイルシステムは、データ総量を増やさずに、任意のデータに対する各サーバからのアクセスタイムの軽減を図ることができる。すなわち、ストレージ容量が有る程度圧迫される状況下では、「特定ノードに1つの実データを保持し、この特定ノード若しくは他ノードに1つ以上の複製を保持しあるいはリンクを作成する機能」を実現する。
これにより、ファイルシステムにおいて、同一データの重複度が適度に制御され、過度の重複の排除と並列アクセスの両立を実現することができる。
次に、本発明の第二の実施例に係る自律分散型ファイルシステムについて説明する。第一の実施例との相違点は、各記憶装置ユニットが自ノードにおける重複書き込みを積極的に排除する点にある。実施例1の[重複排除]機能は、いわば、「他ノードの重複排除」を行う機能とも言える。実施例2のデータ維持ユニットは、実施例1の「他ノードの重複排除」機能に加えて、次のような「自ノード重複排除」の機能を有する。
(1)サーバが、(論理・物理ブロック)の論理位置pに対して新規データDを書き込むと、データを受け取った記憶装置ユニット(この例では1001e)は、前記新規データDの特徴(ハッシュ値)Hを演算し、自ノードに記録されている特徴値のリストから同一のハッシュ値を持つデータを抽出し、自ノードに重複するデータD’が有ればそれにリンクを張る。
(2)記憶装置ユニット1001eは、前記新規データDの特徴(ハッシュ値)Hを、ストレージシステムを構成する他の各記憶装置ユニットi(以下、代表して記憶装置ユニット1001b)に報告する。
(以下、実施例1と同様にして、「他ノードの重複排除」機能を実行)。
(3)容量が切迫した等データを削除すべき状態になった際には、記憶装置ユニットeは重複する自ノードの複製データD’を削除する。
図15は、第二の実施例における、1つの記憶装置ユニットに対するデータ書き込みの処理を示すフロー図である。
ステップ12000からステップ12011までは、第一の実施例のフローのステップ2000からステップ2011までと同じである。ステップ12011において、同一のデータD1‘を持つブロックが存在する場合には、D1‘に関し、自ノードの複製データD’を削除する。すなわち、ストレージディレクトリeにおける物理ブロックへのポインタを削除し(S12022)、その後、ステップ12018に進む。一方、自ノードのストレージディレクトリに同一のデータを持つブロックが存在しない場合、ハッジュ値H1を他のノードに分配する(S12012)。以下、第一の実施例のフローと同じである。
図16は、第二の実施例における、記憶装置ユニット1001eのストレージディレクトリ1134eのデータ書き込み終了後の一例を示す図である。図10Bと異なり、論理ブロック4003において、物理的ブロックIDが削除されている。すなわち、物理的ブロックID11342から、データD1‘のIDが削除されており、記憶装置ユニット1001eにおいてデータD1‘と重複するデータD1の実体若しくは複製が削除されていることを示している。
図17を用いて、第二の実施例における、1つの記憶装置ユニットに対する、複数のサーバからのアクセスについて説明する。図14と同様に、複数の記憶装置ユニット1001b、1001e、1001mの相互の関係を例に挙げる。
記憶装置ユニット1001eの物理ブロックに空きが有る場合には、同じノードあるいは他のノード1001b、1001mに、同一のデータ、例えばデータD1‘が複数個重複して存在するのを許容し、かつ、リンクの張られているデータD2‘の複製も残す。これは、図14の場合と同じである。
一方、記憶装置ユニット1001eの物理ブロックに空きが無い場合には、同じノードあるいは他のノードに、同一のデータが複数個存在するのを排除する。例えば記憶装置ユニット1001eにおいて、記憶装置ユニット1001bのデータD2にリンクが張られている複製データD2‘を削除すると共に、自ノードでデータD1‘(1)と重複している複製データD1も削除し、データD1からデータD1‘(1)へはリンクを張る。一方、特定ノードである記憶装置ユニット1001bのデータD1‘(3)は実体としてそのまま残す。これにより、データ総量を増やさずに、任意のデータ、例えばデータD1とデータD1‘(2)〜D1‘(3)に対するアクセスタイムの軽減を図っている。
本実施例の重複データ維持ユニットによる「特定ノードに1つの実データを保持し、この特定ノード若しくは他ノードに1つ以上の複製を保持しあるいはリンクを作成する機能」によりデータの書き込み処理を継続して行うと、最終的には、ファイルシステム内に、1つの実データD1、D2、−、DZと、1つの複製データD1‘、D2’、−、DZ‘とが保持され、かつ、これら各データへの1つのリンクが作成されるようになる。これによりファイルシステム内の格納データ(異なるデータ)の量を増加させることができる。但し、ファイルシステムの用途がアクセスタイムの軽減を必要とする場合には、図16のステップ12022で各ノードに2乃至3個程度の複製データの保持を許容するように、重複データ維持ユニットを機能させるようにしても良い。
このように、本実施例によれば、ストレージ容量を圧迫しない範囲で、同一内容のデータを複数保持し続け、ストレージ容量が圧迫される状況下では、「特定ノードに1つの実データを保持し、この特定ノード若しくは他ノードに1つ以上の複製を保持しあるいはリンクを作成する機能」を実現する。これにより、ファイルシステムにおいて、同一データの重複度が適度に制御され、過度の重複の排除と並列アクセスの両立を実現することができる。
1000…サーバ、1001…記憶装置ユニット、1006…第1のネットワーク、1007…第2のネットワーク、1101…ストレージインタフェース(チャネル制御部)、1102…ローカルストレージ、1103…ローカルコントローラ、1130…ハッシュ値演算器、1131…データ比較器、1132…ハッシュ値比較器、1133…ネットワークインタフェース、1134…ストレージディレクトリ、1135…重複データ維持ユニット、1137…接続部、1139…ディスク制御部、1140…管理端末、1141…CPU、1142…メモリ、1143…物理ディスク管理テーブル、1144…LU管理テーブル1146…プログラム、1148…記憶装置、1101…チャネル制御部、1341…論理的ブロックのID、11342…物理的ブロックのID、11343…データのハッシュ値、11344…他のノード(記憶装置ユニット)のIDへのリンク、11345…他のノードの物理的ブロックIDへのリンク、11346…処理中フラグ。

Claims (14)

  1. 第1のネットワークを介してデータ参照装置に接続される自律分散型ファイルシステムであって、
    前記自律分散型ファイルシステムは、第2のネットワークを介して相互に接続されると共に各々前記第1のネットワークに接続される複数の記憶装置ユニットと、ストレージディレクトリとを備えており、
    前記各記憶装置ユニットは、各々、ローカルストレージと、重複データ維持ユニットとを備えており、
    前記各記憶装置ユニットを構成する各ノードには、各々、固有のノードIDの値が予め与えられており、特定のノードIDを有する前記ノードが特定ノードとして設定されており、
    前記重複データ維持ユニットは、前記データ参照装置からの要求データの書き込み要求に対して、前記ストレージディレクトリを参照し、前記何れかのノードに関して、論理的ブロック及び物理的ブロックに空きが有るかを判定する機能と、該判定の結果、前記論理的ブロック及び前記物理的ブロックに空きが有る場合には、前記特定ノードに前記要求データの1つの実データを保持し、前記特定ノード若しくは他ノードに前記要求データの1つ以上の複製データを保持し同一内容のデータにリンクを作成する機能と、前記判定の結果、前記論理的ブロックに空きが有り前記物理的ブロックには空きが無い場合には、前記何れかのノードに保持された重複する前記複製データもしくは前記リンクを削除して空きを確保する機能とを有する
    ことを特徴とする自律分散型ファイルシステム。
  2. 請求項1において、
    前記重複データ維持ユニットは、前記判定の結果、前記各記憶装置ユニットの何れかにおいて、自ノードのローカルストレージの前記論理的ブロック及び前記物理的ブロックに空きが有る場合には、同一内容の前記データの重複書き込みを許容し、前記物理的ブロックに空きが無く、かつ、前記ストレージディレクトリに前記リンクを持つ前記論理的ブロックが無い場合には、前記ストレージディレクトリから前記自ノード若しくは他の前記ノードの重複した前記物理的ブロックへのポインタを削除し、前記同一内容のデータの重複書き込みを排除する
    ことを特徴とする自律分散型ファイルシステム。
  3. 請求項において、
    前記各記憶装置ユニットは、各々、ストレージインタフェースと、ローカルコントローラとを備えており、
    前記各ローカルコントローラは、前記ストレージディレクトリ及び前記重複データ維持ユニットの機能を有しており、
    前記重複データ維持ユニットは、
    自ノードの前記ストレージディレクトリを参照し、
    前記判定の結果、前記各記憶装置ユニットの何れかにおいて、自ノードのローカルストレージの前記論理的ブロック及び前記物理的ブロックに空きが有る場合には、同一内容の前記データの重複書き込みを許容し、前記物理的ブロックに空きが無く、かつ、前記ストレージディレクトリに前記リンクを持つ前記論理的ブロックが無い場合には、前記ストレージディレクトリから前記自ノード若しくは他の前記ノードの重複した前記物理的ブロックへのポインタを削除し、前記同一内容のデータの重複書き込みを排除する
    ことを特徴とする自律分散型ファイルシステム。
  4. 請求項において、
    前記記憶装置ユニットにはファイルが格納され
    前記重複データ維持ユニットは、
    前記データ参照装置からの要求データの書き込み要求に対して、前記自ノードのストレージディレクトリを参照し、
    前記判定の結果、前記ローカルストレージの前記論理的ブロック及び前記物理的ブロックに空きが有る場合には、前記同一内容のデータの重複書き込みを許容し、
    前記論理的ブロックに空きが有り前記物理的ブロックに空きが無い場合には、前記ストレージディレクトリから重複した前記物理的ブロックへのポインタを削除し、空きブロックを確保してこの空きブロックに前記要求データを格納すると共に、前記自ノード若しくは前記他ノードの異なる前記ファイルに前記データと同一のデータが存在する場合には、前記特定ノードに1つの実データを残し他の同一のデータへの前記リンクを張って同一データを複数保持し、
    前記ストレージディレクトリの値を更新する
    ことを特徴とする自律分散型ファイルシステム。
  5. 請求項4において、
    前記ストレージディレクトリは、前記データのハッシュ値を保持する機能、及び、前記各ノードが処理中の状態にあるか否かを表す処理中フラグの値を保持する機能を有しており、
    該ハッシュ値を用いて、前記自ノード及び前記何れかの他ノードに同じデータが存在するか否かのチェックを行い、
    前記処理中フラグの値を用いて、前記他ノードに、前記自ノードのデータと同じデータが存在することを通知する
    ことを特徴とする自律分散型ファイルシステム。
  6. 請求項において、
    自律分散型ファイルシステムは、前記データ参照装置である複数のサーバが前記第1のネットワークを介して、複数の自律分散型の前記記憶装置ユニットに接続されており、
    前記各記憶装置ユニットは、各々、ストレージインタフェースと、ローカルコントローラとを備えており、
    前記第1のネットワーク及び前記第2のネットワークは、SAN、LAN、若しくはWANで構成されており、
    前記ローカルコントローラは、管理端末を有し、前記サーバから受信したコマンドに従って前記ローカルストレージに対する制御を行う
    ことを特徴とする自律分散型ファイルシステム。
  7. 請求項において、
    前記第1、第2のネットワークに接続された管理サーバを備え、
    該管理サーバは、前記ストレージディレクトリの機能及び前記重複データ維持ユニットの機能を備えており、
    前記要求データの書き込み時の、前記各記憶装置ユニット内の論理位置と前記データ及び特徴量を保持し、
    前記データ参照装置からの前記データの読み出し時には、前記管理サーバが前記ストレージディレクトリを参照して当該データを持つ前記記憶装置ユニットの位置の情報を得る
    ことを特徴とする自律分散型ファイルシステム。
  8. 請求項において、
    前記判定の結果、第1の前記記憶装置ユニットの前記論理的ブロックに空きが有り前記物理的ブロックに空きが無い場合において、
    該第1の記憶装置ユニット若しくは他の記憶装置ユニットに前記データと同一のデータが存在する場合には、前記各記憶装置ユニットのノードのIDの比較結果に基づいて、前記特定ノードの前記実データを残し他の同一の前記データへの前記リンクを張って前記実データの重複書き込みを排除する
    ことを特徴とする自律分散型ファイルシステム。
  9. 自律分散型ファイルシステムを構成する記憶装置ユニットであって、
    ローカルストレージと、ローカルコントローラとを備えており、
    前記ローカルコントローラは、ストレージディレクトリと、重複データ維持ユニットとを備えており、
    前記各記憶装置ユニットを構成する各ノードには、各々、固有のノードIDの値が予め与えられており、特定のノードIDを有する前記ノードが特定ノードとして設定されており、
    前記ストレージディレクトリは、保持されるデータに関して、前記各記憶装置ユニットの前記ローカルストレージの論理的ブロックのID及び物理的ブロックのID、同じ若しくは他の前記記憶装置ユニットのノードIDへのリンク及び該ノードIDの前記論理的ブロックIDへの前記リンクの値を保持する機能を有しており、
    前記重複データ維持ユニットは、データ参照装置からの要求データの書き込み要求に対して、前記ストレージディレクトリを参照して前記何れかのノードに関して論理的ブロック及び物理的ブロックに空きが有るかを判定する機能と、該判定の結果、前記論理的ブロック及び前記物理的ブロックに空きが有る場合には、前記特定ノード若しくは他ノードに前記要求データの1つ以上の複製データを保持し同一内容のデータにリンクを作成する機能と、前記判定の結果、前記論理的ブロックに空きが有り前記物理的ブロックには空きが無い場合には、前記何れかのノードに保持された重複する前記複製データもしくは前記リンクを削除して空きを確保する機能とを有する
    ことを特徴とする記憶装置ユニット
  10. 請求項9において、
    前記記憶装置ユニットにはファイルが格納され、
    前記重複データ維持ユニットは、
    前記データ参照装置からの前記要求データの書き込み要求に対して、自ノードのストレージディレクトリを参照する機能と、
    前記判定の結果、前記ローカルストレージの前記論理的ブロック及び前記物理的ブロックに空きが有る場合には、前記同一内容のデータの重複書き込みを許容する機能と、
    前記論理的ブロックに空きが有り前記物理的ブロックに空きが無い場合には、前記ストレージディレクトリから重複した前記物理的ブロックへのポインタを削除し、空きブロックを確保してこの空きブロックに前記要求データを格納すると共に、前記自ノード若しくは前記他ノードの異なる前記ファイルに前記データと同一のデータが存在する場合には、前記特定ノードに1つの実データを残し他の同一のデータへの前記リンクを張って同一データを複数保持する機能と、
    前記ストレージディレクトリの値を更新するする機能とを有する
    ことを特徴とする記憶装置ユニット。
  11. 自律分散型ファイルシステムへのデータアクセス方法であって、
    前記自律分散型ファイルシステムは、データ参照装置である複数のサーバが複数のアクセスパスにより繋がれており、各アクセスパスは複数の記憶装置ユニットに繋がれている、ファイルシステムであり、
    前記各記憶装置ユニットは、ストレージインタフェースと、ローカルコントローラとローカルストレージを備えており、
    前記各ローカルコントローラは、自ノードの前記記憶装置ユニットに対するデータの書き込みや読み出しを、該記憶装置ユニットの空き容量に応じて管理するためのテーブルであるストレージディレクトリを備えており、
    前記各記憶装置ユニットを構成する各ノードには、各々、固有のノードIDの値が予め与えられており、特定のノードIDを有する前記ノードが特定ノードとして設定されており、
    前記サーバからの要求データの書き込み要求を受け付け、
    前記要求データの書き込み要求に対して、前記ストレージディレクトリを参照して前記何れかのノードに関して論理的ブロック及び物理的ブロックに空きが有るかを判定し、
    前記判定の結果、前記論理的ブロック及び前記物理的ブロックに空きが有る場合には、前記データの1つの実データ及び少なくとも1つの複製データとを重複して保持し、前記判定の結果、該判定の結果、前記論理的ブロック及び前記物理的ブロックに空きが有る場合には、前記特定ノード若しくは他ノードに前記要求データの1つ以上の複製データを保持し同一内容のデータにリンクを作成し、前記判定の結果、前記論理的ブロックに空きが有り前記物理的ブロックには空きが無い場合には、前記何れかのノードに保持された重複する前記複製データもしくは前記リンクを削除して空きを確保する
    ことを特徴とするデータアクセス方法
  12. 請求項11において
    前記ノードに関して前記物理的ブロックに空きが有る場合には、前記特定ノードに1つの実データを保持し、該特定ノード若しくは他の前記ノードに1つ以上の複製データを保持しあるいは前記リンクを作成する
    ことを特徴とするデータアクセス方法。
  13. 請求項12において
    前記ファイルシステムのデータへアクセスする手順は、
    前記サーバから第1の記憶装置ユニットにデータの読み込みを要求するステップと、
    データの読み込み要求を受け取った前記第1の記憶装置ユニットに前記要求データが存在する場合に該データを前記サーバに転送するステップと、
    前記データの読み込み要求を受け取った前記第1の記憶装置ユニットに前記要求データが存在しない場合に同じデータの前記リンクの存在を探すステップと、
    前記リンクが張られている場合にリンク先の第2の記憶装置ユニットに前記データを前記第1の記憶装置ユニットに転送することを要求するステップと、
    前記第1の記憶装置ユニットからの要求を受信した前記第2の記憶装置ユニットにおいて、要求された前記データを前記第1の記憶装置ユニットに送信するステップと、
    前記第2の記憶装置ユニットから前記データを受信した前記第1の記憶装置ユニットが受信した前記データを前記サーバに送るステップを含む
    ことを特徴とするデータアクセス方法。
  14. 請求項12において
    前記ファイルシステムのデータへアクセスする手順は、
    前記サーバから第1の記憶装置ユニットにデータの読み込みを要求するステップと、
    前記データの読み込み要求を受け取った前記第1の記憶装置ユニットに前記要求データが存在する場合に該データを前記サーバに転送するステップと、
    前記データの読み込み要求を受け取った前記第1の記憶装置ユニットに前記要求データが存在しない場合に同じデータの前記リンクの存在を探すステップと、
    前記リンクが張られている場合にンク先の第2の記憶装置ユニットに前記データを前記第1の記憶装置ユニットに転送することを要求するステップと、
    前記第1の記憶装置ユニットからの要求を受信した前記第2の記憶装置ユニットにおいて、要求された前記データを前記サーバに送るステップを含む
    ことを特徴とするデータアクセス方法。
JP2013029852A 2013-02-19 2013-02-19 自律分散重複排除ファイルシステム、記憶装置ユニット及びデータアクセス方法 Expired - Fee Related JP6021680B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013029852A JP6021680B2 (ja) 2013-02-19 2013-02-19 自律分散重複排除ファイルシステム、記憶装置ユニット及びデータアクセス方法
US14/184,128 US20140237202A1 (en) 2013-02-19 2014-02-19 System for preventing duplication of autonomous distributed files, storage device unit, and data access method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013029852A JP6021680B2 (ja) 2013-02-19 2013-02-19 自律分散重複排除ファイルシステム、記憶装置ユニット及びデータアクセス方法

Publications (2)

Publication Number Publication Date
JP2014160311A JP2014160311A (ja) 2014-09-04
JP6021680B2 true JP6021680B2 (ja) 2016-11-09

Family

ID=51352159

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013029852A Expired - Fee Related JP6021680B2 (ja) 2013-02-19 2013-02-19 自律分散重複排除ファイルシステム、記憶装置ユニット及びデータアクセス方法

Country Status (2)

Country Link
US (1) US20140237202A1 (ja)
JP (1) JP6021680B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9659047B2 (en) * 2014-12-03 2017-05-23 Netapp, Inc. Data deduplication utilizing extent ID database
US10437784B2 (en) * 2015-01-30 2019-10-08 SK Hynix Inc. Method and system for endurance enhancing, deferred deduplication with hardware-hash-enabled storage device
WO2017068617A1 (ja) * 2015-10-19 2017-04-27 株式会社日立製作所 ストレージシステム
WO2017109822A1 (ja) * 2015-12-21 2017-06-29 株式会社日立製作所 重複排除機能を有するストレージシステム
US20180181676A1 (en) * 2016-12-22 2018-06-28 Google Inc. Nodes in directed acyclic graph
JP6815277B2 (ja) * 2017-05-24 2021-01-20 ルネサスエレクトロニクス株式会社 半導体装置及びデータ処理システム
US11269531B2 (en) * 2017-10-25 2022-03-08 International Business Machines Corporation Performance of dispersed location-based deduplication
US11093446B2 (en) * 2018-10-31 2021-08-17 Western Digital Technologies, Inc. Duplicate request checking for file system interfaces
JP2020086477A (ja) * 2018-11-15 2020-06-04 株式会社日立製作所 大規模ストレージシステム及び大規模ストレージシステムにおけるデータ配置方法
US11138154B2 (en) 2019-05-03 2021-10-05 EMC IP Holding Company, LLC System and method for offset-based deduplication
US10963437B2 (en) 2019-05-03 2021-03-30 EMC IP Holding Company, LLC System and method for data deduplication
US10733158B1 (en) * 2019-05-03 2020-08-04 EMC IP Holding Company LLC System and method for hash-based entropy calculation
US10817475B1 (en) 2019-05-03 2020-10-27 EMC IP Holding Company, LLC System and method for encoding-based deduplication
US10990565B2 (en) 2019-05-03 2021-04-27 EMC IP Holding Company, LLC System and method for average entropy calculation
CN110247973B (zh) * 2019-06-17 2021-09-24 华云数据控股集团有限公司 数据读取、写入的方法及文件网关
CN112181899A (zh) * 2019-07-05 2021-01-05 中兴通讯股份有限公司 一种元数据的处理方法、装置及计算机可读存储介质
JP7102460B2 (ja) * 2020-05-27 2022-07-19 株式会社日立製作所 分散ストレージ装置および分散ストレージ装置におけるデータ管理方法
US11853568B2 (en) * 2020-10-21 2023-12-26 EMC IP Holding Company LLC Front-end offload of storage system hash and compression processing
CN114943021B (zh) * 2022-07-20 2022-11-08 之江实验室 一种tb级增量数据筛选方法和装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8001085B1 (en) * 2003-11-25 2011-08-16 Symantec Operating Corporation Remote data access for local operations
JP4690783B2 (ja) * 2005-06-08 2011-06-01 株式会社日立製作所 ボリューム管理システムおよびその方法
US20120109907A1 (en) * 2010-10-30 2012-05-03 International Business Machines Corporation On-demand data deduplication
US8538926B2 (en) * 2011-03-08 2013-09-17 Rackspace Us, Inc. Massively scalable object storage system for storing object replicas
US9471586B2 (en) * 2013-01-10 2016-10-18 International Business Machines Corporation Intelligent selection of replication node for file data blocks in GPFS-SNC

Also Published As

Publication number Publication date
JP2014160311A (ja) 2014-09-04
US20140237202A1 (en) 2014-08-21

Similar Documents

Publication Publication Date Title
JP6021680B2 (ja) 自律分散重複排除ファイルシステム、記憶装置ユニット及びデータアクセス方法
US11218539B2 (en) Synchronous replication for storage
US20230013281A1 (en) Storage space optimization in a system with varying data redundancy schemes
US20240118977A1 (en) Incremental backup to object store
WO2020010503A1 (zh) 基于多层一致性哈希的分布式数据存储方法与***
JP5427533B2 (ja) 階層ストレージ管理システムにおける重複ファイルの転送方法及びシステム
US20200117362A1 (en) Erasure coding content driven distribution of data blocks
WO2014183708A1 (zh) 一种实现分布式文件***块存储的方法及***
US11748208B2 (en) Persistent memory architecture
US10031682B1 (en) Methods for improved data store migrations and devices thereof
US11768624B2 (en) Resilient implementation of client file operations and replication
US20170039119A1 (en) System, Method and Computer Program Product for Recovering Stub Files
US20210334241A1 (en) Non-disrputive transitioning between replication schemes
JP2020510265A (ja) 複合集合体アーキテクチャー
US8117493B1 (en) Fast recovery in data mirroring techniques
US10331362B1 (en) Adaptive replication for segmentation anchoring type
EP3616069B1 (en) Methods for improved data replication in cloud environments and devices thereof
US11216204B2 (en) Degraded redundant metadata, DRuM, technique
JP6671708B2 (ja) バックアップリストアシステム及びバックアップリストア方法
JP2021060818A (ja) ストレージシステムおよびデータ移行方法
JP7306665B2 (ja) ストレージ装置、データ移行方法、プログラム
US11748310B2 (en) Dependency aware improvements to support parallel replay or parallel replication of operations which are directed to a common node
JP2011180658A (ja) 分散ファイルシステムにおける冗長化方法

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140908

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150828

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160804

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161004

R150 Certificate of patent or registration of utility model

Ref document number: 6021680

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees