虚拟化|Xen pv实践及问题记录


文章目录

  • 环境
  • Xen安装过程
  • Xen PV镜像构建
  • 网络问题记录
    • 连接Domain0和Domain1的背景设置
  • 其他的可能发生的问题
  • 常见命令参考
  • 参考

环境 笔记本,无限网络连接。安装后Domain0下观察,具体信息如下:
虚拟化|Xen pv实践及问题记录
文章图片

Xen安装过程 在原始系统上一行命令将解决。
sudo apt install xen-hypervisor-amd64

重启之后xl list查看虚拟机状态
sudo xl list

可以看到Domain0的信息,这里就算是安装完成了。
虚拟化|Xen pv实践及问题记录
文章图片

Xen PV镜像构建 Xen支持HVM(硬件支持下的全虚拟化),PV(半虚拟化), PVH(HVM全虚拟化下的PV优化),HVM有依赖qemu的支持。Xen的特色虚拟化就是它的PV了,这里概述下过程。
与《使用xen-tools在Ubuntu18中安装Xen PV 虚拟机》过程类似。以下过程做一些补充。
首先需要准备一些空闲的磁盘区域,如果没有空闲分区了, 可以用系统自带的有GUI的Disks进行Resize,下图是我的磁盘状态partition5挂载的是Ubuntu的/目录,6是swap,7 8 是创建出给DomainU 的LVM分区。
虚拟化|Xen pv实践及问题记录
文章图片

lvm的文件系统更为灵活,类似于内存页表,将底层物理磁盘PV(Physical Volume)空间划分为PE(Physical Entry),接下来需要将PE组合起来成为VG(Volume Group),成为VG后可以作为虚拟机的磁盘分区。
这里假设你已经完成了空闲空间的创建,开始创建lvm空间。
首先确定自己空闲的磁盘,我这里Disk上显示的很清楚可,是/dev/sda上有空闲。
fdisk /dev/sda n #开始创建新空间 分区编号:直接enter编号 询问分区开头位置:直接enter(紧跟前一个分区结束扇区) +20G #分配20G空间 t #改变分区格式 31 #设置为lvm格式 w #保存退出

eg:如下图,创建了分区9,最后不保存的话按q,不要输入w。
虚拟化|Xen pv实践及问题记录
文章图片
到了这里就可以根据LVM分区创建VG了。
sudo pvcreate /dev/sda9#创建PV,PE sudo vgcreate vg0 /dev/sda9 #vg0 是vg的名字

至此空间的事情完成。
这里也采用《使用xen-tools在Ubuntu18中安装Xen PV 虚拟机》的方法使用xen-tools创建及启动,直接记录命令过程,/etc/xen-tools/mirrors.conf里可以设置镜像源。
sudo apt install xen-tools sudo xen-create-image --hostname=pvGuest0 --memory=1024mb --size=20Gb --vcpu=1 --lvm=vg0 --dhcp --pygrub --dist=xenial #创建镜像

创建过程出现了问题主要查看/var/log/xen-tools/pvGuest0.log,个人实现中发现镜像源的目录层级如果不与官方的一致,也会出问题,所以尽量用《使用xen-tools在Ubuntu18中安装Xen PV 虚拟机》提到的镜像源。
sudo xl create -c /etc/xen/pvGuest0.cfg #启动

到了这里就安装启动成功了。
网络部分的设置主要设置**/etc/network/interfaces**,继续参考《使用xen-tools在Ubuntu18中安装Xen PV 虚拟机》,本文的无线网卡无法桥接到网桥。
ubuntu20.04已经不在networkscripts里面修改网卡信息了,主要在interfaces里,贴一下interfaces的信息
auto lo iface lo inet loopbackauto wlp2s0 iface wlp2s0 inet dhcpauto xenbr0 iface xenbr0 inet dhcp bridge_ports wlp2s0

wlp2s0是无线网卡, xenbr0是网桥,他应该连接到wlp2s0上,但是不成功,networking服务也会因xenbr0启动失败。如果想启动成功,只好删除掉xenbr0。
虚拟化|Xen pv实践及问题记录
文章图片

网络问题记录 【虚拟化|Xen pv实践及问题记录】本机采用无限网卡上网,由于无线网卡不允许在局域内广播,所以它是无法桥接的[^2]。如果无线网卡支持WDS(4addr)的或许可以成功,这里可以参考askubuntu论坛里的一个问题《How to bridge a wireless interface with another wireless interface (both on the same computer)?》通过iw命令可以测试
iw phy0 info

可以用grep检查下有没有4addr,WDS,如果没有那应该跟我一样,无法桥接了。
虚拟化|Xen pv实践及问题记录
文章图片

xenbr0可以跟domianU的vif接口连接成功,但是无法启动networking,brctl显示添加也会提示操作不成功。
$ sudo brctl addif xenbr0 wlp2s0 can't add wlp2s0 to bridge xenbr0: Operation not supported

连接Domain0和Domain1的背景设置
  • Domain0 IP: 192.168.199.122/255.255.255.0
    Domain0 interfaces配置
auto lo iface lo inet loopbackauto wlp2s0 iface wlp2s0 inet dhcp#auto xenbr0(为实现networking的) #iface xenbr0 inet dhcp # bridge_ports wlp2s0

ifconfig 信息如下:
虚拟化|Xen pv实践及问题记录
文章图片

  • Domain1 IP: 192.168.199.123/255.255.255.0
    具体信息如下
    虚拟化|Xen pv实践及问题记录
    文章图片

    网桥xenbr0: 192.168.199.xx,xenbr0正常(btctl show)。
    虚拟化|Xen pv实践及问题记录
    文章图片

    Domain0和Domain1的networking服务必须都正常运行。
    虚拟化|Xen pv实践及问题记录
    文章图片

    最后的效果:采用网桥连接后,Domain0/1无法上网,可以互相ping通。把网桥地址随便改变后(不在同一子网),Domain0可以重新上网,Domain之间无法ping通。
其他的可能发生的问题
  1. 系统启动的时候raise network interface 5min,等待太久,调整networking服务的配置信息[^4],
vi /etc/systemd/system/network-online.target.wants/networking.service

调整里面TimeoutStart,这里不要调太小了,比如几秒,否则就是真的timeout导致设备无法加载启动了。
  1. 【未解决】LSB: Xen-daemon 启动失败
    通过systemctl status xen查看得到由于qemu-system-i386的一个操作不支持导致Xen-daemon无法启动,这个问题还**没有找到**解决办法。
    虚拟化|Xen pv实践及问题记录
    文章图片
常见命令参考 LVM:
# 信息查看 sudo vgs # volume group的信息 sudo pvs # physical volumes的信息# 创建 sudo pvreate sudo vg create

xen,xen-tools:
# 查看创建过得PV镜像(xen-tools) sudo xen-list-images# 根据描述文件启动PV(xen) sudo xl create -c /etc/xen/pvXXX.cfg

网络
sudo brctl show #显示网桥 sudo brctl addbr xenbr0#创建网桥xenbr0 sudo brctl addif xenbr0 eth0 #连接eth0到网桥xenbr0 sudo ifconfig xenbr0 up#启动xenbr0 sudo ifconfig xenbr0 down #关闭xenbr0 sudo ifconfig eth0 192.168.199.123 netmask 255.255.255.0 #临时设置ip# systemd服务查看 sudo systemctl restart networking sudo systemctl status networking sudo systemctl start networking# 修改服务配置文件后,重新加载 sudo systemctl daemon-reload

参考
  1. 使用xen-tools在Ubuntu18中安装Xen PV 虚拟机
  2. 在Ubuntu上将Wifi桥接到以太网无法正常工作
  3. How to bridge a wireless interface with another wireless interface (both on the same computer)?
  4. debian:A start job is running for Raise network interfaces(ns/5min 3s)
  5. Xen Project Beginners Guide

    推荐阅读