CentOS7安装KVM虚拟化

  • Post author:
  • Post category:其他


介绍

KVM是Kernel-based Virtual Machine的简写,KVM是一个全虚拟化的解决方案,能在一台物理机中虚拟出几台虚拟操作系统。可以在x86架构的计算机上实现虚拟化功能。但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。

实操

一.前期准备及安装KVM


  • 检查宿主机CPU是否支持虚拟化
#全虚拟化检查:结果大于0表示支持
#其中vmx是intel cpu 标志,svm是amd cpu 标志
[root@localhost ~] cat /proc/cpuinfo | egrep '(vmx|svm)' | wc -l
4

  • 关闭firewalld防火墙
[root@sky ~] systemctl stop firewalld.service
[root@sky ~] systemctl disable firewalld.service
[root@sky ~] firewall-cmd --state
not running

  • 关闭SELinux(修改完重启)
[root@sky ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@sky ~]# reboot

  • 在主板BIOS中开启CPU的Virtual Technolege(VT,虚化技术)

    (以虚拟机为例,物理机需要在BIOS设置,默认开启)


  • 安装163网易的yum源

    (有时候需要替换yum源,否则kvm无法安装成功,virsh命令找不到)

[root@localhost ~] cd /etc/yum.repos.d
[root@localhost yum.repos.d] mv CentOS-Base.repo CentOS-Base.repo.bak
[root@localhost yum.repos.d] wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
[root@localhost yum.repos.d] mv CentOS6-Base-163.repo CentOS-Base.repo
[root@localhost yum.repos.d] yum clean all
[root@localhost yum.repos.d] yum makecache
[root@localhost yum.repos.d] yum update

  • 安装常用系统软件包
[root@localhost ~] yum -y install vim wget gcc make crontabs mlocate ntp lrzsz gcc-c++ autoconf setuptool ntsysv iptables system-config-securitylevel-tui system-config-network-tui sysstat dstat screen

  • 安装KVM
[root@localhost ~] yum -y groupinstall Virtualization 'Virtualization Client' 'Virtualization Platform' 'Virtualization Tools'

Virtualization:提供虚拟机的环境,主要包含qumu-kvm
virtualization-client:管理和安装虚拟机实例的客户端,主要有python-virtinst,virt-manager,virt-viewer
virtualization-platform:提供访问和控制虚拟客户端的接口,主要有libvirt,libvirt-client
virtualization-tools:管理离线虚拟机镜像的工具,主要有libguestfs根据需求选择软件包

  • 开启libvirtd服务操作

# 状态/开启/停止/重启
[root@localhost ~] systemctl start libvirtd.service
# 加入开机启动
[root@localhost ~] systemctl enable libvirtd.service
 

# 如果报以下错误
[root@localhost ~] service libvirtd start
Starting libvirtd daemon: libvirtd: relocation error: libvirtd: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference   [FAILED]
# 解决方法
[root@localhost ~] yum -y upgrade device-mapper-libs
 

  • 验证是否已经载入KVM模块

[root@localhost ~] lsmod | grep kvm
kvm_intel             162153  0 
kvm                   525259  1 kvm_intel
# 注: 如果没有显示kvm-intel内核模块,就说明宿主机 VT可能在BIOS里被关闭了,请开启

二.

KVM虚拟机 搭建Bridge


  • 宿主机安装网桥工具bridge-utils

[root@localhost ~] yum install bridge-utils

  • 宿主机搭建Bridge方式(将br0网卡桥接到eth0网卡)

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
HWADDR=00:21:70:1d:36:79
BRIDGE="br0"
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
 
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
DNS2=8.8.8.8
NM_CONTROLLED=no
ONBOOT=yes

# NM_CONTROLLED这个属性值,根据redhat公司的文档是必须设置为“no”的(这个值为“yes”表示可以由服务NetworkManager来管理。NetworkManager服务不支持桥接,所以要设置为“no”。)

  • 重启宿主机网络服务

[root@localhost ~] service network restart

  • 校验桥接接口

[root@localhost ~]# brctl show
bridge name    bridge id           STP enabled    interfaces
br0            8000.000c29dac515   no             eno16777736
virbr0         8000.525400fc6b72   yes            virbr0-nic

三.kvm虚拟机 创建存储池


  • 建立存储池目录

#创建目录
[root@localhost ~] mkdir -p /home/kvm/images
#更改目录的所有者,并设置权限
[root@localhost ~] chown root:root /home/kvm/images
[root@localhost ~] chmod 755 /home/kvm/images

  • 创建存储池

#定义一个存储池绑定目录
[root@localhost ~] virsh pool-define-as StoragePool --type dir --target /home/kvm/images
定义池 StoragePool

#建立基于文件夹的存储池
[root@localhost ~] virsh pool-build StoragePool
构建池 StoragePool

#激活StoragePool
[root@localhost ~] virsh pool-start StoragePool
池 StoragePool 已启动

#存储池开机自动运行,使用virsh pool-autostart
[root@localhost ~] virsh pool-autostart StoragePool
池 StoragePool 标记为自动启动
 
  • ​​​​​​

    验证查看存储池信息
[root@localhost ~]# virsh pool-info StoragePool
名称:       StoragePool
UUID:       5fd727ba-986a-4395-94ab-a53c4564c424
状态:       running
持久:       是
自动启动:   是
容量:       37.45 GiB
分配:       1.90 GiB
可用:       35.55 GiB

  • StoragePool存储池中创建一个卷,这个卷是用来做虚拟机的硬盘
# 创建卷 CentOS7.img,所在存储池为vmware_pool,容量10G,初始分配1G,文件格式类型qcow2
[root@localhost ~] virsh vol-create-as --pool StoragePool --name CentOS7.img --capacity 10G --allocation 1G --format qcow2
创建卷 CentOS7.img

#查看CentOS7.img分配的磁盘信息
[root@localhost ~] virsh vol-info /home/kvm/images/CentOS7.img
名称:       CentOS7.img
类型:       文件
容量:       10.00 GiB
分配:       196.00 KiB

 

四.KVM客户端虚拟机的安装(命令安装方式)


  • 远程连接虚拟机安装界面设置

[root@localhost ~] sed -i 's/#vnc_listen = "0.0.0.0"/vnc_listen = "0.0.0.0"/g' /etc/libvirt/qemu.conf
[root@localhost ~] reboot    <==必须重启服务器

  • 安装(需把镜像提前上传)
[root@localhost ~] virt-install --name=CentOS7 --ram=1024 --vcpus=1 --disk path=/home/kvm/images/CentOS7.img,format=qcow2,size=10,bus=virtio --cdrom /opt/CentOS7.iso --graphics vnc,password=123456,port=5911, --network bridge=br0,model=virtio --force --autostart
# WARNING  需要图形,但未设置 DISPLAY。未运行 virt-viewer。
# WARNING  没有为该虚拟机启动控制台,默认为 --wait -1
 
# 开始安装......
# 正在分配 'CentOS6.4-1.img'  7.0 GB  00:00:00     
# 创建域......                   0 B  00:00:00     
# 域安装正在进行。请等待  以便安装完成。

  • 检查端口
[root@localhost ~] netstat -antup  | grep kvm
tcp    0  0 0.0.0.0:5911    0.0.0.0:*   LISTEN  1787/qemu-kvm

  • VNC实现远程连接安装界面


  • 安装完成之后默认自动关闭,需要手动启动
[root@localhost ~]  virsh start CentOS7

附链接:

彻底删除虚拟机:

https://jingyan.baidu.com/article/219f4bf7b13e24de452d386f.html



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