JP7167078B2 - 分散ストレージシステム及び記憶制御方法 - Google Patents

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

Info

Publication number
JP7167078B2
JP7167078B2 JP2020058088A JP2020058088A JP7167078B2 JP 7167078 B2 JP7167078 B2 JP 7167078B2 JP 2020058088 A JP2020058088 A JP 2020058088A JP 2020058088 A JP2020058088 A JP 2020058088A JP 7167078 B2 JP7167078 B2 JP 7167078B2
Authority
JP
Japan
Prior art keywords
storage
data
logical unit
control program
storage control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020058088A
Other languages
English (en)
Other versions
JP2021157588A (ja
Inventor
良徳 大平
彰 山本
良介 達見
貴大 山本
匡邦 揚妻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2020058088A priority Critical patent/JP7167078B2/ja
Priority to CN202010883083.9A priority patent/CN113448502B/zh
Priority to US17/019,471 priority patent/US20210303178A1/en
Publication of JP2021157588A publication Critical patent/JP2021157588A/ja
Application granted granted Critical
Publication of JP7167078B2 publication Critical patent/JP7167078B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2041Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • 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/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/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
    • 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
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、概して、分散ストレージシステムの記憶制御に関する。
近年、汎用サーバでストレージシステムを構築するSoftware-Defined Storage(SDS)が主流となってきている。またSDSの一形態として、汎用サーバ上にアプリケーションとストレージ制御ソフトとを同梱するHyper Converged Infrastructure(HCI)が広く認知されるようになってきている。以下、SDSの一形態としてHCIが採用されているストレージシステムを、「SDS/HCIシステム」と言う。
一方、データ読み出しが高速なフラッシュデバイスを有効活用する技術として、ネットワーク経由で高速にデータ通信を行うプロトコルであるNon Volatile Memory Express over Fabric(NVMe-oF)技術が広がりつつある。当該プロトコルを使うことで、ネットワークを介したフラッシュデバイスでも高速にデータ通信を行うことが可能になる。このような背景から、ネットワーク上にフラッシュデバイスを集約することを目的としたFabric-attached Bunch of Flash(FBOF)というドライブボックス型製品も市場に現れつつある。
SDS/HCIシステムでは、サーバ障害時のデータロストを防止するため、複数サーバが協力して冗長データを作成し、各サーバに搭載されたDirect-attached Storage(DAS)に冗長データを格納することでデータ保護を行う。データ保護方法には、ストレージシステムで長らく利用されてきたRedundant Array of Independent (or Inexpensive) Disks(RAID)だけではなくErasure Coding(EC)も用いられる。特許文献1では、データ書き込み時に別サーバにネットワーク転送されるデータ量を小さくするEC方法が開示されている。また、特許文献1では、ドライブ障害時に効率よくデータ復旧する目的で、同一サーバ内のDAS間で行うデータ保護と、複数サーバのDAS間で行うデータ保護とを併用する技術が開示されている。
SDS/HCIシステムでは、サーバ障害時に、障害サーバのデータを別サーバに復旧してアクセス可能にする技術が一般的である。特許文献2では、サーバ障害の他、サーバのボトルネックの解消などを目的とし、アプリと当該アプリが利用するデータとを、データコピーによって別サーバに移動する技術が開示されている。
WO2016/052665 WO2018/29820
一般的な分散ストレージシステムでは、ストレージ性能資源(例えば、Central Processing Unit(CPU))と、ストレージ容量資源(例えば、ドライブ)とが同一サーバに同梱されているため、ストレージ性能とストレージ容量とを独立にスケールすることができない。このため、性能要件及び容量要件によっては、ストレージ性能資源又はストレージ容量資源を余分に搭載しなければならず、資源が無駄に必要となり、結果として、システムコスト増につながる。また、負荷分散等を目的として、サーバ間でアプリを移動する場合に、アプリが利用するデータも移動する必要があり、ネットワークの負荷が高くなり、サーバ間のアプリ移動に時間がかかる。
分散ストレージシステムが、複数の物理記憶デバイスを含んだ1つ又は複数のストレージユニットと、当該1つ又は複数のストレージユニットに通信ネットワークを介して接続された複数の計算機とで構成される。複数の計算機のうちの2つ以上の計算機の各々が、それぞれ、ストレージ制御プログラムを実行する。2つ以上のストレージ制御プログラムが、複数の物理記憶デバイスが提供する複数の記憶領域および当該複数の記憶領域に関するメタデータを共有する。2つ以上のストレージ制御プログラムの各々は、当該ストレージ制御プログラムが提供する論理ユニットにおけるライト先領域を指定したライト要求を、当該論理ユニットを認識するアプリケーションから受け、当該ライト要求に付随するデータを、メタデータを基に冗長化し、当該冗長化されたデータである1つ以上の冗長化データセットを、当該ライト先領域の基になっている2つ以上の物理記憶デバイスが提供する1つ以上の記憶領域(例えば、後述の1つ以上の冗長構成領域)に書き込む。ストレージ制御プログラムに障害が発生した場合、メタデータを共有する他のストレージ制御プログラムが、記憶領域に格納されたデータにアクセスする。物理記憶デバイスに障害が発生した場合、障害の発生していない他の物理記憶デバイスに記憶された冗長化させたデータを用いて、ストレージ制御プログラムが、当該障害の発生した物理記憶デバイスのデータを復元する。
本発明によると、分散ストレージシステムにおいて、計算機間のデータ転送無しにデータを冗長化すること、言い換えれば、ネットワーク効率よくデータ保護を行うことができる。
本発明の一実施形態における分散ストレージシステムの概要を示す図である。 一比較例における分散ストレージシステムの概要を示す図である。 本発明の一実施形態におけるドライブ障害修復の概要を示す図である。 本発明の一実施形態におけるサーバ障害修復の概要を示す図である。 本発明の一実施形態におけるサーバ、管理サーバ及びドライブボックスのハード構成例を示す図である。 本発明の一実施形態における分散ストレージシステムの区分の一例を示す図である。 本発明の一実施形態におけるドメイングループ管理テーブルの構成例を示す図である。 本発明の一実施形態におけるドライブ領域管理の一例を示す図である。 本発明の一実施形態におけるチャンクグループ管理テーブルの構成例を示すである。 本発明の一実施形態におけるページマッピングテーブルの構成例を示す図である。 本発明の一実施形態における空きページ管理テーブルの構成例を示す図である。 本発明の一実施形態におけるテーブル配置の一例を示す図である。 本発明の一実施形態におけるリード処理の流れの一例を示す図である。 本発明の一実施形態におけるライト処理の流れの一例を示す図である。 本発明の一実施形態におけるドライブ増設処理の流れの一例を示す図である。 本発明の一実施形態におけるドライブ障害修復処理の流れの一例を示す図である。 本発明の一実施形態におけるサーバ障害修復処理の流れの一例を示す図である。 本発明の一実施形態におけるサーバ増設処理の流れの一例を示す図である。 本発明の一実施形態におけるオーナーサーバ移動処理の流れの一例を示す図である。
以下の説明では、「通信インターフェース装置」は、1つ以上の通信インターフェースデバイスでよい。1つ以上の通信インターフェースデバイスは、1つ以上の同種の通信インターフェースデバイス(例えば1つ以上のNetwork Interface Cards(NICs))であってもよいし2つ以上の異種の通信インターフェースデバイス(例えばNICとHost Bus Adapter(HBA))であってもよい。
また、以下の説明では、「メモリ」は、1つ以上の記憶デバイスの一例である1つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも1つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
また、以下の説明では、「ストレージユニット」は、1つ以上の物理記憶デバイスを含んだユニットの一例である。物理記憶デバイスは、永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、Hard Disk Drive(HDD)、Solid State Drive(SSD)、Non-Volatile Memory Express(NVMe)ドライブ、又は、Storage Class Memory(SCM)でよい。以下の説明では、「ドライブボックス」が、ストレージユニットの一例であり、「ドライブ」が、物理記憶デバイスの一例である。
また、以下の説明では、「プロセッサ」は、1つ以上のプロセッサデバイスでよい。少なくとも1つのプロセッサデバイスは、典型的には、Central Processing Unit(CPU)のようなマイクロプロセッサデバイスでよいが、Graphics Processing Unit(GPU)のような他種のプロセッサデバイスでもよい。少なくとも1つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも1つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも1つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えば、Field-Programmable Gate Array(FPGA)、Complex Programmable Logic Device(CPLD)、又は、Application Specific Integrated Circuit(ASIC))といった広義のプロセッサデバイスでもよい。
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし(例えば、構造化データでもよいし非構造化データでもよいし)、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2つ以上のテーブルに分割されてもよいし、2つ以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜にメモリ及び/又は通信インターフェース装置等を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有するコントローラのようなデバイス)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、2つ以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2つ以上のプログラムとして実現されてもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号(又は参照符号)を使用し、同種の要素を区別する場合は、参照符号(又は当該要素の識別子)を使用することがある。
図1は、本発明の一実施形態における分散ストレージシステムの概要を示す図である。
本実施形態における分散ストレージシステムは、汎用のネットワーク104に接続されたFBOF等のドライブボックス106にSDSやHCIのDASを集約する「ドライブ分離型分散ストレージ構成」を有するストレージシステムである。ドライブボックス106にデータを集約することで、ストレージ性能とストレージ容量とを独立にスケールさせることが可能である。
当該構成では、各サーバ101がドライブボックス106に搭載されるドライブに直接アクセス可能であり、各ドライブがサーバ101間で共有される。このため、各サーバ101が、自身の担当データ(当該サーバ101が書き込んだデータ)に対し、別サーバ101と協力することなく、個別にデータ保護を行うことができる。さらに、サーバ101間が、チャンクグループ(それぞれがドライブボックス内ドライブ領域である2つ以上のチャンクで構成されたグループ(詳細は後述))ごとのデータ保護方法(例えば、RAID構成やデータ配置パタン(データ及びパリティの配置パタン))に関するメタデータを共有する。これにより、サーバ101間で担当データの担当を変更する場合に、担当データと当該担当データの格納先のチャンクグループとを対応付ける情報を変更先サーバ101にコピーすることで、ネットワーク104介してのデータコピー無くデータ保護を継続することができる。
本実施形態では、分散ストレージシステムを構成する複数のサーバ101のうちの1つが代表サーバ101であり、代表サーバ101が、ドライブ増設時に、増設ドライブの各チャンクに関するRAID構成やデータ配置パタンを決定し、当該メタデータをサーバ101間で共有し、少なくとも1つのチャンクグループ(例えば、1つ以上の新たなチャンクグループ及び1つ以上の既存のチャンクグループのうちの少なくとも1つ)に、増設ドライブの少なくともチャンクを含める。各サーバ101は、チャンクグループにデータを書き込む時、データとチャンクグループの関連付けを行い、上述のメタデータに基づいて、別サーバ101と協力することなく、個別にデータ保護を行う。
サーバ101間で担当データの担当を変更する場合は、移動元サーバ101(担当データを担当していたサーバ101)が所有する、担当データとチャンクグループとの関連付けを表す情報を、移動先サーバ101(担当データを担当することになるサーバ101)にコピーする。以後、移動先サーバ101は、担当データのチャンクグループを表すメタデータに基づいて、サーバ101間で協力することなく、個別にデータ保護を行う。
本実施形態の分散ストレージシステムは、ネットワーク104に接続された複数のサーバ101(例えば、101A~101E)と、同ネットワーク104に接続された複数のドライブボックス106(例えば、106A~106C)と、同ネットワーク104に接続された管理サーバ105とで構成される。本実施形態の分散ストレージシステムは、SDS/HCIシステムの一例でよい。各サーバ101には、単一のストレージ制御プログラム103と複数(又は単一)のアプリ102とが共存して動作する。但し、分散ストレージシステムにおける全てのサーバ101が、アプリ102及びストレージ制御プログラム103の両方を備えている必要は無く、一部のサーバ101が、アプリ102及びストレージ制御プログラム103の一方を備えていなくてもよい。アプリ102が存在するがストレージ制御プログラム103が存在しないサーバ101や、ストレージ制御プログラム103が存在するがアプリ102が存在しないサーバ101が存在した場合でも、本実施形態の分散ストレージシステムとして有効である。「アプリ」は、アプリケーションプログラムの略である。「ストレージ制御プログラム」は、ストレージ制御ソフトウェアと呼ばれてもよい。「サーバ101」は、ノードサーバ101の略でもよい。複数の汎用の計算機の各々が所定のソフトウェアを実行することにより、当該複数の計算機がSoftware-Defined anything(SDx)として構築されてもよい。SDxとしては、例えば、Software-Defined Storage(SDS)又はSoftware-Defined DataCenter(SDDC)が採用されてよい。サーバ101が、計算機の一例である。ドライブボックス106が、ストレージユニットの一例である。
アプリ102の実行基盤としては、仮想マシンやコンテナが考えられるが、アプリ102の実行基盤は、仮想マシンやコンテナに依らない。
アプリ102から書き込まれるデータは、ストレージ制御プログラム103を介して、ネットワーク104に接続されたドライブボックス106A~106Cのいずれかに格納される。ネットワーク104には、Ethernet、Fibre Chunnel等の汎用的なネットワーク技術を用いることができる。ネットワーク104は、サーバ101とドライブボックス106とを直接接続してもよいし、1つ以上のスイッチを介して接続してもよい。通信プロトコルには、iSCSI(Internet SCSI)やNVMe-oF等の汎用技術を用いることが可能である。
各サーバ101のストレージ制御プログラム103は、互いに協調動作してすることで、複数サーバ101を束ねた分散ストレージシステムを構成する。このため、あるサーバ101に障害が発生した時は、別サーバ101のストレージ制御プログラム103が処理を代替し、I/Oを継続することが可能である。各ストレージ制御プログラム103は、データ保護機能や、スナップショット等のストレージ機能を有することができる。
管理サーバ105が、管理プログラム51を有する。管理プログラム51は、管理ソフトウェアと呼ばれてもよい。管理プログラム51は、例えば、チャンクグループの構成を表す情報を上述のメタデータに含める。管理プログラム51が行う処理は、後に説明する。
図2は、一比較例における分散ストレージシステムの概要を示す図である。
一比較例における分散ストレージシステムによれば、複数のサーバ11の各々が、アプリ12とストレージ制御プログラム13との他に、Direct-attached Storage(DAS)、例えば、複数のドライブ3を有する。サーバ障害時にデータロスト防止のため、各サーバ11が、別サーバ11と協力して、データ保護を行う。データ保護のために、サーバ11間でネットワーク14を介したデータ転送が生じる。例えば、サーバ11が、当該サーバ11内のドライブ3にデータを書き込み、当該データの複製を、別サーバ11にネットワーク14を介して転送し、別サーバ11が、当該別サーバ11内のドライブ3に、当該データ複製を書き込む。
一方、本実施形態における分散ストレージシステム(図1参照)によれば、データ保護のためにサーバ101間で保護対象のデータをネットワーク14を介して転送する必要が無い。また、ストレージ制御プログラム106に障害が発生した場合、メタデータを共有する他のストレージ制御プログラム106が、チャンクに格納されたデータにアクセスしてよい。ドライブに障害が発生した場合、障害の発生していない他のドライブに記憶された冗長化させたデータを用いて、ストレージ制御プログラム106が、障害の発生したドライブのデータを復元してよい。
図3は、本発明の一実施形態におけるドライブ障害修復の概要を示す図である。
図3(及び、後述の図4)には、サーバ101A及び101Bとドライブボックス106Aが代表的に示されている。ドライブボックス106Aが、複数のドライブ204A(例えば、204Aa~204Af)を含んでいる。
ドライブボックス106Aを基に、複数のチャンクグループが提供される。チャンクグループは、2つ以上のチャンクから構成されたグループである。同一のチャンクグループを構成する2つ以上のチャンクは、異なる2つ以上のドライブ204Aがそれぞれ提供する2つ以上のドライブ領域である。本実施形態において、1つのチャンクは、1つのドライブ204Aが提供し、異なる2つ以上のドライブ204Aに跨らない。図3が示す例によれば、ドライブ204Aaが、チャンクCaを提供し、ドライブ204Abが、チャンクCbを提供し、ドライブ204Adが、チャンクCdを提供し、ドライブ204Afが、チャンクCfを提供する。それらのチャンクCa、Cb、Cd及びCfが、1つのチャンクグループを構成する。なお、図3が示す例によれば、1つのチャンクグループは1つのドライブボックス106Aから提供されるが、少なくとも1つのチャンクグループが、異なる2つ以上のドライブボックス106に跨ってもよい。
サーバ101Aが、図示しないLogical Unit(LU)を提供するストレージ制御プログラム103Aと、当該LUに対してデータを書き込むアプリ102Aとを有する。サーバ101Bが、ストレージ制御プログラム103B及びアプリ102Bを有する。
ストレージ制御プログラム103Aが、メタデータ170Aを参照する。ストレージ制御プログラム103Bが、メタデータ170Bを参照する。メタデータ170Aとメタデータ170Bは、同期する。すなわち、メタデータ170A及び170Bの一方のメタデータが更新された場合、更新が他方のメタデータに反映される。つまり、メタデータ170A及び170Bは、同一内容に維持される。このようにして、ストレージ制御プログラム103A及び103Bが、メタデータ170を共有する。なお、メタデータ170A及び170Bが、それぞれサーバ101A及び101Bに存在してもよいし、サーバ101A及び101Bのいずれもがアクセス可能な共有領域にメタデータ170が存在してもよい。
メタデータ170A及び170Bは、各チャンクグループについて、チャンクグループの構成とデータ保護方法(データ冗長化方式の一例)とを表す。例えば、ストレージ制御プログラム103Aは、自身が提供するLUを指定したライト要求をアプリ102Aから受けた場合、メタデータ170Aを参照することで、チャンクグループがチャンクCa、Cb、Cd及びCfから構成されていること、及び、当該チャンクグループのデータ保護方法は、RAIDレベル5(3D+1P)であることを特定する。このため、ストレージ制御プログラム103Aは、当該ライト要求に付随するデータを、RAIDレベル5(3D+1P)に従い冗長化し、冗長化されたデータである冗長化データセットを、当該チャンクグループに書き込む。「冗長化データセット」は、複数のデータ要素で構成されている。データ要素は、アプリ102からのデータの少なくとも一部である「ユーザデータ要素」と、2つ以上のユーザデータ要素を基に生成された「パリティ」とのいずれかでよい。データ保護方法が、RAIDレベル5(3D+1P)であるため、冗長化データセットは、3つのユーザデータ要素と1つのパリティから構成されている。例えば、3つのユーザデータ要素が、3つのチャンクCa、Cb及びCdにそれぞれ書き込まれ、1つのパリティが、1つのチャンクCfに書き込まれる。
その後、いずれかのドライブ204A、例えば、ドライブ204Aaに障害が生じたとする。この場合、ドライブ204Aaに格納されており1つ又は複数の冗長化データセットがそれぞれ有する1つ又は複数のデータ要素の各々について、当該データ要素を書き込んだストレージ制御プログラム103が、次の処理を行う。例えば、チャンクCaにユーザデータ要素を書き込んだストレージ制御プログラム103Aが、メタデータ170Aを基に、当該ユーザデータ要素を、当該ユーザデータ要素を含む冗長化データセットのうち当該ユーザデータ要素以外のユーザデータ要素及びパリティから復元し、当該復元したユーザデータ要素を、当該冗長化データセットを格納するドライブ204Aa、204Ab、204Ad及び204Af以外のドライブに書き込む。具体的には、例えば、以下のうちのいずれかが行われてよい。
・図3には示されないが、ストレージ制御プログラム103Aが、当該復元したユーザデータ要素を含む冗長化データセットを、障害ドライブ204Aa以外の2つ以上のドライブ204に基づくチャンクグループに書き込む。このケースでは、チャンクグループの再構成は不要である。
・図3が示す通り、ストレージ制御プログラム103Aが、当該復元したユーザデータ要素を、ドライブ204Ac(ドライブ204Aa、204Ab、204Ad及び204Af以外のドライブの一例)のチャンクCcに書き込む。そして、ストレージ制御プログラム103Aは、当該ユーザデータ要素を含んだ冗長化データセットを保持するチャンクグループの構成を変更する、具体的には、当該チャンクグループのうち、チャンクCaをチャンクCcに差し替える。このように、このケースでは、チャンクグループの再構成は必要である。
なお、図3において、「チャンクCc」は、ドライブ204Acが提供する2つ以上のチャンクのうちの1つのチャンクの一例である。「ドライブ204Ac」は、ドライブ204Aa、ドライブ204Ab、204Ad及び204Af以外のいずれかのドライブ204Aの一例である。「ドライブ204Aa」は、障害が生じたドライブ204の一例である。ドライブ204Ab、204Ad及び204Afの各々が、当該冗長化データセットのデータ要素を格納したドライブの一例である。
図4は、本発明の一実施形態におけるサーバ障害修復の概要を示す図である。
ストレージ制御プログラム103A(2つ以上のストレージ制御プログラム103の各々の一例)が、自身が提供したLUについて、ページマッピングテーブル(マッピングデータの一例)を管理している。ページマッピングテーブルは、LU領域とページとの対応関係を表すテーブルである。「LU領域」とは、LUにおける一部の記憶領域である。「ページ」とは、チャンクグループの一部(又は全部)としての記憶領域であり、チャンクグループを構成する2つ以上のチャンクの各々の一部(又は全部)を構成要素とした記憶領域である。例えば、本実施形態では、LUが新規作成された場合に、ストレージ制御プログラム103は、LU全域分の数の空きのページ(いずれのLU領域にも未だ割り当てられていない割当て可能な状態のページ)を特定し、当該LUに空ページを割り当てる。ストレージ制御プログラム103Aは、当該LU領域に当該ページが割り当てられたことをページマッピングテーブルに登録する。ストレージ制御プログラム103は、ライト先のLU領域に割り当てられているページを含んだチャンクグループに、ライト要求に付随するデータの冗長化データセットを書き込む。
いずれかのサーバ101、例えば、サーバ101Aに障害が生じたとする。この場合、サーバ101Aにおけるストレージ制御プログラム103Aが提供した1つ以上のLUの各々について、当該LUの復旧先のサーバ101として選択されたサーバ101Bにおけるストレージ制御プログラム103Bが、当該LUについてのページマッピングテーブル(例えば、ストレージ制御プログラム103Aから受信したページマッピングテーブル)を基に、当該LUを復旧し、復旧したLUをアプリ102Bに提供する。ストレージ制御プログラム103Bが、当該ページマッピングテーブルを参照することで、復旧したLUのLU領域に割り当てられているページから、1つ以上の冗長化データセットに従うデータを読み出すことができる。別の言い方をすれば、ストレージ制御プログラム103Aが提供した1つ以上のLUの各々について、当該LUのオーナーサーバ(当該LUへのI/Oを担当するサーバ)がサーバ101Aからサーバ101Bに変わっても、ネットワーク104を介したデータ移動無しに、サーバ101Bは、当該LUのデータにアクセスすることができる。
以下、本実施形態を詳細に説明する。
図5は、本実施形態におけるサーバ101、管理サーバ105及びドライブボックス106のハード構成例を示す図である。
サーバ101は、メモリ202と、ネットワークI/F203(通信インターフェース装置の一例)と、それらに接続されたプロセッサ201とを有する。メモリ202、ネットワークI/F203及びプロセッサ201のうちの少なくとも1つが多重化(例えば二重化)されていてもよい。メモリ202が、アプリ102及びストレージ制御プログラム103を格納し、プロセッサ201が、アプリ102及びストレージ制御プログラム103を実行する。
管理サーバ105も、同様に、メモリ222と、ネットワークI/F223(通信インターフェース装置の一例)と、それらに接続されたプロセッサ221とを有する。メモリ222、ネットワークI/F223及びプロセッサ221のうちの少なくとも1つが多重化(例えば二重化)されていてもよい。メモリ222が、管理プログラム51を格納し、プロセッサ221が、管理プログラム51を実行する。
ドライブボックス106は、メモリ212と、ネットワークI/F213と、ドライブI/F214と、それらに接続されたプロセッサ211とを有する。ネットワークI/F213及びドライブI/F214が、通信インターフェース装置の一例である。ドライブI/F214に、複数のドライブ204が接続される。サーバ101と、管理サーバ105と、ドライブボックス106とは、ネットワークI/F203、223及び221経由でネットワーク104に接続され、互いに通信が可能である。ドライブ204は、Hard Disk Drive(HDD)やSolid State Drive(SSD)といった汎用的なドライブでよい。当然ながら、本発明はドライブの種類やフォームファクタに依存せず、他の種類のドライブが用いられてもよい。
図6は、本実施形態における分散ストレージシステムの区分の一例を示す図である。
分散ストレージシステムが、複数のドメイン301に区分されてよい。すなわち、サーバ101やドライブボックス106が、「ドメイン」と呼ばれる単位で管理されてよい。本構成において、アプリ102がLUに書き込むデータは、ストレージ制御プログラム103を介して、アプリ102が動作するサーバ101と同じドメイン301に属するいずれかのドライブボックス106に格納される。例えば、ドメイン301(#000)に属するサーバ101(#000)及び101(#001)において発生したライト対象のデータは、サブネットワーク54Aをドライブボックス106(#000)及び106(#001)の一方又は両方に格納され、ドメイン301(#001)に属するサーバ101(#002)及び101(#003)において発生したライト対象のデータは、ドライブボックス106(#002)に格納される。このようにドメインを用いて分散ストレージシステムを構成することで、ドライブボックス106やドライブ204に障害が発生した場合の、サーバ性能影響をドメイン301間で分離することが可能となる。
例えば、図6が示す例によれば、ネットワーク104は、サブネットワーク54A及び54B(複数のサブ通信ネットワークの一例)を含む。ドメイン301(#000)(複数のドメインの各々の一例)は、当該ドメイン301(#000)に対応したサブネットワーク54Aに接続されたサーバ101(#000)及び101(#001)とドライブボックス106(#000)及び106(#001)とを含み、サブネットワーク54Aに別のサブネットワーク54Bを介して接続されたサーバ101(#002)及び101(#003)とドライブボックス106(#002)とを含まない。これにより、サブネットワーク54A及び54B間が切断されても、ドメイン301(#000)及び301(#001)の各々の範囲で、ドライブボックス106に書き込まれたデータの読み出しを維持することができる。
図7は、ドメイン管理テーブル400の構成例を示す図である。
ドメイン管理テーブル400は、ドメイン301毎にドメイン301を構成するサーバ群とドライブボックス群とを管理するためのテーブルである。ドメイン管理テーブル400は、ドメイン301毎にレコードを有する。各レコードが、ドメイン#401、サーバ#402、及び、ドライブボックス#403といった情報を保持する。1つのドメイン301を例に取る(図7の説明において「対象ドメイン301」)。
ドメイン#401は、対象ドメイン301の識別子を表す。サーバ#402は、対象ドメインに属するサーバ101の識別子を表す。ドライブボックス#403は、対象ドメインに属するドライブボックス106の識別子を表す。
図8は、本実施形態におけるドライブ領域管理の一例を示す図である。
本実施形態では、ドライブボックス106に搭載された複数のドライブ204を「チャンク」501と呼ぶ複数の固定サイズ領域に分割して管理する。本実施形態では、異なる複数のドライブに属する複数のチャンクを組み合わせた記憶領域であるチャンクグループが、RAID構成を有する。当該チャンクグループのRAID構成に従うRAIDレベル(データ冗長度やデータ配置パタン)に従い、冗長化データセットを構成する複数のデータ要素が、当該チャンクグループに書き込まれる。当該チャンクグループのRAID構成に従い、一般的なRAID/EC技術を用いてデータ保護が行われる。本実施形態の説明において、記憶領域に関する用語の定義は、下記の通りである。
・「チャンク」は、1つのドライブ204が提供する記憶領域全体の一部である。1つのドライブ204が、複数のチャンクを提供する。
・「チャンクグループ」は、異なる2つ以上のドライブ204がそれぞれ提供する異なる2つ以上のチャンクから構成された記憶領域である。1つのチャンクグループを提供する「異なる2つ以上のドライブ204」は、1つのドライブボックス106に閉じていてもよいし、2つ以上のドライブボックス106に跨っていてもよい。
・「ページ」は、チャンクグループを構成する2つ以上のチャンクの各々の一部から構成される記憶領域である。ページが、チャンクグループそれ自体でもよいが、本実施形態では、複数のページから1つのチャンクグループが構成されている。
・「ストリップ」は、1つのドライブ204が提供する記憶領全体の一部である。1つストリップは、1つのデータ要素(ユーザデータ要素又はパリティ)を格納する。ストリップは、1つのドライブ204が提供する最小単位の記憶領域でよい。すなわち、複数のストリップから1つのチャンクが構成されていてもよい。
・「ストライプ」は、異なる2つ以上のドライブ204が提供する異なる2つ以上のストリップ(例えば同一論理アドレスの2つ以上のストリップ)から構成された記憶領域である。1つのストライプに、1つの冗長化データセットが書き込まれてよい。すなわち、1つのストライプを構成する2つ以上のストリップに、1つの冗長化データセットを構成する2つ以上のデータ要素がそれぞれ書き込まれてよい。ストライプは、ページの全体又は一部でよい。また、ストライプは、チャンクグループの全体又は一部であってよい。本実施形態では、1つのチャンクグループが、複数のページから構成されていて、1つのページが、複数のストライプから構成されていてよい。チャンクグループを構成する複数のストライプは、当該チャンクグループのRAID構成と同一のRAID構成を持っていてよい。
・「冗長構成領域」は、ストライプ、ページ及びチャンクグループのいずれかの一例でよい。
・「ドライブ領域」は、デバイス領域の一例でよく、具体的には、例えば、ストリップ及びチャンクのいずれかの一例でよい。
図9は、チャンクグループ管理テーブル600の構成例を示す図である。
チャンクグループ管理テーブル600は、各チャンクグループの構成及びデータ保護方法(RAIDレベル)を管理するためのテーブルである。チャンクグループ管理テーブル600が、後述するように、メタデータ170の少なくとも一部である。チャンクグループ管理テーブル600は、チャンクグループ毎にレコードを有する。各レコードは、チャンクグループ#601、データ冗長度602、及び、チャンク構成603といった情報を保持する。1つのチャンクグループを例に取る(図9の説明において「対象チャンクグループ」)。
チャンクグループ#601は、対象チャンクグループの識別子を表す。データ冗長度602は、対象チャンクグループのデータ冗長度(データ保護方法)を表す。チャンク#603は、対象チャンクグループの構成要素としておチャンクの識別子を表す。
図9が示す例によれば、チャンクグループ#000は、4つのチャンク(C11、C21、C31、C41)から構成されていて、RAID5(3D+1P)で保護されることがわかる。
このようなチャンクグループ管理テーブル600がメタデータ170の少なくとも一部として複数のサーバ101に共有される。このため、いずれのサーバ101からいずれのチャンクグループにデータを書き込む場合にも、当該チャンクグループのデータ冗長度に従うデータ保護が可能である。
尚、データ配置パタンに関しては、データ冗長度に応じて決めることが多いため、記載を省略する。
また、本実施形態では、動的に(例えば、ドライブへの書き込み量に応じて、言い換えれば、1つ以上の構成済のチャンクグループの空き容量に応じて)、少なくとも1つのストレージ制御プログラム103(例えば、代表サーバ101におけるストレージ制御プログラム103)が、チャンクグループを新たに構成し、新たに構成されたチャンクグループの情報を、チャンクグループ管理テーブル600に追加してもよい。これにより、分散ストレージシステムの状況に応じて最適なデータ冗長度のチャンクグループを構成すること、つまり、チャンクグループのデータ冗長度の最適化が期待される。具体的には、例えば、下記が採用されてもよい。
・チャンク管理テーブルが用意されてよい。チャンク管理テーブルは、複数のストレージ制御プログラム103が共有してよい。チャンク管理グループは、チャンク毎に、当該チャンクを提供するドライブと、当該ドライブを有するドライブボックスと、チャンクの状態(例えば、いずれのチャンクグループの構成要素となっていない空きの状態であるか否か)を表してよい。
・ストレージ制御プログラム103(又は、管理プログラム51)が、チャンクグループを新たに作成する条件が満たされた場合(例えば、1つ以上の作成済みチャンクグループの空き容量が所定値未満になった場合)、異なる2つ以上のドライブ204がそれぞれ提供する異なる2つ以上の空きチャンクから構成されたチャンクグループを新たに作成してよい。ストレージ制御プログラム103(又は、管理プログラム51)は、当該チャンクグループの構成を表す情報をチャンクグループ管理テーブル600に追記してよい。ストレージ制御プログラム103が、新たに作成されたチャンクグループに、ライト対象のデータに従う1つ以上の冗長化データセットを書き込んでよい。これにより、チャンクグループの枯渇を回避しながら、最適なデータ冗長度のチャンクグループを作成することが期待される。
・ストレージ制御プログラム103(又は、管理プログラム51)は、作成するチャンクグループのデータ冗長度(RAIDレベル)を、所定のポリシーに従って決定してよい。例えば、ドライブボックスにおける空き容量が所定値以上であれば、ストレージ制御プログラム103(又は、管理プログラム51)は、新たに作成するチャンクグループのデータ冗長度を、RAID6(3D+2P)としてよい。ドライブボックスにおける空き容量が所定値未満であれば、ストレージ制御プログラム103(又は、管理プログラム51)は、新たに作成するチャンクグループのデータ冗長度を、ドライブボックスにおける空き容量が所定値以上の場合よりも少ないチャンクで実現可能なデータ冗長度(例えば、RAID5(3D+1P))としてよい。
また、本実施形態では、全ドライブボックス106が有する全ドライブ204を基に複数のチャンクグループが予め構成されていてもよい。
また、本実施形態では、後述するように、ドライブ増設時にドライブ内全領域のチャンクに関するチャンクグループが構成されてもよい。ドライブ増設は、ドライブ単位で行われてもよいし、ドライブボックス単位で行われてもよい。
図10は、ページマッピングテーブル700の構成例を示す図である。
上述したように、本実施形態では、LU(Logical Unit)と呼ぶ単位でアプリ102に書き込み領域が提供される。各チャンクグループの領域は、チャンクグループよりも小さい固定サイズ領域であるページで管理され、LU領域と対応付けられる。ページマッピングテーブル700は、LU領域とページ(チャンクグループの一部領域)との対応関係を管理するためのテーブルである。尚、本実施形態では、LU作成時、LUの全領域にページが割り当てられるが、Thin Provisioningと呼ばれる技術を用いて、動的に、ライト先のLU領域にページが割り当てられても構わない。
ページマッピングテーブル700は、LU領域毎にレコードを有する。各レコードが、LU#701、LU領域先頭アドレス702、チャンクグループ#703、及び、チャンクグループ内オフセット704といった情報を保持する。1つのLU領域を例に取る(図10の説明において「対象LU領域」)。
LU#701は、対象LU領域を含んだLUの識別子を表す。LU領域先頭アドレス702は、対象LU領域の先頭アドレスを表す。チャンクグループ#703は、対象LU領域に割り当てられたページを含んだチャンクグループの識別子を表す。チャンクグループ内オフセット704は、対象領域に割り当てられたページの位置(当該ページを含んだチャンクグループの先頭アドレスから当該ページの先頭アドレスまでの差分)を表す。
図11は、空きページ管理テーブル710の構成例を示す図である。
空きページ管理テーブル710は、各サーバ101が別サーバ101と通信することなく、LUに割り当て可能な空きページを管理するためのテーブルである。空きページ管理テーブル710は、空きページ毎にレコードを有する。各レコードが、チャンクグループ#711及びチャンクグループ内オフセット712といった情報を保持する。1つの空きページを例に取る(図11の説明において「対象空きページ」)。
チャンクグループ#711は、対象空きページを含んだチャンクグループの識別子を表す。チャンクグループ内オフセット712は、対象空きページの位置(対象空きページを含んだチャンクグループの先頭アドレスから対象空きページの先頭アドレスまでの差分)を表す。
空きページは、代表サーバ101(又は管理サーバ105)によって、各サーバ101に割り当てられ、当該テーブル710に、割り当てられた空きページの情報が追加される。また、LU作成時に作成されたLUに割り当てられた空きページのレコードは、当該テーブル710から削除される。あるサーバ101の空きページが不足する場合は、代表サーバ101(又は管理サーバ105)によって、新しいチャンクグループが作成され、チャンクグループ内の領域が、新たな空きページとして、当該あるサーバ101に追加される。つまり、本実施形態では、サーバ101毎に、当該サーバ101が保持する空きページ管理テーブル710は、当該サーバ101がアクセス可能な全ドライブボックス106が提供する複数のページのうち、当該サーバ101に、当該サーバ101において提供されるLUに割り当て可能として割り当てられたページに関する情報を保持する。
LU作成時のページ割当て制御や、空きページ制御のシーケンスの詳細については、記載を省略する。
図12は、本実施形態におけるテーブル配置の一例を示す図である。
以下、1つのサーバとして、サーバ101Aを例に取り説明する。サーバ101Aについての説明は、他の各サーバ101(例えば、サーバ101B)についても適用可能である。
まず、サーバ101Aは、分散ストレージシステムの複数の区分である複数のドメインを表すドメイン管理テーブル400Aを保持してよい。
また、サーバ101Aは、自身で稼働中のアプリ102が使用するLUに関連するページマッピングテーブル700Aと、サーバ101AにLUに割り当て可能な空きページとして割り当てられた空きページの情報を保持する空きページ管理テーブル710Aとを所有する。言い換えれば、サーバ101Aは、全サーバ101の全ページマッピングテーブルを持たないでよい。全サーバ101の全ページマッピングテーブルが全サーバ101で共有されると、各サーバ101が所有する管理データ量が肥大化し、スケーラビリティに影響を与えるためである。但し、サーバ障害時の管理データ消失に対応するため、ページマッピングテーブル700Aは、分散ストレージシステムを構成する一部の別のサーバ101にバックアップされてよい。尚、本実施形態において、「管理データ」は、ストレージ制御プログラム103が保持するデータであって、ドメイン管理テーブル400A、ページマッピングテーブル700A、空きページ管理テーブル710A及びメタデータ170Aを含んでよい。メタデータ170Aは、チャンクグループ管理テーブル600Aを含んでよい。ページマッピングテーブル700Aは、ストレージ制御プログラム103Aが提供する1つ以上のLUについての情報を持つが、LU毎に存在してもよい。
以降、あるLUについて、当該LUのページマッピングテーブル部分を所有するサーバをオーナーサーバと呼ぶ。オーナーサーバは、LUに関するメタデータへ高速アクセスでき、高速なI/Oを可能である。このため、本実施形態の説明では、当該LUを利用するアプリをオーナーサーバに配置する構成について記載する。但し、アプリをオーナーサーバとは別のサーバに配置し、オーナーサーバにI/Oを行うことも可能である。
チャンクグループ管理テーブル600Aは、ストレージ制御プログラムが稼働しているサーバ101間で同期する。このため、全てのサーバ101で同一の構成情報(同一の内容)を参照可能である。これにより、アプリとLUとをサーバ101Aから別サーバ101Bに移動する時に、ユーザデータ要素やパリティを再構成する必要(言い換えれば、ネットワーク104を介したデータコピーをする必要)が無い。このような再構成(データコピー)が無くても、アプリとLUの移動先サーバでもデータ保護を継続することが可能となる。
ストレージ制御プログラム103は、ドメイン管理テーブル400A及びチャンクグループ管理テーブル600Aを参照し、データの書き込み先として、同一ドメイン内にある1つ以上のドライブボックス106から提供されるチャンクグループを特定してよい。また、ストレージ制御プログラム103は、ドメイン管理テーブル400A及びチャンクグループ管理テーブル600Aを参照し、同一ドメイン内にある1つ以上のドライブボックス106から提供される2つ以上の空きチャンク(異なる2以上のドライブから提供される2つ以上の空きチャンク)を特定し、当該2つ以上の空きチャンクでチャンクグループを構成し(その際、例えば、当該チャンクグループのデータ冗長度を、分散ストレージシステムの状況に応じて決定し)、当該チャンクグループの情報を、チャンクグループ管理テーブル600Aに追加してよい。いずれのチャンクがいずれのドライブボックス106のドライブ204から提供されているかは、例えば、下記のいずれかにより特定されてよい。
・チャンクグループ管理テーブル600に、チャンク毎に、当該チャンクを提供するドライブ204と当該ドライブ204を有するドライブボックス106との情報が追加される。
・チャンクの識別子が、当該当該チャンクを提供するドライブ204の識別子と当該ドライブ204を有するドライブボックス106の識別子とを含む。
以下、本実施形態で行われる幾つかの処理を説明する。なお、以下の説明では、アプリ102として、アプリ102Aを例に取り、ストレージ制御プログラム103として、ストレージ制御プログラム103Aを例に取る。
図13は、リード処理の流れの一例を示す図である。
ストレージ制御プログラム103Aが、アプリ102Aから、当該アプリ102Aが利用するLU(当該ストレージ制御プログラム103Aが提供したLU)を指定したリード要求を受ける(S901)。ストレージ制御プログラム103Aが、ページマッピングテーブル700Aを使って、当該リード要求で指定されたアドレス(例えば、LU#とLU領域アドレスとの組)を、ページアドレス(チャンクグループ#とチャンクグループ内オフセットアドレスとの組)に変換する(S902)。その後、ストレージ制御プログラム103Aが、ページアドレスが属するページの基になっている2つ以上のドライブ204から1つ以上の冗長化データセットを読み出し(S903)、読み出した1つ以上の冗長化データセットからリード対象のデータを構築し、リード対象のデータをアプリ102Aに応答する(S904)。
図14は、ライト処理の流れの一例を示す図である。
ストレージ制御プログラム103Aが、アプリ102Aから、LUを指定したライト要求を受ける(S1001)。ストレージ制御プログラム103Aが、ページマッピングテーブル700Aを使って、当該ライト要求で指定されたアドレス(例えば、LU#とLU領域アドレスとの組)を、ページアドレス(チャンクグループ#とチャンクグループ内オフセットアドレスとの組)に変換する(S1002)。ストレージ制御プログラム103Aは、チャンクグループ管理テーブル600Aを使って、ページアドレス中のチャンクグループ#のデータ冗長度を特定する(S1003)。ストレージ制御プログラム103Aが、特定したデータ冗長度に従い、ライト対象のデータを冗長化した1つ以上の冗長化データセットを作成する(S1004)。最後に、ストレージ制御プログラム103Aが、作成した1つ以上の冗長化データセットを、S1002で得られたページアドレスが属するページの基になっている2つ以上のドライブ204に書き込み(S1005)、アプリ102Aに、書き込み完了を応答する(S1006)。
図15は、ドライブ増設処理の流れの一例を示す図である。
まず、管理プログラム51から、代表サーバ101Aのストレージ制御プログラム103Aが、ドライブ増設の指示を受ける(S1100)。代表サーバ101Aのストレージ制御プログラム103Aは、増設後のドライブ構成に基づき、チャンクグループを再構成し、チャンクグループ管理テーブル600Aを、再構成後の複数のチャンクグループを表す情報に更新する(S1102)。
ストレージ制御プログラム103Aが、全てのサーバ101のストレージ制御プログラム103にチャンクグループの構成変更を通知する(S1103)。各サーバ101のストレージ制御プログラム103は、通知内容に応じて、自身のチャンクグループ構成変更を変更する(S1104)。すなわち、S1103及びS1104により、各サーバ101のチャンクグループ管理テーブル600の内容が、更新後のチャンクグループ管理テーブル600Aと同一の内容になる。
尚、S1102のチャンクグループ再構成は、例えば次の通りでよい。すなわち、ストレージ制御プログラム103Aは、増設された全ドライブ204の各々のチャンクを定義する。ここで定義された各チャンクを、「増設チャンク」と言う。ストレージ制御プログラム103Aが、複数の増設チャンクを使用してチャンクグループ再構成を行う。チャンクグループ再構成は、チャンクグループを構成するチャンクの数を均一化する(チャンクグループを構成するチャンクを組みなおす)リバランス処理と、増設チャンクを用いて新規チャンクグループを作成する処理とのうちの少なくとも1つを含んでよい。
ドライブ増設に伴いチャンクグループ再構成が行われるので、ドライブが増設されてもチャンクグループの構成を最適な構成に維持することが期待できる。
図16は、ドライブ障害修復処理の流れの一例を示す図である。
まず、代表サーバ101Aのストレージ制御プログラム103Aがドライブ障害を検知する(S1201)。障害ドライブ(ドライブ障害が生じたドライブ)が提供する各チャンクを、以下、「障害チャンク」と言う。ストレージ制御プログラム103Aが、チャンクグループ管理テーブル600Aを参照して、障害チャンク毎に、修復先チャンクを選択する(S1202)。チャンクグループ管理テーブル600Aが、いずれのチャンクグループにも属していない空きチャンクの情報(例えば、空きチャンク毎に、空きチャンクの識別子、当該空きチャンクを提供するドライブの識別子、及び、当該ドライブの識別子を含んだ情報)を保持してもよい。各障害チャンクについて、修復先チャンクとして選択されたチャンクは、当該障害チャンクを含むチャンクグループのいずれのチャンクも提供していないドライブ204が提供する空きチャンクである。言い換えれば、各障害チャンクについて、当該障害チャンクを含んだチャンクグループにおけるいずれのチャンクも、修復先チャンクとして選択されない。
ストレージ制御プログラム103Aが、全サーバ101のストレージ制御プログラム103に、障害ドライブの修復を指示する(S1203)。当該指示には、例えば、障害チャンクの一部を含んだページのページアドレスが指定される。
指示を受けた各サーバ101のストレージ制御プログラム103は、ループ(A)に属するS1204~S1206を行う。S1204~S1206は、当該ストレージ制御プログラム103がオーナーであるLUに割り当てられているのページのうち、当該指示で指定されているページアドレスが表すページ(すなわち、障害ドライブが基になっているページ)毎に行われる。すなわち、ストレージ制御プログラム103は、ページマッピングテーブル700を参照し、自身がオーナーであるLUに割り当てられているのページのうち、当該指示で指定されているページアドレスが表すページを選択する(S1204)。ストレージ制御プログラム103は、当該ページアドレスに含まれるチャンクグループ#に対応したデータ冗長度をチャンクグループ管理テーブル600から特定し、特定したデータ冗長度を基に、S1204で選択したページからデータを修復する(S1205)。ストレージ制御プログラム103が、修復したデータを、修復先チャンクグループのデータ冗長度を基に冗長化し、冗長化したデータ(1つ以上の冗長化データセット)を、修復先チャンクグループのページに書き込む(S1206)。
尚、ここで言う「修復先チャンクグループ」とは、障害ドライブ以外の2つ以上のドライブ204に基づくチャンクグループである。図16が示す例によれば、修復したデータを冗長化したデータが、障害ドライブ以外の2つ以上のドライブに基づく空きのページに書き込まれるので、チャンクグループ再構成を行うこと無しに、ドライブ障害修復が可能である。
なお、上述したように、データ冗長度に基づき修復されたデータ要素(障害チャンク内のデータ要素)が、当該データ要素を含む冗長化データセットが格納されているチャンクグループに含まれていないいずれかのチャンクを修復先チャンクとして書き込まれてもよい。この場合、チャンクグループにおける障害チャンクが修復先チャンクに差し替えられるチャンクグループ再構成が行われてよい。
図17は、サーバ障害修復処理の流れの一例を示す図である。
代表サーバ101Aのストレージ制御プログラム103Aが、サーバ障害を検知する(S1301)。次に、代表サーバ101Aのストレージ制御プログラム103Aが、障害サーバ(サーバ障害が生じたサーバ)における各LUについて、S1302~S1305を行う。以下、1つのLUを例に取る(図17の説明において「選択LU」)。なお、選択LUを利用するアプリ102は、例えば管理プログラム51により停止される。
ストレージ制御プログラム103Aが、障害サーバにおけるLUの移動先のサーバ、つまり新たなオーナーサーバを決める(S1302)。オーナーサーバの決め方の詳細は省略するが、移動後のI/O負荷が各サーバで均一になるようにオーナーサーバが決められてよい。ストレージ制御プログラム103Aが、選択LUのオーナーサーバに決めたサーバのストレージ制御プログラム103に、選択LUの修復を依頼する(S1303)。
修復依頼を受けたストレージ制御プログラム103は、いずれかのサーバに格納されている、選択LUに対応したページマッピングテーブル部分のバックアップを、自身のサーバ101にコピーする(S1304)。このページマッピングテーブル部分を基に、選択LUが、オーナーサーバにおいて復旧される。つまり、選択LUの復旧先LUに、選択LUに代えて、選択LUに割り当てられているページが割り当てられる。S1304において、ストレージ制御プログラム103は、選択LUの情報(例えば、LU#)を、自身のサーバ101におけるいずれかの空きのLUに引き継ぐ又は他の方法により、アプリから選択LUに代えて自身のサーバ101におけるLUに対するI/Oを受け付け可能としてもよい。
最後に、管理プログラム51(又はストレージ制御プログラム103A)が、選択LUを利用するアプリ102を再開する(S1305)。
このようにして、選択LUに書き込まれたデータをネットワーク104を介してサーバ101間で転送すること無しに、サーバ障害修復が可能である。尚、新たなオーナーサーバにおいて、選択LUのアプリが再開されてもよい。例えば、障害サーバにおけるアプリ(アクティブ)に対応したアプリ(スタンバイ)が存在するサーバが、オーナーサーバとされて、選択LUを引き継いだオーナーサーバにおいて、当該アプリが再開されてよい。
図18は、サーバ増設処理の流れの一例を示す図である。
管理プログラム51が、増設サーバ(増設されたサーバ)に移動する1つ以上のLUを選択する(S1401)。各LUについて、S1402~S1405が行われる。以下、1つのLUを例に取る(図18の説明において「選択LU」)。
管理プログラム51が、選択LUを利用するアプリを一時停止する(S1402)。これにより、選択LUに対するI/Oが発生しないようになる。管理プログラム51が、選択LUの移動元サーバ101(現在のオーナーサーバ101)のストレージ制御プログラム103に、選択LUの移動を依頼する(S1403)。
当該依頼を受けたストレージ制御プログラム103が、選択LUに対応したページマッピングテーブル部分を増設サーバ101にコピーする(S1404)。このページマッピングテーブル部分を基に、選択LUが、増設サーバにおいて復旧される。つまり、選択LUの復旧先LUに、選択LUに代えて、選択LUに割り当てられているページが割り当てられる。
管理プログラム51が、選択LUに対応するアプリを再開する(S1405)。
このようにして、選択LUに書き込まれたデータをネットワーク104を介してサーバ101間で転送すること無しに、サーバ増設処理が可能である。
尚、移動されたLUのアプリも、増設サーバに移動されてよい。
また、サーバ増設処理において、S1401において、1つ以上のLUに代えて、1つ以上のアプリが選択され、S1402~S1405は、選択されたアプリ毎に行われてよい。すなわち、S1402で、管理プログラム51が、選択されたアプリを一時停止する。S1403で、管理プログラム51が、当該アプリが利用する少なくとも1つのLUについて、オーナーサーバのストレージ制御プログラム103に、当該LUを増設サーバに移動することを依頼する。S1404で、当該LUに対応したページマッピングテーブル部分が増設サーバにコピーされる。S1405で、アプリが再開される。
図19は、オーナーサーバ移動処理の流れの一例を示す図である。
オーナーサーバ移動処理は、LUと当該LUを利用するアプリとが同一サーバ101に無い場合に、当該LU及び当該アプリの一方を移動することで、当該LUと当該アプリの両方を同一サーバ101に配置する処理である。以下、移動対象としてLUを例に取る。
管理プログラム51が、移動対象のLUと移動先サーバ(新たなオーナーサーバ)を決める(S1501)。
管理プログラム51が、移動対象のLUを利用するアプリを一時停止する(S1502)。管理プログラム51が、移動対象のLUの現在のオーナーサーバのストレージ制御プログラム103に、当該LUの移動を依頼する(S1503)。
当該依頼を受けたストレージ制御プログラム103が、当該LUに対応したページマッピングテーブル部分を移動先サーバにコピーする(S1504)。
管理プログラム51が、移動対象のLUを利用するアプリを再開する(S1505)。
このようにして、移動対象LU(オーナーサーバの変更対象のLU)に書き込まれたデータをネットワーク104を介してサーバ101間で転送すること無しに、オーナーサーバ移動処理が可能である。
尚、オーナーサーバ移動処理及びサーバ増設処理では、管理プログラム51が一部処理を実行していたが、管理プログラム51の代わりに代表サーバ101Aのストレージ制御プログラム103が処理を実行してもよい。
以上、本発明の実施形態を説明したが、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。
上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、又は、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
101:サーバ
106:ドライブボックス

Claims (11)

  1. 複数の物理記憶デバイスを含んだ1つ又は複数のストレージユニットと、
    前記1つ又は複数のストレージユニットに通信ネットワークを介して接続された複数の計算機と
    を有し、
    前記複数の計算機のうちの2つ以上の計算機が、それぞれ、ストレージ制御プログラムを実行し、
    前記2つ以上の計算機の各々が、前記複数の物理記憶デバイスが提供する複数の記憶領域に関するメタデータを有し前記2つ以上の計算機における2つ以上のストレージ制御プログラムが、前記2つ以上の計算機のうちの一の計算機におけるメタデータの更新があった場合には前記2つ以上の計算機のうちの他の計算機におけるメタデータに当該更新を反映し、
    論理ユニット毎に、当該論理ユニットを構成する記憶領域と、2つ以上の物理記憶デバイスに基づく1つ以上の記憶領域との対応関係を表すデータであるマッピングデータを、当該論理ユニットのI/Oを担当する計算機であるオーナーサーバが有し、
    前記2つ以上のストレージ制御プログラムの各々は、
    当該ストレージ制御プログラムが提供する論理ユニットにおけるライト先領域を指定したライト要求を、当該論理ユニットを認識するアプリケーションから受け、
    当該ライト要求に付随するデータを、前記メタデータを基に冗長化し、
    当該冗長化されたデータである1つ以上の冗長化データセットを、当該ライト先領域の基になっている2つ以上の物理記憶デバイスが提供する1つ以上の記憶領域に書き込み、
    前記ストレージ制御プログラムに障害が発生した場合、当該障害が発生したストレージ制御プログラムを有する計算機における論理ユニット毎に、
    各計算機の負荷に基づいて、当該論理ユニットの移動先の計算機である新たなオーナーサーバを、それぞれ前記メタデータを有する2つ以上の計算機から選択し、
    当該選択された新たなオーナーサーバに、当該論理ユニットのマッピングデータをコピーし、
    当該論理ユニットについてのマッピングデータを基に、当該論理ユニットを前記新たなオーナーサーバに復旧し、当該復旧された論理ユニットを提供し、
    前記新たなオーナーサーバおけるストレージ制御プログラムが、前記コピーされたマッピングデータ及び前記メタデータを用いて、前記復旧された論理ユニットの記憶領域に格納されたデータにアクセスし、
    前記物理記憶デバイスに障害が発生した場合、障害の発生していない他の物理記憶デバイスに記憶された冗長化させたデータを用いて、前記ストレージ制御プログラムが前記障害の発生した物理記憶デバイスのデータを復元する
    分散ストレージシステム。
  2. 前記複数の物理記憶デバイスの各々が、2つ以上の記憶領域である2つ以上のデバイス領域を提供し、
    前記複数の記憶領域は、複数の冗長構成領域であり、
    前記メタデータが、前記複数の冗長構成領域の各々について、当該冗長構成領域の構成とデータ保護方法とを表し、
    前記複数の冗長構成領域の各々は、冗長化データセットが書き込まれる記憶領域であって、前記複数の物理記憶デバイスのうちの2つ以上の物理記憶デバイスがそれぞれ提供するデバイス領域で構成されている記憶領域である、
    請求項1に記載の分散ストレージシステム。
  3. 1つ又は2つ以上の物理記憶デバイスが1つ以上のストレージユニットに追加されたこと、又は、1つ以上のストレージユニットが追加されたことを検出したストレージ制御プログラムが、
    1つ以上の冗長構成領域の追加と、1つ以上の冗長構成領域の構成の変更とのうちの少なくとも1つである再構成を行い、
    当該再構成後の冗長構成領域の構成を表すデータに前記メタデータを更新する、
    請求項2に記載の分散ストレージシステム。
  4. いずれかの物理記憶デバイスに障害が生じた場合、当該障害が生じた物理記憶デバイスに格納されており1つ又は複数の冗長化データセットがそれぞれ有する1つ又は複数のデータ要素の各々について、当該データ要素を書き込んだストレージ制御プログラムが、前記メタデータを基に、当該データ要素を、当該データ要素を含む冗長化データセットのうち当該データ要素以外のデータ要素から復元し、当該復元したデータ要素を、当該冗長化データセットを格納した物理記憶デバイス以外のいずれかの物理記憶デバイスに書き込む、
    請求項1に記載の分散ストレージシステム。
  5. 計算機が増設された場合、いずれか既存の計算機におけるストレージ制御プログラムが提供した少なくとも1つの論理ユニットについて、当該増設された計算機におけるストレージ制御プログラムが、
    当該論理ユニットのマッピングデータを当該既存の計算機におけるストレージ制御プログラムから受けて、
    当該マッピングデータを基に、当該論理ユニットを復旧し、
    復旧した論理ユニットを提供する、
    請求項1に記載の分散ストレージシステム。
  6. いずれかの計算機におけるストレージ制御プログラムが提供した少なくとも1つの論理ユニットについて、当該計算機とは別の計算機であって当該論理ユニットの提供を受けるアプリケーションを有する計算機である移動先の計算機におけるストレージ制御プログラムが、
    当該論理ユニットのマッピングデータを、当該論理ユニットの移動元の計算機におけるストレージ制御プログラムから受けて、
    当該マッピングデータを基に、当該論理ユニットの移動先としての論理ユニットを構築し、
    当該構築した論理ユニットを、当該アプリケーションに提供する、
    請求項1に記載の分散ストレージシステム。
  7. 複数のドメインがあり、
    前記複数のドメインの各々が、1つ以上の計算機と1つ以上のストレージユニットを含み、
    各ストレージ制御プログラムについて、当該ストレージ制御プログラムが生成した冗長化データセットのライト先は、当該ストレージ制御プログラムを含んだドメイン内の2つ以上の物理記憶デバイスである、
    請求項1に記載の分散ストレージシステム。
  8. 前記通信ネットワークは、複数のサブ通信ネットワークを含み、
    前記複数のドメインの各々は、
    当該ドメインに対応したサブ通信ネットワークに接続された1つ以上の計算機及び1つ以上のストレージユニットを含み、
    当該ドメインに対応したサブ通信ネットワークに別の1つ以上のサブ通信ネットワークを介して接続された1つ以上の計算機及び1つ以上のストレージユニットを含まない、
    請求項に記載の分散ストレージシステム。
  9. 前記2つ以上のストレージ制御プログラムの少なくとも1つが、
    前記メタデータを基に、いずれの冗長化構成領域の構成要素になっていない2つ以上の空きのデバイス領域を特定し、
    特定した2つ以上の空きのデバイス領域で冗長化構成領域を構成し、
    構成された冗長化構成領域の情報を前記メタデータに追加する、
    請求項1に記載の分散ストレージシステム。
  10. 前記2つ以上のストレージ制御プログラムの少なくとも1つが、前記メタデータから、1つ以上の構成済のチャンクグループの空き容量が閾値未満であることが特定された場合に、前記2つ以上の空きのデバイス領域を特定する、
    請求項に記載の分散ストレージシステム。
  11. 分散ストレージシステムを構成する複数の計算機のうちの2つ以上の計算機の各々が、前記複数の計算機に通信ネットワークを介して接続されている1つ又は複数のストレージユニットにおける複数の物理記憶デバイスが提供する複数の記憶領域に関するメタデータを有し
    論理ユニット毎に、当該論理ユニットを構成する記憶領域と、2つ以上の物理記憶デバイスに基づく1つ以上の記憶領域との対応関係を表すデータであるマッピングデータを、当該論理ユニットのI/Oを担当する計算機であるオーナーサーバが有し、
    前記2つ以上の計算機における2つ以上のストレージ制御プログラムが、前記2つ以上の計算機のうちの一の計算機におけるメタデータの更新があった場合には前記2つ以上の計算機のうちの他の計算機におけるメタデータに当該更新を反映し、
    論理ユニットにおけるライト先領域を指定したライト要求を、いずれかの計算機に存在し当該論理ユニットを認識するアプリケーションから、当該論理ユニットを提供するストレージ制御プログラムが受けた場合、当該ストレージ制御プログラムが、
    当該ライト要求に付随するデータを、前記メタデータを基に冗長化し、
    当該冗長化されたデータである1つ以上の冗長化データセットを、当該ライト先領域の基になっている2つ以上の物理記憶デバイスが提供する1つ以上の記憶領域に書き込み、
    前記ストレージ制御プログラムに障害が発生した場合、当該障害が発生したストレージ制御プログラムを有する計算機における論理ユニット毎に、
    各計算機の負荷に基づいて、当該論理ユニットの移動先の計算機である新たなオーナーサーバを、それぞれ前記メタデータを有する2つ以上の計算機から選択し、
    当該選択された新たなオーナーサーバに、当該論理ユニットのマッピングデータをコピーし、
    当該論理ユニットについてのマッピングデータを基に、当該論理ユニットを前記新たなオーナーサーバに復旧し、当該復旧された論理ユニットを提供し、
    前記新たなオーナーサーバおけるストレージ制御プログラムが、前記コピーされたマッピングデータ及び前記メタデータを用いて、前記復旧された論理ユニットの記憶領域に格納されたデータにアクセスし、
    前記物理記憶デバイスに障害が発生した場合、障害の発生していない他の物理記憶デバイスに記憶された冗長化させたデータを用いて、前記ストレージ制御プログラムが、前記障害の発生した物理記憶デバイスのデータを復元する、
    記憶制御方法。
JP2020058088A 2020-03-27 2020-03-27 分散ストレージシステム及び記憶制御方法 Active JP7167078B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2020058088A JP7167078B2 (ja) 2020-03-27 2020-03-27 分散ストレージシステム及び記憶制御方法
CN202010883083.9A CN113448502B (zh) 2020-03-27 2020-08-28 分布式存储系统和存储控制方法
US17/019,471 US20210303178A1 (en) 2020-03-27 2020-09-14 Distributed storage system and storage control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020058088A JP7167078B2 (ja) 2020-03-27 2020-03-27 分散ストレージシステム及び記憶制御方法

Publications (2)

Publication Number Publication Date
JP2021157588A JP2021157588A (ja) 2021-10-07
JP7167078B2 true JP7167078B2 (ja) 2022-11-08

Family

ID=77808512

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020058088A Active JP7167078B2 (ja) 2020-03-27 2020-03-27 分散ストレージシステム及び記憶制御方法

Country Status (3)

Country Link
US (1) US20210303178A1 (ja)
JP (1) JP7167078B2 (ja)
CN (1) CN113448502B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461029B1 (en) * 2021-03-18 2022-10-04 EMC IP Holding Company LLC Techniques for storage management
US20230019814A1 (en) * 2021-07-14 2023-01-19 Vmware, Inc. Migration of virtual compute instances using remote direct memory access
US20230031872A1 (en) * 2021-07-24 2023-02-02 Vmware, Inc. Enhanced platform and processes for scalability
JP2023096958A (ja) 2021-12-27 2023-07-07 株式会社日立製作所 ストレージシステム及びストレージシステム制御方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016038767A (ja) 2014-08-08 2016-03-22 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法
JP2016510440A (ja) 2013-03-18 2016-04-07 株式会社日立製作所 複合型ストレージシステム及び記憶制御方法
WO2019047834A1 (zh) 2017-09-05 2019-03-14 华为技术有限公司 用于传输数据处理请求的方法和装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7328307B2 (en) * 2004-01-22 2008-02-05 Tquist, Llc Method and apparatus for improving update performance of non-uniform access time persistent storage media
US9170892B2 (en) * 2010-04-19 2015-10-27 Microsoft Technology Licensing, Llc Server failure recovery
US9116862B1 (en) * 2012-01-17 2015-08-25 Amazon Technologies, Inc. System and method for data replication using a single master failover protocol
US9077580B1 (en) * 2012-04-09 2015-07-07 Symantec Corporation Selecting preferred nodes for specific functional roles in a cluster
US8924656B1 (en) * 2012-04-26 2014-12-30 Netapp, Inc. Storage environment with symmetric frontend and asymmetric backend
JP5773446B2 (ja) * 2012-11-28 2015-09-02 Necソリューションイノベータ株式会社 記憶装置、冗長性回復方法、およびプログラム
JP6273353B2 (ja) * 2014-04-21 2018-01-31 株式会社日立製作所 計算機システム
US10346245B2 (en) * 2014-12-09 2019-07-09 Tsinghua University Data storage system and data storage method
US9575853B2 (en) * 2014-12-12 2017-02-21 Intel Corporation Accelerated data recovery in a storage system
WO2019043717A1 (en) * 2017-09-04 2019-03-07 Kaminario Technologies Ltd. SECURE ACCESS CONTROL IN A STORAGE SYSTEM
CN110187999B (zh) * 2019-05-09 2021-04-27 新华三技术有限公司 地址映射数据备份方法及装置
US11169723B2 (en) * 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016510440A (ja) 2013-03-18 2016-04-07 株式会社日立製作所 複合型ストレージシステム及び記憶制御方法
JP2016038767A (ja) 2014-08-08 2016-03-22 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法
WO2019047834A1 (zh) 2017-09-05 2019-03-14 华为技术有限公司 用于传输数据处理请求的方法和装置

Also Published As

Publication number Publication date
JP2021157588A (ja) 2021-10-07
CN113448502A (zh) 2021-09-28
CN113448502B (zh) 2024-04-12
US20210303178A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
JP7167078B2 (ja) 分散ストレージシステム及び記憶制御方法
US9122410B2 (en) Storage system comprising function for changing data storage mode using logical volume pair
US20200387479A1 (en) Using data characteristics to optimize grouping of similar data for garbage collection
CN109857334B (zh) 存储系统及其控制方法
CN110383251B (zh) 存储系统、计算机可读记录介质、系统的控制方法
US10454810B1 (en) Managing host definitions across a plurality of storage systems
US20230280910A1 (en) Allocation Of Differing Erase Block Sizes
US12105979B2 (en) Servicing input/output (‘I/O’) operations during a change in membership to a pod of storage systems synchronously replicating a dataset
US11861205B2 (en) Distributed storage system and volume migration method
US11740823B2 (en) Storage system and storage control method
CN113821298A (zh) 使用底层卷标识符将存储操作请求中继到存储系统
JP6974281B2 (ja) ストレージシステム及びストレージ制御方法
US20230004464A1 (en) Snapshot commitment in a distributed system
US20220365692A1 (en) Techniques for storage management
US12111730B2 (en) Storage system and failure handling method
JP7179947B2 (ja) ストレージシステム及びストレージ制御方法
JP7142052B2 (ja) ハイブリッドクラウドにおけるデータを保護する方法
JP7137612B2 (ja) 分散型ストレージシステム、データ復旧方法、及びデータ処理プログラム
US11544005B2 (en) Storage system and processing method
JP6858812B2 (ja) ストレージ制御システム及び方法
US20240220378A1 (en) Information processing system and information processing method
JP2023151189A (ja) ストレージシステム及びその制御方法
JP2023181818A (ja) ストレージシステムおよびストレージシステムにおけるデータレイアウト変換方法
JP2023096958A (ja) ストレージシステム及びストレージシステム制御方法
JP2024061460A (ja) ストレージシステムおよびストレージ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220428

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220927

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221026

R150 Certificate of patent or registration of utility model

Ref document number: 7167078

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350