KVM(Kernel Virtual Modle)能够提供像Vmware一样的全虚拟化功能,我们可以通过KVM虚拟机制作qcow2镜像,用于openstack环境中。
0x00 检测CPU支不支持虚拟化
# egrep -o '(vmx|svm)' /proc/cpuinfo
输出vmx的值说明是支持的,没有的话到Vmware开启
0x01 安装KVM以及相关依赖包
# yum -y groupinstall "Virtualization Host"
# yum -y install virt-{install,viewer,manager}
0x02 配置网络,让KVM中虚拟机能共享网络
1).让系统支持ipv4的转发功能
# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-ipforward.conf
2).让转发功能立即生效
# sysctl -p /etc/sysctl.d/99-ipforward.conf
0x03 检查kvm模块是否被加载
# lsmod | grep kvm
0x04 禁用并卸载NetworkManager工具(必要),启用自带的network服务
# chkconfig NetworkManager off
# chkconfig network on
# service NetworkManager stop
# yum erase NetworkManager
0x05 设置网卡为桥接模式
使用”ip link show”查看网卡的Mac地址
# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
编辑网卡配置文件,将ip等信息注释后追加参数BRIDGE=br0
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=c0d6a6b8-de69-45ff-86ae-1b4865250a27
DEVICE=ens33
ONBOOT=yes
#DNS1=114.114.114.114
#IPADDR=10.203.87.111
#PREFIX=32
#GATEWAY=10.203.87.254
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
BRIDGE="br0"
#保存退出
0x06 创建用于桥接网卡的配置文件
# vi /etc/sysconfig/network-scripts/ifcfg-br0
添加以下内容
DEVICE="br0"
TYPE=BRIDGE
ONBOOT=yes
BOOTPROTO=static
IPADDR="10.203.87.111"
NETMASK="255.255.255.0"
GATEWAY="10.203.87.254"
DNS1="114.114.114.114"
#保存退出
0x07 重启网络
# /etc/init.d/network restart
要是出问题就直接重启系统(reboot)或者执行以下命令
# ifdown br0
# ifdown ens33
# ifup br0
# ifup ens33
0x08 查看路由及网卡桥接
# route
# brctl show
# ifconfig
这样就把ens33桥接为br0网卡了,KVM就可以使用这个桥接配置了
0x09 获取虚拟机列表
# virsh -c qemu:///system list
或者使用”virsh list –all”查看
现在还没有安装虚拟机,所以列表是空的
0x10 配置虚拟机
1).设置语言环境
# vi /etc/locale.conf
语言设为英文LANG=”en_US.UTF-8”
2).创建安装盘
# qemu-img create -f qcow2 /kvmtest/Centos-7.qcow2 8G
3).创建虚拟机
# virt-install --virt-type kvm --name centos-7.0 --ram 1024 \
--vcpus 1 \
--cdrom=/kvmtest/CentOS-7-x86_64-DVD-1611.iso \
--disk path=/kvmtest/Centos-7.qcow2,size=8,format=qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6
各个参数的意义:
--name 虚拟机名称
--vcpus 虚拟机虚拟CPU个数
--ram 虚拟机内存
--disk 虚拟机使用的磁盘路径
--network 网络设置
--cdrom 设置光驱获取虚拟光驱文件的路径
--os-variant 指示为特定的操作系统版本
4).使用”virsh list –all”查看
然后执行命令”virt-manager”就会发现有虚拟机在安装,选中centos-7.0,点击Open,然后就开始进行图形界面安装吧,和安装虚拟机的步骤一样。
0x11 KVM virsh常用命令
1.列出全部虚拟机
# virsh list --all
2.启动虚拟机
# virsh start centos-7.0 //列出的name列
3.进入虚拟机
# virsh console centos-7.0
4.退出虚拟机
CTRL+]
5.关闭虚拟机
# virsh shutdown centos-7.0
刚开始是不可以关闭的,因为还没有安装acpid服务,它是linux内核与应用程序之间的通信接口,负责将kernel中的电源管事件转发给应用程序。这个命令是通过acpid这个服务来执行关闭电源的动作的,进入虚拟机:
# yum -y install acpid
# /etc/init.d/acpid start
CTRL+]退出。执行关闭命令
6.让虚拟机随宿主机开机启动
# virsh autostart centos-7.0
7.挂起虚拟机
# virsh suspend centos-7.0
8.恢复虚拟机
# virsh resume centos-7.0
9.创建快照
# virsh snapshot-create centos-7.0
10.列出快照
# virsh snapshot-list centos-7.0
11.恢复快照
首先关闭kvm虚拟机,然后执行查看快照命令
# virsh snapshot-list centos-7.0
1527151925 2018-05-24 16:52:05 +0800 running
恢复快照
#virsh snapshot-revert centos-7.0 1527151925
12.删除快照
# virsh snapshot-delete centos-7.0 1527151925
13.克隆虚拟机
# virt-clone --oriainal centos-7.0 --name centos-7.1--file /kvmtest/centos-clone1.qcow2
#默认是在/var/lib/libvirt/images目录下
14.删除虚拟机
# virsh destroy centos-7.0
# vitsh undefine centos-7.0
# rm -f /kvmtest/centos-7.0.qcow2
0x12 配置kvm虚拟机网络
首先把VM给停了,然后修改网卡–”br0”
然后虚拟机重启系统,这个时候KVM虚拟可以完全当做一台新的主机来配置网络,和宿主机是同样的地位
1).修改网卡配置文件
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
红色框里的都是要修改的,ip,网关,子网掩码按实际情况来,保存退出
TYPE=Ethernet
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=eth0
UUID=08e8d3b0-e683-4819-a560-49b5515a337a
DEVICE=eth0
ONBOOT=yes
IPADDR0=ip
NETMASK0=子网掩码
GATEWAY0=网关
2).修改DNS配置文件
# vi /etc/resolv.conf
保存退出
3).重启网络
# /etc/init.d/network restart
# 必要时可以重启虚拟机
4).测试
# ping 宿主机ip
# ping www.baidu.com
通信正常,然后就可以通过安装vnc来远程Linux桌面了
0x13 安装Tiger-VNC实现linux远程桌面连接
Tiger-VNC分为客户端和服务端两部分,服务端就是现在装的kvm,将该KVM虚拟机的桌面共享出来,客户端用来远程连接到服务端的tigervnc
服务端
1).安装Tiger-VNC服务端
# yum -y install tigervnc-server
2).配置Tiger-VNC
# vncserver
第一次启动会要求输入密码,使用客户端连接是需要输入此密码进行验证,可以使用vncpasswd修改密码
3).查看当前用户建立的所有远程桌面
# vncserver -list
4).关闭vncserver服务端
# vncserver -kill :$n
5).防火墙配置(我是直接关了防火墙)
firewall:
# firewall-cmd --permanent --zone=public --add-port=5903/tcp
# firewall-cmd --reload
iptables:
# iptables -A INPUT -p tcp --dport 5903 -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 5903 -j ACCEPT
# service iptables save
客户端
windows:
连接
Linux:
1).安装
# yum -y install tigervnc
2).连接
# vncviewer $server:$h
$server指的提供远程桌面服务的电脑,可以是主机或者IP地址;$n指的是vncserver启动时指定的数字(桌面ID)
本次连接:
# vnciewer ip:1
输入密码即可连接
Tiger-VNC关键配置
1).设置随系统启动
编辑vnc服务端的配置文件,在最后一行添加用户名
# vi /etc/sysconfig/vncservers
VNCSERVERS="2:$username"
变量设置成自己的用户名,我使用admin用户来启动vnc服务,则改成
# VNCSERVERS="2:admin"
执行命令:
# chkconfig vncserver on
2).Tiger-VNC同步画面
# vncserver -AlwayShared