CN102918509B - 数据读写方法、装置和存储系统 - Google Patents
数据读写方法、装置和存储系统 Download PDFInfo
- Publication number
- CN102918509B CN102918509B CN201180000715.1A CN201180000715A CN102918509B CN 102918509 B CN102918509 B CN 102918509B CN 201180000715 A CN201180000715 A CN 201180000715A CN 102918509 B CN102918509 B CN 102918509B
- Authority
- CN
- China
- Prior art keywords
- data
- read
- operation requests
- addressing mode
- key assignments
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2053—Error 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/2094—Redundant storage or storage space
-
- 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/0626—Reducing size or complexity of 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/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/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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据读写方法、装置和存储系统,该数据读写方法包括:发起端设备的块存储驱动接收针对卷的基于LBA方式的操作请求;将基于LBA方式的操作请求转换为基于Key寻址方式的操作请求;然后将基于Key寻址方式的操作请求发送给路由库。本发明可以提高存储系统的可靠性、可用性、可扩展性和廉价性,满足高扩展、高可靠、高可用和廉价的海量存储需求。
Description
技术领域
本发明实施例涉及信息技术领域,尤其涉及一种数据读写方法、装置和存储系统。
背景技术
随着网络的发展,信息呈现爆炸性增长,人类的数据达到前所未有的规模,这些超大规模的数据存储和管理已经成为一大挑战,虽然硬盘的容量越来越大,存储速度不断增加,可传统的直接硬盘存储以及采用多个外挂磁盘阵列的方式已经难以满足海量信息管理对于存储子系统的可扩展性、可靠性和高可用性等方面的要求。
现有技术中,一个典型的块存储系统一般可以简化为发起端和目标端两部分,发起端在本地生成卷并与目标端建立连接,同时将对本地设备文件的输入(Input;以下简称:I)/输出(Output;以下简称:O)请求转发给目标端进行处理;目标端管理存储设备并处理最终的I/O请求;两者之间通过基于因特网小型计算机系统接口(internet Small Computer SystemInterface;以下简称:iSCSI)/光纤通道(Fiber Channel;以下简称:FC)/基于以太网的高级技术附加装置(Advanced Technology Attachment overEthernet;以下简称:AOE)/网络块设备(Network Block Device;以下简称:NBD)等存储协议的块接口进行通信。
其中,发起端主要包含接入单元这个实体,实现本地卷管理及通过各种协议(例如:iSCSI、FC或AOE等)与目标端建立连接并进行通信;目标端主要包括卷控制单元和独立冗余磁盘阵列(Redundant Array ofIndependent Disk;以下简称:RAID)控制单元。RAID控制单元管理具体物理磁盘并构建RAID组,同时形成逻辑磁盘;卷控制单元管理RAID控制单元生成的逻辑磁盘并根据需要划分好逻辑卷,同时通过iSCSI、FC或AOE等协议将逻辑卷暴露出去以供发起端使用。
但是,现有技术中,目标端提供的块存储服务在可靠性、可用性、可扩展性和廉价性等方面存在一定的制约。
具体地,在可靠性和可用性方面,现有技术主要通过在目标端机柜内构建RAID、采用多控制机头冗余(如双控制器磁盘阵列)来保证数据的可靠性,但是如果该机柜出现电源故障、两个或多个控制器机头同时出现故障都可能出现数据丢失或服务中断等问题,从而进一步影响到可用性;在可扩展性方面,如果目标端采用因特网存储局域网络(Internet StorageArea Network;以下简称:IP SAN)或光纤通道存储局域网络(FC StorageArea Network;以下简称:FC SAN),该目标端的容量将受到IP SAN或FC SAN的控制器机头处理能力的限制,支持的最大容量将受到制约,无法进行大规模扩展;
在可维护性方面,传统RAID组构建的磁盘阵列,当RAID组内的磁盘出现故障后,需要及时更换,并重建RAID,才能保证冗余和数据可靠性,这就要求维护人员进行随时更换,系统无法自动处理这类故障;
而在廉价性方面,IP SAN或FC SAN作为目标端价格都比较高昂,尤其是FC SAN,与其配套需要的相关交换设备也价格不菲;存储服务器作为目标端成本虽然相对较低,但由于存储服务器对处理器和内存等要求不高,磁盘I/O的性能较低。
发明内容
本发明实施例提供一种数据读写方法、装置和存储系统,以提高存储系统的可靠性、可用性、可扩展性和廉价性。
本发明实施例提供一种数据读写方法,包括:
发起端设备的块存储驱动接收针对卷的基于逻辑块寻址方式的操作请求;
所述块存储驱动将所述基于逻辑块寻址方式的操作请求转换为基于键值寻址方式的操作请求,所述基于键值寻址方式的操作请求携带待操作数据对应的键值;
所述块存储驱动将所述基于键值寻址方式的操作请求发送给路由库,以便所述路由库根据所述待操作数据对应的键值将所述基于键值寻址方式的操作请求发送给所述待操作数据的存储主节点和至少一个备份节点,由所述存储主节点和所述至少一个备份节点对所述待操作数据进行读取或写入操作。
本发明实施例还提供一种数据读写装置,包括:
接收模块,用于接收针对卷的基于逻辑块寻址方式的操作请求;
转换模块,用于将所述基于逻辑块寻址方式的操作请求转换为基于键值寻址方式的操作请求,所述基于键值寻址方式的操作请求携带所述待操作数据对应的键值;
发送模块,用于将所述基于键值寻址方式的操作请求发送给路由库,以便所述路由库根据所述待操作数据对应的键值将所述基于键值寻址方式的操作请求发送给所述待操作数据的存储主节点和至少一个备份节点,由所述存储主节点和所述至少一个备份节点对所述待操作数据进行读取或写入操作。
本发明还提供一种存储系统,包括:块存储驱动、路由库、存储主节点和至少一个备份节点;
所述块存储驱动,用于接收针对卷的基于逻辑块寻址方式的操作请求,将所述基于逻辑块寻址方式的操作请求转换为基于键值寻址方式的操作请求,以及将所述基于键值寻址方式的操作请求发送给所述路由库,所述基于键值寻址方式的操作请求携带待操作数据对应的键值;
所述路由库,用于接收所述块存储驱动发送的所述基于键值寻址方式的操作请求,根据所述待操作数据对应的键值将所述基于键值寻址方式的操作请求发送给所述待操作数据的存储主节点和至少一个备份节点;
所述存储主节点,用于接收所述路由库发送的所述基于键值寻址方式的操作请求,对所述待操作数据进行读取或写入操作;
所述至少一个备份节点,用于接收所述路由库发送的所述基于键值寻址方式的操作请求,对所述待操作数据进行读取或写入操作。
通过本发明实施例,发起端设备的块存储驱动接收到针对卷的基于逻辑块寻址方式的操作请求之后,将该基于逻辑块寻址方式的操作请求转换为基于键值寻址方式的操作请求,然后将上述基于键值寻址方式的操作请求发送给路由库,以便该路由库根据基于键值寻址方式的操作请求中携带的待操作数据对应的键值将该基于键值寻址方式的操作请求发送给待操作数据的存储主节点和至少一个备份节点,由存储主节点和至少一个备份节点对上述待操作数据进行读取或写入操作;从而可以提高存储系统的可靠性、可用性、可扩展性和廉价性,满足高扩展、高可靠、高可用和廉价的海量存储需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明数据读写方法一个实施例的流程图;
图2为本发明本地卷创建方法一个实施例的流程图;
图3为本发明数据写入方法一个实施例的流程图;
图4为本发明数据读取方法一个实施例的流程图;
图5为本发明数据读写装置一个实施例的结构示意图;
图6为本发明数据读写装置另一个实施例的结构示意图;
图7为本发明存储系统一个实施例的结构示意图;
图8为本发明存储系统支持的路由一个实施例的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明数据读写方法一个实施例的流程图,如图1所示,该数据读写方法可以包括:
步骤101,发起端设备的块存储驱动接收针对卷的基于逻辑块寻址(Logical Block Addressing;以下简称:LBA)方式的操作请求。
本实施例中,该发起端设备可以为任何应用服务器,当然本实施例并不仅限于此,本实施例对发起端设备的具体形态不作限定。
步骤102,块存储驱动将基于LBA方式的操作请求转换为基于键值(Key)寻址方式的操作请求,该基于Key寻址方式的操作请求携带待操作数据对应的Key。
步骤103,块存储驱动将基于Key寻址方式的操作请求发送给路由库,以便该路由库根据待操作数据对应的Key将基于Key寻址方式的操作请求发送给上述待操作数据的存储主节点和至少一个备份节点,由该存储主节点和至少一个备份节点对上述待操作数据进行读取或写入操作。
本实施例中,在发起端设备的块存储驱动接收针对卷的基于LBA方式的操作请求之前,该发起端设备初始化并启动上述块存储驱动,保存存储系统中至少一个存储节点的因特网协议(Internet Protocol;以下简称:IP)地址和服务端口;然后,当路由库位于上述块存储驱动中时,发起端设备保存上述块存储驱动与存储系统中所有或部分存储节点的连接;或者,当路由库位于存储节点中时,块存储驱动直接建立块存储驱动与存储节点之间的连接;接下来,发起端设备可以接收创建卷的命令、该命令中包含待创建卷的卷名和待创建卷的卷大小;然后发起端设备的块存储驱动可以根据上述命令在发起端设备的本地操作系统中创建卷逻辑设备;另外,路由库也需获取存储系统中每个存储节点的IP地址、服务端口和每个存储节点负责的哈希(Hash)区域,并建立路由库与存储系统中所有或部分存储节点的连接。上述过程可以实现在发起端设备创建本地卷。
本实施例中,具体地,路由库根据待操作数据对应的Key将基于Key寻址方式的操作请求发送给上述待操作数据的存储主节点和至少一个备份节点可以为:路由库对上述待操作数据对应的Key进行哈希,确定负责哈希后的Key所属哈希区域的存储节点为待操作数据的存储主节点,将基于Key寻址方式的操作请求发送给上述待操作数据的存储主节点;以及根据预定的备份策略确定上述待操作数据的至少一个备份节点,并将基于Key寻址方式的操作请求发送给上述至少一个备份节点。
具体地,存储系统中的存储节点都有节点标识,在确定上述待操作数据的至少一个备份节点时,可以根据预定的备份策略从存储主节点开始按照节点标识由小到大或由大到小的顺序依次选择上述待操作数据的至少一个备份节点;举例来说,当预定的备份策略为每份待操作数据有两份备份时,可以从存储主节点开始按照节点标识由小到大或由大到小的顺序依次选择两个备份节点作为待操作数据的备份节点。
本实施例的一种实现方式中,当操作请求为写操作请求,待操作数据为待写入数据时,该写操作请求还可以携带上述待写入数据,这时存储主节点和至少一个备份节点对待操作数据进行写入操作可以为:
存储主节点和至少一个备份节点根据待写入数据的键值将待写入数据写入到本地,并记录写入数据的版本,写入操作完成之后,向路由库返回写操作响应。
之后,路由库可以根据预设的写操作策略接收上述写操作响应,并计算写入操作成功的次数,根据写入操作成功的次数和预设的写操作策略向块存储驱动返回针对上述基于Key寻址方式的写操作请求的响应。
本实施例的另一种实现方式中,当操作请求为读操作请求,待操作数据为待读取数据时,存储主节点和至少一个备份节点对待操作数据进行读取操作可以为:存储主节点和至少一个备份节点根据待读取数据的键值读取本地存储的待读取数据和待读取数据的版本,向上述路由库返回读取的数据、读取的数据的版本和读操作响应。
之后,路由库可以根据预设的读操作策略接收返回的数据,并计算读取操作成功的次数,根据该读取操作成功的次数和预设的读操作策略识别并向块存储驱动返回读取的数据中最新版本的数据,以便块存储驱动对上述最新版本的数据进行处理后,返回基于LBA方式的读操作请求对应的数据。
本实施例中,块存储驱动、路由库、存储主节点和至少一个备份节点均可以基于分布式哈希表(Distributed Hash Table;以下简称:DHT)技术实现。本实施例中,由于待操作数据具有至少两个备份,因此数据不会丢失,所以本实施例提供的数据读写方法可以提高存储系统的可靠性;并且由于待操作数据具有至少两个备份,因此存储系统可以一直提供读写,不会因为存储系统中某个存储节点故障导致数据不能读写,所以本实施例提供的数据读写方法可以提高存储系统的可用性;另外,DHT技术本身的特点即为高可扩展性,因此本实施例提供的数据读写方法可以提高存储系统的扩展性;最后,由于基于DHT技术实现的存储系统不需要用专门定制的硬件,用通用的硬件设备例如:个人计算机(Personal Computer;以下简称:PC)机即可,因此本实施例提供的数据读写方法可以提高存储系统的廉价性;综上所述,本实施例提供的数据读写方法可以满足高扩展、高可靠、高可用和廉价的海量存储需求。
本发明以下实施例的描述中,以块存储驱动为DHT块存储驱动、路由库为DHT路由库、存储主节点和至少一个备份节点为基于DHT的Key-value存储系统中的节点为例进行说明。其中,基于DHT的Key-value存储系统为利用DHT技术实现的分布式Key-value存储系统,Key为数据的唯一标识,value即为数据内容。
下面对本发明实施例中发起端设备创建本地卷的交互流程进行介绍。图2为本发明本地卷创建方法一个实施例的流程图,如图2所示,该方法可以包括:
步骤201,发起端设备初始化并启动DHT块存储驱动。
具体地,发起端设备指定基于DHT的Key-value存储系统存储节点的统一资源定位符(Uniform Resource Locator;以下简称:URL)列表,该URL列表可以保存至少一个存储节点的IP地址和服务端口;保存至少一个存储节点的IP地址和服务端口的目的主要是在某个存储节点无法正常通信的情况下可以使用其他存储节点。
步骤202,初始化DHT路由库。
本实施例中,初始化DHT路由库的主要目的是建立与基于DHT的Key-value存储系统的连接。具体地,如果DHT路由库位于DHT块存储驱动中,则初始化DHT路由库后发起端设备将保存一个连接池,该连接池中包含发起端设备的DHT块存储驱动与基于DHT的Key-value存储系统中所有或者部分存储节点的连接,也就是说,发起端设备中的连接池保存DHT路由库与基于DHT的Key-value存储系统中所有或者部分存储节点的连接;如果DHT路由库位于基于DHT的Key-value存储系统的存储节点中,则DHT块存储驱动将直接建立与基于DHT的Key-value存储系统中有DHT路由库的存储节点的连接。
步骤203,DHT路由库建立与基于DHT的Key-value存储系统中所有或者部分存储节点的连接。
另外,DHT路由库还获取基于DHT的Key-value存储系统中每个存储节点的信息,包括每个存储节点的IP地址、端口和负责的Hash区域等。
本实施例中,对于DHT路由库与基于DHT的Key-value存储系统中所有或者部分存储节点的连接,该DHT路由库以池的形式进行维护。
步骤204,发起端设备的DHT块存储驱动接收创建卷的命令,该命令中包含了待创建卷的卷名和卷大小。
其中,卷名可以是任意的字符、字符串和/或数字等,本实施例对卷名的表示形式不作限定,只要待创建卷的卷名在存储系统内唯一即可。
步骤205,发起端设备的DHT块存储驱动接收到上述命令之后,根据上述命令在该发起端设备的本地操作系统中创建卷逻辑设备。至此,本地卷创建完成。
图3为本发明数据写入方法一个实施例的流程图,本实施例中假设每份数据存在3个副本,如图3所示,该数据写入方法可以包括:
步骤301,DHT块存储驱动接收针对卷的基于LBA方式的写操作请求。
其中,基于LBA方式的写操作请求携带待写入数据,以及待写入的起始扇区编号和待写入的扇区个数。
需要说明的是,扇区是磁盘的最小访问单元,现有磁盘默认的扇区大小为512字节(Byte)。
步骤302,DHT块存储驱动将基于LBA方式的写操作请求转换为基于Key寻址方式的写操作请求,该基于Key寻址方式的写操作请求携带待写入数据和该待写入数据对应的Key。
本实施例中,将基于LBA方式的写操作请求转换为基于Key寻址方式的写操作请求的具体转换方式可以有多种,一种典型的转换方式可以为:Key=卷名+(基于LBA方式的写操作请求的LBA编号×512/value数据块大小);其中,除法只取商的整数部分。其中卷名即为卷的卷名,基于LBA方式的写操作请求的LBA编号为基于LBA方式的写操作请求中携带的一个整数编号,512为现有磁盘默认的扇区大小,value数据块大小指的是存放到基于DHT的Key-value存储系统中每个Key对应的value的固定长度。举例来说,假设卷名为“nbd0”,基于LBA方式的写操作请求的LBA编号为35,value数据块大小为4096字节,则key=“nbd0_4”。这样,LBA编号为32、33、34和35的基于LBA方式的写操作请求实际上都转化为基于“nbd0_4”这个Key寻址的写操作请求。
另外,需要说明的是,一个基于LBA方式的写操作请求的长度(即待写入扇区的个数),和转换后基于Key寻址方式的写操作请求的个数有映射关系。如果一个基于LBA方式的写操作请求中待写入数据的长度,大于value数据块大小,则该基于LBA方式的写操作请求会被转化为至少两个基于Key寻址方式的写操作请求。举例来说,假设一个基于LBA方式的写操作请求中携带的LBA编号为32、33、34、35、36、37和38,则按照上述转换方式,该基于LBA方式的写操作请求会转化为两个基于Key寻址方式的写操作请求。其中,这两个基于Key寻址方式的写操作请求中的Key分别为“nbd0_4”和“ndb0_5”,Key=“nbd0_4”的写操作请求,对应的待写入扇区为32、33、34和35;Key=“nbd0_5”的写操作请求对应的待写入扇区为36、37和38。
步骤303,DHT块存储驱动将基于Key寻址方式的写操作请求发送给DHT路由库。
本实施例中,DHT路由库可以位于DHT块存储驱动中,也可以位于基于DHT的Key-value存储系统的存储节点中,如果DHT路由库位于DHT块存储驱动中,DHT块存储驱动可以通过本地语言接口调用将基于Key寻址方式的写操作请求发送给DHT路由库;如果DHT路由库位于存储节点中,则DHT块存储驱动可以与DHT路由库所在的存储节点进行交互,将基于Key寻址方式的写操作请求发送给DHT路由库。
步骤304,DHT路由库向待写入数据的存储主节点发送基于Key寻址方式的写操作请求。
具体地,DHT路由库先对接收的基于Key寻址方式的写操作请求中携带的待写入数据的Key进行Hash,然后确定负责Hash后的Key所在Hash区域的存储节点为该待写入数据的存储主节点,最后,DHT路由库将基于Key寻址方式的写操作请求发送给上述存储主节点。
步骤305,存储主节点根据待写入数据的键值将待写入数据写入到本地,并记录写入数据的版本。
其中,写入数据的版本的表示方式可以为时间戳、向量时钟或其他方式,本实施例对写入数据的版本的表示方式不作限定。
步骤306,存储主节点向DHT路由库返回写操作响应。
具体地,如果写入成功,则存储主节点向DHT路由库返回写入成功响应;如果写入失败,则存储主节点向DHT路由库返回写入失败响应。
步骤307,DHT路由库根据预定的备份策略确定上述待写入数据的第一个备份节点,并向第一个备份节点发送基于Key寻址方式的写操作请求。
其中,上述备份策略可以跨机架或跨数据中心等备份策略,本实施例对此不作限定,只要DHT路由库可以根据该备份策略确定待写入数据的备份节点即可。
步骤308,第一个备份节点根据待写入数据的键值将待写入数据写入到本地,并记录写入数据的版本。
其中,写入数据的版本的表示方式可以为时间戳、向量时钟或其他方式,本实施例对写入数据的版本不作限定。
步骤309,第一个备份节点向DHT路由库返回写操作响应。
具体地,如果写入成功,则第一个备份节点向DHT路由库返回写入成功响应;如果写入失败,则第一个备份节点向DHT路由库返回写入失败响应。
步骤310,DHT路由库根据预定的备份策略确定上述待写入数据的第二个备份节点,并向第二个备份节点发送基于Key寻址方式的写操作请求。
步骤311,第二个备份节点根据待写入数据的键值将待写入数据写入到本地,并记录写入数据的版本。
步骤312,第二个备份节点向DHT路由库返回写操作响应。
具体地,如果写入成功,则第二个备份节点向DHT路由库返回写入成功响应;如果写入失败,则第二个备份节点向DHT路由库返回写入失败响应。
本实施例中,步骤304~步骤312可以是一个异步操作的过程。
步骤313,DHT路由库根据预设的写操作策略接收写操作响应,并计算写入操作成功的次数。
本实施例中,基于DHT的Key-value存储系统中支持不同的写操作策略,举例来说,可以设置写操作策略为3份副本写成功2份即为写操作成功,这意味着往基于DHT的Key-value存储系统中存一份数据时会写到3个不同存储节点(3份副本),写操作过程中只要往2个存储节点写入成功了,即可认为整个写操作成功,剩下的1份副本可以由后台进行同步,这样可以提升写操作的速度,同时又不会破坏数据备份的份数。
步骤314,DHT路由库根据写入操作成功的次数和预设的写操作策略向DHT块存储驱动返回针对上述基于Key寻址方式的写操作请求的响应。
参照步骤313中的举例,在往2个存储节点写入成功之后,即可认为整个写操作成功,这时DHT路由库向DHT块存储驱动返回写操作成功响应;而如果只往一个存储节点写入成功,或者,往所有存储节点均未写入成功,则DHT路由库向DHT块存储驱动返回写操作失败响应。
本实施例中,由于待写入数据具有至少两个备份,因此数据不会丢失,所以本实施例提供的数据写入方法可以提高基于DHT的Key-value存储系统的可靠性;并且由于待写入数据具有至少两个备份,因此基于DHT的Key-value存储系统可以一直进行写入操作,不会因为存储系统中某个存储节点故障导致数据不能进行写入操作,所以本实施例提供的数据写入方法可以提高基于DHT的Key-value存储系统的可用性;另外,DHT技术本身的特点即为高可扩展性,因此本实施例提供的数据写入方法可以提高基于DHT的Key-value存储系统的扩展性;最后,由于基于DHT技术实现的存储系统不需要用专门定制的硬件,用通用的硬件设备例如:PC机即可,因此本实施例提供的数据写入方法可以提高基于DHT的Key-value存储系统的廉价性;综上所述,本实施例提供的数据写入方法可以满足高扩展、高可靠、高可用和廉价的海量存储需求。
图4为本发明数据读取方法一个实施例的流程图,本实施例中假设每份数据存在3个副本,如图4所示,该数据读取方法可以包括:
步骤401,DHT块存储驱动接收针对卷的基于LBA方式的读操作请求。
其中,基于LBA方式的读操作请求携带LBA编号和待读取扇区的个数。
需要说明的是,扇区是磁盘的最小访问单元,现有磁盘默认的扇区大小为512字节(Byte)。
步骤402,DHT块存储驱动将基于LBA方式的读操作请求转换为基于Key寻址方式的读操作请求,该基于Key寻址方式的读操作请求携带待读取数据对应的Key。
具体地,将基于LBA方式的读操作请求转换为基于Key寻址方式的读操作请求的方式与将基于LBA方式的写操作请求转换为基于Key寻址方式的写操作请求的方式相同,在此不再赘述。
步骤403,DHT块存储驱动将基于Key寻址方式的读操作请求发送给DHT路由库。
本实施例中,DHT路由库可以位于DHT块存储驱动中,也可以位于基于DHT的Key-value存储系统的存储节点中,如果DHT路由库位于DHT块存储驱动中,DHT块存储驱动可以通过本地语言接口调用将基于Key寻址方式的读操作请求发送给DHT路由库;如果DHT路由库位于存储节点中,则DHT块存储驱动可以与DHT路由库所在的存储节点进行交互,将基于Key寻址方式的读操作请求发送给DHT路由库。
步骤404,DHT路由库向待读取数据的存储主节点发送基于Key寻址方式的读操作请求。
具体地,DHT路由库先对接收的基于Key寻址方式的读操作请求中携带的待读取数据的Key进行Hash,然后确定负责Hash后的Key所在Hash区域的存储节点为该待读取数据的存储主节点,最后,DHT路由库将基于Key寻址方式的读操作请求发送给上述存储主节点。
步骤405,存储主节点根据待读取数据的键值读取本地存储的待读取数据和该待读取数据的版本。
其中,该版本的表示方式可以为时间戳、向量时钟或其他方式,本实施例对待读取数据的版本的表示方式不作限定。
步骤406,如果读取操作成功,则存储主节点向DHT路由库返回读取的数据、读取的数据的版本和读取成功响应。
如果读取操作失败,则存储主节点向DHT路由库返回空或其他失败响应。
步骤407,DHT路由库根据预定的备份策略确定上述待读取数据的第一个备份节点,并向第一个备份节点发送基于Key寻址方式的读操作请求。
其中,上述备份策略可以跨机架或跨数据中心等备份策略,本实施例对此不作限定,只要DHT路由库可以根据该备份策略确定待读取数据的备份节点即可。
步骤408,第一个备份节点根据待读取数据的键值读取本地存储的待读取数据和该待读取数据的版本。
步骤409,如果读取操作成功,则第一个备份节点向DHT路由库返回读取的数据、读取的数据的版本和读取成功响应。
如果读取操作失败,则第一个备份节点向DHT路由库返回空或其他失败响应。
步骤410,DHT路由库根据预定的备份策略确定上述待读取数据的第二个备份节点,并向第二个备份节点发送基于Key寻址方式的读操作请求。
步骤411,第二个备份节点根据待读取数据的键值读取本地存储的待读取数据和该待读取数据的版本。
步骤412,如果读取操作成功,则第二个备份节点向DHT路由库返回读取的数据、读取的数据的版本和读取成功响应。
如果读取操作失败,则第二个备份节点向DHT路由库返回空或其他失败响应。
本实施例中,步骤304~步骤312可以是一个异步操作的过程。
步骤413,DHT路由库根据预设的读操作策略接收返回的数据,并计算读取操作成功的次数。
本实施例中,基于DHT的Key-value存储系统中支持不同的读操作策略,举例来说,可以设置读操作策略为3份副本读到1份副本即为读操作成功,这意味着从基于DHT的Key-value存储系统中读取一份数据时,可以从3个存储节点(3份副本)中的任何一个读取数据,只要从1个存储节点读取成功,即可认为整个读操作成功。
步骤414,DHT路由库根据读取操作成功的次数和预设的读操作策略识别并向DHT块存储驱动返回读取的数据中最新版本的数据。
步骤415,DHT块存储驱动对上述最新版本的数据进行处理后,返回基于LBA方式的读操作请求对应的数据。
具体地,如果一个基于LBA方式的读操作请求被转换为至少两个基于Key寻址方式的读操作请求,则DHT块存储驱动需要对上述最新版本的数据进行合并处理;如果一个基于Key寻址方式的读操作请求对应至少两个基于LBA方式的读操作请求,则DHT块存储驱动需要对上述最新版本的数据进行切分处理。
本实施例中,由于待读取数据具有至少两个备份,因此数据不会丢失,所以本实施例提供的数据读写方法可以提高基于DHT的Key-value存储系统的可靠性;并且由于待读取数据具有至少两个备份,因此基于DHT的Key-value存储系统可以一直进行读取操作,不会因为存储系统中某个存储节点故障导致数据不能进行读取操作,所以本实施例提供的数据读写方法可以提高基于DHT的Key-value存储系统的可用性;另外,DHT技术本身的特点即为高可扩展性,因此本实施例提供的数据读写方法可以提高基于DHT的Key-value存储系统的扩展性;最后,由于基于DHT技术实现的存储系统不需要用专门定制的硬件,用通用的硬件设备例如:PC机即可,因此本实施例提供的数据读写方法可以提高基于DHT的Key-value存储系统的廉价性;综上所述,本实施例提供的数据读取方法可以满足高扩展、高可靠、高可用和廉价的海量存储需求。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图5为本发明数据读写装置一个实施例的结构示意图,本实施例中的数据读写装置可以作为发起端设备,或发起端设备的一部分实现本发明图1所示实施例的流程。如图5所示,该数据读写装置可以包括:
接收模块51,用于接收针对卷的基于LBA方式的操作请求;
转换模块52,用于将上述基于LBA方式的操作请求转换为基于Key寻址方式的操作请求,该基于Key寻址方式的操作请求携带待操作数据对应的键值;
发送模块53,用于将基于Key寻址方式的操作请求发送给路由库,以便该路由库根据待操作数据对应的键值将基于Key寻址方式的操作请求发送给上述待操作数据的存储主节点和至少一个备份节点,由该存储主节点和至少一个备份节点对上述待操作数据进行读取或写入操作。
上述数据读写装置可以提高存储系统的可靠性、可用性、可扩展性和廉价性,满足高扩展、高可靠、高可用和廉价的海量存储需求。
图6为本发明数据读写装置另一个实施例的结构示意图,与图5所示的数据读写装置相比,不同之处在于,图6所示的数据读写装置还可以包括:
初始化模块54,用于初始化并启动块存储驱动;
保存模块55,用于保存存储系统中至少一个存储节点的IP地址和服务端口;以及当路由库位于上述块存储驱动中时,保存该块存储驱动与存储系统中所有或部分存储节点的连接;
创建模块56,用于在接收模块51接收到创建卷的命令之后,根据上述命令在发起端设备的本地操作系统中创建卷逻辑设备,上述命令中包含待创建卷的卷名和待创建卷的卷大小。
上述数据读写装置可以提高存储系统的可靠性、可用性、可扩展性和廉价性,满足高扩展、高可靠、高可用和廉价的海量存储需求。
图7为本发明存储系统一个实施例的结构示意图,如图7所示,该存储系统可以包括:块存储驱动71、路由库72、存储主节点73和至少一个备份节点74;
块存储驱动71,用于接收针对卷的基于LBA方式的操作请求,将该基于LBA方式的操作请求转换为基于Key寻址方式的操作请求,以及将基于Key寻址方式的操作请求发送给路由库72,该基于Key寻址方式的操作请求携带待操作数据对应的Key。
路由库72,用于接收块存储驱动71发送的基于Key寻址方式的操作请求,根据待操作数据对应的Key将上述基于Key寻址方式的操作请求发送给待操作数据的存储主节点73和至少一个备份节点74;
存储主节点73,用于接收路由库72发送的基于Key寻址方式的操作请求,对该待操作数据进行读取或写入操作;
至少一个备份节点74,用于接收路由库72发送的基于Key寻址方式的操作请求,对该待操作数据进行读取或写入操作。
另外,本实施例中的存储系统还可以包括:块存储驱动71所在的发起端设备70,用于在块存储驱动71接收针对卷的基于LBA方式的操作请求之前,初始化并启动块存储驱动71,保存存储系统中至少一个存储节点的IP地址和服务端口;以及当路由库72位于块存储驱动71中时,保存块存储驱动71与存储系统中所有或部分存储节点的连接;以及接收创建卷的命令、该命令中包含待创建卷的卷名和待创建卷的卷大小;
块存储驱动71还可以当路由库72位于存储节点中时,建立块存储驱动71与存储节点之间的连接;以及根据发起端设备70接收的创建卷的命令在发起端设备70的本地操作系统中创建卷逻辑设备。
本实施例中的路由库72,还用于获取存储系统中每个存储节点的IP地址、服务端口和每个存储节点负责的Hash区域,并建立路由库72与存储系统中所有或部分存储节点的连接。
具体地,路由库72可以对待操作数据对应的Key进行Hash,确定负责Hash后的Key所属Hash区域的存储节点为待操作数据的存储主节点73,将基于Key寻址方式的操作请求发送给待操作数据的存储主节点73;以及根据预定的备份策略确定待操作数据的至少一个备份节点74,将基于Key寻址方式的操作请求发送给至少一个备份节点。
本实施例的一种实现方式中,存储主节点73可以当操作请求为写操作请求,待操作数据为待写入数据,写操作请求还携带上述待写入数据时,根据待写入数据的Key将待写入数据写入到本地,并记录写入数据的版本,写入操作完成之后,向路由库72返回写操作响应;
至少一个备份节点74可以当操作请求为写操作请求,待操作数据为待写入数据,上述写操作请求还携带上述待写入数据时,根据待写入数据的Key将上述待写入数据写入到本地,并记录待写入数据的版本,写入操作完成之后,向路由库72返回写操作响应。
这时,路由库72还可以根据预设的写操作策略接收上述写操作响应,并计算写入操作成功的次数,根据写入操作成功的次数和预设的写操作策略向块存储驱动71返回针对基于Key寻址方式的写操作请求的响应。
本实施例的另一种实现方式中,存储主节点73可以当操作请求为读操作请求,待操作数据为待读取数据时,根据待读取数据的Key读取本地存储的待读取数据和待读取数据的版本,向路由库72返回读取的数据、读取的数据的版本和读操作响应;
至少一个备份节点74,具体用于当上述操作请求为读操作请求,上述待操作数据为待读取数据时,根据待读取数据的键值读取本地存储的上述待读取数据和待读取数据的版本,向路由库72返回读取的数据、读取的数据的版本和读操作响应。
这时,路由库72,还用于根据预设的读操作策略接收返回的数据,并计算读取操作成功的次数,根据读取操作成功的次数和预设的读操作策略识别并向块存储驱动71返回读取的数据中最新版本的数据,以便块存储驱动71对最新版本的数据进行处理后,返回基于LBA方式的读操作请求对应的数据。
本实施例中,块存储驱动71可以基于DHT技术实现,实现本发明图5所示实施例中接收模块51、转换模块52和发送模块53的功能。具体地,块存储驱动71可以建立并维护与目标端的连接,在发生针对卷的读写操作时将该基于LBA方式的操作请求转换为基于Key寻址方式的操作请求,并将该基于Key寻址方式的操作请求发送给路由库72。本实施例中,块存储驱动71和卷共同组成发起端设备70。
本实施例中,路由库72是一个虚拟实体,可以基于DHT技术实现,路由库72既可以作为一个库放在块存储驱动71中,也可以放在存储节点的存储引擎中,当然,也可以既放在块存储驱动71中,又放在存储节点的存储引擎中;或者,路由库72作为一个单独的实体存在;路由库72的主要功能是实现基于Key寻址方式的操作请求的分发和路由;图8为本发明存储系统支持的路由一个实施例的示意图,如图8所示,假设每份数据保留的副本数为3,示意请求的数据分别保存在节点1、节点3和节点j上,则该存储系统支持的请求路由主要包含如下三种:
1)客户端路由:由客户端将基于Key寻址方式的操作请求分别发往数据所在节点;其中,该客户端即为发起端设备70;
2)服务端主数据节点路由:客户端将基于Key寻址方式的操作请求转给数据的存储主节点,然后由存储主节点再分发到备份节点;该路由方式也可视为服务端代理路由的特殊方式;
3)服务端代理路由:客户端将基于Key寻址方式的操作请求发到任意一个存储节点,然后该存储节点扮演代理节点的角色将基于Key寻址方式的操作请求转发至数据所在的存储节点;当然,该代理节点也可以是数据所在节点。
其中,当路由库72放在块存储驱动71中对应的是客户端路由,放在存储节点则对应的是服务端的两种路由,当然,一些特殊的请求也可以是客户端路由和服务端路由的组合,这时候块存储驱动71和存储节点都包含路由库72。
本实施例提供的存储系统为基于DHT的Key-value存储系统,存储主节点73和至少一个备份节点74均为基于DHT的Key-value存储系统的目标端中的存储节点,该目标端即为服务端。其中,基于DHT的Key-value存储系统是利用DHT技术实现的分布式Key-value存储系统,该基于DHT的Key-value存储系统的目标端中包含若干个存储节点,物理上这些存储节点可能位于不同的机架、不同的数据中心,但逻辑所有存储节点都位于一个相同的Hash环上并且负责不同的Hash区域,通过对基于Key寻址方式的操作请求携带的Key进行Hash来寻找待操作数据所属的存储节点;一段连续的待操作数据很可能被分散的存储在各个存储节点,存储节点利用数据副本和不同的复制策略(跨机架备份或跨数据中心备份)来保证数据的冗余度以提高可靠性;同时因为待操作数据被分散存储的特点,基于DHT的Key-value存储系统可以利用发起端设备或目标端并发I/O来降低I/O延时以提高性能。
存储节点由DHT存储引擎和和存储硬件组成,是存储系统中对外可见的最小单位,用来处理基于Key寻址方式的操作请求,并完成数据的读写。1)DHT存储引擎:完成基于DHT的Key-value存储系统的数据存储。如果包含路由库,则也可以实现服务端的请求路由。2)存储硬件:包括物理磁盘,该物理磁盘可以为普通的硬盘,例如:集成磁盘电子接口(Integrated DeviceElectronics;以下简称:IDE)硬盘、串行高级技术附件(Serial AdvancedTechnology Attachment;以下简称:SATA)硬盘或固态硬盘等,是存储硬件的主要组成;此外,单个存储节点的存储硬件还包括系统运行所必需的其他硬件,例如:中央处理单元(Central Processing Unit;以下简称:CPU)、内存、主板或网卡等硬件设备。因为存储系统读写的主要瓶颈在于磁盘,所以可以自制特殊的硬件来降低成本,如采用低主频和相对廉价的高级精简指令集计算机(Advanced Reduced Instruction Set Computer Machines;以下简称:ARM)架构的CPU和/或降低内存等。
本实施例提供的存储系统中,路由库72与目标端的存储节点之间的接口为基于传输控制协议(Transmission Control Protocol;以下简称:TCP)/用户数据报协议(User Datagram Protocol;以下简称:UDP)的Key-value接口,如上所述Key为待操作数据的唯一标识,value为待操作数据的内容。
本实施例提供的存储系统为基于DHT的Key-value存储系统,该基于DHT的Key-value存储系统内部对于存储节点故障等都会自动进行处理,能够很好的维持数据的冗余度,从而保证存储可靠性以及提高可用性。此外,基于DHT的Key-value存储系统还具有很好的可扩展性,理论上可以无限扩展从而扩大系统容量。另外,基于DHT的Key-value存储系统中的存储节点本身也支持采用廉价硬件,可以提高存储系统的廉价性。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (18)
1.一种数据读写方法,其特征在于,包括:
发起端设备的块存储驱动接收针对卷的基于逻辑块寻址方式的操作请求;
所述块存储驱动将所述基于逻辑块寻址方式的操作请求转换为基于键值寻址方式的操作请求,所述基于键值寻址方式的操作请求携带待操作数据对应的键值;
所述块存储驱动将所述基于键值寻址方式的操作请求发送给路由库,以便所述路由库根据所述待操作数据对应的键值将所述基于键值寻址方式的操作请求发送给所述待操作数据的存储主节点和至少一个备份节点,由所述存储主节点和所述至少一个备份节点对所述待操作数据进行读取或写入操作。
2.根据权利要求1所述的方法,其特征在于,所述发起端设备的块存储驱动接收针对卷的基于逻辑块寻址方式的操作请求之前,还包括:
所述发起端设备初始化并启动所述块存储驱动,保存存储系统中至少一个存储节点的因特网协议地址和服务端口;
当所述路由库位于所述块存储驱动中时,所述发起端设备保存所述块存储驱动与所述存储系统中所有或部分存储节点的连接;或者,当所述路由库位于所述存储节点中时,所述块存储驱动建立所述块存储驱动与所述存储节点之间的连接;
所述发起端设备接收创建卷的命令、所述命令中包含待创建卷的卷名和所述待创建卷的卷大小;
所述发起端设备的块存储驱动根据所述命令在所述发起端设备的本地操作系统中创建卷逻辑设备。
3.根据权利要求2所述的方法,其特征在于,所述发起端设备的块存储驱动接收针对卷的基于逻辑块寻址方式的操作请求之前,还包括:
所述路由库获取所述存储系统中每个存储节点的因特网协议地址、服务端口和所述每个存储节点负责的哈希区域,并建立所述路由库与所述存储系统中所有或部分存储节点的连接。
4.根据权利要求3所述的方法,其特征在于,所述路由库根据所述待操作数据对应的键值将所述基于键值寻址方式的操作请求发送给所述待操作数据的存储主节点和至少一个备份节点包括:
所述路由库对所述待操作数据对应的键值进行哈希,确定负责哈希后的键值所属哈希区域的存储节点为所述待操作数据的存储主节点,将所述基于键值寻址方式的操作请求发送给所述待操作数据的存储主节点;
所述路由库根据预定的备份策略确定所述待操作数据的至少一个备份节点,将所述基于键值寻址方式的操作请求发送给所述至少一个备份节点。
5.根据权利要求3或4所述的方法,其特征在于,当所述操作请求为写操作请求,所述待操作数据为待写入数据时,所述写操作请求还携带所述待写入数据;所述存储主节点和所述至少一个备份节点对所述待操作数据进行写入操作包括:
所述存储主节点和所述至少一个备份节点根据所述待写入数据的键值将所述待写入数据写入到本地,并记录写入数据的版本,写入操作完成之后,向所述路由库返回写操作响应。
6.根据权利要求5所述的方法,其特征在于,还包括:
所述路由库根据预设的写操作策略接收所述写操作响应,并计算写入操作成功的次数,根据所述写入操作成功的次数和所述预设的写操作策略向所述块存储驱动返回针对所述基于键值寻址方式的写操作请求的响应。
7.根据权利要求3或4所述的方法,其特征在于,当所述操作请求为读操作请求,所述待操作数据为待读取数据时,所述存储主节点和所述至少一个备份节点对所述待操作数据进行读取操作包括:
所述存储主节点和所述至少一个备份节点根据所述待读取数据的键值读取本地存储的所述待读取数据和所述待读取数据的版本,向所述路由库返回读取的数据、读取的数据的版本和读操作响应。
8.根据权利要求7所述的方法,其特征在于,还包括:
所述路由库根据预设的读操作策略接收返回的数据,并计算读取操作成功的次数,根据所述读取操作成功的次数和所述预设的读操作策略识别并向所述块存储驱动返回所述读取的数据中最新版本的数据,以便所述块存储驱动对所述最新版本的数据进行处理后,返回基于逻辑块寻址方式的读操作请求对应的数据。
9.一种数据读写装置,其特征在于,包括:
接收模块,用于接收针对卷的基于逻辑块寻址方式的操作请求;
转换模块,用于将所述基于逻辑块寻址方式的操作请求转换为基于键值寻址方式的操作请求,所述基于键值寻址方式的操作请求携带所述待操作数据对应的键值;
发送模块,用于将所述基于键值寻址方式的操作请求发送给路由库,以便所述路由库根据所述待操作数据对应的键值将所述基于键值寻址方式的操作请求发送给所述待操作数据的存储主节点和至少一个备份节点,由所述存储主节点和所述至少一个备份节点对所述待操作数据进行读取或写入操作。
10.根据权利要求9所述的装置,其特征在于,还包括:
初始化模块,用于初始化并启动块存储驱动;
保存模块,用于保存存储系统中至少一个存储节点的因特网协议地址和服务端口;以及当所述路由库位于所述块存储驱动中时,保存所述块存储驱动与所述存储系统中所有或部分存储节点的连接;
创建模块,用于在所述接收模块接收到创建卷的命令之后,根据所述命令在所述发起端设备的本地操作系统中创建卷逻辑设备,所述命令中包含待创建卷的卷名和所述待创建卷的卷大小。
11.一种存储系统,其特征在于,包括:块存储驱动、路由库、存储主节点和至少一个备份节点;
所述块存储驱动,用于接收针对卷的基于逻辑块寻址方式的操作请求,将所述基于逻辑块寻址方式的操作请求转换为基于键值寻址方式的操作请求,以及将所述基于键值寻址方式的操作请求发送给所述路由库,所述基于键值寻址方式的操作请求携带待操作数据对应的键值;
所述路由库,用于接收所述块存储驱动发送的所述基于键值寻址方式的操作请求,根据所述待操作数据对应的键值将所述基于键值寻址方式的操作请求发送给所述待操作数据的存储主节点和至少一个备份节点;
所述存储主节点,用于接收所述路由库发送的所述基于键值寻址方式的操作请求,对所述待操作数据进行读取或写入操作;
所述至少一个备份节点,用于接收所述路由库发送的所述基于键值寻址方式的操作请求,对所述待操作数据进行读取或写入操作。
12.根据权利要求11所述的系统,其特征在于,还包括:
所述块存储驱动所在的发起端设备,用于在所述块存储驱动接收针对卷的基于逻辑块寻址方式的操作请求之前,初始化并启动所述块存储驱动,保存存储系统中至少一个存储节点的因特网协议地址和服务端口;以及当所述路由库位于所述块存储驱动中时,保存所述块存储驱动与所述存储系统中所有或部分存储节点的连接;以及接收创建卷的命令、该命令中包含待创建卷的卷名和待创建卷的卷大小;
所述块存储驱动,还用于当所述路由库位于所述存储节点中时,建立所述块存储驱动与所述存储节点之间的连接;以及根据所述发起端设备接收的所述创建卷的命令在所述发起端设备的本地操作系统中创建卷逻辑设备。
13.根据权利要求12所述的系统,其特征在于,
所述路由库,还用于获取所述存储系统中每个存储节点的因特网协议地址、服务端口和所述每个存储节点负责的哈希区域,并建立所述路由库与所述存储系统中所有或部分存储节点的连接。
14.根据权利要求13所述的系统,其特征在于,
所述路由库,具体用于对所述待操作数据对应的键值进行哈希,确定负责哈希后的键值所属哈希区域的存储节点为所述待操作数据的存储主节点,将所述基于键值寻址方式的操作请求发送给所述待操作数据的存储主节点;以及根据预定的备份策略确定所述待操作数据的至少一个备份节点,将所述基于键值寻址方式的操作请求发送给所述至少一个备份节点。
15.根据权利要求13或14所述的系统,其特征在于,
所述存储主节点,具体用于当所述操作请求为写操作请求,所述待操作数据为待写入数据,所述写操作请求还携带所述待写入数据时,根据所述待写入数据的键值将所述待写入数据写入到本地,并记录写入数据的版本,写入操作完成之后,向所述路由库返回写操作响应;
所述至少一个备份节点,具体用于当所述操作请求为写操作请求,所述待操作数据为待写入数据,所述写操作请求还携带所述待写入数据时,根据所述待写入数据的键值将所述待写入数据写入到本地,并记录所述待写入数据的版本,写入操作完成之后,向所述路由库返回写操作响应。
16.根据权利要求15所述的系统,其特征在于,
所述路由库,还用于根据预设的写操作策略接收所述写操作响应,并计算写入操作成功的次数,根据所述写入操作成功的次数和所述预设的写操作策略向所述块存储驱动返回针对所述基于键值寻址方式的写操作请求的响应。
17.根据权利要求13或14所述的系统,其特征在于,
所述存储主节点,具体用于当所述操作请求为读操作请求,所述待操作数据为待读取数据时,根据所述待读取数据的键值读取本地存储的所述待读取数据和所述待读取数据的版本,向所述路由库返回读取的数据、读取的数据的版本和读操作响应;
所述至少一个备份节点,具体用于当所述操作请求为读操作请求,所述待操作数据为待读取数据时,根据所述待读取数据的键值读取本地存储的所述待读取数据和所述待读取数据的版本,向所述路由库返回读取的数据、读取的数据的版本和读操作响应。
18.根据权利要求17所述的系统,其特征在于,
所述路由库,还用于根据预设的读操作策略接收返回的数据,并计算读取操作成功的次数,根据所述读取操作成功的次数和所述预设的读操作策略识别并向所述块存储驱动返回所述读取的数据中最新版本的数据,以便所述块存储驱动对所述最新版本的数据进行处理后,返回基于逻辑块寻址方式的读操作请求对应的数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/075048 WO2011157144A2 (zh) | 2011-05-31 | 2011-05-31 | 数据读写方法、装置和存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102918509A CN102918509A (zh) | 2013-02-06 |
CN102918509B true CN102918509B (zh) | 2014-06-04 |
Family
ID=45348624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180000715.1A Active CN102918509B (zh) | 2011-05-31 | 2011-05-31 | 数据读写方法、装置和存储系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8938604B2 (zh) |
EP (1) | EP2698718A2 (zh) |
CN (1) | CN102918509B (zh) |
WO (1) | WO2011157144A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077374A (zh) * | 2014-06-24 | 2014-10-01 | 华为技术有限公司 | 一种实现ip盘文件存储的方法及装置 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104007938B (zh) * | 2014-05-29 | 2017-04-05 | 华为技术有限公司 | 在存储网络中的键值生成方法及装置 |
JP2016099969A (ja) * | 2014-11-26 | 2016-05-30 | 富士通株式会社 | 情報処理装置、データ保存システム、及びデータ保存方法 |
KR20160131359A (ko) * | 2015-05-07 | 2016-11-16 | 에스케이하이닉스 주식회사 | 메모리 모듈, 메모리 모듈의 모듈 콘트롤러 및 메모리 모듈의 동작 방법 |
CN107748702B (zh) * | 2015-06-04 | 2021-05-04 | 华为技术有限公司 | 一种数据恢复方法和装置 |
US9927984B2 (en) * | 2015-10-14 | 2018-03-27 | Samsung Electronics Co., Ltd. | Electronic system with interface control mechanism and method of operation thereof |
CN105516254B (zh) * | 2015-11-26 | 2019-03-12 | 南京佰联信息技术有限公司 | 无人驾驶装置的数据读写方法及装置 |
US10534547B2 (en) * | 2015-12-29 | 2020-01-14 | EMC IP Holding Company LLC | Consistent transition from asynchronous to synchronous replication in hash-based storage systems |
JP6734058B2 (ja) * | 2016-01-27 | 2020-08-05 | 株式会社バイオス | 制御装置 |
JP6542152B2 (ja) * | 2016-03-29 | 2019-07-10 | 東芝メモリ株式会社 | オブジェクトストレージ、コントローラおよびプログラム |
US11120002B2 (en) * | 2016-07-20 | 2021-09-14 | Verizon Media Inc. | Method and system for concurrent database operation |
US10445199B2 (en) * | 2016-12-22 | 2019-10-15 | Western Digital Technologies, Inc. | Bad page management in storage devices |
CN110049091A (zh) * | 2019-01-10 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 数据存储方法及装置、电子设备、存储介质 |
CN110286849B (zh) * | 2019-05-10 | 2023-07-21 | 深圳物缘科技有限公司 | 数据存储系统的数据处理方法和装置 |
CN110336857B (zh) * | 2019-06-03 | 2022-04-12 | 平安科技(深圳)有限公司 | 网络块设备的创建方法、装置、设备和存储介质 |
US11321244B2 (en) * | 2019-12-16 | 2022-05-03 | Samsung Electronics Co., Ltd. | Block interface emulation for key value device |
CN113037772B (zh) * | 2021-03-30 | 2023-05-02 | 苏州科达科技股份有限公司 | 数据处理方法、系统、设备及存储介质 |
CN113806125B (zh) * | 2021-09-07 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种卸载卷异常的处理方法、装置、设备及可读介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7443841B2 (en) * | 2002-10-30 | 2008-10-28 | Nortel Networks Limited | Longest prefix matching (LPM) using a fixed comparison hash table |
CN102023809A (zh) * | 2009-09-21 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 存储系统、从存储系统读取数据的方法及写入数据的方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470438B1 (en) * | 2000-02-22 | 2002-10-22 | Hewlett-Packard Company | Methods and apparatus for reducing false hits in a non-tagged, n-way cache |
JP2005140823A (ja) * | 2003-11-04 | 2005-06-02 | Sony Corp | 情報処理装置、制御方法、プログラム、並びに記録媒体 |
FR2878673B1 (fr) * | 2004-11-26 | 2007-02-09 | Univ Picardie Jules Verne Etab | Systeme et procede de sauvegarde distribuee perenne |
JP2007156597A (ja) * | 2005-12-01 | 2007-06-21 | Hitachi Ltd | ストレージ装置 |
JP2007219611A (ja) * | 2006-02-14 | 2007-08-30 | Hitachi Ltd | バックアップ装置及びバックアップ方法 |
US8161353B2 (en) | 2007-12-06 | 2012-04-17 | Fusion-Io, Inc. | Apparatus, system, and method for validating that a correct data segment is read from a data storage device |
US8352692B1 (en) * | 2007-03-30 | 2013-01-08 | Symantec Corporation | Utilizing peer-to-peer services with single instance storage techniques |
US8775817B2 (en) * | 2008-05-12 | 2014-07-08 | Microsoft Corporation | Application-configurable distributed hash table framework |
US8335889B2 (en) | 2008-09-11 | 2012-12-18 | Nec Laboratories America, Inc. | Content addressable storage systems and methods employing searchable blocks |
CN101783761A (zh) * | 2009-01-21 | 2010-07-21 | 华为技术有限公司 | 一种存储及查找路由表的方法及装置 |
US8996803B2 (en) * | 2010-07-02 | 2015-03-31 | Futurewei Technologies, Inc. | Method and apparatus for providing highly-scalable network storage for well-gridded objects |
WO2012042792A1 (en) * | 2010-09-30 | 2012-04-05 | Nec Corporation | Storage system |
GB2486462B (en) * | 2010-12-16 | 2019-04-24 | Maidsafe Found | Distributed file system |
-
2011
- 2011-05-31 CN CN201180000715.1A patent/CN102918509B/zh active Active
- 2011-05-31 EP EP11795110.3A patent/EP2698718A2/en not_active Withdrawn
- 2011-05-31 WO PCT/CN2011/075048 patent/WO2011157144A2/zh active Application Filing
-
2012
- 2012-12-05 US US13/706,068 patent/US8938604B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7443841B2 (en) * | 2002-10-30 | 2008-10-28 | Nortel Networks Limited | Longest prefix matching (LPM) using a fixed comparison hash table |
CN102023809A (zh) * | 2009-09-21 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 存储系统、从存储系统读取数据的方法及写入数据的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077374A (zh) * | 2014-06-24 | 2014-10-01 | 华为技术有限公司 | 一种实现ip盘文件存储的方法及装置 |
CN104077374B (zh) * | 2014-06-24 | 2018-09-11 | 华为技术有限公司 | 一种实现ip盘文件存储的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2011157144A3 (zh) | 2012-04-19 |
US20130111187A1 (en) | 2013-05-02 |
US8938604B2 (en) | 2015-01-20 |
EP2698718A4 (en) | 2014-02-19 |
CN102918509A (zh) | 2013-02-06 |
WO2011157144A2 (zh) | 2011-12-22 |
EP2698718A2 (en) | 2014-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102918509B (zh) | 数据读写方法、装置和存储系统 | |
US10990479B2 (en) | Efficient packing of compressed data in storage system implementing data striping | |
KR101055918B1 (ko) | 패일오버에 따른 캐시 데이터의 보존 | |
CN100378679C (zh) | 用于存储器访问请求的重定向的方法和系统 | |
CN108170768A (zh) | 数据库同步方法、装置及可读介质 | |
US20090089534A1 (en) | Thin Provisioning Migration and Scrubbing | |
US20020069317A1 (en) | E-RAID system and method of operating the same | |
US9361171B2 (en) | Systems and methods for storage of data in a virtual storage device | |
US20210133026A1 (en) | Erasure Coded Data Shards Containing Multiple Data Objects | |
US11860791B2 (en) | Methods for managing input-output operations in zone translation layer architecture and devices thereof | |
US8732381B2 (en) | SAS expander for communication between drivers | |
US8307026B2 (en) | On-demand peer-to-peer storage virtualization infrastructure | |
JP2003162377A (ja) | ディスクアレイシステム及びコントローラ間での論理ユニットの引き継ぎ方法 | |
US20080052478A1 (en) | Relocating a logical volume from a first storage location to a second storage location using a copy relationship | |
CN101147118A (zh) | 用于重新配置存储系统的方法和装置 | |
CN104765574A (zh) | 数据云端存储方法 | |
US20150254007A1 (en) | Systems and Methods for Creating an Image of a Virtual Storage Device | |
CN103608784A (zh) | 网络卷创建方法、数据存储方法、存储设备和存储系统 | |
CN111949210A (zh) | 分布式存储系统中元数据存储方法、系统及存储介质 | |
US7499980B2 (en) | System and method for an on-demand peer-to-peer storage virtualization infrastructure | |
US7725654B2 (en) | Affecting a caching algorithm used by a cache of storage system | |
US20120303893A1 (en) | Writing of data of a first block size in a raid array that stores and mirrors data in a second block size | |
US7484038B1 (en) | Method and apparatus to manage storage devices | |
US20180307427A1 (en) | Storage control apparatus and storage control method | |
CN110781164B (zh) | 一种数据库一体机的设计方法、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |