KVM 虚拟化

2023-05-16

kvm虚拟化

Kvm的安装、KVM下的虚拟机安装和相互访问约束

推荐下载TightVNC
也可以使用 VNCSever


一、虚拟化产品介绍

linux类的虚拟化软件:

  • qemu,软件纯模拟全虚拟化软件,特别慢!
  • xen(半),性能特别好,需要使用专门修改之后的内核
  • KVM,全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核

二、KVM虚拟化软件的安装和内部虚拟机的新建

(以下命令行操作,均在宿主机上利用VMnet8的虚拟网卡,打开Xshell后,sshroot@内部虚拟机IP后,远程登陆到内部虚拟机上来完成)
ssh登录架构图

  1. 先查看是否开启硬件辅助虚拟化功能
    在终端执行cat /proc/cpuinfo命令,找到flags部分,如果其中输出有vMX或SVM,即表明支持虚拟化技术。
root@kvm-node1# cat /proc/cpuinfo | grep vmx
##(for Intel CPU)
root@kvm-node1l#cat /proc/cpuinfo | grep svm
##( for AMD CPU)
root@kvm-node1#lscpu
  • 若没有,请将虚拟机的设置中,把 cpu的虚拟化Intel或Amd芯片启用。
  1. 关闭防火墙
root@kvm-node1 # systemctl stop firewalld
root@kvm-node1 # systemctl disable firewalld3.     #关闭Selinux
  1. 关闭 SELINUX
vim /etc/selinux/config
  • SELINUX=enforcing 改为SELINUX=disabled:wq!保存后退出
  1. 开启路由转发功能,否则新建默认Nat模式的 kvm 虚拟机,不能借助宿主机(外虚拟机)的两块网卡进行数据转发,也不能访问外网。
  • 临时生效: echo"1" >/proc/sys/net/ipv4/ip_forward或sysctl -wnet.ipv4.ip_forward=1
  • 永久生效:vim proc/sys/net/ipv4/ip_forward,改为1,sysctl-p
  1. 安装kvm 的包,需要修改Centos 的源,最好是光盘源,建议采用阿里云镜像的基础源和扩展epel源,同时要更新源 yum clean all && yum makecache
  • libvirt —— 作用是提供相关库文件或api接口
    virt-manager,virt-install,virt-clone —— 作用是虚拟机各种管理
    qemu-kvm —— 作用是 kvm模拟器
yum install libvirt* virt-* qemu-kvm* -y
systemctl start libvirtd.service
systemctl enable libvirtd.service
systemctl status libvirtd.service
  1. 准备在虚拟机 Centos7.6(外)中,利用KVM虚拟化技术新建一个内部的虚拟机Centor7.6
    (地址是KVM中的dhcp分配,默认在192.168.122.X这个地址段内)。
    宿主机中三层架构的内虚拟机结构

(1)在宿主机上完成分发软件TightVNC或者VNC Viewer 4.exe的安装

注意只装客户端,暂时不需要装服务器端。

(2)提前做好准备工作,需要把安装内部虚拟机的ISO包,提前拷贝到外虚拟机 Centos7(外)的某个目录中,假设为/opt。

cd/opt      #建议su切换到root用户,拷贝到opt目录里
pwd         #用xshell工具最上一栏中自带的Xftp 工具完成,用xftp工具把宿主机硬盘上的CentOS-7-x86_64-DVD-1810.iso拷贝传输到宿主机 Centos7的当前目录/opt。
ls —ial     #查看CentOS-7-x86_64-DVD-1810.iso是否完整落在/opt目录内

(3)利用安装好KVM以后的virt命令新建一个虚拟机

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name INCentos7 --memory 2048 --vcpus 2 --disk /opt/INCentos7.raw,format=raw,size=5 --cdrom/opt/CentOS-7-x86_64-DVD-1810.iso --network networK=default --graphics vnc,listen=0.0.0.0 --noautoconsole

注意:

  1. 这条命令中新建虚拟机的磁盘为raw格式,raw为原始数据格式,它不支持做快照,但访问性能好。其他磁盘格式如qcow2为压缩的支持快照,虚拟机的磁盘可以在后期进行转换。
  2. 这条命令按下回车健以后,请马上在宿主机 Win10上打开VNC View4软件的客户端,输入10.0.0.200:0进入KVM的内部虚拟机 Centos7的安装界面,因为是内部虚拟机仅仅做一些简要测试,在安装过在中找们选择最小化安装,以便减少硬盘的磁盘空间,网卡etho生效且地址建议自动获取,默认地址段在192.168.122.x(后续测试要用),安装后需要点击reboot,可能会失去vnc连接。
    在外虚拟机Centos7 的shell中输入virsh list -all,继续输入virsh start
    INCentos7,重新启动内虚拟机。在宿主机上继续用VNC客户端输入10.0.0.200测试连通后,以root 登陆后输入 ip addr进入内虚拟机,以root登录后输入ip addr查看ip地址,ping 10.0.0.200测试连通后,输入 shutdown -h now把内部虚拟机关闭;然后在外部虚拟机上也输入shutdown -h now把外部虚拟机关闭,在宿主机的VMware workstation中新建一个快照,取名为“kvm已装,并含一个Centos内虚拟机”。
  3. kvm的虚拟机管理的两个文件,结构简单,
    虚拟机的磁盘文件
    (/opt/centos7.raw,可以用ll -hdu -smh *来查看大小)
    也称为虚拟机的镜像文件,其存放位置、名称、磁盘类型可以自定义。可用du - sh或ls - lh或者用qemu-img info查看该磁盘文件的详细信息。
    默认的配置文件
    放在/etc/libvirt/qemu/目录下的虚拟机名.xml文件中。
    是系统自动产生并存储在固定路径下,有xml文件前提下,我们可以用virsh list - all命令查看到有虚拟机存在。

建议虚拟机名字和磁盘文件的取名要保持一致。

三、宿主机、外虚拟机Centos7和内虚拟机 Centos7之间的相互访问约束

研究下网络结构:

  1. 物理机有一块物理网卡(有线或无线),二块虚拟网卡,其中 vmware8虚拟网卡地址是10.0.0.1,可以直接访问外虚拟机 Centor7的ens33网卡10.0.0.200;
  2. 外虚拟机有一块ens33网卡,还有一块 Virbro-NIC的虚拟网卡桥接到KVM网桥ip默认为192.168.122.1,可以直接访问内虚拟机 Centos7的 eth0 网卡;
  3. 内虚拟机有一块eth0网卡,IP地址默认为192.168.122.100(最后字节随机)。
    网络结构

(一)宿主机访问最里面内虚拟机的两种途径方法:

方法1:
宿主机xshell里ssh root@10.0.0.200,先登录进外虚拟机 OutCentos7,然后再OutCentos7里面的/bin/bash中输入shell命令, ssh root@192.168.122.100,可登录到最里面的内虚拟机;
方法2:
在宿主机上通过VNC 软件的客户端进行连接,外虚拟机 Centos7(IP为10.0.0.200),里面第一台内虚拟机的编号为0,在VWC中输入10.0.0.200:0,即可进入到第一个内虚拟机 Centos7中;

(二)KVM虚拟机生命周期管理

(假设虚拟机取名为vmname)
(1)查看所有虚拟机的状态: virsh list --all
(2)查看虚拟机的信息: virsh dominfo vmname
(3)手动启动虚拟机: virsh start vmname
(4)手动关闭虚拟机: virsh shutdown vmname
(5)挂起(暂停)虚拟机:virsh suspend vmname
(6)恢复挂起虚拟机: virsh resume vmname
(7)断电关闭虚拟机(野蛮,轻易不要用): virsh destroy vmname
(8〉开启启动虚拟机: virsh autostart vmname
(9)取消开机启动虚拟机:virsh autostart --disable vmname
(10)编辑虚拟机的配置文件(位于/etc/libvirt/qemu):
方法1 virsh edit vmname ,这种编辑方法操作比较安全;
方法2vim /etc/libvirt/qemu/vmname.xml,这种编辑方法不推荐;
(11)导出(备份)虚拟机的配置文件: bashvirsh dumpxml vmname >/home/vpsback/vmname.xml
(12)删除虚拟机(前提是虚拟机先关闭)
删除之前先做虚拟机的备份:
(1)virsh dumpxml xmname > /opt/xmname.xml
(2)cp /opt/xmname.raw /opt/xmname.raw.bak
方法1:virsh undefine vmname
删除虚拟机 vmname 的配置文件,默认存储在/etc/libvirt/qemu/vmname.xml
删除以后虚拟机在虚拟机管理器里面查不到了。但是虚拟机的磁盘文件仍然存在。
方法2:virsh undefine vmname --storage /opt/vmname. raw
//删除虚拟机,并同时删除虚拟机的所有磁盘文件,这个命令要慎用!

(三)虚拟机磁盘的格式转换

虚拟机磁盘一般有RAWQCOW2两种格式,有各自的应用场景:

  • RAW格式,裸格式,访问性能好,但是它占空间大,对于RAW格式的磁盘文件的不同主机之间的拷贝时间会很长(例如你分配10G大小的raw格式文件,实际占用1.3G,但文件拷贝给其他主机,仍然是10G大小),对RAW格式的磁盘文件进行压缩的时间会很长,不支持快照;类似于我们用数码相机拍视频,默认avi格式的存储。
  • QCOW2格式,磁盘存储采用稀疏文件(硬盘中没有数据的扇区不写入),支持快照,在存储和传输中有优势,但访问性能较差;类似于我们数码相机中mp4格式的视频。

虚拟机的磁盘格式转换的具体命令:

  1. 关闭虚拟机,virsh shutdown vmname,或virsh destroy vmname
  2. 尝试做快照,提示失败。virsh snapshot-create vmname
  3. 切换到虚拟机的磁盘目录下,进行转换磁盘格式
    qemu-img convert -f raw -0 qcow2 实际磁盘名.raw 实际磁盘名.qcow2
  4. 查看两个文件大小,ll -hdu -smh,或qemu-img info 实际磁盘名.qcow2
  5. 若要启动带qcow2的虚拟机,必须修改在原来的配置文件进行编辑,/disk两处地方修改raw改为qcow2后保存。
  6. 把之前的raw文件重命名做备份: mv 实际磁盘名.raw 实际磁盘名.raw.bak
  7. 重新启动qcow2格式的虚拟机: virsh start vmname
  8. 允许新建一个虚拟机快照:virsh snapshot-create vmname

(四)虚拟机的快照管理(磁盘格式必须是qcow2)

(1)先启动磁盘为qcow2格式的虚拟机,virsh start vmname,查看现有应用。
(2)关闭内虚拟机,新建一个虚拟机快照, virsh snapshot-create vmname
virsh snapshot-list vmname查看快照信息,有一个快照id号
(3)再启动内虚拟机,做一些厉害的破坏工作例如rm -rf /lib64/*,虚拟机的环境遭到野蛮的破坏无法正常使用,发现大多数的外部命令例如mv,cp, ps -ef都不能执行,只有内部命令ls或pwd可用,系统已搞崩溃,幸亏我们之前存有快照。
(4)利用之前的快照进行恢复,virsh snapshot-revert vmname 快照ID号,重新启动虚拟机查看效果,然后在虚拟机上新增一些应用,例如yum install httpd php php-cli -y等,关闭虚拟机,再新建一个虚拟机快照,virsh snapshot-create vmname,这时候我们用virsh snapshot-list查看会有两个快照信息。

(五)虚拟机的克隆管理(磁盘格式必须是qcow2)

(1)自动克隆(当前VM必须处于关机状态)

virsh shutdown vmname
virt-clone --auto-clone -o vmname -n autonew-vmname
virsh list --all
virsh start autonew-vmname
  • 通过edit配置文档,我们发现原虚拟机和clone后的虚拟机的uuid,mac都是不一样,但是ip地址是一样的。建议登录一个虚拟机后, Shell输入dhclient -r//释放ip, Shell输入dhclient//重新获取一个新的ip。或者直接修改网卡配置文件修改一个新IP地址。

(2)手工克隆(当前VM必须处于关机状态)

  1. 进入虚拟机的磁盘目录,复制vmname的虚拟机磁盘文件另存为handclone-vmname
cp vmname.qcow2 handclone-vmname.qcow2
  1. 备份vmname的虚拟机配置文件,另存为handclone-vmname
virsh dumpxml vmname > handclone-vmname. xml
  1. vim修改handnew一vmname 的虚拟机配置文件
  • 修改name,删除mac address,修改uuid, disk虚拟机磁盘路径,其中新的uuid可以用宿主机 uuidgen自动生成
  1. 导入handclone-vmname。
virsh define handclone-vmname.xml
virsh list --all

KVM 的管控——内虚拟机的硬件热添加,硬盘分区格式化挂载和扩容等

(一)内虚拟机的硬盘热添加

在外虚拟机中先看看内虚拟机的硬盘概况

virsh start INCentos7      #启动虚拟机机,热添加就是虚拟机

可以是在正常工作状态下,添加或拔出某些硬件。

virsh dominfo INCentos7    #看看内虚拟机的整体大概
virsh domblklist INCentos7    #看看内虚拟机的硬盘情况
cd /opt
ls -lh INCentos7.qcow2      #查看磁盘文件的空间预留大小
du -sh INCentos7.qcow2        #查看磁盘文件的实际占用大小
  • 当内虚拟机的存储容量不够,我们可以通过以下方法来热添加一块新硬盘:
  • 在外虚拟机中先新建一个新磁盘文件,作为内虚拟机的第二块硬盘。
    (1)qemu-img create -f qcow2 /opt/add01_INCentos7.qcow2 3G
    将新生成的add01_INCentos7.qcow2磁盘添加到虚拟机INCentos7,并作为虚拟机的第二块磁盘 vdb ( virtual disk b),指定磁盘类型为qcow2,并且保存到配置文件中(内虚拟机重启后第二块磁盘还能识别)
    (2) virsh attach-disk INCentos7 /opt/add01_INCentos7.qcow2 vdb --subdriver=qcow2 --persistent
virsh domblklist INCentos7      #看看内虚拟机的硬盘情况,应该会有第二块硬盘vdb出现

进入内虚拟机有两种方法:
方法1: Win10客户端 vnc登陆到内虚拟机后,ip addr查看内虚拟机 ip;
方法2: 外虚拟机 ssh root@内虚拟机 ip,登陆到内虚拟机,推荐使用。
(二)在内虚拟机中,对新挂载的硬盘进行分区、格式化和挂载等操作
以下均在内虚拟上执行的操作:

lsblk    #查看新的磁盘情况
fdisk -l    #查看当下的硬盘分区情况
fdisk /dev/vdb     #对扩充的新硬盘进行分区,如何分区是一个知识点。
  • 以win7操作系统的硬盘分区为例,主分区(系统至少一个主分区存放root,最多4个主分区),扩展分区(只有一个扩展分区,不能直接格式化不能分配给用户),逻辑分区(在扩展分区里再根据需要创建多个逻辑分区)。

对于热添加硬盘的Linux首次分区,我建议大家把这个硬盘全部用完,依次键入n,p,1,回车,回车, w

partprobe /dev/vdb       #使新建分区生效
fdisk -l                        #查看内虚拟机目前的分区情况
fdisk -l /dev/vdb         #查看新硬盘的分区情况
mkfs.xfs /dev/vdb1      #对新建的分区vdb1进行格式化
mkdir /seconddisk-partition        #新建一个挂载目录
mount /dev/vdb1 /seconddisk-partition      #通过挂载点/seconddisk-partition将分区/dev/vdb1挂载上
df -h                     #显示内虚拟机所有硬盘的分区情况
touch /seconddisk-partition/test.txt
echo “1234” > /seconddisk-partition/test.txt
cat /seconddisk-partition/test.txt         #测试新硬盘的分区能否读写文件

当然,我们还可以对第二块硬盘不采取分区,而是直接对第二块磁盘进行格式化后挂载使用,这种方法可用于第二块磁盘的扩容
再现有的环境下,进入内虚拟机后:
(1) umount /seconddisk-partition #先脱载
此时若发现有挂载卸载不掉(卸载磁盘有进程在操作),提示有umount target is busy,可按以下多种方法操作:
方法1: 使用fuser和 kill命令

yum install psmisc       #安装fuser命令
fuser -mv /seconddisk-partition      #查看目前正在使用的进程
kill -g 进程号      #会退出当shell,新开shell再查看
fuser -mv /seconddisk-partition   #查看目前是否还有使用的进程
umount/seconddisk-partition      #完成脱载

方法2: 使用lsof命令处理

lsof /seconddisk-partition       #查看pid对应的进程号
kill -g 具体进程号           #杀死对应的进程号
umount /seconddisk-partition      #完成脱载

方法3: 内虚拟机重新启动(之前是手工挂载,重启后会自动失效)
(2)fdisk /dev/vdb
依次键入d,w 删除分区
(3)fdisk - /dev/vdb #查看硬盘的分区,应该是没有了
(4)mkfs.xfs -f /dev/vdb #不分区,整个磁盘进行格式化
(5)mkdir /seconddisk-full
(6)mount /dev/vdb/seconddisk-full #挂载整个磁盘
(7)df -h或者fdisk -l #查看磁盘容量或分区
( 8 ) touch /seconddisk-full/test.txt && echo “5678" > /seconddisk-full/test.txt && cat /seconddisk-full/test.txt #测试文件进行读写(同上)

(三)对新挂载的硬盘进行扩容

  • 当前存储是第一块硬盘是INCentos7.qcow2最大容量是5G,
  • 第二块硬盘是add01_INCentos7.qcow2最大容量是3G。
  • 两块硬盘的容量一共是8G。现在内虚拟机的存储容量用着用着还是不够,需要对第二块硬盘进行扩容,但扩容的前提是第二块硬盘事先不能分区,添加成功后直接格式化并且挂载使用,下面实验就是基于此种环境下的扩容操作。
    进入内虚拟机后:
    (1)umount /seconddisk-full #先脱载
    进入外虚拟机后:
    (2)virsh detach-disk INCentos7 vdb --persistent #移除第二块硬盘
    (3) qemu-img resize /opt/add01_INCentos7.qcow2 +4G #扩容新增加4G(总容量为7G),注意如果没有+号是至扩容到4G(总容量为4G)
    (4) virsh attach-disk IlNCentos7 /opt/add01_INCentos7.qcow2 vdb --subdriver qcow2 --persistent #添加硬盘至虚拟机上
    切换进入内虚拟机后:
    (5) mount /dev/vdb /seconddisk-full #重新挂载分区
    (6) xfs_growfs /dev/vdb #扩展磁盘大小,若ext文件系统采用resize2fs /dev/vdb,扩容成功会有信息提示
    (7)df-Th #查看硬盘是否成功扩容至7G 了
    (8) touch /seconddisk-full/class.txt && echo “abcd" > /seconddisk-full/class.txt && cat /seconddisk-full/class.txt #测试文件进行读写(同上)

(二)KVM的管控—图形可视化管理+网络管理

(一)KVM图形化管理

之前我们安装KVM,通常需要三个包:

  1. qemu-kvm软件包,主要提供KVM模拟器;
  2. libvirt包,主要提供相关的库文件或API接口;
  3. virt-manager包,主要提供虚拟机管理;yum install qemu-kvm* libvirt* virt-* -y
  • 之前我们的实验都是基于命令行的方法来管理虚拟机,在实践运维管理中以命令居多,能更好掌握其内在的逻辑关系。但其实KVM虚拟机也是有图形化管理工具,建议在外虚拟机本机上打开kvm的可视化管理工具。
    KVM

(二) KVM的网络管理

KVM 默认的连网方式是NAT,当安装好KVM虚拟机后,就会在宿主机上自动安装一个网桥virbr0(管理ip是192.168.122.1),此网桥会把各个虚拟机连接起来,处在同一个网段(默认是192.168.122.X),并且KVM会修改iptables规则,让连接到此网桥的虚拟机访问外网时做一个网络地址转换NAT。
通常,设置了NAT以后,内网可以主动访问外网,但是外网不能主动访问内网。
KVM虚拟机的 nat网络模式的完整网络架构
在外虚拟机上启动两个内虚拟机以后的ip addr信息

[root@kvmnodel ~]# ip addr
1: lo:〈LOOPBACK,UP,LOWER_UP〉 mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00: 00 brd 00:00: 00:00: 00: 00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft foreverinet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29: 68: ae:lf brd ff:ff:ff:ff:ff: ff
inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80: : 9b6d: c6d : 66c3: d42f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: virbr0:〈BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:54:00: e6:f8: 4a 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
4: virbr0-nic:<BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DWOWNgroup default qlen 1o00
link/ether 52:54:00: e6: f8:4a brd ff:ff:ff:ff:ff:ff
5: vnet0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOonV group default qlen T000
link/ether fe:54:00:8b: b8:b7 brd ff:ff:ff:ff:ff:ffinet6 fe80: : fc54:ff: fe8b: b8b7/64 scope link
valid_lft forever preferred_lft forever
6: vnet1:〈BROADCAST,MULTICAST,UP, LOWER_UP> mtu 1500 qdisc pfifo_fast master virbrl0 state UNKAONN group default qlen 1000
link/ether fe:54:00:9c: 3d: 48 brd ff: ff: ff: ff: ff: ffinet6 fe80: :fc54:ff: fe9c : 3d48/64 scope link
valid_lft forever preferred_lft forever

然而,在很多应用场景中需要kvm内虚拟机和外虚拟机在同一个网段里,那么默认的NAT模式就不合适了,需要从默认的NAT模式切换到桥接Bridge模式。
2.1 在网卡的配置文件目录中,配置生成一个新的配置文件ifcfg-br0。以下操作均在外虚拟机上来完成:

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-br0
vim ifcfg-br0     #参考下列修改网桥配置后保存
TYPE=bridge
NAME=br0
DEVICE=br0
BOOTPROTO=static
DEFROUTE=yes
IPADDR=10.0.0.200
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=10.0.0.254
DNS2=8.8.8.8
ONBOOT=yes
vim ifcfg-ens33    #参考下列修改网卡配置后保存
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
systemctl restart network       #重启网络
ip addr           #假设当前没有开启任何内虚拟机

外虚拟机上新增一个网桥的网卡信息(假设当前没有开启内虚拟机)

Lroot@kvmnodel network-scripts]# ip addr
1: lo:〈LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft foreverinet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33:<BROADCAST,MULTICAST,UP,LOWER_UP〉 mtu 1500 qdisc pfifo_fast master br0O state UP group default glen 100
link/ether 00:0c:29: 68:ae:1f brd ff:ff:ff:ff:ff:ff
3: br0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group
default qlen 1000
link/ether 00:0c:29:68:ae:1f brd ff:ff:ff:ff:ff:ff
inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute br0valid_lft forever preferred_lft forever
inet6 fe80::6076:5eff:fede:85b8/64 scope link
valid_lft forever preferred_lft forever
4: virbr0:(NO-CARRIER, BROADCAST,MULTICAST,UP〉 mtu 1500 qdisc noqueue state DOWN group default qlen 1l000
link/ether 52:54:00:e6:f8:4a brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
5: virbr0-nic:<BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DON group default qlen 1000link/ether 52:54:00:e6:f8:4a brd ff:ff:ff:ff:ff: ff

2.2 在外虚拟机上用KVM的可视化管理工具,更改原来INCentos7的网卡模式,从默认的NAT切换为Bridge
修改网卡模式为bridge
查看或修改虚拟机的远程桌面采用VNC 方式
在外虚拟机上启动内虚拟机 INCentos7后,登录或进入内虚拟机 INCentos7后,先查看内虚拟机INCentos7的网卡配置文件,

vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"

先确保内虚拟机的网卡配置文件是DHCP的分配方式,然后内虚拟机上ip addr
查看内虚拟机的IP是10.0.0.*的地址段地址并且可以ping通114.114.114.114,而且和宿主机(外虚拟机)在同一个网段,和宿主机(外虚拟机)连接到同一个网桥上了,同时再修改虚拟机 autoclone-INCentos7的网卡模式从NAT到 bridge,查看实验情况。
至此,桥接模式的kvm虚拟机已配置完成,最后我们来看看桥接KVM虚拟机的整体网络架构图。
KVM虚拟机的网桥bridge模式的整体网络架构

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KVM 虚拟化 的相关文章

  • KVM虚拟机配置静态IP(四):Centos7

    该系列文章为制作KVM虚拟机镜像的同时配置静态IP xff0c 为用户直接提供好固定IP xff0c 无需手动配置 系列文章目录 Ubuntu16 04Ubuntu18 04Centos6Centos7 文章目录 系列文章目录软件环境一 安
  • kvm虚拟化_KVM 虚拟化环境搭建 - WebVirtMgr

    前文 KVM 虚拟化环境搭建 ProxmoxVE 已经给大家介绍了开箱即用的 PVE 系统 xff0c PVE 是方便 xff0c 但还是有几点问题 xff1a 第一 xff1a 始终是商用软件 xff0c 虽然可以免费用 xff0c 但未
  • Centos7搭建KVM虚拟化环境

    如果觉得写得不错 xff0c 烦请微信搜索公众号 34 郑州行疆户外 34 了解程序员的户外业余喜好 1 查看系统版本 root 64 openstack cat etc centos release CentOS Linux releas
  • KVM interface passthrough

    nbsp nbsp nbsp nbsp kvm passthrouth sr iov nbsp nbsp https blog csdn net yzy1103203312 article details 81092647 nbsp nbs
  • kvm故障-虚拟机通过镜像创建虚后无法加载eth0网卡,显示网卡为ens3

    虚拟机通过镜像创建虚后无法加载eth0网卡 显示网卡为ens3 一 首先创建eth0网卡文件配置好 cd etc sysconfig network scripts TYPE Ethernet PROXY METHOD none BROWS
  • linux-删除KVM虚拟机

    1 查看主机 virsh list 2 关闭主机 virsh shutdown 虚拟机名称 3 删除主机定义 virsh undefine 虚拟机名称 4 删除KVM虚拟机文件 find name 虚拟机名称 rm rf 虚拟机文件
  • kvm常见故障及解决

    一 启动虚拟机Connection reset by peer virsh start vmhost1error Failed to start domain vmhost1error Unable to read from monitor
  • KVM的HVM虚拟机使用非串口方式建立virsh console 连接

    在去年写的文章中 http blog csdn net dobell article details 14442457 写到了怎么利用serial 设备进行console连接 不过比较麻烦 因为1 需要修改虚拟机内部的grub启动选项 2
  • kvm虚拟化技术

    前言 kvm是一种虚拟化技术 使用 概念 kvm是linux内核的模块 它需要CPU支持 采用硬件辅助虚拟化技术Intel VT AMD V 内存的相关技术如Intel的EPT和AMD的RVI 是底层虚拟化内核模块 检查cpu是否支持虚拟化
  • KVM添加文件夹存储

    创建基于文件夹的存储池 1 定义一个存储池 virsh pool define as kvm images dir kvm images 2 查看创建的存储池信息 virsh pool list all 3 建立基于文件夹的存储池 virs
  • 29 KVM管理系统资源-调整虚拟CPU绑定关系

    文章目录 29 KVM管理系统资源 调整虚拟CPU绑定关系 29 1 概述 29 2 操作步骤 29 KVM管理系统资源 调整虚拟CPU绑定关系 29 1 概述 把虚拟机的vCPU绑定在物理CPU上 即vCPU只在绑定的物理CPU上调度 在
  • ovirt-node和ovirt-engine相连遇到的问题解决办法

    1 Host 192 168 70 7 does not comply with the cluster Default emulated machines The Hosts emulated machines are
  • kvm虚拟机vnc和spice配置

    一 简介 通过vnc或spice方式访问虚拟主机上的KVM虚拟机 可以直接通过图形化界面virt manager来设置 但此处通过xml配置文件修改 二 详解 1 VNC方式访问 vnc方式访问虚拟机不是在kvm虚拟机安装配置vnc服务器
  • KVM热迁移

    KVM热迁移 介绍 KVM热迁移的前提是拥有共享存储 以下通过NFS实现KVM热迁移 迁移过程 将一处于运行状态的KVM虚拟机从节点kvm 01迁移到kvm 02后继续运行 准备 主机准备 hostname IP地址 系统 配置 kvm 0
  • KVM/桥接器:没有到主机的路由

    我已经在 Fedora 17 上使用 KVM 设置了虚拟机 并为 KVM 配置了桥接网络 主机和虚拟机均采用手动IP配置 主机IP为192 168 0 2 虚拟机IP为192 168 0 10 从虚拟机我可以毫无问题地连接到主机 但从主机我
  • Linux x86-64 上的物理内存中的用户空间和内核之间是否存在明确的划分?

    也就是说 给定一个物理地址 我可以判断这个地址是否来自用户空间吗 据我所知 在虚拟地址空间中 内核将使用 上半部分和用户空间将使用下半部分 但是关于 在物理地址空间 让问题变得复杂的是我想检查KVM中的客户物理地址 这意味着我无法调用客户操
  • libvirtError:XML 错误:预期单播 mac 地址,发现多播

    我正在通过 ansible 设置 KVM 自动化 并且我有一个虚拟机一直给我这个错误 libvirtError XML 错误 预期的单播 mac 地址 发现多播 53 54 00 b4 ad 81 我不认为这是一个可靠的问题 因为其他几个虚
  • 当 KVM-QEMU 打开时,Intel-PT 不记录任何数据包

    我尝试在主机上使用 Intel PT 同时在客户机上运行通用软件程序 所以我期望主机中运行的 Intel PT 将记录所有相关数据包 如 PIP FUP TSC 等 以及所有基于 VM 的数据包 如 VMCS 我使用以下命令 perf kv
  • Android Studio:/dev/kvm 设备权限被拒绝

    当我尝试在模拟器上运行 Android 应用程序时 出现以下错误 dev kvm 权限被拒绝 我检查了权限并将当前登录的用户添加到 kvm 组中 怎么了 正如评论中提到的 从乌班图18 04 and Linux 薄荷塔拉你需要先sudo a
  • Qemu-KVM:将访客物理地址转换为主机虚拟/主机物理地址

    我正在做一个需要翻译的项目qemu guest物理地址到主机虚拟 物理地址 我正在使用 VMI 虚拟机自省 来自省 qemu 进程 KVM VM 并读取存储在 virtio 环缓冲区描述符中的来宾物理地址 因此 我正在寻找一种简单的方法来将

随机推荐

  • spring框架

    文章内容 介绍spring框架 为什么要使用spring框架 如何使用spring IOC控制反转 1 介绍spring框架 1 spring是一个轻量级开源的JAVAEE框架 2 Spring提高了IOC和AOP IOC 控制反转 把创建
  • Ubuntu忘记密码怎么办 如何重置Ubuntu登入密码

    1 首先重新启动Ubuntu系统 xff0c 然后快速按下shift键 xff0c 以调出grub启动菜单 2 在这里我们选择第二个 xff08 Ubuntu高级选项 xff09 xff0c 选中后按下Enter键 3 选择第二个recov
  • 快速掌握e语言,以js语言对比,快速了解掌握。

    易语言 xff0c 怎么调试输出 xff0c 查看内容 在js语言里 xff0c 弹窗是 alert 在易语言里 xff0c 弹窗是 信息框 弹出显示内容 0 标题 在js语言里 xff0c 调试输出是 console log 在易语言里
  • java 实现Comparable接口排序,升序、降序、倒叙

    本人由于项目开发中需要对查询结果list进行排序 xff0c 这里根据的是每一个对象中的创建时间降序排序 本人讲解不深 xff0c 只实现目的 xff0c 如需理解原理还需查阅更深的资料 1 实现的效果 2 创建排序的对象 package
  • gitbash不能粘贴

    点击鼠标滚轮或者shift 43 ins
  • Hive安装与配置常见问题解决

    欢 43 迎使用Markdown编辑器 提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 目录 前言一 Hive是什么 xff1f 二 安装步骤1 引入jar包2 配置步骤1 hive s
  • 【Linux】生产者消费者模型

    文章目录 1 生产者消费者模型1 1生产者消费者模型的特点1 2生产者消费者模型的原则1 3生产者消费者模型的优点 2 基于阻塞队列的生产者消费者模型2 1如何理解生产者消费者模型的并发 xff1f 3 信号量3 1信号量接口3 2基于环形
  • Ubuntu设置允许root用户登录

    Ubuntu激活root用户 sudo passwd root 设置root密码 设置允许root通过ssh默认登录 vim etc ssh sshd config root权限编辑 PermitRootLogin yes 在第一行添加内容
  • python编写程序统计一元人民币换成一分、两分和五分的所有兑换方案个数(用while循环)

    a 61 int input 34 输入钱数 xff08 单位 xff1a 元 xff09 34 e 61 a 100 count 61 0 i 61 1 while i lt e 5 43 1 i 43 61 1 b 61 e 5 i 2
  • springboot简易整合mybatis

    SpringBoot整合Mybatis篇 实现单表mybatis整合 准备sql 创建数据库 create database if not exists 96 mybatis 96 修改数据库默认字节编码 alter database 96
  • Springboot+PageHelper实现分页(前后端简单展示)

    Springboot 43 PageHelper实现分页 前后端简单展示 创建表及赋值 创建表 DROP TABLE IF EXISTS 96 page learn 96 CREATE TABLE 96 page learn 96 96 i
  • SpringBoot缓存注解使用(无数据库操作)

    SpringBoot缓存注解使用 无数据库操作 缓存注解介绍 64 EnableCaching注解 xff1a 开启注解缓存的支持 64 Cacheable注解 xff1a 对方法的查询结果进行缓存 64 CachePut注解 xff1a
  • JavaScript(基于Java开发的学习)

    JavaScript 基于Java基础学习 JavaScript结构图 1 JS简介 JavaScript xff08 行为 xff09 xff1a 是一种弱类型脚本语言 xff0c 其源码不需经过编译 xff0c 而是由浏览器解释运行 x
  • MyBatis框架

    MyBatis学习结构 1 MyBatis框架简介 MyBatis是一款优秀的持久层框架 它支持定制化SQL 存储过程以及高级映射 MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集 MyBatis可以使用简单的XML或
  • springboot+vue实现增删改查小demo

    学习vue xff0c 就想着自己搭建一个框架学习一下 xff0c 本文属于vue与后台的增删改查入门demo xff0c 不做讲解 xff0c 只为了记录一下代码 后台框架前台框架的搭建自己百度就可以做到了 项目的源码地址 https g
  • JWT(Json web token)

    1 什么是JWT 官网地址 JSON Web Token Introduction jwt io 翻译 jsonwebtoken xff08 JWT xff09 是一个开放标准 xff08 rfc7519 xff09 xff0c 它定义了一
  • MyBatis-plus

    MyBatis plus学习结构图 1 MyBatis plus简介 为什么要学习它呢 MyBatisPlus可以节省我们大量工作时间 xff0c 所有的CRUD代码它都可以自动化完成 JPA tk mapper MyBatisPlus 偷
  • QT制作简易串口

    QT 实现一个简易版串口调试助手 文章目录 1 设计 UI 界面 2 具体代码编写 3 最终实现效果图 一 设计 UI 界面 设计 UI 界面之前 xff0c 让我们先看一下别人设计的串口助手大概长什么样子 xff0c 具体有哪些功能 我们
  • MVC的执行流程

    MVC的执行流程 1 执行服务器2 发送请求到tomcat3 响应客户端总结 1 执行服务器 根据配置创建DispatcherServlet对象 这个对象已创建 xff0c 会根据contextConfigLocation的配置查找spri
  • KVM 虚拟化

    kvm虚拟化 Kvm的安装 KVM下的虚拟机安装和相互访问约束 推荐下载TightVNC 也可以使用 VNCSever 一 虚拟化产品介绍 linux类的虚拟化软件 qemu xff0c 软件纯模拟全虚拟化软件 xff0c 特别慢 xen