KVM安装部署:

安装kvm虚拟机首先需要查看物理机的cpu是否支持虚拟化:

[root@localhost ~]# cat /proc/cpuinfo | egrep 'vmx|svm' 

wKiom1VZp0XTYnmoAAEo6DF-IDk272.jpg

找到flags部分,如果其中输出有VMX或SVM,即表明支持虚拟化技术。


如果物理机的cpu支持安装虚拟机,那么开始安装虚拟环境,如下:

yum -y groupinstall "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools"

可以先用yum grouplist查看下,为了避免缺少组件


虚拟环境安装好后,开始配置网络,一般都用桥接的方式,配置如下:

yum install bridge-utils -y

wKiom1VZqE-xhM-_AAFtM1onoo8103.jpg

配置网卡,添加bridge网卡

修改/etc/sysconfig/network-scripts/ifcfg-em1文件,并且在同目录下新建ifcfg-br0,两文件内容如下:

wKioL1VZqufy0z-WAAD9Hsuupkw973.jpg

br0配置:

wKioL1VZquehnw_KAAE4x8Oc94E407.jpg

查看内核下面三项是否为0,官网说这是为了disabled netfilter:

wKioL1VZq2ujixUdAACIZHeZsOQ809.jpg

最后重启网卡,看bridge是否配置成功,看到如下输出说明桥接配置成功:(或者用brctl show也可以查看)

wKiom1VZql2iiyfuAAFMBQd9a5w143.jpg

可以开始安装虚拟机了,有两种方法安装,第一种用命令行安装,第二种在图形界面安装,这里主要说下在命令行下面怎么安装:

1.新建两个目录分别存放ISO文件和虚拟磁盘,我这里在/opt下新建了iso和kvmimg目录;有些朋友不知道怎么将PC上的ISO文件传送到服务器上,我这里推荐大家用xshell和xftp,简单好用且免费!


2.利用virt-install开始安装系统,更多参数可以参考--help

[root@localhost iso]# virt-install --name vm01 --boot network,cdrom,menu=on --ram 1024 --vcpus=1 --os-variant=rhel6 --accelerate --cdrom=/opt/iso/CentOS-6.4-x86_64-bin-DVD1.iso --disk path=/opt/kvmimg/vm01.img,size=5,bus=virtio --bridge=br0,model=virtio --autostart --vnc --vncport=5900 --vnclisten=0.0.0.0


Starting install...

Creating storage file vm01.img    

Cannot open display:

Run 'virt-viewer --help' to see a full list of available command line options

Domain installation still in progress. You can reconnect to

the console to complete the installation process.

这个时候就是已经OK了,用vnc软件(vnc-viewer/tigervnc)填好IP地址和端口,这里是5900连接,就能看到装系统的界面了。


PS:安装完毕后的补充

查看所有虚拟机状态:

virsh list --all

手动启动虚拟机:

virsh start vm01

最后重启网卡,虚拟机就可以正常联网了。


KVM克隆:

有时需要安装多台虚拟机,但是一台一台安装效率又太低了,这时就可以用虚拟机克隆了。已wm01为例:

首先关闭vm01虚拟机:

virsh stop vm01

运行virsh suspend vm01命令,克隆完成后virsh resume vm01恢复即可

克隆vm02

virt-clone -o vm01 -n vm02 -f /opt/kvmimg/vm02.img 

修改vm02.xml文件,因为vm01的vnc已经把5900端口占用所以需要换一下,我这里修改成6900

virsh edit vm02

<graphics type='vnc' port='6900' autoport='no' listen='0.0.0.0'>

启动vm02

virsh start vm02 

最后利用vnc登录到vm02之后,有些网络设置需要修改,否则网卡无法启动

cat /etc/sysconfig/network-scripts/ifcfg-eth0     //删除mac地址和uuid那一行

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=dhcp

cat /etc/udev/rules.d/70-persistent-net.rules    //把之前的"SUBSYSTEM=="这一行注释掉,把新的那行的eth1换成eth0

wKioL1VZsDmhIijMAAHNYrtYzGE914.jpg重启vm02,重启网络,这样克隆就完成了。


KVM快照:

有时需要对虚拟机做快照,防止损坏了可以正常恢复,具体操作如下:


kvm快照,分两种:

1种lvm快照,如果分区是lvm,可以利用lvm进行kvm的快照备份

2种由于raw格式不支持镜像,所以需要将格式转换为qcow2才可以创建快照。

方法2具体操作如下:

kvm虚拟机默认使用raw格式的镜像格式,性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像,zlib磁盘压缩,AES加密等。   
要使用镜像功能,磁盘格式必须为qcow2。下面开始kvm虚拟机快照备份的过程。


查看磁盘格式

[root@localhost images]# qemu-img infotest-script.img

raw格式需要转换成qcow2

wKioL1VZsVGAga1mAAC3qu64erE279.jpg


关闭test-script

[root@localhost images]# virsh shutdowntest-script

wKiom1VZr9fTqL-KAACn7mb8xVc720.jpg


转换磁盘格式

[root@localhost images]# qemu-img convert -fraw -O qcow2 test-script.img test-script.qcow2

-f  源镜像的格式   
-O 目标镜像的格式

wKioL1VZsVHQ-U6tAAFaXwNAwSM978.jpg


查看转换后的格式,已经转换成了qcow2, 这里是拷贝一份,并将格式转成qcow2

[root@localhost images]# qemu-img infotest-script.qcow2

wKioL1VZsVHhGf4eAADJ_Ng9cU4230.jpg


2.修改虚拟机配置文件:

修改磁盘格式,与新qcow2格式的磁盘。

[root@localhost images]# virsh edittest-script

wKiom1VZr9fh5Ru_AAH9B7Le_VI355.jpg


3. 对虚拟机进行快照管理 

对oeltest01虚拟机创建快照

也可以virsh snapshot-create as oeltest01 snap1 创建后个快照别名。

[root@localhost images]# virshsnapshot-create test-script 
Domain snapshot 1419995560 created

wKiom1VZr9eSPdghAABCKxXfMJo667.jpg


查看虚拟机镜像快照的版本

[root@localhost images]# virshsnapshot-list test-script

wKiom1VZsIuDsGCrAACOC1BeWdI626.jpg


可以看到为当前最新的快照版本。

[root@localhost images]#virsh snapshot-current test-script

wKioL1VZsVORj6pZAAFvrtsjHmQ521.jpg


查看当前虚拟机镜像文件

又创建了一个,快照的版本也记录在镜像文件中了。

[root@localhost images]# virshsnapshot-create test-script

[root@localhost images]# qemu-imginfo test-script.qcow2

wKioL1VZsVOy0ouTAAG3mIctSxI751.jpg


快照配置文件在/var/lib/libvirt/qemu/snapshot/虚拟机名称下

wKiom1VZr9nTB3lLAAEKxDWSqPY971.jpg


当前的还是最新的快照:

wKiom1VZr9njNQiAAAC4ucFhJ6Y869.jpg


恢复虚拟机快照

恢复虚拟机快照必须关闭虚拟机。

[root@localhost test-script]#virsh domstate test-script

wKioL1VZsVTSqLZ6AADUpm5Apfk381.jpg


确认需要恢复的快照时间,这里恢复到1419995560

[root@localhost test-script]# virshsnapshot-list test-script

wKiom1VZr9qS1QooAAC3AlRxp9U711.jpg


执行恢复,并确认恢复版本

[root@localhost test-script]# virshsnapshot-revert test-script 1419995560

[root@localhost test-script]# virshsnapshot-current test-script

wKioL1VZsVSStKFWAAGSZ8itZko483.jpg


删除虚拟机快照

查看虚拟机快照

[root@localhost images]# qemu-imginfo test-script.qcow2

wKioL1VZsxKBv3tfAAEhiBurlUk967.jpg


这里删除第一个快照1419995560

删除快照

[root@localhost images]# virshsnapshot-delete test-script 1419995560

[root@localhost images]# qemu-imginfo test-script.qcow2

wKioL1VZsVbT7HmyAAFVPZCZ_GA905.jpg


由于把当前的快照删除了:显示没有快照了。

[root@localhost images]# virshsnapshot-current test-script 
error: domain 'test-script' has no current snapshot

[root@localhost images]# virshsnapshot-revert test-script 1419995769

[root@localhost images]# virshsnapshot-current test-script

再次还原到快照2,然后查看当前快照。

wKiom1VZr9yjgDjyAAF2HS5-itE477.jpg


到此kvm虚拟机快照测试完毕。

开启测试虚拟机:

[root@localhost images]# virsh starttest-script

wKiom1VZr9zA70G8AAERtcbkwo4700.jpg



常用virsh指令:

1)virsh list 列出当前虚拟机列表,不包括未启动的

2)virsh list --all 列出所有虚拟机,包括所有已经定义的虚拟机

3)virsh destroy vm-name 关闭虚拟机

4)virsh start vm-name 启动虚拟机

5)virsh edit vm-name 编辑虚拟机xml文件

6)virsh undefine vm-name 删除虚拟机

7)virsh shutdown vm-name 停止虚拟机

8)virsh reboot vm-name 重启虚拟机

9)virsh autostart vm-name 虚拟机随宿主机启动


kvm虚拟机删除报错:

error:Failed to undefine domain test

error:Requested operationis not valid: cannot undefine transient domain

直接命令行操作解决:  关闭kvm虚拟机后记得重启图形管理virtual manager,否则可能会出现卡死的情况,关闭了kvm虚拟机而无法删除虚拟机。

wKiom1VZsfWzWXncAACGsOvFQNg692.jpg

wKiom1VZsfWx_h8tAADmQ54bD3E721.jpg