Kvm虚拟化平台下系统自动修改计算机名的方法与系统的制作方法

文档序号:9667182阅读:647来源:国知局
Kvm虚拟化平台下系统自动修改计算机名的方法与系统的制作方法
【技术领域】
[0001]本发明涉及计算机软件技术领域,特别是涉及KVM(Kernel_based VirtualMachine)虚拟化平台下系统自动修改计算机名的方法与系统。
【背景技术】
[0002]随着桌面虚拟化技术的发展,目前已有越来越多的公司和企业开始部署桌面虚拟化系统。
[0003]在虚拟化桌面使用过程中,用户常需要快速部署虚拟机,管理平台提供虚拟机的复制功能,但复制出来的windows虚拟机其计算机名称完全一致,在一些应用和管理场景中,计算机名称依然扮演着举足轻重的位置,特别应该提出的是,在windows XP操作系统中,当网络上存在相同名称的计算机时,操作系统会不断提醒用户计算机同名。
[0004]针对上述情况,一般情况下需要人工手动进行修改设置,费时费力,给用户和管理都带来极大的不便。

【发明内容】

[0005]基于此,有必要针对目前需要人工手动修改计算机名,导致效率低下的问题,提供一种KVM虚拟化平台下系统自动修改计算机名的方法与系统,以实现对计算机名的高效与自动修改。
[0006]—种KVM虚拟化平台下系统自动修改计算机名的方法,所述KVM虚拟化平台包括相互连接的服务器和虚拟机;
[0007]所述KVM虚拟化平台下系统自动修改计算机名的方法包括步骤:
[0008]获取服务器计算机名和虚拟机计算机名;
[0009]根据预设的规则,将所述服务器计算机名和所述虚拟机计算机名合成为新的计算机名;
[0010]根据所述新的计算机名,生成服务器代理通信消息;
[0011]当检测到所述虚拟机启动时,发送所述服务器代理通信消息至所述虚拟机;
[0012]通过所述虚拟机解析所述服务器代理通信消息,读取所述新的计算机名;
[0013]将所述虚拟机计算机名修改为所述新的计算机名。
[0014]—种KVM虚拟化平台下系统自动修改计算机名的系统,所述KVM虚拟化平台包括相互连接的服务器和虚拟机;
[0015]所述KVM虚拟化平台下系统自动修改计算机名的系统包括:
[0016]计算机名获取模块,用于获取服务器计算机名和虚拟机计算机名;
[0017]计算机名合成模块,用于根据预设的规则,将所述服务器计算机名和所述虚拟机计算机名合成为新的计算机名;
[0018]生成模块,用于根据所述新的计算机名,生成服务器代理通信消息;
[0019]发送模块,用于当检测到所述虚拟机启动时,发送所述服务器代理通信消息至所述虚拟机;
[0020]读取模块,用于通过所述虚拟机解析所述服务器代理通信消息,读取所述新的计算机名;
[0021]修改模块,用于将所述虚拟机计算机名修改为所述新的计算机名。
[0022]本发明KVM虚拟化平台下系统自动修改计算机名的方法与系统,获取服务器计算机名和虚拟机计算机名,根据预设的规则,将所述服务器计算机名和所述虚拟机计算机名合成为新的计算机名,根据所述新的计算机名,生成服务器代理通信消息,当检测到所述虚拟机启动时,发送所述服务器代理通信消息至所述虚拟机,通过所述虚拟机解析所述服务器代理通信消息,读取所述新的计算机名,将所述虚拟机计算机名修改为所述新的计算机名。整个过程中,无需人工手动修改虚拟机计算机名,可以实现对计算机名的高效与自动修改。
【附图说明】
[0023]图1为本发明KVM虚拟化平台下系统自动修改计算机名的方法第一个实施例的流程不意图;
[0024]图2为本发明KVM虚拟化平台下系统自动修改计算机名的方法第二个实施例的流程不意图;
[0025]图3为本发明KVM虚拟化平台下系统自动修改计算机名的系统第一个实施例的结构示意;
[0026]图4为本发明KVM虚拟化平台下系统自动修改计算机名的系统第二个实施例的结构示意。
【具体实施方式】
[0027]—种KVM虚拟化平台下系统自动修改计算机名的方法,所述KVM虚拟化平台包括相互连接的服务器和虚拟机。
[0028]KVM虚拟化平台是指所有采用KVM虚拟化技术的云计算服务器系统,在这个平台内包括相互连接的服务器和虚拟机。虚拟机一般设置有多台,服务器对多台虚拟机进行统一的设置于管理。非必要的,在KVM虚拟化平台下系统中,服务器加载有qemu-kvm程序以实现其基本功能,虚拟机加载有Vdagent程序以实现其基本功能,Vdagent程序是spice协议在Windows中的一种实现形式,作为代理服务用来跟qemu-kvm进行通讯。在服务器和虚拟机内都装载有操作系统,所述操作系统包括但不限于Linux操作系统以及windows操作系统。
[0029]如图1所示,所述KVM虚拟化平台下系统自动修改计算机名的方法包括步骤:
[0030]S100:获取服务器计算机名和虚拟机计算机名。
[0031]可以通过服务器的操作系统获取服务器计算机名,通过虚拟机的操作系统获取虚拟机名。例如,当操作系统为Linux操作系统时,调用Linux操作系统中的API (Applicat1nProgramming Interface,应用程序编程接口)popen,并执行命令hostname得到Linux计算机名字。
[0032]S200:根据预设的规则,将所述服务器计算机名和所述虚拟机计算机名合成为新的计算机名。
[0033]预设的规则是预先设定的,具体根据实际情况进行设定,例如最简单的可以设定服务器计算机名+虚拟机计算机名=新的计算机名的规则方式。简单来说,预设的规则可以看成一个预设的编码方式。
[0034]S300:根据所述新的计算机名,生成服务器代理通信消息。
[0035]服务器代理通信消息可以理解为文件传送消息,具体来说,服务器代理通信消息可以为VD_AGENT_FILE_XFER_DATA消息。在其中一个实施例中,步骤S300具体包括:
[0036]申请字符通道消息;
[0037]将所述新的计算机名填充至所述字符通道消息,生成服务器代理通信消息。
[0038]服务器申请一个字符通道消息,将新的计算机名填充到字符通道消息内,生成服务器代理通信消息。
[0039]S400:当检测到所述虚拟机启动时,发送所述服务器代理通信消息至所述虚拟机。
[0040]可以通过检测虚拟机操作系统是否启动来判断虚拟机是否启动,当虚拟机启动时,发送服务器代理通信消息(VD_AGENT_FILE_XFER_DATA消息)至所述虚拟机。
[0041]S500:通过所述虚拟机解析所述服务器代理通信消息,读取所述新的计算机名。
[0042]虚拟机接收到服务器代理通信消息,并的对其进行解析(这里可以理解为与之前编码相应的解码过程),读取新的计算机名。
[0043]S600:将所述虚拟机计算机名修改为所述新的计算机名。
[0044]虚拟机直接将自身计算机名修改为新的计算机名。具体来说,这个修改过程可以通过虚拟机操作系统调用API来完成。
[0045]本发明KVM虚拟化平台下系统自动修改计算机名的方法,获取服务器计算机名和虚拟机计算机名,根据预设的规则,将所述服务器计算机名和所述虚拟机计算机名合成为新的计算机名,根据所述新的计算机名,生成服务器代理通信消息,当检测到所述虚拟机启动时,发送所述服务器代理通信消息至所述虚拟机,通过所述虚拟机解析所述服务器代理通信消息,读取所述新的计算机名,将所述虚拟机计算机名修改为所述新的计算机名。整个过程中,无需人工手动修改虚拟机计算机名,可以实现对计算机名的高效与自动修改。
[0046]如图2所示,在其中一个实施例中,所步骤S600之后还包括:
[0047]S700:重启所述虚拟机。
[0048]重启虚拟机,虚拟机即已实现自动修改计算名。在需针对大量虚拟机进行批量修改计算机名时,可以针对每台虚拟机进行上述S100?S700的操作,实现虚拟机批量、高效修改计算机名。
[0049]在其中一个实施例中,所述将所述虚拟机计算机名修改为所述新的计算机名的步骤具体包括:
[0050]判断所述虚拟机计算机名与所述新的计算机名是否一致;
[0051]当所述虚拟机计算机名与所述新的计算机名不一致时,将所述虚拟机计算机名修改为所述新的计算机名;
[0052]当所述虚拟机计算机名与所述新的计算机名一致时,终止操作。
[0053]只有当虚拟机计算机名与新的计算机名不一致时才需要将其修改为新的计算机名,这样能够避免重复无意义修改虚拟机计算机名。
[0054]在其中一个实施例中,所述根据所述新的计算机名,生成服务器代理通信消息的步骤具体包括:
[0055]申请字符通道消息;
[0056]将所述新的计算机名填充至所述字符通道消息,生成服务器代理通信消息。
[0057]在其中一个实施例中,所述当检测到所述虚拟机启动时,发送所述服务器代理通信消息至所述虚拟机的步骤具体为:
[0058]当检测到所述虚拟机启动时,通过SPICE(Simple Protocol for IndependentComputing Environment,独立计算环境简单协议)协议的通道发送所述服务器代理通信消息至所述虚拟机。
[0059]SPICE是红帽企业虚拟化桌面版的三大主要技术组件之一,具有自适应能力的远程提交协议,能够提供与物理桌面完全相同的最终用户体验。
[0060]为了更进一步详细解释本发明KVM虚拟化平台下系统自动修改计算机名的方法的技术方案,下面采用具体实例并集合软件指令方式对整个技术方案进行详细描述。
[0061]在具体实例中,KVM虚拟化平台中在服务器端加载qemu-kvm程序,在虚拟机客户端加载Vdagent程序,服务器采用Linux操作系统,虚拟机采用windows操作系统。
[0062]步骤一:调用Linux API popen,执行命令hostname得到服务器Linux计算机名字,通过windows操作系统获取虚拟机计算机名。
[0063]步骤二:调用sprintf将linux计算机名和虚拟机名合成为windows新计算机名。
[0064]步骤三:申请一个字符数据通道消息,填充新消息,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1