KVM NAT与桥接虚机创建
安装软件
yum -y install qemu-kvm qemu-kvm-tools virt-install qemu-img bridge-utils libvirt virt-manager yum install gcc gcc-c++ autoconf automake libtool glib* zlib* -y yum install epel-release net-tools vim unzip zip wget -y yum install qemu-kvm libvirt virt-install bridge-utils openssl -y
验证安装结果
[root@kafka-1 network-scripts]# lsmod | grep kvm kvm_intel 188688 0 kvm 636969 1 kvm_intel irqbypass 13503 1 kvm [root@kafka-1 kvm]# grep -E --color=auto "(vmx|svm)" /proc/cpuinfo |wc -l 4 [root@kafka-1 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo 4
开启kvm服务,并且设置其开机自动启动
systemctl start libvirtd
systemctl status libvirtd
systemctl enable libvirtd
升级内核
uname -a cat /etc/redhat-release 去http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/下载 yum -y install kernel-lt-5.4.86-1.el7.elrepo.x86_64.rpm sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg grub2-set-default 0 grub2-mkconfig -o /boot/grub2/grub.cfg reboot uname -a
安装网桥管理器
yum -y install bridge-utils [root@kafka-1 ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c29a9fe2f no ens33 # ens33接口插入br0虚拟交换机中 virbr0 8000.525400f24e67 yes virbr0-nic
创建虚拟机磁盘
raw:1.磁盘创建指定大小立即占用磁盘空间 2. io快 3. 不支持快照,克隆,扩容
qcow2: 2.根据使用量增长占用磁盘空间 2. io慢 3. 支持快照 4. 虚拟机克隆 5. 支持扩容
创建一个raw格式的磁盘
[root@kafka-1 kvm]# qemu-img create -f raw /opt/kvm/vm/test-nat-network.row 8G Formatting '/opt/kvm/vm/test-nat-network.row', fmt=raw size=8589934592 [root@kafka-1 kvm]# ll -h vm 总用量 0 -rw-r--r-- 1 root root 8.0G 7月 22 22:07 test-nat-network.row
创建一个NAT模式的虚拟机
virt-install --name=test-nat-network-2 \ --memory=1024,maxmemory=4096 --vcpus=2,maxvcpus=4 \ --disk=/opt/kvm/vm/test-nat-network.qcow2,size=10 \ --cdrom=/opt/kvm/iso/CentOS-7-x86_64-Minimal-2009.iso \ --os-variant=rhel7 --noautoconsole --autostart \ --network network=default \ --graphics vnc,listen=0.0.0.0,port=30002
也可以创建qcow2格式的磁盘
qemu-img create -f qcow2 /opt/kvm/vm/test-nat-network.qcow2 8G
创建qcow2格式的虚机
virt-install --name=test-nat-network-2 \ --memory=1024,maxmemory=4096 --vcpus=2,maxvcpus=4 \ --disk=/opt/kvm/vm/test-nat-network.qcow2,size=10 \ # size 10指定磁盘大小,可以不用提前创建磁盘 --cdrom=/opt/kvm/iso/CentOS-7-x86_64-Minimal-2009.iso \ --os-variant=rhel7 --noautoconsole --autostart \ --network network=default \ --graphics vnc,listen=0.0.0.0,port=30002
创建桥接模式的虚机
创建二层虚拟交换机
[root@kafka-1 kvm]# cat /etc/sysconfig/network-scripts/ifcfg-br0 TYPE=Bridge BOOTPROTO=static NAME=br0 DEVICE=br0 ONBOOT=yes IPADDR=192.168.64.14 GATEWAY=192.168.64.2 NETMASK=255.255.255.0 NM_CONTROLLED=yes [root@kafka-1 kvm]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet DEVICE=ens33 NAME=ens33 ONBOOT=yes BRIDGE=br0 BOOTPROTO=none NM_CONTRLLED=no
创建虚机
# 创建磁盘 [root@kafka-1 kvm]# qemu-img create -f qcow2 /opt/kvm/vm/web02-br0.qcow2 10G Formatting '/opt/kvm/vm/web01-br0.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off # 安装虚机 virt-install --virt-type kvm --name web02-bridge \ --memory=1024,maxmemory=4096 --vcpus=2,maxvcpus=4 \ --cdrom=/opt/kvm/iso/CentOS-7-x86_64-Minimal-2009.iso \ --disk path=/opt/kvm/vm/web02-br0.qcow2 \ --network bridge=br0 \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole --autostart
不提前创建磁盘创建虚机
[root@kafka-1 kvm]# virt-install --name=test-bridge-vm \ --memory=1024,maxmemory=4096 --vcpus=2,maxvcpus=4 \ --disk path=/opt/kvm/vm/web02-br0.qcow2,size=10 \ --cdrom=/opt/kvm/iso/CentOS-7-x86_64-Minimal-2009.iso \ --os-variant=rhel7 \ --network bridge=br0 \ --graphics vnc,listen=0.0.0.0,port=30005 \ --noautoconsole --autostart Starting install... Allocating 'web02-br0.qcow2' | 10 GB 00:00:00 Domain installation still in progress. You can reconnect to the console to complete the installation process. [root@kafka-1 kvm]# netstat -ntpl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 792/rpcbind tcp 0 0 0.0.0.0:30005 0.0.0.0:* LISTEN 19876/qemu-kvm
网桥查看
[root@kafka-1 kvm]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c29a9fe2f no ens33 vnet0 vnet2 virbr0 8000.525400f24e67 yes virbr0-nic vnet1
问题解决
1. 打开console界面报错
报错:
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
解决:
yum -y install mesa-libGLES-devel.x86_64 mesa-dri-drivers
2. virt-manager 乱码
解决: vim /etc/profile export LANG="en_US.UTF-8" source /etc/profile
3.创建的NAT和网桥主机不能分配ip
解决: 网卡文件 ONBOOT=yes systemctl restart network
4. 桥接主机设置了ONBOOT=yes也不能获取ip,并且network服务启动失败
解决: 安装dhcp服务,实际公司中路由器由网管已设置好,这里实验环境需要安装
yum install dhcp [root@kafka-1 kvm]# cat /etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # subnet 192.168.64.0 netmask 255.255.255.0 { range 192.168.64.3 192.168.64.253; option routers 192.168.64.2; option broadcast-address 192.168.64.255; option domain-name-servers 8.8.8.8, 114.114.114.114; } sudo systemctl enable dhcpd sudo systemctl start dhcpd
4.2 验证
mobaxterm连接
需要关闭防火墙和selinux
4.3 随后设置好基础环境后,根据模板机clone即可,需要提前设置网卡开机启动ONBOOT=yes与关闭NetworkManager.
越学越感到自己的无知
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现