一、检查环境
1、系统要求:
处理器需求:需要一台可以运行最新linux内核的Intel处理器(含VT虚拟化技术)或AMD处理器(含SVM安全虚拟机技术的AMD处理器,也叫AMD-V)。
[root@laks ~]# cat /etc/redhat-release CentOS release 6.5 (Final)
2、检查CPU:
[root@laks ~]# egrep 'vmx|svm' /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid
如果输出的结果包含VMX,它是Intel处理器虚拟机技术标志:如果包含SVM,它是AMD处理器虚拟机技术的标志,如果你什么都没有得到,那应你的系统并没有支持虚拟化的处理,不能使用KVM,另处linux发行版本必须在64bit环境中才能使用KVM。
有的新手亲,输入这个没有任何反应,那你注意一下你的虚拟机是否开启虚拟化
OK!我的有vmx,表示它支持虚拟化
二、更新系统
$ yum update $ yum upgrade
三、安装KVM
$ yum -y install kvm python-virtinst libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v
禁用防火墙
[root@laks ~]# vi /etc/sysconfig/selinux SELINUX=disabled [root@laks ~]# reboot 重启
重启后确认libvirtd是否正常启动
[root@laks ~]# /etc/init.d/libvirtd restart 正在关闭 libvirtd 守护进程: [确定] 启动 libvirtd 守护进程:2015-12-17 07:53:45.880+0000: 2791: info : libvirt version: 0.10.2, package: 54.el6_7.3 (CentOS BuildSystem <http://bugs.centos.org>, 2015-12-15-15:28:08, c6b8.bsys.dev.centos.org) 2015-12-17 07:53:45.880+0000: 2791: warning : virGetHostname:2279 : getaddrinfo failed for 'laks': 域名解析暂时失败 [确定]
检查KVM是否加载成功
显示结果如下表示kvm模块已经加载,如果没有输出信息,则表示没有加载成功:
[root@laks ~]# lsmod | grep kvm kvm_intel 55656 0 kvm 345460 1 kvm_intel
检查KVM是否成功安装
[root@laks ~]# virsh list --all Id 名称 状态 ----------------------------------------------------
各版本查询
[root@laks ~]# virt-install --version 0.600.0 [root@laks ~]# virsh --version 0.10.2
修改qemu.conf配置
[root@laks ~]# vi /etc/libvirt/qemu.conf vnc_listen = "0.0.0.0"
四、配置网络桥接
1、 安装tunctl:
$ yum install -y tunctl
2、禁用网络管理器:
$ chkconfig NetworkManager off ##和桥接有冲突,要关闭 $ service NetworkManager stop
3、修改eth0为物理网口,br0为桥接网口配置文件:
[root@laks ~]# cd /etc/sysconfig/network-scripts/ [root@laks network-scripts]# cp ifcfg-eth0 ifcfg-br0 [root@laks network-scripts]# cat ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=static IPV6INIT=no ONBOOT=yes IPADDR=10.0.0.4 NETMASK=255.255.255.0 GATEWAY=10.0.0.2 DNS1=8.8.8.8 DELAY=0 [root@laks network-scripts]# cat ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet BRIDGE=br0 BOOTPROTO=none IPV6INIT=no ONBOOT=yes
附加说明:这里配置成桥接方式,实际上本机的数据包发送是通过br0发送的,br0的TYPE是Bridge,其它的信息跟配置一个物理网卡一样,本机的 eth0通过桥接到br0(通过BRIDGE指定)进行通信,它根本不需要配置IP信息,实际上数据发送还是通过本机的物理网卡。
4、重启网络
[root@laks network-scripts]# service network restart
5、查看桥接网络
[root@laks network-scripts]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c29b3f99b no eth0 pan0 8000.000000000000 no virbr0 8000.5254003d8618 yes virbr0-nic
接口eth0通过br0进行桥接。birbr0-nic通过virbr0进行桥接,这个是默认的设置,当使用NAT时使用。
五、安装vnc
$ yum install vnc-server tigervnc -y $ vncpasswd Password: Verify://这个是重复一遍密码的意思
六、使用virt-install 工具安装guest 系统
$ virt-install --name=centos64 --ram 1024 --vcpus=2 --disk path=/var/lib/libvirt/images/centos64.img,size=10 --accelerate --cdrom /mnt/CentOS64.iso --graphics vnc,password=123456,port=5920 --network bridge=br0 --force --autostart 开始安装...... 创建域...... | 0 B 00:00 无法打开显示: 运行 'virt-viewer --help' 来查看可用命令行选项的完整列表 域安装仍在进行。您可以重新连接 到控制台以便完成安装进程。
查看启动的虚拟机
[root@laks ~]# virsh list Id 名称 状态 ---------------------------------------------------- 1 centos64 running
然后进入虚拟机显示界面,打开终端,执行
[root@laks ~]# vncviewer 10.0.0.4:5920
输入密码后将出现虚拟机安装引导,是图形界面的,在此不做赘述
如果安装的不好,你想要删除某个虚拟机,执行
$ virsh destroy centos64 $ virsh undefine centos64
这就将这个虚拟机删除了
如果想自定义安装虚拟机的安装地址,如下操作
$ mkdir -p /kvm/images [root@laks images]# qemu-img create -f qcow2 -o preallocation=metadata /kvm/images/centos.qcow2 10G Formatting '/kvm/images/centos.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 preallocation='metadata'
在/kvm/images下安装虚拟机
$ virt-install --name=centos64 --ram 1024 --vcpus=2 -f /kvm/images/centos.qcow2 --cdrom /mnt/CentOS64.iso --graphics vnc,password=123456,port=5920 --network bridge=br0 --force --autostart 开始安装...... 创建域...... | 0 B 00:00 无法打开显示: 运行 'virt-viewer --help' 来查看可用命令行选项的完整列表 域安装仍在进行。您可以重新连接 到控制台以便完成安装进程。
重复上面动作,安装虚拟机
七、查看guest 系统
当我们安装完成后,guest系统进行重启,我的电脑不知道为什么没有重启起来,通过virsh list查看,发现虚拟机没有了,查看/etc/libvirt/qemu,发现有centos64.xml,说明虚拟机还在,我想应该是没有启动起来,所以执行
[root@laks qemu]# virsh start centos64 域 centos64 已开始 [root@laks qemu]# virsh list Id 名称 状态 ---------------------------------------------------- 2 centos64 running
OK!再次在guest系统中进行连接
$ vncviewer 10.0.0.4:5920
OK!成功看到登录界面了,自此,guest系统建立完成。
八、一些常用操作
1、可以通过virt-viewer查看安装状态:
$ virt-viewer name
2、使用virt-install 工具安装虚拟机后,在目录/etc/libvirt/qemu/下生成xml 配置文件。
$ cd /etc/libvirt/qemu $ cat centos64.xml
<!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh edit centos64 or other application using the libvirt API. --> <domain type='kvm'> <name>centos64</name> <uuid>fa518652-d19a-040e-3544-54cfd8c33c28</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>2</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='raw' cache='none'/> <source file='/kvm/images/centos.qcow2'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </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='bridge'> <mac address='52:54:00:d2:8d:4f'/> <source bridge='br0'/> <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='mouse' bus='ps2'/> <graphics type='vnc' port='5920' autoport='no' passwd='123456'/> <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='0x05' function='0x0'/> </memballoon> </devices> </domain>
启动虚拟机
$ virsh start centos64 启动虚拟机 reboot start shutdown $ virsh list 列出当前运行的虚拟机 $ setenforce 0 关闭防火墙 [root@laks qemu]# ll /var/lib/libvirt/qemu 总用量 12 srwxr-xr-x 1 qemu qemu 0 12月 18 11:44 centos64.monitor drwxr-xr-x 2 root root 4096 12月 17 15:52 dump drwxr-xr-x 2 qemu qemu 4096 12月 17 15:52 save drwxr-xr-x 2 qemu qemu 4096 12月 17 15:52 snapshot ##这里的文件,是libvirtd在重启后,虚拟机也随着自动重启。
[root@laks ~]# top -d 1 | grep kvm 36714 qemu 20 0 1453m 461m 5628 S 2.0 47.1 2:34.44 qemu-kvm 36714 qemu 20 0 1453m 461m 5628 S 3.0 47.1 2:34.47 qemu-kvm 36714 qemu 20 0 1453m 461m 5628 S 3.0 47.1 2:34.50 qemu-kvm ##动态查询kvm资源占用情况,每一台VM,对应一个qemu-kvm进程
[root@laks ~]# ps -aux | grep kvm ## 截取的kvm进程信息
九、其他问题
1、图形化配置:从菜单中启动,或者运行virt-manager进入图形管理界面,比较简单,不过img的位置需要注意一下,kvm安装后会有一个默认位置,不注意的话容易占满空间。或者直接硬盘分区时单独给/var分一个区。
2、虚拟机重新配置:
虚拟机的配置文件保存在/etc/libvirt/qemu目录下,扩展名是xml。修改相应的文件即可重新配置虚拟机。
3、虚拟机备份及恢复:
备份:拷贝/etc/libvirt/qemu目录下的xml配置文件,以及xml中设置的img文件。
恢复:进入virsh,执行define 目录下的xml文件路径
virsh # define /etc/libvirt/qemu/winxp.xml
4、开机自动启动虚拟机:
[root@vfeelit qemu]# virsh autostart Winxp
5、克隆KVM虚拟机:
[root@vfeelit ~]# virt-clone -o Winxp -n winxpclong -f /var/lib/libvirt/images/winxpclong.img
(-o 原始客体的名称,-n新客户端的名称,-f作为新客户端磁盘映像的新文件)
6、虚拟机意外关机报下述错误:
[root@vfeelit qemu]# virsh start winxp
错误:开始域 winxp 失败
错误:Unable to read from monitor: Connection reset by peer
解决方法:virsh managedsave-remove winxp
Virsh语法参考:
Autostart 自动开始一个域
Create 从一个 XML 文件创建一个域
Define 从一个 XML 文件定义(但不开始)一个域
edit 编辑某个域的 XML 配置
shutdown 关闭一个域
start 开始一个(以前定义的)非活跃的域
reboot 重新启动一个域
suspend 挂起一个域
resume 重新恢复一个域
vncdisplay vnc 显示
使用save来备份当前虚拟机的状态:
[root@vfeelit images]# virsh save –bypass-cache RedHat /var/lib/libvirt/images/test.img –running
上面这个命令将RedHat的当前状态保存到/opt/vm2_save文件中。–running参数表示下次restore回来的时候能够自动启动RedHat。
这个命令会导致RedHat被关闭。
现在还原:必须先关闭虚拟机
[root@vfeelit images]# virsh shutdown RedHat
[root@vfeelit images]# virsh restore /var/lib/libvirt/images/test.img –bypass-cache –running (还原时不要指定虚拟机名称)