debian虚拟机安装kvm虚拟机
一、概念介绍1、libvirt是Linux上的虚拟化库,是长期稳定的C语言API,支持KVM/QEMU、Xen、LXC等主流虚拟化方案。virsh是libvirt对应的shell命令。 2、kvm,即Kernel-basedVirtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调
一、概念介绍
1、libvirt是Linux上的虚拟化库,是长期稳定的C语言API,支持KVM/QEMU、Xen、LXC等主流虚拟化方案。virsh是libvirt对应的shell命令。
2、kvm,即Kernel-basedVirtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization。
3、vnc既远程访问软件,用于访问创建好的虚拟机。
二、配置环境
1、linux debian8.8
2、安装kvm/qemu
$ apt-get install kvm qemu
3、安装libvirt
$ apt-get install libvirt-bin libvirt-dev
4、网桥管理工具
$ apt-get install bridge-utils
5、安装vnc viewer
安装vnc viewer(有win/linux/android)版本,本人是安装在windows下的。
6、查看是否支持虚拟化
$egrep 'vmx|svm' --color /proc/cpuinfo
KVM 是基于 x86 虚拟化扩展(Intel VT 或者 AMD-V) 技术的虚拟机软件,所以查看 CPU 是否支持 VT 技术,就可以判断是否支持KVM。有返回结果,如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。
7、加载kvm 内核
$modprobe kvm
$modprobe kvm-intel
$lsmod | grep kvm#查看内核
三、创建虚拟机
1、找1个合适的winxp安装镜像(iso)
为何这一步单独拿出讲, 是有原因的。
kvm 的虚拟硬盘的模式是virtio,virtio的性能和稳定性上佳, 但是windows安装盘是找不到virtio模式的虚拟硬盘的, 必须要在安装前先加载virtio的磁盘驱动。
网上也有加载驱动的教程,但是相对麻烦,建议直接下载整合了virtio驱动的windows安装镜像。
2、准备虚拟硬盘文件。
$qemu-img create -f raw /data/my_kvm.raw10G
3、配置虚拟网卡
这里本人的br_eth0信息如下:
HWaddr 20:25:64:80:61:94
inet addr:10.12.13.20
Bcast:10.12.255.255
Mask:255.255.0.0
4、准备和编写1个虚拟机配置文件。(备份,以后可以重用/迁移)
1) 虚拟机cpu数量(非必要,默认是2)
2) 虚拟机内存大小(非必要,默认是2G)
3) 虚拟硬盘文件位置。
4) winxp安装镜像的位置。
5) 虚拟网络实例的名字( 非必要, /etc/network/interfaces 里新加的br0 如果你用了别的名字的话)
6) vnc 端口(默认5900,除非你这个端口被占用否则不要改
下面定义一个my_kvm.xml用于配置虚拟机:
<domaintype='kvm'> //如果是Xen,则type=‘xen’
<name>my_kvm</name> //虚拟机名称,同一物理机唯一
<uuid>fd3535db-2558-43e9-b067-314f48211343</uuid> //同一物理机唯一,可用uuidgen生成
<memory>2048000</memory>
<currentMemory>2048000</currentMemory> //memory这两个值最好设成一样
<vcpu>2</vcpu> //虚拟机可使用的cpu个数,查看物理机可用CPU个数:cat /proc/cpuinfo |grep processor | wc-l
<os>
<type arch='x86_64' machine='pc-1.3'>hvm</type>//arch指出系统架构类型,machine 则是机器类型,查看机器类型:qemu-system-x86_64 -M ?
<boot dev='cdrom'/> //启动介质,第一次需要装系统可以选择cdrom光盘启动
<bootmenu enable='yes'/> //表示启动按F12进入启动菜单
</os>
<features>
<acpi/> //Advanced Configuration and Power Interface,高级配置与电源接口
<apic/> //Advanced Programmable Interrupt Controller,高级可编程中断控制器
<pae/> //Physical Address Extension,物理地址扩展
</features>
<clock offset='localtime'/> //虚拟机时钟设置,这里表示本地本机时间
<on_poweroff>destroy</on_poweroff> //突发事件动作
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices> //设备配置/
<emulator>/usr/bin/kvm</emulator> //如果是Xen则是/usr/lib/xen/binqemu-dm
<disk type='file' device='disk'> //硬盘
<driver name='qemu' type='raw'/>
<source file='/data/my_kvm.raw'/>
<target dev='hda' bus='ide'/> // if windows must ide else virtio
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/data/iso/win_xp.iso'/>
<target dev='hdc' bus='ide'/>
<readonly/>
</disk>
/* 利用Linux网桥连接网络 */
<interface type='bridge'>
<sourcebridge="br_eth0"/>//配置的网桥网卡名称
<macaddress="52:54:42:73:b7:94"/>
<model type="rtl8139"/>
</interface>
<graphics type='vnc' port='-1'autoport='yes'> //配置vnc,windows下可以使用vncviewer登录,获取vnc端口号:virsh dumpxml my_kvm | grep “vnc”
<listen type='address'address='0.0.0.0'/>
</graphics>
</devices>
</domain>
5、基于这个配置文件创建1个虚拟机
1)创建虚拟机
$virsh create my_kvm.xml
2)查看是否运行
$virsh list
6、安装winxp到虚拟机
在vnc viewer输入网址+端口打开,这时你已经见到winxp的安装界面了。之后安装也就是几个下一步的事情,安装完成后,设置ip,这里要与宿主机设置在同一个网段,这样就可以通过桥接访问外网,
7、维护这个虚拟机.(start/shutdown/update..)
马上检查ip是否同一网段, 如果是, 则开启远程桌面服务。以后就可以通过远程桌面访问了, 丢下不好用的vnc viewer。
四、制作模板
模板虚拟机安装好之后,停止该虚拟机,复制制作过程如下:(以本人second.xml为例)
下面的目录都是根据个人习惯,使用者也可以根据自己的习惯设计目录结构。
1、新建/data/xml目录下second.xml:
<domaintype='kvm'>
<name>second</name>
<uuid>fd3535db-2558-43e9-b067-314f48311345</uuid>//uuid要做相应的修改 <memory>2048000</memory>
<currentMemory>2048000</currentMemory>
<vcpu>2</vcpu>
<os>
<type arch='x86_64'machine='pc-1.3'>hvm</type>
<boot dev='cdrom'/>
<bootmenuenable='yes'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/data/moudles/my_kvm.qcow2'/>
<target dev='hda' bus='ide'/>
</disk>
<interfacetype='bridge'>
<sourcebridge="br_eth0"/>
<mac address="52:54:42:73:b7:96"/>
<model type="rtl8139"/>
</interface>
<graphics type='vnc' port='-1'autoport='yes'>
<listen type='address'address='0.0.0.0'/>
</graphics>
</devices>
</domain>
2、复制镜像文件,再存放做好的镜像的目录下,本人的是data,克隆镜像,克隆出来的文件非常小只有几MB,这里为了管理方便,将镜像和xml配置文件分开存放。在这里已经制作出了新的模板my_kvm.raw,拷贝到/data/modules下:
cp my_kvm.raw moudles/my_kvm.img
进入/data/moudles目录下,制作模板快照(注意:这里制作镜像需要qcow2格式):
qemu-img create -f qcow2 my_kvm.qcow2-o backing_file=my_kvm.img
3、创建虚拟机
进入到/data/xml目录下
virsh create second.xml
五、总结
通过此次kvm虚拟机的创建工作,我了解到如何在linux安装windows虚拟机,而不是之前在windows Vmware中安装linux虚拟机的按键式操作。利用xml配置文件简化了kvm虚拟机的创建,但是需要了解网络的配置、端口、mac地址等概念的实际运用。利用virsh操作虚拟机更加方便快捷。
理论和实践相结合,首先了解虚拟机的原理,然后了解虚拟软件,然后了解虚拟机管理软件,然后就更上层的虚拟机调度;总的来说kvm和qemu就是虚拟软件,负责创建和运行虚拟机,但是却不能很方便的管理多个虚拟机的实例,为了更加方便的管理虚拟机,所有出现了libvirt和virsh等函数库和相应的命令行工具。
更多推荐
所有评论(0)