CN108874305B - 用于存储区域网络(san)设备的对象覆盖 - Google Patents
用于存储区域网络(san)设备的对象覆盖 Download PDFInfo
- Publication number
- CN108874305B CN108874305B CN201810295277.XA CN201810295277A CN108874305B CN 108874305 B CN108874305 B CN 108874305B CN 201810295277 A CN201810295277 A CN 201810295277A CN 108874305 B CN108874305 B CN 108874305B
- Authority
- CN
- China
- Prior art keywords
- storage
- logical volume
- server
- servers
- given
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1087—Peer-to-peer [P2P] networks using cross-functional networking aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及用于存储区域网络(SAN)设备的对象覆盖。用于数据存储的系统包括多个服务器。每个服务器包括用于与一个或更多个客户端进行通信的相应的客户端接口以及用于与SAN设备进行通信的相应的存储区域网络(SAN)接口。该服务器被配置为:(i)在SAN设备上创建多个逻辑卷,每个逻辑卷由服务器中相应的一个唯一地拥有,(ii)根据对象存储应用编程接口(API)从客户端接收与一个或更多个对象相关的存储命令,以及(iii)响应于存储命令,使用SAN协议将对象保持在SAN设备上的逻辑卷中。
Description
发明领域
本发明总体上涉及数据存储,并且具体涉及用于对象存储的方法和系统。
发明背景
数据存储系统使用各种通信协议和应用程序编程接口(API)。一些协议依据对象存储数据。对象存储协议的示例包括亚马逊简易存储服务(Amazon Simple StorageService)(S3)、OpenStack Swift、Microsoft Azure Block Blobs和谷歌云存储(GoogleCloud Storage)。其他协议例如使用管理逻辑卷的文件系统依据块存储数据。块存储协议的示例包括因特网小型计算机系统接口(iSCSI)和光纤信道(FC)协议。该iSCSI协议是由互联网工程任务组(IETF)在2004年4月在RFC 3720的“互联网小型计算机系统接口(iSCSI)”中规定的,该iSCSI协议以引用方式并入本文。该FC协议是由IETF在2003年12月在RFC 3643的“光纤信道(FC)帧封装”中规定的,该FC协议以引用方式并入本文。
发明概述
本文所描述的本发明的实施例提供了一种包括多个服务器的数据存储系统。每个服务器包括用于与一个或更多个客户端进行通信的相应的客户端接口,以及用于与SAN设备进行通信的相应的存储区域网络(SAN)接口。该服务器被配置为:(i)在SAN设备上创建多个逻辑卷,每个逻辑卷由服务器中相应的一个唯一地拥有,(ii)根据对象存储应用程序编程接口(API)从客户端接收与一个或更多个对象相关的存储命令,以及(iii)响应于存储命令,使用SAN协议将对象保持在SAN设备上的逻辑卷中。
在一些实施例中,每个服务器被配置为执行任何存储命令,而不管保存由存储命令所访问的对象的逻辑卷是否由该服务器所拥有。在一些实施例中,服务器被配置为通过保持数据结构来保持对象,该数据结构是多个服务器可访问的并且该数据结构保存对象在SAN设备上的逻辑卷中的存储位置。
在实施例中,当存储命令包括用于写入对象的至少一部分的写入命令时,被分配为执行存储命令的服务器被配置为:(i)将对象的至少一部分存储在由服务器所拥有的逻辑卷中的存储位置中,以及(ii)将存储位置记录在多个服务器可访问的数据结构中。另外地或可替代地,当存储命令包括用于读取对象的至少一部分的读取命令时,被分配为执行存储命令的服务器被配置为:(i)从多个服务器可访问的数据结构中获得对象的至少一部分的存储位置,以及(ii)从存储位置读取对象的至少一部分。此外,另外地或可替代地,当存储命令包括用于删除对象的至少一部分的删除命令时,被分配为执行存储命令的服务器被配置为在多个服务器可访问的数据结构中将对象的至少一部分的元数据标记为被删除。
在一些实施例中,对于每个逻辑卷,拥有逻辑卷的服务器被配置为以读取和写入许可附连到逻辑卷,并且其中,不拥有该逻辑卷的服务器被配置为以只读许可附连到逻辑卷。在一些实施例中,该系统还包括负载平衡处理器,该负载平衡处理器被配置为将存储命令分配给服务器。
根据本发明的实施例,额外提供了一种用于数据存储的方法,该方法包括:在包括多个服务器的系统中,在存储区域网络(SAN)设备上创建多个逻辑卷,每个逻辑卷由服务器中相应的一个唯一地拥有。根据对象存储应用程序编程接口(API)从一个或更多个客户端接收与一个或更多个对象相关的存储命令。响应于存储命令,使用SAN协议将对象保持在SAN设备上的逻辑卷中。
根据本发明的实施例,还提供了一种计算机软件产品,该产品包括有形非暂时性计算机可读介质,在该有形非暂时性计算机可读介质中存储有程序指令,该指令在由多个相应服务器的多个处理器读取时使该处理器:(i)在SAN设备上创建多个逻辑卷,每个逻辑卷由服务器中相应的一个唯一地拥有,(ii)根据对象存储应用程序编程接口(API)从一个或更多个客户端接收与一个或更多个对象相关的存储命令,以及(iii)响应于存储命令,使用SAN协议将对象保持在SAN设备上的逻辑卷中。
根据结合附图进行的本发明的实施例的以下详细描述,本发明将得到更完全地理解,其中:
附图说明
图1是示意性示出根据本发明的实施例的用于存储区域网络(SAN)设备中的对象存储的系统的框图;
图2是示意性示出根据本发明的实施例的用于上传对象的方法的流程图;以及
图3是示意性示出根据本发明的实施例的用于下载对象的方法的流程图。
实施例的详细描述
综述
在本文中所描述的本发明的实施例提供了用于数据存储的改进的方法和系统。在一些实施例中,存储系统根据诸如S3的对象存储API从客户端接收存储命令,但是使用诸如iSCSI或FC的SAN块存储协议在存储区域网络(SAN)设备上执行实际存储。
在实施例中,该系统包括多个服务器,该多个服务器均被配置为与客户端和SAN设备进行通信。服务器在SAN设备上创建多个逻辑卷,每个逻辑卷由服务器中的一个唯一地拥有。对于给定的逻辑卷,拥有服务器以读取和写入权限附连到该卷,而其他服务器以只读权限附连到该卷。
在这个实施例中,用于写入、读取和删除对象的过程被定义成使得任何服务器能够处理来自任何客户端的任何存储命令。例如,任何服务器能够读取和删除对象,而不管该对象是否最初由同一服务器写入(即,不管对象是否驻留在由同一服务器所拥有的逻辑卷中)。为此,服务器通常保持共享数据结构(例如,分布式键-值存储),其中除了其他元数据以外,服务器记录各个对象在SAN设备上的逻辑卷中的存储位置。
在本文中所描述的方法和系统使得能够在传统的SAN环境中,例如在商用SAN设备上部署对象存储服务。通过使用均能够访问所有数据和元数据并且能够处理任何存储命令的多个服务器,所公开的技术是高度可靠和可扩展的。
系统描述
图1是示意性示出了根据本发明的实施例的存储系统20的框图。系统20使用对象存储API与一个或更多个客户端24进行通信,并且使用SAN API代表客户端将对象存储在SAN设备28上。
例如,SAN设备28可以包括例如通过诸如Dell EMC(Hopkinton,Massachusetts)和NetApp(Sunnyvale,California)的供应商所提供的例如硬件/软件设备。可替代地,任何其他块存储系统或设备都可以用于此目的。客户端24可以包括任何合适的计算平台。在典型的实施例中,客户端24是系统20外部的第三方客户端。
在一些实施例中,系统20包括多个服务器。为了简单起见,图1示出了表示为32A和32B的两个服务器。然而,通常,系统20可以包括任何合适数量的服务器。系统20还包括介于客户端24与服务器之间的负载平衡器36(也被称为负载平衡处理器)。服务器和负载平衡器36可以包括任何合适类型的计算机。
为了清楚起见,以下的描述涉及S3对象存储API。在可替代的实施例中,服务器和负载平衡器36可以使用任何其它合适的对象存储API,例如,诸如OpenStack Swift、Microsoft Azure Block Blobs或谷歌云存储与客户端24通信。在本上下文中,术语“对象存储API”是指将数据作为对象来管理的API(与将数据作为文件层次结构来管理的文件存储以及将数据作为块来管理的块存储相对)。每个对象通常包含数据本身、某些元数据以及全局唯一对象名称)。术语“API”和“协议”在本文中可互换使用。
为了清楚起见,下面的描述也涉及iSCSI协议。在可替代的实施例中,服务器可以使用任何其他合适的块存储协议或SAN协议,例如,诸如光纤信道(FC)与SAN设备28进行通信。在本内容中,术语“块存储协议”和“SAN协议”指的是数据访问协议,在该数据访问协议中,在虚拟盘中的特定块索引上执行操作,而不具有诸如文件、目录或对象的更高级别的构造。在本上下文中,术语“块存储”指的是具有诸如创建、删除和列出虚拟盘的操作的以及支持诸如iSCSI或FC的至少一个块存储协议的API。术语“API”和“协议”在本文中有时可互换使用。
在图1的实施例中,每个服务器包括用于使用对象存储API(可能经由负载平衡器36)与客户端24进行通信的客户端接口40,用于使用SAN协议与SAN设备28进行通信的SAN接口44,以及被配置为执行本文中所描述的方法的处理器48。每个处理器48运行若干软件模块,即对象存储代理52、键-值(KV)存储客户端56和SAN客户端60。下面详细说明这些软件模块的功能。
通常,服务器使用单独的物理机器来实现,处理器48包括物理硬件实现处理器,并且接口40和44包括诸如物理网络接口控制器(NIC)的网络接口。服务器通常包括一个或更多个物理处理器。
在图1中所示出的每个服务器的配置和作为整体的系统20的配置是单纯为了概念清楚起见而选择的示例配置。在可替代的实施例中,能够使用任何其它合适的配置。例如,可以在不使用负载平衡器36的情况下实现该系统。在一些实施例中,服务器使用所公开的技术而专用于存储任务。在其他实施例中,服务器可以执行可能与存储无关的额外的功能。作为KV存储的可替代方案,可以使用任何其它合适的数据结构或技术将共享元数据存储在例如数据库中或SAN设备28上。
包括服务器及其部件、SAN设备28和负载平衡器36的系统20的各个元件可以使用硬件/固件被实现在诸如一个或更多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)中。可替代地,一些系统元件可以在软件中实现或者使用硬件/固件和软件元件的组合来实现。在一些实施例中,处理器48可以包括通用处理器,该通用处理器以软件方式被编程以执行本文中所描述的功能。可经由网络以电子形式将软件下载到计算机,例如,或者软件可以可选地或附加地被提供和/或存储在非暂时性有形媒介上,诸如磁存储器、光学存储器或电子存储器。
在SAN设备上实现对象存储
在一些实施例中,系统20根据对象存储API,例如S3从客户端24接收存储命令。存储命令可以请求例如写入、读取或擦除对象或对象的一部分。尽管客户端24发出对象存储命令,但系统20使用块存储协议(例如,iSCSI或FC)在SAN设备28上执行实际存储。客户端24通常不知道下面的块存储方案,并且仅暴露给覆盖对象存储API。
在一些实施例中,系统20在SAN设备28上创建多个逻辑卷。逻辑卷也被称为用户卷,或为了简化而被简称为卷。逻辑卷的创建和管理可以由服务器本身或通过一些集中管理服务来执行。每个逻辑卷由服务器中的一个唯一地拥有。在本示例中,逻辑卷64A由服务器32A所拥有,并且逻辑卷64B由服务器32B所拥有。
通常,服务器以读取和写入权限附连到其拥有的逻辑卷并且以只读权限附连到其不拥有的逻辑卷。换句话说,每个服务器被允许从任何逻辑卷读取,但仅允许对其拥有的逻辑卷进行写入。在图1中,读取/写入附连用实线标记,而只读附连用虚线标记。附连可以先验地或按需地建立。
(在可替代的实施例中,单个逻辑卷可以由多个服务器共享,或者甚至由所有的服务器共享。然而,这个实施方式要求SAN设备28支持多个服务器对同一卷的读取/写入附连。)
在一些实施例中,例如,当SAN设备28支持精简自动配置(thin provisioning)时,每个逻辑卷被分配由SAN设备所支持的最大尺寸。在其他实施例中,每个逻辑卷的分配尺寸被设定为在SAN设备上可用于对象存储的总存储空间除以服务器的数量。此外,可替代地,可以使用任何其他合适的尺寸分配。
服务器将从客户端24接收的对象存储在逻辑卷中。通常,对于每个对象,系统20保持三种类型的信息:
■对象数据:由客户端24提供的用于存储在对象中的数据。
■用户定义的元数据:由客户端24提供的与对象一起存储并且客户端可访问的元数据。用户定义的元数据可以包括例如对象名称。
■系统内部的元数据:属于该对象但是由系统20在内部定义并且不暴露给客户端24的元数据。系统内部的元数据可以包括例如在SAN设备28上的对象的存储位置(“映射”)。存储位置可以被指定为例如其中存储有对象的逻辑卷的名称以及逻辑卷内的地址。
在一些实施例中,(用户定义的和系统内部的)元数据可以存储在服务器上,例如,存储在内存中、本地盘上或在一些远程存储器上。在其他实施例中,(用户定义的和系统内部的)元数据可以存储在SAN设备28上。在又一其他实施例中,(用户定义的和系统内部的)元数据可以存储在SAN设备28上并且缓存在服务器上。将元数据存储在SAN设备28上使得SAN设备能够将数据和元数据两者保存在一起,并且在服务器出故障的情况下允许对象的完全恢复。另一方面,将元数据存储在服务器上使得能够更快地访问。
通常,系统20被设计使得任何服务器能够处理来自任何客户端24的任何存储命令(例如,对象写入、对象读取、对象删除)而无需将存储命令转发给其他服务器。为此,在一些实施例中,服务器保持所有服务器可访问的并且存储系统内部的元数据(例如,各个对象在逻辑卷中的存储位置)的共享数据结构。可以使用任何合适类型的数据结构。
在本示例中,共享数据结构包括键-值(KV)存储。在实施例中,KV存储被分布在服务器中并且被存储在内存中(即,存储在服务器的易失性存储器,例如RAM中,用于快速访问)。KV存储被定期备份到SAN设备28。
在每个服务器中,处理器48被配置为:(i)使用相应的KV存储客户端56访问分布式KV存储,(ii)使用相应的对象存储代理52根据对象存储API与客户端24进行通信,以及(iii)使用相应的SAN客户端60根据SAN块存储协议与SAN客户端28进行通信。
图2是示意性示出根据本发明的实施例的用于上传(写入)对象的方法的流程图。该方法开始于负载平衡器36在对象输入步骤80中从客户端24中的一个接收请求上传某个对象的存储命令。
在服务器选择步骤84中,负载平衡器36选择服务器中的一个用于执行存储命令。如上所述,系统架构允许任何服务器执行任何命令。负载平衡器36可以基于服务器的当前或预期负载水平使用任何合适的标准,例如使用循环调度、使用一些优先化方案,或以任何其他合适的方式来选择服务器。
在写入步骤88中,所选择的服务器将对象存储在对应的逻辑卷中(在由所选择的服务器所拥有的逻辑卷中)。在映射更新步骤92中,所选择的服务器利用对象的存储位置来更新分布式KV存储。在此更新之后,任何服务器将能够读取或删除此对象。通常,每个服务器保持其拥有的逻辑卷的映射和空闲扩展区。
在本示例中,所选择的服务器将用户定义的元数据连同系统内部的元数据一起存储在分布式KV存储中。然而,可替代地,服务器可以将用户定义的元数据连同对象数据一起存储在SAN设备28上。
图3是示意性示出根据本发明的实施例的用于下载(读取)对象的方法的流程图。该方法开始于负载平衡器36在对象请求步骤100中从客户端24中的一个接收请求下载某个对象的存储命令。
在服务器选择步骤104中,负载平衡器36选择服务器中的一个用于执行存储命令。负载平衡器36可以使用任何合适的标准来选择服务器。
在元数据读出步骤108中,所选择的服务器访问分布式KV存储并且检索所请求的对象的元数据。所选择的服务器从元数据中识别其中存储有所请求的对象的存储位置。如上所述,其中存储有对象的逻辑卷可以或可以不被所选择的服务器所拥有。
在对象读出步骤112中,所选择的服务器从由在步骤108中所检索出的元数据指示的存储位置读取对象数据。如果正在读取的逻辑卷由所选择的服务器拥有,则服务器将使用其到该卷的读取-写入附连来读取对象数据。如果逻辑卷不被所选择的服务器拥有,则服务器将使用它的至卷的只读附连来读取对象数据。
在对象重建步骤116中,所选择的服务器重建对象,包括对象数据和用户定义的元数据这两者。在对象服务步骤120中,所选择的服务器将该对象提供给请求客户端24。
上述的方法流程是示例流程,其纯粹为了概念清楚起见而被描绘。在可替代的实施例中,服务器可以以任何其它合适的方式执行任何其它合适的存储命令。例如,客户端可以发出请求删除对象的存储命令。在实施例中,通过将KV存储中的对象的映射标记为被删除,任何服务器(例如,由负载平衡器36所选择的服务器)可以删除该对象。在这个实施例中,每个服务器执行后台“垃圾收集”处理,该处理释放经删除的对象与其拥有的逻辑卷的映射。
根据对象存储API在系统定义的元数据上的额外的操作,例如创建存储桶,也可以使用分布式KV存储由服务器中的任何一个来执行。
在各种实施例中,服务器可以以各种方式,诸如经由KV存储锁来管理卷所有权记录。在这样的实施例中,如果一个服务器发生故障,则其锁被释放,并且另一个服务器可以取得由故障服务器所拥有的卷的所有权。使用这种技术,所有的逻辑卷都被持续拥有,并且存储容量不会丢失。在实施例中,如果逻辑卷达到或接近其最大容量,则将为服务器分配额外的卷。
上述实施例将整个对象称为可以存储在SAN设备28上的最小数据单元。在可替代的实施例中,服务器可以按更精细的粒度来存储对象,其中对象被分成多个部分并且每个部分被分配了系统定义的元数据中的相应映射。每个部分可以独立于其他部分被访问。在这些实施例中,同一对象的不同部分可以存储在由不同服务器所拥有的不同逻辑卷中。在这种情况下,这个对象的系统定义的元数据指向多个不同逻辑卷中的多个不同的扩展区。只要分布式KV存储记录了对象的各个部分的存储位置,则任何服务器仍然能够读取或删除任何对象的任何部分。
本申请还涉及以下方面:
1).一种用于数据存储的系统,包括多个服务器,每个服务器包括用于与一个或更多个客户端进行通信的相应的客户端接口以及用于与SAN设备进行通信的相应的存储区域网络(SAN)接口,其中,所述服务器被配置为:
在所述SAN设备上创建多个逻辑卷,每个逻辑卷由所述服务器中的相应的一个唯一地拥有;
根据对象存储应用程序编程接口(API)从所述客户端接收与一个或更多个对象相关的存储命令;以及
响应于所述存储命令,使用SAN协议将所述对象保持在所述SAN设备上的所述逻辑卷中。
2).根据1)所述的系统,其中,每个服务器被配置为执行任何所述存储命令,而不管保存通过所述存储命令访问的所述对象的所述逻辑卷是否由该服务器拥有。
3).根据1)所述的系统,其中,所述服务器被配置为通过保持数据结构来保持所述对象,所述数据结构是所述多个服务器能够访问的并且所述数据结构保存所述对象在所述SAN设备上的所述逻辑卷中的存储位置。
4).根据1)所述的系统,其中,当存储命令包括用于写入对象的至少一部分的写入命令时,被分配为执行所述存储命令的服务器被配置为:(i)将所述对象的所述至少一部分存储在由所述服务器所拥有的逻辑卷中的存储位置中,以及(ii)将所述存储位置记录在所述多个服务器能够访问的数据结构中。
5).根据1)所述的系统,其中,当存储命令包括用于读取对象的至少一部分的读取命令时,被分配为执行所述存储命令的服务器被配置为:(i)从所述多个服务器能够访问的数据结构中获得所述对象的所述至少一部分的存储位置,以及(ii)从所述存储位置读取所述对象的所述至少一部分。
6).根据1)所述的系统,其中,当存储命令包括用于删除对象的至少一部分的删除命令时,被分配为执行所述存储命令的服务器被配置为在所述多个服务器能够访问的数据结构中将所述对象的所述至少一部分的元数据标记为被删除。
7).根据1)所述的系统,其中,对于每个逻辑卷,拥有所述逻辑卷的所述服务器被配置为以读取和写入许可附连到所述逻辑卷,并且其中,不拥有所述逻辑卷的所述服务器被配置为以只读许可附连到所述逻辑卷。
8).根据1)所述的系统,还包括负载平衡处理器,所述负载平衡处理器被配置为将所述存储命令分配给所述服务器。
9).一种用于数据存储的方法,包括:
在包括多个服务器的系统中,在存储区域网络(SAN)设备上创建多个逻辑卷,每个逻辑卷由所述服务器中相应的一个唯一地拥有;
根据对象存储应用程序编程接口(API)从一个或更多个客户端接收与一个或更多个对象相关的存储命令;以及
响应于所述存储命令,使用SAN协议将所述对象保持在所述SAN设备上的所述逻辑卷中。
10).根据9)所述的方法,其中,保持所述对象包括由任何服务器执行任何所述存储命令,而不管保存由所述存储命令访问的所述对象的所述逻辑卷是否由该服务器拥有。
11).根据9)所述的方法,其中,保持所述对象包括保持数据结构,所述数据结构是所述多个服务器能够访问的并且所述数据结构保存所述对象在所述SAN设备上的所述逻辑卷中的存储位置。
12).根据9)所述的方法,其中,当存储命令包括用于写入对象的至少一部分的写入命令时,保持所述对象包括由经分配的服务器通过:(i)将所述对象的所述至少一部分存储在由所述服务器所拥有的逻辑卷中的存储位置中,以及(ii)将所述存储位置记录在所述多个服务器能够访问的数据结构中,来执行所述存储命令。
13).根据9)所述的方法,其中,当存储命令包括用于读取对象的至少一部分的读取命令时,保持所述对象包括由经分配的服务器通过:(i)从所述多个服务器能够访问的数据结构中获得所述对象的所述至少一部分的存储位置,以及(ii)从所述存储位置读取所述对象的所述至少一部分,来执行所述存储命令。
14).根据9)所述的方法,其中,当存储命令包括用于删除对象的至少一部分的删除命令时,保持所述对象包括在所述多个服务器能够访问的数据结构中将所述对象的所述至少一部分的元数据标记为被删除。
15).根据9)所述的方法,其中,将所述对象保持在所述逻辑卷中包括:对于每个逻辑卷,将拥有所述逻辑卷的所述服务器以读取和写入许可附连到所述逻辑卷,并且将不拥有所述逻辑卷的所述服务器以只读许可附连到所述逻辑卷。
16).一种计算机软件产品,所述产品包括有形非暂时性计算机可读介质,在所述有形非暂时性计算机可读介质中存储有程序指令,所述指令在由多个相应服务器的多个处理器读取时使所述处理器:
在SAN设备上创建多个逻辑卷,每个逻辑卷由所述服务器中相应的一个唯一地拥有;
根据对象存储应用程序编程接口(API)从一个或更多个客户端接收与一个或更多个对象相关的存储命令;以及
响应于所述存储命令,使用SAN协议将所述对象保持在所述SAN设备上的所述逻辑卷中。
将认识到,以上描述的实施例是通过示例的方式引用的,并且本发明不限于上文中已经特别示出和描述的那些。相反,本发明的范围包括上文所描述的各种特征的组合及子组合以及本发明的变型和修改,所述变型和修改将在本领域的技术人员阅读上述描述之后想到且在现有技术中未被公开。通过引用并入本专利申请中的文件被视为本申请的组成部分,除了任何术语在这些并入的文件中在某种程度上以与本说明书中明确地或隐含地作出的定义冲突的方式被定义之外,应该仅考虑本说明书中的定义。
Claims (14)
1.一种用于数据存储的系统,包括多个服务器,每个服务器包括用于与一个或更多个客户端进行通信的相应的客户端接口以及用于与SAN设备进行通信的相应的存储区域网络(SAN)接口,其中,所述服务器被配置为:
在所述SAN设备上创建多个逻辑卷,每个逻辑卷由所述服务器中的相应的一个唯一地拥有;
根据对象存储应用程序编程接口(API)从所述客户端接收与一个或更多个对象相关的存储命令;以及
响应于所述存储命令,使用SAN协议将所述对象保持在所述SAN设备上的所述逻辑卷中,
其中,针对被存储在给定逻辑卷中的给定对象:
不拥有所述给定逻辑卷的第一服务器被配置为通过在所述多个服务器能够访问的数据结构中将所述给定对象标记为被删除来请求删除所述给定对象,以及
拥有所述给定逻辑卷的第二服务器被配置为响应于识别到在所述数据结构中所述给定对象已经被标记为被删除而从所述给定逻辑卷删除所述给定对象。
2.根据权利要求1所述的系统,其中,每个服务器被配置为执行任何所述存储命令,而不管保存通过所述存储命令访问的所述对象的所述逻辑卷是否由该服务器拥有。
3.根据权利要求1所述的系统,其中,所述多个服务器能够访问的所述数据结构保存所述对象在所述SAN设备上的所述逻辑卷中的存储位置。
4.根据权利要求1所述的系统,其中,当存储命令包括用于写入对象的至少一部分的写入命令时,被分配为执行所述存储命令的服务器被配置为:(i)将所述对象的所述至少一部分存储在由所述服务器所拥有的逻辑卷中的存储位置中,以及(ii)将所述存储位置记录在所述多个服务器能够访问的数据结构中。
5.根据权利要求1所述的系统,其中,当存储命令包括用于读取对象的至少一部分的读取命令时,被分配为执行所述存储命令的服务器被配置为:(i)从所述多个服务器能够访问的数据结构中获得所述对象的所述至少一部分的存储位置,以及(ii)从所述存储位置读取所述对象的所述至少一部分。
6.根据权利要求1所述的系统,其中,对于每个逻辑卷,拥有所述逻辑卷的所述服务器被配置为以读取和写入许可附连到所述逻辑卷,并且其中,不拥有所述逻辑卷的所述服务器被配置为以只读许可附连到所述逻辑卷。
7.根据权利要求1所述的系统,还包括负载平衡处理器,所述负载平衡处理器被配置为将所述存储命令分配给所述服务器。
8.一种用于数据存储的方法,包括:
在包括多个服务器的系统中,在存储区域网络SAN设备上创建多个逻辑卷,每个逻辑卷由所述服务器中相应的一个唯一地拥有;
根据对象存储应用程序编程接口(API)从一个或更多个客户端接收与一个或更多个对象相关的存储命令;以及
响应于所述存储命令,使用SAN协议将所述对象保持在所述SAN设备上的所述逻辑卷中,包括通过以下项删除被存储在给定逻辑卷中的给定对象:
使用不拥有所述给定逻辑卷的第一服务器在所述多个服务器能够访问的数据结构中将所述给定对象标记为被删除,以及
使用拥有所述给定逻辑卷的第二服务器响应于识别到在所述数据结构中所述给定对象已经被标记为被删除而从所述给定逻辑卷删除所述给定对象。
9.根据权利要求8所述的方法,其中,保持所述对象包括由任何服务器执行任何所述存储命令,而不管保存由所述存储命令访问的所述对象的所述逻辑卷是否由该服务器拥有。
10.根据权利要求8所述的方法,其中,所述多个服务器能够访问的所述数据结构保存所述对象在所述SAN设备上的所述逻辑卷中的存储位置。
11.根据权利要求8所述的方法,其中,当存储命令包括用于写入对象的至少一部分的写入命令时,保持所述对象包括由经分配的服务器通过:(i)将所述对象的所述至少一部分存储在由所述服务器所拥有的逻辑卷中的存储位置中,以及(ii)将所述存储位置记录在所述多个服务器能够访问的数据结构中,来执行所述存储命令。
12.根据权利要求8所述的方法,其中,当存储命令包括用于读取对象的至少一部分的读取命令时,保持所述对象包括由经分配的服务器通过:(i)从所述多个服务器能够访问的数据结构中获得所述对象的所述至少一部分的存储位置,以及(ii)从所述存储位置读取所述对象的所述至少一部分,来执行所述存储命令。
13.根据权利要求8所述的方法,其中,将所述对象保持在所述逻辑卷中包括:对于每个逻辑卷,将拥有所述逻辑卷的所述服务器以读取和写入许可附连到所述逻辑卷,并且将不拥有所述逻辑卷的所述服务器以只读许可附连到所述逻辑卷。
14.一种有形非暂时性计算机可读介质,在所述有形非暂时性计算机可读介质中存储有程序指令,所述指令在由多个服务器的多个处理器读取时使所述处理器:
在SAN设备上创建多个逻辑卷,每个逻辑卷由所述多个服务器中相应的一个唯一地拥有;
根据对象存储应用程序编程接口(API)从一个或更多个客户端接收与一个或更多个对象相关的存储命令;以及
响应于所述存储命令,使用SAN协议将所述对象保持在所述SAN设
备上的所述逻辑卷中,
其中,针对被存储在给定逻辑卷中的给定对象:
所述指令使不拥有所述给定逻辑卷的第一服务器的所述处理器通过在所述多个服务器能够访问的数据结构中将所述给定对象标记为被删除来请求删除所述给定对象,以及
所述指令使拥有所述给定逻辑卷的第二服务器的所述处理器响应于识别到在所述数据结构中所述给定对象已经被标记为被删除而从所述给定逻辑卷删除所述给定对象。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/591,169 | 2017-05-10 | ||
US15/591,169 US20180329634A1 (en) | 2017-05-10 | 2017-05-10 | Object overlay for storage-area network (san) appliances |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874305A CN108874305A (zh) | 2018-11-23 |
CN108874305B true CN108874305B (zh) | 2023-10-20 |
Family
ID=61274060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810295277.XA Active CN108874305B (zh) | 2017-05-10 | 2018-03-30 | 用于存储区域网络(san)设备的对象覆盖 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20180329634A1 (zh) |
EP (1) | EP3401775A1 (zh) |
CN (1) | CN108874305B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10963385B2 (en) | 2019-01-18 | 2021-03-30 | Silicon Motion Technology (Hong Kong) Limited | Method and apparatus for performing pipeline-based accessing management in a storage server with aid of caching metadata with cache module which is hardware pipeline module during processing object write command |
CN111818147B (zh) * | 2020-06-30 | 2022-09-02 | 北京思特奇信息技术股份有限公司 | 一种实现openstack swift服务自动负载均衡的系统及方法 |
CN113568569A (zh) * | 2021-06-21 | 2021-10-29 | 长沙证通云计算有限公司 | 一种基于云平台的san存储对接方法及系统 |
CN114489508B (zh) * | 2022-01-26 | 2023-09-01 | 重庆紫光华山智安科技有限公司 | 数据管理方法、装置、设备及介质 |
CN115604244B (zh) * | 2022-07-01 | 2024-09-24 | 山东爱特云翔信息技术有限公司 | OpenStack适配负载均衡服务的方法、系统、装置及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975685A (zh) * | 2005-11-30 | 2007-06-06 | 国际商业机器公司 | 在两个或多个非对称存储站之间的文件级复制的装置和方法 |
CN101681282A (zh) * | 2006-12-06 | 2010-03-24 | 弗森多系统公司(dba弗森-艾奥) | 用于共享的、前端、分布式raid的装置、系统和方法 |
US8046460B1 (en) * | 2009-01-23 | 2011-10-25 | Hewlett-Packard Development Company, L.P. | Automatic server deployment using a pre-provisioned logical volume |
CN102594861A (zh) * | 2011-12-15 | 2012-07-18 | 杭州电子科技大学 | 一种多服务器负载均衡的云存储系统 |
CN102761579A (zh) * | 2011-04-29 | 2012-10-31 | 国际商业机器公司 | 利用存储域网络传输数据的方法和系统 |
CN105471695A (zh) * | 2014-08-21 | 2016-04-06 | 西安慧泽知识产权运营管理有限公司 | 一种存储区域网络虚拟化管理方法 |
CN105938420A (zh) * | 2015-03-03 | 2016-09-14 | 国际商业机器公司 | 用于在虚拟数据存储环境中存储数据的方法和系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8230085B2 (en) * | 2004-04-12 | 2012-07-24 | Netapp, Inc. | System and method for supporting block-based protocols on a virtual storage appliance executing within a physical storage appliance |
US7328287B1 (en) * | 2004-07-26 | 2008-02-05 | Symantec Operating Corporation | System and method for managing I/O access policies in a storage environment employing asymmetric distributed block virtualization |
US7653832B2 (en) * | 2006-05-08 | 2010-01-26 | Emc Corporation | Storage array virtualization using a storage block mapping protocol client and server |
US8589550B1 (en) * | 2006-10-23 | 2013-11-19 | Emc Corporation | Asymmetric data storage system for high performance and grid computing |
US8984031B1 (en) * | 2010-09-29 | 2015-03-17 | Emc Corporation | Managing data storage for databases based on application awareness |
US8935221B1 (en) * | 2012-07-25 | 2015-01-13 | Amazon Technologies, Inc. | Object loss reporting in a data storage system |
US10592106B2 (en) * | 2013-03-20 | 2020-03-17 | Amazon Technologies, Inc. | Replication target service |
-
2017
- 2017-05-10 US US15/591,169 patent/US20180329634A1/en not_active Abandoned
-
2018
- 2018-02-15 EP EP18157041.7A patent/EP3401775A1/en not_active Withdrawn
- 2018-03-30 CN CN201810295277.XA patent/CN108874305B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975685A (zh) * | 2005-11-30 | 2007-06-06 | 国际商业机器公司 | 在两个或多个非对称存储站之间的文件级复制的装置和方法 |
CN101681282A (zh) * | 2006-12-06 | 2010-03-24 | 弗森多系统公司(dba弗森-艾奥) | 用于共享的、前端、分布式raid的装置、系统和方法 |
US8046460B1 (en) * | 2009-01-23 | 2011-10-25 | Hewlett-Packard Development Company, L.P. | Automatic server deployment using a pre-provisioned logical volume |
CN102761579A (zh) * | 2011-04-29 | 2012-10-31 | 国际商业机器公司 | 利用存储域网络传输数据的方法和系统 |
CN102594861A (zh) * | 2011-12-15 | 2012-07-18 | 杭州电子科技大学 | 一种多服务器负载均衡的云存储系统 |
CN105471695A (zh) * | 2014-08-21 | 2016-04-06 | 西安慧泽知识产权运营管理有限公司 | 一种存储区域网络虚拟化管理方法 |
CN105938420A (zh) * | 2015-03-03 | 2016-09-14 | 国际商业机器公司 | 用于在虚拟数据存储环境中存储数据的方法和系统 |
Non-Patent Citations (4)
Title |
---|
An Adaptable Connectionist Text-Retrieval System With Relevance Feedback;M. R. Azimi-Sadjadi等;IEEE Transactions on Neural Networks;全文 * |
IP-SAN环境下RAID远程管理系统设计与实现;叶宾;须文波;;微计算机应用(第07期);全文 * |
文件系统SAN备份方案的研究与实现;王征华, 赵政文;微电子学与计算机(第04期);全文 * |
融合NAS和SAN的存储网络设计与实现;韩德志;余顺争;谢长生;;电子学报(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108874305A (zh) | 2018-11-23 |
US20180329634A1 (en) | 2018-11-15 |
EP3401775A1 (en) | 2018-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874305B (zh) | 用于存储区域网络(san)设备的对象覆盖 | |
US11522956B2 (en) | Object storage in cloud with reference counting using versions | |
KR102444832B1 (ko) | 분산된 가상 명칭 공간 관리를 사용한 온-디맨드 스토리지 프로비져닝 | |
US10769024B2 (en) | Incremental transfer with unused data block reclamation | |
US9645943B2 (en) | Storage arrangement and method using a plurality of storage spaces which have separate control layers and separate mapping structures | |
US20210344772A1 (en) | Distributed database systems including callback techniques for cache of same | |
US9116913B2 (en) | File storage system and file cloning method | |
US10372329B1 (en) | Managing storage devices in a distributed storage system | |
US20080010325A1 (en) | Data migration apparatus, method, and program | |
US10579597B1 (en) | Data-tiering service with multiple cold tier quality of service levels | |
US20170031939A1 (en) | Stale data detection | |
US9122689B1 (en) | Recovering performance of a file system post-migration | |
US11907261B2 (en) | Timestamp consistency for synchronous replication | |
US11221993B2 (en) | Limited deduplication scope for distributed file systems | |
US8612495B2 (en) | Computer and data management method by the computer | |
US10838641B2 (en) | Defragmenting backup objects | |
AU2017254926A1 (en) | Management of multiple clusters of distributed file systems | |
US20160048529A1 (en) | Coalescing storage operations | |
WO2017067297A1 (zh) | 对nas设备中视频数据的读写方法及装置 | |
US20150381727A1 (en) | Storage functionality rule implementation | |
US11474728B2 (en) | Data storage volume record management for application-level recovery | |
US20200125266A1 (en) | Providing a global unique identifier for a storage volume | |
JP2015114913A (ja) | ストレージ装置、ストレージシステム及びデータ管理プログラム | |
US8868970B2 (en) | Object based storage system and method of operating thereof | |
US10621148B1 (en) | Maintaining multiple object stores in a distributed file system |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200825 Address after: Israel Yuekeni Mourinho Applicant after: Mellanox Technologies, Ltd. Address before: Israel Hertz Leah Applicant before: STRATO SCALE Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |