CN110688057B - 一种分布式存储方法及装置 - Google Patents
一种分布式存储方法及装置 Download PDFInfo
- Publication number
- CN110688057B CN110688057B CN201810732304.5A CN201810732304A CN110688057B CN 110688057 B CN110688057 B CN 110688057B CN 201810732304 A CN201810732304 A CN 201810732304A CN 110688057 B CN110688057 B CN 110688057B
- Authority
- CN
- China
- Prior art keywords
- shared disk
- client
- server
- distributed storage
- controller
- 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
- 238000000034 method Methods 0.000 title claims abstract description 46
- 239000000523 sample Substances 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种分布式存储方法及装置,包括:当打开共享磁盘时,控制器记录包括打开版本信息的会话控制信息;控制器将生成的打开版本信息及共享磁盘所在服务器信息返回给客户端;控制器按照预先设置的同步策略,将记录的会话控制信息发送给共享磁盘所在的服务器,以使服务器根据会话控制信息中的打开版本信息实现不同客户端对共享磁盘的同时操作。本申请实现了可靠支持多客户端并发访问。
Description
技术领域
本申请涉及但不限于分布式存储技术,尤指一种分布式存储方法及装置。
背景技术
云计算环境下,用户购买的虚拟机(本文中也称为客户端)中可以挂载磁盘,而这个磁盘对应着后端分布式存储系统中的一个逻辑盘,虚拟机内的输入/输出(I/O)请求最终都下发到后端分布式存储系统的逻辑盘中。
在云环境下,块存储是经常被使用的一种技术,简单理解就是,在云环境下,认为虚拟机对象是不稳定的,也就是用户的数据不能存储在虚拟机中,而是存储在一种外置的设备中,这种方式就是块存储。这样,如果虚拟机崩溃了,块存储对象会从该虚拟机卸载,然后通过云平台快速启动新的虚拟机,并将块存储对象直接加载在新的虚拟机上,以达到数据持久化的目的。
共享块存储是一种支持多客户端并发读写访问的数据块级存储设备,具备多并发、高性能、高可靠等特性。为了实现用户多个虚拟机内可以挂载同一块磁盘,需要后端的分布式存储系统支持共享磁盘模式。共享磁盘是指多个客户端能够同时对同一块磁盘进行并发的读写操作。
相关技术中还没有提出分布式存储系统支持共享磁盘模式的分布式共享存储的实现方式。
发明内容
为了解决上述技术问题,本发明提供一种分布式存储方法及装置,能够可靠支持多客户端并发访问。
为了达到本发明目的,本发明提供了一种分布式存储方法,包括:
当打开共享磁盘时,控制器记录包括打开版本信息的会话控制信息;
控制器将生成的打开版本信息及共享磁盘所在服务器信息返回给客户端;控制器按照预先设置的同步策略,将记录的会话控制信息发送给共享磁盘所在的服务器,以使服务器根据会话控制信息中的打开版本信息实现不同客户端对共享磁盘的同时操作。
可选地,还包括:
所述控制器接收到来自客户端的用于创建共享磁盘的创建请求,创建磁盘并将创建的磁盘标记为共享磁盘;
所述控制器按照预先设置的配置信息,将该共享磁盘切分成N个段,并分配到M个服务器中加载;其中,N、M为大于或等于1的整数,且N大于或等于M。
可选地,所述会话控制信息还包括:打开所述共享磁盘的客户端的唯一标识、打开所述共享磁盘的客户端的IP地址。
可选地,所述打开版本信息为打开版本号;
所述控制器每执行一次对所述共享磁盘的打开操作,所述生成的打开版本号递增预设步长。
可选地,所述同步策略包括:所述控制器检测到所述共享磁盘的会话控制信息发生变化。
本申请还提供了一种分布式存储方法,包括:
客户端向控制器请求打开共享磁盘;
客户端接收控制器返回的打开版本信息及共享磁盘所在服务器信息;
客户端利用得到的打开版本信息,根据共享磁盘所在服务器信息向需要操作的共享磁盘的段所在的服务器请求输入/输出操作。
可选地,还包括:
所述客户端向控制器发送用于创建共享磁盘的创建请求,以使所述控制器将创建的磁盘标记为共享磁盘。
可选地,所述客户端向控制器请求打开共享磁盘包括:
所述客户端向控制器发送创建请求,在创建请求中携带有:所述客户端的唯一标识、所述客户端的IP地址、所述共享磁盘的标识。
可选地,所述打开版本信息为打开版本号;
所述控制器每执行一次对所述共享磁盘的打开操作,所述生成的打开版本号递增预设步长。
可选地,所述服务器信息包括:所述共享磁盘划分后的段所分配到的各服务器的IP地址。
本申请又提供了一种分布式存储方法,包括:
服务器接收包括打开版本信息的会话控制信息并保存;
服务器接收到来自客户端的输入/输出操作请求,确定出存储有输入/输出操作请求中携带的打开版本信息,允许客户端对共享磁盘的输入/输出操作。
可选地,如果所述服务器确定出自身未存储所述I/O操作请求中携带的打开版本信息,还包括:
不允许所述客户端的输入/输出操作。
可选地,所述会话控制信息还包括:打开所述共享磁盘的客户端的唯一标识、打开所述共享磁盘的客户端的IP地址。
可选地,,所述输入/输出操作为读请求;所述执行读操作之前,还包括:
所述服务器上需要操作的段计算当前时间和租约开始时间的差值,判断计算得到的差值是否超过预先设置的租约时长T,如果差值超过租约时长T,该段发送写操作,以判断该段是否被迁移,在未迁移时所述读操作返回结果给客户端;
如果差值未超过租约时长T,客户端继续执行读操作。
可选地,所述判断所述共享磁盘中需要操作的段是否被迁移包括:
如果所述写请求返回成功,则所述读操作返回结果给客户端;所述服务器上的段更新所述租约开始时间为当前写开始的时间;
如果所述写请求失败,则所述服务器返回读请求失败。
可选地,所述写操作为:写入一个小块试探数据,且不更新数据索引。
本申请还提供了一种分布式存储装置,设置在控制器中,包括:记录模块、第一处理模块;其中,
记录模块,用于当打开共享磁盘时,记录包括生成的打开版本信息的会话控制信息;
第一处理模块,用于将生成的打开版本信息及共享磁盘所在服务器信息返回给客户端;按照预先设置的同步策略,将记录的会话控制信息发送给共享磁盘所在的服务器,以使服务器根据会话控制信息中的打开版本信息实现不同客户端对共享磁盘的同时操作。
可选地,所述装置还包括:
第一接收模块,用于接收到来自所述客户端的用于创建共享磁盘的创建请求;
创建模块:创建磁盘并将创建的磁盘标记为共享磁盘;按照预先设置的配置信息,将该共享磁盘切分成N个段,并分配到M个服务器中加载;其中,N、M为大于或等于1的整数,且N大于或等于M。
本申请又提供了一种分布式存储装置,设置在客户端中,包括:第二接收模块、第二处理模块;其中,
第二接收模块,用于向控制器请求打开共享磁盘,接收控制器返回的打开版本信息及共享磁盘所在服务器信息。
第二处理模块,用于利用得到的打开版本信息,根据共享磁盘所在服务器信息向需要操作的共享磁盘的段所在的服务器请求输入/输出操作。
可选地,所述第二处理模块还用于:向所述控制器发送用于创建共享磁盘的创建请求,以使所述控制器将创建的磁盘标记为共享磁盘。
本申请再提供了一种分布式存储装置,设置在服务器中,包括:第三接收模块、第三处理模块;其中,
第三接收模块,用于接收来自控制器的包括打开版本信息的会话控制信息并保存;
第三处理模块,用于接收到来自客户端的输入/输出操作请求,确定出存储有I/O操作请求中携带的打开版本信息,允许客户端对共享磁盘的输入/输出操作。
可选地,所述第三处理模块还用于:
确定出自身未存储所述输入/输出操作请求中携带的打开版本信息,则不允许所述客户端的输入/输出操作。
可选地,所述客户端发起的输入/输出请求为读操作时,执行所述读操作之前,所述第三处理模块还用于:
计算当前时间和租约开始时间之差,判断计算得到的差值是否超过预先设置的租约时长T,如果差值超过租约时长T,需要操作的段发送写操作,来判断该段是否被迁移,在未迁移时所述读操作返回结果给客户端;
如果差值未超过租约时长T,继续执行读操作。
可选地,所述判断所述共享磁盘中需要操作的段是否被迁移包括:
如果所述写请求返回成功,则所述读操作返回结果给客户端;并且,所述第三处理模块更新租约开始时间为当前写开始的时间;
如果所述写请求失败,则向所述客户端返回读请求失败。
本申请技术方案包括:当打开共享磁盘时,控制器记录包括打开版本信息的会话控制信息;控制器将生成的打开版本信息及共享磁盘所在服务器信息返回给客户端;控制器按照预先设置的同步策略,将记录的会话控制信息发送给共享磁盘所在的服务器,以使服务器根据会话控制信息中的打开版本信息实现不同客户端对共享磁盘的同时操作。本申请实现了可靠支持多客户端并发访问。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本申请分布式存储方法的第一实施例的流程示意图;
图2为本申请创建共享磁盘的实施例的示意图;
图3为本申请分布式存储方法的第二实施例的流程示意图;
图4为本申请分布式存储的方法的第三实施例的流程示意图;
图5为多客户端数据不一致问题场景示意图;
图6为本申请分布式存储装置的第一实施例的组成结构示意图;
图7为本申请分布式存储装置的第二实施例的组成结构示意图;
图8为本申请分布式存储装置的第三实施例的组成结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在本申请一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1为本申请分布式存储方法的第一实施例的流程示意图,如图1所示,包括:
步骤100:当打开共享磁盘时,控制器记录包括打开版本信息的会话控制信息。
会话控制(Session)信息还包括:打开共享磁盘的客户端(Client)的唯一标识、打开共享磁盘的客户端的IP地址。
可选地,打开版本信息可以是打开版本号。控制器(Master)每执行一次对共享磁盘的打开操作,生成的打开版本号递增预设步长,比如:1。
本步骤之前还包括:
接收到来自客户端的用于创建共享磁盘的创建请求,控制器会创建磁盘并将创建的磁盘标记为共享磁盘,比如设置一标签,表示创建的磁盘为共享磁盘;然后,控制器按照预先设置的配置信息,将该共享磁盘切分成N个段(Segment),并分配到M个服务器(Server)中加载;其中,N、M为大于或等于1的整数,且N大于或等于M。
这里预先设置的配置信息包括但不限于:M的值、N的值、各服务器中分配多少个段等。比如:假设N=10、M=2、有两个服务器(Server)即Server1和Server2,Server1中分配6个段,Server2中分配4个段。这样,对于一1000G的共享磁盘,可以分成10段,其中6个段分配给Server1,4个段分配给Server2。需要说明的是,本领域技术人员对如何将磁盘分段并分配到服务器中是容易理解的,而且本领域技术人员直知道,预先设置的配置信息控制器和客户端是知晓的。这里强调的是,当控制器接收到的创建请求是针对共享磁盘的,那么,会将创建的磁盘标识为共享磁盘。
举个例子来看,图2为本申请创建共享磁盘的实施例的示意图,如图2所示,客户端1(Client1)发起创建共享磁盘的创建请求到Master,Master标记该磁盘为共享磁盘,然后按照预先设置的配置信息,将该共享磁盘切分成N个Segment后分配到M(图2中为两个)个Server中去加载。
步骤101:控制器将生成的打开版本信息及共享磁盘所在服务器信息返回给客户端;控制器按照预先设置同步策略,将记录的所有会话控制信息发送给共享磁盘所在的服务器,以使服务器根据会话控制信息中的打开版本信息实现不同客户端对共享磁盘的同时操作。
可选地,同步策略可以包括:控制器检测到共享磁盘的会话控制信息发生变化。比如:当控制器在接收到该共享磁盘的打开/关闭操作,会话控制信息会发生变化,这种变化就会触发控制器的同步操作。
本申请中,通过在控制器中记录所有客户端打开操作的包括打开版本信息的会话控制信息,并将记录的包括打开版本信息的会话控制信息更新到服务器中,这样服务器就知道了合法的客户端信息,保证了只有在控制器中打开过的客户端操作服务器上的盘才是合法的,从而实现了多个客户端同时操作同一共享磁盘,而且还避免了非法的I/O操作请求。
本申请还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述图1所示的任一项所述的分布式存储方法。
本申请还提供一种用于实现分布式共享存储的装置,包括存储器和处理器,其中,存储器中存储有上述图1所示的任一项所述的可被处理器执行的指令。
图3为本申请分布式存储方法的第二实施例的流程示意图,如图3所示,包括:
步骤300:客户端向控制器请求打开共享磁盘。
可选地,客户端向控制器请求打开共享磁盘包括:
客户端向控制器发送创建请求,在创建请求中携带有:客户端的唯一标识、客户端的IP地址、共享磁盘的标识。
本步骤之前还包括:
客户端向控制器发送用于创建共享磁盘的创建请求,以使控制器将创建的磁盘标记为共享磁盘。
步骤301:客户端接收控制器返回的打开版本信息及共享磁盘所在服务器信息。
可选地,打开版本信息可以是打开版本号。控制器每执行一次对共享磁盘的打开操作,生成的打开版本号递增预设步长,比如:1。
可选地,服务器信息包括共享磁盘划分后的段所分配到的各服务器的IP地址。
步骤302:客户端利用得到的打开版本信息,根据共享磁盘所在服务器信息向需要操作的共享磁盘的段所在的服务器请求I/O操作。
需要说明的是,对于客户端来讲,由于已获知创建共享磁盘的配置信息,因此,客户端是知道共享磁盘的各个段与服务器的对应关系的。
本步骤强调的,客户端会在向服务器发起I/O操作时,将对共享磁盘进行打开操作时获得的打开版本信息同时发送给服务器,以使服务器根据打开版本信息实现不同客户端对共享磁盘的同时操作。
本申请中,通过在控制器中记录所有客户端打开操作的包括打开版本信息的会话控制信息,并将记录的包括打开版本信息的会话控制信息更新到服务器中,而客户端的I/O操作请求会基于该打开版本信息进行,服务器根据该版本信息能够校验客户端的合法性,从而实现了多个客户端同时操作同一共享磁盘,而且还避免了非法的I/O操作请求。
本申请还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述图3所示的任一项所述的分布式存储方法。
本申请还提供一种用于实现分布式共享存储的装置,包括存储器和处理器,其中,存储器中存储有上述图3所示的任一项所述的可被处理器执行的指令。
图4为本申请分布式存储方法的第三实施例的流程示意图,如图4所示,包括:
步骤400:服务器接收包括打开版本信息的会话控制信息并保存。
会话控制信息还包括:打开共享磁盘的客户端的唯一标识、打开共享磁盘的客户端的IP地址。
步骤401:服务器接收到来自客户端的I/O操作请求,确定出存储有I/O操作请求中携带的打开版本信息,允许客户端的I/O操作。
可选地,如果服务器确定出自身未存储I/O操作请求中携带的打开版本信息,则认为该I/O操作请求是非法的,可以返回错误,不允许客户端的I/O操作。
本申请中,通过在控制器中记录所有客户端打开操作的包括打开版本信息的会话控制信息,并将记录的包括打开版本信息的会话控制信息更新到服务器中,这样服务器就知道了合法的客户端信息,保证了只有在控制器中打开过的客户端操作服务器上的盘才是合法的,从而实现了多个客户端同时操作同一共享磁盘,而且还避免了非法的I/O操作请求。
采用本申请提供的实现分布式共享存储的方法,在虚拟机支持共享磁盘后,一些高可用的架构可以基于这种共享模式的磁盘实现了具备多并发、高性能、高可靠等特性,比如:政府、企业和金融行业客户常用的Oracle RAC数据库高可用架构的实现。
当出现网络错误时,会导致不同客户端读取同一磁盘而得到不同的数据的问题即多客户端数据不一致问题,如图5所示,基于本申请提供的共享存储实现方式,假设两个客户端如图5中所示,Client1和Client2同时在Server1上打开一个segment。如果网络出错,导致Client2断开一下,需要重新进行网络分区,此时,会将Client1和Server1分在同一区,假设Master调度将该Segment从Server1上调度到Server2上加载。Client2重新连上后,会重新向控制器发起打开请求,从而重新获得打开版本信息及共享磁盘所在服务器信息,也就是说,Client2此时获得了网络分区后的服务器信息,从而感知到上述Segment迁移到了Server2。
这种情况下,由于Client1没有重新发起打开请求,因此Client1的读写操作会针对Server1进行,而Client2的读写自然会针对Server2进行。由于Server端都在内存缓存了数据的索引,假设原来数据块A数据为a,Client2能够正常对迁移到Server2的数据块进行读写操作,以Client2向数据块A写入数据b,并更新了索引为例,由于Client1此时在Server1中仍然根据内存中老的索引读到的还是老的数据a。可见,两个Client对同一数据块进行读操作,但是获得了不同的数据,导致了不同客户端读取同一磁盘而得到不同的数据的问题。
可选地,为了确保不同客户端读取同一磁盘得到数据的一致性,在客户端发起读操作时,执行读操作之前,本申请图4所示的方法还包括:
服务器上需要操作的段(Segment)计算当前时间和租约开始时间的差值,判断计算得到的差值是否超过预先设置的租约时长T,如果差值超过租约时长T,读操作的下发会伴随着该Segment的一个假的写操作即该段发送一个假的写操作,来判断共享磁盘中需要操作的Segment是否被迁移,在未迁移时读操作才能返回结果给客户端;
如果差值未超过租约时长T,客户端继续执行读操作。
可选地,租约开始时间是Segment每次写成功操作(包括正常的写操作和租约触发的假的写操作)的写下发时间。
可选地,判断所述共享磁盘中需要操作的段是否被迁移包括:
如果该假的写请求返回成功,则表明需要操作的Segment未迁移,读操作返回结果给客户端;并且,该段更新租约开始时间为当前写开始的时间;
如果假的写请求失败,则表明需要操作的Segment已经被抢占,结束读操作,服务器返回读请求失败。
可选地,假的写操作可以是写入一个小块试探数据,且不用更新数据索引。
需要说明的时,除了假的写操作,客户端发送的正常的写操作也可以达到续约的目的。在正常的写操作成功之后,同样会更新租约开始时间。这样的好处就是,如果用户读写请求都有,就不需要利用额外的假的写操作来完成续约了。
本申请发明人发现,在Segment被迁移后,读请求读老的文件是允许的,但是对老的文件执行写请求时,之前写的文件已经被置为了不可写。本申请发明人巧妙利用这点,通过一个假的写请求来判断需要操作的Segment是否已经被迁移。同时,这个假的写请求是在发起读请求的当前时间和租约开始时间的差值超过预先设置的租约时长T时采执行的,这样也确保了避免不同客户端读取同一磁盘而得到不同的数据的问题的方案的有效性。
需要说明的是,在租约过期后,读操作和假的写操作是同时下发的即是并行的,但是,读操作返回给客户端的结果是需要等待假的写操作的结果返回之后才能返回的。
当迁移后的Segment在新的设备上加载时,在把老的文件置位为不可写之后,需要等待租约时长T之后才能提供服务。这样,这租约时长T的时间的等待,保证了不会读到老的数据,从而让假的写操作在租约时长T内最多只需要执行1次。
本申请还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述图4所示的任一项所述的分布式存储方法。
本申请还提供一种用于实现分布式共享存储的装置,包括存储器和处理器,其中,存储器中存储有上述图4所示的任一项所述的可被处理器执行的指令。
图6为本申请实现分布式共享存储的装置的第一实施例的组成结构示意图,如图6所示,可以设置在控制器中,包括:记录模块、第一处理模块;其中,
记录模块,用于当打开共享磁盘时,记录包括生成的打开版本信息的会话控制信息;
第一处理模块,用于将生成的打开版本信息及共享磁盘所在服务器信息返回给客户端;按照预先设置的同步策略,将记录的会话控制信息发送给共享磁盘所在的服务器,以使服务器根据会话控制信息中的打开版本信息实现不同客户端对共享磁盘的同时操作。
可选地,图6所示的装置还包括:
第一接收模块,用于接收到来自客户端的用于创建共享磁盘的创建请求;
创建模块:创建磁盘并将创建的磁盘标记为共享磁盘;按照预先设置的配置信息,将该共享磁盘切分成N个段,并分配到M个服务器中加载;其中,N、M为大于或等于1的整数,且N大于或等于M。
图7为本申请实现分布式共享存储的装置的第二实施例的组成结构示意图,如图7所示,可以设置在客户端中,包括:第二接收模块、第二处理模块;其中,
第二接收模块,用于向控制器请求打开共享磁盘,接收控制器返回的打开版本信息及共享磁盘所在服务器信息。
第二处理模块,用于利用得到的打开版本信息,根据共享磁盘所在服务器信息向需要操作的共享磁盘的段所在的服务器请求I/O操作。
可选地,第二处理模块还用于:向控制器发送用于创建共享磁盘的创建请求,以使控制器将创建的磁盘标记为共享磁盘。
图8为本申请实现分布式共享存储的装置的第三实施例的组成结构示意图,如图8所示,可以设置在服务器中,包括:第三接收模块、第三处理模块;其中,
第三接收模块,用于接收来自控制器的包括打开版本信息的会话控制信息并保存;
第三处理模块,用于接收到来自客户端的I/O操作请求,确定出存储有I/O操作请求中携带的打开版本信息,允许客户端的I/O操作。
可选地,第三处理模块还用于:确定出自身未存储I/O操作请求中携带的打开版本信息,则认为该I/O操作请求是非法的,可以返回错误,不允许客户端的I/O操作。
可选地,为了确保不同客户端读取同一磁盘得到数据的一致性,在客户端发起读操作时,服务器执行读操作之前,第三处理模块还用于:
计算当前时间和租约开始时间之差,判断计算得到的差值是否超过预先设置的租约时长T,如果差值超过租约时长T,需要操作的段发送一个假的写操作,来判断该Segment是否被迁移,在未迁移时所述读操作才能返回结果给客户端;
如果差值未超过租约时长T,继续执行读操作。
可选地,判断所述共享磁盘中需要操作的段是否被迁移包括:
如果该假的写请求返回成功,则表明需要操作的Segment未迁移,读操作返回结果给客户端;并且,该段更新租约开始时间为当前写开始的时间;
如果假的写请求失败,则表明需要操作的Segment已经被抢占,结束读操作,向客户端返回读请求失败。
虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的实施方式,并非用以限定本申请。任何本申请所属领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (22)
1.一种分布式存储方法,应用于支持创建共享磁盘的分布式存储系统,包括:
当打开共享磁盘时,控制器记录包括打开版本信息的会话控制信息;
控制器将生成的打开版本信息及共享磁盘所在服务器信息返回给客户端;控制器按照预先设置的同步策略,将记录的会话控制信息发送给共享磁盘所在的服务器,以使服务器根据会话控制信息中的打开版本信息实现不同客户端对共享磁盘的同时操作;
其中,所述打开版本信息为打开版本号,所述打开版本号用于服务器确认客户端的请求是否合法;所述控制器每执行一次对所述共享磁盘的打开操作,所述生成的打开版本号递增预设步长。
2.根据权利要求1所述的分布式存储方法,还包括:
所述控制器接收到来自客户端的用于创建共享磁盘的创建请求,创建磁盘并将创建的磁盘标记为共享磁盘;
所述控制器按照预先设置的配置信息,将该共享磁盘切分成N个段,并分配到M个服务器中加载;其中,N、M为大于或等于1的整数,且N大于或等于M。
3.根据权利要求1或2所述的分布式存储方法,其中,所述会话控制信息还包括:打开所述共享磁盘的客户端的唯一标识、打开所述共享磁盘的客户端的IP地址。
4.根据权利要求1或2所述的分布式存储方法,其中,所述同步策略包括:所述控制器检测到所述共享磁盘的会话控制信息发生变化。
5.一种分布式存储方法,应用于支持创建共享磁盘的分布式存储系统,包括:
客户端向控制器请求打开共享磁盘;
客户端接收控制器返回的打开版本信息及共享磁盘所在服务器信息;
客户端利用得到的打开版本信息,根据共享磁盘所在服务器信息向需要操作的共享磁盘的段所在的服务器请求输入/输出操作;
其中,所述打开版本信息为打开版本号,所述打开版本号用于服务器确认客户端的请求是否合法;所述控制器每执行一次对所述共享磁盘的打开操作,所述打开版本号递增预设步长。
6.根据权利要求5所述的分布式存储方法,所述方法之前还包括:
所述客户端向控制器发送用于创建共享磁盘的创建请求,以使所述控制器将创建的磁盘标记为共享磁盘。
7.根据权利要求5或6所述的分布式存储方法,其中,所述客户端向控制器请求打开共享磁盘包括:
所述客户端向控制器发送创建请求,在创建请求中携带有:所述客户端的唯一标识、所述客户端的IP地址、所述共享磁盘的标识。
8.根据权利要求5或6所述的分布式存储方法,其中,所述服务器信息包括:所述共享磁盘划分后的段所分配到的各服务器的IP地址。
9.一种分布式存储方法,应用于支持创建共享磁盘的分布式存储系统,包括:
服务器接收包括打开版本信息的会话控制信息并保存;
服务器接收到来自客户端的输入/输出操作请求,确定出存储有输入/输出操作请求中携带的打开版本信息,允许客户端对共享磁盘的输入/输出操作;
其中,所述打开版本信息为打开版本号,所述打开版本号用于服务器确认客户端的请求是否合法;控制器每执行一次对所述共享磁盘的打开操作,所述打开版本号递增预设步长。
10.根据权利要求9所述的分布式存储方法,如果所述服务器确定出自身未存储所述输入/输出操作请求中携带的打开版本信息,还包括:
不允许所述客户端的输入/输出操作。
11.根据权利要求9或10所述的分布式存储方法,所述会话控制信息还包括:打开所述共享磁盘的客户端的唯一标识、打开所述共享磁盘的客户端的IP地址。
12.根据权利要求9或10所述的分布式存储方法,其中,所述输入/输出操作为读请求;执行读操作之前,还包括:
所述服务器上需要操作的段计算当前时间和租约开始时间的差值,判断计算得到的差值是否超过预先设置的租约时长T,如果差值超过租约时长T,该段发送写操作,以判断该段是否被迁移,在未迁移时所述读操作返回结果给客户端;
如果差值未超过租约时长T,客户端继续执行读操作。
13.根据权利要求12所述的分布式存储方法,其中,所述判断所述共享磁盘中需要操作的段是否被迁移包括:
如果写请求返回成功,则所述读操作返回结果给客户端;所述服务器上的段更新所述租约开始时间为当前写开始的时间;
如果所述写请求失败,则所述服务器返回读请求失败。
14.根据权利要求12所述的分布式存储方法,其中,所述写操作为:写入一个小块试探数据,且不更新数据索引。
15.一种分布式存储装置,设置在控制器中,应用于支持创建共享磁盘的分布式存储系统,包括:记录模块、第一处理模块;其中,
记录模块,用于当打开共享磁盘时,记录包括生成的打开版本信息的会话控制信息;
第一处理模块,用于将生成的打开版本信息及共享磁盘所在服务器信息返回给客户端;按照预先设置的同步策略,将记录的会话控制信息发送给共享磁盘所在的服务器,以使服务器根据会话控制信息中的打开版本信息实现不同客户端对共享磁盘的同时操作;
其中,所述打开版本信息为打开版本号,所述打开版本号用于服务器确认客户端的请求是否合法;所述控制器每执行一次对所述共享磁盘的打开操作,所述打开版本号递增预设步长。
16.根据权利要求15所述的分布式存储装置,所述装置还包括:
第一接收模块,用于接收到来自所述客户端的用于创建共享磁盘的创建请求;
创建模块:创建磁盘并将创建的磁盘标记为共享磁盘;按照预先设置的配置信息,将该共享磁盘切分成N个段,并分配到M个服务器中加载;其中,N、M为大于或等于1的整数,且N大于或等于M。
17.一种分布式存储装置,设置在客户端中,应用于支持创建共享磁盘的分布式存储系统,包括:第二接收模块、第二处理模块;其中,
第二接收模块,用于向控制器请求打开共享磁盘,接收控制器返回的打开版本信息及共享磁盘所在服务器信息;
第二处理模块,用于利用得到的打开版本信息,根据共享磁盘所在服务器信息向需要操作的共享磁盘的段所在的服务器请求输入/输出操作;
其中,所述打开版本信息为打开版本号,所述打开版本号用于服务器确认客户端的请求是否合法;所述控制器每执行一次对所述共享磁盘的打开操作,所述打开版本号递增预设步长。
18.根据权利要求17所述的分布式存储装置,所述第二处理模块还用于:向所述控制器发送用于创建共享磁盘的创建请求,以使所述控制器将创建的磁盘标记为共享磁盘。
19.一种分布式存储装置,设置在服务器中,应用于支持创建共享磁盘的分布式存储系统,包括:第三接收模块、第三处理模块;其中,
第三接收模块,用于接收来自控制器的包括打开版本信息的会话控制信息并保存;
第三处理模块,用于接收到来自客户端的输入/输出操作请求,确定出存储有I/O操作请求中携带的打开版本信息,允许客户端对共享磁盘的输入/输出操作;
其中,所述打开版本信息为打开版本号,所述打开版本号用于服务器确认客户端的请求是否合法;所述控制器每执行一次对所述共享磁盘的打开操作,所述打开版本号递增预设步长。
20.根据权利要求19所述的分布式存储装置,所述第三处理模块还用于:
确定出自身未存储所述输入/输出操作请求中携带的打开版本信息,则不允许所述客户端的输入/输出操作。
21.根据权利要求19或20所述的分布式存储装置,所述客户端发起的输入/输出请求为读操作时,执行所述读操作之前,所述第三处理模块还用于:
计算当前时间和租约开始时间之差,判断计算得到的差值是否超过预先设置的租约时长T,如果差值超过租约时长T,需要操作的段发送写操作,来判断该段是否被迁移,在未迁移时所述读操作返回结果给客户端;
如果差值未超过租约时长T,继续执行读操作。
22.根据权利要求21所述的分布式存储装置,其中,所述判断所述共享磁盘中需要操作的段是否被迁移包括:
如果写请求返回成功,则所述读操作返回结果给客户端;并且,所述第三处理模块更新租约开始时间为当前写开始的时间;
如果所述写请求失败,则向所述客户端返回读请求失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810732304.5A CN110688057B (zh) | 2018-07-05 | 2018-07-05 | 一种分布式存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810732304.5A CN110688057B (zh) | 2018-07-05 | 2018-07-05 | 一种分布式存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110688057A CN110688057A (zh) | 2020-01-14 |
CN110688057B true CN110688057B (zh) | 2023-05-23 |
Family
ID=69107324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810732304.5A Active CN110688057B (zh) | 2018-07-05 | 2018-07-05 | 一种分布式存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110688057B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111580877A (zh) * | 2020-04-28 | 2020-08-25 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1700135A (zh) * | 2005-06-17 | 2005-11-23 | 清华大学 | 基于本地无操作系统的网络计算机的预防病毒方法 |
CN103729152A (zh) * | 2014-01-24 | 2014-04-16 | 福州瑞芯微电子有限公司 | 一种安卓共享磁盘的方法及设备 |
CN105302490A (zh) * | 2015-10-30 | 2016-02-03 | 南京秦杜明视信息技术有限公司 | 数据存储方法 |
CN105337762A (zh) * | 2015-09-28 | 2016-02-17 | 浪潮(北京)电子信息产业有限公司 | 一种支持自动故障切换的文件共享方法 |
CN106899963A (zh) * | 2017-02-07 | 2017-06-27 | 上海斐讯数据通信技术有限公司 | 具有共享功能的移动硬盘及使用方法 |
CN107045530A (zh) * | 2017-01-20 | 2017-08-15 | 华中科技大学 | 一种将对象存储系统实现为本地文件系统的方法 |
CN107515725A (zh) * | 2016-06-16 | 2017-12-26 | 中兴通讯股份有限公司 | 一种核心网虚拟化系统共享磁盘的方法、装置及网管mano系统 |
CN108008911A (zh) * | 2016-11-01 | 2018-05-08 | 阿里巴巴集团控股有限公司 | 读写请求处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014183084A2 (en) * | 2013-05-10 | 2014-11-13 | Extenua, Inc. | Concurrency control in virtual file system |
-
2018
- 2018-07-05 CN CN201810732304.5A patent/CN110688057B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1700135A (zh) * | 2005-06-17 | 2005-11-23 | 清华大学 | 基于本地无操作系统的网络计算机的预防病毒方法 |
CN103729152A (zh) * | 2014-01-24 | 2014-04-16 | 福州瑞芯微电子有限公司 | 一种安卓共享磁盘的方法及设备 |
CN105337762A (zh) * | 2015-09-28 | 2016-02-17 | 浪潮(北京)电子信息产业有限公司 | 一种支持自动故障切换的文件共享方法 |
CN105302490A (zh) * | 2015-10-30 | 2016-02-03 | 南京秦杜明视信息技术有限公司 | 数据存储方法 |
CN107515725A (zh) * | 2016-06-16 | 2017-12-26 | 中兴通讯股份有限公司 | 一种核心网虚拟化系统共享磁盘的方法、装置及网管mano系统 |
CN108008911A (zh) * | 2016-11-01 | 2018-05-08 | 阿里巴巴集团控股有限公司 | 读写请求处理方法及装置 |
CN107045530A (zh) * | 2017-01-20 | 2017-08-15 | 华中科技大学 | 一种将对象存储系统实现为本地文件系统的方法 |
CN106899963A (zh) * | 2017-02-07 | 2017-06-27 | 上海斐讯数据通信技术有限公司 | 具有共享功能的移动硬盘及使用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110688057A (zh) | 2020-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6605078B2 (ja) | 情報処理方法、情報処理装置、サーバ及びコンピュータ読み取り可能な記録媒体 | |
US9563636B2 (en) | Allowing writes to complete without obtaining a write lock to a file | |
AU2015410318B2 (en) | Data write method, apparatus, and system | |
US10609174B2 (en) | Parallel prefetching log/meta stream sub-portions to recreate partition states in a distributed computing system | |
CN111797172B (zh) | 数据迁移方法、装置、设备、分布式系统及存储介质 | |
CN108475201B (zh) | 一种虚拟机启动过程中的数据获取方法和云计算系统 | |
JP6388339B2 (ja) | 分散キャッシングおよびキャッシュ分析 | |
US9875057B2 (en) | Method of live migration | |
CN107733882B (zh) | Ssl证书自动化部署方法及设备 | |
CN111880956B (zh) | 一种数据同步方法和装置 | |
CN109254958B (zh) | 分布式数据读写方法、设备及系统 | |
CN107203480B (zh) | 一种数据预取方法以及装置 | |
CN110554911A (zh) | 内存访问与分配方法、存储控制器及系统 | |
CN106357703B (zh) | 集群切换方法与设备 | |
CN110413376A (zh) | 一种虚拟机管理usb设备的方法、设备以及存储介质 | |
US11157456B2 (en) | Replication of data in a distributed file system using an arbiter | |
CN110688057B (zh) | 一种分布式存储方法及装置 | |
CN113626404B (zh) | 分布式文件系统嵌套目录配额的控制方法、装置及介质 | |
CN109889561A (zh) | 一种数据处理方法及装置 | |
CN113127438A (zh) | 用于存储数据的方法、装置、服务器和介质 | |
CN112748865A (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
CN116467270A (zh) | 数据管理系统、数据更新方法及装置 | |
CN111274176B (zh) | 一种信息处理方法、电子设备、系统及存储介质 | |
CN110795030A (zh) | 小文件读取方法及装置 | |
CN112214176B (zh) | 一种面向san云盘制备的方法与设备 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231201 Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province Patentee after: Aliyun Computing Co.,Ltd. Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK Patentee before: ALIBABA GROUP HOLDING Ltd. |