发明内容
针对现有技术中当为工作组中的多个虚拟机分配IP地址时,不仅分配速度慢,而且不能将一个工作组中的虚拟机的IP地址限定在具有连续IP地址的IP地址池中的缺陷,本发明提出了能够解决上述缺陷的虚拟机的IP地址的划分方法。
根据本发明的一方面,提供了一种虚拟机的IP地址的获取方法,其特征在于,包括:IP管理系统获取一组IP地址中所有具有不可用IP地址的第一IP地址池,并且确定最后一个第一IP地址池的不可用尾地址;IP管理系统确定一组IP地址中的可用尾地址;以及IP管理系统确定不可用尾地址和可用尾地址之间的IP地址的数量大于或等于虚拟机所需要的IP地址的数量,并且在最后一个不可用IP地址之后连续地获取可用IP地址作为连续可用IP地址。
优选地,分别通过以下公式获取不可用尾地址的第一值和可用尾地址的第二值:第一值为:PoolValue1=a×224+b×216+c×28+d,其中,a.b.c.d为最后一个第一IP地址池的尾地址;以及第二值为:PoolValue2=e×224+f×216+g×28+h,其中,e.f.g.h为一组IP地址池的尾地址。
优选地,IP地址的获取方法还包括:IP管理系统将第二值和第一值之间的差值与虚拟机所需要的IP地址的数量进行比较;以及如果差值大于或等于虚拟机所需要的IP地址的数量,则IP管理系统在最后一个不可用IP地址之后连续地获取可用IP地址作为连续可用IP地址。
优选地,IP管理系统将连续可用IP地址作为可用IP地址池。
优选地,IP地址的获取方法还包括:IP管理系统将可用IP地址池中的多个连续可用IP地址分配给虚拟机。
优选地,IP地址的获取方法还包括:当虚拟机的数量增加并且第一值和第二值之间的IP地址的数量大于虚拟机所需要的IP地址的数量时,IP管理系统将紧邻可用IP地址池的尾地址的增加的虚拟机的数量的连续IP地址分配给增加的虚拟机。
优选地,IP地址的获取方法还包括:当虚拟机的数量减少时,IP管理系统将可用IP地址池中分配给虚拟机的第一个连续可用IP地址之前或分配给虚拟机的最后一个连续可用IP地址之后的IP地址删除。
根据本发明的另一方面,提供了本发明提供了一种虚拟机的IP地址的划分方法,其特征在于,包括:IP管理系统获取一组IP地址中所有具有不可用IP地址的第一IP地址池,并且确定每个第一IP地址池中第一不可用IP地址的第一值和第二不可用IP地址的第二值;IP管理系统根据虚拟机的所需IP地址的数量确定IP地址池的类型,并根据IP地址池的类型将一组IP地址连续地划分成多个第二IP地址池,并确定每个第二IP地址池中第一IP地址的第三值和第二IP地址的第四值;以及IP管理系统确定具有均不介于第一值和第二值之间的第三值和第四值的第二IP地址池,并将其中IP地址作为连续可用IP地址。
优选地,不同类型的IP地址池具有不同数量的IP地址。
优选地,不同类型的IP地址具有2n个IP地址,其中,2n-1<所需IP地址的数量≤2n,n>5或者0<所需IP地址的数量≤2n,n=5。
优选地,每个第一IP地址池中第一不可用IP地址是每个第一IP地址池的首地址并且每个第一IP地址池中第二不可用IP地址是每个第一IP地址池的尾地址;以及每个第二IP地址池中第一IP地址是每个第二IP地址池中的首地址并且每个第二IP地址是每个第二IP地址池中的尾地址。
优选地,第一值、第二值、第三值以及第四值分别通过以下公式而获得:第一值为:PoolValue1=a×224+b×216+c×28+d,第二值为:PoolValue2=a×224+b×216+c×28+d+s,其中,a.b.c.d为每个第一IP地址池的首地址并且s为每个第一IP地址池中的IP地址的数量;第三值为:PoolValue3=e×224+f×216+g×28+h,第四值为:PoolValue4=e×224+f×216+g×28+h+t,其中,e.f.g.h为每个第二IP地址池中的首地址并且t为每个第二IP地址池中的IP地址的数量;以及每个第一IP地址池的第一值和第二值生成二维数组PoolValue[][2],其中,二维数组PoolValue[][2]是以第一值为第一列和第二值为第二列的i*2的二维矩阵,i为第一IP地址池的数量。
优选地,IP地址的划分方法还包括:生成二维数组PoolValue[][2]之后,根据二维矩阵的第一列PoolValue[i][0]从小到大对二维数组的行进行排序。
优选地,IP管理系统将第一个具有连续可用IP地址的第二IP地址池作为可用IP地址池,并且将其他具有连续可用IP地址的第二IP地址池作为预留IP地址池。
优选地,IP地址的划分方法还包括:IP管理系统将可用IP地址池中的多个连续可用IP地址分配给虚拟机并删除可用IP地址池中在分配给虚拟机的第一个连续可用IP地址之前以及在分配给虚拟机的最后一个连续可用IP地址之后的连续可用IP地址,其中,将第一个连续可用IP地址和最后一个连续可用IP地址之间的IP地址作为用户IP地址池。
优选地,IP地址的划分方法还包括:当虚拟机的数量增加时,如果增加后的虚拟机的总数量小于或等于用户IP地址池中IP地址的数量,则IP管理系统将用户IP地址池中未分配的IP地址分配给增加的虚拟机。
优选地,IP地址的划分方法还包括:当虚拟机的数量增加时,如果增加后的虚拟机的总数量大于用户IP地址池中IP地址的数量,则在IP管理系统将与第一个连续可用IP地址和最后一个连续可用IP地址紧邻的附加连续可用IP地址添加至用户IP地址池中,并将增加的用户IP地址池中未分配的IP地址分配给增加的虚拟机。
优选地,IP地址的划分方法还包括:当虚拟机的数量增加时,将增加的用户IP地址池中未分配的IP地址分配给增加的虚拟机之后,IP管理系统将预留IP地址池中的连续可用的IP地址分配给剩余未被分配IP地址的虚拟机。
优选地,IP地址的划分方法还包括:IP管理系统将用户IP地址池或者预留IP地址池中分配给虚拟机的第一个连续可用IP地址之前或分配给虚拟机的最后一个连续可用IP地址之后的IP地址删除。
利用本发明的虚拟机的IP地址的获取方法和划分方法,不仅可以大大提高获取IP地址的速度,而且可以将获取的一组IP地址划分为在具有连续IP地址的可用IP地址池中,从而将一个工作组中的虚拟机的IP地址限定在具有连续IP地址的可用IP地址池中。可以根据用户需要,将具有分配给虚拟机的IP地址的可用IP地址池进行减小或扩展处理,并且保证减小后的可用IP地址池或者扩展后的IP地址池仍具有连续IP地址。从而便于管理员对同一集群或者同一工作组中的的虚拟机进行管理。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
IP管理系统根据IP地址范围添加与其相对应的一组IP地址。IP地址范围是根据IP地址和掩码确定的多个IP地址。具体地,IP管理系统根据IP地址范围约束系统中与其相对应的一组IP地址。IP地址范围是根据IP地址子网和掩码确定的拥有多个IP地址的地址空间域。这可以通过用户输入来获取IP地址范围,即,当IP地址空间子网为a.b.c.d并且掩码值为rangemask时,则IP地址空间域中可管理的IP地址的数量为2(32-RangeMask)个。例如,当IP地址为192.168.0.0并且子网掩码值rangemask为24时,IP地址的数量为28=256个子网地址,即,IP地址为192.168.0.0至192.168.0.255。因此,使用IP地址子网和掩码规定一个IP地址范围,也就是IP管理系统根据IP地址范围管理与其相对应的一组IP地址。
IP管理系统在添加的IP范围中搜索所有已使用IP地址池,如果没有搜索到已使用IP地址池,则IP管理系统可以直接从这一组IP地址中获取连续的虚拟机所需要数量的IP地址,并且直接分配给系统所管辖的组织,例如,虚拟机。如果IP管理系统搜索到已使用IP地址池,则通过以下虚拟机的IP地址的获取方法和/或划分方法来找到可用IP地址池。
图1为根据本发明的第一实施例的虚拟机的IP地址的获取方法的整体流程图。虚拟机的IP地址的获取方法100包括:在步骤102中,IP管理系统获取一组IP地址中所有具有不可用IP地址的第一IP地址池,并且确定最后一个第一IP地址池的不可用尾地址。具体地,可以直接从一组IP地址的后部开始搜索不可用IP地址池,该不可用IP地址池就是最后一个不可用IP地址池。然后确定该不可用IP地址池的不可用尾地址,也就是从一组IP地址的后部最先找到的不可用IP地址。
在步骤104中,IP管理系统确定一组IP地址中的可用尾地址。在一个实施例中,例如,当IP地址为192.168.0.0并且子网掩码值rangemask为24时,则该组IP地址的尾地址为192.168.0.255。
在步骤106中,IP管理系统确定不可用尾地址和可用尾地址之间的IP地址的数量大于或等于虚拟机所需要的IP地址的数量,并且在最后一个不可用IP地址之后连续地获取可用IP地址作为连续可用IP地址。IP管理系统可以确定该一组IP地址池后部的可用IP地址的数量,并从这些连续可用的IP地址中连续地获取紧邻不可用尾地址的虚拟机所需要的数量的连续IP地址,即,在最后一个不可用IP地址之后的IP范围尾地址空间中获取虚拟机所需要的数量的连续IP地址。
通过该实施例的虚拟机的IP地址获取方法可以迅速找到连续可用IP地址。大幅减少了获取可用IP地址的时间,因此,当一组IP地址尾部的可用IP地址能够满足虚拟机的需求的情况下,这种获取方法是一种简单可行的方法。
图2为根据本发明的第一实施例的虚拟机的IP地址的获取方法的具体流程图。虚拟机的IP地址的获取方法200包括:在步骤202中,IP管理系统获取一组IP地址中所有具有不可用IP地址的第一IP地址池,确定最后一个第一IP地址池的不可用尾地址和一组IP地址的可用尾地址并且通过公式获取不可用尾地址的第一值和可用尾地址的第二值。具体地,IP管理系统通过以上方法获取不可用尾地址和可用尾地址。然后,分别通过以下公式获取不可用尾地址的第一值和可用尾地址的第二值:第一值为:PoolValue1=a×224+b×216+c×28+d,其中,a.b.c.d为最后一个第一IP地址池的尾地址;以及第二值为:PoolValue2=e×224+f×216+g×28+h,其中,e.f.g.h为一组IP地址池的尾地址。
IP地址的获取方法200还包括:在步骤204中,IP管理系统将第二值和第一值之间的差值与虚拟机所需要的IP地址的数量进行比较;以及如果差值大于或等于虚拟机所需要的IP地址的数量,则IP管理系统紧邻最后一个不可用IP地址连续地获取可用IP地址作为连续可用IP地址。具体地,IP管理系统通过将不可用尾地址和可用尾地址分别转换为第一值和第二值,就可以通过可用尾地址和不可用尾地址的差值来直接获取一组IP地址中尾部IP地址的数量,从而可以迅速判断出该尾部IP地址的数量是否能够满足虚拟机所需要的数量。在能够满足虚拟机的所需要的数量的情况下,IP管理系统紧邻最后一个不可用IP地址连续地获取可用IP地址作为连续可用IP地址。然后,IP管理系统将连续可用IP地址作为可用IP地址池。
IP地址的获取方法200还包括:在步骤206中,IP管理系统将可用IP地址池中的多个连续可用IP地址分配给虚拟机。从而保证分配给虚拟机的IP地址在同一可用IP地址池中,而且虚拟机的IP地址是连续的。
IP地址的获取方法还包括:在步骤208中,当虚拟机的数量增加并且第一值和第二值之间的IP地址的数量大于虚拟机所需要的IP地址的数量时,IP管理系统将紧邻可用IP地址池的尾地址的增加的虚拟机的数量的连续IP地址分配给增加的虚拟机。由于该可用IP地址池前面为不可用IP地址池,所以当虚拟机的数量增加并且第一值和第二值之间的IP地址的数量大于增加后的虚拟机所需要的IP地址的数量时,IP管理系统可以将可用IP地址池后面的虚拟机增加的数量的IP地址添加至可用IP地址池,然后将添加的这部分IP地址分配给增加的虚拟机。从而保证增加后的虚拟机的IP地址仍然处于具有连续可用IP地址的同一可用IP地址池中。
IP地址的获取方法还包括:在步骤210中,当虚拟机的数量减少时,IP管理系统将可用IP地址池中分配给虚拟机的第一个连续可用IP地址之前或分配给虚拟机的最后一个连续可用IP地址之后的IP地址删除。当虚拟机的数量减少时,如果减少的虚拟机与可用IP地址池中的前部或后部IP地址相对应,则IP管理系统可以将可用IP地址池中分配给虚拟机的第一个连续可用IP地址之前或分配给虚拟机的最后一个连续可用IP地址之后的IP地址删除。IP管理系统没有删除可用IP地址池的中间的IP地址,从而保证删除部分IP地址后,可用IP地址池中的IP地址仍然是连续的IP地址,实现将同一工作组中的虚拟机的IP地址限定在同一可用IP地址池中,从而便于通过IP地址对工作组中的虚拟机进行管理。
当IP管理系统确定不可用尾地址和可用尾地址之间的IP地址的数量小于虚拟机所需要的IP地址的数量,或者在虚拟机的数量增加情况下,不可用尾地址和可用尾地址之间的IP地址的数量小于增加的虚拟机所需要的IP地址的数量时,IP管理系统通过以下第二实施例的划分方法在一组IP地址中的查找可用IP地址池,而不是从一组IP地址的尾部查找可用IP地址池。
图3为根据本发明的第二实施例的虚拟机的IP地址的划分方法的整体流程图。虚拟机的IP地址的划分方法300包括:在步骤302中,IP管理系统获取一组IP地址中所有具有不可用IP地址的第一IP地址池,并且确定每个第一IP地址池中第一不可用IP地址的第一值和第二不可用IP地址的第二值。具体地,IP管理系统在一组IP地址中获取所有具有不可用IP地址的IP地址池,作为第一IP地址池,并且确定所有第一IP地址池中的第一不可用IP地址的第一值和第二不可用IP地址的第二值。其中,每个第一IP地址池中第一不可用IP地址是每个第一IP地址池的首地址并且每个第一IP地址池中第二不可用IP地址是每个第一IP地址池的尾地址;以及每个第二IP地址池中第一IP地址是每个第二IP地址池中的首地址并且每个第二IP地址是每个第二IP地址池中的尾地址。
在步骤304中,IP管理系统根据虚拟机的所需IP地址的数量确定IP地址池的类型,并根据IP地址池的类型将一组IP地址连续地划分成多个第二IP地址池,并确定每个第二IP地址池中第一IP地址的第三值和第二IP地址的第四值。其中,不同类型的IP地址池具有不同数量的IP地址。不同类型的IP地址(即,IP地址空间)具有2n个IP地址,其中,2n-1<所需IP地址的数量≤2n,n>5或者0<所需IP地址的数量≤2n,n=5。
例如,当用户所需的IP地址的数量m为0<m≤25时,将该用户的IP地址池确定为一类IP地址池:255.255.255.224(32个IP地址);当用户所需的IP地址的数量m为25<m≤26时,将该用户的IP地址池确定为二类IP地址池:255.255.255.192(64个IP地址);当用户所需的IP地址的数量m为26<m≤27时,将该用户的IP地址池确定为三类IP地址池:255.255.255.128(128个IP地址);当用户所需的IP地址的数量m为27<m≤28时,将该用户的IP地址池确定为四类IP地址池:255.255.255.0(256个IP地址);当用户所需的IP地址的数量m为28<m≤29时,将该用户的IP地址池确定为五类IP地址池:255.255.254.0(512个IP地址);以及当用户所需的IP地址的数量m为29<m≤210时,将该用户的IP地址池确定为六类IP地址池:255.255.252.0(1024个IP地址)等。然后,根据IP地址池的类型将一组IP地址连续地划分为多个IP地址池,其中,每一个IP地址池都具有多个连续IP地址。在一个实施例中,例如,当IP地址池的类型为一类时,将一组IP地址连续地划分为多个IP地址池,其中,每一个IP地址池都具有32个连续IP地址。从而,这种划分方法能够保证一个工作组的虚拟机的IP地址具有连续的IP地址。
在步骤306中,IP管理系统确定具有均不介于第一值和第二值之间的第三值和第四值的第二IP地址池,并将其中IP地址作为连续可用IP地址。具体地,IP管理系统确定第二IP地址池中不包括不可用IP地址,也就是说,第二IP地址池中的所有的IP地址都是可用IP地址,并且其中的可用IP地址是连续的。
通过这种划分方法可以获取的连续可用IP地址,从而将同一工作组中的虚拟机的IP地址限定为连续的IP地址,也就是限定在具有连续地址的可用IP地址池中,因此便于管理员通过IP地址对同一工作组中的虚拟机进行管理。
由于IP地址分为4段,所以比较期间分别对不同段进行比较,增加了计算量。因此,为了简化比较步骤的复杂性,第一值、第二值、第三值以及第四值可以分别通过以下公式而获得:
第一值为:PoolValue1=a×224+b×216+c×28+d,(1)
第二值为:PoolValue2=a×224+b×216+c×28+d+s,(2)
其中,a.b.c.d为每个第一IP地址池的首地址并且s为每个第一IP地址池中的IP地址的数量;
第三值为:PoolValue3=e×224+f×216+g×28+h,(3)
第四值为:PoolValue4=e×224+f×216+g×28+h+t,(4)
其中,e.f.g.h为每个第二IP地址池中的首地址并且t为每个第二IP地址池中的IP地址的数量;以及每个第一IP地址池的第一值和第二值生成二维数组PoolValue[][2],其中,二维数组PoolValue[][2]是以第一值为第一列和第二值为第二列i的二维矩阵,i为第一IP地址池的数量(即,IP地址池的个数)。
将4段IP地址通过以上公式(1)和(2)转换为与每个第一IP地址池的首地址和尾地址相对应的第一值和第二值,并且通过以上公式(3)和(4)转换为与每个第二IP地址池中的首地址和尾地址相对应的第三值和第四值。其中,每个所述第一IP地址池中的IP地址的数量可以通过掩码进行计算。例如,当第一IP地址池的首地址为a.b.c.d并且掩码为MaskValue1时,第一IP地址池中的IP地址的数量为s=2(32-MaskValue1);当第二IP地址池的首地址为e.f.g.h并且掩码为MaskValue2时,第二IP地址池中的IP地址的数量为t=2(32 -MaskValue2)。因此,通过公式可以容易地算出第一值、第二值、第三值以及第四值。为了便于进行存储和计算,第一IP地址池中的首地址的第一值和尾地址的第二值可以生成二维数组,也就是i*2的二维矩阵。在生成二维数组PoolValue[][2]之后,根据二维矩阵的第一行PoolValue[i][0]从小到大对二维数组的行进行排序,从而生成有序二维数组。IP管理系统将有序二维数组与第三值和第四值进行比较,确定具有均不介于第一值和第二值之间的第三值和第四值的第二IP地址池,并将其中IP地址作为连续可用IP地址。因此,通过将相应的地址分别转换为第一值、第二值、第三值以及第四值,大幅简化了比较步骤,从而将复杂的比较步骤转换为数字比较步骤,提高了计算速度。
图4为根据本发明的第二实施例的虚拟机的IP地址的划分方法的具体流程图。IP管理系统将第一个具有连续可用IP地址的第二IP地址池作为可用IP地址池,并且将其他具有连续可用IP地址的第二IP地址池作为预留IP地址池。IP地址的划分方法400包括:在步骤402中,IP管理系统将可用IP地址池中的多个连续可用IP地址分配给虚拟机并删除可用IP地址池中在分配给虚拟机的第一个连续可用IP地址之前以及在分配给虚拟机的最后一个连续可用IP地址之后的连续可用IP地址,其中,将第一个连续可用IP地址和最后一个连续可用IP地址之间的IP地址作为用户IP地址池。从而保证虚拟机的IP地址处于同一用户IP地址池中。具体地,IP管理系统将可用IP地址池中的连续可用IP地址分配给虚拟机之后,为了保持可用IP地址池中的IP地址的连续性,将可用IP地址池中前部和后部的未分配的连续的IP地址删除而没有删除中间的IP地址,从而将删除后的可用IP地址池作为用户IP地址池。
IP地址的划分方法400还包括:在步骤404中,当虚拟机的数量增加时,如果增加后的虚拟机的总数量小于或等于用户IP地址池中IP地址的数量,则IP管理系统将用户IP地址池中未分配的IP地址分配给增加的虚拟机。具体地,当增加后的虚拟机的总数量小于或等于用户IP地址池中的IP地址的数量时,IP管理系统可以首先将该用户IP地址池中未分配的IP地址分配给增加的虚拟机。在虚拟机增加的情况下,也将虚拟机的IP地址限定在具有连续IP地址的用户IP地址池中。
IP地址的划分方法400还包括:在步骤406中,当虚拟机的数量增加时,如果增加后的虚拟机的总数量大于用户IP地址池中IP地址的数量,则在IP管理系统将与第一个连续可用IP地址和最后一个连续可用IP地址紧邻的附加连续可用IP地址添加至用户IP地址池中,并将增加的用户IP地址池中未分配的IP地址分配给增加的虚拟机。具体地,如果用户IP地址池中的IP地址的数量不足时,IP管理系统在用户IP地址池的周围搜索连续可用的IP地址,并且将搜索到的连续可用的IP地址添加至用户IP地址池中,然后将用户IP地址池中未分配的IP地址分配给增加的虚拟机。因此,在虚拟机增加的情况下,也将虚拟机的IP地址限定在具有连续IP地址的用户IP地址池中。
IP地址的划分方法400还包括:在步骤408中,当虚拟机的数量增加时,将增加的用户IP地址池中未分配的IP地址分配给增加的虚拟机之后,IP管理系统将预留IP地址池中的连续可用的IP地址分配给剩余未被分配IP地址的虚拟机。具体地,如果增加的用户IP地址池中的IP地址不足时,IP管理系统将增加的用户IP地址池中的未分配的IP地址分配给增加的虚拟机,并且剩余的虚拟机作为另一工作组,将预留IP地址池中的IP地址分配给剩余的未分配IP地址的虚拟机,即,另一工作组中的虚拟机。因此,该步骤能够保证在虚拟机的增加数量较大时,也保证同一工作组的虚拟机的IP地址处于具有连续IP地址的同一IP地址池中。
IP地址的划分方法400还包括:在步骤410中,IP管理系统将用户IP地址池或者预留IP地址池中第一个连续可用IP地址之前或最后一个连续可用IP地址之后的IP地址删除。通过该步骤可以将用户IP地址池或者预留IP地址池的前部或后部未分配的IP地址或者不需要的IP地址删除,以供其他用户使用,从而提高了IP地址的利用率。
如果IP管理系统通过这两种方法均无法获取满足条件的可用IP地址池时,则通知用户重新输入IP地址范围和虚拟机所需要的IP地址的数量以在另一组地址上实施这两种方法,来获取满足条件的可用IP地址。
利用本发明的虚拟机的IP地址的获取方法和划分方法,不但可以在尽量少的时间内获取虚拟机需要的IP地址,而且保证将同一工作组中的虚拟机的IP地址限定在具有连续IP地址的IP地址池中,从而便于管理员通过IP地址对同一工作组中的虚拟机进行管理。此外,在虚拟机的数量变化时,相应地改变IP地址池,从而确保IP地址池中的IP地址连续,因此可以也可以实现将同一工作组中的虚拟机的IP地址限定在具有连续IP地址的IP地址池中。该方法尤其在为多个工作组中的虚拟机分配IP地址具有优势,通过将同一工作组中的虚拟机的IP地址限定在具有连续IP地址的同一IP地址池中,可以便于利用多个IP地址池中的IP地址对多个工作组进行管理。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。