CenOS7安装KVM并创建虚拟机
- 前言
- 一、查看操作系统配置情况
- 1.1查看系统版本
- 1.2查看CPU是否支持虚拟化
- 1.3查看是否加载KVM
- 1.4关闭selinux
- 二、安装KVM相关软件包
- 2.1简介
- 2.2安装所需的依赖包
- 2.3启动libvirt并设置开机自启动
- 2.4查看机器的存储并创建系统镜像和存储目录
- 2.5创建物理桥接设备
- 三、进行虚拟化部署
- 3.1本地安装Xmanager(虚拟化界面工具)
- 3.2进入图形化
- 3.3创建虚拟机
- 四、桥接模式(追加内容)
- 3.1简介
- 3.2桥接模式网络配置步骤
- 3.3加载 tun 和 bridge 模块
- 3.4创建 brdige
- 总结
前言
KVM 的全称 Kernel-based Virtual Machine,是指基于内核的虚拟机,它是一个 Linux 系统的一个内核模块,从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中,该内核模块可以使得 Linux 变成了一个 Hypervisor。
那什么又是 Hypervisor 呢?Hypervisor 又称虚拟机监视器(英语:virtual machine monitor,缩写为 VMM),是用来建立与执行虚拟机器的软件、固件或硬件。hypervisor 提供虚拟的作业平台来执行虚拟操作系统,而这些虚拟操作系统可以共享 Hypervisor 所在机器的硬件资源。
那接下来简单说说如何在 CentOS 操作系统中安装 KVM,并如何通过 KVM 再虚拟化创建操作系统。
一、查看操作系统配置情况
1.1查看系统版本
[root@shigj ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
1.2查看CPU是否支持虚拟化
[root@shigj ~]# grep -E 'svm|vmx' /proc/cpuinfo
1.3查看是否加载KVM
[root@shigj ~]# lsmod | grep kvm
kvm_intel 188740 0
kvm 637289 1 kvm_intel
irqbypass 13503 1 kvm
1.4关闭selinux
[root@shigj ~]# setenforce 0
[root@shigj ~]# vim /etc/sysconfig/selinux
SELINUX=disabled
二、安装KVM相关软件包
2.1简介
2.2安装所需的依赖包
[root@shigj ~]# yum install qemu-kvm qemu-img \
> virt-manager libvirt libvirt-python virt-manager \
> libvirt-client virt-install virt-viewer -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.bfsu.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
软件包 10:qemu-kvm-1.5.3-175.el7_9.4.x86_64 已安装并且是最新版本
软件包 10:qemu-img-1.5.3-175.el7_9.4.x86_64 已安装并且是最新版本
软件包 virt-manager-1.5.0-7.el7.noarch 已安装并且是最新版本
软件包 libvirt-4.5.0-36.el7_9.5.x86_64 已安装并且是最新版本
软件包 libvirt-python-4.5.0-1.el7.x86_64 已安装并且是最新版本
软件包 virt-manager-1.5.0-7.el7.noarch 已安装并且是最新版本
软件包 libvirt-client-4.5.0-36.el7_9.5.x86_64 已安装并且是最新版本
软件包 virt-install-1.5.0-7.el7.noarch 已安装并且是最新版本
软件包 virt-viewer-5.0-18.el7.x86_64 已安装并且是最新版本
无须任何处理
2.3启动libvirt并设置开机自启动
[root@shigj ~]# systemctl start libvirtd
[root@shigj ~]# systemctl enable libvirtd
2.4查看机器的存储并创建系统镜像和存储目录
[root@shigj ~]# df -Th
[root@shigj ~]# mkdir /data/iso
[root@shigj ~]# mkdir /data/images
2.5创建物理桥接设备
查看网卡信息
[root@shigj ~]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.20 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::82fa:5bff:fe32:49cd prefixlen 64 scopeid 0x20<link>
ether 80:fa:5b:32:49:cd txqueuelen 1000 (Ethernet)
RX packets 2048721 bytes 10159480842 (9.4 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1803090 bytes 1114460173 (1.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp4s0f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 80:fa:5b:32:49:cd txqueuelen 1000 (Ethernet)
RX packets 7911077 bytes 10658996414 (9.9 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2369461 bytes 1151027323 (1.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 1684766 bytes 1141960501 (1.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1684766 bytes 1141960501 (1.0 GiB)
关闭NetworkManager服务
[root@shigj ~]#chkconfig NetworkManager off
[root@shigj ~]#service NetworkManager stop
桥接设备关联网卡
[root@shigj ~]#virsh iface-bridge enp4s0f1 br0
查看是否成功
[root@shigj ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.80fa5b3249cd yes enp4s0f1
virbr0 8000.525400aaf2fe yes virbr0-nic
三、进行虚拟化部署
3.1本地安装Xmanager(虚拟化界面工具)
3.2进入图形化
[root@shigj ~]# virt-manager
3.3创建虚拟机
四、桥接模式(追加内容)
3.1简介
由于本人的实际操作重启宿主机之后网桥无法使用了,又在网络上寻找解决办法,特追加内容,以供日后避开坑道使用
在 QEMU/KVM 的网络使用中,桥接模式可以让虚拟机需物理机共享一个物理网络设备连接外部网络,虚拟机有自己独立的 IP 地址,可以访问外部网络,外部网络也可以访问虚拟机。
优缺点:使用桥接模式配置简单,但如果你的网络环境是ip资源很缺少或对ip管理比较严格的话,那桥接模式就不太适用了
3.2桥接模式网络配置步骤
本环境已经安装完毕
[root@shigj ~]# yum install bridge-utils
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.bfsu.edu.cn
* updates: mirrors.bfsu.edu.cn
软件包 bridge-utils-1.5-9.el7.x86_64 已安装并且是最新版本
3.3加载 tun 和 bridge 模块
[root@shigj ~]# lsmod | grep tun
tun 36164 3
[root@shigj ~]# lsmod | grep bridge
bridge 151336 0
stp 12976 1 bridge
llc 14552 2 stp,bridge
3.4创建 brdige
[root@shigj ~]# brctl addbr br0
[root@shigj ~]# brctl addif br0 enp4s0f1
[root@shigj ~]# brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.80fa5b3249cd no enp4s0f1
[root@shigj ~]# brctl stp br0 on
[root@shigj ~]# brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.80fa5b3249cd yes enp4s0f1
[root@shigj ~]# ifconfig enp4s0f1
enp4s0f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::cb75:59e4:4785:118 prefixlen 64 scopeid 0x20<link>
ether 80:fa:5b:32:49:cd txqueuelen 1000 (Ethernet)
RX packets 26294 bytes 3250364 (3.0 MiB)
RX errors 0 dropped 6 overruns 0 frame 0
TX packets 71876 bytes 78833976 (75.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@shigj ~]# ifconfig br0
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether ee:f7:95:49:af:e7 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@shigj ~]# ifconfig enp4s0f1 0 up
[root@shigj ~]# ifconfig br0 up
[root@shigj ~]# dhclient br0
[root@shigj ~]# ifconfig br0
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.20 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::82fa:5bff:fe32:49cd prefixlen 64 scopeid 0x20<link>
ether 80:fa:5b:32:49:cd txqueuelen 1000 (Ethernet)
RX packets 12638 bytes 1303940 (1.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 17466 bytes 52983081 (50.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
总结
本文根据网络内容特别整理以供所有人避坑使用
KVM在具备Intel VT或AMD-V功能的x86平台上运行。它也被移植到S/390,PowerPC与IA-64平台上。在Linux内核3.9版中,加入ARM架构的支持。
1)KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。
2)是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。
3)它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
4)KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
5)KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。
6)在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。