简单KVM安装+桥接模式

一、KVM介绍

Kernel-basedVirtualMachine 的简称,是一个开源的系统虚拟化模块,自 Linux2.6.20 之后集成在 Linux 的各个主要发行版本中。它使用 Linux 自身的调度器进行管理,所以相对于 Xen,其核心源码 很少。KVM 目前已成为学术界的主流 VMM 之一。
KVM 的虚拟化需要硬件支持(如 IntelVT 技术或者 AMDV 技术)。是基于硬件的完全虚拟化。 而 Xen 早期则是基于软件模拟的 Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但 Xen 本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件 VMwareESX 系列是基于软件模拟的 Full-Virtualization。
在这里插入图片描述
因为对进程管理比较麻烦,RedHat 发布了一个开源项目 libvirt。libvirt 有命令行工具也有 API,可 以通过图形化界面,完成对虚拟机的管理。大多数管理平台通过 libvirt 来完成对 KVM 虚拟机的管理; 比如 Openstack、Cloudstack、OpenNebula 等。

二、环境准备

硬件环境
首先bios需要开启虚拟化
在这里插入图片描述
因为我这里使用的是VMware,所以需要在这里开启虚拟化配置
在这里插入图片描述

创建虚拟机步骤
1.准备虚拟机硬盘
2.需要系统 iso 镜像
3.需要安装一个 vnc 的客户端来连接

在这里插入图片描述
系统环境
记得关闭防火墙

cat /etc/redhat-release
uname -r
getenforce
systemctl stop firewalld

在这里插入图片描述
然后检查一下CPU是否支持虚拟化
KVM其实已经在Centos7内置到系统内核,无需安装

grep -E '(vmx|svm)' /proc/cpuinfo

在这里插入图片描述

安装KVM用户态模块

yum list|grep kvm

在这里插入图片描述

yum install -y qemu-kvm qemu-kvm-tools libvirt

libvirt用来管理kvm
kvm属于内核态,不需要安装。但是需要一些类似于依赖的

启动libvirt

systemctl start libvirtd.service
systemctl enable libvirtd.service

启动之后我们可以使用 ifconfig 进行查看,libvirtd 已经为我们安装了一个桥接网卡
在这里插入图片描述
libvirtd 为我们启动了一个 dnsmasqp,这个主要是用来 dhcp 连接的,这个工具会给我们的虚拟机分配 IP 地址

ps -ef|grep dns 

在这里插入图片描述

三、创建虚拟机

首先,先看一下磁盘空间大小

df -h

最好是20G以上
在这里插入图片描述
上传镜像
提示:如果使用 rz 上传镜像可能会出现错误,所以我们使用 dd 命令,复制系统的镜像。只需要挂载 上光盘即可。

cd /opt/
dd if=/dev/cdrom of=/opt/CentOS-7.3.iso

创建磁盘

qemu-img create -f qcow2 /opt/CentOS-7.3-x86_64.qcow2 6G

在这里插入图片描述
-f 制定虚拟机格式
/opt/Centos 存放路径
6G 代表镜像大小
磁盘格式介绍
raw----裸磁盘不支持快照
qcow2----支持快照。Openstack 使用的方式推荐使用这个。注意:关闭虚拟机后操作。
区别:
全镜像格式(典型代表 raw),特点:设置多大就是多大,写入速度快,方便转换其他格式,性能最 优,但是占用空间大。
稀疏格式(典型代表 qcow2),其特点:支持压缩、快照、镜像,更小的存储空间(即用多少占多少)
qcow2 数据的基本组成单元是 cluster
raw 性能比 qcow2 快
raw 创建多大磁盘,就占用多大空间直接分配,qcow2 动态的用多大占用多大空间。

配置桥接设备br0(因为我们使用的是桥接)

yum -y install bridge-utils
cp /etc/sysconfig/network-scripts/ifcfg-ens33 .
echo 'DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no'>/etc/sysconfig/network-scripts/ifcfg-ens33
echo 'DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.41
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
NM_CONTROLLED=no
DNS1=114.114.114.114
DNS2=8.8.8.8'>/etc/sysconfig/network-scripts/ifcfg-br0
systemctl restart network.service

在这里插入图片描述
安装虚拟机并指定桥接模式

yum install -y virt-install
virt-install --virt-type=kvm --name=c73 --vcpus=1 -r 1024 --cdrom=/opt/CentOS-7.3.iso --network bridge=br0 --graphics vnc,listen=0.0.0.0,port=5902 --noautoconsole --os-type=linux --os-variant=rhel7 --disk path=/opt/CentOS-7.3-x86_64.qcow2,size=6,format=qcow2

参数介绍

--virt-type:指定虚拟机类型
--os-type:指定系统类型
--name:虚拟机名字
--memory:内存,这个参数在centos7安装的kvm里边使用
--ram: 内存,这个参数在centos6安装的kvm里边使用
--vcpus:指定cpu个数
--disk /opt/centos2.raw,format=raw,size=10:指定磁盘位置,类型,大小
--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso:指定镜像文件所在位置
--boot hd:如果不安装系统就把上一条命令换成这个
--network network=default:网络类型默认net
--network bridge=br0:桥接网络使用这个参数
默认连接端口是从5900开始的
virsh list

在这里插入图片描述
查看一下端口

netstat -lntup|grep 5900

在这里插入图片描述
virt-install 常用参数

 -n--name= 客户端虚拟机名称 
 -r--ram= 客户端虚拟机分配的内存 
 -u--uuid= 客户端 UUID 默认不写时,系统会自动生成 
 --vcpus= 客户端的 vcpu 个数 
 -v--hvm 全虚拟化 
 -p--paravirt 半虚拟化
 -l--location=localdir 安装源,有本地、nfs、http、ftp 几种,多用于 ks 网络安装 
 --vnc 使用 vnc ,另有--vnclient=监听的 IP --vncport =VNC 监听的端口
 -c--cdrom= 光驱 安装途径 
--disk= 使用不同选项作为磁盘使用安装介质 
 -wNETWORK,--network=NETWORK 连接客户机到主机网络 
 -s--file-size= 使用磁盘映像的大小 单位为 GB 
 -f--file= 作为磁盘映像使用的文件 
 --cpuset=设置哪个物理 CPU 能够被虚拟机使用 
 --os-type=OS_TYPE 针对一类操作系统优化虚拟机配置(例如:‘linux’,‘windows’) 
--os-variant=OS_VARIANT 针对特定操作系统变体(例如’rhel6’, ’winxp’,'win2k3')进一步 优化虚拟机配置 
 --host-device=HOSTDEV 附加一个物理主机设备到客户机。HOSTDEV 是随着 libvirt 使用的一个 节点设备名(具体设备如’virshnodedev-list’的显示的结果) 
 --accelerateKVM 或 KQEMU 内核加速,这个选项是推荐最好加上。如果 KVM 和 KQEMU 都支持, KVM 加速器优先使用。 
 -xEXTRA,--extra-args=EXTRA 当执行从"--location"选项指定位置的客户机安装时,附加内核命 令行参数到安装程序 
 --nographics"virt-install" 将默认使用--vnc 选项,使用 nographics 指定没有控制台被分配给客户机

五、VNC连接创建好的虚拟机并安装系统

在这里插入图片描述
因为 centos7 默认网卡发生改变,我们需要修改内核参数,使用 eth0 作为网卡
在这里插入图片描述

注意:如果查看 5900 端口开启,但是 VNC 无法连接 KVM 虚拟机时,看下防火墙是否开启。创建的 虚机用 VNC 连接时从默认端口 5900 开始,即虚机一:10.0.0.41:5900 虚机二:10.0.0.41:5901
在这里插入图片描述
在这里插入图片描述
虚拟机安装完成后是关闭了,我们需要启动

virsh list --all

在这里插入图片描述

virsh start c73  #启动
virsh shutdown c73  #关闭

c73 是虚拟机的名字,是我们创建的时候定义的
成功

六、KVM桥接配置

(建议先配置宿主机桥接网络→创建虚机)

在这里插入图片描述
在该模式下,宿主机会虚拟出来一张虚拟网卡作为宿主机本身的通信网卡,而宿主机的物理网卡则成为桥设备(交换机),所以虚拟机相当于在宿主机所在局域网内的一个单独的主机,他的行为和宿主机是同等地位的,没有依存关系。

安装好虚拟化组件(RHEL6.0之后,系统自带的均是KVM,已经没有XEN虚拟化的支持了),会自动生成一个virbr0这样的桥接设备

brctl show

在这里插入图片描述
Bridge设备其实就是网桥设备,也就相当于想在的二层交换机,用于连接同一网段内的所有机器,所以我们的目的就是将网络设备ens33配置成br0,此时br0就成为了所谓的交换机设备,我们物理机的eth0也是连接在上面的。

(2)通过VNC连接KVM虚机修改网卡配置文件
以下是KVM虚机里的操作
在这里插入图片描述

echo 'DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.0.0.31
PREFIX=24
GATEWAY=10.0.0.254
DNS1=223.5.5.5    
DNS2=1.1.1.1'>/etc/sysconfig/network-scripts/ifcfg-eth0
ifup eth0

在这里插入图片描述
在这里插入图片描述
以上KVM桥接完成
可以测试其他服务器也能连接kvm虚拟机

四、KVM的图形界面管理工具(virt-manager)
virt-manager是用于管理KVM虚拟环境的主要工具,virt-manager默认设置下需要使用root用户才能够使用该工具。当你想在KVM hypervisor服务器上托管虚拟机,由最终用户而非root用户访问这些虚拟机时并不总是很便利。
virt-manager可以设置本机,同样也可以连接远程宿主机来管理。
利用virt-manager、xmanager、xshell启动界面来管理虚拟机,适合管理单机的KVM

在这里插入图片描述
1.首先查看本机sshd是否开启X11转发

grep X11Forwarding /etc/ssh/sshd_config --colour

在这里插入图片描述
2.安装xorg-x11

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

3. 安装libvirt
libvirt是管理虚拟机的API库,不仅支持KVM虚拟机,也可以管理Xen等方案下的虚拟机。

yum install virt-manager libvirt libvirt-Python python-virtinst libvirt-client virt-viewer qemu-kvm mesa-libglapi  -y

因为我的主机是服务器,没有图形化界面,想要用virt-manager图形化安装虚拟机,还需要安装X-window。

yum install libXdmcp libXmu libxkbfile xkeyboard-config xorg-x11-xauth xorg-x11-xkb-utils -y

开启libvirt服务

systemctl start libvirtd.service
systemctl enable libvirtd.service

4. 安装好Xming后,打开xshell,在连接属性的tunneing中,勾选 Forwarding X11 connection to选项,可以正常打开virt-manager的图形界面。
Xming安装包链接
在这里插入图片描述
在这里插入图片描述
6.启动virt-manager
断开xshell会话,重新连接,输入命令:virt-manager,就可以自动弹出kvm管理软件

先打开Xming
在这里插入图片描述
在这里插入图片描述
在执行
在这里插入图片描述

virt-manager

再看
在这里插入图片描述
出现乱码,请安装以下包

yum install dejavu-sans-mono-fonts -y

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu KVM 虚拟机可以通过桥接模式实现网络连接。桥接模式允许虚拟机直接与物理网络中的其他设备进行通信,就像虚拟机是物理网络中的一台独立计算机一样。 要配置桥接模式,首先需要确保主机上安装了 bridge-utils 软件包。可以使用以下命令安装: ```bash sudo apt-get install bridge-utils ``` 安装完成后,可以按照以下步骤进行配置: 1. 打开 `/etc/network/interfaces` 文件,并添加以下内容: ``` auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0 ``` 这里的 `eth0` 应该替换为你主机上的物理网卡接口名。 2. 保存并关闭 `/etc/network/interfaces` 文件。 3. 编辑虚拟机的 XML 配置文件(通常位于 `/etc/libvirt/qemu/虚拟机名称.xml`),并将 `<interface type='network'>` 部分修改为以下内容: ```xml <interface type='bridge'> <mac address='xx:xx:xx:xx:xx:xx'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> ``` 这里的 `br0` 应该与上一步中配置的桥接接口名称匹配。 4. 保存并关闭虚拟机 XML 配置文件。 5. 重启 libvirtd 服务: ```bash sudo systemctl restart libvirtd ``` 完成以上步骤后,虚拟机就能够通过桥接模式与物理网络进行通信了。请确保在配置桥接模式之前备份相关文件,以防止配置错误造成网络连接问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值