服务器虚拟化安装 Proxmox VE(PVE)

44次阅读
没有评论

一、先确认环境要求

1. 云服务器必须开启 嵌套虚拟化(Nested Virtualization),否则无法创建虚拟机。

  • 不同云厂商操作不同,一般在控制台“实例设置/硬件配置”里开启。
  • 检查是否开启:
  • cat /sys/module/kvm_intel/parameters/nested
    s# 或 AMD 平台:
    cat /sys/module/kvm_amd/parameters/nested
  • 输出为  Y  或  1  表示已开启。
  • 2. 确保系统是 纯净的 Debian 11 (Bullseye),没有安装过其他虚拟化软件。 二、安装步骤
  1. 配置主机名和 hosts

1. 查看当前主机名:hostname
2. 编辑  /etc/hosts ,确保格式为:

127.0.0.1 localhost
你的公网IP 你的主机名.yourdomain 你的主机名
::1 localhost ip6-localhost ip6-loopback

小步骤1. 在终端输入以下命令,用  nano  编辑器打开文件:
nano /etc/hosts

服务器虚拟化安装 Proxmox VE(PVE)

改完之后,

服务器虚拟化安装 Proxmox VE(PVE)

正确修改步骤
1
1. 先获取你的公网 IP
在终端输入:curl -4 ip.sb

记下输出的公网 IP,比如  203.0.113.10 。

2. 修改  /etc/hosts 
在 nano 编辑器里,把那一行改成:
你的公网IP ser50063816733245.local ser50063816733245

例如

203.0.113.10 ser50063816733245.local ser50063816733245

3. 保存并退出

  • 按  Ctrl+O  → 回车确认保存
  • 按  Ctrl+X  退出 nano

4. 验证修改
执行:hostname --ip-address

应该输出你刚才填写的公网 IP,而不是  127.0.0.1
————————————————————

你需要在文件末尾添加一行,格式为: 你的公网IP 你的主机名.域名 你的主机名 。
例如,如果你的公网IP是  1.2.3.4 ,主机名是  pve-node ,就添加:

1.2.3.4 pve-node.example.com pve-node

  1. 编辑  /etc/apt/sources.list.d/pve-install-repo.list  文件

这个文件用来添加Proxmox的软件源。

1. 在终端输入以下命令,创建并打开文件
nano /etc/apt/sources.list.d/pve-install-repo.list
2. 在打开的空文件中,粘贴以下内容(针对Debian 11 Bullseye):
deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription

嗯,然后接下来就是导入公钥。

  1. 先导入缺失的 GPG 公钥

在终端执行这两条命令,下载并安装 Proxmox 官方密钥:

wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg

chmod 644 /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg

  1. 检查并修正软件源(一定要修正。)

确保你的  /etc/apt/sources.list.d/pve-install-repo.list  文件内容是正确的(针对 Debian 11 Bullseye):
cat /etc/apt/sources.list.d/pve-install-repo.list

如果内容不对,用 nano 重新编辑:
nano /etc/apt/sources.list.d/pve-install-repo.list

写入:
deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription

保存退出( Ctrl+O  → 回车 →  Ctrl+X )。

  1. 再次尝试更新
    ( 不用尝试了,绝对有问题。)

apt update

如果这次没有 GPG 错误,就可以继续安装 PVE 了:
apt install proxmox-ve postfix open-iscsi -y

如果还有问题

如果  apt update  仍然报错,可能是云服务器自带的源有问题,可以先备份并替换默认的 Debian 源:

mv /etc/apt/sources.list /etc/apt/sources.list.bak
nano /etc/apt/sources.list

写入国内 Debian 11 源(如阿里云):

deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb http://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main
deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

保存后再执行  apt update 。

服务器虚拟化安装 Proxmox VE(PVE)

精确表复制粘贴上去的是这种格式。
如果在终端中复制进去不是这种格式,请将文本下载下来。在本地编辑,然后再上传上去。就是图片中这种格式了

保存后再执行  apt update

然后注释掉两个仓库。

  1. 编辑源文件,注释掉 backports
  2. 找到这两行:
    deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
    deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib 在前面加上  #  注释掉,变成: deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

服务器虚拟化安装 Proxmox VE(PVE)

保存退出: Ctrl+O  → 回车 →  Ctrl+X

  1. 再次更新源apt update

这次应该就不会再报  bullseye-backports  的 404 错误了。

  1. 继续安装 PVE

如果  apt update  顺利,就可以继续执行安装命令:
apt install proxmox-ve postfix open-iscsi -y

安装完成之后,
在终端输入。pveversion
提示出现版本号,就是安装好了。

输入这个指令

echo -e "\n✅ Proxmox VE 登录信息:\n" && \
IP=$(hostname -I | awk '{print $1}') && \
PORT=$(grep -oP '^\s*listen\s+\K\d+' /etc/pveproxy.cfg 2>/dev/null || echo "8006") && \
echo "管理地址:https://$IP:$PORT" && \
echo -e "\n💡 如果是云服务器,请使用公网 IP 访问,端口默认 8006。\n"

就可以看端口号和地址是多少?

如果IP地址显示内网地址。那就将
服务器虚拟化安装 Proxmox VE(PVE)

呃,图中所圈的地方改成服务器公网IP即可

从你的日志来看,这次连接断开的核心原因是系统在升级过程中移除了  ifupdown  包,而  cloud-init  又依赖它,导致网络管理组件被破坏,最终让你的远程连接(SSH)中断了。

🔍 具体原因分析

1. 依赖冲突导致网络组件被移除
日志中明确提示:
plaintext

dpkg: ifupdown: dependency problems, but removing anyway as you requested:
cloud-init depends on ifupdown.
 

 ifupdown  是 Debian/Ubuntu 系统中管理网络接口的核心工具, cloud-init (云初始化工具)依赖它。当系统升级时, ifupdown  被意外移除,直接导致网络服务中断,你的远程连接也就断开了。
2. 网络服务重启或中断
在升级  perl-base  等关键系统包时,系统可能会重启相关服务。如果你的网络管理服务(如  networking 、 NetworkManager )在这个过程中被重启或配置被破坏,就会导致连接断开。
3. 远程连接的特性
你是通过远程终端(如 SSH)连接到服务器的。一旦服务器端的网络配置或服务出现问题,客户端的连接就会立即中断,表现为“连接断开”。

🛠️ 解决步骤

1. 重新连接服务器
尝试重新通过 SSH 或控制台连接到服务器。如果是云服务器,可以使用云厂商提供的 VNC 控制台直接登录,绕过网络问题。
2. 修复依赖关系
登录后,执行以下命令修复损坏的依赖:
bash

sudo apt --fix-broken install
 

如果  ifupdown  被移除了,重新安装它:
bash

sudo apt install ifupdown
 
3. 恢复网络配置
检查并恢复网络接口配置:
bash

sudo systemctl restart networking
 

或者使用  NetworkManager :
bash

sudo systemctl restart NetworkManager
 
4. 完成升级
网络恢复后,继续完成未完成的升级:
bash

sudo apt upgrade
 
5. 预防措施
为了避免下次升级时再次破坏网络,可以锁定  ifupdown  包,防止它被意外移除:
bash

sudo apt-mark hold ifupdown
 

💡 关键提示

  • 下次在执行系统升级前,尤其是在远程服务器上,优先锁定网络相关的核心包(如  ifupdown 、 network-manager ),可以有效避免因依赖问题导致的网络中断。
  • 如果服务器是云主机,强烈建议使用云厂商的控制台(VNC)作为备用登录方式,以防 SSH 连接断开后无法操作。

要不要我帮你整理一份服务器升级前的安全检查清单,包含锁定关键包、备份配置、使用控制台登录等步骤,避免下次再遇到类似问题?从你的日志来看,这次连接断开的核心原因是系统在升级过程中移除了  ifupdown  包,而  cloud-init  又依赖它,导致网络管理组件被破坏,最终让你的远程连接(SSH)中断了。

🔍 具体原因分析

1. 依赖冲突导致网络组件被移除
日志中明确提示:
plaintext

dpkg: ifupdown: dependency problems, but removing anyway as you requested:
cloud-init depends on ifupdown.
 

 ifupdown  是 Debian/Ubuntu 系统中管理网络接口的核心工具, cloud-init (云初始化工具)依赖它。当系统升级时, ifupdown  被意外移除,直接导致网络服务中断,你的远程连接也就断开了。
2. 网络服务重启或中断
在升级  perl-base  等关键系统包时,系统可能会重启相关服务。如果你的网络管理服务(如  networking 、 NetworkManager )在这个过程中被重启或配置被破坏,就会导致连接断开。
3. 远程连接的特性
你是通过远程终端(如 SSH)连接到服务器的。一旦服务器端的网络配置或服务出现问题,客户端的连接就会立即中断,表现为“连接断开”。

🛠️ 解决步骤

1. 重新连接服务器
尝试重新通过 SSH 或控制台连接到服务器。如果是云服务器,可以使用云厂商提供的 VNC 控制台直接登录,绕过网络问题。
2. 修复依赖关系
登录后,执行以下命令修复损坏的依赖:
bash

sudo apt –fix-broken install
 

如果  ifupdown  被移除了,重新安装它:
bash

sudo apt install ifupdown
 
3. 恢复网络配置
检查并恢复网络接口配置:
bash

sudo systemctl restart networking
 

或者使用  NetworkManager :
bash

sudo systemctl restart NetworkManager
 
4. 完成升级
网络恢复后,继续完成未完成的升级:
bash

sudo apt upgrade
 
5. 预防措施
为了避免下次升级时再次破坏网络,可以锁定  ifupdown  包,防止它被意外移除:
bash

sudo apt-mark hold ifupdown
 

正文完
 0
评论(没有评论)