JP7050034B2 - ストレージシステム及びノード管理方法 - Google Patents

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

Info

Publication number
JP7050034B2
JP7050034B2 JP2019139222A JP2019139222A JP7050034B2 JP 7050034 B2 JP7050034 B2 JP 7050034B2 JP 2019139222 A JP2019139222 A JP 2019139222A JP 2019139222 A JP2019139222 A JP 2019139222A JP 7050034 B2 JP7050034 B2 JP 7050034B2
Authority
JP
Japan
Prior art keywords
node
storage
program
storage area
management
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
JP2019139222A
Other languages
English (en)
Other versions
JP2021022241A (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 JP2019139222A priority Critical patent/JP7050034B2/ja
Priority to CN202010110317.6A priority patent/CN112306389A/zh
Priority to US16/810,128 priority patent/US11237746B2/en
Publication of JP2021022241A publication Critical patent/JP2021022241A/ja
Application granted granted Critical
Publication of JP7050034B2 publication Critical patent/JP7050034B2/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on 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/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/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
    • 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
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers

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

本発明は、ストレージシステム及びノード管理方法に関し、複数のストレージ装置(ストレージノード)によってストレージクラスタを構成するストレージシステム、及びそのノード管理方法に適用して好適なものである。
従来、複数のストレージ装置(ストレージノード)をデータの格納領域として取り込み、1つのストレージ装置(ストレージクラスタ)として扱うストレージシステムの技術が知られている。例えば特許文献1には、バックエンドストレージ装置の構成に基づいて、フロントエンドストレージ装置がデータ配置の階層を制御するシステムが開示されている。また、ストレージクラスタへのノード追加時に、ユーザによって指定された場合に、当該ノードでは、ホストとなってI/O処理を指示するコンピュートを起動させず、他からの指示を受けてI/O処理を行うストレージのみを動作させる、といった使い分けは一般的に行われている。
特開2012-043407号公報
しかし、上述した従来技術の場合、ストレージクラスタへのノード追加時に、ストレージ制御プログラムが持つ全ての処理を起動するため、消費するCPU及びメモリ量が多くなってしまうという問題があった。
本発明は以上の点を考慮してなされたもので、ストレージクラスタへのノード追加時に、ユーザによって指定されたノードの属性に基づいて、当該ノードで起動するプログラムを選択可能にすることで、追加されるノードに必要なCPU及びメモリ量を削減することが可能なストレージシステム及びノード管理方法を提案しようとするものである。
かかる課題を解決するため本発明においては、複数のノードによってストレージクラスタを構成する以下のストレージシステムが提供される。このストレージシステムは、データを格納するストレージデバイスと、メモリと、ストレージデバイスへI/O処理を行うためのプログラムを稼働させるプロセッサと、を備える。さらに、前記ノードは、第1の属性のノードと、第2の属性のノードと、に属性が指定され、前記ノードにおけるI/O処理は、いずれかの前記第1の属性のノードが実行するフロントエンドI/O処理と、I/O処理にかかるデータを格納する前記ストレージデバイスを有する前記第1及び前記第2の属性のノードが実行するバックエンドI/O処理と、を含む複数の処理として実行され、前記第1の属性のノードは上位の前記属性が指定された上位ノードであり、前記第2の属性のノードは下位の前記属性が指定された下位ノードであり、前記上位ノードには管理用の管理ノードが含まれ、前記管理ノードが、前記下位ノードの前記ストレージデバイスへの前記I/O処理において前記フロントエンドI/O処理を担当する前記上位ノードを指定し、さらに、前記ストレージクラスタから提供されるストレージプールは、複数段階の階層に分割して管理され、前記上位ノードの前記プロセッサは、各前記ノードの前記ストレージデバイスが提供する格納領域を前記ストレージプールの何れの階層で扱うかを、各前記ノードの前記属性に応じて制御する階層制御を実行する。
また、かかる課題を解決するため本発明においては、複数のノードによってストレージクラスタを構成するストレージシステムによる以下のノード管理方法が提供される。このノード管理方法において、前記ストレージシステムは、データを格納するストレージデバイスと、メモリと、ストレージデバイスへI/O処理を行うためのプログラムを稼働させるプロセッサと、を有し、前記ノードは、第1の属性のノードと、第2の属性のノードと、に属性が指定され、前記ノードにおけるI/O処理は、いずれかの前記第1の属性のノードが実行するフロントエンドI/O処理と、I/O処理にかかるデータを格納する前記ストレージデバイスを有する前記第1及び前記第2の属性のノードが実行するバックエンドI/O処理と、を含む複数の処理として実行され、前記第1の属性のノードは上位の前記属性が指定された上位ノードであり、前記第2の属性のノードは下位の前記属性が指定された下位ノードであり、前記上位ノードには管理用の管理ノードが含まれ、前記管理ノードが、前記下位ノードの前記ストレージデバイスへの前記I/O処理において前記フロントエンドI/O処理を担当する前記上位ノードを指定し、さらに、前記ストレージクラスタから提供されるストレージプールは、I/O頻度が比較的高いデータを格納するための高階層と、I/O頻度が比較的低いデータを格納するための低階層と、を含む複数段階の階層に分割して管理され、前記上位ノードの前記プロセッサは、各前記ノードのストレージデバイスが前記ストレージプールに提供するデータの格納領域を前記ストレージプールの何れの階層で扱うかを、各前記ノードの前記属性に応じて制御する階層制御を実行する。
本発明によれば、ストレージクラスタへのノード追加時に、追加されるノードに必要なCPU及びメモリ量を削減することができる。
本発明の第1の実施形態に係るストレージシステムの構成例を示す図である。 図1に示したストレージシステムのハードウェア構成例を示す図である。 管理ノードで実行されるコンピュータプログラムの一例を示す図である。 通常ノードで実行されるコンピュータプログラムの一例を示す図である。 下位ノードで実行されるコンピュータプログラムの一例を示す図である。 クラスタ構成管理テーブルの構成例を示す図である。 プール管理テーブルの構成例を示す図である。 ボリューム管理テーブルの構成例を示す図である。 格納領域管理テーブルの構成例を示す図である。 ストレージデバイス管理テーブルの構成例を示す図である。 ノード追加処理の処理手順例を示す図である。 ストレージデバイス追加処理の処理手順例を示す図である。 ボリューム作成処理の処理手順例を示す図である。 I/O処理の処理手順例を示す図である。 格納領域作成処理の処理手順例を示す図である。 構成伝播処理の処理手順例を示す図である。 ストレージデバイス情報更新処理の処理手順例を示す図である。 バックエンドI/O処理の処理手順例を示す図である。 階層制御処理の処理手順例を示す図である。 格納領域削除処理の処理手順例を示す図である。 第2の実施形態において管理ノードで実行されるコンピュータプログラムの一例を示す図である。 図21に示したクラスタ構成管理テーブルの構成例を示す図である。
以下の説明において、「インターフェース部」は、1以上のインターフェースとしてよい。当該1以上のインターフェースは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし、2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明において、「メモリ部」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、以下の説明において、「ストレージデバイス部」は、1以上のストレージデバイスであり、典型的には補助記憶デバイスでよい。「ストレージデバイス」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。
また、以下の説明において、「記憶部」は、メモリ部及びストレージデバイス部のうちの少なくとも1つ(典型的には少なくともメモリ部)である。
また、以下の説明において、「プロセッサ部」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
また、以下の説明では、「xxxテーブル」といった表現によって情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜にメモリ部及び/又はインターフェース部等を用いながら行うため、処理の主語が、プロセッサ部(あるいは、そのプロセッサ部を有するコントローラのようなデバイス)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、2以上のプログラムが1のプログラムとして実現されてもよいし、1のプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明において、「ボリューム」は、論理ボリュームの略であり、論理的な記憶デバイスでよい。ボリュームは、実体的なボリューム(実体ボリューム)であってもよいし、仮想的なボリューム(仮想ボリューム)であってもよい。「実体ボリューム」は、その実体ボリュームを提供するストレージシステムが有する物理的な記憶資源(例えば、1以上のRAIDグループ)に基づくボリュームでよい。「仮想ボリューム」は、容量拡張ボリュームと、スナップショットボリュームとのうちの何れでもよい。容量拡張ボリュームは、複数の仮想領域(仮想的な記憶領域)で構成されており容量仮想化技術(典型的にはThin Provisioning)に従うボリュームでよい。スナップショットボリュームは、オリジナルのボリュームのスナップショットとして提供されるボリュームでよい。スナップショットは、実体ボリュームであってもよい。典型的には、スナップショットボリュームは、オリジナルのボリュームをプライマリボリュームとしてセカンダリのボリュームに位置づけられる。「ストレージプール(単にプールとも称する)」は、論理的な記憶領域(例えば複数のプールボリュームの集合)であり、用途ごとに用意されてよい。例えば、プールとして、容量拡張プールと、スナップショットプールとのうちの少なくとも1種類があってよい。スナップショットプールは、プライマリボリュームから退避されたデータが格納される記憶領域でよい。1つのプールが、容量拡張プールとしてもスナップショットプールとしても使用されてもよい。「プールボリューム」は、プールの構成要素となるボリュームでよい。プールボリュームは、実体ボリュームであってもよい。
また、以下の説明において、「ホストシステム」は、物理的又は仮想的な1以上のホスト計算機である。
また、以下の説明において、「ストレージクラスタ(単にクラスタとも称する)」は、ホストシステムに認識される一のストレージ装置に相当し、実体は、ストレージシステムに相当する。「ストレージシステム」は、1以上の物理的なストレージ装置を含む。「ストレージ装置」は、記憶部を有する装置であればよく、汎用的な計算機であってもよい。少なくとも1つの物理的なストレージ装置が、仮想的な計算機(例えばVM(Virtual Machine))を実行してもよいし、SDx(Software-Defined anything)を実行してもよい。SDxとしては、例えば、SDS(Software Defined
Storage)(仮想的なストレージ装置の一例)又はSDDC(Software-Defined Data Center)を採用することができる。例えば、同一のストレージ装置において、ホストシステムとしての仮想的な計算機と、ホストシステムから入出力(I/O)要求を受信して処理するストレージ装置(ストレージコントローラ)としての仮想的な計算機とが実行されてもよい。また、ストレージシステムは、冗長構成グループを有してよい。冗長構成の例としては、Erasure Coding、RAIN(Redundant Array of Independent Nodes)及びノード間ミラーリングのように複数のノードでの構成であってもよいし、ストレージデバイス部で構成される1以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループのように単一のノード内での構成でもよい。
以下、本発明の実施形態を図面に基づいて説明する。なお、本発明は、以下に説明する実施形態に限定されるものではない。
(1)第1の実施形態
(1-1)構成と概要
図1は、本発明の第1の実施形態に係るストレージシステムの構成例を示す図である。第1の実施形態に係るストレージシステム100は、1以上の管理ノード101と、1以上の通常ノード102及び/又は下位ノード103と、を備えて構成されるストレージシステムであって、例えばスケールアウト型ストレージシステムのような分散ストレージシステムであってよい。管理ノード101、通常ノード102、及び下位ノード103は、何れもストレージデバイス215を有するストレージノード(単にノードとも称する)であり、ストレージシステム100における役割(属性)によって分類される。以下の説明では、ストレージシステム100は、図1に示したように、単一の管理ノード101と1以上の通常ノード102又は下位ノード103とを備えるものとする。
本実施形態に係るストレージシステム100では、コンピュータプログラムがコンピュータに下記の処理A、処理B、及び処理Cを実行させることができる。ここで言う「コンピュータ」は、何れかの管理ノード101であってもよいし、ストレージシステム100に接続された計算機(例えば、管理計算機やホスト計算機)であってもよい。例えば、「コンピュータ」を何れかの管理ノード101とし、処理Aを実行させるコンピュータプログラムをクラスタ構成管理プログラム111としてもよい。
[処理A] ホストシステム(以下、ホスト)に対して「一のストレージ装置」として認識されるストレージクラスタとしてのストレージシステム100において、ストレージノード(ノード)をストレージクラスタ(クラスタ)に追加する場合に、ユーザに指定された当該ノードの属性情報に基づいて、当該ノードで起動するプログラムを切り替える。ノードに指定する属性は、少なくとも上位/下位の分類が可能とする。本実施形態では、「上位」をさらに「管理」と「通常」とに分類している。
[処理B] ホストから入出力(I/O)のうちライト指示を受領した場合に、ノードに跨って冗長化され、かつノードの属性に応じて階層が決定される格納領域のうち、上位の階層(高階層)の格納領域に、上記ライト指示に応じたデータの格納を行う。
[処理C] 格納領域に対する一定時間内のI/Oの回数を確認し、階層ごとに定められたI/Oの適性条件を満たしていない格納領域を、適性条件を満たす階層に移動させる。
本実施形態に係るストレージシステム100では、上記の処理Aが実行されることにより、ユーザに下位の属性が指定されたノード(下位ノード103)においては、上位の属性を有するノード(例えば通常ノード102)よりも起動するプログラムが少なくなるため、当該ノード(下位ノード103)に求められるCPU及びメモリ量を削減することができる。
また、本実施形態に係るストレージシステム100では、上記の処理B及び処理Cが実行されることにより、下位の属性が指定されたノード(下位ノード103)が有する物理領域(ストレージデバイス215)から構成される格納領域について、一定時間あたりに処理できる入出力の量であるスループットが低い場合でも、クラスタ内のうち必要とされる入出力の量が少ない領域のデータを格納するため、クラスタ全体において、ホストから要求されるスループットを下げることなくデータを格納することができる。
また、本実施形態に係るストレージシステム100では、上記の処理A、処理B及び処理Cが実行されることにより、クラスタに大きな容量が必要な場合において、容量増加のために追加するノードに下位の属性を指定することによって、スループットの低下を抑えつつ、当該ノードに求められるCPU及びメモリ量を削減することができるため、スループットは低いが比較的安価な物理ディスク(HDD等)を、追加ノードに使用することができる。
図1を参照しながらストレージシステム100の説明を続ける。
管理ノード101は、ストレージシステム100において管理を担うノードであって、ホスト201(図2参照)に対してビュー104を提供する。図1に示したように、ビュー104には、ホスト201に対して提供されるボリューム105と、ボリューム105が所属する格納領域であって、実際に使用した容量と割り当て可能な容量の情報を提供するストレージプール(プール)106が表示される。ボリューム105へのI/Oは、実際にはストレージプール106内の一部領域である格納領域107に対して行われる(符号131)。この格納領域107は、バックエンド(BE)I/O処理プログラム115によって複数のノード(ストレージデバイス215)に冗長化されている。これにより、仮想ボリュームが実現されている。
図1には、ストレージシステム100の各ノード101~103で起動するプログラムの一部が示され、処理の流れに符号132~136が付されている。なお、図1では、スペースの都合上、「プログラム」という語句を省略して記載している。各ノード101~103で起動されるプログラムの全容については、図3~図5を参照しながら後述する。また、図1のクラスタ構成管理テーブル121は、テーブルの一部しか示しておらず、全体構成については、図6を参照しながら後述する。
図1に示すストレージシステム100の構成を用いると、上述した処理A,処理B,処理Cは次のように説明される。
まず、処理Aについて、ストレージシステム100にノードが追加される場合には、ユーザ(ホスト201)からノードの属性を引数としたノード追加が指示され、管理ノード101のクラスタ構成管理プログラム111がこれを受領する。クラスタ構成管理プログラム111は、ノード追加の指示を受領すると、クラスタ構成管理テーブル121を参照し、上記属性に応じたプログラムの起動を各ノードのノード管理プログラム112に指示する(符号132)。そして、プログラムの起動指示を受けたノード管理プログラム112が、自ノード内でフロントエンド(FE)I/O処理プログラム113、階層制御プログラム114、及びバックエンド(BE)I/O処理プログラム115といったプログラムをメモリ上に展開、起動する(符号133)。
次に、処理Bについて、ホスト201からストレージシステム100にI/O処理が要求される場合は、次のように処理が行われる。ホスト201からI/O処理を受け付けられるのは、フロントエンドI/O処理プログラム113が存在する(起動する)管理ノード101または通常ノード102に限られる。ホスト201からボリューム105に対してデータの格納を指示するI/O処理(ライト指示)が要求された場合、フロントエンドI/O処理プログラム113が、格納領域107のIDを指定して、バックエンドI/O処理プログラム115に対してデータの格納処理を指示する(符号134)。その後、バックエンドI/O処理プログラム115が、データの冗長化のために、ノードを跨いで複数のストレージデバイス215に対して、データの格納処理を実施する(符号135)。
ストレージシステム100は、処理A及び処理Bを実行可能に構成されることで、I/O処理に必要な処理を機能によって複数の処理(フロントエンドI/O処理とバックエンドI/O処理)に分割し、下位の属性を有する下位ノード103がフロントエンドI/O処理を実行しないようにできる。したがって、下位ノード103では、管理ノード101や通常ノード102に比べて、起動するプログラム数が少なくて済み、さらに、プログラムの実行時に必要なテーブル等のデータ量も少なくなるため、必要なCPU及びメモリ量を削減することができる。
次に、処理Cについては、次のように説明できる。ストレージシステム100では、階層制御プログラム114が、ストレージプール106を構成する格納領域107ごとに、複数の階層を設ける。本実施形態では、一例として、複数の階層として「高階層」と「低階層」を設ける。また、それぞれの階層には適性条件が設定される。具体的には例えば、「一定時間内に100以上のI/Oを受ける」ことを高階層の適性条件とし、「一定時間内に100未満のI/Oを受ける」ことを低階層の適性条件とする。そして、階層制御プログラム114が、上記の階層の適性条件が満たされているかを定期的に確認し、適性条件を満たしていない格納領域107については、ボリューム105に割り当てられているデータを別の階層にコピーする(符号136)。
ストレージシステム100は、処理Cを実行可能に構成されることで、例えばHDDといった低機能のストレージデバイスを有するノードを下位ノード103とし、下位ノード103のストレージデバイス215から作成される格納領域107を「低階層」に置く場合に、低機能のストレージデバイスを使用した場合のストレージシステムとしての性能低下を抑制することができる。
なお、上記の処理Aはノード追加処理(図11を参照)に相当し、処理BはI/O処理(図14等を参照)に相当し、処理Cは階層制御処理(図19等を参照)に相当する。
図2は、図1に示したストレージシステムのハードウェア構成例を示す図である。図2には、ストレージシステム100とネットワークを介して接続されるホスト201を含めて、システムのハードウェア構成が例示されている。
図2に示すように、ストレージシステム100は、ネットワークに接続された複数のノード101~103を含んで構成され、さらに、ホスト201とも接続されている。図2には、ストレージシステム100が接続されるネットワークとして、LAN(Local Area Network)221、SAN(Storage Area Network)222、及びLAN223が示されている。このうち、LAN221及びSAN222は、フロントエンドのネットワークの一例であって、ホスト201、ストレージシステム100の管理ノード101、ストレージシステム100の通常ノード102の間を相互に接続する。また、LAN223は、バックエンドのネットワークの一例であって、ストレージシステム100を構成する複数のノード(すなわち、管理ノード101、通常ノード102、及び下位ノード103)の間を相互に接続する。なお、図2では、ホスト201、管理ノード101、通常ノード102、及び下位ノード103はそれぞれ1つしか示されていないが、実際には何れも複数構成とすることができる。
ホスト201は例えばサーバであって、1以上のホスト201の各々がフロントエンドのネットワーク(LAN221,SAN222)に接続される。ホスト201は、ユーザからの入力操作を受け付けてストレージシステム100にI/Oを要求したり、ストレージシステム100からの応答通知を受領したりする。例えば、ホスト201は、フロントエンドのネットワークを介して、ボリューム105に属するアドレスを指定したI/O要求をストレージシステム100に発行する。これに対してストレージシステム100は、ホスト201からのI/O要求に基づいて、ボリューム105に対するI/O処理を行う。
ストレージシステム100の各ノード101~103は、メモリ212、SANポート213、LANポート214,216、及びストレージデバイス215と、これらに接続されたCPU211とを有する。CPU211はプロセッサ部の一例であり、メモリ212はメモリ部の一例である。また、ストレージデバイス215はストレージデバイス部の一例である。また、SANポート213及びLANポート214,216はインターフェース部の一例である。
なお、図2の場合、下位ノード103は、SANポート213及びLANポート214を有していない。本実施形態のストレージシステム100では、管理ノード101及び通常ノード102は、フロントエンドのI/O処理を実行するために、ホスト201との通信用インターフェースであるSANポート213やLANポート214が必要であるのに対し、下位ノード103は、フロントエンドのI/O処理を実行しないため、SANポート213やLANポート214は必ずしも必要ではない。言い換えれば、下位ノード103は、バックエンドのI/O処理を実行するために、少なくとも、ストレージシステム100内の各ノード101~103との通信用インターフェースであるLANポート216を有していればよい。
(1-2)プログラムとテーブル
本実施形態に係るストレージシステム100で用いられるコンピュータプログラム及びテーブルについて詳しく説明する。
図3は、管理ノードで実行されるコンピュータプログラムの一例を示す図である。図3に示したコンピュータプログラムは、管理ノード101のメモリ212に格納されており、管理ノード101のCPU211が各コンピュータプログラムを読み出して実行することにより、各コンピュータプログラムに基づく処理が実行される。また、図3には、管理ノード101のメモリ212に保持されるテーブルの一例も示されている。管理ノード101のCPU211は、上記のコンピュータプログラムを実行する際に、これらのテーブルを参照あるいは更新する。
図3に示したように、管理ノード101のメモリ212は、クラスタ構成管理プログラム111、ノード管理プログラム112、フロントエンド(FE)I/O処理プログラム113、階層制御プログラム114、バックエンド(BE)I/O処理プログラム115、ストレージデバイス管理プログラム116、格納領域管理プログラム117、格納領域作成・削除プログラム118、ボリューム管理プログラム119、及びプール管理プログラム120を格納する。
クラスタ構成管理プログラム111は、ユーザまたはプログラムからの指示を受領し、クラスタ内の何れかのノードのプログラムに対して、構成変更指示を発行するプログラムである。
ノード管理プログラム112は、指示されたプログラム及びテーブルをメモリ212上に展開し、起動するプログラムである。
フロントエンドI/O処理プログラム113は、I/O処理のうち、ホスト201(ユーザ)とのやり取りを含むフロントエンドのI/O処理を実行するプログラムである。フロントエンドI/O処理プログラム113は、ホスト201からボリューム105に対するI/O要求を受領し、データの格納先となる格納領域107を決定し、バックエンドI/O処理プログラム115に格納指示を発行し、その完了をもってホスト201に完了応答を返す。
階層制御プログラム114は、格納領域107の階層に関する制御を行うプログラムであって、データが適性条件に合わない階層の格納領域107に格納されている場合に、適性条件に合う階層の格納領域107に当該データを移動させることができる。
バックエンドI/O処理プログラム115は、I/O処理のうち、ノード間でやり取りを行うバックエンドのI/O処理を実行するプログラムであって、フロントエンドの入力データや指示を基に、処理を実行する。例えば、バックエンドI/O処理プログラム115は、フロントエンドI/O処理プログラム113からの格納指示を受領すると、データの格納先(格納領域107)を有するノードに、データの転送とストレージデバイス215に対する書込み指示を行う。
ストレージデバイス管理プログラム116は、ストレージデバイス215に対するI/O要求を処理するプログラムである。
格納領域管理プログラム117は、受領した指示に基づいて、ノード内の格納領域管理テーブル124を更新するプログラムである。
格納領域作成・削除プログラム118は、格納領域107とその格納先の実体であるストレージデバイス215のアドレスとの対応関係を決定し、関係するノードの格納領域管理プログラム117に対して格納領域管理テーブル124の更新を指示するプログラムである。
ボリューム管理プログラム119は、ボリューム105を作成するためのプログラムである。
プール管理プログラム120は、クラスタ内の容量に関する情報を収集し、ユーザに表示するプログラムである。
また、図3に示したように、管理ノード101のメモリ212は、クラスタ構成管理テーブル121、プール管理テーブル122、ボリューム管理テーブル123、格納領域管理テーブル124、及びストレージデバイス管理テーブル125を格納する。管理ノード101においては、ストレージデバイス管理テーブル125は、クラスタ内に存在する全てのストレージデバイス215に関する情報を保持し、ボリューム管理テーブル123は、クラスタ内に存在する全てのボリューム105に関する情報を保持し、格納領域管理テーブル124は、クラスタ内に存在する全ての格納領域107に関する情報を保持する。また、プール管理テーブル122は、クラスタ内の全てのプール106について、対応するボリューム105とその容量情報(使用済み容量、未使用容量)との関係を示す情報を保持する。プール管理テーブル122が保持している情報は、ユーザに対して表示される。各テーブルの構成例は、図6~図10に後述される。
図4は、通常ノードで実行されるコンピュータプログラムの一例を示す図である。図4に示したコンピュータプログラムは、通常ノード102のメモリ212に格納されており、通常ノード102のCPU211が各コンピュータプログラムを読み出して実行することにより、各コンピュータプログラムに基づく処理が実行される。また、図4には、通常ノード102のメモリ212に保持されるテーブルの一例も示されている。通常ノード102のCPU211は、上記のコンピュータプログラムを実行する際に、これらのテーブルを参照あるいは更新する。
図4に示したように、通常ノード102のメモリ212は、ノード管理プログラム112、フロントエンド(FE)I/O処理プログラム113、階層制御プログラム114、バックエンド(BE)I/O処理プログラム115、ストレージデバイス管理プログラム116、格納領域管理プログラム117、及びボリューム管理プログラム119を格納する。各プログラムの説明は、図3と同様のため省略する。
また、図4に示したように、通常ノード102のメモリ212は、ボリューム管理テーブル123、格納領域管理テーブル124、及びストレージデバイス管理テーブル125を格納する。通常ノード102においては、ボリューム管理テーブル123及びストレージデバイス管理テーブル125は、自ノードが有するボリューム105及びストレージデバイス215のみに関する情報をレコードとして記憶する。また、格納領域管理テーブル124は、自ノードが有するストレージデバイス215が格納先となっている格納領域107に関する情報と、自ノードが有するボリューム105に対して割り当てられている格納領域107に関する情報とを保持していればよい。
図5は、下位ノードで実行されるコンピュータプログラムの一例を示す図である。図5に示したコンピュータプログラムは、下位ノード103のメモリ212に格納されており、下位ノード103のCPU211が各コンピュータプログラムを読み出して実行することにより、各コンピュータプログラムに基づく処理が実行される。また、図5には、下位ノード103のメモリ212に保持されるテーブルの一例も示されている。下位ノード103のCPU211は、上記のコンピュータプログラムを実行する際に、これらのテーブルを参照あるいは更新する。
図5に示したように、下位ノード103のメモリ212は、ノード管理プログラム112、バックエンド(BE)I/O処理プログラム115、ストレージデバイス管理プログラム116、及び格納領域管理プログラム117を格納する。各プログラムの説明は、図3と同様のため省略する。
また、図5に示したように、下位ノード103のメモリ212は、格納領域管理テーブル124及びストレージデバイス管理テーブル125を格納する。下位ノード103においては、格納領域管理テーブル124及びストレージデバイス管理テーブル125は、自ノードが有するストレージデバイス215及びストレージデバイス215が格納先となっている格納領域107のみに関する情報をレコードとして保持すればよい。
図6は、クラスタ構成管理テーブルの構成例を示す図である。クラスタ構成管理テーブル121は、管理ノード101において保持され(図3参照)、ストレージシステム100が備えるノードごとにレコードを有する。
図6に例示したように、クラスタ構成管理テーブル121の各レコードは、ノードID1211、属性1212、及び起動プログラム1213といった情報を格納する。
ノードID1211は、ストレージシステム100内で各ノード(ストレージノード101~103)を一意に識別可能な識別子(ID)を示す。属性1212は、各ノードに紐付く属性を示し、この属性はノード追加時にユーザによって指定することができる。
図6のクラスタ構成管理テーブル121は、図1に例示したストレージシステム100に基づく一例である。具体的には、管理ノード101は、ノードID「1」で「管理」の属性が紐付けられ、通常ノード102は、ノードID「2」で「通常」の属性が紐付けられ、2つの下位ノード103は、それぞれノードIDが「3」、「4」で「下位」の属性が紐付けられている。そして、起動プログラム1213には、各ノードで起動されるプログラムの詳細として、図3~図5に対応するコンピュータプログラムが示されている。なお、本例では、管理ノード101の属性を「管理」とし、通常ノード102の属性を「通常」として、両者の属性を区別しているが、本実施形態はこれに限定されるものではなく、例えば、管理ノード101と通常ノード102の属性を区別せずに「上位」とする等してもよい。
なお、本実施形態では、プログラム起動時に関連するテーブルをメモリ212上に用意しているため(図3~図5参照)、起動プログラム1213にはプログラムだけが記載されているが、例えばプログラムとテーブルの展開が別々に行われるような構成の場合には、起動プログラム1213にテーブルが追加記載されるようにしてもよい。
図7は、プール管理テーブルの構成例を示す図である。プール管理テーブル122は、管理ノード101において保持され(図3参照)、ストレージシステム100が有するプール106ごとに、レコードを有する。
図7に例示したように、プール管理テーブル122の各レコードは、プールID1221、所属ボリュームID1222、高階層使用済み容量1223、高階層未使用容量1224、低階層使用済み容量1225、及び低階層未使用容量1226といった情報を格納する。
プールID1221は、ストレージシステム100内でプール106を一意に識別可能な識別子(ID)を示す。所属ボリュームID1222は、当該レコードのプール106に所属するボリューム105のIDのリストを示す。高階層使用済み容量1223は、当該レコードのプール106に所属する全てのボリューム105のうち、高階層のプールで実際に使用されている容量を示す。高階層未使用容量1224は、当該レコードのプール106に所属する全てのボリューム105のうち、高階層のプールにおける未使用領域の容量を示す。低階層使用済み容量1225は、当該レコードのプール106に所属する全てのボリューム105のうち、低階層のプールで実際に使用されている容量を示す。低階層未使用容量1226は、当該レコードのプール106に所属する全てのボリューム105のうち、低階層のプールにおける未使用領域の容量を示す。
図7のプール管理テーブル122は、図1に例示したストレージシステム100に基づく一例である。具体的には、ストレージシステム100においてストレージプール106が1つ存在し、このストレージプール106に対してボリューム105が2つ存在し、3つの格納領域107が割り当て済みである構成について例示している。なお、図7の場合は、容量をブロック単位で表しているが、本実施形態はこれに限定されるものではなく、「Byte」等のブロック以外の単位を用いてもよい。
図8は、ボリューム管理テーブルの構成例を示す図である。ボリューム管理テーブル123は、管理ノード101及び通常ノード102に保持される(図3,図4参照)。管理ノード101におけるボリューム管理テーブル123は、ストレージシステム100が有する全てのボリューム105に対して割り当てられている格納領域107ごとに、レコードを有する。また、通常ノード102におけるボリューム管理テーブル123は、当該通常ノード102に作成されているボリューム105に対して割り当てられている格納領域107ごとに、レコードを有する。図8では、一例として、図1に例示した管理ノード101に保持されるボリューム管理テーブル123の具体値を示している。
図8に例示したように、ボリューム管理テーブル123の各レコードは、ボリュームID1231、アドレス1232、格納領域ID1233、階層1234、及びI/Oカウンタ1235といった情報を格納する。
ボリュームID1231は、ストレージシステム100内でボリューム105を一意に識別可能な識別子(ID)を示し、図7の所属ボリュームID1222と同じIDが用いられる。アドレス1232は、当該レコードのボリューム105が有するアドレスを示す。格納領域ID1233は、当該レコードのボリューム105のアドレス1232に対して割り当てられる、ストレージシステム100内で一意な記憶領域の識別子(ID)を示す。階層1234は、当該レコードの格納領域ID1233が示す記憶領域が属する階層を示す。本例では、高階層と低階層の2種類の階層が用意されている。I/Oカウンタ1235は、前回の階層制御処理(後述する図19参照)が実行されてから、当該レコードの格納領域ID1233が示す記憶領域に対して発行されたI/O数を示す。
なお、図8では管理ノード101に保持されるボリューム管理テーブル123を例示したが、通常ノード102や下位ノード103に保持されるボリューム管理テーブル123の場合は、管理ノード101の場合と同様としてもよいし、よりデータ量を減らしてもよい。通常ノード102や下位ノード103に保持されるボリューム管理テーブル123のデータ量を減らす場合には、少なくとも、自エントリに関する情報を保持するようにすればよい。
図9は、格納領域管理テーブルの構成例を示す図である。格納領域管理テーブル124は、管理ノード101、通常ノード102、及び下位ノード103でそれぞれ保持される(図3~図5参照)。管理ノード101における格納領域管理テーブル124は、ストレージシステム100が有する格納領域107ごとにレコードを有する。また、通常ノード102及び下位ノード103における格納領域管理テーブル124は、自ノードのストレージデバイス215が格納先となっている格納領域107ごとに、レコードを有する。図9では、一例として、図1に例示した管理ノード101に保持される格納領域管理テーブル124の具体値を示している。
図9に例示したように、格納領域管理テーブル124の各レコードは、格納領域ID1241、階層1242、プライマリノードID1243、プライマリドライブID1244、プライマリアドレス1245、セカンダリノードID1246、セカンダリドライブID1247、及びセカンダリアドレス1248といった情報を格納する。
格納領域ID1241は、ストレージシステム100内で格納領域107を一意に識別可能な識別子(ID)を示し、図8の格納領域ID1233と同じIDが用いられる。階層1242は、当該レコードの格納領域107が属する階層を示し、図8の階層1234と同じ値が用いられる。プライマリノードID1243は、当該レコードの格納領域107に対して処理の主権を持ち、正常系として扱われる「プライマリ」のノードのIDを示す。プライマリノードID1243及びセカンダリノードID1246に用いられるIDは、図6のノードID1211に用いられるIDと同じである。プライマリドライブID1244は、当該レコードの格納領域107にI/Oが発行された場合に実際に格納される、プライマリのストレージデバイス215のIDを示す。プライマリアドレス1245は、当該レコードの格納領域107にI/Oが発行された場合に実際に格納される、プライマリ側の格納先アドレスを示す。セカンダリノードID1246は、当該レコードの格納領域107に対して冗長化先として処理を依頼される「セカンダリ」のノードのIDを示す。セカンダリドライブID1247は、当該レコードの格納領域107にI/Oが発行された場合に実際に格納される冗長化先のストレージデバイス215のIDを示す。セカンダリアドレス1248は、当該レコードの格納領域107にI/Oが発行された場合に実際に格納される、冗長化先のアドレスを示す。
図10は、ストレージデバイス管理テーブルの構成例を示す図である。ストレージデバイス管理テーブル125は、管理ノード101、通常ノード102、及び下位ノード103でそれぞれ保持される(図3~図5参照)。管理ノード101におけるストレージデバイス管理テーブル125は、ストレージシステム100が有する全てのストレージデバイス215の一定領域(1つの格納領域107と同じ容量)ごとにレコードを有する。また、通常ノード102及び下位ノード103におけるストレージデバイス管理テーブル125は、自ノードが有する全てのストレージデバイス215の一定領域(1つの格納領域107と同じ容量)ごとにレコードを有する。図10では、一例として、図1に例示した管理ノード101に保持されるストレージデバイス管理テーブル125の具体値を示している。
図10に例示したように、ストレージデバイス管理テーブル125の各レコードは、ノードID1251、ドライブID1252、アドレス1253、及び状態1254といった情報を格納する。
ノードID1251は、ストレージシステム100内でノードを一意に識別可能な識別子(ID)を示し、図6のノードID1211と同じIDが用いられる。ドライブID1252は、当該レコードのノードID1251で示されるノードにおいて一意なストレージデバイス215のIDを示す。なお、ドライブID1252で用いるIDには、ストレージシステム100内で一意なIDを割り当ててもよい。アドレス1253は、当該レコードのドライブID1252で示されるストレージデバイス215において一定領域(1つの格納領域107と同じ容量)に分割されたアドレスを示す。状態1254は、当該レコードのアドレス1253で示された記憶領域について、格納領域107としての使用状態(使用中/未使用)を示す。
(1-3)処理
本実施形態に係るストレージシステム100で実行される各種処理について詳しく説明する。
図11は、ノード追加処理の処理手順例を示す図である。図11に示すノード追加処理は、ストレージシステム100にノードを追加する際に実行される処理であって、ノード追加指示を受けて開始される。ノード追加指示は、追加するノード(追加ノード)を指定し、また、当該ノードの属性を引数に持つ。ノードの属性は例えばユーザによって指定される。
図11によれば、まず、管理ノード101のクラスタ構成管理プログラム111は、追加ノードの属性を引数としたノード追加指示を受領した場合に(ステップS1101)、自ノードに格納されているクラスタ構成管理テーブル121に対して、追加ノードに関する新規のレコードを追加する(ステップS1102)。例えば、ノード103を追加するノード追加指示において属性が「下位」と指定された場合、クラスタ構成管理プログラム111は、クラスタ構成管理テーブル121の新規レコードにおいて、ノードID1211にノード103のIDを追加し、属性1212に「下位」を追加し、起動プログラム1213に、ノード管理プログラム112の情報を追加する(図6参照)。このとき起動プログラム1213に情報が追加されるプログラム(本例ではノード管理プログラム112)は、属性1212に応じて予め決められている。
その後、管理ノード101のクラスタ構成管理プログラム111は、ストレージシステム100に追加されたノードのノード管理プログラム112に対して、他のプログラムの起動を指示する(ステップS1103)。
ここで、追加ノード(例えば下位ノード103)では、初期の状態として、ノード内で他のプログラムを起動するためのノード管理プログラム112のみが存在する(起動している)。この状態において、追加ノードのノード管理プログラム112は、ステップS1103による管理ノード101のクラスタ構成管理プログラム111からのプログラム起動の指示を受領すると(ステップS1104)、引数として指定された他のプログラムを起動する(ステップS1105)。
なお、ステップS1105において追加ノードのノード管理プログラム112は、自ノードが保持する全てのプログラムではなく(例えば、下位ノード103でも、メモリ212に通常ノード102と同様の複数のプログラムを保持している)、ステップS1103の指示で指定されたプログラムのみを起動し、当該プログラムが必要とするテーブルのみ、メモリ212の領域を確保する。具体的には例えば、下位ノード103では、ステップS1105の処理によって、バックエンドI/O処理プログラム115、ストレージデバイス管理プログラム116、及び格納領域管理プログラム117を起動し、ストレージデバイス管理プログラム116に関連するストレージデバイス管理テーブル125と格納領域管理プログラム117に関連する格納領域管理テーブル124とを、メモリ212上に展開する。本実施形態ではこのように「下位」の属性が指定されて追加されたノードにおいては、管理ノード101や通常ノード102よりも起動するプログラム及び当該プログラムに関連するテーブルのために確保されるメモリ212の領域が少なくて済むため、管理ノード101や通常ノード102と比較して、必要なCPU211及びメモリ212の量を削減することができる。
ステップS1105におけるプログラムの起動及び展開が完了した後、追加ノードのノード管理プログラム112は、管理ノード101のクラスタ構成管理プログラム111に対して、完了応答を通知する(ステップS1106)。
次に、管理ノード101のクラスタ構成管理プログラム111は、追加ノードからのプログラム起動指示の完了応答を受領する(ステップS1107)。プログラム起動指示の完了応答を受領したことにより、管理ノード101のクラスタ構成管理プログラム111は、追加ノードにおいて必要なプログラムが起動し、追加ノードは指定された属性に応じた機能を実行できる状態になったと判断し、ユーザにノード追加完了を応答し(ステップS1108)、ノード追加処理を終了する。
図12は、ストレージデバイス追加処理の処理手順例を示す図である。図12に示すストレージデバイス追加処理は、管理テーブル(ストレージデバイス管理テーブル125)に登録されていない未登録のストレージデバイス215がないか確認し、未登録のストレージデバイス215が有った場合には所定の対応を行う処理であって、各ノードで定期的(例えば10秒ごと)に実行される。
図12によれば、まず、各ノード(例えば、最も機能が少ない下位ノード103とする)において、ストレージデバイス管理プログラム116が、自ノード内のストレージデバイス215を発見し、当該ストレージデバイス215の情報とストレージデバイス管理テーブル125に登録されている情報とを比較する(ステップS1201)。
次に、ストレージデバイス管理プログラム116は、ステップS1201で比較したストレージデバイス215がストレージデバイス管理テーブル125に未登録であるか否かを判定し(ステップS1202)、未登録であった場合はステップS1203に進む。一方、ステップS1202において未登録のストレージデバイス215が存在しない場合は(ステップS1202のNO)、ストレージデバイス追加処理を終了する。
ステップS1203では、ストレージデバイス管理プログラム116は、未登録のストレージデバイス215の情報をストレージデバイス管理テーブル125に追加する。具体的には、未登録のストレージデバイス215について、ノードID1251及びドライブID1252に相当する一意なIDとともに、そのアドレスを一定領域(1つの格納領域107と同じ容量)の間隔で区切り、区切られた数と同数の新規レコードを作成してアドレス1253を登録し、各レコードの状態1254を「未使用」と登録する。
次に、ストレージデバイス管理プログラム116は、ステップS1203でストレージデバイス管理テーブル125に追加した新規レコードの数を引数として、管理ノード101で動作するプール管理プログラム120に対して、空き容量更新指示を発行する(ステップS1204)。
管理ノード101のプール管理プログラム120は、空き容量更新指示を受領すると(ステップS1205)、引数として受領したレコードの数からブロック数を換算し、プール106の空き容量を増加させてプール管理テーブル122を更新する(ステップS1206)。その後、プール管理プログラム120は、ステップS1204における空き容量更新指示の送信元であるストレージデバイス管理プログラム116に対して、完了応答を送信する(ステップS1207)。
そしてストレージデバイス管理プログラム116は、空き容量更新指示への完了応答を受領し(ステップS1208)、ストレージデバイス追加処理を終了する。
図13は、ボリューム作成処理の処理手順例を示す図である。図13に示すボリューム作成処理は、ユーザからのボリューム作成指示を受けてボリューム105を作成する処理である。
図13によれば、まず、管理ノード101のクラスタ構成管理プログラム111が、ユーザからボリューム105の作成を指示するボリューム作成指示を受領する(ステップS1301)。次に、クラスタ構成管理プログラム111は、クラスタ構成管理テーブル121を検索し(ステップS1302)、起動プログラム1213からボリューム管理プログラム119が起動しているノードを探し、そのうちの1つのノードを選出し、選出したノードに対してボリューム作成指示を発行する(ステップS1303)。
次に、ボリューム作成指示の送信先のノードでは、ボリューム管理プログラム119が、ステップS1303で発行されたボリューム作成指示を受領すると(ステップS1304)、仮想ボリューム(ボリューム105)を作成し、ボリューム管理テーブル123を更新する(ステップS1305)。なお、ステップS1305の段階では、ボリューム管理プログラム119は、ボリューム管理テーブル123においてボリュームID1231のみを登録し、その後のI/O処理時に格納領域107が未割り当てのアドレスに対してデータが書き込まれる場合にのみ格納領域107を割り当てる(アドレス1232や格納領域ID1233等を登録する)ことで、シンプロビジョニング(Thin Provisioning)を実現する。その後、ボリューム管理プログラム119は、ステップS1303におけるボリューム作成指示の送信元であるクラスタ構成管理プログラム111に対して、完了応答を送信する(ステップS1306)。
そしてクラスタ構成管理プログラム111は、ボリューム作成指示への完了応答を受領する(ステップS1307)。次に、クラスタ構成管理プログラム111は、自ノード(管理ノード101)のプール管理プログラム120に対して、作成されたボリューム105のID(ステップS1305でボリューム管理テーブル123に登録されたボリュームID1231)を引数としてボリューム情報追加を指示する(ステップS1308)。
プール管理プログラム120は、ステップS1308におけるクラスタ構成管理プログラム111からのボリューム情報追加指示を受領すると(ステップS1309)、プール管理テーブル122の所属ボリュームID1222に、ボリューム情報追加指示の引数として渡されたボリューム105のIDを追記する(ステップS1310)。その後、プール管理プログラム120は、ステップS1308におけるボリューム情報追加指示の送信元であるクラスタ構成管理プログラム111に対して、完了応答を送信する(ステップS1311)。
そしてクラスタ構成管理プログラム111は、ボリューム情報追加指示への完了応答を受領すると(ステップS1312)、ボリューム105の作成が完了したと判断して、ユーザにボリューム作成完了を応答し(ステップS1313)、ボリューム作成処理を終了する。
なお、上記のステップS1303では、ボリューム管理プログラム119が起動しているノードの1つをボリューム作成指示の発行先に選出するとしたが、このときのノードの選出基準として例えば、ボリューム管理プログラム119が起動しているノードのうち、作成されているボリューム105が最も少ないノードを選出するようにしてもよい。
図14は、I/O処理の処理手順例を示す図である。図14に示すI/O処理は、データの入出力を行う処理である。以下、データの格納を示すライト処理の場合を例に挙げて説明する。
図14によれば、まず、ホスト201がフロントエンドのネットワーク(LAN221やSAN222)を介して発行したI/O指示及びデータ(本例では、ライト指示及びライトデータ)を、フロントエンドI/O処理プログラム113が受領する(ステップS1401)。なお、フロントエンドI/O処理プログラム113が起動しているノードは、管理ノード101または通常ノード102である。
次に、フロントエンドI/O処理プログラム113は、ボリューム管理テーブル123を参照し(ステップS1402)、ホスト201からのI/O指示で指定されたボリューム105のアドレスに対して、格納領域107が割り当て済みであるか否かを判定する(ステップS1403)。ステップS1403において格納領域107が割り当て済みであった場合は(ステップS1403のYES)、後述するステップS1409に進む。
一方、ステップS1403において格納領域107が未割り当てであった場合は(ステップS1403のNO)、I/O指示(ライト指示)で指定されたボリューム105のアドレスに対して格納領域107が未割り当てであることから、フロントエンドI/O処理プログラム113は、指定されたデータ(ライトデータ)を格納するための格納領域107が必要になる。そこでこの場合、フロントエンドI/O処理プログラム113は、管理ノード101で動作する格納領域作成・削除プログラム118に、階層を引数として格納領域作成指示を発行する(ステップS1404)。本例では、ホスト201からのライト指示に伴って割り当てる格納領域107は、高階層から設定するものとする。
ステップS1404で格納領域作成指示が発行されると、管理ノード101の格納領域作成・削除プログラム118がこれを受領し、格納領域107を作成する格納領域作成処理を実行し、格納領域107の作成後に完了応答を通知する(ステップS1405)。格納領域作成処理の詳細は、図15を参照しながら後述する。
そしてフロントエンドI/O処理プログラム113は、格納領域作成・削除プログラム118から、ステップS1405で作成した格納領域107に関する格納領域ID1241及びプライマリノードID1243を返り値として完了応答を受領する(ステップS1406)。
次に、フロントエンドI/O処理プログラム113は、ボリューム管理テーブル123に対して、ステップS1405で作成された格納領域107に対応するレコードにおいて、格納領域ID1233及び階層1234の情報を追加する(ステップS1407)。また、フロントエンドI/O処理プログラム113は、格納領域管理テーブル124に対して、ステップS1405で作成された格納領域107に対応するレコードにおいて、格納領域ID1241及びプライマリノードID1243の情報を追加する(ステップS1408)。ステップS1408の処理が完了すると、ステップS1409に進む。
ステップS1409では、フロントエンドI/O処理プログラム113は、ステップS1405で作成された格納領域107のIDとステップS1401で受領したデータ(ライトデータ)を引数として、自ノードで動作するバックエンドI/O処理プログラム115に対して、データ格納指示を発行する。なお、ステップS1403のYESを経てステップS1409の処理が行われる場合は、フロントエンドI/O処理プログラム113は、ステップS1405で作成された格納領域107のIDの代わりに、ステップS1403で割り当て済みと確認された格納領域107のIDを引数とすればよい。
ステップS1409でデータ格納指示が発行されると、自ノードのバックエンドI/O処理プログラム115がこれを受領し、データ格納指示に基づいて格納領域107にデータを格納するバックエンド(BE)I/O処理を実行し、完了応答を通知する(ステップS1410)。バックエンドI/O処理の詳細は、図18を参照しながら後述する。
そしてフロントエンドI/O処理プログラム113は、バックエンドI/O処理プログラム115から完了応答を受領する(ステップS1411)。次に、フロントエンドI/O処理プログラム113は、ボリューム管理テーブル123に対して、I/Oカウンタ1235を更新する(ステップS1412)。以上をもってフロントエンドI/O処理プログラム113は、ホスト201から受領したI/O指示が完了したと判断して、ホスト201に完了応答を返し(ステップS1413)、I/O処理を終了する。
なお、上記説明では、ライトデータを格納する格納領域107の階層に高階層を指定したが(ステップS1404)、本実施形態はこれに限らず、ライトデータに対して低階層を指定してもよい。
また、上記説明では、格納領域107の作成をI/O処理のなか(ステップS1405)で実施するとしたが、本実施形態ではこれに限定されず、例えば、図11に示したノード追加処理の延長として格納領域107の作成を実施するようにしてもよく、その場合、I/O処理内では、格納処理の代わりに割り当てを行うようにしてよい。
図15は、格納領域作成処理の処理手順例を示す図である。図15に示す格納領域作成処理は、格納領域作成指示に基づいて新規の格納領域107を作成する処理であって、図14のステップS1405や図19のステップS1904の処理に相当する。
図15によれば、まず、管理ノード101の格納領域作成・削除プログラム118が格納領域作成指示を受領する(ステップS1501)。次に、格納領域作成・削除プログラム118は、クラスタ構成管理テーブル121を検索し、格納領域作成指示で指定された階層と一致する階層を有するノードを2つ選出する(ステップS1502)。本例では、「高階層」が指定されているとし、この場合、管理ノード101と通常ノード102が選出される。
次に、格納領域作成・削除プログラム118は、管理ノード101のストレージデバイス管理テーブル125を検索し、ステップS1502で選出したノード(管理ノード101、通常ノード102)のストレージデバイス215における未使用のアドレスを2つ選択する(ステップS1503)。
そして、格納領域作成・削除プログラム118は、管理ノード101の格納領域管理テーブル124に新規レコードを作成し、ステップS1502で選出したノードの情報と、ステップS1503で選出したアドレスを有するストレージデバイスの情報と、を当該レコードに登録する(ステップS1504)。
次に、格納領域作成・削除プログラム118は、構成伝播処理を実施する(ステップS1505)。構成伝播処理の詳細は、図16を参照しながら後述する。その後、格納領域作成・削除プログラム118は、管理ノード101のプール管理プログラム120に対して、プール管理テーブル122における容量情報の更新を指示する容量情報更新処理を発行する(ステップS1506)。
管理ノード101のプール管理プログラム120は、容量情報更新処理を受領すると(ステップS1507)、プール管理テーブル122において、新規に作成された格納領域107の分だけ、未使用容量(本例では高階層未使用容量1224)を減らすとともに、使用済み容量(本例では高階層使用済み容量1223)を増やす(ステップS1507)。その後、プール管理プログラム120は、格納領域作成・削除プログラム118に対して、完了応答を通知する(ステップS1509)。
そして格納領域作成・削除プログラム118は、プール管理プログラム120から容量情報更新指示の完了応答を受領すると(ステップS1510)、格納領域107の作成が完了したと判断し、格納領域作成指示の発行元(例えば図14のステップS1405の格納領域作成処理の場合は、フロントエンドI/O処理プログラム113)に対して、完了応答を通知し(ステップS1511)、格納領域作成処理を終了する。
なお、上記説明では、格納領域107の冗長化をミラーリングで実施する場合を例としたため、ステップS1502,S1503でそれぞれ2つのノード及びストレージデバイス215を選出したが、ストレージシステム100において他のRAIDやイレーシャーコーディング(Erasure Coding)を採用する場合には、2よりも多い個数を選出してもよく、同時に複数の格納領域107を作成する等してもよい。
図16は、構成伝播処理の処理手順例を示す図である。図16に示す構成伝播処理は、管理ノード101で決定した構成情報を関連するノード(通常ノード102や下位ノード103)に伝える処理であって、図15のステップS1505や図20のステップS2004の処理に相当する。
図16によれば、まず、管理ノード101の格納領域作成・削除プログラム118が、格納領域107を構成するプライマリノードで起動している格納領域管理プログラム117に対して、情報更新指示を発行する(ステップS1601)。
なお、格納領域107を構成するプライマリノードとセカンダリノードとの組合せは、格納領域管理テーブル124を参照することによって認識することができる。具体的には、図9の格納領域管理テーブル124を参照すると、格納領域107の階層が高階層である場合は、プライマリノードは管理ノード101(ノードID「1」)、セカンダリノードは通常ノード102(ノードID「2」)であり、格納領域107の階層が低階層である場合は、プライマリノードは下位ノード103(ノードID「3」)、セカンダリノードは下位ノード103(ノードID「4」)である。
次に、プライマリノードの格納領域管理プログラム117は、格納領域作成・削除プログラム118からの情報更新指示を受領すると(ステップS1602)、情報更新指示で指定された情報(引数)に基づいて、自ノードの格納領域管理テーブル124を更新する(ステップS1603)。その後、プライマリノードの格納領域管理プログラム117は、管理ノード101の格納領域作成・削除プログラム118に対して、完了応答を通知する(ステップS1604)。
そして、管理ノード101の格納領域作成・削除プログラム118は、プライマリノードの格納領域管理プログラム117から完了応答を受領する(ステップS1605)。
ステップS1601~S1605の処理によって、プライマリノードに対する格納領域管理テーブル124の情報更新が完了する。そこで次は、ステップS1601~S1605と同様の処理を、セカンダリノードに対して実施する(ステップS1606~S1610)。繰り返しを避けるために詳細な説明は省略するが、ステップS1606~S1610の処理によって、セカンダリノードに対する格納領域管理テーブル124の情報更新が完了する。
そして、ステップS1610の終了後、格納領域作成・削除プログラム118は、ストレージデバイス情報更新処理を実施する(ステップS1611)。ストレージデバイス情報更新処理の詳細は、図17を参照しながら後述する。
図17は、ストレージデバイス情報更新処理の処理手順例を示す図である。図17に示すストレージデバイス情報更新処理は、管理ノード101で決定した構成情報をプライマリノード及びセカンダリノードに伝えて、ストレージデバイス管理テーブル125の情報を更新する処理であって、図16のステップS1611の処理に相当する。
図17によれば、まず、管理ノード101の格納領域作成・削除プログラム118が、格納領域107を構成するプライマリノードで起動しているストレージデバイス管理プログラム116に対して、情報更新指示を発行する(ステップS1701)。
次に、プライマリノードのストレージデバイス管理プログラム116は、格納領域作成・削除プログラム118からの情報更新指示を受領すると(ステップS1702)、自ノードのストレージデバイス管理テーブル125について、情報更新指示で指定されたドライブID1252とアドレス1253に対する状態1254を更新する(ステップS1703)。ステップS1703における状態1254の更新について具体的には、格納領域107を削除した場合は、「使用中」を「未使用」に変更し、格納領域107を作成した場合は、「未使用」を「使用中」に変更する。その後、プライマリノードのストレージデバイス管理プログラム116は、管理ノード101の格納領域作成・削除プログラム118に対して、完了応答を通知する(ステップS1704)。
そして、管理ノード101の格納領域作成・削除プログラム118は、プライマリノードのストレージデバイス管理プログラム116から完了応答を受領する(ステップS1705)。
ステップS1701~S1705の処理によって、プライマリノードに対するストレージデバイス管理テーブル125の情報更新が完了する。そこで次は、ステップS1701~S1705と同様の処理を、セカンダリノードに対して実施する(ステップS1706~S1710)。ステップS1706~S1710の処理によって、セカンダリノードに対するストレージデバイス管理テーブル125の情報更新が完了するため、ストレージデバイス情報更新処理を終了する。
図18は、バックエンドI/O処理の処理手順例を示す図である。図18に示すバックエンド処理は、図14に示したI/O処理のなかで実行される処理であって(ステップS1410参照)、フロントエンドI/O処理プログラム113からのデータ格納指示を受けて実行される。
図18によれば、まず、バックエンドI/O処理プログラム115は、データ格納指示を受領する(ステップS1801)。次に、バックエンドI/O処理プログラム115は、データ格納指示で引数として与えられた格納領域107のIDで、自ノード内の格納領域管理テーブル124を検索し(ステップS1802)、上記格納領域107のプライマリノードが自ノードであるかを判定する(ステップS1803)。ステップS1803において格納領域107のプライマリノードが自ノードであった場合は(ステップS1803のYES)、ステップS1804に進み、格納領域107のプライマリノードが他ノードであった場合は(ステップS1803のNO)、ステップS1811に進む。
まず、ステップS1803においてプライマリノードが自ノードであった場合について説明する。ステップS1804において、バックエンドI/O処理プログラム115は、自ノード内のプライマリドライブとなるストレージデバイス215に対して、データの書込み処理を実施する。その後、バックエンドI/O処理プログラム115は、セカンダリノードのバックエンドI/O処理プログラム115に対して、データの格納処理を指示する(ステップS1805)。
セカンダリノードのバックエンドI/O処理プログラム115は、ステップS1805で発行されたデータの格納指示を受領すると(ステップS1806)、セカンダリノード内のセカンダリドライブとなるストレージデバイス215に対して、データの書込み処理を実施する(ステップS1807)。その後、セカンダリノードのバックエンドI/O処理プログラム115は、プライマリノードのバックエンドI/O処理プログラム115に対して、完了応答を通知する(ステップS1808)。
そして、プライマリノードのバックエンドI/O処理プログラム115は、ステップS1808で通知された完了応答を受領する(ステップS1809)。ここまでの処理によって、データ格納指示で引数として与えられた格納領域107のプライマリノード及びセカンダリノードに対して、データの書き込みを実施できたことから、プライマリノードのバックエンドI/O処理プログラム115は、データ格納指示の発行元(図14のステップS1410の場合はフロントエンドI/O処理プログラム113、後述するステップS1812の場合はバックエンドI/O処理プログラム115)に対して、完了応答を通知し(ステップS1810)、バックエンドI/O処理を終了する。
次に、ステップS1803においてプライマリノードが他ノードであった場合について説明する。このとき、ステップS1811において、バックエンドI/O処理プログラム115は、自ノードとは別のノードに存在するプライマリノードのバックエンドI/O処理プログラム115に対して、データの格納処理を指示する。ステップS1811の指示を受けて、プライマリノードのバックエンドI/O処理プログラム115は、図18に示すバックエンドI/O処理をステップS1801から実行する。但しこの転送先では、転送先の自ノードがプライマリノードであることから、ステップS1803の判定はYESとなる分岐で処理が実行される。
転送先のバックエンドI/O処理が終了すると、元ノードのバックエンドI/O処理プログラム115は、転送先のプライマリノードのバックエンドI/O処理プログラム115から完了応答を受領する(ステップS1813)。そして、バックエンドI/O処理プログラム115は、ステップS1813の動作を待って、データ格納指示の発行元であるフロントエンドI/O処理プログラム113に対して、完了応答を通知し(ステップS1814)、バックエンドI/O処理を終了する。
以上のようにバックエンドI/O処理が実行されることにより、バックエンドI/O処理プログラム115は、データ格納指示で引数として与えられた格納領域107のプライマリノード及びセカンダリノードに対して、データの書き込みを実施することができる。
図19は、階層制御処理の処理手順例を示す図である。図19に示す階層制御処理は、階層制御プログラム114が、格納領域107に対する一定時間内のI/Oの回数に基づいて、格納領域107が階層ごとに定められた適性条件を満たしているかを確認し、適性条件を満たさない場合には適性条件を満たす階層に変更する処理であって、階層制御プログラム114が起動する管理ノード101及び通常ノード102において、定期的(例えば1日間隔)に実行される。
図19によれば、まず、階層制御プログラム114が、ボリューム管理テーブル123を参照して、階層1234及びI/Oカウンタ1235を確認する(ステップS1901)。階層制御プログラム114は、ステップS1901の検索によって、所属する階層の適性条件に適合しない格納領域107が存在するか否かを判定する(ステップS1902)。
ステップS1902の判定基準について補足する。本実施形態では、階層ごと(高階層、低階層)に一定時間におけるI/O回数の適性範囲が定められており、これを「階層の適性条件」と呼ぶ。具体的には、本例では、一定時間内のI/Oカウンタ1235が「100」以上であることを高階層の適性条件とし、一定時間内のI/Oカウンタ1235が「100」未満であることを低階層の適性条件とする。このとき、ステップS1902の判定においては、ボリューム管理テーブル123の各レコードについて、階層1234の区分を基に、一定時間内のI/Oカウンタ1235と閾値「100」とを比較することにより、所属階層の適性条件を満たしていない格納領域107の存在を確認することができる。
ステップS1902において所属階層の適性条件を満たさない格納領域107が存在した場合は(ステップS1902のYES)、ステップS1903に進む。一方ステップS1902において作成済みの全ての格納領域107が所属階層の適性条件を満たしていた場合には(ステップS1902のNO)、特段の処理が必要ないため、階層制御処理は終了する。
ステップS1903では、階層制御プログラム114は、ステップS1902の判定で不適と判定された格納領域107について、管理ノード101の格納領域作成・削除プログラム118に対して、適性条件を満たす階層を引数として格納領域作成指示を発行する。
ステップS1903の格納領域作成指示を受けて、格納領域作成・削除プログラム118は、格納領域作成処理を実施して、適性条件を満たす階層に格納領域107を新規作成する(ステップS1904)。格納領域作成処理については、図15で前述している。
その後、階層制御プログラム114は、格納領域作成処理の完了応答を受領すると(ステップS1905)、ステップS1904で新規作成した階層の格納領域107に、ステップS1902で適性条件を満たさなかった格納領域107のデータをコピーする(ステップS1906)。そして、階層制御プログラム114は、管理ノード101の格納領域作成・削除プログラム118に対して、コピー元となった格納領域107の削除指示を発行する(ステップS1907)。
ステップS1907の削除指示を受けて、格納領域作成・削除プログラム118は格納領域削除処理を実施する(ステップS1908)。格納領域削除処理の詳細は、図20を参照しながら後述する。
その後、階層制御プログラム114は、格納領域削除処理の完了応答を受領すると(ステップS1909)、階層制御処理を終了する。
上記のように階層制御処理が実行されることにより、本実施形態のストレージシステム100では、階層の適性条件に合わせて格納領域107の再配置を行うことができるため、ストレージシステム100全体におけるリソースの効率的な利用を進めて、処理性能を高める効果に期待できる。
より詳しく説明すると、階層の前提として、SSDのように比較的高機能なストレージデバイス215を有するノードを通常ノード102として、そのストレージデバイス215から作成される格納領域を高階層に置き、一方、HDDといった低機能なストレージデバイス215を有するノードを下位ノード103として、そのストレージデバイス215から作成される格納領域107を低階層に置く。このような構成で上記の階層制御処理を実行することにより、高階層の格納領域107においてI/Oカウンタが100未満である(アクセス数が少ない)場合には、高階層に格納しておく必要がないため、格納領域を低機能な低階層に移すことができる。この結果、低機能のストレージデバイスを使用した場合のストレージシステム全体における性能低下を防止することができる。また、低階層の格納領域107においてI/Oカウンタが100以上である(アクセス数が多い)場合には、高機能な高階層に格納することにより、I/Oの処理速度が速くなり、システム全体での処理能力が高くなる。
なお、本例では、階層の適性条件として一定時間内のI/Oカウンタによる階層制御を例に挙げて説明したが、本実施形態はこれに限らず、I/O処理におけるライト処理やリード処理の比率といった指標や、ボリューム105とデータとが同一ノードに存在するかどうか、といった指標等を用いて階層制御を行うものであってもよい。また、データコピー後にコピー元の格納領域107を削除する処理(ステップS1907~S1908)は行わないようにしてもよい。
図20は、格納領域削除処理の処理手順例を示す図である。図20に示す格納領域削除処理は、格納領域削除指示に基づいて格納領域107を削除する処理であって、図19のステップS1908の処理に相当する。
図20によれば、まず、管理ノード101の格納領域作成・削除プログラム118が、階層制御プログラム114から格納領域削除指示を受領する(ステップS2001)。次に、格納領域作成・削除プログラム118は、格納領域管理テーブル124を参照し、格納領域削除指示で指定された格納領域IDに紐付くプライマリノードとセカンダリノードとを特定する(ステップS2002)。そして、格納領域作成・削除プログラム118は、管理ノード101の格納領域管理テーブル124から、ステップS2002の特定内容に該当するレコードを削除する(ステップS2003)。その後、格納領域作成・削除プログラム118は、上記削除に対して、図16に示した構成伝播処理を利用する(ステップS2004)。
次に、格納領域作成・削除プログラム118は、プール管理プログラム120に対して、プール管理テーブル122における容量情報の更新を指示する容量情報更新処理を発行する(ステップS2005)。
管理ノード101のプール管理プログラム120は、容量情報更新処理を受領すると(ステップS2006)、プール管理テーブル122において、削除された格納領域107の分だけ、未使用容量を増やすとともに、使用済み容量を減らす(ステップS2007)。その後、プール管理プログラム120は、格納領域作成・削除プログラム118に対して、完了応答を通知する(ステップS2008)。
そして格納領域作成・削除プログラム118は、プール管理プログラム120から容量情報更新指示の完了応答を受領すると(ステップS2009)、格納領域107の削除が完了したと判断し、格納領域削除指示の発行元である階層制御プログラム114に対して完了応答を通知し(ステップS2010)、格納領域削除処理を終了する。
以上に説明したように、本実施形態に係るストレージシステム100によれば、ノードごとにユーザが指定した属性に応じて、各ノードで起動するプログラムを切り替えることができるため、ストレージクラスタへのノード追加時に、追加されるノードに必要なCPU及びメモリ量を削減することができる。
より詳しくは、本実施形態に係るストレージシステム100では、I/O処理を、ホスト201とのやり取りを行うフロントエンドの処理(フロントエンドI/O処理)と、ストレージデバイス215へのアクセス(データ格納)を行うバックエンドの処理(バックエンドI/O処理)とに分割し、ストレージシステムにおいてI/O処理を実行する際に、下位を示す属性(本例では「下位」)が指定されたノードでは、フロントエンドI/O処理を実行するプログラムを起動させずに、バックエンドI/O処理を実行するプログラムだけを起動させるため、フロントエンドI/O処理のためのCPU及びメモリ量を不要とすることができる。
さらに、本実施形態に係るストレージシステム100では、各ノードのストレージデバイス215をクラスタ化して提供されるストレージプール106を、I/O処理の許容頻度が異なる複数の階層(本例では「高階層/低階層」)に分類し、上位の属性(本例では「管理」または「通常」)が指定されたノードが有するストレージデバイス215から作成される格納領域107をストレージプール106の高階層に置いて扱う一方で、下位を示す属性(本例では「下位」)が指定されたノードが有するストレージデバイス215から作成される格納領域107をストレージプール106の低階層に置いて扱う、階層制御を実行する。このような階層制御を行うことにより、本実施形態に係るストレージシステム100では、ストレージデバイス215の性能によってノードの属性を指定することにより、ストレージシステム100全体における性能低下を防止するとともに、システム全体での処理能力を高めることに期待できる。具体的には例えば、SSDのような比較的高性能なストレージデバイス215を有するノードに「管理」または「通常」の属性を指定し、HDDのような比較的低性能なストレージデバイス215を有するノードに「下位」の属性を指定することにより、I/O頻度が多い高階層には高性能なストレージデバイス215による格納領域107を用い、I/O頻度が少ない低階層には低性能なストレージデバイス215による格納領域107を用いることができる。ストレージデバイス215の低性能/高性能の区分には、例えば処理性能に関する所定基準を設け、この所定基準を下回る場合に低性能なストレージデバイス215であると判定してもよい。
また、本実施形態に係るストレージシステム100では、図2に例示した下位ノード103のように、SANポート213やLANポート214を有していないストレージノードであっても、「下位」属性に指定することで、ストレージシステム100に組み込んで動作させることができる。すなわち、構成的に低機能なノードであっても、ストレージシステム100に追加することができるため、ノード追加に掛かるコストを抑制する効果に期待できる。
(2)第2の実施形態
以下に本発明の第2の実施形態に係るストレージシステム300について説明する。本実施形態の説明では、特別に説明がない部分に関しては、第1の実施形態と同様の構成を備え、同様の処理を行うものとする。
本実施形態では、本発明に係るストレージシステムが有するI/O処理以外の機能をどのように扱うかについて、スナップショット(Snapshot)を例に挙げて説明する。スナップショットは、あるプライマリボリュームのある時点でのデータを保存するためのスナップショットボリュームを作成し、スナップショットボリュームにプライマリボリュームとの差分を格納する機能である。
図21は、第2の実施形態において管理ノードで実行されるコンピュータプログラムの一例を示す図である。第2の実施形態に係るストレージシステム300は、第1の実施形態における管理ノード101の代わりに管理ノード301を備える。図21に示したように、管理ノード301のメモリ310は、管理ノード101のメモリ212に格納される複数のコンピュータプログラム(図3参照)に加えて、スナップショット機能を管理するためのスナップショット管理プログラム311を格納している。また、メモリ312に格納されるテーブルはメモリ212に格納されるテーブルと同様であるが、クラスタ構成管理テーブル321は、起動するプログラムがクラスタ構成管理テーブル121と異なっている。
第1の実施形態に係るストレージシステム100との相違点として、本実施形態に係るストレージシステム300では、I/O処理に関するノードの属性(上位/下位)だけでなく、付属機能(本例では、ボリューム105の管理に関する付属機能としてスナップショット機能を例示)の有無についても、ユーザがその属性を引数として指定できるようにすることを特徴とする。
図22は、図21に示したクラスタ構成管理テーブルの構成例を示す図である。クラスタ構成管理テーブル321は管理ノード301に保持され、ストレージシステム300内のノード別にレコードを有する。図21に示したクラスタ構成管理テーブル321の構成(ノードID3211,属性3212,起動プログラム3213)は、第1の実施形態で図6に示したクラスタ構成管理テーブル121の構成と同様である。図22でノードID「1」のレコードに示したように、スナップショット管理プログラム311は、管理ノード301でのみ展開される。
上記のように構成されたストレージシステム300では、ノードの追加が指示された場合、第1の実施形態と同様に、クラスタ構成管理プログラム111が、指定されたノードの属性に応じて、追加ノードで展開するプログラムを決定する(図11のステップS1303)。
また、前述した通り、ストレージシステム300では、ユーザからボリューム作成が指示される場合、スナップショットの作成要否を引数として与えることができる。そしてボリューム作成指示の引数でスナップショット作成が必要と指示された場合には、クラスタ構成管理プログラム111は、図13のステップS1303の処理において、スナップショット管理プログラム311が起動しているノード(本例では管理ノード301)に対して、ボリューム作成指示を発行する。このような処理が行われることにより、ストレージシステム300では、展開されている機能に応じて必要なメモリ量だけを使って動作させることが可能となる。
以上のように、第2の実施形態に係るストレージシステム300では、第1の実施形態によって得られる効果に加えて、ボリューム105の管理に関する付属機能(例えばスナップショット機能)についてもノードの属性として指定することができる。そして、この付属機能の属性に応じて、ボリューム105の管理機能を分割して、ノードごとに起動するプログラムを切り替えることによって、付属機能のために必要となる最小限のCPU及びメモリ量だけを消費するようにストレージシステム300を構成することができる。
以上、本発明に関する複数の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、スナップショットプログラムの起動有無を切り替える代わりに、他ストレージシステムとの同期コピープログラムの起動の有無を切り替えてもよいし、スナップショットプログラムを有するノードに対してスナップショットノードなど新たなノードの属性を設定し、それに応じて起動するプログラムを切り替えてもよい。
100,300 ストレージシステム
101,301 管理ノード(ストレージノード,ノード)
102 通常ノード(ストレージノード,ノード)
103 下位ノード(ストレージノード,ノード)
104 ビュー
105 ボリューム
106 ストレージプール(プール)
107 格納領域
111 クラスタ構成管理プログラム
112 ノード管理プログラム
113 フロントエンドI/O処理プログラム
114 階層制御プログラム
115 バックエンドI/O処理プログラム
116 ストレージデバイス管理プログラム
117 格納領域管理プログラム
118 格納領域作成・削除プログラム
119 ボリューム管理プログラム
120 プール管理プログラム
121 クラスタ構成管理テーブル
122 プール管理テーブル
123 ボリューム管理テーブル
124 格納領域管理テーブル
125 ストレージデバイス管理テーブル
131~136 符号
201 ホスト
211 CPU
212,310 メモリ
213 SANポート
214,216 LANポート
215 ストレージデバイス
221,223 LAN
222 SAN
311 スナップショット管理プログラム

Claims (11)

  1. 複数のノードによってストレージクラスタを構成するストレージシステムであって、
    データを格納するストレージデバイスと、
    メモリと、
    ストレージデバイスへI/O処理を行うためのプログラムを稼働させるプロセッサと、
    を備え、
    前記ノードは、第1の属性のノードと、第2の属性のノードと、に属性が指定され、
    前記ノードにおけるI/O処理は、いずれかの前記第1の属性のノードが実行するフロントエンドI/O処理と、I/O処理にかかるデータを格納する前記ストレージデバイスを有する前記第1及び前記第2の属性のノードが実行するバックエンドI/O処理と、を含む複数の処理として実行され、
    前記第1の属性のノードは上位の前記属性が指定された上位ノードであり、前記第2の属性のノードは下位の前記属性が指定された下位ノードであり、前記上位ノードには管理用の管理ノードが含まれ、
    前記管理ノードが、前記下位ノードの前記ストレージデバイスへの前記I/O処理において前記フロントエンドI/O処理を担当する前記上位ノードを指定し、
    さらに、前記ストレージクラスタから提供されるストレージプールは、複数段階の階層に分割して管理され、
    前記上位ノードの前記プロセッサは、各前記ノードの前記ストレージデバイスが提供する格納領域を前記ストレージプールの何れの階層で扱うかを、各前記ノードの前記属性に応じて制御する階層制御を実行する
    ことを特徴とするストレージシステム。
  2. 前記ノードの前記属性は、当該ノードを前記ストレージクラスタに追加するときに、ユーザによって指定される
    ことを特徴とする請求項1に記載のストレージシステム。
  3. 前記ストレージプールの階層には、I/O頻度が比較的高いデータを格納するための高階層と、I/O頻度が比較的低いデータを格納するための低階層と、が含まれる
    ことを特徴とする請求項1に記載のストレージシステム。
  4. 前記階層制御において、前記上位ノードの前記プロセッサは、前記下位ノードが有する前記ストレージデバイスが提供する前記格納領域を前記低階層のみで扱う
    ことを特徴とする請求項3に記載のストレージシステム。
  5. 前記ストレージプールの前記階層ごとにI/O頻度に基づく適性条件が設定され、
    前記階層制御において、前記上位ノードの前記プロセッサは、前記格納領域が現階層における前記適性条件を満たしているか確認し、現階層における前記適性条件を満たしていない前記格納領域が存在した場合は、当該格納領域のデータを前記適性条件に合う別の前記階層にコピーする
    ことを特徴とする請求項1に記載のストレージシステム。
  6. 前記階層制御において、前記上位ノードの前記プロセッサは、現階層における前記適性条件を満たしていない前記格納領域のデータを前記適性条件に合う別の前記階層にコピーした後、コピー元のデータを削除する
    ことを特徴とする請求項5に記載のストレージシステム。
  7. 前記ストレージクラスタに追加する前記ノードが、所定基準を下回る低性能な前記ストレージデバイスを有する場合、当該ノードには前記下位の前記属性が指定される
    ことを特徴とする請求項4に記載のストレージシステム。
  8. 前記ストレージクラスタに追加する前記ノードが、前記フロントエンドI/O処理を実行するために必要なインターフェースを有しておらず、前記バックエンドI/O処理を実行するために必要なインターフェースを有している場合には、当該ノードには前記下位の前記属性が指定される
    ことを特徴とする請求項4に記載のストレージシステム。
  9. 管理用の最上位の前記属性が指定された前記ノードにおいて、前記メモリは、前記複数のノードの全ノードに関するリソースの管理情報を保持する一方、
    上位または下位の前記属性が指定された前記ノードにおいて、前記メモリは、自ノードに関するリソースの管理情報を保持する
    ことを特徴とする請求項1に記載のストレージシステム。
  10. 複数のノードによってストレージクラスタを構成するストレージシステムによるノード管理方法であって、
    前記ストレージシステムは、データを格納するストレージデバイスと、メモリと、ストレージデバイスへI/O処理を行うためのプログラムを稼働させるプロセッサと、を有し、
    前記ノードは、第1の属性のノードと、第2の属性のノードと、に属性が指定され、
    前記ノードにおけるI/O処理は、いずれかの前記第1の属性のノードが実行するフロントエンドI/O処理と、I/O処理にかかるデータを格納する前記ストレージデバイスを有する前記第1及び前記第2の属性のノードが実行するバックエンドI/O処理と、を含む複数の処理として実行され、
    前記第1の属性のノードは上位の前記属性が指定された上位ノードであり、前記第2の属性のノードは下位の前記属性が指定された下位ノードであり、前記上位ノードには管理用の管理ノードが含まれ、
    前記管理ノードが、前記下位ノードの前記ストレージデバイスへの前記I/O処理において前記フロントエンドI/O処理を担当する前記上位ノードを指定し、
    さらに、前記ストレージクラスタから提供されるストレージプールは、I/O頻度が比較的高いデータを格納するための高階層と、I/O頻度が比較的低いデータを格納するための低階層と、を含む複数段階の階層に分割して管理され、
    前記上位ノードの前記プロセッサは、各前記ノードのストレージデバイスが前記ストレージプールに提供するデータの格納領域を前記ストレージプールの何れの階層で扱うかを、各前記ノードの前記属性に応じて制御する階層制御を実行する
    ことを特徴とするノード管理方法。
  11. 前記ストレージプールの前記階層ごとにI/O頻度に基づく適性条件が設定され、
    前記階層制御において、前記上位ノードの前記プロセッサは、前記格納領域が現階層における前記適性条件を満たしているか確認し、現階層における前記適性条件を満たしていない前記格納領域が存在した場合は、当該格納領域のデータを前記適性条件に合う別の前記階層にコピーする
    ことを特徴とする請求項1に記載のノード管理方法。
JP2019139222A 2019-07-29 2019-07-29 ストレージシステム及びノード管理方法 Active JP7050034B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019139222A JP7050034B2 (ja) 2019-07-29 2019-07-29 ストレージシステム及びノード管理方法
CN202010110317.6A CN112306389A (zh) 2019-07-29 2020-02-21 存储系统和节点管理方法
US16/810,128 US11237746B2 (en) 2019-07-29 2020-03-05 Storage system and node management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019139222A JP7050034B2 (ja) 2019-07-29 2019-07-29 ストレージシステム及びノード管理方法

Publications (2)

Publication Number Publication Date
JP2021022241A JP2021022241A (ja) 2021-02-18
JP7050034B2 true JP7050034B2 (ja) 2022-04-07

Family

ID=74258575

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019139222A Active JP7050034B2 (ja) 2019-07-29 2019-07-29 ストレージシステム及びノード管理方法

Country Status (3)

Country Link
US (1) US11237746B2 (ja)
JP (1) JP7050034B2 (ja)
CN (1) CN112306389A (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
US11449234B1 (en) * 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003063423A1 (en) 2002-01-24 2003-07-31 University Of Southern California Pseudorandom data storage

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6820171B1 (en) * 2000-06-30 2004-11-16 Lsi Logic Corporation Methods and structures for an extensible RAID storage architecture
US7571154B2 (en) * 2005-01-31 2009-08-04 Cassatt Corporation Autonomic control of a distributed computing system using an application matrix to control application deployment
US8356147B2 (en) * 2010-08-20 2013-01-15 Hitachi, Ltd. Tiered storage pool management and control for loosely coupled multiple storage environment
US9077580B1 (en) * 2012-04-09 2015-07-07 Symantec Corporation Selecting preferred nodes for specific functional roles in a cluster
WO2013165382A1 (en) * 2012-04-30 2013-11-07 Hewlett-Packard Development Company, L.P. Block level storage
US9477427B2 (en) * 2014-09-19 2016-10-25 Vmware, Inc. Storage tiering based on virtual machine operations and virtual volume type
US9910742B1 (en) * 2015-03-31 2018-03-06 EMC IP Holding Company LLC System comprising front-end and back-end storage tiers, data mover modules and associated metadata warehouse
US10430723B1 (en) * 2015-09-29 2019-10-01 EMC IP Holding Company LLC Storage system with machine learning based skew prediction
JP6668309B2 (ja) * 2017-11-30 2020-03-18 株式会社日立製作所 記憶システム及びその制御方法
JP6751111B2 (ja) * 2018-04-26 2020-09-02 株式会社日立製作所 ストレージシステム、ストレージシステムの制御方法及び管理ノード

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003063423A1 (en) 2002-01-24 2003-07-31 University Of Southern California Pseudorandom data storage

Also Published As

Publication number Publication date
US11237746B2 (en) 2022-02-01
JP2021022241A (ja) 2021-02-18
US20210034268A1 (en) 2021-02-04
CN112306389A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
JP7050034B2 (ja) ストレージシステム及びノード管理方法
EP2652586B1 (en) Information storage system and storage system management method
WO2012077162A1 (en) Storage apparatus
JP5341184B2 (ja) ストレージシステム及びストレージシステムの運用方法
JP5303066B2 (ja) プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置
JP5250869B2 (ja) ストレージシステム、論理記憶領域割り当て方法及び計算機システム
US8001355B2 (en) Storage system, volume allocation method and management apparatus
WO2012147123A1 (en) Storage apparatus and control method therefor
JP5391277B2 (ja) ストレージシステム及びストレージシステムの処理効率向上方法
US20080098086A1 (en) File Distribution System in Which Partial Files Are Arranged According to Various Allocation Rules Associated with a Plurality of File Types
WO2014155555A1 (ja) 管理システム及び管理プログラム
JP2002259172A (ja) 情報処理システム
JP5547814B2 (ja) 計算機システム、仮想サーバへのボリューム割り当て方法及び計算機読み取り可能な記憶媒体
JP6772202B2 (ja) ストレージシステム及び記憶制御方法
JP6272556B2 (ja) 共有リソース更新装置及び共有リソース更新方法
JP2016503522A (ja) ストレージシステム、ストレージシステムの制御方法及び管理システム
JP7253007B2 (ja) ストレージシステム
JP6019169B2 (ja) 情報記憶システム
JP6643524B2 (ja) ストレージシステム及び記憶制御方法
JP2021174153A (ja) ストレージシステムとその制御方法
WO2018167950A1 (ja) ストレージシステム及び複製制御方法
JP2023094302A (ja) 情報処理システム及び構成管理方法
JP2024021351A (ja) データ取得装置、データ取得方法、及びデータ取得プログラム
CN110955487A (zh) Hci环境下的vm/容器和卷配置决定方法及存储系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200304

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220225

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220328

R150 Certificate of patent or registration of utility model

Ref document number: 7050034

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150