掌桥专利:专业的专利平台
掌桥专利
首页

一种虚拟机中共享盘数据一致性的方法

文献发布时间:2023-06-19 10:08:35


一种虚拟机中共享盘数据一致性的方法

技术领域

本发明属于虚拟机技术领域,具体涉及一种虚拟机中共享盘数据一致性的方法。

背景技术

共享盘是底层数据池中的一块逻辑卷,为虚拟机实例提供一种可以共享访问的随机读写块设备。共享盘主要满足传统集群类应用程序的高可用需求,但它本身不提供集群文件系统,需要第三方集群文件系统来管理共享盘。

常见的共享盘是通过SCSI协议中的持久保留(Persistent Reservation)命令去控制对共享盘的访问,整个过程类似于文件锁。每个虚拟机挂载这个共享盘时,都会在对应的逻辑卷上注册一个键,并设置保留标志位,当发生冲突写时,系统会向其它虚拟机发送冲突位标识,这时其它虚拟机会以一定的时间间隔去重试读写请求,直到对方不再持有保留标志位。然而,这种通过冲突位标识和重试读写来保证数据一致性的方式极大地限制了高并发的访问。

针对这种通过冲突位标识和重试读写来保证数据一致性方式极大影响高并发访问的问题,目前尚未提出有效地解决方案。

发明内容

本发明的目的在于提供一种虚拟机中共享盘数据一致性的方法,解决现有技术中通过冲突位标识和重试读写来保证数据一致性的方式极大地限制了高并发的访问的技术问题。

为了解决上述技术问题,本发明采用技术方案实现:

一种虚拟机中共享盘数据一致性的方法,包括如下步骤:

S1:将共享盘分数据卷和日志卷,数据卷包括多个逻辑数据块,用于存放虚拟机数据,日志卷用于存储多个虚拟机并发事务以及元数据的日志卷。其中,日志卷以键值对的形式保存读写事务;共享盘的存储层会异步地回放事务日志到相应的数据块中,这样整个共享盘可被多个虚拟机同时挂载使用。

每个虚拟机挂载共享盘时,都将当前的时间戳和该虚拟机的唯一标识号写入到对应日志卷中的元数据区域中;

S2:当虚拟机向挂载的共享盘发起读写请求时,每个虚拟机先向共享盘的存储层获取一个唯一IO请求号:

S21:当共享盘的存储层检测到各个虚拟机访问共享盘中不同逻辑数据块区域,则不用排队,可并发执行;

S22:当共享盘的存储层检测到有至少两个虚拟机向同一个逻辑数据块区域发起写操作或删除操作时,各虚拟机根据IO请求号在共享盘内部的线程池中排队等待。

进一步优化,所述步骤S2中,虚拟机向挂载的共享盘发起读写请求时,每个虚拟机先向共享盘的存储层获取一个唯一IO请求号,然后将IO请求号投入到内部的线程池中排队等待,同时存储层依据需要访问数据块的逻辑区域位置将多个虚拟机进行合并处理,如果检测到某些IO请求与其它IO请求的数据块逻辑区域位置不重叠,则将其投入到另一个线程中进行并行处理;如果存在重叠,则在本队列中等待批量被执行。

进一步优化,在某个逻辑数据块区域的多个IO请求队列中,当删除操作请求先于其它修改写操作请求,则对于该队列所有后续的修改写操作,存储层都会向上层对应的虚拟机返回“对应的数据区域已被删除”这样类似的错误信息,让虚拟机中的集群文件系统做进一步地控制。

进一步优化,存储层已接收到某个虚拟机的IO请求后,但检测到发起该IO请求的虚拟机异常宕机,则存储层会将其IO请求投入到对应日志卷中的事务日志区域中,等待该虚拟机再次开机挂载时,存储层向它返回“存在一些上次没有执行完的事务”这的警告信息,让虚拟机中集群文件系统做出进一步地处理。

进一步优化,挂载的虚拟机正常关机或卸载共享盘时,存储层会将对应日志卷中属于该虚拟机的元数据信息进行清除。

本发明技术方案的有益效果:

本发明中,通过将共享盘分为数据卷和日志卷,数据卷包括多个逻辑数据块,用于存放虚拟机数据,日志卷用于存储多个虚拟机并发事务以及元数据的日志卷。其中,日志卷以键值对的形式保存读写事务;共享盘的存储层会异步地回放事务日志到相应的数据块中,这样整个共享盘可被多个虚拟机同时挂载使用。多个虚拟机对共享盘的并发读写做了更细粒度的控制,而传统的并发控制是直接通过SCSI锁,来获取对整个共享盘的读写操作权限,该粒度比较大,并发度并不是最佳。

附图说明

图1为本发明所述多个虚拟机中共享盘的框图。

图2为本发明虚拟机中共享盘数据一致性的方法的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

如图1所示,一种虚拟机中共享盘数据一致性的方法,包括如下步骤,:

S1:将共享盘包括数据卷和日志卷,数据卷包括多个逻辑数据块,用于存放虚拟机数据,日志卷用于存储多个虚拟机并发事务以及元数据的日志卷。其中,日志卷以键值对的形式保存读写事务;共享盘的存储层会异步地回放事务日志到相应的数据块中,这样整个共享盘可被多个虚拟机同时挂载使用,如图2所示。

当N个虚拟机挂载共享盘时,每个虚拟机都将当前的时间戳和该虚拟机的唯一标识号写入到对应日志卷中的元数据区域中,其中N为大于等于2的正整数。

S2:当虚拟机向挂载的共享盘发起读写请求时,每个虚拟机先向共享盘的存储层获取一个唯一IO请求号:

S21:当共享盘的存储层检测到各个虚拟机访问共享盘中不同逻辑数据块区域,则不用排队,可并发执行;

S22:当共享盘的存储层检测到有至少两个虚拟机向同一个逻辑数据块区域发起写操作或删除操作时,各虚拟机根据IO请求号在共享盘内部的线程池中排队等待。

在本实施例中,所述步骤S2中,每个虚拟机先向共享盘的存储层获取一个唯一IO请求号,然后将IO请求号投入到内部的线程池中排队等待,同时存储层依据需要访问数据块的逻辑区域位置将多个虚拟机进行合并处理,如果检测到某些IO请求与其它IO请求的数据块逻辑区域位置不重叠,则将其投入到另一个线程中进行并行处理;如果存在重叠,则在本队列中等待批量被执行。

在本实施例中,在某个逻辑数据块区域的多个IO请求队列中,当删除操作请求先于其它修改写操作请求,则对于该队列所有后续的修改写操作,存储层都会向上层对应的虚拟机返回“对应的数据区域已被删除”这样类似的错误信息,让虚拟机中的集群文件系统做进一步地控制。

在本实施例中,存储层已接收到某个虚拟机的IO请求后,但检测到发起该IO请求的虚拟机异常宕机,则存储层会将其IO请求投入到对应日志卷中的事务日志区域中,等待该虚拟机再次开机挂载时,存储层向它返回“存在一些上次没有执行完的事务”这的警告信息,让虚拟机中集群文件系统做出进一步地处理。

在本实施例中,挂载的虚拟机正常关机或卸载共享盘时,存储层会将对应日志卷中属于该虚拟机的元数据信息进行清除。

上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

相关技术
  • 一种虚拟机中共享盘数据一致性的方法
  • 虚拟机备份恢复数据一致性的自动校验方法
技术分类

06120112437816