1. 为什么选择Proxmox VE作为虚拟化平台
在开始具体安装步骤之前,有必要先了解为什么Proxmox VE(以下简称PVE)会成为众多技术人员的首选虚拟化解决方案。PVE是一个基于Debian的开源虚拟化平台,它整合了KVM虚拟机和LXC容器技术,提供了完整的虚拟化管理功能。
我最初接触PVE是在2018年,当时公司需要搭建一个内部开发测试环境。相比商业化的VMware方案,PVE最吸引我的几个特点是:
- 完全开源免费:无需支付高昂的许可费用,这对预算有限的中小企业和个人开发者特别友好
- Web管理界面:直观的图形化管理,降低了使用门槛
- 资源占用低:相比其他虚拟化平台,PVE对宿主机的资源消耗更少
- 社区支持强大:活跃的社区和丰富的文档资源
PVE支持多种客户机操作系统安装,其中Ubuntu Server因其稳定性和轻量级特性,成为在PVE上最常部署的Linux发行版之一。特别是在需要运行Web服务、数据库或容器化应用的场景下,Ubuntu Server是绝佳选择。
提示:虽然PVE支持Windows虚拟机,但Linux系统(特别是Ubuntu)在PVE上的性能和资源利用率通常更好,这也是为什么本教程专注于Ubuntu Server的安装。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装前的准备工作
2.1 硬件要求检查
在PVE上安装Ubuntu Server前,请确保你的硬件满足以下最低要求:
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 64位处理器(支持VT-x/AMD-V) | 多核处理器(Intel VT-d/AMD-Vi更佳) |
| 内存 | 2GB(仅PVE) | 8GB+(为虚拟机预留足够资源) |
| 存储 | 32GB | SSD 128GB+ |
| 网络 | 1Gbps网卡 | 多网卡(用于隔离管理流量) |
我的经验是,如果计划运行多个虚拟机,RAM是最容易成为瓶颈的资源。建议为每个Ubuntu Server虚拟机至少分配2GB内存,如果是生产环境,4GB起步会更稳妥。
2.2 PVE宿主机的准备
假设你已经完成了PVE的基础安装(如果还没有,PVE官网有详细的安装指南),我们需要进行以下准备工作:
-
更新PVE系统:
bash复制
apt update && apt upgrade -y这确保你拥有最新的安全补丁和功能更新。
-
检查虚拟化支持:
bash复制egrep -c '(vmx|svm)' /proc/cpuinfo如果输出大于0,说明CPU支持硬件虚拟化。
-
存储配置:
在PVE的Web界面(https://你的PVE服务器IP:8006)中:- 导航到"数据中心"→"存储"
- 确保有足够的空间分配给新虚拟机
- 我通常为Ubuntu Server分配至少20GB的磁盘空间
2.3 Ubuntu Server镜像准备
访问Ubuntu官网下载最新的LTS版本(目前是24.04 LTS):
bash复制wget https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso
然后将ISO上传到PVE存储:
- 在PVE Web界面选择"local (pve)"存储
- 点击"内容"→"上传"
- 选择下载的ISO文件
注意:Ubuntu Server有多个版本可选。对于大多数服务器用途,"live-server"版本是最佳选择,它包含了必要的服务器组件,同时保持轻量。
3. 创建Ubuntu Server虚拟机
3.1 新建虚拟机基础配置
在PVE Web界面中:
-
点击右上角"创建VM"
-
填写基本信息:
- 节点:选择你的PVE主机
- VM ID:自动生成或手动指定(我习惯从100开始编号)
- 名称:如"ubuntu-server-24"
-
操作系统选项卡:
- 选择"使用CD/DVD光盘镜像"
- 存储:选择之前上传ISO的位置
- 镜像:选择ubuntu-24.04-live-server-amd64.iso
- 类型:Linux
- 版本:6.x - 2.6 Kernel(这是最新的Ubuntu LTS内核版本)
-
系统选项卡:
- 显卡:默认
- 机型:q35(支持UEFI)
- BIOS:OVMF (UEFI)(这是现代系统的推荐选择)
- 勾选"Qemu代理"(便于后续管理)
3.2 硬件资源配置
-
CPU设置:
- 核心数:根据需求(开发环境2-4核足够)
- 类型:host(最佳性能)
- 勾选"NUMA"(多CPU系统更高效)
-
内存分配:
- 内存:2048(最小)
- Ballooning设备:启用(允许动态调整内存)
-
磁盘配置:
- 存储:选择有足够空间的存储
- 磁盘大小:建议20GB起步
- 缓存:Write back(性能最佳,但需确保有UPS)
- 格式:qcow2(支持快照和动态扩容)
-
网络设置:
- 模型:VirtIO (paravirtualized)(最佳性能)
- 桥接:选择你的物理网桥(通常是vmbr0)
- VLAN标签:如有需要可设置
3.3 确认并创建
检查所有设置后,点击"完成"。此时PVE会创建虚拟机但不会立即启动。我建议在启动前再做两个优化:
-
启用CPU限制(防止单个VM占用所有资源):
bash复制qm set <VMID> --cpulimit 0.8 -
调整启动顺序:
- 在硬件选项卡中双击"CD/DVD驱动器"
- 勾选"启动时连接"
- 在"选项"选项卡中设置启动顺序:CD/DVD优先
4. 安装Ubuntu Server系统
4.1 启动并进入安装界面
- 在PVE界面选择虚拟机,点击"启动"
- 点击"控制台"打开VNC连接
你将看到Ubuntu Server的安装界面。选择"Install Ubuntu Server"开始安装。
4.2 语言和键盘设置
- 语言选择:English(建议保持英文,减少后续配置问题)
- 键盘布局:根据实际选择(通常US English)
4.3 网络配置
安装程序会自动检测网络连接。建议:
-
为服务器设置静态IP(生产环境必须):
- 取消"自动配置IPv4"
- 输入IP地址、子网掩码、网关和DNS
- 例如:
- IP: 192.168.1.100/24
- Gateway: 192.168.1.1
- DNS: 8.8.8.8
-
主机名:设置一个有意义的名称,如"prod-db01"
提示:如果在PVE中使用NAT网络,需要特别注意端口转发设置。桥接模式是最简单的选择。
4.4 存储配置
- 选择"Use an entire disk"(除非有特殊分区需求)
- 选择你在PVE中分配的磁盘(通常显示为VirtIO Block Device)
- 分区方案:
- 简单配置:选择"Set up this disk as an LVM group"
- 高级配置:可以手动创建/boot、/、swap等分区
我的经验是,对于大多数用途,LVM方案足够好,它允许以后灵活调整分区大小。
4.5 用户设置
- 输入全名(如"Admin User")
- 服务器名称(与之前设置的主机名一致)
- 用户名(如"admin")
- 设置强密码
- 是否导入SSH密钥:如果有现成的公钥可以导入
重要安全提示:务必启用SSH访问并禁用root密码登录。可以在安装时勾选"Install OpenSSH server",然后在安装完成后编辑/etc/ssh/sshd_config设置"PermitRootLogin no"。
4.6 软件包选择
Ubuntu Server提供了一些常见服务器角色的预配置:
- [ ] Docker(容器运行时)
- [X] OpenSSH server(必须)
- [ ] LAMP stack(Web服务器)
- [ ] PostgreSQL(数据库)
- [ ] 其他根据需求选择
我通常只选OpenSSH server,其他软件可以在系统安装后按需安装,保持系统精简。
4.7 完成安装
确认所有设置后,开始安装过程。这通常需要5-15分钟,取决于你的磁盘速度。
安装完成后,系统会提示移除安装介质并重启。在PVE中:
- 关闭虚拟机
- 在硬件选项卡中,右键CD/DVD驱动器→"断开连接"
- 重新启动虚拟机
5. 安装后的基本配置
5.1 首次登录和系统更新
-
使用你创建的用户名和密码登录
-
立即更新系统:
bash复制sudo apt update && sudo apt upgrade -y sudo apt autoremove -y -
安装常用工具:
bash复制sudo apt install -y curl wget net-tools htop tmux
5.2 优化SSH配置
编辑SSH配置文件提高安全性:
bash复制sudo nano /etc/ssh/sshd_config
建议修改以下参数:
code复制Port 2222 # 更改默认端口
PermitRootLogin no
PasswordAuthentication no # 仅允许密钥登录
AllowUsers yourusername
然后重启SSH服务:
bash复制sudo systemctl restart sshd
注意:在禁用密码认证前,请确保你的SSH公钥已经正确添加到~/.ssh/authorized_keys中,否则可能被锁在系统外。
5.3 安装Qemu Guest Agent
为了更好的PVE集成,安装Qemu Guest Agent:
bash复制sudo apt install -y qemu-guest-agent
sudo systemctl start qemu-guest-agent
sudo systemctl enable qemu-guest-agent
然后在PVE界面中:
- 关闭虚拟机
- 在"选项"选项卡中,双击"Qemu Guest Agent"
- 启用它
- 启动虚拟机
这样你就可以在PVE界面中看到虚拟机的IP地址、资源使用情况等信息。
5.4 配置防火墙
Ubuntu Server默认使用ufw防火墙,基本配置:
bash复制sudo ufw allow 2222/tcp # 你设置的SSH端口
sudo ufw enable
检查状态:
bash复制sudo ufw status verbose
6. 高级配置与优化
6.1 磁盘性能优化
对于IO密集型应用,可以优化磁盘调度器:
bash复制echo 'ACTION=="add|change", KERNEL=="vd*", ATTR{queue/scheduler}="mq-deadline"' | sudo tee /etc/udev/rules.d/60-scheduler.rules
然后重新加载udev规则:
bash复制sudo udevadm control --reload-rules
sudo udevadm trigger
验证更改:
bash复制cat /sys/block/vda/queue/scheduler
6.2 内存管理优化
调整swappiness(减少交换分区使用):
bash复制echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
6.3 网络性能优化
对于高流量服务器,调整网络参数:
bash复制sudo nano /etc/sysctl.conf
添加以下内容:
code复制net.core.rmem_max=4194304
net.core.wmem_max=4194304
net.ipv4.tcp_rmem=4096 87380 4194304
net.ipv4.tcp_wmem=4096 65536 4194304
应用更改:
bash复制sudo sysctl -p
6.4 定期维护设置
设置自动安全更新:
bash复制sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
配置日志轮转:
bash复制sudo nano /etc/logrotate.conf
7. 常见问题与解决方案
7.1 安装过程中无法检测到磁盘
如果Ubuntu安装程序无法识别PVE虚拟磁盘,通常是因为没有使用VirtIO驱动。解决方法:
- 关闭虚拟机
- 在PVE中,将磁盘控制器类型改为SCSI或SATA
- 重新启动安装过程
7.2 网络连接问题
如果虚拟机无法获取IP地址:
-
检查PVE网络配置:
bash复制cat /etc/network/interfaces -
确保vmbr0桥接正确:
bash复制
ip a show vmbr0 -
在虚拟机配置中尝试不同的网络模型(e1000兼容性更好)
7.3 性能问题排查
如果虚拟机运行缓慢:
-
检查PVE主机负载:
bash复制
top -
在虚拟机中安装并运行htop:
bash复制sudo apt install -y htop htop -
检查磁盘IO:
bash复制sudo apt install -y iotop sudo iotop -o
7.4 快照与备份
PVE提供了强大的快照和备份功能:
-
创建快照:
- 在PVE界面中选择虚拟机
- 点击"快照"→"创建"
- 输入名称和描述
-
设置定期备份:
- 导航到"数据中心"→"备份"
- 点击"添加"创建备份计划
- 设置存储位置、时间表和保留策略
我的经验是,对于重要系统,至少保留7天内的每日备份和4周内的每周备份。
8. 实际应用场景扩展
8.1 部署Web服务器
安装Nginx:
bash复制sudo apt install -y nginx
sudo systemctl enable --now nginx
配置防火墙:
bash复制sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
8.2 搭建数据库服务器
安装PostgreSQL:
bash复制sudo apt install -y postgresql postgresql-contrib
sudo systemctl enable --now postgresql
基本安全配置:
bash复制sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'strongpassword';"
8.3 容器化部署
安装Docker:
bash复制sudo apt install -y docker.io
sudo systemctl enable --now docker
将用户加入docker组:
bash复制sudo usermod -aG docker $USER
8.4 自动化运维配置
安装Ansible控制节点:
bash复制sudo apt install -y ansible
创建基础inventory文件:
bash复制mkdir -p ~/ansible/inventory
echo "[servers]" > ~/ansible/inventory/hosts
echo "your_server_ip" >> ~/ansible/inventory/hosts
测试连接:
bash复制ansible all -i ~/ansible/inventory/hosts -m ping -u yourusername
经过这些步骤,你现在应该已经在PVE上成功部署了一个功能完善、性能优化的Ubuntu Server系统。根据你的具体需求,可以进一步定制和扩展系统功能。PVE+Ubuntu Server的组合为各种服务器应用场景提供了稳定可靠的基础平台。
