KVM虚拟化+桥接网络
1.虚拟机的配置
2.检测系统版本及内核的命令
[root@ localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@ localhost ~]# uname -r
3.10.0-514.el7.x86_64
[root@ localhost ~]# getenforce
Disabled
3.检查CPU是否支持虚拟化
cpu是否支持虚拟化
[root@ localhost ~]# egrep -o '(vmx|svm)' /proc/cpuinfo
vmx
vmx
检查cpu是否建瓯开启虚拟化(输出图片一样则为未开启)
[root@ localhost ~]# dmesg |grep kvm
4.安装kvm用户动态模块(libvirt用来管理kvm)
[root@ localhost ~]# yum install qemu-kvm qemu-kvm-tools libvirt -y
5.启动livirt
[root@ localhost ~]# systemctl start libvirtd.service
[root@ localhost ~]# systemctl enable libvirtd.service
6.启动之后我们可以使用ifconfig进行查看,libvirtd已经为我们安装了一个桥接网卡
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:d3:6c:31 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
7.创建虚拟机
(1).准备虚拟机硬盘
(2).需要系统iso镜像
(3).需要安装一个vnc的客户端来连接
8.上传镜像
查看内存大小(不小于20G,本人小于20G不要在意)
[root@ localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 17G 4.8G 13G 28% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 8.7M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 1014M 121M 894M 12% /boot
tmpfs 394M 8.0K 394M 1% /run/user/0
进入opt目录下通过rz将CentOS-7-x86_64-Minimal-1810.iso镜像传入当前镜像(其他镜像也可以,上传镜像后可改名方便管理,我的更名为CentOS-7)
[root@ localhost ~]# cd /opt
若rz上传不上去可用以下命令,我这里用的rz
[root@ localhost opt]# dd if=/dev/cdrom of=/opt/CentOS-7-x86_64-Minimal-1810.iso
9.创建磁盘 (qemu-img软件包是我们安装qemu-kvm-tools 依赖给安装上的)
[root@ localhost opt]# qemu-img create -f qcow2 /opt/CentOS-7.qcow2 6G (qcow2为磁盘格式,CentOS-7.qcow2 为自定义磁盘名.qcow2,6G为磁盘的大小)
ll命令可查看到新建的磁盘
[root@ localhost opt]# ll
total 940228
-rw-r--r-- 1 root root 197120 2020-02-12 14:41 CentOS-7.qcow2
-rw-r--r-- 1 qemu qemu 962592768 2018-12-11 15:12 CentOS-7-x86_64-Minimal-1810.iso
10.安装虚拟机
[root@ localhost opt]# yum install -y virt-install
[root@ localhost opt]# virt-install --virt-type=kvm --name=c73 --vcpus=1 -r 1024 --cdrom=/opt/CentOS-7.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --disk path=/opt/CenOS-7.qcow2,size=6,format=qcow2
名字是自己取的,路径下的名字要和上面是一致的
成功创建如下:
[root@ localhost opt]# virsh list --all
Id Name State
----------------------------------------------------
1 www running
2 c73 running
查看端口5900是否存在
[root@ localhost opt]# netstat -lntup|grep 5900
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 8092/qemu-kvm
11.然后用vnc连接虚出来的机器,机器的ip是自己机子的ip加上5900端口
12.进入之后与之前安装的操作都是一样的
13.
到此为止kvm创建虚拟机就成功了,如果中途出现错误,很有可能是yum安装的相关插件,服务,软件,没装上,把yum命令都执行一遍做排除!!!
virsh相关管理命令 !!!!
列出所有的虚拟机 virsh list --all
显示虚拟机信息 virsh dominfo c73
列出ID为6的虚拟机名 virsh domname 6
显示虚拟机内存和cpu的使用情况 virt-top
关闭虚拟机 virsh shutdown c73
强制关闭虚拟机 virsh destroy c73
启动虚拟机 virsh start c73
设置虚拟机随系统自启 virsh autostart c73
关闭虚拟机随系统自启 virsh autostart --disable c73
删除虚拟机 virsh undefine c73
通过控制窗口登录虚拟机 virsh console c73
挂起$hostname虚拟机 virsh suspend c73
恢复挂起的虚拟机 virsh resume c73
查看网卡配置信息 virsh domiflist c73
查看该虚拟机的磁盘位置 virsh domblklist c73
查看KVM虚拟机当前配置 virsh dumpxml c73
14.kvm桥接模式配置
先查看虚拟化组件是否生成virbr0桥接设备
[root@ localhost opt]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29923f8d no ens33
vnet0
virbr0 8000.525400d36c31 yes virbr0-nic (这个!!!)
在查看物理机的网卡设备
[root@ localhost opt]# ifconfig virbr0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:d3:6c:31 txqueuelen 1000 (Ethernet)
RX packets 169 bytes 12038 (11.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22 bytes 2778 (2.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
15.配置桥接设备br0(两种方法,一种临时的,一种永久的,都是在宿主机上操作的!!!)
下载:
[root@ localhost opt]# yum -y install bridge-utils
(1)手动增加临时生效
[root@ localhost opt]# brctl addbr br0
[root@ localhost opt]# brctl show
bridge namebridge idSTP enabledinterfaces
br08000.000c29923f8dnoens33
vnet0
virbr08000.525400d36c31yesvirbr0-nic
[root@ localhost opt]# brctl addif br0 ens33 (执行此命令时,会导致xshell与宿主机断开连接)
所以以下命令在宿主机上执行:(删除ens33上面的ip地址,将br0上面添加上固定ip地址)
[root@ CentOS7-200 ~]# ip addr del dev ens33 10.0.0.200/24 //删除ens33上的IP地址
[root@ CentOS7-200 ~]# ifconfig br0 10.0.0.200/24 up //配置br0的IP地址并启动设备
[root@ CentOS7-200 ~]# route add default gw 10.0.0.254 //重新加载默认网关
连接xshell查看是否生效
[root@ localhost opt]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 br0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 ens37
169.254.0.0 0.0.0.0 255.255.0.0 U 1009 0 0 br0
172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ens37
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@ localhost opt]# ifconfig br0
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.45 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::20c:29ff:fe92:3f8d prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:92:3f:8d txqueuelen 1000 (Ethernet)
RX packets 216918 bytes 154098249 (146.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 151315 bytes 233554071 (222.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
(临时配置下次重启时就会失效)
(2)永久生效桥接配置
[root@ localhost opt]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no
[root@ localhost opt]# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.45
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
NM_CONTROLLED=no
[root@ localhost opt]# systemctl restart network.service (重启网卡)
16.VNC连接KVM虚拟机修改网卡配置
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33 (你的是ens33或eth0就修改成对应名称)
TYPE=Ethernet
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.0.0.100 (此ip自定义即可)
PREFIX=24
GATEWAY=10.0.0.254 (这个网关与宿主机一致)
DNS1=223.5.5.5 //此处配置后则不需要手动添加/etc/resolv.conf
DNS2=1.1.1.1
[root@localhost ~]# cat /etc/resolv.conf #必须有否则xshell连不上
nameserver 223.5.5.5
[root@localhost ~]# ifup ens33 (重启ens33或eth0)
17.KVM图形化管理工具(在宿主机上完成接下来步骤才能完成桥接,否则无法ping外网)
查看ssh是否开启x11转发
[root@ localhost opt]# grep X11Forwarding /etc/ssh/sshd_config --colour
X11Forwarding yes
#X11Forwarding no
安装xorg-x11
[root@ localhost opt]# 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
安装libvirt (libvirt是管理虚拟机的API库,不仅支持KVM虚拟机,也可以管理Xen等方案下的虚拟机)
[root@ localhost opt]# yum install virt-manager libvirt libvirt-Python python-virtinst libvirt-client virt-viewer qemu-kvm mesa-libglapi -y
安装virt-manager,x-window。图形化界面
[root@ localhost opt]# yum install libXdmcp libXmu libxkbfile xkeyboard-config xorg-x11-xauth xorg-x11-xkb-utils -y
开启libvirt服务
[root@ localhost opt]# systemctl start libvirtd.service
[root@ localhost opt]# systemctl enable libvirtd.service
18.配置xshell(需要配合xming软件使用)
安装好xming不用管在后台挂起
19.
打开xshell,执行以下步骤:
3.4.启动virt-manager (注意一定要新开一个窗口输入指令,否则无法弹出窗口!!!)
断开xshell会话,重新连接,输入命令:virt-manager,就可以自动弹出kvm管理软件 (前提是你的xming开启了)
[root@ localhost opt]# virt-manager
注意看这里!!!!!kvm虚拟接也需要关闭防火墙,否则xshell无法连接!!!!
systemctl stop firewalld
setenforce 0