JP2022016753A - ストレージシステム、制御方法及びプログラム - Google Patents
ストレージシステム、制御方法及びプログラム Download PDFInfo
- Publication number
- JP2022016753A JP2022016753A JP2020119663A JP2020119663A JP2022016753A JP 2022016753 A JP2022016753 A JP 2022016753A JP 2020119663 A JP2020119663 A JP 2020119663A JP 2020119663 A JP2020119663 A JP 2020119663A JP 2022016753 A JP2022016753 A JP 2022016753A
- Authority
- JP
- Japan
- Prior art keywords
- storage
- node
- data
- data element
- storage system
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 35
- 230000009467 reduction Effects 0.000 claims description 63
- 238000013507 mapping Methods 0.000 abstract description 85
- 230000003068 static effect Effects 0.000 abstract description 71
- 238000007726 management method Methods 0.000 description 49
- 230000008569 process Effects 0.000 description 25
- 238000012545 processing Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 238000011946 reduction process Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
本開示は、計算機システム、制御方法及びプログラムに関する。
特許文献1には、記憶ノードとして計算機ノードを使用した分散型ストレージシステムが開示されている。この分散型ストレージシステムでは、ユーザデータに基づいて、そのユーザデータを復元するための冗長コードが生成され、ユーザデータとそのユーザデータに基づく冗長コードとを含むデータが複数の計算機ノードに分散されて格納される。データの各データ要素と各データ要素を格納する計算機ノードとの対応関係は、静的マッピングテーブルと呼ばれる情報で管理されている。
また、上記の分散型ストレージシステムでは、計算機ノードを増設又は減設することで、計算機ノードの構成を変更することができる。静的マッピングテーブルは、計算機ノードの構成ごとに、各データの冗長性が保たれるように用意される。計算機ノードの構成を変更する場合、各計算機ノードに格納された各データの各データ要素は、変更後の構成に対応した静的マッピングテーブルに従って移動される。特許文献1では、静的マッピングテーブルは、計算機ノードを増設する際に移動するデータ要素のデータ量である移動量が最小となるように定められている。
特許文献1に記載の技術では、計算機ノードを増設する際の移動量が最小となるように定められているが、計算機ノードを減設する場合には、移動量が増加し、構成変更に時間がかかるという問題がある。
本開示の目的は、上記課題を鑑みてなされたものであり、記憶ノードの減設時におけるデータの移動量を低減することが可能なストレージシステム、制御方法及びプログラムを提供することにある。
本開示の一態様に従うストレージシステムは、ユーザデータと前記ユーザデータに基づく冗長コードとを含む複数のデータ要素を有するグループごとに当該グループの各データ要素を分散して格納する複数の記憶ノードを有するストレージシステムであって、前記複数の記憶ノードと複数の仮想記憶ノードとの対応関係を示す第1の管理情報と、前記データ要素と前記データ要素を格納する仮想記憶ノードとの対応関係を示す第2の管理情報とを含むグループ情報に基づいて、各データ要素を前記複数の記憶ノードに格納する制御部を有し、前記制御部は、前記複数の記憶ノードのいずれかが前記ストレージシステムから離脱した場合、当該離脱した記憶ノードである減設ノードを除いた前記グループ情報である減設後のグループ情報と、前記減設ノードが離脱する前の前記グループ情報を、前記第1の管理情報にて示される前記記憶ノードと前記仮想記憶ノードとの対応関係を所定の入替規則に従って変更した入替グループ情報とに基づいて、各データ要素を格納する記憶ノードを変更する。
本発明によれば、記憶ノードの減設時におけるデータの移動量を低減することが可能になる。
以下、本開示の実施形態について図面を参照して説明する。
なお、以下の説明では、「プログラム」を動作主体として処理を説明する場合があるが、プログラムは、プロセッサ(例えば、CPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えば、メモリ)及び/又は通信インターフェースデバイス(例えば、ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ又はそのプロセッサを有するデバイス(例えば、計算機又はコントローラなど)が行う処理としてもよい。
(第1の実施形態)
図1は、本開示の第1の実施形態の分散型ストレージシステムのシステム構成の一例を示す図である。図1に示す分散型ストレージシステム100は、複数の計算機ノード101を有する計算機システムである。複数の計算機ノード101は、複数の計算機ドメイン201を構成する。同一の計算機ドメイン201に含まれる各計算機ノード101は、バックエンドネットワーク301を介して相互に接続される。各計算機ドメイン201は、外部ネットワーク302を介して相互に接続される。
図1は、本開示の第1の実施形態の分散型ストレージシステムのシステム構成の一例を示す図である。図1に示す分散型ストレージシステム100は、複数の計算機ノード101を有する計算機システムである。複数の計算機ノード101は、複数の計算機ドメイン201を構成する。同一の計算機ドメイン201に含まれる各計算機ノード101は、バックエンドネットワーク301を介して相互に接続される。各計算機ドメイン201は、外部ネットワーク302を介して相互に接続される。
計算機ドメイン201は、例えば、地理的な地域に対応して設けられてもよいし、バックエンドネットワーク301の仮想的又は物理的なトポロジに対応して設けられてもよい。本実施形態では、各ドメインは、地理的に互いに離れた複数の地域であるサイトのいずれかに対応している。
計算機ノード101は、例えば、一般的なサーバ用の計算機で構成される。図1の例では、計算機ノード101は、メモリ401及びプロセッサ402を含むプロセッサパッケージ403と、ポート404と、複数のドライブ405とを有する。また、メモリ401、プロセッサ402、ポート404及びドライブ405は、内部ネットワーク406を介して相互に接続されている。
メモリ401は、プロセッサ402にて読み取り可能な記録媒体であり、プロセッサ402の動作を規定するプログラムを記録する。メモリ401は、DRAM(Dynamic Random Access Memory)のような揮発性のメモリでもよいし、SCM(Storage Class Memory)のような不揮発性のメモリでもよい。
プロセッサ402は、例えば、CPU(Central Processing Unit)などであり、メモリ401に記録されたプログラムを読み取り、その読み取ったプログラムを実行することで、種々の機能を実現する。
ポート404は、バックエンドネットワーク301を介して他の計算機ノード101と接続し、他の計算機ノード101との間で情報の送受信を行うバックエンドポートである。
ドライブ405は、種々のデータを格納する記憶デバイスであり、ディスクドライブとも呼ばれる。ドライブ405は、例えば、FC(Fibre Channel)、SAS(Serial Attached SCSI)、SATA(Serial Advanced Technology Attachment)などのインタフェースを持つハードディスクドライブ及びSSD(Solid State Drive)などである。
図2は、本開示の一実施形態の分散型ストレージシステムのソフトウェア構成の一例を示す図である。
計算機ノード101は、仮想マシン(VM:Virtual Machine)500を実現するためのソフトウェアであるハイパーバイザ501を実行する。本実施形態では、ハイパーバイザ501は、複数の仮想マシン500を実現する。
ハイパーバイザ501は、実現した各仮想マシン500に対するハードウェア資源の割り当てを管理し、各仮想マシン500からのハードウェア資源に対するアクセス要求を実際にハードウェア資源に渡す。ハードウェア資源は、例えば、図1で示したメモリ401、プロセッサ402、ポート404、ドライブ405及びバックエンドネットワーク301などである。
仮想マシン500は、不図示のOS(Operating System)を実行し、そのOS上で種々のプログラムを実行する。本実施形態では、仮想マシン500は、ストレージプログラム502、アプリケーションプログラム(図では、アプリケーションと略す)503及び管理プログラム504のいずれかを実行する。なお、管理プログラム504は、全ての計算機ノード101で実行される必要はなく、計算機ノード101の少なくとも1つで実行されればよい。ストレージプログラム502及びアプリケーションプログラム503は、全ての計算機ノード101で実行される。
仮想マシン500は、実行した各プログラムに対する、ハイパーバイザ501から提供された仮想的な資源の割り当てを管理し、各プログラムからの仮想的な資源に対するアクセス要求をハイパーバイザ501に渡す。
ストレージプログラム502は、ドライブ405に対するストレージI/Oを管理するためのプログラムである。ストレージプログラム502は、複数のドライブ405を束ねて仮想化し、仮想化したドライブ405を仮想ボリューム505として、ハイパーバイザ501を介して他の仮想マシン500に提供する。
ストレージプログラム502は、他の仮想マシン500からストレージI/Oのリクエストを受信すると、ドライブ405に対してストレージI/Oを行い、その結果を返却する。また、ストレージプログラム502は、他の計算機ノード101で実行されているストレージプログラム502との間で、バックエンドネットワーク301を介して通信し、例えば、データ保護及びデータ移行などのストレージの機能を実現する。
アプリケーションプログラム503は、分散型ストレージシステムを利用するユーザのためのプログラムである。アプリケーションプログラム503は、ストレージI/Oを行う際に、ハイパーバイザ501を介して、ストレージプログラム502が提供する仮想ボリュームに対してストレージI/Oのリクエストを送信する。
管理プログラム504は、仮想マシン500、ハイパーバイザ501及び計算機ノード101の構成を管理するためのプログラムである。管理プログラム504は、仮想マシン500及びハイパーバイザ501を介して、他の計算機ノード101に対するネットワークI/Oのリクエストを送信する。また、管理プログラム504は、仮想マシン500及びハイパーバイザ501を介して、他の仮想マシン500に対して管理オペレーションのリクエストを送信する。管理オペレーションは、仮想マシン500、ハイパーバイザ501及び計算機ノード101の構成に関する操作であり、計算機ノード101の増設、減設及び復旧などである。
なお、ストレージプログラム502、アプリケーションプログラム503及び管理プログラム504は、仮想マシン500上ではなく、ハードウェア上で直接動作しているOS上で実行されてもよい。
以上説明した分散型ストレージシステム100では、ユーザデータと、ユーザデータに基づいて生成された、ユーザデータを復元するための冗長コードであるパリティデータとを含むデータがチャンクと呼ばれる管理単位で複数のデータ要素に分割されて複数の計算機ノード101に格納される。各データ要素は、ユーザデータ又はパリティデータ単体で構成されてもよいし、ユーザデータ及びパリティデータの両方で構成されてもよい。以下では、パリティデータを生成するユーザデータの組をチャンクグループと呼び、パリティデータを生成するユーザデータとそのパリティデータとの組をパリティグループ(冗長グループ)と呼ぶこともある。
各データ要素と各データ要素を格納する記憶ノードである計算機ノード101との対応関係は、静的マッピングテーブルと呼ばれるグループ情報にて管理される。
また、分散型ストレージシステム100では、計算機ノード101を増設又は減設することで、計算機ノード101の構成を変更することができる。静的マッピングテーブルは、計算機ノード101の構成(計算機ノード101の数)ごとに、各データ要素の冗長性が保たれるように用意される。このため、計算機ノード101の構成を変更する場合、分散型ストレージシステム100は、変更後の構成に対応した静的マッピングテーブルに基づいて、各計算機ノード101に格納されているデータ要素を他の計算機ノードに移動させる。本実施形態では、静的マッピングテーブルは、計算機ノード101を増設する場合に、移動するデータ要素のデータ量である移動量が最小となるように設計される。
以下では、計算機ノード101を減設する場合に実行される減設処理についてより詳細に説明する。
図3は、減設処理に係るストレージプログラム502及び管理プログラム504の内部構成と、減設処理で使用される管理情報の内部構成とを示す図である。
図3に示すようにストレージプログラム502、管理プログラム504及び管理情報511は、例えば、メモリ401に記録される。ストレージプログラム502は、データ移行処理プログラム521と、データコピー処理プログラム522と、アドレス解決処理プログラム523と、構成変更処理プログラム524と、冗長化先変更処理プログラム525と、データ消去処理プログラム526とを含む。管理プログラム504は、状態管理処理プログラム531と、移動先選定処理プログラム532とを含む。管理情報511は、キャッシュ情報541と、静的マッピングテーブル542とを含む。各プログラムが協働して減設処理を行う。
キャッシュ情報541は、ストレージプログラム502によりメモリ401にキャッシュされるデータに関する情報である。
静的マッピングテーブル542は、上述したようにデータ要素とデータ要素を格納する計算機ノード101との対応関係を示す情報である。静的マッピングテーブル542は、グループマッピングテーブル551と、カラムノード対応管理テーブル552と、ノード管理テーブル553とを含む。
図4は、静的マッピングテーブル542の概要を説明するための図である。図4では、静的マッピングテーブル542に含まれるグループマッピングテーブル551及びカラムノード対応管理テーブル552が示されている。
グループマッピングテーブル551は、データ要素とデータ要素を格納する仮想的な記憶ノードである仮想記憶ノードとの対応関係を示す第2の管理情報である。より具体的には、グループマッピングテーブル551は、仮想記憶ノードの識別情報であるカラム(図では、「col」と表記する)と、仮想記憶ノードに格納されるデータ要素のパリティグループGx(xは1以上の整数)を示している。なお、カラムはマップカラム(MAP COLUMN)と呼ばれることもある。
仮想記憶ノードの数であるマップサイズ(MAP SIZE)は、計算機ノード101の数であるノード数と同じである。同一のパリティグループGxに含まれるデータ要素は別々の仮想記憶ノードに格納される。例えば、パリティグループG1に含まれる3つのデータ要素は、カラム1、カラム2及びカラム5のそれぞれの仮想記憶ノードに格納される。パリティグループG1に含まれる各データ要素を識別する識別情報をインデックス(INDEX)と呼ぶ。図4の例では、インデックスとして、idx1~idx3が示されている。
カラムノード対応管理テーブル552は、計算機ノード101と仮想記憶ノードとの対応関係を示す第1の管理情報である。より具体的には、カラムノード対応管理テーブル552は、計算機ノード101の識別情報であるノードインデックスと、その計算機ノードに対応する仮想記憶ノードを示すカラムとを有するレコードを計算機ノード101ごとに有するテーブルである。
分散型ストレージシステム100は、グループマッピングテーブル551とカラムノード対応管理テーブル552とに基づいて、計算機ノード101ごとにその計算機ノード101に格納されるデータ要素を示すデータ配置561を特定することができる。
図5は、グループマッピングテーブル551のより詳細な例を示す図である。グループマッピングテーブル551は、フィールド5511~5515を含む。
フィールド5511は、パリティグループ内のデータ要素の数であるグループサイズを格納する。フィールド5512は、仮想記憶ノードの数であるマップサイズを格納する。フィールド5513は、パリティグループの識別情報である冗長グループコード(REDUMDANT GROUP CODE)を格納する。フィールド5514は、パリティグループ内のデータ要素を識別するインデックスを格納する。フィールド5515は、データ要素が格納される仮想記憶ノードを示すマップカラムを格納する。
図6は、カラムノード対応管理テーブル552のより詳細な例を示す図である。図6に示すカラムノード対応管理テーブル552は、フィールド5521及び5522を含む。フィールド5521は、マップカラムを格納する。フィールド5522は、計算機ノード101の識別情報であるノードインデックスを格納する。
図7は、ノード管理テーブル553の一例を示す図である。図7に示すノード管理テーブル553は、フィールド5531~5533を含む。フィールド5531は、ノードインデックスを格納する。フィールド5532は、計算機ノード101の名前を格納する。フィールド5533は、計算機ノード101の状態を格納する。計算機ノード101の状態としては、例えば、正常、警告、障害、増設中及び減設中などが挙げられる。なお、ノード管理テーブル553は、他の情報を格納する他のフィールドが設けられていてもよい。
分散型ストレージシステム100は、静的マッピングテーブル542に基づいて、パリティグループごとに、各パリティグループに含まれる各データ要素を各計算機ノード101に格納する。
また、分散型ストレージシステム100は、計算機ノード101のいずれかが分散型ストレージシステム100から離脱(減設)した場合、その離脱した計算機ノード101である減設ノードを除いた構成に応じた静的マッピングテーブル542を減設後の静的マッピングテーブル542として生成する。分散型ストレージシステム100は、減設前の静的マッピングテーブル542を、カラムノード対応管理テーブル552による計算機ノード101と仮想記憶ノードとの対応関係を所定の入替規則に従って変更した入替グループ情報である入替後の静的マッピングテーブル542を生成する。そして、分散型ストレージシステム100は、減設後の静的マッピングテーブル542と入替後の静的マッピングテーブル542とに基づいて、各データ要素の格納先となる計算機ノード101を変更する。
入替規則は、減設時に移動するデータ要素のデータ量である移動量が小さくなるように予め定められる。例えば、入替規則は、分散型ストレージシステム100に新たな計算機ノード101を追加(増設)する増設処理における、増設後の静的マッピングテーブル542の生成方法に応じて定められる。本実施形態では、増設処理において、分散型ストレージシステム100は、増設前の静的マッピングテーブル542のカラムノード対応管理テーブル552の末尾に、増設した計算機ノード101である増設ノードのノードインデックスとその増設ノードに対応する仮想記憶ノードのマップカラムとを有するレコードが追加され、かつ、増設時の移動量が最小となるように、増設後の静的マッピングテーブル542が生成される。この場合、入替規則は、減設ノードに対応する仮想記憶ノードのマップカラムと、カラムノード対応管理テーブル552の末尾のレコードが有する仮想記憶ノードのマップカラムとを入れ替えることとなる。
図8は、減設処理の一例を説明するためのフローチャートである。
複数の計算機ノード101のいずれかである状態管理ノードにおける管理プログラム303は、計算機ノード101の減設を行うと判定した場合、各計算機ノード101に対して、計算機ノードを減設する減設処理を要求する減設要求を発行する。減設要求は、減設する計算機ノード101のノードインデックスを減設インデックスとして含む。各計算機ノード101のストレージプログラム502は、減設要求を受信すると、減設処理を実行する。
減設処理では、先ず、ストレージプログラム502は、受信した減設要求から減設インデックスを取得し、その減設インデックスにて特定される計算機ノード101を減設の計算機ノードである減設ノードとして確定する(ステップS801)。
ストレージプログラム502は、取得した減設インデックスに基づいて、減設後の構成に応じた静的マッピングテーブル542を取得する(ステップS802)。
ストレージプログラム502は、減設インデックスが減設前の静的マッピングテーブル542内のカラムノード対応管理テーブル552の末尾のレコードにあるか否かを判断する(ステップS803)。
減設インデックスが末尾のレコードにない場合、ストレージプログラム502は、減設前の静的マッピングテーブル542内のカラムノード対応管理テーブル552における減設インデックスに対応するマップカラムを、減設前のカラムノード対応管理テーブル552の末尾のレコードに含まれるマップカラムと入れ替えた静的マッピングテーブルを入替後のマッピングテーブルとして生成する(ステップS804)。減設インデックスが末尾のレコードにある場合、ストレージプログラム502は、減設前の静的マッピングテーブル542をそのまま入替後のマッピングテーブルとして、ステップS804の処理をスキップする。
ストレージプログラム502は、入替後の静的マッピングテーブルと減設後の静的マッピングテーブルとの差分を抽出する(ステップS805)。
ストレージプログラム502は、抽出した差分に基づいて、計算機ノード101に格納されているデータ要素を他の計算機ノードに移動させる移動処理(図9、図10参照)を実行する(ステップS806)。
そして、ストレージプログラム502は、減設前の静的マッピングテーブル542を破棄し、減設後の静的マッピングテーブルを静的マッピングテーブル542としてメモリ401に記録することで、減設ノードの減設を実行し(ステップS807)、処理を終了する。
図9は、図8のステップS806の移動処理の一例を説明するための図である。
図9では、4つの計算機ノード#0~#3が2D+1P構成でデータ保護を行っている分散型ストレージシステムにおいて、計算機ノード#3を減設する例が示されている。また、減設前の静的マッピングテーブル542を静的マッピングテーブル542A、減設後の静的マッピングテーブル542を静的マッピングテーブル542Bとして示している。また、図9では、静的マッピングテーブル542Aにおいて、計算機ノード#1の行番号1に格納されているデータに該当するパリティグループに対して、減設される計算機ノード#3に格納されているデータをノード#0に変更する処理が示されている。
データの格納位置の変更では、先ず、計算機ノード#1は、移動メイン処理901を実行し、対象のパリティグループに該当するデータbを読み出し、減設後の静的マッピングテーブル542Bを参照する。計算機ノード#1は、静的マッピングテーブル542Bに基づいて、データbを計算機ノード#0に転送する。計算機ノード#0は、転送されたデータbからパリティデータb*cを生成し、ドライブに格納する。
また、データbの減設前の古いパリティデータは不要となるため、計算機ノード#1は、その古いパリティデータが格納されている計算機ノード#2に対して、古いパリティデータa*bの消去要求を発行する。計算機ノード#2は、消去要求を受信すると、移動サブ処理902を実行し、消去要求に従って古いパリティデータa*bの消去を試みる。
各計算機ノードで上記の移動メイン処理901とそれに付随する移動サブ処理とが実行されることで、分散型ストレージシステム100は、パリティデータの格納先を変更し、減設を行うことができる。
上記の移動メイン処理901で新たにパリティコードを生成するデータの組み合わせは、減設後の静的マッピングテーブル542Bに基づいて決定される。図9の例では、計算機ノード#0は、計算機ノード#1に格納されていた対象のパリティグループに該当するユーザデータbと、計算機ノード#2に格納されていた対象のパリティグループに該当するユーザデータcとで、パリティデータb*cを生成する。なお、パリティデータb*cを生成するユーザデータcは、計算機ノード#2の移動メイン処理901にて計算機ノード#2から計算機ノード#0に転送される。
図10は、図8のステップS806の移動処理をより詳細に説明するためのフローチャートである。
移動処理は、図9を用いて説明したように、移動メイン処理と移動サブ処理とを含む。先ずは、移動メイン処理から説明する。
移動メイン処理では、ストレージプログラム502は、例えば、各ドライブ405から変更対象(移動対象)のデータを検索し、その変更対象のデータをドライブ405から読み出す(ステップS1001)。
ストレージプログラム502は、減設後の静的マッピングテーブルに基づいて、変更対象のデータのパリティグループである対象グループのパリティデータを格納する計算機ノードを特定する(ステップS1002)。
ストレージプログラム502は、特定した計算機ノードに、変更対象のデータを転送する(ステップS1003)。なお、変更対象のデータの転送先のする計算機ノードのストレージプログラム502は、受信した変更対象のデータに基づいて冗長コードを生成してドライブ405に格納する。
ストレージプログラム502は、減設後の静的マッピングテーブルに基づいて、対象グループの減設前のパリティデータを格納した計算機ノードを特定する(ステップS1004)。ストレージプログラム502は、ステップS1004で特定した旧冗長コードノードに対し、減設前のパリティデータの消去要求を発行する(S1005)。
ストレージプログラム502は、全てのドライブ405内の全ての変更対象のデータについて、上記の処理を行ったか否かを判断する(ステップS1006)。ストレージプログラム502は、全ての変更対象データついて処理を行っていない場合、ステップS1001の処理に戻り、全ての変更対象データついて処理を行った場合、移動メイン処理を終了する。
次に移動サブ処理について説明する。
移動サブ処理では、消去要求を受信した計算機ノードのストレージプログラム502は、その消去要求にて指定された対象のデータがキャッシュ上に存在するか否か判定する。対象のデータがキャッシュ上に存在する場合、ストレージプログラム502は、当該ユーザデータをキャッシュ上から消去する。一方、対象のデータがキャッシュ上に存在しない場合、ストレージプログラム502は、対象のユーザデータが、減設後の静的マッピングテーブルによって冗長化済みであることを示す冗長化先変更済みフラグを設定する(ステップS1101)。
ストレージプログラム502は、対象のデータに対応するパリティデータが消去可能であるか否かを判定する(ステップS1102)。具体的には、ストレージプログラム502は、冗長化先変更済みフラグを確認し、同一のチャンクグループに含まれるデータの全てが減設後の静的マッピングテーブルにて冗長化済みか否かを判定する。この場合、データの全てが減設後の静的マッピングテーブルにて冗長化済みの場合、つまり、同一のチャンクグループに含まれるデータの全てに冗長化先変更済みが設定している場合、ストレージプログラム502は、パリティデータが消去可能であると判断する。
対象のデータに対応するパリティデータが消去可能でない場合、ストレージプログラム502は、移動サブ処理を終了する。一方、対象のデータに対応するパリティデータが消去可能である場合、ストレージプログラム502は、そのパリティデータを消去し(ステップS1103)、移動サブ処理を終了する。
以上の移動処理によれば、分散型ストレージシステム100は、減設後のパリティデータを生成すると共に、減設後前のパリティデータを消去することができる。これにより、分散型ストレージシステム100は、減設前のパリティデータの記憶領域を、減設後のパリティデータの記憶領域として利用することができる。また、減設時に移動するデータ要素のデータ量である移動量が小さくなるようにカラムノード対応管理テーブル552による計算機ノード101と仮想記憶ノードとの対応関係を変更することができるので、移動量を小さくすることができる。
以上説明したように本実施形態によれば、分散型ストレージシステム100は、計算機ノード101の減設時に、減設ノードを除いた構成に応じた静的マッピングテーブル542と、減設前の静的マッピングテーブル542を、カラムノード対応管理テーブル552による計算機ノード101と仮想記憶ノードとの対応関係を所定の入替規則に従って変更した入替後の静的マッピングテーブル542とに基づいて、各データ要素の格納先となる計算機ノード101を変更する。したがって、計算機ノード101の減設時に、データ要素の移動量が少なくなるように静的マッピングテーブル542を変更することが可能になるため、計算機ノード101の減設時におけるデータの移動量を低減することが可能になる。
また、本実施形態では、カラムノード対応管理テーブル552は、計算機ノード101とその計算機ノード101に対応する仮想記憶ノードのマップカラムとを対応付けたレコードを計算機記憶ノード101ごとに有するテーブルである。分散型ストレージシステム100は、計算機ノード101が減設された場合、カラムノード対応管理テーブル552において、減設ノードに対応する仮想計算機ノードのマップカラムと、所定の仮想計算機ノードのマップカラムとを入れ替えることで、計算機ノード101と仮想記憶ノードとの対応関係を変更する。したがって、容易に対応関係を変更することが可能となるため、計算機ノード101の減設時におけるデータの移動量を容易に低減することが可能になる。
また、本実施形態では、計算機ノード101が増設された場合、分散型ストレージシステム100は、増設ノードのノードインデックスと、その増設ノードに対応する仮想記憶ノードのマップカラムとを対応付けたレコードを、減設前のカラムノード対応管理テーブル552の末尾に追加して増設後の静的マッピングテーブル542を生成する。また、計算機ノード101が減設された場合、分散型ストレージシステム100は、減設ノードに対応する仮想記憶ノードのマップカラムと、カラムノード対応管理テーブル552の末尾のレコードが有する仮想記憶ノードのマップカラムとを入れ替える。したがって、計算機ノード101の増設時にてデータの移動量を最小となるように決定することで、計算機ノード101の減設時にもデータの移動量を低減することが可能となる。
また、本実施形態では、分散型ストレージシステム100は、減設後のグループマッピングテーブル551は減設前かつ入替後のグループマッピングテーブル551との差分に基づいて、各データ要素を格納する記憶ノードを変更する。この場合、データの移動量を低減することが可能となる。
また、本実施形態では、分散型ストレージシステム100は、記憶デバイスであるドライブ405とプロセッサ402とを有する複数の計算機ノードを備えた計算機システムである。減設処理を行う制御部は、各計算機のプロセッサで構成される。
(第2の実施形態)
図11は、本開示の第2の実施形態の分散型ストレージシステムのシステム構成の一例を示す図である。図11に示す分散型ストレージシステム700は、上位装置であるホスト800からの要求に応じてデータを複数のドライブに分散して格納するストレージ装置である。分散型ストレージシステム700は、例えば、RAID(Redundant Array of Independent (or Inexpensive) Disks)システムを用いてデータを分散して格納する。
図11は、本開示の第2の実施形態の分散型ストレージシステムのシステム構成の一例を示す図である。図11に示す分散型ストレージシステム700は、上位装置であるホスト800からの要求に応じてデータを複数のドライブに分散して格納するストレージ装置である。分散型ストレージシステム700は、例えば、RAID(Redundant Array of Independent (or Inexpensive) Disks)システムを用いてデータを分散して格納する。
分散型ストレージシステム700は、記憶部701と、ストレージコントローラ702とを有する。
記憶部701は、記憶デバイスであるドライブ711を複数備える。複数のドライブ711は、仮想的な1台のドライブを構成する1つ又は複数の仮想グループ712(例えば、RAIDグループ)に分かれていてもよい。
ストレージコントローラ702は、ドライブ711へのデータの読み書きを制御する制御部である。図の例では、ストレージコントローラ702は、読み書きされるデータのレプリカを作成して信頼性の向上させるために2重化されているが、2重化されていなくてもよいし、3重化以上に多重化されてもよい。
ストレージコントローラ702は、ホストI/F(Interface)721と、ストレージI/F722と、ローカルメモリ(Local Memory)723と、共有メモリ(Shared Memory)724と、CPU(Central Processing Unit)725とを有する。
ホストI/F721は、ホスト800との間で通信を行う。ストレージI/F722は、ドライブ711との間で通信を行う。ローカルメモリ723及び共有メモリ724は、ドライブ711に対して読み書きするデータの一時的な記憶、CPU725の動作を規定するプログラム及びCPU725にて使用される管理情報の記憶などに使用される。CPU725は、ローカルメモリ723及び共有メモリ724に記録されたプログラムを読み取り、その読み取ったプログラムを実行することで、種々の機能を実現する計算機(コンピュータ)である。
本実施形態の分散型ストレージシステム700でも、パリティグループの各データ要素と各データ要素を格納する記憶ノードであるドライブ711との対応関係は、静的マッピングテーブルにて管理される。静的マッピングテーブルは、例えば、ローカルメモリ723又は共有メモリ724に記憶される。
本実施形態の静的マッピングテーブルは、第1の実施形態の静的マッピングテーブル542と比べて、第1の管理情報として、カラムノード対応管理テーブルの代わりにカラムドライブ対応管理テーブルを有する点で異なる。
図12は、カラムドライブ対応管理テーブルの一例を示す図である。図12に示すカラムドライブ対応管理テーブル601は、フィールド6011及び6012を含む。フィールド6011は、仮想記憶ノードの識別情報であるカラム(マップカラム)を格納する。フィールド6012は、ドライブ711の識別情報であるドライブインデックス(DRIVE INDEX)を格納する。
図13は、本実施形態の静的マッピングテーブルの概要を説明するための図である。図13では、静的マッピングテーブルに含まれるグループマッピングテーブル551及びカラムドライブ対応管理テーブル601が示されている。
図13で示したようにストレージコントローラ702(CPU725)は、グループマッピングテーブル551とカラムドライブ対応管理テーブル602とに基づいて、ドライブ711ごとにそのドライブ711に格納されるデータ要素を示すデータ配置603を特定することができる。
また、分散型ストレージシステム700でも、ドライブ711を増設又は減設することで、ドライブ711の構成を変更することができる。静的マッピングテーブルは、ドライブ711の構成ごとに、各データ要素の冗長性が保たれるように用意される。このため、ドライブ711の構成を変更する場合、分散型ストレージシステム700は、変更後の構成に対応した静的マッピングテーブルに基づいて、各ドライブ711に格納されているデータ要素を他の計算機ノードに移動させる。本実施形態では、第1の実施形態と同様に、静的マッピングテーブルは、ドライブを増設する場合に、移動するデータ要素のデータ量である移動量が最小となるように設計される。
ストレージコントローラ702(CPU725)は。ドライブ711のいずれかが分散型ストレージシステム700から離脱(減設)した場合、その離脱したドライブ711である減設ノードを除いた構成に応じた静的マッピングテーブルを減設後の静的マッピングテーブルとして生成する。ストレージコントローラ702は、減設前の静的マッピングテーブルを、カラムドライブ対応管理テーブル601による、ドライブ711と仮想記憶ノードとの対応関係を所定の入替規則に従って変更した入替グループ情報である入替後の静的マッピングテーブルを生成する。そして、ストレージコントローラ702は、減設後の静的マッピングテーブルと入替後の静的マッピングテーブルとに基づいて、各データ要素の格納先となるドライブ711を変更する。入替規則は、第1の実施形態と同様に、減設時に移動するデータ要素のデータ量である移動量が小さくなるように予め定められる。
以上説明したように本実施形態でも、ドライブ711の減設時に、データ要素の移動量が少なくなるように静的マッピングテーブルを変更することが可能になるため、ドライブ711の減設時におけるデータの移動量を低減することが可能になる。
上述した本開示の各実施形態は、本開示の説明のための例示であり、本開示の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本開示の範囲を逸脱することなしに、他の様々な態様で本開示を実施することができる。
100、200:分散型ストレージシステム、101:計算機ノード、202、ストレージコントローラ、211:ドライブ、401:メモリ、402:プロセッサ、403:プロセッサパッケージ、404:ポート、405:ドライブ
Claims (8)
- ユーザデータと前記ユーザデータに基づく冗長コードとを含む複数のデータ要素を有するグループごとに当該グループの各データ要素を分散して格納する複数の記憶ノードを有するストレージシステムであって、
前記複数の記憶ノードと複数の仮想記憶ノードとの対応関係を示す第1の管理情報と、前記データ要素と前記データ要素を格納する仮想記憶ノードとの対応関係を示す第2の管理情報とを含むグループ情報に基づいて、各データ要素を前記複数の記憶ノードに格納する制御部を有し、
前記制御部は、前記複数の記憶ノードのいずれかが前記ストレージシステムから離脱した場合、当該離脱した記憶ノードである減設ノードを除いた前記グループ情報である減設後のグループ情報と、前記減設ノードが離脱する前の前記グループ情報を、前記第1の管理情報にて示される前記記憶ノードと前記仮想記憶ノードとの対応関係を所定の入替規則に従って変更した入替グループ情報とに基づいて、各データ要素の格納先となる記憶ノードを変更する、ストレージシステム。 - 前記第1の管理情報は、前記記憶ノードの識別情報と当該記憶ノードに対応する前記仮想記憶ノードの識別情報とを対応付けたレコードを前記記憶ノードごとに有するテーブルであり、
前記制御部は、前記複数の記憶ノードのいずれかが前記ストレージシステムから離脱した場合、前記テーブルにおいて、前記減設ノードに対応する仮想記憶ノードの識別情報と、所定の仮想記憶ノードの識別情報とを入れ替えることで、前記対応関係を変更する、請求項1に記載のストレージシステム。 - 前記制御部は、前記ストレージシステムに新たに記憶ノードが追加された場合、当該追加された記憶ノードである増設ノードの識別情報と当該増設ノードに対応する仮想記憶ノードの識別情報とを対応付けたレコードを前記テーブルの末尾に追加した前記グループ情報を生成し、前記複数の記憶ノードのいずれかが前記ストレージシステムから離脱した場合、前記減設ノードに対応する仮想記憶ノードの識別情報と、前記テーブルの末尾のレコードが有する仮想記憶ノードの識別情報とを入れ替える、請求項2に記載のストレージシステム。
- 前記制御部は、前記減設後のグループ情報の第2の管理情報と前記入替グループ情報の第2の管理情報との差分に基づいて、各データ要素を格納する記憶ノードを変更する、請求項1に記載のストレージシステム。
- 前記ストレージシステムは、前記データ要素を格納する記憶デバイスとプロセッサとを有する複数の計算機ノードを備えた計算機システムであり、
前記記憶ノードは、前記計算機ノードであり、
前記制御部は、各計算機のプロセッサで構成される、請求項1に記載のストレージシステム。 - 前記ストレージシステムは、前記データ要素を格納する複数の記憶デバイスと、各記憶デバイスに対するデータの読み書きを制御するストレージコントローラとを有し、
前記記憶ノードは、前記記憶デバイスであり、
前記制御部は、前記ストレージコントローラである、請求項1に記載のストレージシステム。 - ユーザデータと前記ユーザデータに基づく冗長コードとを含む複数のデータ要素を有するグループごとに当該グループの各データ要素を分散して格納する複数の記憶ノードを有するストレージシステムの制御方法であって、
前記複数の記憶ノードと複数の仮想記憶ノードとの対応関係を示す第1の管理情報と、前記データ要素と前記データ要素を格納する仮想記憶ノードとの対応関係を示す第2の管理情報とを含むグループ情報に基づいて、各データ要素を前記複数の記憶ノードに格納し、
前記複数の記憶ノードのいずれかが前記ストレージシステムから離脱した場合、当該離脱した記憶ノードである減設ノードを除いた前記グループ情報である減設後のグループ情報と、前記減設ノードが離脱する前の前記グループ情報を、前記第1の管理情報にて示される前記記憶ノードと前記仮想記憶ノードとの対応関係を所定の入替規則に従って変更した入替グループ情報とに基づいて、各データ要素を格納する記憶ノードを変更する、制御方法。 - ユーザデータと前記ユーザデータに基づく冗長コードとを含む複数のデータ要素を有するグループごとに当該グループの各データ要素を分散して格納する複数の記憶ノードを有するストレージシステムに、
前記複数の記憶ノードと複数の仮想記憶ノードとの対応関係を示す第1の管理情報と、前記データ要素と前記データ要素を格納する仮想記憶ノードとの対応関係を示す第2の管理情報とを含むグループ情報に基づいて、各データ要素を前記複数の記憶ノードに格納する手順と、
前記複数の記憶ノードのいずれかが前記ストレージシステムから離脱した場合、当該離脱した記憶ノードである減設ノードを除いた前記グループ情報である減設後のグループ情報と、前記減設ノードが離脱する前の前記グループ情報を、前記第1の管理情報にて示される前記記憶ノードと前記仮想記憶ノードとの対応関係を所定の入替規則に従って変更した入替グループ情報とに基づいて、各データ要素を格納する記憶ノードを変更する、手順とを実行させるプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020119663A JP2022016753A (ja) | 2020-07-13 | 2020-07-13 | ストレージシステム、制御方法及びプログラム |
US17/181,974 US20220011977A1 (en) | 2020-07-13 | 2021-02-22 | Storage system, control method, and recording medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020119663A JP2022016753A (ja) | 2020-07-13 | 2020-07-13 | ストレージシステム、制御方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022016753A true JP2022016753A (ja) | 2022-01-25 |
Family
ID=79172637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020119663A Pending JP2022016753A (ja) | 2020-07-13 | 2020-07-13 | ストレージシステム、制御方法及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220011977A1 (ja) |
JP (1) | JP2022016753A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7261756B2 (ja) * | 2020-02-10 | 2023-04-20 | 株式会社日立製作所 | ストレージシステム、処理方法 |
CN117714475B (zh) * | 2023-12-08 | 2024-05-14 | 江苏云工场信息技术有限公司 | 用于边缘云存储的智能管理方法及系统 |
-
2020
- 2020-07-13 JP JP2020119663A patent/JP2022016753A/ja active Pending
-
2021
- 2021-02-22 US US17/181,974 patent/US20220011977A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20220011977A1 (en) | 2022-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7831764B2 (en) | Storage system having plural flash memory drives and method for controlling data storage | |
US8495293B2 (en) | Storage system comprising function for changing data storage mode using logical volume pair | |
JP6807376B2 (ja) | 仮想ストレージシステム | |
JP5315348B2 (ja) | シン・プロビジョニングの移行および取り消しのための方法および装置 | |
JP4771615B2 (ja) | 仮想記憶システム | |
JP5302582B2 (ja) | 上位装置から指定されるデバイスに関する記憶容量を変更するストレージシステム及び方法 | |
JP4961319B2 (ja) | 仮想ボリュームにおける仮想領域に動的に実領域を割り当てるストレージシステム | |
JP6569477B2 (ja) | ストレージ制御装置、および制御プログラム | |
CN110383251B (zh) | 存储系统、计算机可读记录介质、系统的控制方法 | |
JP2002259062A (ja) | 記憶装置システム及び記憶装置システムにおけるデータの複写方法 | |
JP2000010738A (ja) | ディスクアレイシステム、同システムに適用される記憶容量拡張方法および記録媒体 | |
CN113448502B (zh) | 分布式存储系统和存储控制方法 | |
JP7472341B2 (ja) | ストレージシステム及びストレージシステムの制御方法 | |
JP2022016753A (ja) | ストレージシステム、制御方法及びプログラム | |
JP2010055247A (ja) | ストレージシステム及び構成管理方法 | |
JP3687111B2 (ja) | 記憶装置システムおよび記憶装置の制御方法 | |
US20180307427A1 (en) | Storage control apparatus and storage control method | |
JP2008134720A (ja) | 情報記憶装置 | |
KR100472207B1 (ko) | 다중 레이드 제어기를 통한 데이터 분산 공유 레이드 제어시스템 | |
JP7373018B2 (ja) | 仮想ストレージシステム | |
JP7137612B2 (ja) | 分散型ストレージシステム、データ復旧方法、及びデータ処理プログラム | |
US11544005B2 (en) | Storage system and processing method | |
JP7337872B2 (ja) | 複合型ストレージシステム及びその制御方法 | |
JP5691234B2 (ja) | ディスクアレイ装置、及び、ミラーリング制御方法 | |
JP2023003824A (ja) | ストレージシステム及びストレージシステムのファイル配置方法 |