CentOS 7 安装 KVM 并创建虚拟机

目录

环境要求

  • CPU 支持虚拟化(Intel VT 或 AMD-V)

安装 KVM

yum -y install qemu-kvm libvirt virt-install bridge-utils

验证模块已加载:

lsmod | grep kvm
# kvm_intel             170181  0
# kvm                   554609  1 kvm_intel
# irqbypass             13503  1 kvm

启动 libvirt 服务:

systemctl start libvirtd
systemctl enable libvirtd

配置桥接网络

为 KVM 虚拟机配置桥接网络以访问外部网络。

实验环境:

  • OS:CentOS Linux release 7.3.1611 (Core)
  • 网络:双网卡 bonding
  • 硬件:DELL R420, 16G 内存, 4 核 CPU

创建网桥配置文件

编辑 /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=static
IPADDR=192.168.1.133
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DEFROUTE=yes

配置 bonding(可选)

编辑 /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
TYPE=Ethernet
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
BRIDGE=br0
ONBOOT=yes
BONDING_OPTS="mode=5 miimon=100"

重启网络服务:

systemctl restart network

创建虚拟机

创建存储目录

mkdir -p /var/kvm/images

使用 virt-install 安装虚拟机

通过网络安装 CentOS 7:

virt-install \
  --name elk \
  --ram 4096 \
  --disk path=/var/kvm/images/elk.img,size=30 \
  --vcpus 2 \
  --os-type linux \
  --os-variant rhel7 \
  --network bridge=br0 \
  --graphics none \
  --console pty,target_type=serial \
  --location 'http://mirrors.aliyun.com/centos/7/os/x86_64/' \
  --extra-args 'console=ttyS0,115200n8 serial'

关键参数说明:

参数说明
--name虚拟机名称
--ram虚拟机内存(MB)
--disk path=xxx,size=xxx磁盘路径和大小(GB)
--vcpus虚拟 CPU 数
--os-typeGuestOS 类型(linux/windows)
--os-variantGuestOS 具体版本(可用 osinfo-query os 查询)
--network网络类型(bridge=桥接)
--graphics图形界面(none=无)
--console控制台类型
--location安装源位置(HTTP/NFS)
--extra-args内核启动参数

虚拟机网络配置

安装完成后,配置虚拟机内的网卡。编辑虚拟机内的 /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
UUID=a38ceceb-5f4e-4d08-a108-d83c176ea85b
DEVICE=eth0
ONBOOT=yes
IPADDR="192.168.0.206"
PREFIX="24"
GATEWAY="192.168.0.1"
DNS1="114.114.114.114"

虚拟机安装另一种方法

通过 XML 配置文件方式创建虚拟机:

# 编辑 vm.xml
virsh define vm.xml    # 定义虚拟机(不启动)
virsh list --all       # 查看虚拟机列表
virsh start vm_name    # 启动虚拟机

这种方式需要 KVM 模块已加载(某些特殊环境如 tlinux 可能不支持)。

#kvm #systemd