CN113448502B - 分布式存储***和存储控制方法 - Google Patents

分布式存储***和存储控制方法 Download PDF

Info

Publication number
CN113448502B
CN113448502B CN202010883083.9A CN202010883083A CN113448502B CN 113448502 B CN113448502 B CN 113448502B CN 202010883083 A CN202010883083 A CN 202010883083A CN 113448502 B CN113448502 B CN 113448502B
Authority
CN
China
Prior art keywords
storage
data
control program
logical unit
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
CN202010883083.9A
Other languages
English (en)
Other versions
CN113448502A (zh
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
Publication of CN113448502A publication Critical patent/CN113448502A/zh
Application granted granted Critical
Publication of CN113448502B publication Critical patent/CN113448502B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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)

Abstract

本发明提供一种分布式存储***和存储控制方法,在分布式存储***中无需计算机之间的数据传输地使数据冗余化。包括具有多个物理存储设备(PDEV)的1个或多个存储单元和经由通信网络与该1个或多个存储单元连接的多个计算机。2个以上的计算机各自执行存储控制程序(以下记作控制程序)。2个以上的控制程序共享多个PDEV提供的多个存储区域和关于该多个存储区域的元数据。在控制程序中发生了故障的情况下,共享元数据的其他控制程序访问保存于存储区域的数据。在PDEV中发生了故障的情况下,控制程序将使用存储于没有发生故障的其他PDEV的冗余化的数据来将发生了故障的PDEV的数据还原。

Description

分布式存储***和存储控制方法
技术领域
本发明大致涉及分布式存储***的存储控制。
背景技术
近年来,在通用服务器中构建存储***的Software-Defined Storage(SDS)正在逐渐成为主流。另外,作为SDS的一个方式,在通用服务器中捆绑应用程序和存储控制软件的Hyper Converged Infrastructure(HCI)正在逐渐得到广泛认知。以下,将采用了HCI作为SDS的一个方式的存储***称为“SDS/HCI***”。
另一方面,作为有效应用数据读取高速的闪存设备的技术,经由网络高速地进行数据通信的协议Non Volatile Memory Express overFabric(NVMe-oF)技术正在普及。通过使用该协议,即使是经由网络连接的闪存设备也能够高速地进行数据通信。在这样的背景下,以在网络中将闪存设备集中为目的的Fabric-attached Bunch of Flash(FBOF)这样的驱动器盒型产品也正在出现在市场上。
在SDS/HCI***中,为了防止服务器故障时的数据丢失,多个服务器协作生成冗余数据,在各服务器中搭载的Direct-attached Storage(DAS)中保存冗余数据,由此进行数据保护。作为数据保护方法,不仅使用存储***中长期使用的Redundant Array ofIndependent(orInexpensive)Disks(RAID),也使用Erasure Coding(EC)。专利文献1中公开了在数据写入时减小对其他服务器网络传输的数据量的EC方法。另外,专利文献1中,公开了为了在驱动器故障时效率良好地进行数据恢复的目的,而同时使用在同一服务器内的DAS之间进行的数据保护和在多个服务器的DAS之间进行的数据保护的技术。
SDS/HCI***中,在服务器故障时,将故障服务器的数据恢复至其他服务器而使其能够访问的技术是一般性的。专利文献2中,公开了在服务器故障之外,也以消除服务器的瓶颈等为目的,而将应用和该应用使用的数据通过数据复制移动至其他服务器的技术。
现有技术文献
专利文献
专利文献1:WO2016/052665
专利文献2:WO2018/29820
发明内容
发明要解决的课题
一般的分布式存储***中,存储性能资源(例如Central Processing Unit(CPU))和存储容量资源(例如驱动器)被捆绑在同一个服务器中,所以不能独立地对存储性能和存储容量进行扩展。因此,取决于性能要求和容量要求,不得不过剩地搭载存储性能资源或存储容量资源,过剩地需要资源结果导致***成本增加。另外,以负荷分散等为目的,在服务器之间移动应用的情况下,也需要移动应用使用的数据,网络的负荷升高,服务器之间的应用移动耗费时间。
用于解决课题的技术方案
分布式存储***包括具有多个物理存储设备的1个或多个存储单元和经由通信网络与该1个或多个存储单元连接的多个计算机。多个计算机中的2个以上的计算机各自执行存储控制程序。2个以上的存储控制程序共享多个物理存储设备提供的多个存储区域和关于该多个存储区域的元数据。2个以上的存储控制程序分别执行下述处理:从能够识别该逻辑单元的应用程序接受指定了该存储控制程序提供的逻辑单元中的写目的地区域的写请求,基于元数据对该写请求附带的数据进行冗余化,将由该冗余化后的数据构成的1个以上的冗余化数据集写入作为该写目的地区域的基础的2个以上物理存储设备所提供的1个以上存储区域(例如后述的1个以上的冗余结构区域)。在存储控制程序中发生了故障的情况下,共享元数据的其他存储控制程序访问保存于存储区域的数据。在物理存储设备中发生了故障的情况下,存储控制程序使用存储于没有发生故障的其他物理存储设备的冗余化的数据来将该发生了故障的物理存储设备的数据还原。
发明的效果
根据本发明,在分布式存储***中,无需进行计算机之间的数据传输就能够使数据冗余化,换言之能够网络效率良好地进行数据保护。
附图说明
图1是表示本发明的一个实施方式的分布式存储***的概要的图。
图2是表示一个比较例中的分布式存储***的概要的图。
图3是表示本发明的一个实施方式的驱动器故障修复的概要的图。
图4是表示本发明的一个实施方式的服务器故障修复的概要的图。
图5是表示本发明的一个实施方式的服务器、管理服务器和驱动器盒的硬件结构例的图。
图6是表示本发明的一个实施方式的分布式存储***的区划的一例的图。
图7是表示本发明的一个实施方式的域组管理表的结构例的图。
图8是表示本发明的一个实施方式的驱动器区域管理的一例的图。
图9表示本发明的一个实施方式的块组管理表的结构例。
图10是表示本发明的一个实施方式的页映射表的结构例的图。
图11是表示本发明的一个实施方式的空闲页管理表的结构例的图。
图12是表示本发明的一个实施方式的表配置的一例的图。
图13是表示本发明的一个实施方式的读处理的流程的一例的图。
图14是表示本发明的一个实施方式的写处理的流程的一例的图。
图15是表示本发明的一个实施方式的驱动器增设处理的流程的一例的图。
图16是表示本发明的一个实施方式的驱动器故障修复处理的流程的一例的图。
图17是表示本发明的一个实施方式的服务器故障修复处理的流程的一例的图。
图18是表示本发明的一个实施方式的服务器增设处理的流程的一例的图。
图19是表示本发明的一个实施方式的拥有者服务器移动处理的流程的一例的图。
具体实施方式
以下说明中,“通信接口装置”可以是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)这样的微处理器设备,但也可以是GraphicProcessing Unit(GPU)这样的其他种类的处理器设备。至少1个处理器设备可以是单核的也可以是多核的。至少1个处理器设备也可以是处理器核心。至少1个处理器设备也可以是用进行处理的一部分或全部的硬件描述语言描述的门阵列的集合体的电路(例如Field-Programmable Gate Array(FPGA)、Complex Programmable Logic Device(CPLD)、或者Application Specific Integrated Circuit(ASIC))等广义的处理器设备。
另外,以下说明中,用“xxx表”这样的表达说明对于输入得到输出的信息,但该信息可以是任意结构的数据(例如可以是结构化数据也可以是非结构化数据),也可以是生成与输入对应的输出的以神经网络、遗传算法和随机森林为代表的学习模型。从而,也能够将“xxx表”称为“xxx信息”。另外,以下说明中,各表的结构是一例,一个表可以分割为2个以上表,2个以上表的全部或一部分也可以是1个表。
另外,以下说明中,有时以“程序”为主语说明处理,但程序通过由处理器执行而适当使用存储器和/或通信接口装置等进行规定的处理,所以处理的主语也可以改为处理器(或者具有该处理器的控制器这样的设备)。程序可以从程序源安装至计算机这样的装置中。程序源例如可以是程序发布服务器或计算机可读取的(例如非暂时性的)记录介质。另外,以下说明中,2个以上程序可以实现为1个程序,1个程序也可以实现为2个以上程序。
另外,以下说明中,在不区分相同种类的要素进行说明的情况下,使用参考标记中的共通标记(或参考标记),在区分相同种类的要素的情况下,有时使用参考标记(或者该要素的识别符)。
图1是表示本发明的一个实施方式的分布式存储***的概要的图。
本实施方式中的分布式存储***,是具有在与通用的网络104连接的FBOF等驱动器盒106中集中了SDS或HCI的DAS的“驱动器分离型分布式存储结构”的存储***。通过在驱动器盒106中集中数据,能够使存储性能与存储容量独立地扩展。
在该结构中,各服务器101能够直接访问驱动器盒106中搭载的驱动器,各驱动器在服务器101之间被共享。因此,各服务器101对于自身的负责数据(该服务器101写入的数据),无需与其他服务器101协作,就能够独立地进行数据保护。进而,服务器101之间共享关于每个块组(chunk group)(分别由驱动器盒内驱动器区域的2个以上块(chunk)构成的组(详情后述))的数据保护方法(例如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中写入数据,将该数据的复制经由网络14传输至其他服务器11,其他服务器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从应用102A接受了指定自身提供的LU的写请求的情况下,通过参照元数据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,对应用102B提供恢复得到的LU。存储控制程序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中的至少一者可以多重化(例如双重化)。存储器202保存应用102和存储控制程序103,处理器201执行应用102和存储控制程序103。
管理服务器105也同样具有存储器222、网络I/F223(通信接口装置的一例)和与它们连接的处理器221。存储器222、网络I/F223和处理器221中的至少一者可以多重化(例如二重化)。存储器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是表示驱动器增设处理的流程的一例的图。
首先,代表服务器101A的存储控制程序103A从管理程序51接受驱动器增设的指示(S1100)。代表服务器101A的存储控制程序103A基于增设后的驱动器结构来重构块组,将块组管理表600A更新为表示重构后的多个块组的信息(S1102)。
存储控制程序103A对全部服务器101的存储控制程序103通知块组的结构变更(S1103)。各服务器101的存储控制程序103与通知内容相应地,变更自身的块组结构变更(S1104)。即,通过S1103和S1104,各服务器101的块组管理表600的内容成为与更新后的块组管理表600A相同的内容。
另外,S1102的块组重构例如可以如下所述。即,存储控制程序103A定义增设的全部驱动器204各自的块。将此处定义的各块称为“增设块”。存储控制程序103A使用多个增设块进行块组重构。块组重构也可以包括使构成块组的块的数量均一化(重新组合构成块组的块)的重新平衡处理、和使用增设块生成新块组的处理中的至少一者。
因为随着驱动器增设进行块组重构,所以即使增设驱动器也能够期待将块组的结构维持为最优的结构。
图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)。
这样,无需经由网络104在服务器101之间传输在选择的LU中写入的数据,就能够进行服务器故障修复。另外,在新的拥有者服务器中,可以再次开始选择的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)。
这样,无需经由网络104在服务器101之间传输在选择的LU中写入的数据,就能够进行服务器增设处理。
另外,移动后的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)。
这样,无需经由网络104在服务器101之间传输在移动对象LU(拥有者服务器的变更对象的LU)中写入的数据,就能够进行拥有者服务器移动处理。
另外,拥有者服务器移动处理和服务器增设处理中,管理程序51执行一部分处理,但也可以代替管理程序51地由代表服务器101A的存储控制程序103执行处理。
以上说明了本发明的实施方式,但本发明并不限定于上述实施方式。本行业从业者能够在本发明的范围中容易地变更、追加、变换上述实施方式的各要素。
对于上述各结构、功能、处理部、处理单元等,例如可以通过在集成电路中设计等而用硬件实现其一部分或全部。实现各功能的程序、表、文件等信息,能够保存在非易失性半导体存储器、硬盘驱动器、SSD(Solid State Drive)等存储设备、或者IC卡、SD卡、DVD等计算机可读取的非暂时性数据存储介质中。
附图标记说明
101:服务器
106:驱动器盒。

Claims (11)

1.一种分布式存储***,其特征在于,包括:
具有多个物理存储设备的1个或多个存储单元;和
经由通信网络与所述1个或多个存储单元连接的多个计算机,
所述多个计算机中的2个以上的计算机各自执行存储控制程序,
2个以上的所述计算机各自具有关于所述多个物理存储设备提供的多个存储区域的元数据,2个以上的所述计算机中的2个以上的存储控制程序在存在2个以上的所述计算机中的一个计算机的元数据的更新的情况下,将该更新反映至2个以上的所述计算机中的其他计算机的元数据,
对于各个逻辑单元,作为负责该逻辑单元的I/O的计算机的拥有者服务器具有映射数据,该映射数据是表示构成该逻辑单元的存储区域与基于2个以上的物理存储设备的1个以上的存储区域的对应关系的数据,
所述2个以上的存储控制程序分别执行下述处理:
从能够识别逻辑单元的应用程序接受指定了该存储控制程序提供的该逻辑单元中的写目的地区域的写请求,
基于所述元数据对该写请求附带的数据进行冗余化,
将由该冗余化后的数据构成的1个以上的冗余化数据集写入作为该写目的地区域的基础的2个以上的物理存储设备所提供的1个以上的存储区域,
在所述存储控制程序中发生了故障的情况下,对于具有发生了该故障的存储控制程序的计算机中的各个逻辑单元,
基于各计算机的负荷,从各自具有所述元数据的2个以上的计算机选择作为该逻辑单元的移动目的地的计算机的新的拥有者服务器,
将该逻辑单元的映射数据复制至该选择出的新的拥有者服务器,
基于关于该逻辑单元的映射数据,将该逻辑单元恢复至所述新的拥有者服务器,并提供该恢复了的逻辑单元,
所述新的拥有者服务器中的存储控制程序使用所述复制的映射数据和所述元数据,来访问保存于所述恢复了的逻辑单元的存储区域的数据,
在所述物理存储设备中发生了故障的情况下,所述存储控制程序使用存储于没有发生故障的其他物理存储设备的冗余化的数据来将发生了所述故障的物理存储设备的数据还原。
2.如权利要求1所述的分布式存储***,其特征在于:
所述多个物理存储设备各自提供作为2个以上的存储区域的2个以上的设备区域,
所述多个存储区域是多个冗余结构区域,
所述元数据对所述多个冗余结构区域分别表达出该冗余结构区域的结构和数据保护方法,
所述多个冗余结构区域分别是要写入冗余化数据集的存储区域,且是由所述多个物理存储设备中的2个以上的物理存储设备各自提供的设备区域构成的存储区域。
3.如权利要求2所述的分布式存储***,其特征在于:
检测到1个或2个以上的物理存储设备被追加到1个以上的存储单元或者追加了1个以上的存储单元的存储控制程序,作为重构进行1个以上的冗余结构区域的追加和1个以上的冗余结构区域的结构变更中的至少一者,并将所述元数据更新为表示该重构后的冗余结构区域的结构的数据。
4.如权利要求1所述的分布式存储***,其特征在于:
在任意物理存储设备中发生了故障的情况下,对于保存于该发生了故障的物理存储设备的、1个或多个冗余化数据集各自具有的1个或多个数据要素的每一个,写入了该数据要素的存储控制程序基于所述元数据,从包括该数据要素的冗余化数据集中的该数据要素以外的数据要素还原该数据要素,将该还原得到的数据要素写入保存有该冗余化数据集的物理存储设备以外的任意物理存储设备。
5.如权利要求1所述的分布式存储***,其特征在于:
在增设了计算机的情况下,对于任意现有的计算机中的存储控制程序所提供的至少1个逻辑单元,由该增设的计算机中的存储控制程序从该现有的计算机中的存储控制程序接收该逻辑单元的映射数据,基于该映射数据恢复该逻辑单元并提供恢复后的逻辑单元。
6.如权利要求1所述的分布式存储***,其特征在于:
对于任意计算机中的存储控制程序提供的至少1个逻辑单元,与该计算机不同的、作为具有要被提供该逻辑单元的应用程序的计算机的移动目的地的计算机中的存储控制程序,从该逻辑单元的移动源的计算机中的存储控制程序接收该逻辑单元的映射数据,基于该映射数据构建作为该逻辑单元的移动目的地的逻辑单元,并对该应用程序提供该构建的逻辑单元。
7.如权利要求1所述的分布式存储***,其特征在于:
存在多个域,
所述多个域各自包括1个以上的计算机和1个以上的存储单元,
对于各存储控制程序,该存储控制程序生成的冗余化数据集的写目的地是包括该存储控制程序的域内的2个以上的物理存储设备。
8.如权利要求7所述的分布式存储***,其特征在于:
所述通信网络包括多个子通信网络,
所述多个域各自包括与对应于该域的子通信网络连接的1个以上的计算机和1个以上的存储单元,而不包括经由其他1个以上的子通信网络与对应于该域的子通信网络连接的1个以上的计算机和1个以上的存储单元。
9.如权利要求1所述的分布式存储***,其特征在于:
所述2个以上的存储控制程序中的至少一者,基于所述元数据确定并非任意冗余化结构区域的构成要素的2个以上空闲的设备区域,用指定的2个以上空闲的设备区域构成冗余化结构区域,并将构成的冗余化结构区域的信息追加至所述元数据。
10.如权利要求9所述的分布式存储***,其特征在于:
所述2个以上的存储控制程序中的至少一者在从所述元数据确定了1个以上的已构成的块组的空闲容量不到阈值的情况下,确定所述2个以上的空闲的设备区域。
11.一种存储控制方法,其特征在于:
构成分布式存储***的多个计算机中的2个以上的计算机的各个计算机,具有关于经由通信网络与所述多个计算机连接的1个或多个存储单元中的多个物理存储设备所提供的多个存储区域的元数据,
对于各个逻辑单元,作为负责该逻辑单元的I/O的计算机的拥有者服务器具有映射数据,该映射数据是表示构成该逻辑单元的存储区域与基于2个以上的物理存储设备的1个以上的存储区域的对应关系的数据,
2个以上的所述计算机中的2个以上的存储控制程序在存在2个以上的所述计算机中的一个计算机的元数据的更新的情况下,将该更新反映至2个以上的所述计算机中的其他计算机的元数据,
提供逻辑单元的存储控制程序从存在于任意计算机的、能够识别该逻辑单元的应用程序接受了指定了该逻辑单元中的写目的地区域的写请求的情况下,该存储控制程序进行下述处理:
基于所述元数据对该写请求附带的数据进行冗余化,
将由该冗余化后的数据构成的1个以上的冗余化数据集写入作为该写目的地区域的基础的2个以上的物理存储设备所提供的1个以上的存储区域,
在所述存储控制程序中发生了故障的情况下,对于具有发生了该故障的存储控制程序的计算机中的各个逻辑单元,
基于各计算机的负荷,从各自具有所述元数据的2个以上的计算机选择作为该逻辑单元的移动目的地的计算机的新的拥有者服务器,
将该逻辑单元的映射数据复制至该选择出的新的拥有者服务器,
基于关于该逻辑单元的映射数据,将该逻辑单元恢复至所述新的拥有者服务器,并提供该恢复了的逻辑单元,
所述新的拥有者服务器中的存储控制程序使用所述复制的映射数据和所述元数据,来访问保存于所述恢复了的逻辑单元的存储区域的数据,
在所述物理存储设备中发生了故障的情况下,所述存储控制程序使用存储于没有发生故障的其他物理存储设备的冗余化的数据来将发生了所述故障的物理存储设备的数据还原。
CN202010883083.9A 2020-03-27 2020-08-28 分布式存储***和存储控制方法 Active CN113448502B (zh)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
CN113448502A CN113448502A (zh) 2021-09-28
CN113448502B true CN113448502B (zh) 2024-04-12

Family

ID=77808512

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010883083.9A Active CN113448502B (zh) 2020-03-27 2020-08-28 分布式存储***和存储控制方法

Country Status (3)

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

Families Citing this family (3)

* 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

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014106811A (ja) * 2012-11-28 2014-06-09 Nec System Technologies Ltd 記憶装置、冗長性回復方法、およびプログラム
US8924656B1 (en) * 2012-04-26 2014-12-30 Netapp, Inc. Storage environment with symmetric frontend and asymmetric backend
US9077580B1 (en) * 2012-04-09 2015-07-07 Symantec Corporation Selecting preferred nodes for specific functional roles in a cluster
JP2016510440A (ja) * 2013-03-18 2016-04-07 株式会社日立製作所 複合型ストレージシステム及び記憶制御方法
CN106030552A (zh) * 2014-04-21 2016-10-12 株式会社日立制作所 计算机***
CN107250975A (zh) * 2014-12-09 2017-10-13 清华大学 数据存储***和数据存储方法
CN110187999A (zh) * 2019-05-09 2019-08-30 新华三技术有限公司 地址映射数据备份方法及装置

Family Cites Families (8)

* 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
JP6515458B2 (ja) * 2014-08-08 2019-05-22 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法
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
CN112214166B (zh) * 2017-09-05 2022-05-24 华为技术有限公司 用于传输数据处理请求的方法和装置
US11169723B2 (en) * 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP2014106811A (ja) * 2012-11-28 2014-06-09 Nec System Technologies Ltd 記憶装置、冗長性回復方法、およびプログラム
JP2016510440A (ja) * 2013-03-18 2016-04-07 株式会社日立製作所 複合型ストレージシステム及び記憶制御方法
CN106030552A (zh) * 2014-04-21 2016-10-12 株式会社日立制作所 计算机***
CN107250975A (zh) * 2014-12-09 2017-10-13 清华大学 数据存储***和数据存储方法
CN110187999A (zh) * 2019-05-09 2019-08-30 新华三技术有限公司 地址映射数据备份方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BW-netRAID:一种后端集中冗余管理的网络RAID***;那文武等;计算机学报;第34卷(第05期);第913-922页 *

Also Published As

Publication number Publication date
US20210303178A1 (en) 2021-09-30
JP2021157588A (ja) 2021-10-07
JP7167078B2 (ja) 2022-11-08
CN113448502A (zh) 2021-09-28

Similar Documents

Publication Publication Date Title
US10642526B2 (en) Seamless fault tolerance via block remapping and efficient reconciliation
JP7312251B2 (ja) 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること
US8495293B2 (en) Storage system comprising function for changing data storage mode using logical volume pair
CN113448502B (zh) 分布式存储***和存储控制方法
JP4771615B2 (ja) 仮想記憶システム
CN109857334B (zh) 存储***及其控制方法
US10454810B1 (en) Managing host definitions across a plurality of storage systems
CN110383251B (zh) 存储***、计算机可读记录介质、***的控制方法
US11204709B2 (en) Storage system and storage control method
CN113821298A (zh) 使用底层卷标识符将存储操作请求中继到存储***
JP6974281B2 (ja) ストレージシステム及びストレージ制御方法
US20230004464A1 (en) Snapshot commitment in a distributed system
US11740823B2 (en) Storage system and storage control method
WO2012035576A1 (en) Storage system storing electronic modules applied to electronic objects common to several computers, and storage control method for the same
US10698627B2 (en) Storage system and storage control method
US20210103400A1 (en) Storage system and data migration method
US11861205B2 (en) Distributed storage system and volume migration method
JP7179947B2 (ja) ストレージシステム及びストレージ制御方法
JP7212093B2 (ja) ストレージシステム、ストレージシステムの移行方法
WO2018055686A1 (ja) 情報処理システム
JP7113698B2 (ja) 情報システム
US11544005B2 (en) Storage system and processing method
US11836391B2 (en) Distributed storage system and storage control method
CN112306390B (zh) 存储控制***以及方法
US20230350753A1 (en) Storage system and failure handling method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant