1. 检查CPU是否支持kvm

# egrep -q "(svm|vmx)" /proc/cpuinfo && echo "yes!"

2. 配置yum源

# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  //基础源
# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  //epel源
# yum clean all  //清空yum缓存

3. 安装虚拟机管理工具和依赖

# yum -y install qemu-kvm //KVM主程序,KVM虚拟化模块
# yum -y install virt-install //安装虚拟机的工具
# 这个包主要安装了virt-install、virt-clone和virt-xml命令,分别用于安装虚拟机系统、克隆虚拟机和编辑虚拟机的xml配置文件。

# yum -y install virt-manager //KVM图形化管理工具

# yum -y install libvirt //虚拟化服务库
# libvirt是用于管理虚拟化平台的开源的API(libvirt API),后台程序(libvirtd进程)和管理工具(virsh工具集)。
# 它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术。这些API在云计算的解决方案中广泛使用。
# libvirtd进程主要实现远程代理、本地环境初始化、根据环境注册各种Driver(qemu、xen、storage)的实现。
# virsh工具集主要用于管理、操作虚拟主机。

# yum -y install libguestfs-tools //虚拟机的系统管理工具
# libguestfs -tools是一组Linux下的C语言的API,用来访问虚拟机的磁盘映像文件。
# 该工具包内包含的工具有virt-cat、virt-df、virt-list、virt-copy-in、virt-copy-out、
# virt-edit、guestfs、guestmount、virt-list-filesystems、virt-list-partitions等工具。
# 该工具可以在不启动KVM guest主机的情况下,直接查看guest主机内的文内容,也可以直接向img镜像中写入文件和复制文件到外面的物理机,
# 也可以将guest的镜像文件挂载,功能相当强大

# yum -y install libvirt-python //python调用libvirt虚拟化服务的api接口库文件

4. 启动虚拟化服务

# 启动libvirtd后,会出现一块virbr0网卡,IP地址默认192.168.122.1/24
# systemctl start libvirtd
# systemctl enable libvirtd

5. 设置网络

# 安装网桥设备工具,并进行配置
# yum -y install bridge-utils
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
#IPADDR="192.168.5.101"
#PREFIX="24"
#GATEWAY="192.168.5.2"
#DNS1="192.168.5.2"
BRIDGE="br0"  //添加

# vim /etc/sysconfig/network-scripts/ifcfg-br0  //新建网桥配置文件
DEVICE="br0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Bridge"  //Bridge开头的B必须大写
BOOTPROTO=none
IPADDR=192.168.5.101  //需要与ens33注释的信息一致
NETMASK=255.255.255.0
GATEWAY=192.168.5.2
DNS1=192.168.5.2

# systemctl restart network

6. 创建虚拟机

# mkdir /kvmdir
# fdisk /dev/sdb
# echo '/dev/adb1 /kvmdir ext4 defaults 0 0' >> /etc/fstab
# mount -a

# mkdir -p /kvmdir/iso /kvmdir/vmdir
# dd if=/dev/sr0 of=/kvmdir/iso/centos7.iso
# qemu-img create -f qcow2 /kvmdir/vmdir/vm_centos7.qcow2 20G

# virt-install -n vm_centos7 -r 1024 \
  --vcpus=1 \
  --location=/kvmdir/iso/centos7.iso \
  --disk path=/kvmdir/vmdir/vm_centos7.qcow2,size=20,format=qcow2,sparse \
  --accelerate \
  --nographics \
  -x 'console=ttyS0' //使用终端登录

# virt-install -n vm_centos7 -r 1024 \ 
  --vcpus=1 \
  --location=/kvmdir/iso/centos7.iso \
  --disk path=/kvmdir/vmdir/vm_centos7.qcow2,size=20,format=qcow2,sparse \
  --accelerate \
  --graphics vnc,listen=0.0.0.0,port=5924 \
  --noautoconsole firewall-cmd \
  --add-port=5924/tcp //使用vnc连接

7. 管理命令

# 磁盘管理
# qemu-img create -f qcow2 /kvmdir/vmdir/vm01.qcow2 20G //创建一个20G的qcow2磁盘文件
# qemu-img convert -f raw -O qcow2 /kvmdir/vmdir/vm02.raw /kvmdir/vmdir/vm02.qcow2 //将raw格式的磁盘文件转换成qcow2格式
# qemu-img create -f qcow2 -o backing_file=/vkmdir/vmdir/vm01.qcow2 /vkmdir/vmdir/vm03.qcow2 //基于vm01.qcow2创建一个差异盘

# kvm文件管理
# virt-inspector //显示虚拟机的os版本,内核等
# virt-cat //查看虚拟机的文件
# virt-copy-out //将虚拟机的文件复制出来
# virt-copy-in //将kvm的文件复制到虚拟机
# guestmount //挂载虚拟机的镜像文件到kvm

# 虚拟机快照和克隆
# virsh snapshot-create-as //创建快照并为快照命名
# virsh snapshot-current //查看虚拟机当前在哪个快照
# virsh snapshot-delete //删除快照
# virsh snapshot-revert //还原快照
# virsh snapshot-list //列出虚拟机所有的快照
# virt-clone //克隆虚拟机 参数 -o 源 -n 新的 -f 新的磁盘文件

# virsh命令
# list //列出所有虚拟机
# define //定义一个虚拟机
# undefine //删除一个虚拟机
# start //开启
# shutdown //关闭
# console //连接虚拟机
# suspend //挂起
# resume //解除挂起
# autostart //开机启动
# destroy //强制关闭虚拟机
# domaininfo //查看虚拟机信息