JP7313321B2 - ストレージシステムおよびデータ管理方法 - Google Patents

ストレージシステムおよびデータ管理方法 Download PDF

Info

Publication number
JP7313321B2
JP7313321B2 JP2020141524A JP2020141524A JP7313321B2 JP 7313321 B2 JP7313321 B2 JP 7313321B2 JP 2020141524 A JP2020141524 A JP 2020141524A JP 2020141524 A JP2020141524 A JP 2020141524A JP 7313321 B2 JP7313321 B2 JP 7313321B2
Authority
JP
Japan
Prior art keywords
controller
data
program
storage area
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.)
Active
Application number
JP2020141524A
Other languages
English (en)
Other versions
JP2022037404A (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 JP2020141524A priority Critical patent/JP7313321B2/ja
Priority to CN202110191209.0A priority patent/CN114115705A/zh
Priority to US17/194,579 priority patent/US11455105B2/en
Publication of JP2022037404A publication Critical patent/JP2022037404A/ja
Application granted granted Critical
Publication of JP7313321B2 publication Critical patent/JP7313321B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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/0647Migration mechanisms
    • 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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

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

Description

本発明は、概して、コントローラ間の通信に関する。
データへのアクセスに対する処理性能が要求されるストレージシステムでは、複数のコントローラに処理を分散することで性能向上が図られる。かかるストレージシステムでは、特定のコントローラへの負荷集中による性能低下を防ぎ、コントローラ資源を最大限に活用するために、負荷を均等化する必要がある。また、アクセス処理における通信オーバーヘッドの増大を防ぐために、可能な限りコントローラ間の処理の依存関係を排除し、アクセス処理を各コントローラの内部で完結する必要がある。
そのため、複数のコントローラを備えるストレージシステムでは、まず各コントローラに対して、例えば論理ユニット(LU)のように、アクセス処理が互いに非依存となる単位(以下、総称してLUと記述)で、各コントローラの負荷が均等になるようにアクセス処理を割り当てることが必要である。LUは、アクセス元であるホストから独立したデバイス、記憶領域として認識されるので、LUのそれぞれに対して独立してアクセス処理が実行可能となる。つまり、各LUのアクセス処理を実行するコントローラを1つに固定することで、コントローラ間の通信によるオーバーヘッドを回避可能である。
また、LUのアクセス処理に加えて、各コントローラが管理(データの書き込みおよびデータの整列)する記憶領域の分離も併せて必要である。特に、ログ構造のようにデータを動的に配置するストレージシステムでは、複数のコントローラから共有の記憶領域にデータを格納する場合に排他制御に伴うコントローラ間の通信が発生する。そこで、各コントローラが書き込みを行う記憶領域を分離することで、コントローラ間の排他制御を行わずにデータの動的な配置が可能である。
この点、特許文献1では、ストレージを構成する複数のコントローラが共有可能な記憶領域について、各コントローラに対して管理、使用する記憶領域の割当を行い、記憶領域の各部にアクセスを行うコントローラが単一となるように、複数コントローラからの記憶領域の共有を回避することでコントローラ間の通信による性能低下を回避する方法が示されている。加えて、特許文献1では、複数コントローラを持つストレージにおいて、各コントローラに対する管理、使用する記憶領域の割当の変更、およびコントローラ間におけるLUのアクセス処理の移動により、増設したストレージのコントローラに処理を割り当てる方法が示されている。
国際公開第2014/147657号
アクセス負荷が変動するストレージシステムでは、コントローラ間の負荷が均等化された状態を維持するために、アクセス負荷の変動に応じたアクセス処理の割当の変更が発生する。LUを単位としてアクセス処理を割り当てる場合、低負荷のコントローラが、高負荷のコントローラからLUのアクセス処理を引き継ぐ必要がある。このとき、LUのアクセス処理の移動後も、LUのアクセス処理および記憶領域管理におけるコントローラ間の処理の依存関係を可能な限り排除された状態を維持し、通信オーバーヘッドを最小化することが不可欠である。
一方で、LUのアクセス処理をコントローラ間で移動した場合、LUのアクセス処理を行うコントローラと、記憶領域管理を行うコントローラとの分離に伴う、コントローラ間の処理の依存関係が発生する。この依存関係を解消するためには、LUが使用する記憶領域管理の権限を併せてコントローラ間で移動することが必要である。
しかしながら、移動元のコントローラがアクセス処理を行うLUのデータが記憶領域に混在する場合、記憶領域管理の権限の移動は、困難である。例えば、記憶媒体に用いられるSSD(Solid State Drive)の性能低下、寿命消費の原因となるランダムWriteの防止を目的とした、ログ構造による記憶領域管理では、各LUに対するWriteデータを同一の記憶領域に集約して連続的に格納することが必要である。また、ストレージシステムが重複排除機能を備える場合、データ削減の効果を高めて容量効率の向上を図るために、LU間のデータの重複排除が求められる。このとき、複数のLUがデータを共有するために、同一の記憶領域を参照する必要がある。そのため、LUのアクセス処理の移動により必ずコントローラ間の処理の依存関係が発生することになる。
つまり、複数のコントローラが記憶領域を共有するストレージシステムにおいて、共有される記憶領域内の管理、割り当ての単位となる各部分に対して複数LUのデータが混在した状態で格納されることで、LUのアクセス処理の移動に伴ってコントローラ間の処理の依存関係が発生し、通信が多く必要となることが課題である。ログ構造のようにデータを動的に配置する記憶領域管理では、LUのアクセス処理におけるデータ配置の決定、変更のために、コントローラ間の通信および排他制御が発生して性能低下の原因となる。また、記憶領域管理を行うコントローラは、ガベージコレクション、デフラグメント(以下、これらを総称してGCと記述)を行い、格納されたデータの整列を行う必要がある。この整列に伴い、記憶領域を管理するコントローラから、LUのアクセス処理を行うコントローラに対する整列後のデータ配置情報の通知、および排他制御が発生して性能低下の原因となる。
この点、特許文献1では、各LUのデータが互いに異なる記憶領域に分離して格納されることを前提としており、記憶領域を共有するLUに関するアクセス処理の移動を想定していない。つまり、特許文献1には、ストレージにおいてログ構造による記憶領域管理やデータの重複排除を行った場合にLUのアクセス処理をコントローラ間で移動する方法は示されていない。
本発明は、以上の点を考慮してなされたもので、コントローラ間の処理の依存関係を極力排除し得るストレージシステム等を提案しようとするものである。
かかる課題を解決するため本発明においては、1以上の記憶媒体と、ホストに対してストレージ機能を提供する複数のコントローラとを備え、前記複数のコントローラが前記記憶媒体の記憶領域を共有するストレージシステムであって、各コントローラには、データの書き込みとデータの整列とを行う前記記憶領域が割り当てられ、各コントローラは、コントローラに割り当てられている論理領域のデータに対するアクセス処理の権限をコントローラ間で移動し、第1のコントローラから第2のコントローラへ前記アクセス処理の権限を移動させることによって、複数のコントローラの論理領域にかかるデータが存在することとなった第1の記憶領域について、前記第1のコントローラおよび前記第2のコントローラは、Write要求にかかる更新後データを自コントローラに割り当てられている記憶領域に書き込むとともに、前記第1の記憶領域の更新前データを削除し、データを整列する整列処理にて、前記第1の記憶領域の自コントローラがアクセス処理の権限を有するデータを、自コントローラに割り当てられている他の記憶領域に移動することを、前記第1の記憶領域の割当を引き継ぎながら行うようにした。
上記構成では、第1の記憶領域の自コントローラがアクセス処理の権限を有するデータを、自コントローラに割り当てられている他の記憶領域に移動することを、第1の記憶領域の割当を引き継ぎながら行われる。よって、コントローラ間のアクセス処理の権限の移動において、各アクセス処理の対象のデータが記憶領域内に混在する場合であってもコントローラ間の処理の依存関係の低減を実現することができる。その結果、ストレージシステムにおけるコントローラの増設による性能の向上、コントローラ資源の利用効率の向上等を図ることができる。
本発明によれば、コントローラ間の通信を適切に行うことができる。上記以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。
第1の実施の形態によるストレージシステムに係る構成の一例を示す図である。 第1の実施の形態によるコントローラに係る構成の一例を示す図である。 第1の実施の形態による格納データの一例を示す図である。 第1の実施の形態によるプログラム領域の一例を示す図である。 第1の実施の形態によるメタデータ領域の一例を示す図である。 第1の実施の形態による管理ノードに係る構成の一例を示す図である。 第1の実施の形態によるフローチャートの一例を示す図である。 第1の実施の形態によるフローチャートの一例を示す図である。 第1の実施の形態によるフローチャートの一例を示す図である。 第1の実施の形態によるフローチャートの一例を示す図である。 第1の実施の形態によるフローチャートの一例を示す図である。 第1の実施の形態によるフローチャートの一例を示す図である。 第1の実施の形態によるフローチャートの一例を示す図である。 第2の実施の形態によるプログラム領域の一例を示す図である。 第2の実施の形態による管理ノードに係る構成の一例を示す図である。 第2の実施の形態によるフローチャートの一例を示す図である。 第2の実施の形態によるフローチャートの一例を示す図である。 第3の実施の形態によるプログラム領域の一例を示す図である。 第3の実施の形態によるメタデータ領域の一例を示す図である。 第3の実施の形態によるフローチャートの一例を示す図である。 第3の実施の形態によるフローチャートの一例を示す図である。 第3の実施の形態によるフローチャートの一例を示す図である。 第3の実施の形態によるフローチャートの一例を示す図である。 第3の実施の形態によるフローチャートの一例を示す図である。
(1)第1の実施の形態
以下、本発明の一実施の形態を詳述する。本実施の形態では、ストレージ機能のアクセス処理および記憶領域管理をコントローラ間で移動し、分散処理を行う方法に関して説明する。なお、本実施の形態は、本発明における請求範囲を限定するものではなく、実施の形態において説明を行う要素の全てが本発明における課題の解決に必要であるとは限らない。
本実施の形態に係るストレージシステムでは、複数のコントローラが記憶領域を共有する環境において、アクセス処理の権限および記憶領域管理の権限をコントローラ間で移動し、分散処理を行う。
より具体的には、本ストレージシステムは、記憶領域を共有する各コントローラに対して、使用可能な記憶領域(管理対象の記憶領域)を事前に配分する。まず、LUのアクセス処理を行うコントローラの移動において、LUに含まれる各データと記憶領域における格納先を示すアドレスとのマッピング情報を移動先のコントローラにコピーして引き継ぐ。LUの移動先のコントローラは、ホストからのRead要求に対して、引き継いだマッピング情報を参照して、移動元のコントローラが管理する記憶領域に格納されたデータを直接読み出す。また、LUの移動先のコントローラは、ホストからWrite要求されたデータに対して、アクセス処理を実行している移動先のコントローラ(自コントローラ)が管理する記憶領域から格納先を決定して、データを格納し、LUのマッピング情報を更新する。LUの移動先のコントローラは、新規のデータの格納により不要になった更新前のデータの無効化をWrite要求の処理と非同期に行うことで、無効化の対象のデータがLUの移動元のコントローラが管理する記憶領域に格納されている場合であっても、通信のオーバーヘッドによる影響を隠蔽できる。
各コントローラは、管理している記憶領域のGC処理を行う場合、GC処理の対象となった記憶領域に格納されたデータから、GC処理を行うコントローラ自身がアクセス処理を担当するLUに含まれるものを抽出して、コントローラ自身の管理する記憶領域に移動および整列し、LUのマッピング情報を更新する。このとき、更新対象のマッピング情報は、同一コントローラ内に存在するため、コントローラ間の通信も排他制御も発生しない。そして、GC処理を行ったコントローラは、GC処理の対象の記憶領域に残るデータが含まれるLUのアクセス処理を行うコントローラから1つを選択して、記憶領域管理の権限と共にGC処理を、選択したコントローラに引き継ぐ。当該記憶領域のGC処理を引き継いだコントローラは、元のコントローラと同様に処理を行う。GC処理の対象のデータがなくなるまで、コントローラ間で、上記引き継ぎが行われる。また、GC処理の途中の記憶領域の引継ぎにより使用可能な記憶領域が減少したコントローラに対しては、共有の記憶領域から新たに未割当の記憶領域が配分されることで空き容量の不足が回避される。
次に、本発明の実施の形態を図面に基づいて説明する。
なお、以下の説明では、図面において同一要素については、同じ番号を付し、説明を適宜省略する。また、同種の要素を区別しないで説明する場合には、枝番を含む参照符号のうちの共通部分(枝番を除く部分)を使用し、同種の要素を区別して説明する場合は、枝番を含む参照符号を使用することがある。例えば、コントローラを特に区別しないで説明する場合には、「コントローラ101」と記載し、個々のコントローラを区別して説明する場合には、「コントローラ101a」、「コントローラ101b」のように記載することがある。
図1において、100は、全体として第1の実施の形態によるストレージシステムを示す。
図1は、ストレージシステム100に係る構成の一例を示す図である。
ストレージシステム100は、コントローラ101a、101b(コントローラノード)と、記憶媒体ノード102と、管理ノード103と、ネットワーク104とを含んで構成される。ネットワーク104は、コントローラ101a、101b、記憶媒体ノード102、管理ノード103を接続する。また、コントローラ101a、101bは、ホスト105と接続される。
コントローラ101a、101bは、ホスト105に対して記憶領域へのアクセスを提供する。記憶領域は、例えば、記憶領域にマッピングされたLU等の形式でホスト105に対して提供される。コントローラ101a、101bは、ホスト105に対して複数のLUを提供してもよい。また、各LUに対するアクセスは、単一のコントローラ101が提供する。
記憶媒体ノード102は、LUの記憶領域のマッピング先である記憶媒体106を備え、コントローラ101a、101bに対してアクセスを提供する。コントローラ101a、101bは、記憶媒体ノード102の記憶媒体106を共有し、いずれのコントローラ101からも他コントローラ101を経由せずに、記憶媒体106に対して直接アクセスが可能である。
管理ノード103は、ストレージシステム100が提供する各LUのアクセス処理を行うコントローラ101と、記憶媒体ノード102に接続された記憶媒体106によって構成される各記憶領域のコントローラ101に対する割り当て状況とを管理する。
ネットワーク104は、コントローラ101a、101b、記憶媒体ノード102、および管理ノード103を互いに接続する。ネットワーク104は、コントローラ101a、101bの通信を行う。例えば、ネットワーク104は、コントローラ101a、101bから記憶媒体ノード102の記憶媒体106に対するアクセス要求および当該アクセス要求に対応するデータ(以下、アクセス要求データと記述)の転送を行う。なお、アクセス要求データは、Read要求に対応するReadデータまたはWrite要求に対応するWriteデータである。
ホスト105は、コントローラ101a、101bが提供するLUに対するアクセス要求を行う。
なお、コントローラ101a、101b以外に、追加のコントローラ101がネットワーク104に接続され、各コントローラ101が記憶媒体ノード102の記憶媒体106を共有してもよい。また、記憶媒体ノード102は、同時に複数の記憶媒体106に対するアクセスを提供してもよい。加えて、ネットワーク104は、図1に示す構成に限定されず、例えば、ホスト105がネットワーク104に接続され、コントローラ101a、101bにアクセス要求を行う構成でもよい。さらに、管理ノード103は、コントローラ101a、101b、または、記憶媒体ノード102のいずれかのノードが兼ねる構成でもよい。
図2は、コントローラ101aに係る構成の一例を示す図である。なお、コントローラ101a、101bは、同様(同一または類似)の構成を備えるため、コントローラ101aを図示して説明する。
コントローラ101aは、1つ以上のプロセッサ201と、1つ以上のメモリ202と、1つ以上の通信I/F(interface)203と、1つ以上のホストI/F204とを備える。
プロセッサ201は、メモリ202を用いてコントローラ101aの機能を実現するプログラムを実行し、ホスト105に対してLUへのアクセスを提供する。
通信I/F203は、ネットワーク104に接続されている。通信I/F203は、コントローラ101aから記憶媒体ノード102の記憶媒体106に対するアクセス要求の送信、応答の受信、およびアクセス要求の処理に伴うアクセス要求データの転送を行う。
通信I/F203とネットワーク104との接続における通信規格は、アクセス要求、応答の送受信、およびデータ転送が可能である限り、特に限定されない。また、コントローラ101aと記憶媒体ノード102との間で行われるアクセス要求、応答、およびデータの送受信で用いられるプロトコルも同様に限定されない。
ホストI/F204は、ホスト105からのLUに対するアクセス要求の受信、応答の送信、およびホスト105との間でアクセス要求の処理に伴うアクセス要求データの転送を行う。
ホストI/F204を介した、コントローラ101aとホスト105との接続における通信規格およびプロトコルは、アクセス要求、応答の送受信、およびデータ転送が可能である限り、特に限定されない。また、ホスト105がネットワーク104に接続されている場合に、ホストI/F204が通信I/F203と共通の構成を用いてもよい。
図3は、メモリ202における格納データの一例を示す図である。メモリ202は、プログラム領域301と、バッファ領域302と、メタデータ領域303とを備える。
プログラム領域301には、プロセッサ201が実行する、ストレージシステム100のコントローラ101の機能を実施するプログラムが格納される。
バッファ領域302には、記憶媒体ノード102に接続された記憶媒体106から読み出されたReadデータと、記憶媒体ノード102に接続された記憶媒体106に対するWriteデータとが一時的に格納される。
メタデータ領域303には、コントローラ101がホスト105に対してアクセスを提供する各LUの処理に関連した管理情報が格納される。
図4は、プログラム領域301の一例を示す図である。
プログラム領域301は、プロセッサ201が実行するプログラムを格納する。プログラムとしては、コマンド処理プログラム401と、I/O制御プログラム402と、データ配置管理プログラム403と、GC対象選択プログラム404と、GCプログラム405と、GC移管プログラム406と、GC引継プログラム407と、LU移管プログラム408と、LU引継プログラム409と、無効データ通知プログラム410と、領域無効化プログラム411とがある。
コマンド処理プログラム401は、ホストI/F204を介してホスト105からのLUに対するアクセス要求の受信と、結果の応答とを行う。また、コマンド処理プログラム401は、アクセス要求に対応した処理を開始し、ホストI/F204を介してホスト105との間でアクセス要求データの転送を行う。
I/O制御プログラム402は、通信I/F203を介して記憶媒体ノード102が備える記憶媒体106に対するアクセス要求を実行する。I/O制御プログラム402から記憶媒体106に対するアクセスで使用されるプロトコルは、指定されたアドレスに対するアクセスが可能である限り、特に限定されない。
データ配置管理プログラム403は、コントローラ101がホスト105に対してアクセスを提供するLUのアドレス空間の各記憶領域について、記憶媒体ノード102に接続された記憶媒体106における、上記各記憶領域に対応するマッピング先のアドレスを管理する。また、データ配置管理プログラム403は、記憶媒体ノード102に接続された記憶媒体106から構成される各記憶領域に対応するLUと、LU内の記憶領域のアドレスとを管理する。
GC対象選択プログラム404は、記憶媒体ノード102に接続された記憶媒体106から構成される一定サイズの各記憶領域(以下、ページと記述)から、自コントローラ101に割り当てられたページの1つを、GC処理の対象として選択する。
GCプログラム405は、GC対象選択プログラム404が選択したページに含まれる有効なデータを他のページに移動することでデータの整列を行う。GCプログラム405は、選択されたページに含まれる有効な各データについて対応するLUを確認し、確認したLUのアクセス処理が自コントローラ101に割り当てられている場合に、データを他のページにコピーして、元のページのデータを無効化する。
GC移管プログラム406は、GC処理の対象となったページに含まれる有効なデータに対応するLUのアクセス処理が割り当てられたコントローラ101を1つ選択して、ページに関するGC処理の引き継ぎを依頼する。GC処理の引き継ぎの依頼については、アクセス処理とは非同期で実施が可能であり、他のページに対するGC処理とも非同期で実施が可能である。また、同一コントローラ101に対して同時に複数のページに関するGC処理の引き継ぎの依頼を行うことで通信回数の削減が可能である。さらに、コントローラ101が使用するページ数は、ページサイズに反比例することから、ページサイズを大きくすることで使用するページ数が減少し、GC処理の引き継ぎの依頼頻度も併せて減少する。よって、GC移管プログラム406による通信回数を削減し、GC処理の引き継ぎの依頼をアクセス処理とGC処理との各々と非同期に行うことでオーバーヘッドによる影響を回避可能である。
GC引継プログラム407は、他コントローラ101からGC処理の引き継ぎを依頼されたページについて、GC対象選択プログラム404によってGC処理の対象として選択されるように、自コントローラ101に割り当てられたページに追加する。
LU移管プログラム408は、アクセス処理が自コントローラ101に割り当てられているLUについて、他コントローラ101にアクセス処理の引き継ぎを依頼する。また、LU移管プログラム408は、引き継ぎを依頼するLUに関連するメタデータをメタデータ領域303から読み出し、引き継ぎを依頼するコントローラ101にコピーする。LUのアクセス処理の引き継ぎは、通常コントローラ101間の負荷調整が必要な場合にのみ行うことから、ホスト105からのアクセス要求に比べて低い頻度で行われる。そのため、LU移管プログラム408によるコントローラ101間の通信に伴うオーバーヘッドは軽微である。
LU引継プログラム409は、他コントローラ101からアクセス処理の引き継ぎが依頼されたLUについて、コピーされたメタデータを用いてLUのアクセス処理を開始する。
無効データ通知プログラム410は、ホスト105からLUに対するWrite要求に伴い無効化された、更新前のデータの格納先のアドレスの一覧について、各データが含まれるページを管理するコントローラ101に対して通知を行う。他コントローラ101に対する無効データの通知は、アクセス処理とは非同期に行うことが可能である。また、複数のデータに関する無効化の通知をまとめて一度の通知で行うことが可能である。よって、GC移管プログラム406の通信と同様に、通信オーバーヘッドによる影響を回避可能である。
領域無効化プログラム411は、他コントローラ101から通知された、無効化されたデータの格納先のアドレスの一覧を参照し、自コントローラ101が管理するページにおいて対応する記憶領域のデータを無効化する。
図5は、メタデータ領域303の一例を示す図である。
メタデータ領域303は、マッピングテーブル501と、逆引きテーブル502と、使用ページテーブル503と、無効領域テーブル504と、移管候補ページテーブル505とを備える。
マッピングテーブル501は、アクセス処理を行うLU毎に設けられている。マッピングテーブル501は、コントローラ101がアクセス処理を行うLUのアドレス空間の各記憶領域について、記憶媒体ノード102に接続された記憶媒体106における、各領域に対応するマッピング先のアドレスを格納する。
ここで、ストレージシステム100では、RAID(Redundant Arrays of Inexpensive Disks)により、複数の記憶媒体106が1つの仮想的な記憶デバイスとして提供され、仮想的な記憶デバイスにおけるアドレスがマッピングテーブル501の記憶領域アドレスとして用いられている。なお、図示は省略するが、仮想的な記憶デバイスにおけるアドレスは、各記憶媒体106におけるアドレスと対応付けられている。付言するならば、ストレージシステム100では、RAIDが組まれていなくてもよく、マッピングテーブル501の記憶領域アドレスは、記憶媒体106のアドレスであってもよい。この場合、マッピングテーブル501には、記憶媒体106を識別可能な情報が含まれる。
逆引きテーブル502は、ページ毎に設けられている。逆引きテーブル502は、コントローラ101に割り当てられた、記憶媒体ノード102に接続された記憶媒体106から構成される記憶領域について、当該記憶領域に対応付けられたLUおよびLUのアドレスを格納する。なお、本実施の形態において、逆引きテーブル502は、ページ毎に設けられているが、この形式に限るものではなく、単一の形式であってもよいし、ページ以外の単位で分割された形式であってもよいし、その他の形式であってもよい。
使用ページテーブル503は、コントローラ101に割り当てられたページのアドレスを格納する。
無効領域テーブル504は、他コントローラ101が管理するページに格納されている、無効化されたデータのアドレスと、上記ページを管理するコントローラ101の情報とを格納する。
移管候補ページテーブル505は、他コントローラ101に対してGC処理の移管を行う候補となったページのアドレスを格納する。
図6は、管理ノード103に係る構成の一例を示す図である。
管理ノード103は、1つ以上のプロセッサ601と、1つ以上のメモリ602と、1つ以上の通信I/F603を備える。
プロセッサ601は、メモリ602を用いて、ストレージシステム100が提供するLUのアクセス処理に関する、コントローラ101に対する割り当て状況を提供する。また、プロセッサ601は、メモリ602を用いて、記憶媒体ノード102に接続された記憶媒体106によって構成される各記憶領域に関する、コントローラ101に対する割り当ての管理機能を提供する。
メモリ602は、LU割当プログラム604およびLU割当テーブル605を格納する。
通信I/F603は、ネットワーク104に接続されている。通信I/F603は、コントローラ101との間でLUのアクセス処理、記憶領域の割当、記憶領域の解放に関する通信を行う。
LU割当プログラム604は、ストレージシステム100のコントローラ101に対してLUのアクセス処理の割当状態を管理する。また、LU割当プログラム604は、各LUのアクセス処理を行うコントローラ101の問い合わせに対する応答を行う。
LU割当テーブル605は、ストレージシステム100が提供する各LUのアクセス処理を行うコントローラ101の情報を格納する。
図7は、ホスト105からコントローラ101aに対する、LUのRead要求を処理する一連の流れを示すフローチャートである。図7のフローチャートに基づく動作は、以下の通りである。
S701:コマンド処理プログラム401は、ホスト105からLUのRead要求を受信すると、データ配置管理プログラム403に対して、要求されたLUのアドレスに対応する記憶媒体106の記憶領域のアドレスを問い合わせる。続いてS702が実施される。
S702:データ配置管理プログラム403は、マッピングテーブル501を参照して、問い合わせのあったLUのアドレスに対応する記憶領域に対応する記憶媒体106、および当該記憶媒体106のアドレスを特定して応答する。続いてS703が実施される。
S703:I/O制御プログラム402は、通信I/F203を介して指示された記憶媒体106のアドレスに対してReadアクセスを行い、Read結果のデータをメモリ202のバッファ領域302に格納する。続いてS704が実施される。
S704:コマンド処理プログラム401は、S703でバッファ領域302に格納されたデータを、ホストI/F204を介してホスト105にRead要求の結果として転送し、一連の動作を終了する。
図8は、ホスト105からコントローラ101aに対する、LUのWrite要求を処理する一連の流れを示すフローチャートである。図8のフローチャートに基づく動作は、以下の通りである。
S801:コマンド処理プログラム401は、ホスト105からホストI/F204を介してLUのWrite要求を受信すると、ホスト105からWriteデータを受信し、バッファ領域302に格納する。続いてS802が実施される。
S802:コマンド処理プログラム401は、データ配置管理プログラム403に対して、S801で受信したWriteデータの記憶媒体ノード102に接続された記憶媒体106における格納先となるアドレスを問い合わせる。続いてS803が実施される。
S803:データ配置管理プログラム403は、マッピングテーブル501を参照して、ホスト105からWrite要求された記憶領域の更新前のデータを格納する記憶媒体106、および当該記憶媒体のアドレスを特定する。また、データ配置管理プログラム403は、マッピングテーブル501および使用ページテーブル503を参照して当該アドレスの記憶領域が含まれるページを管理するコントローラ101が自コントローラ101であるかを特定する。続いてS804が実施される。
S804:データ配置管理プログラム403は、S803で特定したアドレスの記憶領域が含まれるページを自コントローラ101が管理しているか否かを判定する。データ配置管理プログラム403は、更新前のデータを含むページを自コントローラ101が管理している場合はS805に処理を移す。データ配置管理プログラム403は、更新前のデータを含むページを自コントローラ101が管理していない場合はS806に処理を移す。
S805:データ配置管理プログラム403は、S803で特定したアドレスに対応する更新前のデータが無効であり、いずれのLUにもマッピングされていない状態となるように、逆引きテーブル502の対応するエントリを更新する。例えば、データ配置管理プログラム403は、当該エントリのLUアドレスに無効を示す情報をセットする。続いてS807が実施される。
S806:データ配置管理プログラム403は、更新前のデータの格納先のアドレスと、コントローラ101の情報とを無効領域テーブル504に格納する。より具体的には、データ配置管理プログラム403は、S803で特定したアドレスを、当該アドレスの記憶領域を含むページを管理するコントローラ101に通知する無効なデータが格納されたアドレスとして無効領域テーブル504に格納する。続いてS807が実施される。
S807:データ配置管理プログラム403は、逆引きテーブル502および使用ページテーブル503を参照して、自コントローラ101が管理するページからS801で受信したWriteデータの格納先となる記憶領域のアドレスを決定してコマンド処理プログラム401に応答する。続いてS808が実施される。
S808:コマンド処理プログラム401は、I/O制御プログラム402に対して、S807で決定された記憶媒体106およびアドレスの情報を通知して、Writeアクセスを指示する。I/O制御プログラム402は、通信I/F203を介して指示された記憶媒体106のアドレスに対してWriteアクセスを行い、バッファ領域302から読み出したWriteデータを格納する。続いてS809が実施される。
S809:データ配置管理プログラム403は、I/O制御プログラム402におけるWriteアクセスが完了すると、ホスト105のWrite要求先のアドレスが、新しいWriteデータの格納先の記憶領域に対応するように、S807で決定したアドレスを用いてマッピングテーブル501および逆引きテーブル502を更新する。続いてS810が実施される。
S810:コマンド処理プログラム401は、ホストI/F204を介してホスト105にWrite要求の完了を通知し、一連の動作を終了する。
S803から806までの一連の動作は、S808の後に実施されてもよい。また、S809の動作は、S808の前に実施されてもよい。
図9は、コントローラ101a(移動元コントローラ)からコントローラ101b(移動先コントローラ)にLUのアクセス処理の権限を移動する一連の流れを示すフローチャートである。図9のフローチャートに基づく動作は、以下の通りである。
S901:コントローラ101aのLU移管プログラム408は、コントローラ101bに対してLUのアクセス処理の引き継ぎを依頼する。続いてS902が実施される。
S902:コントローラ101aのLU移管プログラム408は、アクセス処理の権限を移動するLUについて、マッピングテーブル501から当該LUのアドレス空間に関するマッピング先のアドレスを読み出して、通信I/F203を介してコントローラ101bにコピーする。続いてS903が実施される。
S903:コントローラ101bのLU引継プログラム409は、コントローラ101aからLUのアドレス空間に関するマッピング先のアドレス情報を受信し、メタデータ領域303のマッピングテーブル501に格納する。続いてS904が実施される。
S904:コントローラ101aのLU移管プログラム408は、コントローラ101aにおける移動対象のLUに関するアクセス処理を停止する。続いてS905が実施される。
S905:コントローラ101bのLU引継プログラム409は、コントローラ101bにおける移動対象のLUに関するアクセス処理を開始する。続いてS906が実施される。
S906:コントローラ101bのLU引継プログラム409は、管理ノード103に対してS905でアクセス処理を開始したLUに関するアクセス処理の割当先を、コントローラ101aからコントローラ101bに変更するように要求する。続いてS907が実施される。
S907:管理ノード103のLU割当プログラム604は、LU割当テーブル605を更新して移動対象のLUについてアクセス処理の割当先を、コントローラ101aからコントローラ101bに変更する。続いてS908が実施される。
S908:コントローラ101bのLU引継プログラム409は、ホスト105に対して移動対象のLUに関するアクセス処理がコントローラ101bに変更されたことを通知し、一連の動作を終了する。
S904からS905の一連の動作は、S908の後に実施されてもよい。また、管理ノード103がホスト105と直接通信可能である場合は、S908においてコントローラ101bのLU引継プログラム409に代わり、管理ノード103のLU割当プログラム604がホスト105に対して、LUに関するアクセス処理がコントローラ101bに変更されたことを通知してもよい。また、S906において、コントローラ101bのLU引継プログラム409の代わりに、コントローラ101aのLU移管プログラム408が、管理ノード103に対してアクセス処理の割当先の変更を要求してもよい。
図10は、コントローラ101aからコントローラ101bに、無効化されたデータを格納する記憶領域を通知する一連の流れを示すフローチャートである。図10のフローチャートに基づく動作は、以下の通りである。
S1001:コントローラ101aの無効データ通知プログラム410は、アクセス処理とは非同期の任意の時期に無効データの通知処理を開始する。続いてS1002が実施される。
S1002:コントローラ101aの無効データ通知プログラム410は、無効データの通知対象のコントローラ101(本例では、コントローラ101b)を決定する。続いてS1003が実施される。なお、通知対象のコントローラが複数ある場合、コントローラの決定方法については、任意の方法を採用できる。
S1003:コントローラ101aの無効データ通知プログラム410は、コントローラ101aのメタデータ領域303に格納されている無効領域テーブル504を参照して、無効データの通知対象であるコントローラ101bが管理するページに含まれる、無効なデータが格納された記憶領域のアドレスを読み出す。続いてS1004が実施される。
S1004:コントローラ101aの無効データ通知プログラム410は、S1003で読み出したアドレスを、通信I/F203を介して無効データの通知対象であるコントローラ101bに通知する。続いてS1005が実施される。
S1005:コントローラ101bの領域無効化プログラム411は、コントローラ101aから通知された、無効なデータを格納する各記憶領域のアドレスについて参照して、メタデータ領域303に格納された逆引きテーブル502について、各記憶領域のデータが無効であり、いずれのLUにもマッピングされていない状態となるように対応するエントリを更新し、一連の動作を終了する。
図10に示すフローチャートでは、S1002からS1005までの一連の処理が一度実施されているが、繰り返し実施されることで複数のコントローラ101に対して無効化されたデータを格納する記憶領域が通知されてもよい。また、S1005の動作は、S1004までの一連の動作と連続して行われず、任意の時期に実施されてもよい。
図11Aおよび図11Bは、コントローラ101a、101bにおいて記憶媒体ノード102に接続された記憶媒体106から構成されるページに関するGC処理を行う一連の流れを示すフローチャートである。図11Aおよび図11Bのフローチャートに基づく動作は、以下の通りである。
S1101:GC対象選択プログラム404は、任意の時期に、メタデータ領域303に格納された使用ページテーブル503に登録されているページから、GC処理の対象とするページを選択してGCプログラム405に処理を指示する。続いてS1102が実施される。
S1102:GCプログラム405は、S1101で選択されたページに対応する、メタデータ領域303に格納された逆引きテーブル502における、先頭の有効なデータを以降の処理における着目の対象とする。なお、S1102またはS1112で着目した有効なデータを着目データと記述する。続いてS1103が実施される。
S1103:GCプログラム405は、着目データについて、メタデータ領域303に格納された逆引きテーブル502の対応するエントリを参照して、着目データが対応しているLUを確認する。続いてS1104が実施される。
S1104:GCプログラム405は、S1103で確認したLUについて、アクセス処理が自コントローラ101に割り当てられているか否かを判定する。GCプログラム405は、自コントローラ101に割り当てられている場合はS1105に処理を移す。GCプログラム405は、自コントローラ101に割り当てられていない場合はS1111に処理を移す。
S1105:データ配置管理プログラム403は、逆引きテーブル502および使用ページテーブル503を参照して、自コントローラ101が管理するGC処理の対象外のページから、着目データの移動先のアドレスを決定する。続いてS1106が実施される。
S1106:GCプログラム405は、I/O制御プログラム402に対して、着目データのアドレスを指定してReadアクセスを指示する。I/O制御プログラム402は、指示されたアドレスで示される記憶媒体106の記憶領域に格納された着目データに対してReadアクセスを行い、Read結果のデータをメモリ202のバッファ領域302に格納する。続いてS1107が実施される。
S1107:GCプログラム405は、I/O制御プログラム402に対して、S1105で決定したアドレスを指定して、S1106でReadアクセスを行ったデータのWriteアクセスを指示する。I/O制御プログラム402は、通信I/F203を介して、指示されたアドレスで示される記憶媒体106の記憶領域に対してWriteアクセスを行い、バッファ領域302から読み出したデータを格納する。続いてS1108が実施される。
S1108:データ配置管理プログラム403は、メタデータ領域303に格納された逆引きテーブル502について、着目データに対応するエントリに格納されたLUおよびアドレスの情報を、S1105でデータの移動先として決定したアドレスに対応するエントリにコピーする。続いてS1109が実施される。
S1109:データ配置管理プログラム403は、メタデータ領域303に格納された逆引きテーブル502について、着目データに対応するエントリに格納されたLUおよびアドレスの情報を参照する。そして、データ配置管理プログラム403は、メタデータ領域303に格納されたマッピングテーブル501における、当該LUおよびアドレスに対応するエントリが、S1105で決定したアドレスを指し示すように更新する。続いてS1110が実施される。
S1110:データ配置管理プログラム403は、メタデータ領域303に格納された逆引きテーブル502について、着目データに対応するエントリが、いずれのLUにも含まれない無効な状態となるように更新する。続いてS1111が実施される。
S1111:GCプログラム405は、着目データの次の有効なデータが同一のページ内に存在するか否かを判定する。GCプログラム405は、同一のページ内に有効なデータが存在する場合はS1112に処理を移す。GCプログラム405は、同一のページ内に有効なデータが存在しない場合はS1113に処理を移す。
S1112:GCプログラム405は、GC処理の対象のページ内で着目するデータを次の有効なデータに変更する。続いてS1103が実施される。
S1113:GCプログラム405は、GC処理の対象のページ内に有効なデータが残されているか否かを判定する。GCプログラム405は、GC処理の対象のページ内に有効なデータが残されている場合はS1114に処理を移す。GCプログラム405は、GC処理の対象のページ内に有効なデータが残されていない場合は一連の動作を終了する。
S1114:GCプログラム405は、移管候補ページテーブル505にGC処理の対象のページのアドレスを格納し、一連の動作を終了する。
図12は、コントローラ101a(移管元コントローラ)において記憶媒体ノード102に接続された記憶媒体106から構成されるページに関するGC処理をコントローラ101b(移管先コントローラ)に移管する一連の流れを示すフローチャートである。図12のフローチャートに基づく動作は、以下の通りである。
S1201:コントローラ101aのGC移管プログラム406は、メモリ202のメタデータ領域303に格納された移管候補ページテーブル505から移管の対象とするページを選択する。続いてS1202が実施される。なお、コントローラ101aのGC移管プログラム406は、GCプログラム405のGC処理とは非同期の任意の時期に処理を開始してもよい。
S1202:コントローラ101aのGC移管プログラム406は、S1201で選択したページについて、メタデータ領域303に格納された逆引きテーブル502を参照して、有効なデータが存在するか否かを判定する。当該コントローラ101aのGC移管プログラム406は、有効なデータが存在する場合はS1203に処理を移す。コントローラ101aのGC移管プログラム406は、有効なデータが存在しない場合はS1212に処理を移す。
S1203:コントローラ101aのGC移管プログラム406は、S1201で選択したページについて、メタデータ領域303に格納された逆引きテーブル502のエントリから、格納されているデータに対応するLUと、当該LUのアドレスとを参照する。続いてS1204が実施される。
S1204:コントローラ101aのGC移管プログラム406は、通信I/F203を介して管理ノード103に対して、S1203で参照した、有効なデータに対応するLUのアクセス処理が割り当てられたコントローラ101の問い合わせを行う。続いてS1205が実施される。
S1205:管理ノード103のLU割当プログラム604は、S1204でコントローラ101aから問い合わせを受けたLUについて、LU割当テーブル605を参照してアクセス処理が割り当てられたコントローラ101を確認し、通信I/F603を介して応答する。続いてS1206が実施される。
S1206:コントローラ101aのGC移管プログラム406は、S1204で問い合わせた、LUのアクセス処理が割り当てられたコントローラ101について、管理ノード103からの応答結果を確認し、S1201で選択したページのGC処理に関する移管先のコントローラ101(本例では、コントローラ101b)を決定する。続いてS1207が実施される。
S1207:コントローラ101aのGC移管プログラム406は、コントローラ101bに対して通信I/F203を介してページのアドレスを通知することでGC処理の引き継ぎを依頼する。続いてS1208が実施される。
S1208: コントローラ101bのGC引継プログラム407は、コントローラ101aから通信I/F203を介してページのアドレスを受信して、コントローラ101bのメタデータ領域303に含まれる使用ページテーブル503に格納する。続いてS1209が実施される。
S1209:コントローラ101aのGC移管プログラム406は、GC処理の引き継ぎを依頼するページについて、メタデータ領域303に格納された逆引きテーブル502のエントリを読み出して、通信I/F203を介してコントローラ101bにコピーする。続いてS1210が実施される。
S1210:コントローラ101bのGC引継プログラム407は、コントローラ101aから通信I/F203を介して受信したコントローラ101aの逆引きテーブル502のエントリを、コントローラ101bの逆引きテーブル502に格納する。続いてS1211が実施される。
S1211:コントローラ101aのGC移管プログラム406は、メタデータ領域303に格納された逆引きテーブル502について、GC処理の引き継ぎを依頼したページに対応するエントリを削除する。続いてS1212が実施される。
S1212:コントローラ101aのGC移管プログラム406は、メタデータ領域303に格納された移管候補ページテーブル505から、GC処理の引き継ぎを依頼したページのアドレスを削除し、一連の動作を終了する。
本実施の形態によれば、複数のコントローラ101が記憶領域を共有するストレージシステム100において、アクセス処理および記憶領域管理を移動することでコントローラ101間の負荷分散を実現しつつ、コントローラ101間の依存関係が低減された状態を維持できる。各コントローラ101のアクセス処理におけるデータの格納先を分離し、記憶領域に対するGC処理ではアクセス処理が割り当てられたLUに関連するデータの整列を各コントローラ101が分担することで、コントローラ101間の依存関係を可能な限り排除し、通信によるオーバーヘッドの影響を回避することが可能である。
(2)第2の実施の形態
本実施の形態では、アクセス処理および記憶領域管理のコントローラ101間の移動、分散に加えて、シンプロビジョニングによる共有の記憶領域のコントローラ101に対するページ単位の動的な割当および解放を行うストレージシステムの例を説明する。
なお、本実施の形態は、本発明における請求範囲を限定するものではなく、本実施の形態において説明を行う要素の全てが本発明における課題の解決に必要であるとは限らない。また、本実施の形態の説明では、第1の実施の形態における構成、動作の差分を説明し、説明を行わない構成要素と符号、動作については第1の実施の形態と同様である。
図13は、本実施の形態におけるプログラム領域301の一例を示す図である。
プログラム領域301には、コマンド処理プログラム401と、I/O制御プログラム402と、データ配置管理プログラム403と、GC対象選択プログラム404と、GCプログラム405と、GC移管プログラム406と、GC引継プログラム407と、LU移管プログラム408と、LU引継プログラム409と、無効データ通知プログラム410と、領域無効化プログラム411とに加えて、ページ確保プログラム1312と、ページ解放プログラム1313とが格納される。
ページ確保プログラム1312は、記憶媒体ノード102に接続された記憶媒体106から構成されるページのうち、いずれのコントローラ101にも割り当てられていない、空きページの割当を管理ノード103に要求して、自コントローラ101が管理するページ(使用ページ)として追加する。
ページ解放プログラム1313は、自コントローラ101が管理するページとして割り当てられた状態のページを解放するように、管理ノード103に対して通知する。
図14は、本実施の形態における管理ノード103に係る構成の一例を示す図である。
管理ノード103は、1つ以上のプロセッサ601と、1つ以上のメモリ602と、1つ以上の通信I/F603を備える。
メモリ602は、LU割当プログラム604と、LU割当テーブル605とに加えて、ページ割当プログラム1406と、空きページテーブル1407とを格納する。
ページ割当プログラム1406は、ストレージシステム100のコントローラ101からの要求に応じて、記憶媒体ノード102に接続された記憶媒体106から構成されるページの割当と解放とを行う。
空きページテーブル1407は、いずれのコントローラ101に対しても割り当てられていない状態の、記憶媒体ノード102に接続された記憶媒体106から構成されるページのアドレスを格納する。
図15は、本実施の形態における、コントローラ101a、101bがページを確保する一連の流れを示すフローチャートである。図15のフローチャートに基づく動作は、以下の通りである。
S1501:データ配置管理プログラム403は、任意の時期に逆引きテーブル502および使用ページテーブル503を参照して、コントローラ101が管理するページ全体(使用する記憶領域)の空き容量を確認する。続いてS1502が実施される。
S1502:データ配置管理プログラム403は、S1501で確認した記憶領域の空き容量が事前に決定した閾値を下回るか否かを判定する。データ配置管理プログラム403は、空き容量が閾値を下回る場合はS1503に処理を移す。データ配置管理プログラム403は、空き容量が閾値を下回らない場合は一連の動作を終了する。
S1503:ページ確保プログラム1312は、通信I/F203を介して管理ノード103に対して、コントローラ101に対するページの割当を要求する。続いてS1504が実施される。
S1504:管理ノード103のページ割当プログラム1406は、通信I/F603を介して、S1503のページの割当の要求を受信すると、空きページテーブル1407を参照して割り当てるページを選択する。続いてS1505が実施される。
S1505:管理ノード103のページ割当プログラム1406は、通信I/F603を介して、ページの割当の要求を行ったコントローラ101に対してS1504で選択したページのアドレスを通知すると共に、空きページテーブル1407から当該ページのアドレスを削除する。続いてS1506が実施される。
S1506:ページ確保プログラム1312は、通信I/F203を介して管理ノード103から割り当てられたアドレスを受信して、使用ページテーブル503に受信したアドレスを格納し、一連の動作を終了する。
S1504において、ページ割当プログラム1406は、複数のページのアドレスを選択し、コントローラ101に対して同時に複数のページを割り当ててもよい。また、S1501において、データ配置管理プログラム403は、逆引きテーブル502を参照する代わりに、別途管理を行った記憶領域の使用容量を基に空き容量を確認してもよい。
図16は、本実施の形態における、コントローラ101a、101bがページを解放する一連の流れを示すフローチャートである。図16のフローチャートに基づく動作は、以下の通りである。
S1601:データ配置管理プログラム403は、任意の時期に逆引きテーブル502および使用ページテーブル503を参照して、コントローラ101が管理するページ全体(使用する記憶領域)の空き容量を確認する。続いてS1602が実施される。
S1602:データ配置管理プログラム403は、S1601で確認した記憶領域の空き容量が事前に決定した閾値を上回るか否かを判定する。データ配置管理プログラム403は、空き容量が閾値を上回る場合はS1603に処理を移す。データ配置管理プログラム403は、空き容量が閾値を上回らない場合は一連の動作を終了する。
S1603:データ配置管理プログラム403は、逆引きテーブル502および使用ページテーブル503を参照してデータが格納されていないページを解放対象のページとして選択する。続いてS1604が実施される。
S1604:ページ解放プログラム1313は、通信I/F203を介して管理ノード103に対して、解放対象のページとしてS1603で選択されたページのアドレスを通知する。続いてS1605が実施される。
S1605:管理ノード103のページ割当プログラム1406は、通信I/F603を介して、解放対象のページのアドレスを受信すると、空きページテーブル1407に当該アドレスを格納する。続いてS1606が実施される。
S1606:データ配置管理プログラム403は、使用ページテーブル503からS1603で選択したページのアドレスを削除し、一連の動作を終了する。
S1603において、データ配置管理プログラム403は、複数のページのアドレスを選択し、同時に複数のページを解放してもよい。また、S1601において、データ配置管理プログラム403は、逆引きテーブル502を参照する代わりに、別途管理を行った記憶領域の使用容量を基に空き容量を確認してもよい。
本実施の形態によれば、複数のコントローラ101が記憶領域を共有するストレージシステム100において、記憶領域に対するGC処理をコントローラ101間で引き継いで分担するために記憶領域管理の権限を移動した場合に、各コントローラ101が管理する記憶領域の不足および偏りを解消可能である。また、GC処理の単位と、シンプロビジョニングによるコントローラ101に対する記憶領域の割当単位とを一致させることで、GC処理の引継に伴い管理権限の移動が行われた記憶領域に対しても、解放処理、および再割当を他の記憶領域と同様に行うことが可能である。
(3)第3の実施の形態
本実施の形態では、アクセス処理および記憶領域管理のコントローラ101間の移動、分散に加えて、各コントローラ101で格納データに対する重複排除を行うストレージシステム100の例を説明する。
なお、本実施の形態は、本発明における請求範囲を限定するものではなく、本実施の形態において説明を行う要素の全てが本発明における課題の解決に必要であるとは限らない。また、本実施の形態の説明では、第1の実施の形態における構成、動作の差分を説明し、説明を行わない構成要素と符号、動作については第1の実施の形態と同様である。
図17は、本実施の形態におけるプログラム領域301の一例を示す図である。
プログラム領域301には、コマンド処理プログラム401と、I/O制御プログラム402と、データ配置管理プログラム403と、GC対象選択プログラム404と、GCプログラム405と、GC移管プログラム406と、GC引継プログラム407と、LU移管プログラム408と、LU引継プログラム409と、無効データ通知プログラム410と、領域無効化プログラム411とに加えて、重複判定メタデータ生成プログラム1712と、重複判定プログラム1713とが格納される。
無効データ通知プログラム410は、ホスト105からLUに対するWrite要求に伴い無効化された更新前のデータの格納先のアドレスと、当該アドレスに対応するLUおよびLU内のアドレスの組み合わせの一覧とについて、各データが含まれるページを管理するコントローラ101に対して通知を行う。無効データ通知プログラム410は、他コントローラ101に対する無効データの通知を、アクセス処理とは非同期に行うことが可能である。また、無効データ通知プログラム410は、複数のデータに関する無効化の通知をまとめて一度の通知で行うことが可能である。よって、GC移管プログラム406の通信と同様に、通信オーバーヘッドによる影響を回避可能である。
領域無効化プログラム411は、他コントローラ101から通知された、無効化されたデータの格納先のアドレスと、LUおよびLU内のアドレスの組み合わせの一覧とを参照し、自コントローラ101が管理するページにおいて対応する記憶領域のデータを無効化する。
重複判定メタデータ生成プログラム1712は、記憶媒体ノード102に接続された記憶媒体106から構成される共有の記憶領域に格納されたデータとの一致を判定するために使用するメタデータを生成する。メタデータは、例えば、データのハッシュ値である。
重複判定プログラム1713は、重複判定メタデータ生成プログラム1712が生成したメタデータを用いて、記憶領域にWrite予定のデータと一致するデータを、格納データから検出する。
図18は、本実施の形態におけるメタデータ領域303の一例を示す図である。
メタデータ領域303は、マッピングテーブル501と、逆引きテーブル502と、使用ページテーブル503と、無効領域テーブル504と、移管候補ページテーブル505とに加えて、重複判定メタデータテーブル1806を備える。
逆引きテーブル502は、コントローラ101a、101bに割り当てられた、記憶媒体ノード102に接続された記憶媒体106から構成される記憶領域について、記憶領域に対応付けられたLUおよびLUのアドレスを格納する。各記憶領域のデータが重複して参照される場合、複数のLUおよびLUのアドレスが対応付けられる。
無効領域テーブル504は、LUのデータの更新に伴い他コントローラ101が管理するページにおいて、参照されなくなった記憶領域の情報を格納する。各情報は、記憶媒体ノード102に接続された記憶媒体106から構成される記憶領域において参照されなくなったアドレスと、ページを管理するコントローラ101と、当該アドレスに対応するLUと、LU内のアドレスとの組み合わせで構成される。
重複判定メタデータテーブル1806は、重複判定メタデータ生成プログラム1712が生成した、重複データの判定に用いるメタデータを格納する。
図19Aおよび図19Bは、本実施の形態における、ホスト105からコントローラ101aに対する、LUのWrite要求を処理する一連の流れを示すフローチャートである。図19Aおよび図19Bのフローチャートに基づく動作は、以下の通りである。
S1901:コマンド処理プログラム401は、ホスト105からホストI/F204を介してLUのWrite要求を受信すると、ホスト105からWriteデータを受信し、バッファ領域302に格納する。続いてS1902が実施される。
S1902:重複判定メタデータ生成プログラム1712は、バッファ領域302からS1901で受信したWriteデータを読み出して、重複判定用のメタデータを生成する。続いてS1903が実施される。
S1903:重複判定プログラム1713は、重複判定メタデータテーブル1806を参照して、S1902で生成した重複判定用のメタデータと一致するメタデータが存在するか否か(メタデータの重複を検出したか否か)を判定する。重複判定プログラム1713は、メタデータの重複を検出した場合はS1904に処理を移す。重複判定プログラム1713は、メタデータの重複を検出していない場合はS1905に処理を移す。
S1904:重複判定プログラム1713は、S1903で一致を検出したデータ(重複データ)について、記憶媒体ノード102に接続された記憶媒体106における格納先のアドレスを特定する。続いてS1908が実施される。
S1905:コマンド処理プログラム401は、データ配置管理プログラム403に対して、S1901で受信したWriteデータの記憶媒体ノード102に接続された記憶媒体106における格納先となるアドレスを問い合わせる。続いてS1906が実施される。
S1906:データ配置管理プログラム403は、逆引きテーブル502および使用ページテーブル503を参照して、自コントローラ101が管理するページからS1901で受信したWriteデータの格納先となる記憶領域のアドレスを決定してコマンド処理プログラム401に応答する。続いてS1907が実施される。
S1907:コマンド処理プログラム401は、I/O制御プログラム402に対して、S1906で決定された記憶媒体106およびアドレスの情報を通知して、Writeアクセスを指示する。I/O制御プログラム402は、通信I/F203を介して指示された記憶媒体106のアドレスに対してWriteアクセスを行い、バッファ領域302から読み出したWriteデータを格納する。また、コマンド処理プログラム401は、S1902で生成した重複判定用のメタデータを、S1906で決定された記憶媒体106のアドレスの情報と共に重複判定メタデータテーブル1806に登録する。続いてS1908が実施される。
S1908:データ配置管理プログラム403は、S1903で一致を検出したデータ、またはS1907で格納したデータが、ホスト105のWrite要求先のLUおよびLU内のアドレスに対応するように、逆引きテーブル502の格納データに対応するエントリに、当該LUおよびLU内のアドレスの情報を追加する。続いてS1909が実施される。
S1909:データ配置管理プログラム403は、マッピングテーブル501を参照して、ホスト105からWrite要求された記憶領域の更新前のデータを格納する、記憶媒体ノード102に接続された記憶媒体106における格納先のアドレスを特定する。また、データ配置管理プログラム403は、マッピングテーブル501および使用ページテーブル503を参照して当該アドレスの記憶領域が含まれるページを管理するコントローラ101が自コントローラ101であるかを特定する。続いてS1910が実施される。
S1910:データ配置管理プログラム403は、S1909で特定したアドレスの記憶領域が含まれるページを自コントローラ101が管理しているか否かを判定する。データ配置管理プログラム403は、更新前のデータを含むページを自コントローラ101が管理している場合はS1911に処理を移す。データ配置管理プログラム403は、更新前のデータを含むページを自コントローラ101が管理していない場合はS1914に処理を移す。
S1911:データ配置管理プログラム403は、S1909で特定したアドレスに対応する逆引きテーブル502のエントリから、ホスト105のWrite要求先のLUおよびLU内のアドレスを削除することで対応付けを解除する。続いてS1912が実施される。
S1912:データ配置管理プログラム403は、S1911でWrite要求先のLUおよびLU内のアドレスを削除したエントリについて、すべてのLUおよびLU内のアドレスが削除されており、対応する記憶領域のデータが無効な状態であるか否か判定する。データ配置管理プログラム403は、記憶領域のデータが無効な状態である場合はS1913に処理を移す。データ配置管理プログラム403は、記憶領域のデータが無効な状態ではない場合はS1915に処理を移す。
S1913:データ配置管理プログラム403は、重複判定メタデータテーブル1806から、S1909で特定したアドレスに対応するエントリを削除する。続いてS1915が実施される。
S1914:データ配置管理プログラム403は、S1909で特定したアドレスと、アドレスに対応するページを管理するコントローラ101と、ホスト105のWrite要求先のLUおよびLU内のアドレスの組み合わせとを無効領域テーブル504に格納する。続いてS1915が実施される。
S1915:データ配置管理プログラム403は、ホスト105のWrite要求先のLUおよびLU内のアドレスに対応するマッピングテーブル501のエントリについて、S1904で特定されたアドレス、またはS1906で決定したアドレスで更新する。続いてS1916実施される。
S1916:コマンド処理プログラム401は、ホストI/F204を介してホスト105にWrite要求の完了を通知し、一連の動作を終了する。
S1903における重複データの判定については、メタデータではなく直接データ同士が一致するかの比較が行われてもよい。
図20A、図20Bおよび図20Cは、本実施の形態における、コントローラ101a、101bにおいて記憶媒体ノード102に接続された記憶媒体106から構成されるページに関するGC処理を行う一連の流れを示すフローチャートである。図20A、図20Bおよび図20Cのフローチャートに基づく動作は、以下の通りである。
S2001:GC対象選択プログラム404は、任意の時期に、メタデータ領域303に格納された使用ページテーブル503に登録されているページから、GC処理の対象とするページを選択してGCプログラム405に処理を指示する。続いてS2002が実施される。
S2002:GCプログラム405は、S2001で選択されたページに対応する、メタデータ領域303に格納された逆引きテーブル502における、1個以上のLUのアドレスに対応付けられた有効なデータのうち、先頭のデータを以降の処理における着目の対象とする。なお、S2002またはS2017で着目した有効なデータを着目データと記述する。続いてS2003が実施される。
S2003:GCプログラム405は、着目データについて、メタデータ領域303に格納された逆引きテーブル502の対応するエントリを参照して、着目データに対応する各LUを確認する。続いてS2004が実施される。
S2004:GCプログラム405は、S2003で確認した各LUについて、アクセス処理が自コントローラ101に割り当てられているものが含まれているか否かを判定する。GCプログラム405は、自コントローラ101に割り当てられているLUが含まれている場合はS2005に処理を移す。GCプログラム405は、自コントローラ101に割り当てられているLUが含まれていない場合はS2016に処理を移す。
S2005:GCプログラム405は、I/O制御プログラム402に対して、着目データのアドレスを指定してReadアクセスを指示する。I/O制御プログラム402は、指示されたアドレスで示される記憶媒体106の記憶領域に格納された、着目データに対してReadアクセスを行い、Read結果のデータをメモリ202のバッファ領域302に格納する。続いてS2006が実施される。
S2006:重複判定メタデータ生成プログラム1712は、バッファ領域302からRead結果のデータを読み出して、重複判定用のメタデータを生成する。続いてS2007が実施される。
S2007:重複判定プログラム1713は、重複判定メタデータテーブル1806およびS2006で生成した重複判定用のメタデータを用いて、S2005で読み出したデータと一致するデータが他に存在するか否か(メタデータの重複を検出したか否か)を判定する。重複判定プログラム1713は、メタデータの重複を検出した場合はS2008に処理を移す。重複判定プログラム1713は、メタデータの重複を検出していない場合はS2009に処理を移す。
S2008:重複判定プログラム1713は、S2007で一致を検出したデータについて、記憶媒体ノード102に接続された記憶媒体106における格納先のアドレスを特定する。続いてS2012が実施される。
S2009:データ配置管理プログラム403は、逆引きテーブル502および使用ページテーブル503を参照して、自コントローラ101が管理するGC処理の対象外のページから、着目データの移動先となる記憶媒体ノード102に接続された記憶媒体106から構成される記憶領域上のアドレスを決定する。続いてS2010が実施される。
S2010:GCプログラム405は、I/O制御プログラム402に対して、S2009で決定されたアドレスを指定して、S2005でReadを行ったデータのWriteアクセスを指示する。I/O制御プログラム402は、通信I/F203を介して、指示されたアドレスで示される記憶媒体106の記憶領域に対してWriteアクセスを行い、バッファ領域302から読み出したデータを格納する。続いてS2011が実施される。
S2011:データ配置管理プログラム403は、メタデータ領域303に格納された逆引きテーブル502について、着目データに対応するエントリに格納されたLUおよびLU内のアドレス情報から、アクセス処理が自コントローラ101に割り当てられたLUに対応する情報のみを選択する。データ配置管理プログラム403は、選択した情報を、S2009でデータの移動先として決定したアドレスに対応する逆引きテーブル502のエントリに追加する。続いてS2012が実施される。
S2012:データ配置管理プログラム403は、メタデータ領域303に格納されたマッピングテーブル501において、S2011で選択的にコピーを行ったLUおよびLU内のアドレスに対応する各エントリについて、S2008で一致するデータの格納先として特定されたアドレス、またはS2009でデータの移動先として決定したアドレスを指し示すように更新する。続いてS2013が実施される。
S2013:データ配置管理プログラム403は、メタデータ領域303に格納された逆引きテーブル502について、着目データに対応するエントリから、S2011で選択的にコピーを行ったLUおよびLU内のアドレスを削除する。続いてS2014が実施される。
S2014:データ配置管理プログラム403は、S2013でLUおよびLU内のアドレスを削除したエントリについて、すべてのLUおよびLU内のアドレスが削除されており、対応する記憶領域のデータが無効な状態であるか否か判定する。データ配置管理プログラム403は、記憶領域のデータが無効な状態である場合はS2015に処理を移す。データ配置管理プログラム403は、記憶領域のデータが無効な状態ではない場合はS2016に処理を移す。
S2015:データ配置管理プログラム403は、S2013でLUおよびLU内のアドレスを削除したエントリに対応する記憶領域のアドレスについて、重複判定メタデータテーブル1806から記憶領域のアドレスに対応するエントリを削除する。続いてS2016が実施される。
S2016:GCプログラム405は、着目データの次の有効なデータが同一のページ内に存在するか否かを判定する。GCプログラム405は、同一のページ内に有効なデータが存在する場合はS2017に処理を移す。GCプログラム405は、同一のページ内に有効なデータが存在しない場合はS2018に処理を移す。
S2017:GCプログラム405は、GC処理の対象のページ内で着目するデータを次の有効なデータに変更する。続いてS2003が実施される。
S2018:GCプログラム405は、GC処理の対象のページ内に有効なデータが残されているか否かを判定する。GCプログラム405は、GC処理の対象のページ内に有効なデータが残されている場合はS2019に処理を移す。GCプログラム405は、GC処理の対象のページ内に有効なデータが残されていない場合は一連の動作を終了する。
S2019:GCプログラム405は、移管候補ページテーブル505にGC処理の対象のページのアドレスを格納し、一連の動作を終了する。
また、本実施の形態において、図10で示されるフローチャートは、S1003、S1004、S1005が以下の動作となる。
S1003:コントローラ101aの無効データ通知プログラム410は、コントローラ101aのメタデータ領域303に格納されている無効領域テーブル504(図18)を参照して、無効データの通知対象であるコントローラ101bが管理するページに含まれる、無効なデータが格納された記憶領域の記憶媒体ノード102に接続された記憶媒体106におけるアドレスと、対応付けが解除されたLUおよびLU内のアドレスの情報とを読み出す。続いてS1004が実施される。
S1004:コントローラ101aの無効データ通知プログラム410は、S1003で読み出したアドレスと、対応付けが解除されたLUおよびLU内のアドレスの情報とを、通信I/F203を介して無効データの通知対象であるコントローラ101bに通知する。続いてS1005が実施される。
S1005:コントローラ101bの領域無効化プログラム411は、コントローラ101aから通知された、記憶媒体ノード102に接続された記憶媒体106におけるアドレスに対応する逆引きテーブル502のエントリについて、同時に通知されたLUおよびLU内のアドレスを削除する。また、コントローラ101bの領域無効化プログラム411は、LUおよびLU内のアドレスを削除したエントリについて、すべてのLUおよびLU内のアドレスが削除されており、対応する記憶領域のデータが無効な状態である場合に、エントリに対応する記憶領域のアドレスについて、重複判定メタデータテーブル1806から記憶領域のアドレスに対応するエントリを削除し、一連の動作を終了する。
本実施の形態によれば、複数のコントローラ101が記憶領域を共有するストレージシステム100において、各コントローラ101で重複排除機能を実現しつつ、アクセス処理および記憶領域管理を移動することでコントローラ101間の負荷分散を実現し、かつ、コントローラ101間の依存関係が低減された状態を維持できる。
なお、本発明は以上の実施の形態に限定されず、様々な派生形が含まれる。例えば、第1、第2、第3の実施の形態では、コントローラ101a、101bの各機能がプロセッサ201で動作するソフトウェア、管理ノード103の各機能がプロセッサ601で動作するソフトウェアとされているが、機能の一部または全てはハードウェアによる実装であってもよい。また、第1、第2、第3の実施の形態において、コントローラ101a、101b、記憶媒体ノード102、管理ノード103は、ネットワーク104で接続されているが、これらは同一筐体、同一ハードウェア内のバス、バックプレーン等による接続であってもよい。
加えて、第1、第2、第3の実施の形態において、コントローラ101a、101bのマッピングテーブル501は、メモリ202のバッファ領域302に格納されているが、一部または全てが記憶媒体ノード102に接続された記憶媒体106から構成される記憶領域に格納されていてもよい。このとき、アクセス処理の権限の移動において、マッピングテーブル501の情報に代わり、当該記憶領域の格納先のアドレスをコントローラ101間でコピーしてもよい。同様に、第1、第2、第3の実施の形態において、コントローラ101a、101bの逆引きテーブル502は、一部または全てが記憶媒体ノード102に接続された記憶媒体106から構成される記憶領域に格納されていてもよい。このとき、コントローラ101間のGC処理の移管において、逆引きテーブル502の情報に代わり、当該記憶領域の格納先のアドレスをコントローラ101間でコピーしてもよい。
(4)付記
上述の実施の形態には、例えば、以下のような内容が含まれる。
上述の実施の形態においては、本発明をストレージシステムに適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のシステム、装置、方法、プログラムに広く適用することができる。
また、上述の実施の形態において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
また、上述の実施の形態において、説明の便宜上、XXテーブルを用いて各種のデータを説明したが、データ構造は限定されるものではなく、XX情報等と表現してもよい。
また、上記の説明において、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記憶装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
上述した実施の形態は、例えば、以下の特徴的な構成を備える。
1以上の記憶媒体(例えば、記憶媒体106)と、ホスト(例えば、ホスト105)に対してストレージ機能を提供する複数のコントローラ(例えば、コントローラ101)とを備え、上記複数のコントローラが上記記憶媒体の記憶領域(例えば、仮想的な記憶領域、物理的な記憶領域)を共有するストレージシステム(例えば、ストレージシステム100)は、各コントローラには、データの書き込みとデータの整列とを行う上記記憶領域(例えば、ページ)が割り当てられ(例えば、使用ページテーブル503参照)、各コントローラは、コントローラに割り当てられている論理領域(例えば、LU)のデータに対するアクセス処理の権限をコントローラ間で移動し(例えば、図9参照)、第1のコントローラ(例えば、コントローラ101a)から第2のコントローラ(例えば、コントローラ101b)へ上記アクセス処理の権限を移動させることによって、複数のコントローラの論理領域にかかるデータが存在することとなった第1の記憶領域について、上記第1のコントローラおよび上記第2のコントローラは、Write要求にかかる更新後データを自コントローラに割り当てられている記憶領域に書き込む(例えば、図8参照)とともに、上記第1の記憶領域の更新前データを削除し、データを整列する整列処理(例えば、GC処理)にて、上記第1の記憶領域の自コントローラがアクセス処理の権限を有するデータを、自コントローラに割り当てられている他の記憶領域に移動することを、上記第1の記憶領域の割当を引き継ぎながら行う(例えば、図12参照)。
上記構成では、第1の記憶領域の自コントローラがアクセス処理の権限を有するデータを、自コントローラに割り当てられている他の記憶領域に移動することを、第1の記憶領域の割当を引き継ぎながら行われる。よって、コントローラ間のアクセス処理の権限の移動において、各アクセス処理の対象のデータが記憶領域内に混在する場合であってもコントローラ間の処理の依存関係の低減を実現することができる。その結果、ストレージシステムにおけるコントローラの増設による性能の向上、コントローラ資源の利用効率の向上等を図ることができる。
上記第1のコントローラおよび上記第2のコントローラは、上記記憶領域に有効なデータがなくなった場合に、上記記憶領域の割当を解放する(例えば、図15参照)。
上記整列処理では、上記第1の記憶領域が割り当てられている第1のコントローラが自コントローラがアクセス処理の権限を有するデータを自コントローラに割り当てられている記憶領域に移動した後に、上記第1の記憶領域の割当を上記第2のコントローラに引き継ぎ、上記第2のコントローラが自コントローラがアクセス処理の権限を有するデータを自コントローラに割り当てられている記憶領域に移動させる(例えば、図12参照)。
上記第1のコントローラおよび第2のコントローラはそれぞれ、記憶領域が割り当てられていない記憶領域のデータをリード可能であり、上記第2のコントローラは、割当を引き継ぐ前に上記第1の記憶領域の自コントローラがアクセス処理の権限を有するデータのRead要求を受けた場合、当該データを上記第1の記憶領域から読み出して送信する(例えば、図7参照)。
上記整列処理は、アクセス処理の権限をコントローラ間で移動する前は、同じ上記記憶領域内でデータを整列することを所定のタイミングで行うものであり、アクセス処理の権限をコントローラ間で移動した後は、他の上記記憶領域へデータを整列する。
各コントローラに割り当てられる記憶領域のサイズは、所定のサイズであり、各コントローラは、データの記憶に伴う容量の増減に応じて、自コントローラがデータの書き込みとデータの整列とを行う領域の割当および解放を上記所定のサイズで行う(例えば、図15および図16参照)。
上記構成では、データの記憶に伴う容量の増減に応じて記憶領域の割当および解放が行われるので、各コントローラに割り当てられている記憶領域の不足および偏りを解消可能である。また、整列処理が行われる記憶領域の単位と、割当および解放が行われる記憶領域の単位とが一致しているので、整列処理の引継に伴い権限の移動が行われた記憶領域に対しても、解放および再割当を他の記憶領域と同様に行うことが可能となる。
各コントローラは、上記整列処理において、上記記憶領域から移動を行う移動対象のデータに対して、他のデータとの重複を確認し、重複するデータが存在して無効である場合、上記移動対象のデータの移動を行わずに上記記憶領域から上記移動対象のデータを消去する(例えば、図20A、図20Bおよび図20C参照)。
上記構成では、各コントローラでデータの重複排除が行われると共に、コントローラ間の負荷分散が実現され、かつ、コントローラ間の処理の依存関係が低減された状態が維持される。
上記第1の記憶領域についての書き込みおよび整列の権限が上記第1のコントローラに割り当てられている場合、上記第2のコントローラは、Write要求では、上記第1の記憶領域の更新前データを無効化するための無効情報を記憶し、上記Write要求と非同期に、上記無効情報を上記第1のコントローラに通知する(例えば、S1001参照)。
上記構成では、アクセス処理とは非同期に無効情報が第2のコントローラに通知されるので、例えば、通信のオーバーヘッドによる影響を回避可能となる。
各コントローラは、上記整列処理では、上記データの移動と非同期に上記引き継ぎを行う(例えば、図12参照)。
上記構成では、整列処理の移動と引継ぎとが非同期に行われるので、例えば、通信のオーバーヘッドによる影響を回避可能となる。
また上述した構成については、本発明の要旨を超えない範囲において、適宜に、変更したり、組み替えたり、組み合わせたり、省略したりしてもよい。
「A、B、およびCのうちの少なくとも1つ」という形式におけるリストに含まれる項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、B、およびC)を意味することができると理解されたい。同様に、「A、B、またはCのうちの少なくとも1つ」の形式においてリストされた項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、B、およびC)を意味することができる。
100……ストレージシステム、101……コントローラ。

Claims (2)

  1. 複数のコントローラと、所定サイズの複数の記憶領域とを備え、
    ホストに対して論理領域を提供し、
    それぞれの記憶領域に複数の論理領域のデータが混在可能であり、
    それぞれの記憶領域が複数のコントローラのいずれかに割り当て可能であり、
    それぞれの論理領域へのアクセス処理の権限が複数のコントローラのいずれかに割り当てられる、ストレージシステムにおいて、
    アクセス処理の権限が自コントローラに割り当てられている論理領域へのWrite要求を受信したコントローラが、
    Write要求に係る更新前データを格納する記憶領域が自コントローラに割り当てられているか否かを判定し、
    更新前データを格納する記憶領域が自コントローラに割り当てられている場合に、Write要求に係る更新後データを自コントローラに割り当てられているいずれかの記憶領域に書き込むとともに、更新前データを無効にし、
    更新前データを格納する記憶領域が自コントローラに割り当てられていない場合に、Write要求に係る更新後データを自コントローラに割り当てられているいずれかの記憶領域に書き込むとともに、更新前データのアドレスを、更新前データを格納する記憶領域が割り当てられているコントローラに通知して更新前データを無効にさせ、
    自コントローラに割り当てられている記憶領域のGC処理を行うコントローラが、
    GC処理の対象の記憶領域の有効なデータのうち、自コントローラにアクセス処理の権限が割り当てられている論理領域のデータのすべてを自コントローラに割り当てられている他の記憶領域に移動させ、その後、当該記憶領域の割当てを、当該記憶領域の有効なデータに対応する論理領域へのアクセス処理の権限が割り当てられているコントローラに移管する、
    ストレージシステム。
  2. 複数のコントローラと、所定サイズの複数の記憶領域とを備え、
    ホストに対して論理領域を提供し、
    それぞれの記憶領域に複数の論理領域のデータが混在可能であり、
    それぞれの記憶領域が複数のコントローラのいずれかに割り当て可能であり、
    それぞれの論理領域へのアクセス処理の権限が複数のコントローラのいずれかに割り当てられる、ストレージシステムが行うデータ管理方法において、
    アクセス処理の権限が自コントローラに割り当てられている論理領域へのWrite要求を受信したコントローラが、
    Write要求に係る更新前データを格納する記憶領域が自コントローラに割り当てられているか否かを判定し、
    更新前データを格納する記憶領域が自コントローラに割り当てられている場合に、Write要求に係る更新後データを自コントローラに割り当てられているいずれかの記憶領域に書き込むとともに、更新前データを無効にし、
    更新前データを格納する記憶領域が自コントローラに割り当てられていない場合に、Write要求に係る更新後データを自コントローラに割り当てられているいずれかの記憶領域に書き込むとともに、更新前データのアドレスを、更新前データを格納する記憶領域が割り当てられているコントローラに通知して更新前データを無効にさせ、
    自コントローラに割り当てられている記憶領域のGC処理を行うコントローラが、
    GC処理の対象の記憶領域の有効なデータのうち、自コントローラにアクセス処理の権限が割り当てられている論理領域のデータのすべてを自コントローラに割り当てられている他の記憶領域に移動させ、その後、当該記憶領域の割当てを、当該記憶領域の有効なデータに対応する論理領域へのアクセス処理の権限が割り当てられているコントローラに移管する、
    データ管理方法。
JP2020141524A 2020-08-25 2020-08-25 ストレージシステムおよびデータ管理方法 Active JP7313321B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2020141524A JP7313321B2 (ja) 2020-08-25 2020-08-25 ストレージシステムおよびデータ管理方法
CN202110191209.0A CN114115705A (zh) 2020-08-25 2021-02-20 存储系统和数据管理方法
US17/194,579 US11455105B2 (en) 2020-08-25 2021-03-08 Storage system and data management method of switching access authority

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020141524A JP7313321B2 (ja) 2020-08-25 2020-08-25 ストレージシステムおよびデータ管理方法

Publications (2)

Publication Number Publication Date
JP2022037404A JP2022037404A (ja) 2022-03-09
JP7313321B2 true JP7313321B2 (ja) 2023-07-24

Family

ID=80358504

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020141524A Active JP7313321B2 (ja) 2020-08-25 2020-08-25 ストレージシステムおよびデータ管理方法

Country Status (3)

Country Link
US (1) US11455105B2 (ja)
JP (1) JP7313321B2 (ja)
CN (1) CN114115705A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023085874A (ja) 2021-12-09 2023-06-21 株式会社日立製作所 ストレージシステムおよびデータ管理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014512578A (ja) 2011-08-04 2014-05-22 株式会社日立製作所 実記憶領域動的割当方法を用いたストレージシステム
JP2016167195A (ja) 2015-03-10 2016-09-15 富士通株式会社 ストレージ装置、ストレージ制御プログラム、ストレージ制御方法、およびストレージシステム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI472916B (zh) * 2008-06-02 2015-02-11 A Data Technology Co Ltd 記憶體儲存空間管理方法
JP5236078B2 (ja) * 2009-06-18 2013-07-17 株式会社日立製作所 記憶制御装置及び記憶制御装置の制御方法
JP6114397B2 (ja) 2013-03-18 2017-04-12 株式会社日立製作所 複合型ストレージシステム及び記憶制御方法
WO2014174570A1 (ja) * 2013-04-22 2014-10-30 株式会社日立製作所 ストレージ管理計算機、ストレージ管理方法、およびストレージシステム
US11048549B2 (en) * 2019-04-04 2021-06-29 Google Llc Transferral of process state and/or components in computing environments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014512578A (ja) 2011-08-04 2014-05-22 株式会社日立製作所 実記憶領域動的割当方法を用いたストレージシステム
JP2016167195A (ja) 2015-03-10 2016-09-15 富士通株式会社 ストレージ装置、ストレージ制御プログラム、ストレージ制御方法、およびストレージシステム

Also Published As

Publication number Publication date
US11455105B2 (en) 2022-09-27
JP2022037404A (ja) 2022-03-09
US20220066664A1 (en) 2022-03-03
CN114115705A (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
US10523786B2 (en) I/O bandwidth reduction using storage-level common page information
US9946460B2 (en) Storage subsystem and storage system architecture performing storage virtualization and method thereof
US9361034B2 (en) Transferring storage resources between snapshot storage pools and volume storage pools in a distributed network
CN106687911B (zh) 不损害数据完整性的在线数据移动
KR100490723B1 (ko) 파일 레벨 스트라이핑 장치 및 방법
US6912669B2 (en) Method and apparatus for maintaining cache coherency in a storage system
US10346075B2 (en) Distributed storage system and control method for distributed storage system
JP2019057155A (ja) メモリシステムおよび制御方法
JP4105398B2 (ja) 情報処理システム
JP5228466B2 (ja) バックアップ装置、バックアップ方法およびバックアッププログラム
US20070233997A1 (en) Storage system for processing access request from host and method for doing the same
US20110029730A1 (en) Data processing system using cache-aware multipath distribution of storage commands among caching storage controllers
CN103942011B (zh) 一种差量快照系统及其使用方法
US8650381B2 (en) Storage system using real data storage area dynamic allocation method
US7188128B1 (en) File system and methods for performing file create and open operations with efficient storage allocation
JP2002063052A (ja) 分散処理システム
WO2004055675A1 (ja) ファイル管理装置、ファイル管理プログラム、ファイル管理方法およびファイルシステム
JP2005056077A (ja) データベース制御方法
JP7313321B2 (ja) ストレージシステムおよびデータ管理方法
US10802748B2 (en) Cost-effective deployments of a PMEM-based DMO system
JP2022163604A (ja) 分散ストレージシステム及び記憶制御方法
JP7435735B2 (ja) 分散処理システム、分散処理システムの制御方法、及び、分散処理システムの制御装置
JP2020154626A (ja) 分散ストレージシステム、データ管理方法、及びデータ管理プログラム
KR100472207B1 (ko) 다중 레이드 제어기를 통한 데이터 분산 공유 레이드 제어시스템
JP2023085874A (ja) ストレージシステムおよびデータ管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210521

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230316

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230711

R150 Certificate of patent or registration of utility model

Ref document number: 7313321

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150