JP6751111B2 - ストレージシステム、ストレージシステムの制御方法及び管理ノード - Google Patents

ストレージシステム、ストレージシステムの制御方法及び管理ノード Download PDF

Info

Publication number
JP6751111B2
JP6751111B2 JP2018085092A JP2018085092A JP6751111B2 JP 6751111 B2 JP6751111 B2 JP 6751111B2 JP 2018085092 A JP2018085092 A JP 2018085092A JP 2018085092 A JP2018085092 A JP 2018085092A JP 6751111 B2 JP6751111 B2 JP 6751111B2
Authority
JP
Japan
Prior art keywords
volume
node
storage
global
performance
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
JP2018085092A
Other languages
English (en)
Other versions
JP2019191997A (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 JP2018085092A priority Critical patent/JP6751111B2/ja
Priority to US16/352,058 priority patent/US20190332261A1/en
Publication of JP2019191997A publication Critical patent/JP2019191997A/ja
Application granted granted Critical
Publication of JP6751111B2 publication Critical patent/JP6751111B2/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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

Landscapes

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

Description

本発明は、性能の異なるボリュームを提供するストレージシステムに関する。
ストレージシステムに使用されるストレージデバイスとしては、HDD(Hard Disk Drive)の他にSSD(Solid State Drive)等の不揮発性のストレージデバイスが普及している。HDDは大容量化が進展してビット当たりのコストパフォーマンスに優れ、SSDでは高速化が進展して性能(例えば、IOPSやシーケンシャル読み出し速度)が向上している。
複数のストレージデバイスを利用するストレージシステムとしては、例えば、物理デバイスを仮想容量プールとして管理するシンプロビジョニングが知られている(例えば、特許文献1)。
また、高性能ドライブ(SSD)と高コストパフォーマンスドライブ(HDD)から構成されるストレージプールで、高優先ボリュームに性能の高いSSDを優先的に割り当て、SSDが余っている場合にその他のボリュームにSSDを割り当てる技術が知られている(例えば、特許文献2)。
特開2003−015915号公報 特開2012−043407号公報
ストレージデバイスやサーバのストレージリソースを有効に利用する手法として、Software Defined Storage(以下、SDS)が知られている。SDSではコスト削減のために専任ストレージ管理者なしでの運用が求められる。
一方、多数のノードから構成されるSDSでは、ストレージデバイスやノードの数が膨大になる場合があり、個々のノードを人手で監視するという従来の資源枯渇監視は難しい。
また、性能の異なるストレージデバイスから構成されるストレージプールを用いて、ボリュームの種別毎に優先度制御を行うストレージシステムでは、ストレージプールの容量に余裕があっても、高性能なストレージデバイス(SSD)の容量が不足した場合には性能不足となる。管理者などはSSDが不足する前にSSDを増設し、性能の低下を防ぐ必要がある。
しかしながら、上記従来技術ではストレージプールの空き容量不足時にのみ管理者に対する通知を行うため管理者はSSD容量が不足した場合でも性能不足に気づくことができない。そのため、実際にストレージシステムにアクセスする上位のアプリケーションやサービスで性能に関する問題が発生するまで高性能なストレージデバイス(例えば、SSD)気づくことができない、という問題があった。
そこで本発明は、上記問題点に鑑みてなされたもので、ボリュームの種別毎に優先度制御を行うストレージシステムで高性能なストレージデバイスの不足を検出し、管理者に通知することで、性能問題が発生する前に高性能なストレージデバイスの増設を可能とすることを目的とする。
本発明は、プロセッサと、データを格納するストレージデバイスとを有するストレージノードを備えたストレージシステムにおいて、前記ストレージシステムには、性能が異なる第1のストレージデバイスと第2のストレージデバイスと、が含まれており、前記プロセッサは、前記ストレージデバイスが割り当てられる記憶領域を有するボリュームを管理し、前記ボリュームを介して前記ストレージデバイスへのデータの入出力を行い、前記プロセッサは、前記記憶領域ごとに前記データの入力または/及び出力にかかる入出力頻度を算出し、前記ボリュームへの前記第1のストレージデバイス及び前記第2のストレージデバイスごとの割り当て量にかかるボリューム割当情報を管理しており、管理部は、前記プロセッサから前記入出力頻度を取得し、前記ボリュームにおける前記ボリュームごとに入出力頻度の分布情報を作成し、前記管理部は、前記ボリュームにおける入出力頻度の分布情報と、前記ボリュームへの性能ごとのストレージデバイスのボリューム割当情報と、に基づいて、前記ボリュームの性能を判定する。
したがって、本発明は、ボリュームの種別毎に優先度制御を行うストレージシステムで高性能なストレージデバイスの不足を検出することが可能となる。
本発明の実施例1を示し、ストレージシステムの一例を示すブロック図である。 本発明の実施例1を示し、ストレージノードの一例を示すブロック図である。 本発明の実施例1を示し、管理ノードの一例を示すブロック図である。 本発明の実施例1を示し、グローバルプールとローカルプールの関係を示すブロック図である。 本発明の実施例1を示し、優先度管理テーブルの一例を示す図である。 本発明の実施例1を示し、グローバルノードテーブルの構成の一例を示す図である。 本発明の実施例1を示し、グローバルボリュームテーブルの一例を示す図である。 本発明の実施例1を示し、グローバルチャンク制御テーブルの構成の一例を示す図である。 本発明の実施例1を示し、グローバルTier管理テーブルの構成の一例を示す図である。 本発明の実施例1を示し、ローカルボリューム管理テーブルの構成の一例を示す図である。 本発明の実施例1を示し、ローカルTier制御テーブルの構成の一例を示す図である。 本発明の実施例1を示し、ボリュームページ制御テーブルの構成の一例を示す図である。 本発明の実施例1を示し、物理ページ制御テーブルの構成の一例を示す図である。 本発明の実施例1を示し、モニタ情報収集テーブルの構成の一例を示す図である。 本発明の実施例1を示し、グローバルIO度数分布テーブルの構成の一例を示す図である。 本発明の実施例1を示し、グローバル使用容量テーブルの構成の一例を示す図である。 本発明の実施例1を示し、管理ノードで行われる処理の一例を示すフローチャートである。 本発明の実施例1を示し、グローバルTier1容量不足判定処理の一例を示すフローチャートである。 本発明の実施例1を示し、管理ノードで行われるボリューム生成ノードの選択処理の一例を示すフローチャートである。 本発明の実施例1を示し、管理ノードで行われるチャンク割り当て処理の一例を示すフローチャートである。 本発明の実施例1を示し、ボリューム管理GUIの一例を示す図である。 本発明の実施例1を示し、ボリューム追加GUIの一例を示す図である。 本発明の実施例1を示し、ノード追加GUIの一例を示す図である。 本発明の実施例2を示し、管理ノードの一例を示すブロック図である。 本発明の実施例2を示し、ローカルプールの一例を示すブロック図である。 本発明の実施例3を示し、グローバルプールとローカルプールの関係を示すブロック図である。 本発明の実施例1を示し、ローカルプールIO度数分布テーブルの構成の一例を示す図である。 本発明の実施例3を示し、グローバルTier1容量不足判定処理の一例を示すフローチャートである。
以下、本発明の実施形態を添付図面に基づいて説明する。
<システム構成>
図1は、本発明の実施例1を示し、ストレージシステムの一例を示すブロック図である。本実施例1では、性能の異なるストレージデバイスを用いて、ボリュームの種別毎に優先度制御を行うストレージシステムに本発明を適用した例を示す。
性能が異なるストレージデバイスを有するストレージノード103−1〜103−nと、多数のストレージノード103−1〜103−nを管理する管理ノード104と、ストレージノード103−1〜103−nの記憶領域を利用するホスト101−1〜101−mは、ネットワーク102を介して接続される。
なお、以下の説明ではストレージノードの個々について特定しない場合には「−」以降を省略した符号103を用いる。他の構成要素の符号についても同様である。
管理ノード104は、ローカルプールを有する多数のストレージノード103と、ストレージノード103をまたがったグローバルプールを管理する。管理ノード104は、ホスト101に対して性能の異なるボリュームを提供する。
ローカルプールはストレージノード103が内部的に管理するとはストレージプールのことで、性能特性に応じた複数のTierから構成される。また、グローバルプールとはノードをまたがったストレージデバイスのストレージプールであり、ローカルプールに対してストレージデバイスの物理容量を割当てる制御を行う。管理ノード104は、ローカルプールの各Tierに対するグローバルプールのリソース(チャンク)の割り当てを制御する。ストレージノード103を利用するホスト101のユーザは、ストレージノード103の物理的な構成を意識することなくボリュームを使用することができる。
<ストレージノード>
図2は、ストレージノード103の一例を示すブロック図である。ストレージノード103は、CPU11と、メモリ12と、ネットワークインタフェース(図中NIC)13と、ストレージデバイスとしての1以上のドライブ20−Sと、ストレージデバイスとしての1以上のドライブ20−Hを含んで、ホスト101にボリュームを提供する計算機である。
ドライブ20−Sは、ドライブ20−Hに比して性能の高い高性能なストレージデバイスで、例えば、SSD(Solid State Drive)等の不揮発性半導体メモリで構成される。なお、ドライブ20−Sの性能は、例えば、IOPSがドライブ20−Hに比して高い、またはシーケンシャル読み出し速度がドライブ20−Hに比して高速なドライブである。
一方、ドライブ20−Hは、ドライブ20−Sに比して性能は低いが、ビット当たりの価格が安くコストパフォーマンスの高いストレージデバイスで、例えば、HDD(Hard Disk Drive)で構成される。
ネットワークインタフェース13は、ネットワーク102に接続されてホスト101や管理ノード104や他のストレージノード103と通信を行う。
メモリ12には、ローカルプール階層管理31と、ローカルボリューム管理32と、ローカルページ制御33と、ローカルモニタ34と、ボリュームI/O制御35と、ドライブ管理37の各機能部がプログラムとしてロードされてCPU11によって実行される。
CPU11は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、CPU11は、ローカルプール階層管理プログラムに従って処理することでローカルプール階層管理31として機能する。他のプログラムについても同様である。さらに、CPU11は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
ストレージノード103の各機能を実現するプログラム、テーブル等の情報は、ストレージデバイスや不揮発性半導体メモリ、ハードディスクドライブ、SSD等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
ローカルプール階層管理31は、ストレージノード103が有するローカルプールの階層(Tier)ごとに構成を管理する機能部で、ローカルTier制御テーブル41に基づいて、各階層に割り当てるチャンクを管理する。なお、プールと階層(Tier)については後述する。
ローカルプール階層管理31は、所定の周期でローカルプール26の状態を取得してローカルTier制御テーブル41を更新する。また、ローカルプール階層管理31は、ローカルTier27の使用率(例えば、割り当てページ容量414/合計チャンク容量413)が所定の閾値Th4(例えば、90%)以上であれば、管理ノード104にチャンクの容量不足を通知する。ローカルTier27の使用率の監視は、ローカルTier27−1〜27−3のそれぞれについて実施され、容量不足の通知にはストレージノード103の種別が含まれる。
ローカルボリューム管理32は、ローカルボリューム管理テーブル42を参照して、ストレージノード103がホスト101に提供するボリュームを管理する機能部である。ローカルページ制御33は、ボリュームページ制御テーブル43と、物理ページ制御テーブル44を参照して、ボリュームを構成する論理ページ(ストレージノード103内のローカルプールのデータ管理の単位)と、チャンク(ノードをまたがったグローバルプールのデータ管理単位)上の物理ページの対応関係を管理する機能部である。
ローカルモニタ34は、ストレージノード103が有するリソースの監視を行って統計情報を収集する機能部である。ローカルモニタ34は、管理ノード104のグローバルモニタ65からの要求に応じて、統計情報をグローバルモニタ65へ送信する。本実施例1では、ローカルモニタ34が収集する統計情報として、ボリューム200の性能を示す統計情報としてIO数(IOPSまたはIOPH)を用いる例を示すが、これらに限定されるものではない。例えば、ボリューム200が読み書きする速度(MB/Sec)等の性能を示す統計情報として用いることができる。
ボリュームI/O制御35は、ストレージノード103がホスト101に提供するボリュームに対する読み書き等の指令を処理する機能部である。ドライブI/O制御36は、ストレージノード103内のドライブ20−S、20−Hに対する読み書き等の指令を処理する機能部である。
なお、メモリ12に読み込まれて、上記各機能部が利用するテーブルについては後述する。
<管理ノード>
図3は、管理ノード104の一例を示すブロック図である。管理ノード104は、CPU51と、メモリ52と、ネットワークインタフェース(図中NIC)53と、ストレージデバイスとしてのドライブ54と、入力装置55と、ディスプレイ56を含んで、ストレージノード103を管理する計算機である。管理ノード104は、独立したノードではなくストレージノードの一機能として存在してもよいし、ストレージシステム外からストレージシステムを管理するようにしてもよい。
ネットワークインタフェース53は、ネットワーク102に接続されてホスト101やストレージノード103と通信を行う。入力装置55は、キーボードやマウスやタッチパネルを含んで、利用者(あるいは管理者)の操作を受け付ける。ディスプレイ56には、管理インタフェースの画面などが表示される。
メモリ52には、グローバルノード管理61と、グローバルプール階層制御62と、グローバルボリューム管理63と、グローバルチャンク管理64と、グローバルモニタ65と、ボリューム優先度管理66と、GUI/CLI67と、REST I/F68と、ユーザ通知制御69の各機能部がプログラムとしてロードされてCPU51によって実行される。
CPU51は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、CPU51は、グローバルノード管理プログラムに従って処理することでグローバルノード管理61として機能する。他のプログラムについても同様である。さらに、CPU51は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
管理ノード104の各機能を実現するプログラム、テーブル等の情報は、ストレージデバイス(ドライブ54)や不揮発性半導体メモリ、ハードディスクドライブ、SSD等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
グローバルノード管理61は、グローバルノードテーブル71を参照してストレージノード103を管理する。グローバルプール階層制御62は、グローバルTier管理テーブル72を参照して、ローカルプールに割り当てるチャンクのTierを管理する機能部である。
グローバルボリューム管理63は、グローバルプールで生成したホストボリュームをグローバルボリュームテーブル73で管理する機能部である。グローバルチャンク管理64は、グローバルチャンク制御テーブル74に基づいてグローバルプールのチャンク(グローバルプール内のデータ管理単位)を管理する機能部である。
グローバルモニタ65は、ストレージノード103のローカルモニタ34の情報をモニタ情報収集テーブル75へ格納し、グローバルIO度数分布テーブル76やグローバル使用容量テーブル77を更新する機能部である。
ボリューム優先度管理66は、優先度管理テーブル78を参照して、各ストレージノード103が提供するボリュームの種別毎に優先度を管理する機能部である。GUI/CLI67は、管理インタフェースをGUI(Graphical user interface)やCLI(Command line interface)を提供する機能部である。
REST I/F68は、REST形式でホスト101やストレージノード103等と通信する機能部である。ユーザ通知制御69は、容量の不足や障害の発生など所定の状態となったときにディスプレイ56等に通知を出力する機能部である。
なお、メモリ52に読み込まれて、上記各機能部が利用するテーブルについては後述する。また、ドライブ20はRAID構成であっても良い。
<プールの構成>
図4は、グローバルプールとローカルプールの関係を示すブロック図である。本実施例では、性能が異なるドライブ20を有する3つのストレージノード103−1〜103−3に跨がるストレージプールがグローバルプールとして設定され、ストレージノード103−1〜103−3は性能(または種別)が異なるノードとして運用される例を示す。
図示の例では、ストレージノード103−1が、高性能なボリューム(図中、高性能VOL)200−1を複数提供する高性能ノードとして機能する。ストレージノード103−2は、高性能なボリューム200−1と標準的な性能のボリューム(図中、標準VOL)200−2を提供する標準ノードとして機能する。そして、ストレージノード103−3は、ビット当たりの価格が安い高コストパフォーマンスボリューム(図中、高cost performanceVOL)200−3を提供する高コストパフォーマンスノードとして機能する。
なお、本実施例では、ストレージノード103の種別を、高性能と標準及び高コストパフォーマンスの3つに分ける例を示すが、これに限定されるものではなく、複数の性能の種別があれば良い。なお、ストレージノード103の種別は、管理者の指令に応じて管理ノード104で決定する。
また、本実施例1では、複数のストレージノード103にチャンク21を提供する高性能なドライブ20−Sと高コストパフォーマンスのドライブ20−Hによって、ボリューム200の優先度制御が行われる。
高性能ノード(ストレージノード103−1)は、高性能なボリューム200−1を割り当てる優先度が高く、高性能なボリューム200−1は、高性能なチャンク21−Sを割り当てる優先度が高い。標準ノード(ストレージノード103−2)は、高性能なボリューム200−1を割り当てる優先度は高性能ノードに比して低い。また、標準のボリューム200−2は、高性能なチャンク21−Sを割り当てる優先度が低く設定される。
高性能ノードのストレージノード103−1には、ストレージデバイスとしてSSD等の高性能なドライブ20−Sを搭載する。標準ノードのストレージノード103−2には、ストレージデバイスとしてSSDのドライブ20−Sと、HDDのドライブ20−Hを搭載する。高コストパフォーマンスノードのストレージノード103−3には、ストレージデバイスとしてHDDのドライブ20−Hを搭載する。本実施例では、ドライブの性能を二つにしたが、SSD内やHDD内で性能を細かく分けてもよい。また、ボリュームから見て自ノード内か他ノード内かによって、性能を区別してもよい。
なお、高性能ノードのストレージノード103−1は、標準ノードのストレージノード103−2に比して高性能なCPU11と、大容量のメモリ12を搭載するようにしてもよい。また、高コストパフォーマンスノードのストレージノード103−3は、標準ノードに比して廉価なCPU11と、最低限のメモリ12を搭載するようにしてもよい。
管理ノード104は、ホスト101へストレージ領域を提供するストレージノード103−1〜103−3に搭載されたドライブ20をグローバルプール24に割り当てる。そして、グローバルプール24には、高性能なドライブ20−Sで構成されるグローバルTier1(25−1)と、ビット当たりの価格が安いドライブ20−Hで構成されるグローバルTier2(25−2)の2つの階層(グループ)が設定される。
管理ノード104は、グローバルプール24に割り当てたドライブ20の記憶領域を所定のサイズ(例えば、100GB)のチャンク単位で管理する。すなわち、管理ノード104は、グローバルTier1(25−1)に割り当てられたドライブ20−Sの記憶領域をチャンク21−Sの単位で管理し、同様に、グローバルTier2(25−2)に割り当てられたドライブ20−Hの記憶領域を、チャンク21−Hの単位で管理する。
管理ノード104は、ストレージノード103−1〜103−3にそれぞれローカルプール26−1〜26−3を設定し、ストレージノード103の種別に応じてグローバルプール24のグローバルTier1(25−1)とグローバルTier2(25−2)から、チャンク21−Sまたはチャンク21−Hを、ローカルプール26−1〜103−3にそれぞれ割り当てる。
各ストレージノード103は、ローカルプール26に割り当てられたチャンク21を所定の容量(例えば、42MB)の物理ページとして管理する。ストレージノード103は、ボリューム200の論理ブロックアドレス(LBA)を所定の容量(例えば、42MB)ごとの論理ページに分割してボリューム200を管理する。
各ストレージノード103は、割り当てられたチャンク21の性能差(種別)に応じて、ローカルプール26をローカルTier1(27−1)と、ローカルTier2(27−2)と、ローカルTier3(27−3)に区分けして管理する。
ローカルTier1〜3の構成はチャンク21−Sに対応するドライブ20の種別ごとに決定される。
ローカルTier1(27−1)は、同一のストレージノード103内の高性能なドライブ20−Sのチャンク21−Sに割当てられたページ(ローカルSSDページ)で構成される。ローカルTier2(27−2)は、高性能なドライブ20−Sではあるが他のストレージノード103のチャンク21−Sに割当てられたページ(リモートSSDページ)で構成される。
ローカルTier3(27−3)は、ビット当たりの価格が安いドライブ20−Hのチャンク21−Hのページ(HDDページ)から構成される。なお、ローカルTier3(27−3)のHDDページは、自他のノードを問わずHDDのチャンク21−Hから構成されたページであれば良い。
各ストレージノード103は、論理ページへの初回の書き込み時には、ローカルプール26の物理ページに割り当てる論理ページと物理ページの対応関係をボリュームページ制御テーブル43に設定して、以降のデータの読み書きに使用する。
ローカルプール26へのチャンク21の割り当ては、ストレージノード103の容量が不足したときなど所定のタイミングで実行される。例えば、管理ノード104は、高性能ノードでローカルTier1(27−1)の割り当て済みページの容量の割合が、ローカルTier1(27−1)の全体容量の80%を超えたら、グローバルTier1(25−1)から新しいチャンク21−Sを割り当てる。
高性能ノードのストレージノード103−1では、ローカルTier1(27−1)の論理ページから高性能ボリューム200−1を生成して、ホスト101に提供する。標準ノードのストレージノード103−2では、ローカルTier1(27−1)の論理ページから生成した高性能ボリューム200−1と、ローカルTier2(27−2)の論理ページから生成した標準ボリューム200−2をホスト101に提供する。
高コストパフォーマンスノードのストレージノード103−3では、ローカルTier3(27−3)の論理ページから高コストパフォーマンスボリューム200−3を生成して、ホスト101に提供する。
ストレージノード103は、ボリューム200を構成する論理ページのアクセス頻度に応じて、論理ページに割り当てる物理ページのローカルTier1〜3をリバランス(データコピー)する。
なお、グローバルプール24とローカルプール26の構成は上記の例に限定されるものではない。例えば、ストレージノード103にローカルプールを設定せず、グローバルプール24からボリューム200を生成するようにしても良い。この場合、グローバルプール24の記憶領域の管理単位はチャンクではなく、ページでストレージノード103へ提供すればよい。
また、ページの容量(サイズ)や、チャンクの容量は上述の例に限定されるものではなく、所望のサイズに設定してもよく、あるいは可変長としてもよい。また、本実施例1ではグローバルプール24のチャンク21を直接ストレージノード103に割り当てる構成を示しているが、これに限定されるものではない。例えば、冗長化(レプリケーションや消失訂正符号)した2つ以上のチャンクを一つのチャンクとしてストレージノードに割り当てる構成を用いてもよい。
<テーブルの構成>
図5は、優先度管理テーブル78の一例を示す図である。優先度管理テーブル78は、管理ノード104のボリューム優先度管理66で使用される。
優先度管理テーブル78は、ボリューム種別781と、優先度782と、優先オーナノード種別783と、使用可能オーナノード種別784と、使用可能グローバルTier785と、許容SSDミス率786をひとつのエントリに含む。
Volume種別781には、「高性能」、「標準」、「高コストパフォーマンス」のいずれかが予め設定される。「高性能」は、性能重視で高性能なドライブ20−Sを優先的に割り当てる高性能ボリューム200−1を示す。
「高性能」は、性能重視で高性能なドライブ20−Sを優先的に割り当てる高性能なボリューム200−1を示す。「標準」は、高性能なドライブ20−Sのページが余っていたら使用し、余っていなければビット当たりの価格が安いドライブ20−Hのページを利用する標準的な性能のボリューム200−2を示す。「高コストパフォーマンス」は、常にビット当たりの価格が安いドライブ20−Hのページを利用する高コストパフォーマンスボリューム200−3を示す。
なお、標準的な性能のボリューム200−2は、ローカルプール26においてローカルTier1のページが余っていればローカルTier1のローカルSSDのページを利用し、ローカルTier1のページに余りはなく、ローカルTier2のページが余っていればローカルTier2のリモートSSDのページを利用し、ローカルTier2にも余りが無ければローカルTier3のHDDのページを利用する。
優先度782には、高性能なドライブ20−Sを優先的に割り当てる順序が格納され、値の小さい方が優先度は高い。
優先オーナノード種別783には、当該エントリのVolume種別781のボリューム200をデフォルトで割り当てるストレージノード103の種別が格納される。ストレージノード103の種別は、ボリューム種別781と同様に、「高性能」、「標準」、「高コストパフォーマンス」の3種のいずれかが設定される。
使用可能オーナノード種別784には、優先オーナノード種別783で指定された種別のストレージノード103が使用できない場合に使用可能なストレージノード103の種別が格納される。例えば、ローカルSSDページが不足して高性能ボリューム200−1を生成できないときは、指定された種別のノードに代わって使用可能オーナノード種別784の種別を代用する。
使用可能グローバルTier785には、当該エントリのボリューム種別781に割り当てるチャンク21を提供可能なグローバルプール24の区分(グローバルTier)が格納される。
許容SSDミス率786には、ボリューム種別781ごとに許容するSSDのミス率が予め設定される。SSDのミス率は、ホスト101がボリューム200に対して読み書きした際に、高性能なドライブ20−Sのページにアクセスできなかった比率(後述のSSDミス率)を示し、当該比率が許容SSDミス率786の値を上回った場合には、管理ノード104が、利用者(または管理者)に通知をする。本実施例1ではシステムの固有値を使用するが、利用者(または管理者)がGUI/CLI67やREST I/F68によって設定してもよい。
図6は、グローバルノードテーブル71の構成の一例を示す図である。グローバルノードテーブル71はグローバルノード管理61が参照するストレージノード103の管理テーブルである。
グローバルノードテーブル71は、ノードID711と、ノード種別712と、CPU容量713と、メモリ容量714と、ドライブID715と、ドライブ種別716と、チャンク容量717と、割り当て済みチャンク容量718をひとつのエントリに含む。
ノードID711には、管理対象のストレージノード103の識別子が格納される。識別子はグローバルプール24内で一意の値である。ノード種別712には、ストレージノード103の種別が設定され、本実施例では、「高性能」、「標準」、「高コストパフォーマンス」のいずれかが設定される。
CPU容量713には、ストレージノード103内のCPU11の処理能力に相当する値、例えば、周波数×CPUコア数が格納される。メモリ容量714には、ストレージノード103に搭載されたメモリ12の容量が格納される。
ドライブID715には、ストレージノード103に搭載された物理的なドライブ20の識別子が格納される。ドライブID715にはグローバルプール内で一意の値が設定される。
ドライブ種別716には、ドライブ20の種別が格納される。本実施例では種別としてSSDとHDDのいずれかが設定される。チャンク容量717には、ドライブ20ごとのチャンクの総容量が格納される。割り当て済みチャンク容量718には、ドライブ20毎にローカルプール26へ割り当て済みのチャンク容量が格納される。
図7は、グローバルボリュームテーブル73の構成の一例を示す図である。グローバルボリュームテーブル73は、管理ノード104のグローバルボリューム管理63が使用するローカルプールの全ボリュームの管理テーブルである。
グローバルボリュームテーブル73は、ボリュームID731と、ボリューム種別732と、オーナノード733と、サイズ734と、割り当て済みページ容量735と、使用可能グローバルTier736をひとつのエントリに含む。
ボリュームID731には、ボリューム200の識別子が格納される。識別子はグローバルプール24内で一意の値である。ボリューム種別732には、ボリューム200の種別が設定され、本実施例1では、「高性能」、「標準」、「高コストパフォーマンス」のいずれかが設定される。
オーナノード733には、当該ボリューム200を生成するストレージノード103の識別子が格納される。サイズ734には、当該ボリュームの論理サイズが格納される。シンプロビジョニングボリュームの場合には、実際に使用する物理的な記憶容量よりも大きな値が設定される。
割当済ページ容量735には、物理的な記憶容量が割り当てられた論理ページの容量が格納される。使用可能グローバルTier736には、当該ボリュームで使用可能なグローバルTier25の値が格納される。グローバルTier25の値は、複数の値を設定することが可能である。グローバルTier25の値は、ボリューム種別732に応じて決定される。
図8は、グローバルチャンク制御テーブル74の構成の一例を示す図である。グローバルチャンク制御テーブル74は、管理ノード104のグローバルチャンク管理64が使用するグローバルプール24の全てのチャンク21を管理する。
グローバルチャンク制御テーブル74は、物理チャンクID741と、搭載ノード742と、ドライブID743と、グローバルTier744と、チャンク容量745と、オフセット(LBA)746と、割り当てノードID747をひとつのエントリに含む。
物理チャンクID741には、管理対象の物理的なチャンク21の識別子が格納される。物理的なチャンク21の識別子は、グローバルプール24内で一意に識別可能な値が管理ノード104によって設定される。搭載ノード742には、管理対象の物理的なチャンク21を搭載するストレージノード103の識別子が格納される。
ドライブID743には、管理対象の物理的なチャンク21が格納されるドライブ20の識別子が設定される。グローバルTier744には、ドライブ20が所属するグローバルTier25の値が格納される。チャンク容量745には、物理的なチャンクの容量が格納される。本実施例1では、ひとつのチャンク21の容量を、100GBとした例を示す。
オフセット746には、ドライブ20内での物理的なチャンクの格納領域の先頭のLBA(Logical Block Address)が格納される。割り当てノードID747には、管理対象の物理的なチャンク21を割り当てたストレージノード103の識別子が格納される。なお、当該チャンク21が未割り当ての場合には「未」が設定される。
グローバルチャンク制御テーブル74によって、チャンク21の割り当て先のストレージノード103と、当該チャンク21を生成したストレージノード103とドライブ20及び開始位置が定義される。
図9は、グローバルTier管理テーブル72の構成の一例を示す図である。グローバルTier管理テーブル72は、管理ノード104のグローバルプール階層制御62が使用する。
グローバルTier#721には、管理対象のグローバルTier25の階層番号が格納される。ドライブ種別722には、当該グローバルTier2に含まれるドライブ20の種別が格納される。本実施例では、上述のようにSSDまたはHDDのいずれかが格納される。
合計チャンク容量723には、グローバルTier25内の合計チャンク容量が格納される。割り当て済みチャンク容量724には、ローカルプール26へ割り当て済みのチャンク容量が格納される。
図10は、ローカルボリューム管理テーブル42の構成の一例を示す図である。ローカルボリューム管理テーブル42は、ストレージノード103のローカルモニタ34及びローカルボリューム管理32がノード内のボリュームを管理するテーブルである。
ボリュームID421には、管理対象のボリュームの識別子が格納される。識別子は、グローバルプール24内で一意の値が設定される。種別422には、優先度管理テーブル78のVolume種別781と同様であり、「高性能」、「標準」、「高コストパフォーマンス」のいずれかが予め設定される。
サイズ423には、当該ボリュームの論理サイズが格納される。シンプロビジョニングボリュームの場合には、実際に使用する物理的な記憶容量よりも大きな値が設定される。
割当済ページ容量424には、物理的な記憶容量が割り当てられた論理ページの容量が格納される。使用可能ローカルTier425には、当該ボリュームで使用可能なローカルTier27の値(階層)が格納される。ローカルTier27の値は、複数の値を設定することが可能である。ローカルTier27の値は、ボリュームの種別422に応じて決定される。
図11は、ローカルTier制御テーブル41の構成の一例を示す図である。ローカルTier制御テーブル41は、ストレージノード103のローカルプール階層管理31によって管理される。
ローカルTier制御テーブル41は、ローカルTier#411と、チャンク種別412と、合計チャンク容量413と、割当ページ容量414と、論理チャンクID415と、物理チャンクID416と、チャンクサイズ417をひとつのエントリに含む。
ローカルTier#411には、管理対象のローカルTier27の値(階層)が格納される。チャンク種別412には、ページを提供したチャンクの種別が格納される。本実施例では、チャンク種別として、「ローカルSSD」、「リモートSSD」、「HDD」のいずれかが設定される。
合計チャンク容量413には、当該ローカルTier27に割り当てられたチャンクの容量が格納される。割当ページ容量414には、ローカルTier27のチャンク容量のうち、ページに割り当てられた容量が格納される。論理チャンクID415には、ローカルTier27内の論理チャンクIDが格納される。物理チャンクID416には、論理チャンクが実際に格納された物理チャンク21のIDが格納される。チャンクサイズ417には、チャンク21のサイズが格納される。
ローカルTier制御テーブル41で論理チャンクと物理チャンクを分離して管理することで、ストレージノード103では、論理チャンクに対応する物理チャンクのIDを書き換えることで、チャンク21のリバランスを実現することができる。
図12は、ボリュームページ制御テーブル43の構成の一例を示す図である。ボリュームページ制御テーブル43は、ストレージノード103のローカルページ制御33が管理するボリューム200ごとの論理ページの制御テーブルである。
ボリュームページ制御テーブル43は、ボリュームID431と、LBA432と、論理ページ#433と、物理ページ#434と、積算IO数435をひとつのエントリに含む。
ボリュームID431には、ボリューム200の識別子が格納される。識別子はグローバルプール24内で一意の値である。LBA432には、ボリューム200内のLBAが格納される。
論理ページ#433には、LBA432に割り当てられた論理ページの番号が格納される。物理ページ#434には、論理ページ#433に対応する物理ページの番号が格納される。なお、物理ページ#434の値は、ローカルプール26内で一意の値が設定される。また、論理ページに割り当てられていない場合には「未割り当て」が格納される。
積算IO数435には、当該論理ページに対して発生したIO数の積算値が格納される。なお、IO数の積算値は、所定の間隔(例えば、1時間)毎にリセットするようにしても良い。また、本実施例1では、ボリューム200の性能を測定する統計情報としてIO数を用いる例を示すがこれに限定されるものではない。例えば、ボリューム200の読み書きの速度やデータを読み書きしたバイト数などを用いても良い。
図13は、物理ページ制御テーブル44の構成の一例を示す図である。物理ページ制御テーブル44の構成はストレージノード103のローカルページ制御33が使用する物理ページの制御テーブルである。
物理ページ制御テーブル44は、物理ページ#441と、ローカルTier442と、論理チャンクID443と、チャンクオフセット444と、論理ページ#445をひとつのエントリに含む。
物理ページ#441には、物理ページの番号が格納される。ローカルTier442には、物理ページが格納されたローカルプール26内のローカルTier27の値(階層)が格納される。論理チャンクID443には、当該物理ページが格納されたチャンク21の識別子が格納される。
チャンクオフセット444には、物理ページが格納されたデータ領域のチャンク21内でのオフセットが格納される。論理ページ#445には、当該物理ページが割り当てられた論理ページの番号が格納される。当該物理ページが未割り当ての場合「未使用」が格納される。
図14は、モニタ情報収集テーブル75の構成の一例を示す図である。モニタ情報収集テーブル75は、管理ノード104のグローバルモニタ65が、各ストレージノード103のローカルモニタ34から定期的(例えば、1時間毎)に収集したモニタ情報を格納する。
モニタ情報収集テーブル75は、ボリュームID751と、論理ページ#752と、IOPH753と、物理チャンクID754をひとつのエントリに含む。ボリュームID751には、ボリューム200の識別子が格納される。識別子はグローバルプール24内で一意の値である。
論理ページ#7523には、LBA432割り当てられた論理ページの番号が格納される。IOPH(IO per hour)753には、当該論理ページに対する1時間当たりのIO数が格納される。物理チャンクID754には、当該論理ページに割り当てられた物理チャンクの番号が格納される。
管理ノード104のグローバルモニタ65は、所定の間隔(例えば、1時間)毎に各ストレージノード103のローカルモニタ34からモニタ情報を読み込んで、論理ページ#をキーとしてモニタ情報収集テーブル75を更新する。
ボリュームページ制御テーブル43の積算IO数435が積算値の場合は、グローバルモニタ65が、前回値との差に基づいてIOPH753を算出すればよい。また、積算IO数435の積算値が1時間当たりのIO数であれば、そのままIOPH753に設定することができる。
図15は、グローバルIO度数分布テーブル76の構成の一例を示す図である。グローバルIO度数分布テーブル76は、管理ノード104のグローバルモニタ65が、グローバルプール24全体のIO度数の分布をページ単位で管理するテーブルである。
グローバルIO度数分布テーブル76は、ページランク761と、ボリューム種別762と、IOPH763をひとつのエントリに含む。ページランク761には、論理ページのIOPHの順位が格納される。本実施例では、IOPHが最大の論理ページを1位として降順に順位を設定した例を示す。
ボリューム種別762には、当該順位に該当する論理ページを構成したボリューム200の種別422が格納される。IOPHには、当該順位に該当する論理ページのIOPH753が格納される。
なお、グローバルIO度数分布テーブル76には、論理ページ#のフィールドを追加して、ボリューム200を容易に特定できるようにしてもよい。
図16は、グローバル使用容量テーブル77の構成の一例を示す図である。グローバル使用容量テーブル77は、管理ノード104のグローバルモニタ65がグローバルプール24のボリューム種別ごとに使用済みの容量を管理する。
グローバル使用容量テーブル77は、ボリューム種別771と、割り当て済みページ容量772をひとつのエントリに含む。ボリューム種別771には、ストレージノード103が提供するボリューム200の種別が格納される。本実施例では、「高性能」、「標準」、「高コストパフォーマンス」の3種類となる。
割り当て済みページ容量772には、グローバルモニタ65で算出されたボリューム200の種別毎に割り当て済みとなったページの総計が格納される。
なお、ストレージノード103のテーブルについては、各機能部が管理するのに加えて、ローカルモニタ34が所定の周期で更新するようにしても良い。
<処理>
図17は、管理ノード104で行われる処理の一例を示すフローチャートである。このフローチャートは、管理ノード104によって所定の周期(例えば、1時間)毎に実行される。
ステップS1001では、管理ノード104のグローバルモニタ65が、グローバルプール24を構成する全てのストレージノード103のローカルモニタ34から統計情報を取得して、モニタ情報収集テーブル75を更新する。
具体的には、ローカルモニタ34が、ボリュームページ制御テーブル43を読み込んでボリュームID431と、論理ページ#433と、物理ページ#434と、積算IO数435の値を取得して、グローバルモニタ65へ送信し、グローバルモニタ65は、これらの情報からモニタ情報収集テーブル75を更新する。
ステップS1002では、グローバルモニタ65は、グローバルボリュームテーブル73を参照し、モニタ情報収集テーブル75中の論理ページ#752を、ボリューム種別762ごとに分類する。グローバルモニタ65は、ボリューム種別ごとに分類された論理ページ#をIOPH763の降順でソートする。
そして、グローバルモニタ65は、ソートした結果について、優先度の高いボリューム種別からIOPHの大きい順に並べてグローバルIO度数分布テーブル76(図15)を生成する。
ステップS1003では、グローバルモニタ65は、ボリューム種別762ごとの論理ページ数×単位容量(42MB)から、ボリューム種別ごとに割り当て済みページ容量772を計算して、グローバル使用容量テーブル77(図16)を更新する。また、グローバルモニタ65は、算出された割り当て済みページ容量772で、グローバルボリュームテーブル73(図7)の割り当て済みページ容量735を更新する。
ステップS1004では、グローバルモニタ65が、図18に示すグローバルTier1容量不足判定処理を実行する。後述するように、グローバルTier1容量不足判定処理では、高性能なドライブ20−Sが不足していた場合には、管理ノード104のディスプレイ56に高性能なドライブ20−Sの不足を通知する。管理者は通知内容に基づき高性能ストレージノード103−1、または高性能なドライブ20−Sを追加する。
図18は、グローバルTier1容量不足判定処理の一例を示すフローチャートである。この処理は、図17のステップS1004で行われる処理である。
ステップSS2002では、グローバルモニタ65が、グローバルIO度数分布テーブル76とグローバルボリュームテーブル73から、標準的な性能のボリューム(標準VOL)200−2に対するアクセスのSSDミス率と、高性能なボリューム(高性能VOL)200−1に対するアクセスのSSDミス率について、それぞれの理論値を計算する(ボリューム種別ごとの合計値で計算)。なお、高コストパフォーマンスのボリューム200−3の場合には、ステップS2005へ進んで次のボリューム200に進んでも良い。
標準VOLのSSDミス率=1 −(全ての標準VOLにおけるSSD期待ページのIOPHの合計)÷(全ての標準VOL全ページのIOPHの合計) ・・(1)
高性能VOLのSSDミス率=1 −(全ての高性能VOLにおけるSSD期待ページのIOPHの合計)÷(全ての高性能VOL全ページのIOPHの合計) ・・(2)
ただし、SSD期待ページとは、グローバルIO度数分布テーブル76のページランク761の順に、論理ページを高性能なドライブ20−S(SSD)のチャンク21−Sから割り当てた場合に、SSD(グローバルTier1)の合計チャンク容量723内に収まるページを指す。
すなわち、本実施例1では、ボリューム200の種別(優先度)毎に、SSDページにアクセスした数(IOPH)と、当該ボリューム200のアクセス数(IOPH)の合計値の比率からSSDミス率を算出する。SSDミス率は、理論的にはSSDページにアクセス可能であるのに、実際にはHDDページにアクセスした比率としても良い。
また、SSDミス率は、ボリューム200の種別(優先度)毎にSSDが割り当てられていない容量と、当該ボリューム200の容量の比率としてもよい。すなわち、IOPHの比率に代えて容量の比率を用いてもよい。また、SSDミス率に代えて、SSDヒット率を用いてもよい(SSDミス率+SSDヒット率=1)。
本実施例1では、後述するように、高性能VOLに加えて、標準VOLにも高性能なグローバルTier1のSSDのチャンク21−S(SSDチャンク)を割り当てる制御を実施するので、高性能VOLのSSDミス率は基本的に0を維持するのが望ましい。このため、高性能VOLの許容SSDミス率786は「1%」に設定されて、グローバルTier1のSSDチャンクを優先的に割り当てる。
一方、標準VOLのSSDミス率は「20%」に設定されているので、標準VOLの80%までは、SSDチャンク(グローバルTier1)を割り当てて、残りの20%にHDDチャンクを割り当てる。
本実施例1の標準VOLのSSDミス率は、後述する図21のように、標準VOLに割り当てたSSDチャンク(グローバルTier1)と、HDDチャンク(グローバルTier2)の境界が、割り当て済みのページのどの位置にあるかを利用者に知らせる指標となる。
なお、上記SSD期待ページは物理的にSSDに配置されているとは限らない。グローバルプール階層制御62およびローカルプール階層管理31によるページや、ボリュームまたは、チャンクリバランス処理によりSSDに格納されるのが期待されることを含む。
ステップS2003では、グローバルモニタ65が、上記算出されたSSDミス率を優先度管理テーブル78に予め設定された許容SSDミス率786(図5)と比較して、当該ボリューム200のSSDミス率が許容SSDミス率を超えたか否かを判定する。
そして、グローバルモニタ65は、当該ボリューム200のSSDミス率が許容SSDミス率を超える場合にはステップS2004へ進み、そうでない場合には処理を終了する。
ステップS2004では、グローバルモニタ65が、高性能なドライブ(SSD)20−Sが不足していることをディスプレイ56に出力し、管理ノード104の利用者(または管理者)に性能が劣化する可能性を通知する。なお、高性能なドライブ(SSD)20−Sの不足の通知は、後述する図21の画面で行うようにしてもよい。
なお、グローバルモニタ65が通知を出力する手法としては、管理ツールを介したイベント通知やSNMP通知、あるいはその他の通知手法を用いることができる。
また、上記ではボリューム200の統計情報から高性能VOLのSSDミス率または標準VOLのSSDミス率を算出し、許容SSDミス率786と比較することで高性能VOLのSSDチャンクの不足を検出する例を示したが、これに限定されるものではない。
例えば、管理ノード104は、ストレージノード103のボリュームページ制御テーブル43を参照することで、ボリューム200に割り当てられた物理ページ#434から物理ページ制御テーブル44の論理チャンクID443を取得する。そして、管理ノード104は論理チャンクID443でローカルTier制御テーブル41を検索することで物理チャンクID416を取得し、この物理チャンクID416でグローバルチャンク制御テーブル74を検索することで、当該ボリューム200に割り当てられたグローバルTier744を取得できる。したがって、ボリューム200に割り当てられたグローバルTier1の容量に基づいてSSDページの不足を判定しても良い。
図19は、管理ノード104で行われるボリューム生成ノードの選択処理の一例を示すフローチャートである。この処理は、管理ノード104の管理者が入力装置55を操作して、所定の指令を入力したときに管理ノード104のグローバルボリューム管理63で実行される。管理者ボリューム作成の指示にあたり、必要な容量とボリューム種別を指定する。
ステップS3001では、グローバルボリューム管理63が、まず、グローバル使用容量テーブル77とグローバルTier管理テーブル72を参照して、新たにボリューム200を生成する際に、グローバルプール24に空き容量があるか否かを判定する。
具体的には、グローバルボリューム管理63が、グローバルTier管理テーブル72の合計チャンク容量723の合計値(チャンク容量合計値)と、グローバル使用容量テーブル77の割り当て済みページ容量772の合計値の比率を所定の閾値Th1(例えば、90%)と比較して、比率(割り当て済みページ容量/チャンク容量合計値)が閾値以下であれば、空き容量があると判定してステップS3002へ進む。一方、上記比率が閾値を超えていれば、空き容量がないと判定してステップS3004へ進む。
ステップS3002では、グローバルボリューム管理63が、新たにボリューム200を生成可能なノード種別712を決定する。この処理は管理者が指定したボリューム種別に対し、優先度管理テーブル78で定義された優先オーナノード種別783、使用可能オーナノード種別783の順に新たなボリューム200を生成可能な空きがあるノード種別を探索する。使用可能オーナノード種別784が複数指定されている場合、性能の高いノード種別から探索する。
グローバルボリューム管理63は、グローバルノードテーブル71とグローバルボリュームテーブル73を参照し、ノード種別712ごとに全てのボリューム200のサイズ734の合計値(合計ボリュームサイズ)と、チャンク容量717の合計値(合計チャンク容量)を算出する。
そして、グローバルボリューム管理63は、ノード種別毎の合計チャンク容量に対する合計ボリュームサイズの比率(合計ボリュームサイズ/合計チャンク容量)が閾値Th2(例えば2)以下の場合、該当するノード種別に対して新たなボリューム200を生成可能と判定する。一方、上記比率が閾値Th2を超える場合、グローバルボリューム管理63は、優先度管理テーブル78の使用可能オーナノード種別784に設定されたノード種別を選択する。なお、グローバルボリューム管理63は、上記比率が閾値Th2以下の場合にはボリュームの生成に失敗したと判定する制御としてもよい。
ステップS3003では、グローバルボリューム管理63が、上記ステップS3002で選択したノード種別のストレージノード103間で、チャンク容量とボリュームサイズの合計値とボリューム数ができるだけ均等となるように、新たにボリューム200を生成するストレージノード103を選択する。
グローバルボリューム管理63は、選択したノード種別内のストレージノード103間で、ボリューム種別732毎にボリュームサイズの合計値とチャンク容量717の合計値の比率と、ボリューム200の数が均等になるストレージノード103を選択する。ストレージノード103の選択については、公知または周知の手法を用いれば良い。例えば、上記比率とボリューム数からストレージノード103毎の指標を算出して、ボリューム200を追加したときに指標が所定の範囲内となる各ストレージノード103を選択するようにすればよい。ボリューム種別732毎の使用容量が同程度と予測される場合や、使用容量の予測が難しい場合には、ストレージノード103間でボリューム数が均等になるように、新規のボリューム200を生成するストレージノード103を選択すれば良い。
一方、空き容量が無いステップS3004では、グローバルプール24に空きがないためボリューム200の生成に失敗した通知をディスプレイ56へ出力する。
本実施例ではボリューム200を生成するストレージノード103の選択時にノード種別ごとの容量のみを考慮しているが、他にストレージノード103の負荷状況や、可用性、ドライブ20の負荷状況や、可用性、ネットワークの負荷や距離を考慮してもよい。
以上の処理によって、管理ノード104のグローバルボリューム管理63は、利用者によるボリューム生成の指示を契機にボリューム生成ノードの選択処理を開始し、ボリューム生成ノードを生成するノード種別を選択する。そして、グローバルボリューム管理63は、ノード種別ごとのチャンク容量と合計ボリュームサイズの比が一定以下に収まるようにノード種別を選択する。
ボリューム200をシンプロビジョニングで管理する場合には、ボリュームサイズを実際のチャンクサイズよりも大きく設定することができる。ボリュームサイズが大きくなりすぎた場合は、下位のノード種別(使用可能オーナノード種別784)にボリューム200を生成する。これにより、新たなボリューム200のSSDミス率が低減されることが期待できる。そして、グローバルボリューム管理63は、選択したノード種別内でストレージノード103間のチャンク容量と合計ボリュームサイズの比が均等となるように、新たなボリューム200を生成するストレージノード103を選択する。
図20は、管理ノード104で行われるチャンク割り当て処理の一例を示すフローチャートである。管理ノード104のグローバルチャンク管理64は、ストレージノード103のローカルプール階層管理31からローカルTier27の使用率が閾値Th2(例えば90%)以上となった場合に通知(容量不足の通知)を受け付ける。通知を受信した後に、グローバルチャンク管理64は当該ストレージノード103に対してチャンクの割当処理を開始する。
まず、グローバルチャンク管理64は、ストレージノード103のローカルプール階層管理31から容量不足の通知を受け付ける(S4001)。グローバルチャンク管理64は、容量不足の通知に含まれるストレージノード103の種別を取得する。
ステップS4002では、グローバルチャンク管理64が上記取得した種別を判定し、種別が高性能または標準であればステップS4003へ進み、取得した種別が高コストパフォーマンスであればステップS4008に進む。
ステップS4003では、グローバルチャンク管理64が、グローバルTier管理テーブル72を参照してグローバルTier1(25−1)に空きがあるか否かを判定する。グローバルチャンク管理64は、グローバルTier1(25−1)に空きがあればステップS4006に進み、空きがなければステップS4004に進む。
ステップS4006では、グローバルチャンク管理64が、グローバルTier1(25−1)からSSDのチャンク21−Sを対象のストレージノード103に割り当てる。そして、グローバルチャンク管理64は、対象のストレージノード103にチャンク21−Sの追加の割り当てを通知してから処理を終了する。
ステップS4004では、グローバルチャンク管理64が、対象のストレージノード103のローカルモニタ34にローカルTier1(27−1)及びローカルTier2(27−2)が高性能のボリューム200−1に占有されているか否かを問い合わせる。
ローカルモニタ34は、ローカルボリューム管理テーブル42とローカルTier制御テーブル41を参照して、高性能なボリューム200−1がローカルTier1、2の占有状態を判定して管理ノード104のグローバルチャンク管理64に応答する。
グローバルチャンク管理64は、対象のストレージノード103からの回答に応じて、高性能なボリューム200−1がローカルTier1(27−1)及びローカルTier2(27−2)を占有していればステップS4005へ進み、そうでない場合にはステップS4008に進む。
ステップS4005では、グローバルチャンク管理64が、グローバルIO度数分布テーブル76と、グローバル使用容量テーブル77、グローバルTier管理テーブル72を参照して、標準のボリューム200−2のうちがグローバルTier1(SSD)を使用しているボリュームがあるか否かを判定する。グローバルチャンク管理64は、グローバルTier1を使用している標準のボリューム200−2があればステップS4007へ進み、SSDを使用していなければステップS4008に進む。
ステップS4007では、グローバルチャンク管理64が、グローバルボリュームテーブル73と、グローバルチャンク制御テーブル74からグローバルTier1を使用している標準のボリューム200−2が所属するストレージノード103を特定する。これは各オーナノードごとのボリューム種別ごとの割り当て済みページ容量735と、割当てられたグローバルTier1チャンク容量745の総和から算出することができる。
そして、グローバルチャンク管理64は、上記特定されたストレージノード103の標準のボリューム200−2からSSDのチャンク21−Sを回収して、対象のストレージノード103に割り当てる。
チャンク21−Sの回収については、ローカルTier1、2を使用している標準のボリューム200−2のうち、SSDのチャンク21−SをHDDのチャンク21−Hに置き換えた場合に、上記(1)式で算出されたSSDミス率の低下が最も少ないボリューム200−2をグローバルチャンク管理64が選択することができる。
グローバルチャンク管理64は、回収したチャンク21−Sの追加を対象のストレージノード103に通知して処理を終了する。
ノード種別が高コストパフォーマンスノードや、標準のボリューム200−2がグローバルTier1を使用していない場合、グローバルTier1を使用しているのは高性能ボリューム200−1のみと判断する。その場合、他のノードからグローバルTier1のチャンク21−Sを回収することができないのでステップS4008に進む。
ステップS4008では、グローバルチャンク管理64が、グローバルTier管理テーブル72を参照してグローバルTier2(25−2)に空きチャンク21−Hがあるか否かを判定する。グローバルTier2(25−2)に空きがある場合にはステップS4009へ進み、空きがない場合にはステップS4010へ進む。
ステップS4009では、グローバルチャンク管理64が、グローバルTier2(25−2)から空きチャンク21−Hを対象のストレージノード103に割り当て、当該ストレージノード103に通知する。
一方、ステップS4010では、グローバルTier2(25−2)に空きがないのでチャンク21を割り当てることができないので、割り当て失敗の通知をディスプレイ56に出力し、管理者に通知する。
以上の処理によって、グローバルチャンク管理64は、高性能なボリューム200−1や標準のボリューム200−2に対しては、グローバルTier1(25−1)のチャンク21−Sを割り当てる。また、グローバルチャンク管理64は、グローバルTier1(25−1)に空きチャンク21−Sがない場合には、標準のボリューム200−2が使用している高性能なボリューム200−1のチャンク21−Sを回収して、高性能なボリューム200−1に再割り当てを実施する。さらに、グローバルチャンク管理64は、標準のボリューム200−2がグローバルTier1(25−1)を使用していない場合には、グローバルTier2(25−2)の空きチャンク21−Hを割り当てる。
<管理インタフェース>
図21は、ボリューム管理GUI800の一例を示す図である。ボリューム管理GUI800は、例えば、グローバルボリューム管理63が利用者の要求に応じて生成し、ディスプレイ56に表示される。
ボリューム管理GUI800は、グローバルTier1、2のチャンク21を割り当てたボリューム200をボリュームの種別毎に棒グラフで表示する領域801と、高性能VOLのSSDミス率と、標準VOLのSSDミス率をそれぞれ表示するSSDミス率表示領域802と、グローバルTier1、2のチャンク21を割り当てたボリューム200をボリュームの種別毎にIOPHと割り当て済みページ容量のグラフで表示する表示領域803と、ボリュームリスト804と、ノードリスト805と、ボリューム200の追加ボタン806と、ボリューム200の削除ボタン807と、ストレージノード103の追加ボタン808と、ストレージノード103の削除ボタン809を含む。
表示領域803のグラフは、図15のグローバルIO度数分布テーブル76を折れ線グラフとしたもので、縦軸にIOPH、横軸に種別毎の割り当て済みページ容量を示す。そして、横軸は、左から高性能VOL、標準VOL、高コストパフォーマンスVOLの順に区分けし、さらに、グラフ上にグローバルTier1の領域と、グローバルTier2の領域を区分けする。
グローバルTier1とグローバルTier2の境界が、標準VOL(ボリューム200−2)よりも高コストパフォーマンスボリューム側にあれば、標準VOL及び高性能VOLへのSSDの割り当て量は十分である。
一方、グローバルTier1とグローバルTier2の境界が、標準VOL(ボリューム200−2)よりも高性能VOL(200−1)側に近づくと、ボリューム200へのSSDの割り当て量が不足しつつあると判定することができる。
そして、グローバルTier1とグローバルTier2の境界が、高性能VOLの領域に入って、図18に示したように、SSDミス率が許容SSDミス率を超えると、グローバルTier1のSSDの不足が検出されて、SSDの割り当て不足の通知が出力される。
ボリュームリスト804には、管理ノード104が管理するボリューム200の名称と、種別と、サイズ及び割り当て済みページ容量が表示される。
ノードリスト805には、管理ノード104が管理するストレージノード103のサーバ名、種別、SSD(ローカルTier1)容量、及びHDD(ローカルTier3)容量が表示される。
ボリューム管理GUI800では、ボリューム200やストレージノード103の追加や削除を行うことができる。ボリュームの追加ボタン806をクリックすることで、図22のボリューム追加GUI810からボリューム200の追加処理を開始することができる。また、ノードの追加ボタン808をクリックすることで、図23のノード追加GUI820からストレージノード103の追加処理を開始することができる。
ボリューム管理GUI800では、ボリュームリスト804で、不要なボリューム名を選択してから削除ボタン807をクリックすることで、当該ボリューム200を削除することができる。
同様に、ノードリスト805で、不要なサーバ名を選択してから削除ボタン809をクリックすることで、当該ストレージノード103を削除することができる。
図22は、ボリューム追加GUI810の一例を示す図である。ボリューム追加GUI810は、ボリュームの追加ボタン806がクリックされたときにグローバルボリューム管理63によって、ディスプレイ56に表示される。
ボリューム追加GUI810は、SSDミス率表示領域811と、グローバルTier1、2のチャンク21を割り当てたボリューム200をボリュームの種別毎にIOPHと容量のグラフで表示する表示領域812と、追加するボリューム200の名称813と、追加するボリューム200のサイズ814と、追加するボリューム200の種別815と、ボリューム200の追加処理を開始する決定ボタン816が表示される。
SSDミス率表示領域811と、表示領域812は図21のボリューム管理GUI800と同様である。管理ノード104の利用者は、名称813、サイズ814、追加するボリューム200の種別815を設定して決定ボタン816をクリックすることで新規のボリューム200を追加することができる。
図23は、ノード追加GUI820の一例を示す図である。ノード追加GUI820は、ノードの追加ボタン808がクリックされたときにグローバルノード管理61によって、ディスプレイ56に表示される。
ノード追加GUI820は、SSDミス率表示領域821と、グローバルTier1、2のチャンク21を割り当てたボリューム200をボリュームの種別毎にIOPHと容量のグラフで表示する表示領域822と、新規に追加するノードのリスト823と、ストレージノード103の追加処理を開始する決定ボタン824が表示される。
リスト823には、選択ボタン8231と、サーバ名、種別、SSD容量、HDD容量、CPU、メモリが表示される。図示の例では、リスト823で標準ノードの「Serv1」が選択された例を示す。
SSDミス率表示領域821には、標準ノードの「Serv1」を追加する前後のSSDミス率が表示され、図示の例では、標準ノード(103−2)を追加することで、標準VOLのSSDミス率が25%から5%に改善されることを示している。
表示領域822には図21のボリューム管理GUI800の内容に加え、標準ノードの「Serv1」を追加した場合のボリューム200の領域が図中「ノード追加分」として表示される。これにより、管理ノード104の利用者は、選択したストレージノード103の性能を把握することが可能となる。
そして、利用者は決定ボタン826をクリックすることで新規のストレージノード103を追加することができる。
以上のように、実施例1では、SSD(20−S)のページを割り当てた高性能VOL(200−1)と、SSDのページを割り当て可能な標準VOL(200−2)を含んで性能の優先度を制御するストレージノード103で、ボリューム200毎の使用容量(割り当て済みページ容量)と、IOPH(ボリューム200の性能に関する統計情報)を取得してSSDミス率を算出することで、高性能VOLや標準VOLに割り当てられたグローバルTier1のチャンクの不足を通知することができる。
これにより、高性能なストレージデバイス(例えば、SSD)が不足したことを管理ノード104の管理者に通知することが可能となる。ストレージシステムの管理者は、高性能なボリューム200−1の不足によって性能が劣化する前に増設することが可能となる。その結果、管理者が性能情報常に監視する必要がなくなり、管理コストを削減することができる。
なお、上記実施例1ではボリューム種別として高性能VOL、標準VOL、高コストパフォーマンスVOLの3種類としたが、これらに限定されるものではない。他に上位アプリケーションごとのノード種別や、より細粒度の優先度を持つノード種別を用いてもよい。また、ストレージノード103のノード種別についても同様である。
また、ドライブ20の種別をSSDとHDDの2種類としたが、これに限定されるものではない。例えば、Storage Class Memoryのような高速なストレージデバイスや、同一のストレージデバイスであってもリード特化、ライト特化などの処理特性に応じてドライブ種別を分類するようにしてもよい。
また、SSD等の高性能なボリューム200−1の不足の判定方法としてSSDミス率を用いた例を示したが、これに限定されるものではない。例えば、SSD期待ページのうち最も低アクセスのページのIOPHが、HDDドライブが仕様としてサポートするIOPHを上回った場合にSSDが不足したと判定してもよい。
なお、本実施例1では、管理者が新たなボリューム200を生成する際に、ボリュームの種別を選択する例を示したが、グローバルボリューム管理63が生成するボリューム種別を指定するようにしてもよい。
また、上記実施例1では、SSDが不足する場合には管理ノード104のユーザに通知を行う例を示したが、図19のボリューム200作成時にボリューム200の生成の可否として通知してもよい。
図24、図25は、本発明の実施例2を示す。本実施例2では、前記実施例1のグローバルプール24を廃止して、管理ノード104がストレージノード103のローカルプール26を管理するストレージシステムの一例を示す。
図24は、実施例2の管理ノード104の一例を示すブロック図である。本実施例2の管理ノード104は、前記実施例1の図3の構成から、グローバルノード管理61と、グローバルプール階層制御62と、グローバルボリューム管理63と、グローバルチャンク管理64と、これらの機能部が利用するテーブルを削除したもので、その他の構成は前記実施例1と同様である。
なお、本実施例2の管理ノード104は、前記実施例1の図14から図16のテーブルを用い、ストレージノード103のIO度数分布、使用容量を監視する。ただし、本実施例2では、グローバルプールを使用しないので、図15のグローバルIO度数分布テーブル76と、図16のグローバル使用容量テーブル77は、ストレージノード103の単位で生成すれば良い。また、グローバルIO度数分布テーブル76とグローバル使用容量テーブル77は、各ストレージノード103で生成しても良い。
本実施例2のストレージノード103は、前記実施例1の図2と同様である。ただし、ストレージノード103は、自ノードのドライブ20からボリューム200に記憶領域を割り当てる。また、本実施例2では、前記実施例1に示したチャンクを利用せずに、ストレージノード103は、ドライブ20のページをボリューム200に割り当てる構成とする。また、各ストレージノード103は、前記実施例1の図10〜図13のテーブルを用いローカルプール26を制御する。
図25は、ストレージノード103のローカルプール26の一例を示すブロック図である。ストレージノード103−1(高性能ノード)では、高性能なドライブ20−Sと高コストパフォーマンスのドライブ20−Hでボリューム200の優先度制御が実施される。
ストレージノード103は、高性能なドライブ20−Sと高コストパフォーマンスのドライブ20−Hを複数有し、ローカルプール26の階層制御を行う。ローカルプール26は、高性能なドライブ20−Sのページ(SSDページ)が割り当てられたローカルTier1(27−1)と、高コストパフォーマンスのドライブ20−Hのページ(HDDページ)が割り当てられたローカルTier2(27−2)の2つの階層を有する。
管理ノード104は、高性能なボリューム200−1にローカルTier1(27−1)のSSDページを優先的に割り当て、優先度の低い標準のボリューム200−2(標準VOL)にはローカルTier1のSSDページが余っていなければローカルTier2のHDDページを割り当てる。
ストレージノード103のローカルモニタ34は、前記実施例1と同様であり、ボリューム200の性能を示す統計情報としてIO数(またはIOPH)を算出し、管理ノード104に通知する。
管理ノード104は、ストレージノード103からボリューム200の種別ごとのIO統計情報と使用容量を取得して、ローカルプール26ごとにボリューム種別ごとの使用容量とIO度数分布を管理する。そして、管理ノード104は、上記情報に基づいてSSDの不足の判定を行って、SSDの不足が発生していれば利用者へ通知を実施する。また、管理ノード104の利用者へ通知を行ってから、ボリュームを生成するストレージノード103の選択処理(図19)を実施しても良い。
管理ノード104は、前記実施例1の図17、図18に示した処理を実施して、SSDが不足した場合にはディスプレイ56に通知を出力する。また、本実施例2では、ボリューム200を新たに生成するストレージノード103を選択する処理では、図19のステップS3003のみを実行して、複数のストレージノード103間で負荷が集中するのを防止する。
以上のように、本実施例2では、ストレージノード103毎のローカルプール26で階層制御を実施する場合においても、ボリューム200毎の使用容量と、IOPH(IOの統計情報)を取得してSSDミス率を算出することで、高性能なボリューム200−1に割り当てるSSDページの不足を検出した通知を出力することができる。これにより、高性能なボリューム200−1の性能が劣化する前にSSDを増設することが可能となる。
図26、図27は、本発明の実施例3を示す。本実施例3では、前記実施例1のローカルプール26の階層(ローカルTier27−2〜27−3)を廃止して単一の階層(ローカルTier27−1)とし、階層制御を行わないローカルプール26を有する複数のストレージノード103に、グローバルプール24からチャンク21を提供するストレージシステムで、ローカルのボリューム200の容量不足の判定および容量不足の通知を行う例を示す。
図26は、グローバルプール24とローカルプール26の関係を示すブロック図である。各ストレージノード103は自ノード内の高性能なドライブ20−Sと、他のストレージノード103(他ノード)の高性能なドライブ20−Sでローカルプール26を構成する。
本実施例3では、ローカルプール26を自ストレージノード103内の高性能なドライブ20−S(SSD)のみで構成することで、ボリューム200のアクセス性能を高くすることができる。特に高性能なボリューム200−1にはローカルノード(自ノード)のチャンク21(以下、ローカルチャンク)のみを割り当てる。
一方、ボリューム200の管理にシンプロビジョニングを適用した場合では、物理容量以上のボリューム200を生成することができる。シンプロビジョニングでは、ユーザが使用するボリューム200の容量はボリューム200のサイズ以下となるため、このようなオーバープロビジョニングを行うことで容量効率を向上させることができる。
上記シンプロビジョニングの運用では、ボリューム200の使用容量がローカルのドライブ20−Sの容量を超えた場合に、他のストレージノード103から提供されるチャンク21−S(以下、リモートチャンク)の割り当てが発生し、アクセス性能が低下していく。
なお、リモートチャンクはネットワークなどの遅延と、ネットワークなどの帯域の制限があるため、ローカルチャンクに比して性能が低い。このため、本実施例3では、ローカルチャンクを高性能なストレージデバイスとして扱い、リモートチャンクを低性能なストレージデバイスとして扱う。
本実施例3では、管理ノード104がボリューム200の実使用容量と、ローカルプール26のローカルSSD(ローカルチャンク)の容量と、リモートSSD(リモートチャンク)の物理容量と、IOの統計情報(IOPH)を取得して、リモートチャンクへのIO量またはリモートチャンクのSSD割り当て量によりローカルプール26のSSDページが十分であるか否かを判定する。
当該ストレージノード103(自ノード)でローカルプール26のSSDページの容量が、性能要件を満たすために不十分な場合には、管理ノード104の利用者に通知を行う。利用者は通知に示されたストレージノード103にSSDデバイスを追加することで、SSDページの容量不足を解消する。または、管理ノード104が、他のストレージノード103(他ノード)で低優先度の標準のボリューム200−2に自ノードのリモートチャンクが割り当てられている場合には、他ノードから自ノードのリモートチャンクを回収することでSSDページの容量不足を解消する。これらの処理により利用者はストレージノード103ごとの容量不足を常に監視する必要がなくなり、必要なタイミングでデバイス追加を行うことが可能となる。
管理ノード104は、回収したリモートチャンクをローカルチャンクとして自ノードのローカルプール26へ割り当てて、SSDページの不足を解消する。管理ノード104は、リモートチャンクを回収した他ノードに不足したチャンクを割り当てる。
本実施例3ではドライブ20の種別としてSSD(20−S)を使用する例を示すが、NVRAMなどの高速デバイスや、HDDなど低速デバイスを使用した場合でも適用可能である。
本実施例3のストレージシステムの構成は、前記実施例1の図1〜図3と同様ではあるが、ローカルプール26とグローバルプール24の階層制御は行わず、グローバルプール24のシンプロビジョニング機能を利用する。また、本実施例3では、グローバルプール24のSSDのチャンク21−Sのみを使用し、ローカルプール26ではローカルTier27−1のSSDページを使用する。
そして、高性能なボリューム200−1(高性能VOL)にはローカルチャンクのみを割り当て、標準のボリューム200−2(標準VOL)にはローカルチャンクまたはリモートチャンクを割り当てる。なお、本実施例3では、HDDを使用しないので、図4のストレージノード103−3に代わって、標準のボリューム200−2で構成された標準ノードのストレージノード103−3Aを用いる。
管理ノード104は、前記実施例1の図5から図9のテーブルを用いてグローバルプール24を制御する。また、図5の許容SSDミス率786は許容ローカルミス率と読み替えるものとする。
ローカルミス率=リモートチャンクへのIOPH/ローカルチャンクへのIOPH ・・(3)
管理ノード104は上記ローカルミス率を、図14のモニタ情報収集テーブルと図27のローカルプールIO度数分布テーブル79を用いて算出する。
図27は、ローカルプールIO度数分布テーブル79の構成の一例を示す図である。ローカルプールIO度数分布テーブル79は、管理ノード104のグローバルモニタ65が、ローカルプール26のIO度数の分布をページ単位で管理するテーブルである。
ローカルプールIO度数分布テーブル79は、ページランク791と、アクセス種別792と、IOPH793をひとつのエントリに含む。ページランク791には、論理ページのIOPHの順位が格納される。本実施例では、IOPHが最大の論理ページを1位として降順に順位を設定した例を示す。
アクセス種別792には、当該順位に該当する論理ページがローカルチャンクで構成されるか、リモートで構成されるかの情報が格納される。IOPHには、当該順位に該当する論理ページのIOPH753が格納される。
なお、ローカルプールIO度数分布テーブル79には、論理ページ#のフィールドを追加して、ボリューム200を容易に特定できるようにしてもよい。
一方、各ストレージノード103は、前記実施例1の図10から図13のテーブルを用いてローカルプール26を制御する。上述のように、ローカルプール26の階層は1階層のみの制御となる。
図27は、管理ノード104で行われるグローバルTier1容量不足判定処理の一例を示すフローチャートである。このフローチャートは、所定の周期(例えば、1時間)で管理ノード104のグローバルモニタ65が実行する。管理ノード104は、この処理によって、ストレージノード103のローカルチャンクの容量不足を検出した場合には、ユーザへの通知またはチャンクのリバランスによってローカルプール26のSSDの容量不足を解消する。
ステップS5001では、管理ノード104のグローバルモニタ65が、各ストレージノード103のローカルモニタ34からモニタ情報を収集して、前記実施例1と同様に図14のモニタ情報収集テーブル75やローカルプールIO度数分布テーブル79を生成する。
ステップS5002では、グローバルモニタ65が、モニタ情報収集テーブル75に登録された全てのボリューム200について、ステップS5010までの処理を繰り返して実行する。
ステップS5003では、グローバルモニタ65が、各ストレージノード103のボリューム200について、リモートチャンクとローカルチャンクのIOアクセスの比率を上記(3)式からローカルミス率として算出する。
ステップS5004では、グローバルモニタ65が、優先度管理テーブル78の許容ローカルミス率(図中許容SSDミス率)を超えたか否かを判定する。ローカルミス率が許容ローカルミス率を超えていれば、グローバルモニタ65は、ローカルチャンクの容量不足と判定してステップS5005へ進み、そうでない場合にはステップS5010に進んで次のボリューム200を選択してステップS5002へ戻って上記処理を繰り返す。
ステップS5005では、グローバルモニタ65が、グローバルノードテーブル71を参照して、他のストレージノード103の空きチャンク容量を取得して、容量不足となったストレージノード103のボリューム200を、他のストレージノード103のリモートチャンクでリバランス可能か否かを判定する。
なお、リバランスの判定は、他ノードのボリューム200に、自ノードのリモートチャンクが割り当てられて、かつ、他ノードのボリューム200に割り当て可能な空きチャンク容量がある場合に、グローバルモニタ65はリバランス可能と判定し、そうでない場合にはリバランス不可と判定する。
グローバルモニタ65は、ボリュームのリバランスが可能な場合にはステップS5007に進み、そうでない場合には、ステップS5006に進む。
ステップS5007では、上述したように、ローカルチャンクが容量不足となったストレージノード103(自ノード)が、他ノードにリモートチャンクを提供している場合には、グローバルモニタ65は、当該リモートチャンクを他ノードのボリューム200から回収し、ローカルチャンクとして自ノードのボリューム200へ割り当てる。なお、グローバルモニタ65は、回収した他ノードのボリューム200に他のチャンクを割り当てる。
また、グローバルモニタ65は、前記実施例1と同様に、グローバルIO度数分布テーブル76のボリューム種別762とページランク761から、リモートチャンクを回収可能な標準のボリューム200−2を選択することができる。
ステップS5006では、前記実施例1と同様に、ローカルチャンクが不足して性能が劣化する可能性が発生したことをディスプレイ56に出力して、利用者に高性能なデバイス(ローカルチャンク)が不足したことを通知する。出力内容にはデバイスが不足したストレージノード103のノードID711を含め、利用者がそのノードにデバイスを追加できるようにする。
次に、ステップS5008では、グローバルモニタ65が、当該ストレージノード103で対象のボリューム200の使用容量に対し、チャンクの割り当て量を減らしても十分な物理容量が割り当てられるか否かを判定する。十分な物理容量は、例えば、使用容量/物理容量が70%以上など、所定の空き比率以上であれば、ローカルプール26の縮退が可能と判定する。
グローバルモニタ65は、プールの縮退が可能であれば、ステップS5009に進んでローカルプール26の縮退を実行し、そうでない場合にはステップS5010に進んで次のボリューム200について上記の処理を実行する。
ステップS5009では、グローバルモニタ65が、対象のボリューム200からリモートチャンクを削除してローカルプール26の縮退を実行し、ボリューム200に対するリモートチャンクの割り当てを低減する。
以上の処理によって、単一のドライブ20−S(SSD)を利用してローカルチャンクとリモートチャンクで性能差の異なるボリューム200−1、200−2を運用する場合でも、ローカルチャンクのページを割り当てた高性能VOL(200−1)と、リモートチャンクを割り当て可能な標準VOL(200−2)を含んで性能の優先度を制御するストレージノード103で、ボリューム200毎の使用容量と、IOPH(IOの統計情報)を取得してローカルミス率を算出することで、高性能VOLのストレージノード103に割り当てるローカルチャンクの不足を通知することができる。
なお、上記実施例3では、ローカルミス率の計算にモニタ情報を使用しているが、これに限定されるものではない。例えば、チャンク間でIOの負荷分散制御を行うプールを有するストレージシステムでは、プールに含まれるローカルデバイス容量とリモートデバイス容量の容量比からローカルミス率を算出してもよい。
<まとめ>
以上のように本実施例1〜3では、高性能なストレージデバイス(SSD)と低性能なストレージデバイス(HDD)を有するストレージノード103で、SSDの記憶領域を優先的に割り当てる高性能ボリュームと、SSDまたはHDDの記憶領域を割り当てる低性能ボリュームを提供するストレージシステムで、管理ノード104が高性能ボリュームに割り当てたSSDの不足を検出して通知する。これにより、SSDの不足が進行して高性能ボリュームの性能が劣化する以前に、高性能ボリュームへのSSDの割り当てを実行することができる。
管理ノード104は、SSDを割り当てる優先度を低性能ボリュームよりも高性能ボリュームの方を高く設定する。そして、管理ノード104は、ボリューム200ごとのIO数の単位時間当たりの積算値や転送速度や転送量など性能に関する統計情報と優先度からSSDミス率(指標)を算出し、所定の許容値(許容SSDミス率786)と比較することで、迅速にSSDの割り当て不足を検出することができる。
このように、管理ノード104が、性能に関する統計情報と優先度に基づいて高性能なデバイスが不足していることを示す指標(SSDミス率)を算出することで、高性能なストレージデバイスを割り当てる優先度が高い高性能ボリュームと、優先度が低い低性能ボリュームを運用するストレージシステムにおいて、高性能ボリュームの性能が劣化する以前に高性能なストレージデバイスの不足を通知することが可能となる。
また、上記実施例1〜3では、管理ノード104が独立した計算機で構成される例を示したが、ストレージノード103−1〜103−nのいずれかで管理ノード104を実行するようにしても良い。
なお、上記実施例1〜3は、SDSの他に大規模ストレージシステムにも適用することが可能である。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
11 CPU
12 メモリ
20−S ドライブ(SSD)
20−H ドライブ(HDD)
21−S チャンク(SSD)
21−H チャンク(HDD)
24 グローバルプール
25−1、25−2 グローバルTier
26−1〜26−3 ローカルプール
27−1〜27−3 ローカルTier
31 ローカルプール階層管理
32 ローカルボリューム管理
33 ローカルページ管理
34 ローカルモニタ34
51 CPU
52 メモリ
61 グローバルノード管理
62 グローバルプール階層制御
63 グローバルボリューム管理
64 グローバルチャンク管理
65 グローバルモニタ
66 ボリューム優先度管理
101−1〜101−m ホスト
102 ネットワーク
103−1〜103−n ストレージノード
104 管理ノード

Claims (9)

  1. プロセッサと、データを格納するストレージデバイスとを有するストレージノードを備えたストレージシステムにおいて、
    前記ストレージシステムには、性能が異なる第1のストレージデバイスと第2のストレージデバイスと、が含まれており、
    前記プロセッサは、前記ストレージデバイスが割り当てられる記憶領域を有するボリュームを管理し、前記ボリュームを介して前記ストレージデバイスへのデータの入出力を行い、
    前記プロセッサは、前記記憶領域ごとに前記データの入力または/及び出力にかかる入出力頻度を算出し、前記ボリュームへの前記第1のストレージデバイス及び前記第2のストレージデバイスごとの割り当て量にかかるボリューム割当情報を管理しており、
    管理部は、前記プロセッサから前記入出力頻度を取得し、前記ボリュームにおける前記ボリュームごとに入出力頻度の分布情報を作成し、
    前記管理部は、前記ボリュームにおける入出力頻度の分布情報と、前記ボリュームへの性能ごとのストレージデバイスのボリューム割当情報と、に基づいて、前記ボリュームの性能を判定することを特徴とするストレージシステム。
  2. 請求項1において、
    ネットワーク接続された複数の前記ストレージノードを有しており、
    前記複数のストレージノードは、各々が前記第1のストレージデバイスまたは/及び前記第2のストレージデバイスとを有しており、
    前記管理部は、前記複数のストレージノードのプロセッサから前記ボリューム割当情報と、前記入出力頻度の分布情報を取得して、前記ボリュームの性能を判定する
    ことを特徴とするストレージシステム。
  3. 請求項2において、
    前記ストレージノードは、他の前記ストレージノードのストレージデバイスを自ノードのボリュームに割り当て可能であることを特徴とするストレージシステム。
  4. 請求項2において、
    前記管理部は、ネットワークに接続された管理ノード内に配置されていることを特徴とするストレージシステム。
  5. 請求項1において、
    前記ボリュームの性能が所定の閾値よりも低い場合に、性能が良い前記第1のストレージデバイスが不足していると判定することを特徴とするストレージシステム。
  6. 請求項5において、
    前記ストレージノードは、性能が異なる複数の前記ボリュームを有しており、
    前記性能が異なるボリュームごとに前記閾値が定められていることを特徴とするストレージシステム。
  7. 請求項5において、
    前記ボリューム割当情報における性能が良い前記第1のストレージデバイスが前記ボリュームに割り当てられた第1の容量であって、前記入出力頻度の分布情報における上位側の前記第1の容量の記憶領域にかかる割合が、所定値よりも小さくなった場合に、前記第1のストレージデバイスが不足していると判断することを特徴とするストレージシステム。
  8. 請求項6において、
    前記第1のストレージデバイスが不足している場合、他のボリュームへの前記第1のストレージデバイスの割当を解放し、当該解放した前記第1のストレージデバイスを、不足していると判定したボリュームに割り当てることを特徴とするストレージシステム。
  9. プロセッサと、データを格納するストレージデバイスとを有するストレージノードを備えたストレージシステムの制御方法であって、
    前記ストレージシステムには、性能が異なる第1のストレージデバイスと第2のストレージデバイスと、が含まれており、
    前記プロセッサが、前記ストレージデバイスが割り当てられる記憶領域を有するボリュームを管理し、前記ボリュームを介して前記ストレージデバイスへのデータの入出力を行い、
    前記プロセッサが、前記記憶領域ごとに前記データの入力または/及び出力にかかる入出力頻度を算出し、前記ボリュームへの前記第1のストレージデバイス及び前記第2のストレージデバイスごとの割り当て量にかかるボリューム割当情報を管理しており、
    管理部が、前記プロセッサから前記入出力頻度を取得し、前記ボリュームにおける前記ボリュームごとに入出力頻度の分布情報を作成し、
    前記管理部が、前記ボリュームにおける入出力頻度の分布情報と、前記ボリュームへの性能ごとのストレージデバイスのボリューム割当情報と、に基づいて、前記ボリュームの性能を判定することを特徴とするストレージシステムの制御方法。
JP2018085092A 2018-04-26 2018-04-26 ストレージシステム、ストレージシステムの制御方法及び管理ノード Active JP6751111B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018085092A JP6751111B2 (ja) 2018-04-26 2018-04-26 ストレージシステム、ストレージシステムの制御方法及び管理ノード
US16/352,058 US20190332261A1 (en) 2018-04-26 2019-03-13 Storage system, method of controlling storage system, and management node

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018085092A JP6751111B2 (ja) 2018-04-26 2018-04-26 ストレージシステム、ストレージシステムの制御方法及び管理ノード

Publications (2)

Publication Number Publication Date
JP2019191997A JP2019191997A (ja) 2019-10-31
JP6751111B2 true JP6751111B2 (ja) 2020-09-02

Family

ID=68291131

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018085092A Active JP6751111B2 (ja) 2018-04-26 2018-04-26 ストレージシステム、ストレージシステムの制御方法及び管理ノード

Country Status (2)

Country Link
US (1) US20190332261A1 (ja)
JP (1) JP6751111B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11861170B2 (en) 2018-03-05 2024-01-02 Pure Storage, Inc. Sizing resources for a replication target
US10942650B1 (en) * 2018-03-05 2021-03-09 Pure Storage, Inc. Reporting capacity utilization in a storage system
JP7050034B2 (ja) * 2019-07-29 2022-04-07 株式会社日立製作所 ストレージシステム及びノード管理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011101909A1 (ja) * 2010-02-18 2011-08-25 株式会社日立製作所 仮想ボリュームの制御方法及びストレージ装置
US8356147B2 (en) * 2010-08-20 2013-01-15 Hitachi, Ltd. Tiered storage pool management and control for loosely coupled multiple storage environment
WO2013038510A1 (ja) * 2011-09-13 2013-03-21 株式会社日立製作所 仮想ボリュームに割り当てられた要求性能に基づく制御を行うストレージシステムの管理システム及び管理方法
US8904121B2 (en) * 2011-09-22 2014-12-02 Hitachi, Ltd. Computer system and storage management method
WO2016051512A1 (ja) * 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US9628350B2 (en) * 2014-11-05 2017-04-18 Amazon Technologies, Inc. Dynamic scaling of storage volumes for storage client file systems

Also Published As

Publication number Publication date
US20190332261A1 (en) 2019-10-31
JP2019191997A (ja) 2019-10-31

Similar Documents

Publication Publication Date Title
JP5502232B2 (ja) ストレージシステム、及びその制御方法
US8984221B2 (en) Method for assigning storage area and computer system using the same
US8694727B2 (en) First storage control apparatus and storage system management method
JP5893745B2 (ja) ストレージ装置が有する階層型プール内のデータの配置を制御する計算機及び方法
JP5986319B2 (ja) ストレージ管理システム
JP5185445B2 (ja) ストレージシステム及びストレージシステムにおける使用容量管理方法
JP5451875B2 (ja) 計算機システム及びその記憶制御方法
JP5706531B2 (ja) 計算機システム、及び情報管理方法
JP5668151B2 (ja) 計算機システムの管理装置及び管理方法
WO2013061382A1 (ja) 計算機システム及びストレージ管理方法
JP5286192B2 (ja) ストレージシステムの容量を管理する管理計算機及びストレージシステムの容量管理方法
JP5495828B2 (ja) 動的ページ再配置ストレージシステム管理
JP6751111B2 (ja) ストレージシステム、ストレージシステムの制御方法及び管理ノード
JP2010122814A (ja) ストレージシステム及びストレージシステムの運用方法
JP5421201B2 (ja) 計算機システムを管理する管理システム及び管理方法
JP6035363B2 (ja) 管理計算機、計算機システム、及び管理方法
JP2004070971A (ja) 情報処理システム、記憶装置の割り当て方法
WO2017017775A1 (ja) 計算機システム及びボリュームの割り当て制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190422

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200526

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200813

R150 Certificate of patent or registration of utility model

Ref document number: 6751111

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150