01-ubuntu server系统基于kvm安装虚拟机实践

ubuntu server 22.04系统上KVM安装虚拟机实践

1、检查服务器上的CPU虚拟化支持

首先,你需要确认服务器的CPU支持虚拟化技术。可以通过执行以下命令来检查CPU是否支持虚拟化:

egrep -c '(svm|vmx)' /proc/cpuinfo

命令 egrep -c '(svm|vmx)' /proc/cpuinfo 用于检查你的CPU是否支持虚拟化技术。下面是这个命令的详细解释:

  • egrep:这是一个文本搜索工具,用于在文件中搜索符合特定模式的行。eegrep 中代表“扩展”,意味着它支持正则表达式扩展集。
  • -c:这个选项告诉 egrep 计算符合模式的行数,而不是打印出匹配的行。
  • '(svm|vmx)':这是 egrep 搜索的模式。它使用正则表达式来搜索包含 svm 或者 vmx 的行。这里的 svm 代表 AMD-V(Secure Virtual Machine),而 vmx 代表 Intel VT-x(Virtualization Technology),它们都是硬件虚拟化技术。
  • /proc/cpuinfo:这是一个虚拟的文件系统,包含了CPU的详细信息。当你运行 cat /proc/cpuinfo 命令时,它会显示CPU的型号、速度、缓存大小等信息。

当你执行这个命令时,它会检查 /proc/cpuinfo 文件中是否有行包含 svmvmx。如果有,这表明你的CPU支持某种形式的硬件虚拟化技术。命令的输出是一个数字,表示包含这些关键字的行数。如果输出是0,那么CPU可能不支持硬件虚拟化,或者虚拟化技术在BIOS/UEFI中被禁用了。如果输出大于0,那么CPU支持硬件虚拟化技术。在我的实验电脑上,相关输出为128,说明相关服务器支持虚拟化。

2、安装KVM相关工具

使用以下命令安装KVM及相关工具,包括qemu-kvmlibvirt-daemon-systemlibvirt-clientsbridge-utilsvirtinstvirt-manager等,这些工具是KVM虚拟化的核心组件和管理工具。

sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager

安装以上那个工具以后,检查libvirtd服务有没有启动,没有启动采用后续命令:

sudo systemctl status libvirtd.service

## if not started
sudo systemctl start libvirtd.service
sudo systemctl enable libvirtd.service

为了能够管理虚拟机,需要将当前用户添加到libvirt组:

sudo usermod -aG libvirt $USER

最后,再验证KVM命令是否成功加载和安装:

# 方法1
lsmod | grep kvm
# 方法2 kvm-ok命令验证
kvm-ok

3、设置桥接网卡
3.1、kvm支持的网络模式
  • NAT 模式
  • Bridge模式
  • 路由模式
  • 直接分配设备模式

第4种太奢侈, 而其他3种只有桥接模式能令虚拟机和局域网其他主机相互通信(ip 在同1个网段),因而只能选择bridge模式。

而既然我的机器是没有GUI的, 那就是netplan了;检查 /etc/netplan 文件夹, 是否存在yaml文件, 如果不存在, 而你台机器还能上网的话, 则肯定不是用netplan 方式。

3.2 检查netplan配置
-- 查看netplan文件夹配置文件
ls /etc/netplan
-- 进入相关目录
cd /etc/netplan
-- 使用vim查看配置文件
sudo sudo vi 00-installer-config.yaml 

先备份和查看原来的配置文件。

3.3 检查虚拟桥接设备(安装KVM后会有)

输入 ifconfig 回车,会见到输出除了上面两个有线网卡外, 多了1个设备virbr0,这是安装完kvm后系统自动创建的。这个virbr0 并不是一块虚拟网卡, 而是1个块虚拟桥接设备(bridge), 我们还必须基于它再创建1个虚拟桥接网卡。

3.4 编辑/etc/netplan/00-xxx.yaml 添加一个桥接网卡

首先,简单说明一下桥接方式的原理,在图中的br0相当于虚拟交换机,物理网卡eth0和虚拟机网卡vnet0都通过虚拟的网线连接到br0上,这样eth0和vnet0之间可以互相交换数据,br0叫做桥,其实在宿主机上也是一张虚拟的网卡,作为虚拟交换机角色。

配置虚拟机采用桥接模式并指定br0后,数据从虚拟机的网卡vnet0发出到br0,br0会将数据转发给另一端的eth0,源mac是虚拟机的随机MAC地址,源IP是虚拟机的IP地址,桥并没有做中间修改,数据仅仅通过eth0网卡直接发到链路上,eth0只是充当一个发送的物理介质。

当应答回来的时候,物理网卡eth0会在混杂模式捕获包并交给br0处理,如果目标mac地址等于eth0或者vnet0,则进一步处理。如果是eth0的包那么直接宿主机处理,如果是vnet0的包则转发给虚拟机处理,整个过程无需对包做出修改,因为br0仅仅是一个交换机,而eth0和vnet0是连在上面的2个网卡而已。

编辑 /etc/netplan/00-xxxx.yaml

--备份文件,并且创建一个带有时间戳的备份文件
cp -p 00-xxxx.yaml 00-xxxx.yaml.$(date +%Y%m%d_%H%M%S).bak

-- 编辑相关文件
sudo sudo vi 00-installer-config.yaml

-- 修改好配置以后运行,注意相关网络会发生变化,这里也可以配置静态ip
sudo netplan apply

00-xxxx.yaml文件具体内容如下:

# This is the network config written by 'subiquity'(博主的)
network:
  ethernets:
    eno1:
      dhcp4: false
    eno2:
      dhcp4: false # 真正的物理显卡要关闭dhcp
  bridges:
    br0:
      interfaces: [eno1]
      dhcp4: no
      addresses: [10.0.1.107/24] # ip地址
      routes:            
        - to: default
          via: 10.0.1.1           # 路由其地址
      nameservers:
        addresses: [119.29.29.29, 8.8.8.8]   # DNS 119.29.29.29 是腾讯的DNS
  version: 2


#自己的
network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: no
      dhcp6: no
  bridges:
    br0:
      interfaces: [eno1]
      addresses: [192.168.1.150/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
      parameters:
        stp: false
        forward-delay: 4
      dhcp4: no
      dhcp6: no

注意这里我们不在从路由器动态申请ip, 而是设置静态ip, 如国修改前后的ip不同,我们的ssh connection会断

  1. 物理网卡没有地址, 这是正常的, 如上图, 连物理网卡也会通过这个虚拟网桥连接外部。

4、创建虚拟机
4.1、安装开源工具 MobaXterm(可以提供相关界面,来帮助)

在下面的链接中,下载相关工具,然后默认安装好;

https://mobaxterm.mobatek.net/download.html

然后登录到宿主机

4.2、进行图形化界面安装虚拟机(也可以用命令行安装,后续有相关研究)

输入以下命令virt-manager(前面kvm安装好的前提下),进入到图形化安装界面

选择之前定义好的存储池images_lvm,然后设置相关的disk大小,最后点击确定。

点击完成,需要进入下面的黑框,完成剩下的设置

4.3、虚拟机自身内部设置(主要是设置语言,镜像还有一些网络,安装一些程序之类)

这里分屏之后选择会有一些小问题,可以切换屏幕,点一下其他地方,再去点这里的上下,就不会跳来跳去!!!

在设置代理的时候,如果不需要进行代理,那这里可以不填

设置修改为清华镜像,虽然后面也能改,但是一劳永逸;

https://mirrors.tuna.tsinghua.edu.cn/ubuntu/

这是最后的安装过程,然后等相关安装成功即可

这里显示全部安装好,然后这边在更新,会比较慢,估计要放比较久才行;如果等不及,可以直接先shutdown,然后再开机。开机以后需要安装的内容,见文档【配置单个虚拟机,实现xshell远程连接】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值