当前位置: 首页 > news >正文

arm环境cloudstack在vpc下创建虚拟机失败

一、环境说明

  • 操作系统:openEuler 22.03
  • CPU:Kunpeng-920,arm v8
  • cloudstack:4.18
  • libvirtd:6.2.0

二、问题描述

在UI上创建VPC后,平台会同时创建一个virtual router,此时virtual router有两个网卡,分别为private IP(169.;
然后在vpc下创建network,此时virtual router不会绑定network;
创建虚拟机时,指定此network,cloudstack报创建失败。

三、问题排查

当在vpc下的network创建第一个虚拟机时,cloudstack会先将virtual router绑定至该network,其中一个动作是为virtual router附加一个新的网卡,作为该network的网关。
但是虚拟机报创建失败后,查看virtual router仍只有两个网卡,其对应的network name列也是空的。
查看cloudstack management日志发现报错:org.libvirt.LibvirtException: internal error: No more available PCI slots。
而对比普通isolated network对应的virtual router的domain内容(virsh dumpxml),发现vpc下报错的virtual router缺少两个对应pci设备的定义。
通过搜索,在github上查看到类似的issue。
其解决方法是,在./plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java中添加代码如下:

            if (_emulator != null && _emulator.endsWith("aarch64")) {devicesBuilder.append("<controller type='pci' model='pcie-root'/>\n");for (int i = 0; i < 32; i++) {devicesBuilder.append("<controller type='pci' model='pcie-root-port'/>\n");}devicesBuilder.append("<controller type='pci' model='pcie-to-pci-bridge'/>\n");}

通过_emulator判断为aarch64架构的话,就添加32个pci设备。
但是debug查看,该值在执行至本段代码是为空字符串,且查看上面代码

            if (_emulator != null) {devicesBuilder.append("<emulator>" + _emulator + "</emulator>\n");}

本地查看虚拟机的domain内容,_emulator的值对应为/usr/libexec/qemu-kvm,也没有架构后缀。
因此怀疑本段代码没有普适性。
因此,将本段代码注释掉,修改代码如下:

#./plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java 添加一个类
public static class PCIDef {public PCIDeg() {}@Overridepublic String toString() {StringBuilder pciBuilder = new StringBuilder();devicesBuilder.append("<controller type='pci' model='pcie-root'/>\n");for (int i = 0; i < 32; i++) {pciBuilder.append("<controller type='pci' model='pcie-root-port'/>\n");}pciBuilder.append("<controller type='pci' model='pcie-to-pci-bridge'/>\n");return pciBuilder.toString();}
}#plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java 2553if (isGuestAarch64()) {createArm64UsbDef(devices);#新增createArm64PCIDef(devices);}#plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java 2580protected void createArm64PCIDef(DevicesDef devices) {devices.addDevice(new LibvirtVMDef.PCIDef());}

相关文章:

arm环境cloudstack在vpc下创建虚拟机失败

一、环境说明 操作系统&#xff1a;openEuler 22.03CPU&#xff1a;Kunpeng-920&#xff0c;arm v8cloudstack&#xff1a;4.18libvirtd&#xff1a;6.2.0 二、问题描述 在UI上创建VPC后&#xff0c;平台会同时创建一个virtual router&#xff0c;此时virtual router有两个网…...

Linux上安装Keepalived,多台Nginx配置Keepalived(保姆级教程)

目录 一、yum安装 第一步&#xff1a;下载 第二步&#xff1a;编辑Keepalived配置文件&#xff08;第一台&#xff09; 第三步&#xff1a;编辑Keepalived配置文件&#xff08;第二台&#xff09; 第四步&#xff1a;我们在本机利用cmd ping一下 一、yum安装 第一步&…...

centos7 ‘xxx‘ is not in the sudoers file...

如题 执行命令输入密码后时报错&#xff1a; [sudo] password for admin &#xff08;我的账户&#xff09;原因&#xff0c;当前用户还没有加入到root的配置文件中。 解决 vim打开配置文件&#xff0c;如下&#xff1a; #切换到root用户 su #编辑配置文件 vim /etc/sudoe…...

Zebec Payroll :计划推出 WageLink On-Demand Pay,进军薪酬发放领域

“Zebec Protocol 生态旨以 Web3 的方式建立全新的公平秩序&#xff0c;基于其流支付体系构建的薪酬支付板块&#xff0c;就是解决问题的一把利刃”...

【2023】字节跳动 10 日心动计划——第三关

目录 1. 最长有效括号2. 有序数组的平方 1. 最长有效括号 &#x1f517; 原题链接&#xff1a;32. 最长有效括号 类似于有效的括号&#xff0c;考虑用栈来解决。 具体来讲&#xff0c;我们始终保持栈底元素为当前已经遍历过的元素中「最后一个没有被匹配的右括号的下标」&…...

【无网络】win10更新后无法联网,有线无线都无法连接,且打开网络与Internet闪退

win10更新后无法联网&#xff0c;有线无线都无法连接&#xff0c;且打开网络与Internet闪退 法1 重新配置网络法2 更新驱动法3 修改注册表编辑器法4 重装系统 自从昨晚点了更新与重启后&#xff0c;今天电脑就再也不听话了&#xff0c;变着花样地连不上网。 检查路由器&#xf…...

HTML <script> 标签

实例 在 HTML 页面中插入一段 JavaScript: <script type="text/javascript"> document.write("Hello World!") </script>(在本页底部可以找到更多实例) 定义和用法 <script> 标签用于定义客户端脚本,比如 JavaScript。 script …...

FPGA----UltraScale+系列的PS侧与PL侧通过AXI-HP交互(全网唯一最详)附带AXI4协议校验IP使用方法

1、之前写过一篇关于ZYNQ系列通用的PS侧与PL侧通过AXI-HP通道的文档&#xff0c;下面是链接。 FPGA----ZCU106基于axi-hp通道的pl与ps数据交互&#xff08;全网唯一最详&#xff09;_zcu106调试_发光的沙子的博客-CSDN博客大家好&#xff0c;今天给大家带来的内容是&#xff0…...

Unity小游戏——迷你拼图

游戏展示 拼图演示 资源&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1BGeSmRCO_WZRUyl3MxefGw 提取码&#xff1a;0n4a 一、玩法介绍 排列拼图碎片&#xff0c;拼出最后的图案。可以点住碎片的任意位置拖动&#xff1b;点击"重来"按钮&#xff0c;可以…...

三 动手学深度学习v2 —— Softmax回归+损失函数+图片分类数据集

三 动手学深度学习v2 —— Softmax回归损失函数图片分类数据集 目录: softmax回归损失函数 1. softmax回归 回归vs分类: 回归估计一个连续值分类预测一个离散类别 从回归到多类分类 回归 单连续数值输出自然区间R跟真实值的误差作为损失 分类 通常多个输出输出i是预测为第…...

Stable Diffusion 使用教程

环境说明&#xff1a; stable diffusion version: v1.5.1python: 3.10.6torch: 2.0.1cu118xformers: N/Agradio: 3.32.0 1. 下载 webui 下载地址&#xff1a; GitHub stable-diffusion-webui 下载 根据自己的情况去下载&#xff1a; 最好是 N 卡&#xff1a;&#xff08;我的…...

在线考试系统springboot学生试卷问答管理java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 在线考试系统springboot 系统有2权限&#xff1a;管理…...

创建vue-cli(脚手架搭建)

目录 功能 需要的环境 使用HbuilderX快速搭建一个vue-cli项目 组件路由 element-ui vue-cli 官方提供的一个脚手架&#xff0c;用于快速生成一个 vue 的项目模板&#xff1b;预先定义 好的目录结构及基础代码&#xff0c;就好比咱们在创建 Maven 项目时可以选择创建一个 骨…...

【单调栈part02】| 503.下一个更大元素||、42.接雨水

&#x1f388;LeetCode503.下一个更大元素|| 链接&#xff1a;503.下一个更大元素|| 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按…...

Java——如何使用Stream替换掉List<Student>中符合要求的元素

使用Stream替换掉List中符合要求的元素 要使用Stream流替换掉List中符合特定条件的元素&#xff0c;您可以使用Stream的map()方法对每个元素进行映射&#xff0c;并使用collect()方法将映射后的元素收集到一个新的List中。 示例代码&#xff1a; import java.util.ArrayList; …...

gin 框架中的 gin.Context

〇、前言 Context 是 gin 中最重要的部分。 例如&#xff0c;它允许我们在中间件之间传递变量、管理流程、验证请求的 JSON 并呈现 JSON 响应。 Context 中封装了原生的 Go HTTP 请求和响应对象&#xff0c;同时还提供了一些方法&#xff0c;用于获取请求和响应的信息、设置响…...

新版chrome浏览器恢复下载的时候恢复底栏提示

近日&#xff0c;谷歌对其Chrome浏览器进行了更新&#xff0c;为所有桌面系统的Chrome浏览器增加了位于地址栏右侧的“下载”气泡&#xff0c;并同时取消了原有的底部下载栏。 谷歌表示&#xff0c;这次更新的目的是为了让用户更方便地与最近下载的文件进行交互。 然而&#x…...

ModuleNotFoundError: No module named ‘lsb_release‘

Ubuntu 重装python版本导致的问题 $ lsb_release -a # 使用命令查看报错详情 Traceback (most recent call last):File "/usr/bin/lsb_release", line 25, in <module> # 这个路径很重要import lsb_release ModuleNotFoundError: No module named lsb_re…...

2021-03-03 Multisim 14.0 电池充电防止反接保护

R2R3当作充电线电阻看,也可设置这2个电阻导线电阻,电阻取值依据充电电流范围确定,由于电池存在电压因此可以用光耦检测,发光二极管当作继电器看,可采用继电器自锁,当下次再次反接的话另一个继电器同样,2个继电器相互控制.本电路可验证极性变化时2路检测的变化,图中S1为模拟电池…...

【AI】《动手学-深度学习-PyTorch版》笔记(八):线性回归

AI学习目录汇总 1、线性模型 线性函数如下: y ^ = w 1 x 1 + . . . + w d x d...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...