JP4884041B2 - 自動拡張可能なボリュームに対して最適なi/oコマンドを発行するストレージシステム及びその制御方法 - Google Patents

自動拡張可能なボリュームに対して最適なi/oコマンドを発行するストレージシステム及びその制御方法 Download PDF

Info

Publication number
JP4884041B2
JP4884041B2 JP2006071713A JP2006071713A JP4884041B2 JP 4884041 B2 JP4884041 B2 JP 4884041B2 JP 2006071713 A JP2006071713 A JP 2006071713A JP 2006071713 A JP2006071713 A JP 2006071713A JP 4884041 B2 JP4884041 B2 JP 4884041B2
Authority
JP
Japan
Prior art keywords
block
storage area
allocated
data
real storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006071713A
Other languages
English (en)
Other versions
JP2007249573A (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 JP2006071713A priority Critical patent/JP4884041B2/ja
Priority to US11/434,319 priority patent/US7631156B2/en
Priority to EP07250971A priority patent/EP1835392A3/en
Publication of JP2007249573A publication Critical patent/JP2007249573A/ja
Application granted granted Critical
Publication of JP4884041B2 publication Critical patent/JP4884041B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0631Configuration or reconfiguration of storage systems by allocating resources to 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/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99955Archiving or backup

Description

本願明細書で開示される技術は、ストレージシステムにおけるデータの処理技術に関し、特に、自動拡張可能なボリューム上でスナップショット処理又はコピー処理が実行される場合に、I/Oコマンドの発行を最適化する技術に関する。
ストレージの基本機能の一つとして、ボリュームの自動拡張技術が開示されている(例えば、特許文献1参照)。特許文献1によれば、複数の仮想ボリュームを含むボリュームプールにおいて、仮想ボリューム作成時には、仮想ボリュームを構成するブロックに物理ブロックが割り当てられず、実際の使用要求(書き込みI/O要求等)が発行された時に、その要求の対象のブロックに対して、ボリュームプールから物理ブロックが割り当てられる。ボリュームの自動拡張技術を用いて、仮想ボリュームのサイズを十分に大きく確保し、ボリュームプールのサイズを適度な大きさとすることによって、管理者は基本的にボリュームプールの空き状況の監視のみを行っていればよく、仮想ボリュームの容量拡張作業から解放される。
ただし、仮想ボリュームサイズをあまりに大きくしすぎると、その分ボリューム自身を管理する資源のサイズ(例えば、ファイルシステムメタデータ及びスナップショット管理テーブル)も大きくなってしまう。その結果、管理データをメモリ上に保持しておくことによる使用可能メモリ圧迫による性能低下、及び、管理データ格納のためのディスク容量使用によるユーザ使用可能容量圧迫などの弊害がある。
また、ストレージの別の基本機能としてスナップショット機能が開示されている。スナップショット機能を実現する方式には、ボリューム全体を複製する全体スナップショット方式と、ボリュームの差分情報のみを別途保存しておき、差分データと運用ボリュームのデータからスナップショットイメージを作成する差分スナップショット方式(例えば、特許文献2参照)の二つがある。差分スナップショット方式は、さらに二つに分類することができる。すなわち、運用ボリュームへの書き込みデータを未割当領域へ書き込み、運用ボリュームのマッピングテーブルを書き換えるAllocation on Write方式と、運用ボリュームへの書き込み発生時に、書き込み要求ブロックに元々あったデータを別領域へコピー(退避)し、その後、要求された書き込み処理を実行するCopy on Write(以下、COWと記載する)方式がある。特許文献2では、COW方式が開始されている。COW方式の差分スナップショットが実行されているボリュームに対する読み込み性能は、スナップショットなしのボリュームと比較して同等だが、前者のボリュームに対する書き込み性能は、COWのためのコピー処理が発生するため、後者のボリュームに対する書き込み性能より低下してしまう。この性能低下を緩和する従来技術として、例えば、特許文献3が開示されている。
特許文献3によれば、運用ボリュームと過去のスナップショットにおけるファイルシステムの未使用領域がそれぞれ抽出され、その重ね合わせ(AND)の未使用領域に対するCOWが発生した場合、COWが無効化される。
特開2003−15915号公報 特開2004−342050号公報 米国特許第6792518号明細書
特許文献1の自動拡張技術が適用されたボリュームに対して、特許文献2のCOW方式の差分スナップショットを適用すると、まだ物理ブロックが割り当てられていないブロック(すなわち、データが格納されていないブロック)に対する書き込み要求が発生する場合がある。しかし、特許文献2の技術をそのまま適用すると、物理ブロックが割り当てられていないブロックに対してもデータの退避が実行されるため、書き込み性能が低下する。
特許文献3によれば、各世代の未使用領域の抽出が必要となるため、管理のためのリソースが大きくなってしまうという問題があった。また、特許文献3の方法は、上位のアプリケーション(ファイルシステム等)が未使用領域を管理する必要があった。このため、各アプリケーションごとに実行される必要があった。
本発明は、スナップショット処理及びコピー処理の高速化のために上記の課題を解決することを目的とする。
本願で開示する代表的な発明は、ネットワークに接続されるストレージシステムにおいて、前記ストレージシステムは、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続される第1メモリと、データを格納する実記憶領域を含むディスクドライブと、一つ以上のボリュームと、を備え、前記一つ以上のボリュームは、前記実記憶領域が割り当てられる複数のブロックを含み、前記複数のブロックは、第1ブロック及び第2ブロックを含み、前記インターフェースが、前記第1ブロックを対象としたデータの書き込み要求を、前記ネットワークを介して受信したとき、前記プロセッサは、前記第1ブロックに前記実記憶領域が割り当てられているか否かを判定し、前記第1ブロックに前記実記憶領域が割り当てられていると判定された場合、前記第1ブロックに格納されているデータの複製を前記第2ブロックに書き込んだ後、前記第1ブロックに前記書き込み要求の対象のデータを書き込み、前記第1ブロックと前記第2ブロックとの対応関係を管理し、前記第2ブロックに前記実記憶領域が割り当てられていない場合、前記第2ブロックに前記実記憶領域を割り当て、前記第1ブロックに格納されているデータの複製を書き込み、前記第1ブロックに前記実記憶領域が割り当てられていないと判定された場合、前記第1ブロックに前記実記憶領域を割り当て、前記書き込み要求の対象のデータを書き込み、前記第1ブロックとダミーデータブロックとの対応関係を管理することを特徴とする。
本発明の一実施形態によれば、大量のリソースを消費することなく、差分スナップショット処理又はブロックデバイスレベルのコピー処理を高速化することができる。また、差分ボリューム及びコピー先ボリュームの容量を削減することができる。
以下、本発明の実施の形態を、図面を参照しながら説明する。第1の実施の形態及び第2の実施の形態は、スナップショット機能がストレージ制御部(すなわち、ストレージ装置のマイクロプログラム)外にある場合、例えば、外付けNAS又は内蔵型NAS等に本発明を適用する例である。第3の実施の形態は、第1及び第2の実施の形態の構成におけるアプリケーションの新規領域割り当てに関するものである。第4の実施の形態は、スナップショット機能がストレージ制御部内にある形態である。第5の実施の形態は、I/Oコマンドを処理するマイクロプログラムが改善された形態である。
最初に、従来のストレージシステムの構成について説明する。
図5は、自動拡張可能仮想ボリュームを用いてスナップショット機能を提供するネットワーク接続ストレージ(NAS)システムの従来の構成を説明する機能ブロック図である。
ネットワークに接続された計算機であるNASクライアント(図示省略)から、あるファイルを対象としてファイルアクセス要求が発行されると、NAS101aのクライアント要求受付部102がクライアントからのファイルアクセス要求を受け付ける。クライアント要求受付部102は、ファイルシステム制御部103aに対してローカルファイルアクセス要求を発行する。ファイルシステム制御部103aは、対象のファイルのデータ又はメタデータが格納されているブロックに対するI/O要求を発行する。このとき、ブロックI/O要求は、ファイルシステムがスナップショット運用されている場合はスナップショット制御部104aへ、スナップショット運用されていない場合はI/Oコマンド発行部105aへ発行される。
このブロックI/O要求は、ストレージ装置110a内のマイクロプログラム111aのI/Oコマンド制御部112aによって処理される。I/Oコマンド制御部112aは、受信したブロックI/O要求が自動拡張不可仮想ボリュームに対する要求であった場合、自動拡張不可仮想ボリューム管理制御部113に処理を移す。ここで、自動拡張不可仮想ボリュームとは、ボリューム内のすべての領域に物理ブロック(すなわち、物理的な記憶領域)が初めから用意されているボリュームである。
自動拡張不可仮想ボリューム管理制御部113は、ボリューム群120のいずれかのボリューム300を対象としてブロックI/Oを実行する。
また、I/Oコマンド制御部112aが受信したブロックI/O要求が、自動拡張可能仮想ボリュームに対する要求であった場合、自動拡張可能仮想ボリューム管理制御部114aへ処理が移る。ここで、自動拡張可能仮想ボリュームとは、ボリューム内の使用されている領域のみに物理ブロックが割り当てられているボリュームである。
自動拡張可能仮想ボリューム管理制御部114aは、自動拡張可能仮想ボリューム割り当てテーブル115を参照して、受け付けた要求が、物理ブロックが割り当てられている領域に対するブロックI/O要求であるか否かを判定する。
自動拡張可能仮想ボリューム割り当てテーブル115は、自動拡張可能仮想ボリュームに含まれる各領域(ブロック)と物理ブロックとの対応関係を示す情報を含む。具体的には、自動拡張可能仮想ボリューム割り当てテーブル115は、少なくとも、自動拡張可能仮想ボリュームに含まれる各領域(ブロック)に割り当てられている物理ブロックを識別する情報を含む。物理ブロックを識別する情報とは、例えば、ブロックアドレスである。自動拡張可能仮想ボリューム割り当てテーブル115を参照することによって、自動拡張可能仮想ボリュームの各領域に物理ブロックが割り当てられているか否か、さらに、割り当てられている場合には、どの物理ブロックが割り当てられているかを知ることができる。
受け付けた要求が、物理ブロックが割り当てられている領域に対するブロックI/O要求である場合、自動拡張可能仮想ボリューム管理制御部114aは、自動拡張可能仮想ボリューム割り当てテーブル115によって示されるボリュームプール121内のボリューム300の物理ブロックに対してブロックI/Oを実行する。
一方、受け付けた要求が、物理ブロックが割り当てられていない領域に対するブロックI/O要求である場合、自動拡張可能仮想ボリューム管理制御部114aは、ボリュームプール121のボリューム300内の未使用物理ブロックをI/O要求の対象の領域に割り当てる。そして、自動拡張可能仮想ボリューム管理制御部114aは、自動拡張可能仮想ボリューム割り当てテーブル115を更新し、割り当てられた物理ブロックに対してブロックI/Oを実行する。
次に、本発明の実施の形態について説明する。
図1は、本発明の第1の実施の形態のストレージシステムのハードウェア構成を示すブロック図である。
図1に示すストレージシステムは、相互に接続されたネットワーク接続ストレージ(NAS)101及びストレージ装置110を備える。
NAS101は、外部ネットワーク160に接続され、外部ネットワーク160に接続されたクライアント計算機(すなわち、NASクライアント)にストレージデータを提供する計算機である。NAS101は、相互に接続されたCPU151、メモリコントローラ152、NAS主記憶153、I/Oコントローラ154、ネットワークコントローラ155及びストレージコントローラ156を備える。NAS101は、NASヘッド又はNASノードとも呼ばれる。後で説明するように、NAS101は、制御装置の一部としてストレージ装置110に内蔵されてもよい(図11参照)。
メモリコントローラ152は、CPU151、NAS主記憶153及びI/Oコントローラ154と接続される。
CPU151は、NAS主記憶153に格納されたプログラムを実行するプロセッサである。
NAS主記憶153は、例えば、半導体記憶装置であり、CPU151によって実行されるプログラム及びその実行の際に参照される情報を格納する。
I/Oコントローラ154は、ネットワークコントローラ155及びストレージコントローラ156と接続される。
ネットワークコントローラ155は、外部ネットワーク160に接続され、クライアント計算機と通信するインターフェースである。外部ネットワーク160は、例えば、ローカルエリアネットワーク(LAN)であるが、他の種類のネットワークであってもよい。
ストレージコントローラ156は、ストレージ装置110内のディスクコントローラ157とファイバーチャネル等を介して接続され、ディスクコントローラと通信するインターフェースである。
ストレージ装置110は、ディスクコントローラ157、ストレージ装置主記憶158及び一つ以上のディスクドライブ159を備える。
ディスクコントローラ157は、ストレージ装置主記憶158と一つ以上のディスクドライブ159とを接続する。ディスクコントローラ157は、ストレージ装置主記憶158に格納されたプログラムを実行することによって、ディスクドライブ159に対するデータのI/Oコマンド(すなわち、書き込みコマンド及び読み込みコマンド)を処理するプロセッサである。ディスクコントローラ157は、ストレージコントローラ156と通信するインターフェースを含んでもよい。
ストレージ装置主記憶158は、例えば、半導体メモリであり、ディスクコントローラ157によって実行されるプログラム及びその実行の際に参照される情報を格納する。
図2は、本発明の第1の実施の形態のストレージシステムの機能ブロック図である。
本実施の形態のNAS101は、クライアント要求受付部102、ファイルシステム制御部103、スナップショット制御部104及びI/Oコマンド発行部105を保持する。これらは、CPU151によって実行されるプログラムであり、NAS主記憶153に格納されている。さらに、自動拡張可能仮想ボリューム割り当てビットマップ106が、NAS101上のデータとして、NAS主記憶153に格納されている。
一方、マイクロプログラム111は、ディスクコントローラ157によって実行されるプログラムであり、ストレージ装置主記憶158に格納されている。
図2に示す構成のうち、ファイルシステム制御部103、スナップショット制御部104、I/Oコマンド発行部105、自動拡張可能仮想ボリューム割り当てビットマップ部106、I/Oコマンド制御部112及び自動拡張可能仮想ボリューム管理制御部114が、図5に示す従来の機能構成と異なっている。図2に示す構成のうち、図5において既に説明されている部分については、説明を省略する。
図2に示すマイクロプログラム111は、I/Oコマンド制御部112、自動拡張不可仮想ボリューム管理制御部113及び自動拡張可能仮想ボリューム管理制御部114を含む。これらは、マイクロプログラム111のサブプログラムである。マイクロプログラム111は、さらに、自動拡張可能仮想ボリューム割り当てテーブル115を含む。
図2のストレージ装置110は、さらに、ボリューム群120及びボリュームプール121を含む。ボリューム群120及びボリュームプール121には、それぞれ、一つ以上のボリューム300が設定される。各ボリューム300は、NAS101によって一つの記憶装置と認識される仮想的な記憶領域である。
各ボリューム300は、一つ以上のブロック(図示省略)によって構成される。ブロックは、所定の量のデータを格納する記憶領域である。ボリューム群120内のボリュームを構成する全てのブロックには、それぞれ、実記憶領域が割り当てられる。実記憶領域とは、ディスクドライブ159の物理的な記憶領域(すなわち、物理ブロック)である。各ブロックに格納されるデータは、実際には、そのブロックに割り当てられた物理ブロックに格納される。
図3は、本発明の第1の実施の形態のボリュームプール121の構成の説明図である。
ボリュームプール121内のボリューム300のうち少なくとも一つは、運用ボリューム301であり、別の少なくとも一つは、差分ボリューム302である。図3には、例として、一つの運用ボリューム301及び一つの差分ボリューム302を示すが、本実施の形態のボリュームプール121は、複数の運用ボリューム301及び複数の差分ボリューム302を含んでもよい。
運用ボリューム301を構成するブロックには、外部ネットワーク160を経由してNASクライアントから発行された書き込み要求の対象のデータが格納される。
差分ボリューム302は、差分データ格納領域303、スナップショット管理テーブル304及びダミーデータブロック305を含む。差分データ格納領域303には、過去に運用ボリューム301に格納されていたデータが格納される。具体的には、運用ボリューム301内の既にデータが格納されているブロックのデータが更新されるとき、更新の前にそのブロックに格納されていたデータが差分データ格納領域303内のブロックに格納される。その結果、運用ボリューム301には最新のデータが格納され、差分ボリューム302には過去に運用ボリューム301に格納されていたデータが格納される。
スナップショット管理テーブル304は、運用ボリュームのブロックと、差分データ格納領域303のブロックとの対応関係を管理するテーブルである。具体的には、スナップショット管理テーブル304には、運用ボリュームのブロックに過去に格納されていたデータが、現在、差分データ格納領域303のどのブロックに格納されているかを示す情報が、スナップショットの世代ごと、又は、スナップショットが作成された時刻ごとに登録される。
運用ボリューム301を構成するブロックに格納されるデータは、実際には、そのブロックに割り当てられた物理ブロックに格納される。しかし、運用ボリューム301は、物理ブロックが割り当てられていないブロックを含む場合がある。物理ブロックが割り当てられていないブロックを対象としたデータ書き込み要求が発行された場合、対象のブロックに空き物理ブロックが新たに割り当てられ、その物理ブロックにデータが格納される。ここで、空き物理ブロックとは、まだどのブロックにも割り当てられていない物理ブロックである。
このように、物理ブロックが割り当てられていないブロックを含む場合があり、それらのブロックに必要に応じて物理ブロックを割り当てることができるボリュームは、自動拡張可能仮想ボリュームとも記載される。一方、全てのブロックに物理ブロックが割り当てられ、必要に応じて物理ブロックを割り当てることができないボリュームは、自動拡張不可仮想ボリュームとも記載される。本実施の形態において、ボリューム群120内のボリューム300は、自動拡張不可仮想ボリュームである。一方、ボリュームプール121内の運用ボリューム301及び差分ボリューム302は、自動拡張可能仮想ボリュームである。
ダミーデータブロック305は、例えば「0」等のデータで初期化されたブロックである。ダミーデータブロック305は、後述するように、コピー処理が無効化された場合にダミーのコピー先として利用される。なお、ダミーデータブロック305は本発明において追加されたものであり、従来の差分ボリューム302はダミーデータブロック305を含まない。
次に、本実施の形態の概要を説明する。
図4は、本発明の第1の実施の形態において実行される処理の概要の説明図である。
図4の例において、運用ボリューム301は、四つのブロック401a〜401dを含む。黒塗りの四角形で示すブロック401b及び401cには、物理ブロックが割り当てられていない。一方、白塗りの四角形で示すブロック401a及び401dには、物理ブロックが割り当てられている。自動拡張可能仮想ボリューム割り当てテーブル115には、ブロック401a及び401dに割り当てられている物理ブロックを識別する情報が登録されている。
NAS101は、最初に、自動拡張可能仮想ボリューム割り当てテーブル115を読み込み、各ブロックに物理ブロックが割り当てられているか否かを示す情報を抽出して、自動拡張可能仮想ボリューム割り当てビットマップ106を作成する(ステップ(0))。
その後、NAS101は、ネットワーク160を経由して、NASクライアントからデータの書き込み要求を受信する(ステップ(1))。本実施の形態では、ステップ(1)で受信する要求は、ファイルアクセス要求である。
次に、NAS101は、自動拡張可能仮想ボリューム割り当てビットマップ106を参照して、要求の対象のファイルのデータが書き込まれる運用ボリューム301内のブロックに物理ブロックが割り当てられているか否かを判定する(ステップ(2))。以下、図4の説明において、これから運用ボリューム301に書き込まれるデータを新データ、新データによって上書きされるデータ(すなわち、新データが書き込まれるブロックに書き込まれていたデータ)を旧データと記載する。
例えば、新データの書き込み対象のブロックがブロック401aである場合、物理ブロックが割り当てられている。この場合、ブロック401aに書き込まれていた旧データが、差分ボリューム302の差分データ格納領域303にコピーされる。具体的には、NAS101がブロック401aに書き込まれていた旧データを読み込み(ステップ(3A))、その旧データを差分データ格納領域303のいずれかのブロックに書き込む(ステップ(3B))。その結果、この時点で、ブロック401aに書き込まれていた旧データの複製が差分データ格納領域303に格納される。さらにNAS101は、書き込み先のブロックを識別する情報を、スナップショット管理テーブル304に書き込む(ステップ(4))。ブロックを識別する情報とは、例えば、論理ブロックアドレス(LBA)である。以下の説明において、ブロックを識別する情報を「ブロックアドレス」と記載する。
一方、例えば、新データの書き込み対象のブロックがブロック401cである場合、物理ブロックが割り当てられていない。この場合、ブロック401cには旧データが格納されていないため、ブロック401cから差分データ格納領域303への旧データのコピーを実行する必要がない。このため、NAS101は、コピーを無効化する(すなわち、コピーを実行しない)(ステップ(3))。
コピーが無効化された場合、差分データ格納領域303に旧データが書き込まれないため、ステップ(4)において、書き込み先のブロックを識別する情報をスナップショット管理テーブル304に書き込むことができない。この場合、本実施の形態のNAS101は、ダミーデータブロック305を識別する情報をスナップショット管理テーブル304に書き込む。ダミーデータブロック305を識別する情報とは、例えば、差分ボリューム302内のダミーデータブロック305の位置を示すブロックアドレスである。
ステップ(4)が終了した後、NAS101は、新データを、運用ボリューム301内の書き込み対象のブロック(例えば、ブロック401a又は401c)に書き込む(ステップ(5))。
なお、上記のように、運用ボリュームへの書き込み発生時に、書き込み要求の対象のブロックに格納されていたデータを差分ボリューム302へコピーし、その後、要求された書き込みを実行する処理は、Copy on Write(COW)と呼ばれる。
従来、新データの書き込み対象のブロックに物理ブロックが割り当てられていない場合にも、運用ボリューム301から差分ボリューム302へのデータのコピーが実行されていた。一方、本発明の実施の形態によれば、新データの書き込み対象のブロックに物理ブロックが割り当てられていない場合、コピー処理が無効化される。その結果、不要なコピー処理が省略され、処理を高速にすることができる。
図4は、運用ボリューム301と差分ボリューム302が独立している例を示す。しかし、運用ボリューム301と差分ボリューム302が同一のボリュームであってもよい。具体的には、例えば、運用ボリューム301が差分データ格納領域303及びスナップショット管理テーブル304を備えてもよい。この場合、COW処理は、運用ボリューム301の内部で実行される。
図4には、COW処理において、運用ボリューム301から差分ボリューム302へのコピーを無効化する手順を示した。しかし、本実施の形態は、ボリューム300の種類に関らず、ボリューム300間で発生するコピー処理を省略するために幅広く適用することができる。
例えば、図4においてCOW処理が運用されておらず、運用ボリューム301及び差分ボリューム302がいずれも通常のボリュームである場合について説明する。
NAS101は、コピー元ボリューム301のブロック401aに書き込まれていたデータをコピー先ボリューム302にコピーするためのコピー要求を受信した場合、ブロック401aに物理ブロックが割り当てられているか否かを判定する(ステップ(2))。
ブロック401aには物理ブロックが割り当てられているため、NAS101は、ブロック401aに書き込まれているデータをコピー先ボリューム302にコピーする(ステップ(3A)及び(3B))。
一方、受信したコピー要求が、ブロック401cに書き込まれていたデータをコピー先ボリューム302にコピーすることを要求している場合、NAS101は、ブロック401cに物理ブロックが割り当てられているか否かを判定する(ステップ(2))。
ブロック401cには物理ブロックが割り当てられていないため、NAS101は、ブロック401cに書き込まれているデータをコピー先ボリューム302にコピーせず(ステップ(3))、コピーを実行しなかったことを要求元に応答する。
さらに、上記のステップ(1)から(5)の処理は、コピー元ボリューム301とコピー先ボリューム302が同一のボリュームである場合(言い換えると、同一のボリューム300内の二つのブロック間でデータがコピーされる場合)にも実行することができる。
図6は、本発明の第1の実施の形態の自動拡張可能仮想ボリューム割り当てビットマップ106の説明図である。
自動拡張可能仮想ボリューム割り当てビットマップ106は、ブロックアドレス毎に、「0」又は「1」のいずれかの値のビットを格納する領域を含む。図6には、例として、ブロックアドレス「0x0000」から「0x004f」までのブロックに対応する領域を示すが、実際の自動拡張可能仮想ボリューム割り当てビットマップ106は、ボリュームの最後のブロックまでの全ブロックに対応するビットを含む。自動拡張可能仮想ボリューム割り当てビットマップ106は、ボリュームごとに作成され、NAS主記憶153に保持される。
図6の1行目はブロックアドレス「0x0000」から「0x000f」までのブロックに対応し、2行目はブロックアドレス「0x0010」から「0x001f」までのブロックに対応する。3行目以降の各領域も、同様の規則に従って各ブロックに対応する。格納されている値が「0」である場合、その領域に対応するブロックに物理ブロックが割り当てられていないことを示す。一方、格納されている値が「1」である場合、その領域に対応するブロックに物理ブロックが割り当てられていることを示す。図6の例では、ブロックアドレス「0x0000」に対応する領域601に「0」が格納され、ブロックアドレス「0x0049」に対応する領域602に「1」が格納されている。これは、ブロックアドレスが「0x0000」であるブロックに物理ブロックが割り当てられておらず、ブロックアドレスが「0x0049」であるブロックに物理ブロックが割り当てられていることを意味する。
次に、本実施の形態の各プログラムが実行する処理について説明する。
図7は、本発明の第1の実施の形態のI/Oコマンド発行部105が起動時に実行する処理を示すフローチャートである。
なお、本実施例の形態ではI/Oコマンド発行部105がこの処理を実行するが、同様の処理をスナップショット制御部106又はファイルシステム制御部103が実行してもよい。
図2において説明したように、I/Oコマンド発行部105は、NAS主記憶153に格納され、CPU151によって実行されるプログラムである。したがって、以下の説明においてI/Oコマンド発行部105が実行する処理は、実際にはCPU151によって実行される。NAS主記憶153に格納される他のプログラムが実行する処理も、同様に、実際にはCPU151によって実行される。
まず、I/Oコマンド発行部105は、接続されているボリュームを認識する(ステップ701)。例えば、NAS101とストレージ装置110とがSCSIによって接続されている場合、各SCSI_IDに対応するボリュームが認識される。
次に、I/Oコマンド発行部105は、認識したボリュームの初期化処理を実行する(ステップ702)。これは従来のSCSIドライバの初期化処理等と同等のものである。本実施の形態では、さらに、ボリュームの初期化処理として、ステップ702に加えてステップ703から706に示す処理が実行される。
次に、I/Oコマンド発行部105は、認識したボリュームの種別を判定する(ステップ703)。具体的には、I/Oコマンド発行部105は、認識したボリュームが自動拡張可能仮想ボリュームであるか、あるいは、自動拡張不可仮想ボリュームであるかを判定する。
ステップ703において自動拡張不可仮想ボリュームであると判定された場合、ステップ707に処理を移す。一方、ステップ703において自動拡張可能仮想ボリュームであると判定された場合、I/Oコマンド発行部105は、認識したボリュームを対象とする割り当てビットマップ取得コマンドを発行する(ステップ704)。このコマンドは、例えば、SCSIコマンドを拡張することによって実現されてもよい。
その後、ストレージ装置110のマイクロプログラム111のI/Oコマンド制御部112が実行される。割り当てビットマップ取得コマンドを受信したI/Oコマンド制御部112は、割り当てビットマップ取得コマンド処理を開始し(図8のステップ801)、対象のボリュームの割り当てビットマップを応答する。この処理の詳細については図8で後述する。
割り当てビットマップ取得コマンド処理が終了すると(図8のステップ810)、I/Oコマンド発行部105は、I/Oコマンド制御部112から割り当てビットマップを取得する(ステップ705)。
次に、I/Oコマンド発行部105は、取得した割り当てビットマップを、自動拡張可能仮想ボリューム割り当てビットマップ106へ登録する(ステップ706)。以上で現在認識しているボリュームに関する初期化処理を終了する。
次に、I/Oコマンド発行部105は、他に認識可能なボリュームがあるか否かをチェックする(ステップ707)。認識可能なボリュームがある場合、まだ初期化されていないボリュームが存在する。この場合、処理はステップ701に戻り、ステップ701から706までの処理を繰り返す。他に認識可能なボリュームがない場合、全ての認識可能なボリュームの初期化処理が終了したため、I/Oコマンド発行部105は起動処理を終了する。
図8は、本発明の第1の実施の形態のI/Oコマンド制御部112が割り当てビットマップ取得コマンドを受信した際に実行する割り当てビットマップ取得コマンド処理を示すフローチャートである。
図2において説明したように、I/Oコマンド制御部112は、ストレージ装置主記憶158に格納され、ディスクコントローラ157によって実行されるマイクロプログラム111のサブプログラムである。したがって、以下の説明においてI/Oコマンド制御部112が実行する処理は、実際にはディスクコントローラ157によって実行される。マイクロプログラム111に含まれる他のサブプログラムが実行する処理も、同様に、実際にはディスクコントローラ157によって実行される。
割り当てビットマップ取得コマンドを受信すると、I/Oコマンド制御部112は、割り当てビットマップ取得コマンド処理を開始する(ステップ801)。
最初に、I/Oコマンド制御部112は、受信したコマンドの対象のボリュームが自動拡張可能仮想ボリュームであるか否かを判定する(ステップ802)。
ステップ802において、対象のボリュームが自動拡張不可仮想ボリュームであると判定された場合、処理はエラー終了する。
一方、ステップ802において、対象のボリュームが自動拡張可能仮想ボリュームであると判定された場合、I/Oコマンド制御部112は、自動拡張可能仮想ボリューム管理制御部114に対象ボリュームの割り当てビットマップを要求する(ステップ803)。
自動拡張可能仮想ボリューム管理制御部114は、自動拡張可能仮想ボリューム割り当てテーブル115に基づいて、割り当てビットマップを作成する(ステップ804)。自動拡張可能仮想ボリューム割り当てテーブル115は、自動拡張可能仮想ボリュームの各ブロックとそれに割り当てられている物理ブロックとを対応付ける情報を含むマッピングテーブルである。自動拡張可能仮想ボリューム管理制御部114は、自動拡張可能仮想ボリューム割り当てテーブル115を参照して、各ブロックに物理ブロックが割り当てられているか否かを調査し、その結果に基づいて割り当てビットマップを作成する。割り当てビットマップがあらかじめ自動拡張可能仮想ボリューム割り当てテーブル115に格納されている場合、自動拡張可能仮想ボリューム管理制御部114はそれを読み取る。
次に、自動拡張可能仮想ボリューム管理制御部114は、作成された割り当てビットマップをI/Oコマンド制御部112に応答する(ステップ805)。
I/Oコマンド制御部112は、取得した割り当てビットマップをI/Oコマンド発行部105に応答する(ステップ806)。
以上で、割り当てビットマップ取得コマンド処理が終了する(ステップ810)。
以上で、本発明の第1の実施の形態の初期化処理についての説明を終了する。次に、スナップショット処理の手順を説明する。
図9は、従来のスナップショット処理を示すフローチャートである。
具体的には、図9は、スナップショット運用中の運用ボリューム301のあるブロックに書き込みがあった場合に実行される従来の処理のフローチャートである。この処理は、スナップショット制御部104aによって実行される。
スナップショット制御部104aは、スナップショット処理を開始すると(ステップ901)、書き込み要求の対象ブロックに格納されているデータが既に差分ボリューム302に退避済みか否かを判定する(ステップ902)。ここで、退避とは、運用ボリューム301のブロックに格納されているデータを差分ボリューム302の差分データ格納領域303にコピーする処理である。
ステップ902において、データが退避済みであると判定された場合、ステップ907に処理が移る。
一方、ステップ902において、データがまだ退避していないと判定された場合、スナップショット制御部104aは、差分データ格納領域303の空きブロックを確保する(ステップ903)。
次に、スナップショット制御部104aは、書き込み要求の対象ブロックに格納されているデータを読み込む(ステップ904)。
次に、スナップショット制御部104aは、読み込んだデータをステップ903において確保された差分データ格納領域のブロックに書き込む(ステップ905)。なお、ステップ904及び905の処理が、「退避」に相当する。
次に、スナップショット制御部104aは、スナップショット管理テーブル304に、対象ブロックのデータが退避したことを示す情報を書き込む(ステップ906)。具体的には、スナップショット制御部104aは、書き込み要求の対象ブロックを示す運用ボリューム301のブロックアドレスと、そのブロックのデータの退避先を示す差分ボリューム302のブロックアドレスと、世代番号との関係を示す情報を書き込む。
次に、スナップショット制御部104aは、書き込み要求の対象データを、運用ボリューム301内の、書き込み要求の対象ブロックに書き込む(ステップ907)。
以上で、スナップショット処理が終了する(ステップ910)。
図10は、本発明の第1の実施の形態のスナップショット制御部104が実行するスナップショット処理を示すフローチャートである。
スナップショット制御部104は、ファイルシステム制御部103から運用ボリューム301内のブロックを対象とするデータの書き込み要求を受信したときに、図10のスナップショット処理を実行する。
スナップショット制御部104は、スナップショット処理を開始すると(ステップ1001)、最初に、書き込み要求の対象ブロックに格納されているデータが既に差分ボリューム302に退避済みであるか否かを判定する(ステップ1002)。
ステップ1002において、データが退避済みであると判定された場合、ステップ1011に処理が移る。
一方、ステップ1002において、データがまだ退避されていないと判定された場合、スナップショット制御部104は、自動拡張可能仮想ボリューム割り当てビットマップ106を参照し、書き込み要求の対象ブロックに物理ブロックが割り当てられているか否かを判定する(ステップ1003)。
ステップ1003において、物理ブロックが割り当てられていると判定された場合、書き込み要求の対象ブロックにはデータが格納されている。この場合、データを退避する必要があるため、スナップショット制御部104は、ステップ1004から1007までを順次実行する。これらの四つのステップは、それぞれ、図9のステップ903から906までと同じであるため、説明を省略する。
一方、ステップ1003において、物理ブロックが割り当てられていないと判定された場合、書き込み要求の対象ブロックにはデータが格納されていない。この場合、データを退避する必要がない。この場合、スナップショット制御部104は、書き込み要求の対象ブロックに対する物理ブロック割り当て要求コマンドを発行する(ステップ1008)。ステップ1008の処理は性能を向上させるためだけの処理なので、省略しても問題ない。ステップ1008が省略された場合、後述するステップ1011において、マイクロプログラム111が自動的に割り当てを実行する。また、その場合、次のステップ1009は、ステップ1011の後で実行される。
次に、スナップショット制御部104は、自動拡張可能仮想ボリューム割り当てビットマップ106において、書き込み要求の対象ブロックに対応する領域の値を「1」(すなわち、割り当て済み)に更新する(ステップ1009)。
次に、スナップショット制御部104は、スナップショット管理テーブル304に、書き込み要求の対象ブロックに格納されているデータをダミーデータブロック305へ退避したことを示す情報を書き込む(ステップ1010)。本実施例ではダミーデータブロック305を物理的に確保しているが、物理的に確保せずとも、退避先のブロックアドレスのフィールドに「0」等のデータを格納することによって、ダミーデータであることを論理的に示してもよい。
次に、スナップショット制御部104は、書き込み要求の対象データを書き込み要求の対象ブロックへ書き込む(ステップ1011)。以上で、本実施の形態のスナップショット処理が終了する(ステップ1013)。
図1及び図2は、NAS101とストレージ装置110とが分離しており、これらをファイバーチャネル等によって結合することによって構成されるストレージシステムを示す。しかし、本実施の形態は、NAS101とストレージ装置110とが分離している形態に限定されず、ストレージ装置110がNAS101を内蔵する形態のストレージシステムにおいても実現することができる。
図11は、本発明の第1の実施の形態の変形例の機能ブロック図である。
図11に示すストレージシステムは、図1及び図2に示すストレージ装置110がNAS101を内蔵することによって構成される。NAS101及びマイクロプログラム111の構成は、図1及び図2に示すものと同じである。ただし、図11の構成において、NAS101とマイクロプログラム111との間は、専用バス等によって結合されてもよい。
図11に示すストレージシステムにおいて実行される処理は、上記第1の実施の形態において実行されるものと同じであるため、説明を省略する。
なお、以下に説明する本発明の第2、第3及び第5の実施の形態も、図11に示すストレージシステムにおいて実現することができる。
以上の本発明の第1の実施の形態によれば、初期化処理において、運用ボリューム301を構成する全ブロックに関する自動拡張可能仮想ボリューム割り当てビットマップ106が作成される(図7及び図8参照)。そして、作成された割り当てビットマップを参照することによって、必要のないコピー処理のためのI/Oコマンドの発行を省略することができる。このように、I/Oコマンドが最適化されるため、I/Oコマンドの処理を高速化することができる。
次に、本発明の第2の実施の形態について説明する。
本発明の第1の実施の形態のNAS101は、最初に、運用ボリューム301を構成する全ブロックに対応する割り当てビットマップを取得し、それを自動拡張可能仮想ボリューム割り当てビットマップ106に登録する。一方、本発明の第2の実施の形態のNAS101は、個々のI/Oコマンド発行時に、運用ボリュームの一部を構成するブロックに対応する割り当てビットマップを取得する。
図12は、本発明の第2の実施の形態のストレージシステムの機能ブロック図である。
図12に示す本実施の形態の構成が第1の実施の形態の構成(図2参照)と異なるのは、スナップショット制御部104b、I/Oコマンド発行部105b、自動拡張可能仮想ボリューム割り当て部分ビットマップ106b及びI/Oコマンド制御部112bである。これらは、第1の実施の形態同様、NAS主記憶153に格納される。その他の部分については第1の実施の形態と同様であるため、説明を省略する。
図13は、本発明の第2の実施の形態の自動拡張可能仮想ボリューム割り当て部分ビットマップ106bの説明図である。
自動拡張可能仮想ボリューム割り当て部分ビットマップ106bは、先頭ブロックアドレスフィールド1301とビットマップフィールド1302からなる。先頭ブロックアドレスフィールド1301には、保持しているビットマップの先頭ブロックアドレスが格納される。ビットマップフィールド1302には、それぞれの先頭ブロックアドレスフィールド1301に示す先頭ブロックアドレスから始まる所定の数のブロックの割り当て状況を示すビットマップが格納される。図13のビットマップフィールド1301の上に表示された「0」から「f」までの値は、ブロックアドレスの最下位バイトの値である。
図13の例では、各先頭ブロックアドレスに対して、16ブロックの割り当て状況を示すビットマップが格納される。例えば、先頭ブロックアドレスフィールド1301に先頭ブロックアドレス「0x0fa0」が格納され(エントリ1311)、このブロックアドレスに対応するビットマップフィールド1302には、ブロックアドレスが「0x0fa0」から「0x0faf」までのブロックの割り当て状況を示すビットマップが格納される(エントリ1312)。
ビットマップフィールド1302に格納される値の意味は、自動拡張可能仮想ボリューム割り当てビットマップ106と同様である。すなわち、値が「0」である場合、そのビットに対応するブロックに物理ブロックが割り当てられていないことを示す。一方、値が「1」である場合、そのビットに対応するブロックに物理ブロックが割り当てられていることを示す。
図13の例では、各先頭ブロックに対応するビットマップフィールド1302には、先頭から16ブロック分の割り当て状況に関する情報が格納されている。また、先頭ブロックアドレスフィールド1301のサイズは、有限である。図13の例では4エントリに限定されている。このため、自動拡張可能仮想ボリューム割り当て部分ビットマップ106bは、運用ボリューム301の全ブロックに関する情報を格納することができない。
先頭ブロックアドレスフィールド1301及びビットマップフィールド1302は、自動拡張可能仮想ボリューム割り当てビットマップ106と同様、ボリューム毎に保持される。
図14は、本発明の第2の実施の形態のスナップショット制御部104bが実行するスナップショット処理を示すフローチャートである。
スナップショット制御部104bは、ファイルシステム制御部103から運用ボリューム301内のブロックを対象とするデータの書き込み要求を受信したときに、図14のスナップショット処理を実行する。
スナップショット制御部104bは、スナップショット処理を開始すると(ステップ1401)、最初に、書き込み要求の対象ブロックに格納されているデータが既に差分ボリューム302に退避済みであるか否かを判定する(ステップ1402)。
ステップ1402において、データが退避済みであると判定された、スナップショット制御部104bは、ステップ1414へ処理を移す。
一方、ステップ1402において、データがまだ退避されていないと判定された場合、スナップショット制御部104bは、自動拡張可能仮想ボリューム割り当て部分ビットマップ106bに、書き読み要求の対象ブロックに対応するビットマップが存在するか否かを判定する(ステップ1403)。
例えば、自動拡張可能仮想ボリューム割り当て部分ビットマップ106bが図13に示す通りである場合、書き込み要求の対象ブロックのブロックアドレスが「0x0fa0」から「0x0faf」、「0x2530」から「0x253f」、「0x5fe0」から「0x5fef」、又は、「0xffa0」から「0xffaf」のいずれかである場合、書き込み要求の対象ブロックに対応するビットマップが存在すると判定される。なお、自動拡張可能仮想ボリューム割り当て部分ビットマップ106bは、図7に示すような初期化処理によって割当ビットマップを取得しない限り、初期状態においてビットマップを含まない。
ステップ1403において、書き読み要求の対象ブロックに対応するビットマップが存在しないと判定された場合、スナップショット制御部104bは、自動拡張可能仮想ボリューム割り当て部分ビットマップ106bを参照して、対象ブロックに物理ブロックが割り当てられているか否かを判定することができない。この場合、ステップ1405へ処理が移る。
一方、ステップ1403において、ビットマップが存在すると判定された場合、スナップショット制御部104bはそのビットマップを参照して、書き読み要求の対象ブロックに物理ブロックが割り当てられているか否かを判定する(ステップ1404)。
ステップ1404において、物理ブロックが割り当てられていると判定された場合、その対象ブロックに格納されているデータを退避する必要がある。この場合、ステップ1405へ処理が移る。
一方、ステップ1404において、物理ブロックが割り当てられていないと判定された場合、その対象ブロックにデータが格納されていないため、データの退避を実行する必要がない。この場合、ステップ1408へ処理が移る。
ステップ1405において、スナップショット制御部104bは、書き込み要求の対象ブロックに格納されているデータを読み込む。
次に、スナップショット制御部104bは、読み込みコマンドを実行したマイクロプログラム111から受信した応答が未割り当てエラー又はワーニングであるか否かを判定する(ステップ1406)。これらのエラー及びワーニングは、読み込みコマンドの対象のブロック(すなわち、書き込み要求の対象ブロック)に物理ブロックが割り当てられていないことを示すものである。読み込みコマンドを受信したマイクロプログラム111が実行する処理については、後で詳細に説明する(図15参照)。
ステップ1406において、未割り当てエラー又はワーニングを受信したと判定された場合、スナップショット制御部104bは、エラー等の応答に含まれる詳細情報から、読み込みコマンドの対象ブロックの近傍のブロックの割り当て情報を取得する。そして、スナップショット制御部104bは、取得した割り当て情報を自動拡張可能仮想ボリューム割り当て部分ビットマップ106bに登録する(ステップ1407)。エラー等の応答に含まれる詳細情報については、後で詳細に説明する(図15参照)。
次に、スナップショット制御部104bは、ステップ1408から1410を順次実行する。これらのステップは、それぞれ、図10のステップ1008から1010と同様であるため、説明を省略する。
一方、ステップ1406において、マイクロプログラム111からの応答が正常終了であった場合(すなわち、未割り当てエラー又はワーニングのいずれも受信していない場合)、読み込みコマンドの対象のブロックに物理ブロックが割り当てられている。すなわち、書き込み要求の対象ブロックに物理ブロックが割り当てられているこの場合、ステップ1411へ処理が移る。ステップ1411、1412及び1413の処理は、それぞれ、図10のステップ1004、1006及び1007と同様のため、説明を省略する。
ステップ1410又は1413を実行した後、スナップショット制御部104bは、ステップ1414を実行する。ステップ1414は図10のステップ1011と同様であるため、説明を省略する。
以上で、スナップショット処理が終了する(ステップ1415)。
図15は、本発明の第2の実施の形態のI/Oコマンド制御部112bが読み込みコマンドを受信したときに実行する読み込みコマンド処理を示すフローチャートである。
I/Oコマンド制御部112bは、読み込みコマンド処理を開始すると(ステップ1501)、最初に、読み込みコマンドによって指定された対象ボリュームが自動拡張可能仮想ボリュームであるか否かを判定する(ステップ1502)。
ステップ1502において、読み込みコマンドの対象ボリュームが自動拡張可能仮想ボリュームでないと判定された場合、その対象ボリュームの全ブロックに必ず物理ブロックが割り当てられている。この場合、I/Oコマンド制御部112bは、自動拡張不可仮想ボリューム管理制御部113に、読み込みコマンドの対象ブロックの読み込み処理を指示する(ステップ1503)。その後、ステップ1506へ処理が移る。
一方、ステップ1502において、読み込みコマンドの対象ボリュームが自動拡張可能仮想ボリュームであると判定された場合、読み込みコマンドの対象ブロックに物理ブロックが割り当てられていない可能性がある。この場合、I/Oコマンド制御部112bは、自動拡張可能仮想ボリューム管理制御部114bに対象ブロックの読み込み処理を指示する(ステップ1504)。
次に、I/Oコマンド制御部112bは、その対象ブロックに物理ブロックが割り当てられているか否かを自動拡張可能仮想ボリューム割り当てテーブル115に基づいて判定する(ステップ1505)。
ステップ1505において、物理ブロックが割り当てられていると判定された場合、I/Oコマンド制御部112bは、読み込みコマンドの対象ブロックに格納されているデータを読み込む(ステップ1506)。
次に、I/Oコマンド制御部112bは、読み込んだデータをI/Oコマンド発行部105bへ応答する(ステップ1507)。
I/Oコマンド制御部112bは、ステップ1507を実行した後、読み込みコマンド処理を正常終了する(ステップ1508)。
一方、ステップ1505において、物理ブロックが割り当てられていないと判定された場合、読み込みコマンドの対象ブロックからデータを読み込むことができない。この場合、自動拡張可能仮想ボリューム管理制御部114bが、自動拡張可能仮想ボリューム割り当てテーブル115に基づいて、読み込みコマンドの対象ブロックの近傍のブロックに関する割り当てビットマップを作成する(ステップ1509)。近傍のブロックとは、読み込みコマンドの対象ブロックを識別するブロックアドレスに連続するブロックアドレスによって識別されるブロックを含む一つ以上のブロックである。
例えば、読み込みコマンドの対象ブロックのブロックアドレスが「0x0fa0」(図13参照)であった場合、近傍のブロックは、ブロックアドレスが「0x0fa1」であるブロックを含む一つ以上のブロック(例えば、「0x0fa1」から「0x0faf」までの15ブロック)であってもよい。対象ブロック近傍の割り当てビットマップは、例えば、対象ブロックの前後の所定の数のブロックの割り当てビットマップであってもよく、対象ブロックを含む連続する未割り当てブロックの割り当てビットマップであってもよく、ボリューム全体の割り当てビットマップでもよい。
次に、I/Oコマンド制御部112bは、読み込みコマンドをエラー又はワーニングとして、読み込みコマンドの対象ブロック近傍の割り当てビットマップをエラー詳細情報として応答する(ステップ1510)。エラーを応答する場合、I/Oコマンド制御部112bは、コマンド実行結果となる読み込みデータを応答しない。一方、ワーニングを応答する場合、I/Oコマンド制御部112bは、例えば「0」等のダミーのデータを応答する。
I/Oコマンド制御部112bは、ステップ1510を実行した後、読み込みコマンド処理を異常終了する(ステップ1511)。
以上の本発明の第2の実施の形態によれば、I/Oコマンドの対象ブロックに物理ブロックが割り当てられていない場合、その対象ブロックの近傍のブロックに関する割り当てビットマップが作成される。すなわち、運用ボリューム301を構成する全ブロックに関する自動拡張可能仮想ボリューム割り当てビットマップ106を作成しなくてもよいため、NAS主記憶153の容量を節約することができる。また、シーケンシャルアクセスが実行される場合、アドレスが連続する複数のブロックを対象とした複数のI/Oコマンドが連続して発行される。この場合、対象ブロックの近傍のブロックに関する割り当てビットマップが作成されると、各I/Oコマンドごとに割り当てビットマップを作成する必要がないため、処理速度の低下を抑制することができる。
次に、本発明の第3の実施の形態について説明する。
第3の実施の形態は、第1の実施の形態及び第2の実施の形態におけるアプリケーションの領域割り当ての方式に関する。ここで、アプリケーションは、ファイルシステム又はデータベース等、任意の機能を実現するものであってよい。すなわち、任意のアプリケーションについて本実施の形態を適用することができるが、以下、ファイルシステムを例として本実施の形態を説明する。したがって、以下の説明における「ファイルシステム」を任意のアプリケーションによって置き換えても、本実施の形態を実現することができる。
最初に、本実施の形態の概要を説明する。
自動拡張可能仮想ボリュームを構成するブロックには、書き込み要求があったときに初めて物理ブロックが割り当てられる。このため、通常、物理ブロックが割り当てられたブロックは、ファイルシステムによって使用されている。しかし、その後ファイルが削除された場合、削除されたデータが格納されていたブロックは、依然として物理ブロックの割り当てが維持されているが、ファイルシステムによって使用されていない。このように、自動拡張可能仮想ボリュームには、物理ブロックが割り当てられているがファイルシステムによって使用されていないブロックが存在し得る。
例えば、図4に示すブロック401aから401dのうち、ブロック401aはファイルシステムによって使用されているが、ブロック401dは使用されていないと仮定する。当然、物理ブロックが割り当てられていないブロック401b及び401cも、ファイルシステムによって使用されていない。この場合において、ファイルシステムがいずれかのブロックを新たに使用する必要が生じたとき、どのブロックを選択して使用するかが問題となる。
最初に、物理ブロックが割り当てられていないブロック(例えばブロック401b)を選択する場合について述べる。この場合、最初にブロック401bを対象とする書き込み要求が発行されたとき、ブロック401bには物理ブロックが割り当てられていないため、データの退避が実行されない。このため、書き込み処理が高速に実行される。しかし、この場合、ブロック401dは、ファイルシステムによって使用されていないにも関らず、依然として物理ブロックが割り当てられているため、三つの物理ブロックが消費されている。したがって、ボリュームプール121内の記憶容量を有効に利用するためには、このような選択は望ましくないといえる。
次に、物理ブロックが割り当てられているブロック401dを選択する場合について述べる。この場合、最初にブロック401dを対象とする書き込み要求が発行されたとき、ブロック401dには物理ブロックが割り当てられているため、データの退避が実行される。このため、書き込み処理が遅延する。しかし、この場合、ブロック401a及び401dに割り当てられる二つの物理ブロックのみが消費されているため、ボリュームプール121内の記憶容量が有効に利用される。
このように、性能向上を重視する場合には、物理ブロックが割り当てられていないブロックを、容量節約を重視する場合には、物理ブロックが割り当てられているブロックを選択することが望ましい。本実施の形態によれば、性能と容量のいずれを重視するかを決定するポリシーが設定され、そのポリシーに従って、使用されるブロックが選択される。
図16は、本発明の第3の実施の形態のファイルシステム制御部103の説明図である。
具体的には、図16は、ファイルシステム制御部103を構成する部分のうち、新規ブロック割り当て処理ポリシーフラグ1601、ファイルシステム空きブロックビットマップ1602、新規ブロック割り当て処理ポリシー設定処理部1603及び新規ブロック割り当て処理部1604を示す。これらは、本発明に関連する処理部又は情報格納部である。ファイルシステム制御部103は、図16に示した以外の処理部も含んでいるが、本発明とは直接関係しないため省略する。
なお、新規ブロック割り当て処理ポリシー設定処理部1603及び新規ブロック割り当て処理部1604は、ファイルシステム制御部103のサブプログラムである。したがって、これらの処理部が実行する処理は、実際にはCPU151によって実行される。また、新規ブロック割り当て処理ポリシーフラグ1601及びファイルシステム空きブロックビットマップ1602は、NAS主記憶153に格納される。
新規ブロック割り当て処理ポリシーフラグ1601は、新規ブロック割り当て処理(後述)が実行された際、どのようなポリシーでブロックの割り当てを実行するか、具体的には容量節約を重視するのかスナップショット性能向上を重視するのかを決定するためのフラグである。
ファイルシステム空きブロックビットマップ1602は、ボリューム内のファイルシステムが使用しているブロックと未使用のブロックとを管理するためのビットマップである(図17参照)。
新規ブロック割り当て処理ポリシー設定処理部1603は、NAS管理者が割り当てポリシーをシステムコール経由で変更する際に実行されるサブプログラムである。新規ブロック割り当て処理ポリシー設定処理部1603が実行する処理については、後で詳細に説明する(図18参照)。
新規ブロック割り当て処理部1604は、設定された割り当てポリシーに従って、ファイルシステムが使用するブロックを新たに割り当てる処理を実行するサブプログラムである。この処理については後で詳細に説明する(図19参照)。
図17は、本発明の第3の実施の形態のファイルシステム空きブロックビットマップ1602の説明図である。
ファイルシステム空きブロックビットマップ1602は、自動拡張可能仮想ボリューム割り当てビットマップ106(図6参照)と同様、ブロックアドレス毎に、「0」又は「1」のいずれかの値のビットを格納する領域を含む。各ブロックアドレスと各領域との対応関係は、図6と同様であるため、説明を省略する。
ファイルシステム空きブロックビットマップ1602内のある領域に格納されている値が「0」である場合、その領域に対応するブロックがファイルシステムによって使用されていない(すなわち、そのブロックが空きブロックである)ことを示す。一方、その領域に格納されている値が「1」である場合、その領域に対応するブロックがファイルシステムによって使用されていることを示す。
図17は、自動拡張可能仮想ボリューム割り当てビットマップ106が図6に示す通りである場合のファイルシステム空きブロックビットマップ1602の例である。
ファイルシステムによって使用されているブロックには、必ず物理ブロックが割り当てられている(例えば、ブロックアドレスが「0x0002」である領域1701参照)。
一方、物理ブロックが割り当てられているにも関らず、ファイルシステムによって使用されていないブロックも存在する(例えば、ブロックアドレスが「0x0049」である領域1702参照)。
図18は、本発明の第3の実施の形態において実行される新規ブロック割り当て処理ポリシー設定処理のフローチャートである。
図18の処理は、新規ブロック割り当て処理ポリシー設定処理部1603によって実行される。
最初に、システムコール経由で新規ブロック割り当て処理ポリシー設定処理が開始する(ステップ1801)。
最初に、新規ブロック割り当て処理ポリシー設定処理部1603は、NAS管理者から受信した要求が容量節約モードへのポリシー変更要求であるか否かを判定する(ステップ1802)。
ステップ1802において、容量節約モードへの変更要求であると判定された場合、新規ブロック割り当て処理ポリシー設定処理部1603は、新規ブロック割り当て処理ポリシーフラグ1601を「1」に設定し(ステップ1803)、処理を終了する(ステップ1808)。
一方、ステップ1802において、容量節約モードへの変更要求でないと判定された場合、新規ブロック割り当て処理ポリシー設定処理部1603は、受信した要求がスナップショット性能向上モードへのポリシー変更要求であるか否かを判定する(ステップ1804)。
ステップ1804において、スナップショット性能向上モードへのポリシー変更要求であると判定された場合、新規ブロック割り当て処理ポリシー設定処理部1603は、新規ブロック割り当て処理ポリシーフラグ1601を「2」に設定し(ステップ1805)、処理を終了する(ステップ1808)。
一方、ステップ1804にて、スナップショット性能向上モードへのポリシー変更要求でないと判定された場合、新規ブロック割り当て処理ポリシー設定処理部1603は、受信した要求が従来モードへのポリシー変更要求であるか否かを判定する(ステップ1806)。
ステップ1806において、従来モードへのポリシー変更要求であると判定された場合、新規ブロック割り当て処理ポリシー設定処理部1603は、新規ブロック割り当て処理ポリシーフラグ1601を「0」に設定し(ステップ1807)、処理を終了する(ステップ1808)。
一方、ステップ1806において、従来モードへのポリシー変更要求でないと判定された場合、新規ブロック割り当て処理ポリシー設定処理部1603は、受信した要求を不正なモード変更とみなし、エラー終了する。
図19は、本発明の第3の実施の形態において実行される新規ブロック割り当て処理のフローチャートである。
図19の処理は、新規ブロック割り当て処理部1604によって実行される。
ファイル新規領域ライト又はファイル作成などの延長によって、新規ブロック割り当て処理が開始する(ステップ1901)。
最初に、新規ブロック割り当て処理部1604は、新規ブロック割り当て処理ポリシーフラグ1601が「1」であるか否かを判定する(ステップ1902)。
ステップ1902において、新規ブロック割り当て処理ポリシーフラグ1601が「1」であると判定された場合、容量節約モードが選択されている。この場合、新規ブロック割り当て処理部1604は、ファイルシステム空きブロックビットマップ1602が空きを示している領域のうち、自動拡張可能仮想ボリューム割り当てビットマップ106が割り当て済みを示しているブロックを選択する(ステップ1903)。図6及び図17の例では、例えば、領域1702に対応するブロックが選択される。
次に、新規ブロック割り当て処理部1604は、新規ブロックの割り当てが成功したか否かを判定する。ステップ1903の条件に合致するブロックが存在しない場合、ステップ1906において失敗と判定される。
ステップ1906において成功したと判定された場合、新規ブロック割り当て処理部1604は、ファイルシステム空きブロックビットマップ1602の選択されたブロックに対応する値を「1」(すなわち、使用済み)に更新し(ステップ1908)、処理を終了する(ステップ1909)。
一方、ステップ1906において失敗したと判定された場合、新規ブロック割り当て処理部1604は、物理ブロックが割り当てられているか否かに関らず、ファイルシステム空きブロックビットマップ1602が空きを示している領域を選択し(ステップ1907)、その後ステップ1908を実行して、処理を終了する(ステップ1909)。
ステップ1902において、新規ブロック割り当て処理ポリシーフラグ1601が「1」でないと判定された場合、新規ブロック割り当て処理部1604は、新規ブロック割り当て処理ポリシーポリシーフラグ1601が「2」であるか否かを判定する(ステップ1904)。
ステップ1904において、新規ブロック割り当て処理ポリシーフラグ1601が「2」であると判定された場合、性能向上モードが選択されている。この場合、新規ブロック割り当て処理部1604は、ファイルシステム空きブロックビットマップ1602が空きを示している領域のうち、自動拡張可能仮想ボリューム割り当てビットマップ106が未割り当てを示しているブロックを選択する(ステップ1905)。図6及び図17の例では、例えば、ブロックアドレスが「0x0000」であるブロックが選択される。その後に実行される処理は、ステップ1903の後に実行されるものと同様である。ただし、ステップ1906では、ステップ1905の条件に合致するブロックが存在しない場合に失敗と判定される。
ステップ1904において、新規ブロック割り当て処理ポリシーフラグ1601が「2」でないと判定された場合、ステップ1907及び1908が順次実行され、処理が終了する(ステップ1909)。
なお、上記の説明は、ファイルシステム全体に一つのポリシーが適用される例を示したが、ファイルごとにポリシーを設定できるようにしてもよい。
上記の本発明の第3の実施の形態によれば、NAS管理者は、少なくとも、ボリュームプールの容量を節約するモード又はスナップショットの性能を向上するモードのいずれかを選択することができる。ストレージ装置110のマイクロプログラム111は、選択されたモードに従って、アプリケーションが新たに使用するブロックを選択する。その結果、容量節約又は性能向上が実現される。
次に、本発明の第4の実施の形態について説明する。
上記の本発明の第1から第3の実施の形態は、ファイルシステム制御部103を備えるNAS101と、ストレージ装置110と、によって構成され、NAS101が外部ネットワーク160を介してクライアント計算機と接続されたストレージシステムである。NAS101内のスナップショット制御部104は、ファイルシステム制御部103からブロックI/O要求を受信すると、要求の対象のブロックに格納されているデータを退避するか否かを判定する。しかし、スナップショット制御部104は、ブロックI/O要求を受信することができる限り、NAS101以外の部分において実行されてもよい。
本発明の第4の実施の形態において、スナップショット制御部104は、ストレージ装置101内のマイクロプログラム111内に含まれ、ディスクコントローラ157によって実行される。
図20は、本発明の第4の実施の形態のストレージシステムの機能ブロック図である。
本実施の形態のストレージシステムは、ブロックI/Oコマンドを受信するストレージ装置110によって構成される。ストレージ装置110のハードウェア構成は、図1に示す通りである。マイクロプログラム111内の自動拡張可能仮想ボリューム管理制御部114は、スナップショット制御部104を含む。スナップショット制御部104が実行する処理については、後で詳細に説明する(図21参照)。その他の部分については、本発明の第1から第3の実施の形態と同様であるため、説明を省略する。
図21は、本発明の第4の実施の形態のスナップショット制御部104が実行するスナップショット処理を示すフローチャートである。
第4の実施の形態のスナップショット処理は、第1の実施の形態のスナップショット処理とほぼ同様である。ただし、第4の実施の形態のスナップショット制御部104は、自動拡張可能仮想ボリューム割り当てテーブル115を直接参照することができる。このため、初期化処理において自動拡張可能仮想ボリューム割り当てビットマップ106を作成する必要がない。また、I/Oコマンドに応じて自動拡張可能仮想ボリューム割り当て部分ビットマップ106bを作成する必要もない。
最初に、スナップショット制御部104は、スナップショット処理を開始する(ステップ2101)。
次に、スナップショット制御部104は、書き込み要求の対象ブロックのデータが既に差分ボリューム302に退避済みか否かを判定する(ステップ2102)。
ステップ2102において、退避済みであると判定された場合、ステップ2111へ処理が移る。
一方、ステップ2102において、まだ退避していないと判定された場合、スナップショット制御部104は、自動拡張可能仮想ボリューム割り当てテーブル115を参照して、書き込み要求の対象ブロックに物理ブロックが割り当て済みか否かを判定する(ステップ2103)。
ステップ2103において、物理ブロックが割り当て済みであると判定された場合、ステップ2104へ処理が移る。ステップ2104から2107までの処理は、第1の実施の形態において説明した内容と同等であるため、説明を省略する(図10のステップ1004から1007参照)。
一方、ステップ2103において、物理ブロックがまだ割り当てられていない場合、スナップショット制御部104は、書き込み要求の対象ブロックに対して物理ブロックの割り当てを実行する(ステップ2108)。
次に、スナップショット制御部104は、自動拡張可能仮想ボリューム割り当てテーブル115を更新する(ステップ2109)。具体的には、書き込み要求の対象ブロックに物理ブロックが割り当てられたことを示す情報、及び、割り当てられた物理ブロックを識別する情報が、自動拡張可能仮想ボリューム割り当てテーブル115に新たに登録される。
次に、スナップショット制御部104は、書き込み要求の対象ブロックに格納されていたデータをダミーデータブロック305へ退避したことを示す情報をスナップショット管理テーブル304に書き込む(ステップ2110)。第1の実施の形態と同様、ダミーデータブロック305を物理的に確保せずとも、退避先のブロックアドレスのフィールドに0などのデータを格納することによって、ダミーデータであることを論理的に示してもよい。ステップ2108、2109及び2110は、どのような順序で実行されてもよい。
次に、スナップショット制御部104は、書き込み要求の対象データを書き込み要求の対象ブロックへ書き込み(ステップ2111)、スナップショット処理を終了する(ステップ2113)。
上記の本発明の第4の実施の形態によれば、ブロックI/O要求を受信するストレージシステムにおいても本発明を実施することができる。例えば、SCSIインターフェースを介してクライアント計算機と直接接続されるストレージシステムにおいても本発明を実施することができる。
次に、本発明の第5の実施の形態について説明する。
第5の実施の形態は、I/Oコマンドを処理するマイクロプログラム111を改善することを目的とする。
本発明の第1から第4の実施の形態によれば、図4に示すように、運用ボリューム301内のブロックを対象とする書き込み要求を受信したNAS101は、書き込み要求の対象ブロックのデータを読み込み(ステップ(3A))、そのデータを差分ボリューム302の差分データ格納領域303に書き込み(ステップ(3B))、その書き込み先を識別する情報をスナップショット管理テーブル304に書き込み(ステップ(4))、その後、書き込み要求の対象データを対象ブロックに書き込む(ステップ(5))。ステップ(3A)、(3B)、(4)及び(5)は、それぞれ、図10のステップ1005、1006、1007及び1011に対応する。結局、NASは、書き込み要求の対象ブロックごとに、一つの読み込みコマンド及び三つの書き込みコマンドを、ストレージ装置110に対して順次発行する。
このような一連のコマンドの組を一つのコマンドにまとめることによって、NAS101とストレージ装置110との間のデータ転送量を削減することができる。
具体的には、NAS101は、ステップ(3A)及び(3B)の読み込みコマンド及び書き込みコマンドの代わりに、コピー(COPY)コマンドを発行してもよい。この場合、NAS101の代わりにマイクロプログラム111が、運用ブロック301からデータを読み込み、そのデータを差分ボリューム302の差分データ格納領域303に書き込む。
あるいは、NAS101は、ステップ(3A)、(3B)及び(4)の読み込みコマンド及び二つの書き込みコマンドの代わりに、コピー・アンド・ライト(COPY&WRITE)コマンドを発行してもよい。この場合、NAS101の代わりにマイクロプログラム111が、運用ブロック301からデータを読み込み、そのデータを差分ボリューム302の差分データ格納領域303に書き込み、その書き込み先を識別する情報をスナップショット管理テーブル304に書き込む。
あるいは、NAS101は、ステップ(3A)、(3B)、(4)及び(5)の読み込みコマンド及び三つの書き込みコマンドの代わりに、コピー・アンド・ライト・アンド・ライト(COPY&WRITE&WRITE)コマンドを発行してもよい。この場合、NAS101の代わりにマイクロプログラム111が、運用ブロック301からデータを読み込み、そのデータを差分ボリューム302の差分データ格納領域303に書き込み、その書き込み先を識別する情報をスナップショット管理テーブル304に書き込み、書き込み要求の対象データを対象ブロックに書き込む。
本発明の第5の実施の形態は、上記のように、一連のコマンドの組を一つのコマンドにまとめた場合に本発明を適用することを目的とする。そのため、図4のステップ(3)に相当するコピーの無効化は、マイクロプログラム111によって実行される。
最初に、NAS101がCOPYコマンドを発行する場合について説明する。
図22は、本発明の第5の実施の形態の自動拡張可能仮想ボリューム管理制御部114が実行するCOPYコマンド処理を示すフローチャートである。
自動拡張可能仮想ボリューム管理制御部114は、NAS101からCOPYコマンドを受信すると、COPYコマンド処理を開始する(ステップ2201)。
次に、自動拡張可能仮想ボリューム管理制御部114は、コピー元ブロックに対応する自動拡張可能仮想ボリューム割り当てテーブル115を参照する(ステップ2202)。コピー元ブロックとは、I/Oコマンドによって指定された運用ボリューム301内の書き込み対象ブロックである。
次に、自動拡張可能仮想ボリューム管理制御部114は、コピー元ブロックに物理ブロックが割り当てられているか否かを判定する(ステップ2203)。
ステップ2203において、物理ブロックが割り当てられていると判定された場合、自動拡張可能仮想ボリューム管理制御部114は、コピー処理を実行して、正常終了をI/Oコマンド制御部112に応答する(ステップ2205)。ステップ2205において実行されるコピー処理は、図10のステップ1005及び1006においてスナップショット制御部104が実行する処理と同様の処理である。すなわち、自動拡張可能仮想ボリューム管理制御部114は、コピー元ブロックからデータを読み込み、そのデータを差分ボリューム302の差分データ格納領域303に書き込む。
一方、ステップ2203において、物理ブロックが割り当てられていないと判定された場合、自動拡張可能仮想ボリューム管理制御部114は、ステップ2205のコピー処理を実行せず、エラー又はワーニングをI/Oコマンド制御部112に応答する(ステップ2204)。このときに応答されるエラー又はワーニングは、要求されたコピー処理が実行されなかったことを示す情報を含む。
自動拡張可能仮想ボリューム管理制御部114は、ステップ2204又は2205を実行すると、COPYコマンド処理を終了する(ステップ2206)。
上記のCOPYコマンド処理は、COW処理の際に発行されるCOPYコマンドだけでなく、二つのボリューム300間でデータをコピーするために発行される全てのCOPYコマンドに適用することができる。さらに、上記のCOPYコマンド処理は、同一のボリューム300内の二つのブロック間でデータがコピーされる場合にも適用することができる(図4参照)。
次に、NAS101がCOPY&WRITEコマンドを発行する場合について説明する。
図23は、本発明の第5の実施の形態において自動拡張不可仮想ボリュームを対象として発行されるCOPY&WRITEコマンドのフォーマットの一例を示す説明図である。
前述のように、NAS101からCOPY&WRITEコマンドを受信したマイクロプログラム111は、運用ボリューム301のブロックからデータを読み込む。この読み込み対象を、図23の説明において、「コピー元」と記載する。
マイクロプログラム111は、読み込まれたデータを、差分ボリューム302の差分データ格納領域303に書き込む。この書き込み対象を、図23の説明において、「コピー先」と記載する。
マイクロプログラム111は、そのコピー先を識別する情報をスナップショット管理テーブル304に書き込む。この書き込み対象を、図23の説明において、「書き込み先」と記載する。
COPY&WRITEコマンドは、コピー元、コピー先及び書き込み先を識別する情報を含む。
COPY&WRITEコマンドは、先頭から、COPY&WRITEコマンド2301、コピー元ディスクドライブ2302、コピー元ブロックアドレス2303、コピーするブロック数2304、コピー先ディスクドライブ2305、コピー先ブロックアドレス2306、書き込み先ディスクドライブ2307、書き込み先ブロックアドレス2308、書き込みするブロック数2309及び書き込みデータ保持メモリアドレス2310の各フィールドを含む。
COPY&WRITEコマンド2301は、コマンドを区別するために使用される識別子(すなわち、そのコマンドがCOPY&WRITEコマンドであることを示す情報)である。
コピー元ディスクドライブ2302は、コピー元ブロックを格納しているディスクドライブ159の識別子である。
コピー元ブロックアドレス2303は、コピー元ブロックを識別するブロックアドレスである。コピー元ブロックが複数の連続したブロックである場合、コピー元ブロックアドレス2303は、コピー元ブロックの先頭を識別するブロックアドレスである。
コピーするブロック数2304は、コピーの対象のブロックの数である。すなわち、コピーするブロック数2304は、コピーされるデータ量を表す。
コピー先ディスクドライブ2305は、コピー先のブロックを格納しているディスクドライブ159の識別子である。
コピー先ブロックアドレス2306は、コピー先のブロックを識別するブロックアドレスである。コピー先ブロックが複数の連続したブロックである場合、コピー先ブロックアドレス2306は、コピー先ブロックの先頭を識別するブロックアドレスである。
書き込み先ディスクドライブ2307は、書き込み先のブロックを格納しているディスクドライブ159の識別子である。
書き込み先ブロックアドレス2308は、書き込み先のブロックの先頭を識別するブロックアドレスである。
書き込みするブロック数2309は、書き込みの対象のブロックの数である。
書き込みデータ保持メモリアドレス2310は、書き込みの対象のデータが格納されているNAS主記憶153のアドレスである。これらのデータを指定してコマンドを発行することによって、COPY&WRITEコマンドが実行される。
図24は、本発明の第5の実施の形態のCOPY&WRITEコマンドが自動拡張不可仮想ボリューム管理制御部113によって実行される場合のフローチャートである。
自動拡張不可仮想ボリューム管理制御部113は、COPY&WRITEコマンドを開始すると(ステップ2401)、COPY&WRITEコマンドのフィールド2302から2306の情報に基づいて、COPY処理を実行する(ステップ2402)。具体的には、運用ボリューム301からデータを読み込み、そのデータを差分ボリューム302に書き込む処理が実行される。
次に、自動拡張不可仮想ボリューム管理制御部113は、COPY&WRITEコマンドのフィールド2307から2310の情報に基づいて、WRITE処理を実行する(ステップ2403)。具体的には、コピー先を示す情報がスナップショット管理テーブル304に書き込まれる。
次に、自動拡張不可仮想ボリューム管理制御部113は、正常終了したことをI/Oコマンド制御部112に応答し(ステップ2404)、COPY&WRITEコマンドを終了する(ステップ2405)。
図25は、本発明の第5の実施の形態において自動拡張可能仮想ボリュームを対象として発行されるCOPY&WRITEコマンドのフォーマットの一例を示す説明図である。
図25に示すCOPY&WRITEコマンドを構成する各フィールドのうち、フィールド2501から2509までは、図23に示すフィールド2301から2309までと同様であるため、説明を省略する。
図25のCOPY&WRITEコマンドには、書き込みデータ保持メモリアドレスを指定するフィールドが二つ用意されている。すなわち、書き込み第1データ保持メモリアドレス2510及び書き込み第2データ保持メモリアドレス2511である。
書き込み第1データ保持メモリアドレス2510は、コピー元のブロックに物理ブロックが割り当てられている場合にスナップショット管理テーブル304に書き込まれるべきデータ(すなわち、WRITEデータ1)を格納しているNAS主記憶153のアドレスである。WRITEデータ1は、具体的には、コピー先を示す情報を含む。
書き込み第2データ保持メモリアドレス2511は、コピー元のブロックに物理ブロックが割り当てられていない場合にスナップショット管理テーブル304に書き込まれるべきデータ(すなわち、WRITEデータ2)を格納しているNAS主記憶153のアドレスである。WRITEデータ2は、具体的には、ダミーデータブロックを示す情報を含む。
図25のフォーマットは、自動拡張不可ボリュームに適用されてもよい。この場合、フィールド2511に示される書き込みデータは無視される。
図26は、本発明の第5の実施の形態のCOPY&WRITEコマンドが自動拡張可能仮想ボリューム管理制御部114によって実行される場合のフローチャートである。
自動拡張可能仮想ボリューム管理制御部114は、NAS101からCOPYコマンドを受信すると、COPY&WRITEコマンド処理を開始する(ステップ2601)。
ステップ2602及び2603において実行される処理は、図22のステップ2202及び2203において実行されるものと同じであるので、説明を省略する。
ステップ2603において、物理ブロックが割り当てられていると判定された場合、自動拡張可能仮想ボリューム管理制御部114は、コピー処理を実行する(ステップ2604)。
次に、自動拡張可能仮想ボリューム管理制御部114は、書き込みデータ第1データ保持メモリアドレス2510に基づくWRITEデータ1を、書き込み先ディスクドライブ2507及び書き込み先ブロックアドレス2508によって指定されたブロックへ書き込む(ステップ2605)。スナップショット機能においてこのコマンドが使用される場合、WRITEデータ1とは、スナップショット管理テーブル304に書き込まれるデータである。すなわち、WRITEデータ1は、差分データ格納領域303中にあるコピー先のブロックと、運用ボリューム301中にあるコピー元のブロックとの対応を示す情報を含む。
次に、自動拡張可能仮想ボリューム管理制御部114は、正常終了したことをI/Oコマンド制御部112に応答し(ステップ2606)、コマンド処理を終了する(ステップ2609)。
一方、ステップ2603において、物理ブロックが割り当てられていないと判定された場合、自動拡張可能仮想ボリューム管理制御部114は、書き込み第2データ保持メモリアドレス2511に基づくWRITEデータ2を、書き込み先ディスクドライブ2507及び書き込み先ブロックアドレス2508によって指定されたブロックへ書き込む(ステップ2607)。スナップショット機能においてこのコマンドが使用される場合、WRITEデータ2とは、スナップショット管理テーブルに書き込むデータである。すなわち、WRITEデータ2は、ダミーデータブロック又はダミーブロック番号と、コピー元のブロックとの対応を示す情報を含む。
次に、自動拡張可能仮想ボリューム管理制御部114は、エラー、ワーニング又は正常終了をI/Oコマンド制御部112に応答する(ステップ2608)。この際、ステップ2606とは別のステータス値がI/Oコマンド制御部112に応答される。以上で、コマンド処理が終了する(ステップ2609)。
図27は、本発明の第5の実施の形態において自動拡張不可仮想ボリュームを対象として発行されるCOPY&WRITE&WRITEコマンドのフォーマットの一例を示す説明図である。
前述のように、NAS101からCOPY&WRITE&WRITEコマンドを受信したマイクロプログラム111は、運用ボリューム301のブロックからデータを読み込む。この読み込み対象を、図27の説明において、「コピー元」と記載する。
マイクロプログラム111は、読み込まれたデータを、差分ボリューム302の差分データ格納領域303に書き込む。この書き込み対象を、図27の説明において、「コピー先」と記載する。
マイクロプログラム111は、そのコピー先を識別する情報をスナップショット管理テーブル304に書き込む。この書き込み対象を、図27の説明において、「第1の書き込み先」と記載する。また、この書き込み処理を「第1の書き込み処理」と記載する。
さらに、マイクロプログラム111は、運用ボリューム301に書き込まれるべきデータを、運用ボリューム301に書き込む。この書き込みの対象を、図27の説明において、「第2の書き込み先」と記載する。また、この書き込み処理を「第2の書き込み処理」と記載する。
COPY&WRITE&WRITEコマンドは、コピー元、コピー先、第1の書き込み先及び第2の書き込み先を識別する情報を含む。
先頭のCOPY&WRITE&WRITEコマンド2701は、そのコマンドがCOPY&WRITE&WRITEコマンドであることを示す識別子である。
コピー元ディスクドライブ2702からコピー先ブロックアドレス2706までは、COPY&WRITEコマンド(図23参照)と同様であるので、説明を省略する。
第1の書き込み先ディスクドライブ2707は、第1の書き込み先のブロックを格納しているディスクドライブ159の識別子である。
第1の書き込み先ブロックアドレス2708は、第1の書き込み先のブロックの先頭を識別するブロックアドレスである。
第1の書き込みするブロック数2709は、第1の書き込み処理の対象のブロックの数である。
第1の書き込みデータ保持メモリアドレス2710は、第1の書き込み処理の対象のデータが格納されているNAS101のメモリのアドレスである。
第2の書き込み先ディスクドライブ2711は、第2の書き込み先のブロックを格納しているディスクドライブ159の識別子である。第2の書き込み先ブロックアドレス2712は、第2の書き込み先のブロックの先頭を識別するブロックアドレスである。第2の書き込みするブロック数2713は、第2の書き込み処理の対象のブロックの数である。第2の書き込みデータ保持メモリアドレス2714は、第2の書き込み処理の対象のデータが格納されているNAS101のメモリのアドレスである。これらのデータを指定してコマンドを発行することによって、COPY&WRITE&WRITEコマンドが実行される。
図28は、本発明の第5の実施の形態のCOPY&WRITE&WRITEコマンドが自動拡張不可仮想ボリューム管理制御部113によって実行される場合のフローチャートである。
自動拡張不可仮想ボリューム管理制御部113は、COPY&WRITE&WRITEコマンドを開始すると(ステップ2801)、COPY&WRITE&WRITEコマンドのフィールド2702から2706の情報に基づいてCOPY処理を実行する(2802)。具体的には、運用ボリューム301からデータを読み込み、そのデータを差分ボリューム302に書き込む処理が実行される。
次に、自動拡張不可仮想ボリューム管理制御部113は、COPY&WRITE&WRITEコマンドのフィールド2707から2710の情報に基づいて、第1の書き込み(WRITE)処理を実行する(ステップ2803)。具体的には、コピー先を示す情報がスナップショット管理テーブル304に書き込まれる。
次に、自動拡張不可仮想ボリューム管理制御部113は、COPY&WRITE&WRITEコマンドのフィールド2711から2714の情報に基づいて、第2の書き込み(WRITE)処理を実行する(ステップ2804)。具体的には、NAS101が運用ボリューム301に書き込むことを要求したデータを、運用ボリューム301に書き込む。
次に、自動拡張不可仮想ボリューム管理制御部113は、正常終了したことをI/Oコマンド制御部112に応答し(ステップ2805)、COPY&WRITE&WRITEコマンドを終了する(ステップ2806)。
図29は、本発明の第5の実施の形態において自動拡張可能仮想ボリュームを対象として発行されるCOPY&WRITE&WRITEコマンドのフォーマットの一例を示す説明図である。
図29に示すCOPY&WRITE&WRITEコマンドを構成する各フィールドのうち、フィールド2901から2909までは、それぞれ、図27に示すフィールド2701から2709までと同様である。また、フィールド2912から2915までは、それぞれ、フィールド2711から2714までと同様である。このため、これらのフィールドについての説明を省略する。
図29のCOPY&WRITE&WRITEコマンドには、第1の書き込みデータ保持メモリアドレスを指定するフィールドが二つ用意されている。すなわち、第1の書き込み第1データ保持メモリアドレス2910及び第1の書き込みデータ第2データ保持メモリアドレス2911である。これらのフィールド2910及び2911は、それぞれ、図25のフィールド2510及び2511と同様であるため、説明を省略する。
図29のフォーマットは、第1の書き込み第2データ保持メモリアドレス2911をコマンドの最後に配置すること等によって、自動拡張不可ボリュームに適用されてもよい。この場合、フィールド2911に示される書き込みデータは無視される。
図30は、本発明の第5の実施の形態のCOPY&WRITE&WRITEコマンドが自動拡張可能仮想ボリューム管理制御部114によって実行される場合のフローチャートである。
図30において、ステップ3001から3004までは、それぞれ図26のステップ2601から2604までと同様であるため、説明を省略する。
ステップ3004を実行した後、自動拡張可能仮想ボリューム管理制御部114は、第1の書き込み第1データ保持メモリアドレス2910の情報に基づいて、第1のWRITEコマンドの対象であるWRITEデータ1を、第1の書き込み先ディスクドライブ2907及び第1の書き込み先ブロックアドレス2908によって指定されたブロックへ書き込む(ステップ3005)。
次に、自動拡張可能仮想ボリューム管理制御部114は、第2の書き込み処理(第2のWRITEコマンド)を実行する(ステップ3006)。その結果、NAS101が運用ボリューム301に書き込むことを要求したデータ(すなわち、NASクライアントがNAS101に発行した書き込み要求の対象データ)が、運用ボリューム301に書き込まれる。
次に、自動拡張可能仮想ボリューム管理制御部114は、正常終了したことをI/Oコマンド制御部112に応答し(ステップ3007)、コマンド処理を終了する(ステップ3011)。
一方、ステップ3003において、物理ブロックが割り当てられていないと判定された場合、自動拡張可能仮想ボリューム管理制御部114は、第1の書き込み第2データ保持メモリアドレス2911の情報に基づいて、第1のWRITEコマンドの対象であるWRITEデータ2を、指定されたブロックへ書き込む(ステップ3008)。この書き込み先のブロックは、書き込み先ディスクドライブ2507及び書き込み先ブロックアドレス2508によって指定されたものである。
次に、自動拡張可能仮想ボリューム管理制御部114は、ステップ3006と同様に、第2のWRITEコマンドを実行する(ステップ3009)。
次に、自動拡張可能仮想ボリューム管理制御部114は、エラー、ワーニング又は正常終了をI/Oコマンド制御部112に応答する(ステップ3010)。この際、ステップ3007とは別のステータス値がI/Oコマンド制御部112に応答される。以上で、コマンド処理が終了する(ステップ3011)。
以上の本発明の第5の実施の形態によれば、差分スナップショットが運用される場合に、NAS101は、ストレージ装置110に対して発行すべき複数のコマンドを一つのコマンドにまとめて発行する。ストレージ装置110のマイクロプログラム111は、その一つのコマンドに従って、複数の処理を順次実行する。その結果、NAS101とストレージ装置110との間のデータ転送量が削減され、性能が向上する。この場合にも、データの書き込み先の運用ボリュームのブロックに物理ブロックが割り当てられていない場合、データを退避する必要がない。このため、マイクロプログラム111は、必要がない退避のためのコピーを省略する。その結果、データの処理性能が向上する。
以上の本発明の第1から第5の実施の形態は、ストレージシステムに広く適用することができる。
本発明の第1の実施の形態のストレージシステムのハードウェア構成を示すブロック図である。 本発明の第1の実施の形態のストレージシステムの機能ブロック図である。 本発明の第1の実施の形態のボリュームプールの構成の説明図である。 本発明の第1の実施の形態において実行される処理の概要の説明図である。 自動拡張可能仮想ボリュームを用いてスナップショット機能を提供するネットワーク接続ストレージ(NAS)システムの従来の構成を説明する機能ブロック図である。 本発明の第1の実施の形態の自動拡張可能仮想ボリューム割り当てビットマップの説明図である。 本発明の第1の実施の形態のI/Oコマンド発行部が起動時に実行する処理を示すフローチャートである。 本発明の第1の実施の形態のI/Oコマンド制御部が割り当てビットマップ取得コマンドを受信した際に実行する割り当てビットマップ取得コマンド処理を示すフローチャートである。 従来のスナップショット処理を示すフローチャートである。 本発明の第1の実施の形態のスナップショット制御部104が実行するスナップショット処理を示すフローチャートである。 本発明の第1の実施の形態の変形例の機能ブロック図である。 本発明の第2の実施の形態のストレージシステムの機能ブロック図である。 本発明の第2の実施の形態の自動拡張可能仮想ボリューム割り当て部分ビットマップの説明図である。 本発明の第2の実施の形態のスナップショット制御部が実行するスナップショット処理を示すフローチャートである。 本発明の第2の実施の形態のI/Oコマンド制御部が読み込みコマンドを受信したときに実行する読み込みコマンド処理を示すフローチャートである。 本発明の第3の実施の形態のファイルシステム制御部の説明図である。 本発明の第3の実施の形態のファイルシステム空きブロックビットマップの説明図である。 本発明の第3の実施の形態において実行される新規ブロック割り当て処理ポリシー設定処理のフローチャートである。 本発明の第3の実施の形態において実行される新規ブロック割り当て処理のフローチャートである。 本発明の第4の実施の形態のストレージシステムの機能ブロック図である。 本発明の第4の実施の形態のスナップショット制御部が実行するスナップショット処理を示すフローチャートである。 本発明の第5の実施の形態の自動拡張可能仮想ボリューム管理制御部が実行するCOPYコマンド処理を示すフローチャートである。 本発明の第5の実施の形態において自動拡張不可仮想ボリュームを対象として発行されるCOPY&WRITEコマンドのフォーマットの一例を示す説明図である。 本発明の第5の実施の形態のCOPY&WRITEコマンドが自動拡張不可仮想ボリューム管理制御部によって実行される場合のフローチャートである。 本発明の第5の実施の形態において自動拡張可能仮想ボリュームを対象として発行されるCOPY&WRITEコマンドのフォーマットの一例を示す説明図である。 本発明の第5の実施の形態のCOPY&WRITEコマンドが自動拡張可能仮想ボリューム管理制御部によって実行される場合のフローチャートである。 本発明の第5の実施の形態において自動拡張不可仮想ボリュームを対象として発行されるCOPY&WRITE&WRITEコマンドのフォーマットの一例を示す説明図である。 本発明の第5の実施の形態のCOPY&WRITE&WRITEコマンドが自動拡張不可仮想ボリューム管理制御部によって実行される場合のフローチャートである。 本発明の第5の実施の形態において自動拡張可能仮想ボリュームを対象として発行されるCOPY&WRITE&WRITEコマンドのフォーマットの一例を示す説明図である。 本発明の第5の実施の形態のCOPY&WRITE&WRITEコマンドが自動拡張可能仮想ボリューム管理制御部によって実行される場合のフローチャートである。
符号の説明
101 ネットワーク接続ストレージ(NAS)
102 クライアント要求受付部
103、103a ファイルシステム制御部
104、104a、104b スナップショット制御部
105、105a、105b I/Oコマンド発行部
106、106b 自動拡張可能仮想ボリューム割り当てビットマップ
110、110a ストレージ装置
111、111a マイクロプログラム
112、112a、112b I/Oコマンド制御部
113 自動拡張不可仮想ボリューム管理制御部
114、114a、114b 自動拡張可能仮想ボリューム管理制御部
115 自動拡張可能仮想ボリューム割り当てテーブル
120 ボリューム群
121 ボリュームプール
151 CPU
152 メモリコントローラ
153 NAS主記憶
154 I/Oコントローラ
155 ネットワークコントローラ
156 ストレージコントローラ
157 ディスクコントローラ
158 ストレージ装置主記憶
159 ディスクドライブ
160 外部ネットワーク
300 ボリューム
301 運用ボリューム
302 差分ボリューム

Claims (24)

  1. ネットワークに接続されるストレージシステムにおいて、
    前記ストレージシステムは、
    前記ネットワークに接続されるインターフェースと、
    前記インターフェースに接続されるプロセッサと、
    前記プロセッサに接続される第1メモリと、
    データを格納する実記憶領域を含むディスクドライブと、
    一つ以上のボリュームと、を備え、
    前記一つ以上のボリュームは、前記実記憶領域が割り当てられる複数のブロックを含み、
    前記複数のブロックは、第1ブロック及び第2ブロックを含み、
    前記インターフェースが、前記第1ブロックを対象としたデータの書き込み要求を、前記ネットワークを介して受信したとき、前記プロセッサは、
    前記第1ブロックに前記実記憶領域が割り当てられているか否かを判定し、
    前記第1ブロックに前記実記憶領域が割り当てられていると判定された場合、前記第1ブロックに格納されているデータの複製を前記第2ブロックに書き込んだ後、前記第1ブロックに前記書き込み要求の対象のデータを書き込み、前記第1ブロックと前記第2ブロックとの対応関係を管理し、
    前記第2ブロックに前記実記憶領域が割り当てられていない場合、前記第2ブロックに前記実記憶領域を割り当て、前記第1ブロックに格納されているデータの複製を書き込み、
    前記第1ブロックに前記実記憶領域が割り当てられていないと判定された場合、前記第1ブロックに前記実記憶領域を割り当て、前記書き込み要求の対象のデータを書き込み、前記第1ブロックとダミーデータブロックとの対応関係を管理することを特徴とするストレージシステム。
  2. 前記ストレージシステムは、
    前記インターフェース、前記プロセッサ及び前記第1メモリを含む計算機と、
    前記ディスクドライブ、前記ディスクドライブを制御するディスク制御部及び前記ディスク制御部に接続される第2メモリを含むストレージ装置と、を備え、
    前記第2メモリは、前記各ブロックと前記実記憶領域との対応関係を示す情報を含む割り当てテーブルを格納し、
    前記一つ以上のボリュームは、前記第1ブロックを含む運用ボリュームと、前記第2ブロックを含む差分ボリュームと、を含み、
    前記プロセッサは、
    前記割り当てテーブルに基づいて、前記各ブロックに前記実記憶領域が割り当てられているか否かを示す情報を含む割り当て情報を作成し、
    前記割り当て情報に基づいて、前記第1ブロックに前記実記憶領域が割り当てられているか否かを判定することを特徴とする請求項1に記載のストレージシステム。
  3. 前記ストレージシステムは、
    前記インターフェース、前記プロセッサ及び前記第1メモリを含む計算機と、
    前記ディスクドライブ、前記ディスクドライブを制御するディスク制御部及び前記ディスク制御部に接続される第2メモリを含むストレージ装置と、を備え、
    前記第2メモリは、前記各ブロックと前記実記憶領域との対応関係を示す情報を含む割り当てテーブルを格納し、
    前記一つ以上のボリュームは、前記第1ブロックを含む運用ボリュームと、前記第2ブロックを含む差分ボリュームと、を含み、
    前記プロセッサは、前記第1ブロックを対象とする読み込み要求を前記ストレージ装置に対して発行し、
    前記各ブロックは、ブロックアドレスによって識別され、
    前記ブロックアドレスは、前記第1ブロックを識別する第1ブロックアドレス、及び、前記第1ブロックアドレスに連続する第2ブロックアドレスを含み、
    前記ディスク制御部は、
    前記割り当てテーブルに基づいて、前記第1ブロックに前記実記憶領域が割り当てられているか否かを判定し、
    前記第1ブロックに前記実記憶領域が割り当てられていないと判定された場合、前記第2ブロックアドレスによって識別されるブロックに前記実記憶領域が割り当てられているか否かを示す情報を前記計算機に送信し、
    前記プロセッサは、前記第2ブロックアドレスによって識別されるブロックを対象とする書き込み要求を受信した場合、前記ディスク制御部から送信された情報に基づいて、前記第2ブロックアドレスによって識別されるブロックに前記実記憶領域が割り当てられているか否かを判定することを特徴とする請求項1に記載のストレージシステム。
  4. 前記第1メモリは、前記プロセッサによって実行されるアプリケーションプログラムと、ポリシー情報と、を保持し、
    前記プロセッサは、
    前記ポリシー情報の値に基づいて、前記アプリケーションプログラムによって使用されていない前記ブロックのうち、前記実記憶領域が割り当てられている前記ブロック、又は、前記実記憶領域が割り当てられていない前記ブロックを選択し、
    前記選択されたブロックを前記アプリケーションプログラムに使用させることを特徴とする請求項1に記載のストレージシステム。
  5. 前記プロセッサは、
    前記ポリシー情報の変更要求を受信し、
    前記受信した変更要求に基づいて、前記ポリシー情報の値を変更することを特徴とする請求項4に記載のストレージシステム。
  6. 前記プロセッサは、
    前記第1ブロックのアドレスと前記第2ブロックのアドレスとの対応関係を示すスナップショット管理情報をいずれかの前記ボリュームに格納することによって前記第1ブロックと前記第2ブロックとの対応関係を管理し、
    前記第1ブロックのアドレスと前記ダミーデータブロックのアドレスとの対応関係を示す前記スナップショット管理情報をいずれかの前記ボリュームに格納することによって前記第1ブロックと前記ダミーデータブロックとの対応関係を管理することを特徴とする請求項1に記載のストレージシステム。
  7. 計算機に接続されるストレージ装置において、
    前記計算機は、プロセッサと、前記プロセッサに接続される第1メモリと、を備え、
    前記ストレージ装置は、
    データを格納する実記憶領域を含むディスクドライブと、前記ディスクドライブを制御するディスク制御部と、前記ディスク制御部に接続される第2メモリと、一つ以上のボリュームと、を備え、
    前記一つ以上のボリュームは、前記実記憶領域が割り当てられる複数のブロックを含み、
    前記複数のブロックは、第1ブロック及び第2ブロックを含み、
    前記第2メモリは、前記各ブロックと前記実記憶領域との対応関係を示す情報を含む割り当てテーブルを格納し、
    前記ディスク制御部は、前記計算機から所定のコマンドを受信すると、
    前記コマンドによって指定された前記第1ブロックに前記実記憶領域が割り当てられているか否かを前記割り当てテーブルに基づいて判定し、
    前記指定された第1ブロックに前記実記憶領域が割り当てられていると判定された場合、前記指定された第1ブロックに格納されているデータの複製を、前記コマンドによって指定された前記第2ブロックに書き込み、前記第1ブロックと前記第2ブロックとの対応関係を管理し、
    前記指定された第2ブロックに前記実記憶領域が割り当てられていない場合、前記指定された第2ブロックに前記実記憶領域を割り当て、前記指定された第1ブロックに格納されているデータの複製を書き込み、
    前記指定された第1ブロックに前記実記憶領域が割り当てられていないと判定された場合、前記指定された第1ブロックに格納されているデータの複製を前記指定された第2ブロックに書き込まなかったことを前記計算機に応答し、前記第1ブロックとダミーデータブロックとの対応関係を管理することを特徴とするストレージ装置。
  8. 前記一つ以上のボリュームは、前記計算機から受信したデータが書き込まれるブロックを含む運用ボリュームと、前記計算機から受信したデータが書き込まれる前に前記ブロックに格納されていたデータの複製が書き込まれる差分ボリュームと、を含み、
    前記第1ブロックは、前記運用ボリュームに含まれ、
    前記第2ブロックは、前記差分ボリュームに含まれることを特徴とする請求項7に記載のストレージ装置。
  9. 前記指定された第1ブロックに前記実記憶領域が割り当てられていると判定された場合、前記コマンドを受信した前記ディスク制御部は、さらに、前記データの複製の書き込み先を識別する情報を、前記差分ボリューム内の前記コマンドによって指定された位置に書き込むことを特徴とする請求項8に記載のストレージ装置。
  10. 前記指定された第1ブロックに前記実記憶領域が割り当てられていないと判定された場合、前記コマンドを受信した前記ディスク制御部は、さらに、前記差分ボリューム内の所定の位置を示す情報を、前記差分ボリューム内の前記コマンドによって指定された位置に書き込むことを特徴とする請求項9に記載のストレージ装置。
  11. 前記コマンドを受信した前記ディスク制御部は、さらに、前記コマンドによって指定された書き込み要求の対象のデータを前記指定された第1ブロックに書き込むことを特徴とする請求項9に記載のストレージ装置。
  12. 前記ディスク制御部は、
    前記第1ブロックのアドレスと前記第2ブロックのアドレスとの対応関係を示すスナップショット管理情報をいずれかの前記ボリュームに格納することによって前記第1ブロックと前記第2ブロックとの対応関係を管理し、
    前記第1ブロックのアドレスと前記ダミーデータブロックのアドレスとの対応関係を示す前記スナップショット管理情報をいずれかの前記ボリュームに格納することによって前記第1ブロックと前記ダミーデータブロックとの対応関係を管理することを特徴とする請求項7に記載のストレージ装置。
  13. ネットワークに接続されるストレージシステムの制御方法において、
    前記ストレージシステムは、
    前記ネットワークに接続されるインターフェースと、
    前記インターフェースに接続されるプロセッサと、
    前記プロセッサに接続される第1メモリと、
    データを格納する実記憶領域を含むディスクドライブと、
    一つ以上のボリュームと、を備え、
    前記一つ以上のボリュームは、前記実記憶領域が割り当てられる複数のブロックを含み、
    前記複数のブロックは、第1ブロック及び第2ブロックを含み、
    前記インターフェースが、前記第1ブロックを対象としたデータの書き込み要求を、前記ネットワークを介して受信したとき、前記プロセッサは、
    前記第1ブロックに前記実記憶領域が割り当てられているか否かを判定し、
    前記第1ブロックに前記実記憶領域が割り当てられていると判定された場合、前記第1ブロックに格納されているデータの複製を前記第2ブロックに書き込んだ後、前記第1ブロックに前記書き込み要求の対象のデータを書き込み、前記第1ブロックと前記第2ブロックとの対応関係を管理し、
    前記第2ブロックに前記実記憶領域が割り当てられていない場合、前記第2ブロックに前記実記憶領域を割り当て、前記第1ブロックに格納されているデータの複製を書き込み、
    前記第1ブロックに前記実記憶領域が割り当てられていないと判定された場合、前記第1ブロックに前記実記憶領域を割り当て、前記書き込み要求の対象のデータを書き込み、前記第1ブロックとダミーデータブロックとの対応関係を管理することを特徴とする方法。
  14. 前記ストレージシステムは、
    前記インターフェース、前記プロセッサ及び前記第1メモリを含む計算機と、
    前記ディスクドライブ、前記ディスクドライブを制御するディスク制御部及び前記ディスク制御部に接続される第2メモリを含むストレージ装置と、を備え、
    前記第2メモリは、前記各ブロックと前記実記憶領域との対応関係を示す情報を含む割り当てテーブルを格納し、
    前記一つ以上のボリュームは、前記第1ブロックを含む運用ボリュームと、前記第2ブロックを含む差分ボリュームと、を含み、
    前記プロセッサは、
    前記割り当てテーブルに基づいて、前記各ブロックに前記実記憶領域が割り当てられているか否かを示す情報を含む割り当て情報を作成し、
    前記割り当て情報に基づいて、前記第1ブロックに前記実記憶領域が割り当てられているか否かを判定することを特徴とする請求項13に記載の方法。
  15. 前記ストレージシステムは、
    前記インターフェース、前記プロセッサ及び前記第1メモリを含む計算機と、
    前記ディスクドライブ、前記ディスクドライブを制御するディスク制御部及び前記ディスク制御部に接続される第2メモリを含むストレージ装置と、を備え、
    前記第2メモリは、前記各ブロックと前記実記憶領域との対応関係を示す情報を含む割り当てテーブルを格納し、
    前記一つ以上のボリュームは、前記第1ブロックを含む運用ボリュームと、前記第2ブロックを含む差分ボリュームと、を含み、
    前記プロセッサは、前記第1ブロックを対象とする読み込み要求を前記ストレージ装置に対して発行し、
    前記各ブロックは、ブロックアドレスによって識別され、
    前記ブロックアドレスは、前記第1ブロックを識別する第1ブロックアドレス、及び、前記第1ブロックアドレスに連続する第2ブロックアドレスを含み、
    前記ディスク制御部は、
    前記割り当てテーブルに基づいて、前記第1ブロックに前記実記憶領域が割り当てられているか否かを判定し、
    前記第1ブロックに前記実記憶領域が割り当てられていないと判定された場合、前記第2ブロックアドレスによって識別されるブロックに前記実記憶領域が割り当てられているか否かを示す情報を前記計算機に送信し、
    前記プロセッサは、前記第2ブロックアドレスによって識別されるブロックを対象とする書き込み要求を受信した場合、前記ディスク制御部から送信された情報に基づいて、前記第2ブロックアドレスによって識別されるブロックに前記実記憶領域が割り当てられているか否かを判定することを特徴とする請求項13に記載の方法。
  16. 前記第1メモリは、前記プロセッサによって実行されるアプリケーションプログラムと、ポリシー情報と、を保持し、
    前記プロセッサは、
    前記ポリシー情報の値に基づいて、前記アプリケーションプログラムによって使用されていない前記ブロックのうち、前記実記憶領域が割り当てられている前記ブロック、又は、前記実記憶領域が割り当てられていない前記ブロックを選択し、
    前記選択されたブロックを前記アプリケーションプログラムに使用させることを特徴とする請求項13に記載の方法。
  17. 前記プロセッサは、
    前記ポリシー情報の変更要求を受信し、
    前記受信した変更要求に基づいて、前記ポリシー情報の値を変更することを特徴とする請求項16に記載の方法。
  18. 前記プロセッサは、
    前記第1ブロックのアドレスと前記第2ブロックのアドレスとの対応関係を示すスナップショット管理情報をいずれかの前記ボリュームに格納することによって前記第1ブロックと前記第2ブロックとの対応関係を管理し、
    前記第1ブロックのアドレスと前記ダミーデータブロックのアドレスとの対応関係を示す前記スナップショット管理情報をいずれかの前記ボリュームに格納することによって前記第1ブロックと前記ダミーデータブロックとの対応関係を管理することを特徴とする請求項13に記載の方法。
  19. 計算機に接続されるストレージ装置の制御方法において、
    前記計算機は、プロセッサと、前記プロセッサに接続される第1メモリと、を備え、
    前記ストレージ装置は、
    データを格納する実記憶領域を含むディスクドライブと、前記ディスクドライブを制御するディスク制御部と、前記ディスク制御部に接続される第2メモリと、一つ以上のボリュームと、を備え、
    前記一つ以上のボリュームは、前記実記憶領域が割り当てられる複数のブロックを含み、
    前記複数のブロックは、第1ブロック及び第2ブロックを含み、
    前記第2メモリは、前記各ブロックと前記実記憶領域との対応関係を示す情報を含む割り当てテーブルを格納し、
    前記ディスク制御部は、前記計算機から所定のコマンドを受信すると、
    前記コマンドによって指定された前記第1ブロックに前記実記憶領域が割り当てられているか否かを前記割り当てテーブルに基づいて判定し、
    前記指定された第1ブロックに前記実記憶領域が割り当てられていると判定された場合、前記指定された第1ブロックに格納されているデータの複製を、前記コマンドによって指定された第2ブロックに書き込み、前記第1ブロックと前記第2ブロックとの対応関係を管理し、
    前記指定された第2ブロックに前記実記憶領域が割り当てられていない場合、前記指定された第2ブロックに前記実記憶領域を割り当て、前記指定された第1ブロックに格納されているデータの複製を書き込み、
    前記指定された第1のブロックに前記実記憶領域が割り当てられていないと判定された場合、前記指定された第1ブロックに格納されているデータの複製を前記指定された第2ブロックに書き込まなかったことを前記計算機に応答し、前記第1ブロックとダミーデータブロックとの対応関係を管理することを特徴とする方法。
  20. 前記一つ以上のボリュームは、前記計算機から受信したデータが書き込まれるブロックを含む運用ボリュームと、前記計算機から受信したデータが書き込まれる前に前記ブロックに格納されていたデータの複製が書き込まれる差分ボリュームと、を含み、
    前記第1ブロックは、前記運用ボリュームに含まれ、
    前記第2ブロックは、前記差分ボリュームに含まれることを特徴とする請求項19に記載の方法。
  21. 前記指定された第1ブロックに前記実記憶領域が割り当てられていると判定された場合、前記コマンドを受信した前記ディスク制御部は、さらに、前記データの複製の書き込み先を識別する情報を、前記差分ボリューム内の前記コマンドによって指定された位置に書き込むことを特徴とする請求項20に記載の方法。
  22. 前記指定された第1ブロックに前記実記憶領域が割り当てられていないと判定された場合、前記コマンドを受信した前記ディスク制御部は、さらに、前記差分ボリューム内の所定の位置を示す情報を、前記差分ボリューム内の前記コマンドによって指定された位置に書き込むことを特徴とする請求項21に記載の方法。
  23. 前記コマンドを受信した前記ディスク制御部は、さらに、前記コマンドによって指定された書き込み要求の対象のデータを前記指定された第1ブロックに書き込むことを特徴とする請求項22に記載の方法。
  24. 前記ディスク制御部は、
    前記第1ブロックのアドレスと前記第2ブロックのアドレスとの対応関係を示すスナップショット管理情報をいずれかの前記ボリュームに格納することによって前記第1ブロックと前記第2ブロックとの対応関係を管理し、
    前記第1ブロックのアドレスと前記ダミーデータブロックのアドレスとの対応関係を示す前記スナップショット管理情報をいずれかの前記ボリュームに格納することによって前記第1ブロックと前記ダミーデータブロックとの対応関係を管理することを特徴とする請求項19に記載の方法。
JP2006071713A 2006-03-15 2006-03-15 自動拡張可能なボリュームに対して最適なi/oコマンドを発行するストレージシステム及びその制御方法 Expired - Fee Related JP4884041B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006071713A JP4884041B2 (ja) 2006-03-15 2006-03-15 自動拡張可能なボリュームに対して最適なi/oコマンドを発行するストレージシステム及びその制御方法
US11/434,319 US7631156B2 (en) 2006-03-15 2006-05-10 Storage system issuing optimum I/O command to allocation-on-use enabled volume and controlling method therefor
EP07250971A EP1835392A3 (en) 2006-03-15 2007-03-08 Storage system issuing optimum I/O command to allocation-on-use enabled volume and controlling method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006071713A JP4884041B2 (ja) 2006-03-15 2006-03-15 自動拡張可能なボリュームに対して最適なi/oコマンドを発行するストレージシステム及びその制御方法

Publications (2)

Publication Number Publication Date
JP2007249573A JP2007249573A (ja) 2007-09-27
JP4884041B2 true JP4884041B2 (ja) 2012-02-22

Family

ID=38116167

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006071713A Expired - Fee Related JP4884041B2 (ja) 2006-03-15 2006-03-15 自動拡張可能なボリュームに対して最適なi/oコマンドを発行するストレージシステム及びその制御方法

Country Status (3)

Country Link
US (1) US7631156B2 (ja)
EP (1) EP1835392A3 (ja)
JP (1) JP4884041B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4464378B2 (ja) * 2006-09-05 2010-05-19 株式会社日立製作所 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法
US20080140963A1 (en) * 2006-12-11 2008-06-12 Thomason Ronald G Methods and systems for storage system generation and use of differential block lists using copy-on-write snapshots
WO2010095166A1 (en) * 2009-02-17 2010-08-26 Hitachi, Ltd. Storage controller and method of controlling storage controller
US8572338B1 (en) * 2010-02-22 2013-10-29 Symantec Corporation Systems and methods for creating space-saving snapshots
US8499012B1 (en) * 2010-06-18 2013-07-30 Applied Micro Circuits Corporation System and method for attached storage stacking
US8745344B2 (en) 2011-07-01 2014-06-03 Hitachi, Ltd. Storage system using thin provisioning pool and snapshotting, and controlling method of the same
EP2810206A4 (en) * 2012-01-31 2015-11-11 Hewlett Packard Development Co SELECTION OF A CONFIGURATION CONNECTION FOR THE RECEPTION OF ACTIVATION DATA
WO2014087497A1 (ja) * 2012-12-05 2014-06-12 株式会社日立製作所 ストレージ装置及びその制御方法
WO2016046943A1 (ja) * 2014-09-25 2016-03-31 株式会社日立製作所 ストレージ装置およびストレージ装置制御方法
CN104360953B (zh) * 2014-10-16 2018-01-23 华为技术有限公司 数据拷贝方法及装置
US9927980B1 (en) * 2016-03-31 2018-03-27 EMC IP Holding Company LLC Accessing point in time versions of a logical device in connection with I/O operations
US11704035B2 (en) 2020-03-30 2023-07-18 Pure Storage, Inc. Unified storage on block containers

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6604118B2 (en) * 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
US6473775B1 (en) * 2000-02-16 2002-10-29 Microsoft Corporation System and method for growing differential file on a base volume of a snapshot
US7072916B1 (en) * 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
JP4175788B2 (ja) 2001-07-05 2008-11-05 株式会社日立製作所 ボリューム制御装置
US6792518B2 (en) * 2002-08-06 2004-09-14 Emc Corporation Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies
US7055010B2 (en) * 2002-11-06 2006-05-30 Synology Inc. Snapshot facility allowing preservation of chronological views on block drives
US7003628B1 (en) * 2002-12-27 2006-02-21 Unisys Corporation Buffered transfer of data blocks between memory and processors independent of the order of allocation of locations in the buffer
JP2004265110A (ja) * 2003-02-28 2004-09-24 Hitachi Ltd メタデータ配置方法、プログラムおよびディスク装置
JP4394467B2 (ja) * 2004-01-29 2010-01-06 株式会社日立製作所 ストレージシステム、サーバ装置及び先行コピーデータ生成方法
JP4292882B2 (ja) 2003-03-18 2009-07-08 株式会社日立製作所 複数のスナップショット維持方法及びサーバ装置及びストレージ装置
US7814128B2 (en) * 2003-05-30 2010-10-12 Symantec Operating Corporation Multi-volume file support
JP2007502470A (ja) * 2003-08-14 2007-02-08 コンペレント・テクノロジーズ 仮想ディスク・ドライブのシステムおよび方法
US7035881B2 (en) * 2003-09-23 2006-04-25 Emc Corporation Organization of read-write snapshot copies in a data storage system
JP4646526B2 (ja) * 2004-02-18 2011-03-09 株式会社日立製作所 記憶制御システム及び同システムの制御方法
JP2005275494A (ja) * 2004-03-23 2005-10-06 Hitachi Ltd ストレージシステム及びストレージシステムのリモートコピー方法
JP2006113927A (ja) 2004-10-18 2006-04-27 Hitachi Ltd ストレージ装置、ストレージシステム、スナップショット維持方法、およびコマンド
JP4945118B2 (ja) * 2005-11-14 2012-06-06 株式会社日立製作所 記憶容量を効率的に使用する計算機システム
US7574560B2 (en) * 2006-01-03 2009-08-11 Emc Corporation Methods, systems, and computer program products for dynamic mapping of logical units in a redundant array of inexpensive disks (RAID) environment

Also Published As

Publication number Publication date
JP2007249573A (ja) 2007-09-27
US20070220225A1 (en) 2007-09-20
EP1835392A2 (en) 2007-09-19
US7631156B2 (en) 2009-12-08
EP1835392A3 (en) 2010-01-20

Similar Documents

Publication Publication Date Title
JP4884041B2 (ja) 自動拡張可能なボリュームに対して最適なi/oコマンドを発行するストレージシステム及びその制御方法
US8103843B2 (en) Snapshot system
US8751765B2 (en) Computer system, storage system and method for saving storage area by integrating same data
JP4961319B2 (ja) 仮想ボリュームにおける仮想領域に動的に実領域を割り当てるストレージシステム
US20040103104A1 (en) Snapshot creating method and apparatus
JP2008015768A (ja) 記憶システム並びにこれを用いたデータの管理方法
JP4762289B2 (ja) 特定パターンデータが格納される仮想ボリュームへの記憶領域の割り当てを制御するストレージシステム
JP2007133471A (ja) ストレージ装置及びスナップショットのリストア方法
JP5317807B2 (ja) ファイル制御システムおよびそれに用いるファイル制御計算機
CN113868192B (zh) 一种数据存储设备、方法与分布式数据存储系统
JP5944502B2 (ja) 計算機システム及び制御方法
JP4561168B2 (ja) データ処理システムおよび方法並びにその処理プログラム
US7853769B2 (en) Computer system for managing number of writes for storage medium and control method therefor
JP2005301499A (ja) ディスクアレイ装置及びディスクアレイ装置の制御方法
US20110238915A1 (en) Storage system
US7676644B2 (en) Data processing system, storage apparatus and management console
JP4394467B2 (ja) ストレージシステム、サーバ装置及び先行コピーデータ生成方法
US11531474B1 (en) Storage system and data replication method in storage system
US20140208023A1 (en) Storage system and control method for storage system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080819

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110303

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111206

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141216

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees