CN114547709B - 基于iSCSI共享盘数据一致性的方法及应用 - Google Patents

基于iSCSI共享盘数据一致性的方法及应用 Download PDF

Info

Publication number
CN114547709B
CN114547709B CN202210176185.6A CN202210176185A CN114547709B CN 114547709 B CN114547709 B CN 114547709B CN 202210176185 A CN202210176185 A CN 202210176185A CN 114547709 B CN114547709 B CN 114547709B
Authority
CN
China
Prior art keywords
command
scst
node
information
lock
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
CN202210176185.6A
Other languages
English (en)
Other versions
CN114547709A (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.)
Anchao Cloud Software Co Ltd
Original Assignee
Anchao Cloud Software Co 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 Anchao Cloud Software Co Ltd filed Critical Anchao Cloud Software Co Ltd
Priority to CN202210176185.6A priority Critical patent/CN114547709B/zh
Publication of CN114547709A publication Critical patent/CN114547709A/zh
Application granted granted Critical
Publication of CN114547709B publication Critical patent/CN114547709B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

本发明公开了一种基于iSCSI共享盘数据一致性的方法及应用,该方法包括以下步骤:SCST控制模块在接收到客户端发送的PR命令后,到Zookeeper中申请所述PR命令对应的锁节点,并根据所述锁节点对共享盘进行加锁;将所述PR命令的PR信息更新至SCST的本地内存,按照预设顺序依次处理所述PR命令,并将所述PR信息上传至Zookeeper;以及所述SCST控制模块在接收到解锁通知时,删除所述锁节点。该方法能够通过添加SCST控制模块保证在分布式环境下同一个共享盘在不同的目标节点下PR信息的一致性,从而给上层分布式应用提供数据一致性PR接口。

Description

基于iSCSI共享盘数据一致性的方法及应用
技术领域
本发明是关于云计算领域,特别是关于一种基于iSCSI共享盘数据一致性的方法及应用。
背景技术
随着分布式技术的快速发展和进步,分布式应用场景越来越多,对分布式块存储数据一致性的需求也越来越紧迫,比如Oracle RAC应用,需要底层提供共享盘来保证数据一致性。
现有技术的系统的主要模块有4部分组成:客户端(Initiator)、VIP、SCST、共享存储,主要作用如下:
客户端(Initiator):iSCSI接口的客户端组件,主要通过该进程对整个系统资源进行访问;
VIP:客户端需访问VIP来确定选择使用哪个节点的Target资源,当被选择的节点出现故障时,VIP会提供另外一个节点供客户端连接使用;
SCST:Linux通用的SCSI目标子系统,是一个为Linux SCSI目标子系统的另一种实现,提供Linux内核之间和处理和SCSI目标驱动程序的统一、一致的接口,同时提供Linux内核与存储后端句柄连接,连接真实或模拟的存储后端与目标驱动程序;
共享存储:客户端所有I/O请求,通过不同节点最终落到一套存储中。上述现有技术中的系统就是基于SCST提供iSCSI块设备存储的解决方案,但该系统中在分布式应用场景下的数据一致性一直比较棘手的问题。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本发明的目的在于提供一种基于iSCSI共享盘数据一致性的方法及应用,解决在分布式应用场景下的数据不一致的问题。
在本发明中SCSI PR:持久预留(SCSI-3Persistent Reservations),PR一种SCSI语义,专门用来给SCSI设备加锁用的指令集,用来给主机访问SCSI盘时添加访问权限。主机需要先对SCSI盘注册PR密钥,基于该密钥添加PR锁;解锁的时候也需要指定该密钥。当一个客户端准备对一个盘进行读写的时候,需要去查询该盘上是否已经被其他客户端加了PR锁,如果该盘已经添加PR锁,则表示有其他客户端正在对该盘进行IO读写,此时不能对该盘进行操作,需等待该盘的PR锁释放,才能继续对该盘下发IO。
为实现上述目的,本发明的实施例提供了一种基于iSCSI共享盘数据一致性的方法。
在本发明的一个或多个实施方式中,所述方法包括:SCST控制模块在接收到客户端发送的PR命令后,到Zookeeper中申请所述PR命令对应的锁节点,并根据所述锁节点对共享盘进行加锁;将所述PR命令的PR信息更新至SCST的本地内存,按照预设顺序依次处理所述PR命令,并将所述PR信息上传至Zookeeper;以及所述SCST控制模块在接收到解锁通知时,删除所述锁节点。
在本发明的一个或多个实施方式中,所述SCST控制模块在接收到客户端发送的PR命令后,到Zookeeper中申请所述PR命令对应的锁节点,包括:创建虚拟盘,并在所述虚拟盘的目录节点下创建锁节点,其中,所述锁节点的类型为临时和顺序编号。
在本发明的一个或多个实施方式中,根据所述锁节点对共享盘进行加锁,包括:获取所述虚拟盘的目录节点下的所有锁节点;根据路径名称将所有锁节点进行排序,并判断首位锁节点是否为所述SCST控制模块在所述目录节点创建的锁节点;若是,执行所述PR命令;若否,监听所述锁节点的前一位锁节点。
在本发明的一个或多个实施方式中,监听所述锁节点的前一位锁节点,包括:在所述前一位锁节点对应的PR命令执行完成时,删除所述前一位锁节点。
在本发明的一个或多个实施方式中,将所述PR命令的PR信息更新至SCST的本地内存,按照预设顺序依次处理所述PR命令,并将所述PR信息上传至Zookeeper,包括:若所述PR命令是PR out命令,所述SCST控制模块下载最新的PR信息至SCST的本地内存进行合并,按照预设顺序依次处理所述PR命令,并将合并后的PR信息上传至Zookeeper;或若所述PR命令是PR in命令,所述SCST控制模块从Zookeeper中下载最新的PR信息至SCST的本地内存进行合并,按照预设顺序依次处理所述PR命令。
在本发明的一个或多个实施方式中,所述按照预设顺序依次处理所述PR命令,包括:所述SCST控制模块的事件接收线程接收到所述PR命令后,按照预设顺序将所述PR命令放至对应的事件队列中,并由对应的事件处理线程处理所述PR命令。
在本发明的一个或多个实施方式中,所述方法还包括:在当前节点故障时,所述SCST控制模块从Zookeeper中获取故障节点虚拟盘的PR信息;以及将所述PR信息加载到切换后节点的本地内存。
在本发明的另一个方面当中,提供了一种基于iSCSI共享盘数据一致性的装置,其包括加锁模块、处理模块和解锁模块。
加锁模块,用于供SCST控制模块在接收到客户端发送的PR命令后,到Zookeeper中申请所述PR命令对应的锁节点,并根据所述锁节点对共享盘进行加锁。
处理模块,用于将所述PR命令的PR信息更新至SCST的本地内存,按照预设顺序依次处理所述PR命令,并将所述PR信息上传至Zookeeper。
解锁模块,用于供所述SCST控制模块在接收到解锁通知时,删除所述锁节点。
在本发明的一个或多个实施方式中,所述加锁模块还用于:创建虚拟盘,并在所述虚拟盘的目录节点下创建锁节点,其中,所述锁节点的类型为临时和顺序编号。
在本发明的一个或多个实施方式中,所述加锁模块还用于:获取所述虚拟盘的目录节点下的所有锁节点;根据路径名称将所有锁节点进行排序,并判断首位锁节点是否为所述SCST控制模块在所述目录节点创建的锁节点;若是,执行所述PR命令;若否,监听所述锁节点的前一位锁节点。
在本发明的一个或多个实施方式中,所述加锁模块还用于:在所述前一位锁节点对应的PR命令执行完成时,删除所述前一位锁节点。
在本发明的一个或多个实施方式中,所述处理模块还用于:若所述PR命令是PRout命令,所述SCST控制模块下载最新的PR信息至SCST的本地内存进行合并,按照预设顺序依次处理所述PR命令,并将合并后的PR信息上传至Zookeeper;或若所述PR命令是PR in命令,所述SCST控制模块从Zookeeper中下载最新的PR信息至SCST的本地内存进行合并,按照预设顺序依次处理所述PR命令。
在本发明的一个或多个实施方式中,所述处理模块还用于:所述SCST控制模块的事件接收线程接收到所述PR命令后,按照预设顺序将所述PR命令放至对应的事件队列中,并由对应的事件处理线程处理所述PR命令。
在本发明的一个或多个实施方式中,所述处理模块还用于:在当前节点故障时,所述SCST控制模块从Zookeeper中获取故障节点虚拟盘的PR信息;以及将所述PR信息加载到切换后节点的本地内存。
在本发明的另一个方面当中,提供了一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的基于iSCSI共享盘数据一致性的方法。
在本发明的另一个方面当中,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的基于iSCSI共享盘数据一致性的方法的步骤。
与现有技术相比,根据本发明实施方式的基于iSCSI共享盘数据一致性的方法及应用,其能够通过添加SCST控制模块保证在分布式环境下同一个共享盘在不同的目标节点下PR信息的一致性,从而给上层分布式应用提供数据一致性PR接口。
根据本发明实施方式的基于iSCSI共享盘数据一致性的方法及应用,还能够在节点异常时,客户端的session会被自动切换到其他正常工作的节点上,PR信息依然能保证一致,并且不需要重启SCST或整个物理节点,整个I/Ostack自主可控。
附图说明
图1是根据本发明一实施方式的基于iSCSI共享盘数据一致性的方法的流程图;
图2是根据本发明一实施方式的基于iSCSI共享盘数据一致性的方法的结构图;
图3是根据本发明一实施方式的基于iSCSI共享盘数据一致性的方法的时序图;
图4是根据本发明一实施方式的基于iSCSI共享盘数据一致性的方法的PR节点创建的时序图;
图5是根据本发明一实施方式的基于iSCSI共享盘数据一致性的方法的PR节点删除的时序图;
图6是根据本发明一实施方式的基于iSCSI共享盘数据一致性的方法的信息备份时序图;
图7是根据本发明一实施方式的基于iSCSI共享盘数据一致性的方法的加锁时序图;
图8是根据本发明一实施方式的基于iSCSI共享盘数据一致性的方法的解锁时序图;
图9是根据本发明一实施方式的基于iSCSI共享盘数据一致性的方法的事件处理示意图;
图10是根据本发明一实施方式的基于iSCSI共享盘数据一致性的方法的故障切换流程图;
图11是根据本发明一实施方式的基于iSCSI共享盘数据一致性的方法的故障切换时序图;
图12是根据本发明一实施方式的基于iSCSI共享盘数据一致性的方法的信息恢复时序图;
图13是根据本发明一实施方式的基于iSCSI共享盘数据一致性的装置的结构图;
图14是根据本发明一实施方式的基于iSCSI共享盘数据一致性的计算设备的硬件结构图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
以下结合附图,详细说明本发明各实施例提供的技术方案。
实施例1
如图1至图9所示,介绍本发明的一个实施例中基于iSCSI共享盘数据一致性的方法,该方法包括如下步骤。
在步骤S101中,SCST控制模块在接收到客户端发送的PR命令后,到Zookeeper中申请PR命令对应的锁节点,并根据锁节点对共享盘进行加锁。
SCST是Linux中通用的SCSI目标子系统,它提供Linux内核之间和处理和SCSI目标驱动程序的统一的,一致的接口,同时提供Linux内核与存储后端句柄连接,连接真实或模拟的存储后端与目标驱动程序。
SCST只支持单机版本的PR语义解析,但是在共享存储分布式系统中,需要做分布式全局PR语义的支持,即在共享存储任何一个目标节点上访问同一个SCSI共享盘,都能正确解析该共享盘的PR信息。
SCSI PR:持久预留(SCSI-3Persistent Reservations),一种SCSI语义,用来给主机访问SCSI盘时添加访问权限。主机需要先对SCSI盘注册PR密钥,基于该密钥添加PR锁;解锁的时候也需要指定该密钥。当一个客户端准备对一个盘进行读写的时候,需要去查询该盘上是否已经被其他客户端加了PR锁,如果该盘已经添加PR锁,则表示有其他客户端正在对该盘进行IO读写,此时不能对该盘进行操作,需等待该盘的PR锁释放,才能继续对该盘下发IO。
如图3所示,iSCSI Initiator是客户端iSCSI启动器,负责发现、链接目标器。iSCSI-SCST(kernel)是iSCSI目标器,负责响应启动器连接,接收、处理iSCSI命令并向启动器返回响应。SCST_CTRL是SCST控制模块,提供一致性预留信息多节点之间同步的分布式锁和PR信息存取,负责和Zookeeper交互。SCST(kernel)是负责SCSI协议的处理。MxSCST是负责配置管理及节点故障切换。共享存储分布式系统负责空间分配及IO读写。Zookeeper是分布式系统数据一致性服务。
客户端执行登录操作,执行PR out或者PR in命令对某个共享盘进行PR操作,SCST接受到PR命令后到Zookeeper中申请该共享盘的PR节点锁。
具体的,创建一个LUN(虚拟盘),在虚拟盘创建的过程中,在LUN的目录节点下面创建类型为临时、顺序编号的子目录节点,称作锁节点,锁节点表示互斥访问的对象。
临时的目录节点在对应节点离线、异常的场景下会自动被删除,相当于自动释放锁;顺序编号属性的目录节点,在名称后面会自动加上顺序编号,达到队列效果。
获取该虚拟盘的目录节点下的所有锁节点,根据路径名称将所有锁节点进行排序,判断排在最前面的首位锁节点是否为SCST控制模块在该目录节点创建的锁节点,如果是,则加锁成功执行PR命令,否则,监听首位锁节点前一位的锁节点。
举例来说,当前首位锁节点名称为lock_000000002,该首位锁节点不是SCST控制模块在该目录节点创建的锁节点,所以监听名称为lock_000000001的锁节点,当锁节点lock_000000001对应的客户端PR操作执行完成时,删除锁节点lock_000000001(释放分布式锁),触发监听锁节点lock_000000002的逻辑,此时重新判断锁节点lock_000000002是否为SCST控制模块在该目录节点创建的锁节点,如果是,则加锁成功执行PR命令。
虚拟盘的全称是Logical Unit Number,也就是逻辑单元号,其主要作用是为了给相连的服务器分配逻辑单元号(虚拟盘)。磁盘阵列上的硬盘组成RAID组后,通常连接磁盘阵列的服务器并不能直接访问RAID组,而是要再划分为逻辑单元才能分配给服务器。这是因为SCSI总线上可挂接的设备数量是有限的,一般为8个或者16个,可以用Target ID描述这些设备,设备只要一加入系统,就有一个代号。而实际上需要用来描述的对象,是远远超过该数字的,于是引进了虚拟盘的概念,也就是说虚拟盘ID的作用是扩充Target ID。每个Target下都可以有多个虚拟盘Device,通常简称虚拟盘Device为虚拟盘。
在步骤S102中,将PR命令的PR信息更新至SCST的本地内存,按照预设顺序依次处理PR命令,并将PR信息上传至Zookeeper。
在申请到分布式锁后,如果是PR out命令,则下载最新的PR信息到本地SCST内存进行合并,再将合并后的本地PR信息更新至Zookeeper;如果是PR in命令,则只需要从Zookeeper中下载最新的PR信息到本地进行合并即可。
SCST向SCST控制模块发送加锁、解锁、PR信息上传、下载、删除等事件。SCST控制模块的事件接收线程接收到事件后,将事件放至对应的事件处理线程对应的事件队列中。
事件处理线程和事件队列一一对应,每个事件处理线程操作一个事件队列,为了确保单LUN的事件得到串行处理,事件按接收的顺序加入队尾,同时,单个LUN的事件只能固定加入到一个队列。举例来说,假设有两个队列,队列1存放ID为奇数的LUN的事件,队列2存放偶数LUN的事件。
SCST控制模块的事件处理线程依次取出事件进行处理,SCST控制模块处理事件的过程中操作Zookeeper,在SCST控制模块处理完事件后回调SCST,返回加解锁等操作结果。
在步骤S103中,SCST控制模块在接收到解锁通知时,删除锁节点。
在事件处理完成后进行解锁操作,将虚拟盘的目录节点下的锁节点删除,在对应节点离线、异常的场景下锁节点会自动被删除,相当于自动释放锁。解锁后的共享盘可供其他客户端进行IO读写。
根据本发明实施方式的基于iSCSI共享盘数据一致性的方法,在其他客户端登录到其他任一节点上时,使用PR out或者PR in命令,都可以获取该共享盘的最新PR信息,可以保证分布式环境下PR信息的一致性。
实施例2
如图10至图12所示,介绍本发明的一个实施例中基于iSCSI共享盘数据一致性的方法,该方法包括如下步骤。
在步骤S201中,SCST控制模块在接收到客户端发送的PR命令后,到Zookeeper中申请PR命令对应的锁节点,并根据锁节点对共享盘进行加锁。
SCST是Linux中通用的SCSI目标子系统,它提供Linux内核之间和处理和SCSI目标驱动程序的统一的,一致的接口,同时提供Linux内核与存储后端句柄连接,连接真实或模拟的存储后端与目标驱动程序。
SCST只支持单机版本的PR语义解析,但是在共享存储分布式系统中,需要做分布式全局PR语义的支持,即在共享存储任何一个目标节点上访问同一个SCSI共享盘,都能正确解析该共享盘的PR信息。
SCSI PR:持久预留(SCSI-3Persistent Reservations),一种SCSI语义,用来给主机访问SCSI盘时添加访问权限。主机需要先对SCSI盘注册PR密钥,基于该密钥添加PR锁;解锁的时候也需要指定该密钥。当一个客户端准备对一个盘进行读写的时候,需要去查询该盘上是否已经被其他客户端加了PR锁,如果该盘已经添加PR锁,则表示有其他客户端正在对该盘进行IO读写,此时不能对该盘进行操作,需等待该盘的PR锁释放,才能继续对该盘下发IO。
如图2所示,iSCSI Initiator是客户端iSCSI启动器,负责发现、链接目标器。iSCSI-SCST(kernel)是iSCSI目标器,负责响应启动器连接,接收、处理iSCSI命令并向启动器返回响应。SCST_CTRL是SCST控制模块,提供一致性预留信息多节点之间同步的分布式锁和PR信息存取,负责和Zookeeper交互。SCST(kernel)是负责SCSI协议的处理。MxSCST是负责配置管理及节点故障切换。共享存储分布式系统负责空间分配及IO读写。Zookeeper是分布式系统数据一致性服务。
在SCST控制模块接收到客户端发送的PR命令后,进行加锁操作,首先创建一个LUN(虚拟盘),在虚拟盘创建的过程中,在LUN的目录节点下面创建类型为临时、顺序编号的子目录节点,称作锁节点,锁节点表示互斥访问的对象。
临时的目录节点在对应节点离线、异常的场景下会自动被删除,相当于自动释放锁;顺序编号属性的目录节点,在名称后面会自动加上顺序编号,达到队列效果。
获取该虚拟盘的目录节点下的所有锁节点,根据路径名称将所有锁节点进行排序,判断排在最前面的首位锁节点是否为SCST控制模块在该目录节点创建的锁节点,如果是,则加锁成功执行PR命令,否则,监听首位锁节点前一位的锁节点。
举例来说,当前首位锁节点名称为lock_000000002,该首位锁节点不是SCST控制模块在该目录节点创建的锁节点,所以监听名称为lock_000000001的锁节点,当锁节点lock_000000001对应的客户端PR操作执行完成时,删除锁节点lock_000000001(释放分布式锁),触发监听锁节点lock_000000002的逻辑,此时重新判断锁节点lock_000000002是否为SCST控制模块在该目录节点创建的锁节点,如果是,则加锁成功执行PR命令。
在步骤S202中,SCST控制模块从Zookeeper中获取故障节点虚拟盘的PR信息;以及将PR信息加载到切换后节点的本地内存。
在当前节点故障时,需要进行节点切换,切换后的节点在登录时会初始化Session,需要恢复Session下的所有虚拟盘的PR信息,Session对象存储特定用户会话所需的属性及配置信息。
在SCST控制模块收到恢复虚拟盘的PR信息的通知后,从Zookeeper中获取故障节点虚拟盘的PR信息,并将PR信息加载到切换后节点的本地内存。
在步骤S203中,SCST控制模块在接收到解锁通知时,删除锁节点。
在事件处理完成后进行解锁操作,将虚拟盘的目录节点下的锁节点删除,在对应节点离线、异常的场景下锁节点会自动被删除,相当于自动释放锁。解锁后的共享盘可供其他客户端进行IO读写。
如图13所示,介绍根据本发明具体实施方式的基于iSCSI共享盘数据一致性的装置。
在本发明的实施方式中,基于iSCSI共享盘数据一致性的装置包括加锁模块1301、处理模块1302和解锁模块1303。
加锁模块1301,用于供SCST控制模块在接收到客户端发送的PR命令后,到Zookeeper中申请PR命令对应的锁节点,并根据锁节点对共享盘进行加锁。
处理模块1302,用于将PR命令的PR信息更新至SCST的本地内存,按照预设顺序依次处理PR命令,并将PR信息上传至Zookeeper。
解锁模块1303,用于供SCST控制模块在接收到解锁通知时,删除锁节点。
加锁模块1301还用于:创建虚拟盘,并在虚拟盘的目录节点下创建锁节点,其中,锁节点的类型为临时和顺序编号。
加锁模块1301还用于:获取虚拟盘的目录节点下的所有锁节点;根据路径名称将所有锁节点进行排序,并判断首位锁节点是否为SCST控制模块在目录节点创建的锁节点;若是,执行PR命令;若否,监听锁节点的前一位锁节点。
加锁模块1301还用于:在前一位锁节点对应的PR命令执行完成时,删除前一位锁节点。
处理模块1302还用于:若PR命令是PR out命令,SCST控制模块下载最新的PR信息至SCST的本地内存进行合并,按照预设顺序依次处理PR命令,并将合并后的PR信息上传至Zookeeper;或若PR命令是PR in命令,SCST控制模块从Zookeeper中下载最新的PR信息至SCST的本地内存进行合并,按照预设顺序依次处理PR命令。
处理模块1302还用于:SCST控制模块的事件接收线程接收到PR命令后,按照预设顺序将PR命令放至对应的事件队列中,并由对应的事件处理线程处理PR命令。
处理模块1302还用于:在当前节点故障时,SCST控制模块从Zookeeper中获取故障节点虚拟盘的PR信息;以及将PR信息加载到切换后节点的本地内存。
图14示出了根据本说明书的实施例的用于基于iSCSI共享盘数据一致性的计算设备140的硬件结构图。如图14所示,计算设备140可以包括至少一个处理器1401、存储器1402(例如非易失性存储器)、内存1403和通信接口1404,并且至少一个处理器1401、存储器1402、内存1403和通信接口1404经由总线1405连接在一起。至少一个处理器1401执行在存储器1402中存储或编码的至少一个计算机可读指令。
应该理解,在存储器1402中存储的计算机可执行指令当执行时使得至少一个处理器1401进行本说明书的各个实施例中以上结合图1-14描述的各种操作和功能。
在本说明书的实施例中,计算设备140可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴计算设备、消费电子设备等等。
根据一个实施例,提供了一种比如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-14描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
根据本发明实施方式的基于iSCSI共享盘数据一致性的方法及应用,其能够通过添加SCST控制模块保证在分布式环境下同一个共享盘在不同的目标节点下PR信息的一致性,从而给上层分布式应用提供数据一致性PR接口。
根据本发明实施方式的基于iSCSI共享盘数据一致性的方法及应用,还能够在节点异常时,客户端的session会被自动切换到其他正常工作的节点上,PR信息依然能保证一致,并且不需要重启SCST或整个物理节点,整个I/Ostack自主可控。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。

Claims (9)

1.一种基于iSCSI共享盘数据一致性的方法,其特征在于,所述方法包括:
SCST控制模块在接收到客户端发送的PR命令后,到Zookeeper中申请所述PR命令对应的锁节点,并根据所述锁节点对共享盘进行加锁;
将所述PR命令的PR信息更新至SCST的本地内存,按照预设顺序依次处理所述PR命令,并将所述PR信息上传至Zookeeper;以及
所述SCST控制模块在接收到解锁通知时,删除所述锁节点;
将所述PR命令的PR信息更新至SCST的本地内存,按照预设顺序依次处理所述PR命令,并将所述PR信息上传至Zookeeper,包括:
若所述PR命令是PRout命令,所述SCST控制模块下载最新的PR信息至SCST的本地内存进行合并,按照预设顺序依次处理所述PR命令,并将合并后的PR信息上传至Zookeeper;或
若所述PR命令是PRin命令,所述SCST控制模块从Zookeeper中下载最新的PR信息至SCST的本地内存进行合并,按照预设顺序依次处理所述PR命令。
2.如权利要求1所述的基于iSCSI共享盘数据一致性的方法,其特征在于,所述SCST控制模块在接收到客户端发送的PR命令后,到Zookeeper中申请所述PR命令对应的锁节点,包括:
创建虚拟盘,并在所述虚拟盘的目录节点下创建锁节点,其中,所述锁节点的类型为临时和顺序编号。
3.如权利要求2所述的基于iSCSI共享盘数据一致性的方法,其特征在于,根据所述锁节点对共享盘进行加锁,包括:
获取所述虚拟盘的目录节点下的所有锁节点;
根据路径名称将所有锁节点进行排序,并判断首位锁节点是否为所述SCST控制模块在所述目录节点创建的锁节点;若是,
执行所述PR命令;若否,
监听所述锁节点的前一位锁节点。
4.如权利要求3所述的基于iSCSI共享盘数据一致性的方法,其特征在于,监听所述锁节点的前一位锁节点,包括:
在所述前一位锁节点对应的PR命令执行完成时,删除所述前一位锁节点。
5.如权利要求1所述的基于iSCSI共享盘数据一致性的方法,其特征在于,所述按照预设顺序依次处理所述PR命令,包括:
所述SCST控制模块的事件接收线程接收到所述PR命令后,按照预设顺序将所述PR命令放至对应的事件队列中,并由对应的事件处理线程处理所述PR命令。
6.如权利要求1所述的基于iSCSI共享盘数据一致性的方法,其特征在于,所述方法还包括:
在当前节点故障时,所述SCST控制模块从Zookeeper中获取故障节点虚拟盘的PR信息;以及
将所述PR信息加载到切换后节点的本地内存。
7.一种基于iSCSI共享盘数据一致性的装置,其特征在于,所述装置包括:
加锁模块,用于供SCST控制模块在接收到客户端发送的PR命令后,到Zookeeper中申请所述PR命令对应的锁节点,并根据所述锁节点对共享盘进行加锁;
处理模块,用于将所述PR命令的PR信息更新至SCST的本地内存,按照预设顺序依次处理所述PR命令,并将所述PR信息上传至Zookeeper;以及
解锁模块,用于供所述SCST控制模块在接收到解锁通知时,删除所述锁节点;
将所述PR命令的PR信息更新至SCST的本地内存,按照预设顺序依次处理所述PR命令,并将所述PR信息上传至Zookeeper,包括:
若所述PR命令是PRout命令,所述SCST控制模块下载最新的PR信息至SCST的本地内存进行合并,按照预设顺序依次处理所述PR命令,并将合并后的PR信息上传至Zookeeper;或
若所述PR命令是PRin命令,所述SCST控制模块从Zookeeper中下载最新的PR信息至SCST的本地内存进行合并,按照预设顺序依次处理所述PR命令。
8.一种电子设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如权利要求1至6中任一项所述的基于iSCSI共享盘数据一致性的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的基于iSCSI共享盘数据一致性的方法的步骤。
CN202210176185.6A 2022-02-24 2022-02-24 基于iSCSI共享盘数据一致性的方法及应用 Active CN114547709B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210176185.6A CN114547709B (zh) 2022-02-24 2022-02-24 基于iSCSI共享盘数据一致性的方法及应用

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210176185.6A CN114547709B (zh) 2022-02-24 2022-02-24 基于iSCSI共享盘数据一致性的方法及应用

Publications (2)

Publication Number Publication Date
CN114547709A CN114547709A (zh) 2022-05-27
CN114547709B true CN114547709B (zh) 2023-05-30

Family

ID=81678989

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210176185.6A Active CN114547709B (zh) 2022-02-24 2022-02-24 基于iSCSI共享盘数据一致性的方法及应用

Country Status (1)

Country Link
CN (1) CN114547709B (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6651124B1 (en) * 2000-04-28 2003-11-18 Hewlett-Packard Development Company, L.P. Method and apparatus for preventing deadlock in a distributed shared memory system
CN105892943B (zh) * 2016-03-30 2019-03-01 上海爱数信息技术股份有限公司 一种分布式存储系统中块存储数据的访问方法及系统
US11604712B2 (en) * 2018-11-16 2023-03-14 Vmware, Inc. Active-active architecture for distributed ISCSI target in hyper-converged storage
CN110677453A (zh) * 2019-08-15 2020-01-10 平安普惠企业管理有限公司 基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质
CN113626263A (zh) * 2021-08-11 2021-11-09 安超云软件有限公司 Scst存储系统中保持数据一致性的方法及应用

Also Published As

Publication number Publication date
CN114547709A (zh) 2022-05-27

Similar Documents

Publication Publication Date Title
US9671967B2 (en) Method and system for implementing a distributed operations log
US10802921B2 (en) Systems and methods including committing a note to master and slave copies of a data volume based on sequential operation numbers
CN107111533B (zh) 虚拟机集群备份
US10747465B2 (en) Preserving replication to a storage object on a storage node
US11032156B1 (en) Crash-consistent multi-volume backup generation
EP2856317B1 (en) System and method for disaster recovery of multi-tier applications
US10372547B1 (en) Recovery-chain based retention for multi-tier data storage auto migration system
US9733869B1 (en) Provisioning a slave for data storage using metadata with updated references
US10055307B2 (en) Workflows for series of snapshots
WO2019231526A1 (en) Persistent version control for data transfer between heterogeneous data stores
JP2014044553A (ja) プログラム、情報処理装置および情報処理システム
US10860431B2 (en) System and method for fault tolerant backup generation in a virtual environment
US9805038B2 (en) Efficient conflict resolution among stateless processes
US10749921B2 (en) Techniques for warming up a node in a distributed data store
US10552268B1 (en) Broken point continuous backup in virtual datacenter
US10503428B2 (en) System and method for concurrent multipoint backup
US10572349B2 (en) System and method for backup in a virtualized environment
EP3625683B1 (en) System and method for load balancing backup data
US10698719B2 (en) System and method for virtual machine restoration
US8892830B2 (en) Changing ownership of cartridges
CN114547709B (zh) 基于iSCSI共享盘数据一致性的方法及应用
CN116389233A (zh) 容器云管理平台主备切换系统、方法、装置和计算机设备
US11474728B2 (en) Data storage volume record management for application-level recovery
US10838783B1 (en) Data management system and method
US10671597B1 (en) Data management system and 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
TA01 Transfer of patent application right

Effective date of registration: 20230515

Address after: Room 1602, No. 6, Financial Third Street, Wuxi Economic Development Zone, Jiangsu Province, 214,000

Applicant after: Anchao cloud Software Co.,Ltd.

Address before: Room 1601, no.6, financial Third Street, Wuxi Economic Development Zone, Jiangsu Province, 214000

Applicant before: Jiangsu Anchao cloud Software Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant