CentOS7下部署KVM以及virsh常用命令

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:

Windows的VNC Viewer下载

连接

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

到此CentOS7的KVM配置就结束了

-------------本文结束感谢您的阅读-------------

本文标题:CentOS7下部署KVM以及virsh常用命令

文章作者:Peithon

发布时间:2018年05月25日 - 10:05

最后更新:2018年10月13日 - 08:10

原始链接:https://peithon.github.io/2018/05/25/kvm-deploy/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。