JP5876592B2 - ファイルストレージシステムとファイルクローニング方法 - Google Patents

ファイルストレージシステムとファイルクローニング方法 Download PDF

Info

Publication number
JP5876592B2
JP5876592B2 JP2014551439A JP2014551439A JP5876592B2 JP 5876592 B2 JP5876592 B2 JP 5876592B2 JP 2014551439 A JP2014551439 A JP 2014551439A JP 2014551439 A JP2014551439 A JP 2014551439A JP 5876592 B2 JP5876592 B2 JP 5876592B2
Authority
JP
Japan
Prior art keywords
file
parent
volume
clone
identification information
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
JP2014551439A
Other languages
English (en)
Other versions
JP2015515034A (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 JP2015515034A publication Critical patent/JP2015515034A/ja
Application granted granted Critical
Publication of JP5876592B2 publication Critical patent/JP5876592B2/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system

Description

本発明は、ファイルストレージシステムとファイルクローニング方法に関する。
近年ファイル複製処理の高速化と記憶デバイスの使用容量削減を目的とし、ファイルストレージに格納される複製元ファイルの物理格納データを、複製先のファイル(クローンファイル)が共有するファイルクローニング技術が広く使われるようになった。特許文献1には、複製元ファイルと物理格納データを共有するスナップショットファイルを作成し、更にスナップショットファイルに対する差分データを管理するクローンファイルを作成する技術が開示されている。
また、特許文献2には、複製元ファイルと物理格納データを共有するスナップショットファイルに対して、複製元ファイルをオフラインストレージに移動する技術が開示されている。
米国特許7409511号公報 米国特許出願公開2009/0043978号明細書
一つの複製元ファイルに対し多数のクローンファイルを作成する場合に、複製元ファイルおよびスナップショットファイルの物理格納データにアクセスが集中する。そのため、物理データを格納するストレージデバイスが、システム性能上のボトルネックになるという問題がある。すなわち、前記特許文献1の発明を用いた場合、同一ボリューム内部の複製元ファイルに対してのみしかクローンファイルを作成できないという制約があった。
そのため、一つの複製元ファイルに対し多数のクローンファイルを作成する場合には、ボリュームを構成する記憶デバイスにSSD(Solid State Drive)などの高性能だが、高価の記憶デバイスを用いる必要があり、装置コストが大きくなる点が課題であった。
前記特許文献1と特許文献2を組み合わせた場合、複製元ファイルの物理格納データをSSDに移動することが可能となる。しかし、スナップショットファイルと複製元ファイルとの間の差分データは元のボリュームに残ってしまうため、複製元ファイルとスナップショットファイルの差分が大きい場合には、やはり元のボリュームに高価な記憶デバイスが必要となる。
また、スナップショットファイルは複製元ファイルと同一ボリュームにしか作成できないため、例えば高性能なボリュームや装置にある複製元ファイルに対してクローンファイルを作成するといったこともできない。
つまり、従来技術においては性能要件に応じてクローンファイルの親ファイル(従来技術のスナップショットファイルに相当)とクローンファイルを移動可能とすること、および異なるボリュームや装置にある親ファイルに対してクローンファイルを作成可能とすることが課題であった。
そこで、本発明の目的は、記憶デバイスの使用容量をより多く削減できるボリュームまたはストレージ装置間を跨るファイルクローニング方法とそのシステムを提供することにある。
前記課題を解決するため、本発明では異なるボリュームや装置にある親ファイルに対してクローンファイルを作成する手段と、クローンファイルと親ファイルをボリューム、装置をまたがって移動する手段を提供する。
具体的には、ファイルストレージ装置が、ストレージ装置やボリューム間で親ファイルを一意に識別可能な識別子を有する仮想親ファイルを作成し、同識別子を用いて親ファイルのブロックレイアウト情報を取得する制御を行う。
すなわち、ファイルストレージは、クローンファイルを作成するボリュームに仮想親ファイルを作成し、仮想親ファイルに対する参照ポインタとして使用することで、異なるボリュームや装置にある親ファイルに対するクローンファイル作成を可能とする。また、ファイルストレージは前記仮想親ファイルの作成処理と、仮想親ファイルで指示される親ファイル識別子の切り替え処理を組み合わせることで、クローンファイルと親ファイルの装置やボリュームをまたがった移動を可能とする。
本発明により、ボリュームまたはストレージ装置間をまたがって、複製元ファイルとクローンファイルの物理格納データの共有するため、記憶デバイスの使用容量をより多く削減できる。
図1は、第1の実施形態のシステム構成を示すブロック図である。 図2は、第1の実施形態のハードウェア構成を示すブロック図である。 図3Aは、第1の実施形態のソフトウェア構成を示すブロック図である。 図3Bは、記憶デバイスとLUとボリュームの関係を示すブロック図である。 図4は、従来技術のファイルシステム管理情報を示す説明図である。 図5は、第1の実施形態のファイルシステム管理情報を示す説明図である。 図6は、第1の実施形態にファイルのデータ管理法を示す説明図である。 図7は、第1の実施形態のクローンファイルのデータ管理法を示す説明図である。 図8は、第1の実施形態のuuidテーブルを示す説明図である。 図9は、第1の実施形態のボリューム管理テーブルを示す説明図である。 図10は、第1の実施形態のファイルクローニングモジュールの、クローンファイル作成処理を示すフローチャート図である。 図11は、第1の実施形態のファイルシステムモジュールの、クローンファイルのリード処理を示すフローチャート図である。 図12は、第1の実施形態のファイルシステムモジュールの、クローンファイルのライト処理を示すフローチャート図である。 図13は、第1の実施形態のファイルシステムモジュールの、クローンファイルの削除処理を示すフローチャート図である。 図14は、第1の実施形態のファイルクローニングモジュールの、クローンファイルのスプリット処理を示すフローチャート図である。 図15は、第1の実施形態のファイル移動プログラムの、ローカルボリュームから他のボリュームへの親ファイルの移動処理を示すフローチャート図である。 図16は、第1の実施形態のファイル移動プログラムの、他のボリュームからそれ以外のボリュームへの親ファイルの移動処理を示すフローチャートである。 図17は、第1の実施形態のファイル移動プログラムの、クローンファイルの移動処理を示すフローチャート図である。 図18は、第1の実施形態のクローンファイル管理画面を示す説明図である。 図19は、第2の実施形態の情報処理システムの全体構成を示すブロック図である。 図20は、第2の実施形態のソフトウェア構成を示すブロック図である。 図21は、第2の実施形態におけるファイルシステム管理情報を示す説明図である。 図22は、第2の実施形態のクローンファイルのデータ管理方法を示す説明図である。 図23は、第2の実施形態のuuidテーブルを示す説明図である。 図24は、第2の実施形態のAPI管理テーブルを示す説明図である。 図25は、第2の実施形態のアカウント管理テーブルを示す説明図である。 図26は、第2の実施形態のファイルクローニングモジュールの、親ファイル参照先切り替え処理のフローチャートである。 図27は、第2の実施形態の外部ファイルストレージ追加画面を示す説明図である。 図28は、第3の実施形態のソフトウェア構成を示すブロック図である。 図29は、第3の実施形態のファイルハッシュテーブルを示す説明図である。 図30は、第3の実施形態の重複排除プログラムの、ボリューム内の重複排除処理を示すフローチャート図である。 図31は、第3の実施形態の重複排除プログラムの、ボリューム間の重複排除処理を示すフローチャート図である。
以下、図面を参照しながら本発明の実施の形態を説明する。なお、以下の説明では、「管理テーブル」等の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。また、データ構造に依存しないことを示すために「管理テーブル」を「管理情報」と呼ぶことができる。
また、「プログラム」を主語として処理を説明する場合がある。そのプログラムは、プロセッサ、例えば、CPU(Central Processing Unit)によって実行されるもので、定められた処理をするものである。なお、適宜に記憶資源(例えばメモリ)及び通信インターフェース装置(例えば、通信ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。プロセッサは、CPUの他に専用ハードウェアを有していても良い。コンピュータプログラムは、プログラムソースから各コンピュータにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアなどで提供されるものであっても良い。
また、各要素例えば、ファイルブロック、ディスクブロック、LU(Logical Unit)などは番号などで識別可能であるが、識別可能な情報であれば、名前など他種の識別情報が用いられても良い。本発明の図及び説明において同一部分には同一符号を付与しているが、本発明が本実施例に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。また、特に限定しない限り、各構成要素は複数でも単数でも構わない。
(1)第1実施形態
まず、本発明の第1の実施形態である同一ストレージ装置内の異なるボリューム間でのファイルクローニング方法について、図1から図18を用いて説明する。
(1−1)第1実施形態の構成
<全体構成>
図1は、第1実施形態に係るシステムの構成を示すブロック図である。第1実施形態に係るシステムは、1台以上のファイルストレージ300と、1台以上のクライアントサーバ200と、1台以上の管理サーバ100と、を備える。ファイルストレージ300とクライアントサーバ200と管理サーバ100とは、ローカルエリアネットワーク400を介して通信可能に接続される。
ファイルストレージ300は、クライアントサーバ200により生成されるファイルに対する制御を行うコンピュータである。ファイルストレージ300はクライアントサーバ200に対してファイルまたはディレクトリと呼ばれる管理単位を用いてデータを格納する手段を提供する。なお、ここでいうファイルとは、ファイルストレージ300とクライアントサーバ200の間で共通するデータの管理単位であり、実体は後述する記憶デバイス324上に格納された物理格納データとなる。
また、ディレクトリとは0個以上のファイルまたはディレクトリをまとめて管理するための、ファイルストレージ300とクライアントサーバ200の間で共通する管理構造である。なお、クライアントサーバ200はディレクトリとファイルを木構造で表した文字列であるファイルパスを用いることで、ファイルストレージ300にアクセス対象とするファイルを指定する。クライアントサーバ200は、パーソナルコンピュータ、汎用サーバ又はメインフレーム等のコンピュータであり、オフィスでの文書作成業務や、メールサーバやWebサーバなどの用途で使用される。
管理サーバ100は、クライアントサーバ200と同様に、パーソナルコンピュータ、汎用サーバ又はメインフレーム等のコンピュータである。管理サーバ100はキーボード、スイッチ、ポインティングデバイス、マイクロフォン等の情報入力装置(図示せず)及びモニタディスプレイ、スピーカ等の情報出力装置(図示せず)を備える。
ローカルエリアネットワーク400は、ファイルストレージ300、クライアントサーバ200、管理サーバ100が接続するコンピュータネットワークである。ローカルエリアネットワーク400の例としては、イーサネット(Ethernet)(登録商標)が好適である。ローカルエリアネットワーク400の通信プロトコルとしては、TCP/IP(Transmission Control Protocol/Internet Protocol)やUDP/IP(User Datagram Protocol/Internet Protocol)が好適である。
また、ファイルやディレクトリの送受信に用いるプロトコルとしては、NFS(Network File Storage)、CIFS(Common Internet File System)、HTTP(Hyper Transport Transfer Protoco)、iSCSI(Internet Small Computer System Interface)などが好適である。
ファイルストレージ300は、ローカルエリアネットワーク400を介して、クライアントサーバ200から送信されたファイル単位のデータアクセス要求を受信し、データアクセス要求に対する処理結果をクライアントサーバ200に送信する。また、ローカルエリアネットワーク400には、管理サーバ100も接続されている。ファイルストレージ300は、ローカルエリアネットワーク400を介して、管理サーバ100から送信される管理アクセス要求を受信し、管理アクセス要求に対する処理結果を管理サーバ100に送信する。
<ハードウェア構成>
図2は、第1実施形態のファイルストレージ300のハードウェア構成を示すブロック図である。
ファイルストレージ300は、クライアントサーバ200からのファイル操作要求を処理するファイルサーバ310と、ファイルのデータを物理的に格納するディスクサブシステム320から構成される。ファイルサーバ310は、CPU311(Central Processing Unit)、メインメモリ312、内蔵ディスク315、を備える。
ファイルストレージ300は、さらに、ローカルエリアネットワーク400に接続するためのネットワークIF(InterFace)313と、ディスクサブシステム320に接続するためのストレージIF314とを備える。CPU311は、内蔵ディスク315に格納された各種プログラムをメインメモリ312上に読み出して実行することにより、本実施形態に係るファイルサーバ310の各種機能を実現する。
メインメモリ312は、後述する各種プログラムを格納する記憶装置である。内蔵ディスク315は、後述する各種プログラムや管理情報を格納する不揮発性記憶装置である。ネットワークIF313は、イーサネットインターフェースカード、無線LAN(Local Area Network)インターフェースカード等のネットワークインターフェースカードによって構成される。
ネットワークIF313は、ファイルサーバ310をクライアントサーバ200や管理サーバ100に接続するためのデータ入出力アダプタとして機能する。ストレージIF314は、SCSI(Small Computer System InterFace)インターフェースカード、ファイバチャネル(Fibre Channel)インターフェースカード等によって構成される。ストレージIF314は、ファイルサーバ310をディスクサブシステム320に接続するためのデータ入出力アダプタとして機能する。
ディスクサブシステム320は、CPU321、メインメモリ322、一つ以上の記憶デバイス325、326、およびディスクIF323を備える。なお記憶デバイス325、326を区別しない場合は、まとめて記憶デバイス324とも記す。
CPU321は、メインメモリ322に読み出した各種プログラムを実行することにより、本実施形態に係るディスクサブシステム320の各種機能を実現する。メインメモリ322は、上記各種プログラムを格納する半導体記憶装置である。ディスクIF323は、ディスクサブシステム320をファイルサーバ310に接続するためのデータ入出力アダプタとして機能する。
記憶デバイス(SSD)325、記憶デバイス(SAS)326は、それぞれ異なるアクセス特性を有する不揮発性記憶装置である。例えば、これらの記憶デバイス325、326は互いに、データの読み出し速度及びデータの書き込み速度の少なくともいずれかが異なる。記憶デバイス(SSD)325は、記録媒体としてSSDを用い、データアクセスに対して相対的に低遅延で応答を返すことができる半面、容量あたりの価格が相対的に高価である。
記憶デバイス(SAS)326は、記録媒体としてSAS(Serial Attached SCSI)インターフェースを有するHDD(Hard Disk Drive)を用い、記憶デバイス(SSD)3213と比べた場合、データアクセスに対して遅延は大きいものの、容量あたりの価格が安価である。これらの記憶デバイス324はデータ格納装置として使用される。また、SATA(Serial ATA)タイプのHDDや光ディスクデバイス、光磁気ディスクドライブ、磁気テープデバイスなどの記憶デバイスも利用可能である。
ファイルサーバ310とディスクサブシステム320とは、ストレージIF314およびディスクIF323を介して接続される。ストレージIF314およびディスクIF323とは、スイッチを介して接続する形態であってもいいし、スイッチを介さずに直接接続する形態であってもいい。
ストレージIF314およびディスクIF323の間の通信プロトコルとしては、SCSIやiSCSIなど通信プロトコルが好適である。なお、本実施形態ではファイルサーバ310とディスクサブシステム320が異なる2つの装置から構成されている例を示しているが、ファイルサーバ310とディスクサブシステム320が一体の装置により構成されていてもよい
<ソフトウェア構成>
図3Aは、本実施形態のファイルストレージ300のソフトウェア構成例を示すブロック図である。図3Bは、記憶デバイスとLUとボリュームの関係を示すブロック図である。まず、図3Aでファイルストレージ300のソフトウェア構成を説明する。
ファイルサーバ310は、オペレーティングシステムプログラム3121、ネットワークファイルサービスプログラム3122、ファイルサーバ管理プログラム3123、ファイル移動プログラム3124、ネットワークファイルクライアントプログラム3126を実行する。またファイルサーバ310は、ボリューム管理テーブル3151を内蔵ディスク315に記憶している。
オペレーティングシステムプログラム3121は、入出力制御機能、ディスク、メモリ等の記憶装置への読み書き制御機能などを有し、他のプログラムにこれらの機能を提供する。オペレーティングシステムプログラム3121は内部にファイルシステムモジュール3127と、ボリューム管理モジュール3125を含む。
ファイルシステムモジュール3127は、記憶デバイス324に格納されたデータをファイル単位またはディレクトリ単位で管理する機能を有し、これらのファイル、ディレクトリに対するアクセスIFを上位プログラムに対して提供する。ファイルシステムモジュール3127は、ファイル、ディレクトリのアクセス処理の他に、ファイルの複製処理を行うファイルクローニングモジュール3128とスナップショットモジュール3129を含む。
ファイルクローニングモジュール3128は、複製元ファイルと物理格納データを共有する、クローンファイル5003と呼ばれる複製ファイルを作成するファイルクローニング機能を提供する。クローンファイル5003は、複製直後は全領域で複製元ファイルの物理格納データを参照するが、ファイルライト処理により更新が発生した場合に、更新箇所については更新データ用に新規に割り当てた物理格納領域を参照する。
スナップショットモジュール3129は、複製元ファイルのある時点の静止化イメージを持つスナップショットファイルを作成する機能を提供する。スナップショットファイルも複製元ファイルと物理格納データを共有する点でクローンファイル5003と共通するが、複製元ファイルへのファイルライト時が発生した際に、新規に割り当てた物理格納領域に、更新データではなく、更新前のデータを複製する点で、クローンファイル5003と異なる。
ボリューム管理モジュール3125は、図3Bのように、ディスクサブシステム320が提供するLU(Logical Unit、後述)を論理的に結合し、一つの連続した論理記憶領域であるボリューム5100として管理する。また、ボリューム管理モジュール3125は、ファイルシステムモジュール3127に対してボリューム5100にディスクブロック5022(後述)を格納するためのアクセスIFを提供する。ボリューム管理モジュール3125の好例として、Linux(登録商標)OSに含まれるLVM(Logical Volueme Manager)があげられる。
ネットワークファイルサービスプログラム3122は、クライアントサーバ200に対して、記憶デバイス324に格納されたデータをファイル単位またはディレクトリ単位でアクセスするIFを提供する。ネットワークファイルサービスプログラム3122は、クライアントサーバ200からファイルに対するファイル操作要求を受信した際には、ファイルシステムモジュール3127を介して、ディスクサブシステム320に格納されたファイルの読み書きを行う。
ファイルサーバ管理プログラム3123は、管理サーバ100上で動作する管理GUIプログラム1001と連携し、管理者がファイルサーバ310の管理するためのインターフェースを提供する。
ファイル移動プログラム3124はボリューム5100内部およびボリューム5100またがりでファイルを複製する機能をクライアントサーバ200と上位サーバに提供する。
ネットワークファイルクライアントプログラム3126は、外部のファイルストレージが提供するネットワークファイルサービスに対してファイル操作要求を発行し、応答を受け取るためのIFを他のプログラムに提供する。
ボリューム管理テーブル3151は、ボリューム管理モジュール3125が管理するボリューム5100の管理情報を含む。ボリューム管理テーブル3151の詳細は、図9を用いて後述する。
ディスクサブシステム320は、ディスク制御プログラム3221を実行する。また、ディスクサブシステム320は、記憶デバイス324にファイルシステム管理情報3240を記憶する。
ディスク制御プログラム3221は、図3Bのように、一つ以上の記憶デバイス324を論理的に結合し、一つの連続した記憶領域であるLU6100として管理する。ディスク制御プログラム3221は、データをブロック単位でLU6100に格納するIFをファイルサーバ310に提供する。なお、ここでいうブロックとは記憶デバイス324の物理格納領域に固定長のデータを格納するための論理的な単位のことを言う。ディスク制御プログラム3221は、ファイルサーバ310からディスクブロック番号と長さを指定したIO(Input/Output)要求を受信した際に、対応する記憶デバイス324へのIO要求を発行し、ファイルサーバ310に応答を返す制御を行う。
ファイルシステム管理情報3240はファイルシステムモジュール3127がボリューム5100内のファイルを管理するために用いる管理情報であり、ボリューム5100につき一つ存在する。ファイルシステムモジュール3127は、ファイルシステム管理情報3240をメインメモリ312上に読み込み、ファイルとディレクトリを管理するための制御を行う。ファイルシステム管理情報3240の詳細は図5を用いて後述する。
管理サーバ100は管理GUIプログラム1001を実行する。なお、図中では省略しているが管理GUIプログラム1001は、管理サーバ100のメインメモリ上に格納され、CPUが実行する。管理GUIプログラム1001は管理者に対してファイルサーバ310を操作するためのIFを提供する。管理者が行うファイルサーバ310に対する操作内容は、管理GUIプログラム1001がファイルサーバ管理プログラム3123へ通知しファイルサーバ310に反映する。
(1−2)第1実施形態の概要
本実施形態においては、ファイルクローニングモジュール3128は、異なるボリューム5100上にある親ファイル5001に対してクローンファイル5003を作成する手段を提供する。
ファイルクローニングモジュール3128は異なるボリュームにあるファイルを複製する際に、複製元ファイルの静止化イメージ(親ファイル5001)に対して、ファイルストレージ300内部で親ファイルを一意に識別するための識別子(uuid)を持つ仮想親ファイル5002を作成し、クローンファイル5003の仮想的な親ファイルとする。
また、ファイルシステムモジュール3127は、クローンファイル5003に対するファイル操作要求受信時に、仮想親ファイル5002の有するuuid情報から親ファイル5001のブロックレイアウトテーブル5006を取得する制御を行い、親ファイル5001の物理格納データにアクセスする。また、親ファイル5001の移動時には、仮想親ファイル5002のuuidの参照先の切り替え制御を行う。このように、仮想親ファイル5002を設けることで、クローンファイルは、参照する親ファイルを切り替え可能となる。
クローンファイルが多数あるような場合でも更新対象は仮想親ファイルのみとなるため、
クローンファイル数によらず一定時間での切り替え処理が可能である。
これにより、クローンファイル5003を異なるボリュームの親ファイル5001に対して作成することや、親ファイルやクローンファイルを異なるボリュームに移動することが可能となる。その結果、管理者は性能要件に応じて親ファイルとクローンファイルを格納する記憶デバイス324を選択することできる。例えば、多数のクローンファイル5003を有する親ファイル5001を高速な記憶デバイス(SSD)325に格納することで、より多くのクローンファイルを作成することが可能となる。
また、本実施形態では、複数の異なるボリューム5100に格納した親ファイル5001の複製に対して、親ファイル5001のアクセスを分散することも可能である。その結果、親ファイル5001のアクセス性能を高めることができるようになる。例えば、単一の記憶デバイス(SSD)325で十分な性能を確保できない場合に、他の記憶デバイス(SSD)に親ファイル5001の複製を作成することで、より多くのクローンファイル5003を作成することが可能となる。
(1−3)第1実施形態の実装例
<ファイル管理方法>
第1実施形態では、ファイルシステムモジュール3127は通常ファイルの他に、複製元ファイルの静止化イメージである親ファイル5001と、親ファイル5001と物理格納データを共有するクローンファイル5003と、を管理する。なお、本発明での通常ファイルは、親ファイル5001、クローンファイル5003、親クローンファイル5000(後述)、仮想親ファイル5002(後述)以外のファイルの総称とする。また、親ファイル5001と複製元ファイルの差分データの管理は、複製元ファイル自身をクローンファイル化した親クローンファイル5000に置き換えることで実現する。以下、これらのファイルを管理するために用いるファイルシステム管理情報3240について、従来方式と本実施形態の実装例について説明する。
図4は従来のファイルクローニング技術におけるファイルシステム管理情報3240の説明図である。ファイルシステム管理情報3240には、ボリューム5100内の各ファイルに対して、ファイルの管理情報を記憶するinodeと、ファイルの物理格納データの格納位置を管理するブロックレイアウトテーブル5006を有する。
従来のファイルクローニング技術では、inode5005を用いて同一ボリューム内の親ファイル5001、クローンファイル5003、親クローンファイル5000の参照関係を管理する。また、ファイルシステムモジュール3127は、ブロックレイアウトテーブル5006を用いて各ファイルの物理格納データを管理する。この場合、親ファイル5001が元のファイルのデータを管理し、クローンファイル5003と親クローンファイル5000が親ファイル5001からの差分データを管理する以下、inode5005の管理する情報ついて説明する。なお、ブロックレイアウトテーブル5006については、図6を用いて後述する。
inode番号5007は、ファイルシステムが管理するボリューム内部にてinode5005を一意に識別するための識別子である。ファイルシステムモジュール3127はファイルシステム管理情報3240から、inode番号5007に対応するinode5005を取得することができる。ファイルフラグ5013はファイルの種別を示すフラグであり、クローンファイルビット、親ファイルビット、親クローンファイルビットの3つのビットを持つ。
ファイルシステムモジュール3127はファイルフラグ5013にて、ファイルが親ファイル5001か、仮想親ファイル5002か、親クローンファイル5000かを、見分けることができる。ファイル属性5009はファイルのアクセス権限を示す情報である。ファイルシステムモジュール3127はファイル操作要求受信時には、ファイル属性5009を調べ、アクセス元が操作対象ファイルの操作権限をもつかどうかを判断する。
親inode番号5008は、親ファイル5001のinode5005のinode番号5007であり、クローンファイル5003と親クローンファイル5000に対して設定する。この設定により、図4に示すようにクローンファイル5003と親クローンファイル5000が親ファイル5001を指し示せる。親クローンinode番号5014は、親クローンファイル5000のinode5005のinode番号5007であり、親ファイル5001に対して設定する。この設定により、図4に示すように親ファイル5001が親クローンファイル5000を指し示せる。参照カウンタ5010は、親ファイル5001を参照するクローンファイル5003および親クローンファイル5000の数であり、親ファイル5001に対して設定する。図4の場合は、参照するクローンファイル5003および親クローンファイル5000はそれぞれ1ファイルであるので、参照カウンタ5010は“2”となる。
図中に示す通り、クローンファイル5003、親ファイル5001、親クローンファイル5000は親inode番号5008および親クローンinode番号5014を用いることで、お互いの関係を管理する。
図5は本実施形態におけるファイルシステム管理情報3240の説明図である。本実施形態におけるファイルシステム管理情報3240は、異なるボリュームのinodeを参照するためのuuid(Universally Unique Identifier)を持つ点、およびクローンファイル5003の同一ボリューム内に仮想親ファイル5002を有する点で従来方式と異なる。以下、図4で述べた従来方式との差分について説明する。
本実施形態のファイルシステム管理情報3240は、従来のファイル種別に加え仮想親ファイル5002の管理情報を含む。仮想親ファイル5002には、ファイルシステムモジュール3127が、親ファイル5001の代わりとして使用するために必要な情報が格納される。この場合、仮想親ファイル5002自身は物理格納データを管理しないため、ブロックレイアウトテーブル5006は空となる。
各inode5005のファイルフラグ5013は、従来のビットに加え、仮想親ファイルビットを含む。仮想親ファイルビットは仮想親ファイル5002に対して設定する。また、inode5005は親inode番号5008の代わりにuuidテーブル5012を有する。
クローンファイル5003と親クローンファイル5000のinode5005のuuidテーブル5012には仮想親ファイル5002のuuidが、仮想親ファイル5002のinode5005のuuidテーブル5012には一つ以上の親ファイル5001のuuidが、親ファイル5001のinode5005のuuidテーブル5012には一つ以上の仮想親ファイル5002のuuidを設定する。uuidテーブル5012の格納情報の詳細については図8を用いて後述する。また、親ファイル5001のinode5005の親クローンuuid5015には親クローンファイル5000のuuidを設定する。
図5に示す通り、クローンファイル5003、親ファイル5001、親クローンファイル5000、仮想親ファイル5002は、本発明の特徴であるuuidを格納するuuidテーブル5012および親クローンuuid5015を用いることで、お互いの関係を管理できる。
図6はブロックレイアウトテーブル5006の説明図である。ファイルシステムモジュール3127はブロックレイアウトテーブル5006を用いて、ファイルに含まれる物理格納データの格納位置を管理する。物理格納データの管理では、ファイル内のデータの管理単位であるファイルブロック5019と、ボリューム5100のデータ格納位置を示すディスクブロック5022のアドレス変換を行い、記憶デバイス324内の物理格納領域を特定する。
なお、厳密にいえばディスクブロック5022の記憶デバイス324内の物理格納位置は、ボリューム管理モジュール3125およびディスク制御プログラム3221のアドレス変換後に決まる。ここでは説明の簡略化のため、ディスクブロック5022と記憶デバイス324の物理格納領域が一対一に対応することを想定する。また、ファイルブロック5019およびディスクブロック5022のブロック長が4KBであることを想定する。
ファイルシステムモジュール3127は、一つ以上の連続するファイルブロックを、ファイルデータ5018として上位プログラムに提供する。ブロックレイアウトテーブル5006の各行はそれぞれファイルデータ5018に対応し、ファイルデータ5018のファイルオフセット5006A、ディスク開始位置5006B、ブロック長5006Cを含む。
ファイルオフセット5006Aは、ファイルデータ5018に割り当てられたファイルブロック5019の先頭番号を示す。ディスク開始位置5006Bはファイルデータ5018に割り当てられたディスクブロック5022の先頭番号を示す。ブロック長5006Cはファイルデータ5018に含まれるブロック数を示す。
なお、ファイルブロック5019には、ファイルデータ5018を持たないホールが存在してもよい。その場合、ファイルブロック5019は対応するディスクブロック5022を持たないため、ファイルブロック数に対してより少ないディスクブロック数にてファイルを構成することができる。なお、ファイルシステムモジュール3127はホールに対するリード要求を受信した場合、全領域が0で埋められたゼロデータを応答する。
図7はクローンファイルのデータ管理方法を示した説明図である。ファイルシステムモジュール3127は、クローンファイル5003のファイルブロック5019と、親ファイル5001のファイルブロック5020からクローンファイル5003のデータ(クローンファイルデータ5021)を構成する。
クローンファイルデータ5021は、クローンファイル5003のファイルブロック5019がホールでない場合にはクローンファイル5003のファイルブロック5019を含む。それ以外の場合、親ファイル5001のファイルブロック5020がホールでない場合、クローンファイルデータ5021は、親ファイル5001のファイルブロック5020を含む。クローンファイル5003のファイルブロック5019と親ファイル5001のファイルブロック5020がホールの場合、該当領域はホールとして処理される。なお、クローンファイル5003のファイルブロック5019と親ファイル5001のファイルブロック5020は、図5で述べた制御にて管理する。
図8はuuidテーブル5012の説明図である。uuidテーブル5012の各行はファイルストレージ300内のinode5005をファイルストレージ300内で一意に識別するための識別子となり、ボリュームID5012BとファイルID5012Cを含む。
ボリュームID5012Bはボリューム管理モジュール3125が管理するボリューム5100を、ファイルストレージ300内で一意に識別するための識別子である。ファイルIDはボリューム5100内部でファイルを一意に識別する識別子でありinode番号5007を使用する。
図9はボリューム管理テーブル3151の説明図である。ボリューム管理テーブル3151の各行は、ボリューム管理モジュール3125が管理するボリューム5100に対応し、ボリュームID3151A、マウントポイント3151B、LU番号3151C、ファイルシステム種別3151Dからなる。
ボリュームID3151Aはファイルストレージ300内でボリューム5100を一意に識別するための識別子である。マウントポイント3151Bはボリューム5100がマウントされているファイルパスである。ここでいうマウントとはオペレーティングシステムプログラム3121がボリューム5100や周辺機器を認識しアクセス可能とする操作のことである。
上位プログラムはマウントポイント以下のファイルに対してアクセスすることで、ボリューム5100内のファイルにアクセスできる。LU番号3151Cはボリューム5100を構成する一つ以上のLUの識別子である。ファイルシステム種別3151Dはボリューム5100に作成されたファイルシステムの種別である。
<ファイル操作要求処理方式>
ファイルシステムモジュール3127は、クローンファイル5003へのファイル操作要求を受信時に、ファイルクローニングモジュール3128と連携して要求を処理する。また、クローンファイル5003や親ファイル5001の移動要求受信時には、ファイル移動プログラム3124が移動処理を行う。以降では、各ファイル操作要求とファイル移動要求に対する処理方式について説明する。
図10はクローンファイル作成処理におけるファイルクローニングモジュール3128の制御を示すフローチャート図である。ファイルクローニングモジュール3128は、ファイルサーバ管理プログラム3123から受信したクローンファイル作成コマンドに基づき以下に示すクローンファイル作成処理を実行する。
ファイルクローニングモジュール3128はクローンファイル作成コマンドを受信した場合、クローンファイル5003の作成処理を開始する(S100)。なお、クローンファイル作成コマンドにはクローンを作成する複製元ファイルのファイルパス(複製元ファイルが格納されている場所)と、作成するクローンファイル5003のファイルパス(作成したクローンファイルを格納する場所)が含まれる。
ファイルクローニングモジュール3128は、ファイルシステムモジュール3127に問い合わせ、複製元ファイルのファイルパスに対応する処理対象ファイルとそのinode5005を取得する(S101)。このステップS101実行時に、ファイルパスに対応する処理対象ファイルが見つからない場合、クローンファイル作成処理を終了する。
ファイルクローニングモジュール3128は、複製元ファイルのinode中のファイルフラグ5013の値を調べる(S102)。もし、複製元ファイルが親ファイル5001もしくは親クローンファイル5003の場合(S102のYes)はステップS104以降の処理を行う。
ファイルクローニングモジュール3128は、複製元ファイルの静止化処理を行い、親ファイル5001とする(S103)。このステップS103実行時に、親ファイル5001のファイル名を任意の別名に変更する。その後、親ファイル5001に対し、静止化前の複製元ファイルのファイルパスと同じファイルパスを持つ親クローンファイル5000を作成する。
この際、ファイルクローニングモジュール3128は親クローンファイル5000のuuidテーブルに親ファイル5001のuuidを記録し、ファイル属性5009は親ファイル5001のファイル属性5009を複製し、親ファイル5001の参照カウンタ5010を1加算する。また、親ファイル5001のinode5005の親クローンinode番号5014には、親クローンファイル5000のuuidを設定する。
ファイルクローニングモジュール3128は処理対象ファイル(複製元ファイル)のファイルパス、指定されたクローンファイル5003のファイルパス、およびボリューム管理テーブル3151から、処理対象ファイル(複製元ファイル)と指定されたクローンファイル5003とが同一のボリューム5100にあるかどうかを判断する(S104)。もし、処理対象ファイル(複製元ファイル)とクローンファイル5003が同一のボリュームにある場合(S104のYes)は、ステップS107の処理を行う。
処理対象ファイル(複製元ファイル)とクローンファイル5003が同一のボリュームにない場合(S104のNo)、ファイルクローニングモジュール3128は親ファイル5001のuuidテーブル5012を調べ、仮想親ファイル5002が同一ボリューム5100内に既に作成されているかどうかを判断する(S105)。もし、既に仮想親ファイル5002が作成されている場合(S105のYes)、ステップS107以降の処理を行う。なお、ステップS102にて処理対象ファイルが親ファイル5001でないことが分かっている場合、判定処理は省略してもよい。
仮想親ファイル5002が作成されていない場合(S105のNo)、ファイルクローニングモジュール3128は、親ファイル5001に対して仮想親ファイル5002を作成する(S106)。ファイルクローニングモジュール3128は、ボリューム管理モジュール3125から親ファイル5001のボリュームID5012Bを調べ、uuidを作成する。
その後、ファイルクローニングモジュール3128はローカルボリューム内に空ファイルを作成し、ファイルフラグ5013の仮想親フラグビットを設定して、仮想親ファイル5002とする。
その後、ファイルクローニングモジュール3128は仮想親ファイル5002のuuidテーブル5012に親ファイル5001のuuidを、親ファイル5001のuuidテーブルに仮想親ファイル5002のuuidを追加する。その後、ファイルクローニングモジュール3128は、親ファイル5001のファイル属性5009を、仮想親ファイル5002のファイル属性5009に複製する。最後に、ファイルクローニングモジュール3128は親ファイル5001の参照カウンタ5010を1加算して仮想親ファイル作成処理を終了する。
ファイルクローニングモジュール3128は、親ファイル5001が同一ボリュームにある場合親ファイル5001に対し、そうでない場合は仮想親ファイル5002に対してクローンファイル5003を作成する(S107)。
クローンファイル5003のuuidテーブル5012には同一ボリューム内に親ファイル5001がある場合に親ファイル5001のuuidを記録し、そうでない場合は、仮想親ファイル5002のuuidを記録する。なお、同一ボリューム内の親ファイル5001のuuidについては装置IDを省略し、inode番号のみを記録してもよい。また、クローンファイル5003のファイル属性5009は親ファイル5001または、仮想親ファイル5002のファイル属性5009を複製する。
最後に、親ファイル5001または仮想親ファイル5002の参照カウンタ5010を1加算しクローンファイル作成処理を終了する。
図11はクローンファイル5003に対するファイルリード処理受信時のファイルシステムモジュール3127の制御を示したフローチャートである。ファイルシステムモジュール3127は、上位プログラムからファイルリード要求を受信した際に、以下に示すクローンファイルリード処理を実行する。この際、クローンファイル5003が仮想親ファイル5002を参照している場合、ファイルシステムモジュール3127は、仮想親ファイル5002の持つ親ファイル5001のuuidから、親ファイル5001のブロックレイアウトテーブル5006を取得する制御を行う。
ファイルシステムモジュール3127はクローンファイル5003に対するファイルリード要求を受信した場合、クローンファイル5003のリード処理を開始する(S200)。ファイルリード要求には、処理対象となるクローンファイル5003のファイルパスと、リード対象となるファイルブロック5019の先頭位置と長さが含まれる。
ファイルシステムモジュール3127は、クローンファイル5003のuuidテーブル5012中のuuidに示されるinode(親候補inode5005)のファイルフラグ5013を調べ、クローンファイル5003が親ファイル5001を参照するか、仮想親ファイル5002を参照するかどうかを調べる(S201)。もし、仮想親ファイル5002を参照している場合、仮想親ファイル5002のuuidテーブル5012から本当の親ファイル5001のinode5005を取得する。
もし、uuidテーブルに複数の親ファイル5001が登録されている場合は、ファイルシステムモジュール3127は前回アクセスしたuuidの次のuuidに対する親ファイル5001のinode5005を取得する。なおここで、前回アクセスと異なるuuidを選択したのは、親ファイル5001のアクセス負荷を分散させるためである。その後、ファイルシステムモジュール3127は、親ファイル5001のinode5005から、親ファイル5001のブロックレイアウトテーブル5006を取得する。
次に、ファイルシステムモジュール3127は、リードサイズ分のバッファ領域をメインメモリ312上に確保し、ファイルパスからリード対象のクローンファイル5003のinode5005を取得する(S202)。その後、読み込み対象領域に含まれるファイルブロック5019に対してステップS203からステップS207で示す処理を行う。
次に、ファイルシステムモジュール3127は、クローンファイル5003のブロックレイアウトテーブル5006を調べ、処理中のファイルブロック5019がホールかどうかを調べる(S203)。もし、ファイルブロック5019がホールの場合(S203のNo)はS204以降の処理を、そうでない場合(S203のYes)はステップS206以降の処理を行う。
次に、ファイルシステムモジュール3127は、S201で取得したブロックレイアウトテーブル5006から親ファイル5001のファイルブロック5020がホールかどうかを判断する(S204)。もし、親ファイル5001のファイルブロック5020がホールの場合(S204のNo)、ゼロデータをバッファ領域に格納しステップS207の処理を行う。
もし、親ファイル5001のファイルブロック5020がホールでない場合(S204のYes)、ファイルシステムモジュール3127は、親ファイル5001のファイルブロック5020を記憶デバイス324から読み出し、バッファ領域に格納し、ステップS207の処理を行う(S205)。
次に、ファイルシステムモジュール3127は、クローンファイル5003のファイルブロック5019を記憶デバイス324からバッファ領域に読み込み、ステップS207の処理を行う(S206)。
次に、ファイルシステムモジュール3127はまだ処理していないファイルブロック5019が残っている場合、S201に戻り次のファイルブロック5019を処理する(S207)。
最後に、ファイルシステムモジュール3127は、バッファ領域の内容をクライアントサーバ200に応答して、ファイルリード処理を終了する(S208)。
図12はクローンファイル5003に対するファイルライト処理受信時のファイルシステムモジュール3127の制御を示したフローチャートである。ファイルシステムモジュール3127は、上位プログラムからファイルライト要求を受信した際に、以下に示すクローンファイルライト処理を実行する。この際、ファイルリード処理と同様に、仮想親ファイル5002を参照するクローンファイル5003の場合、仮想親ファイル5002から親ファイル5001のブロックレイアウトテーブル5006を取得する制御を行う。
ファイルシステムモジュール3127はクローンファイル5003に対するファイルライト要求を受信した場合、クローンファイル5003のライト処理を開始する(S300)。ファイルライト要求には、処理対象となるクローンファイル5003のファイルパスと、ライト対象となるファイルブロック5019の先頭位置と、書き込みデータが含まれる。
ファイルシステムモジュール3127は親ファイル5001のブロックレイアウトテーブル5006を取得する(S301)。本処理はステップS201と同等のため、説明を省略する。
次に、ファイルシステムモジュール3127は、S300の書き込みデータをメインメモリ312上の受信バッファに格納し、更新対象となる各ファイルブロック5020に対してS303からS307に示す処理を行う(S302)。
次に、ファイルシステムモジュール3127は、書き込みデータがファイルブロック5020の4KB分の全データを含むかどうかを判定する(S303)。これは、書き込みデータがファイルブロック5020の一部分のみの場合、ファイルブロック5020の残りの部分を読み込んだ上で更新する必要があるためである。もし、書き込みデータがファイルブロック5020の一部分のみの場合(S303のYes)、ステップS304で示す処理を行う。そうでない場合(S303のNo)、ステップS306の処理を行う。
次に、ファイルシステムモジュール3127は、親ファイル5001のファイルブロック5020がホールかどうかを調べる(S304)。これはS204と同等の処理となる。もし親ファイル5001がホールの場合(S304のNo)、ステップS306の処理を行う。
次に、ファイルシステムモジュール3127は、親ファイル5001のファイルブロック5020を記憶デバイス324からバッファ領域に読み込む(S305)。本処理はステップS204の処理と同等である。
次に、ファイルシステムモジュール3127は、処理対象のファイルブロック5020に対する書き込みデータを、記憶デバイス324に書き込む(S306)。なお、処理対象ファイルブロック5020に対しS305の処理を行っている場合、バッファ領域上のファイルブロック5020の一部を更新したデータを書き込む。
もし、ファイルシステムモジュール3127はまだ処理していないファイルブロック5020が残っている場合、S302に戻り次のファイルブロック5020を処理する(S307)。
最後に、ファイルシステムモジュール3127は、ファイルライト命令が完了したことをクライアントサーバ200に通知し、ファイルライト処理を終了する(S308)。
図13はクローンファイル5003に対する削除要求受信時のファイルシステムモジュール3127の制御を示したフローチャートである。ファイルシステムモジュール3127は、上位プログラムからクローンファイル5003または親クローンファイル5000に対する削除要求を受信した際に、以下に示すクローンファイル5003の削除処理を実行する。
ファイルシステムモジュール3127はクローンファイル5003に対する削除要求を受信した場合にクローンファイル削除処理を開始する(S400)。なお、削除要求には、処理対象となるクローンファイル5003のファイルパスが含まれる。
ファイルシステムモジュール3127は、削除対象となるクローンファイル5003のuuidテーブル5012を調べ、親ファイル5001または仮想親ファイル5002のinode5005を取得する(S401)。その後、ファイルシステムモジュール3127は、通常ファイルと同等の方法でクローンファイル5003の削除を行う。
ファイルシステムモジュール3127は、S401で得たinode5005が仮想親ファイル5002でない場合(S402のNo)、ステップS406以降の処理を行う(S402)。
S401で得たinode5005が仮想親ファイル5002である場合(S402のYes)、ファイルシステムモジュール3127は、仮想親ファイル5002の参照カウンタ5010を1減算する(S403)。
仮想親ファイル5002の参照カウンタ5010が0でない場合(S404のNo)、ファイルシステムモジュール3127は、クローンファイル5003の削除処理を終了する(S404)。
仮想親ファイル5002の参照カウンタ5010が0である場合(S404のYes)、ファイルシステムモジュール3127は、仮想親ファイル5002のuuidテーブルを参照し、先頭のuuidを親ファイル5001のuuidとして取得し、仮想親ファイル5002を削除する(S405)。
次に、ファイルシステムモジュール3127は、親ファイル5001の参照カウンタ5010を1減算する(S406)。
親ファイル5001の参照カウンタ5010が0でない場合(S407のNo)、ファイルシステムモジュール3127は、クローンファイル5003の削除処理を終了する(S407)。
親ファイル5001の参照カウンタ5010が0である場合(S407のYes)、ファイルシステムモジュール3127は、親ファイル5001を削除し、クローンファイル削除処理を終了する(S408)。親ファイル5001の削除処理は、通常ファイルと同等である。なお、この時点で親ファイル5001の参照カウンタ5010が0のため、親ファイル5001に対するクローンファイル5003、および親クローンファイル5000がないことが保障されている。
図14はクローンファイル5003に対するスプリット要求受信時のファイルクローニングモジュール3128の制御を示したフローチャートである。クローンファイル5003のスプリット処理とは、クローンファイル5003と親ファイル5001の物理格納データの共有をやめ、クローンファイル5003に親ファイル5001と共有していた物理格納データを複製する処理である。このスプリット処理の実行後、クローンファイル5003は通常ファイルとなる。
スプリット処理は、クローンファイル5003のアクセスが、他のクローンファイル5003に対するアクセスと競合し、性能要件を満たさなくなった場合に使用される。ファイルクローニングモジュール3128は、上位プログラムからクローンファイル5003のスプリット要求を受信した際に、以下に示すスプリット処理を実行する。
ファイルクローニングモジュール3128は上位プログラムから、クローンファイル5003に対するスプリット要求を受信した場合にスプリット処理を開始する(S500)。スプリット要求には、処理対象ファイルとなるクローンファイル5003のファイルパスが含まれる。
ファイルクローニングモジュール3128は親ファイル5001のブロックレイアウトテーブル5006を取得する(S501)。本処理はステップS201と同等のため、説明を省略する。
ファイルクローニングモジュール3128はクローンファイル5003に含まれるホール部分も含めた全てのファイルブロック5019に対して、ステップS503からステップS506に示す処理を行う(S502)。
ファイルクローニングモジュール3128は、処理対象のファイルブロック5019が、クローンファイル5003においてホールかどうかを調べる(S503)。これはS203と同等の処理となる。もし、処理対象のファイルブロック5019がホールではない場合(S503のYes)、ステップS506の処理を行う。
ファイルクローニングモジュール3128は、処理対象のファイルブロック5019が親ファイル5001においてホールかどうかを調べる(S504)。これはステップS204と同等の処理となる。もし親ファイル5001がホールの場合、ステップS506の処理を行う。
ファイルクローニングモジュール3128は、親ファイル5001から処理対象ファイルブロック5019に対応するファイルブロック5020を読み込み、クローンファイル5003に書き込み処理を行う(S505)。こうすることで、処理中のファイルブロック5019について、親ファイル5001と同内容のファイルブロック5019がクローンファイル5003に複製することができる。
ファイルクローニングモジュール3128はまだ処理していないファイルブロック5019が残っている場合、S502に戻り次のファイルブロック5019を処理する(S506)。
最後に、ファイルクローニングモジュール3128は親ファイル5001または仮想親ファイル5002の参照カウンタの減算処理を行う(S507)。この処理は、図13で説明したファイル削除処理におけるステップS402からステップS408と同等のため、説明は省略する。
図15は仮想親ファイル5002を持たない親ファイル5001を、別のボリュームに移動する際のファイル移動プログラム3124の制御を示したフローチャートである。ファイル移動プログラム3124は、クライアントサーバ200またはファイルサーバ管理プログラム3123から、仮想親ファイル5002を持たない親ファイル5001の移動要求を受信した際に、以下に示す親ファイル5001の移動処理を行う。
ファイル移動プログラム3124は親ファイル5001に対する移動コマンドを受信した際に、親ファイル5001が仮想親ファイル5002を持たない場合、以下に示す親ファイル5001の移動処理を行う(S600)。移動コマンドは移動元の親ファイル5001のファイルパスと移動先のファイルパスを含む。なお、ファイル移動プログラム3124は、移動ファイルのファイルフラグ5013から移動対象ファイルが親ファイル5001であることを、uuidテーブル5012から仮想親ファイル5002を持たないことをそれぞれ判断する。
ファイル移動プログラム3124は移動元の親ファイル5001(移動対象の親ファイル)の複製を移動先のボリュームに作成する(S601)。この際、親ファイル5001の有するホールを除く全てのファイルブロック5020、ファイル属性5009、親クローンuuid5015に設定された親クローンファイル5000のuuidが複製対象となる。
ファイル移動プログラム3124は移動元の親ファイル5001のuuidテーブル5012に、S601で作成した複製ファイルのuuidを登録する(S602)。また、移動先に複製したファイルのuuidテーブル5012に、移動元の親ファイル5001のuuidを登録する。
ファイル移動プログラム3124は移動先に複製したファイルの参照カウンタ5010に1を代入する(S603)。
ファイル移動プログラム3124は移動元の親ファイル5001のファイルフラグ5013に対して仮想親ファイルビットを、移動先に複製したファイルのファイルフラグ5013に対して親ファイルビットを設定する。この時点で移動元の親ファイル5001は仮想親ファイル5002となり、移動先に複製したファイルは親ファイル5001となる(S604)。
最後に、ファイル移動プログラム3124は仮想親ファイル5002となった移動元の親ファイル5001に対して、ディスクブロック5022の解放処理を行い、親ファイル5001の移動処理を完了する(S605)。
図16は仮想親ファイル5002を有する親ファイル5001を別のボリューム5100に移動する際のファイル移動プログラム3124の制御を示したフローチャートである。ファイル移動プログラム3124は、クライアントサーバ200またはファイルサーバ管理プログラム3123から、仮想親ファイル5002を持つ親ファイル5001の移動要求を受信した際に、以下に示す親ファイル5001の移動処理を行う。
ファイル移動プログラム3124は親ファイル5001に対する移動コマンドを受信した際に、親ファイル5001が仮想親ファイル5002を持つ場合、以下に示す親ファイルの移動処理を行う(S700)。移動コマンドは移動元の親ファイル5001のファイルパスと移動先のファイルパスを含む。ファイル移動プログラム3124は、移動するファイルのファイルフラグ5013とuuidテーブルから仮想親ファイル5002をもつ親ファイル5001であることを判断する。また、移動先のファイルパスから別ボリュームへの移動であると判断する。
ファイル移動プログラム3124は移動先のボリュームに、移動する親ファイル5001(移動対象の親ファイル)の複製を作成する(S701)。この際、親ファイル5001の有するホールを除く全てのファイルブロック5020、ファイル属性5009、親クローンuuid5015に設定された親クローンファイル5000のuuid、uuidテーブル5012、および参照カウンタ5010が複製対象となる。
次に、ファイル移動プログラム3124は移動元の親ファイル5001のuuidテーブル5012を調べ、移動する親ファイル5001の全ての仮想親ファイル5002に対して、S703からS704の処理を行う(S702)。
次に、ファイル移動プログラム3124は、処理中の仮想親ファイル5002のuuidテーブル5012中に含まれる、移動元の親ファイル(移動対象の親ファイル)のuuidをS701で作成した親ファイル5001の複製ファイルのuuidに変更する(S703)。
次に、ファイル移動プログラム3124は、もし残りの仮想親ファイル5002が残っている場合、S702に戻り次の仮想親ファイル5002の処理を、そうでない場合は以降の処理を行う(S704)。
最後に、ファイル移動プログラム3124は、移動元の親ファイル5001に対しディスクブロック5022の解放処理を行い、親ファイル5001の移動処理を完了する(S705)。なお、本実施例では移動元の親ファイル5001を削除する例を示したが、これは例示に過ぎない。
図16で述べた制御において、移動元の親ファイル5001を削除せず、仮想親ファイル5002のuuidテーブルに移動元の親ファイル5001のuuidを残すことで、仮想親ファイル5002の参照先に一つ以上の親ファイル5001の複製を設定することが可能となる。
図17はクローンファイルを、親ファイル5001と別のボリューム5100に移動した場合のファイル移動プログラム3124の制御を示したフローチャートである。ファイル移動プログラム3124は、クライアントサーバ200またはファイルサーバ管理プログラム3123から、クローンファイル5003の移動要求を受信した際に、以下に示すクローンファイル5003の移動処理を行う。
ファイル移動プログラム3124は異なるボリューム5100へのクローンファイル5003の移動コマンドを受信した場合に、クローンファイル移動処理を開始する(S800)。移動コマンドは、移動するファイルのファイルパス、移動先のファイルパスを含む。また、異なるボリューム5100への移動かどうかの判断は、移動先のファイルパスから行う。
次に、ファイル移動プログラム3124は、ファイルクローニングモジュール3128に対して、移動元のクローンファイル5003のファイルパスと、クローン作成先となる移動先ファイルパスを含む、クローンファイル作成コマンドを発行する。ファイルクローニングモジュール3128は図10で示したクローンファイル作成処理により、移動先に移動元のクローンファイル5003と同じ親ファイル5001を持つクローンファイル5003を作成する(S801)。なお、移動先のクローンファイル5003は全てのファイルブロック5019で親ファイル5001の物理格納データを共有しており、移動元クローンファイル5003と異なるデータを有する。
次に、ファイル移動プログラム3124は、移動元のクローンファイル5003の全てのファイルブロック5019に対し、S803からS805に示す処理を行う(S802)。
次に、ファイル移動プログラム3124は、ファイルクローニングモジュール3128から、移動元のクローンファイル5003のブロックレイアウトテーブル5006を取得し、移動元のクローンファイル5003が処理中のファイルブロック5019を持つかどうかを調べる(S803)。もし、移動元のクローンファイル5003がファイルブロックを持たない場合(S803のNo)、S805以降の処理を行う。
次に、移動元のクローンファイル5003がファイルブロックを持つ場合(S803のYes)、ファイル移動プログラム3124は、移動元クローンファイル5003から処理中のファイルブロック5019を読み取り、移動先のクローンファイル5003に書き込む(S804)。この結果、移動先クローンファイル5003のファイルブロック5019には移動元クローンファイル5003のファイルブロック5019が複製される。
次に、ファイル移動プログラム3124はまだ処理していないファイルブロック5019が残っている場合、S802に戻り次のファイルブロック5019を処理する(S805)。なお、全てのファイルブロック5019に対して処理が完了している場合、この時点で移動元のクローンファイル5003と移動先のクローンファイル5003は同一のデータを有する。
次に、ファイル移動プログラム3124は、移動元のクローンファイル5003のファイル属性5009を読み取り、移動先のクローンファイル5003を同一内容に変更する(S806)。
最後に、ファイル移動プログラム3124は、移動元のクローンファイル5003を削除し、クローンファイル5003の階層移動処理を終了する(S807)。
<管理画面>
図18は管理GUIプログラム1001が提供するクローンファイル作成処理、および親ファイル5001またはクローンファイル5003の移動処理の操作画面の説明図である。
クローン管理画面1002は管理者がクローンファイル5003の作成と、親ファイル5001またはクローンファイル5003の移動を行うための管理GUIである。
チェックボックス1002Aは、クローンファイル5003を作成するための操作であることを示すチェックボックスである。テキストボックス1002Bとテキストボックス1002Cは、複製元ファイルのファイルパスおよび新規に作成するクローンファイル5003のファイルパスを指定するためのテキストボックスである。
チェックボックス1002Dは、親ファイル5001、またはクローンファイル5003を移動するための操作であることを示すチェックボックスである。テキストボックス1002Eは移動元の親ファイル5001またはクローンファイル5003を、テキストボックス1002Fは移動先のファイルパスを示すテキストボックスである。
管理者がOKボタン1002Gを押した場合、管理GUIプログラムはチェックボックス1002Aが指定されている場合、ファイルサーバ管理プログラム3123に指定された複製元ファイルおよびクローンファイル5003のファイルパスを含むクローンファイル作成コマンドを発行する。もし、チェックボックス1002Dが指定されている場合、指定された移動元ファイルのファイルパスと移動先のファイルパスを含むファイル移動コマンドをファイルサーバ管理プログラム3123に発行する。
このように、本実施形態によれば、異なるボリュームに対するクローンファイル5003の作成および、ボリューム5100をまたがった親ファイル5001とクローンファイル5003の移動が可能となる。これにより、親ファイル5001とクローンファイル5003を性能要件にあった記憶デバイス324に格納することが可能となる。
さらに、親ファイル5001の複製を作成し親ファイル5001へのアクセスを分散することも可能となる。親ファイル5001へのアクセス性能が問題となった際に親ファイル5001の複製を作成することで問題を回避することができる。さらに本実施形態を使用することで、異なるボリュームの親ファイル5001に対してもクローンファイル5003が作成可能となるため、記憶デバイス324の使用容量を削減可能となる。
また、本実施形態は通常のボリューム5100の他にもスナップショットボリュームやバックアップボリュームに対しても適用可能である。例えば、仮想親ファイル5002の参照先に過去の親ファイル5001を指定することで、親ファイル5001に対して誤操作を行った場合でもリストアすることが可能である。
(2)第2実施形態
次に、本発明の第2の実施形態である異なるストレージ装置間でのファイルクローニング方法について、図19から図27を用いて説明する。
(2−1)第2実施形態の構成
<全体構成>
図19は、第2実施形態に係るシステムの構成を示すブロック図である。第2実施形態では、第1の実施形態で説明したシステムに対し、1台以上の外部ファイルストレージ600を追加で含む点が差分となる。外部ファイルストレージ600はクライアントサーバ200およびファイルストレージ300が生成するファイルに対する制御を行うコンピュータで、ファイルストレージ300と同等の構成を有する。
<ハードウェア構成>
第2実施形態におけるファイルストレージ300のハードウェア構成は第1実施形態と同等のため、説明は省略する。また、外部ファイルストレージ600のハードウェア構成は、ファイルストレージ300と同等となる。
なお、外部ファイルストレージ600はファイルストレージ300と異なるハードウェアを用いてもよい。また、外部ファイルストレージ600は複数の装置から構成されてもよい。例えば外部ファイルストレージ600としてCephなどの、分散ファイルシステムをもちいることも可能である。
<ソフトウェア構成>
図20は、本実施形態のファイルストレージ300のソフトウェア構成例を示すブロック図である。本実施形態におけるファイルストレージ300のソフトウェア構成は、内蔵ディスク315内にAPI(Application Programming Interface)管理テーブル3152と、アカウント管理テーブル3153を持つ点が第1実施形態との差分となる。API管理テーブルの詳細は図24、アカウント管理テーブルの詳細は図25を用いて後述する。なお、外部ファイルストレージ600のソフトウェア構成はファイルストレージ300と同等のため、説明は省略する。
(2−2)第2実施形態の概要
本実施形態においては、ファイルクローニングモジュール3128は、異なる装置上にある親ファイル5001に対して、クローンファイル5003を作成する手段を提供する。第1の実施形態と同様にファイルクローニングモジュール3128は、親ファイル5001に対して、親ファイルを一意に識別するための識別子(uuid)を持つ仮想親ファイル5002をローカルボリュームに作成し、クローンファイル5003の仮想的な親ファイルとして使用する。
また、本実施形態では、異なる装置に対する親ファイル5001を仮想化するために、仮想親ファイル5002作成時に装置種別に応じた静止化イメージ作成コマンドを発行する制御と、仮想親ファイル5002のブロックレイアウトテーブル5006に親ファイル5001のブロックレイアウトを記憶する制御と、装置をまたがったuuidを使用する制御を行う。これらの制御により、異なる装置上にある親ファイル5001へのクローンファイル5003作成が可能となる。
これにより、管理者は性能要件に応じて親ファイル5001を記憶する装置を自由に選択することが可能となる。例えば、親ファイル5001を高性能な外部ファイルストレージ600に格納することでより多くのクローンファイル5003が作成可能となる。また、装置をまたがって、親ファイル5001とクローンファイル5003の物理格納データが共用可能となるため、記憶デバイス324の消費容量を削減することができる。
(2−3)第2実施形態の実装例
<ファイル管理方法>
図21は、第2の実施形態におけるファイルシステム管理情報3240の説明図である。図5で述べた第1の実施形態でのファイルシステム管理情報3240との差分を述べる。本実施形態においては、uuidテーブル5012にはローカルエリアネットワーク400上でファイルを一意に識別するための識別子として、外部ファイルストレージ600のホスト名と、ボリュームID、ファイルIDの組み合わせを使用する。なお、ここでいうホスト名とはローカルエリアネットワーク400上で装置を識別するために付けられる識別子である。一例としてDNSサーバ(Domain Name System)が管理するドメイン名があげられる。uuidに使用する情報の詳細については、図23を用いて後述する。
また、仮想親ファイル5002のブロックレイアウトテーブル5006には、親ファイル5001のファイルブロック5020の位置を示すため、親ファイル5001の各ファイルデータのファイルオフセット5006Aと、ブロック長5006Cが格納される。これらのブロックレイアウトを取得するため、ファイルシステムモジュール3127はクローンファイル5003作成時に外部ファイルストレージ600にブロックレイアウトの問い合わせ処理を行う。なお、ブロックレイアウトの問い合わせ処理に使用する方法の好例として、XFSファイルシステムのxfs_bmapコマンドがある。
また、図5で述べた第1の実施形態と同様に外部ファイルストレージ600の親ファイル5001と親クローンファイル5000を作成する。なお、本実施例では外部ファイルストレージ600上に親ファイル5001を作成する際に、ファイルクローニングの技術を用いているが、これは例示に過ぎない。外部ファイルストレージ600にある親ファイル5001は静止化ファイルであればよく、必ずしも親クローンファイル5000を持つ必要はない。他にも、複製対象となる元ファイルのスナップショットファイルを、親ファイル5001として使用することも可能である。他の内容については図5で述べた第1の実施形態と同等であるため、説明を省略する。
図22は第2の実施形態におけるクローンファイル5003のデータ管理方法を示す説明図である。ファイルシステムモジュール3127は、クローンファイル5003のファイルブロック5019と、ネットワークファイルクライアントプログラム3126経由で取得する親ファイル5001のファイルデータ5018を組み合わせてクローンファイルデータ5021を構成する。
この際、仮想親ファイル5002のブロックレイアウトテーブル5006を用いて外部ファイルストレージ600のファイルブロック5019がホールであるかどうかを判定する。なお、各ファイルのファイルデータ5018の管理方法は図6で述べた実施形態1の管理方法と同等であるため、説明を省略する。
図23は第2の実施形態におけるuuidテーブル5012の説明図である。本実施形態では、uuidテーブル5012の各行は、同一ネットワークに接続する装置間においてファイルの格納場所を一意に識別するためのファイル識別子となり、装置ID5012A、ボリュームID5012B、ファイルID5012Cを含む。
装置ID5012Aはファイルを格納した装置のホスト名またはIPアドレスが設定される。なお、ファイルがuuidテーブル5012を有する装置と同一の装置内にある場合、装置ID5012Aの値は「localhost」となる。装置ID5012Aが「localhost」でない場合、ボリュームID5012Bにはボリューム5100の公開パスが、ファイルIDにはボリューム内のファイルパスが設定される。
なお、ここでいう公開パスとは、ネットワークファイルサービスプログラム3122が、クライアントサーバ200などのアクセス元に対して公開するボリューム5100へのアクセスするための文字列となる。装置ID5012Aが「localhost」の場合、ボリュームID5012BとファイルID5012Cには、図8で述べた第1の実施形態と同等の内容が設定される。
図24は第2の実施形態におけるAPI管理テーブル3152の説明図である。API管理テーブルは装置種別ごとに親ファイル5001を作成操作するためのコマンドを記憶する。これらのコマンドは外部ファイルストレージ600のファイルに対して静止化イメージを作成し、親ファイル5001とする際に使用する。API管理テーブルの各行は、各装置の特定のオペ―レーションに対するコマンドが対応しており、装置種別3152A、操作3152B、コマンド3152Cが含まれる。
装置種別3152Aにはコマンド3152Cの操作対象となる装置の種別を設定する。装置種別3152Aには例えば、ベンダ名と装置のモデル番号の組み合わせを使用する。操作3152Bはコマンド3152Cが行う操作となり、親ファイル5001となる静止化ファイルを作成する「create」か、静止化ファイルを削除する「remove」のどちらかを設定する。コマンド3152Cは、各装置、操作を行うためのコマンドを設定する。なお、API管理テーブル3152の設定内容は、ファイルストレージ300の開発ベンダが出荷時に設定してもいいし、管理者が管理サーバ100を介して設定してもよい。
図25は第2の実施形態におけるアカウント管理テーブル3153の説明図である。アカウント管理テーブル3153は外部ファイルストレージ600ごとに、ファイルアクセスを行うためのユーザアカウント情報と、管理操作を行うための管理アカウント情報が設定される。アカウント管理テーブル3153の各行は、外部ファイルストレージごとのアカウント情報に対応し、デバイスID3153A、ユーザID3153B、ユーザパスワード3153C、管理者ID3153D、管理者パスワード3153Eを含む。
デバイスID3153Aはネットワーク上で装置を一意に識別するための識別子で、外部ファイルストレージ600のホスト名またはIPアドレスを設定する。ユーザID3153Bおよびユーザパスワード3153Cは外部ファイルストレージ600のユーザアカウント名とログインパスワードを設定する。管理者ID3153Dと管理者パスワード3153Eはそれぞれ、管理者のアカウント名とログインパスワードを設定する。
<ファイル操作要求処理方式>
本実施形態においても、ファイルシステムモジュール3127、ファイルクローニングモジュール3128、ファイル移動プログラム3124が、クローンファイル5003と親ファイル5001に対するファイル操作要求と移動要求を処理する。以降では、各処理における実施形態1との差分について説明する。
図10を用い、クローンファイル5003の作成処理における、第1実施形態との差分について説明する。第1実施形態のクローンファイル作成処理に含まれるS100からS107のうち、ステップS103の親ファイル作成とステップS106の仮想親ファイル作成について本実施形態では異なる処理を行う。それぞれの処理内容は、以下の通りとなる。
(ステップS103)親ファイル作成
ファイルクローニングモジュール3128は複製元ファイルが外部ファイルストレージ600にある場合、API管理テーブル3152に登録されている親ファイル5001作成コマンドを用いて、複製元ファイルの静止化イメージを作成し、親ファイル5001とする。
最初に、ファイルクローニングモジュール3128は、外部ファイルストレージ600のファイルサーバ管理プログラム3123に問い合わせて装置種別3152Aを取得する。ファイルクローニングモジュール3128は、装置種別3152AがAPI管理テーブル3152に登録されている場合、外部ファイルストレージ600に対し親ファイル作成コマンドを発行し、処理対象ファイルの静止化ファイルを作成する。ここで作成した静止化ファイルは、親ファイル5001として使用する。
(ステップS106)仮想親ファイル作成
ファイルクローニングモジュール3128は、S103で作成した親ファイル5001に対して仮想親ファイル5002を作成する。ファイルクローニングモジュール3128は、親ファイル5001のボリュームパスと、ボリューム5100内のファイルパスからuuidを作成する。その後、ファイルクローニングモジュール3128はクローンファイル5003を作成するボリューム5100内に空ファイルを作成し、ファイルフラグの仮想親ファイルビットを設定して仮想親ファイル5002とする。
次に、ファイルクローニングモジュール3128は仮想親ファイル5002のuuidテーブル5012に親ファイル5001のuuidを設定する。最後にファイルクローニングモジュール3128は仮想親ファイル5002を、親ファイル5001のuuidにリネームし、仮想親ファイル専用のディレクトリ(例えば/.virtparentなど)に移動する。
以上の処理により、ファイルクローニングモジュール3128が、外部ファイルストレージ600のファイルからクローンファイル5003を作成することが可能となる。また、親ファイル5001のuuidをファイル名として持つ仮想親ファイル5002が仮想親ファイル専用ディレクトリ内にあるかどうかを調べることで、ボリューム内に仮想親ファイル5002があるかどうかの判定が可能となる。
次に、図11を用いて、第1の実施形態に対するクローンファイルリード処理の差分について説明する。第1実施形態のクローンファイルリード処理に含まれるステップS200からS208のうち、ステップS201のブロックレイアウトテーブル取得、ステップS204のホール判断、ステップS205のファイルデータ読み込みについて本実施形態では異なる処理を行う。それぞれの処理内容は以下の通りとなる。
(ステップS201)ブロックレイアウトテーブル取得
ファイルシステムモジュール3127は、クローンファイル5003のuuidテーブル5012が外部ファイルストレージ600に親ファイル5001を持つ仮想親ファイル5002を示している場合、仮想親ファイル5002のブロックレイアウトテーブル5006を親のブロックレイアウトテーブルとして取得する。それ以外の場合は、第1実施形態と同等の処理を行う。
(ステップS204)ホール判断
ファイルシステムモジュール3127は親ファイル5001が外部ファイルストレージ600にある場合、仮想親ファイル5002のブロックレイアウトテーブル5006を調べ、処理中のファイルブロック5019が親ファイル5001のホールかどうかを調べる。もし、ブロックレイアウトテーブル5006中に処理中のファイルブロック5019を含むファイルデータ5018が含まれない場合、親ファイル5001のファイルブロック5019がホールであると判断しS207の処理を行う。それ以外の場合は、第1実施形態と同等のため、説明を省略する。
(ステップS205)ファイルデータ読み込み
ファイルシステムモジュール3127は親ファイル5001が外部ファイルストレージ600にある場合、ネットワークファイルクライアントプログラム3126を用いて、処理中のファイルブロック5019に対応する親ファイル5001のファイルデータ5018を、バッファ領域に読み込む。その際、ファイルリード対象とする外部ファイルストレージ600、およびファイルパスはS203で得た親ファイル5001のuuidの値から取得する。また、ネットワークファイルクライアントプログラム3126は外部ファイルストレージ600にアクセスする際に、アカウント管理テーブル3153に示されたユーザIDとユーザパスワードをユーザアカウントとして使用する。
以上の処理により、ファイルシステムモジュール3127が外部ファイルストレージ600の親ファイル5001から、クローンファイルデータ5021をリードすることが可能となる。クローンファイル5003のライト処理、スプリット処理は、第1実施形態に対して、ファイルリード処理と同等の変更を加えたものとなるため、説明を省略する。クローンファイル5003の削除処理は、図13で述べたボリューム内部のクローンファイル5003削除処理に対して、S406とS407を含まない点、S408の親ファイル5001の削除にてAPI管理テーブル3152に登録された削除コマンドを使用する点、以外は同等のため説明を省略する。なお、第2の実施形態では仮想親ファイル5002一つにつき、親ファイル5001を一つ作成しているため、参照カウンタ5010の操作は行わず、仮想親ファイル5002削除時に、親ファイル5001を削除している。
仮想親ファイル5002を持たない親ファイル5001の外部ファイルストレージ600への移動処理は、図15で説明したステップS603で行っていた親ファイル5001のuuidテーブル5012の操作と、ステップS604で行っていた移動先の親ファイル5001に対する参照カウンタ5010操作を行わない点を除き第1の実施形態と同等のため、説明を省略する。
また、仮想親ファイル5002を有する親ファイル5001の外部ファイルストレージ600への移動処理は、クライアントサーバ200、または外部ファイルストレージ600が親ファイル5001の移動処理を行う際に、ファイルストレージ300に親ファイルポインタ変更コマンドを送付することで実現する。
図26は親ファイルポインタ変更コマンド受信時のファイルクローニングモジュール3128の制御を示すフローチャートである。ファイルクローニングモジュール3128は、外部ファイルストレージ600から、親ファイルポインタ変更コマンドを受信した際には、以下に示す親ファイル移動処理を行う。なお、外部ファイルストレージ600は自身に含まれるスナップショットファイルの移動時には外部ファイルストレージ600を使用する全ての装置に対して、親ファイルポインタ変更コマンドを送信する。
ファイルクローニングモジュール3128は、親ファイルポインタ変更コマンドを受信した場合、親ファイルポインタ変更処理を開始する(S900)。なお、親ファイルポインタ変更コマンドには、移動前の親ファイル5001のuuidおよび移動先の親ファイル5001のuuidが含まれる。
次に、ファイルクローニングモジュール3128は、移動元親ファイル5001の仮想親ファイル5002がファイルストレージ300内にあるかどうかを調べる(S901)。これは、仮想親ファイル専用のディレクトリ内に移動元の親ファイル5001のuuidをファイル名としてもつ仮想親ファイル5002があるかどうかで判定する。もし、仮想親ファイル5002がない場合、親ファイルポインタ変更処理を終了する。
次に、ファイルクローニングモジュール3128は、移動元の親ファイル5001のuuidから移動先の親ファイル5001と移動元の親ファイル5001の中身が一致することを、双方のファイルデータを比較し確認する(S902)。これは親ファイル5001の参照先を切り替えた際に、異なるデータの親ファイル5001を参照し、クローンファイル5003が異なったデータとなることを防ぐために行う。もし、移動元の親ファイル5001と移動先のファイルのデータが一致しない場合、親ファイルポインタ変更処理を終了する。
次に、ファイルクローニングモジュール3128は、ステップS901で調べたファイルパスを用いて仮想親ファイル5002を取得する(S903)。
最後に、ファイルクローニングモジュール3128は仮想親ファイル5002のuuidテーブルを書き換え、移動元の親ファイル5001のuuidを、移動先の親ファイルのuuidに変更する。その後ファイルクローニングモジュール3128は仮想親ファイル5002のファイル名を移動ファイルのuuidに変更する処理を行い、親ファイルポインタ変更処理を終了する(S904)。
次に、図17を用いて第1実施形態に対するクローンファイル5003の移動処理の差分を説明する。クローンファイル5003を外部ファイルストレージに移動する場合、ファイル移動プログラム3124はステップS801のクローンファイル作成コマンドを移動先の外部ファイルストレージ600に対して発行する。
また、ファイル移動プログラム3124は、ステップS804における移動先のクローンファイル5003に対するライト処理を、ネットワークファイルクライアントプログラム3126を用いて行う。以上の処理を変更することで、ファイル移動プログラム3124は、外部ファイルストレージ600へのクローンファイル5003の移動を実現する。
<管理画面>
図27は管理GUIプログラム1001が提供する、外部ファイルストレージ追加画面1003の説明図である。管理者は、外部ファイルストレージ追加画面1003を用いて、アカウント管理テーブル3153の設定内容を編集する。
テキストボックス1003Aは、編集対象となる外部ファイルストレージ600のホスト名を入力するテキストボックスであり装置種別3152Aに対応する。テキストボックス1003Bとテキストボックス1003Cは追加する外部ファイルストレージ600のユーザアカウントとパスワードを入力するテキストボックスであり、ユーザID3153Bとユーザパスワード3153Cに対応する。
テキストボックス1003Dとテキストボックス1003Eは追加する外部ファイルストレージ600の管理者アカウントとパスワードを有力するテキストボックスであり、管理者ID3153D、および3153Eに対応する。
管理者がOKボタン1003Fを押した場合、管理GUIプログラム1001は設定内容をファイルサーバ管理プログラム3123への通知し、アカウント管理テーブル3153に反映する。Cancelボタン1003Gを押した場合設定内容をキャンセルする。
以上説明したように、本実施形態によれば、異なる装置に対するクローンファイル5003の作成および、装置をまたがった親ファイル5001とクローンファイル5003の移動が可能となる。これにより、親ファイル5001とクローンファイル5003を性能要件にあった装置に格納可能となる。また、装置間で親ファイル5001とクローンファイル5003の物理格納データの共有が可能となるため、記憶デバイスの使用容量を削減することができる。
(3)第3実施形態
次に、本発明の第3の実施形態である重複排除機能を有するファイルクローニング方法にについて、図28から図32を用いて説明する。
(3−1)第3実施形態の構成
<全体構成>
第3実施形態の全体構成は第1実施形態と同等のため、説明を省略する。
<ハードウェア構成>
第3実施形態のハードウェア構成は第1実施形態と同等のため、説明を省略する。
<ソフトウェア構成>
図28は、本実施形態のファイルストレージ300のソフトウェア構成例を示すブロック図である。第1実施形態との差分は太線で示したモジュールとなり、その他の部分については第1実施形態と同等となる。以下第1実施形態との差分について説明する。
ファイルサーバ310は、重複排除プログラム3120を実行する。重複排除プログラム31202はファイルデータが一致する重複ファイルを見つけ、重複ファイル間で物理格納データを共有させ、重複したデータの物理格納領域を解放する処理を行う。
重複ファイル間の物理各データの共有は、重複ファイルの一つから親ファイル5001と親クローンファイル5000を作成し、その他の重複ファイルを親ファイル5001のクローンファイル5003とすることで実現する。重複ファイルの重複排除処理を行うことで、ファイル間で物理格納データが共有されるため、記憶デバイス324の使用容量を削減できる。
記憶デバイス324は、ボリューム5100ごとにファイルハッシュテーブル3241を有する。ファイルハッシュテーブル3241には、ボリューム5100内の親ファイル5001のファイルパスとハッシュ値の組が保存されており、重複排除プログラム3120が重複するファイルを検出するために使用する。
(3−2)第3実施形態の概要
本実施形態においては、ボリューム5100をまたがって重複したファイルの重複排除処理を行う。従来、ボリューム5100内で行っていた重複排除処理に対して、実施形態1で述べたボリューム5100をまたがるファイルクローニング技術と、ボリューム間の重複ファイル検出処理を追加することで、重複排除対象を複数のボリュームに拡大する。従来のボリューム5100内部の重複排除に比べ、重複排除できるファイル数が増えるため、容量削減効果が高くなる。
(3−3)第3実施形態の実装例
本実施形態のファイル管理方式とファイル要求処理方式は実施形態1で述べたものと同等である。そのため、新たに追加する重複排除処理についてのみ説明する。
<重複排除処理>
図29はファイルハッシュテーブル3241の内容を示す説明図である。ファイルハッシュテーブル3241は、ボリューム5100内の親ファイル5001ごとに、ファイルパス3241Aとハッシュ値3241Bを格納する。なお、ここでいうハッシュ値とは、親ファイル5001のデータに基づいて生成される疑似乱数の値のことを言う。
あるファイルと別のファイルのファイルデータが同一の場合、ハッシュ値も同一となる。そのため、重複ファイル検索時に、ハッシュ値の一致するファイルに対してのみ比較処理を行うことで、高速に重複ファイルを検出することができる。
図30はボリューム内部の重複排除を行う際の重複排除プログラム3120の制御を示したフローチャートである。
重複排除プログラム3120はボリューム5100内の、事前に決められたポリシに合致する通常ファイルに対してS1001からS1006に示す処理を行う(S1000)。なお、ポリシの好例として、「最終更新時刻が一定期間経過していること」がある。次に、重複排除プログラム3120は、処理中のファイルのハッシュ値を計算する(S1001)。
重複排除プログラム3120は、S1001で計算したハッシュ値と一致するハッシュ値がファイルハッシュテーブル3241に登録されていないかを調べる。もし、同一のハッシュ値を持つ親ファイル5001があった場合、重複排除プログラム3120は、ファイルデータの比較(サイズ比較やバイナリ比較など)を行い、ファイルデータが重複するかどうかを判定する(S1002)。重複排除プログラム3120は、ファイルデータが重複する親ファイル5001を見つけた場合(S1002のYes)、ステップS1003の処理を行い、ファイルデータが重複する親ファイル5001を見つけない場合(S1002のNo)、ステップS1004以降の処理を行う。
ファイルデータが重複する親ファイル5001を見つけた場合(S1002のYes)、重複排除プログラム3120は、S1002で見つけた親ファイル5001に対して、クローンファイル5003を作成し、処理中ファイルを置き換える。その後、処理中ファイルを削除し、処理中ファイルが使用していた容量を解放する(S1003)。その後、重複排除プログラム3120はS1006の処理を行う。
ファイルデータが重複する親ファイル5001を見つけない場合(S1002のNo)、重複排除プログラム3120は、処理中ファイルの静止化イメージを親ファイル5001として作成し、親ファイル専用ディレクトリ(「.master」ディレクトリ)に移動する。その後、移動した親ファイル5001のクローンファイル5003を作成し、処理中のファイルと置き換える。その後、重複排除プログラム3120は、処理中のファイルを削除する(S1004)。
次に、重複排除プログラム3120はステップS1001で計算したハッシュ値と、S1004で作成した親ファイル5001のファイルパスをファイルハッシュテーブル3241に登録する(S1005)。
最後に、重複排除プログラム3120は、残りの処理対象ファイルが残っている場合、S1001に戻り次のファイルの処理を、そうでない場合は重複排除処理を終了する(S1006)。
図31はボリューム間の重複排除処理における、重複排除プログラム3120の制御を示したフローチャートである。
重複排除プログラム3120は二つのボリュームのファイルハッシュテーブル3241を比較し、重複するハッシュ値を有する親ファイル5001がないかを調べる。もし、同一のハッシュ値を持つ親ファイル5001があった場合、親ファイル5001間でファイルデータの比較を行い、ファイルデータが重複するかどうかを判定する(S1100)。
次に、重複排除プログラム3120は、S1100で見つけたボリューム間で重複する親ファイル5001に対し、S1102からS1106で示す処理を行う(S1101)。
次に、重複排除プログラム3120は、S1100で見つけた重複する親ファイル5001のうちどちらか一方の親ファイルをターゲット親ファイルとして選択し、ターゲット親ファイルのuuidテーブル5012にもう片方の親ファイルのuuidを登録する(S1102)。
次に、重複排除プログラム3120はターゲット親ファイルのファイルフラグ5013の仮想親ファイルビットを設定し、仮想親ファイル5002とする。その際、もう片方の親ファイルの参照カウンタ5010を1加算する(S1103)。
次に、重複排除プログラム3120はターゲット親ファイルに対して、ファイルブロック5019のディスクブロック5022を解放する(S1104)。
最後に、重複排除プログラム3120は、残りの処理対象ファイルが残っている場合、S1101に戻り次のファイルの処理を、そうでない場合は重複排除処理を終了する(S1005)。
このように、本実施形態によれば、ボリュームをまたがって重複ファイルを排除することが可能となる。これにより、ボリューム間で重複ファイルの物理格納データの共有が可能となるため、ボリューム内部のみ重複排除処理に比べ記憶デバイス324の使用容量削減効果を高めることができる。
なお、本実施形態と第2実施形態を組み合わせることで、装置をまたがった重複排除処理も可能となる。その場合、記憶デバイス324の使用容量削減効果を更に高めることができる。
以上説明したように、管理者は親ファイルとクローンファイルを性能要件にあった記憶デバイスに格納することが可能となる。また、ボリューム、装置間をまたがって、複製元ファイルとクローンファイルの物理格納データの共有するため、従来のクローン技術に比べ記憶デバイスの使用容量をより多く削減できる。
100 管理サーバ
200 クライアントサーバ
300 ファイルストレージ
310 ファイルサーバ
311 CPU
312 メインメモリ
313 ネットワークIF
314 ストレージIF
315 内蔵ディスク
320 ディスクサブシステム
321 CPU
322 メインメモリ
323 ディスクI/F
324 記憶デバイス
325 記憶デバイス(SSD)
326 記憶デバイス(SAS)
400 ローカルエリアネットワーク(LAN)
600 外部ファイルストレージ
1001 管理GUIプログラム
1002 クローン管理画面
1002A、1002D チェックボックス
1002B、1002C、1002E、1002F テキストボックス
1002G OKボタン
1002H Cancelボタン
1003 外部ストレージ追加画面
1003A、1003B、1003C、1003D、1003E テキストボックス
1003F OKボタン
1003G Cancelボタン
3120 重複排除プログラム
3121 オペレーティングシステムプログラム
3122 ネットワークファイルサービスプログラム
3123 ファイルサーバ管理プログラム
3124 ファイル移動プログラム
3125 ボリューム管理モジュール
3126 ネットワークファイルクライアントプログラム
3127 ファイルシステムモジュール
3128 ファイルクローニングモジュール
3129 スナップショットモジュール
3151 ボリューム管理テーブル
3151A ボリュームID
3151B マウントポイント
3151C LU番号
3151D ファイルシステム種別
3152 API管理テーブル
3152A 装置種別
3152B 操作
3152C コマンド
3153 アカウント管理テーブル
3153A デバイスID
3153B ユーザID
3153C ユーザパスワード
3153D 管理者ID
3153E 管理者パスワード
3213 記憶デバイス(SSD)
3221 ディスク制御プログラム
3240 ファイルシステム管理情報
3241 ファイルハッシュテーブル
3241A ファイルパス
3241B ハッシュ値
5000 親クローンファイル
5001 親ファイル
5002 仮想親ファイル
5003 クローンファイル
5005 inode
5006 ブロックレイアウトテーブル
5006A ファイルオフセット
5006B ディスク開始位置
5006C ブロック長
5007 inode番号
5008 親inode番号
5009 ファイル属性
5010 参照カウンタ
5012 uuidテーブル
5012A 装置ID
5012B ボリュームID
5012C ファイルID
5013 ファイルフラグ
5014 親クローンinode番号
5015 親クローンuuid
5018 ファイルデータ
5019、5020 ファイルブロック
5021 クローンファイルデータ
5022 ディスクブロック
5100 ボリューム
6100 LU

Claims (11)

  1. ファイルストレージシステムであって、
    第1及び第2のファイルシステムを制御するファイルシステム制御部を有するファイルサーバと、
    前記第1のファイルシステムが管理するボリュームであって、第1のファイルが格納された第1のボリュームと、
    前記第2のファイルシステムが管理するボリュームであって、第2のファイル及び第3のファイルが格納された第2のボリュームと、を備え、
    前記第2のファイルは前記第1のファイルの複製であって、前記第2のファイルのデータが更新されるまで前記第1のファイルとデータを共有するクローンファイルであり、
    前記第3のファイルは、前記第1のファイルと前記第2のファイルとを関連付けるための仮想的なファイルである仮想親ファイルであり
    前記第1乃至第3のファイルの各々には、ボリューム内でファイルを識別するための第1乃至第3のファイル識別情報の各々が設定され、
    前記第1のファイルには、前記第3のファイルを参照するための情報として、前記第2のボリューム識別情報と前記第3のファイル識別情報とが設定され、
    前記第2のファイルには、前記第3のファイルを参照するための情報として、前記第3のファイル識別情報が設定され、
    前記第3のファイルには、前記第1のファイルを参照するための情報として、前記第1のボリューム識別情報と前記第1のファイル識別情報とが設定されるファイルストレージシステム。
  2. 請求項1記載のファイルストレージシステムであって、
    前記第1のファイルの複製を前記第2のボリュームに作成する要求を受けた場合、前記ファイルシステム制御部は、
    前記第1のファイルの更新を禁止し、
    前記第3のファイルが前記第2のボリュームに存在しない場合には、前記第3のファイルを前記第1のファイルから作成し、前記第3のファイルより前記第2のファイルを作成するファイルストレージシステム。
  3. 請求項1記載のファイルストレージシステムであって、
    前記第2のファイルへの読み出し要求を受けた場合、前記ファイルシステム制御部は、
    前記読み出し要求で指定された前記第2のファイルのファイルブロックにデータが有れば当該データを読み出し、
    前記ファイルブロックにデータが存在しない場合には、前記第2のファイルに対応する前記第1のファイルのファイルブロックのデータを読み出すファイルストレージシステム。
  4. 請求項1記載のファイルストレージシステムであって、
    前記第2のファイルへの更新要求を受けた場合、前記ファイルシステム制御部は、
    (1)前記更新要求で指定された前記第2のファイルのファイルブロックに前記ファイルストレージシステムのディスクブロックが割り当てられていない場合は、前記ファイルストレージシステムのディスクブロックを割り当てて、そこに更新データを書き込み、
    (2)前記ファイルブロックにディスクブロックが割り当てられている場合は、
    (2a)前記更新データが前記ファイルブロックの全てを含む場合にはそのまま、前記更新データを書き込み、
    (2b)前記更新データが前記ファイルブロックの一部のみの場合には、前記ファイルブロックのデータを読み出し、前記読み出しデータと前記更新データを整合したデータを書き込むファイルストレージシステム。
  5. 請求項1記載のファイルストレージシステムであって、前記第3のファイルは対応するファイル数を管理する参照情報を有し、前記第2のファイルへの削除要求を受けた場合、
    前記ファイルシステム制御部は、
    前記第2のファイルを削除し、
    前記第2のファイルと対応関係にある第3のファイルの参照情報を変更し、
    前記参照情報が0である場合は、前記第3のファイルを削除するファイルストレージシステム。
  6. 請求項1記載のファイルストレージシステムであって、前記第2のファイルのスプリット要求を受けた場合、前記ファイルシステム制御部は、
    前記第2のファイルと対応関係にある前記第1のファイルを前記第2のボリューム識別情報と前記第3のファイル識別情報とで特定し、
    前記特定した第1ファイルのファイルブロックで、前記第2のファイルに対応するファイルブロックが存在しない前記第1ファイルのファイルブロックを前記第2のファイルのファイルブロックに複製するファイルストレージシステム。
  7. 請求項1記載のファイルストレージシステムであって、
    前記第1のボリュームに第4のファイルが格納されており、前記第4のファイルの仮想親ファイルが存在しない場合、
    前記第4のファイルの、前記第2のボリュームへの移動要求を受けた、前記ファイルシステム制御部は、
    前記第4のファイルの複製を前記第2のボリュームに作成し、
    前記第4のファイルを仮想親ファイルに変換し、前記第4のファイルには前記第4のファイルの複製を参照するための情報として、前記第2のボリュームの識別情報と前記第4のファイルの複製のファイル識別情報とを設定し、前記第4のファイルの複製には前記第4のファイルを参照するための情報として、前記第1のボリュームの識別情報と前記第4のファイルのファイル識別情報とを設定する
    ファイルストレージシステム。
  8. 請求項1記載のファイルストレージシステムであって、
    前記第1のファイルの別のボリュームへの移動要求時に、前記ファイルシステム制御部は、
    前記第1のファイルの複製を前記別のボリュームに作成
    前記第1のファイルの仮想親ファイルである前記第3のファイルに設定されている、前記第1のボリュームの識別情報と前記第1のファイル識別情報に代えて、前記別のボリュームの識別情報と前記第1のファイルの複製のファイル識別情報を設定する、
    ファイルストレージシステム。
  9. 請求項1記載のファイルストレージシステムであって、ファイル作成要求、ファイル移動要求を、前記ファイルストレージシステムに接続された管理サーバ上の管理画面より実行することを特徴とするファイルストレージシステム。
  10. ファイルストレージシステムであって、
    第1のファイルシステムを制御する第1のファイルシステム制御部を有する第1のファイルサーバと、
    第2のファイルシステムを制御する第2のファイルシステム制御部を有する第2のファイルサーバと、
    前記第1のファイルシステムが管理するボリュームであって、第1のファイルが格納された第1のボリュームと、
    前記第2のファイルシステムが管理するボリュームであって、前記第1のファイルの複製であって自身のデータが更新されるまで前記第1のファイルとデータを共有する第2のファイルと、前記第1のファイルと前記第2のファイルとを関連付けるための仮想的なファイルである第3のファイルが格納された第2のボリュームとを備え、
    前記第1乃至第3のファイルの各々には、ボリューム内でファイルを識別するための第1乃至第3のファイル識別情報の各々が設定され、
    前記第1のファイルには、前記第3のファイルを参照するための情報として、前記第2のボリューム識別情報と前記第3のファイル識別情報とが設定され、
    前記第2のファイルには、前記第3のファイルを参照するための情報として、前記第2のボリューム識別情報と前記第3のファイル識別情報とが設定され、
    前記第3のファイルには、前記第1のファイルを参照するための情報として、前記第1のボリューム識別情報と前記第1のファイル識別情報とが設定されるファイルストレージシステム。
  11. 第1及び第2のファイルシステムを制御するファイルシステム制御部を有するファイルサーバと、前記第1のファイルシステムが管理するボリュームで第1のファイルが格納された第1のボリュームと、前記第2のファイルシステムが管理するボリュームで前記第1のファイルの複製であって自身のデータが更新されるまで前記第1のファイルとデータを共有する第2のファイルと、前記第1のファイルと前記第2のファイルとを関連付けるための仮想的なファイルである第3のファイルが格納された第2のボリュームとを備え、ストレージシステムとクライアントサーバとに接続されるファイルストレージシステムのファイルクローニング方法であって、
    前記第1乃至第3のファイルの各々には、ボリューム内でファイルを識別するための第1乃至第3のファイル識別情報の各々が設定され、
    前記第1のファイルには、前記第3のファイルを参照するための情報として、前記第2のボリューム識別情報と前記第3のファイル識別情報とが設定され、
    前記第2のファイルには、前記第3のファイルを参照するための情報として、前記第3のファイル識別情報が設定され、
    前記第3のファイルには、前記第1のファイルを参照するための情報として、前記第1のボリューム識別情報と前記第1のファイル識別情報とが設定されるファイルクローニング方法。

JP2014551439A 2012-04-25 2012-04-25 ファイルストレージシステムとファイルクローニング方法 Expired - Fee Related JP5876592B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/002831 WO2013160942A2 (en) 2012-04-25 2012-04-25 File storage system and file cloning method

Publications (2)

Publication Number Publication Date
JP2015515034A JP2015515034A (ja) 2015-05-21
JP5876592B2 true JP5876592B2 (ja) 2016-03-02

Family

ID=49478217

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014551439A Expired - Fee Related JP5876592B2 (ja) 2012-04-25 2012-04-25 ファイルストレージシステムとファイルクローニング方法

Country Status (5)

Country Link
US (1) US9116913B2 (ja)
EP (1) EP2807584A2 (ja)
JP (1) JP5876592B2 (ja)
CN (1) CN104254853A (ja)
WO (1) WO2013160942A2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9128825B1 (en) * 2013-05-17 2015-09-08 Google Inc. Optimizing allocation of flash memory to file groups
CN103561101A (zh) * 2013-11-06 2014-02-05 中国联合网络通信集团有限公司 一种网络文件系统
US9619543B1 (en) * 2014-06-23 2017-04-11 EMC IP Holding Company LLC Replicating in virtual desktop infrastructure
US10083095B1 (en) * 2014-09-25 2018-09-25 EMC IP Holding Company LLC Analytics-based backup system for determining optimum backup methods and predicting backup windows
US9569110B2 (en) * 2014-11-18 2017-02-14 International Business Machines Corporation Efficient management of cloned data
WO2017092016A1 (en) * 2015-12-03 2017-06-08 Huawei Technologies Co., Ltd. A method a source storage device to send a source file and a clone file of the source file to a backup storage device, a source storage device and a backup storage device
WO2017113317A1 (zh) * 2015-12-31 2017-07-06 深圳配天智能技术研究院有限公司 一种文件编辑方法和文件编辑器
US10685046B2 (en) 2016-03-28 2020-06-16 Hitachi, Ltd. Data processing system and data processing method
WO2017168578A1 (ja) * 2016-03-29 2017-10-05 株式会社日立製作所 データ処理システム及びデータ処理方法
WO2017175284A1 (ja) * 2016-04-05 2017-10-12 株式会社日立製作所 データ処理システム及びデータ処理方法
CN106155845B (zh) * 2016-08-02 2023-03-28 四川效率源信息安全技术股份有限公司 一种基于xfs文件系统数据的重组恢复方法
US10467195B2 (en) 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
US10455045B2 (en) 2016-09-06 2019-10-22 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
JP6513888B2 (ja) * 2016-09-13 2019-05-15 株式会社日立製作所 データ量削減機能を有する計算機システム、及び、記憶制御方法
CN106649600B (zh) * 2016-11-25 2019-07-09 华为技术有限公司 一种迁移文件权限的方法、装置以及系统
CN108958650B (zh) * 2017-05-22 2021-06-15 旺宏电子股份有限公司 电子系统及其操作方法
CN107526544A (zh) * 2017-08-16 2017-12-29 国家电网公司 一种分布式存储Ceph集群硬件选型设计方法
CN108646987B (zh) * 2018-05-21 2022-05-31 北京五八信息技术有限公司 一种文件卷的管理方法、装置、存储介质及终端
US10671370B2 (en) * 2018-05-30 2020-06-02 Red Hat, Inc. Distributing file system states
KR102232003B1 (ko) * 2018-06-20 2021-03-25 주식회사 파수 추적 식별자를 이용한 객체 관리 방법, 장치, 컴퓨터 프로그램 및 그 기록 매체
WO2021142768A1 (zh) * 2020-01-17 2021-07-22 华为技术有限公司 一种文件系统的克隆方法及装置
CN113970998A (zh) * 2020-07-24 2022-01-25 中移(苏州)软件技术有限公司 一种信息处理方法、装置、终端及存储介质
CN114780484A (zh) * 2021-12-30 2022-07-22 上海川源信息科技有限公司 一种用于对象存储的文件生命周期管理的实施方法
JP7274057B1 (ja) 2022-04-13 2023-05-15 三菱電機株式会社 重複排除システム、サーバ装置、重複排除方法、および、重複排除プログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08123712A (ja) * 1994-10-26 1996-05-17 Fuji Xerox Co Ltd ファイル管理システム
US7743031B1 (en) * 2002-09-06 2010-06-22 3Par, Inc. Time and space efficient technique for creating virtual volume copies
JP2004259079A (ja) * 2003-02-27 2004-09-16 Hitachi Ltd データ処理システム
JP4292882B2 (ja) * 2003-03-18 2009-07-08 株式会社日立製作所 複数のスナップショット維持方法及びサーバ装置及びストレージ装置
US7996361B1 (en) * 2003-06-30 2011-08-09 Symantec Operating Corporation Method and system of providing replica files within a fileset
US7500020B1 (en) 2003-12-31 2009-03-03 Symantec Operating Corporation Coherency of replicas for a distributed file sharing system
US7409511B2 (en) 2004-04-30 2008-08-05 Network Appliance, Inc. Cloning technique for efficiently creating a copy of a volume in a storage system
US7653668B1 (en) * 2005-11-23 2010-01-26 Symantec Operating Corporation Fault tolerant multi-stage data replication with relaxed coherency guarantees
US7716183B2 (en) * 2007-04-11 2010-05-11 Dot Hill Systems Corporation Snapshot preserved data cloning
US20090006489A1 (en) 2007-06-29 2009-01-01 Microsoft Corporation Hierarchical synchronization of replicas
US8055864B2 (en) 2007-08-06 2011-11-08 International Business Machines Corporation Efficient hierarchical storage management of a file system with snapshots
US9767120B2 (en) * 2008-01-16 2017-09-19 Hitachi Data Systems Engineering UK Limited Multi-way checkpoints in a data storage system
JP2010097359A (ja) 2008-10-15 2010-04-30 Hitachi Ltd ファイル管理方法および階層管理ファイルシステム
WO2010095275A1 (en) * 2009-02-23 2010-08-26 Hitachi, Ltd. Storage system and method using snapshots involving little metadata
US8453145B1 (en) * 2010-05-06 2013-05-28 Quest Software, Inc. Systems and methods for instant provisioning of virtual machine files
US20120278553A1 (en) * 2011-04-28 2012-11-01 Mudhiganti Devender R System and method for migration of data clones

Also Published As

Publication number Publication date
US20130290248A1 (en) 2013-10-31
JP2015515034A (ja) 2015-05-21
WO2013160942A3 (en) 2014-02-06
EP2807584A2 (en) 2014-12-03
WO2013160942A2 (en) 2013-10-31
US9116913B2 (en) 2015-08-25
CN104254853A (zh) 2014-12-31

Similar Documents

Publication Publication Date Title
JP5876592B2 (ja) ファイルストレージシステムとファイルクローニング方法
JP5775177B2 (ja) クローンファイル作成方法と、それを用いたファイルシステム
US10430286B2 (en) Storage control device and storage system
US8930648B1 (en) Distributed deduplication using global chunk data structure and epochs
US8694469B2 (en) Cloud synthetic backups
US7865677B1 (en) Enhancing access to data storage
US9280425B2 (en) Simplified copy offload
JP4919851B2 (ja) ファイルレベルの仮想化を行う中間装置
JP2014525073A (ja) エクステント・ベース・アーキテクチャにおける重複排除
US20190339896A1 (en) System for migrating virtual tape volumes between filesystems
JP5320557B2 (ja) ストレージシステム
JP6604115B2 (ja) ストレージ装置およびストレージ制御プログラム
US8612495B2 (en) Computer and data management method by the computer
JP4937863B2 (ja) 計算機システム、管理計算機及びデータ管理方法
KR102595120B1 (ko) 연속적으로 이용가능한 네트워크 파일 시스템(nfs) 상태 데이터를 위한 시스템들 및 방법들
US20220107916A1 (en) Supporting a lookup structure for a file system implementing hierarchical reference counting
US10013217B1 (en) Upper deck file system shrink for directly and thinly provisioned lower deck file system in which upper deck file system is stored in a volume file within lower deck file system where both upper deck file system and lower deck file system resides in storage processor memory
US10013201B2 (en) Region-integrated data deduplication
US9286318B2 (en) Edge server and storage control method
US20230130096A1 (en) Method and system for improving performance during deduplication
US20220197860A1 (en) Hybrid snapshot of a global namespace
Appuswamy et al. File-level, host-side flash caching with loris

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151104

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151217

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160121

R150 Certificate of patent or registration of utility model

Ref document number: 5876592

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees