JP6858812B2 - ストレージ制御システム及び方法 - Google Patents

ストレージ制御システム及び方法 Download PDF

Info

Publication number
JP6858812B2
JP6858812B2 JP2019137830A JP2019137830A JP6858812B2 JP 6858812 B2 JP6858812 B2 JP 6858812B2 JP 2019137830 A JP2019137830 A JP 2019137830A JP 2019137830 A JP2019137830 A JP 2019137830A JP 6858812 B2 JP6858812 B2 JP 6858812B2
Authority
JP
Japan
Prior art keywords
storage
chunk
node
transfer rate
group
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
JP2019137830A
Other languages
English (en)
Other versions
JP2021022121A (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 JP2019137830A priority Critical patent/JP6858812B2/ja
Priority to US16/813,896 priority patent/US20210026566A1/en
Priority to CN202010172692.3A priority patent/CN112306390B/zh
Publication of JP2021022121A publication Critical patent/JP2021022121A/ja
Application granted granted Critical
Publication of JP6858812B2 publication Critical patent/JP6858812B2/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/064Management of blocks
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Landscapes

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

Description

本発明は、概して、複数のストレージノードで構成されるノード群のストレージ制御に関する。
各汎用計算機が、SDS(Software Defined Storage)ソフトウェアを実行することでストレージノードとなり、結果として、ノード群(別の言い方をすれば、マルチノードストレージシステム)の一例としてのSDSシステムが構築されることがある。
SDSシステムは、ストレージシステムの一例である。ストレージシステムの書込み性能の低下を回避する技術として、例えば、特許文献1に開示の技術が知られている。特許文献1に開示のシステムは、ストライピングの単位であるチャンクについて、書き込みアクセス対象のチャンクの割り当て元の記憶媒体の書き込みデータ量を基に、書き込みアクセス対象のチャンクを、別の記憶媒体のチャンクに変更する。特許文献1によれば、書き込み先のチャンクを変更することで、書込み性能の低下の回避が図られる。
特開2017−199043号公報
SDSシステムの構成は、例えば以下の通りである。なお、以下の説明において、「ストレージノード」を単に「ノード」と言う。
・複数のノードに複数の記憶デバイスが接続される。
・各記憶デバイスは、いずれかのノードに接続され、二つ以上のノードには接続されない。
・SDSシステムがライト要求を受信した場合、いずれかのノードが、ライト要求に付随するデータを冗長化し、異なる二つ以上のノードに接続されている二つ以上の記憶デバイスに、冗長化されたデータを書き込み、当該二つ以上の記憶デバイスに対する書込みが完了した場合に、ライト要求の完了を応答する。
このようなSDSシステムでは、冗長化されたデータの書込み先である二つ以上の記憶デバイスの転送速度が異なっていると、ライト要求の完了の応答は、転送速度が最も遅い記憶デバイスに依存することになる。このため、当該二つ以上の記憶デバイスの転送速度が同じであることが望ましい。
しかし、ノードと記憶デバイス間の転送速度は、ノードと記憶デバイス間の接続状況に応じて決まることがあり、結果として、記憶デバイスの仕様上の転送速度と異なることがある。このため、書込み先の二つ以上の記憶デバイスの転送速度が同じであることを維持することは難しい。
このような問題は、SDSシステム以外のノード群(マルチノードストレージシステム)についてもあり得る。
少なくとも一つのノードは、複数のノードに接続された複数の記憶デバイスに基づく複数のチャンク(複数の論理記憶領域)を管理する。ライト要求を処理するノードは、ライト先が属するライト先領域に割り当てられたチャンクグループを構成する二つ以上のチャンクの基になっている二つ以上の記憶デバイスに、冗長化されたデータを書き込み、当該二つ以上の記憶デバイスに対する書込みが完了した場合に、ライト要求の完了を応答するようになっている。チャンクグループは、二つ以上のノードに接続された二つ以上の記憶デバイスに基づく二つ以上のチャンクで構成される。各ノードが、当該ノードに接続された記憶デバイス毎に、当該ノードと当該記憶デバイス間のリンク確立において決められた転送速度を表す情報を含み当該ノードのOS(Operating System)により取得されたデバイス構成情報から、当該記憶デバイスの転送速度を特定する。各チャンクには、当該チャンクの基になっている記憶デバイスが接続されたノードにより特定された転送速度が関連付けられる。上記少なくとも一つのノードが、各チャンクグループについて、当該チャンクグループを構成する二つ以上のチャンクを、同じ転送速度が関連付いた二つ以上のチャンクに維持する。
ノード群の書込み性能の低下を避けることができる。
上記した以外の課題、構成及び効果は、発明を実施するための形態の以下の説明により明らかにされる。
本発明の一実施形態に係るシステム全体の構成を示す。 ドライブ接続処理の概要を示す。 プール拡張処理の概要を示す。 管理テーブル群の構成の一部を示す。 管理テーブル群の構成の残りを示す。 ライト処理の概要を示す。 チャンクとチャンクグループの関係の一例を示す。 ランクグループとチャンクとチャンクグループの関係の一例を示す。 ドライブ接続からチャンクグループ作成までの処理の流れを示す。 チャンクグループの再構成処理の概要を示す。 チャンクグループの再構成処理の流れを示す。 管理者向け情報の表示の一例を示す。
以下の説明では、「インターフェース装置」は、一つ以上の通信インターフェースデバイスでよい。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVMe(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)でよい。
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし(例えば、構造化データでもよいし非構造化データでもよいし)、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
また、以下の説明では、「kkk部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてもよいし、一つ以上のハードウェア回路(例えばFPGA又はASIC)によって実現されてもよいし、それらの組合せによって実現されてもよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び/又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
また、以下の説明では、「ストレージシステム」は、それぞれが記憶装置を有する複数のストレージノードを備えたマルチノード構成のノード群(例えば分散システム)を含む。各ストレージノードは、一つ以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループを備えてもよいが、典型的には、汎用の計算機でよい。一つ以上の計算機の各々が所定のソフトウェアを実行することにより、当該一つ以上の計算機がSDx(Software-Defined anything)として構築されてよい。SDxとしては、例えば、SDS(Software Defined Storage)又はSDDC(Software-defined Datacenter)を採用することができる。例えば、ストレージ機能を有するソフトウェアが一つ以上の汎用の計算機の各々で実行されることにより、SDSとしてのストレージシステムが構築されてよい。また、一つのストレージノードが、ホスト計算機としての仮想的な計算機と、ストレージシステムのコントローラとしての仮想的な計算機とを実行してもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別して説明する場合には、参照符号を使用することがある。例えば、ドライブを特に区別しないで説明する場合には、「ドライブ10」と記載し、個々のドライブを区別して説明する場合には、「ドライブ10A1」、「ドライブ10A2」のように記載したり「ドライブ10A」、「ドライブ10B」のように記載したりすることがある。
また、以下の説明では、ドライブとノード間の接続に関し、論理的な接続については「リンク」と呼ぶこととする。
以下、一実施形態を詳細に説明する。
図1は、本実施形態に係るシステム全体の構成を示す図である。
複数のノード20(例えば、ノード20A〜20C)で構成されたノード群(マルチノードストレージシステム)100がある。各ノード(ストレージノード)20には、一つ以上のドライブ10が接続される。例えば、ノード20Aには、ドライブ10A1及び10A2が接続されており、ノード20Bには、ドライブ10B1及び10B2が接続されており、ノード20Cには、ドライブ10C1及び10C2が接続されている。ドライブ10は、永続記憶デバイスの一例である。各ドライブ10は、いずれかのノード20に接続され、二つ以上のノード20には接続されない。
複数のノード20が、共通のプール30を管理する。プール30は、複数のノード20に接続された複数のドライブ10に基づく複数のチャンク(複数の論理記憶領域)の少なくとも一部のチャンクで構成されている。プール30は、複数あってもよい。
複数のノード20が、一つ以上のボリューム40(例えば、ボリューム40A〜40C)を提供する。ボリューム40が、当該ボリューム40を指定したI/O(Input/Output)要求の発行元の一例であるホストシステム50に認識される。ホストシステム50は、ネットワーク29を介してノード群100にライト要求を発行する。ライト要求では、ライト先(例えば、ボリュームID及びLBA(Logical Block Address))が指定される。ホストシステム50は、一つ以上の物理的又は仮想的なホスト計算機でよい。ホストシステム50は、ノード群100の外に代えて、少なくとも一つのノード20内で実行される仮想的な計算機でもよい。各ボリューム40が、プール30に関連付けられる。ボリューム40は、例えば、複数の仮想領域(仮想的な記憶領域)で構成されており容量仮想化技術(典型的にはThin Provisioning)に従うボリュームでよい。
各ノード20は、当該ノード20以外の各ノード20と、ネットワーク28を介して通信可能である。例えば、各ノード20は、受信したライト要求で指定されているライト先が属するボリューム40のオーナ権を、当該ノード20とは別のノード20が有しいる場合、当該ライト要求を、当該別のノード20に、ネットワーク28を介して転送してもよい。ネットワーク28は、各ノード20とホストシステム50が接続されるネットワーク(例えば、フロントエンドのネットワーク)29でもよいが、図示のように、ホストシステム50が接続されないネットワーク(例えば、バックエンドのネットワーク)でもよい。
各ノード20が、FE−I/F(フロントエンドインターフェースデバイス)21、ドライブI/F(ドライブインターフェースデバイス)22、BE−I/F(バックエンドインターフェースデバイス)25、メモリ23及びそれらに接続されたプロセッサ24を有する。FE−I/F21、ドライブI/F22及びBE−I/F25は、インターフェース装置の一例である。FE−I/F21は、ネットワーク29を介してホストシステム50に接続される。ドライブI/F22には、ドライブ10が接続される。BE−I/F22には、ネットワーク28を介して当該ノード20以外の各ノード20が接続される。メモリ23が、プログラム群231(複数のプログラム)と、管理テーブル群232(複数の管理テーブル)とを格納する。プログラム群231がプロセッサ24により実行される。プログラム群231は、OS(Operating System)とストレージ制御プログラム(例えばSDSソフトウェア)とを含む。ストレージ制御プログラムがプロセッサ24により実行されることで、ストレージ制御部70が実現される。管理テーブル群232の少なくとも一部は、ノード間20で同期されてよい。
複数のノード20でそれぞれ実現される複数のストレージ制御部70(例えば、ストレージ制御部70A〜70C)が、ストレージ制御システム110を構成する。ライト要求を受けたノード20のストレージ制御部70が、当該ライト要求を処理する。当該ノード20は、ライト要求を、いずれのノード20を介さずに受信してもよいし、当該ライト要求で指定されているライト先が属するボリューム40のオーナ権を当該ノード20が有しているが故にいずれかのノード20から受信してもよい(ライト要求の転送を受けてもよい)。当該ストレージ制御部70は、受信したライト要求で指定されているライト先が属するライト先領域(ライト先の仮想領域)に、プール30からチャンクを割り当てる。チャンクの割当てを含むライト処理の詳細は後述する。
図1のノード群100は、一つ以上のクラスタで構成されてよい。各クラスタが、二つ以上のノード20で構成されてよい。各クラスタには、アクティブのノードと、アクティブのノードが停止する場合にアクティブのノードに代わって起動するスタンバイのノードとが含まれてよい。
また、ノード群100における少なくとも一つのノード20には、ネットワーク27を介して管理システム81が接続されてよい。管理システム81は、一つ以上の計算機でよい。管理システム81において所定のプログラムが実行されることで管理システム81において管理部88が実現されてよい。管理部88が、ノード群100を管理してよい。ネットワーク27は、ネットワーク29でもよい。管理部88は、管理システム81に代えて、いずれかのノード20に備えられてもよい。
図2は、ドライブ接続処理の概要を示す。
ストレージ制御部70は、I/O処理部71と制御処理部72とを含む。
I/O処理部71は、I/O(Input/Output)要求に従うI/Oを行う。
制御処理部72は、ノード20間でプール管理を行う。制御処理部72は、REST(Representational State Transfer)サーバ部721、クラスタ制御部722及びノード制御部723を含む。RESTサーバ部721は、ホストシステム50又は管理システム81からプール拡張の指示を受け付ける。クラスタ制御部722は、ノード間20で共有されるプール30を管理する。ノード制御部723は、ノード20に接続されたドライブ10を検知する。
ノード20にドライブ10が接続された場合に、以下のドライブ接続処理が行われる。
まず、ノード20における図示しないドライバ(接続されたドライブ10のドライバ)と、ノード20に接続されたドライブ10間で、リンク確立のための通信が行われる(ドライバはOS95に含まれてもよい)。その通信において、ドライバとドライブ10間で、ドライブ10の転送速度が決定される。例えば、選択可能な複数の転送速度のうち、ドライブ10の状況等に応じた転送速度が選択される。リンク確立において決定された転送速度は、最大転送速度のような固定の転送速度である。例えば、リンク確立後は、決定された転送速度以下の速度で、ノード20とドライブ10間で通信が行われる。
決定された転送速度を表す情報が、ドライブ10のドライブ構成情報に含まれる。ドライブ構成情報は、転送速度の他、ドライブ10の種別(例えば規格)及び容量を表す情報を含む。OS95が、ドライブ構成情報を含むファイルである構成ファイル11を管理する。
ノード制御部723が、周期的に、OS95が管理する領域のうちの所定の領域12(例えば、接続されたドライブ10の構成ファイル11が格納される領域(例えばディレクトリ))をチェックする。新たな構成ファイル11が検知された場合、ノード制御部723が、新たな構成ファイル11をOS95(OS95が管理する所定の領域12)から取得し、取得した構成ファイル11をクラスタ制御部722に渡す。
クラスタ制御部722が、ノード制御部723から渡された構成ファイル11から、当該構成ファイル11が含むドライブ構成情報の少なくとも一部を、管理テーブル群232に登録する。これにより、接続されたドライブ10に基づく論理空間13が、ノード20間で共有される。
以上のようなドライブ接続処理が、接続されたドライブ10毎に行われ、結果として、接続された各ドライブ10と、ドライブ10毎の転送速度が、ノード20間で共有される。なお、図2において、ドライブ10a、10b及び10cは、構成ファイル11a、11b及び11cとそれぞれ対応し、構成ファイル11a、11b及び11cは、論理空間13a、13b及び13cとそれぞれ対応する。
図3は、プール拡張処理の概要を示す。
RESTサーバ部721が、ホストシステム50又は管理システム81からプール拡張の指示を受け付けた場合に、プール拡張をクラスタ制御部722に指示する。この指示に応答して、クラスタ制御部722により、以下のプール拡張処理が行われる。
すなわち、クラスタ制御部722は、管理テーブル群232を参照し、未分割の論理空間13(二つ以上のチャンク14に分割されていない論理空間13)の有無を判断する。クラスタ制御部722は、未分割の論理空間13があれば、当該論理空間13を、一つ以上のチャンク14に分割し、当該一つ以上のチャンク14のうちの少なくとも一部をプール30に追加する。チャンク14の容量は、所定の容量である。チャンク14の容量は可変でもよいが、本実施形態では固定である。チャンク14の容量は、プール30によって異なってもよい。プール30に含まれないチャンク14は、例えば、空きチャンク14として管理されてよい。図3の例によれば、論理空間13aを構成するチャンク14a1及び14a2と、論理空間13bを構成するチャンク14b1及び14b2と、論理空間13cを構成するチャンク14c1及び14c2が、プール30に含まれる。
なお、プール拡張処理は、ホストシステム50又は管理システム81からの指示無しに自動的に開始されてもよい。例えば、クラスタ制御部722が、ノード20に新たにドライブ10が接続されたことが検知した場合に(具体的には、新たな構成ファイル11をノード制御部723から受けた場合に)、プール拡張処理を行ってよい。また、例えば、ホストシステム50からのI/O要求が無い等、ノード20の負荷が小さい場合に、プール拡張処理が行われてもよい。
図4及び図5は、管理テーブル群232の構成を示す。
管理テーブル群232は、ノード管理テーブル401、プール管理テーブル402、ランクグループ管理テーブル403、チャンクグループ管理テーブル404、チャンク管理テーブル405及びドライブ管理テーブル406を含む。
ノード管理テーブル401は、Node_ID501のリストである。Node_ID501は、ノード20のIDを表す。
プール管理テーブル402は、Pool_ID511のリストである。Pool_ID511は、プール30のIDを表す。
ランクグループ管理テーブル403は、ランクグループ毎にレコードを有する。各レコードは、RankGroup_ID521、Pool_ID522、Count523といった情報を含む。一つのランクグループを例に取る(この段落で「対象ランクグループ」)。RankGroup_ID521は、対象ランクグループのIDを表す。Pool_ID522は、対象ランクグループが属するプール30のIDを表す。Count523は、対象ランクグループに属するチャンクグループ(又はチャンク14)の数を表す。なお、「ランクグループ」とは、同一の転送速度が関連付けられたチャンク14が属するグループである。つまり、チャンク14に関連付く転送速度が違えば、当該チャンクが属するランクグループが違う。
チャンクグループ管理テーブル404は、チャンクグループ毎にレコードを有する。各レコードは、ChunkGroup_ID531、Chunk1_ID532、Chunk533、Status534及びAllocation535といった情報を含む。一つのチャンクグループを例に取る(この段落で「対象チャンクグループ」)。ChunkGroup_ID531は、対象チャンクグループのIDを表す。Chunk1_ID532は、対象チャンクグループが属する二つのチャンク14のうちの第1のチャンク14のIDを表す。Chunk2_ID532は、対象チャンクグループが属する二つのチャンク14のうちの第2のチャンク14のIDを表す。Status534は、対象チャンクグループのステータス(例えば、対象チャンクグループ(或いは、対象チャンクグループのうちの第1のチャンク14)がいずれかのボリューム40に割り当て済であるか否か)を表す。Allocation535は、対象チャンクグループがいずれかのボリューム40に割り当てられている場合、対象チャンクグループの割当先(例えば、ボリュームIDとLBA)を表す。なお、「チャンクグループ」とは、異なる二つのノード20に接続されている二つのドライブ10に基づく二つのチャンク14のグループである。本実施形態では、チャンクグループを構成するチャンク14は二つであるが、異なる三つ以上のノード20に接続されている三つ以上のドライブ10に基づく三つ以上のチャンク14(例えば、三つ以上のドライブ10で構成されたRAIDグループのストライプを構成する三つ以上のチャンク14)が一つのチャンクグループを構成してもよい。
チャンク管理テーブル405は、チャンク毎にレコードを有する。各レコードは、Chunk_ID541、Drive_ID542、Node_ID543、RankGroup_ID544及びCapacity545といった情報を含む。一つのチャンク14を例に取る(この段落で「対象チャンク14」)。Chunk_ID541は、対象チャンク14のIDを表す。Drive_ID542は、対象チャンク14の基になっているドライブ10のIDを表す。Node_ID543は、対象チャンク14の基になっているドライブ10が接続されているノード20のIDを表す。RankGroup_ID544は、対象チャンク14が属するランクグループのIDを表す。Capacity545は、対象チャンク14の容量を表す。
ドライブ管理テーブル406は、ドライブ10毎にレコードを有する。各レコードは、Drive_ID551、Node_ID552、Type553、LinkRate554、Lane555及びStatus556といった情報を含む。一つのドライブ10を例に取る(この段落で「対象ドライブ10」)。Drive_ID551は、対象ドライブ10のIDを表す。Node_ID552は、対象ドライブ10が接続されているノード20のIDを表す。Type553は、対象ドライブ10の種別(規格)を表す。LinkRate554は、対象ドライブ10の1レーンあたりのリンクレート(速度)を表す。Lane555は、対象ドライブ10とノード20間のレーンの数を表す。Status556は、対象ドライブ10のステータス(例えば、対象ドライブ10に基づく論理空間13が二つ以上のチャンク14に分割済か否か)を表す。
対象ドライブ10のリンクレートが、対象ドライブ10とドライバ(OS95)間のリンク確立のための通信において決定される。対象ドライブ10の転送速度は、LinkRate554とLane555とに従う。Lane555は、例えば、対象ドライブ10がNVMeドライブの場合に有効である。
以上が、管理テーブル群232に含まれるテーブルの一例である。図示しないが、管理テーブル群232は、ボリューム管理テーブルを含んでよい。ボリューム管理テーブルは、ボリューム40毎に、各仮想領域について、LBA範囲と、チャンク14が割り当て済か否かとを表す情報を含んでよい。
図6は、ライト処理の概要を示す。
ボリューム40には、例えば当該ボリューム40が作成されたときに、一つ以上のチャンクグループが割り当てられている。例えば、チャンク14の容量が100GBである場合、二つのチャンク14で構成されるチャンクグループの容量は200GBである。しかし、データが二重化されてチャンクグループに書き込まれるので、チャンクグループに書き込み可能なデータの容量は100GBである。このため、ボリューム40の容量が200GBの場合、二つの未割当のチャンクグループ(例えば、Allocation535の値が“−”のチャンクグループ)が割り当てられることになる。
ボリューム40AにおけるLBAが指定されたライト要求をホストシステム50からノード20Aが受信したとする。また、ボリューム40Aのオーナ権をノード20Aが有しているとする。
ノード20Aのストレージ制御部70Aが、ライト要求に付随するデータを二重化する。ストレージ制御部70Aが、チャンクグループ管理テーブル404を参照して、ライト要求で指定されているLBAが属するライト先領域に割り当てられているチャンクグループを特定する。
特定されたチャンクグループが、ドライブ10A1に基づくチャンク14A1と、ドライブ10B1に基づくチャンク14B1で構成されているとする。ストレージ制御部70Aは、二重化されたデータを、特定されたチャンクグループを構成するチャンク14A1及び14B1に書き込む。すなわち、データが、ドライブ10A1及び10B1にそれぞれ書き込まれる。
ストレージ制御部70Aは、チャンク14A1及び14B1(ドライブ10A1及び10B1)に対する書込みが完了した場合に、ライト要求の完了を、ライト要求の送信元であるホストシステム50に応答する。
なお、ライト処理は、ストレージ制御部70のうちのI/O処理部71によって行われてもよい。
図7は、チャンクとチャンクグループの関係の一例を示す。
複数のチャンク14のうちの少なくとも一部のチャンク14は、複数のチャンクグループ701を構成する。各チャンクグループ701は、二つノード20に接続された二つのドライブ10に基づく二つのチャンク14で構成される。チャンクグループ701が、同一のノード20に接続されている二つチャンク14で構成されると、当該ノード20が障害等の理由で停止した場合(例えば、当該ノード20がアクティブからスタンバイの状態になった場合)、いずれのチャンク14に対してもI/Oが不可となってしまうためである。
また、一つのノード20に接続された二つ以上のドライブ10の転送速度は、同一とは限らない。たとえ、ノード20に接続された全てのドライブ10が、同一ベンダ、同一容量及び同一種類のドライブ10であったとしても、すなわち、仕様上は転送速度(例えば、最大転送速度)が同一のドライブ10であったとしても、ノード20とドライブ10間の転送速度は異なることがある。なぜなら、ノード20とドライブ10間のリンク確立のための通信において決定される転送速度は、ノード20とドライブ10間の通信状況等によって異なり得るからである。例えば、図7に例示の通り、ノード20Aには、転送速度が“12Gbps”であるドライブ10A1と、転送速度が“6Gbps”であるドライブ10A2とが接続されることがある。同様に、ノード20Bにも、転送速度が“12Gbps”であるドライブ10B1と、転送速度が“6Gbps”であるドライブ10B2とが接続されることがある。より具体的には、下記の例がある。
・ドライブ10が、SAS(Serial Attached SCSI)ドライブの場合、ノード20とドライブ10間の転送速度として複数の転送速度のうちのいずれかの転送速度がリンク確立の通信において選択されるが、選択される転送速度は、ドライブ10の種別(例えば、SSDであるかHDDであるか)と状況(例えば、負荷状況や通信状況)とのうちの少なくとも一つによって異なる。
・ドライブ10が、NVMeドライブの場合、ノード20とドライブ10間の転送速度は、ノード20とドライブ10間のレーンの数と、1レーンあたりのリンクレートとによって決まる。レーン数は、ドライブ種別によって異なる。また、1レーンあたりのリンクレートは、ドライブ10の種別と状況とのうちの少なくとも一つによって異なる。
このような環境において、二重化されたデータの書込み先となる二つのチャンク14、異なる転送速度の二つのドライブ10に基づくチャンクであると、書込みの性能は、転送速度が遅いドライブ10に依存してしまう。
そこで、本実施形態では、上述したように、各ノード20において、ストレージ制御部70が、当該ノード20に接続されたドライブ10毎に、当該ノード20と当該ドライブ10間で決められた転送速度を表す情報を含みOS95により取得されたデバイス構成情報から、当該ドライブ10の転送速度を特定し、当該ドライブ10に基づくチャンク14に、当該転送速度を関連付ける。そして、少なくとも一つのノード20(例えばマスタのノード20)におけるストレージ制御部70が、同じ転送速度が関連付いた二つチャンク14で一つのチャンクグループ701を構成する。一つのチャンク14が、異なるチャンクグループ701に含まれることはない。図7の例によれば、結果として、下記の通りである。
・チャンクグループ701Aは、転送速度が“12Gbps”のドライブ10A1及び10B1に基づくチャンク14A11及び14B11で構成される。同様に、チャンクグループ701Bは、転送速度が“12Gbps”のドライブ10A1及び10B1に基づくチャンク14A12及び14B12で構成される。
・チャンクグループ701Cは、転送速度が“6Gbps”のドライブ10A2及び10B2に基づくチャンク14A21及び14B21で構成される。同様に、チャンクグループ701Dは、転送速度が“6Gbps”のドライブ10A2及び10B2に基づくチャンク14A22及び14B22で構成される。
これにより、二重化されたデータの書込み先となる二つのチャンク14の転送速度が同一であることが保証され、以って、転送速度の違いによるライト性能低下(ライト要求に対する応答の遅延)を避けることができる。なお、チャンクグループ701を構成する二つのチャンク14は、転送速度が同じであることに加えて、基になる二つのドライブ10のドライブ種別が同じであることであってもよい。また、全てのチャンクグループ701について、チャンク数が同じでなくてもよい。チャンクグループ701を構成するチャンク14の数は、冗長化のレベルによって異なってもよい。例えば、RAID5が適用されたチャンクグループ701は、三つ以上のNVMeドライブに基づく三つ以上のチャンクで構成されてもよい。
図8は、ランクグループ86とチャンク14とチャンクグループ701の関係の一例を示す。
プール30を構成するチャンク14の基になっているドライブ10について決定された転送速度が、“12Gbps”と“6Gbps”のいずれかであるとする。この場合、ランクグループ86として、転送速度“12Gbps”のドライブ10に基づくチャンク14が属するランクグループ86Aと、転送速度“6Gbps”のドライブ10に基づくチャンク14が属するランクグループ86Bとがある。図7に例示の構成によれば、図8に例示の構成の通りである。すなわち、ランクグループ86Aには、ドライブ10A1に基づくチャンク14A11及び14A12と、ドライブ10B1に基づくチャンク14B11及び14B12とが属する。ランクグループ86Bには、ドライブ10A2に基づくチャンク14A21及び14A22と、ドライブ10B2に基づくチャンク14B21及び14B22とが属する。更に、ノード20Bにドライブ10B3が接続され、ノード20Bとドライブ10B3間の転送速度が“12Gbps”と決定されたならば、ドライブ10B3に基づくチャンク14B31が、ランクグループ86Aに追加される。なお、追加されたチャンク14B31は、いずれのチャンクグループ701を構成しない予備チャンクであるとする。予備チャンクは、いずれのボリューム40にも割り当てられ得ないとする。チャンク14B31は、いずれかのチャンクグループ701の構成要素とされた場合に、ボリューム40に割り当てられ得るチャンクになるとする。
図9は、ドライブ接続からチャンクグループ作成までの処理の流れを示す。
いずれかのノード20に一つ以上のドライブ10が接続されたとする(S11)。OS95が、接続された一つ以上のドライブ10にそれぞれ対応した一つ以上の構成ファイル11を、所定の領域12に追加する(図2参照)。ノード制御部723が、所定の領域12から、追加された一つ以上の構成ファイル11を取得し、取得した一つ以上の構成ファイル11をクラスタ制御部722に渡す。
クラスタ制御部722が、接続された一つ以上のドライブ10(ノード制御部723から受けた一つ以上の構成ファイル11)の各々について、構成ファイル11からドライブ構成情報を取得し(S12)、取得したドライブ構成情報を管理テーブル群232に登録する。これにより、ドライブ10毎に、ドライブ管理テーブル406にレコードが追加される。レコードのうち、情報553〜555が、ドライブ構成情報に含まれている情報であり、情報551、552及び556は、クラスタ制御部722により決定された情報である。
その後、クラスタ制御部722が、プール拡張処理を行う(S14)。具体的には、クラスタ制御部722は、上記接続された一つ以上のドライブ10に基づく一つ以上の論理空間13(図2及び図3参照)の各々を複数のチャンク14に分割し(S21)、各チャンク14に関する情報を管理テーブル群232に登録する(S22)。これにより、チャンク14毎に、チャンク管理テーブル405にレコードが追加される。結果として、各チャンク14に、当該チャンク14の基になっているドライブ10の転送速度が関連付く。具体的には、各チャンク14について、Drive_ID542が登録され、Drive_ID542と一致するDrive_ID551には、転送速度を表す情報554及び555が関連付いている。
最後に、クラスタ制御部722が、複数のチャンクグループ701を作成する(S15)。各チャンクグループ701は、転送速度が同じ二つのチャンク14で構成される。なお、チャンクグループ701の構成要素とされた各チャンク14について、Status534が、チャンクグループ701の構成要素とされていることを表す値に更新される。チャンクグループ701の構成要素とされていないチャンク14は、予備のチャンク14として管理されてよい。
なお、「転送速度が同じ」とは、転送速度が完全一致することに限らず、転送速度が許容範囲(同じとみなせる範囲)で異なっていることを含んでよい。
図10は、チャンクグループ701の再構成処理の概要を示す。
ドライブ10のリンクが一旦切断されて再度確立することがある。リンクの再確立は、ホストシステム50又は管理システム81からの明示的な指示に応答して行われてもよいし、ドライブ10へのデータ転送の失敗を契機に自動で行われてもよい。リンクの再確立においても、ドライブ10とノード20間でドライブ10の転送速度が決定される。決定された転送速度は、当該ドライブ10について直前回のリンク確立において決定された転送速度と異なること、つまり、ドライブ10の転送速度が途中で変わることがある。
このため、結果として、少なくとも一つのチャンクグループ701において、二つのチャンク14に関連付く転送速度が異なることがある。例えば、図8に例示の構成において、ドライブ10A2の転送速度が“6Gbps”から“12Gbps”に変わった場合、ドライブ10A2に基づくチャンク14A21及び14A22の各々に関連付く転送速度も、“6Gbps”から“12Gbps”に変わる。
図10が示す例は、チャンク14A22に着目した例である。チャンク14A22に関連付く転送速度が“12Gbps”になったため、図10に示す通り、チャンク14A22が属するランクグループ86は、ランクグループ86Bからランクグループ86Aに変わる。
このままであると、チャンクグループ701Dにおいて、チャンク14B22の転送速度は、チャンク14A22の転送速度と異なる。このため、チャンクグループ701Dに対する書込みの性能が低下する。
そこで、本実施形態では、ノード20Bのストレージ制御部70Bが、転送速度“12Gbps”の空きチャンク14B31を見つけ、そのチャンク14B31に、転送速度“6Gbps”のチャンク14B22内のデータを移行する。そして、ストレージ制御部70Bが、チャンクグループ701Dの構成要素を、移行元のチャンク14B22から移行先のチャンク14B31に変更する。このようにして、チャンクグループ701Dを構成する二つのチャンク14A21及び14B31の転送速度が同じに維持される。結果として、チャンクグループ701Dに対する書込みの性能低下を避けることができる。
なお、図10が示す例によれば、チャンク14A22が着目されているが、チャンク14A21についても同様の処理が行われる。
図11は、チャンクグループ701の再構成処理の流れを示す。図11が示す再構成処理は、ノード群100における一つのノード20(例えば、マスタのノード)が行ってもよいが、本実施形態では、各ノード20が実行可能である。ノード20Aを例に取る。再構成処理は、周期的に行われる。
ノード20Aのノード制御部723が、ノード20Aの所定の領域(ドライブ10A2の構成ファイルが格納されている領域)における構成ファイル毎に、当該構成ファイル内のドライブ構成情報が表す転送速度が、ドライブ管理テーブル406内の転送速度と異なっているか否かをチェックする(S31)。いずれのドライブ10についても転送速度の変化が検出されなければ(S32:No)、再構成処理は終了する。
以下、図10に例示の通り、ノード20Aとドライブ10A2間でリンクの再確立が行われ、その結果として、ドライブ10A2の最新の転送速度(構成ファイル内のドライブ構成情報が表す転送速度)が、ドライブ10A2についてドライブ管理テーブル406に登録されている転送速度と異なっているとする。
ドライブ10A2の転送速度の変化が検出された場合(S32:YES)、ノード20Aのクラスタ制御部722が、ドライブ10A2の転送速度(情報554及び555)を変更する(S33)。以下、図10と同様に、チャンク14A22を例に取る。
ノード20Aのクラスタ制御部722が、変更後の転送速度と同じ転送速度が関連付いた空きチャンクがあるか否かを、ノード20Aの管理テーブル群232から判断する(S35)。ここで言う空きチャンクは、変更後の転送速度と同じ転送速度に関連付いたDrive_ID551と一致するDrive_ID542に対応したStatus534が空きを意味する値であるチャンクである。空きチャンクは、例えば、以下のようにして探されてよい。
・ノード20Aのクラスタ制御部722が、チャンク14A22を含むチャンクグループ701D内のチャンク14B22を、チャンクグループ管理テーブル404から特定する。
・ノード20Aのクラスタ制御部722が、チャンク14B22を管理するノード20Bを、チャンク管理テーブル405から特定する。
・ノード20Aのクラスタ制御部722が、ノード20Bが管理するチャンク14Bのうち、変更後の転送速度と同じ転送速度が関連付いている空きチャンク14Bを、チャンク管理テーブル405及びドライブ管理テーブル406を基に探す。
・そのような空きチャンク14Bが見つからなければ、ノード20Aのクラスタ制御部722が、ノード20A及び20B以外のノードが管理するチャンクのうち、変更後の転送速度と同じ転送速度が関連付いている空きチャンク14を、チャンク管理テーブル405及びドライブ管理テーブル406を基に探す。
空きチャンク14B31が見つかったとする。この場合(S35:YES)、データ移行が行われる(S36)。例えば、ノード20Aのクラスタ制御部722が、空きチャンク14B31を管理するノード20Bのクラスタ制御部722に、チャンク14B22から空きチャンク14B31へデータを移行することを指示する。その指示に応答して、ノード20Bのクラスタ制御部722が、チャンク14B22から空きチャンク14B31へデータを移行し、移行完了を、ノード20Aのクラスタ制御部722に返す。
S36の後、ノード20Aのクラスタ制御部722が、チャンク14A22を含むチャンクグループ701Dを再構成する(S37)。具体的には、ノード20Aのクラスタ制御部722は、チャンクグループ701Dに、移行元のチャンク14B22に代えて、移行先のチャンク14B31を含める。より具体的には、ノード20Aのクラスタ制御部722は、チャンクグループ701DのChunk1_ID532又はChunk2_ID533を、移行元のチャンク14B22のIDから、移行先のチャンク14B31のIDに変更する。
変更後の転送速度と同じ転送速度が関連付いている空きチャンクが見つからなかったとする。この場合(S35:NO)、チャンクグループ701Dを構成する二つのチャンクの転送速度が異なったままとなる。そこで、ノード20Aのクラスタ制御部722(又は、管理システム81における管理部88)が、ドライブの性能低下の可能性があることを意味するアラートを出す(S38)。
以上の再構成処理によれば、ノード制御部723が、周期的に、OS95により取得された各構成ファイルをチェックすることで、ドライバとドライブ10間の転送速度が途中で変わっても、その転送速度の変更を検出することができる。そして、転送速度が変わったドライブ10A2に基づくチャンク14A22を含むチャンクグループ701D内のチャンク14B22(転送速度に変化が無いドライブ10B2に基づくチャンク14B22)について、チャンク14A22の変更後の転送速度と同じ転送速度の空きチャンク14B31が探し出される。その空きチャンク14B31に、チャンク14B22からデータが移行される。その後、移行先のチャンク14B31が、チャンク14B22に代わって、チャンクグループ701Dの構成要素とされる。このようにして、ドライブ10A2の転送速度が途中で変わっても、チャンクグループ701Dを構成する二つのチャンクの転送速度を同じに維持することができる。
チャンクグループ701Dを構成する二つのチャンクの転送速度を同じとすることを維持する方法として、ドライブ10A2の転送速度が速くなっても、ノード20Aとドライブ10A2間のデータ転送を変更前の転送速度に従い行う方法も考えられるが、ノード20Aとドライブ10A2との間でのデータ転送の速度は、OS95上のストレージ制御部70からは制御できない。すなわち、ノード20Aとドライブ10A2間では、変更後の転送速度に従いデータ転送が行われることにある。このため、転送速度が変わっていない方のチャンク14B22内のデータを、変更後の転送速度と同じ転送速度のチャンクに移行して、チャンクグループの構成要素を、移行元のチャンクから移行先のチャンクに代えることで、チャンクグループ701Dを構成する二つのチャンクの転送速度を同じに維持することができる。
図12は、管理者向け情報の表示の一例を示す。
管理者向け情報の一例としての情報120が、アラート情報125と通知情報126とを含む。情報120は、表示デバイスに表示される。表示デバイスは、ノード群100に接続された計算機の一例である管理システム81が有してもよいし、管理システム81に接続された計算機が有してもよい。情報120は、対象ノード20(少なくとも一つのノードの一例)におけるストレージ制御部70、又は、管理システム81(対象ノード20と通信するシステムの一例)における管理部88によって生成され表示される。図12の説明において、「対象ノード」は、ノード群100におけるマスタのノードであってもよいし、ノード群100のうち、情報120が表す状況を検出したノードであってもよい。
アラート情報125は、変更後の転送速度と同じ転送速度が関連付いた空きチャンクが見つからなかった場合に、対象ノード20におけるストレージ制御部70、又は、管理システム81における管理部88によって生成される情報であり、性能低下の可能性があることを表す情報である。アラート情報125は、例えば、性能低下の可能性が生じた日時と、性能低下の可能性が生じたことを表すイベントの名前とを表す情報を含む。管理者(ユーザの一例)が、アラート情報125を見ることで、性能低下の可能性が生じていることを知ることができる。なお、ストレージ制御部70又は管理部88は、管理者による所定の操作に応答して、アラート情報125の詳細であるアラート詳細情報121を生成して表示してもよい。アラート詳細情報121は、変更後の転送速度と同じ転送速度のドライブ10の追加の提示を含む。これにより、管理者は、性能低下の可能性を避けるために何をすべきかを知ることができる。
通知情報126は、検出された状況のうち所定の条件に該当する状況を表す情報である。管理者は、通知情報126を見ることで、所定の条件に該当する状況が生じたことを知ることができる。ストレージ制御部70又は管理部88は、管理者による所定の操作に応答して、通知情報126の詳細である通知詳細情報122を生成して表示してもよい。「所定の条件に該当する状況」の一例として、転送速度向上がある。転送速度が向上するケースの例として、例えば下記がある。
・変更後の転送速度と同じ転送速度のドライブ10が増設されたこと。これにより、図11のS35:NOのケースでも、変更後の転送速度と同じ転送速度の空きチャンクが増え、結果として、チャンク14B11の移行先の空きチャンクが見つかることとなる。
・ドライブ10A2の転送速度がより速い転送速度に変わり(言い換えれば、転送速度が改善し)、上述のS36及びS37が行われたこと。
以上、本発明の一実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、ドライブ10A1の転送速度が遅い転送速度に変わる(言い換えれば、転送速度が悪化する)ことがある。そのような場合には、例えば、図10を参照して言えば、ドライブ10A1に基づくチャンク14A11を含むチャンクグループ701A内のチャンク14B11内のデータが、同じ遅い転送速度に関連付いた空きチャンクに移行され、チャンクグループ701A内のチャンク14B11が、当該空きチャンクに変更されることになる。
また、一つ以上のチャンクグループが、ボリューム40が作成されたときにボリューム40の全域に割り当てられることに代えて、ライト要求の受信に応じて動的にチャンクグループが割り当てられてもよい。例えば、ボリューム40におけるライト先を指定したライト要求をノード20が受信し、当該ライト先にチャンクグループが割り当てられていない場合に、ノード20が、当該ライト先が属するライト先領域に、未割当のチャンクグループを割り当ててもよい。
100:ノード群 110:ストレージ制御システム

Claims (12)

  1. ノード群を構成する複数のストレージノードにそれぞれ備えられる複数のストレージ制御部を備え、
    前記複数のストレージノードに複数の記憶デバイスが接続され、
    各記憶デバイスは、いずれかのストレージノードに接続され、二つ以上のストレージノードには接続されず、
    前記複数のストレージノードの少なくとも一つのストレージノードにおけるストレージ制御部は、前記複数の記憶デバイスに基づく複数の論理記憶領域である複数のチャンクを管理し、
    前記ノード群が、ボリュームにおけるライト先を指定したライト要求を受信した場合、いずれかのストレージ制御部が、前記ライト要求に付随するデータを冗長化し、前記ライト先が属するライト先領域に割り当てられたチャンクグループを構成する二つ以上のチャンクの基になっている二つ以上の記憶デバイスに、前記冗長化されたデータを書き込み、当該二つ以上の記憶デバイスに対する書込みが完了した場合に、前記ライト要求の完了を応答し、
    前記チャンクグループは、二つ以上のストレージノードに接続された二つ以上の記憶デバイスに基づく二つ以上のチャンクで構成され、
    前記複数のストレージノードの各々において、ストレージ制御部が、当該ストレージノードに接続された記憶デバイス毎に、当該ストレージノードと当該記憶デバイス間のリンク確立において決められた転送速度を表す情報を含み当該ストレージノードのOS(Operating System)により取得されたデバイス構成情報から、当該記憶デバイスの転送速度を特定し、
    各チャンクには、当該チャンクの基になっている記憶デバイスが接続されたストレージノードにおけるストレージ制御部により特定された転送速度が関連付けられ、
    前記少なくとも一つのストレージノードにおけるストレージ制御部が、各チャンクグループについて、当該チャンクグループを構成する二つ以上のチャンクを、同じ転送速度が関連付いた二つ以上のチャンクに維持する、
    ストレージ制御システム。
  2. 前記複数のストレージノードの各々において、当該ストレージノードにおけるストレージ制御部が、当該ストレージノードに接続された記憶デバイス毎に、周期的に、当該記憶デバイスのデバイス構成情報から、当該記憶デバイスの転送速度を特定し、
    前記少なくとも一つのストレージノードにおけるストレージ制御部が、転送速度が変わった記憶デバイスを検出した場合、当該記憶デバイスに基づくチャンク毎に、
    当該記憶デバイスの最新の転送速度と同じ転送速度が関連付いたチャンクである対象チャンクを探し、
    前記対象チャンクが見つかった場合、当該チャンクである元チャンク内のデータを、前記対象チャンクに移行し、
    前記元チャンクを含むチャンクグループに、前記元チャンクに代えて前記対象チャンクを含める、
    請求項1に記載のストレージ制御システム。
  3. 前記見つかった対象チャンクは、空きのチャンクである、
    請求項2に記載のストレージ制御システム。
  4. 前記対象チャンクが見つからなかった場合、前記少なくとも一つのストレージノードにおけるストレージ制御部、又は、前記少なくとも一つのストレージノードと通信するシステムにおける管理部が、性能低下の可能性があることを表す情報を表示する、
    請求項2に記載のストレージ制御システム。
  5. 前記対象チャンクが見つからなかった場合、前記少なくとも一つのストレージノードにおけるストレージ制御部、又は、前記少なくとも一つのストレージノードと通信するシステムにおける管理部が、前記最新の転送速度と同じ転送速度の記憶デバイスの追加を提示する、
    請求項2に記載のストレージ制御システム。
  6. 前記少なくとも一つのストレージノードにおけるストレージ制御部、又は、前記少なくとも一つのストレージノードと通信するシステムにおける管理部が、前記最新の転送速度と同じ転送速度の記憶デバイスの増設と前記最新の転送速度が直前の転送速度より速いこととのうちのいずれかに従う転送速度向上を表す情報を表示する、
    請求項2に記載のストレージ制御システム。
  7. ノード群を構成する複数のストレージノードの各々について、当該ストレージノードに接続された記憶デバイス毎に、当該ストレージノードと当該記憶デバイス間のリンク確立において決められた転送速度を表す情報を含み当該ストレージノードのOS(Operating System)により取得されたデバイス構成情報から、当該記憶デバイスの転送速度を特定し、
    前記複数のストレージノードに複数の記憶デバイスが接続され、
    各記憶デバイスは、いずれかのストレージノードに接続され、二つ以上のストレージノードには接続されず、
    前記複数のストレージノードの少なくとも一つのストレージノードが、前記複数の記憶デバイスに基づく複数の論理記憶領域である複数のチャンクを管理し、
    前記ノード群が、ボリュームにおけるライト先を指定したライト要求を受信した場合、いずれかのストレージノードが、前記ライト要求に付随するデータを冗長化し、前記ライト先が属するライト先領域に割り当てられたチャンクグループを構成する二つ以上のチャンクの基になっている二つ以上の記憶デバイスに、前記冗長化されたデータを書き込み、当該二つ以上の記憶デバイスに対する書込みが完了した場合に、前記ライト要求の完了を応答し、
    前記チャンクグループは、二つ以上のストレージノードに接続された二つ以上の記憶デバイスに基づく二つ以上のチャンクで構成され、
    各チャンクに、当該チャンクの基になっている記憶デバイスが接続されたストレージノードにより特定された転送速度を関連付け、
    各チャンクグループについて、当該チャンクグループを構成する二つ以上のチャンクを、同じ転送速度が関連付いた二つ以上のチャンクに維持する、
    ストレージ制御方法。
  8. 前記複数のストレージノードの各々において、当該ストレージノードが、当該ストレージノードに接続された記憶デバイス毎に、周期的に、当該記憶デバイスのデバイス構成情報から、当該記憶デバイスの転送速度を特定し、
    前記少なくとも一つのストレージノードが、転送速度が変わった記憶デバイスを検出した場合、当該記憶デバイスに基づくチャンク毎に、
    当該記憶デバイスの最新の転送速度と同じ転送速度が関連付いたチャンクである対象チャンクを探し、
    前記対象チャンクが見つかった場合、当該チャンクである元チャンク内のデータを、前記対象チャンクに移行し、
    前記元チャンクを含むチャンクグループに、前記元チャンクに代えて前記対象チャンクを含める、
    請求項7に記載のストレージ制御方法。
  9. 前記見つかった対象チャンクは、空きのチャンクである、
    請求項8に記載のストレージ制御方法。
  10. 前記対象チャンクが見つからなかった場合、性能低下の可能性があることを表す情報を表示する、
    請求項8に記載のストレージ制御方法。
  11. 前記対象チャンクが見つからなかった場合、前記最新の転送速度と同じ転送速度の記憶デバイスの追加を提示する、
    請求項8に記載のストレージ制御方法。
  12. 前記最新の転送速度と同じ転送速度の記憶デバイスの増設と前記最新の転送速度が直前の転送速度より速いこととのうちのいずれかに従う転送速度向上を表す情報を表示する、
    請求項8に記載のストレージ制御方法。
JP2019137830A 2019-07-26 2019-07-26 ストレージ制御システム及び方法 Active JP6858812B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019137830A JP6858812B2 (ja) 2019-07-26 2019-07-26 ストレージ制御システム及び方法
US16/813,896 US20210026566A1 (en) 2019-07-26 2020-03-10 Storage control system and method
CN202010172692.3A CN112306390B (zh) 2019-07-26 2020-03-12 存储控制系统以及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019137830A JP6858812B2 (ja) 2019-07-26 2019-07-26 ストレージ制御システム及び方法

Publications (2)

Publication Number Publication Date
JP2021022121A JP2021022121A (ja) 2021-02-18
JP6858812B2 true JP6858812B2 (ja) 2021-04-14

Family

ID=74187985

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019137830A Active JP6858812B2 (ja) 2019-07-26 2019-07-26 ストレージ制御システム及び方法

Country Status (3)

Country Link
US (1) US20210026566A1 (ja)
JP (1) JP6858812B2 (ja)
CN (1) CN112306390B (ja)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004178253A (ja) * 2002-11-27 2004-06-24 Hitachi Ltd 記憶デバイス制御装置および記憶デバイス制御装置の制御方法
US8015433B2 (en) * 2006-09-13 2011-09-06 Hitachi Global Storage Technologies Netherlands B.V. Disk drive with nonvolatile memory for storage of failure-related data
JP2009146389A (ja) * 2007-11-22 2009-07-02 Hitachi Ltd バックアップシステム及び方法
GB2528585A (en) * 2013-05-17 2016-01-27 Hitachi Ltd Storage device
US10146787B2 (en) * 2013-07-26 2018-12-04 Quest Software Inc. Transferring differences between chunks during replication
US20150207846A1 (en) * 2014-01-17 2015-07-23 Koninklijke Kpn N.V. Routing Proxy For Adaptive Streaming
JP6672020B2 (ja) * 2016-03-04 2020-03-25 キヤノン株式会社 画像形成装置及び画像形成装置の制御方法
US10353634B1 (en) * 2016-03-28 2019-07-16 Amazon Technologies, Inc. Storage tier-based volume placement
JP6791834B2 (ja) * 2017-11-30 2020-11-25 株式会社日立製作所 記憶システム及び制御ソフトウェア配置方法

Also Published As

Publication number Publication date
US20210026566A1 (en) 2021-01-28
CN112306390B (zh) 2024-04-16
JP2021022121A (ja) 2021-02-18
CN112306390A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
JP5079841B2 (ja) ThinProvisioningに従う仮想的な論理ボリュームに対するデータのライトを制御する方法及びストレージ装置
US8984248B2 (en) Data migration system and data migration method
JP5685676B2 (ja) 計算機システム及びデータ管理方法
US8447924B2 (en) Computer system having an expansion device for virtualizing a migration source wherein the operation mode of the computer is set to a cache through or write after mode
US7650480B2 (en) Storage system and write distribution method
US7558916B2 (en) Storage system, data processing method and storage apparatus
US7975115B2 (en) Method and apparatus for separating snapshot preserved and write data
US20170177224A1 (en) Dynamic storage transitions employing tiered range volumes
US20210303178A1 (en) Distributed storage system and storage control method
US20180267713A1 (en) Method and apparatus for defining storage infrastructure
US11740823B2 (en) Storage system and storage control method
WO2012035576A1 (en) Storage system storing electronic modules applied to electronic objects common to several computers, and storage control method for the same
JP6858812B2 (ja) ストレージ制御システム及び方法
US20240220378A1 (en) Information processing system and information processing method
US11544005B2 (en) Storage system and processing method
US11340795B2 (en) Snapshot metadata management
US20220107747A1 (en) Computer system and load distribution method
JP5355764B2 (ja) ThinProvisioningに従う仮想的な論理ボリュームに対するデータのライトを制御する方法及びストレージ装置
Hristev et al. AUTOMATED CONFIGURATION OF DISK ARRAYS FOR CLUSTER NODES IN LINUX

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200131

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210324

R150 Certificate of patent or registration of utility model

Ref document number: 6858812

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350