LVM数据处理方法、装置、计算机设备和计算机可读介质与流程

文档序号:25543208发布日期:2021-06-18 20:40阅读:154来源:国知局
LVM数据处理方法、装置、计算机设备和计算机可读介质与流程

本公开涉及虚拟化存储技术领域,具体涉及一种lvm数据处理方法、装置、计算机设备和计算机可读介质。



背景技术:

在虚拟化存储技术领域,以lvm(logicalvolumemanager,逻辑卷管理)方式承载虚拟机磁盘,如图1所示,虚拟化存储的一种组网方式包括:管理节点、计算节点和磁阵,管理节点通过管理网交换机与各计算节点交互,各计算节点通过存储网交换机访问磁阵。其中,管理节点负责管理计算资源、网络资源和存储资源等基础资源,以及负责管理虚拟机的生命周期如创建虚拟机、删除虚拟机、备份虚拟机等。虚拟机运行在计算节点上,计算节点使用自身的cpu(centralprocessingunit,中央处理器)和内存为虚拟机提供计算资源,使用自身的网卡为虚拟机提供网络资源,并使用磁阵为虚拟机提供存储资源。多个计算节点可以同时访问一个或多个磁阵。

如图2所示,磁阵中的多个硬盘组成一个卷组(raid),卷组划分为合适大小的逻辑卷以提供给计算节点。计算节点使用lvm的方式管理磁阵的lun(logicalunitnumber,逻辑单元),一个逻辑卷对应一个lun。每个lun分别格式化成一个pv(physicalvolume,物理卷),多个pv组成一个vg(volumegroup,卷组),每个vg在管理节点中作为一个存储库来使用。在vg中创建lv(logicalvolume,逻辑卷)作为虚拟机磁盘。计算节点使用lvm命令后续执行修改、删除虚拟机磁盘等操作,也使用lvm命令,处理所有pv中的元数据。当多个计算节点同时操作不同的虚拟机时(即多个计算节点同时使用一个或多个磁阵时),就需要提供锁机制来保证lvm命令可以互斥地处理某个vg的元数据,或者互斥地处理所有vg的元数据,以避免各计算节点之间的操作互相干扰。

现有的锁机制为分布式锁机制,在使用时需要将锁下发至各个集群,运营所需的通信成本高,不利于前期部署和后期管理。



技术实现要素:

本公开针对现有技术中存在的上述不足,提供一种lvm数据处理方法、装置、计算机设备和计算机可读介质。

第一方面,本公开实施例提供一种lvm数据处理方法,所述方法包括:

当接收到数据处理请求时,从管理设备的锁目录调用入口文件,并对所述入口文件加锁,其中,入口文件对应多个卷组vg;

从所述管理设备的锁目录调用与所述数据处理请求对应的待处理vg的锁文件,并对所述待处理vg的锁文件加写锁,其中,一个锁文件对应一个vg;

根据所述数据处理请求,处理所述待处理vg中的元数据;

释放所述锁文件的写锁和所述入口文件的锁。

优选的,所述对所述入口文件加锁,包括:

在预设时长内对所述入口文件加锁;其中,若加锁成功,则从所述管理设备的锁目录调用与所述数据处理请求对应的待处理vg的锁文件;若加锁未成功,则再次对所述入口文件加锁。

优选的,所述入口文件和所述锁文件存储在所述管理设备的网络文件系统的配置文件中。

优选的,与所述数据处理请求对应的所述待处理vg为管理设备所管理的全部vg,所述对所述入口文件加锁,包括:对所述入口文件加写锁;

所述释放所述入口文件的锁,包括:释放所述入口文件的写锁。

进一步的,所述从所述管理设备的锁目录调用与所述数据处理请求对应的待处理vg的锁文件,包括:

从所述管理设备的锁目录调用锁文件列表,其中,所述锁文件列表用于记录所述管理设备所管理的全部vg对应的锁文件的名称;

所述对所述待处理vg的锁文件加写锁,包括:

对所述锁文件列表中记录的各锁文件逐个加写锁。

优选的,与所述数据处理请求对应的所述待处理vg为一个vg,所述对所述入口文件加锁,包括:对所述入口文件加读锁;

所述释放所述入口文件的锁,包括:释放所述入口文件的读锁。

进一步的,所述释放所述锁文件的写锁和所述入口文件的锁,包括:

先释放所述入口文件的读锁,再释放所述待处理vg的锁文件的写锁。

又一方面,本公开实施例提供一种lvm数据处理方法,所述方法包括:

在网络文件系统的配置文件配置一个锁目录,所述锁目录包括入口文件和多个锁文件,其中,入口文件对应多个卷组vg,每个锁文件分别对应一个vg。

进一步的,所述锁目录还包括锁文件列表,所述锁文件列表用于记录管理设备所管理的全部vg对应的锁文件的名称。

又一方面,本公开实施例还提供一种lvm数据处理装置,包括:接收模块、调用模块和处理模块;

所述接收模块用于,接收数据处理请求;

所述调用模块用于,从管理设备的锁目录调用与所述数据处理请求对应的入口文件,其中,入口文件对应多个卷组vg,一个锁文件对应一个vg;从所述管理设备的锁目录调用待处理vg的锁文件;

所述处理模块用于,对所述入口文件加锁;根据所述数据处理请求,处理所述待处理vg中的元数据;释放所述锁文件的写锁和所述入口文件的锁。

又一方面,本公开实施例还提供一种管理设备,包括:配置模块;

所述配置模块用于,在网络文件系统的配置文件配置一个锁目录,所述锁目录包括入口文件和多个锁文件,其中,入口文件对应多个卷组vg,每个锁文件分别对应一个vg。

又一方面,本公开实施例还提供一种计算机设备,包括:一个或多个处理器以及存储装置;其中,存储装置上存储有一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如前述各实施例所提供的lvm数据处理方法。

本公开实施例还提供了一种计算机可读介质,其上存储有计算机程序,其中,该计算机程序被执行时实现如前述各实施例所提供的lvm数据处理方法。

本公开实施例提供的lvm数据处理方法,当接收到数据处理请求时,从管理设备的锁目录调用入口文件,并对入口文件加锁,其中,入口文件对应多个卷组vg,从管理设备的锁目录调用待处理vg的锁文件,并对待处理vg的锁文件加写锁,其中,一个锁文件对应一个vg,根据数据处理请求,处理待处理vg中的元数据,释放锁文件的写锁和入口文件的锁。本公开实施例提供一种集中式锁机制,由管理设备集中管理文件锁,各个计算节点需使用文件锁时,只需调用相应的锁文件进行加锁处理,节省通信成本;此外,通过设置入口文件,可以实现对多个vg加全局锁,无需针对每个vg分别加锁,提高加锁效率。

附图说明

图1为现有的虚拟化存储的组网环境示意图;

图2为现有的lvm数据存储、访问示意图;

图3为本公开一实施例提供的lvm数据处理方法流程图;

图4为本公开又一实施例提供的配置锁目录的示意图;

图5为本公开再一实施例提供的lvm数据处理装置的结构示意图;

图6为本公开又一实施例提供的管理设备的结构示意图。

具体实施方式

在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。

如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。

本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或其群组。

本文所述实施例可借助本公开的理想示意图而参考平面图和/或截面图进行描述。因此,可根据制造技术和/或容限来修改示例图示。因此,实施例不限于附图中所示的实施例,而是包括基于制造工艺而形成的配置的修改。因此,附图中例示的区具有示意性属性,并且图中所示区的形状例示了元件的区的具体形状,但并不旨在是限制性的。

除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。

本公开实施例提供一种lvm数据处理方法,如图3所示,所述lvm数据处理方法包括以下步骤:

步骤11,当接收到数据处理请求时,从管理设备的锁目录调用入口文件,并对入口文件加锁,其中,入口文件对应多个vg。

如图4所示,管理设备管理多个vg,在初始化阶段,管理设备生成一个锁目录,通过nfs(networkfilesystem,网络文件系统)的方式提供给所有的计算节点挂载使用。管理设备在锁目录下分别为所其管理的各个卷组vg分别配置一个空文件作为锁文件,每个锁文件都根据对应的vg名称来命名,如图4中的.xxxx-vg1、.xxxx-vg2……等文件。管理设备还可以进一步为所有的锁文件配置一个具有特殊名称的空文件作为入口文件,如图4中的.xxxx-00000000文件。

在本步骤中,计算节点接收数据处理请求(该数据处理请求是处理vg中元数据的请求),首先从管理设备中调用入口文件,然后根据待处理vg的数量对入口文件加锁,其中,可以对入口文件加读锁或者写锁。

步骤12,从管理设备的锁目录调用与数据处理请求对应的待处理vg的锁文件,并对待处理vg的锁文件加写锁,其中,一个锁文件对应一个vg。

在本步骤中,计算节点对入口文件加锁之后,可以根据待处理vg的名称,从管理设备的锁目录调用对应名称的锁文件。对待处理vg的锁文件加写锁之后,可以将待处理vg锁住,该计算节点可以处理待处理vg中的元数据,并且无论步骤11中对入口文件加的是读锁还是写锁,其他计算节点都无法再对待处理vg的锁文件加锁,也就是说,对待处理vg的锁文件加写锁之后,其他计算节点将无法读取也无法修改待处理vg中的元数据,避免多个计算节点同时处理相同vg中的元数据,实现了多个计算节点lvm并发访问相同vg的互斥,提高数据可靠性。

步骤13,根据数据处理请求,处理待处理vg中的元数据。

在本步骤中,计算节点可以根据数据处理请求执行相应的lvm操作。数据请求可以包括读取和/或修改待处理vg中元数据的请求。由于步骤12中对待处理vg的锁文件加了写锁,在本步骤中,计算节点无论读取还是修改该待处理vg中的元数据,都不会受到其他计算节点的干扰。

步骤14,释放锁文件的写锁和入口文件的锁。

在本步骤中,为了不影响其他计算节点对待处理vg的元数据进行处理,计算节点处理完待处理vg中的元数据之后,需要释放锁文件的写锁和入口文件的锁。

通过步骤11-14可以看出,本公开实施例提供的lvm数据处理方法,当接收到数据处理请求时,从管理设备的锁目录调用入口文件,并对入口文件加锁,其中,入口文件对应多个卷组vg,从管理设备的锁目录调用与数据处理请求对应的待处理vg的锁文件,并对待处理vg的锁文件加写锁,其中,一个锁文件对应一个vg,根据数据处理请求,处理待处理vg中的元数据,释放锁文件的写锁和入口文件的锁。本公开实施例提供一种集中式锁机制,由管理设备集中管理文件锁,各个计算节点需使用文件锁时,只需调用相应的锁文件进行加锁处理,节省通信成本;此外,通过设置入口文件,可以实现对多个vg加全局锁,无需针对每个vg分别加锁,提高加锁效率。

在一些实施例中,所述对所述入口文件加锁(即步骤11),可以包括以下步骤:在预设时长内对入口文件加锁;其中,若加锁成功,则从管理设备的锁目录调用与数据处理请求对应的待处理vg的锁文件;若加锁未成功,则再次对入口文件加锁。在本步骤一些实施例中,可以设置预设时长作为加锁超时时间,在该加锁超时时间内,计算节点可以对入口文件加锁,若加锁成功,此时计算节点可以直接从管理设备的锁目录调用待处理vg的锁文件,若加锁未成功,说明入口文件当前可能被其他计算节点加了写锁并且还未释放该写锁,此时可以再次对入口文件加锁直至加锁成功。若在该加锁超时时间内对入口文件加锁不成功,则结束流程。

在一些实施例中,所述入口文件和所述锁文件存储在所述管理设备的网络文件系统的配置文件中。管理设备在初始化阶段可以将锁目录(包括入口文件和锁文件)配置到nfs的配置文件中,以供各计算节点挂载使用。使用nfs的文件记录锁的进程销毁后可以自动解锁,因此可以有效解决当加锁进程被强制关闭或计算节点宕机之后锁残留导致的整个vg后续都无法使用的问题。

本公开实施例可以对管理设备所管理的全部vg加全局锁,即待处理vg可以为管理设备所管理的全部vg,所述对入口文件加锁(即步骤11),可以包括:对入口文件加写锁。相应的,所述释放入口文件的锁(即步骤14),可以包括:释放入口文件的写锁。

通过对入口文件加写锁,可以统一管理管理设备所管理的全部vg。由于加写锁的执行优先级高于加读锁的执行优先级,对入口文件加写锁的lvm命令被优先执行,其他计算节点无法再对入口文件加锁(既不可以加读锁也不可以加写锁)。并且,当对入口文件加写锁之后,后续对待处理vg的锁文件加写锁时就不需要为了防止死锁而先对锁文件排序再对锁文件按顺序加锁,从而提高了加锁效率。

在一些实施例中,锁目录还可以包括锁文件列表,锁文件列表用于记录所述管理设备所管理的全部vg对应的锁文件的名称。

当待处理vg为管理设备所管理的全部vg时,所述从管理设备的锁目录调用与数据处理请求对应的待处理vg的锁文件(即步骤12),包括:从管理设备的锁目录调用锁文件列表。相应的,所述对待处理vg的锁文件加写锁,包括:对锁文件列表中记录的各锁文件逐个加写锁。需要说明的是,为各个锁文件加写锁的操作无法并行执行,因此,按照锁文件列表中记录的锁文件的名称,逐个对各个锁文件加写锁。在一些实施例中,计算节点直接调用锁文件列表,根据锁文件列表中记录的锁文件名称的顺序为各个锁文件加写锁。由于之前已对入口文件加写锁,因此,为不同锁文件加写锁的先后顺序不会导致死锁的情况发生,此时不需要先将锁文件排序后再按顺序对各锁文件加写锁,只需要根据锁文件列表记录的管理设备所管理的全部vg对应的锁文件的名称,对各锁文件逐个加写锁直至全部加锁成功即可。

本公开实施例还可以对管理设备所管理的某一个vg单独加锁,即待处理vg可以为管理设备所管理的一个vg,所述对入口文件加锁(即步骤11),可以包括:对入口文件加读锁。相应的,所述释放入口文件的锁(即步骤14),可以包括:释放入口文件的读锁。需要说明的是,对入口文件加读锁之后,其他计算节点也可以对入口文件加读锁,但无法对入口文件加写锁。也就是说,通过对入口文件加读锁,其他计算节点仍然可以对该入口文件加读锁,这样,其他计算节点可以对其他vg的锁文件加写锁,并处理该vg的元数据,从而实现对不同vg中数据操作的并发处理。

需要说明的是,对某一个vg单独加锁的场景下(即待处理vg为管理设备所管理的某一个vg),也可以对入口文件加写锁,但是若对入口文件加写锁,则其他计算节点既无法对入口文件加读锁也无法对入口文件加写锁,这样,就无法实现对不同vg中数据操作的并发处理,导致数据处理效率低。

在一些实施例中,当待处理vg为管理设备所管理的某一个vg时,所述释放锁文件的写锁和入口文件的锁,可以包括:先释放入口文件的读锁,再释放待处理vg的锁文件的写锁。先释放入口文件的锁,再释放待处理vg的锁文件的写锁,可以使得其他计算节点能够及时对入口文件加写锁。

需要说明的是,当待处理vg为管理设备所管理的某一个vg时,计算节点还可以在对待处理vg的锁文件加写锁(即步骤12)之后先释放入口文件的读锁,再处理待处理vg中的元数据(即步骤13),最后释放待处理vg的锁文件的写锁。在步骤12之后先释放入口文件的读锁,也可以使得其他计算节点能够及时对入口文件加写锁。

本公开另一实施例还提供一种lvm数据处理方法,如图4所示,所述lvm数据处理方法包括:

在网络文件系统的配置文件配置一个锁目录,所述锁目录包括入口文件和多个锁文件,其中,入口文件对应多个卷组vg,每个锁文件分别对应一个vg。

进一步的,如图4所示,所述锁目录还包括锁文件列表,所述锁文件列表用于记录管理设备所管理的全部vg对应的锁文件的名称。

如图4所示,即管理设备中配置有锁目录,通过nfs的方式提供给所有的计算节点挂载使用。在锁目录下为管理设备所管理的每一个vg分别创建一个对应的根据vg名称命名的空文件作为锁文件使用,如.xxxx-vg1、.xxxx-vg2……等文件。在锁目录下创建一个特殊文件(即锁文件列表),用于维护所有创建的锁文件,供加全局锁时使用,如.lock_list文件。在锁目录下创建一个特殊名称的空文件作为所有加锁操作的入口文件,如.xxxx-00000000文件。

以下结合两个具体的实施例,对所述lvm数据处理方法进行详细说明。

当所述待处理vg为管理设备所管理的全部vg时,计算节点接收到数据处理请求时,可以执行以下步骤:计算节点从管理设备调用文件名为.xxxx-00000000的入口文件,在预设时长内对该入口文件加写锁。具体的,计算节点从管理设备调用文件名为.lock_list的锁文件列表文件,根据锁文件列表中记录的锁文件名称逐个对.xxxx-vg1、.xxxx-vg2……等文件加写锁。计算节点根据数据处理请求执行lvm操作,在处理完成待处理vg中的元数据之后,释放所有锁文件.xxxx-vg1、.xxxx-vg2……的写锁,并释放入口文件的写锁。

当所述待处理vg为管理设备所管理的一个vg如文件名为.xxxx-vg1的锁文件时,计算节点接收到数据处理请求时,从管理设备调用文件名为.xxxx-00000000的入口文件,在预设时长内对该入口文件加读锁。计算节点对文件名为.xxxx-vg1的锁文件加写锁,根据数据处理请求执行lvm操作,在处理.xxxx-vg1文件对应vg中的元数据之后,释放入口文件的读锁,并释放.xxxx-vg1文件的写锁。

基于相同的技术构思,本公开实施例还提供一种lvm数据处理装置,如图5所示,所述lvm数据处理装置包括接收模块51、调用模块52和处理模块53。

接收模块51用于,接收数据处理请求。

调用模块52用于,从管理设备调用入口文件,其中,入口文件对应多个卷组vg,一个锁文件对应一个vg;从所述管理设备调用待处理vg的锁文件;从所述管理设备调用与所述数据处理请求对应的待处理vg的锁文件。

处理模块53用于,对所述入口文件加锁;根据所述数据处理请求,处理所述待处理vg中的元数据;释放所述锁文件的写锁和所述入口文件的锁。

在一些实施例中,处理模块53用于,在预设时长内对所述入口文件加锁;其中,若加锁成功,则从所述管理设备调用与所述数据处理请求对应的待处理vg的锁文件;若加锁未成功,则再次对所述入口文件加锁。

在一些实施例中,调用模块52用于,从所述管理设备的网络文件系统的配置文件中调用所述入口文件和所述锁文件。

在一些实施例中,与所述数据处理请求对应的所述待处理vg为管理设备所管理的全部vg,处理模块53用于,对所述入口文件加写锁;释放所述入口文件的写锁。

在一些实施例中,调用模块52用于,从所述管理设备调用锁文件列表,其中,所述锁文件列表用于记录所述管理设备所管理的全部vg对应的锁文件的名称。

处理模块53用于,对所述锁文件列表中记录的各锁文件逐个加写锁。

在一些实施例中,与所述数据处理请求对应的所述待处理vg为一个vg,处理模块53用于,对所述入口文件加读锁;释放所述入口文件的读锁。

在一些实施例中,与所述数据处理请求对应的所述待处理vg为一个vg,处理模块53用于,先释放所述入口文件的读锁,再释放所述待处理vg的锁文件的写锁。

本公开实施例还提供了一种管理设备,如图6所示,该管理设备包括:配置模块61;

配置模块61用于,在网络文件系统的配置文件配置一个锁目录,所述锁目录包括入口文件和多个锁文件,其中,入口文件对应多个卷组vg,每个锁文件分别对应一个vg。

在一些实施例中,配置模块61还用于,在所述锁目录配置锁文件列表,所述锁文件列表用于记录管理设备所管理的全部vg对应的锁文件的名称。

本公开实施例还提供了一种计算机设备,该计算机设备包括:一个或多个处理器以及存储装置;其中,存储装置上存储有一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如前述各实施例所提供的lvm数据处理方法。

本公开实施例还提供了一种计算机可读介质,其上存储有计算机程序,其中,该计算机程序被执行时实现如前述各实施例所提供的lvm数据处理方法。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本发明的范围的情况下,可进行各种形式和细节上的改变。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1