JP7252931B2 - ストレージ装置およびストレージ装置の制御方法 - Google Patents

ストレージ装置およびストレージ装置の制御方法 Download PDF

Info

Publication number
JP7252931B2
JP7252931B2 JP2020185353A JP2020185353A JP7252931B2 JP 7252931 B2 JP7252931 B2 JP 7252931B2 JP 2020185353 A JP2020185353 A JP 2020185353A JP 2020185353 A JP2020185353 A JP 2020185353A JP 7252931 B2 JP7252931 B2 JP 7252931B2
Authority
JP
Japan
Prior art keywords
controller
group
intra
logical
shared memory
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
JP2020185353A
Other languages
English (en)
Other versions
JP2022074920A (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 JP2020185353A priority Critical patent/JP7252931B2/ja
Priority to US17/200,678 priority patent/US11531631B2/en
Publication of JP2022074920A publication Critical patent/JP2022074920A/ja
Application granted granted Critical
Publication of JP7252931B2 publication Critical patent/JP7252931B2/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
    • 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/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
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、ストレージ装置およびストレージ装置の制御方法に係り、特に、論理デバイスをグループ化して、ストレージアクセスのサービスを提供する場合に、ストレージのIO性能を劣化することなく、精度の高いアクセスの上限チェックを行うのに好適なストレージ装置およびストレージ装置の制御方法に関する。
情報処理システムの分野では、従来よりホストコンピュータと独立させて、ハードディスク(Hard Disk:HD)装置などを制御するストレージ装置が広く使われている。
このようなストレージ装置においては、複数の論理デバイス(ボリューム)に対して、アクセスを行うため全体のスループットを確保しながら、個々の論理デバイスに対しても十分なIO性能を確保した制御を行う必要がある。このようなストレージ装置の制御の技術に関しては、例えば、特許文献1に開示がある。この特許文献1に記載された技術では、ストレージ管理装置において、複数のボリュームに対して、性能干渉を抑えた帯域制限幅の調整を容易に行うために、ストレージ管理装置が、複数のボリュームを含むTierプールの負荷情報を取得し、その負荷情報を基に、Tierプールの全体帯域幅を算出し、各ボリュームに割り当てた個別帯域幅の合計全体帯域幅となるように各個別帯域幅を算出し各ボリュームに割り当てるようなIO制御を行う。
特開2016-99746号公報
近年、サーバ仮想化の一般化やクラウドサービスの普及により、同一物理ストレージを複数のサービス間で共有するケースが増加している。パブリッククラウドでは、複数の企業(サービス)を同居させるマルチテナントのニーズがあり、プライベートクラウドでは、ビジネス上重要度の異なるアプリケーションを同居させることも増えている。
これらのサービス(アプリケーション)においては、業務の処理の緊急性や扱うデータ量の違いがあることから、ストレージに対して要求するサービスレベル(スループットやレスポンスタイム)が当然のことながら異なることになる。
そのため、ストレージ装置においては、サービス間の性能干渉を抑え、一定の性能と品質を提供する為に、柔軟なリソースの割り振りや、性能要件の厳しいサービスや時間帯における優先順位の設定など、ストレージ側で資源を有効に活用するための機能が重要となってきている。
このようにストレージ装置において、IOに対するサービスの質を提供する機能(制御)は、一般的にQoS(Quality of Service)機能(制御)と呼ばれている。
例えば、上記従来技術の特許文献1においては、論理デバイス(ボリューム)単位のQoS機能により、個々のボリュームに対し、帯域幅を割当てて制御するようにしている。
ところが、クラウド環境を含むマルチテナントの場合、一つのテナントの中でも複数の論理デバイスを使用してサービスを提供することも考えられる。このようなサービス形態に対応するには、複数の論理デバイスを束ねたグループ単位でのサービスレベルの提供が不可欠であり、それに対応するために、QoSグループという概念が提唱されている。QoSグループは、複数論理デバイスを束ねた集合であり、QoSグループを定義すると、QoSグループ内の論理デバイスをまとめたQoS制御を行うことができる。これにより、クラウド環境での運用に適した、柔軟なシステム構築が可能となる。
しかしながら、上記従来技術の特許文献1においては、論理デバイスをまとめたQoS制御については、考慮されていない。特に、大規模なストレージ装置においては、複数のコントローラを有することが一般的であるが、従来技術では、コントローラ間で、論理デバイスの稼働情報を共有していないため、QoSグループ全体のIO状況を把握できず、グループ全体での上限値制御はできない。また、従来技術で使用する稼働情報を全コントローラからアクセスできるコントローラ間共有メモリに変更することもできるが、QoSグループ内の論理デバイスが複数のコントローラをまたぐ場合には、QoS制御によりIO性能が低下する。
本発明の目的は、論理デバイスをグループ化して、ストレージアクセスのサービスを提供する場合に、ストレージのIO性能を劣化することなく、精度の高いアクセスの上限チェックを行うことのできるストレージ装置を提供することにある。
上記問題点を解決するためのストレージ装置の構成は、好ましくは、ホストからのIO要求により、論理デバイスに対してデータの読み書きを行うストレージ装置であって、ストレージ装置は、二つ以上のコントローラと、データを記憶する一つ以上の記憶装置からなり、コントローラは、ホストからのIO要求に対してIO処理を実行するプロセッサと、IO処理の制御情報を記憶する主メモリとを有し、主メモリは、自コントローラのみがアクセスするコントローラ内共有メモリと、他のコントローラがアクセスできるコントローラ間共有メモリとに分割され、コントローラ間共有メモリに、論理デバイスのグループに対する第一のグループ実行IO数を格納し、コントローラ内共有メモリに、論理デバイスのグループに対する第二のグループ実行IO数と、コントローラ内実行IO数とを格納しコントローラ内共有メモリに、論理デバイスのグループに対するIO数の上限値を格納し、ストレージ装置は、ホストからIO要求があったときに、各論理デバイスに対応するIOキューにキューイングし、
ストレージ装置のプロセッサは、キューイングされたIOキューからIO要求を取り出し、ストレージ装置のプロセッサは、コントローラ内共有メモリにアクセスし、論理デバイスのグループに対するIO数の上限値と、論理デバイスのグループに対する第二のグループ実行IO数と、コントローラ内実行IO数とを取得し、ストレージ装置のプロセッサは、論理デバイスのグループに対するIO数の上限値と、論理デバイスのグループに対する第二のグループ実行IO数とコントローラ内実行IO数との和を比較して、論理デバイスのグループに対する第二のグループ実行IO数とコントローラ内実行IO数との和が論理デバイスのグループに対するIO数の上限値未満のときには、コントローラ内実行IO数をインクリメントして、コントローラ内共有メモリに書き戻し、ストレージ装置のプロセッサは、コントローラ内実行IO数と、以下の式より定まるコントローラ間共有メモリ更新間隔閾値とを比較し、
コントローラ間共有メモリ更新間隔閾値=(「論理デバイスのグループに対するIO数の上限値」-(「論理デバイスのグループに対する第二のグループ実行IO数」+「コントローラ内実行IO数」))×「余裕割合係数」÷「システム内コントローラ数」
ストレージ装置のプロセッサは、コントローラ内実行IO数が、コントローラ間共有メモリ更新間隔閾値以上のときには、論理デバイスのグループに対する第一のグループ実行IO数を取得し、ストレージ装置のプロセッサは、論理デバイスのグループに対する第一のグループ実行IO数に、コントローラ内実行IO数を加算して、コントローラ間共有メモリに書き戻し、ストレージ装置のプロセッサは、加算した論理デバイスのグループに対する第一のグループ実行IO数を、コントローラ内共有メモリの論理デバイスのグループに対する第二のグループ実行IO数として書込み、コントローラ内共有メモリのコントローラ内実行IO数をクリアし、
ストレージ装置のプロセッサは、論理デバイスのグループに対するIO数の上限値と、論理デバイスのグループに対する第二のグループ実行IO数とコントローラ内実行IO数との和を比較して、論理デバイスのグループに対する第二のグループ実行IO数とコントローラ内実行IO数との和が論理デバイスのグループに対するIO数の上限値以上のときには、ストレージ装置は、ホストからIO要求に対応したIO処理を行わないようにしたものである。
本発明によれば、論理デバイスをグループ化して、ストレージアクセスのサービスを提供する場合に、ストレージのIO性能を劣化することなく、精度の高いアクセスの上限チェックを行うことのできるストレージ装置を提供することができる。
ストレージシステムのハードウェア構成図である。 ストレージ装置の機能構成図である。 実施形態1に係るコントローラ間共有稼動情報テーブルの一例を示す図である。 実施形態1に係るコントローラ内稼動情報テーブルの一例を示す図である。 実施形態1に係る構成情報テーブルの一例を示す図である。 実施形態1に係るQoSグループとコントローラにおける稼動情報のアクセスの仕方を説明する図である。 コントローラ間共有メモリに格納される稼動情報の更新間隔を説明する図である。 実施形態1に係るホストからIOを受領した場合のメモリアクセスの概要を示す図である。 実施形態1に係るストレージ装置のコントローラのIO制御の詳細を示すフローチャートである。 実施形態2に係るコントローラ間共有稼動情報テーブルの一例を示す図である。 実施形態2に係るコントローラ内稼動情報テーブルの一例を示す図である。 実施形態2に係る構成情報テーブルの一例を示す図である。 実施形態2に係るホストからIOを受領した場合のメモリアクセスの概要を示す図である。 実施形態2に係るストレージ装置のコントローラのIO制御の詳細を示すフローチャートである。
以下、本発明に係る各実施形態について、図1ないし図14を用いて説明する。
〔実施形態1〕
以下、本発明に係る実施形態1について、図1ないし図9を用いて説明する。
先ず、図1および図2を用いて本発明の実施形態1に係るストレージシステムの構成について説明する。
実施形態1に係るストレージシステムは、図1に示されるように、ホスト10、ストレージ装置100、管理端末20が接続された構成である。このストレージシステムにおいては、ホスト10とストレージ装置100は、ホスト-ストレージインタフェース5、管理端末20とストレージ装置100は、ネットワークインタフェース7で接続されている。
ホスト-ストレージインタフェース5は、例えば、ファイバチャネル(Fiber Channel)、iSCSI(Internet Small Computer Systems Interface)など、ホスト10とストレージ装置100を接続するためのいわゆるストレージエリアネットワークを接続するための大容量データ転送が可能なインタフェースである。ネットワークインタフェース7は、例えば、構内ネットワークやインターネットなどのグルーバルネットワークを接続するインタフェースである。
ホスト10は、アプリケーションソフトウェアを実行し、ストレージ装置100に格納するデータの読み書きをする情報処理装置である。ストレージ装置100は、ディスク制御装置(DisK Controller:DKC)とも呼ばれ、複数のドライブを制御し、ホスト10からのIO要求に応答し、ドライブに格納されたデータの読み書きを行う装置である。管理端末20は、管理者がストレージ装置100に対して管理コマンドを入力したり、ストレージ装置100の稼動状況を表示させて管理する端末である。
IO要求とは、例えば、ホスト10からストレージ装置100の論理的な記憶領域に対してなされるREADコマンドやWRITEコマンドである。READコマンドやWRITEコマンドでは、パラメータとして、論理的な記憶領域(Logical Unit)に対するアドレス、データ長が指定される。なお、本明細書では、ホスト10からストレージ装置100に対するIO要求を、単に「IO」ということもある。
ストレージ装置100は、通常、二個以上のコントローラ110を有する。コントローラは、ストレージ装置100内のドライブに対するアクセス制御を行う部分である。ストレージ装置100は、全体のIO性能を向上させるため複数のコントローラ110を備えるのが一般的である。なお、図1では、コントローラ♯1:110♯1、コントローラ♯2:110♯2として、二つのコントローラを図示している。
ドライブ140は、大容量のデータを記憶する補助記憶装置であり、例えば、HDD(Hard Disk Drive)などの磁気記憶装置や、SSD(Solid State Drive)などの不揮発性半導体記憶装置である。
ストレージ装置100とドライブ140とは、ディスクインタフェース9により接続されている。ディスクインタフェース9は、例えば、SAS(Serial Attached SCSI)やNVMe(Non-Volatile Memory Express)などのインタフェースである。
コントローラ110は、チャネルアダプタ101、主メモリ120、MPU130、ディスクボード103からなる。
チャネルアダプタ101は、ホスト10と各コントローラ110をホスト-ストレージインタフェース5により接続するためのアダプタとなる装置である。主メモリ120は、ストレージ装置の稼動時にワークデータやコマンドを保持するDRAM(Dynamic RAM)などの揮発性の半導体記憶装置である。MPU(Micro Processor Unit)130は、制御プログラムを実行し、コントローラ110を制御する処理装置である。MPU130は、各スレッドを独立して処理できる複数のMP(コア)131を有している。ディスクボード103は、ディスクインタフェース9によりストレージ装置100とドライブ140とを接続する装置である。図1に示されるように、各ディスクボード103は、複数のドライブ140と接続され、各ドライブ140は、通常、複数のコントローラ110のディスクボード103と接続されている。
主メモリ120には、論理的なアクセス領域として、コントローラ間共有メモリ121とコントローラ内共有メモリ122がある。
コントローラ間共有メモリ121は、他のコントローラ(例えば、コントローラ♯1:110♯1にある主メモリ120のときには、コントローラ♯2:110♯2)からのアクセスを許容しているメモリ領域であり、コントローラ内共有メモリ122は、そのコントローラ110のMP131のみ(例えば、コントローラ♯1:110♯1にある主メモリ120のときには、コントローラ♯1:110♯1のMP131)がアクセスすることが許容された領域である。
一般に、コントローラ間共有メモリ121は、他のコントローラからアクセスするときには、データ転送と処理のオーバヘッドのため、コントローラ内共有メモリ122と比較して、100~1000倍の処理時間を要する。
次に、図2を用いてストレージ装置の機能構成を説明する。
ストレージ装置100は、図2に示されるように、性能制御部210、稼動情報取得部220、稼動情報更新部230、制御情報記憶部240の各機能部を有し、論理的なデータのアクセス単位としての論理デバイス201からなる論理デバイス群200からなる。なお、各機能部は、ストレージ装置100の制御プログラムがMP131を実行させることにより実現される。また、図2では、コントローラ♯2:110♯2では、制御情報記憶部240のみ図示しているが、コントローラ♯1:110♯1と同様の機能部を有することはもとよりである。
性能制御部210は、制御情報記憶部240に記憶された制御情報を参照し、論理デバイス201へのアクセス性能を制御する機能部である。稼動情報取得部220は、論理デバイス201のアクセス情報(IOの稼動情報)を取得して、制御情報記憶部240に記憶された制御情報に書き込む機能部である。稼動情報更新部230は、コントローラ内共有メモリ122に書き込まれる制御情報を、コントローラ間共有メモリ121に反映させる機能部である(詳細は、後述)。制御情報記憶部240は、コントローラ110における性能制御をするための制御情報を記憶する機能部である。制御情報記憶部240の制御情報を保持するテーブルとしては、構成情報テーブル300、コントローラ間共有稼動情報テーブル310、コントローラ内稼動情報テーブル320がある。この内、構成情報テーブル300、コントローラ内稼動情報テーブル320は、コントローラ内共有メモリ122に保持されるテーブルであり、コントローラ間共有稼動情報テーブル310は、コントローラ間共有メモリ121に保持されるテーブルである。
次に、図3ないし図5を用いて実施形態1のストレージ装置で用いられるデータ構造について説明する。
コントローラ間共有稼動情報テーブル310は、コントローラ間共有メモリ121上に置かれ、コントローラ間で共有されるQoSグループに対する制御情報を管理するためのテーブルであり、図3に示されるように、QoSグループID310a、QoSグループ実行IO数(マスタ)310bの各フィールドを有する。
QoSグループID310aには、制御対象のQoSグループを一意に表す識別子が格納される。QoSグループ実行IO数(マスタ)310bには、QoSグループのシステム内全てのコントローラで実行した対象QoSグループに所属する論理デバイスに対する単位時間あたりのIO数が格納される。IO数の詳細は、後に説明する。
コントローラ内稼動情報テーブル320は、コントローラ内共有メモリ122上に置かれ、QoSグループに対する制御情報と、自コントローラ内のローカルな制御情報を管理するためのテーブルであり、図4に示されるように、QoSグループID320a、QoSグループ実行IO数(前回値)320b、コントローラ内実行IO数(更新値)320cの各フィールドを有する。
QoSグループID320aには、制御対象のQoSグループを一意に表す識別子が格納される。QoSグループ実行IO数(前回値)320bには、QoSグループのシステム内全てのコントローラで実行した対象QoSグループに所属する論理デバイスの前回の更新時の単位時間あたりのIO数が格納される(これに対する計算の詳細は、後述)。コントローラ内実行IO数(更新値)320cには、前回更新後に自コントローラで実行した対象QoSグループに所属する論理デバイスの単位時間あたりのIO数が格納される。
構成情報テーブル300は、コントローラ内共有メモリ122上に置かれ、ストレージ装置100とQoSグループに対する構成情報を管理するためのテーブルであり、図5に示されるように、QoSグループID300a、QoSグループIO上限値300b、システム内コントローラ数300cの各フィールドを有する。
QoSグループID300aには、制御対象のQoSグループを一意に表す識別子が格納される。QoSグループIO上限値300bには、システム管理者が設定したQoSグループに対する単位時間あたりのIO数の上限値が格納される。システム内コントローラ数300cには、QoSグループの論理デバイスにアクセスするコントローラ110の数が格納される。例えば、図1に示されたストレージ装置100の構成では、システム内コントローラ数は、2となる。
次に、図6および図7を用いて本発明の制御に対する考え方について説明する。
ここで、図6に示されるようなストレージ装置100の構成を前提としてQoSグループとコントローラにおける稼動情報のアクセスの仕方を説明する。図6の例では、QoSグループのQoSGroup1に論理デバイス1:LDEV1、論理デバイス2:LDEV2、論理デバイス3:LDEV3が定義されており、コントローラとしてCTL1、CTL2がそれらのデータにアクセスするものとする。
QoSGroup1の稼動情報としては、論理デバイスに対する実行IO数、データ転送量があるが、実施形態1では、実行IO数のみを問題とする。なお、以下では、実行IO数と記載した場合、単位時間あたりのIO数であるとする。
本発明のストレージ装置に対する制御の考え方は、コントローラ間共有メモリ121へのアクセスを減らすため、コントローラ間共有メモリ121に格納されるQoSグループ全体の稼働情報に対する更新・参照頻度を、その上限値への近づき具合に従い調整するものである。
以下、具体的に順を追って説明する。
(1)各コントローラにおいて、論理デバイスごとのIO処理を行った際、実行IO数をコントローラ内共有メモリ122を使用して計上する。
(2)論理デバイス単位のキューからIOを起動する際、(1)で退避した値と現時点でのコントローラ内共有メモリ122で集計している稼働情報からグループ全体の実行数を加算することにより、QoSグループIO上限値と比較する実行IO数以下の(式1)により算出する。
「QoSグループの実行IO数」+「コントローラ内実行IO数」…(式1)
そして、(式1)で計算した値がQoSグループIO上限値以上になる場合、論理デバイス単位のキューからIOを起動させず、(式1)で計算した値未満になる場合には、論理デバイス単位のキューからIOを起動させる。
(3)論理デバイス単位のキューからIOを起動させるときには、コントローラ内共有メモリ122内の更新前の自コントローラのIO数をリードし、更新前のデータに自コントローラのIO量を加算し、自コントローラのIO数内に退避する。
(4)次に、以下の(式2)を使用し、コントローラ間共有メモリ更新間隔閾値を計算する。
コントローラ間共有メモリ更新間隔閾値=(「QoSグループIO上限値」-(「QoSグループ実行IO数」+「コントローラ内実行IO数」))×「余裕割合係数」÷「システム内コントローラ数」 …(式2)
ここで、QoSグループIO上限値は、QoSグループの属する論理デバイスのIO数全体の上限値、QoSグループ実行IO数は、QoSグループの属する論理デバイスに対してIOの実行された数、コントローラ内実行IO数は、そのコントローラが論理デバイスに対してIOを実行した数、余裕割合係数は、一定の割合を表す係数であり、例えば、0.05=5%とする。余裕割合係数は、固定でもよいが、管理端末20より入力させてシステムを運用結果に従って柔軟に対処できるようにしてもよい。
また、QoSグループ実行IO数は、コントローラ間共有メモリ121とコントローラ内共有メモリ122の双方に保持され、コントローラ内実行IO数は、コントローラ内共有メモリ122に保持される。
(5)コントローラ内の実行IO数が(式2)で計算したコントローラ間共有メモリ更新間隔閾値に到達した場合、コントローラ内で計上してきたコントローラ内実行IO数をコントローラ間共有メモリのQoSグループ実行IO数に加算する。到達していない場合、コントローラ内実行IO数にIO数を付け加えて集計処理を完了する。
(6)(5)でコントローラ間共有メモリへの加算を行った場合、コントローラ内の稼働情報をクリアする。クリア後に集計処理を完了する。
この処理により、QoSグループの上限値制御の精度を維持しつつ、かつ、コントローラ内の実行IO数が、(式2)で定義したコントローラ間共有メモリ更新間隔閾値に到達しないとき(QoSグループIO上限値に到達するまで、余裕があるとき)、コントローラ内共有メモリ122のみアクセスし、コントローラ間共有メモリ121にアクセスすることはないので、メモリアクセスに関してのIO処理の性能を劣化するのを防ぐことができる。
次に、図7を用いてコントローラ間共有メモリに格納される稼動情報の更新間隔の考え方について説明する。
ここで、図7(A)が、コントローラ内実行IO数についてコントローラ間共有メモリ更新間隔閾値が余裕ある場合であり、図7(B)が、コントローラ内実行IO数についてコントローラ間共有メモリ更新間隔閾値が余裕ない場合を示している。図に示されるように、コントローラ内実行IO数についてコントローラ間共有メモリ更新間隔閾値が余裕ある場合には、コントローラ間共有メモリ更新間隔閾値は、大きくなり、余裕がないときには、コントローラ間共有メモリ更新間隔閾値は、小さくなる。
コントローラ間共有メモリ更新間隔閾値(h)を計算するために、先ず、QoSグループ上限値(a)から前回更新までのグループ全体の実行済みIO数(b)と自コントローラ内の実行済みIO数(c)を減算し、システム全体の残実行可能IO数(d)を算出する。
次に、システム全体の残実行可能IO数(d)をシステム内コントローラ数(e)で割り算をすることにより、各コントローラの残実行可能IO数(f)を算出する。
突発的なIO流入などの要因によってコントローラのIO処理のかたよりが生じることによる上限値オーバを防ぐため、余裕割合係数(例えば、5%)(g)毎に更新間隔を定める。よって、コントローラ間共有メモリ更新間隔閾値(h)は、各コントローラの残実行可能IO数(f)×余裕割合係数(g)により算出される。
このように、コントローラ間共有メモリ更新間隔閾値(h)を定めることにより、各コントローラは、コントローラ間共有メモリ更新間隔閾値(h)間に収まる間は、コントローラ間共有メモリ121へアクセスを行うことなく、IO数のカウントは、コントローラ内共有メモリ122のみで実施する。
これにより、コントローラ内実行IO数が小さいときには、コントローラ間共有メモリ121へアクセスを行うことないので、IO処理の性能低下は発生しない。かつ、コントローラ内実行IO数が大きくなり、QoSグループIOのIO数が、QoSグループIO上限値に近づいているときには、コントローラ間共有メモリ更新間隔閾値(h)が小さくなって、コントローラ間共有メモリへのIO数カウントの更新頻度も高くなるので、精度の高いQoS上限値制御をできる仕組みになっている。
次に、図8および図9を用いて実施形態1に係るストレージ装置の処理について説明する。
先ず、図8を用いてホストからIOを受領した場合のメモリアクセスの概要について説明する。
前提として、ストレージ装置100のコントローラ110は、各論理デバイス201のオーナ権が与えられており、論理デバイス201のQoS制御は、オーナ権を有するコントローラ110で実施されるものとする。
[1]ストレージ装置100のコントローラ110は、ホスト10からチャネルアダプタ101経由でIO要求を受領する。
[2]受領したIO要求は、論理デバイスオーナ権側のコントローラに転送され、論理デバイス毎に用意されているIOキューにエンキュー(キューイング)される。ここで、IOキューは、FIFO(First In First Out)のデータ構造である。
[3]コントローラ内の各MP131は、各論理デバイス201のIOキューを順番にチェックする。
IO要求が入っている場合には、当該論理デバイスが所属するQoSグループの以下の値をコントローラ内共有メモリから取得する。
qu:QoSグループIO上限値
qepre:QoSグループ実行IO数(前回値)
ceupd:コントローラ内実行IO数(更新値)
そして、quと(qepre+ceupd)を比較し、(qepre+ceupd)が、quに達しているか否かを判定する。
[4-1]qu:QoSグループIO上限値に到達していない場合には、コントローラ110は、IO要求に応じたIO処理を実行する。
[4-1-1]次に、IO実行数を、コントローラ内共有メモリ122のコントローラ内実行IO数(更新値)に加算する。
[4-1-2]次に、(式3)でupdatelimit:コントローラ間共有メモリ更新間隔閾値を算出する。
updatelimit=((qu-qepre-ceupd)×k))/d …(式3)
ここで、d:システム内コントローラ数、k:余裕割合係数である。
そして、ceupd:コントローラ内実行IO数(更新値)が、コントローラ間共有メモリ更新間隔閾値以上になったときを、更新契機とし、更新契機になったときには、コントローラ内実行IO数(更新値)を、コントローラ間共有メモリ121に格納されているQoSグループ実行IO数(前回値)に加算して、更新する。
[4-2]qu:QoSグループIO上限値に到達している場合には、IO要求に応じたIO処理は抑止される。
次に、図9を用いてストレージ装置のコントローラのIO制御の詳細について説明する。
先ず、コントローラ110のMP131が論理デバイスのIOキューを順番にサーチする(S100)。
次に、MP131は、IOキューにIO要求が格納されているか否かを判定する(S101)。
IOキューにIO要求が格納されているときには(S101:Yes)、S102に行き、IOキューにIO要求が格納されていないときには(S101:No)、処理を終了する。
IOキューにIO要求が格納されているときには、構成情報テーブル300のQoSグループIO上限値300bの値を取得し(S102)、その値を、qu:QoSグループIO上限値とする。
次に、MP131は、コントローラ内稼動情報テーブル320のQoSグループ実行IO数(前回値)320bの値を取得する(S103)。その値を、qepre:QoSグループ実行IO数(前回値)とする。
次に、MP131は、コントローラ内稼動情報テーブル320のコントローラ内実行IO数(更新値)320cの値を取得し(S104)、その値を、ceupd:コントローラ内実行IO数(更新値)とする。
次に、MP131は、qepre+ceupd≧quが成立しているか否かを判定し(S105)、成立しているときには(S105:Yes)、IO要求に対応したIO処理を行わず(S106)、処理を終了し、成立していないときには(S105:No)、S107に行く。
qepre+ceupd≧quが成立していないときには、ceupdをインクリメントし(ceupd++)、コントローラ内稼動情報テーブル320のコントローラ内実行IO数(更新値)320cの値を書き込む(S107)。
次に、MP131は、構成情報テーブル300のQoSコントローラ数300cの値を取得し(S108)、その値を、d:システム内コントローラ数とする。
次に、MP131は、ceupd≧updatelimitか否かを判定し(S109)、成立するときには(S109:Yes)、S110に行き、成立しないときには(S109:No)、S114に行く。
updatelimit:コントローラ間共有メモリ更新間隔閾値は、既出の(式3)により判定される。
次に、MP131は、コントローラ間共有稼動情報テーブル310のQoSグループ実行IO数(マスタ)310bの値を取得し(S110)、その値を、qemst:QoSグループ実行IO数(マスタ)とする。
次に、MP131は、qemstに、ceupdを加算し(qemst=+ceupd)、コントローラ間共有稼動情報テーブル310のQoSグループ実行IO数(マスタ)310bを更新する(S111)。
次に、qepre=qemstとし、コントローラ内稼動情報テーブル320のQoSグループ実行IO数(前回値)320bを更新する(S112)。
次に、MP131は、ceupdをクリアし(ceupd:=0)、コントローラ内稼動情報テーブル320のコントローラ内実行IO数(更新値)320cの値をクリアする(S113)。
次に、IO処理を実行する(S114)。
以上、本実施形態で説明したストレージ装置の制御によれば、QoSグループの上限値制御の精度を維持しつつ、かつ、コントローラ内の実行IO数が、コントローラ間共有メモリ更新間隔閾値に到達しないとき(QoSグループIO上限値に到達するまで、余裕があるとき)、コントローラ内共有メモリ122のみアクセスし、コントローラ間共有メモリ121にアクセスすることはないので、メモリアクセスに関してのIO処理の性能を劣化するのを防ぐことができる。
〔実施形態2〕
以下、本発明に係る実施形態2について、図10ないし図14を用いて説明する。
実施形態1では、ストレージ装置内に保持される稼動情報のうちで、実行IO数よるIO制御情報のメモリアクセスについて制御を行うものであった。
本実施形態では、図6で述べた稼動情報のうちで、データ転送量についてメモリアクセスについて制御を行う例について説明する。以下、本実施形態では、実施形態1と異なる所を中心に説明する。
先ず、図10ないし図12を用いて実施形態2のストレージ装置で用いられるデータ構造について説明する。
コントローラ間共有稼動情報テーブル410は、実施形態1と同様に、コントローラ間共有メモリ121上に置かれ、コントローラ間で共有されるQoSグループに対する制御情報を管理するためのテーブルであり、図10に示されるように、QoSグループID410a、QoSグループ実行済みデータ転送量(マスタ)410bの各フィールドを有する。
QoSグループID410aには、制御対象のQoSグループを一意に表す識別子が格納される。QoSグループ実行済みデータ転送量(マスタ)410bには、QoSグループのシステム内全てのコントローラで実行した対象QoSグループに所属する論理デバイスに対する単位時間あたりのデータ転送量が格納される。データ転送量の詳細は、後に説明する。
コントローラ内稼動情報テーブル420は、実施形態1と同様に、コントローラ内共有メモリ122上に置かれ、QoSグループに対する制御情報と、自コントローラ内のローカルな制御情報を管理するためのテーブルであり、図11に示されるように、QoSグループID420a、QoSグループ実行済みデータ転送量(前回値)420b、コントローラ内実行済みデータ転送量(更新値)420cの各フィールドを有する。
QoSグループID420aには、制御対象のQoSグループを一意に表す識別子が格納される。QoSグループ実行済みデータ転送量(マスタ)420bには、QoSグループのシステム内全てのコントローラで実行した対象QoSグループに所属する論理デバイスの前回更新時の単位時間あたりのデータ転送量が格納される(これに対する計算の詳細は、後述)。コントローラ内実行済みデータ転送量(更新値)420cには、前回更新後に自コントローラで実行した対象QoSグループに所属する論理デバイスの単位時間あたりのデータ転送量が格納される。
構成情報テーブル400は、コントローラ内共有メモリ122上に置かれ、ストレージ装置100とQoSグループに対する構成情報を管理するためのテーブルであり、図12に示されるように、QoSグループID400a、データ転送量上限値400b、システム内コントローラ数400cの各フィールドを有する。
QoSグループID400aには、制御対象のQoSグループを一意に表す識別子が格納される。データ転送量上限値400bには、システム管理者が設定したQoSグループに対する単位時間あたりのデータ転送量の上限値が格納される。システム内コントローラ数400cには、QoSグループの論理デバイスにアクセスするコントローラ110の数が格納される。
次に、図13および図14を用いて実施形態1に係るストレージ装置の処理について説明する。
先ず、図13を用いてホストからIOを受領した場合のメモリアクセスの概要について説明する。
実施形態1と同様に、前提として、ストレージ装置100のコントローラ110は、各論理デバイス201のオーナ権が与えられており、論理デバイス201のQoS制御は、オーナ権を有するコントローラ110で実施されるものとする。
[1]ストレージ装置100のコントローラ110は、ホスト10からチャネルアダプタ101経由でIO要求を受領する。
[2]受領したIO要求は、論理デバイスオーナ権側のコントローラに転送され、論理デバイス毎に用意されているIOキューにエンキューされる。ここで、IOキューは、FIFO(First In First Out)のデータ構造である。
[3]コントローラ内の各MP131は、各論理デバイス201のIOキューを順番にチェックする。
IO要求が入っている場合には、当該論理デバイスが所属するQoSグループの以下の値をコントローラ内共有メモリから取得する。
QU:QoSグループデータ転送量上限値
QEpre:QoSグループ実行データ転送量(前回値)
CEupd:コントローラ内実行データ転送量(更新値)
そして、QUと(QEpre+CEupd)を比較し、(QEpre+CEupd)が、QUに達しているか否かを判定する。
[4-1]QU:QoSグループデータ転送量上限値に到達していない場合には、コントローラ110は、IO要求に応じたIO処理を実行する。
[4-1-1]次に、データ転送量を、コントローラ内共有メモリ122のコントローラ内実行データ転送量(更新値)に加算する。
[4-1-2]次に、(式4)でUPDATELIMIT:コントローラ間共有メモリ更新間隔閾値を算出する。
UPDATELIMIT=((QU-QEpre-CEupd)×k))/d … (式4)
ここで、d:システム内コントローラ数、k:余裕割合係数である。
そして、CEupd:コントローラ内実行データ転送量(更新値)が、コントローラ間共有メモリ更新間隔閾値以上になったときを、更新契機とし、更新契機になったときには、コントローラ内実行データ転送量(更新値)を、コントローラ間共有メモリ121に格納されているQoSグループ実行データ転送量(前回値)に加算して、更新する。
[4-2]QU:QoSグループデータ転送量上限値に到達している場合には、IO要求に応じたIO処理は抑止される。
次に、図14を用いてストレージ装置のコントローラのIO制御の詳細について説明する。
先ず、コントローラ110のMP131が論理デバイスのIOキューを順番にサーチする(S200)。
次に、MP131は、IOキューにIO要求が格納されているか否かを判定する(S201)。
IOキューにIO要求が格納されているときには(S201:Yes)、S202に行き、IOキューにIO要求が格納されていないときには(S201:No)、処理を終了する。
IOキューにIO要求が格納されているときには、構成情報テーブル400のデータ転送量上限値400bの値を取得し(S202)、その値を、QU:QoSグループデータ転送量上限値とする。
次に、MP131は、コントローラ内稼動情報テーブル420のQoSグループ実行データ転送量(前回値)420bの値を取得する(S203)。その値を、QEpre:QoSグループ実行データ転送量(前回値)とする。
次に、MP131は、コントローラ内稼動情報テーブル420のコントローラ内実行済みデータ転送量(更新値)420cの値を取得し(S204)、その値を、CEupd:コントローラ内実行データ転送量(更新値)とする。
次に、MP131は、QEpre+CEupd≧QUが成立しているか否かを判定し(S205)、成立しているときには(S205:Yes)、IO要求に対応したIO処理を行わず(S206)、処理を終了し、成立していないときには(S205:No)、S207に行く。
QEpre+CEupd≧QUが成立していないときには、CEupdをインクリメントし(CEupd++)、コントローラ内稼動情報テーブル420のコントローラ内実行IO数(更新値)420cの値を書き込む(S207)。
次に、MP131は、構成情報テーブル400のシステム内コントローラ数400cの値を取得し(S208)、その値を、d:システム内コントローラ数とする。
次に、MP131は、CEupd≧UPDATELIMITか否かを判定し(S209)、成立するときには(S209:Yes)、S210に行き、成立しないときには(S209:No)、S214に行く。
UPDATELIMIT:コントローラ間共有メモリ更新間隔閾値は、既出の((式4)により判定される。
次に、MP131は、コントローラ間共有稼動情報テーブル410のQoSグループ実行IO数(マスタ)410bの値を取得し(S210)、その値を、QEmst:QoSグループ実行データ転送量(マスタ)とする。
次に、MP131は、QEmstに、CEupdを加算し(QEmst=+CEupd)、コントローラ間共有稼動情報テーブル410のQoSグループ実行IO数(マスタ)410bを更新する(S211)。
次に、QEpre=QEmstとし、コントローラ内稼動情報テーブル420のQoSグループ実行データ転送量(前回値)420bを更新する(S212)。
次に、MP131は、CEupdをクリアし(CEupd:=0)、コントローラ内稼動情報テーブル320のコントローラ内実行済みデータ転送量(更新値)420cの値をクリアする(S213)。
次に、IO処理を実行する(S214)。
以上、本実施形態は、実施形態1のIO数を、データ転送量に置き換え、同様の発明思想により、ストレージ装置のIO制御の情報のメモリ制御を行うものであった。これにより、実施形態1と同様に、QoSグループの上限値制御の精度を維持しつつ、かつ、コントローラ内の実行データ転送量が、コントローラ間共有メモリ更新間隔閾値に到達しないとき(QoSグループデータ転送量上限値に到達するまで、余裕があるとき)、コントローラ内共有メモリ122のみアクセスし、コントローラ間共有メモリ121にアクセスすることはないので、メモリアクセスに関してのIO処理の性能を劣化するのを防ぐことができる。
5…ホスト-ストレージインタフェース、7…ネットワークインタフェース、9…ディスクインタフェース
10…ホスト、20…管理端末、100…ストレージ装置、
101…チャネルアダプタ、103…ディスクボード、110…コントローラ、120…主メモリ、121…コントローラ間共有メモリ、122…コントローラ内共有メモリ、130…MPU、131…MP、140…ドライブ

Claims (6)

  1. ホストからのIO要求により、論理デバイスに対してデータの読み書きを行うストレージ装置であって、
    前記ストレージ装置は、二つ以上のコントローラと、
    データを記憶する一つ以上の記憶装置からなり、
    前記コントローラは、
    前記ホストからのIO要求に対してIO処理を実行するプロセッサと、
    IO処理の制御情報を記憶する主メモリとを有し、
    前記主メモリは、自コントローラのみがアクセスするコントローラ内共有メモリと、他のコントローラがアクセスできるコントローラ間共有メモリとに分割され、
    前記コントローラ間共有メモリに、論理デバイスのグループに対する第一のグループ実行IO数を格納し、
    前記コントローラ内共有メモリに、論理デバイスのグループに対する第二のグループ実行IO数と、コントローラ内実行IO数とを格納し
    前記コントローラ内共有メモリに、前記論理デバイスのグループに対するIO数の上限値を格納し、
    前記ストレージ装置は、前記ホストからIO要求があったときに、各論理デバイスに対応するIOキューにキューイングし、
    前記ストレージ装置のプロセッサは、前記キューイングされたIOキューからIO要求を取り出し、
    前記ストレージ装置のプロセッサは、前記コントローラ内共有メモリにアクセスし、前記論理デバイスのグループに対するIO数の上限値と、前記論理デバイスのグループに対する第二のグループ実行IO数と、前記コントローラ内実行IO数とを取得し、
    前記ストレージ装置のプロセッサは、前記論理デバイスのグループに対するIO数の上限値と、前記論理デバイスのグループに対する第二のグループ実行IO数と前記コントローラ内実行IO数との和を比較して、前記論理デバイスのグループに対する第二のグループ実行IO数と前記コントローラ内実行IO数との和が前記論理デバイスのグループに対するIO数の上限値未満のときには、前記コントローラ内実行IO数をインクリメントして、前記コントローラ内共有メモリに書き戻し、
    前記ストレージ装置のプロセッサは、前記コントローラ内実行IO数と、以下の式より定まるコントローラ間共有メモリ更新間隔閾値とを比較し、
    コントローラ間共有メモリ更新間隔閾値=(「論理デバイスのグループに対するIO数の上限値」-(「論理デバイスのグループに対する第二のグループ実行IO数」+「コントローラ内実行IO数」))*「余裕割合係数」*「システム内コントローラ数」
    前記ストレージ装置のプロセッサは、前記コントローラ内実行IO数が、前記コントローラ間共有メモリ更新間隔閾値以上のときには、前記論理デバイスのグループに対する第一のグループ実行IO数を取得し、
    前記ストレージ装置のプロセッサは、前記論理デバイスのグループに対する第一のグループ実行IO数に、前記コントローラ内実行IO数を加算して、前記コントローラ間共有メモリに書き戻し、
    前記ストレージ装置のプロセッサは、加算した前記論理デバイスのグループに対する第一のグループ実行IO数を、コントローラ内共有メモリの論理デバイスのグループに対する第二のグループ実行IO数として書込み、前記コントローラ内共有メモリのコントローラ内実行IO数をクリアし、
    前記ストレージ装置のプロセッサは、前記論理デバイスのグループに対するIO数の上限値と、前記論理デバイスのグループに対する第二のグループ実行IO数と前記コントローラ内実行IO数との和を比較して、前記論理デバイスのグループに対する第二のグループ実行IO数と前記コントローラ内実行IO数との和が前記論理デバイスのグループに対するIO数の上限値以上のときには、前記ストレージ装置は、前記ホストからIO要求に対応したIO処理を行わないことを特徴とするストレージ装置。
  2. 前記ストレージ装置に、管理端末が接続され、前記余裕割合係数が入力されることを特徴とする請求項1記載のストレージ装置。
  3. ホストからのIO要求により、論理デバイスに対してデータの読み書きを行うストレージ装置であって、
    前記ストレージ装置は、二つ以上のコントローラと、
    データを記憶する一つ以上の記憶装置からなり、
    前記コントローラは、
    前記ホストからのIO要求に対してIO処理を実行するプロセッサと、
    IO処理の制御情報を記憶する主メモリとを有し、
    前記主メモリは、自コントローラのみがアクセスするコントローラ内共有メモリと、他のコントローラがアクセスできるコントローラ間共有メモリとに分割され、
    前記コントローラ間共有メモリに、論理デバイスのグループに対する第一のグループ実行データ転送量を格納し、
    前記コントローラ内共有メモリに、論理デバイスのグループに対する第二のグループ実行データ転送量と、コントローラ内実行データ転送量とを格納し
    前記コントローラ内共有メモリに、前記論理デバイスのグループに対するデータ転送量の上限値を格納し、
    前記ストレージ装置は、前記ホストからIO要求があったときに、各論理デバイスに対応するIOキューにキューイングし、
    前記ストレージ装置のプロセッサは、前記キューイングされたIOキューからIO要求を取り出し、
    前記ストレージ装置のプロセッサは、前記コントローラ内共有メモリにアクセスし、前記論理デバイスのグループに対するデータ転送量の上限値と、前記論理デバイスのグループに対する第二のグループ実行データ転送量と、前記コントローラ内実行データ転送量とを取得し、
    前記ストレージ装置のプロセッサは、前記論理デバイスのグループに対するデータ転送量の上限値と、前記論理デバイスのグループに対する第二のグループ実行データ転送量と前記コントローラ内実行データ転送量との和を比較して、前記論理デバイスのグループに対する第二のグループ実行データ転送量と前記コントローラ内実行データ転送量との和が前記論理デバイスのグループに対するデータ転送量の上限値未満のときには、前記コントローラ内実行データ転送量をインクリメントして、前記コントローラ内共有メモリに書き戻し、
    前記ストレージ装置のプロセッサは、前記コントローラ内実行データ転送量と、以下の式より定まるコントローラ間共有メモリ更新間隔閾値とを比較し、
    コントローラ間共有メモリ更新間隔閾値=(「論理デバイスのグループに対するデータ転送量の上限値」-(「論理デバイスのグループに対する第二のグループ実行データ転送量」+「コントローラ内実行データ転送量」))*「余裕割合係数」*「システム内コントローラ数」
    前記ストレージ装置のプロセッサは、前記コントローラ内実行データ転送量が、前記コントローラ間共有メモリ更新間隔閾値以上のときには、前記論理デバイスのグループに対する第一のグループ実行データ転送量を取得し、
    前記ストレージ装置のプロセッサは、前記論理デバイスのグループに対する第一のグループ実行データ転送量に、前記コントローラ内実行データ転送量を加算して、前記コントローラ間共有メモリに書き戻し、
    前記ストレージ装置のプロセッサは、加算した前記論理デバイスのグループに対する第一のグループ実行データ転送量を、コントローラ内共有メモリの論理デバイスのグループに対する第二のグループ実行データ転送量として書込み、前記コントローラ内共有メモリのコントローラ内実行データ転送量をクリアし、
    前記ストレージ装置のプロセッサは、前記論理デバイスのグループに対するデータ転送量の上限値と、前記論理デバイスのグループに対する第二のグループ実行データ転送量と前記コントローラ内実行データ転送量との和を比較して、前記論理デバイスのグループに対する第二のグループ実行データ転送量と前記コントローラ内実行データ転送量との和が前記論理デバイスのグループに対するデータ転送量の上限値以上のときには、前記ストレージ装置は、前記ホストからIO要求に対応したIO処理を行わないことを特徴とするストレージ装置。
  4. 前記ストレージ装置に、管理端末が接続され、前記余裕割合係数が入力されることを特徴とする請求項3記載のストレージ装置。
  5. ホストからのIO要求により、論理デバイスに対してデータの読み書きを行うストレージ装置の制御方法であって、
    前記ストレージ装置は、二つ以上のコントローラと、
    データを記憶する一つ以上の記憶装置からなり、
    前記コントローラは、
    前記ホストからのIO要求に対してIO処理を実行するプロセッサと、
    IO処理の制御情報を記憶する主メモリとを有し、
    前記主メモリは、自コントローラのみがアクセスするコントローラ内共有メモリと、他のコントローラがアクセスできるコントローラ間共有メモリとに分割され、
    前記コントローラ間共有メモリに、論理デバイスのグループに対する第一のグループ実行稼動値を格納し、
    前記コントローラ内共有メモリに、論理デバイスのグループに対する第二のグループ実行稼動値と、コントローラ内論理デバイス実行稼動値とを格納し
    前記コントローラ内共有メモリに、前記論理デバイスのグループに対する稼動値の上限値を格納し、
    前記ストレージ装置は、前記ホストからIO要求があったときに、各論理デバイスに対応するIOキューにキューイングするステップと、
    前記ストレージ装置のプロセッサは、前記キューイングされたIOキューからIO要求を取り出すステップと、
    前記ストレージ装置のプロセッサは、前記コントローラ内共有メモリにアクセスし、前記論理デバイスのグループに対する稼動値の上限値と、前記論理デバイスのグループに対する第二のグループ実行稼動値と、前記コントローラ内論理デバイス実行稼動値とを取得するステップと、
    前記ストレージ装置のプロセッサは、前記論理デバイスのグループに対する稼動値の上限値と、前記論理デバイスのグループに対する第二のグループ実行稼動値と前記コントローラ内論理デバイス実行稼動値との和を比較して、前記論理デバイスのグループに対する第二のグループ実行稼動値と前記コントローラ内論理デバイス実行稼動値との和が前記論理デバイスのグループに対する稼動値の上限値未満のときには、前記コントローラ内論理デバイス実行稼動値をインクリメントして、前記コントローラ内共有メモリに書き戻すステップと、
    前記ストレージ装置のプロセッサは、前記コントローラ内論理デバイス実行稼動値と、以下の式より定まるコントローラ間共有メモリ更新間隔閾値とを比較するステップと、
    コントローラ間共有メモリ更新間隔閾値=(「論理デバイスのグループに対する稼動値の上限値」-(「論理デバイスのグループに対する第二のグループ実行稼動値」+「コントローラ内論理デバイス実行稼動値」))*「余裕割合係数」*「システム内コントローラ数」
    前記ストレージ装置のプロセッサは、前記コントローラ内論理デバイス実行稼動値が、前記コントローラ間共有メモリ更新間隔閾値以上のときには、前記論理デバイスのグループに対する第一のグループ実行稼動値を取得するステップと、
    前記ストレージ装置のプロセッサは、前記論理デバイスのグループに対する第一のグループ実行稼動値に、前記コントローラ内論理デバイス実行稼動値を加算して、前記コントローラ間共有メモリに書き戻すステップと、
    前記ストレージ装置のプロセッサは、加算した前記論理デバイスのグループに対する第一のグループ実行稼動値を、コントローラ内共有メモリの論理デバイスのグループに対する第二のグループ実行稼動値として書込み、前記コントローラ内共有メモリのコントローラ内論理デバイス実行稼動値をクリアするステップと
    前記ストレージ装置のプロセッサは、前記論理デバイスのグループに対する稼動値の上限値と、前記論理デバイスのグループに対する第二のグループ実行稼動値と前記コントローラ内論理デバイス実行稼動値との和を比較して、前記論理デバイスのグループに対する第二のグループ実行稼動値と前記コントローラ内論理デバイス実行稼動値との和が前記論理デバイスのグループに対する稼動値の上限値以上のときには、前記ストレージ装置は、前記ホストからIO要求に対応したIO処理を行わないステップとを有することを特徴とするストレージ装置の制御方法。
  6. 前記稼動値は、前記論理デバイスに対する実行IO数またはデータ転送量であることを特徴とする請求項5記載のストレージ装置の制御方法。
JP2020185353A 2020-11-05 2020-11-05 ストレージ装置およびストレージ装置の制御方法 Active JP7252931B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020185353A JP7252931B2 (ja) 2020-11-05 2020-11-05 ストレージ装置およびストレージ装置の制御方法
US17/200,678 US11531631B2 (en) 2020-11-05 2021-03-12 Storage device and control method for storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020185353A JP7252931B2 (ja) 2020-11-05 2020-11-05 ストレージ装置およびストレージ装置の制御方法

Publications (2)

Publication Number Publication Date
JP2022074920A JP2022074920A (ja) 2022-05-18
JP7252931B2 true JP7252931B2 (ja) 2023-04-05

Family

ID=81380121

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020185353A Active JP7252931B2 (ja) 2020-11-05 2020-11-05 ストレージ装置およびストレージ装置の制御方法

Country Status (2)

Country Link
US (1) US11531631B2 (ja)
JP (1) JP7252931B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005535956A (ja) 2002-08-08 2005-11-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 色順次表示システムにおける共有メモリ・コントローラに関する色バースト待ち行列
JP2011530728A (ja) 2008-10-10 2011-12-22 株式会社日立製作所 ストレージシステムおよびその制御方法
WO2015191023A1 (en) 2014-06-09 2015-12-17 Hitachi, Ltd. Method and apparatus of subsidiary volume management

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738870B2 (en) * 2000-12-22 2004-05-18 International Business Machines Corporation High speed remote storage controller
JP4352693B2 (ja) * 2002-12-10 2009-10-28 株式会社日立製作所 ディスクアレイ制御装置及びその制御方法
US8261025B2 (en) * 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
JP6203691B2 (ja) * 2014-08-29 2017-09-27 ファナック株式会社 複数軸の軸制御処理を分散して実行可能な数値制御装置
JP6394313B2 (ja) 2014-11-19 2018-09-26 富士通株式会社 ストレージ管理装置、ストレージ管理方法及びストレージ管理プログラム
US10318450B2 (en) * 2016-07-01 2019-06-11 Intel Corporation Efficient context based input/output (I/O) classification

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005535956A (ja) 2002-08-08 2005-11-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 色順次表示システムにおける共有メモリ・コントローラに関する色バースト待ち行列
JP2011530728A (ja) 2008-10-10 2011-12-22 株式会社日立製作所 ストレージシステムおよびその制御方法
WO2015191023A1 (en) 2014-06-09 2015-12-17 Hitachi, Ltd. Method and apparatus of subsidiary volume management

Also Published As

Publication number Publication date
JP2022074920A (ja) 2022-05-18
US20220138123A1 (en) 2022-05-05
US11531631B2 (en) 2022-12-20

Similar Documents

Publication Publication Date Title
US9298734B2 (en) Storage system, computer system and data migration method
US8495260B2 (en) System, method and program product to manage transfer of data to resolve overload of a storage system
US20130263142A1 (en) Control device, control method, computer readable recording medium in which program is recorded, and distributed processing system
JP6106028B2 (ja) サーバ及びキャッシュ制御方法
US7882285B2 (en) Buffer cache management to prevent deadlocks
US11556391B2 (en) CPU utilization for service level I/O scheduling
WO2019170011A1 (zh) 任务分配方法及装置、分布式存储系统
EP2595048A2 (en) Volume copy management method on thin provisioning pool of storage subsystem
US9135064B2 (en) Fine grained adaptive throttling of background processes
US11481140B1 (en) Dynamic base disk mirroring for linked clones
US10761726B2 (en) Resource fairness control in distributed storage systems using congestion data
JP7252931B2 (ja) ストレージ装置およびストレージ装置の制御方法
US20150220271A1 (en) Storage control apparatus, storage apparatus, and computer product
US8914336B2 (en) Storage device and data storage control method
US20160171048A1 (en) Computer and data read method
US20180052772A1 (en) Storage system and storage control method
JP6578694B2 (ja) 情報処理装置、方法及びプログラム
US9652393B1 (en) Managing shared memory in database server
JP2018041282A (ja) ストレージ管理装置、性能調整方法及び性能調整プログラム
JP6773755B2 (ja) ストレージ装置及びストレージ装置における構成管理リクエストの処理方法
US10740284B1 (en) Techniques for efficiently performing filesystem reorganization tasks for different filesystems
JP6417695B2 (ja) 情報処理システム、情報処理システムの制御方法および情報処理装置の制御プログラム
US11880589B2 (en) Storage system and control method
JP2019164510A (ja) ストレージシステム及びio処理の制御方法
CN117194350B (zh) 一种数据中心工程建设阶段文档存储方法及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210816

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221025

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221114

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230324

R150 Certificate of patent or registration of utility model

Ref document number: 7252931

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150