JP7348056B2 - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
JP7348056B2
JP7348056B2 JP2019229906A JP2019229906A JP7348056B2 JP 7348056 B2 JP7348056 B2 JP 7348056B2 JP 2019229906 A JP2019229906 A JP 2019229906A JP 2019229906 A JP2019229906 A JP 2019229906A JP 7348056 B2 JP7348056 B2 JP 7348056B2
Authority
JP
Japan
Prior art keywords
host
path
drive
paths
controllers
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
JP2019229906A
Other languages
English (en)
Other versions
JP2021099560A (ja
JP2021099560A5 (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 JP2019229906A priority Critical patent/JP7348056B2/ja
Priority to US17/012,308 priority patent/US20210191623A1/en
Publication of JP2021099560A publication Critical patent/JP2021099560A/ja
Publication of JP2021099560A5 publication Critical patent/JP2021099560A5/ja
Application granted granted Critical
Publication of JP7348056B2 publication Critical patent/JP7348056B2/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0653Monitoring storage devices or 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/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/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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • 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

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)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明はストレージシステムに関する。
一般的なストレージシステムは、複数のコントローラを含み、ホスト計算機から受け取った入出力(I/O)要求に従って、コントローラ内のプロセッサが、ドライブへのデータの入出力を制御する。コントローラとホスト計算機、コントローラ同士、コントローラとドライブとは、ネットワークで接続されている。
I/O処理を効率よく実行するため、論理ボリューム毎にI/O処理を担当するプロセッサを割り当てるストレージシステムが存在する。このようなストレージシステムのいくつかは、複数のコントローラを含み、各コントローラにおいて、プロセッサが、ホストインタフェース(I/F)、ドライブとの接続のためのバックエンドI/F及び主記憶メモリと直結される。さらに、複数のコントローラは内部バスで接続される。
このようなストレージシステムでは、物理的にどこのプロセッサに接続されたバックエンドI/Fを使用するかによって、プロセッサのI/O処理手順やデータパスが変わり、データアクセスのレイテインシやスループットに影響を与える。例えば、リード要求を受けたホストI/Fを含むコントローラと別のコントローラのバックエンドI/Fを使用して、リード対象のデータをドライブから対象のコントローラの主記憶メモリに転送するとする。この場合、対象データを、リード要求を受けたホストI/Fを含むコントローラの主記憶メモリへ転送し、そこからホスト計算機へ転送する必要がある。便宜上、このようなストレージシステムのことをマルチコントローラストレージシステムと呼ぶ。
特許文献1では、コントローラ間データ転送によるオーバーヘッドをなくすため、リード要求を受けたホストI/Fと同じコントローラのバックエンドI/Fを使用して、リード対象のデータを対象コントローラの主記憶メモリに転送する方法が開示されている。
また、特許文献2では、マルチコントローラストレージシステムにおいて、コントローラ間通信性能の差異に応じて、ホストとストレージシステムとの間のパスの優先度を決定する方法が開示されている。
国際公開第2015/056301号 国際公開第2016/013116号
マルチコントローラストレージシステムでは、どのホストI/Fからアクセスがあったかによって、使用するバックエンドI/Fが異なる。一方で、コントローラ毎の負荷分散は、I/O処理を担当するプロセッサの稼働率(処理負荷)に基づき、各論理ボリュームの担当プロセッサを変更する。
しかし、ストレージシステムにかかるワークロードはさまざまであり、プロセッサの処理負荷が大きくデータ量が小さいものや、逆に、プロセッサの処理負荷が小さくデータ量が大きいものが存在する。その結果、プロセッサの処理負荷によって、各論理ボリュームの担当プロセッサを変更しても、ホストI/FやバックエンドI/Fの処理負荷が均等になるとは限らない。そのため、一部のパスがボトルネックとなり、ストレージシステムの性能が低下し得る。
本発明の一態様は、ホストからのI/O要求を処理するストレージシステムであって、複数のコントローラと、複数の記憶ドライブと、を含み、前記ホストと前記複数のコントローラとは、ホストパスで接続され、前記複数のコントローラと複数の記憶ドライブとは、ドライブパスで接続され、論理ボリュームを担当するコントローラが、前記論理ボリュームを指定するI/O要求を処理し、前記論理ボリュームを担当するコントローラと、前記論理ボリュームに対するホストパスの優先度と、前記論理ボリュームにかかる物理記憶領域を含む記憶ドライブと、に対して、前記ホストから前記記憶ドライブまでのホストパス及びドライブパスが決定され、前記複数のコントローラは、前記論理ボリュームにおける前記複数のホストパス及び複数のドライブパスの各パスの転送量を監視し、前記複数のホストパスの優先度の変更後の前記ホストパス及び前記ドライブパスの変更を推定し、推定された前記ホストパス及び前記ドライブパスの変更と前記監視した各パスの転送量とに基づいて、前記優先度の変更後の前記複数のホストパス及び複数のドライブパスの各パスの転送量を推定し、各パスの推定された前記転送量に基づいて、各パスの転送量が所定の条件を満たすように、前記複数のホストパスの優先度を変更する。
本発明の一態様によれば、ストレージシステムの性能を向上することができる。
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
図1は、実施例1における計算機システム全体の構成例を示す図である。 図2Aは、実施例1におけるメモリ内の領域構成を示す。 図2Bは、実施例1におけるプログラム格納領域が格納している、プロセッサが実行するプログラムを示す。 図2Cは、実施例1における制御情報格納領域132000に格納される制御情報の構成例を示す。 図2Dは、実施例1におけるキャッシュメモリ領域の構成を示す。 図2Eは、実施例1におけるデータ転送用バッファ領域の構成を示す。 図3Aは、実施例1におけるドライブパスの転送量の平準化の効果の一例を示す図である。 図3Bは、実施例1におけるドライブパスの転送量の平準化の効果の一例を示す図である。 図4は、実施例1における論理ボリュームアドレス管理テーブルを示す図である。 図5は、実施例1におけるホストパス優先度管理テーブルを示す図である。 図6は、実施例1におけるオーナ権管理テーブルを示す図である。 図7は、実施例1におけるパス管理テーブルを示す図である。 図8は、実施例1におけるパス転送量管理テーブルを示す図である。 図9は、実施例1におけるパス単位時間転送量管理テーブルを示す図である。 図10は、実施例1におけるパス単位時間総転送量管理テーブルを示す図である。 図11は、実施例1におけるI/Oコマンド管理テーブルを示す図である。 図12は、実施例1におけるI/Oコマンド処理要求メッセージを示す図である。 図13は、実施例1におけるキャッシュセグメント管理テーブルを示す。 図14は、実施例1におけるコマンド振り分け処理のフローチャートである。 図15Aは、実施例1におけるI/O処理のフローチャートである。 図15Bは、実施例1におけるI/O処理のフローチャートである。 図15Cは、実施例1におけるI/O処理のフローチャートである。 図16は、実施例1におけるパス転送量監視処理のフローチャートである。 図17は、実施例1における優先ホストパス選択処理のフローチャートである。 図18は、実施例2における計算機システム全体の構成例を示す図である。 図19Aは、実施例2におけるホストパス優先度切り替えたときの各パスのデータ転送量計算方式の一例を示す図である。 図19Bは、実施例2におけるホストパス優先度切り替えたときの各パスのデータ転送量計算方式の一例を示す図である。
以下、本開示の実施例を、添付図面を参照しながら説明する。以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶部及び/またはインタフェース部等を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有するコントローラのようなデバイス)とされてもよい。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよい。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
以下において、論理ボリュームを制御する複数のコントローラを含むストレージシステム(マルチコントローラストレージシステム)における、ストレージシステムとホストとの間のパス選択制御方法を説明する。ストレージシステムは、論理ボリューム毎に、I/Oデータがどの経路を通って転送されたかをモニタリングする。
ストレージシステムは、各論理ボリュームに対するホストパス(フロントエンドパス)の優先度を変更した際に、I/Oデータが通るパスの変化により、各ホストパス及び各ドライブパス(バックエンドパス)の転送量がどのように変化するかを推定する。ストレージシステムは、転送量が推定された組み合わせの中から、ホストパス及びドライブパスの転送量が所定の条件を満たす組み合わせを求め、その組み合わせになるように、ストレージシステムとホストとの間において、ホストパスの優先度を変更する。
上述のように、各論理ボリュームのI/Oアクセスパターンに応じて、ホスト及びドライブパスのデータ転送量の偏りを抑えて、I/Oスループットのボトルネックを解消する。
実施例1について、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲にかかる発明を限定するものではなく、また実施例の中で説明されている特長の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、実施例1における計算機システムの構成例を示す図である。計算機システムは、一つのノードからなるストレージシステム100000、ホスト計算機200000及び管理端末300000、並びに、それらを接続する外部ネットワーク400000及び管理ネットワーク500000を含む。図1は、一つのストレージシステム100000、一つのホスト計算機200000及び一つの管理端末300000を示すが、それらの数は任意である。
ストレージシステム100000は、複数のストレージコントローラ(以下、コントローラとも呼ぶ)110000を含む。各コントローラ110000は、一つ以上のマイクロプロセッサ(以下、プロセッサとも呼ぶ)120000と、一つ以上のメモリ130000と、一つ以上のホストI/F(フロントエンドI/F)140000と、一つ以上のドライブI/F(バックエンドI/F)150000と、一つ以上の管理I/F160000とを含む。
複数のコントローラ110000は、コントローラ間パス180000で接続されており、互いのメモリ130000に、プロセッサ120000または図示されていないDMA(Direct Memory Access)回路などによって、アクセス可能である。以下においては、説明の簡単のため、コントローラの数は二つであるとして説明するが、コントローラの数が三つ以上でもよい。プロセッサがマルチコアプロセッサの場合、プロセッサ内のいくつかのコアをグループとして、論理的に複数のプロセッサとして管理してもよい。
ホストI/F140000は、例えば、SAN(Storage Area Network)などの外部ネットワーク400000を通してホスト計算機200000に接続する。管理I/F160000は、例えば、LAN(Local Area Network)などの管理ネットワーク500000を通して管理端末300000に接続する。外部ネットワーク400000及び管理ネットワーク500000はデータ通信ができるプロトコルであれば任意である。
ストレージシステム100000は、複数の記憶ドライブ(以下、ドライブまたは記憶デバイスとも呼ぶ)を格納するドライブボックス170000と、ドライブとコントローラ110000とを接続するドライブI/F150000とを、含む。
ドライブは、例えばHDD(Hard Disk Drive)、SSD(Solid State Drive)またはテープ型の記憶デバイス等であってもよい。複数のドライブは、一つ以上のドライブの物理記憶領域を基に論理ボリュームを構成し、コントローラ110000に提供することができる。
複数のドライブは、冗長化のためにRAID(Redundant Array of Independent Disks)グループを構成してもよく、論理ボリュームはRAIDグループから提供されてもよい。論理ボリュームは、ホスト計算機200000に対して、LU(Logical Unit)として提供可能であり、ホスト計算機200000が指定するアドレスに対して書き込み要求及び読み出し要求を受け付けることが可能である。なお、各論理ボリュームには、I/O処理を担当する一つのプロセッサ120000が設定される。
ホストI/F140000を通ってホストに接続されるパスをホストパス、ドライブI/F150000を通ってドライブに接続されるパスをドライブパスと呼ぶ。ホスト計算機200000は、LUに対して複数のホストパスを介してアクセス可能であり、Acitve/Passiveや、ALUA(Aynmetric Lugical Unit Access)など、パス毎に属性やアクセスの優先度が設定可能である。
図2Aから図2Eは、メモリ130000の論理構成を示す図である。図2Aは、メモリ130000内の領域構成を示す。メモリ130000は、プログラム格納領域131000、制御情報格納領域132000、キャッシュメモリ領域133000、データ転送用バッファ領域134000及びキャッシュメモリ領域135000を含む。プロセッサ毎に使用できるキャッシュメモリ領域が確保されている。
図2Bは、プログラム格納領域131000が格納している、プロセッサ120000が実行するプログラムを示す。コマンド振り分け処理プログラム131100は、ホスト計算機200000から送られてきたリード/ライト要求を、リード/ライト対象の論理ボリュームのI/O処理を担当するプロセッサに振り分ける。I/O処理を担当するプロセッサがI/O処理プログラム131200に従って、対象領域のリード/ライト処理を実行する。
パス転送量監視プログラム131300は、ホストパス及びドライブパスの転送量をモニタし、集計する。優先ホストパス選択プログラム131400は、集計された結果から、ホストパスの優先度を変更したときの各ホストパス及び各ドライブパスの負荷予測(転送量予測)を行い、負荷の組み合わせが所定の条件を満たすように、各ホストパスの優先度を決定する。
優先ホストパス切り替えプログラム131500は、優先ホストパス選択プログラム131400によって決定されたホストパスの優先度をホスト計算機200000に通知する。ホスト計算機200000は、通知された優先度に従って、自身のホストパスの優先度を再設定する。
図2Cは、制御情報格納領域132000に格納される制御情報の構成例を示す。制御情報格納領域132000は、論理ボリュームアドレス管理テーブル132100、ホストパス優先度管理テーブル132200、オーナ権管理テーブル132300、パス管理テーブル132400、パス転送量管理テーブル132500、パス単位時間転送量管理テーブル132600、単位時間総転送量管理テーブル132700、I/Oコマンド管理テーブル132800及びキャッシュセグメント管理テーブル132900を格納している。これらのテーブルの詳細については後述する。
図2Dは、キャッシュメモリ領域133000の構成を示しており、キャッシュセグメント133100を含む。図2Eは、データ転送用バッファ領域134000の構成を示しており、データバッファ領域134100を含む。
図3A及び図3Bは、本実施例に係るホストパスの優先度の変更によるホストパス及びドライブパスの転送量の平準化の例を示すものである。図3Aに示す状態において、ある論理ボリュームに対するコントローラ110000Bのホストパス優先度がActiveに設定されており、コントローラ110000Aのホストパス優先度がPassiveに設定されている。優先度がPassiveのホストパスは、優先度がActiveのホストパスが使用できない場合に使用される。ホスト計算機と論理ボリュームとの間において、使用されるホストパスに応じて使用されるドライブパスが決まる。
コントローラ110000Aとコントローラ110000Bのドライブパス転送量の間に偏りが存在し、コントローラ110000Bのドライブパス転送量が、コントローラ110000Aのドライブパス転送量より多い。この時、コントローラ110000Bのドライブパスがボトルネックとなり、ストレージシステム全体の性能が低下する。
図3Bは、いくつかの論理ボリュームのActiveパスが、コントローラ110000Bからコントローラ110000Aに変更され、I/O要求が図3Aと同様のパターンでストレージシステムに発行された状態を示す。コントローラ110000Aとコントローラ110000Bのドライブパス転送量が平準化され、ボトルネックが解消されている。これにより、ストレージシステム全体の性能を向上することができる。
図4は、論理ボリュームアドレス管理テーブル132100の構成例を示す図である。論理ボリュームアドレス管理テーブル132100は、論理ボリューム番号132110、論理ボリューム内アドレス132120、ドライブ番号132130、ドライブ内アドレス132140を関連付ける。
論理ボリューム番号132110は、論理ボリュームを識別するための番号である。論理ボリューム内アドレス132120は、論理ボリューム内のアドレスを識別するための番号である。ドライブ番号132130は、ドライブ番号を示す。ドライブ内アドレス132140は、ドライブ内のアドレスを示す。論理ボリュームアドレス管理テーブル132100を使用して、論理ボリューム及び論理ボリューム内アドレスから、アクセスするドライブ及びドライブ内のアドレスを算出することができる。
図5は、ホストパス優先度管理テーブル132200の構成例を示す図である。ホストパス優先度管理テーブル132200は、論理ボリューム番号132210及び各ホストパスの優先度情報132220を関連付ける。論理ボリューム番号132210は、論理ボリュームを識別するための番号である。
ホストパスの優先度情報132220は、ストレージシステムに実装されるホストパスそれぞれの優先度を示す。本実施例は、ホストパス優先度をActive及びPassiveで表現するが、SCSIのALUA規格では、ホストパス優先度は、Active/Optimized、Active/Non-Optimized、Standby、Unavailableの4種類で表現される。
論理ボリューム、ホストパス及びそのホストパスの優先度の組み合わせに対して、ホストから論理ボリュームの物理記憶領域を含むドライブまでのホストパス及びドライブパスが決定される。また、論理ボリュームと、一つのホスト計算機の複数のホストパスの優先度の組み合わせから、それらホストパスそれぞれの当該論理ボリュームのためのデータ転送量の割合が推定可能である。このように、複数のホストパスの優先度の変更後のホストパス及びドライブパスの変更を推定し、監視しているホストパス及びドライブパスの転送量に基づき、それらホストパスそれぞれの当該論理ボリュームのためのデータ転送量の割合が推定される。
なお、任意の名称の優先度及び任意の数の種類の優先度を使用することができる。また、各論理ボリュームに対して、ホストと論理ボリュームとの間において、同じ優先度の複数のホストパスが存在してもよく、ある優先度のパスが存在しなくてもよい。ホストパス優先度管理テーブル132200を使用して、論理ボリューム毎に各ホストパスの優先度を決定することができる。
図6は、オーナ権管理テーブル132300の構成例を示す図である。オーナ権管理テーブル132300は、論理ボリューム番号132310及びオーナプロセッサ番号132320を関連付ける。論理ボリューム番号132310は、論理ボリュームを識別するための番号を示す。オーナプロセッサ番号132320は、オーナプロセッサ番号を示す。オーナ権管理テーブル132300を使って、論理ボリュームから、論理ボリュームのオーナプロセッサ番号を特定できる。
図7は、パス管理テーブル132400の構成例を示す図である。パス管理テーブル132400は、ポート番号132410、コントローラ132420及び状態132430を関連付ける。ポート番号132410は、ホストパスまたはドライブパスを識別するための番号を示す。コントローラ132420は、上記ホストパスまたはドライブパスがどのコントローラに所属するかを示し、状態132430は、ホストパスまたはドライブパスが実装済み、未実装、または閉塞中のいずれであるかを示す。パス管理テーブル132400を使って、各ホストパス及び各ドライブパスがどのコントローラに所属しているか、利用可能な状態にあるかを調べることができる。
図8は、パス転送量管理テーブル132500の構成例を示す図である。パス転送量管理テーブル132500は、ホスト計算機200000、論理ボリューム番号132510、各ホストパスの流入量132520及び流出量132530、並びに各ドライブパスの流入量132540及び流出量132550を関連付ける。
この他、ホスト計算機200000からのI/Oに同期しないデータ転送によるデータ量をカウントするためテーブル(付図示)も存在する。ホスト計算機200000からのI/Oに同期しないデータ転送は、例えば、非同期のデステージ処理や、レプリケーションのためのデータコピー、ドライブ間の容量平準化のためのリバランス等のためのデータ転送を含む。
論理ボリューム番号132510は、論理ボリュームを識別するための番号を示す。ホストパスの流入量132520は、ある時点から現在までにホストからコントローラに対して流れたデータの転送量を示す。ホストパスの流出量132530は、ある時点から現在までにコントローラからホスト計算機に対して流れたデータの転送量を示す。
ドライブパスの流入量132540は、ある時点から現在までにドライブからコントローラに対して流れたデータの転送量を示す。ドライブパスの流出量132550は、ある時点から現在までにコントローラからドライブに対して流れたデータの転送量を示す。パス転送量管理テーブル132500を使用して、各ホスト計算機における論理ボリューム毎のある時点から現在までのホストパスデータ転送量及びドライブパスデータ転送量を適切に算出することができる。
図9は、パス単位時間転送量管理テーブル132600の構成例を示す図である。パス単位時間転送量管理テーブル132600は、論理ボリューム番号132610、各ホストパスの流入量132620及び流出量132630、並びに各ドライブパスの流入量132640及び流出量132650を関連付ける。
論理ボリューム番号132610は、論理ボリュームを識別するための番号を示す。ホストパスの流入量132620は、ホストからコントローラに対して流れるデータの単位時間当たりの転送量を示す。ホストパスの流出量132630は、コントローラからホスト計算機に対して流れるデータの単位時間当たりの転送量を示す。ドライブパスの流入量132640は、ドライブからコントローラに対して流れるデータの単位時間当たりの転送量を示す。ドライブパスの流出量132650は、コントローラからドライブに対して流れるデータの単位時間当たりの転送量を示す。
パス単位時間転送量管理テーブル132600を使用して、各ホスト計算機における論理ボリューム毎の単位時間当たりのホストパスデータ転送量及びドライブパスデータ転送量を算出することができる。パス単位時間転送量管理テーブル132600は、パス転送量管理テーブル132500のデータから生成される。パス単位時間転送量管理テーブル132600は、1世代のみの時間区間の単位時間転送量を格納してもよく、複数世代の時間区間の単位時間転送量を格納していてもよい。
図10は、単位時間総転送量管理テーブル132700の構成を示す図である。単位時間総転送量管理テーブル132700は、ポートの種類132710、スループット132720及び過負荷閾値132730を関連付ける。ポートの種類132710は、ホストパス/ドライブパス、ポート番号、転送方向の組み合わせの種類を示す。過負荷閾値132740は、ポート種類ごとに、単位時間当たりの転送量が多く過負荷と判定される閾値を示す。この閾値は、管理端末300000を通して、管理者が設定してもよいし、ストレージシステム100000全体の構成情報や稼働情報に基づいて、自動的に設定されてもよい。
図11は、I/Oコマンド管理テーブル132800の構成例を示す図である。I/Oコマンド管理テーブル132800は、I/Oコマンド管理番号132810、I/O処理中フラグ132820、I/Oコマンド受領ホストパス番号132830、I/Oコマンドパラメータ132840を関連付ける。I/Oコマンド管理テーブル132800は、各プロセッサのI/O処理実行の状態を示し、具体的には、各プロセッサ内で、どれだけのI/Oが処理されているか、どのI/O処理がどのFEポートで受信されたI/Oであるか、を管理している。
図12は、I/Oコマンド処理要求メッセージ131110の構成例を示す図である。I/Oコマンド処理要求メッセージ131110は、I/Oコマンド管理番号131111を示し、コマンド振り分け処理プログラム131100を実行するプロセッサ120000とI/O処理プログラム131200を実行するプロセッサとの間で、通信するために使用される。これらの具体的な処理は、フロー図を使って後述する。
図13は、キャッシュセグメント管理テーブル132900の構成例を示す図である。キャッシュセグメント管理テーブル132900は、キャッシュセグメント番号132910、論理ボリューム番号132920、論理ボリューム内セグメント番号132930及びキャッシュセグメント属性132940を関連付ける。
キャッシュセグメント番号132910は、キャッシュメモリ領域133000上のキャッシュセグメント133100を識別するための値を示す。論理ボリューム番号132920及び論理ボリューム内セグメント番号132930は、キャッシュセグメント番号132910にどの論理ボリュームのどのアドレスのデータが格納されているかを示す。論理ボリューム内セグメント番号132930は、論理ボリューム内のアドレスをキャッシュセグメント単位で区切った時の識別番号を示す。
キャッシュセグメント属性132940は、キャッシュセグメント番号132910のキャッシュの状態を示す。クリーンは、キャッシュセグメント上のデータがドライブに格納済みの状態である。ダーティは、キャッシュセグメント上のデータがドライブに格納されていない状態である。フリーはキャッシュセグメントがどの論理ボリューム及び論理ボリューム内セグメントにも割り当てられていない状態である。
キャッシュセグメント管理テーブル132900を使用して、どのキャッシュセグメントにどの論理ボリュームのどのアドレスのデータが格納されているか、そのデータがドライブに格納済みかどうかが判定できる。ストレージシステム100000は、キャッシュセグメント管理テーブル132900の他に、論理ボリュームと論理ボリューム内セグメント番号のデータがキャッシュセグメント上に存在するかどうかを高速に検索するためのキャッシュディレクトリ等を持っていてもよい。
図14は、コマンド振り分け処理プログラム131100により実行される処理のフローチャートである。まず、ホスト計算機200000からいずれかのコントローラに接続されているホストI/F140000を経由して、同じコントローラ上のメモリ130000にI/Oコマンドが登録される。ステップ131101で、同じコントローラ上のプロセッサ120000に実行されるコマンド振り分け処理プログラム131100は、I/Oコマンドが登録されたことを検出し、ステップ131102へ進む。
ステップ131102で、コマンド振り分け処理プログラム131100は、オーナ権管理テーブル132300のI/Oオーナプロセッサ番号132320から、アクセス対象論理ボリュームのI/O処理担当プロセッサを同定し、ステップ131103へ進む。
ステップ131103で、コマンド振り分け処理プログラム131100は、上記I/O処理担当プロセッサと同一のコントローラのメモリ上のI/Oコマンド管理テーブル132800において、未使用のI/Oコマンド管理番号132810を検索する。各コントローラの構成は、不図示の管理情報に格納されている。コマンド振り分け処理プログラム131100は、検索したI/Oコマンド管理番号に対応するI/O処理中フラグ132820をONに書き換え、I/Oコマンド受領ホストパス番号132830とI/Oコマンドパラメータ132840を更新し、ステップ131104へ進む。
ステップ131104で、コマンド振り分け処理プログラム131100は、上記I/O処理担当プロセッサと同じコントローラのメモリに上記I/Oコマンド管理番号を記したI/Oコマンド処理要求メッセージ131110を送信し、I/Oコマンド振り分け処理を終了する。
図15A、図15B、図15Cは、I/O処理プログラム131200により実行される処理のフローチャートであり、図15Aは、ホストI/O要求処理の前半部分、図15Bはリード処理、図15Cはライト処理を示す。
上記のI/Oコマンド処理要求メッセージ131110を受信したI/O処理担当プロセッサにより実行されるI/O処理プログラム131200は、ステップ131201で上記のコマンド振り分け処理プログラム131100により振り分けられたI/Oコマンドを検出する。
ステップ131202では、I/O処理プログラム131200は、上記I/Oコマンドから、要求処理がリード処理なのかライト処理なのかを判定する。要求処理がリード処理の場合(131202:YES)、I/O処理プログラム131200はステップ131210へ進み、要求処理がライト処理の場合(131202:NO)、I/O処理プログラム131200はステップ131220へ進む。
リード処理131210から説明する。ステップ131211で、I/O処理プログラム131200は、アクセス対象のデータがキャッシュセグメント管理テーブル132900または上記のキャッシュディレクトリによって、キャッシュセグメント上に存在するかどうか(キャッシュヒットするかどうか)を判定する。対象のデータがキャッシュセグメント上に存在しない場合(131211:NO)、I/O処理プログラム131200は、ステップ131212へ進む。対象のデータがキャッシュセグメント上に存在する場合(131211:YES)、I/O処理プログラム131200は、ステップ131216へ進む。
ステップ131212で、I/O処理プログラム131200は、論理ボリュームアドレス管理テーブル132100を参照し、アクセス対象の論理ボリューム番号132110及び論理ボリューム内アドレス132120に対応する、ドライブ番号132130及びドライブ内アドレス132140を特定し、ステップ131213へ進む。
ステップ131213で、I/O処理プログラム131200は、ドライブ内のデータをコントローラのメモリ130000へ転送するためのドライブパス番号を取得する。その際、コントローラ間のデータ転送が発生しないように、I/O処理プログラム131200は、I/Oコマンド管理テーブル133800からI/Oを受領したホストパス番号132830を取得し、パス管理テーブル132400からI/O受領したコントローラと同じコントローラのドライブパス番号(ポート番号)132410を選択する。複数のドライブパスがある場合、I/O処理プログラム131200は、ラウンドロビンで選択する等、ドライブパスの負荷が偏らないように選択する。
次に、I/O処理プログラム131200は、ステップ131214へ進む。ステップ131214で、I/O処理プログラム131200は、ドライブからデータをステージングするために、選択されたドライブパス番号(ポート番号)132410が所属するコントローラ内のデータ転送用バッファ領域134000においてデータバッファ領域134100を確保する。I/O処理プログラム131200は、上記のドライブ番号132130及びドライブ内アドレス132140のデータを、確保したデータバッファ領域134100に読み出し、ステップ131215へ進む。
ステップ131215で、I/O処理プログラム131200は、パス転送量管理テーブル132500のアクセスした論理ボリューム番号132110に対応するドライブパスINPUT転送量132540をステージングのために転送したデータ量分だけ加算する。I/O処理プログラム131200は、ステップ131216へ進む。
ステップ131216で、I/O処理プログラム131200は、上記のデータバッファ領域134100からホストI/F140000を使用して、対象データをホスト計算機200000へ転送し、ステップ131217へ進む。
ステップ131217で、I/O処理プログラム131200は、ホスト計算機200000へ転送したデータ分の転送量を、パス転送量管理テーブル132500に加算する。具体的には、I/O処理プログラム131200は、当該論ボリューム番号を論理ボリューム番号132510から検索し、対応するホストパス番号のOUTPUT転送量132530を加算するし、リード処理を終了する。
ステップ131218では、I/O処理プログラム131200は、キャッシュヒットしたキャッシュセグメント番号132910が、ホスト計算機200000からI/Oコマンドを受領したコントローラと同じメモリ上に存在するかを判定する。同じメモリ上に存在するときには、I/O処理プログラム131200は、ステップ131216へ進む。ステップ131216で、I/O処理プログラム131200は、データバッファ領域134100の代わりにキャッシュセグメント133100を使用して、データをホストへ転送する。
キャッシュヒットしたキャッシュセグメント番号132910が、ホスト計算機200000からI/Oコマンドを受領したコントローラと同じメモリ上に存在しないとき、I/O処理プログラム131200は、ステップ131219へ進む。ステップ131219で、I/O処理プログラム131200は、ホスト計算機200000からI/Oコマンドを受領したコントローラ内のデータ転送用バッファ領域134000においてデータバッファ領域134100を確保し、キャッシュセグメントから、確保したデータバッファへデータを転送する。その後、フローは、ステップ131216へ進む。
次にライト処理について説明する。ステップ131221で、I/O処理プログラム131200は、I/Oコマンドを受領したホストパスと同じコントローラのメモリ130000上に、ホスト計算機200000からのライトデータ格納用のデータバッファ領域134100を確保し、ステップ131222へ進む。
ステップ131222で、I/O処理プログラム131200は、ホスト計算機200000にデータ転送を要求し、上記のデータバッファ領域134100にライトデータを転送し、ステップ131223へ進む。
ステップ131223で、I/O処理プログラム131200は、ホスト計算機200000から転送したデータ分の転送量をパス転送量管理テーブル132500に加算する。具体的には、I/O処理プログラム131200は、当該論ボリューム番号を論理ボリューム番号132510から検索し、対応するホストパス番号のINPUT転送量132520を加算する。次にステップ131224へ進む。
ステップ131224で、I/O処理プログラム131200は、ライトデータをドライブに格納するまでの間に、コントローラ間のキャッシュメモリ領域133000でライトデータを2重化してデータが保護された状態にするため、キャッシュセグメント133100を2つのコントローラそれぞれに確保する。I/O処理プログラム131200は、キャッシュセグメント管理テーブル132900の中からキャッシュセグメント属性132940がフリーなレコードを選択し、ライト対象の論理ボリューム番号132920及び論理ボリューム内セグメント番号132930を登録する。次に、I/O処理プログラム131200は、ステップ131225へ進む。
ステップ131225で、I/O処理プログラム131200は、上記ライトデータが格納されたデータバッファ領域134100から、上記確保した二つのキャッシュセグメント133100へデータを転送する。ドライブへデステージする前のデータをダーティデータと呼ぶ。次に、I/O処理プログラム131200は、ステップ131226へ進む。
ステップ131226で、I/O処理プログラム131200は、キャッシュセグメント管理テーブル132900の当該セグメント番号に対応するスロットステータスをダーティに更新し、ステップ131227へ進む。ステップ131227で、I/O処理プログラム131200は、上記データバッファ領域134100を解放する。
その後、I/O処理プログラム131200は、ステップ131228へ進み、ホスト計算機200000へGoodステータスを送信し、ライト処理を完了する。キャッシュセグメント上のダーティデータは、I/O処理とは非同期に、ドライブへデステージされる。データは、RAIDグループを構成する複数のドライブに、冗長性を持つように格納されてもよい。
図16は、パス転送量監視プログラム131300により実行される処理のフローチャートである。パス転送量監視プログラム131300は、所定周期で起動し、各ホストパス及び各ドライブパスの単位時間当たりの転送量を計算する。
ステップ131301で、パス転送量監視プログラム131300は、論理ボリュームに対する繰り返し判定を行う。パス転送量監視プログラム131300は、ストレージシステム100000に実装されている全ての論理ボリュームに対してステップ131302からステップ131309が実行されたか判定する。実行済みであれば、パス転送量監視プログラム131300は、繰り返し処理を抜けて、ステップ131310に進む。未実行の論理ボリュームが1つ以上存在すれば、パス転送量監視プログラム131300は、未実行の論理ボリュームを1つ選択し、ステップ131302に進む。
ステップ131302で、パス転送量監視プログラム131300は、ホストパスに対する繰り返し判定を行う。パス転送量監視プログラム131300は、ストレージシステム100000に実装されている全てのホストパスに対して、ステップ131303からステップ131305が実行されたか判定する。実行済みであれば、パス転送量監視プログラム131300は、繰り返し処理を抜けて、ステップ131306に進む。未実行のホストパスが1つ以上存在すれば、パス転送量監視プログラム131300は、未実行のホストパスを1つ選択し、ステップ131303に進む。
ステップ131303では、パス転送量監視プログラム131300は、パス転送量管理テーブル132500から選択した論理ボリュームと選択したホストパスに対応する、INPUT及びOUTPUTデータ転送量を、ホスト計算機(ホスト計算機なしも含む)毎に取得する。次に、ステップ131304に進む。
ステップ131304で、パス転送量監視プログラム131300は、取得したINPUT及びOUTPUTデータ転送量を、パス転送量監視プログラム131300の実行周期で割り算して、単位時間当たりのINPUT及びOUTPUT転送量をホスト毎に算出する。パス転送量監視プログラム131300は、計算結果をパス単位時間転送量管理テーブル132600に書き込む。次に、パス転送量監視プログラム131300は、ステップ131305に進む。
ステップ131305で、パス転送量監視プログラム131300は、パス転送量管理テーブル132500の対象の論理ボリューム及びホストパスに対応するINPUT及びOUTPUT転送量をサーバ(サーバなしも含む)毎にクリアし、ステップ131302に戻る。
ステップ131306からステップ131309において、パス転送量監視プログラム131300は、上記のステップ131302からステップ131305で、ホストパスに対して実行した処理と同様の処理をドライブパスに対して実行する。全てのドライブパスに対する処理が終了したら、パス転送量監視プログラム131300は、ステップ131301に戻る。
ステップ131310で、パス転送量監視プログラム131300は、各ホストパス、各ドライブパスに対して、全ての論理ボリューム及びホスト計算機(ホスト計算機なしも含む)の単位時間当たりのINPUT及びOUTPUT転送量をそれぞれ合計し、単位時間総転送量管理テーブル132700のスループット132720に値を書き込む。
パス転送量監視プログラム131300によって、各ホスト計算機がどの論理ボリュームにどのホストパス及びドライブパスを使用して、どのくらいアクセスしているかと、各ホストパス及び各ドライブパスの単位時間当たりの総転送量がわかる。
図17は、優先ホストパス選択プログラム131400により実行される処理のフローチャートである。優先ホストパス選択プログラム131400は、所定周期で起動し、各論理ボリュームに対するホストパス及びドライブパスの負荷状況を判定し、過負荷なパスが存在しなくなるように、ホスト毎にホストパスの優先度を決定する。
ステップ131401で、優先ホストパス選択プログラム131400は、単位時間総転送量管理テーブル132700において、各ホストパス及び各ドライブパスのスループットを参照し、ステップ131402へ進む。
ステップ131402で、優先ホストパス選択プログラム131400は、ホスト及びドライブパスそれぞれの転送量(スループット)が、対応する過負荷閾値132730を超えていないか判定する。過負荷閾値を超えているパスがあれば(131402:YES)、優先ホストパス選択プログラム131400は、ステップ131403に進む。超えているパスがなければ(131402:NO)、優先ホストパス選択プログラム131400は、処理を終了する。転送量が過負荷閾値を超えるパスが存在する場合にホストパス優先度の変更を行うことで、ボトルネックの発生によるストレージシステムの性能低下を適切に避けることができる。
ステップ131403で、優先ホストパス選択プログラム131400は、パス単位時間転送量管理テーブル132600を参照し、どのホスト計算機のどの論理ボリュームのホストパスの属性を変更すると、閾値を超えなくなるかを算出する。このとき、ホストパス優先度管理テーブル132200で、未定義状態や使用不可状態のパスは使用されない。
例えば、ホスト計算機番号1と論理ボリューム番号0の組み合わせのパス優先度設定において、ホストパス番号0の優先度がActiveであり、ホストパス番号1の優先度がPassiveとする。ホストパス番号0とドライブパス番号0の組み合わせ及びホストパス番号1とドライブパス番号1の組み合わせが、それぞれ、ホスト計算機番号1と論理ボリューム番号0との間の一つのパスを構成する。
パス単位時間転送量管理テーブル132600が、ホストパス番号0の流入量100MB/s、ホストパス番号0の流出量300MB/s、ドライブパス番号0の流入量が0MB/s、ドライブパス番号0の流出量300MB/sを示しているものとする。ホストパス番号1及びドライブパス番号1の論理ボリューム番号0に対する転送量は0である。
ActiveパスとPassiveパスを、ホストパス番号0とホストパス番号1の間で入れ替えたとき、各パスの転送量の変化は、単位時間総転送量管理テーブル132700の転送量に対して、以下のように計算できる。ホストパス番号0の流入量から100MB/sをマイナスし、ホストパス番号0の流出量から300MB/sをマイナスし、ドライブパス番号0の流出量から300MB/sをマイナスする。さらに、ホストパス番号1の流入量に100MB/sをプラスし、ホストパス番号1の流出量に300MB/sをプラスし、ドライブパス番号1の流出量に300MB/sをプラスする。
優先ホストパス選択プログラム131400は、例えば、過負荷閾値を超えるホストパス及びドライブパスを順次選択し、ホストパス優先度の変更により他のパスの転送量が過負荷閾値を超えるように変化しない範囲で、選択した各パスの転送量が過負荷閾値以下又は最も小さくなるように、対応するホストパス優先度を変更する。
パス間の平準化をより進めるために、優先ホストパス選択プログラム131400は、例えば、各パスの過負荷閾値に対する単位時間当たりの転送量の割合のばらつきが、最も小さくなるものを求めてもよい。算出方法は、全ての組み合わせパターンを検索してもよいし、組み合わせ最適化問題として数理的な解法を用いてもよい。また、過負荷閾値を超えないような組み合わせが存在しない場合、優先ホストパス選択プログラム131400は、各パスの過負荷閾値に対する単位時間当たりの転送量の割合が、最も小さくなるものを選択してもよい。
優先ホストパス選択プログラム131400は、論理ボリュームの複数のホストパスにおいて、オーナ権を有するコントローラのホストパスの優先的に選択してもよい。これにより、ストレージシステムの負荷を低減できる。例えば、いずれのパスの転送量も過負荷閾値以下でとなる条件において、ホスト計算機と論理ボリュームの組み合わせに対する複数のホストパスを選択できる場合、オーナ権を有するコントローラのホストパスを選択する。
優先ホストパス選択プログラム131400は、選択したホストパス優先度の組み合わせをホストパス優先度管理テーブル132200に格納する。各単位時間転送量の監視結果を複数世代分(複数周期分)格納している場合には、予め設定された重みを使用して世代間で加重平均を取った値と過負荷閾値を比較することで、ホストパスの優先度が切り替わる頻度が上がり、切り替えによる処理コスト増加で性能が不安定になることを避けることができる。ホストパスの優先度の決め方は、ここに記した最適化方式に限定されない。
次に、優先ホストパス選択プログラム131400は、ステップ131404へ進む。ステップ131404で、優先ホストパス選択プログラム131400は、ステップ131403で更新したホストパス優先度を各ホスト計算機200000に通知し、処理を終了する。
ホストパス優先度の変更頻度(転送量が過負荷閾値を超える頻度)が閾値を超える場合、優先ホストパス選択プログラム131400の起動周期を所定時間だけ長くして、ホストパス優先度の変更頻度を低くしてもよい。これにより、優先度変更による処理負荷の増加を低減できる。なお、ホストパス優先度の変更は、何れかのパスの転送量が閾値を超えることと異なる条件に応じて(例えば所定周期で)実行されてもよい。
以上のように、本実施例は、ホストパス及びドライブパスの負荷に応じて、ホストパスの優先度の変更によるホストパスとドライブパスの転送量を推定することで、ホストパスの優先度を適切に変更することできる。
実施例2について説明する。以下においては、実施例1との差分について主に説明し、実施例1と共通の部分の不要な説明を省略する。図18は、実施例2における計算機システムの構成例を示す図である。実施例2のストレージシステムは、複数のノードを含み、コントローラ間を接続するコントローラ間ネットワーク600000及びコントローラI/F190000を含み、そのコントローラの接続数が拡張されている。ドライブボックスは、一部のコントローラでのみ共有されている。
図18は、例として、四つのコントローラ110001~110004を示す。コントローラ110001及び110002は一つのノードに含まれ、コントローラ110003及び110004は他のノードに含まれる。ドライブボックス170001はコントローラ110001、110002に共有され、ドライブボックス170002はコントローラ110003、110004に共有されている。
この構成では、ドライブパスが直接接続されていないコントローラのメモリへドライブからデータを転送する場合、ドライブが接続されたコントローラのメモリへデータを転送したのち、コントローラI/F190000及びコントローラ間ネットワーク600000を通ってデータを転送する必要がある。
このシステムは、使用するホストパスを切り替えた先でコントローラ間データ転送が必要になるかならないかに応じて、選択されるドライブパスが変化させる。そのため、ホストパス優先度を切り替えたときに、各パスの流入量及び流出量がどのように変化するかの計算法が、実施例1と異なる。これにより、ホストパスの優先度の変更によるホストパスとドライブパスの転送量を適切に推定できる。
図19A及び19Bは、実施例2において、ホストパス優先度を変更したときの、データ転送量変化予測のための計算方法の一例を示した図である。1台のホスト計算機200000に対して、6台のコントローラ110001~110006が接続されている。ドライブボックス170001~170003は、それぞれ、2台のコントローラに共有されている。
図19Aに、ある論理ボリュームのホストパス優先度を切り替える前の、現在の各パスの転送量(スループット)を示す。コントローラ1(110001)のホストパスがAcitveとなっており、コントローラ4(110004)のホストパスがPassiveとなっている。
コントローラ1(110001)に接続されているドライブボックス(ドライブ)からは、コントローラ1(110001)を通して直接ホスト計算機200000にデータ転送できる。そのため、コントローラ1(110001)とドライブボックス170001を共有するコントローラ2(110002)のドライブパスの転送量は0MB/sとなっている。
その他のコントローラに接続されているドライブボックスからホスト計算機200000へのデータ転送は、接続されているどちらのコントローラを使用しても、必ずコントローラ間でデータ転送を必要とする。そのため、図19A及び19Bの例において、一つのドライブボックスの二つのドライブパスの転送量は等しい。なお、コントローラ間でデータ転送を必要とする同一ドライブボックスのドライブパスの転送量は同一とは限らず、コントローラ間のパス選択アルゴリズムやコントローラの状態に依存する。
図19Bでは、優先ホストパス選択プログラム131400が、ステップ131403においてホストパスの優先度を選択する際に、ActiveパスとPassiveパスを切り替えた場合の各パスの転送量の変化の計算法を示す。図19Aの状態から、コントローラ4(110004)のパスをActiveに、コントローラ1(110001)のパスをPassiveに変更したとする。
Activeに変更されたコントローラ4(110004)のホストパスの転送量は、変更前のコントローラ1(110001)のホストパスと同様に、1000MB/sと計算される。コントローラ4(110004)に接続されているドライブボックス170002からのデータはコントローラ4(110004)を通って直接ホスト計算機200000に転送される。そのため、コントローラ4(110004)のドライブパスの転送量は200MB/s、コントローラ3(110003)のドライブパスの転送量は0MB/sと計算される。
コントローラ1(110001)及びコントローラ2(110002)については、どちらのドライブパスを使用しても、コントローラ間のデータ転送が必要となるため、均等に使用されると仮定して、どちらも250MB/sと計算される。コントローラ5(110005)及びコントローラ6(110006)については、パスの優先度変更前と状況が変わっていないため、そのまま変化がないとして計算される。
このようにして、切り替え後の各パスの転送量を計算し、切り替え前の値との差分を単位時間総転送量管理テーブルのスループットと足し合わせることで、各パスの総転送量の変化を得ることができる。優先ホストパス選択プログラム131400は、これを各ホスト計算機と論理ボリュームの組み合わせに対して実行し、過負荷閾値を超えないようなホストパス優先度の組み合わせを検索する。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
100000 ストレージシステム
110000-110006 コントローラ
120000 プロセッサ
130000 メモリ
131000 プログラム格納領域
131100 コマンド振り分け処理プログラム
131110 コマンド処理要求メッセージ
131200 I/O処理プログラム
131300 パス転送量監視プログラム
131400 優先ホストパス選択プログラム
131500 優先ホストパス切り替えプログラム
132000 制御情報格納領域
132100 論理ボリュームアドレス管理テーブル
132200 ホストパス優先度管理テーブル
132300 オーナ権管理テーブル
132400 パス管理テーブル
132500 パス転送量管理テーブル
132600 パス単位時間転送量管理テーブル
132700 単位時間総転送量管理テーブル
132800 コマンド管理テーブル
132900 キャッシュセグメント管理テーブル
133000 キャッシュメモリ領域
134000 データ転送用バッファ領域
134100 データバッファ領域
135000 キャッシュメモリ領域
140000 ホストI/F
150000 ドライブI/F
160000 管理I/F
170000-170003 ドライブボックス
180000 コントローラ間パス
190000 コントローラI/F
200000 ホスト計算機
300000 管理端末
400000 外部ネットワーク
500000 管理ネットワーク
600000 コントローラ間ネットワーク

Claims (10)

  1. ホストからのI/O要求を処理するストレージシステムであって、
    複数のコントローラと、
    複数の記憶ドライブと、を含み、
    前記ホストと前記複数のコントローラとは、ホストパスで接続され、
    前記複数のコントローラと前記複数の記憶ドライブとは、ドライブパスで接続され、
    論理ボリュームを担当するコントローラが、前記論理ボリュームを指定するI/O要求を処理し、
    前記論理ボリュームを担当するコントローラと、前記論理ボリュームに対する複数のホストパスの優先度と、前記論理ボリュームにかかる物理記憶領域を含む記憶ドライブと、に対して、前記ホストから前記記憶ドライブまでのホストパス及びドライブパスが決定され、
    前記複数のコントローラは、
    前記論理ボリュームの前記複数のホストパス及び複数のドライブパスの各パスの転送量を監視し、
    前記複数のホストパスの優先度の変更後の前記ホストパス及び前記ドライブパスの変更を推定し、推定された前記ホストパス及び前記ドライブパスの変更と前記監視した各パスの転送量とに基づいて、前記優先度の変更後の前記複数のホストパス及び前記複数のドライブパスの各パスの転送量を推定し、
    各パスの推定された前記転送量に基づいて、各パスの転送量が所定の条件を満たすように、前記複数のホストパスの優先度を変更する、ストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記複数のコントローラは、
    前記複数のホストパス及び前記複数のドライブパスの転送量を監視し、
    前記複数のホストパス及び前記複数のドライブパスのいずれかのパスにおける転送量が所定の閾値を超える場合に、前記複数のホストパスの優先度を変更する、ストレージシステム。
  3. 請求項2に記載のストレージシステムであって、
    前記複数のコントローラは、論理ボリュームとホストとの組み合わせそれぞれについて、前記複数のホストパス及び前記複数のドライブパスの転送量を監視する、ストレージシステム。
  4. 請求項2に記載のストレージシステムであって、
    前記複数のコントローラは、前記複数のホストパスの優先度の変更後の、前記複数のホストパス及び前記複数のドライブパスの各パスの推定転送量が前記閾値以下となるように、前記複数のホストパスの優先度を変更する、ストレージシステム。
  5. 請求項2に記載のストレージシステムであって、
    前記複数のコントローラは、前記複数のホストパス及び前記複数のドライブパスの各パスと対応する閾値との差異のばらつきが小さくなるように、前記複数のホストパスの優先度を変更する、ストレージシステム。
  6. 請求項2に記載のストレージシステムであって、
    前記複数のコントローラは、複数世代の前記複数のホストパス及び前記複数のドライブパスの転送量の監視結果を保持し、
    前記複数世代の加重平均と前記閾値とを比較する、ストレージシステム。
  7. 請求項1に記載のストレージシステムであって、
    前記複数の記憶ドライブの少なくとも一部は、前記複数のコントローラの一部にのみ共有され、
    前記複数のコントローラは、コントローラ間のデータ転送が発生しない条件において、前記複数のホストパスの優先度の変更後の、前記複数のホストパス及び前記複数のドライブパスの各パスの転送量を推定する、ストレージシステム。
  8. 請求項に記載のストレージシステムであって、
    前記複数のコントローラは、前記複数のホストパスの優先度の変更後の前記複数のホストパス及び前記複数のドライブパスの各パスの推定転送量が前記閾値以下となる条件において、前記論理ボリュームの前記複数のホストパスにおいて、前記論理ボリュームを担当するコントローラのホストパスの優先度を高くする、ストレージシステム。
  9. 請求項1に記載のストレージシステムであって、
    前記複数の記憶ドライブそれぞれのドライブパスは、前記複数のコントローラにおける1又は複数の特定のコントローラと設定されている、ストレージシステム。
  10. ホストからのI/O要求を処理するストレージシステムの制御方法であって、
    前記ストレージシステムは、複数のコントローラと、複数の記憶ドライブと、を含み、
    前記ホストと前記複数のコントローラとは、ホストパスで接続され、
    前記複数のコントローラと前記複数の記憶ドライブとは、ドライブパスで接続され、
    前記制御方法は、
    前記複数のコントローラにおいて論理ボリュームを担当するコントローラが、前記論理ボリュームを指定するI/O要求を処理し、前記論理ボリュームを担当するコントローラと、前記論理ボリュームに対するホストパスの優先度と、前記論理ボリュームにかかる物理記憶領域を含む記憶ドライブと、に対して、前記ホストから前記記憶ドライブまでのホストパス及びドライブパスが決定され、
    前記複数のコントローラが、前記論理ボリュームの複数のホストパス及び複数のドライブパスの各パスの転送量を監視し、
    前記複数のコントローラが、前記複数のホストパスの優先度の変更後の前記ホストパス及び前記ドライブパスの変更を推定し、推定された前記ホストパス及び前記ドライブパスの変更と前記監視した各パスの転送量とに基づいて、前記優先度の変更後の前記複数のホストパス及び前記複数のドライブパスの各パスの転送量を推定し、
    前記複数のコントローラが、各パスの推定された前記転送量に基づいて、各パスの転送量が所定の条件を満たすように、前記複数のホストパスの優先度を変更する、制御方法。
JP2019229906A 2019-12-20 2019-12-20 ストレージシステム Active JP7348056B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019229906A JP7348056B2 (ja) 2019-12-20 2019-12-20 ストレージシステム
US17/012,308 US20210191623A1 (en) 2019-12-20 2020-09-04 Storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019229906A JP7348056B2 (ja) 2019-12-20 2019-12-20 ストレージシステム

Publications (3)

Publication Number Publication Date
JP2021099560A JP2021099560A (ja) 2021-07-01
JP2021099560A5 JP2021099560A5 (ja) 2022-06-29
JP7348056B2 true JP7348056B2 (ja) 2023-09-20

Family

ID=76439762

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019229906A Active JP7348056B2 (ja) 2019-12-20 2019-12-20 ストレージシステム

Country Status (2)

Country Link
US (1) US20210191623A1 (ja)
JP (1) JP7348056B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023125009A (ja) * 2022-02-28 2023-09-07 株式会社日立製作所 ストレージシステム、パス制御方法、及びプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040026A (ja) 2004-07-28 2006-02-09 Hitachi Ltd 負荷分散コンピュータシステム、経路設定プログラム及びその方法
JP2010079626A (ja) 2008-09-26 2010-04-08 Hitachi Ltd 計算機システムの負荷分散方法及びシステム
JP2011530728A (ja) 2008-10-10 2011-12-22 株式会社日立製作所 ストレージシステムおよびその制御方法
WO2014049718A1 (ja) 2012-09-26 2014-04-03 株式会社日立製作所 管理装置及び管理方法
WO2016013116A1 (ja) 2014-07-25 2016-01-28 株式会社日立製作所 ストレージ装置
JP2016076184A (ja) 2014-10-09 2016-05-12 富士通株式会社 ファイルシステム、管理装置の制御プログラム、および、ファイルシステムの制御方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040026A (ja) 2004-07-28 2006-02-09 Hitachi Ltd 負荷分散コンピュータシステム、経路設定プログラム及びその方法
JP2010079626A (ja) 2008-09-26 2010-04-08 Hitachi Ltd 計算機システムの負荷分散方法及びシステム
JP2011530728A (ja) 2008-10-10 2011-12-22 株式会社日立製作所 ストレージシステムおよびその制御方法
WO2014049718A1 (ja) 2012-09-26 2014-04-03 株式会社日立製作所 管理装置及び管理方法
WO2016013116A1 (ja) 2014-07-25 2016-01-28 株式会社日立製作所 ストレージ装置
JP2016076184A (ja) 2014-10-09 2016-05-12 富士通株式会社 ファイルシステム、管理装置の制御プログラム、および、ファイルシステムの制御方法

Also Published As

Publication number Publication date
US20210191623A1 (en) 2021-06-24
JP2021099560A (ja) 2021-07-01

Similar Documents

Publication Publication Date Title
US10853139B2 (en) Dynamic workload management based on predictive modeling and recommendation engine for storage systems
CN110008149B (zh) 融合式存储器件及其操作方法
JP6588106B2 (ja) 計算機システム及び計算機の制御方法
US10282136B1 (en) Storage system and control method thereof
US7536508B2 (en) System and method for sharing SATA drives in active-active RAID controller system
JP4435831B2 (ja) ストレージエリアネットワークレベルにおける代替キャッシュ方式の提供
US8984221B2 (en) Method for assigning storage area and computer system using the same
WO2017162179A1 (zh) 用于存储系统的负载再均衡方法及装置
US20150293708A1 (en) Connectivity-Aware Storage Controller Load Balancing
JP5531091B2 (ja) 計算機システム及びその負荷均等化制御方法
JP2001290746A (ja) I/o要求に優先順位を与える方法
US9747040B1 (en) Method and system for machine learning for write command selection based on technology feedback
CN111149081A (zh) 负载平衡分配式存储系统中的元数据控制
JP2006285808A (ja) ストレージシステム
CN112346653B (zh) 驱动器箱、存储系统和数据传送方法
US10782898B2 (en) Data storage system, load rebalancing method thereof and access control method thereof
US8954666B2 (en) Storage subsystem
US12118408B2 (en) Techniques for workload balancing using dynamic path state modifications
WO2016080953A1 (en) Method and apparatus for data cache in converged system
JP6232936B2 (ja) 情報処理装置、記憶装置制御回路及び記憶装置の制御方法
JP7348056B2 (ja) ストレージシステム
CN112292661A (zh) 扩展分布式存储系统
CN112513828A (zh) 以分布式方式实现文件的一致性和页面高速缓存支持
US20210096771A1 (en) Storage system, path management method, and recording medium
JP6353981B2 (ja) ストレージシステム、及び、記憶制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220621

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220621

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230706

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230907

R150 Certificate of patent or registration of utility model

Ref document number: 7348056

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350