JP6884165B2 - 複数のストレージノードを含むストレージシステム - Google Patents

複数のストレージノードを含むストレージシステム Download PDF

Info

Publication number
JP6884165B2
JP6884165B2 JP2019033920A JP2019033920A JP6884165B2 JP 6884165 B2 JP6884165 B2 JP 6884165B2 JP 2019033920 A JP2019033920 A JP 2019033920A JP 2019033920 A JP2019033920 A JP 2019033920A JP 6884165 B2 JP6884165 B2 JP 6884165B2
Authority
JP
Japan
Prior art keywords
controller
write data
storage system
ctl
host
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
JP2019033920A
Other languages
English (en)
Other versions
JP2020140325A (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 JP2019033920A priority Critical patent/JP6884165B2/ja
Priority to US16/551,778 priority patent/US11347432B2/en
Publication of JP2020140325A publication Critical patent/JP2020140325A/ja
Application granted granted Critical
Publication of JP6884165B2 publication Critical patent/JP6884165B2/ja
Priority to US17/731,626 priority patent/US11755249B2/en
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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、複数のストレージノードを含むストレージシステムに関する。
近年、IoT(Internet of Things)やAI(Artifical Inteligence)に代表されるような膨大なデータを蓄積、及び分析することにより、新たな価値を生み出す技術の重要性が増している。これらの技術では、膨大なデータを蓄積可能な容量だけでなく、蓄積したデータを分析するために高性能なI/O(Input/Output)性能を有するストレージシステムが必要となる。
一方、ストレージシステムの導入にあたっては、導入コストを抑えるため、導入初期は小規模な構成のシステムを導入し、事業規模の拡大に合わせてシステムを拡張していくことが望ましい。これを実現する方式の一つとして、スケールアウト型ストレージシステムがある。スケールアウト型ストレージシステムでは、事業規模が拡大し、必要となるI/O性能が増加してきたら、ストレージ装置(Node)の台数を増やすことで、ストレージシステムのI/O性能を向上することが可能である。
スケールアウト型ストレージシステムのI/O性能を向上させる1つの手段として、スケールアウト型ストレージシステムのキャッシュ制御が考えられる。キャッシュ制御に関して、例えば特許文献1の技術が知られている。特許文献1では、キャッシュ制御として、キャッシュを割り当てるNodeを制御することで、リード性能を向上させる方式が述べられている。
特願2017−524248号公報
一般に、スケールアウト型ストレージシステムにおけるNode間接続は、「疎結合」である。本明細書において、「疎結合」とは、一方のNodeから他方のNodeのキャッシュメモリ領域(以下単に、キャッシュ領域)にデータを入出力できないNode間接続を意味する。疎結合のストレージシステムでは、一方のNodeは、自分のキャッシュ領域を管理するが、他方のNodeのキャッシュ領域を管理しない。
このため、一方のNodeは、自分のキャッシュ領域からデータの格納先キャッシュセグメント(キャッシュサブ領域)を確保できるが、他のNodeのキャッシュ領域からキャッシュセグメントを確保できない。結果として、疎結合のNode間でI/Oデータ(I/O要求に従い入出力される対象のデータ)が転送された場合、そのI/Oデータは、転送元のNodeのキャッシュ領域にも転送先のNodeのキャッシュ領域にも格納されることになる。
そこで、スケールアウト型ストレージシステムにおけるNode間接続を、「密結合」にすることを検討する。本明細書において、「密結合」とは、一方のNodeから他方のNodeのキャッシュ領域にI/Oデータを入出力できるNode間接続を意味する。密結合のストレージシステムでは、一方のNodeは、自分のキャッシュ領域だけでなく、他方のNodeのキャッシュ領域を管理する。このため、一方のNodeは、自分のキャッシュ領域と他のNodeのキャッシュ領域のいずれからもキャッシュセグメントを確保できる。結果として、密結合のNode間でI/Oデータが転送された場合、そのI/Oデータは、転送元のNodeのキャッシュ領域と転送先のNodeのキャッシュ領域とのいずれか一方にのみ格納されることになる。
このように、密結合では、1つのI/Oデータについて、キャッシュセグメントが確保されるキャッシュ領域は1つでよい。なお、ライトにおいて、キャッシュセグメントの二重化(冗長化)が行われることがある。その場合、メインのキャッシュセグメント(正面)が確保されるキャッシュ領域は1つでよく、サブのキャッシュセグメント(副面)が確保されるキャッシュ領域は1つ以上でよい。以降、明細書においては、「密結合」のスケールアウト型ストレージシステムを前提とする。
スケールアウト型ストレージシステムは、前述のとおり、性能を拡張性可能な点で、従来の非スケールアウト型ストレージに対する利点がある一方、Node間でI/Oデータを複写する回数が多くなり、Node間を接続する経路の帯域がボトルネックとなり、ストレージシステムのI/O性能が下がる場合がある。そこで、特許文献1では、Node間でのI/Oデータ複写回数が小さくなるよう、I/Oパタンと接続形態の一方又は両方を用いて、キャッシュを確保するNode(Nodeに複数のストレージコントローラ(CTL)が含まれる場合、CTL)を決定する方式が述べられており、これによりストレージシステムのリード性能を向上させることができる。
一方、ライト性能については、特許文献1では改善方式が述べられていない。一般的にライトバック方式を採用するストレージシステムでは、キャッシュメモリにI/Oデータを格納した時点でI/O要求元のホストにライト完了を通知する。このため、単一のNode障害でI/Oデータを消失しないよう、I/Oデータを最終記憶媒体に格納するまでの間、2つ以上のNodeでI/Oデータを複製してキャッシュする方式が用いられる。このため、リードと比較し、ライトの場合はNode間のデータ複写回数が多くなり、Node間のデータパス帯域がボトルネックとなった場合、従来の非スケールアウト型ストレージよりも性能が低下する。
一方、ストレージシステムでは、I/Oのレスポンス性能を改善するため、高頻度でアクセスされるデータを可能な限りキャッシュに保持しておくことが望ましい。このため、単純にCTL間のデータ複写が少なくなるようにキャッシュを確保しても、ホストからのアクセスパタンによっては、特定のNodeでキャッシュヒット率の高いデータがキャッシュに保持できず、キャッシュヒット率が低下することで、レスポンス性能の悪化を招いてしまう。よって、レスポンス性能の低下を招くことなく、ライトスループット性能を向上させることが課題である。
本発明の一態様は、ネットワークを介して通信する複数のストレージノードを含むストレージシステムであって、前記複数のストレージノードのそれぞれは、1以上のコントローラを含み、前記コントローラにおける少なくとも1つのコントローラは、ホストからライトデータを受信するコントローラと、前記ライトデータを処理するコントローラとに基づいて、前記ライトデータを格納するキャッシュサブ領域を確保する少なくとも二つのコントローラを指定し、指定したコントローラにおいて、キャッシュサブ領域を確保する。
本発明の一態様により、ストレージシステムの性能を向上させる。
メインストレージシステムを含む情報システムの構成例を示す図である。 主記憶の構成例を示す図である。 プログラム領域の構成例を示す図である。 管理情報領域の構成例を示す図である。 PDEV管理テーブルの構成例を示す図である。 LDEV管理テーブルの構成例を示す図である。 バッファセグメント管理テーブルの構成例を示す図である。 キャッシュセグメント管理テーブルの構成例を示す図である。 メインストレージシステムにおいて、従来方式におけるシーケンシャルライト時のデータ転送の一例を示す図である。 メインストレージシステムにおいて、本発明に基づく方式におけるシーケンシャルライト時のデータ転送の一例を示す図である。 メインストレージシステムにおけるホストらのI/O要求に基づく処理流れの一例を示すシーケンス図である。 メインストレージシステムにおけるライト要求を処理する過程でセグメントを確保するストレージコントローラを決定する処理の一例を示すシーケンス図である。 メインストレージシステムにおける特定のストレージコントローラを指定してセグメントを確保するストレージコントローラを決定する処理の一例を示すシーケンス図である。 メインストレージシステムにおけるストレージコントローラ間のデータ複写回数を最小化するようにセグメントを確保するストレージコントローラを決定する処理の一例を示すシーケンス図である。 メインストレージシステムにおけるセグメントを確保する処理の一例を示すシーケンス図である。 メインストレージシステムにおけるライト処理の一例を示すシーケンス図である。 メインストレージシステムにおけるセグメントを解放する処理の一例を示すシーケンス図である。
以下、図面を用いて実施例を説明する。なお、実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。以下の説明では、「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。
以下の説明では、要素の識別情報として番号が使用されるが、他種の識別情報(例えば名前、識別子)が使用されて良い。また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号における共通符号(又は参照符号)を使用し、同種の要素を区別して説明する場合は、参照符号(又は要素のID)を使用することがある。
以下の説明では、「主記憶」は、メモリを含んだ1以上の記憶デバイスでよい。例えば、主記憶は、主記憶デバイス(典型的に揮発性の記憶デバイス)及び補助記憶デバイス(典型的には不揮発性の記憶デバイス)のうちの少なくとも主記憶デバイスでよい。また、記憶部は、キャッシュ領域(例えばキャッシュメモリ又はその一部領域)とバッファ領域(例えばバッファメモリ又はその一部領域)とのうちの少なくとも1つを含んでもよい。
以下の説明では、「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよい。PDEVは、例えば、HDD(Hard Disk Drive)又はSSD(olid State Drive)でよい。以下の説明では、「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。
RAIDグループは、複数のPDEVで構成され、そのRAIDグループに関連付けられたRAIDレベルに従いデータを記憶する。RAIDグループは、パリティグループと呼ばれてもよい。パリティグループは、例えば、パリティを格納するRAIDグループのことでよい。以下の説明では、「LDEV」は、論理的な記憶デバイスを意味し、RAIDグループ、またはPDEVから構成され、ホストは「LDEV」に対してI/O要求を実行する。
以下、「プログラム」を主語として処理を説明することがある場合、プログラムは、ストレージコントローラに含まれるプロセサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えば主記憶)及び/又は通信インタフェース装置(例えばHCA)を用いながら行うため、処理の主語がストレージコントローラ或いはプロセサとされてもよい。また、ストレージコントローラは、処理の一部又は全部を行うハードウェア回路を含んでもよい。コンピュータプログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ、又は、コンピュータ読取可能な記憶メディアであってもよい。
以下の説明では、「ホスト」は、ストレージシステムにI/O要求を送信するシステムであり、インターフェースデバイスと、記憶部(例えばメモリ)と、それらに接続されたプロセッサとを有してよい。ホストシステムは、1以上のホスト計算機で構成されてよい。少なくとも1つのホスト計算機は、物理的な計算機でよく、ホストシステムは、物理的なホスト計算機に加えて仮想的なホスト計算機を含んでよい。
以下、I/Oパタン及び接続形態に応じてキャッシュ先ストレージ装置を決定するストレージシステムの例を説明する。一般的に、ストレージシステムにおいて、ランダムアクセス時のI/O処理は、プロセサ処理がボトルネックとなり、シーケンシャルアクセス時のI/O処理は、データパス帯域(Node間を含む)がボトルネックとなる。また、シーケンシャルアクセスされるデータは、再度アクセスされる可能性が低い。
そこで、以下に説明する例において、ストレージシステムは、Node間のデータパスがボトルネックとなるシーケンシャルライト時、Node間のデータ複写回数が少なくなるようにキャッシュ領域を確保するNodeを決定する。さらに、一例において、ストレージシステムは、最終記憶媒体にI/Oデータを格納した後、すぐにキャッシュ領域を解放する。以下に説明する例において、ストレージシステムは、ランダムライト時、Node間でキャッシュ利用効率が高くなるようにキャッシュ領域を確保するNodeを決定する。
なお、以下に説明する実施例は、請求の範囲にかかる発明を限定するものではなく、また実施例の中で説明されている特徴の組合せの全てが発明の解決手段に必須であるとは限らない。たとえば、ストレージシステムは、ライト要求のアクセスパタン(シーケンシャルライト/ラインダムライト)と独立に、以下に説明するようにNode間のデータ複写回数が少なくなるようにキャッシュ領域を確保するNodeを決定してもよい。
図1は、情報システム0101の構成例を示す図である。情報システム0101は、1つ以上のメインストレージシステム0102、1つ以上のリモートストレージシステム0103、1つ以上のホスト0104から構成されている。リモートストレージシステム0103は、含んでいなくてもよい。また、図1では、メインストレージシステム0102とリモートストレージシステム0103、及びメインストレージシステム0102とホスト0104は直接接続されているが、SAN(SAN:Storage Area Network)、LAN(LAN:Loacal Area Network)、及びWAN(WAN:World Area Network)などのネットワークを介して接続されていてもよい。
メインストレージシステム0102は、1つ以上のNode0105(ストレージノードとも呼ぶ)、及び1つ以上の外部SW(SW:SWitch)0116から構成されている。図1では、Node0105は、外部SW0106を介して接続されているが、Node0105間で直接接続されていてもよい。
複数のNode0105の各々を、1つのNode0105を例に取り説明する。Node0105は、1つ以上のストレージコントローラ(CTL)0107、及び1つ以上のPDEV BOX0108を含む。また、PDEV BOX0108は、1つ以上のPDEV0113を有し、CTL0107とPDEV0113の接続を仲介している。
図1では、CTL0107は、直接PDEV BOX0108に接続されているが、Switchなどを介して接続されていてもよい。また、PDEV BOX0108を介さず、CTL0107とPDEV0113は直接接続されていてもよい。さらに、同一Node0105内のCTL0107間は、外部SW0116を介して接続されているが、直接接続されていてもよい。
複数のCTL0107の各々を、1つのCTL0107を例に取り説明する。CTL0107は、プロセサ0106、主記憶0109、FE I/F(FrontEnd Interface)0110、BE I/F(BackEnd Interface)0111、及びHCA(Host Channel Adapter)0112を含む。CTL0107を構成する各種要素の数は、1以上でよい。
プロセサ0106は、CTL0107全体を制御し、主記憶0109に格納されたマイクロプログラムに基づき動作する。FE I/F0110は、プロセサ0106により制御され、ホスト0104、及びリモートストレージシステム0103とI/O要求やI/Oデータの送受信などを実施する。BE I/F0111は、プロセサ0106により制御され、PDEV BOX0108を介し、PDEV0113とI/Oデータの送受信などを実施する。HCA0112は、プロセサ0106により制御され、外部SW0116を介して他のCTL0107と制御情報やI/Oデータの送受信などを実施する。
本実施例では、Node0105間接続は、密結合である。密結合のストレージシステムでは、Node0105間の通信で使用される通信プロトコルと、CTL0107内のデバイス(要素)間の通信で使用される通信プロトコルは、同じである。どちらの通信プロトコルも、例えば、PCIe(PCI−express)である。
一方、疎結合のストレージ装置では、Node間の通信で使用される通信プロトコルと、ストレージ装置内のデバイス間の通信で使用される通信プロトコルは、異なる。前者の通信プロトコルは、例えば、FC(Fibre Channel)又はIP(Internet Protocol)であり、後者の通信プロトコルは、例えば、PCIeである。なお、密結合及び疎結合の定義は、既に説明した通りである。
図2は、主記憶0109の構成例を示す図である。主記憶0109には、プログラム領域0201、管理情報領域0202、バッファ領域0203、及びキャッシュ領域0204が確保されている。プログラム領域0201は、同一CTL0107のプロセサ0106が処理を実施するための各プログラムが格納されている領域である。管理情報領域0202は、メインストレージシステム0102内の全てのプロセサからアクセスされる領域で、各種管理テーブルが格納される領域である。
バッファ領域0203、及びキャッシュ領域0204は、同一CTL0107のFE I/F0110、BE I/F0111、及びHCA0112等によるデータ転送の再に、一時的にデータが格納される領域である。なお、バッファ領域0203とキャッシュ領域0204は、複数のセグメント(キャッシュ領域を区切った単位であり、キャッシュサブ領域とも呼ぶ)で構成され、セグメント単位で領域が確保される。また、バッファ領域0203から読みだされたデータは、バッファ領域0203には残らない。一方、キャッシュ領域0204から読み出されたデータは、キャッシュ領域0204に残る。
図3は、プログラム領域0201に格納されるプログラムの一例を示す図である。プログラム領域0201には、例えば、I/O要求のCTL間振り分けプログラム0301、I/Oプログラム0302、I/Oパタン判定プログラム0303、セグメント確保プログラム0304、セグメント解放プログラム0305、フリーセグメント確保プログラム0306、及びストレージコントローラ間データ転送プログラム0307が格納される。
ホスト0104からのI/O要求を受けると、I/O要求のCTL間振り分けプログラム0301は、当該I/O要求を担当するCTL0107を決定し、振り分ける。振り分けは、あらかじめLDEVごとにI/O要求を処理するCTL0107を決めておいてもよいし、動的に決定してもよい。次に、I/O要求を割り振られたCTL0107のプロセサ0106は、I/Oプログラム0302を実行することにより、I/O要求に従い、対応する処理を実行する。
I/Oパタン判定プログラム0303は、例えばI/Oプログラム0302がI/O要求を処理する過程で呼び出され、I/O要求のアクセスパタン(アクセスパタン又はI/Oパタン)が、シーケンシャルであるか、ランダムであるかを判定する。セグメント確保プログラム0304は、例えばI/Oプログラム0302がI/O要求を処理する過程で呼び出され、バッファセグメント、及びキャッシュセグメントを確保する。セグメント解放プログラム0305は、例えばI/Oプログラム0302がI/O要求を処理する過程で呼び出され、バッファセグメント、及びキャッシュセグメントを解放する。
フリーセグメント確保プログラム0306は、I/O要求とは非同期的に実行され、バッファセグメント、及びキャッシュセグメントのうち、確保可能な状態のセグメント(フリーセグメント)の量を一定以上に保つ。ストレージコントローラ間データ転送プログラム0307は、例えばI/Oプログラム0302がI/O要求を処理する過程などで呼び出され、CTL0107間でのデータ転送を実行する。
図4は、管理情報領域0202に格納される情報の一例を示す図である。管理情報領域0202には、PDEV管理テーブル0401、LDEV管理テーブル0402、バッファセグメント管理テーブル0403、及びキャッシュセグメント管理テーブル0404が格納される。
PDEV管理テーブル0401は、メインストレージシステム102内の全てのPDEV0113の状態や、CTL0107との対応関係を示す。LDEV管理テーブル0402は、メインストレージシステム102内の全てのPDEV0113とLDEVの対応関係を示す。バッファセグメント管理テーブル0403は、メインストレージシステム102内の全てのバッファ領域0203を管理するのに用いられる。キャッシュセグメント管理テーブル0404は、メインストレージシステム102内の全てのキャッシュ領域0204を管理するのに用いられる。
図5は、PDEV管理テーブル0401の構成例を示す図である。PDEV管理テーブル0401は、PDEV#0501、容量0502、状態0503、及び接続CTL#0504のエントリを有する。PDEV#0501は、PDEV0113の識別子である。容量0502は、PDEV0113のデータを格納可能な容量を示す。状態0503は、PDEV0113が正常に動作中か否か(故障していないか)の状態を示す。接続CTL#0504は、PDEV0113に接続され、アクセスするCTL0107を示す。
図6は、LDEV管理テーブル0402の構成例を示す図である。LDEV管理テーブル0402は、LDEV#0601、容量0602、状態0603、冗長構成0604、及び構成情報0605のエントリを有する。
LDEV#0601は、LDEVの識別子である。容量0602は、LDEVにデータを格納可能な容量を示す。状態0503は、LDEVへ正常にI/O可能か否かを示す。冗長構成0604は、RAIDによる冗長化、またはリモートストレージシステム0103とのストレージシステム冗長化の状態を示す。構成情報0605は、LDEVに属するPDEV0113、及びストレージシステム冗長化の対応リモートストレージシステム0103を示す。
図7は、バッファセグメント管理テーブル0403の構成例を示す図である。バッファセグメント管理テーブル0403は、セグメント#0701、CTL#0702、状態0703を有する。セグメント#0701は、バッファセグメントの識別子である。CTL#0702は、CTL0107の識別子であり、当該バッファセグメントの利用権利を有したCTL0107を示している。状態0703は、バッファセグメントが確保されているか否か(ロック、フリー)を示す。
図8は、キャッシュセグメント管理テーブル0404の構成例を示す図である。キャッシュセグメント管理テーブル(0404)は、セグメント#0801、LDEV#0802、LDEV内セグメント#0803、CTL#0804、状態0805、及び属性0806を有する。
セグメント#0801は、キャッシュセグメントの識別子である。LDEV#は、LDEVの識別子である。LDEV内セグメント#0803は、当該キャッシュセグメントがLDEVの論理アドレス空間上のどこに割り当てられているかを一意に確定する識別子である。CTL#0804は、CTL0107の識別子であり、当該バッファセグメントの利用権利を有したCTL0107を示している。
状態0805は、キャッシュセグメントの状態を表し、「フリー」は未使用、「ロック」は確保済みだが未使用、「クリーン」確保済みでPDEVにデータ格納済み、及び「ダーティー」は確保済みでPDEVにデータ未格納であることを示す。属性0806は、当該キャッシュセグメントが正面、または副面のどちらで確保されているかを示す。
図9は、メインストレージシステム0102において、従来方式を用いた、シーケンシャルライトにおけるライトシーケンスの一例を示したものである。本図は、ライトシーケンスを説明するため、情報システム0101の構成要素を一部省略して記載している。また、メインストレージシステム0102を構成する要素のうち、複数存在し、かつ説明上識別する必要のあるものについて、4桁の通番に加え、アルファベット一文字を付加し、区別している。
ライト処理で必要となる、キャッシュセグメントの正面0902、及び副面0903は、それぞれCTL0107Dのキャッシュ領域0204D、及びCTL0107Bのキャッシュ領域0204Bに確保されている。データ0901の流れを示す矢印0904、0905、0906、0907、0908、0909、0910、及び0911より、データ0901のCTL間データ複写の回数は、3回である。
図10は、メインストレージシステム0102において、本実施例の方式を用いた、シーケンシャルライトにおけるライトシーケンスの一例を示したものである。本図は、ライトシーケンスを説明するため、情報システム0101の構成要素を一部省略して記載している。
図9との差分は、正面1001と副面1002を確保するCTL0107である。データ0901の流れを示す矢印1003、1004、1005、及び1006に示すとおり、データ0901のCTL間複写回数は、図9の3回から1回に減少している。
図11は、ストレージシステム(メイン)0102がホスト0104から受領したI/O要求を処理する流れの一例を示したフロー図である。CTL0107は、ホスト0104からのI/O要求を受領する(1101)。ホスト0104からI/O要求を受領したCTL0107は、当該I/Oを担当するCTL0107を決定し、その担当CTL0107が、処理を継続する(1102)。
担当CTL0107は、I/O要求を解析し、アクセス先のLDEV、I/O要求種別(リード要求、ライト要求、他)、及びアクセスパタン(ランダムアクセスまたはシーケンシャルアクセス)を判定する。例えば、アクセス先の連続アドレスが所定値より大きい場合に、シーケンシャルと判定される。アクセスパタンは、LDEVごとに直近のI/O履歴を取得して判定することにより、ストレージシステム(メイン)が判定してもよいし、ホスト0104からアクセスパタンに関するヒント情報を取得して判定してもよい(1103)。
担当CTL0107は、ホスト0104からのI/O要求の解析1103で明らかにしたI/O要求種別を用いて、I/O要求種別がライト要求であるか否かを判定する(1104)。I/O要求種別がライト要求の場合(1104:Yes)、担当CTL0107は、ステップ1105へ進む(A)。一方、I/O要求種別がライト要求でない場合(1104:No)、担当CTL0107は、ステップ1110へ進む(B)。
(A)
I/O要求種別がライト要求の場合(1104:Yes)、担当CTL0107は、PDEV管理テーブル0401とLDEV管理テーブル0402を参照し、当該I/OのLDEVに関する情報、及び当該LDEVを構成するPDEVの情報を取得する(1105)。担当CTL0107は、セグメント確保CTL決定処理を呼び出し、ライト処理に必要なキャッシュセグメントを確保するCTL0107を決定する(1106)。なお、セグメント確保CTL決定処理1106の詳細は、後述する。
担当CTL0107は、セグメント確保CTL決定処理1106での決定に基づき、キャッシュセグメント、及びバッファセグメントを確保する(1107)。なお、セグメント確保処理1107の詳細は、後述する。担当CTL0107は、ライト処理を呼び出し、セグメント確保処理1107で確保したセグメントを使用し、ライト処理を実行する(1108)。なお、ライト処理1108の詳細は、後述する。
担当CTL0107は、セグメント解放処理を呼びだし、セグメント確保処理1107で確保したセグメントの一部、または全てを解放し、処理を終了する(1109)。なお、セグメント解放処理1109の詳細は、後述する。
(B)
I/O要求種別がライト要求でない場合(1104:No)、担当CTL0107は、I/O要求に基づき処理を実行した(1110)後、処理を終了する。当該処理は、本実施例の影響を受けないため、詳細な説明を省略する。
図12は、図11で説明したフローから呼び出される、セグメント確保CTL決定処理1106の流れの一例を示したフロー図である。担当CTL0107は、ホスト0104からのI/O要求の解析1103で明らかにしたアクセスパタンを参照し、アクセスパタンはシーケンシャルであるか否かを判定する(1201)。アクセスパタンがシーケンシャルである場合(1201:Yes)、担当CTL0107は、ステップ1202に進む(A)。一方、アクセスパタンがシーケンシャルでない場合(1201:No)、担当CTL0107は、ステップ1208に進む(G)。
(A)
アクセスパタンがシーケンシャルである場合(1201:Yes)、担当CTL0107は、ステップ1105で取得したLDEV情報を用いて、ストレージ間冗長化のLDEVに対するライトであるか否かを判定する(1202)。ストレージ間冗長化のLDEVに対するライトデータは、リモートストレージシステム0103に接続されているCTL0107によって、リモートストレージシステム0103に転送される。ストレージ間冗長化のLDEVに対するライトの場合(1202:Yes)、担当CTL0107は、ステップ1203に進む(B)。一方、ストレージ間冗長化のLDEVに対するライトでない場合(1202:No)、担当CTL0107は、ステップ1205に進む(C)。
(B)
ストレージ間冗長化のLDEVに対するライトの場合(1202:Yes)、担当CTL0107は、当該LDEVがストレージ間冗長化をしているストレージコントローラ(リモート)0103が接続されているCTLのCTL#を取得し(1203)、ステップ1204に進む(E)。なお、取得方法は、あらかじめストレージシステム同士の接続状態を管理するテーブルを作成しておき、これを参照してもよいし、ストレージシステム(メイン)0102を構成する全てのCTL0107に問い合わせてもよい。
(C)
ストレージ間冗長化のLDEVに対するライトでない場合(1202:No)、担当CTL0107は、当該LDEVへのライトについて、担当CTL0107でホスト0104からライトされたデータを参照する処理(例えば、スナップショットなどライトに起因する処理)が存在するか否かを判定する(1205)。担当CTL0107でデータを参照する処理が存在する場合(1205:Yes)、担当CTL0107は、ステップ1206へ進む(D)。一方、担当CTL0107でデータを参照する処理が存在しない場合(1205:No)、担当CTL0107は、ステップ1207へ進む(F)。
(D)
担当CTL0107でデータを参照する処理が存在する場合(1205:Yes)、担当CTL0107は、担当CTL自身のCTL#を取得し(1206)、ステップ1204へ進む(E)。
(E)
担当CTL0107は、ステップ1203、またはステップ1206で取得したCTL#を引数とし、CTL#指定のセグメント確保CTL決定処理1106を呼び出し、指定したCTL#でセグメントを確保したうえで、CTL間のデータ複写回数が最小となるように、ライト処理に必要なセグメントを確保し(1204)、処理を終了する。なお、CTL#指定のセグメント確保処理1204の詳細は、後述する。
(F)
担当CTL0107でデータを参照する処理が存在しない場合(1205:No)、担当CTL0107は、CTL間データ複写回数最小セグメント確保CTL決定処理を呼び出し、CTL間のデータ複写回数が最小となるように、ライト処理に必要なセグメントを確保し(1207)、処理を終了する。なお、CTL間データ複写回数最小セグメント確保CTL決定処理1207の詳細は、後述する。
(G)
アクセスパタンがシーケンシャルでない場合(1201:No)、担当CTL0107は、キャッシュセグメントを「CTLの指定なしで確保」することに決定し、結果を返却する(1208)。
図13は、図12で説明したフローから呼び出される、CTL#指定のセグメント確保CTL決定処理1204の流れの一例を示したフロー図である。担当CTL0107は、キャッシュセグメントの正面を「担当CTLで確保」することに決定する(1301)。
担当CTL0107は、引数として渡された指定のCTL#を用いて、指定のCTLと担当CTL0107が一致するか否かを判定する(1302)。指定のCTLと担当CTL0107が一致する場合(1302:Yes)、担当CTL0107は、ステップ1303に進む(A)。一方、指定のCTLと担当CTL0107が一致しない場合(1302:No)、担当CTL0107は、ステップ1309に進む(G)。
(A)
指定のCTLと担当CTLが一致する場合(1302:Yes)、担当CTL0107は、担当CTL0107にライト先のPDEVが接続されているか否かを判定する(1303)。担当CTL0107にライト先のPDEVが接続されている場合(1303:Yes)、担当CTL0107は、ステップ1304に進む(B)。一方、担当CTLにライト先のPDEVが接続されていない場合(1303:No)、担当CTL0107は、ステップ1306に進む(D)。
(B)
担当CTL0107にライト先のPDEVが接続されている場合(1303:Yes)、担当CTL0107は、担当CTL0107にホスト0104が接続されているか否かを判定する(1304)。担当CTLにホスト0104が接続されている場合(1304:Yes)、担当CTL0107は、ステップ1305に進む(C)。一方、担当CTL0107にホスト0104が接続されていない場合(1304:No)、担当CTL0107は、ステップ1307に進む(E)。
(C)
担当CTLにホスト0104が接続されている場合(1304:Yes)、担当CTL0107は、キャッシュセグメントの副面を「担当CTL以外で確保」することに決定し(1305)、結果を返却し、処理を終了する。
(D)
担当CTLにライト先のPDEVが接続されていない場合(1303:No)、担当CTL0107は、担当CTL0107にホスト0104が非接続であるか否かを判定する(1306)。担当CTLにホスト0104が非接続である場合(1306:Yes)、担当CTL0107は、ステップ1307に進む(E)。一方、担当CTL0107にホスト0104が非接続でない(接続されている)場合(1306:No)、担当CTL0107は、ステップ1308に進む(F)。
(E)
担当CTLにホスト0104が非接続である場合(1306:Yes)、担当CTL0107は、キャッシュセグメントの副面を「ホスト接続CTLで確保」することに決定し(1307)、結果を返却し、処理を終了する。
(F)
担当CTLにホスト0104が接続されている場合(1306:No)、担当CTL0107は、キャッシュセグメントの副面を「PDEV接続CTLで確保」することに決定し(1308)、結果を返却し、処理を終了する。
(G)
指定のCTLと担当CTL0107が一致しない場合(1302:No)、担当CTL0107は、キャッシュセグメントの副面を「指定CTLで確保」することに決定し(1309)、結果を返却し、処理を終了する。
上述のように、CTL#指定のセグメント確保CTL決定処理1204の開始時、リモートストレージシステムに接続されたCTLまたは担当CTLが、キャッシュセグメントを確保するCTLとして指定されている。リモートストレージシステムに接続されたCTLが指定されている場合(1302:No)、当該CTLのキャッシュセグメントが確保される(1309)。
担当CTLがライトデータを参照する処理が存在する場合(1205:Yes)、担当CTLのキャッシュセグメントが確保される(1301)。上記処理のために担当CTLはライトデータの複製を必要とする。また、担当CTLの自キャッシュセグメントの確保の負荷は、他のCTLのキャッシュセグメントの確保よりも小さい。したがって、CTL間のデータ複製の回数を低減しつつ、レスポンスを改善できる。
ストレージ間冗長化のライトのため、リモートストレージシステムに接続されているCTLはライトデータの複製を必要とする。ストレージ間冗長化のライトは長い時間を必要とし、さらに、当該ライトが完了した後にホストに対してライト完了の応答が送信される。したがって、リモートストレージシステムに接続されているCTLのキャッシュセグメントを確保することで、CTL間のデータ複製の回数を低減しつつ、レスポンスを改善できる。
CTL#指定のセグメント確保CTL決定処理1204の開始時、担当CTLが指定され(1302:Yes)、担当CTLがPDEVに接続されておらず(1303:No)、担当CTLがホストに接続されている場合(1306:No)、PDEVに接続されているCTLのキャッシュセグメントが確保される(1308)。PDEVはライトデータの最終格納媒体であり、PDEVに接続されているCTLは、ホスト又は他のCTLからライトデータを受信する。そのため、CTL間でのライトデータの複製回数を低減できる。
CTL#指定のセグメント確保CTL決定処理1204の開始時、担当CTLが指定され(1302:Yes)、担当CTLがホストに接続されていない場合(1304:Noまたは1306:Yes)、ホストに接続されているCTLのキャッシュセグメントが確保される(1307)。ホストに接続されているCTLがライトデータをホストから受信するため、CTL間でのライトデータの複製回数を低減できる。
CTL#指定のセグメント確保CTL決定処理1204の開始時、担当CTLが指定され(1302:Yes)、担当CTLがPDEVに接続されており(1303:Yes)、担当CTLがホストに接続されている場合(1304:Yes)、担当CTL以外のCTLのキャッシュセグメントが確保される(1305)。担当CTL以外のCTLは、ライトデータの複製を必要としておらず、キャッシュデータの二重化のために、任意のCTLを選択可能である。
なお、CTL#指定のセグメント確保CTL決定処理1204の開始時リモートストレージシステムに接続されたCTLが指定されている場合、ステップ1301は、担当CTLと異なるCTLを指定してもよい。上記フローにおいて、担当CTLのキャッシュセグメントが副面で、もう一方のCTLのキャッシュセグメントが正面であってもよい。
図14は、図12で説明したフローから呼び出される、CTL間データ複写回数最小セグメント確保CTL決定処理1207の流れの一例を示したフロー図である。
担当CTL0107は、担当CTL0107にライト先のPDEVが接続されているか否かを判定する(1401)。担当CTL0107にライト先のPDEVが接続されている場合(1401:Yes)、担当CTL0107は、ステップ1402に進む(A)。一方、担当CTL0107にライト先のPDEVが接続されていない場合(1401:No)、担当CTL0107は、ステップ1406に進む(D)。
(A)
担当CTL0107にライト先のPDEVが接続されている場合(1401:Yes)、担当CTL0107は、ホスト接続CTLにライト先のPDEVが接続されているか否かを判定する(1402)。ホスト接続CTLにライト先のPDEVが接続されている場合(1402:Yes)、担当CTL0107は、ステップ1403に進む(B)。一方、ホスト接続CTLにライト先のPDEVが接続されていない場合(1402:No)、担当CTL0107は、ステップ1407に進む(E)。
(B)
ホスト接続CTLにライト先のPDEVが接続されている場合(1402:Yes)、担当CTLは、担当CTL0107にホスト0104が接続されているか否かを判定する(1403)。担当CTL0107にホスト0104が接続されている場合(1403:Yes)、担当CTL0107は、ステップ1404に進む(C)。一方、担当CTL0107にホスト0104が接続されていない場合(1403:No)、担当CTL0107は、ステップ1407に進む(E)。
(C)
担当CTL0107にホスト0104が接続されている場合(1403:Yes)、担当CTL0107は、キャッシュセグメントの正面を「担当CTLで確保」することに決定する(1404)。担当CTL0107は、キャッシュセグメントの副面を「担当CTL以外で確保」することに決定し(1405)、結果を返却し、処理を終了する。
(D)
担当CTL0107にライト先のPDEVが接続されていない場合(1401:No)、担当CTL0107は、ホスト接続CTLにライト先のPDEVが接続されているか否かを判定する(1406)。ホスト接続CTLにライト先のPDEVが接続されている場合(1406:Yes)、担当CTL0107は、ステップ1407に進む(E)。一方、ホスト接続CTLにライト先のPDEVが接続されていない場合(1406:No)、担当CTL0107は、ステップ1409に進む(F)。
(E)
ホスト接続CTLにライト先のPDEVが接続されている場合(1406:Yes)、担当CTL0107は、キャッシュセグメントの正面を「担当CTLで確保」することに決定する(1407)。担当CTL0107は、キャッシュセグメントの副面を「ホスト接続CTLで確保」することに決定し(1408)、結果を返却し、処理を終了する。
(F)
ホスト接続CTLにライト先のPDEVが接続されていない場合(1406:No)、担当CTL0107は、キャッシュセグメントの正面を「ホスト接続CTLで確保」することに決定する(1409)。担当CTL0107は、キャッシュセグメントの副面を「PDEV接続CTLで確保」することに決定し(1410)、結果を返却し、処理を終了する。
図14を参照した上記フローは、シーケンシャルアクセス時のライトに限定して、ホストが接続されたCTLにキャッシュの正面及び副面の一方の面を配置し、PDEVが接続されているCTLに他方の面を配置する。一つのCTLがホスト及びPDEVに接続されている場合、当該CTL及び他のCTLが選択される。ホストに接続されたCTLはホストからライトデータを受信する。PDEVに接続されたCTLは、ライトデータをPDEVに格納する。したがって、キャッシュデータの二重化のためのCTL間の複製回数を低減することができる。
図12、13及び14を参照して説明したように、リモートストレージシステムに接続されたCTL、ライトデータの処理を行う担当CTL、ホストからライトデータを受信するCTL、及びPDEVにデータを格納するCTLは、それぞれ、ライトデータのキャッシュと独立して、異なる目的のために、ライトデータをホストまたは他のCTLから受信することが決まっている。したがって、これらがキャッシュセグメントを確保するCTLとして指定可能であることで、ライトデータのキャッシュ多重化のためのデータ転送回数を低減できる。
図15は、図11で説明したフローから呼び出される、セグメント確保処理1107の流れの一例を示したフロー図である。担当CTL0107は、キャッシュセグメント確保CTL決定処理1106での決定に基づき、キャッシュセグメントがCTL指定されているか否かを判定する(1501)。キャッシュセグメントがCTL指定されている場合(1501:Yes)、担当CTL0107は、ステップ1502に進む(A)。一方、キャッシュセグメントがCTL指定されていない場合(1501:No)、担当CTL0107は、ステップ1503に進む(B)。
(A)
キャッシュセグメントがCTL指定されている場合(1501:Yes)、担当CTL0107は、指定されたCTLにてキャッシュセグメントの正面と副面を確保し、担当CTL0107は、ステップ1504に進む(C)。
(B)
キャッシュセグメントがCTL指定されていない場合(1501:No)、担当CTL0107は、CTLごとのキャッシュセグメント使用量を算出し、CTL間で使用量が偏らないように正面と副面を選択した異なるCTLにそれぞれ確保(例えば、最も使用量の少ないCTLから順に正面と副面を確保)し、処理1504に進む(C)。これにより、キャッシュヒット率を上げることができる。なお、キャッシュセグメントを確保するCTLは、必ずしもCTLごとのキャッシュセグメント使用量に基づいて決定する必要はなく、例えば、前回に確保したCTLを記憶しておき、ラウンドロビンで正面と副面を確保するCTLを決定してもよい。
(C)
担当CTL0107は、ホスト0104が接続されたCTLにおいて正面又は副面が確保されているか否かを判定する(1504)。ホスト0104が接続されたCTLにおいて正面又は副面が確保されている場合(1504:Yes)、担当CTL0107は、ステップ1506に進む(E)。一方、ホスト0104が接続されたCTLにおいて正面又は副面が確保されていない場合(1504:No)、担当CTL0107は、ステップ1505に進む(D)。
(D)
ホスト0104が接続されたCTLにおいて正面又は副面が確保されていない場合(1504:No)、担当CTL0107は、ホスト0104が接続されたCTLにおいてバッファセグメントを確保し(1505)、担当CTL0107は、ステップ1506に進む(E)。
(E)
ホスト0104が接続されたCTLにおいて正面又は副面が確保されている場合(1504:Yes)、担当CTL0107は、ライト先のPDEVが接続されたCTLにおいて正面又は副面が確保されているか否かを判定する(1506)。ライト先のPDEVが接続されたCTLにおいて正面又は副面が確保されている場合(1506:Yes)、処理を終了する。
一方、ライト先のPDEVが接続されたCTLにおいて正面又は副面が確保されていない場合(1506:No)、担当CTL0107は、ステップ1507に進む。担当CTL0107は、ライト先のPDEVが接続されたCTLにおいてバッファセグメントを確保し(1507)、処理を終了する。
図16は、図11で説明したシーケンスから呼び出される、ライト処理1108の流れの一例を示したシーケンス図である。以下において、担当CTL0107は、他のCTL0107に必要な指示を行うことで、各ステップを実行する。担当CTL0107は、ホスト0104に接続されているCTL0107を介して、ホスト0104にデータ転送を要求する(1601)。
担当CTL0107は、ホスト0104に接続されているCTL0107に確保したセグメントがキャッシュであるか否かを判定する(1602)。ホスト0104に接続されているCTL0107に確保したセグメントがキャッシュである場合(1602:Yes)、担当CTL0107は、ステップ1603に進む(A)。一方、ホスト0104に接続されているCTLに確保したセグメントがキャッシュでない(バッファセグメントである)場合(1602:No)、担当CTL0107は、ステップ1605に進む(B)。
(A)
ホスト0104に接続されているCTL0107に確保したセグメントがキャッシュである場合(1602:Yes)、担当CTL0107は、ホスト0104から転送されたI/Oデータを当該キャッシュセグメントに格納する(1603)。担当CTL0107は、ステップ1603でデータを格納したキャッシュセグメントでない方のキャッシュセグメントへ、当該I/Oデータを複写し(1604)、担当CTL0107は、ステップ1607に進む(C)。
(B)
ホスト0104に接続されているCTLに確保したセグメントがバッファセグメントである場合(1602:No)、担当CTL0107は、ホスト0104から転送されたI/Oデータを当該バッファセグメントに格納する(1605)。担当CTL0107は、キャッシュセグメントの正面と副面の両方に、当該I/Oデータを複写し(1606)、担当CTL0107は、ステップ1607に進む(C)。
(C)
担当CTL0107は、ストレージ冗長化のLDEVに対するライトである否かを判定する(1607)。ストレージ冗長化のLDEVに対するライトである場合(1607:Yes)、担当CTL0107は、ステップ1608に進む(D)。一方、ストレージ冗長化のLDEVに対するライトでない場合(1607:No)、担当CTL0107は、ステップ1609に進む(E)。
(D)
ストレージ冗長化のLDEVに対するライトである場合(1607:Yes)、担当CTL0107は、リモートストレージシステム0103に接続されているCTL0107より、当該I/Oデータを転送する(1608)。
(E)
ストレージ冗長化のLDEVに対するライトでない場合(1607:No)、該当CTLは0107、ホスト0104にライトの完了を応答する(1609)。担当CTL0107は、担当CTL0107で固有の処理を実行する(1610)。例えば、スナップショットに関する処理であり、RAIDグループを構成している場合、担当CTL0107は、パリティの生成を実施する。
担当CTL0107は、前述の処理でデータを複写したバッファセグメントのほかに、確保したバッファセグメントが存在するか否かを判定する(1611)。他に確保したバッファセグメントが存在する場合(1611:Yes)、担当CTL0107は、ステップ1612に進む(F)。一方、他に確保したバッファセグメントが存在しない場合(1611:No)、担当CTL0107は、ステップ1613に進む(G)。
(F)
他に確保したバッファセグメントが存在する場合(1611:Yes)、担当CTL0107は、ホスト0104から転送されたI/Oデータを当該バッファセグメントに格納し(1612)し、担当CTL0107は、ステップ1613に進む(E)。
(G)
担当CTL0107は、ライト先のPDEVにホスト0104から転送されたI/Oデータを転送し(1613)、処理を終了する。
図17は、図11で説明したフローから呼び出される、セグメント解放処理1109の流れの一例を示したフロー図である。担当CTL0107は、当該I/Oのアクセスパタンがシーケンシャルであるか否かを判定する(1701)。当該I/Oのアクセスパタンがシーケンシャルであった場合(1701:Yes)、担当CTL0107は、確保した全てのキャッシュセグメント、及びバッファセグメントを解放し(1702)、処理を終了する。
このように、アクセスパタンがシーケンシャルである場合、ライト処理1108の終了(最終記憶媒体へのライトデータの格納)に応答して、確保した全てのキャッシュセグメントが解放される。シーケンシャルアクセスされるデータは、再度アクセスされる可能性が低く、効率的にキャッシュ領域を利用できる。
一方、当該I/Oのアクセスパタンがシーケンシャルでなかった場合(1702:No)、担当CTL0107は、正面を除く確保した副面のキャッシュセグメント、及び確保した全てのバッファセグメントを解放し(1703)、処理を終了する。これにより、キャッシュヒット率を高めることができる。
上述のように、ストレージシステムは、ホストからライトデータを受信するコントローラと、ライトデータを処理するコントローラとに基づいて、ライトデータを格納するキャッシュサブ領域を確保する少なくとも二つのコントローラを指定する。ストレージシステムは、さらに、各コントローラが属するストレージノードの、前記ライトデータを格納する記憶デバイスへの接続の有無に基づいて、前記二つのコントローラを指定する。
具体的には、上記例において、キャッシュセグメントを確保するCTLとして指定されるCTLの候補は、リモートストレージシステムにライトデータを転送するCTL(存在する場合)、ライトデータを処理する担当CTL(存在する場合)、ライトデータをホストから受信するCTL及びPDEVにライトデータを格納するCTLで構成されている。
これらのCTLの候補の一部、例えば、リモートストレージシステムにライトデータを転送するCTL(存在する場合)及びライトデータを処理する担当CTL(存在する場合)の双方または一方は、省略されてもよく、ライトデータをホストから受信するCTL及びPDEVにライトデータを格納するCTLの双方または一方が省略されてもよい。CTLの候補が一つであり、キャッシュセグメントの確保のために常に指定されてもよい。上記例は最大二つのCTLを指定するが、他の例は、最大3以上のCTLを指定してもよい。
指定されるCTLの候補の優先度は、設計により決定してもよい。上記例は、リモートストレージシステムにライトデータを転送するCTL(存在する場合)及びライトデータを処理する担当CTL(存在する場合)を、ライトデータをホストから受信するCTL及びPDEVにライトデータを格納するCTLよりも優先して選択している。他の例は、これと異なる優先度が候補に与えられていてもよい。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
0101 情報システム、0102 メインストレージシステム、0103 リモートストレージシステム、0104 ホスト、0105 Node、0106 外部スイッチ(SW)、0106 プロセサ、0107 コントローラ(CTL)、0108 PDEV BOX、0109 主記憶、0110 FE I/F(FrontEnd Interface)、0111 BE I/F(BackEnd Interface)、0112 HCA(Host Channel Adapter)、0113 PDEV、0201 プログラム領、0202 管理情報領域、0203 バッファ領域、0204 キャッシュ領域、0301 CTL間振り分けプログラム、0302 I/Oプログラム、0303 I/Oパタン判定プログラム、0304 セグメント確保プログラム、0305 セグメント解放プログラム、0306 フリーセグメント確保プログラム、0307 ストレージコントローラ間データ転送プログラム

Claims (11)

  1. ネットワークを介して通信する複数のストレージノードを含むストレージシステムであ
    って、
    前記複数のストレージノードのそれぞれは、1以上のコントローラを含み、
    前記コントローラにおける少なくとも1つのコントローラは、
    ホストからライトデータを受信するコントローラと、前記ライトデータを処理するコントローラとに基づいて、前記ライトデータを格納するキャッシュサブ領域を確保する少なくとも二つのコントローラを指定し、
    指定したコントローラにおいて、キャッシュサブ領域を確保し、
    各コントローラが属するストレージノードの、前記ライトデータを格納する記憶デバイスへの接続の有無に基づいて、前記二つのコントローラを指定する
    ストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記ホストから前記ライトデータを受信するコントローラと、前記ライトデータを処理するコントローラとは、別のコントローラであり、
    前記少なくとも1つのコントローラは、前記ホストから前記ライトデータを受信するコントローラと、前記ライトデータを処理するコントローラとを、前記キャッシュサブ領域を確保するコントローラに指定する
    ストレージシステム。
  3. 請求項2に記載のストレージシステムであって、
    前記指定した二つのコントローラのうち、前記ライトデータを格納する記憶デバイスに接続されたコントローラは、前記ライトデータを格納する記憶デバイスに接続されたコントローラの前記キャッシュサブ領域に記憶された前記ライトデータを、前記記憶デバイスに格納する
    ストレージシステム。
  4. 請求項3に記載のストレージシステムであって、
    前記指定した二つのコントローラのいずれもが、前記記憶デバイスに接続されていない場合、前記指定した二つのコントローラのうちいずれかが、前記記憶デバイスに接続された他のコントローラのバッファ領域に前記ライトデータを転送し、
    前記他のコントローラが、前記バッファ領域に格納された前記ライトデータを、前記記憶デバイスに格納する
    ストレージシステム。
  5. 請求項1に記載のストレージシステムであって、
    前記ホストから前記ライトデータを受信するコントローラと、前記ライトデータを処理するコントローラとは、同じコントローラであり、
    前記少なくとも1つのコントローラは、前記同じコントローラと、他の1つのコントローラとを、前記キャッシュサブ領域を確保するコントローラに指定し、
    前記指定した二つのコントローラのうち少なくとも1つは、前記記憶デバイスに接続されている
    ストレージシステム。
  6. 請求項1に記載のストレージシステムであって、
    前記ホストから前記ライトデータを受信するコントローラと、前記ライトデータを格納する記憶デバイスに接続された他のコントローラとを、前記キャッシュサブ領域を確保するコントローラに指定する
    ストレージシステム。
  7. 請求項1に記載のストレージシステムであって、
    前記少なくとも1つのコントローラは、前記ホストから前記ライトデータを受信するコントローラと、前記ライトデータを格納する記憶デバイスに接続された他のコントローラとを、前記キャッシュサブ領域を確保するコントローラに指定する
    ストレージシステム。
  8. 請求項1に記載のストレージシステムであって、
    前記記憶デバイスは、前記ストレージノードの内に設けられた記憶媒体、またはリモートストレージシステムである
    ストレージシステム。
  9. ネットワークを介して通信する複数のストレージノードを含むストレージシステムであ
    って、
    前記複数のストレージノードのそれぞれは、1以上のコントローラを含み、
    前記コントローラにおける少なくとも1つのコントローラは、
    ホストからライトデータを受信するコントローラと、前記ライトデータを処理するコントローラとに基づいて、前記ライトデータを格納するキャッシュサブ領域を確保する少なくとも二つのコントローラを指定し、
    指定したコントローラにおいて、キャッシュサブ領域を確保し、
    前記ホストからのライト要求のアクセスパタンがシーケンシャルである場合に、前記ホストから前記ライトデータを受信するコントローラと、前記ライトデータを処理するコントローラとに基づいて、前記コントローラの指定を行い、
    前記ホストからのライト要求のアクセスパタンがランダムである場合に、キャッシュ利用効率に基づいて、前記コントローラの指定を行う
    ストレージシステム。
  10. ネットワークを介して通信する複数のストレージノードを含むストレージシステムの制御方法であって、
    前記複数のストレージノードのそれぞれは、1以上のコントローラを含み、
    前記制御方法は、
    ホストからライトデータを受信するコントローラと、前記ライトデータを処理するコントローラとに基づいて、前記ライトデータを格納するキャッシュサブ領域を確保する少なくとも二つのコントローラを指定し、
    指定したコントローラにおいて、キャッシュサブ領域を確保し、
    各コントローラが属するストレージノードの、前記ライトデータを格納する記憶デバイスへの接続の有無に基づいて、前記二つのコントローラを指定する
    制御方法。
  11. ネットワークを介して通信する複数のストレージノードを含むストレージシステムの制御方法であって、
    前記複数のストレージノードのそれぞれは、1以上のコントローラを含み、
    前記制御方法は、
    ホストからライトデータを受信するコントローラと、前記ライトデータを処理するコントローラとに基づいて、前記ライトデータを格納するキャッシュサブ領域を確保する少なくとも二つのコントローラを指定し、
    指定したコントローラにおいて、キャッシュサブ領域を確保し、
    前記ホストからのライト要求のアクセスパタンがシーケンシャルである場合に、前記ホストから前記ライトデータを受信するコントローラと、前記ライトデータを処理するコントローラとに基づいて、前記コントローラの指定を行い、
    前記ホストからのライト要求のアクセスパタンがランダムである場合に、キャッシュ利用効率に基づいて、前記コントローラの指定を行う
    制御方法。
JP2019033920A 2019-02-27 2019-02-27 複数のストレージノードを含むストレージシステム Active JP6884165B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019033920A JP6884165B2 (ja) 2019-02-27 2019-02-27 複数のストレージノードを含むストレージシステム
US16/551,778 US11347432B2 (en) 2019-02-27 2019-08-27 Storage system including storage nodes to determine cache allocations to implement cache control
US17/731,626 US11755249B2 (en) 2019-02-27 2022-04-28 Storage system including storage nodes to determine cache allocations to implement cache control

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019033920A JP6884165B2 (ja) 2019-02-27 2019-02-27 複数のストレージノードを含むストレージシステム

Publications (2)

Publication Number Publication Date
JP2020140325A JP2020140325A (ja) 2020-09-03
JP6884165B2 true JP6884165B2 (ja) 2021-06-09

Family

ID=72142886

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019033920A Active JP6884165B2 (ja) 2019-02-27 2019-02-27 複数のストレージノードを含むストレージシステム

Country Status (2)

Country Link
US (2) US11347432B2 (ja)
JP (1) JP6884165B2 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6798599B2 (en) * 2001-01-29 2004-09-28 Seagate Technology Llc Disc storage system employing non-volatile magnetoresistive random access memory
CN104735119B (zh) * 2013-12-23 2018-05-04 伊姆西公司 用于数据拷贝避免的方法和装置
DE102014213490C5 (de) 2014-07-10 2020-06-18 Continental Automotive Gmbh Kühlvorrichtung, Verfahren zur Herstellung einer Kühlvorrichtung und Leistungsschaltung
JP6294569B2 (ja) * 2015-06-19 2018-03-14 株式会社日立製作所 ストレージシステム及びキャッシュ制御方法
US9712617B2 (en) * 2015-07-06 2017-07-18 Infinidat Ltd. Flow control in remote replication
US10558383B2 (en) 2015-10-08 2020-02-11 Hitachi, Ltd. Storage system
JP2018010557A (ja) * 2016-07-15 2018-01-18 富士通株式会社 ストレージシステムおよび管理装置

Also Published As

Publication number Publication date
JP2020140325A (ja) 2020-09-03
US20220253250A1 (en) 2022-08-11
US11755249B2 (en) 2023-09-12
US11347432B2 (en) 2022-05-31
US20200272359A1 (en) 2020-08-27

Similar Documents

Publication Publication Date Title
JP6009095B2 (ja) ストレージシステム及び記憶制御方法
US7975115B2 (en) Method and apparatus for separating snapshot preserved and write data
US8375167B2 (en) Storage system, control apparatus and method of controlling control apparatus
US8635427B2 (en) Data storage control on storage devices
JP4890033B2 (ja) 記憶装置システム及び記憶制御方法
WO2017216887A1 (ja) 情報処理システム
JP4375435B2 (ja) 予知型データ移行を行う階層ストレージシステム
JP4684864B2 (ja) 記憶装置システム及び記憶制御方法
JP4961319B2 (ja) 仮想ボリュームにおける仮想領域に動的に実領域を割り当てるストレージシステム
WO2016147281A1 (ja) 分散型ストレージシステム及び分散型ストレージシステムの制御方法
US8650381B2 (en) Storage system using real data storage area dynamic allocation method
US10191685B2 (en) Storage system, storage device, and data transfer method
WO2018029820A1 (ja) 計算機システム
JP2009043030A (ja) ストレージシステム
JP2008269469A (ja) ストレージシステム及びその管理方法
JP6294569B2 (ja) ストレージシステム及びキャッシュ制御方法
US9875059B2 (en) Storage system
WO2018158808A1 (ja) 情報システム、管理プログラム及び情報システムのプログラム交換方法
US20110191551A1 (en) Storage apparatus and storage management method
US20210103400A1 (en) Storage system and data migration method
JP6884165B2 (ja) 複数のストレージノードを含むストレージシステム
JP5355603B2 (ja) ディスクアレイ装置及び論理ボリュームアクセス方法
WO2018055686A1 (ja) 情報処理システム
JPWO2019003416A1 (ja) ストレージシステム及び記憶制御方法
JP6606235B1 (ja) ストレージシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200124

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200124

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210219

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210511

R150 Certificate of patent or registration of utility model

Ref document number: 6884165

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150