0%

centos7中kvm虚拟机的创建与管理


概述

通常情况我们个人会在windows环境上来创建虚拟机,但是有时候也需要在linux服务器环境上创建虚拟机,这里对创建流程进行一下记录。我这里的环境是centos7。

1
2
3
4
5
6
7
$ uname -a

Linux a.a.a.com 3.10.0-1160.15.2.el7.x86_64 #1 SMP Wed Feb 3 15:06:38 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/centos-release

CentOS Linux release 7.9.2009 (Core)

检查CPU是否支持虚拟化

1
2
3
$ cat /proc/cpuinfo | egrep 'vmx|svm'

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb invpcid_single intel_pt ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear spec_ctrl intel_stibp flush_l1d

有vmx或者svm就说明CPU支持虚拟化,vmx是Intel的CPU,svm是AMD的CPU。


安装配置KVM环境

1
yum -y install qemu-kvm qemu-kvm-tools qemu-img virt-manager libvirt libvirt-python libvirt-client bridge-utils virt-viewer virt-install

启动libvirtd并设置开机自启,

1
2
3
systemctl enable libvirtd

systemctl start libvirtd

查看模块是否启动,

1
2
3
4
5
$ lsmod | grep kvm

kvm_intel 188740 14
kvm 637289 1 kvm_intel
irqbypass 13503 7 kvm

关闭防火墙,

1
2
3
systemctl stop firewalld

systemctl disable firewalld

关闭selinux,

1
2
3
$ vim /etc/sysconfig/selinux

SELINUX=disabled

需要重启电脑使得selinux设置生效,

1
reboot

网络配置

为了虚拟机能够通过桥接模式上网,需要配置一个网桥。

首先将原本的网卡配置复制一份为br0,方便直接修改:

1
cp /etc/sysconfig/network-scripts/ifcfg-eno1 /etc/sysconfig/network-scripts/ifcfg-br0

修改原本网卡eno1的配置如下,注意增加了BRIDGE=br0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TYPE=Ethernet
BRIDGE=br0
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=eno1
UUID=d92ae489-8b80-4f0b-a8cf-fa06cb539547
DEVICE=eno1
ONBOOT=yes

网桥br0的配置为(如果是复制的,记得把uuid随便改一下):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=br0
UUID=d92ae489-8b80-4f0b-a8cf-fa06cb539568
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=9.9.9.9

配置完成后重启网络(注意别改错了,不然重启网络失败,没有网了,ssh也会断掉):

1
systemctl restart network

创建虚拟机

1
2
3
4
5
6
7
virt-install --name=rancher --memory=8000 --vcpus=2 \
--os-type=linux --os-variant=rhel7 \
--location=/home/live/CentOS-7-x86_64-Minimal-1804.iso \
--disk path=/home/live/kvm_data/rancherVM.img,size=200 \
--bridge=br0 \
--graphics=none \
--console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"

其中:

  • --name=rancher指定了虚拟机名称为rancher。
  • --memory=8000指定了虚拟机内存为8000M。
  • --vcpus=2指定了虚拟机核数为2。
  • --location=/home/live/CentOS-7-x86_64-Minimal-1804.iso指定了安装时的系统镜像的位置。
  • --disk path=/home/live/kvm_data/rancherVM.img,size=200指定了存储虚拟机的位置,虚拟机大小为200G。

正常情况下,会进入centos的安装指引,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Starting installer, one moment...
anaconda 21.48.22.134-1 for CentOS 7 started.
* installation log files are stored in /tmp during the installation
* shell is available on TTY2
* when reporting a bug add logs from /tmp as separate text/plain attachments
07:24:47 Not asking for VNC because we don't have a network
================================================================================
================================================================================
Installation

1) [x] Language settings 2) [!] Time settings
(English (United States)) (Timezone is not set.)
3) [!] Installation source 4) [!] Software selection
(Processing...) (Processing...)
5) [!] Installation Destination 6) [x] Kdump
(No disks selected) (Kdump is enabled)
7) [ ] Network configuration 8) [!] Root password
(Not connected) (Password is not set.)
9) [!] User creation
(No user will be created)
Please make your choice from above ['q' to quit | 'b' to begin installation |
'r' to refresh]:

然后进入了正常的centos安装流程,将!的选项配置好之后,输入b进入安装流程,等待安装完毕即可。


其它的一些命令

设置宿主机启动时,虚拟机也自动启动:

1
virsh autostart rancher

查看当前所有虚拟机的情况:

1
virsh list --all

进入虚拟机的console:

1
virsh console rancher

停止并删除虚拟机:

1
2
3
4
5
virsh destroy rancher

virsh undefine rancher

rm /home/live/kvm_data/rancherVM.img

参考

CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

centos7之KVM虚拟化平台

Centos 安装KVM并安装虚拟机