从零搭建 PVE:一站式解决虚拟机和多系统兼容性测试需求 Linux系统 运维技术

admin 2025-06-08 23

不知道大家日常工作中有没有遇到过这样的场景:需要在不同系统间测试软件工具的兼容性,或者验证某些问题。以宝塔面板为例,除了要兼容主流常规发行版,还需适配腾讯云、阿里云等厂商自研系统。以往的做法是,在云厂商开一台按量或竞价机器进行测试,结束后再销毁。但这既麻烦,成本也不低。

最近在搭建 ALLinSSL 玩玩,需要跨 Windows、macOS、Linux 等多个系统平台测试。如果依赖云厂商,会十分繁琐。正好那天想到自己还有闲置的主机,于是说干就干,直接动手搭建自己的 PVE 虚拟机环境。以下是踩坑实录。(其实公司有测试服务器可用,但上面据说“神仙打架”,不如自建来得方便。)

Proxmox Virtual Environment 是一款基于QEMU/KVM与LXC技术的开源服务器虚拟化管理解决方案,在开始搭建之前,你需要先准备一个小主机/服务器/不用的电脑以及U盘,以下是踩坑实录:

1. 首先我们需要前往PVE官网下载镜像:https://www.proxmox.com/en/downloads,笔者下载的是最新的8.4版本。


2. 除此之外还需要一款U盘烧录工具,将镜像烧录在U盘上,大家可以根据使用习惯自行寻找,笔者这里采用的是BalenaEtcher,可以自行前往Github下载,很简单的三步,选择刚刚下载的镜像,选择U盘,直接烧录即可。

地址:https://github.com/balena-io/etcher/releases/tag/v2.1.2


3. 烧录完成后,把U盘插到需要安装PVE的机器上,开机,按快捷键进入启动菜单(快捷键需要大家根据主板厂商自己查一下),选择U盘启动。


4. 启动后如果顺利的话会进入PVE的安装界面,我们直接回车,选择第一个,图形模式安装。


5. 等待加载启动。


6. 等待进入安装引导界面后,会先让你阅读用户协议,如果没问题的话点击屏幕右下角的“I Agree"同意并进入下一步(之前看教程同意协议的按钮在屏幕中间,结果到了右下角,一时之间居然没找到)。


7. 选择需要安装PVE的硬盘,我这里只有一块硬盘,所以我直接下一步了。


8. 选择国家、时区和语言,在这一步是选择不了简体中文的,所以语言那里可以忽略先。


9. 接下来需要root密码,记住了,后面登陆网页和SSH都需要用到。


10. 配置网络接口、主机名、IP、网关以及DNS,注意如果要改IP千万不要和内网已有IP重复,建议用arp扫一下子先。(我这里就犯了这个错误,结果后面PVE主机失联了)


11. 随后确认信息,如果没有问题的话右下角点击“Install"。


12. 等待安装成功,自动重启进入PVE,进入后会显示网页管理地址。(其实还有个安装成功的页面了,但是闪的太快了,没来得及截图)


13. 浏览器输入管理地址进入管理界面,会提示证书不受信任,点击高级直接忽略继续即可。


14. 默认用户名root,密码就是你刚刚设置的,这里可以切换语言为简体中文,然后登录。


15. 到此来讲应该是可以直接用了的,但如果你想更新系统和组件的话,还需要修改一下镜像源,编辑/etc/apt/sources.list,替换为如下内容。

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware

# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware

# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware

# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware

# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

# deb-src https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

# 笔者这里网络连接官方源速度正常,所以用的官方源没有用清华源
# deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve bookworm pve-no-subscription
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription


替换完成后执行以下命令更新,不过平时建议大家能跑还是尽量不要动。

apt update
apt upgrade -y
# 涉及内核更新的话需要重启
reboot


到此安装的步骤已经完成了,随后就可以开始使用了,前期笔者采用的办法是使用ISO镜像创建虚拟机并安装,但是这样效率不高,而且不适合快速开虚拟机的场景,所以转而采取通过Cloud Image创建模板的方式,如果你需要通过ISO方式的安装只需要把ISO导入到此处,然后正常按流程引导创建虚拟机即可。


笔者接下来将介绍另外一种方式,通过各种发行版提供的云镜像创建虚拟机模板,然后克隆的方式开机,以Debian为例,首先我们需要前往其官网下载已经构建好的云镜像,如果大家自己找的话可以搜索Debian(替换成你需要的发行版名称) Cloud Image,笔者按习惯下载的此镜像,实际使用中大家根据自己的需要来。


我们可以直接SSH登陆PVE使用wget命令下载,也可以下载完通过SFTP/FTP的方式上传到虚拟机中,下载或上传完之后,我们依次执行以下命令:

1. 创建虚拟机

qm create 201 --name Debian-12-template --net0 virtio,bridge=vmbr0 --ostype l26 --memory 1024 --cpu host


201: 虚拟机ID,可以自行替换

Debian-12-template:模板名称,可以自行替换。

其他参数可以参照https://emchaye.cn/docs/tutorial-linux/20240229-03/或官方文档。

2. 导入镜像

qm importdisk 201 debian-12-genericcloud-amd64.qcow2 local-lvm -format qcow2


debian-12-genericcloud-amd64.qcow2:替换为你实际下载的镜像文件名称

local-lvm:需要替换为实际的存储节点名称,后续相关均需要替换


3. 挂载导入的磁盘到控制器

qm set 201 --scsihw virtio-scsi-single --scsi0 local-lvm:vm-201-disk-0


4. 配置cloud-init驱动器,通过cloud-init控制用户密码以及网络。

qm set 201 --ide2 local-lvm:cloudinit


5. 设置引导磁盘

qm set 201 --boot order=scsi0


6. 启用QEMU Guest Agent

qm set 201 --agent enabled=1


7. 添加串口显示控制台

qm set 201 --serial0 socket  --vga serial0


8. 将虚拟机转化成模板

qm template 201


到此一个模板就创建完成了,我们还需要去控制面板配置一些东西,首先硬件界面大家可以自己改一下磁盘大小,默认3g的磁盘可能不怎么够用。


接下来就是配置cloud-init一些数据,主要修改用户、密码以及IP配置,此外还需要注意,debian等发行版默认禁用了root的密码登陆,所以可能需要添加SSH公钥


此外如果你需要虚拟机随着机器开机启动的话,点击选项,把开机自启动改为是


到此配置就已经基本完成了,这个时候我们就可以开始克隆了,点击更多-克隆


配置名称VM ID等,模式建议选择完整克隆,否则可能会影响磁盘性能

找到克隆完的虚拟机,点击启动


等待机器自动初始化,初始化完成后可以在此直接登陆


输入在cloud-init设置的用户名和密码即可直接登陆


后续如果需要修改密码或者SSH公钥可以在cloud-init设置页面修改,注意修改后需要重启虚拟机,至此本篇教程就结束啦

最新回复 (0)
全部楼主
    • MSDN,我告诉你(中文站)
      2
        登录 注册 获取赞助码
返回