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

1:关闭firewalld,关闭selinux。并且检查cpu参数是否支持虚拟化:
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@bogon ~]# vi /etc/selinux/config
在这里插入图片描述
[root@bogon ~]# grep -Ei ‘vmx|svm’ /proc/cpuinfo
如果有过滤出vmx或svm关键字就代表支持虚拟化,vmx是Intel的CPU,svm是AMD的CPU。
在这里插入图片描述
然后格式化新磁盘,挂载到/kvm_data,当然这个路径可以自定义,我这里使用的是/kvm_data。
[root@localhost ~]# fdisk -l |grep Disk
Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk label type: dos
Disk identifier: 0x000f0eb3
Disk /dev/mapper/centos-root: 19.8 GB, 19826475008 bytes, 38723584 sectors
Disk /dev/mapper/centos-swap: 1073 MB, 1073741824 bytes, 2097152 sectors
[root@localhost ~]# mkfs.ext4 /dev/sdb # 会有询问,输入y即可
[root@localhost ~]# blkid /dev/sdb # 检查是否已格式化
/dev/sdb: UUID=“5a7cf162-f8f3-4d02-ad72-17bde010efc8” TYPE=“ext4”
[root@localhost ~]# mkdir /kvm_data # 创建挂载目录
[root@localhost ~]# mount /dev/sdb /kvm_data # 将新磁盘挂载到/kvm_data目录下
[root@localhost ~]# vim /etc/fstab # 配置开机时挂载
/dev/sdb /kvm_data ext4 defaults 0 0
最后就是安装kvm:
[root@localhost ~]# yum install -y virt-* libvirt bridge-utils qemu-img
配置KVM的网桥模式

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@bogon network-scripts]# cp ifcfg-ens33 ifcfg-br0

[root@openstack network-scripts]# cat ifcfg-br0
TYPE=“Bridge” //这一行修改为Bridge
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“none”
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“no”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“br0” //修改设备名称为br0
#UUID=“fdbad04f-dae3-440e-8a8b-01d6a7bc9fe0” //这一行注释
DEVICE=“br0” //修改设备为br0
ONBOOT=“yes”
IPADDR=“192.168.10.210”
PREFIX=“24”
GATEWAY=“192.168.10.1”
DNS1=“8.8.8.8”

[root@openstack network-scripts]# cat ifcfg-ens33
TYPE=“Ethernet”
BRIDGE=br0 //添加这一行
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“none”
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“no”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“eno1”
UUID=“fdbad04f-dae3-440e-8a8b-01d6a7bc9fe0”
DEVICE=“eno1”
ONBOOT=“yes”
#IPADDR=“192.168.10.210” //注释掉这几行
#PREFIX=“24”
#GATEWAY=“192.168.10.1”
#DNS1=“8.8.8.8”

重启网卡服务
[root@openstack network-scripts]# systemctl restart network

查看网卡
[root@openstack network-scripts]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0894ef518b22 no eno1
virbr0 8000.52540095d7c2 yes virbr0-nic

查看ip信息
[root@openstack network-scripts]# ifconfig |head -20
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.210 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::a94:efff:fe51:8b22 prefixlen 64 scopeid 0x20
ether 08:94:ef:51:8b:22 txqueuelen 1000 (Ethernet)
RX packets 856 bytes 52981 (51.7 KiB)
RX errors 0 dropped 2 overruns 0 frame 0
TX packets 120 bytes 23450 (22.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 08:94:ef:51:8b:22 txqueuelen 1000 (Ethernet)
RX packets 10077 bytes 793083 (774.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1184 bytes 228415 (223.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16

eno2: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 08:94:ef:51:8b:23 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)

[root@openstack network-scripts]# 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=55 time=2.08 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=55 time=1.80 ms

接下来我们就可以启动KVM的服务了:
[root@localhost ~]# lsmod |grep kvm # 检查KVM模块是否加载
kvm_intel 162153 0
kvm 525259 1 kvm_intel
[root@localhost ~]# systemctl start libvirtd # 启动libvirtd服务
[root@localhost ~]# ps aux |grep libvirtd # 检查服务进程
root 5744 2.2 0.1 614840 14120 ? Ssl 23:02 0:00 /usr/sbin/libvirtd
root 5872 0.0 0.0 112664 964 pts/1 R+ 23:02 0:00 grep --color=auto libvirtd
[root@localhost ~]# brctl show # 可以看到两个网卡
bridge name bridge id STP enabled interfaces
br0 8000.000c29f1912c no eno16777728 # 我们配置的桥接网卡
virbr0 8000.525400240b50 yes virbr0-nic # NAT模式的网卡

创建虚拟机安装CentOS7
将服务成功启动后,我们就可以使用KVM安装虚拟机了,首先需要准备一个操作系统的镜像文件,我这里用的是CentOS7的镜像文件:
[root@localhost ~]# cd /tmp/
[root@localhost /tmp]# ls |grep CentOS
CentOS-7-x86_64-DVD-1511.iso
[root@localhost /tmp]#
使用命令行安装这个CentOS7镜像文件:
[root@localhost ~]# virt-install --name=study01 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-1511.iso --disk path=/kvm_data/study01.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args=“console=tty0 console=ttyS0”
命令说明:

–name 指定虚拟机的名称
–memory 指定分配给虚拟机的内存资源大小
maxmemory 指定可调节的最大内存资源大小,因为KVM支持热调整虚拟机的资源
–vcpus 指定分配给虚拟机的CPU核心数量
maxvcpus 指定可调节的最大CPU核心数量
–os-type 指定虚拟机安装的操作系统类型
–os-variant 指定系统的发行版本
–location 指定ISO镜像文件所在的路径,支持使用网络资源路径,也就是说可以使用URL
–disk path 指定虚拟硬盘所存放的路径及名称,size 则是指定该硬盘的可用大小,单位是G
–bridge 指定使用哪一个桥接网卡,也就是说使用桥接的网络模式
–graphics 指定是否开启图形
–console 定义终端的属性,target_type 则是定义终端的类型
–extra-args 定义终端额外的参数
开始安装后,正常的情况下会进入到这样一个界面:
在这里插入图片描述
这是让你配置语言、时区、安装源、网络、密码等信息,就和我们在VMware里安装CentOS虚拟机是一样的,只不过这个是命令行形式,而VMware里是图形界面罢了。

首先设置语言,按数字1,回车进入以下界面:
在这里插入图片描述
例如我要选Chinese就按数字68并回车即可,回车之后会让你选择是中文简体还是繁体,也是按下相应的数字并回车即可:
在这里插入图片描述
配置完成之后又会再次回到配置界面,这次我们来设置时区:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
设置系统安装盘:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置root用户的密码:
在这里插入图片描述
最后开始安装系统:
在这里插入图片描述
安装完成之后就会停止在以下这个界面,按一下回车即可,这时就会重启安装完的系统:
在这里插入图片描述
虚拟机管理
重启成功之后就会入到登录界面,可以看到我这里是成功登录的:
这时我们是处于一个虚拟终端的,因为安装了虚拟机,如果要退出来的话,应该说是切出来,按 Ctrl + ] 即可。

切出虚拟机后,可以看到/kvm_data/目录下多了一个虚拟机的磁盘目录:
[root@localhost ~]# ls /kvm_data/
lost+found study01.img
[root@localhost ~]#
查看KVM进程:
[root@localhost ~]# ps axu |grep kvm
使用以下命令可以列出当前有多少个虚拟机,以及其状态:
[root@localhost ~]# virsh list
Id Name State

2 study01 running

查看虚拟机配置文件:
[root@localhost ~]# ls /etc/libvirt/qemu/
networks study01.xml
[root@localhost ~]# ls /etc/libvirt/qemu/networks/
autostart default.xml
[root@localhost ~]# ls /etc/libvirt/qemu/networks/autostart/
default.xml
[root@localhost ~]#
以下介绍一下管理虚拟机的一些常用命令:
[root@localhost ~]# virsh console study01 # 进入指定的虚拟机,进入的时候还需要按一下回车
[root@localhost ~]# virsh start study01 # 启动虚拟机
[root@localhost ~]# virsh shutdown study01 # 关闭虚拟机
[root@localhost ~]# virsh destroy study01 # 强制停止虚拟机
[root@localhost ~]# virsh undefine study01 # 彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘
[root@localhost ~]# virsh autostart study01 # 设置宿主机开机时该虚拟机也开机
[root@localhost ~]# virsh autostart --disable study01 # 解除开机启动
[root@localhost ~]# virsh suspend study01 # 挂起虚拟机
[root@localhost ~]# virsh resume study01 # 恢复挂起的虚拟机
进入到刚刚安装的虚拟机里配置一下IP:
[root@localhost ~]# virsh console study01
Connected to domain study01
Escape character is ^]

即可配置刚创建的虚拟机


版权声明:本文为yuzhentong原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。