JP6033420B2 - ストレージシステムおよびストレージシステムの制御方法 - Google Patents

ストレージシステムおよびストレージシステムの制御方法 Download PDF

Info

Publication number
JP6033420B2
JP6033420B2 JP2015517962A JP2015517962A JP6033420B2 JP 6033420 B2 JP6033420 B2 JP 6033420B2 JP 2015517962 A JP2015517962 A JP 2015517962A JP 2015517962 A JP2015517962 A JP 2015517962A JP 6033420 B2 JP6033420 B2 JP 6033420B2
Authority
JP
Japan
Prior art keywords
file
clone
data
shared
cache
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
JP2015517962A
Other languages
English (en)
Other versions
JPWO2014188515A1 (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
Application granted granted Critical
Publication of JP6033420B2 publication Critical patent/JP6033420B2/ja
Publication of JPWO2014188515A1 publication Critical patent/JPWO2014188515A1/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/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems

Description

本発明は、ストレージシステムおよびストレージシステムの制御方法に関する。
企業や大学などの組織で、多量の物理PC(計算機)を導入した結果、物理PCの管理コストの増加が問題となっている。そこで、近年では、PCを仮想化する技術を用いて物理PCの数を削減することで機器の管理コストを削減する、VDI(Virtual Desktop Infrastructure)という技術が注目されている。
VDIでは、企業や大学などの組織がエンドユーザへ提供する物理PCを、仮想化サーバ上で動作する仮想PCへ移行する。つまり、VDIは、物理計算機上に仮想化プログラムを用いて複数の仮想PCを生成し、それら仮想PCを物理PCの代わりに各エンドユーザに提供する。仮想PCを1台の仮想化サーバ上で多数動作させることにより、稼働する物理PC数を削減できるため、管理コストを抑えることができる。
仮想PCの導入時には、時間のかかる仮想PCのセットアップ作業が必要となる。具体的には、仮想PCの仮想ディスクファイル(VMDKファイル)を作成し、仮想PCへOS(オペレーティングシステム)をインストールし、さらに、ネットワーク設定などのデスクトップ環境を整備する必要がある。
作業時間を削減するために、上記セットアップ作業を実施済みのVMDKファイルを複製する。セットアップ済みのVMDKファイルを、ファイルクローン機能を用いて複製することで複製時間を短縮でき、この結果仮想PCの導入時間をさらに短縮できる。
しかし、複数の仮想PCを一斉に動作させると、記憶装置へのディスクI/Oが集中するため、仮想PCの応答性能が悪化する。
そこで、従来技術では、ディスクI/Oが集中することによる応答性能の悪化を緩和すべく、複数の仮想PCが利用する共有キャッシュを用いる(特許文献1)。共有キャッシュは、ハッシュ値とキャッシュデータから構成される。予めVMDKファイルのブロックごとにハッシュ値を計算して、ダイジェストファイルとして保存する。
或る仮想PCがディスクから読み込んだデータは、ハッシュ値と一緒に共有キャッシュへ保存する。他の仮想PCがデータを読み込む際、ダイジェストファイルにあるデータブロックのハッシュ値を元に共有キャッシュを検索し、データの取得を試みる。共有キャッシュからデータが取得できればディスクへのI/Oは不要となるため、ディスクI/Oが集中するのを抑制できる。複製されたVMDKファイル群には、同一データが含まれているため、ハッシュ値が一致し、共有キャッシュのデータを利用できる。
米国特許第7,809,888号
従来技術では、VMDKファイルの全体を読み込んでハッシュ値を演算することで、そのVMDKファイルのダイジェストファイルを作成する。従って、ダイジェストファイルを作成するためにVMDKファイルに頻繁にアクセスしてハッシュ値演算を行わなければならず、処理負荷が大きいという問題がある。
VMDKファイルごとにダイジェストファイルを作成するため、各ダイジェストファイルの合計サイズが大きくなる。又、共有キャッシュにデータが無い場合には読み出しのためにディスクへのI/Oが発生する。
本発明は、上記の問題に鑑みてなされたもので、その目的は、複数のクローンファイルを生成した場合に、記憶装置への入出力要求を抑制しつつキャッシュの有効利用を図ることができるようにしたストレージシステムおよびストレージシステムの制御方法を提供することにある。
本発明の一つの観点に係るストレージシステムは、記憶装置に接続されたコントローラを含むストレージシステムであって、コントローラは、記憶装置に記憶された共有ファイルを参照する複数のクローンファイルを、一つ以上の仮想計算機に提供しており、各クローンファイルへのデータ書込みにより生じる共有ファイルとの差分データは、記憶装置の記憶領域のうち当該クローンファイルに対応する記憶領域に記憶するようになっており、各クローンファイルに対応付けられる複数のクローン用キャッシュ領域と、共有ファイルに対応付けられる共有キャッシュ領域とを備えており、各クローンファイルのいずれかのクローンファイルへの読出し要求を受領した場合、読出し対象データについて、複数のクローン用キャッシュ領域のうち読出し対象のクローンファイルに対応する所定のクローン用キャッシュ領域を検索し、読出し対象データが所定のクローン用キャッシュ領域に存在しないと判定した場合は、読出し対象データについて共有キャッシュ領域を検索するようになっている。
ストレージシステムを含む情報処理システムの全体を示す図。 仮想化サーバの構成を示す図。 ファイルサーバの構成を示す図。 ストレージ装置の構成を示す図。 クローンファイルと共有ファイルの構造および参照方法を示す説明図。 クローンファイルの構造とクローンファイルの差分データと共有ファイルの関係を示す説明図。 ファイルキャッシュの構成を示す図。 ファイルキャッシュの参照順序などを示す説明図。 ファイルキャッシュを検索する処理のフローチャート。 ファイル読込み処理のフローチャート。 ファイル書込み処理のフローチャート。 第2実施例に係り、ファイルサーバの構成を示す図。 クローンファイルの差分データの閾値を設定するためのユーザインターフェースを示す説明図。 ファイルキャッシュを検索する処理のフローチャート。 第3実施例に係り、クローンファイルによる共有キャッシュの使用可否を設定するためのユーザインターフェースを示す説明図。 ファイルキャッシュを検索する処理を示すフローチャート。
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。本実施形態で開示される複数の特徴は、様々に組み合わせることができる。
本実施形態の処理動作の説明では、「コンピュータプログラム」を動作主体(主語)として説明することがある。コンピュータプログラムは、マイクロプロセッサによって実行される。従って、プロセッサを動作主体として読み替えても良い。
本実施形態では、後述するように、共有ファイルから複製される複数のクローンファイルが、クローンファイル用のキャッシュ領域だけでなく、共有ファイルのキャッシュ領域も共有できるようになっている。
本実施形態では、ファイルクローン機能を用いて作成するクローンファイルの構造を利用して、キャッシュデータを共有する。クローンファイル群は、1つの共有ファイルと複数のクローンファイル群とから構成される。クローンファイルが共有しているデータは、共有ファイルが保持する。
或る仮想PCによるクローンファイルへのアクセスに対応するために、ディスクから共有ファイルのデータを読み込む場合、共有ファイルのキャッシュ(共有キャッシュ領域)にデータを格納する。他の仮想PCが共有ファイルのデータを読み込む場合、共有ファイルのキャッシュ領域に格納されたキャッシュデータを利用することができる。このように動作することで、ダイジェストファイルを作成したり、ダイジェストファイルをメモリに保持したりする必要がない。
本実施形態によると、ファイルクローン機能を用いて複製されたクローンファイル同士が共有ファイルのキャッシュデータを共有できるため、ディスクのI/O負荷を低減することができる。
図1〜図11を用いて第1実施例を説明する。図1は、本実施例によるストレージシステムを含む情報処理システムの全体構成を示す。情報処理システムは、例えば、少なくとも一つのクライアント端末10と、少なくとも一つの仮想化サーバ20と、少なくとも一つのファイルサーバ30と、少なくとも一つのストレージ装置40と、少なくとも一つの管理端末50を含んで構成されている。
クライアント端末10は、エンドユーザが仮想PC201(図2参照)を利用するために使用する計算機である。クライアント端末10は、例えば、CPU11と、メモリ12と、ネットワークインターフェース13とを含んで構成されており、それらは内部バス14によって相互に接続されている。
メモリ12には、仮想化サーバ20で動作する仮想PC201へ接続するための仮想デスクトップクライアントプログラム101が格納されている。CPU11は、メモリ12に格納されたプログラム101を実行する。以降の説明では、特に断らない限り、プログラムはCPUによって実行される。
仮想化サーバ20は、仮想PC201を動作させる計算機である。仮想化サーバ20の内部処理は後述する。
LAN(Local Area Network)60は、クライアント端末10と仮想化サーバ20と管理端末50とファイルサーバ30とを接続するバスである。LAN60は、Ethernet(登録商標)や無線LANアクセスポイント装置などを用いて構成しても良い。本実施例はLAN60の接続形態を限定しない。
管理端末50は、ストレージシステムを管理するために用いる計算機であり、ストレージシステムの管理者によって使用される。管理端末50は、例えば、CPU51と、メモリ52と、ネットワークインターフェース53とを含んで構成されており、それらは内部バス54により相互に接続されている。メモリ52には、管理インターフェース501と、管理プログラム502とが格納されている。
管理インターフェース501は、GUI(Graphical User Interface)による設定画面を管理者に提供するためのプログラムである。管理プログラム502は、管理インターフェース501を通して入力された設定値をファイルサーバ30へ送信して値を設定するためのプログラムである。
管理端末50は、管理端末50に情報を入力するための情報入力装置と、管理端末50から情報を出力するための情報出力装置を備える(いずれも不図示)。情報入力装置としては、例えば、キーボード、ポインティングデバイス、視線検出装置、動作検出装置、音声入力装置などがある。情報出力装置としては、例えば、ディスプレイ、音声合成装置、プリンタなどがある。
ファイルサーバ30は、仮想化サーバ20にファイル共有サービスを提供する計算機である。ファイルサーバ30の内部処理は後述する。
ストレージ装置40は、ファイルサーバ30と例えばSAN(Storage Area Network)などのネットワーク61を介して相互に接続されるディスク装置である。ストレージ装置40は、ファイルサーバ30が利用するディスク領域を持つ。ストレージ装置40の内部処理は後述する。
図2は、仮想化サーバ20の構成を示す。仮想化サーバ20はファイルサーバ30と共に「コントローラ」の一例を構成する。さらに、仮想化サーバ20は、「仮想化管理サーバ」の一例に該当する。仮想化サーバ20は、例えば、CPU21と、メモリ22と、ネットワークインターフェース23とを含んで構成され、それらはバス24で相互に接続されている。
メモリ22には、例えば、仮想PC201と、ハイパバイザプログラム202と、ファイルアクセスプログラム203とが格納されている。仮想PC201は、仮想的な計算機であり、ハイパバイザプログラム202によって作成される。仮想PC201は、物理的な計算機と同様の機能を持つ。仮想PC201上では、仮想デスクトップサーバプログラム2011と、アプリケーションプログラム2012が動作する。
仮想PC201の利用するディスクは、ストレージ装置40に格納されたファイル(VMDKファイル)であり、ハイパバイザプログラム202から割り当てられる。仮想デスクトップサーバプログラム2011は、クライアント端末10に仮想PC201のデスクトップ環境を提供するためのプログラムである。仮想デスクトップサーバプログラム2011は、クライアント端末10の仮想デスクトップクライアントプログラム101からアクセス要求を受け付けると、デスクトップ環境をネットワーク60経由で、クライアント端末10へ提供する。
アプリケーションプログラム2012は、例えば、文書や図形または表などを作成したり編集したりするためのオフィスソフトウェア、ウェブサーバを閲覧するためのウェブブラウザ、電子メールを送受信するための電子メール管理ソフトウェアなどのプログラムである。
ハイパバイザプログラム202は、仮想PC201を作成するコンピュータプログラムである。ハイパバイザプログラム202は、仮想PC201の起動および停止を管理したり、CPU資源やディスク資源やメモリ資源などの割り当てなどを管理したりする。
ファイルアクセスプログラム203は、ファイルサーバ30の提供するファイル共有サービスを利用するためのプログラムである。仮想化サーバ20は、ファイルアクセスプログラム203を通してファイルサーバ30へアクセスし、ファイルサーバ30に接続されたストレージ装置40に格納されているVMDKファイルへアクセスする。
図3は、ファイルサーバ30の構成を示す。ファイルサーバ30は、仮想化サーバ20と共に「コントローラ」の一例を構成する。ファイルサーバ30は、「ファイル管理コントローラ」の一例に該当する。仮想化サーバ20を第1コントローラまたは第2コントローラと呼ぶ場合、ファイルサーバ30を第2コントローラまたは第1コントローラと呼ぶこともできる。
ファイルサーバ30は、例えば、CPU31と、メモリ32と、ネットワークインターフェース33と、SAS(Serial Attached SCSI)などを利用するストレージインターフェース34とを含んで構成されており、それらはバス35で相互に接続されている。
メモリ32には、例えば、ファイルサーバプログラム301と、ファイルシステムプログラム302と、ディスク45から読み込んだファイル303と、第1キャッシュ304と、第2キャッシュ305とが格納されている。
ファイルサーバプログラム301は、仮想化サーバ20のファイルアクセスプログラム203から発行されるファイルアクセス要求を受理し、ファイルの読み書き処理を行うプログラムである。ファイルシステムプログラム302は、ディスク45に格納されているデータをファイルとして管理し、リードデータやライトデータのキャッシュ制御を行うプログラムである。
ファイル303は、ファイル管理情報3031と、データブロック3032とから構成される。ファイル管理情報3031とは、具体的には、所有ユーザIDおよびデータブロック3032の格納先情報などを持つinodeである。データブロック3032は、例えばオフィス文書の内容といったファイルの内容(コンテンツ)である。図3は、ディスク45に格納されたファイルのデータがメモリ32へ読み込まれている状態を示す。
第1キャッシュ領域304は、後述するクローンファイル303Bのファイルキャッシュデータ71B(図7参照)を格納するためのメモリ領域である。第2キャッシュ305は、後述する共有ファイル303Aのファイルキャッシュデータ71A(図7参照)を格納するためのメモリ領域である。
第1キャッシュ領域304と第2キャッシュ領域305とは、メモリ32の領域上に明確に区別して設定されているわけではない。クローンファイル303Bのキャッシュデータ71Bを記憶するセグメント(記憶単位)の集合体が第1キャッシュ領域304として認識される。同様に、共有ファイル303Aのキャッシュデータ71Aを記憶するセグメントの集合体が第2キャッシュ領域305として認識される。
以下の説明では、ファイルキャッシュされるデータをキャッシュデータまたはファイルキャッシュと略する場合がある。第1キャッシュ領域304および第2キャッシュ領域305を第1キャッシュ304および第2キャッシュ305と略する場合がある。
ファイルサーバ30は、ストレージインターフェース34からFC(Fibre Channel)などのネットワーク61を介してストレージ装置40と通信可能に接続されている。
ファイルサーバ30は、共有ファイル303Aを参照する複数のクローンファイル303Bからなるグループを複数管理することができる。つまり、或る共有ファイル303Aを参照するクローンファイル群303Bと、他の共有ファイル303Aを参照する他のクローンファイル群303Bを、一つのファイルサーバ30で管理できる。
図4は、ストレージ装置40の構成を示す。ストレージ装置40は、例えば、CPU41と、メモリ42と、ストレージインターフェース43と、ディスクコントローラ44とを含んで構成され、それらはバス46で相互に接続されている。ディスクコントローラ44と少なくとも一つ以上のディスク45とは、冗長化された通信経路を介して相互に接続されている。
メモリ42は、例えば、ストレージを管理するためのストレージ管理プログラム401を格納している。ディスクコントローラ44は、RAID(Redundant Array of Inexpensive Disks)機能を有し、複数のディスク45を冗長化させることにより、ディスク45の耐障害性を向上させている。
「記憶装置」の例であるディスク45としては、例えば、ハードディスクデバイス、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス等のデータを読み書き可能な種々の記憶装置を利用可能である。
例えば、FC(Fibre Channel)ディスク、SCSI(Small Computer System Interface)ディスク、SATAディスク、ATA(AT Attachment)ディスク、SAS(Serial Attached SCSI)ディスク等を用いることができる。また例えば、フラッシュメモリ、FeRAM(Ferroelectric Random Access Memory)、MRAM(MagnetoresistiveRandom Access Memory)、相変化メモリ(Ovonic Unified Memory)、RRAM(登録商標)等の種々の記憶装置を用いることもできる。さらに、例えば、フラッシュメモリデバイスとハードディスクデバイスのように、種類の異なる記憶装置をストレージ装置40内に混在させる構成でもよい。
ストレージ管理プログラム401は、ディスクコントローラ44の持つRAID機能を管理するプログラムである。例えば、ストレージ管理プログラム401は、「6D+2P」等のような冗長化構成を設定する。本実施例において、ストレージ装置40は、冗長化機能を備えているストレージでもよいし、備えていないストレージでもよい。ストレージ装置40は、ファイル303のデータブロック3032を保存する機能を備えていればよく、記憶装置の種類および制御方法などは限定しない。
なお、ディスク45に格納されているデータは、重複排除処理が実施されており、基本的に重複データはディスク45に記憶されていないものとして説明する。
図5は、クローンファイルの構造を示す。この構造は、ディスク45とファイルサーバ30のメモリ32とに作成される。ファイルアクセス時に、ディスク45からファイルが読み込まれることで、メモリ32上に図5に示す構造が作成される。
クローンファイル303Bへのデータ書き込みなどにより、この構造が更新されると、ディスク45へ書き戻される。このように、この構造は、ディスク45とメモリ32とで一致するように制御される。
クローンファイル303Bは、共有ファイル303Aを参照するファイルである。共有ファイル303Aは、複数のクローンファイル303Bが共有するデータブロック3032を保持するファイルである。図5に示す例では、2つのクローンファイル303Bが1つの共有ファイル303Aを参照している。各クローンファイル303Bと共有ファイル303Aとは、ファイル管理情報3031と、ブロックポインタ3033と、データブロック3032とを含んで構成される。理解の容易のために、クローンファイル303Bに関する構成には符号の末尾に「B」を付し、共有ファイル303Aに関する構成には符号の末尾に「A」を付す。両構成を特に区別しない場合は、符号の末尾に「A」も「B」も付さずに説明する。
ファイル管理情報3031は、ファイルの種類や所有者などを保持する管理データであり、例えば、個々のファイルを識別する識別番号D11と、参照情報D12と、フラグD13とを含む。さらに、後述のように、ファイル管理情報3031は、キャッシュ管理データ70(図7参照)を含むこともできる。それらデータの利用は後述する。
ブロックポインタ3033は、ストレージ装置40のディスク45に格納されたデータブロック3032を参照するデータである。共有ファイル303Aのデータブロック3032Aは、複数のクローンファイル303Bから共有されている。いずれのクローンファイル303Bが更新された場合でも、共有ファイル303Aのデータブロック3032Aは、更新されない。一方、各クローンファイル303Bのデータブロック3032Bは、クローンファイルの更新データである。つまり、クローンファイル303Bのデータブロック3032Bは、共有ファイルのデータブロック3032Aとの差分である。
個々のファイルを一意に識別するために、識別番号D11が用いられる。識別番号D11は、ファイル毎に異なる番号が割り当てられる。識別番号は識別情報、識別子などと呼び変えてもよい。
参照情報D12Bは、クローンファイル303Bが共有ファイル303Aを参照するために用いるデータである。参照情報D12Bには、参照先の共有ファイル303Aのアドレスと、その共有ファイル303Aの識別番号D11Aとが格納される。それらに限らず、参照情報D12Bは、共有ファイル303Aを特定できる情報であれば何でもよい。本実施例は、参照情報D12Bの構成を限定しない。
クローンファイル303Bと共有ファイル303Aとを識別するために、フラグD13には、クローンファイルフラグまたは共有ファイルフラグのいずれか一方が設定されるようになっている。ファイルがクローンファイル303Bである場合、クローンファイルフラグがフラグD13Bへ設定される。一方、ファイルが共有ファイル303Aである場合は、共有ファイルフラグがフラグD13Aに設定される。
図5に示すクローンファイルの構造により、複数のクローンファイル303Bは、共有ファイル303Aが保持するデータを共有することができる。また、共有ファイル303Aを参照する新たなクローンファイル303Bを作成する場合、新規作成したクローンファイル303Bの参照情報D12Bに、参照先の共有ファイル303Aについての参照情報D12Bを設定する。このように動作することによって、ファイルを丸ごとコピーする場合に比べて、クローンファイルを高速かつ小さいデータサイズで作成できる。
図6は、クローンファイル303Bの構成を示す。クローンファイル303Bは、クローンファイル303Bへ格納されたデータブロック3032Bと、共有ファイル303Aに格納されたデータブロック3032Aとを重ね合わせることで構成される。
例えばクローンファイル303Bが作成されたばかりで未だ更新されていない場合に、そのクローンファイル303Bについて読出し要求を受領すると、共有ファイル303Aのデータブロック3032Aが読出し要求の発行元に返される。読出し対象のクローンファイル303Bは、参照先である共有ファイル303Aとの差分データを持っていないためである。
これに対し、クローンファイル303Bにデータが書き込まれてファイル内容が更新されている場合において、そのクローンファイル303Bについての読出し要求を受領すると、クローンファイル303Bのデータブロック3032Bまたは共有ファイル303Aのデータブロック3032Aのいずれかが読み出し要求の発行元に返信される。
読出し対象データがクローンファイル303Bの持つ差分データである場合、クローンファイル303Bのデータブロック3032Bが読み出し要求の発行元に返される。読出し対象データが参照先である共有ファイル303Aの持つ共有データである場合、共有ファイル303Aのデータブロック3032Aが読み出し要求の発行元に返信される。
図6の例では、クローンファイルの0番目のブロックを読み込むと、クローンファイル303Bの差分データ「0’」が読み込まれる。差分データが無いクローンファイルの2番目のブロックを読み込むと、共有ファイル303Aの持つ共有データ「2」が読み込まれる。このように、クローンファイル303Bのデータブロック3032Bは、共有ファイル303Aのデータブロック3032Aをマスクするように構成されている。
図7は、ファイルキャッシュの構造を示す。キャッシュ管理データ70は、ファイルサーバ30のメモリ32に読み込まれたファイル管理情報3031に追加される。ディスク45のデータブロック3032からファイルサーバ30のメモリ32へ読み込まれたデータをキャッシュデータ71として管理するため、キャッシュ管理データ70は、メモリアドレスなどをキーとしてキャッシュデータ71を参照する。
アプリケーションプログラム2012がファイルへアクセスすると、キャッシュ管理データ70の参照情報を用いてキャッシュデータ71を特定し、データを取得する。また、ディスク45のデータブロック3032からメモリ32へ読み込まれていない部分は、キャッシュデータ71には現れない。
ファイルキャッシュデータ71は、ファイル毎に作成される。つまり、クローンファイル303Bのファイルキャッシュデータ71Bと共有ファイル303Aのファイルキャッシュデータ71Aとは、別々に管理される。前述のとおり、クローンファイル303Bのファイルキャッシュデータ71Bは第1キャッシュ304として、共有ファイル303Aのファイルキャッシュ71Aは第2キャッシュ305として、認識される。
図8は、ファイルシステムプログラム302がファイルキャッシュを検索する動作の概要を示す図である。
ファイルサーバ30のメモリ32に読み込まれたクローンファイル303Bのファイル管理情報3031Bの参照情報D12Bには、メモリ32に読み込まれた共有ファイル303Aのメモリアドレスが設定されている。前述のとおり、共有ファイル303Aのファイル管理情報3031Aが特定できるのであれば、参照情報D12Bにはどのような値を用いても良い。
クローンファイル303Bのキャッシュ管理データ70Bには、クローンファイル303Bのデータブロック3032Bのキャッシュデータ71B(第1キャッシュ304のデータ)の管理情報が格納される。共有ファイル303Aのキャッシュ管理データ70Aには、共有ファイル303Aのデータブロック3032Aのキャッシュデータ71A(第2キャッシュ305のデータ)の管理情報が格納される。
ファイルシステムプログラム302によるファイルキャッシュの検索動作の概要を説明する。ファイルサーバプログラム301は、仮想化サーバ20のファイルアクセスプログラム203からクローンファイル303Bへのアクセス要求を受理すると、ファイルシステムプログラム302へファイルアクセス要求を発行する。
ファイルシステムプログラム302は、アクセス先のクローンファイル303Bについて第1キャッシュ304のキャッシュデータ71Bを調べる。ファイルシステムプログラム302は、第1キャッシュ304のキャッシュデータ71Bにアクセス対象データがある場合、そのデータをファイルサーバプログラム301へ返却する(S1)。
ファイルシステムプログラム302は、キャッシュデータ71Bにアクセス対象データが無い場合、ディスク45にアクセス対象データがあるかを調べる(S2)。アクセス対象データがキャッシュデータ71Bには無く、ディスク45に記憶されている場合とは、例えば、アクセス対象データを初めて読み出す場合などである。ファイルシステムプログラム302は、ディスク45にアクセス対象データ(ここでは、データ「1’」のブロック)が有る場合、そのデータをメモリ32に読み込み、第1キャッシュ304として保持する(S3)。
ディスク45のクローンファイル303Bにアクセス対象データ(ここではデータ「2’」のブロック)が無い場合、ファイルシステムプログラム302は、共有ファイル303Aのキャッシュデータ71Aを有する第2キャッシュ305を検索する(S4)。
ファイルシステムプログラム302は、第2キャッシュ305にアクセス対象データがある場合、そのデータをファイルサーバプログラム301へ返却する。ファイルシステムプログラム302は、アクセス対象データ(ここではデータ「2」のブロック)が第2キャッシュ305に無く、ディスク45内の共有ファイル303Aに有る場合、そのデータをメモリ32へ読み込み、第2キャッシュ305のキャッシュデータ71Aとして保持する(S5)。
ファイルシステムプログラム302は、ディスク45の共有ファイル303Aにもアクセス対象データが無い場合、ファイルサーバプログラム301へ「0」で埋めたゼロパディングデータを返却する(S6)。
以上のようにファイルシステムプログラム302が動作することによって、図8のクローンファイル303B(1)を読み込んだ場合に、クローンファイル303B(1)にデータブロック3032が無ければ、共有ファイル303Aへ第2キャッシュ305が設定される。
従って、これ以降に、クローンファイル303B(2)を読み込んだ場合、第2キャッシュ305のキャッシュデータ71Aを利用できる。このように、本実施例では、共有ファイル303Aのデータブロック3032Aのキャッシュデータ71Aを、複数のクローンファイル303Bで共有できる。その結果、共有ファイル303Aのデータブロック3032Aは1度だけディスク45から読み込んで、第2キャッシュ305のキャッシュデータ71Aとして管理すればよい。この結果、例えば、同一OSが複数の仮想PC201で稼働する場合などでは、複数のクローンファイル303Bが1つの共有ファイル303Aのキャッシュデータ71Aを比較的多く共有でき、共有効果が高まるため、ディスク45へのI/O発行数を削減できる。
図9は、ファイルシステムプログラム302がファイルキャッシュを検索する処理のフローチャートである。ファイルシステムプログラム302は、ファイルアクセス要求を受理すると、対象データについて、クローンファイル303Bの第1キャッシュ304または共有ファイル303Aの第2キャッシュ305を検索する。ファイルシステムプログラム302は、まず最初に、クローンファイル303Bの第1キャッシュ304にキャッシュデータ71Bが設定されているかどうかを調べる(S11)。
ファイルシステムプログラム302は、第1キャッシュ304にキャッシュデータ71Bが設定されていると判定した場合(S11:YES)、そのキャッシュデータ71Bを呼び出し元へ返却して、本処理を終了する(S19)。
一方、ファイルシステムプログラム302は、第1キャッシュ304にキャッシュデータ71Bが設定されていないと判定した場合(S11:NO)、クローンファイル303Bのデータブロック3032Bがあるかどうかを調べる(S12)。ファイルシステムプログラム302は、差分データを格納するデータブロック3032Bがあると判定した場合(S12:YES)、そのデータブロック3032Bをキャッシュデータ71Bへ読み込む(S13)。ファイルシステムプログラム302は、読み込んだデータを第1キャッシュ304に属するキャッシュデータとし、そのデータを呼び出し元へ返却して本処理を終了する(S19)。
ファイルシステムプログラム302は、クローンファイル303Bにデータブロック3032Bが無いと判定した場合(S12:NO)、共有ファイル303Aの第2キャッシュ305にキャッシュデータ71Aがあるか調べる(S14)。ファイルシステムプログラム302は、キャッシュデータ71Aがあると判定した場合(S14:YES)、ステップ20以降の処理を実施する。
一方、ファイルシステムプログラム302は、第2キャッシュ305にキャッシュデータ71Aが無いと判定した場合(S14:NO)、共有ファイル303Aのデータブロック3032Aがあるかどうかを調べる(S15)。ファイルシステムプログラム302は、共有ファイル303Aのデータブロック3032Aがあると判定した場合(S15:YES)、そのデータを読み出して第2キャッシュ305へ設定する(S16)。そして、キャッシュ検索処理がクローンファイルの部分書き込みであるか判定する(S50)。部分書き込みであった場合(S50:YES)、第2キャッシュ305のデータを第1キャッシュ304へコピーし(S51)、第1キャッシュのデータを呼び出し元へ返却する(S19)。一方、部分書き込みで無かった場合(S50:NO)、第2キャッシュ305のデータを呼び出し元へ返却する(S17)。ファイルシステムプログラム302は、共有ファイル303Aにデータブロック3032Aが無いと判定した場合(S15:NO)、0で埋められたデータを呼び出し元へ返却する(S18)。
以上に説明したようにファイルシステムプログラム302が動作すると、クローンファイル303Bのデータブロック3032Bは第1キャッシュ304へ設定され、共有ファイル303Aのデータブロック3032Aは第2キャッシュ305へ設定される。その結果、複数のクローンファイル303Bが共有ファイル303Aのキャッシュデータ71Aを共有することができる。
図10は、ファイルサーバ30のファイルシステムプログラム302がファイルを読み込む処理のフローチャートを示す。
エンドユーザは、クライアント端末10の仮想デスクトップクライアントプログラム101を用いて、仮想化サーバ20の仮想デスクトップサーバプログラム2011へ接続する。仮想デスクトップサーバプログラム2011は、アプリケーションプログラム2012を動作させる。アプリケーションプログラム2012が、クローンファイル303Bとして作成されたVMDKファイルのデータブロック3032を読み込む場合、アプリケーションプログラム2012は、ハイパバイザプログラム202を通して、ファイルアクセスプログラム203を呼び出す。
呼び出されたファイルアクセスプログラム203は、ファイルサーバ30のファイルサーバプログラム301へファイル読み込み要求を送信する。ファイルサーバ30のファイルサーバプログラム301は、ファイル読み込み要求を受理する(S31)。
ファイルサーバプログラム301はファイルシステムプログラム302へファイル読み込み要求を送信し、ファイルシステムプログラム302は、そのファイル読み込み要求を受理して処理を行う(S32)。
ファイルシステムプログラム302は、図9で述べたキャッシュ検索処理を呼び出す(S33)。キャッシュ検索処理によって、VMDKファイルのデータブロック3032のデータが読み込まれて、そのデータが返却される。ファイルシステムプログラム302は、キャッシュ検索処理から返却されたデータブロック3032を、ファイルサーバプログラム301へ返却する(S34)。
ファイルサーバプログラム301は、ファイルアクセスプログラム203へデータを返却する(S35)。仮想化サーバ20のファイルアクセスプログラム203は、受け取ったデータを、ハイパバイザプログラム202を通してアプリケーションプログラム2012に渡す。
図11は、ファイルサーバ30のファイルシステムプログラム302が実行するファイル書き込み処理のフローチャートである。
エンドユーザは、クライアント端末10の仮想デスクトップクライアントプログラム101を用いて、仮想化サーバ20の仮想デスクトップサーバプログラム2011へ接続する。仮想デスクトップサーバプログラム2011は、アプリケーションプログラム2012を動作させる。アプリケーションプログラム2012が、クローンファイル303Bとして作成されたVMDKファイルのデータブロック3032にデータを書き込む場合、アプリケーションプログラム2012は、ハイパバイザプログラム202を通して、ファイルアクセスプログラム203を呼び出す。
呼び出されたファイルアクセスプログラム203は、ファイルサーバ30のファイルサーバプログラム301へファイル書き込み要求および書き込みデータを送信する。ファイルサーバプログラム301は、そのファイル書き込み要求を受理し、書き込みデータを受け取る(S41)。ファイルサーバプログラム301は、ファイルシステムプログラム302へファイル書き込み要求および書き込みデータを送信し、ファイルシステムプログラム302がファイル書き込み要求を受理する(S41)。
ファイルシステムプログラム302は、受け取った書き込みデータのサイズを調べる(S42)。すなわち、ファイルシステムプログラム302は、書き込みデータサイズがファイルシステムプログラム302のデータ管理サイズであるブロックサイズと等しいか調べる(S42)。
ここで、ファイルシステムプログラム302のデータ管理単位であるブロックとファイル303のデータの書き換えとの関係について説明する。ファイルシステムプログラム302は、ファイル303に保存されているデータを、ブロックと呼ぶ大きさに区切って管理している。
ファイルシステムプログラム302は、ブロック単位で、ファイルのデータを読み書きする。ブロックの大きさは、例えば、4KBである。ファイルサイズが4KBの大きさの場合は1ブロックとなる。ファイルシステムプログラム302は、4KB未満のデータを用いてブロックを更新する場合(部分更新)、ディスク45からメモリ32へデータを読み込み、更新データで内容を書き換えたデータをそのブロックへ書き込む。
4KBのデータの場合、ブロック全体が書き換えられるため、ディスク45からメモリ32へデータを読み込む必要はない。ファイルサイズが5KBの大きさの場合は、2ブロックとなる。このファイルを書き換える場合、ファイルシステムプログラム302は、まず先頭の4KB(1ブロック目)を書き換え、次に、後半の1KB(2ブロック目)を部分更新する。なお、2ブロック目のデータのうち後半の3KBは使用しない。このように、ファイル303に格納されているデータはある大きさのブロックに分けられて管理されており、その大きさの単位で読み書きされる。
図11に戻る。ステップS42で、書き込みデータサイズがブロックサイズと同じサイズであると判定した場合、ファイルシステムプログラム302は、第1キャッシュ304へデータを書き込む(S43)。ファイルシステムプログラム302は、第1キャッシュ304に書き込んだデータをディスク45へ書き込む(S46)。ファイルシステムプログラム302は、書き込みデータが全て処理したか判断する(S47)。ファイルシステムプログラム302は、書き込みが終わっていないと判定した場合(S47:NO)、次の書き込みデータブロックを選択して(S48)、ステップS42に戻る。
ステップS42で、書き込みデータの大きさがファイルシステムプログラム302で扱うブロックサイズより小さいと判定した場合(S42:NO)、ファイルシステムプログラム302は、部分更新を行うために、図9で述べたキャッシュ検索処理を呼び出す(S44)。ファイルシステムプログラム302は、第1キャッシュ304へデータを部分的に書き込み(S45)、ステップS46以降を実行する。
ファイルシステムプログラム302は、ステップS47で、受信した書き込みデータを全て書き込んだと判断した場合(S47:YES)、書き込み結果をファイルサーバプログラム301へ返却する(S49)。
ファイルサーバプログラム301は、ファイルシステムプログラム302から受領した書込み結果を、ファイルアクセスプログラム203へ返却する。仮想化サーバ20のファイルアクセスプログラム203は、ハイパバイザプログラム202を通して、アプリケーションプログラム2012へ書き込み結果を渡す。
以上のように本実施例では、クローンファイル303Bに格納されているデータ(つまり、クローンファイル303Bへ書き込まれた差分データ)については、第1キャッシュ304に格納されファイル毎に管理される。一方でファイルクローン機能により作成した複数のクローンファイル303Bで共有されるデータについては共有ファイル303Aのファイルキャッシュ71(第2キャッシュ305のデータ)に格納されて共有される。よって、例えば、同じOSが動作する仮想PC201を多量に作成する場合などのように、1つの共有ファイル303Aを複製して大量のクローンファイル303Bを生成する場合に、本実施例によればクローン毎に同じデータをキャッシュする必要がなくなり、効率的なキャッシュの利用を可能とする。
従って、先に実行されたクローンファイル303Bへのファイルアクセスによって読み込まれたキャッシュデータ71Aを、次のクローンファイル303Bについてのファイルアクセス処理で利用することができる。この結果、ディスク45へのI/O数を削減でき、ファイルサーバ30およびストレージ装置40の負荷を軽減できる。又、読み出しは、第1キャッシュ304に対象データが無い場合に第2キャッシュ305を検索するようにすることで、新たな計算負荷等を要求せずに、新たな書込みを受けて差分データを有するクローンファイル含めて差分データと共有データを矛盾なく読み出すことができる。
図12〜図14を用いて第2実施例を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例に相当するため、第1実施例との相違を中心に説明する。本実施例では、共有ファイル303Aのファイルキャッシュ71A(第2キャッシュ305)の利用効率を上げるために、クローンファイル303Bのデータブロック3032Bの容量(つまり、クローンファイル303Bの差分データの容量)に基づいて、第2キャッシュ305の共有の要否を制御できるようにしている。
例えば、仮想PC201をしばらく動作させると、エンドユーザの作成したファイルデータやOSのアップデートデータなどによって、クローンファイル303Bの差分データが増加する。差分データについては、第2キャッシュ305のデータを共有できないため、本実施例の構成が有効に働く。
図12は、本実施例におけるファイルサーバ30の構成を示す。本実施例のファイルサーバ30は、第1実施例で述べたファイルサーバ30の構成要素に加えて、差分データの閾値を設定するための閾値設定情報306を備える。閾値設定情報306は、メモリ32に記憶されている。
図13は、管理端末50の管理インターフェース501が提供する、閾値を設定するためのGUI5011の一例を示す図である。閾値設定GUI5011は、閾値を入力するための閾値入力部50111と、入力した閾値をファイルサーバ30に設定するための設定ボタン50112とを含む。システム管理者は、閾値入力部50111に差分データの容量を入力し、設定50112を押す。これにより、管理端末50の管理プログラム502を通して、ファイルサーバ30の差分閾値設定情報306が設定される。又、差分閾値設定情報は予め設定されているものであっても良い。
図14は、本実施例によるキャッシュ検索処理を示すフローチャートである。本実施例では、クローンファイル303Bのデータブロック3032Bの容量が閾値設定情報306に設定された容量よりも大きくなった場合に、第1キャッシュ304に差分データを格納する。本実施例のキャッシュ検索処理は、図9で述べたステップS11〜S19に加えて、新規ステップS20〜S22を備える。
ファイルシステムプログラム302は、ステップS14で第2キャッシュ305にデータがあると判定した場合、または、ステップS16で第2キャッシュ305に共有ファイル303Aのデータブロック3032Aを読み込んだ場合のいずれかの場合に、ステップS20を実行する。ファイルシステムプログラム302は、ステップS20で、クローンファイル303Bのデータブロック3032Bの大きさ(差分データサイズ)が閾値設定情報306に設定された閾値(Th)よりも大きいか判定する。
ファイルシステムプログラム302は、クローンファイル303Bのデータブロック3032Bの大きさが閾値Th以下であると判定した場合(S20:NO)、クローンファイルの部分書き込みであるか判定する(S50)。部分書き込みであった場合(S50:YES)、第2キャッシュ305のデータを第1キャッシュ304へコピーし(S51)、第1キャッシュのデータを呼び出し元へ返却する(S19)。一方、部分書き込みでは無かった場合(S50:NO)、共有ファイル303Aの第2キャッシュ305を本処理の呼び出し元へ返却する(S17)。
一方、ファイルシステムプログラム302は、クローンファイル303Bのデータブロック3032Bの大きさが閾値Thより大きいと判定した場合(S20:YES)、第2キャッシュ305のデータをクローンファイル303Bの第1キャッシュ304へコピーする(S21)。ファイルシステムプログラム302は、第1キャッシュ304のデータを本処理の呼び出し元に返却する(S22)。
このように構成される本実施例も第1実施例と同様の作用効果を奏する。さらに、本実施例では、図14で述べたキャッシュ検索処理が行われることで、差分データのサイズが差分閾値設定情報306に設定した閾値を超えたクローンファイル303Bは、第2キャッシュ305を利用しなくなる。その結果、次回以降のキャッシュ検索処理ではステップS11でYESと判定され、ファイルシステムプログラム302は、クローンファイル303Bの第1キャッシュ304のデータを呼び出し元に返却できる可能性が高まる。その結果、本実施例では、差分データが閾値以下のクローンファイル303Bだけで共有ファイル303Aのキャッシュデータ71Aを共有でき、キャッシュの検索効率が向上する。そのため、CPUの処理負荷が低下してクローンファイルのアクセス応答性能を上げるこtが可能となる。
図15および図16を用いて、第3実施例を説明する。本実施例では、第2キャッシュ305の利用効率を上げるために、ファイルキャッシュ71Aを共有することについての要否を指定するための設定情報を用いる。例えば、仮想PC201上で動作するOSの種類によっては、ファイルキャッシュ71Aの共有効果が低いものなどがありえる。その場合に、本実施例が有効に働く。
図15は、管理端末50の管理インターフェース501が提供する、共有の要否を設定するためのGUI5012の一例を示す。共有要否設定GUI5012は、例えば、クローンファイル名50121と、設定ボタン50122とを含む。システム管理者は、クローンファイル名50121に、本機能を有効にするクローンファイル名を入力して、設定ボタン50122を押す。
これにより、管理端末50の管理プログラム502を通して、ファイルサーバ30の共有ファイル303AのフラグD13Aに、ファイルキャッシュの共有を拒否するためのファイルキャッシュ共有拒否フラグが設定される。
ファイルキャッシュ共有拒否フラグが共有ファイル303Aに設定された場合、その共有ファイル303Aを参照するクローンファイル303Bは、共有ファイル303Aの第2キャッシュ305を共有しない。
図16は、キャッシュ検索処理を示すフローチャートである。本処理は、図9で述べたステップS11〜S19と図14で述べたステップS21およびS22とを備えており、さらに、図14で述べたステップS20に代えて新規ステップS23を備える。
本処理では、共有ファイル303AのフラグD13Aにファイルキャッシュ共有拒否フラグが設定されている場合、共有ファイル303Aから読み出したデータを第1キャッシュ304に格納する。
ファイルシステムプログラム302は、ステップS14で、第2キャッシュ305にデータがあると判定した場合、または、ステップS16で、第2キャッシュ305に共有ファイル303Aのデータブロック3032Aを読み込んだ場合のいずれかの場合に、共有ファイル303AのフラグD13Aにファイルキャッシュ共有拒否フラグが設定されているか調べる(S23)。
ファイルシステムプログラム302は、ファイルキャッシュ共有拒否フラグが設定されていないと判定した場合(S23:NO)、クローンファイルの部分書き込みであるか判定する(S50)。部分書き込みであった場合(S50:YES)、第2キャッシュ305のデータを第1キャッシュ304へコピーし(S51)、第1キャッシュのデータを呼び出し元へ返却する(S19)。一方、部分書き込みでは無かった場合(S50:NO)、共有ファイル303Aのファイルキャッシュ71Aを呼び出し元に返却する(S17)。一方、ファイルシステムプログラム302は、ファイルキャッシュ共有拒否フラグが設定されていると判定した場合(S23:YES)、第2キャッシュ305をクローンファイル303Bの第1キャッシュ304へコピーする(S21)。そして、ファイルシステムプログラム302は、第1キャッシュ304のデータを呼び出し元に返却する(S22)。
このように構成される本実施例も第1実施例と同様の作用効果を奏する。さらに本実施例では、ファイルキャッシュ共有拒否フラグが設定されている共有ファイル303Aを元にしてファイルクローン機能によりクローンファイル303Bを複製した場合、そのクローンファイル303Bは共有ファイル303Aのファイルキャッシュ71を共有しない。よって、ユーザは予め、もしくは、システム利用中に共有キャッシュ利用のメリットが低いファイルについては、共有キャッシュを利用しないように設定する。
従って、キャッシュ共有効果が低いと考えられる場合に、ファイルキャッシュ共有拒否フラグを共有ファイル303Aに設定しておけば、その分だけファイルサーバ30のメモリ32に空きを作ることができる。その空いたメモリを、キャッシュ共有効果の高い他のクローンファイルおよび共有ファイルのグループに割り当てることで、ファイルサーバ30のメモリ32を有効に利用することができる。又、共有キャッシュ検索の処理を行わずに済むようにし、システムとしてのレスポンス性能を向上させることができる。
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、上述された本発明の技術的特徴は、適宜結合させて実施することができる。
10:クライアント端末、20:仮想化サーバ、30:ファイルサーバ、40:ストレージ装置、50:管理端末、70:キャッシュ管理データ、71:キャッシュデータ、201:仮想PC、301:ファイルサーバプログラム、302:ファイルシステムプログラム、303:ファイル、303A:共有ファイル、303B:クローンファイル、304:第1キャッシュ領域、305:第2キャッシュ領域

Claims (10)

  1. 記憶装置に接続されたコントローラを含むストレージシステムであって、
    前記コントローラは、
    前記記憶装置に記憶された共有ファイルを参照する複数のクローンファイルを、一つ以上の仮想計算機に提供しており、
    前記各クローンファイルへのデータ書込みにより生じる前記共有ファイルとの差分データは、前記記憶装置の記憶領域のうち当該クローンファイルに対応する記憶領域に記憶するようになっており、
    前記各クローンファイルに対応付けられる複数のクローン用キャッシュ領域と、前記共有ファイルに対応付けられる共有キャッシュ領域とを備えており、
    前記各クローンファイルのいずれかのクローンファイルへの読出し要求を受領した場合、前記複数のクローン用キャッシュ領域のうち前記読出し対象のクローンファイルに対応する所定のクローン用キャッシュ領域に前記読出し要求の対象データが存在しないと判定した場合に前記共有キャッシュ領域を検索する、
    ストレージシステム。
  2. 前記コントローラは、前記読出し対象のクローンファイルについての読出し要求を受領した場合、
    前記読出し対象データについて前記所定のクローン用キャッシュ領域を検索し、
    前記所定のクローン用キャッシュ領域に前記読出し対象データが存在しないと判定した場合、前記記憶装置の記憶領域のうち前記読出し対象のクローンファイルに対応する所定の記憶領域を検索し、
    前記所定の記憶領域に前記読出し対象データが存在しないと判定した場合、前記共有キャッシュ領域を検索し、
    前記共有キャッシュ領域に前記読出し対象データが存在しないと判定した場合、前記記憶装置の記憶領域のうち前記共有ファイルに対応する共有記憶領域を検索する、
    請求項1に記載のストレージシステム。
  3. 前記コントローラは、前記所定の記憶領域から前記読出し対象データを読み出す場合、前記読出し対象データを前記所定のクローン用キャッシュ領域に記憶してから、前記読出し要求の発行元に返信する、
    請求項2に記載のストレージシステム。
  4. 前記コントローラは、前記共有記憶領域から前記読出し対象データを読み出す場合、前記読出し対象データを前記共有キャッシュ領域に記憶してから、前記読出し要求の発行元に返信する、
    請求項3に記載のストレージシステム。
  5. 前記コントローラは、前記各クローンファイルのうちいずれかのクローンファイルへの書込み要求を受領すると、
    書込み対象データのサイズと前記記憶装置のブロックサイズとを比較し、
    前記書込み対象データのサイズが前記ブロックサイズより小さいと判定した場合、前記共有キャッシュ領域、書込み対象のクローンファイルに対応する記憶領域、前記書込み対象のクローンファイルに対応するクローン用キャッシュ領域、前記共有記憶領域のうちいずれかから、前記書込み対象データで更新するための更新対象データを読出し、
    前記更新対象データに前記書込み対象データを上書きし、前記上書きしたデータを前記書込み対象のクローンファイルに対応する前記記憶領域に記憶する、
    請求項〜4のいずれかに記載のストレージシステム。
  6. 前記コントローラは、前記共有キャッシュ領域の使用量が予め設定した所定値を越えたと判定した場合、前記共有キャッシュ領域に記憶した前記読出し対象データを、前記所定のクローン用キャッシュ領域にコピーする、
    請求項1〜4のいずれかに記載のストレージシステム。
  7. 前記コントローラは、前記各クローンファイルが前記共有キャッシュ領域を共有するか否かを設定することができ、
    前記共有キャッシュ領域を共有しないと設定した場合、前記共有キャッシュ領域に記憶した前記読出し対象データを、前記所定のクローン用キャッシュ領域にコピーする、
    請求項1〜4のいずれかに記載のストレージシステム。
  8. 前記コントローラは、前記複数のクローンファイルを少なくとも一つ以上の仮想計算機に提供する仮想化管理コントローラと、前記クローンファイルへの読み出し要求および書込み要求を処理するファイル管理コントローラとを含んでおり、
    前記ファイル管理コントローラは、
    前記各クローンファイルへのデータ書込みにより生じる前記共有ファイルとの差分データを、前記記憶装置の記憶領域のうち当該クローンファイルに対応する記憶領域に記憶するようになっており、
    前記各クローンファイルに対応付けられる複数のクローン用キャッシュ領域と、前記共有ファイルに対応付けられる共有キャッシュ領域とを備えており、
    前記各クローンファイルのいずれかのクローンファイルへの読出し要求を受領した場合、読出し対象データについて、前記複数のクローン用キャッシュ領域のうち前記読出し対象のクローンファイルに対応する所定のクローン用キャッシュ領域を検索し、
    前記読出し対象データが前記所定のクローン用キャッシュ領域に存在しないと判定した場合は、前記読出し対象データについて前記共有キャッシュ領域を検索する、
    請求項1〜4のいずれかに記載のストレージシステム。
  9. 共有ファイルを参照する複数のクローンファイルを管理するストレージシステムを制御するための方法であって、
    前記ストレージシステムは、前記各クローンファイルに対応付けられる複数のクローン用キャッシュ領域と、前記共有ファイルに対応付けられる共有キャッシュ領域とを備えており、
    前記各クローンファイルのいずれかのクローンファイルへの読出し要求を受領した場合、読出し対象データについて、前記複数のクローン用キャッシュ領域のうち前記読出し対象のクローンファイルに対応する所定のクローン用キャッシュ領域を検索し、
    前記読出し対象データが前記所定のクローン用キャッシュ領域に存在しないと判定した場合は、前記読出し対象データについて前記共有キャッシュ領域を検索する、
    ストレージシステムの制御方法。
  10. 前記ストレージシステムは、前記読出し対象のクローンファイルについての読出し要求を受領した場合、
    前記読出し対象データについて前記所定のクローン用キャッシュ領域を検索し、
    前記所定のクローン用キャッシュ領域に前記読出し対象データが存在しないと判定した場合、記憶装置の記憶領域のうち前記読出し対象のクローンファイルに対応する所定の記憶領域を検索し、
    前記所定の記憶領域に前記読出し対象データが存在しないと判定した場合、前記共有キャッシュ領域を検索し、
    前記共有キャッシュ領域に前記読出し対象データが存在しないと判定した場合、前記記憶装置の記憶領域のうち前記共有ファイルに対応する共有記憶領域を検索する、
    請求項9に記載のストレージシステムの制御方法。
JP2015517962A 2013-05-21 2013-05-21 ストレージシステムおよびストレージシステムの制御方法 Expired - Fee Related JP6033420B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/064097 WO2014188515A1 (ja) 2013-05-21 2013-05-21 ストレージシステムおよびストレージシステムの制御方法

Publications (2)

Publication Number Publication Date
JP6033420B2 true JP6033420B2 (ja) 2016-11-30
JPWO2014188515A1 JPWO2014188515A1 (ja) 2017-02-23

Family

ID=51933105

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015517962A Expired - Fee Related JP6033420B2 (ja) 2013-05-21 2013-05-21 ストレージシステムおよびストレージシステムの制御方法

Country Status (3)

Country Link
US (1) US20150356108A1 (ja)
JP (1) JP6033420B2 (ja)
WO (1) WO2014188515A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956195B2 (en) * 2017-04-26 2021-03-23 Vmware, Inc. Virtual machine migrations across clouds assisted with content based read caching
US11188422B2 (en) 2017-06-02 2021-11-30 Apple Inc. Techniques for preserving clone relationships between files
JP2019028954A (ja) * 2017-08-04 2019-02-21 富士通株式会社 ストレージ制御装置、プログラム、及び重複排除方法
CN111866419B (zh) * 2019-04-24 2022-05-31 杭州海康微影传感科技有限公司 热成像图像显示方法、装置及热成像设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100057750A1 (en) * 2008-09-04 2010-03-04 Vmware, Inc. File Transfer Using Standard Blocks and Standard-Block Identifiers
US7809888B1 (en) * 2004-09-29 2010-10-05 Emc Corporation Content-aware caching techniques
US20100332401A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites
US20120324446A1 (en) * 2011-06-17 2012-12-20 Microsoft Corporation Virtual machine image composition and signing

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7934251B2 (en) * 1999-12-02 2011-04-26 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7809888B1 (en) * 2004-09-29 2010-10-05 Emc Corporation Content-aware caching techniques
US20100057750A1 (en) * 2008-09-04 2010-03-04 Vmware, Inc. File Transfer Using Standard Blocks and Standard-Block Identifiers
US20100332401A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites
US20120324446A1 (en) * 2011-06-17 2012-12-20 Microsoft Corporation Virtual machine image composition and signing

Also Published As

Publication number Publication date
US20150356108A1 (en) 2015-12-10
WO2014188515A1 (ja) 2014-11-27
JPWO2014188515A1 (ja) 2017-02-23

Similar Documents

Publication Publication Date Title
US10977124B2 (en) Distributed storage system, data storage method, and software program
US10838829B2 (en) Method and apparatus for loading data from a mirror server and a non-transitory computer readable storage medium
CN105027069A (zh) 卷区域的重复数据删除
WO2011027775A1 (ja) 分散ストレージシステム、分散ストレージ方法および分散ストレージ用プログラムとストレージノード
WO2014109007A1 (ja) ストレージ階層管理システム
US10891074B2 (en) Key-value storage device supporting snapshot function and operating method thereof
JP2016517122A (ja) システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持
US9378218B2 (en) Apparatus and method for enabling clients to participate in data storage in distributed file system
US11360856B2 (en) Manifest index for block-level snapshots
US11029851B2 (en) Sub-block modifications for block-level snapshots
US11016671B2 (en) Snapshot block storage path structure wherein identification of blocks that are identical between two snapshots are determined without performing block by block comparison between the two snapshots
US8195877B2 (en) Changing the redundancy protection for data associated with a file
EP4035012A1 (en) Network-accessible block-level snapshots
JP6033420B2 (ja) ストレージシステムおよびストレージシステムの制御方法
JP5556025B2 (ja) ストレージシステム
US11403185B2 (en) Network-accessible block-level snapshots
US11977559B2 (en) Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs
US11132401B1 (en) Distributed hash table based logging service
JPWO2015141219A1 (ja) ストレージシステム、制御装置、データアクセス方法およびプログラム
TWI769796B (zh) 利用索引物件來進行簡易儲存服務無縫遷移的方法、主裝置以及儲存伺服器
JP2013109404A (ja) 情報処理装置
US11762807B2 (en) Method and apparatus for deterministically identifying sets of snapshots on a storage system
US11567898B2 (en) Dynamic storage group resizing during cloud snapshot shipping
KR20210043001A (ko) 하이브리드 메모리 시스템 인터페이스
JP2011018206A (ja) ファイル管理方法、計算機、及びファイル管理プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160906

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161025

R150 Certificate of patent or registration of utility model

Ref document number: 6033420

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees