KVM虚拟化

2019-06-23  本文已影响0人  早_wsm

kvm实验

环境准备,我这里使用虚拟机进行模拟,先设定好虚拟化


image.png

进入系统查看是否支持虚拟化

[root@kvm ~]# lsmod |grep kvm
kvm_intel             174841  0 
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm

KVM:Kernel-based Virtual Machine

安装需要的软件和下载镜像:

yum install libvirt virt-install qemu-kvm -y 

libvirt 作用:虚拟机的管理软件
virt virt-install virt-clone 作用:虚拟机的安装工具和克隆工具
qemu-kvm qemu-img (qcow2,raw)作用:管理虚拟机的虚拟磁盘

自行下载一个centos7的镜像,我本地有镜像所以不需要下载

[root@kvm opt]# ll
total 171008
-rw-r--r-- 1 root root 175112192 Nov 25  2018 CentOS-7-x86_64-DVD-1804.iso

因为我的实验机是最小化安装的,要想实现图形化界面需要安装桌面,如果不想安装桌面可以下载vnc到windows桌面上待会备用

先启动一个虚拟机

[root@kvm opt]# 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-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
[root@kvm opt]# ps -ef |grep 5900
root       5151   1940  0 20:46 pts/0    00:00:00 grep --color=auto 5900

命令详解:
--virt-type kvm 虚拟化的类型(qemu)
--os-type=linux 系统类型
--os-variant rhel7 系统版本
--name centos7 虚拟机的名字
--memory 1024 虚拟机的内存
--vcpus 1 虚拟cpu的核数
--disk /opt/centos2.raw,format=raw,size=10
--cdrom /opt/CentOS-7-x86_64-DVD-1804.iso
--network network=default 使用默认NAT的网络
--graphics vnc,listen=0.0.0.0 图形界面用vnc输出
--noautoconsole

这样可以直接连接vnc


image.png

kvm虚拟机的virsh日常管理和配置命令

列表list(--all)
开机start
关机shutdown
拔电源关机destroy
重命名domrename (低版本不支持)
挂起suspend
恢复resume
查询vnc端口号vncdisplay
导出配置dumpxml 例子:virsh dumpxml centos7 >centos7-off.xml
删除undefine 推荐:先destroy,在undefine
导入配置define
修改配置edit(自带语法检查)

低版本修改虚拟机名字操作流程

先停掉虚拟机 virsh shutdwon centos7
备份配置文件 virsh dumpxml centos7 >web01.xml
删除虚拟机 virsh undefine centos7
修改配置文件 vim web01.xml <name>web01</name>,删掉uuid
导入虚拟机 virsh define web01.xml

虚拟机优化

当虚拟机挂起或者恢复后时间后出现不一致,所以需要做好时间同步
创建虚拟机系统时取消swap节省内存

虚拟机开机自启

开机启动autostart,前提:systemctl enable libvirtd;
取消开机启动autostart --disable
查看哪些虚拟机设置了开机自启:
当设置了开启自启后在/etc/libvirt/qemu/autostart/下会存在一个软连接

[root@kvm opt]# ll /etc/libvirt/qemu/autostart/
total 0
lrwxrwxrwx 1 root root 29 Apr  3 22:28 centos7.xml -> /etc/libvirt/qemu/centos7.xml

qemu下命令

查看虚拟磁盘信息
qemu-img info test.qcow2
创建一块qcow2格式的虚拟硬盘:
qemu-img create -f qcow2 test.qcow2 2G
调整磁盘磁盘容量
qemu-img resize test.qcow2 +20G

把raw格式转换为qcow2格式

raw: 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输 总50G 占用2G
qcow2:cow (copy on write)占用空间小,支持快照,性能比raw差一点,方便传输 总50G 占用2G

virsh destroy web01
virsh list --all
qemu-img convert -f raw -O qcow2 /data/web01.raw /data/web01.qcow2
 >格式示例qemu-img convert [-f fmt]   [-O output_fmt]    filename     output_filename
virsh edit web01

[root@oldboy data]# virsh dumpxml web01|grep 'qcow2'
      <driver name='qemu' type='qcow2'/>
      <source file='/data/web01.qcow2'/>
virsh start web01 

快照

raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中

--name 指定快照名字

虚拟机克隆

kvm虚拟机:磁盘文件 + 配置文件

参数解释:
-o 指定要克隆的机器
-n 被克隆的机器

kvm虚拟机网络

默认的虚拟机网络是NAT模式,网段192.168.122.0/24,但是只能被内网访问,要想被外网也访问到,要使用桥接模式

kvm虚拟机实现桥接模式

1:创建桥接网卡
virsh iface-bridge eth0 br0
在使用此命令后会生成新的网卡信息,原eth0网卡信息也同时变更

取消桥接网卡
virsh iface-unbridge br0
2:测试虚拟机网络
创建一台使用桥接模式的虚拟机进行测试是否可以正常连接外网

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name test --memory 1024 --vcpus 1 --disk /data/test.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

修改已创建的虚拟机的网络模式,需要修改配置文件内的网络类型记名称

virsh edit centos7

    <interface type='bridge'>
      <mac address='52:54:00:55:aa:fa'/>
      <source bridge='br0'/>

在宿主机上,重启虚拟机生效

热添加技术

kvm虚拟机在线热添加硬盘
先创建一块准备添加的硬盘
qemu-img create -f qcow2 add01.qcow2 5G
临时生效
virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --subdriver=qcow2

永久生效
virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --subdriver qcow2 --config

作业3:扩容kvm虚拟机的根分区

kvm虚拟机在线热添加网卡
kvm虚拟机在线热添加内存
kvm虚拟机在线热添加cpu

虚拟机磁盘扩容:
在kvm虚拟机,卸载
virsh detach-disk centos7 vdb
qemu-img resize /data/centos7-add01.qcow2 +5G
virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2

在虚拟机中:xfs_growfs /dev/vdb

根分区扩容:
1)在宿主机上关闭虚拟机并调整虚拟机磁盘大小
qemu-img resize oldboy.qcow2 +10G

2)虚拟机中fdisk重新分区
fdisk /dev/vda

3)重启之后,执行xfs_growfs /dev/vda1,
如果虚拟机磁盘文件系统是ext4:resize2fs /dev/vda1

kvm虚拟机在线热添加网卡

virsh attach-interface web04 --type bridge --source br0 --model virtio
detach-interface web04 --type bridge --mac 52:54:00:35:d3:71

kvm虚拟机在线热添加内存

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

临时热添加内存
setmem web04 1024M --live
永久增大内存
setmem web04 1024M --config

kvm虚拟机在线热添加cpu

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
热添加cpu核数
setvcpus web04 4 --live
永久添加cpu核数
setvcpus web04 4 --config

11:virt-manager和kvm虚拟机热迁移(共享的网络文件系统)

冷迁移kvm虚拟机:配置文件,磁盘文件
热迁移kvm虚拟机:配置文件,nfs共享

1):
yum groupinstall "GNOME Desktop" -y
yum install openssh-askpass -y

yum install tigervnc-server -y

vncpasswd
vncserver :1
vncserver -kill :1

2):kvm虚拟机热迁移
1:两边的环境(桥接网卡)
2:实现共享存储(nfs)
3:虚拟机桥接网络
4:在线热迁移

上一篇下一篇

猜你喜欢

热点阅读