我们可以使用 VMware Workstation 来创建 KVM 虚拟机,在创建虚拟机后我们发现网络是不通的,不能ping 公网或者同网段的ip ,现在我将来解决它。
打开 VMware Workstation ,找到下面这个选项点击
启动 VMware Workstation 用以下命令可以检查当前CPU是否支持 KVM 虚拟化
cat /proc/cpuinfo | egrep '(vmx|svm)'
#若出现以下字段则支持
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch arat tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec
#安装虚拟化软件包
yum install -y qemu-kvm libvirt libguestfs-tools virt-install virt-manager libvirt-python
查看安装完KVM后的服务:
systemctl start libvirtd
systemctl enable libvirtd
systemctl is-enabled libvirtd
输出 : enabled
systemctl status libvirtd
● libvirtd.service - Virtualization daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2022-11-19 01:44:57 EST; 1min 31s ago Docs: man:libvirtd(8) http://libvirt.org Main PID: 1055 (libvirtd) CGroup: /system.slice/libvirtd.service ├─1055 /usr/sbin/libvirtd ├─2365 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf... └─2366 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf...
Nov 19 01:44:52 server39 systemd[1]: Starting Virtualization daemon... Nov 19 01:44:57 server39 systemd[1]: Started Virtualization daemon. Nov 19 01:44:58 server39 dnsmasq[2365]: started, version 2.66 cachesize 150 Nov 19 01:44:58 server39 dnsmasq[2365]: compile time options: IPv6 GNU-getopt D...th Nov 19 01:44:58 server39 dnsmasq-dhcp[2365]: DHCP, IP range 192.168.122.2 -- 192...h Nov 19 01:44:58 server39 dnsmasq[2365]: reading /etc/resolv.conf Nov 19 01:44:58 server39 dnsmasq[2365]: using nameserver 114.114.114.114#53 Nov 19 01:44:58 server39 dnsmasq[2365]: read /etc/hosts - 2 addresses Nov 19 01:44:58 server39 dnsmasq[2365]: read /var/lib/libvirt/dnsmasq/default.a...es Nov 19 01:44:58 server39 dnsmasq-dhcp[2365]: read /var/lib/libvirt/dnsmasq/defau...e Hint: Some lines were ellipsized, use -l to show in full.
#验证KVM模块是否成功加载
lsmod | grep kvm
kvm_intel 170181 0 kvm 554609 1 kvm_intel irqbypass 13503 1 kvm
#验证libvirtd服务是否正常启动
virsh -c qemu:///system list
Id Name State
----------------------------------------------------
#如果已经成功启动,则会输出以上结果;如果出现错误,则表示libvirtd服务没有成功启动。
在创建 KVM 虚拟机之前我们要配置 KVM 网络桥接功能
1、添加桥接设备 br0: 相当于一个二层交换机
安装桥设备工具:
rpm -ivh /yum/Packages/bridge-utils-1.5-9.el7.x86_64.rpm
或者
yum install -y bridge-utils
2、把 ens33 绑到 br0 桥设备上:
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 /opt #将 ifcfg-ens33 文件备份
vim ifcfg-ens33
cat ifcfg-ens33
TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no NAME=ens33 DEVICE=ens33 ONBOOT=yes #IPADDR=192.168.20.39 #NETMASK=255.255.255.0 #GATEWAY=192.168.20.2 #DNS1=114.114.114.114 BRIDGE="br0"
#注意:BRIDGE 要大写
生成桥设备的配置文件:
vim ifcfg-br0
cat ifcfg-br0
DEVICE="br0" NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Bridge" BOOTPROTO=none IPADDR=192.168.20.39 NETMASK=255.255.255.0 GATEWAY=192.168.20.2 DNS1=192.168.20.2
#注意:TYPE="Bridge" , B要大写
systemctl restart network 重启网卡
ifconfig
ping www.baidu.com
brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0050562c10d8 no ens33
virbr0 8000.5254001d0148 yes virbr0-nic
3、为 VMware Workstation 添加一块硬盘,并且创建一个分区,用于存放安装好的 Linux 操作系统:
echo "- - -" > /sys/class/scsi_host/host0/scan
ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb
fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them. Be careful before using the write command.
Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x00a68b27.
Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): First sector (2048-41943039, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): Using default value 41943039 Partition 1 of type Linux and of size 20 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x00a68b27
Device Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 83 Linux
Command (m for help): w The partition table has been altered!
Calling ioctl() to re-read partition table. Syncing disks.
ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1
格式化,并且挂载使用
mkfs.xfs /dev/sdb1
echo "/dev/sdb1 /var/lib/libvirt/images/ xfs defaults 0 0" >> /etc/fstab
mount -a
df -h
Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 47G 3.1G 44G 7% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 88K 1.9G 1% /dev/shm tmpfs 1.9G 9.0M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sr0 3.6G 3.6G 0 100% /yum /dev/sdb1 20G 4.9G 16G 25% /var/lib/libvirt/images /dev/sda1 1014M 140M 875M 14% /boot tmpfs 378M 16K 378M 1% /run/user/0
4、准备系统镜像,并将它放到 /etc/sysconfig/network-scripts 目录下
ls -hl
total 3.6G
-rw-r--r-- 1 root root 3.6G Aug 15 07:17 rhel-server-7.3-x86_64-dvd.iso
5、接下来我们要下载图形化界面,如果已有就忽略这一步
yum install -y xorg* gnome* glx*
6、下载好后就去图形化界面操作
init 5 #切换到图形化界面
##最好使用 root 用户登录图形化界面,权限较大且不易出错
virt-manager #会出现安装 KVM 虚拟机的窗口
接下来就是自行选择安装虚拟机的操作了,我这里就不一一列举
最后的安装完成界面是这样的,点击右下角的重启,那么 KVM 虚拟机就创建好了
7、 KVM 虚拟机常用命令
virsh shutdown rhel7.3 #关闭 rhel7.3 虚拟机
virsh start rhel7.3 #启动 rhel7.3 虚拟机
systemctl enable libvirtd #设置 rhel7.3 虚拟机在物理机开机后自动启动
8、配置虚拟机网络
vi /etc/sysconfig/network-scripts/ifcfg-eth0
只需要将里面的 ONBOOT=no 改为 ONBOOT=yes 就行了
systemctl restart network #重启网卡
ip a #查看ip信息
9、尝试 ping 相同网段的ip和公网网络
ping 192.168.20.39
ping www.baidu.com
至此,方法成功