环境说明
不改动、已经调好的 IOMMU、
vendor‑reset、libvirt、qemu单 RX580 显卡、无核显,全程 SSH 操作
Web 端口:
9869,浏览器访问http://你的IP:9869
添加官方源
sudo wget -q -O- https://downloads.opennebula.io/repo/repo.key | sudo gpg --dearmor -o /usr/share/keyrings/opennebula.gpg
报错
sudo echo "deb [signed-by=/usr/share/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/7.4/Ubuntu/24.04 stable opennebula" | sudo tee /etc/apt/sources.list.d/opennebula.list
deb [signed-by=/usr/share/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/7.4/Ubuntu/24.04 stable opennebula
shitou@shitou-To-be-filled-by-O-E-M:~$
直接
sudo gpg --keyserver keyserver.ubuntu.com --recv-keys 05A05927906DC27C
sudo gpg --export 05A05927906DC27C | sudo tee /usr/share/keyrings/opennebula.gpg > /dev/null
下面确认源文件输出正确,
sudo gpg --export 05A05927906DC27C | sudo tee /usr/share/keyrings/opennebula.gpg > /dev/null
shitou@shitou-To-be-filled-by-O-E-M:~$ cat /etc/apt/sources.list.d/opennebula.list
deb [signed-by=/usr/share/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/7.4/Ubuntu/24.04 stable opennebula
然后更新apt
shitou@shitou-To-be-filled-by-O-E-M:~$ sudo apt update
如果还是报错
# 如果 keyserver 网络抽风(上面还报错),备用方案
>
> wget 下载 key,直接生成 `opennebula.gpg`,不走 keyserver
```
sudo rm -f /usr/share/keyrings/opennebula.gpg
sudo wget -q https://downloads.opennebula.io/repo/repo.key -O /tmp/opennebula.key
sudo gpg --dearmor /tmp/opennebula.key
sudo mv /tmp/opennebula.key.gpg /usr/share/keyrings/opennebula.gpg
sudo rm /tmp/opennebula.key
sudo apt update
```安装ALL- in-one 命令
sudo apt install opennebula opennebula-fireedge opennebula-gate opennebula-flow opennebula-node-kvm -y
表格
启动并设置开机自启,
shitou@shitou-To-be-filled-by-O-E-M:~$ sudo systemctl enable --now opennebula opennebula-fireedge opennebula-gate opennebula-flow
[sudo] shitou 的密码:
Created symlink /etc/systemd/system/multi-user.target.wants/opennebula.service → /usr/lib/systemd/system/opennebula.service.
Created symlink /etc/systemd/system/multi-user.target.wants/opennebula-fireedge.service → /usr/lib/systemd/system/opennebula-fireedge.service.
Created symlink /etc/systemd/system/multi-user.target.wants/opennebula-gate.service → /usr/lib/systemd/system/opennebula-gate.service.
Created symlink /etc/systemd/system/multi-user.target.wants/opennebula-flow.service → /usr/lib/systemd/system/opennebula-flow.service.
查看状态,
shitou@shitou-To-be-filled-by-O-E-M:~$ sudo systemctl status opennebula
● opennebula.service - OpenNebula Cloud Controller Daemon
Loaded: loaded (/usr/lib/systemd/system/opennebula.service; enabled; prese>
Active: active (running) since Thu 2026-09-10 09:49:46 CST; 19s ago
Process: 13235 ExecStartPre=/usr/share/one/pre_cleanup (code=exited, status>
Main PID: 13236 (oned)
Tasks: 97 (limit: 16884)
Memory: 348.9M (peak: 435.9M)
CPU: 5.041s
CGroup: /system.slice/opennebula.service
├─13236 /usr/bin/oned -f
├─13239 ruby /usr/lib/one/mads/one_hm.rb -p 2101 -l 2102 -b 127.0.>
├─13263 ruby /usr/lib/one/mads/one_vmm_exec.rb -t 15 -r 0 kvm -p
├─13280 ruby /usr/lib/one/mads/one_vmm_exec.rb -t 15 -r 0 lxc
├─13297 ruby /usr/lib/one/mads/one_vmm_exec.rb -t 15 -r 0 kvm
├─13316 ruby /usr/lib/one/mads/one_tm.rb -t 15 -d dummy,lvm,shared>
├─13339 ruby /usr/lib/one/mads/one_auth_mad.rb --authn ssh,x509,ld>
├─13354 ruby /usr/lib/one/mads/one_datastore.rb -t 15 -d dummy,fs,>
├─13371 ruby /usr/lib/one/mads/one_market.rb -t 15 -m http,s3,one,>
├─13388 ruby /usr/lib/one/mads/one_ipam.rb -t 1 -i dummy,aws,equin>
├─13402 ruby /usr/lib/one/mads/one_sched.rb -t 15 -p rank -o one_d>
├─13417 /usr/lib/one/mads/onemonitord "-c monitord.conf"
├─13418 ruby /usr/lib/one/mads/one_im_exec.rb -r 3 -t 15 -w 90 kvm
├─13431 ruby /usr/lib/one/mads/one_im_exec.rb -r 3 -t 15 -w 90 lxc
└─13444 ruby /usr/lib/one/mads/one_im_exec.rb -r 3 -t 15 -w 90 qemu
9月 10 09:49:39 shitou-To-be-filled-by-O-E-M systemd[1]: Starting opennebula.se>
9月 10 09:49:46 shitou-To-be-filled-by-O-E-M systemd[1]: Started opennebula.ser>
shitou@shitou-To-be-filled-by-O-E-M:~$
shitou@shitou-To-be-filled-by-O-E-M:~$ ```
查看初始密码,
sudo cat /var/lib/one/.one/one_auth
oneadmin:otJomjiupev0
shitou@shitou-To-be-filled-by-O-E-M:~$
如果 ufw 防火墙开着,放行端口:
# 切换到oneadmin用户,生成密钥
sudo su - oneadmin
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 测试免密ssh连本机hostname
ssh $(hostname)
shitou@shitou-To-be-filled-by-O-E-M:~$
sudo cat /var/lib/one/.one/one_auth
oneadmin:otJomjiupev0
shitou@shitou-To-be-filled-by-O-E-M:~$ sudo ufw allow 9869/tcp
防火墙规则已更新
规则已更新(v6)
端口错误,新版端口 是2616
3. 校验 KVM 计算节点环境(重点,你之前 libvirt 环境)
# 检查虚拟化
grep -E 'vmx|svm' /proc/cpuinfo
# 检查libvirt
sudo systemctl status libvirtd
sudo virsh net-list --all注意:OpenNebula 会接管 libvirt,你之前的
defaultNAT 网络可以保留,后面在 OpenNebula 里新建虚拟网络。
4. 把本机添加为 OpenNebula 计算主机(All-in-one 必须做)
登录
http://IP:9869Sunstone 面板左侧菜单【主机】→【添加主机】
主机名填本机 hostname,驱动选 KVM
勾选自动探测,提交
提交后看状态,如果是绿色
ON代表计算节点正常就绪;红色就是 KVM/libvirt 权限问题。
5. 存储规划(对应你机器:sda 系统盘,sdb 465G 裸盘)
OpenNebula 自带本地存储:默认放在
/var/lib/one/datastores(sda)空闲盘
/dev/sdb:可以新建块存储数据存储,给虚拟机做数据盘,不要放系统镜像,避免占满 sda
面板【存储】→【数据存储】新建,类型选块 / 文件
6. 网络规划(复用你 libvirt default NAT)
两种选择:
NAT 模式(最简单,和 virsh default 一样,虚拟机上网)
桥接模式(虚拟机直接局域网 IP,适合后面 Windows 虚拟机)
7. 和你之前单显卡直通的关联
OpenNebula 底层还是调用 libvirt+QEMU,单显卡 VFIO 直通的配置,在 OpenNebula 的虚拟机模板里同样可以添加 PCI 透传设备,不需要重新写 xml,只是在云平台层面管理。
OpenNebula 7.4 All‑in‑One 手动部署(Ubuntu,现有 KVM/libvirt 环境,SSH 无头)
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法