1.1 kvm安装:
安装环境:
ip : 外网:10.0.0.42 内网: 176.16.1.42
验证CPU是否支持KVM;如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的
#检查CPU是否支持虚拟化
[root@c7-42 ~]# egrep -o 'vmx|svm' /proc/cpuinfo
#检查CPU是否开启虚拟化
[root@c7-42 ~]# dmesg |grep kvm
#安装kvm用户态模块
[root@c7-42 ~]# yum -y install qemu-kvm qemu-kvm-tools libvirt
- libvirt 用来管理kvm
- kvm属于内核态,不需要安装。但是需要一些类似于依赖的
- qemu
#启动libvirt
[root@c7-42 ~]# systemctl start libvirtd
[root@c7-42 ~]# systemctl enable libvirtd
#启动之后我们可以使用ip a进行查看,libvirtd已经为我们安装了一个桥接网卡
1.2 创建虚拟机
#创建虚拟机步骤
- 准备虚拟机硬盘
- 需要系统iso镜像
- 需要安装一个vnc的客户端来连接
1.3 上传镜像
提示:如果使用rz上传镜像可能会出现错误,所以我们使用dd命令,复制系统的镜像,只需要挂载上光盘即可。
[root@c7-42 ~]# cd /opt/
[root@c7-42 opt]# dd if=/dev/cdrom of=/opt/CentOS-7-x86_64-Minimal-1810.iso
1.4创建磁盘
[root@c7-42 opt]# qemu-img create -f qcow2 /opt/c73.qcow2 6G
-f 定制虚拟机格式
/opt/Centos 存放路径
6G 代表大小
#磁盘格式介绍
raw--裸磁盘不支持快照
qcow2--支持快照,Openstack使用的方式推荐使用这个。注意关闭虚拟机后操作
#区别
全镜像格式(典型代表raw)。特点:设置多大就是多大,写入速度快,方便转换其他格式,性能最优,但是占用空间大。
稀疏格式(典型代表qcow2),其特点:支持压缩,快照,镜像,更小的储存空间(即用多少占多少)
qcow2 数据的基本组成单元是cluster
raw 性能比 qcow2 快
raw创建多大磁盘,就占用多大空间直接分配,qcow2动态的用多大占用多大空间。
1.5 安装虚拟机
[root@c7-42 opt]# yum -y install virt-install
[root@c7-42 opt]# virt-install --virt-type=kvm --name=c73 --vcpus=1 -r 1024 --cdrom=/opt/CentOS-7-x86_64-Minimal-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --disk path=/opt/c73.qcow2,size=6,format=qcow2
#默认连接端口是从5900开始的
[root@c7-42 opt]# virsh list --all
#virt-install 常用参数
1.6 vnc连接虚拟机
这里正常安装即可
注意:如果查看5900端口开启,但是VNC无法连接kvm虚拟机时,看下防火墙是否开启。创建的虚拟机用vnc连接时从默认端口5900开始。
虚拟机安装完成后是关闭的,我们需要再启动一下
[root@c7-42 opt]# virsh start c73
c73是虚拟机的名字,是我们创建时定义的
#启动完再次使用vnc连接就可以登录了
2.1 查看物理机网卡设备
[root@c7-42 ~]# ifconfig virbr0
2.2 配置桥接设备br0
[root@c7-42 ~]# yum -y install bridge-utils
(1)手动添加临时生效
[root@c7-42 ~]# brctl addbr br0
[root@c7-42 ~]# brctl show
[root@c7-42 ~]# brctl addif br0 ens33
执行此步后,会导致xshell与宿主机断开连接,以下操作在宿主机完成。
删除ens33上面的ip地址,将br0上面添加上固定ip地址:
[root@c7-42 ~]# ip addr del dev ens33 10.0.0.42/24 //删除ens33上的ip地址
[root@c7-42 ~]# ifconfig br0 10.0.0.42/24 up //配置br0的ip地址并启动设备
[root@c7-42 ~]# route add default gw 10.0.0.254 //重新加入默认网关
[root@c7-42 ~]# route -n
此时宿主机的ip:10.0.0.42已经绑定到br0网卡;但是服务器重启就不能生效了。
(2)通过配置文件配置桥接设备永久生效
为KVM宿主机创建虚拟网卡,并将物理网卡作为桥设备
[root@c7-42 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 .
[root@c7-42 ~]# virsh iface-bridge ens33 br0
[root@c7-42 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no
[root@c7-42 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.42
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
NM_CONTROLLED=no
[root@c7-42 ~]# systemctl restart network
(3)通过VNC连接KVM虚拟机修改网卡配置
[root@c7-42 ~]# virsh list --all
#编辑KVM虚拟出来的机器
#必须要写否则xshell连不上
#注意:此时宿主机还需要通过图形化工具设置网卡为桥接方式,否则无法ping通网关和外网。
2.3 KVM图形管理工具(virt-manager)
virt-manager是用于管理KVM虚拟环境的主要工具,virt-manager默认设置下需要root用户才能使用该工具。当你想在KVM hypervisor服务器上托管虚拟机,由最终用户而非root用户访问这些虚拟机时并不是很便利。
virt-manager可以设置本机,同样也可以连接远程宿主机来管理。
利用virt-manager,xmanager,xshell启动界面来管理虚拟机,适合管理单机的KVM。
2.4 查看sshd是否开启X11转发
[root@c7-42 ~]# grep X11Forwarding /etc/ssh/sshd_config --colour
2.5 安装xorg-x11
[root@c7-42 ~]# yum install -y xorg-x11-font-utils.x86_64 xorg-x11-server-utils.x86_64 xorg-x11-utils.x86_64 xorg-x11-xauth.x86_64 xorg-x11-xinit.x86_64 xorg-x11-drv-ati-firmware
2.6 安装libvirt
libvirt是管理虚拟机的APL库,不仅支持KVM虚拟机,也可以管理Xen等方案下的虚拟机。
[root@c7-42 ~]# yum -y install virt-manager libvirt libvirt-Python python-virtinst libvirt-client virt-viewer qemu-kvm mesa-libglapi
因为我的主机是服务器,没有图形化界面,想要用virt-manager图形化安装虚拟机,还需要安装X-window。
[root@c7-42 ~]# yum -y install libXdmcp libXmu libxkbfile xkeyboard-config xorg-x11-xauth xorg-x11-xkb-utils
开启libvirt服务
[root@c7-42 ~]# systemctl restart libvirtd.service
[root@c7-42 ~]# systemctl enable libvirtd.service
2.7 配置xshell
安装好Xming后,打开xshell,在连接属性的tunneing中,勾选Forwarding X11 connection to 选项,可以正常打开virt-manager的图形界面。
2.8 启动virt-manager
断开xshell会话,重新连接,输入命令:virt-manager,就可以自动弹出KVM管理软件
[root@c7-42 ~]# virt-manager
如果出现乱码,请安装以下包:
yum -y install dejavu-sans-mono-fonts
2.9 配置xming工具
#设置为桥接模式
测试: