JP2021026512A - ストレージシステムおよびストレージ制御方法 - Google Patents

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

Info

Publication number
JP2021026512A
JP2021026512A JP2019144063A JP2019144063A JP2021026512A JP 2021026512 A JP2021026512 A JP 2021026512A JP 2019144063 A JP2019144063 A JP 2019144063A JP 2019144063 A JP2019144063 A JP 2019144063A JP 2021026512 A JP2021026512 A JP 2021026512A
Authority
JP
Japan
Prior art keywords
storage
volume
control unit
migration
control information
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
Application number
JP2019144063A
Other languages
English (en)
Inventor
晋太郎 伊藤
Shintaro Ito
晋太郎 伊藤
貴大 山本
Takahiro Yamamoto
貴大 山本
秀雄 斎藤
Hideo Saito
秀雄 斎藤
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 JP2019144063A priority Critical patent/JP2021026512A/ja
Priority to US16/796,656 priority patent/US11204709B2/en
Publication of JP2021026512A publication Critical patent/JP2021026512A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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/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/0653Monitoring storage devices or 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/0658Controller construction arrangements
    • 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/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)
  • Retry When Errors Occur (AREA)

Abstract

【課題】ボリュームの移行中に停電等によりストレージシステムがダウンしたとしても、ボリュームの移行を継続することができるストレージシステムを提供する。【解決手段】複数のストレージノードを有するストレージシステムであって、上記ストレージノードは、ボリュームに係る制御情報を記憶する不揮発性の記憶装置と、上記記憶装置への情報の読み書きに係る制御を行う容量制御部と、上記ボリュームを移行する移行制御部と、を備え、ストレージノード間でボリュームを移行させるときに、上記容量制御部は、上記移行制御部による上記ボリュームの移行に応じて、上記制御情報を更新する、ようにした。【選択図】図1

Description

本発明は、ストレージシステムおよびストレージ制御方法に関し、例えば、ストレージノード間でボリュームを移行可能なストレージシステムおよびストレージ制御方法に適用して好適なものである。
従来、ストレージシステムにおいて、複数のストレージサブシステム間でボリュームと当該ボリュームのスナップショット(スナップショットボリューム)とを共に移行する技術が提案されている。
例えば、移行先のストレージサブシステムに移行先のボリュームと移行先のスナップショットボリュームとを用意させ、移行元のボリュームと移行元のスナップショットボリュームとの更新差分を移行先のボリュームへ差分データの書き込み処理として実現することによって、スナップショットボリュームを移行先のストレージサブシステムに移行する技術が開示されている(特許文献1参照)。
また、近年、専用のハードウェアを用いないSDS(Software Defined Storage)の需要が伸びており、汎用のサーバ装置にソフトウェアによりストレージ機能を実装する技術が提案されている。
例えば、複数のストレージノードからなるストレージシステムにおいて、それぞれのストレージノードに制御ソフトウェアを設け、異なるストレージノード上の制御ソフトウェア同士で冗長化グループを構成し、冗長化グループに属する制御ソフトウェア間でそれぞれが保持する制御情報を同期して更新することによって、システム全体のリソースを有効に活用できる制御ソフトウェアの配置方法が知られている。
特開2009−181206号公報
特許文献1に記載の技術によれば、SDSにおいてストレージノード間でスナップショットを移行することができる。しかしながら、移行の最中に停電等によりストレージシステムがダウンすると、移行の過渡状態を示す情報が失われてしまい、移行を最初からやり直す必要がある。
本発明は、以上の点を考慮してなされたもので、ボリュームの移行中に停電等によりストレージシステムがダウンしたとしても、ボリュームの移行を継続することができるストレージシステム等を提案しようとするものである。
かかる課題を解決するため本発明においては、複数のストレージノードを有するストレージシステムであって、前記ストレージノードは、ボリュームに係る制御情報を記憶する不揮発性の記憶装置と、前記記憶装置への情報の読み書きに係る制御を行う容量制御部と、前記ボリュームを移行する移行制御部と、を備え、前記ストレージノード間でボリュームを移行させるときに、前記容量制御部は、前記移行制御部による前記ボリュームの移行に応じて、前記制御情報を更新するようにした。
上記構成では、制御情報が不揮発性の記憶装置に記憶されるので、例えば、ストレージノードが汎用のコンピュータ装置であって、バッテリを備えていない場合であっても、ボリュームの移行時にストレージシステムが停電によりダウンしたときに、制御情報が消失してしまうことがない。よって、ストレージシステムが復旧した際、制御情報を記憶装置から読み出すことで、ボリュームの移行を再開することができる。
本発明によれば、信頼性の高いストレージシステムを実現することができる。
第1の実施の形態によるストレージシステムに係る構成の一例を示す図である。 第1の実施の形態によるストレージノードの物理構成の一例を示す図である。 第1の実施の形態によるストレージノードの論理構成の一例を示す図である。 第1の実施の形態による記憶領域の一例を示す図である。 第1の実施の形態によるソフトウェアモジュール構造の一例を示す図である。 第1の実施の形態によるストレージシステムの概念図である。 第1の実施の形態による論物変換テーブルの一例を示す図である。 第1の実施の形態によるスナップショットペア管理テーブルの一例を示す図である。 第1の実施の形態によるスナップショット差分管理テーブルの一例を示す図である。 第1の実施の形態によるスナップショット論物変換テーブルの一例を示す図である。 第1の実施の形態によるホストボリューム管理テーブルの一例を示す図である。 第1の実施の形態による制御情報アクセス権管理テーブルの一例を示す図である。 第1の実施の形態によるコピー済領域管理テーブルの一例を示す図である。 第1の実施の形態によるコピー中差分管理テーブルの一例を示す図である。 第1の実施の形態によるコピー対象テーブルの一例を示す図である。 第1の実施の形態による制御情報リード処理に係るフローチャートの一例を示す図である。 第1の実施の形態による制御情報ライト処理に係るフローチャートの一例を示す図である。 第1の実施の形態による論理チャンクリード処理に係るフローチャートの一例を示す図である。 第1の実施の形態による物理チャンク代理リード処理に係るフローチャートの一例を示す図である。 第1の実施の形態による論理チャンクライト処理に係るフローチャートの一例を示す図である。 第1の実施の形態による物理チャンク代理ライト処理に係るフローチャートの一例を示す図である。 第1の実施の形態によるホストリードI/O処理に係るフローチャートの一例を示す図である。 第1の実施の形態によるホストライトI/O処理に係るフローチャートの一例を示す図である。 第1の実施の形態による仮想ボリュームライトI/O処理に係るフローチャートの一例を示す図である。 第1の実施の形態による仮想ボリュームリードI/O処理に係るフローチャートの一例を示す図である。 第1の実施の形態によるボリューム移行処理に係るフローチャートの一例を示す図である。 第1の実施の形態によるボリュームコピー処理に係るフローチャートの一例を示す図である。 第1の実施の形態によるスナップショットを伴うボリューム移行処理に係るフローチャートの一例を示す図である。 第2の実施の形態によるホストライトI/O処理に係るフローチャートの一例を示す図である。 第2の実施の形態によるスナップショットを伴うボリューム移行処理に係るフローチャートの一例を示す図である。 第3の実施の形態によるストレージシステムの概要図である。 第4の実施の形態によるボリューム移行処理に係るフローチャートの一例を示す図である。 第5の実施の形態によるストレージシステムの概要図である。
以下、図面について、本発明の一実施の形態を詳述する。本実施の形態は、例えば、1以上のSDSが実装された複数のストレージノードを備えるストレージシステムに関するものである。本実施の形態では、ボリュームの移行の最中に停電等によりストレージシステムがダウンすると、移行の過渡状態を示す情報が失われてしまい、移行を最初からやり直す事態を解決する方法について主に説明する。更には、本実施の形態では、ボリュームの移行中に受領したI/Oデータをロストしたりする事態を解決する方法についても説明する。
また、スナップショット機能では、ボリュームに対する差分データのみを保持することで容量を必要以上に消費しないことが重要である。つまり、ボリュームの移行においても差分データ以上のストレージノード間の転送を行ったり、差分データ以上の書き込みを行わなかったりすることも、スナップショット機能の性能、容量効率等の観点から重要である。本実施の形態では、スナップショットボリュームの移行において、スナップショット機能の性能、容量効率等が低下してしまう事態を解決する方法についても説明する。
なお、以下の説明では、同種の要素を区別しないで説明する場合には、枝番を含む参照符号のうちの共通部分(枝番を除く部分)を使用し、同種の要素を区別して説明する場合は、枝番を含む参照符号を使用することがある。例えば、ストレージノードを特に区別しないで説明する場合には、「ストレージノード102」と記載し、個々のストレージノードを区別して説明する場合には、「ストレージノード102−1」、「ストレージノード102−2」のように記載することがある。
(1)第1の実施の形態
(1−1)本実施の形態によるストレージシステムの構成
図1において、100は全体として第1の実施の形態によるストレージシステムを示す。
ストレージシステム100は、例えば、複数のホスト装置101(Host)と、複数のストレージノード102(Storage Node)と、管理ノード103(Management Node)とを備える。ホスト装置101とストレージノード102と管理ノード103とは、ファイバーチャネル(Fibre Channel)、イーサネット(登録商標)、LAN(Local Area Network)等から構成されるネットワーク104を介して相互に接続される。
ホスト装置101は、ユーザ操作、実装されたアプリケーションプログラム等からの要求に応じて、ストレージノード102に対してリード要求またはライト要求(以下、適宜、これらをまとめてI/O(Input/Output)要求と呼ぶ)を送信する汎用のコンピュータ装置である。なお、ホスト装置101は、仮想マシンのような仮想的なコンピュータ装置であってもよい。
ストレージノード102は、データを読み書きするための記憶領域をホスト装置101に対して提供するコンピュータ装置である。ストレージノード102は、例えば、汎用のサーバ装置である。
管理ノード103は、システム管理者が本ストレージシステム100全体を管理するために利用するコンピュータ装置である。管理ノード103は、複数のストレージノード102をクラスタと呼ぶグループとして管理する。なお、図1では、クラスタが1つのみ設けられた例を示しているが、ストレージシステム100内に複数のクラスタを設けるようにしてもよい。
図2は、ストレージノード102の物理構成の一例を示す図である。
ストレージノード102は、CPU(Central Processing Unit)201、メモリ202(Memory)、複数の記憶デバイス203(Drive)および通信装置204(NIC:Network Interface Card)を備える。
CPU201は、ストレージノード102全体の動作制御を司るプロセッサである。メモリ202は、SRAM(Static RAM(Random Access Memory))、DRAM(Dynamic RAM)等の揮発性の半導体メモリから構成される。メモリ202は、各種のプログラム、必要なデータを一時的に保持するために利用される。メモリ202に格納されたプログラムをCPU201が実行することにより、後述のようなストレージノード102全体としての各種の処理が実行される。
記憶デバイス203は、SSD(Solid State Drive)、SAS(Serial Attached SCSI(Small Computer System Interface))ハードディスクドライブ、SATA(Serial
ATA(Advanced Technology Attachment))ハードディスクドライブ等の1または複数種類の大容量の不揮発性の記憶装置から構成される。記憶デバイス203は、ホスト装置101からのI/O要求に応じてデータをリードまたはライトするための物理的な記憶領域を提供する。
通信装置204は、ストレージノード102がネットワーク104を介してホスト装置101、他のストレージノード102または管理ノード103と通信を行うためのインターフェースである。通信装置204は、例えば、NIC、FCカード等から構成される。通信装置204は、ホスト装置101、他のストレージノード102または管理ノード103との通信時におけるプロトコル制御を行う。
図3は、ストレージノード102の論理構成の一例を示す図である。
ストレージノード102は、フロントエンドドライバ301(Front-end driver)と、バックエンドドライバ302(Back-end driver)と、1または複数のストレージ制御部303(Storage Controller)と、容量制御部304(Capacity Controller)と、移行制御部305(Migration Controller)と、を備える。
フロントエンドドライバ301は、通信装置204を制御し、ストレージ制御部303に対してホスト装置101、他のストレージノード102または管理ノード103との通信時における抽象化したインターフェースをCPU201に提供する機能を有するソフトウェアである。
バックエンドドライバ302は、自ストレージノード102内の各記憶デバイス203を制御し、各記憶デバイス203との通信時における抽象化したインターフェースをCPU201に提供する機能を有するソフトウェアである。
ストレージ制御部303は、SDSのコントローラとして機能するソフトウェアである。ストレージ制御部303は、ホスト装置101からのI/O要求を受け付け、当該I/O要求に応じたI/Oコマンドを容量制御部304に発行する。また、ストレージ制御部303は、スナップショット機能を有する。
本実施の形態の場合、ストレージノード102に実装された各ストレージ制御部303は、別のストレージノード102に配置された他のストレージ制御部303と共に冗長構成を構成するペアとして管理される。以下においては、このペアをストレージ制御部ペア310と呼ぶものとする。
なお、図3では、2つのストレージ制御部303により1つのストレージ制御部ペア310が構成される場合を示している。以下においても、2つのストレージ制御部303によりストレージ制御部ペア310が構成されるものとして説明を進めるが、3つ以上のストレージ制御部303により1つの冗長構成を構成するようにしてもよい。
ストレージ制御部ペア310では、一方のストレージ制御部303がホスト装置101からのI/O要求を受け付けることができる状態(現用系の状態であり、以下、アクティブモードと呼ぶ)に設定される。また、ストレージ制御部ペア310では、他方のストレージ制御部303がホスト装置101からのI/O要求を受け付けない状態(待機系の状態であり、以下、パッシブモードと呼ぶ)に設定される。
そして、ストレージ制御部ペア310では、アクティブモードに設定されたストレージ制御部303(以下、アクティブストレージ制御部と呼ぶ)、アクティブストレージ制御部が配置されたストレージノード102に障害が発生した場合等に、それまでパッシブモードに設定されていたストレージ制御部303(以下、パッシブストレージ制御部と呼ぶ)の状態がアクティブモードに切り替えられる。これにより、アクティブストレージ制御部が稼働し得なくなった場合に、当該アクティブストレージ制御部が実行していたI/O処理を、パッシブストレージ制御部により引き継ぐことができる。
容量制御部304は、各ストレージ制御部ペア310に対して自ストレージノード102内または他のストレージノード102内の記憶デバイス203が提供する物理的な記憶領域を割り当てると共に、ストレージ制御部303から与えられる上述のI/Oコマンドに従って、指定されたデータを対応する記憶デバイス203にリードまたはライトする機能を有するソフトウェアである。
この場合、容量制御部304は、ストレージ制御部ペア310に対して他のストレージノード102内の記憶デバイス203が提供する物理的な記憶領域を割り当てたときには、当該他のストレージノード102に実装された容量制御部304と協働して、その容量制御部304との間でネットワーク104を介してデータをやり取りすることにより、そのストレージ制御部ペア310のアクティブストレージ制御部から与えられたI/Oコマンドに従ってそのデータをその記憶領域にリードまたはライトする。
移行制御部305は、ストレージノード102間、ストレージ制御部303間等でボリュームを移行するソフトウェアである。
図4は、容量制御部304が管理する記憶領域の一例を示す図である。
容量制御部304は、図4に示すように、各ストレージノード102内の記憶デバイス203がそれぞれ提供する物理的な記憶領域を、それぞれ所定大きさの物理記憶領域401(以下、物理チャンクと呼ぶ)に分割して管理する。
また、容量制御部304は、各ストレージ制御部ペア310に対してそれぞれ専用のプールを対応付け、これらプールに物理チャンクと同じ大きさの論理的な記憶領域である論理記憶領域402(以下、論理チャンク)を適宜割り当て、論理チャンクに対して1または複数の物理チャンクを対応付ける。
さらに、各ストレージ制御部ペア310のプール上には、1または複数の仮想的な論理ボリューム(以下、仮想ボリュームまたはボリュームと呼ぶ)が定義され、これらの仮想ボリュームがホスト装置101にホストボリュームとして提供される。
ホスト装置101は、かかる仮想ボリュームにデータをライトする場合、データのライト先の仮想ボリューム(以下、ライト対象ボリュームと呼ぶ)の識別子(LUN(Logical Number Unit))と、当該ライト対象ボリュームにおける当該データのライト先の記憶領域(以下、ライト先記憶領域と呼ぶ)とを指定したライト要求を、対応するクラスタ内のいずれかのストレージノード102に送信する。
ライト要求を受信したストレージノード102のフロントエンドドライバ301は、受信したライト要求において指定されたライト対象ボリュームとプールとを介して対応付けられたストレージ制御部ペア310のアクティブストレージ制御部またはパッシブストレージ制御部が配置されている各ストレージノード102のフロントエンドドライバ301に当該ライト要求、および、当該ライト要求と共にホスト装置101から送信されてきたライト対象のデータ(以下、ライトデータと呼ぶ)を転送する。
また、ライト要求およびライトデータを受領したストレージノード102のフロントエンドドライバ301は、ライト要求およびライトデータを、ライト要求において指定されたライト対象ボリュームとプールとを介して対応付けられたストレージ制御部ペア310のストレージ制御部303に引き渡す。
そして、ライト要求およびライトデータが引き渡されたストレージ制御部303のうちのアクティブストレージ制御部は、ライト対象ボリューム内のライト先記憶領域に対して、当該ライト対象ボリュームと対応付けられたプールを構成する論理チャンクから必要に応じて記憶領域(以下、論理領域と呼ぶ)を割り当てる。
また、アクティブストレージ制御部は、ライト要求において指定されたライト対象ボリューム内のライト先記憶領域のアドレスを、当該ライト先記憶領域に論理領域を割り当てた論理チャンクのチャンク番号と、当該論理領域のオフセット位置とに変換したI/Oコマンド(ライトコマンド)を生成し、生成したI/Oコマンドをライトデータと共に自ストレージノード102内の容量制御部304に送信する。
容量制御部304は、I/Oコマンドおよびライトデータを受信すると、当該I/Oコマンドで指定された論理チャンクに対応付けた各物理チャンクをそれぞれ提供する各記憶デバイス203内のかかるオフセット位置の記憶領域にデータをそれぞれ格納する。
このようにしてストレージシステム100では、ホスト装置101からのデータが対応する論理チャンクに対応付けられた複数の物理チャンクに冗長化されて格納される。このため、論理チャンクに割り当てられる物理チャンクの数は、ストレージシステム100における冗長化方式の設定内容によって決定される。
例えば、データを二重化して記憶する設定の場合には、1つの論理チャンクに対して2つの物理チャンクが対応付けられ、データを三重化以上に多重化して記憶する設定の場合、EC(Erasure-Coding)のようにデータから冗長化データを作成して記憶する設定がなされている場合等には、3つ以上の必要な数の物理チャンクが1つの論理チャンクに対応付けられる。
なお、1つの論理チャンクに複数の物理チャンクが対応付けられ、複数の物理チャンクにデータを多重化して格納する場合、複数の物理チャンクの中から1つの物理チャンクが「マスタ」(マスタ面)に設定され、残りの物理チャンクがすべて「ミラー」(ミラー面)に設定される。そして、後述のように、物理チャンクからのデータリードは、「マスタ」に設定された物理チャンクから行われる。また、ECの場合には、1つの論理チャンクに複数の物理チャンクが対応付けられ、複数の物理チャンクにマスタデータおよび冗長データが所定パターンで格納される。
一方、ホスト装置101は、仮想ボリュームからデータを読み出す場合、当該仮想ボリューム(以下、リード対象ボリュームと呼ぶ)のLUNと、当該リード対象ボリュームにおけるそのデータのリード先の記憶領域(以下、リード先領域と呼ぶ)とを指定したリード要求を当該リード対象ボリュームが含まれるクラスタ内のいずれかのストレージノード102に送信する。
リード要求を受信したストレージノード102のフロントエンドドライバ301は、受信したリード要求において指定されたリード対象ボリュームとプールとを介して対応付けられたストレージ制御部ペア310のアクティブストレージ制御部またはパッシブストレージ制御部が配置された各ストレージノード102にリード要求をそれぞれ転送する。
また、リード要求を受領したストレージノード102のフロントエンドドライバ301は、リード要求を当該リード要求において指定されたリード対象ボリュームとプールとを介して対応付けられたストレージ制御部ペア310のストレージ制御部303に引き渡す。
リード要求が引き渡されたストレージ制御部303のうちのアクティブストレージ制御部は、リード対象ボリューム内のリード先領域のアドレスを、当該リード先領域に論理領域を割り当てた論理チャンクのチャンク番号と、当該論理領域のオフセット位置とに変換したI/Oコマンド(リードコマンド)を生成し、生成したI/Oコマンドを自ストレージノード102内の容量制御部304に送信する。
容量制御部304は、I/Oコマンドを受信すると、当該I/Oコマンドで指定された論理チャンクと対応付けられた各物理チャンクのうち、「マスタ」に設定された物理チャンク内のI/Oコマンドで指定されたオフセット位置の記憶領域からデータを読み出し、読み出したデータをリードデータとしてI/Oコマンドの送信元のアクティブストレージ制御部に転送する。リードデータは、この後、アクティブストレージ制御部によりネットワーク104を介してリード要求の送信元のホスト装置101に転送される。
(1−2)論理チャンクに対する物理チャンクの割当て
上述のように1つの論理チャンクに複数の物理チャンクを対応付け、物理チャンクにデータをそれぞれ格納することによりデータを冗長化する冗長化方式を採用する場合、データ保護の観点からも、1つの論理チャンクに対応付ける複数の物理チャンクをそれぞれ異なるストレージノード102が提供する物理チャンクから選択することが望ましい。これは、例えば、1つの論理チャンクに対して同じストレージノード102内の複数の物理チャンクを対応付けた場合、当該ストレージノード102が障害等によりデータの読み出しを行えなくなったときにデータロストが発生することになるからである。
そこで、本ストレージシステム100では、容量制御部304がストレージ制御部ペア310に論理チャンクを割り当て、当該論理チャンクに複数の物理チャンクを対応付ける際に、複数の物理チャンクをそれぞれ互いに異なる複数のストレージノード102が提供する物理チャンクの中から選択することとしている。
一方で、論理チャンクと対応付ける物理チャンクを、アクティブストレージ制御部が配置されたストレージノード102とは別のストレージノード102内の物理チャンクから選択することとした場合、当該アクティブストレージ制御部からのI/Oコマンドを受領した容量制御部304(アクティブストレージ制御部と同じストレージノード102内の容量制御部304)が当該物理チャンクにデータをリードまたはライトする際に、当該物理チャンクを提供するストレージノード102との間の通信が必要となり、その分、システム全体としての応答性能が悪くなるという問題がある。したがって、論理チャンクに複数の物理チャンクを対応付けるに際しては、物理チャンクのうちの1つを、アクティブストレージ制御部が配置されたストレージノード102内の記憶デバイス203が提供する物理チャンクの中から選択する方がシステム全体の応答性能の観点からも望ましい。
また、ストレージ制御部ペア310におけるアクティブストレージ制御部が配置されたストレージノード102に障害が発生した場合に、パッシブストレージ制御部がアクティブモードに切り替えられることを考慮すると、上述と同様の理由により、論理チャンクに対応付ける物理チャンクのうちの1つは、パッシブストレージ制御部が配置されたストレージノード102内の記憶デバイス203が提供する物理チャンクの中から選択する方がシステム全体の応答性能の観点からも望ましい。
そこで、本ストレージシステム100では、容量制御部304がストレージ制御部ペア310に論理チャンクを割り当て、当該論理チャンクに複数の物理チャンクを対応付ける際に、当該ストレージ制御部ペア310のアクティブストレージ制御部が配置されたストレージノード102内の記憶デバイス203が提供する物理チャンクと、当該ストレージ制御部ペア310のパッシブストレージ制御部が配置されたストレージノード102内の記憶デバイス203が提供する物理チャンクとを優先的に当該論理チャンクに対応付ける容量優先割当機能が容量制御部304に搭載されている。
ただし、1つのストレージ制御部ペア310に割り当てられたプール内の論理チャンクに対して、当該ストレージ制御部ペア310を構成するアクティブストレージ制御部またはパッシブストレージ制御部が配置されたストレージノード102から物理チャンクを無制限に対応付けると、当該ストレージノード102にアクティブストレージ制御部またはパッシブストレージ制御部が配置された他のストレージ制御部ペア310の論理チャンクに対して当該ストレージノード102内の記憶デバイス203から物理チャンクを対応付けられなくなるという問題がある。
そこで、かかる容量優先割当機能には、ストレージ制御部ペア310に対し、当該ストレージ制御部ペア310のアクティブストレージ制御部が配置されたストレージノード102、または当該ストレージ制御部ペア310のパッシブストレージ制御部が配置されたストレージノード102から割り当てる物理チャンクの容量を抑制する機能も含まれている。
図5は、ストレージ制御部303、容量制御部304および移行制御部305のソフトウェアモジュール構造の一例を示す図である。
ストレージ制御部303は、容量仮想化処理501およびスナップショット処理502を実行する。
容量仮想化処理501では、ストレージ制御部303は、仮想ボリュームの各アドレス空間に対して、動的に論理チャンクの記憶領域を割り当てる。仮想ボリュームが作成された時点では論理チャンクの記憶領域は、対応付けられていないので、ストレージ制御部303は、ホスト装置101からのデータが書き込まれた際に書き込まれたアドレスに対応する論理チャンクの記憶領域を割り当てる。ストレージ制御部303は、後述する論物変換テーブル700を用いて割当の有無、割当がある場合は割当先(論理チャンク番号、論理チャンクアドレス等)を管理する。
スナップショット処理502では、ストレージ制御部303は、仮想ボリュームに対するスナップショット(仮想ボリュームのレプリカイメージであるスナップショットボリューム)を作成する。スナップショットを作成する元の仮想ボリュームをPVOL、スナップショットボリュームをSVOLと呼ぶ。ストレージ制御部303は、後述するスナップショットペア管理テーブル800でPVOLとSVOLとのペア関係を管理する。また、スナップショットボリュームの作成時点以降に更新された記憶領域を除いてPVOLとSVOLとは同じデータを持つため、PVOLとSVOLとの間で単一の論理チャンク上の記憶領域を消費し、SVOLに対しては作成時点以降でPVOLまたはSVOLが更新され、両者に差分が生じた記憶領域のみ論理チャンク上の記憶領域を消費する。ストレージ制御部303は、この差分の有無を後述するスナップショット差分管理テーブル900にて管理する。また、ストレージ制御部303は、差分のある記憶領域に対するスナップショットボリュームと論理チャンク上の記憶領域との対応関係を後述するスナップショット論物変換テーブル1000にて管理する。
容量制御部304は、論理チャンクリード処理511、論理チャンクライト処理512、物理チャンク代理リード処理513、物理チャンク代理ライト処理514、制御情報リード処理515および制御情報ライト処理516を備える。それぞれの処理の詳細については後述する。
移行制御部305は、ボリューム移行処理521とボリュームコピー処理522とを備える。それぞれの処理の詳細については後述する。
図6は、ストレージシステム100の概念図である。より具体的には、図6は、ストレージシステム100におけるスナップショットを伴うボリューム移行方式の概念図である。
移行制御部305は、移行元のストレージノード102−1にある仮想ボリューム601(移行元ボリューム)と当該仮想ボリューム601のスナップショットボリューム602(移行元スナップショットボリューム)に対応して、移行先のストレージノード102−2のストレージ制御部303−2に仮想ボリューム603(移行先ボリューム)と当該仮想ボリュームのスナップショットボリューム604(移行先スナップショットボリューム)を作成する。移行制御部305は、移行元ボリュームおよび移行元スナップショットボリュームから移行先ボリュームおよび移行先スナップショットボリュームへとデータをコピーする。
この際、移行制御部305は、移行元のストレージノード102−1が持つ制御情報610(Meta-data)を参照し、移行元ボリュームと移行元スナップショットボリュームとの差分データのみを移行先スナップショットボリュームにコピーすることによって効率的にスナップショットを伴う移行が可能になる。移行制御部305が移行元のストレージノード102−1が持つ制御情報610を参照するために、移行制御部305は、容量制御部304−1が制御情報を静止化(書き込み禁止)し、リードオンリーの参照権限を、移行制御部305を含む他のプロセスに付与するための設定を行う。
容量制御部304−1は、制御情報610をデータと同様に冗長化しながら記憶デバイス203に格納している。なお、図示は省略するが、容量制御部304−2は、ストレージノード102−2がホスト装置101に提供する仮想ボリュームの制御情報をデータと同様に冗長化しながら記憶デバイス203に格納している。ただし、移行制御部305が設けられるストレージノード102−2がバッテリを備えている場合、ストレージノード102−2がホスト装置101に提供する仮想ボリュームに係る制御情報を記憶デバイス203に記憶しなくてもよい。
付言するならば、図6では、1つの論理チャンクは、1つの物理チャンクに対応付けられているが、複数の物理チャンクに対応付けられ、ミラーリングされていてもよく、またECのような技術を用いて冗長化されていてもよい。
これによって、制御情報は、ノード障害、ドライブ障害等の際に失われることなく、移行制御部305は、アクセスを継続することができる。また、制御情報は、停電においても記憶デバイス203に格納しているため失われることがない。例えば、容量制御部304−1を通じて他ストレージノード102からも一時的に制御情報610を参照可能とすることにより、移行制御部305が制御情報610を参照することができ、制御情報610を用いてスナップショットボリューム602の効率的な移行が可能となる。
制御情報の更新時には、制御情報ライト処理516が実行され、制御情報の参照時には、制御情報リード処理515が実行される。以降のフローの中で制御情報の具体例である各種テーブルを参照する場合は、そのように解釈される。また、メモリ202に制御情報のコピーが保持されてもよい。
以下、制御情報について説明する。図7〜図15に示すテーブルは、制御情報の一例である。
図7は、論物変換テーブル700の一例を示す図である。論物変換テーブル700は、容量仮想化機能を実現するために必要なテーブルである。論物変換テーブル700は、仮想ボリューム番号701の各仮想ボリュームアドレス702に対して、割当先の論理チャンク番号703と論理チャンクアドレス704とを保持する。割当がある記憶領域に対応するエントリでは、論理チャンク番号703と論理チャンクアドレス704とに値が格納され、未割当の記憶領域に対しては値が格納されない(図中ではハイフンで表記)。
図8は、スナップショットペア管理テーブル800の一例を示す図である。スナップショットペア管理テーブル800は、仮想ボリュームと当該仮想ボリュームのスナップショットボリュームとの各ペア(スナップショットペア)に対して、スナップショットペア番号801(Snapshotペア番号)とPVOL番号802とSVOL番号803とを保持する。
図9は、スナップショット差分管理テーブル900の一例を示す図である。スナップショット差分管理テーブル900は、PVOLとSVOLとにおいてどの記憶領域に差分があるのかを差分ビットマップ(差分BMP)として管理する。より具体的には、スナップショット差分管理テーブル900は、SVOL番号901の各SVOLアドレス902(アドレス空間)に対して差分903を保持する。
図10は、スナップショット論物変換テーブル1000の一例を示す図である。スナップショット論物変換テーブル1000は、SVOL番号1001の各SVOLアドレス1002(アドレス空間)に対して、差分がある場合には論理チャンク番号1003および論理チャンクアドレス1004を保持する。
図11は、ホストボリューム管理テーブル1100の一例を示す図である。ホストボリューム管理テーブル1100は、ホストボリューム番号1101(ホストボリューム)に対して、コピー状態1102、I/O発行先仮想ボリューム番号1103および移行元仮想ボリューム番号1104を保持する。ホストボリューム管理テーブル1100は、通常、I/O発行先仮想ボリューム番号1103のみ値を持ち、コピー状態1102が「コピー中」である場合、移行元仮想ボリューム番号1104に値を持つ。
図12は、制御情報アクセス権管理テーブル1200の一例を示す図である。制御情報アクセス権管理テーブル1200は、各制御情報1201に対して、静止化状態1202およびアクセス権1203を保持する。アクセス権1203には、「ALL(リードオンリー)」またはプロセス識別子が設定される。ALL(リードオンリー)が設定されている場合には全てのプロセスに当該制御情報へのリードアクセス権があることを意味し、プロセス識別子が設定されている場合には当該制御情報へのリードおよびライトアクセス権が当該プロセスにのみあることを示す。
図13は、コピー済領域管理テーブル1300の一例を示す図である。コピー済領域管理テーブル1300は、仮想ボリュームの移行中にのみ使用され、ホストボリュームに対して、どの記憶領域がコピー済であるかを管理する。コピー済領域管理テーブル1300は、ホストボリューム番号1301の各ホストボリュームアドレス1302に対して、コピー済み1303を保持する。
図14は、コピー中差分管理テーブル1400の一例を示す図である。コピー中差分管理テーブル1400は、仮想ボリュームの移行中にのみ使用され、ホストボリュームに対して、コピー開始以降にどの記憶領域が更新されたのかを差分BMPとして管理する。コピー中差分管理テーブル1400は、ホストボリューム番号1401の各ホストボリュームアドレス1402に対して、差分1403を保持する。
図15は、コピー対象テーブル1500の一例を示す図である。コピー対象テーブル1500は、ボリュームコピー処理522の入力として渡され、仮想ボリュームの各仮想ボリュームアドレス1501に対してコピー対象1502を保持する。コピー対象1502には、コピー対象である場合、「あり」、コピー対象外である場合、「なし」が設定される。
図16は、制御情報リード処理515に係るフローチャートの一例を示す図である。制御情報リード処理515は、容量制御部304によって実行される。制御情報リード処理515は、リード対象の制御情報の全部または一部をリード対象として指定されて呼び出される。
まず、容量制御部304は、制御情報アクセス権管理テーブル1200を参照し、リード対象の制御情報に対応するエントリを読み出す(ステップS1601)。
次に、容量制御部304は、当該制御情報の静止化状態1202が「Yes」であり、かつ、アクセス権1203が「ALL(リードオンリー)」であるか否かを判定する(ステップS1602)。容量制御部304は、当該制御情報の静止化状態1202が「Yes」であり、かつ、アクセス権1203が「ALL(リードオンリー)」であると判定した場合、ステップS1603に処理を移し、当該制御情報の静止化状態1202が「Yes」でない、または、アクセス権1203が「ALL(リードオンリー)」でないと判定した場合、ステップS1605に処理を移す。
ステップS1603では、容量制御部304は、論理チャンクリード処理511を行う。論理チャンクリード処理511では、容量制御部304は、制御情報を読み出す。
次に、容量制御部304は、読み出した制御情報を呼び出し元のプロセスに応答し(ステップS1604)、制御情報リード処理515を終了する。
ステップS1605では、容量制御部304は、アクセス権1203が自プロセスにあるか否かを判定する。容量制御部304は、アクセス権1203が自プロセスにあると判定した場合、ステップS1603に処理を移し、アクセス権1203が自プロセスにないと判定した場合、ステップS1606に処理を移す。
ステップS1606では、容量制御部304は、エラー応答し、制御情報リード処理515を終了する。
なお、アクセス権1203の判定については、プロセス単位ではなくストレージノード102単位で行われてもよい。
図17は、制御情報ライト処理516に係るフローチャートの一例を示す図である。制御情報ライト処理516は、容量制御部304によって実行される。制御情報ライト処理516は、ライト対象の制御情報の全部または一部をライト対象として指定されて呼び出される。
まず、容量制御部304は、制御情報アクセス権管理テーブル1200を参照し、ライト対象の制御情報に対応するエントリを読み出す(ステップS1701)。
次に、当該制御情報の静止化状態1202が「Yes」であり、かつ、アクセス権1203が「ALL(リードオンリー)」であるか否かを判定する(ステップS1702)。容量制御部304は、当該制御情報の静止化状態1202が「Yes」であり、かつ、アクセス権1203が「ALL(リードオンリー)」であると判定した場合、ステップS1706に処理を移し、当該制御情報の静止化状態1202が「Yes」でない、または、アクセス権1203が「ALL(リードオンリー)」でないと判定した場合、ステップS1703に処理を移す。
ステップS1703では、容量制御部304は、アクセス権1203が自プロセスにあるか否かを判定する。容量制御部304は、アクセス権1203が自プロセスにあると判定した場合、ステップS1704に処理を移し、アクセス権1203が自プロセスにないと判定した場合、ステップS1706に処理を移す。
ステップS1704では、容量制御部304は、論理チャンクライト処理512を行う。論理チャンクライト処理512では、容量制御部304は、制御情報を更新する。
次に、容量制御部304は、呼び出し元に書き込み成功を応答し(ステップS1705)、制御情報ライト処理516を終了する。
ステップS1706では、容量制御部304は、呼び出し元にエラー応答し、制御情報ライト処理516を終了する。
図18は、論理チャンクリード処理511に係るフローチャートの一例を示す図である。論理チャンクリード処理511は、容量制御部304によって実行される。
まず、容量制御部304は、指定された論理チャンクに対するマスタ面の物理チャンクが自ストレージノード102に存在するか否かを判定する(ステップS1801)。容量制御部304は、指定された論理チャンクに対するマスタ面の物理チャンクが自ストレージノード102に存在すると判定した場合、ステップS1802に処理を移し、指定された論理チャンクに対するマスタ面の物理チャンクが自ストレージノード102に存在しないと判定した場合、ステップS1805に処理を移す。
ステップS1802では、容量制御部304は、指定された論理チャンクのオフセット位置から物理チャンクが配置された先の記憶デバイス203のアドレスに変換する。
次に、容量制御部304は、変換したアドレスをもとに記憶デバイス203をリードし、データを読み出す(ステップS1803)。
ステップS1804では、容量制御部304は、読み出したデータを応答し、論理チャンクリード処理511を終了する。
ステップS1805では、容量制御部304は、マスタ面の物理チャンクが所属するストレージノード102に物理チャンク代理リード要求を発行する。物理チャンク代理リード要求が発行されたストレージノード102では、物理チャンク代理リード処理513が行われる。
図19は、物理チャンク代理リード処理513に係るフローチャートの一例を示す図である。物理チャンク代理リード処理513は、ストレージノード102間の通信により依頼される処理であり、容量制御部304によって実行される。
まず、容量制御部304は、指定された論理チャンクのオフセット位置から物理チャンクが配置された記憶デバイス203のアドレスに変換する(ステップS1901)。
次に、容量制御部304は、変換したアドレスをもとに記憶デバイス203をリードし、データを読み出す(ステップS1902)。
次に、容量制御部304は、読み出したデータを応答し(ステップS1903)、物理チャンク代理リード処理513を終了する。
図20は、論理チャンクライト処理512に係るフローチャートの一例を示す図である。論理チャンクライト処理512は、容量制御部304によって実行される。
まず、容量制御部304は、指定された論理チャンクに対応する物理チャンクを特定する(ステップS2001)。容量制御部304は、特定した物理チャンク数分だけステップS2002〜ステップS2005を繰り返す。
ステップS2002では、容量制御部304は、指定された論理チャンクに対するマスタ面の物理チャンクが自ストレージノード102に存在するか否かを判定する。容量制御部304は、指定された論理チャンクに対するマスタ面の物理チャンクが自ストレージノード102に存在すると判定した場合、ステップS2003に処理を移し、指定された論理チャンクに対するマスタ面の物理チャンクが自ストレージノード102に存在しないと判定した場合、ステップS2005に処理を移す。
ステップS2003では、容量制御部304は、指定された論理チャンクのオフセット位置から物理チャンクが配置された記憶デバイス203のアドレスに変換する。
次に、容量制御部304は、変換したアドレスをもとに記憶デバイス203にデータを書き出す(ステップS2004)。
ステップS2005では、容量制御部304は、マスタ面の物理チャンクが所属するストレージノード102に物理チャンク代理ライト要求を発行する。物理チャンク代理ライト要求が発行されたストレージノード102では、物理チャンク代理ライト処理514が行われる。
図21は、物理チャンク代理ライト処理514に係るフローチャートの一例を示す図である。物理チャンク代理ライト処理514は、ストレージノード102間の通信により依頼される処理であり、容量制御部304によって実行される。
まず、容量制御部304は、指定された論理チャンクのオフセット位置から物理チャンクが配置された記憶デバイス203のアドレスに変換する(ステップS2101)。
次に、容量制御部304は、変換したアドレスをもとに記憶デバイス203にデータを書き出す(ステップS2102)。
次に、容量制御部304は、成功を応答し(ステップS2103)、物理チャンク代理ライト処理514を終了する。
図22は、ホストリードI/O処理に係るフローチャートの一例を示す図である。ホストリードI/O処理は、フロントエンドドライバ301によって実行される。フロントエンドドライバ301がホスト装置101からリード要求を受領すると、ホストリードI/O処理が、ホストボリューム番号とリード対象のホストボリュームアドレスとを伴って呼び出される。
まず、フロントエンドドライバ301は、指定されたホストボリューム管理テーブル1100を参照し、当該ホストボリュームに対応するエントリのコピー状態1102を参照し、「コピー中」であるか否か(ホストボリュームのコピー状態がコピー中であるか否か)を判定する(ステップS2201)。フロントエンドドライバ301は、ホストボリュームのコピー状態がコピー中であると判定した場合、ステップS2202に処理を移し、ホストボリュームのコピー状態がコピー中でないと判定した場合、ステップS2204に処理を移す。
ステップS2202では、フロントエンドドライバ301は、コピー済領域管理テーブル1300における、指定されたリード対象のアドレスに対応するエントリを参照する。
次に、フロントエンドドライバ301は、エントリのコピー済1303が「済」(コピー済)であるか否かを判定する(ステップS2203)。フロントエンドドライバ301は、コピー済であると判定した場合、ステップS2204に処理を移し、コピー済でないと判定した場合、ステップS2205に処理を移す。
ステップS2204では、フロントエンドドライバ301は、当該ホストボリュームに対応するI/O要求の発行対象の仮想ボリュームが所属するストレージ制御部303へ移行先の仮想ボリュームへのリード要求を発行する。
ステップS2205では、フロントエンドドライバ301は、当該ホストボリュームに対応するI/O要求の発行対象の仮想ボリュームが所属するストレージ制御部303に移行元の仮想ボリュームへのリード要求を発行する。
図23は、ホストライトI/O処理に係るフローチャートの一例を示す図である。ホストライトI/O処理は、フロントエンドドライバ301によって実行される。フロントエンドドライバ301がホスト装置101からライト要求を受領すると、ホストライトI/O処理は、ホストボリューム番号とライト対象のホストボリュームアドレスとを伴って呼び出される。
まず、フロントエンドドライバ301は、指定されたホストボリューム管理テーブル1100を参照し、当該ホストボリュームに対応するエントリのコピー状態1102を参照し、「コピー中」であるか否か(ホストボリュームのコピー状態がコピー中であるか否か)を判定する(ステップS2301)。フロントエンドドライバ301は、ホストボリュームのコピー状態がコピー中であると判定した場合、ステップS2302に処理を移し、ホストボリュームのコピー状態がコピー中でないと判定した場合、ステップS2303に処理を移す。
ステップS2302では、フロントエンドドライバ301は、コピー中差分管理テーブル1400を更新し、ステップS2303に処理を移す。
ステップS2303では、フロントエンドドライバ301は、当該ホストボリュームに対応するI/O要求の発行対象の仮想ボリュームが所属するストレージ制御部303へ移行先の仮想ボリュームへのライト要求を発行する。
図24は、仮想ボリュームライトI/O処理に係るフローチャートの一例を示す図である。仮想ボリュームライトI/O処理は、ストレージ制御部303によって実行される。仮想ボリュームライトI/O処理は、仮想ボリューム番号と仮想ボリュームアドレスとを伴って呼び出される。
まず、ストレージ制御部303は、スナップショット処理を行う(ステップS2401)。スナップショット処理とは、当該仮想ボリュームに対応するスナップショットボリュームが作られていた場合に、当該スナップショットボリュームのライト対象のアドレスに対応するスナップショット差分管理テーブル900の差分903を「Yes」(エントリを差分あり)に更新し、スナップショット差分データを論理チャンク内の別記憶領域にコピーしてスナップショット論物変換テーブル1000の当該アドレスに対応するエントリをコピーした別記憶領域へのポインタに更新する処理である。
次に、ストレージ制御部303は、論物変換テーブル700を参照し、仮想ボリュームアドレスに対応する論理チャンク番号および論理チャンクアドレスが割り当てられているか否か(割当済みであるか否か)を判定する(ステップS2402)。ストレージ制御部303は、割当済みであると判定した場合、ステップS2403に処理を移し、割当済みでないと判定した場合、ステップS2405に処理を移す。
ステップS2403では、ストレージ制御部303は、論物変換テーブル700を参照して、仮想ボリュームアドレスに対応する論理チャンク番号および論理チャンクアドレスを算出する。
次に、ストレージ制御部303は、算出した論理チャンク番号および論理チャンクアドレスを含むライトコマンドを生成し、対応する論理チャンクを管理する容量制御部304にライトコマンドを発行し、仮想ボリュームライトI/O処理を終了する。
ステップS2405では、ストレージ制御部303は、論理チャンク上に仮想ボリュームアドレスに対応した記憶領域を割り当て、ステップS2403に処理を移す。
図25は、仮想ボリュームリードI/O処理に係るフローチャートの一例を示す図である。仮想ボリュームリードI/O処理は、ストレージ制御部303によって実行される。仮想ボリュームリードI/O処理は、仮想ボリューム番号と仮想ボリュームアドレスとを伴って呼び出される。
まず、ストレージ制御部303は、論物変換テーブル700を参照し、仮想ボリュームアドレスに対応する論理チャンク番号および論理チャンクアドレスが割り当てられているか否か(割当済みであるか否か)を判定する(ステップS2501)。ストレージ制御部303は、割当済みであると判定した場合、ステップS2502に処理を移し、割当済みでないと判定した場合、ステップS2504に処理を移す。
ステップS2502では、ストレージ制御部303は、仮想ボリュームアドレスに対して論物変換テーブル700を参照して、仮想ボリュームアドレスに対応する論理チャンク番号および論理チャンクアドレスを算出する。
次に、ストレージ制御部303は、算出した論理チャンク番号および論理チャンクアドレスを含むリードコマンドを生成し、対応する論理チャンクを管理する容量制御部304にリードコマンドを発行し(ステップS2503)、仮想ボリュームリードI/O処理を終了する。
ステップS2504では、ストレージ制御部303は、記憶領域を割り当てることはせず、メモリ202上に用意したゼロデータ記憶領域からデータを読み出して応答し、仮想ボリュームリードI/O処理を終了する。
図26は、ボリューム移行処理521に係るフローチャートの一例を示す図である。ボリューム移行処理521は、移行制御部305によって実行される。
まず、移行制御部305は、移行先のストレージノード102に移行先ボリュームを作成する(ステップS2601)。なお、移行先ボリュームのサイズは、移行元ボリュームと同じである。
次に、移行制御部305は、当該ホストボリュームのコピー状態をコピー中にする(ステップS2602)。より具体的には、移行制御部305は、ホストボリューム管理テーブル1100の当該ホストボリュームに対するコピー状態1102を「コピー中」に設定する。
次に、移行制御部305は、当該ホストボリュームに対してI/Oパスを切り替える(ステップS2603)。より具体的には、移行制御部305は、ホストボリューム管理テーブル1100の当該ホストボリュームに対するエントリのI/O発行先仮想ボリューム番号1103を、ステップS2601で作成した移行先ボリュームの仮想ボリューム番号に更新する。
次に、移行制御部305は、ボリュームコピー処理522を行う(ステップS2604)。ボリュームコピー処理は、コピー対象テーブル1500が入力されるが、ここではコピー対象テーブル1500としてコピー対象1502に「あり」(全ボリューム空間に対して「コピー要」)が設定されて呼び出される。
移行制御部305は、ボリュームコピー処理522を終了すると、コピーを完了する(ステップS2605)。より具体的には、移行制御部305は、ホストボリューム管理テーブル1100における当該ホストボリュームに対応するコピー状態1102を「なし」に設定する。
次に、移行制御部305は、移行元ボリュームを削除し(ステップS2606)、ボリューム移行処理521を終了する。
図27は、ボリュームコピー処理522に係るフローチャートの一例を示す図である。ボリュームコピー処理522では、移行制御部305は、対象ボリュームの全アドレス空間にステップS2701〜ステップS2704の処理を繰り返す。
まず、移行制御部305は、入力されたコピー対象テーブル1500を参照し、当該アドレスがコピー対象であるか否かを判定する(ステップS2701)。移行制御部305は、コピー対象であると判定した場合、ステップS2702に処理を移し、コピー対象でないと判定した場合、ステップS2704に処理を移す。
ステップS2702では、移行制御部305は、移行元ボリュームのリードを実行して(ホストリードI/O処理を呼び出して)データを読み出す。
次に、移行制御部305は、読み出したデータを移行先ボリュームの当該アドレスにライトを実行して(ホストライトI/O処理を呼び出して)書き出す(ステップS2703)。
ステップS2704では、移行制御部305は、コピーし終わった記憶領域に対応するコピー済領域管理テーブル1300のエントリのコピー済1303を「済」に更新する。各アドレスに対する記憶領域が未コピー記憶領域であるか否かは、コピー済領域管理テーブル1300にて管理される。移行制御部305は、ボリューム末尾までコピーが済むと、ボリュームコピー処理522を終了する。
図28は、仮想ボリュームおよび当該仮想ボリュームのスナップショットボリュームのボリューム移行処理521(スナップショットを伴うボリューム移行処理)に係るフローチャートの一例を示す図である。スナップショットを伴うボリューム移行処理は、移行制御部305によって実行される。
ステップS2801〜ステップS2805については、前述の図26におけるステップS2601〜ステップS2605と同様の処理をPVOLに実行するものである。移行制御部305は、ステップS2805の後にPVOLを削除するのではなく、ステップS2806に処理を移す。
ステップS2806では、移行制御部305は、移行先PVOLに対するスナップショットボリューム(SVOL)を作成する。
次に、移行制御部305は、SVOLのコピー状態をコピー中に変更する(ステップS2807)。これは、ステップS2802と同様の処理をSVOLについて実行するものである。
次に、移行制御部305は、SVOLに対してI/Oパスを切り替える(ステップS2808)。これは、ステップS2803と同様の処理をSVOLについて実行するものである。
次に、移行制御部305は、移行元のスナップショットの制御情報(例えば、スナップショット差分管理テーブル900、スナップショット論物変換テーブル1000等)をリードオンリーにする(ステップS2809)。より具体的には、移行制御部305は、移行元の制御情報アクセス権管理テーブル1200を更新し、当該移行元SVOLに対するエントリの静止化状態1202を「Yes」に設定し、アクセス権1203を「ALL(リードオンリー)」に設定する。
次に、移行制御部305は、制御情報リード処理515を呼び出して移行元のスナップショットの制御情報をリードする(ステップS2810)。
次に、移行制御部305は、移行中の差分をマージする(ステップS2811)。より具体的には、移行制御部305は、読みこんだスナップショットの制御情報のうちスナップショット差分管理テーブル900と、自ストレージノード102のコピー中差分管理テーブル1400とをマージする。マージするとは、つまり、両テーブルの同じアドレスに対応するエントリの差分を比較し、いずれかが「あり」である場合には「あり」を値に持つような差分テーブルを生成する処理である。
移行制御部305は、SVOLのボリュームコピー処理522を行う(ステップS2812)。移行制御部305は、上述のようにして得られた差分管理テーブルをコピー対象テーブル1500として指定して、ボリュームコピー処理522を呼び出すことで、移行元SVOLから移行先SVOLに差分コピーを実施する。差分コピーとは、コピー対象テーブル1500のコピー対象1502で値が「あり」であるようなエントリのアドレスのみコピーする処理である。
次に、移行制御部305は、SVOL末尾までコピーが済むと、コピーを完了する(ステップS2813)。より具体的には、移行制御部305は、ホストボリューム管理テーブル1100における当該SVOLに対応するエントリのコピー状態1102を「なし」に設定する。
次に、移行制御部305は、移行元SVOLを削除する(ステップS2814)。
次に、移行制御部305は、移行元PVOLを削除し(ステップS2815)、スナップショットを伴うボリューム移行処理を終了する。なお、本例では、移行対象ボリュームに対するスナップショットが1つの例を示したが、複数ある場合も同様である。
本実施の形態によれば、停電時が発生した場合でも、仮想ボリュームの移行が継続でき、過渡中のI/Oデータを保護することができ、かつ、当該仮想ボリュームのスナップショットボリュームの移行を継続することができる。
(2)第2の実施の形態
本実施の形態は、ホストライトI/O処理、スナップショットを伴うボリューム移行処理が第1の実施の形態と異なる。
図29は、本実施の形態におけるホストライトI/O処理に係るフローチャートの一例を示す図である。
まず、フロントエンドドライバ301は、ホストボリュームのコピー状態がコピー中であるか否かを判定する(ステップS2901)。フロントエンドドライバ301は、コピー中であると判定した場合、ステップS2902に処理を移し、コピー中でないと判定した場合、ステップS2903に処理を移す。
ステップS2902では、フロントエンドドライバ301は、移行元ボリュームにライト要求を発行する。この後は、第1の実施の形態と同様にステップS2903に処理を移す。
これによって、移行中であっても、移行元のボリュームにもライト要求が発行され続けるため、移行元ボリュームに最新データが保持される。かかる点が第1の実施の形態と異なる。
図30は、本実施の形態におけるスナップショットを伴うボリューム移行処理に係るフローチャートの一例を示す図である。ステップS3001〜ステップS3015は、図28におけるステップS2801〜ステップS2815と同様である。第1の実施の形態と異なるのは、ステップS3010の後、図28のステップS2811にあたる処理が削除されていること、ステップS3011が新たに追加されていること、ステップS3005およびステップS3013での処理が変更になっていることである。
本実施の形態では、前述のように移行元ボリュームに最新データが保持されており、そのスナップショットの差分についても最新である。よって、図28のステップS2811で行っていた移行中の差分のマージ処理が必要ない。その代りに、移行元ボリュームへのI/Oは、継続しているため、ステップS3005での処理を変更し、PVOLのコピーがボリューム末端まで達したことを検知した時点では当該ホストボリュームのコピー状態を「なし」に変更せず、コピー状態のままにする。代わりに、ステップS3013で、SVOLのコピーが末端まで達したのを検知してPVOLおよびSVOLをともにコピー状態を「なし」に変更する。また、ステップS3010で移行制御部305がスナップショットの制御情報をリードした後、当該スナップショットの制御情報のリードオンリーを解除し、アクセス権を移行元のストレージノード102に変更する(ステップS3011)。
本実施の形態では、移行元の仮想ボリュームも最新の状態を保持している。よって、例えば、仮想ボリュームの移行をキャンセルする場合、キャンセル時に移行元の仮想ボリュームを最新の状態にする処理を行うことなく、移行先の仮想ボリュームを削除すればよく、仮想ボリュームの移行を迅速にキャンセルすることができる。
(3)第3の実施の形態
図31は、本実施の形態のストレージシステム3100の概要図である。本実施の形態と第1の実施の形態とで異なっている構成は、移行制御部305が移行先のストレージノード102−2でなく、移行元のストレージノード102−1で動作する点である。他の構成については、同一であるので、説明を省略する。
本実施の形態では、ストレージノード102間で制御情報を通信する必要がなくなる。よって、本実施の形態によれば、例えば、ストレージノード102間の通信量を削減することができる。
(4)第4の実施の形態
本実施の形態では、第1の実施の形態で示したボリューム移行処理521が異なる。
図32は、本実施の形態におけるボリューム移行処理3200に係るフローチャートの一例を示す図である。ステップS3203までは、図26のステップS2601〜ステップS2603と同じであるが、ステップS3203の後、ステップS3204およびステップS3205が追加されている点が異なる。
移行制御部305は、I/Oパスを切り替えた(ステップS3203)後、制御情報リード処理515を呼び出し、移行元の論物変換テーブル700をリードする(ステップS3204)。
次に、移行制御部305は、読み出した論物変換テーブル700を参照し、割当がある記憶領域の仮想ボリュームアドレス1501に対して、コピー対象1502を「あり」に設定したコピー対象テーブル1500を生成する(ステップS3205)。ステップS3206では、かかるコピー対象テーブル1500を指定してボリュームコピー処理522を行うことで、未割当の記憶領域のコピーを行わないようにする。
本実施の形態では、仮想ボリュームの移行の際、当該仮想ボリュームに割り当てられていない記憶領域のデータがコピーされない。よって、本実施の形態によれば、データのコピー量を削減でき、仮想ボリュームの移行に係る時間を短縮することができる。
(5)第5の実施の形態
本実施の形態では、ストレージノード102の障害時の仮想ボリュームの移行について説明する。
図33は、本実施の形態のストレージシステム3300の概要図である。
ストレージノード102−1が障害を起こした際は、冗長化グループを形成するストレージ制御部303間でフェールオーバー処理が行われ、障害の起きたストレージノード102−1にアクティブモードとして配置されていたアクティブストレージ制御部に対応する冗長化グループ内のパッシブモードのパッシブストレージ制御部がアクティブモードに切り替わる。例えば、パッシブモードのパッシブストレージ制御部が設けられるストレージノード102―2は、パッシブストレージ制御部をパッシブモードからアクティブモードに切り替える。
また、障害を起こしたストレージノード102−1に存在する記憶デバイス203−1に配置された物理チャンクは、アクセス不能となるため、これに対応する論理チャンクへのチャンクリード処理においては、他のストレージノード102(本例では、ストレージノード102−2,102−3,102−4)に冗長化された物理チャンクのデータを用いて回復させることを行ってから読み出す処理となる。回復させるとは、ミラーリング(二重化、三重化等)であれば、他の物理チャンクのデータをそのまま読み込み、ECであれば他の物理チャンクのデータおよびパリティから計算により元のデータを復元することをいう。これをコレクションリードと呼ぶ。
一方で、ストレージノード102−1の障害時には、新たにアクティブモードとなったフェールオーバー先のパッシブストレージ制御部が所属するストレージノード102−2の負荷が高くなるため、当該パッシブストレージ制御部上の仮想ボリューム、当該仮想ボリュームに対応付けられたスナップショットボリュームを他のストレージノード102に移行することで負荷分散を図ることが望ましい場合がある。
そこで、ストレージシステム3300では、各仮想ボリュームの移行先の移行制御部305(本例では、移行制御部305−3,305−4)が論理チャンクのアクセス権を「ALL(リードオンリー)」に設定した上で、各仮想ボリュームの移行先の移行制御部305が制御情報610をリードする。各ボリュームの移行先の容量制御部304(本例では、容量制御部304−3,304−4)は、これをコレクションリードによって復元して読み出す。移行先の移行制御部305は、移行元のデータおよび制御情報610を直接移行先のストレージノード102に読み出すことによって、ストレージノード102間の通信量を削減できる。
本実施の形態によれば、フェールオーバー先のストレージノード102−2で仮想ボリュームを復元してから当該仮想ボリュームを他のストレージノード102−3,102−4に移行するのではなく、他のストレージノード102−3,102−4で当該仮想ボリュームを直接復元することにより、ストレージノード102間の通信量を削減することができる。
(6)他の実施の形態
なお、上述の実施の形態においては、本発明をストレージシステムに適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のシステム、装置、方法、プログラムに広く適用することができる。
また、上述の実施の形態において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
また、上記の説明において、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
上述した実施の形態は、例えば、以下の特徴的な構成を有する。
複数のストレージノードを有するストレージシステム(例えば、ストレージシステム100)であって、上記ストレージノード(例えば、移行元のストレージノード102、移行先のストレージノード102、その他のストレージノード102、管理ノード103)は、ボリュームに係る制御情報(例えば、制御情報、コピー中差分管理テーブル1400)を記憶する不揮発性の記憶装置(例えば、記憶デバイス203)と、上記記憶装置への情報の読み書きに係る制御を行う容量制御部(例えば、容量制御部304)と、上記ボリュームを移行する移行制御部(例えば、移行制御部305)と、を備え、上記ストレージノード間でボリュームを移行させるときに、上記容量制御部は、上記移行制御部による上記ボリュームの移行に応じて、上記制御情報を更新する(例えば、図23参照)。
上記構成では、制御情報が不揮発性の記憶装置に記憶されるので、例えば、ストレージノードが汎用のコンピュータ装置であって、バッテリを備えていない場合であっても、ボリュームの移行時にストレージシステムが停電によりダウンしたときに、制御情報が消失してしまうことがない。よって、ストレージシステムが復旧した際、制御情報を記憶装置から読み出すことで、ボリュームの移行を再開することができる。
上記ボリュームの移行元の第1のストレージノード(例えば、移行先のストレージノード102−1)は、上記ボリュームを管理する第1のストレージ制御部(例えば、アクティブストレージ制御部)と、上記ボリュームに係る第1の制御情報を記憶する不揮発性の第1の記憶装置(例えば、記憶デバイス203−1)と、上記第1の記憶装置への情報の読み書きに係る制御を行う第1の容量制御部(例えば、容量制御部304−1)と、を備え、上記移行制御部は、上記ボリュームの移行を開始するときに、上記第1の制御情報を他のプロセスに参照権限を設定し(例えば、図28参照)、上記第1の容量制御部は、所定のプロセス(例えば、例えば、移行制御部305を備えるストレージノード102の容量制御部304、自ストレージノード102の他のプログラム等)から上記第1の制御情報の参照要求があったとき、上記第1の制御情報を上記所定のプロセスに送信する(例えば、図16参照)。
上記構成によれば、例えば、所定のプロセスに送信する第1の制御情報を静止化することで、第1の記憶装置に記憶される第1の制御情報と、所定のプロセスが受信した第1の制御情報とが異なってしまう事態を回避することができる。
上記第1の制御情報は、上記ボリュームと上記ボリュームのスナップショットボリュームとの差分情報(例えば、SVOLとPVOLとの差分の有無)を管理するためのスナップショット制御情報(例えば、スナップショット差分管理テーブル900)を含み、上記移行制御部は、上記スナップショットボリュームの移行を開始するときに、上記第1のストレージノードから上記ボリュームの移行先のストレージノードにパスを切り替え、上記スナップショット制御情報を他のプロセスに参照権限を設定する(例えば、図28参照)。
上記構成では、例えば、スナップショットボリュームの移行前に、移行先のストレージノードにパスを切り替えて、移行元の第1のストレージノードでの当該スナップショット機能を静止化することで、スナップショットボリュームの移行を適切に行うことができる。
上記制御情報には、上記ボリュームの移行中の差分情報を管理するための移行中制御情報(例えば、コピー中差分管理テーブル1400)が含まれ、上記移行制御部は、上記移行中制御情報と上記スナップショット制御情報とから差分のデータを特定(例えば、コピー対象テーブル1500を生成)し、特定した差分のデータを上記第1のストレージノードから上記移行先のストレージノードにコピーする(例えば、図28参照)。
上記構成によれば、例えば、差分のデータをコピーすることで、不要なデータのコピーによる通信がなくなるので、ストレージノード間の通信量を削減することができる。
上記ボリュームの移行先のストレージノード(例えば、移行先のストレージノード102−2)は、上記ボリュームの移行先のボリュームに対するホスト装置からのI/O要求を受け付けるフロントエンドドライバ(例えば、フロントエンドドライバ301)を備え、上記フロントエンドドライバは、上記ホスト装置からライト要求を受信した場合、上記ボリュームが移行中であると判定したとき、上記ボリュームの移行元のストレージノードに上記ライト要求を送信する(例えば、図29参照)。
上記構成では、移行元のボリュームも最新の状態を保持しているので、例えば、ボリュームの移行をキャンセルする場合、キャンセル時に移行元のボリュームを最新の状態にする処理を行うことなく、移行先のボリュームを削除すればよく、ボリュームの移行を迅速にキャンセルすることができる。
上記ストレージノードは、上記ボリュームの移行先のストレージノードである(例えば、図6参照)。
上記構成では、移行先のストレージノードに移行制御部が設けられているので、例えば、ストレージノードの複数のボリュームを複数のストレージノードに移行する際、ボリュームの移行にかかる負荷を分散することができる。
上記ストレージノードは、上記ボリュームの移行元のストレージノードである(例えば、図31参照)。
上記構成によれば、例えば、ストレージノード間で制御情報を通信する必要がなくなるので、ストレージノード間の通信量を削減することができる。
上記第1の制御情報には、上記第1の記憶装置の記憶領域のうち、上記ボリュームに割り当てられている記憶領域を特定可能な記憶領域情報(例えば、論物変換テーブル700)が含まれ、上記移行制御部は、上記記憶領域情報に基づいて、上記第1の記憶装置の記憶領域のうち、上記ボリュームに割り当てられている記憶領域のデータを上記ボリュームの移行先のストレージノードにコピーする(例えば、図32参照)。
上記構成では、例えば、ボリュームの移行の際、上記ボリュームに割り当てられていない記憶領域のデータがコピーされないので、データのコピー量を削減でき、ボリュームの移行に係る時間を短縮することができる。
上記第1のストレージノードは、アクティブモードの第1のストレージ制御部(例えば、アクティブストレージ制御部)を備え、第2のストレージノード(例えば、ストレージノード102−2)は、上記第1のストレージ制御部と冗長化を構成するパッシブモードの第2のストレージ制御部(例えば、パッシブストレージ制御部)と、上記第1の制御情報を記憶する不揮発性の第2の記憶装置(例えば、203−2)と、上記第2の記憶装置への情報の読み書きに係る制御を行う第2の容量制御部(例えば、容量制御部304−2)と、を備え、上記第1のストレージノードに障害が発生した場合、上記第2のストレージノードは、上記第2のストレージ制御部をアクティブモードに切り換え、上記移行制御部は、上記第1の制御情報を読み取り専用として全てのプロセスに参照権限を設定し、上記第2の容量制御部は、上記移行制御部に上記第1の制御情報を送信し、上記移行制御部は、上記第1の制御情報を用いて第3のストレージノード(例えば、ストレージノード102−3,102−4)に上記ボリュームを復元する(例えば、図33参照)。
上記構成では、例えば、故障した第1のストレージノードのボリュームが第2のストレージノードに設けられることによる第2のストレージノードへの負荷を分散するために、第2のストレージノードにボリュームを復元することなく、第3のストレージノードに復元する。このように、第2のストレージノードでボリュームを復元してから当該ボリュームを第3のストレージノードに移行するのではなく、第3のストレージノードで当該ボリュームを直接復元することにより、ストレージノード間の通信量を削減することができる。
また上述した構成については、本発明の要旨を超えない範囲において、適宜に、変更したり、組み替えたり、組み合わせたり、省略したりしてもよい。
100……ストレージシステム、102……ストレージノード。

Claims (10)

  1. 複数のストレージノードを有するストレージシステムであって、
    前記ストレージノードは、
    ボリュームに係る制御情報を記憶する不揮発性の記憶装置と、
    前記記憶装置への情報の読み書きに係る制御を行う容量制御部と、
    前記ボリュームを移行する移行制御部と、
    を備え、
    前記ストレージノード間でボリュームを移行させるときに、前記容量制御部は、前記移行制御部による前記ボリュームの移行に応じて、前記制御情報を更新する、
    ストレージシステム。
  2. 前記ボリュームの移行元の第1のストレージノードは、
    前記ボリュームを管理する第1のストレージ制御部と、
    前記ボリュームに係る第1の制御情報を記憶する不揮発性の第1の記憶装置と、
    前記第1の記憶装置への情報の読み書きに係る制御を行う第1の容量制御部と、
    を備え、
    前記移行制御部は、前記ボリュームの移行を開始するときに、前記第1の制御情報を他のプロセスに参照権限を設定し、
    前記第1の容量制御部は、所定のプロセスから前記第1の制御情報の参照要求があったとき、前記第1の制御情報を前記所定のプロセスに送信する、
    請求項1に記載のストレージシステム。
  3. 前記第1の制御情報は、前記ボリュームと前記ボリュームのスナップショットボリュームとの差分情報を管理するためのスナップショット制御情報を含み、
    前記移行制御部は、前記スナップショットボリュームの移行を開始するときに、前記第1のストレージノードから前記ボリュームの移行先のストレージノードにパスを切り替え、前記スナップショット制御情報を他のプロセスに参照権限を設定する、
    請求項2に記載のストレージシステム。
  4. 前記制御情報には、前記ボリュームの移行中の差分情報を管理するための移行中制御情報が含まれ、
    前記移行制御部は、前記移行中制御情報と前記スナップショット制御情報とから差分のデータを特定し、特定した差分のデータを前記第1のストレージノードから前記移行先のストレージノードにコピーする、
    請求項3に記載のストレージシステム。
  5. 前記ボリュームの移行先のストレージノードは、前記ボリュームの移行先のボリュームに対するホスト装置からのI/O要求を受け付けるフロントエンドドライバを備え、
    前記フロントエンドドライバは、前記ホスト装置からライト要求を受信した場合、前記ボリュームが移行中であると判定したとき、前記ボリュームの移行元のストレージノードに前記ライト要求を送信する、
    請求項1に記載のストレージシステム。
  6. 前記ストレージノードは、前記ボリュームの移行先のストレージノードである、
    請求項1に記載のストレージシステム。
  7. 前記ストレージノードは、前記ボリュームの移行元のストレージノードである、
    請求項1に記載のストレージシステム。
  8. 前記第1の制御情報には、前記第1の記憶装置の記憶領域のうち、前記ボリュームに割り当てられている記憶領域を特定可能な記憶領域情報が含まれ、
    前記移行制御部は、前記記憶領域情報に基づいて、前記第1の記憶装置の記憶領域のうち、前記ボリュームに割り当てられている記憶領域のデータを前記ボリュームの移行先のストレージノードにコピーする、
    請求項2に記載のストレージシステム。
  9. 前記第1のストレージノードは、アクティブモードの第1のストレージ制御部を備え、
    第2のストレージノードは、
    前記第1のストレージ制御部と冗長化を構成するパッシブモードの第2のストレージ制御部と、
    前記第1の制御情報を記憶する不揮発性の第2の記憶装置と、
    前記第2の記憶装置への情報の読み書きに係る制御を行う第2の容量制御部と、
    を備え、
    前記第1のストレージノードに障害が発生した場合、前記第2のストレージノードは、前記第2のストレージ制御部をアクティブモードに切り換え、前記移行制御部は、前記第1の制御情報を読み取り専用として全てのプロセスに参照権限を設定し、
    前記第2の容量制御部は、前記移行制御部に前記第1の制御情報を送信し、
    前記移行制御部は、前記第1の制御情報を用いて第3のストレージノードに前記ボリュームを復元する、
    請求項2に記載のストレージシステム。
  10. 複数のストレージノードを有するストレージシステムにおけるストレージ制御方法であって、
    前記ストレージノードは、ボリュームに係る制御情報を記憶する不揮発性の記憶装置を備え、
    容量制御部が、前記記憶装置への情報の読み書きに係る制御を行う第1のステップと、
    移行制御部が、前記ボリュームを移行する第2のステップと、
    を備え、
    前記ストレージノード間でボリュームを移行させるときに、前記容量制御部は、前記移行制御部による前記ボリュームの移行に応じて、前記制御情報を更新する、
    ストレージ制御方法。
JP2019144063A 2019-08-05 2019-08-05 ストレージシステムおよびストレージ制御方法 Pending JP2021026512A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019144063A JP2021026512A (ja) 2019-08-05 2019-08-05 ストレージシステムおよびストレージ制御方法
US16/796,656 US11204709B2 (en) 2019-08-05 2020-02-20 Storage system and storage control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019144063A JP2021026512A (ja) 2019-08-05 2019-08-05 ストレージシステムおよびストレージ制御方法

Publications (1)

Publication Number Publication Date
JP2021026512A true JP2021026512A (ja) 2021-02-22

Family

ID=74499233

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019144063A Pending JP2021026512A (ja) 2019-08-05 2019-08-05 ストレージシステムおよびストレージ制御方法

Country Status (2)

Country Link
US (1) US11204709B2 (ja)
JP (1) JP2021026512A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11941458B2 (en) * 2020-03-10 2024-03-26 Sk Hynix Nand Product Solutions Corp. Maintaining storage namespace identifiers for live virtualized execution environment migration
US11829625B2 (en) * 2020-04-27 2023-11-28 EMC IP Holding Company LLC Slice memory control
US11500556B1 (en) * 2021-04-23 2022-11-15 EMC IP Holding Company LLC Storage system with passive witness node
JP7253007B2 (ja) * 2021-05-28 2023-04-05 株式会社日立製作所 ストレージシステム
US11704071B1 (en) * 2022-03-28 2023-07-18 Lenovo Global Technology (United States) Inc. Delegating low priority tasks to a passive storage controller

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996689B2 (en) * 2003-04-16 2006-02-07 Lsi Logic Corporation Systems and methods for striped storage migration
JP2009181206A (ja) * 2008-01-29 2009-08-13 Hitachi Ltd ストレージシステム及びスナップショット構成の移行方法
US8166264B2 (en) * 2009-02-05 2012-04-24 Hitachi, Ltd. Method and apparatus for logical volume management
US8904119B2 (en) * 2012-10-31 2014-12-02 Lsi Corporation Method and structures for performing a migration of a logical volume with a serial attached SCSI expander
US11126363B2 (en) * 2019-07-24 2021-09-21 EMC IP Holding Company LLC Migration resumption using journals

Also Published As

Publication number Publication date
US11204709B2 (en) 2021-12-21
US20210042051A1 (en) 2021-02-11

Similar Documents

Publication Publication Date Title
JP2021026512A (ja) ストレージシステムおよびストレージ制御方法
US11461015B2 (en) Available storage space in a system with varying data redundancy schemes
US10235066B1 (en) Journal destage relay for online system checkpoint creation
JP4927408B2 (ja) 記憶システム及びそのデータ復元方法
US7054960B1 (en) System and method for identifying block-level write operations to be transferred to a secondary site during replication
US9122410B2 (en) Storage system comprising function for changing data storage mode using logical volume pair
US7975115B2 (en) Method and apparatus for separating snapshot preserved and write data
JP4800031B2 (ja) ストレージシステム及びスナップショット管理方法
US8751467B2 (en) Method and apparatus for quickly accessing backing store metadata
US10359967B2 (en) Computer system
JP2004118837A (ja) 耐故障性の記憶サブシステムにデータを格納するための方法、記憶サブシステムおよびそのシステムのためのデータ編成管理プログラム
US20090100237A1 (en) Storage system that dynamically allocates real area to virtual area in virtual volume
US11347600B2 (en) Database transaction log migration
JPH09231016A (ja) Raid記憶サブシステムにおけるデ−タのスナップショットコピ−作成方法とその装置
US11403176B2 (en) Database read cache optimization
JP7167078B2 (ja) 分散ストレージシステム及び記憶制御方法
JP2020047215A (ja) ストレージシステム及びストレージ制御方法
JP6494787B2 (ja) 分散ストレージシステム
JP2004185644A (ja) 記憶装置システム
US10846012B2 (en) Storage system for minimizing required storage capacity during remote volume replication pair duplication
US11789613B2 (en) Storage system and data processing method
JP7179947B2 (ja) ストレージシステム及びストレージ制御方法
US20240134575A1 (en) Storage system and storage control method
JP2007334913A (ja) 記憶装置システム及び記憶装置システムにおけるデータの複写方法
JP2022169249A (ja) 分散ストレージシステム及びボリューム移動方法