KVM虚拟化技术实践
2017-02-01 16:01
453 查看
[版权申明:本文系作者原创,转载请注明出处]
文章出处:http://blog.csdn.net/sdksdk0/article/details/54809159
作者:朱培 ID:sdksdk0
今天分享的文章是关于云计算中的kvm(虚拟化技术),通过本文你可以知道的是kvm是干什么的,如何使用kvm,如何通过java操作xml从而生成生成虚拟机。
种去耦合技术,在一台物理机器上逻辑的划分出多台机器。
• 虚拟化的目标是实现IT资源利用效率和灵活性的最大化
在一台物理主机上虚拟出多个虚拟计算机(虚拟机,Virtual
Machine,VM),其上能同时运行多个独立的操作系统,这
些客户操作系统(Guest OS)通过虚拟机管理器(Virtual
Machine Monitor,VMM,也称作Hypervisor)访问实际
的物理资源。
KVM 全称是 基于内核的虚拟机(Kernel-based
Virtual Machine),它是一个 Linux 的一个内核模块,该内
核模块使得 Linux 变成了一个 Hypervisor:
它由 Quramnet 开发,该公司于 2008年被 Red Hat 收购。
• 它支持 x86 (32 and 64 位), s390, Powerpc 等 CPU。
• 它从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中。
• 它需要支持虚拟化扩展的 CPU。
• 它是完全开源的。
主要原因可以总结如下:
打破“一台服务器对应一套应用”的模
式,将物理服务器进行整合,提升利用
率
服务器和相关IT硬件更少,节省了机房空
间,也减少了散热和电力需求
具备灵活数据备份和应用迁移机制,保
障服务永不中断
资源动态调配和模板化部署,应用系统
快速上线,及时响应业务变化。
虚拟化分为3类
全虚拟化
半虚拟化
硬件辅助的虚拟化
无虚拟化
– CPU一般设为四个Ring
– Kernel Mode一般跑在Ring 0上
– User Mode一般跑在Ring 3上
– 对于一个普通的传统的Linux系统没有问题
• 虚拟化
– 在Guest机器和Host机器中间加一层Hypervisor
– Host机器看它像跑在自己上面的程序
– Guest机器看它像自己所运行的硬件
– 如果Host机器和Guest机器都跑相同的Linux,它们的Kernel都想运行在Ring 0。
行部署和管理; 用户可以通过任何设备,在任何地点,任何时间访问属于
自己的桌面系统环境。还有服务器虚拟化。包括全虚拟化(Full-Virtulization):
无需修改操作系统,VM ESXi、Linux KVM
• 半虚拟化(Para-Virtulization):
集成半虚拟化代码,直接运行特权指令,性能接近物理机,需要修改操作
系统,
MS Hyper-V、 Ctrix Xen、IBM PowerVM
• 操作系统层虚拟化
开发、测试环境,VM Workstation、VM Server
如果你的是centos7关闭防火墙:
1、进行cpu检测,
命令结果大于0表示cpu支持虚拟化。如果是等于0,就需要手动勾选虚拟化引擎。
如果linux的系统是在VMware Workstation上的,需要将cpu设置为支持硬件虚拟化。需要在设置中把处理器核数里面的虚拟化引擎(虚拟化Intel VT-X/EPT…)这个选项勾上。
2、kvm安装
安装命令kvm:
• 安装虚拟化管理工具:
• libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以
由 Python,Ruby, Perl, PHP, Java 等语言调用。可以操作包括 KVM,
vmware,XEN,Hyper-v, LXC 等 Hypervisor。
• Virsh:基于 libvirt 的 命令行工具 (CLI)
• Virt-Manager:基于 libvirt 的 GUI 工具
3、kvm内核模块
将kvm嵌入到内核:
然后使用命令查看是否已经嵌入成功,
如果显示下面的结果则代表嵌入成功。
[root@controller ~]# lsmod | grep kvm
kvm_intel 55496 0
kvm 337900 1 kvm_intel
[root@controller ~]#
4、启动libvirt
5、资源准备
新建kvmtest目录。我们就是这个目录下进行kvm测试。
然后将已经下载好的 CentOS-6.8-x86_64-minimal.iso上传到这个/kvmtest目录下。这里需要说明一下,我的系统是centos6.6的,然后对于6.6或者6.8的迷你版系统兼容更好,否则我们在后面创建电脑之后可能会发生无法启动的问题。对于其他版本开机时可能会遇到 “no filename or root path specified”的错误。
6、创建安装盘
7、创建虚拟机
以下是各参数代表的意思:
-n NAME
指定虚拟机的名称
-r MEMORY
指定虚拟机的内存用量
-u UUID
指定虚拟机的唯一通用标识符
(Universally Unique Identifier,UUID)。
省略这个参数时,virt-install 将会自动产生
–vcpus=VCPUS
指定虚拟机的虚拟 CPU (Virtual CPU,VCPU) 数量
-f DISKFILE
指定虚拟磁盘的文件路径名称
-s DISKSIZE
用来指定虚拟磁盘的大小,这个参数需配合-f 使用。
DISKSIZE为虚拟磁盘的大小,单位是GB
-m MAC
指定虚拟机的网络卡之硬件地址。
这个参数可以省略,省略时virt-install 将自动产生
-p 以半虚拟化的方式建立虚拟机
-l LOCATION 指定安装来源
8、创建完成之后我们就可以使用命令来查看虚拟机了。
因为我这边创建了3台,所以可以看到有3台虚拟机。
shut off代表的是关机中的意思。你可以参照下面的命令来查看虚拟机的信息。
例如我这里需要开启一台,命令就是
virsh list # 显示本地活动虚拟机
• virsh start openSuse # 启动名字为ubuntu的非活动虚拟机
• virsh create ubuntu.xml # 创建虚拟机(创建后,虚拟机立即执行,成为活
动主机)
• virsh suspend openSuse # 暂停虚拟机
• virsh resume ubuntu # 启动暂停的虚拟机
• virsh shutdown ubuntu # 正常关闭虚拟机
• virsh destroy ubuntu # 强制关闭虚拟机
• virsh dominfo openSuse # 显示虚拟机的基本信息
• virsh dumpxml openSuse # 显示虚拟机的当前配置文件
• virsh setmem ubuntu 51200 # 给不活动虚拟机设置内存大小
• virsh setvcpus ubuntu 4 # 给不活动虚拟机设置cpu个数
• virsh edit ubuntu # 编辑配置文件(一般用在刚定义完VM)
9、客户端连接。
我们可以使用命令
来查看启动的进程。我们可以看到5900端口的进程是/qemu-kvm。
启动一台是5900,那么启动两台就是5900和5901,依次类推。
我们可以在window系统中使用vnc-4_1_3-x86_win32_viewer.exe来连接。
输入ip地址和端口号进行连接,例如的我的是192.168.44.146
然后就和平常的linux系统的安装流程来操作就行。安装好之后就可以连接进来操作即可。root 123456
在这里把电源模块安装好。
电源管理:
yum install acpid
yum install tcpdump
使用ifconfig命令可以查看IP网络配置。
我们进入到/etc/libvirt/qemu目录下。我们可以看到有centos-6.8.xml文件。
在这个xml文件可以看到里面有虚拟机名字配置,磁盘大小配置等。那么这样我们就可以看出来了,原来这样一个centos6.8只需要一个xml文件就可以搞定,是不是我们可以复制一份这个xml文件就可以生成一个虚拟机了呢?答案是肯定了,激动人心的时候到了,那么我们就复制一份珍贵xml文件,然后改改名字呗。
然后vi新的这个centos-6.8.01.xml文件,将其虚拟机名字改为centos-6.8.01,这样我们就有了一台新的虚拟机了。
那么我们如何启动我们刚才新的这台机器了。使用下面的命令:
virsh define 模板文件路径
例如我的是:
如果我们不想要了可以使用下面的命令移除虚拟机(virsh undefine 虚拟机名)
在Libvirt中有使用java操作kvm的API。
我们知道在我的centos6.6中安装了qume-kvm,那么我们想要从其他地方(例如windos中)想要远程访问怎么办呢?所以我们需要对linux服务器做相应的设置,把端口打开,这样才能让其他的来访问我这个kvm,从而进行操作。
1、启用tcp的端口。修改配置文件
然后打开里面的如下内容,把“#”去掉
然后再下面的文件中修改:
vi /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = “16509”
listen_addr = “0.0.0.0”
auth_tcp = “none”连接测试:
在window中安装Libvirt,然后打开virsh-launcher.bat
在这里我们可以看到在之前linux服务器中的虚拟机。
3、在eclipse中操作kvm
新建java工程,导入libvirt-0.5.1.jar和jna-3.5.0.jar。
然后就可以愉快的进行编码操作了:
在这里shutdown是可以关机,然后create是开机,而不是我们传统理解上的start。当然你有强迫症的话可以通过修改源码将create方法改为start。
4、生成xml文件
这里特别提醒一下,在window中操作kvm可能会遇到各种奇奇怪怪的问题,毕竟版本兼容比较麻烦。强烈建议在centos图形版的eclipse中连接kvm操作。
总结:虚拟化技术为日后的云平台的架设打好基础,如果对于kvm不理解的话,那么对于openstack的学习还是会有一定的影响。平时需要对学习进行总结,找到知识互通的地方。这样对于云计算整体算是基础的认知。对于kvm在本篇文章中没有介绍到的有网络桥接,增加磁盘配置。
文章出处:http://blog.csdn.net/sdksdk0/article/details/54809159
作者:朱培 ID:sdksdk0
今天分享的文章是关于云计算中的kvm(虚拟化技术),通过本文你可以知道的是kvm是干什么的,如何使用kvm,如何通过java操作xml从而生成生成虚拟机。
一、虚拟化简介
系统虚拟化是将底层物理设备与上层操作系统、软件分离的一种去耦合技术,在一台物理机器上逻辑的划分出多台机器。
• 虚拟化的目标是实现IT资源利用效率和灵活性的最大化
在一台物理主机上虚拟出多个虚拟计算机(虚拟机,Virtual
Machine,VM),其上能同时运行多个独立的操作系统,这
些客户操作系统(Guest OS)通过虚拟机管理器(Virtual
Machine Monitor,VMM,也称作Hypervisor)访问实际
的物理资源。
KVM 全称是 基于内核的虚拟机(Kernel-based
Virtual Machine),它是一个 Linux 的一个内核模块,该内
核模块使得 Linux 变成了一个 Hypervisor:
它由 Quramnet 开发,该公司于 2008年被 Red Hat 收购。
• 它支持 x86 (32 and 64 位), s390, Powerpc 等 CPU。
• 它从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中。
• 它需要支持虚拟化扩展的 CPU。
• 它是完全开源的。
二、使用虚拟化的原因
为什么我们要使用虚拟化技术。当公司的服务器越来越多,我们需要充分利用资源,也需要统一运维管理。主要原因可以总结如下:
打破“一台服务器对应一套应用”的模
式,将物理服务器进行整合,提升利用
率
服务器和相关IT硬件更少,节省了机房空
间,也减少了散热和电力需求
具备灵活数据备份和应用迁移机制,保
障服务永不中断
资源动态调配和模板化部署,应用系统
快速上线,及时响应业务变化。
虚拟化分为3类
全虚拟化
半虚拟化
硬件辅助的虚拟化
无虚拟化
– CPU一般设为四个Ring
– Kernel Mode一般跑在Ring 0上
– User Mode一般跑在Ring 3上
– 对于一个普通的传统的Linux系统没有问题
• 虚拟化
– 在Guest机器和Host机器中间加一层Hypervisor
– Host机器看它像跑在自己上面的程序
– Guest机器看它像自己所运行的硬件
– 如果Host机器和Guest机器都跑相同的Linux,它们的Kernel都想运行在Ring 0。
三、常见的虚拟化技术
例如很常见的VMWare、VirtualBox、Citrix Xen、kvm等。桌面虚拟化 将原本在本地电脑安装的桌面系统统一在后端数据中心进行部署和管理; 用户可以通过任何设备,在任何地点,任何时间访问属于
自己的桌面系统环境。还有服务器虚拟化。包括全虚拟化(Full-Virtulization):
无需修改操作系统,VM ESXi、Linux KVM
• 半虚拟化(Para-Virtulization):
集成半虚拟化代码,直接运行特权指令,性能接近物理机,需要修改操作
系统,
MS Hyper-V、 Ctrix Xen、IBM PowerVM
• 操作系统层虚拟化
开发、测试环境,VM Workstation、VM Server
四、kvm环境配置
下面介绍的操作流程是在centos6.6系统中演示。首先把防火墙关掉:Service iptables stop Chkconfig iptables off
如果你的是centos7关闭防火墙:
systemctl stop firewalld.service systemctl disable firewalld.service
1、进行cpu检测,
egrep -c '(vmx|svm)' /proc/cpuinfo
命令结果大于0表示cpu支持虚拟化。如果是等于0,就需要手动勾选虚拟化引擎。
如果linux的系统是在VMware Workstation上的,需要将cpu设置为支持硬件虚拟化。需要在设置中把处理器核数里面的虚拟化引擎(虚拟化Intel VT-X/EPT…)这个选项勾上。
2、kvm安装
安装命令kvm:
yum install qemu-kvm
• 安装虚拟化管理工具:
yum install virt-manager libvirt libvirt-python python-virtinst bridge-utils
• libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以
由 Python,Ruby, Perl, PHP, Java 等语言调用。可以操作包括 KVM,
vmware,XEN,Hyper-v, LXC 等 Hypervisor。
• Virsh:基于 libvirt 的 命令行工具 (CLI)
• Virt-Manager:基于 libvirt 的 GUI 工具
3、kvm内核模块
将kvm嵌入到内核:
modprobe kvm modprobe kvm-intel
然后使用命令查看是否已经嵌入成功,
lsmod | grep kvm
如果显示下面的结果则代表嵌入成功。
[root@controller ~]# lsmod | grep kvm
kvm_intel 55496 0
kvm 337900 1 kvm_intel
[root@controller ~]#
4、启动libvirt
service libvirtd restart chkconfig libvirtd on
5、资源准备
新建kvmtest目录。我们就是这个目录下进行kvm测试。
mkdir /kvmtest
然后将已经下载好的 CentOS-6.8-x86_64-minimal.iso上传到这个/kvmtest目录下。这里需要说明一下,我的系统是centos6.6的,然后对于6.6或者6.8的迷你版系统兼容更好,否则我们在后面创建电脑之后可能会发生无法启动的问题。对于其他版本开机时可能会遇到 “no filename or root path specified”的错误。
6、创建安装盘
qemu-img create -f qcow2 /kvmtest/centos-6.8.qcow2 10G
7、创建虚拟机
virt-install --virt-type kvm --name centos-6.8 --ram 1024 \ --vcpus 1 \ --cdrom=/kvmtest/CentOS-6.8-x86_64-minimal.iso \ --disk /kvmtest/centos-6.8.qcow2,format=qcow2 \ --network network=default \ --graphics vnc,listen=0.0.0.0 --noautoconsole \ --os-type=linux --os-variant=rhel6
以下是各参数代表的意思:
-n NAME
指定虚拟机的名称
-r MEMORY
指定虚拟机的内存用量
-u UUID
指定虚拟机的唯一通用标识符
(Universally Unique Identifier,UUID)。
省略这个参数时,virt-install 将会自动产生
–vcpus=VCPUS
指定虚拟机的虚拟 CPU (Virtual CPU,VCPU) 数量
-f DISKFILE
指定虚拟磁盘的文件路径名称
-s DISKSIZE
用来指定虚拟磁盘的大小,这个参数需配合-f 使用。
DISKSIZE为虚拟磁盘的大小,单位是GB
-m MAC
指定虚拟机的网络卡之硬件地址。
这个参数可以省略,省略时virt-install 将自动产生
-p 以半虚拟化的方式建立虚拟机
-l LOCATION 指定安装来源
8、创建完成之后我们就可以使用命令来查看虚拟机了。
virsh list --all
因为我这边创建了3台,所以可以看到有3台虚拟机。
shut off代表的是关机中的意思。你可以参照下面的命令来查看虚拟机的信息。
例如我这里需要开启一台,命令就是
virsh start centos-6.8
virsh list # 显示本地活动虚拟机
• virsh start openSuse # 启动名字为ubuntu的非活动虚拟机
• virsh create ubuntu.xml # 创建虚拟机(创建后,虚拟机立即执行,成为活
动主机)
• virsh suspend openSuse # 暂停虚拟机
• virsh resume ubuntu # 启动暂停的虚拟机
• virsh shutdown ubuntu # 正常关闭虚拟机
• virsh destroy ubuntu # 强制关闭虚拟机
• virsh dominfo openSuse # 显示虚拟机的基本信息
• virsh dumpxml openSuse # 显示虚拟机的当前配置文件
• virsh setmem ubuntu 51200 # 给不活动虚拟机设置内存大小
• virsh setvcpus ubuntu 4 # 给不活动虚拟机设置cpu个数
• virsh edit ubuntu # 编辑配置文件(一般用在刚定义完VM)
9、客户端连接。
我们可以使用命令
netstat -natp
来查看启动的进程。我们可以看到5900端口的进程是/qemu-kvm。
启动一台是5900,那么启动两台就是5900和5901,依次类推。
我们可以在window系统中使用vnc-4_1_3-x86_win32_viewer.exe来连接。
输入ip地址和端口号进行连接,例如的我的是192.168.44.146
然后就和平常的linux系统的安装流程来操作就行。安装好之后就可以连接进来操作即可。root 123456
在这里把电源模块安装好。
电源管理:
yum install acpid
yum install tcpdump
五、kvm的xml文件
我们需要知其然也要知其所以然。那么我们是怎样做到在VMware Workstation虚拟出来的centos6.6系统中再其中虚拟化出来一台centos6.8系统。使用ifconfig命令可以查看IP网络配置。
我们进入到/etc/libvirt/qemu目录下。我们可以看到有centos-6.8.xml文件。
在这个xml文件可以看到里面有虚拟机名字配置,磁盘大小配置等。那么这样我们就可以看出来了,原来这样一个centos6.8只需要一个xml文件就可以搞定,是不是我们可以复制一份这个xml文件就可以生成一个虚拟机了呢?答案是肯定了,激动人心的时候到了,那么我们就复制一份珍贵xml文件,然后改改名字呗。
cp centos-6.8.xml centos-6.8.01.xml
然后vi新的这个centos-6.8.01.xml文件,将其虚拟机名字改为centos-6.8.01,这样我们就有了一台新的虚拟机了。
那么我们如何启动我们刚才新的这台机器了。使用下面的命令:
virsh define 模板文件路径
例如我的是:
virsh define /etc/libvirt/qemu/centos-6.8.02.xml
如果我们不想要了可以使用下面的命令移除虚拟机(virsh undefine 虚拟机名)
virsh undefine centos-6.8
六、通过JAVA编程控制KVM
在上一个章节中我们知道了一个kvm虚拟机我们可以使用xml文件来控制,那么我们自然也可以用java程序来写xml文件,从而生成虚拟机。如果你使用过阿里云或者腾讯云等云服务器的话你就知道,上面可以自定义选择cpu核数内存磁盘什么的,不就类似操作不同的参数,从而生成不同的xml文件,最后生成云服务器了。现在对于阿里腾讯等这些云服务器又增加的想法没,嘿嘿嘿!在Libvirt中有使用java操作kvm的API。
我们知道在我的centos6.6中安装了qume-kvm,那么我们想要从其他地方(例如windos中)想要远程访问怎么办呢?所以我们需要对linux服务器做相应的设置,把端口打开,这样才能让其他的来访问我这个kvm,从而进行操作。
1、启用tcp的端口。修改配置文件
vi /etc/sysconfig/libvirtd
然后打开里面的如下内容,把“#”去掉
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf LIBVIRTD_ARGS="--listen"
然后再下面的文件中修改:
vi /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = “16509”
listen_addr = “0.0.0.0”
auth_tcp = “none”连接测试:
在window中安装Libvirt,然后打开virsh-launcher.bat
virsh -c qemu+tcp://192.168.44.146/system
在这里我们可以看到在之前linux服务器中的虚拟机。
3、在eclipse中操作kvm
新建java工程,导入libvirt-0.5.1.jar和jna-3.5.0.jar。
然后就可以愉快的进行编码操作了:
public class Test { public static void testVM() { try { Connect conn = new Connect("qemu+tcp://192.168.44.146/system"); conn.domainLookupByName("centos-6.8").shutdown(); // conn.domainLookupByName("centos-6.6-02").create(); // conn.domainLookupByName("centos-6.6").shutdown(); // conn.domainLookupByName("centos-6.6-02").create(); } catch (LibvirtException e) { e.printStackTrace(); } } public static void main(String[] args) { testVM(); } }
在这里shutdown是可以关机,然后create是开机,而不是我们传统理解上的start。当然你有强迫症的话可以通过修改源码将create方法改为start。
4、生成xml文件
public class Test02 { public static void main(String[] args) { Connect conn = null; int flags = 0; //jdom dom4j try { conn = new Connect("qemu+tcp://192.168.44.146/system"); String dumpxml ="<domain type='kvm'> "+ " <name>bjsxtvm03</name> " + " <memory unit='KiB'>1048576</memory>" + " <currentMemory unit='KiB'>1048576</currentMemory>" + " <vcpu placement='static'>1</vcpu>" + " <os>" + " <type arch='x86_64' machine='rhel6.6.0'>hvm</type>" + " <boot dev='hd'/>" + " </os>" + " <features>" + " <acpi/>" + " <apic/>" + " <pae/>" + " </features>" + " <clock offset='utc'/>" + " <on_poweroff>destroy</on_poweroff>" + " <on_reboot>restart</on_reboot>" + " <on_crash>restart</on_crash>" + " <devices>" + " <emulator>/usr/libexec/qemu-kvm</emulator>" + " <disk type='file' device='disk'>" + " <driver name='qemu' type='qcow2' cache='none'/>" + " <source file='/kvmtest/centos-6.6-04.qcow2'/>" + " <target dev='vda' bus='virtio'/>" + " <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>" + " </disk>" + " <disk type='block' device='cdrom'>" + " <driver name='qemu' type='raw'/>" + " <target dev='hdc' bus='ide'/>" + " <readonly/>" + " <address type='drive' controller='0' bus='1' target='0' unit='0'/>" + " </disk>" + " <controller type='usb' index='0' model='ich9-ehci1'>" + " <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/>" + " </controller>" + " <controller type='usb' index='0' model='ich9-uhci1'>" + " <master startport='0'/>" + " <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/>" + " </controller>" + " <controller type='usb' index='0' model='ich9-uhci2'>" + " <master startport='2'/>" + " <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/>" + " </controller>" + " <controller type='usb' index='0' model='ich9-uhci3'>" + " <master startport='4'/>" + " <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/>" + " </controller>" + " <controller type='ide' index='0'>" + " <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>" + " </controller>" + " <interface type='network'>" + " <source network='default'/>" + " <model type='virtio'/>" + " <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>" + " </interface>" + " <serial type='pty'>" + " <target port='0'/>" + " </serial>" + " <console type='pty'>" + " <target type='serial' port='0'/>" + " </console>" + " <input type='tablet' bus='usb'/>" + " <input type='mouse' bus='ps2'/>" + " <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>" + " <listen type='address' address='0.0.0.0'/>" + " </graphics>" + " <video>" + " <model type='cirrus' vram='9216' heads='1'/>" + " <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>" + " </video>" + " <memballoon model='virtio'>" + " <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>" + " </memballoon>" + "</devices>" + "</domain>"; Domain dm = null; Domain dm1 = conn.domainDefineXML(dumpxml); dm1.create();//start //Domain dm1 = conn.domainDefineXML(dumpxml); //创建一个域,但不启动 //dm1.undefine(); //undefind一个域,如果活动,则不停止 /**** try{ Domain dm1 =conn.domainLookupByName("bjsxtvm03"); } catch (LibvirtException e) { System.out.println("libvirt 错误" + e); // TODO: handle exception } if(dm!=null) { dm.undefine(); } ****/ /******** Domain dm2 = conn.domainDefineXML(dumpxml); dm2.undefine(); *******/ } catch (LibvirtException e) { //LibvirtException 返回错误详细信息 System.out.println("exception caught:" + e); System.out.println("获取的错误;" + e.getError()); } System.out.println("Clean exit"); } }
这里特别提醒一下,在window中操作kvm可能会遇到各种奇奇怪怪的问题,毕竟版本兼容比较麻烦。强烈建议在centos图形版的eclipse中连接kvm操作。
总结:虚拟化技术为日后的云平台的架设打好基础,如果对于kvm不理解的话,那么对于openstack的学习还是会有一定的影响。平时需要对学习进行总结,找到知识互通的地方。这样对于云计算整体算是基础的认知。对于kvm在本篇文章中没有介绍到的有网络桥接,增加磁盘配置。
相关文章推荐
- KVM虚拟化技术实践
- KVM虚拟化技术实践文档[目录]
- Linux_KVM_KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机
- KVM 虚拟化技术以及 KVM 和云计算的关系
- kvm虚拟化技术实战记录(2)——编译安装kvm
- KVM虚拟化网络优化技术总结
- Xen与KVM虚拟化技术调研报告
- 虚拟化之KVM--RedHat最新虚拟化技术
- kvm虚拟化技术应用实战
- AWS将虚拟化技术从XEN切换到KVM ,聊一聊大象转身过程中的技术难点
- 云计算实践之虚拟化技术介绍
- [虚拟化平台技术]选择哪一种虚拟化平台 KVM还是Xen?
- 几本经典的云计算方面的书籍下载:虚拟化与云计算, 走近云计算, 云计算宝典:技术与实践, 云计算核心技术剖析
- [zz]红帽Linux虚拟化技术精选(专家答疑KVM内核)
- 虚拟化四、KVM虚拟化技术
- KVM基于X86硬件辅助的虚拟化技术实现机制【转】
- 虚拟化技术之KVM安装与使用
- KVM虚拟化技术之网卡流量聚合