欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

kvm虚拟化平台搭建,kvm虚拟化技术实战

程序员文章站 2022-06-21 18:46:45
...

1、前提 :安装桌面化centos7系统

2、 开机后查看 CPU 是否支持全虚拟化

[aaa@qq.com ~]# cat /proc/cpuinfo | grep --color vmx
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vm ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec ibpb ibrs stibp arat spec_ctrl intel_stibp arch_capabilities
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vm ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec ibpb ibrs stibp arat spec_ctrl intel_stibp arch_capabilities
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vm ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec ibpb ibrs stibp arat spec_ctrl intel_stibp arch_capabilities
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vm ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec ibpb ibrs stibp arat spec_ctrl intel_stibp arch_capabilities

若出现带vmx字眼的数据则代表是支持全虚拟化技术

若没有出现,则将虚拟机关机去设置
kvm虚拟化平台搭建,kvm虚拟化技术实战
将以上标红的选项选上

3、 挂载

[aaa@qq.com ~]# mount /dev/sr0 /mnt/

4、配置本地yum源

##将网络yum源移动到opt下
[aaa@qq.com ~]# cd /etc/yum.repos.d/
[aaa@qq.com yum.repos.d]# mv * /opt/

编写本地yum源

#编写本地yum源
[aaa@qq.com yum.repos.d]# cat bj.repo 
[ym]
name=ym
baseurl=file:///mnt
gpgcheck=0

测试本地yum源是否成功

[aaa@qq.com yum.repos.d]# yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源标识                                                     源名称                                                  状态
ym                                                         ym                                                      9,911
repolist: 9,911

有数据则为成功

5、 安装 KVM

安装 KVM 模块、管理工具和 libvirt,命令行安装

[aaa@qq.com yum.repos.d]# yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager libvirt-python -y

注:使用系统镜像,先配置好 yum 本地源
qemu-kvm : kvm 主程序, KVM 虚拟化模块
virt-manager: KVM 图形化管理工具
libvirt: 虚拟化服务
libguestfs-tools : 虚拟机的系统管理工具
virt-install : 安装虚拟机的实用工具 。比如 virt-clone 克隆工具就是这个包安装的
libvirt-python : python 调用 libvirt 虚拟化服务的 api 接口库文件

6、 查看安装完KVM后的服务

[aaa@qq.com ~]# systemctl start libvirtd #开启虚拟化服务
[aaa@qq.com ~]# systemctl enable libvirtd #设置 libvirtd 服务开机启劢 
[aaa@qq.com ~]# systemctl is-enabled libvirtd #查看是kvm是否是开机启劢
确定正确加载 kvm 模块
[aaa@qq.com ~]# lsmod | grep kvm
kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
# 检查 KVM 模块是否成功安

7、 使用命令:virt-manager 建立虚拟机

将 kvm 管理工具从英文界面切换成中文界面:

 [aaa@qq.com ~]# echo $LANG en_US.UTF-8
 [aaa@qq.com ~]# LANG='zh_CN.UTF-8'
 [aaa@qq.com ~]# virt-manager

执行 virt-manager 后,弹出如下界面:
kvm虚拟化平台搭建,kvm虚拟化技术实战

8、配置 KVM 网络桥接功能

网桥介绍: 我们经常所说的 Bridge 设备其实就是网桥设备,也就相当亍现在的二层交换机,用亍连接
同一网段内的所有机器,所以我们的目的就是将网络设备 eth0 添加到 br0,此时 br0 就成为了所谓的交换机设备,我们物理机的 eth0 也是连接在上面的。
添加桥接设备 br0: 相当亍一个二层交换机

安装桥设备工具:

[aaa@qq.com ~]# rpm -ivh /mnt/Packages/bridge-utils-1.5-9.el7.x86_64.rpm 

把 eth0 绑到 br0 桥设备上:

[aaa@qq.com ~]# cd /etc/sysconfig/network-scripts/
[aaa@qq.com network-scripts]# cat ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="0da91cde-32c5-4b9c-b60f-901eff09216d"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE="br0" #最后一行加上

生成桥设备的配置文件

[aaa@qq.com network-scripts]# cat ifcfg-br0 ##这是新建的网卡文件
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="dhcp"
PROXY_METHOD=none
BROWSER_ONLY=no
DEFOUTE=yes
IPV4_FAILURE_FATAL=no
NAME=br0

测试br0

[aaa@qq.com ~]# systemctl restart network
[aaa@qq.com ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 00:0c:29:ea:7e:5b brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:22:4a:3b brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:22:4a:3b brd ff:ff:ff:ff:ff:ff
9: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:ea:7e:5b brd ff:ff:ff:ff:ff:ff
    inet 192.168.186.249/24 brd 192.168.186.255 scope global noprefixroute dynamic br0
       valid_lft 1798sec preferred_lft 1798sec
    inet6 fe80::20c:29ff:feea:7e5b/64 scope link 
       valid_lft forever preferred_lft forever
[aaa@qq.com ~]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=128 time=7.38 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=128 time=4.54 ms

查看桥接的信息

[aaa@qq.com ~]#  brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.000c29ea7e5b	no		ens33
virbr0		8000.525400224a3b	yes		virbr0-nic

9、创建一台KVM的虚拟机

创建一个分区,用于存放安装好的 Linux 操作系统:

[aaa@qq.com ~]# fdisk /dev/sda 
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):
No free sectors available

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。

格式化,挂载使用

[aaa@qq.com ~]# mkfs.xfs /dev/sda1 

准备系统镜像:把 centos7.4 镜像上传到/var/lib/libvirt/images/目录下。

[aaa@qq.com ~]# cd /var/lib/libvirt/images/
[aaa@qq.com images]# ll
总用量 1059840
-rwxrw-rw-. 1 root root 1085276160 11月  9 11:29 CentOS-7-x86_64-Minimal-2003.iso
[aaa@qq.com images]#  virt-manager

准备新建虚拟机
kvm虚拟化平台搭建,kvm虚拟化技术实战
kvm虚拟化平台搭建,kvm虚拟化技术实战
kvm虚拟化平台搭建,kvm虚拟化技术实战
kvm虚拟化平台搭建,kvm虚拟化技术实战
kvm虚拟化平台搭建,kvm虚拟化技术实战
点“完成”到此创建好一个新的 KVM 虚拟机了。
kvm虚拟化平台搭建,kvm虚拟化技术实战
修改 KVM 中 BIOS 引导顺序
kvm虚拟化平台搭建,kvm虚拟化技术实战
KVM 虚拟机常用命令

[aaa@qq.com ~]# virsh list #列出在运行的虚拟机
[aaa@qq.com ~]# virsh start centos7-71 #启劢 centos7-71 虚拟机
[aaa@qq.com ~]# virsh shutdown centos7-71 #关闭 centos7-71 虚拟机
[aaa@qq.com ~]# virsh autostart centos7-71 #设置 centos7-71 虚拟机为物理机开机
后,自动启动
测试:
reboot 后,没有发现 kvm 虚拟机开机自动启动。原因是什么?
解决:
[aaa@qq.com ~]# chkconfig --list libvirtd #开机启劢了
libvirtd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
[aaa@qq.com ~]# vim /etc/fstab #记得设置开机自劢挂载 sda1,不然开机后启动不了虚拟机
/dev/sda1 /var/lib/libvirt/images xfs defaults 0 0