一:kvm虚拟化应用场景
场景1:只有一台服务器,但是要运行多个版本的软件,不同版本之间还相互冲突
场景2:机房的迁移,物理机在运输过程中容易损坏,导致数据丢失
场景3:openstack部署太难!步骤太繁琐,如何体验最新版的openstack
场景4:开发环境和测试环境经常损坏,运维重复装系统
场景5:业务的扩张,需要快速部署10个一模一样的集群
二:kvm虚拟机安装及使用
1:首先关闭selinux和防火墙
setenforce 0
systemctl stop firewalld.service或者 /etc/init.d/iptables stop
2:安装kvm
yum install libvirt virt-install qemu-kvm -y
libvirt:管理kvm的生命周期
virt-install:创建虚拟机的工具
qemu-kvm:使用qemu-img为虚拟机提供硬盘
3:启动kvm
systemctl start libvirtd.service
4:创建虚拟机
建议虚拟机内存不要低于1024M,否则安装系统特别慢!
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
参数介绍
--virt-type:指定虚拟机类型
--os-type:指定系统类型
--name:虚拟机名字
--memory:内存,这个参数在centos7安装的kvm里边使用
--ram: 内存,这个参数在centos6安装的kvm里边使用
--vcpus:指定cpu个数
--disk /opt/centos2.raw,format=raw,size=10:指定磁盘位置,类型,大小
--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso:指定镜像文件所在位置
--boot hd:如果不安装系统就把上一条命令换成这个
--network network=default:网络类型
--network bridge=br0:桥接网络使用这个参数
三:虚拟机console登录
1:为什么要使用console连接?
1):常规情况下,安装完 KVM 之后,可能都会通过 VNC 连接到 KVM 虚拟机里面去修改 IP 等信息。但是一旦虚拟机比较多的话,打开过多的端口会造成安全问题
2):很多时候,我们是通过跳板机连接的宿主机,你的window和kvm宿主机没有直达的路由,这时候vnc都用不了,如何快速进入到 KVM 虚拟机里面去排查问题呢?
2:配置
在centos7的kvm虚拟机中执行:
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot重启生效
3:登录
virsh console centos7
四:kvm虚拟机磁盘格式
1:kvm常见磁盘格式有两张
raw:裸格式,占用空间比较大,不适合远程传输,不支持快照功能,性能较好
qcow2:cow(copy on write)占用空间小,适合传输,支持快照,性能比raw差一点点
2:创建磁盘,查看,修改,格式转换
创建磁盘
qemu-img create -f qcow2 test.qcow2 10G
-f参数指定磁盘类型,默认是raw
查看磁盘信息
qemu-img info test.qcow2
修改磁盘大小
qemu-img resize test.qcow2 +5G
磁盘格式转换
qemu-img convert -f raw -O qcow2 test.raw test.qcow2
五:kvm虚拟机日常管理
1:列表,开机,关机,重启
列表
virsh list:显示处于运行状态的虚拟机
virsh list --all:显示所有的虚拟机
开机
virsh start centos7(虚拟机名称)
重启
virsh reboot centos7
关机(正常关机)
virsh shutdown centos7
关机(拔电源)
virsh destroy centos7
2:导出虚拟机配置,删除虚拟机,恢复虚拟机,修改虚拟机配置,重命名
导出虚拟机配置
virsh dumpxml centos7 >centos7.xml
(只要磁盘文件没有被破坏,就能恢复虚拟机)
删除虚拟机
virsh undefine centos7
恢复虚拟机
virsh define centos7.xml
修改虚拟机配置
1)直接修改配置文件/etc/libvirt/qemu/centos7.xml
2)使用virsh edit centos7,这种方法有报错提醒
重命名虚拟机
virsh domrename centos7 centos8,这个命令低版本不适用
3:挂起,恢复,开机启动,查看vnc端口号
挂起
virsh suspend centos7
恢复
virsh resume centos7
让虚拟机开机启动
首先必须得让libvirtd服务开机自启动
然后virsh sutostart centos7
查看vnc端口号
virsh vncdisplay centos7
六:虚拟机快照
只有qcow2的磁盘类型支持快照,raw不支持
创建快照
virsh snapshot-create centos7
查看快照
virsh snapshot-list centos7
还原快照
virsh snapshot-revert centos7 --snapshotname 1516574134
删除快照
virsh snapshot-devel centos7 --snapshotname 1516574134
七:kvm虚拟机克隆
1:完整克隆
1)方法一:virt-clone -o web01 --auto-clone
2)方法二
1:克隆虚拟磁盘文件
cp centos7.qcow2 web03.qcow2
2:修改虚拟机备份的配置文件
name修改
uuid删掉
disk路径/opt/web03.qcow2
mac地址删除
3:测试启动
virsh define web01.xml
2:链接克隆
1:
qemu-img create -f qcow2 -b cetnos7.qcow2 web04.qcow2
2:
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
八:创建桥接网络
1:新创建虚拟机
1):创建桥接网络
virsh iface-bridge eth0 br0
2):基于桥接网络创建虚拟机
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
2:修改现有虚拟机
1):创建桥接网络
virsh iface-bridge eth0 br0
2):修改配置文件
virsh edit centos7
<interface type=‘bridge‘>
<mac address=‘52:54:00:55:aa:fa‘/>
<source bridge=‘br0’/>
3):修改虚拟机ip地址
/etc/sysconfig/network-scripts/ifcfg-eth0
九:kvm虚拟机热添加技术
热添加技术就是不停机的情况下,在线热添加硬盘,内存,cpu,网卡等设备,热添加技术一般都是在虚拟机资源不够了,又不能停机的情况下使用的,热添加技术是虚拟机相对于物理机的一个很大的优势,它让资源分配变得更灵活!
1.热添加硬盘
创建硬盘
qemu-img create -f qcow2 centos7-add01.qcow2 5G
热添加硬盘
virsh attach-disk web01 /opt/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2
如果添加的磁盘大小不够使用了怎么办
方法
1:先卸载硬盘
umount /data
2:在主机上卸掉这个硬盘
virsh detach-disk centos7.1 /tmp/test.qcow2
3:扩充容量
qemu-img resize /tmp/test.qcow2 +5G
4:重新添加硬盘
virsh attach-disk centos7.1 /tmp/test.qcow2 vdb --live --cache=none --subdriver=qcow2
5:在虚拟机上挂载之前的分区
mount /dev/vdb1 /data
6:重新分区
fdisk /dev/vdb
7:分区后保存,执行
partprobe /dev/vdb(如果执行报错,可以先卸载了,执行完再挂载)
xfs_growfs /data(如果不是xfs格式化的,使用ext4,则使用resize2fs /data)
成功扩容
2:热添加网卡
添加网卡
virsh attach-interface web04 --type bridge --model virtio --source br0
--model virtio 虚拟网卡驱动,如果不是virtio,网卡名则不是eth0,1,2,而且性能低
这个是临时生效,永久生效要修改配置文件,复制粘贴下边四行在配置文件里
<interface type=‘bridge‘>
<source bridge=‘br1‘/>
<model type=‘virtio‘/>
</interface>
3:热添加cpu
热添加cpu需要在安装虚拟机的时候加上这个参数 maxvcpus=4,最大cpu数量
安装参数:
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1,maxvcpus=4 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
热添加cpu
virsh setvcpus web04 --count=2
4:热添加内存
热添加内存需要在安装虚拟机的时候加上这个参数maxmemory=2048,最大内存
安装参数
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus=1,maxvcpus=2 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
热添加内存
virsh setmem web04 1G
十:kvm虚拟机热迁移
virsh migrate –live –verbose oldboy qemu+ssh://10.0.0.12/system –unsafe
#参数
virsh migrate –live 热迁移
verbose oldboy 热迁移的主机oldboy
qemu+ssh://10.0.0.12/system 使用qemu加ssh协议,迁移到12的主机上,system固定格式
–unsafe 使用不安全规范
最后virsh list –all 查看迁移的主机是否运行,登陆VNC查看
原文地址:https://blog.51cto.com/3774912/2398479