JP2024061460A - ストレージシステムおよびストレージ制御方法 - Google Patents
ストレージシステムおよびストレージ制御方法 Download PDFInfo
- Publication number
- JP2024061460A JP2024061460A JP2022169428A JP2022169428A JP2024061460A JP 2024061460 A JP2024061460 A JP 2024061460A JP 2022169428 A JP2022169428 A JP 2022169428A JP 2022169428 A JP2022169428 A JP 2022169428A JP 2024061460 A JP2024061460 A JP 2024061460A
- Authority
- JP
- Japan
- Prior art keywords
- storage
- log
- data
- node
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000011084 recovery Methods 0.000 claims abstract description 34
- 238000012546 transfer Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 201000004283 Shwachman-Diamond syndrome Diseases 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 235000019333 sodium laurylsulphate Nutrition 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- 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/0638—Organizing or formatting or addressing of data
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)
- Computer Security & Cryptography (AREA)
- Hardware Redundancy (AREA)
Abstract
【課題】性能と信頼性の高さを兼ね備えたストレージシステムを実現すること。
【解決手段】ストレージシステム100は、不揮発性の記憶デバイス1033と、前記記憶デバイスに対するデータの読み書きを処理するストレージコントローラ1083と、揮発性のメモリ1032と、を有するストレージノード103を複数備えたストレージシステムであって、前記ストレージコントローラ1083は、前記データの書き込みに関するデータを前記メモリ1032に格納し、前記メモリ1032に格納したデータのうち、不揮発化が必要なデータを前記記憶デバイス1033にログデータとして格納し、前記記憶デバイス1033に格納したログデータを複数のストレージノード間で冗長化し、いずれかのストレージノードの記憶デバイス1033に格納したログデータに問題が生じた場合に、前記ログデータの回復処理を行う。
【選択図】図15
【解決手段】ストレージシステム100は、不揮発性の記憶デバイス1033と、前記記憶デバイスに対するデータの読み書きを処理するストレージコントローラ1083と、揮発性のメモリ1032と、を有するストレージノード103を複数備えたストレージシステムであって、前記ストレージコントローラ1083は、前記データの書き込みに関するデータを前記メモリ1032に格納し、前記メモリ1032に格納したデータのうち、不揮発化が必要なデータを前記記憶デバイス1033にログデータとして格納し、前記記憶デバイス1033に格納したログデータを複数のストレージノード間で冗長化し、いずれかのストレージノードの記憶デバイス1033に格納したログデータに問題が生じた場合に、前記ログデータの回復処理を行う。
【選択図】図15
Description
本発明は、ストレージシステムおよびストレージ制御方法に関する。
従来、ストレージシステムにおいて、可用性及び信頼性向上のために冗長化構成が採用されている。
例えば、特許文献1にて、次のようなストレージシステムが提案されている。
複数のストレージノードを有する記憶システムにおいて、ストレージノードが、それぞれ記憶領域を提供する1又は複数の記憶装置と、上位装置からの要求に応じて、要求されたデータを対応する記憶装置に読み書きする1又は複数のストレージ制御部を設けている。各ストレージ制御部は、それぞれ上位装置からの要求に応じて要求されたデータを対応する記憶装置に読み書きするために必要な所定の構成情報を保持し、複数の制御ソフトウェアが冗長化グループとして管理され、同一の冗長化グループに属する各制御ソフトウェアがそれぞれ保持する構成情報は同期して更新され、冗長化グループを構成する複数の制御ソフトウェアを、各ストレージノードの負荷を分散するように、それぞれ異なる前記ストレージノードに配置する。
例えば、特許文献1にて、次のようなストレージシステムが提案されている。
複数のストレージノードを有する記憶システムにおいて、ストレージノードが、それぞれ記憶領域を提供する1又は複数の記憶装置と、上位装置からの要求に応じて、要求されたデータを対応する記憶装置に読み書きする1又は複数のストレージ制御部を設けている。各ストレージ制御部は、それぞれ上位装置からの要求に応じて要求されたデータを対応する記憶装置に読み書きするために必要な所定の構成情報を保持し、複数の制御ソフトウェアが冗長化グループとして管理され、同一の冗長化グループに属する各制御ソフトウェアがそれぞれ保持する構成情報は同期して更新され、冗長化グループを構成する複数の制御ソフトウェアを、各ストレージノードの負荷を分散するように、それぞれ異なる前記ストレージノードに配置する。
特許文献1によれば、ソフトウェアによりストレージシステムを構築する技術(ソフトウェアデファインドストレージ:SDS)を用い、ノード障害時にも読み書きを継続できるストレージシステムを構築できる。このようなストレージシステムで性能と信頼性を向上するためには、各種データを不揮発化して保護することが求められる。本発明は、ストレージシステムにおける制御情報やキャッシュデータ等を保護する技術を提案しようとするものである。
上記目的を達成するために、代表的な本発明ストレージシステムの一つは、不揮発性の記憶デバイスと、前記記憶デバイスに対するデータの読み書きを処理するストレージコントローラと、揮発性のメモリと、を有するストレージノードを複数備えたストレージシステムであって、前記ストレージコントローラは、前記データの書き込みに関するデータを前記メモリに格納し、前記メモリに格納したデータのうち、不揮発化が必要なデータを前記記憶デバイスにログデータとして格納し、前記記憶デバイスに格納したログデータを複数のストレージノード間で冗長化し、いずれかのストレージノードの記憶デバイスに格納したログデータに問題が生じた場合に、前記ログデータの回復処理を行うことを特徴とする。
また、代表的な本発明のストレージ制御方法の一つは、不揮発性の記憶デバイスと、前記記憶デバイスに対するデータの読み書きを処理するストレージコントローラと、揮発性のメモリと、を有するストレージノードを複数備えたストレージシステムにおけるストレージ制御方法であって、前記ストレージコントローラが、前記データの書き込みに関するデータを前記メモリに格納し、前記メモリに格納したデータのうち、不揮発化が必要なデータを前記記憶デバイスにログデータとして格納し、前記記憶デバイスに格納したログデータを複数のストレージノード間で冗長化し、いずれかのストレージノードの記憶デバイスに格納したログデータに問題が生じた場合に、前記ログデータの回復処理を行うことを特徴とする。
また、代表的な本発明のストレージ制御方法の一つは、不揮発性の記憶デバイスと、前記記憶デバイスに対するデータの読み書きを処理するストレージコントローラと、揮発性のメモリと、を有するストレージノードを複数備えたストレージシステムにおけるストレージ制御方法であって、前記ストレージコントローラが、前記データの書き込みに関するデータを前記メモリに格納し、前記メモリに格納したデータのうち、不揮発化が必要なデータを前記記憶デバイスにログデータとして格納し、前記記憶デバイスに格納したログデータを複数のストレージノード間で冗長化し、いずれかのストレージノードの記憶デバイスに格納したログデータに問題が生じた場合に、前記ログデータの回復処理を行うことを特徴とする。
本発明によれば、性能と信頼性の高さを兼ね備えたストレージシステムを実現することができる。
以下、図面について、本発明の実施の形態を詳述する。実施の形態は、例えば、1以上のSDSが実装された複数のストレージノードを備えるストレージシステムに関するものである。
開示する実施の形態においては、ストレージノードはメモリ上に制御情報やキャッシュデータを格納する。そしてストレージノードは不揮発デバイスを備える。ストレージノードは、ホストからの書き込み要求に応じて制御情報やデータを更新する際に、更新データをログ形式でこの不揮発デバイスに格納する。これによって、更新データの不揮発化が可能になる。その後、ホストに応答する。そして、これとは非同期に、メモリ内のデータを記憶デバイスにデステージする。デステージでは、ストレージシステムに書き込んだデータを反映して記憶デバイスに書き込む処理を行う。デステージにおいてはシンプロビジョニングやスナップショット、データの冗長化等の各種ストレージ機能が提供され、データを検索したり、ランダムにアクセスしたりできるようにするため、論物変換アドレスを作成するなどの処理がある。対して、ログ形式での不揮発デバイス格納は、メモリ内のデータを失った場合に復元することを目的とするため、格納のための処理が軽くて速い。そのため、揮発性メモリを用いた場合に、データを不揮発性の記憶デバイスにログ形式で素早く格納してホスト装置に完了応答することで、レスポンス性能を高めることができる。
ログ形式での格納のとき、制御情報やデータを追記書き形式で格納する。追記書きで格納するため空き領域の回収が必要である。空き領域回収のためにベースイメージ退避方式とガベージコレクション方式の二種類の方式を使い分ける。ベースイメージ退避方式は制御情報やキャッシュデータの一定の対象領域全体を不揮発デバイスに書き出し、その間の更新ログを全て破棄(空き領域として回収)する方式である。ガベージコレクション方式は、更新ログのうち最新ではない不要なログを識別し、不要なログ以外のログを別領域に書き移すことでログ領域を回収する方式である。電断時にはこのベースイメージ退避およびログを用いて制御情報やキャッシュデータをメモリに復元することで失わずに済む。両方式を使い分けて空き領域回収を行うことにより、空き管理のための管理情報を小さくでき、かつ空き領域回収のためのオーバヘッドを小さくすることができ、ストレージの性能を向上させることができる。
また、ログ形式で記憶デバイスに格納したデータは、複数のストレージノードで冗長化する。このため、いずれかのストレージノードの記憶デバイスに障害が発生した場合にも他のストレージノードの記憶デバイスから制御情報やキャッシュデータを回復できる。さらに、各ストレージノードのメモリの状態を同期しておくことで、自ノードのメモリから記憶デバイスのデータの回復が可能となる。
開示する実施の形態においては、ストレージノードはメモリ上に制御情報やキャッシュデータを格納する。そしてストレージノードは不揮発デバイスを備える。ストレージノードは、ホストからの書き込み要求に応じて制御情報やデータを更新する際に、更新データをログ形式でこの不揮発デバイスに格納する。これによって、更新データの不揮発化が可能になる。その後、ホストに応答する。そして、これとは非同期に、メモリ内のデータを記憶デバイスにデステージする。デステージでは、ストレージシステムに書き込んだデータを反映して記憶デバイスに書き込む処理を行う。デステージにおいてはシンプロビジョニングやスナップショット、データの冗長化等の各種ストレージ機能が提供され、データを検索したり、ランダムにアクセスしたりできるようにするため、論物変換アドレスを作成するなどの処理がある。対して、ログ形式での不揮発デバイス格納は、メモリ内のデータを失った場合に復元することを目的とするため、格納のための処理が軽くて速い。そのため、揮発性メモリを用いた場合に、データを不揮発性の記憶デバイスにログ形式で素早く格納してホスト装置に完了応答することで、レスポンス性能を高めることができる。
ログ形式での格納のとき、制御情報やデータを追記書き形式で格納する。追記書きで格納するため空き領域の回収が必要である。空き領域回収のためにベースイメージ退避方式とガベージコレクション方式の二種類の方式を使い分ける。ベースイメージ退避方式は制御情報やキャッシュデータの一定の対象領域全体を不揮発デバイスに書き出し、その間の更新ログを全て破棄(空き領域として回収)する方式である。ガベージコレクション方式は、更新ログのうち最新ではない不要なログを識別し、不要なログ以外のログを別領域に書き移すことでログ領域を回収する方式である。電断時にはこのベースイメージ退避およびログを用いて制御情報やキャッシュデータをメモリに復元することで失わずに済む。両方式を使い分けて空き領域回収を行うことにより、空き管理のための管理情報を小さくでき、かつ空き領域回収のためのオーバヘッドを小さくすることができ、ストレージの性能を向上させることができる。
また、ログ形式で記憶デバイスに格納したデータは、複数のストレージノードで冗長化する。このため、いずれかのストレージノードの記憶デバイスに障害が発生した場合にも他のストレージノードの記憶デバイスから制御情報やキャッシュデータを回復できる。さらに、各ストレージノードのメモリの状態を同期しておくことで、自ノードのメモリから記憶デバイスのデータの回復が可能となる。
(1)実施例1
(1-1)実施例1のストレージシステムの構成
図1において、全体として実施例1のストレージシステムを示す。
ストレージシステム100は、例えば、複数のホスト装置101(Host)と、複数のストレージノード103(Storage Node)と、管理ノード104(Management Node)とを備える。ホスト装置101とストレージノード103と管理ノード104とは、ファイバーチャネル(Fibre Channel)、イーサネット(登録商標)、LAN(Local Area Network)等から構成されるネットワーク102を介して相互に接続される。
(1-1)実施例1のストレージシステムの構成
図1において、全体として実施例1のストレージシステムを示す。
ストレージシステム100は、例えば、複数のホスト装置101(Host)と、複数のストレージノード103(Storage Node)と、管理ノード104(Management Node)とを備える。ホスト装置101とストレージノード103と管理ノード104とは、ファイバーチャネル(Fibre Channel)、イーサネット(登録商標)、LAN(Local Area Network)等から構成されるネットワーク102を介して相互に接続される。
ホスト装置101は、ユーザ操作、実装されたアプリケーションプログラム等からの要求に応じて、ストレージノード103に対してリード要求またはライト要求(以下、適宜、これらをまとめてI/O(Input/Output)要求と呼ぶ)を送信する汎用のコンピュータ装置である。なお、ホスト装置101は、仮想マシンのような仮想的なコンピュータ装置であってもよい。
ストレージノード103は、データを読み書きするための記憶領域をホスト装置101に対して提供するコンピュータ装置である。ストレージノード103は、例えば、汎用のサーバ装置である。
管理ノード104は、システム管理者が本ストレージシステム100全体を管理するために利用するコンピュータ装置である。管理ノード104は、複数のストレージノード103をクラスタと呼ぶグループとして管理する。なお、図1では、クラスタが1つのみ設けられた例を示しているが、ストレージシステム100内に複数のクラスタを設けるようにしてもよい。
管理ノード104は、システム管理者が本ストレージシステム100全体を管理するために利用するコンピュータ装置である。管理ノード104は、複数のストレージノード103をクラスタと呼ぶグループとして管理する。なお、図1では、クラスタが1つのみ設けられた例を示しているが、ストレージシステム100内に複数のクラスタを設けるようにしてもよい。
このように、ストレージシステム100は、2台以上のストレージノード103と1台以上のホスト装置101と1台の管理ノード104で構成する。図示の構成は例示であり、ホスト装置101とストレージノード103と管理ノード104は同一のノードでも良い。また、仮想マシンやコンテナで実現してもよいし、1のマシンにプロセスとして同居する構成でもよい。
図2は、ストレージノード103の物理構成の一例を示す図である。
ストレージノード103は、CPU(Central Processing Unit)1031、メモリ1032、複数の記憶デバイス1033(Drive)および通信装置1034(NIC:Network Interface Card)を備える。
ストレージノード103は、CPU(Central Processing Unit)1031、メモリ1032、複数の記憶デバイス1033(Drive)および通信装置1034(NIC:Network Interface Card)を備える。
CPU1031は、ストレージノード全体の動作制御を司るプロセッサである。メモリ1032は、SRAM(Static RAM(Random Access Memory))、DRAM(Dynamic RAM)等の半導体メモリから構成される。メモリ1032は、各種のプログラム、必要なデータを一時的に保持するために利用される。揮発性メモリ1032に格納されたプログラムをCPU1031が実行することにより、後述のようなストレージノード103全体としての各種の処理が実行される。
記憶デバイス1033は、SSD(Solid State Drive)、SAS(Serial Attached SCSI(Small Computer System Interface))ハードディスクドライブ、SATA(Serial ATA(Advanced Technology Attachment))ハードディスクドライブ等の1または複数種類の大容量の不揮発性の記憶装置から構成される。記憶デバイス1033は、ホスト装置101からのI/O要求に応じてデータをリードまたはライトするための物理的な記憶領域を提供する。
通信装置1034は、ストレージノード103がネットワーク102を介してホスト装置101、他のストレージノード103または管理ノード104と通信を行うためのインターフェースである。通信装置1034は、例えば、NIC、FCカード等から構成される。通信装置1034は、ホスト装置101、他のストレージノード103または管理ノード104との通信時におけるプロトコル制御を行う。
図3は、ストレージノード103の論理構成の一例を示す図である。
ストレージノード103は、フロントエンドドライバ1081(Front-end
driver)と、バックエンドドライバ1087(Back-end driver)と、1または複数のストレージコントローラ1083(Storage Controller)と、データ保護制御部1086(Data Protection Controller)と、を備える。
ストレージノード103は、フロントエンドドライバ1081(Front-end
driver)と、バックエンドドライバ1087(Back-end driver)と、1または複数のストレージコントローラ1083(Storage Controller)と、データ保護制御部1086(Data Protection Controller)と、を備える。
フロントエンドドライバ1081は、通信装置1034を制御し、ストレージコントローラ1083に対してホスト装置101、他のストレージノード103または管理ノード104との通信時における抽象化したインターフェースをCPU1031に提供する機能を有するソフトウェアである。
バックエンドドライバ1087は、自ストレージノード103内の各記憶デバイス1033を制御し、各記憶デバイス1033との通信時における抽象化したインターフェースをCPU1031に提供する機能を有するソフトウェアである。
ストレージコントローラ1083は、SDSのコントローラとして機能するソフトウェアである。ストレージコントローラ1083は、ホスト装置101からのI/O要求を受け付け、当該I/O要求に応じたI/Oコマンドをデータ保護制御部1086に発行する。また、ストレージコントローラ1083は、論理ボリューム構成機能を有する。論理ボリューム構成機能は、データ保護制御部が構成した論理チャンクとホストに提供する論理ボリュームを対応付ける。例えばストレートマッピング(論理チャンクと論理ボリュームを1:1で対応付け、論理チャンクのアドレスと論理ボリュームのアドレスを同じとする)方式でも良いし、仮想ボリューム機能(ThinProvisioning)方式(論理ボリュームと論理チャンクを小サイズの領域(ページ)に分け、ページ単位で論理ボリュームと論理チャンクのアドレス同士を対応付ける方式)を採っても良い。
実施例1の場合、ストレージノード103に実装された各ストレージコントローラ1083は、別のストレージノード103に配置された他のストレージコントローラ1083と共に冗長構成を構成するペアとして管理される。以下においては、このペアをストレージコントローラグループ1085と呼ぶものとする。
なお、図3では、2つのストレージコントローラ1083により1つのストレージコントローラグループ1085が構成される場合を示している。以下においても、2つのストレージコントローラ1083によりストレージコントローラグループ1085が構成されるものとして説明を進めるが、3つ以上のストレージコントローラ1083により1つの冗長構成を構成するようにしてもよい。
なお、図3では、2つのストレージコントローラ1083により1つのストレージコントローラグループ1085が構成される場合を示している。以下においても、2つのストレージコントローラ1083によりストレージコントローラグループ1085が構成されるものとして説明を進めるが、3つ以上のストレージコントローラ1083により1つの冗長構成を構成するようにしてもよい。
ストレージコントローラグループ1085では、一方のストレージコントローラ1083がホスト装置101からのI/O要求を受け付けることができる状態(現用系の状態であり、以下、アクティブモードと呼ぶ)に設定される。また、ストレージコントローラグループ1085では、他方のストレージコントローラ1083がホスト装置101からのI/O要求を受け付けない状態(待機系の状態であり、以下、スタンバイモードと呼ぶ)に設定される。なお、アクティブモードのノードをアクティブノードと呼び、スタンバイモードのノードをスタンバイノード呼ぶ。
そして、ストレージコントローラグループ1085では、アクティブモードに設定されたストレージコントローラ1083(以下、アクティブストレージコントローラと呼ぶ)、アクティブストレージコントローラが配置されたストレージノード103に障害が発生した場合等に、それまでスタンバイモードに設定されていたストレージコントローラ1083(以下、スタンバイストレージコントローラと呼ぶ)の状態がアクティブモードに切り替えられる。これにより、アクティブストレージコントローラが稼働し得なくなった場合に、当該アクティブストレージコントローラが実行していたI/O処理を、スタンバイストレージコントローラにより引き継ぐことができる。
そして、ストレージコントローラグループ1085では、アクティブモードに設定されたストレージコントローラ1083(以下、アクティブストレージコントローラと呼ぶ)、アクティブストレージコントローラが配置されたストレージノード103に障害が発生した場合等に、それまでスタンバイモードに設定されていたストレージコントローラ1083(以下、スタンバイストレージコントローラと呼ぶ)の状態がアクティブモードに切り替えられる。これにより、アクティブストレージコントローラが稼働し得なくなった場合に、当該アクティブストレージコントローラが実行していたI/O処理を、スタンバイストレージコントローラにより引き継ぐことができる。
データ保護制御部1086は、各ストレージコントローラグループ1085に対して自ストレージノード103内または他のストレージノード103内の記憶デバイス1033が提供する物理的な記憶領域を割り当てると共に、ストレージコントローラ1083から与えられる上述のI/Oコマンドに従って、指定されたデータを対応する記憶デバイス1033にリードまたはライトする機能を有するソフトウェアである。
この場合、データ保護制御部1086は、ストレージコントローラグループ1085に対して他のストレージノード103内の記憶デバイス1033が提供する物理的な記憶領域を割り当てたときには、当該他のストレージノード103に実装されたデータ保護制御部1086と協働して、そのデータ保護制御部1086との間でネットワーク102を介してデータをやり取りすることにより、そのストレージコントローラグループ1085のアクティブストレージコントローラから与えられたI/Oコマンドに従ってそのデータをその記憶領域にリードまたはライトする。
この場合、データ保護制御部1086は、ストレージコントローラグループ1085に対して他のストレージノード103内の記憶デバイス1033が提供する物理的な記憶領域を割り当てたときには、当該他のストレージノード103に実装されたデータ保護制御部1086と協働して、そのデータ保護制御部1086との間でネットワーク102を介してデータをやり取りすることにより、そのストレージコントローラグループ1085のアクティブストレージコントローラから与えられたI/Oコマンドに従ってそのデータをその記憶領域にリードまたはライトする。
図4は、開示のストレージシステム及びストレージ制御方法の概要を説明する図である。
ホストからのI/O処理や、その他様々な処理のためにストレージコントローラは制御情報やキャッシュデータの更新を行う。この際、メモリ上の制御情報/キャッシュデータを更新するとともに、そのログを記憶デバイスに格納して不揮発化させる。そのために、制御情報ログバッファまたはキャッシュログバッファに更新ログを作成する。ログとは、更新データそれ自体とログヘッダからなり、メモリ上の制御情報やキャッシュデータがどのように更新されたかを示す情報である。ログヘッダには図7に示すように更新位置や更新サイズ、更新同士の順序関係を示す情報が含まれている。
ホストからのI/O処理や、その他様々な処理のためにストレージコントローラは制御情報やキャッシュデータの更新を行う。この際、メモリ上の制御情報/キャッシュデータを更新するとともに、そのログを記憶デバイスに格納して不揮発化させる。そのために、制御情報ログバッファまたはキャッシュログバッファに更新ログを作成する。ログとは、更新データそれ自体とログヘッダからなり、メモリ上の制御情報やキャッシュデータがどのように更新されたかを示す情報である。ログヘッダには図7に示すように更新位置や更新サイズ、更新同士の順序関係を示す情報が含まれている。
ログバッファ上の更新ログは、記憶デバイス上のログ領域に追記書き形式で書き込まれる。この書き込みは即時に行っても良いし、非同期に書き出しても良い。
追記書きを行うため、各デバイス上のログ領域は次第に空き領域が減っていき書き込めなくなってしまう。これを避けるため空き領域の回収が必要である。制御情報用のログ領域とキャッシュデータ用ログ領域でそれぞれ異なる方式を用いる。
追記書きを行うため、各デバイス上のログ領域は次第に空き領域が減っていき書き込めなくなってしまう。これを避けるため空き領域の回収が必要である。制御情報用のログ領域とキャッシュデータ用ログ領域でそれぞれ異なる方式を用いる。
制御情報に対してはベースイメージ退避方式を用いる。ベースイメージ退避方式では、制御情報全体を記憶デバイス上のベースイメージ領域に丸ごとコピーする。コピーが完了したら、コピー開始時点より前の更新ログは全て無効化(空き領域として回収)する。
一方キャッシュデータ用ログ領域の空き領域回収にはガベージコレクション方式用いる。キャッシュデータは、上書きされたり(後述する非同期デステージによって)キャッシュから削除された場合にそのキャッシュデータのログは無効になる。ガベージコレクション方式は、無効になっているログを除いて、有効な古いログをログ領域の末尾に新規ログとしてコピーすることで、ログ領域を空き領域として回収する。
一方キャッシュデータ用ログ領域の空き領域回収にはガベージコレクション方式用いる。キャッシュデータは、上書きされたり(後述する非同期デステージによって)キャッシュから削除された場合にそのキャッシュデータのログは無効になる。ガベージコレクション方式は、無効になっているログを除いて、有効な古いログをログ領域の末尾に新規ログとしてコピーすることで、ログ領域を空き領域として回収する。
図5は、メモリの構成図の一例である。メモリ内には、ストレージ制御情報10321、キャッシュデータ領域10323、キャッシュデータログヘッダ管理テーブル10324、制御情報ログバッファ10325、キャッシュデータログバッファ10326が格納される。
ストレージ制御情報10321は、様々なストレージ機能を実現するための制御情報が格納される領域であり、一例として、キャッシュディレクトリ10322がある。
キャッシュデータログヘッダ管理テーブル10324は、ディスク上の全キャッシュデータログのログヘッダを格納しているテーブルである。
制御情報ログバッファ10325は、制御情報のログを一時的に保持する。キャッシュデータログバッファ10326は、キャッシュデータのログを一時的保持する。
キャッシュデータログヘッダ管理テーブル10324は、ディスク上の全キャッシュデータログのログヘッダを格納しているテーブルである。
制御情報ログバッファ10325は、制御情報のログを一時的に保持する。キャッシュデータログバッファ10326は、キャッシュデータのログを一時的保持する。
図6は、記憶デバイスの構成図の一例である。記憶デバイス上には、制御情報ベースイメージ領域10332、制御情報ログ領域10333、キャッシュデータログ領域10334、永続化領域10335が存在する。
制御情報ベースイメージ領域は後述するベースイメージ退避処理において制御情報全体をコピーする領域である。制御情報ログ領域10333、キャッシュデータログ領域10334はそれぞれ後述のログ退避処理においてログを退避する先の領域である。永続化領域10335はデータ保護制御部1086によって管理される、ユーザデータを格納する領域である。
制御情報ベースイメージ領域は後述するベースイメージ退避処理において制御情報全体をコピーする領域である。制御情報ログ領域10333、キャッシュデータログ領域10334はそれぞれ後述のログ退避処理においてログを退避する先の領域である。永続化領域10335はデータ保護制御部1086によって管理される、ユーザデータを格納する領域である。
図7は、ログヘッダの構造を示す。ログヘッダはメモリ上のログバッファ領域や、記憶デバイス上のログ領域に格納される各ログに含まれるテーブルである。
各ログヘッダにはログシーケンス番号、更新アドレス、更新サイズ、領域種別、有効フラグのフィールドがある。
各ログヘッダにはログシーケンス番号、更新アドレス、更新サイズ、領域種別、有効フラグのフィールドがある。
ログシーケンス番号フィールドには、各ログに一意に付与されるログシーケンス番号が格納される。更新アドレスフィールドには各ログの更新対象の制御情報またはキャッシュデータのアドレスが格納される。更新サイズフィールドには更新するサイズが格納される。領域種別フィールドには制御情報かキャッシュデータのいずれかを識別するための値が格納される。ここでは「制御情報」または「キャッシュデータ」の文字列が格納されるものとする。有効フラグフィールドには「有効」または「無効」の値が設定される。
図8は、ログデータの生成と冗長化についての説明図である。
アクティブノードのストレージコントローラはI/Oを処理し、その動作に応じてメモリ上の制御情報及びキャッシュデータを更新する。その後、制御情報及びキャッシュデータをログバッファに格納し、ログバッファの制御情報及びキャッシュデータからログデータを作成する。具体的には、アクティブノードのストレージコントローラは、制御情報を制御情報ログバッファに格納し、キャッシュデータをキャッシュデータログバッファに格納する。そして、制御情報ログバッファの制御情報から制御情報のログデータを生成して記憶デバイスの制御情報ログ領域に格納する。同様に、キャッシュデータログバッファのキャッシュデータからキャッシュデータのログデータを生成し、記憶デバイスのキャッシュデータログ領域に格納する。
また、アクティブノードのストレージコントローラは、ログバッファの制御情報及びキャッシュデータをスタンバイノードに転送する。
アクティブノードのストレージコントローラはI/Oを処理し、その動作に応じてメモリ上の制御情報及びキャッシュデータを更新する。その後、制御情報及びキャッシュデータをログバッファに格納し、ログバッファの制御情報及びキャッシュデータからログデータを作成する。具体的には、アクティブノードのストレージコントローラは、制御情報を制御情報ログバッファに格納し、キャッシュデータをキャッシュデータログバッファに格納する。そして、制御情報ログバッファの制御情報から制御情報のログデータを生成して記憶デバイスの制御情報ログ領域に格納する。同様に、キャッシュデータログバッファのキャッシュデータからキャッシュデータのログデータを生成し、記憶デバイスのキャッシュデータログ領域に格納する。
また、アクティブノードのストレージコントローラは、ログバッファの制御情報及びキャッシュデータをスタンバイノードに転送する。
スタンバイノードのストレージコントローラはI/O処理を行わないが、アクティブノードのストレージコントローラが停止した際にサービスを引き継ぐために制御情報およびキャッシュデータの複製を持つ。
このため、スタンバイノードのストレージコントローラは、アクティブノードから受信した制御情報を制御情報ログバッファに格納し、アクティブノードから受信したキャッシュデータをキャッシュデータログバッファに格納する。そして、ログバッファに格納した制御情報及びキャッシュデータを用い、スタンバイノードのメモリの状態をアクティブノードのメモリの状態に一致させる。
さらに、スタンバイノードのストレージコントローラは、制御情報ログバッファの制御情報から制御情報のログデータを生成して記憶デバイスの制御情報ログ領域に格納する。同様に、キャッシュデータログバッファのキャッシュデータからキャッシュデータのログデータを生成し、記憶デバイスのキャッシュデータログ領域に格納する。
このため、スタンバイノードのストレージコントローラは、アクティブノードから受信した制御情報を制御情報ログバッファに格納し、アクティブノードから受信したキャッシュデータをキャッシュデータログバッファに格納する。そして、ログバッファに格納した制御情報及びキャッシュデータを用い、スタンバイノードのメモリの状態をアクティブノードのメモリの状態に一致させる。
さらに、スタンバイノードのストレージコントローラは、制御情報ログバッファの制御情報から制御情報のログデータを生成して記憶デバイスの制御情報ログ領域に格納する。同様に、キャッシュデータログバッファのキャッシュデータからキャッシュデータのログデータを生成し、記憶デバイスのキャッシュデータログ領域に格納する。
図9は、制御情報更新処理のフローチャートである。アクティブストレージコントローラがI/Oを受け付けるが、アクティブストレージコントローラに障害が発生しI/O受付が不能となった場合はスタンバイストレージコントローラがI/Oを引き継ぐ。これを実現するためにアクティブとスタンバイの制御情報更新はスタンバイにも反映させる。
制御情報更新処理は、メモリ上の制御情報を更新する際に呼び出される。呼び出される際に、更新対象の制御情報を特定するためのメモリアドレスとサイズ、更新値、および不揮発化要否を示す情報が渡される。
まず、アクティブノードのストレージコントローラ(アクティブストレージコントローラ)は、メモリ上の制御情報を更新する(ステップS101)。次に渡された不揮発化要否を参照し要否を判定する(ステップS102)。
不揮発化が不要である場合(ステップS102;NO)にはそのまま処理を終了する。不揮発化が要である場合(ステップS102;YES)、ログ作成処理を呼び出す(S103)。
不揮発化が不要である場合(ステップS102;NO)にはそのまま処理を終了する。不揮発化が要である場合(ステップS102;YES)、ログ作成処理を呼び出す(S103)。
ログ作成処理の後、アクティブストレージコントローラは、ログをスタンバイノードのストレージコントローラ(スタンバイストレージコントローラ)に送信し(ステップS104)、処理を終了する。
スタンバイストレージコントローラは、アクティブストレージコントローラからログを受信し(ステップS201)、アクティブストレージコントローラの制御情報更新を自ノードのメモリに反映し(ステップS202)、自ノードの記憶デバイスにログデータを格納して(ステップS203)、処理を終了する。
図10は、ログ作成処理のフローチャートである。なお、この処理において「ログバッファ」は、更新対象が制御情報の場合は制御情報ログバッファを、ユーザデータキャッシュの場合はユーザデータキャッシュログバッファを指し示している。
まず、ストレージコントローラは、ログシーケンス番号を決定する(ステップS301)。ログシーケンス番号は、ログの作成順に付与され、必ず一つのログシーケンス番号に対して一つのログが対応する番号である。次にログバッファにおいて次にログを書き込む領域を確保する(ステップS302)。
ログ作成処理は並行動作する複数のプロセスによって実行されても良いがその場合には、同じログシーケンス番号が別プロセスによって取得されないこと、および同じログバッファ領域が別プロセスによって確保されないように排他処理を行う必要がある。
次にログヘッダを作成する(ステップS303)。ログヘッダのシーケンス番号フィールドに上述のログシーケンス番号を格納し、更新アドレスフィールドと更新サイズフィールドに、このログ作成処理に渡されたメモリ上の更新対象アドレスと更新サイズの値を格納する。情報種別フィールドには制御情報更新時は「制御情報」を、キャッシュデータ更新時は「キャッシュデータ」を格納する。
次にログバッファにログを格納する(ステップS304)。ログは、ログヘッダと更新対象データ自体からなり、ログバッファ上で先ほど確保した確保領域の先頭にログヘッダを、確保領域にログヘッダサイズを加算したメモリアドレスに更新データ自体を格納する。
最後にログヘッダ内のログ有効フラグを「有効」にして(ステップS305)、本処理は終了する。
最後にログヘッダ内のログ有効フラグを「有効」にして(ステップS305)、本処理は終了する。
図11は、キャッシュデータ更新処理のフローチャートである。更新対象が制御情報ではなくキャッシュデータである点を除いて、ステップS401~404は、ステップS101~104と同じである。キャッシュデータ更新処理では制御情報更新処理と異なり、ステップS402で不揮発化要と判定された時にステップS405~ステップS407の処理が加わる。
ステップS405では、アクティブストレージコントローラは、上書きかどうかを判定する(ステップS405)。すなわち、キャッシュデータログヘッダ管理テーブルを参照し、同アドレスのログが無いかを検索し、あれば上書きと判定する。上書きだった場合(ステップS405;YES)、ログヘッダ管理テーブルの同アドレスのログを無効化する(ステップS406)。この無効化により有効フラグを「無効」に設定することになる。ステップS406の後、若しくは上書きでない場合(ステップS405;NO)、アクティブストレージコントローラは、ステップS403で作成したログのログヘッダをログヘッダ管理テーブルに追加し(ステップS407)、処理を終了する。
スタンバイストレージコントローラは、アクティブストレージコントローラからログを受信し(ステップS501)、アクティブストレージコントローラのキャッシュデータ更新を自ノードのメモリに反映する(ステップS502)。その後、スタンバイストレージコントローラは、上書きかどうかを判定する(ステップS503)。すなわち、キャッシュデータログヘッダ管理テーブルを参照し、同アドレスのログが無いかを検索し、あれば上書きと判定する。上書きだった場合(ステップS503;YES)、ログヘッダ管理テーブルの同アドレスのログを無効化する(ステップS504)。この無効化により有効フラグを「無効」に設定することになる。ステップS504の後、若しくは上書きでない場合(ステップS503;NO)、スタンバイストレージコントローラは、ステップS501で受信したログのログヘッダをログヘッダ管理テーブルに追加して(ステップS505)、処理を終了する。
図12は、ログ退避処理の処理フローを示す。
まず、アクティブストレージコントローラは、スタンバイストレージコントローラに退避指示を送信する(ステップS601)。その後、アクティブストレージコントローラは、ログバッファを参照し、未退避のログを読み出す(ステップS602)。次に、アクティブストレージコントローラは、未退避ログを記憶デバイス上のログ領域に格納する(ステップS603)。その書き込み位置は、最後に書き込んだログの直後である。アクティブストレージコントローラは、書き込みが完了したらメモリ上のログバッファからログを削除し(ステップS604)、処理を終了する。
スタンバイストレージコントローラは、アクティブストレージコントローラから退避指示を受信する(ステップS701)。その後、スタンバイストレージコントローラは、ログバッファを参照し、未退避のログを読み出す(ステップS702)。次に、スタンバイストレージコントローラは、未退避ログを記憶デバイス上のログ領域に格納する(ステップS703)。その書き込み位置は、最後に書き込んだログの直後である。スタンバイストレージコントローラは、書き込みが完了したらメモリ上のログバッファからログを削除し(ステップS704)、処理を終了する。
まず、アクティブストレージコントローラは、スタンバイストレージコントローラに退避指示を送信する(ステップS601)。その後、アクティブストレージコントローラは、ログバッファを参照し、未退避のログを読み出す(ステップS602)。次に、アクティブストレージコントローラは、未退避ログを記憶デバイス上のログ領域に格納する(ステップS603)。その書き込み位置は、最後に書き込んだログの直後である。アクティブストレージコントローラは、書き込みが完了したらメモリ上のログバッファからログを削除し(ステップS604)、処理を終了する。
スタンバイストレージコントローラは、アクティブストレージコントローラから退避指示を受信する(ステップS701)。その後、スタンバイストレージコントローラは、ログバッファを参照し、未退避のログを読み出す(ステップS702)。次に、スタンバイストレージコントローラは、未退避ログを記憶デバイス上のログ領域に格納する(ステップS703)。その書き込み位置は、最後に書き込んだログの直後である。スタンバイストレージコントローラは、書き込みが完了したらメモリ上のログバッファからログを削除し(ステップS704)、処理を終了する。
図13は、ログ回復(パターン1)の説明図である。パターン1のログ回復では、冗長構成となるペアノードの記憶デバイスからログを回復する。ログ領域を有する記憶デバイス障害時、ストレージコントローラグループ1085のログ領域は同期しているため、ペアノードのログ領域から複製が可能である。
障害が発生すると、障害発生ノードあるいは管理ノードは、ペアノードにログ領域転送指示を出す。指示を受けたペアノードは記憶デバイスからログを読み出し、障害発生ノードに転送する。障害発生ノードは制御情報更新処理およびキャッシュデータ更新処理のログ作成処理にのっとりログ領域を回復する。
図14は、ログ回復処理(パターン1)のフローチャートである。障害発生ノードは、ペアノードにログ転送依頼を送信する(ステップS801)。
ペアノードは、ログ転送依頼を受信すると(ステップS901)、キャッシュデータログヘッダ管理テーブルを参照し、有効ログの情報を取得する(ステップS902)。ペアノードは、有効ログをデバイス内のログ領域から読み出し(ステップS903)、障害発生ノードに送信する(ステップS904)。
障害発生ノードは、ペアノードからログを受信し(ステップS802)、当該ログをドライブ(記憶デバイス1033)に書き出して(ステップS803)、処理を終了する。
ペアノードは、ログ転送依頼を受信すると(ステップS901)、キャッシュデータログヘッダ管理テーブルを参照し、有効ログの情報を取得する(ステップS902)。ペアノードは、有効ログをデバイス内のログ領域から読み出し(ステップS903)、障害発生ノードに送信する(ステップS904)。
障害発生ノードは、ペアノードからログを受信し(ステップS802)、当該ログをドライブ(記憶デバイス1033)に書き出して(ステップS803)、処理を終了する。
図15は、ログ回復(パターン2)の説明図である。パターン2のログ回復では、記憶ドライブの障害を検出した障害発生ノードとペアノードが、それぞれ自ノードのメモリからログを回復する。ログ領域を有する記憶デバイス1033の障害時、ログ領域に格納している情報はメモリ上の制御情報及びキャッシュデータにも格納されているため、メモリからの複製が可能である。
障害が発生すると、障害発生ノードあるいは管理ノードはログ回復処理を実施する。このログ回復処理では、障害発生ノードおよびペアノードは、制御情報の全面を制御情報ベースイメージ領域に退避する。また、障害発生ノードおよびペアノードは、キャッシュデータログヘッダ管理テーブルを参照し有効ログ情報を取得して、キャッシュデータからデータを読み込み、再度ログを生成してキャッシュデータログ領域に格納する。
アクティブ側もデータ書き込みを実行するのは、制御情報のベースイメージの同期をとるためである。
アクティブ側もデータ書き込みを実行するのは、制御情報のベースイメージの同期をとるためである。
図16は、ログ回復処理(パターン2-1:制御情報回復)のフローチャートである。まず、障害発生ノードが、制御情報ベースイメージ退避依頼をペアノードに送信する(ステップS1001)。その後、障害発生ノードは制御情報のベースイメージを自ノードの記憶デバイスに退避させ(ステップS1002)、処理を終了する。
ペアノードは、障害発生ノードから制御情報ベースイメージ退避依頼を受信し(ステップS1101)、制御情報のベースイメージを自ノードの記憶デバイスに退避させ(ステップS1102)、処理を終了する。
ペアノードは、障害発生ノードから制御情報ベースイメージ退避依頼を受信し(ステップS1101)、制御情報のベースイメージを自ノードの記憶デバイスに退避させ(ステップS1102)、処理を終了する。
図17は、ログ回復処理(パターン2-2:キャッシュデータログ回復)のフローチャートである。
キャッシュデータのログを回復するノードのストレージコントローラは、キャッシュデータログヘッダ管理テーブルをスキャンし(ステップS1201)、ログが有効であるか否かを判定する(ステップS1202)。ログが無効である場合(ステップS1202;NO)は、当該ログはデステージ済みであるので、当該ログについては処理を終了する。
キャッシュデータのログを回復するノードのストレージコントローラは、キャッシュデータログヘッダ管理テーブルをスキャンし(ステップS1201)、ログが有効であるか否かを判定する(ステップS1202)。ログが無効である場合(ステップS1202;NO)は、当該ログはデステージ済みであるので、当該ログについては処理を終了する。
ログが有効である場合(ステップS1202;YES)、ストレージコントローラは、キャッシュデータからデータを読み込み(ステップS1203)、読み込んだデータを用いて再度ログを生成する(ステップS1204)。
その後、トレージコントローラは、上書きかどうかを判定する(ステップS1205)。すなわち、キャッシュデータログヘッダ管理テーブルを参照し、同アドレスのログが無いかを検索し、あれば上書きと判定する。上書きだった場合(ステップS1205;YES)、ログヘッダ管理テーブルの同アドレスのログを無効化する(ステップS1206)。この無効化により有効フラグを「無効」に設定することになる。ステップS1206の後、若しくは上書きでない場合(ステップS1205;NO)、ストレージコントローラは、ステップS1203で作成したログのログヘッダをログヘッダ管理テーブルに追加し(ステップS1207)、処理を終了する。
図18は、ノード障害回復やノード増減設時のフローチャートである。ログ回復処理により、ノード障害回復やノード増減設にも対応できる。ログ回復処理は、パターン1とパターン2のいずれでも対応可能である。
まず、障害回復や増減設を行うノードからペアノードにメモリ転送を依頼する(ステップS1301)。
ペアノードは、メモリ転送依頼を受信すると(ステップS1401)、制御情報とキャッシュデータ、ログヘッダ管理テーブルをメモリから読み(ステップS1402)、依頼元に転送する(ステップS1403)。
障害回復や増減設を行うノードは受信した内容をメモリに反映し(ステップS1302)、ログ回復処理によりログを再生成して(ステップS1303)、処理を終了する。
ペアノードは、メモリ転送依頼を受信すると(ステップS1401)、制御情報とキャッシュデータ、ログヘッダ管理テーブルをメモリから読み(ステップS1402)、依頼元に転送する(ステップS1403)。
障害回復や増減設を行うノードは受信した内容をメモリに反映し(ステップS1302)、ログ回復処理によりログを再生成して(ステップS1303)、処理を終了する。
なお、ドライブ増減設時も同様に対応可能である。ドライブ数が変更すると、ログを再配置する必要があるので、ストレージコントローラは、ドライブ数変更後、ログ領域を再設定する。また、再設定後はログ回復処理(パターン1とパターン2のいずれでも対応可能)によりログを再生成し、格納し直す。
図19は、キャッシュデータログ領域のガベージコレクションのフローチャートである。この場合の回復処理は、回復処理パターン2-2を適用する。
キャッシュデータログ領域に格納されたデータは上書きや当該キャッシュのドライブ反映により不要(無効)となる。
領域格納順序と無効化順序とは一致しないため、フラグメンテーションが発生する。そこで、連続空き領域が一定値を下回る場合にガベージコレクションを実施する。
キャッシュデータログ領域に格納されたデータは上書きや当該キャッシュのドライブ反映により不要(無効)となる。
領域格納順序と無効化順序とは一致しないため、フラグメンテーションが発生する。そこで、連続空き領域が一定値を下回る場合にガベージコレクションを実施する。
具体的には、ストレージコントローラは、ログ領域の連続空き領域サイズが一定値以下であるか否かを判定する(ステップS1501)。空き領域サイズが一定値を超えるならば(ステップS1501;NO)、そのまま処理を終了する。
空き領域サイズが一定値以下であれば(ステップS1501;YES)、ストレージコントローラは、所定値以上の領域に対してログ回復処理パターン2-2を実施し、ログヘッダ管理テーブルから識別される有効ログを再生しログバッファに格納する(ステップS1502)。
その後、ストレージコントローラは、ログ退避処理によりログバッファに格納したログをディスクに書き出し(ステップS1503)、当該領域の旧ログが格納されていた領域を解放して(ステップS1504)、処理を終了する。
その後、ストレージコントローラは、ログ退避処理によりログバッファに格納したログをディスクに書き出し(ステップS1503)、当該領域の旧ログが格納されていた領域を解放して(ステップS1504)、処理を終了する。
上述してきたように、開示のストレージシステム100は、不揮発性の記憶デバイス1033と、前記記憶デバイスに対するデータの読み書きを処理するストレージコントローラ1083と、揮発性のメモリ1032と、を有するストレージノード103を複数備えたストレージシステムであって、前記ストレージコントローラ1083は、前記データの書き込みに関するデータを前記メモリ1032に格納し、前記メモリ1032に格納したデータのうち、不揮発化が必要なデータを前記記憶デバイス1033にログデータとして格納し、前記記憶デバイス1033に格納したログデータを複数のストレージノード間で冗長化し、いずれかのストレージノードの記憶デバイス1033に格納したログデータに問題が生じた場合に、前記ログデータの回復処理を行う。
この構成及び動作によれば、ログデータが拡幅可能となることにより、性能と信頼性の高さを兼ね備えたストレージシステムを実現することができる。
この構成及び動作によれば、ログデータが拡幅可能となることにより、性能と信頼性の高さを兼ね備えたストレージシステムを実現することができる。
また、前記複数のストレージノードは、前記メモリ1032に格納したデータを冗長化し、いずれかのストレージノードの前記記憶デバイス1033に障害が発生した場合に、各ストレージノードのストレージコントローラ1083は、自ノードのメモリに格納されたデータから前記ログデータの再度作成する。
このため、ドライブアクセスおよびネットワーク通信を伴わないログ再冗長化を実現できる。
このため、ドライブアクセスおよびネットワーク通信を伴わないログ再冗長化を実現できる。
また、いずれかのストレージノードの前記記憶デバイス1033に障害が発生した場合に、当該ストレージノードのストレージコントローラ1083は、他のストレージノードの前記記憶デバイス1033に格納されたログデータを取得して前記ログデータを再度冗長化することもできる。
このため、記憶デバイス1033のログを確実に保護することができる。
このため、記憶デバイス1033のログを確実に保護することができる。
また、前記複数のストレージノードは、アクティブ状態のアクティブノードとスタンバイ状態のスタンバイノードとを含み、前記アクティブノードのストレージコントローラ1083は、制御情報及びキャッシュデータをログバッファに格納し、ログバッファの制御情報及びキャッシュデータから前記ログデータを作成するとともに、前記ログバッファの制御情報及びキャッシュデータを前記スタンバイノードに転送し、前記スタンバイノードのストレージコントローラ1083は、前記アクティブノードから受信した制御情報及びキャッシュデータを用いて前記メモリの状態を前記アクティブノードに一致させるとともに、前記アクティブノードから受信した制御情報及びキャッシュデータを用いて前記ログデータを生成する。
このため、複数のストレージノードのメモリの状態を同期させることができる。
このため、複数のストレージノードのメモリの状態を同期させることができる。
また、前記アクティブノードのストレージコントローラ1083は、前記制御情報及びキャッシュデータについて不揮発化の要否を判定し、不揮発化を要する前記制御情報及びキャッシュデータを前記ログバッファに格納することを特徴とする。
このため、制御情報及びキャッシュデータを効率的に不揮発化できる。
このため、制御情報及びキャッシュデータを効率的に不揮発化できる。
また、前記アクティブノードのストレージコントローラ1083は、前記キャッシュデータについて、ログ単位で前記記憶デバイス1033に書き出して空き領域を回収するガベージコレクションを行う。
このため、キャッシュデータを効率的に不揮発化できる。
このため、キャッシュデータを効率的に不揮発化できる。
また、同一のグループに属する複数のストレージノードのいずれかで前記ログデータが消失した場合には、前記グループに属する全てのストレージノードが前記制御情報のベースイメージを前記ログデータの少なくとも一部として自ノードの前記記憶デバイスに格納する。
このため、同一のグループに属する複数のストレージノードが有する制御情報のログデータを同期することができる。
このため、同一のグループに属する複数のストレージノードが有する制御情報のログデータを同期することができる。
前記ストレージコントローラ1083は、前記ストレージノードの数が変化した場合に前記メモリ1032に格納したデータの不揮発化を実行する。
このため、ストレージノードの数が変化した場合にも、ログデータを同期することができる。
このため、ストレージノードの数が変化した場合にも、ログデータを同期することができる。
なお、本発明は上記の実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、かかる構成の削除に限らず、構成の置き換えや追加も可能である。
100:ストレージシステム、101:ホスト装置、102:ネットワーク、103:ストレージノード、104:管理ノード、1031:CPU、1032:メモリ、1033:ドライブ、1083:ストレージコントローラ
Claims (9)
- 不揮発性の記憶デバイスと、前記記憶デバイスに対するデータの読み書きを処理するストレージコントローラと、揮発性のメモリと、を有するストレージノードを複数備えたストレージシステムであって、
前記ストレージコントローラは、
前記データの書き込みに関するデータを前記メモリに格納し、
前記メモリに格納したデータのうち、不揮発化が必要なデータを前記記憶デバイスにログデータとして格納し、
前記記憶デバイスに格納したログデータを複数のストレージノード間で冗長化し、いずれかのストレージノードの記憶デバイスに格納したログデータに問題が生じた場合に、前記ログデータの回復処理を行う
ことを特徴とするストレージシステム。 - 請求項1に記載のストレージシステムであって、
前記複数のストレージノードは、前記メモリに格納したデータを冗長化し、
いずれかのストレージノードの前記記憶デバイスに障害が発生した場合に、各ストレージノードのストレージコントローラは、自ノードのメモリに格納されたデータから前記ログデータの再度作成することを特徴とするストレージシステム。 - 請求項1に記載のストレージシステムであって、
いずれかのストレージノードの前記記憶デバイスに障害が発生した場合に、当該ストレージノードのストレージコントローラは、他のストレージノードの前記記憶デバイスに格納されたログデータを取得して前記ログデータを再度冗長化することを特徴とするストレージシステム。 - 請求項1に記載のストレージシステムであって、
前記複数のストレージノードは、アクティブ状態のアクティブノードとスタンバイ状態のスタンバイノードとを含み、
前記アクティブノードのストレージコントローラは、制御情報及びキャッシュデータをログバッファに格納し、ログバッファの制御情報及びキャッシュデータから前記ログデータを作成するとともに、前記ログバッファの制御情報及びキャッシュデータを前記スタンバイノードに転送し、
前記スタンバイノードのストレージコントローラは、前記アクティブノードから受信した制御情報及びキャッシュデータを用いて前記メモリの状態を前記アクティブノードに一致させるとともに、前記アクティブノードから受信した制御情報及びキャッシュデータを用いて前記ログデータを生成する
ことを特徴とするストレージシステム。 - 請求項4に記載のストレージシステムであって、
前記アクティブノードのストレージコントローラは、前記制御情報及びキャッシュデータについて不揮発化の要否を判定し、不揮発化を要する前記制御情報及びキャッシュデータを前記ログバッファに格納することを特徴とするストレージシステム。 - 請求項4に記載のストレージシステムであって、
前記アクティブノードのストレージコントローラは、前記キャッシュデータについて、ログ単位で前記記憶デバイスに書き出して空き領域を回収するガベージコレクションを行うことを特徴とするストレージシステム。 - 請求項4に記載のストレージシステムであって、
同一のグループに属する複数のストレージノードのいずれかで前記ログデータが消失した場合には、前記グループに属する全てのストレージノードが前記制御情報のベースイメージを前記ログデータの少なくとも一部として自ノードの前記記憶デバイスに格納することを特徴とするストレージシステム。 - 請求項1に記載のストレージシステムであって、
前記ストレージコントローラは、前記ストレージノードの数が変化した場合に前記メモリに格納したデータの不揮発化を実行することを特徴とするストレージシステム。 - 不揮発性の記憶デバイスと、前記記憶デバイスに対するデータの読み書きを処理するストレージコントローラと、揮発性のメモリと、を有するストレージノードを複数備えたストレージシステムにおけるストレージ制御方法であって、
前記ストレージコントローラが、
前記データの書き込みに関するデータを前記メモリに格納し、
前記メモリに格納したデータのうち、不揮発化が必要なデータを前記記憶デバイスにログデータとして格納し、
前記記憶デバイスに格納したログデータを複数のストレージノード間で冗長化し、いずれかのストレージノードの記憶デバイスに格納したログデータに問題が生じた場合に、前記ログデータの回復処理を行う
ことを特徴とするストレージ制御方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022169428A JP2024061460A (ja) | 2022-10-21 | 2022-10-21 | ストレージシステムおよびストレージ制御方法 |
US18/119,943 US20240231707A9 (en) | 2022-10-21 | 2023-03-10 | Storage system and storage control method |
CN202311092324.8A CN117917647A (zh) | 2022-10-21 | 2023-08-29 | 记录系统以及记录控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022169428A JP2024061460A (ja) | 2022-10-21 | 2022-10-21 | ストレージシステムおよびストレージ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024061460A true JP2024061460A (ja) | 2024-05-07 |
Family
ID=90729923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022169428A Pending JP2024061460A (ja) | 2022-10-21 | 2022-10-21 | ストレージシステムおよびストレージ制御方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2024061460A (ja) |
CN (1) | CN117917647A (ja) |
-
2022
- 2022-10-21 JP JP2022169428A patent/JP2024061460A/ja active Pending
-
2023
- 2023-08-29 CN CN202311092324.8A patent/CN117917647A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN117917647A (zh) | 2024-04-23 |
US20240134575A1 (en) | 2024-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6009095B2 (ja) | ストレージシステム及び記憶制御方法 | |
US7054960B1 (en) | System and method for identifying block-level write operations to be transferred to a secondary site during replication | |
US7412578B2 (en) | Snapshot creating method and apparatus | |
US8656123B2 (en) | Snapshot preserved data cloning | |
US20040044705A1 (en) | Optimized disk repository for the storage and retrieval of mostly sequential data | |
JP7472341B2 (ja) | ストレージシステム及びストレージシステムの制御方法 | |
US11204709B2 (en) | Storage system and storage control method | |
JP6974281B2 (ja) | ストレージシステム及びストレージ制御方法 | |
JP7167078B2 (ja) | 分散ストレージシステム及び記憶制御方法 | |
CN110134551B (zh) | 一种持续数据保护方法及装置 | |
JP2024061460A (ja) | ストレージシステムおよびストレージ制御方法 | |
US20240231707A9 (en) | Storage system and storage control method | |
WO2018055686A1 (ja) | 情報処理システム | |
CN112256657B (zh) | 日志镜像方法及系统 | |
US20200097180A1 (en) | Storage system for remote replication | |
JP2024077039A (ja) | ストレージシステム及びストレージ制御方法 | |
US11609698B1 (en) | Data storage system and storage control method including storing a log related to the stored data | |
JP7179947B2 (ja) | ストレージシステム及びストレージ制御方法 | |
US20240036989A1 (en) | Storage system and management method | |
US20230280945A1 (en) | Storage system and control method for storage system | |
JP2023152247A (ja) | ストレージシステムおよびストレージ制御方法 | |
CN115480909A (zh) | 存储系统和数据处理方法 | |
JP2023181818A (ja) | ストレージシステムおよびストレージシステムにおけるデータレイアウト変換方法 | |
CN116931819A (zh) | 存储系统及存储控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240313 |