Lxn-Chan!

(~ ̄▽ ̄)→))* ̄▽ ̄*)o

在基于 arm 架构的设备上通过 Debian 安装 Proxmox Virtual Environment(PVE)。

一些常规的废话比如PVE介绍什么的就不写了,我还挺烦写这些东西的,既然都找到这来了肯定也不会不知到PVE是啥,又没有人会认真去看。

注意:本文完全是个人笔记,并不是官方或非官方教程,不对任何产品背书或担保,不保证在其他设备上可以正常使用。
操作前应确保完整通读过一遍本文章,且具备基本的Linux、虚拟化、数通等基本知识。

环境介绍

PVE官方并未释出直接在arm架构上可以安装PVE的iso,因此总体思路是先安装Debian,然后在Debian上安装PVE。

服务器硬件参数

  • 型号:华为 Taishan 200 (2280)
  • CPU:Kunpeng 920-4826 *2
  • 内存:256GB (32GB*8)
  • RAID卡:LSI SAS3508
  • 存储:893GB SSD×2(RAID1)+1.6TB HDD×4(RAID5)
  • 网卡:华为TM280 4×25Gb光口 + 华为TM210 4×Gb电口

服务器软件参数

  • 操作系统版本:Debian GNU/Linux 11 (bullseye)
  • 内核版本:5.10.0-30-arm64
  • PVE版本:7.4-16

网络规划

本次仅使用服务器的0号光口和3号光口,0号光口配置为管理口,上联管理交换机,IP地址为172.18.234.206;3号光口为业务口,不配置IP地址,用于OVS桥接,上联业务交换机。

安装Debian

跟着思路走的话第一步当然是安装 Debian ,这一步没什么好说的就配网、划分区、正常安装即可。

我这里用最新版的 Debian 12 Bookworm 会导致无法插入桥接模块,因此使用了 Debian 11 bullseye 版本。
下载地址:Debian CD Images Archive

安装完成后记得换一下源,后面会方便很多。

磁盘分区问题

我这边服务器的话硬盘是分SSD和HDD的,准备系统安装在SSD然后HDD做数据盘,这样的话分区时记得HDD留白不要做分区,保持Free Space即可,后续将在PVE的WebUI里面去操作。

前置准备

启用桥接模块

启用bridge模块

1
modprobe bridge

需要本条命令没有任何报错(没有任何返回),使用如下命令查看是否启用成功:
1
lsmod | grep bridge

正确的返回:
1
2
3
4
root@pve01:~# lsmod | grep bridge
bridge 311296 0
stp 16384 1 bridge
llc 16384 2 bridge,stp

网络配置

这一步可能会导致外部网络连接失效,请提前准备好上机配置。

  1. 禁用NetworkManager服务
    1
    systemctl disable --now NetworkManager
  2. 清空已有配置(全新安装的其实不需要)
    1
    rm /etc/network/interfaces.d/*
  3. 取得现在的接口信息
    在shell下执行ip a查看目前哪些网卡和网卡名就行,提前记一下
  4. 编辑接口配置文件
    1
    nano /etc/network/interfaces
    它默认里面应该是这样的
    1
    2
    3
    4
    5
    6
    7
    8
    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).

    source /etc/network/interfaces.d/*

    # The loopback network interface
    auto lo
    iface lo inet loopback
    在文件末尾添加你的接口,目前只需添加一个(用于访问WebUI的)管理接口即可:
    1
    2
    3
    4
    5
    # 开机自动启动
    auto enp189s0n0
    iface enp189s0n0 inet static
    address 172.18.234.206/24
    gateway 172.18.234.1
  5. 看一下DNS是否正确,如果不正确改一下:
    1
    2
    # Generated by NetworkManager
    nameserver 119.29.29.29
  6. 启动接口配置
    1
    systemctl restart networking
    如果有报错记得回去核对一下/etc/network/interfaces文件!如果有报错且未解决加下来所有步骤都无法进行!
    配完了ip a看一下你配的网卡地址对不对。
    如果这一步报错RTNETLINK answers: File exists则执行(这一步执行过程中一定会断网):
    1
    ip addr flush enp189s0n0
    然后执行systemctl restart networking重启networking服务即可。

检查hosts

打开/etc/hosts,查看指向本机的地址是否正确,基本格式就是[IP] [hostname] [domain],如果你安装的时候设置了domain的话要把domain加上,留空的话就无所谓了。

1
2
3
4
5
6
127.0.0.1	localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

172.18.234.206 pve01

可以通过 ping 一下自己的主机名检查是否有正确设置。也可以通过如下命令查看返回是否是本机IP地址:

1
hostname --ip-address

更新一下证书

1
apt update && apt install -y apt-transport-https ca-certificates --fix-missing && apt update

PVE安装

添加ARM架构PVE源

  1. 安装curl:
    1
    apt install curl -y
    不知道为什么我装的Debian里面甚至连curl都没XD。
  2. 添加镜像源:
    1
    echo "deb https://mirrors.apqa.cn/proxmox/debian/pve bullseye port">/etc/apt/sources.list.d/pveport.list
  3. 添加GPG Key:
    1
    curl -L https://mirrors.apqa.cn/proxmox/debian/pveport.gpg -o /etc/apt/trusted.gpg.d/pveport.gpg
  4. 更新:
    1
    apt update

安装PVE

  1. export一下PATH:
    1
    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  2. 安装必要部件:
    1
    apt update && apt install -y chrony ksmtuned rsyslog ifupdown2
  3. 安装PVE:
    1
    apt install -y proxmox-ve

安装完之后打开https://[IP]:8006即可看到WebUI,用户名和密码就是root和root密码。

PVE内磁盘配置

在WebUI-左侧数据中心-选择自己的物理机节点-磁盘-目录,右侧“创建-目录”,选择空白的硬盘创建即可。

PVE内网络配置

先安装基础包:apt install -y openvswitch-switch

在WebUI-左侧数据中心-选择自己的物理机节点-系统-网络:

  1. 首先找到欲桥接的接口,该接口上不能配置IP地址和网关,然后记下该接口的名称。
  2. 上面点击创建-OVS Bridge,名称自动生成即可,桥接端口填写刚才记下的接口名称,其余如无需求全部留空即可。
  3. 上面点击应用配置即可。

网络配置这一块不应该有任何报错,如果有报错则检查前面的配置是否存在问题。

修改 CT Templates 镜像源

这部分主要是LXC容器使用的镜像,如果用不上可以不改。

具体方法:将 /usr/share/perl5/PVE/APLInfo.pm 文件中默认的源地址 http://download.proxmox.com 替换为

1
http://mirrors4.tuna.tsinghua.edu.cn/proxmox

可以使用如下命令修改:

1
2
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
sed -i 's|http://download.proxmox.com|http://mirrors4.tuna.tsinghua.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm

针对 /usr/share/perl5/PVE/APLInfo.pm 文件的修改,重启后生效


至此PVE的安装配置部分基本就结束了。

PVE虚拟机

创建虚拟机时需要注意:

  • SCSI 控制器需要选择:VirtIO SCSI,不要选带Single的那个
  • BIOS 需要选择:OVMF(UEFI),SeaBios(Legacy)在arm架构上无法启动
  • CPU 类型只能选择host或者max

虚拟机创建后需要删除挂在ide总线上的cdrom,然后重新把cdrom挂在scsi上。arm架构不支持IDE总线

在选项里面把引导顺序改一下,把网络启动取消勾选。

无法启动到 cdrom

安装 CentOS 7 和 ubuntu 18 时无法从 cdrom 启动,原因其实和安全启动有关。

  1. 启动虚拟机时再控制台连续按Esc,进入BIOS
  2. 选择第一个“Device Manager”
  3. 选择第三个“Secure Boot Configuration”
  4. 进入后取消勾选“Attempt Secure Boot”
  5. 按F10和Y保存,然后回到BIOS首页Reset即可。

安装Agent

Qemu 代理是一种在 VM 内部运行的服务,在主机和虚拟机之间提供通信通道。它用于交换信息,并允许主机向虚拟机发出命令。

首先在虚拟机关机状态下到“选项”-“QEMU Guest Agent”,点开之后勾选“使用QEMU Guest Agent”,保存后在客户机内执行如下命令安装Agent:

1
2
3
4
# debian distro
apt install qemu-guest-agent -y
# rhel distro
yum install qemu-guest-agent -y

其中的guest-trim选项在PVE将虚拟机磁盘移动到另一个存储或将VM实时迁移到具有本地存储的另一个节点时向VM发送Trim指令,在精简置备的存储上,这有助于释放未使用的空间。

Debian 12 无法插入 bridge 模块

不清楚为什么,希望大佬帮忙分析一下。有进展会在这里更新。

Debian 12 arm版本中无法执行modprobe bridge。执行后显示:

1
2
root@pve01:~# modprobe bridge
modprobe: ERROR: could not insert 'bridge': Cannot allocate memory

按直接输出是内存不足?也不是,内存完全是足够的:

1
2
3
4
root@pve01:~# cat /proc/meminfo | grep Vmalloc
VmallocTotal: 133143592960 kB
VmallocUsed: 283760 kB
VmallocChunk: 0 kB

参考资料

排名不分先后。

 简单说两句



联系站长 | 服务状态 | 友情链接

备案号:辽ICP备19013963号

萌ICP备 20219421 号

中国互联网违法和不良信息举报中心

架构版本号:8.1.6 | 本站已全面支持IPv6

正在载入运行数据(1/2)请稍后...
正在载入运行数据(2/2)请稍后...

Copyright 2024 LingXuanNing, All rights reserved.