KVM是Kernel-based Virtual Machine的简写,KVM是一个全虚拟化的解决方案,能在一台物理机中虚拟出几台虚拟操作系统。可以在x86架构的计算机上实现虚拟化功能。但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。
#全虚拟化检查:结果大于0表示支持
#其中vmx是intel cpu 标志,svm是amd cpu 标志
[root@localhost ~] cat /proc/cpuinfo | egrep '(vmx|svm)' | wc -l
4
[root@sky ~] systemctl stop firewalld.service
[root@sky ~] systemctl disable firewalld.service
[root@sky ~] firewall-cmd --state
not running
[root@sky ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@sky ~]# reboot
[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
[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里被关闭了,请开启
宿主机安装网桥工具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
建立存储池目录
#创建目录
[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
# 创建卷 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
远程连接虚拟机安装界面设置
[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