KVM安装部署:
安装kvm虚拟机首先需要查看物理机的cpu是否支持虚拟化:
[root@localhost ~]# cat /proc/cpuinfo | egrep 'vmx|svm'
找到flags部分,如果其中输出有VMX或SVM,即表明支持虚拟化技术。
如果物理机的cpu支持安装虚拟机,那么开始安装虚拟环境,如下:
yum -y groupinstall "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools"
可以先用yum grouplist查看下,为了避免缺少组件
虚拟环境安装好后,开始配置网络,一般都用桥接的方式,配置如下:
yum install bridge-utils -y
配置网卡,添加bridge网卡
修改/etc/sysconfig/network-scripts/ifcfg-em1文件,并且在同目录下新建ifcfg-br0,两文件内容如下:
br0配置:
查看内核下面三项是否为0,官网说这是为了disabled netfilter:
最后重启网卡,看bridge是否配置成功,看到如下输出说明桥接配置成功:(或者用brctl show也可以查看)
可以开始安装虚拟机了,有两种方法安装,第一种用命令行安装,第二种在图形界面安装,这里主要说下在命令行下面怎么安装:
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
启动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
KVM快照:
有时需要对虚拟机做快照,防止损坏了可以正常恢复,具体操作如下:
kvm快照,分两种:
1种lvm快照,如果分区是lvm,可以利用lvm进行kvm的快照备份
2种由于raw格式不支持镜像,所以需要将格式转换为qcow2才可以创建快照。
方法2具体操作如下:
kvm虚拟机默认使用raw格式的镜像格式,性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像,zlib磁盘压缩,AES加密等。
要使用镜像功能,磁盘格式必须为qcow2。下面开始kvm虚拟机快照备份的过程。
查看磁盘格式
[root@localhost p_w_picpaths]# qemu-img infotest-script.img
raw格式需要转换成qcow2
关闭test-script
[root@localhost p_w_picpaths]# virsh shutdowntest-script
转换磁盘格式
[root@localhost p_w_picpaths]# qemu-img convert -fraw -O qcow2 test-script.img test-script.qcow2
-f 源镜像的格式
-O 目标镜像的格式
查看转换后的格式,已经转换成了qcow2, 这里是拷贝一份,并将格式转成qcow2
[root@localhost p_w_picpaths]# qemu-img infotest-script.qcow2
2.修改虚拟机配置文件:
修改磁盘格式,与新qcow2格式的磁盘。
[root@localhost p_w_picpaths]# virsh edittest-script
3. 对虚拟机进行快照管理
对oeltest01虚拟机创建快照
也可以virsh snapshot-create as oeltest01 snap1 创建后个快照别名。
[root@localhost p_w_picpaths]# virshsnapshot-create test-script
Domain snapshot 1419995560 created
查看虚拟机镜像快照的版本
[root@localhost p_w_picpaths]# virshsnapshot-list test-script
可以看到为当前最新的快照版本。
[root@localhost p_w_picpaths]#virsh snapshot-current test-script
查看当前虚拟机镜像文件
又创建了一个,快照的版本也记录在镜像文件中了。
[root@localhost p_w_picpaths]# virshsnapshot-create test-script
[root@localhost p_w_picpaths]# qemu-imginfo test-script.qcow2
快照配置文件在/var/lib/libvirt/qemu/snapshot/虚拟机名称下
当前的还是最新的快照:
恢复虚拟机快照
恢复虚拟机快照必须关闭虚拟机。
[root@localhost test-script]#virsh domstate test-script
确认需要恢复的快照时间,这里恢复到1419995560
[root@localhost test-script]# virshsnapshot-list test-script
执行恢复,并确认恢复版本
[root@localhost test-script]# virshsnapshot-revert test-script 1419995560
[root@localhost test-script]# virshsnapshot-current test-script
删除虚拟机快照
查看虚拟机快照
[root@localhost p_w_picpaths]# qemu-imginfo test-script.qcow2
这里删除第一个快照1419995560
删除快照
[root@localhost p_w_picpaths]# virshsnapshot-delete test-script 1419995560
[root@localhost p_w_picpaths]# qemu-imginfo test-script.qcow2
由于把当前的快照删除了:显示没有快照了。
[root@localhost p_w_picpaths]# virshsnapshot-current test-script
error: domain 'test-script' has no current snapshot
[root@localhost p_w_picpaths]# virshsnapshot-revert test-script 1419995769
[root@localhost p_w_picpaths]# virshsnapshot-current test-script
再次还原到快照2,然后查看当前快照。
到此kvm虚拟机快照测试完毕。
开启测试虚拟机:
[root@localhost p_w_picpaths]# virsh starttest-script
常用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虚拟机而无法删除虚拟机。