系统环境

  • 硬件

类型 型号 明细
CPU Intel 酷睿i5 460M 8C
内存 DDR3 2条,共8G
硬盘 机械硬盘 200G
  • 操作系统

Linux centos 7

目标

主机3台。
配置:1C CPU, 2G 内存, 40G 硬盘
网络:使用网络桥接接入网络,使网络内其他主机可以访问虚拟主机
操作系统:Centos 7

准备

  • yum环境配置
#备份配置
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#替换墙内yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#生成缓存
yum clean all
yum makecache
  • 系统盘

1、下载centos 7系统盘

前往 Centos官网下载页下载CentOS-7-x86_64-DVD-1708.iso
2、上传安装包

上传ISO安装包”CentOS-7-x86_64-DVD-1708.iso”到路径”/data/kvm”目录
+ 网络配置

1、安装桥接工具

yum install bridge-utils

2、配置网桥

# 查看网络配置
$ ifconfig
# 这里会显示当前的网配置
# 其中enp4s0为网卡配置,lo本级环路地址
$ cd /etc/sysconfig/network-scripts/ #进入网络配置脚本目录
$ cp ifcfg-enp4s0 ifcfg-enp4s0.bak #备份网卡配置
$ vi ifcfg-br0 #新增网桥配置
TYPE=bridge # 类型
BOOTPROTO=static # 静态地址
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0 #配置名称
UUID=ab508da9-c3a2-4d3d-9917-435025b8910a
DEVICE=br0
ONBOOT=yes #开机启动
MM_Controlled=no
IPADDR=192.168.1.118 #ip地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.1.1 #网管地址
DNS1=114.114.114.114 #dns地址

$ vi ifcfg-enp4s0 #修改配置为
TYPE=Ethernet #类型为以太网
BOOTPROTO=none
NAME=enp4s0 #名称
DEVICE=enp4s0
ONBOOT=yes #开机自起
BRIDGE=br0 #网桥名称

$ service network restart # 重启网卡

操作步骤

1、安装kvm环境

# 安装 kvm 管理工具
yum -y install qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools bridge-utils virt-install
# 重启宿主机,以便加载 kvm 模块
reboot
# 查看KVM模块是否被正确加载
lsmod | grep kvm

2、关闭SELinux

将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled

$ cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
# SELINUX=enforcing 更新为下行
SELinux=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

3、启动libvert,并设置开机启动

  • systemctl start libvirtd
  • systemctl enable libvirtd

4、创建虚拟机文件存放目录

mkdir -p /data/kvm/images

5、创建虚拟机

$ virt-install \
--name kvm-1 \
--memory 2018 \
--vcpus 1 \
--cpu host \
--location /data/kvm/CentOS-7-x86_64-DVD-1708.iso \
--disk /data/kvm/images/docker-1.img,size=40,format=qcow2 \
--network bridge=br0 \
--os-type=linux \
--os-variant=rhel7.3 \
--virt-type kvm \
--graphics none \
--extra-args='console=ttyS0' \
--force

5、更新config配置

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]:
  • 1、语言设置——设置中文
  • 2、时区设置——设置上海时区
  • 3、安装源——可以不处理
  • 4、Software selection——预装软件,可以不处理,默认mini安装
  • 5、安装目的地——可以不处理
  • 6、Kdump 存储分区,可以选择默认分区lvm
  • 7、网络配置——可以不处理
  • 8、Root用户密码——建议设置
  • 9、用户创建——可以不处理

6 修改kvm虚机网络配置

TYPE=Ethernet
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=eth0
UUID=a6deaf5d-c21e-4704-bbd6-973976a8aeb7
DEVICE=eth0
ONBOOT=yes
DNS1=114.114.114.114
GATEWAY=192.168.1.1
IPADDR=192.168.1.121
NETMASK=255.255.255.0
  • 重启虚机网络

service network restart
+ ip addr 查看虚机ip

7、克隆多台主机

  • 关闭kvm-1
  • 宿主机执行$virsh shutdown kvm-1
  • 克隆kvm-2
$ virt-clone -o kvm-1 -n kvm-2 -f /data/kvm/images/kvm-2.img
  • 启动kvm-2
$ virsh start kvm-2
  • 更新kvm-2网络配置
$ vi /etc/sysconfig/network-scripts/ifcfg-eth0
#修改为新ip IPADDR=192.168.1.122

总结

  • 宿主机权限

如果不能清晰的管理用户,权限建议使用root用户

  • 系统安装包

我最初使用的是CentOS-7-x86_64-Minimal-1708.iso ,没有安装成功,后来改为CentOS-7-x86_64-DVD-1708.iso 安装成功了。
主要遇到的问题是在未设置虚机网络前不能不能登录虚机。

  • 虚机访问
  • 虚机通过桥接方式接入网络,在局域网内任何机器都可以使用ssh访问虚机。
  • 虚机未设置网络前可以使用vnc,virt-viewer,console 几种方式连接。笔者在安装过程中只试验通过了console方式,

  • 安装参考,在安装过程中参考了多篇文章,最终摸索出了一个可行的方案,主要问题是宿主机硬件不一致,操作系统不一致,安装包版本一致,可能导致于参考文章的结果不一致。所以多摸索,参考文章+具体问题具体分析。