使用KVM构建虚拟化服务器教程1(CentOS宿主机为全新安装的情况)
一、基本介绍
1,KVM 介绍
(1)KVM 全称是基于内核的虚拟机(Kernel-based Virtual Machine)。
(2)KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 线程。这使得 KMV 能够使用 Linux 内核的已有功能。
(3)KVM 由以色列的 Quramnet 组织开发,从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中,该内核模块使得 Linux 变成了一个 Hypervisor。
2,虚拟化简史
二、KVM 安装配置(随系统安装时安装)
1,系统安装
(1)KVM 最简单的方式就是在安装系统的时候,选择虚拟化功能组件一起安装。这里我们以 CentOS 7 系统为例,首先将镜像下载下来:
(2)接着使用这个镜像安装系统。因为我们这次使用 WMware 做实验,在建立的虚拟机的 CPU 要勾选虚拟化功能,这样虚拟机才会支持 KVM 虚拟化。
提示:
如果是物理服务器,需要在 BIOS 中打开虚拟化功能(Virtualization Technology),一般的服务器默认是打开这个功能的。
(3)在安装设置页面点击“软件选择”按钮:
(4)选择“带GUI的服务器”,并勾选“虚拟化客户端”、“虚拟化Hypervisor”、“虚拟化工具”。点击完成后开始安装。
(5)安装结束后执行如下命令,如果有过滤出 vmx 或 svm 关键字就代表设备支持虚拟化,vmx 是 Intel 的 CPU,svm 是 AMD 的 CPU。
grep -E 'svm|vmx' /proc/cpuinfo
(6)接着执行如下命令检查 KVM 模块是否安装:
lsmod | grep kvm
(7)最后执行如下命令检查 libvirtd 是否安装并启动:
(3)安装完毕后执行如下命令查看是否安装成功:
(4)接着执行如下命令安装 Cockpit:
(5)安装完毕后执行如下命令启动 Cockpit 服务并设置为自动启动:
(6)接着执行如下命令查看是否启动成功:
(7)由于 Cockpit 默认使用的是 9090 端口,执行如下命令打开这个端口:
systemctl status libvirtd.service
2,安装 Cockpit
Cockpit 是一个基于 Web 的服务器管理工具,可用于 CentOS 和 RHEL 系统。我们可以使用 Cockpit 来安装、配置、管理虚拟机。在 CentOS 8 和 RHEL 8 中,cockpit 是默认的服务器管理工具。它的软件包在默认的 CentOS 8 和 RHEL 8 仓库中就有。因为我使用的是 CentOS 7,所以还需要手动安装。
(1)我们使用 dnf 命令安装 Cockpit,但 CentOS 7 并不包含该命令。所以首先执行如下命令安装并 启用 epel-release:
(2)接着执行如下命令安装 dnf:
yum install epel-release
(2)接着执行如下命令安装 dnf:
yum install dnf
(3)安装完毕后执行如下命令查看是否安装成功:
dnf --version
(4)接着执行如下命令安装 Cockpit:
dnf install cockpit cockpit-machines
(5)安装完毕后执行如下命令启动 Cockpit 服务并设置为自动启动:
systemctl start cockpit.socket systemctl enable cockpit.socket
(6)接着执行如下命令查看是否启动成功:
systemctl status cockpit.socket
(7)由于 Cockpit 默认使用的是 9090 端口,执行如下命令打开这个端口:
firewall-cmd --permanent --add-port=9090/tcp firewall-cmd --reload
3,配置网卡
(1)使用物理机浏览器访问 http://192.168.60.138:9090,打开 Cockpit 的 Web 界面(这里 ip 为 CentOS 系统 IP)。进入“网络”页面,可以看到目前网卡是 ens33,其 IP 是 192.168.60.138。
(2)接着点击“添加网桥”按钮,添加个名为 br0 的新网卡,并在端口部分勾选上前面提到的 ens33
(3)点击应用后可以看到之前的 IP 转移到了 br0 这个网卡上了:
三、创建虚拟机
(1)进过上面操作,接下来就开始正式创建虚拟机了。首先我们将需要安装的系统镜像文件上传到 CentOS 系统里,这里我将其放在如下目录:
/var/lib/libvirt/images/
(2)接着访问 Cockpit 的 Web 界面,打开“虚拟机”页面,点击“Create VM”按钮:
(3)在弹出的页面中输入镜像文件的路径、虚拟机名称,并设置虚拟机占用的磁盘和内存后,点击“Create”按钮开始创建虚拟机:
(4)接下来就同正常的系统安装方式一样一路设置并安装即可。
注意:如果安装中途发现画面卡死,点击无反应不要着急。并不是系统死了,只要重新打开 Cockpit 的 Web 界面再进入虚拟机页面即可:
(5)安装完毕后根据页面提示点击重启按钮,重启虚拟机。重启后虚拟机不会自动启动,我点击 Run 按钮将其启动:
(6)启动后如果还是进入安装界面,在 Disks 选项卡中可以看到镜像还是没退出,造成仍然从 iso 镜像启动:
(7)我们可以将该虚拟机关闭后,在 CentOS 宿主机上执行如下命令将镜像退出:
virsh change-media centos7 --path /var/lib/libvirt/images/CentOS-7_5-x86_64-Minimal-1804.iso --eject
(8)执行后通过 Cockpit 查看可以看到镜像已经卸载掉了。这时我们启动虚拟机可以正常进入系统了:
(9)进入虚拟机执行 ip addr 命令可以看到此时还没有能联网的 IP:
(11)再次执行 ip addr 命令可以看到已经有IP地址了(与 CentOS 宿主机是同一个网段)。至此,虚拟机的安装以及虚拟机的 IP 配置均已完成,这时就可以像往常一样使用这台虚拟机了。
(2)以上这个命令无法列出关机状态的虚拟机,需要列出关机状态的虚拟机需要加多一个 --all 参数:
(3)下面是管理虚拟机的一些常用命令:
(10)接着执行如下命令获取 IP 地址:
dhclient eth0
(11)再次执行 ip addr 命令可以看到已经有IP地址了(与 CentOS 宿主机是同一个网段)。至此,虚拟机的安装以及虚拟机的 IP 配置均已完成,这时就可以像往常一样使用这台虚拟机了。
附:虚拟机的管理控制
1,使用 Cockpit
访问 Cockpit 的 Web 界面我们可以在“虚拟机”界面中对所有的虚拟机进行管理:
2,使用命令行
(1)在宿主机执行如下命令可以列出当前有多少个虚拟机,以及其状态:
virsh list
(2)以上这个命令无法列出关机状态的虚拟机,需要列出关机状态的虚拟机需要加多一个 --all 参数:
virsh list --all
(3)下面是管理虚拟机的一些常用命令:
virsh console centos7 // 进入指定的虚拟机,进入的时候还需要按一下回车 virsh start centos7 // 启动虚拟机 virsh shutdown centos7 // 关闭虚拟机 virsh destroy centos7 // 强制停止虚拟机 virsh undefine centos7 // 彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘 virsh autostart centos7 // 设置宿主机开机时该虚拟机也开机 virsh autostart --disable centos7 // 解除开机启动 virsh suspend centos7 // 挂起虚拟机 virsh resume centos7 // 恢复挂起的虚拟机