其实这编文章应该早写的,但一直就这样放着,今天因为需要在新的服务器上安装Proxmox VE,所以就把以前安装过程的记忆,和现在的实践总结出来,也给大家有个参考,少走些弯路。最早安装Proxmox VE是在IKOULA的12欧特价机上安装的,现在就拿EUSerV家来试装。
一、安装前的准备工作
1、根据原来的安装的经验,需要提醒大家的是在安装前最好先修改SSH的端口,因为这些操作在安装完成后修改,会导致登录Proxmox时验证错误而无法登陆的问题,比较折腾。
2、将当前系统更新到最新,可通过:
|
apt-get update & apt-get dist-upgrade |
更新后要重新启动一次。
3、检查“/etc/hosts”
在这官方的示例中,192.168.6.177是服务器的IP地址,你要根据你的实际情况改为公网地址或内部网络地址,比如你的公网地址是192.168.6.177,你要确保hosts文件中要有实际的地址,一般服务器安装好后都有相应的IP和主机名,当然如果没有就要按实际添加,因为有些机器在机房那装好后可能只有127.0.0.1这段。
root@proxmox-6-177:~# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.6.177 proxmox-6-177.proxmox.com proxmox-6-177 pvelocalhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
二、开始安装
1、添加Proxmox VE的源
(1)如果是Debian 7,需要添加一下源。官方有pve、pve-no-subscription和pvetest三种源,pve是正式稳定版,但版本教老;pvetest是测试源,问题多些;pve-no-subscription比测试源稳定,比pve源相对来说要新些。官方不建议pve-no-subscription用于生产平台,但个人用感觉不错,在这里我使用了pve-no-subscription的源,你可以根据你是需要做修改。
|
nano /etc/apt/sources.list |
然后源配置文件中添加以下源:
|
# PVE repository provided by proxmox.com, only for installation (this repo will stay on 3.1) deb http://download.proxmox.com/debian wheezy pve-no-subscription |
或者更直接点输入以下命令即可:
|
echo "deb http://download.proxmox.com/debian wheezy pve-no-subscription" >> /etc/apt/sources.list |
(2)如果你的系统是Debian 8,需要添加Jessie的源。
|
echo "deb http://download.proxmox.com/debian jessie pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list |
(3)如果你的系统是Debian 9,需要添加Stretch的源。
|
echo "deb http://download.proxmox.com/debian/pve stretch pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list |
(4)如果你的系统是Debian 10,需要添加Buster的源。
|
echo "deb http://download.proxmox.com/debian/pve buster pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list |
(5)如果你的系统是Debian 11,需要添加Bullseye的源。
|
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list |
(6)如果你的系统是Debian 12,需要添加Bookworm的源。
|
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list |
2、添加Proxmox VE源的KEY
Debian 7、8:
|
wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add - |
Debian 9(该系统下最低要求安装 Proxmox 5):
|
wget http://download.proxmox.com/debian/proxmox-ve-release-5.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-5.x.gpg |
Debian 10(该系统下最低要求安装 Proxmox 6):
|
wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg chmod +r /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg # 可选,如果你有一个非默认的umask |
Debian 11(该系统下最低要求安装 Proxmox 7):
|
wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg # verify sha512sum /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg 7fb03ec8a1675723d2853b84aa4fdb49a46a3bb72b9951361488bfd19b29aab0a789a4f8c7406e71a69aabbc727c936d3549731c4659ffa1a08f44db8fdcebfa /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg |
Debian 12(该系统下最低要求安装 Proxmox 8):
|
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg # verify sha512sum /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg 7da6fe34168adc6e479327ba517796d4702fa2f8b4f0a9833f5ea6e6b48f6507a6da403a274fe201595edc86a84463d50383d07f64bdde2e3658108db7d6dc87 /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg |
3、更新源和系统
|
apt-get update && apt-get dist-upgrade |
4、安装Proxmox VE
(1)Debian 9、10、11和12 安装方法:
如果是Debian 12,首先执行这步,其它版本需略过这步:
|
apt install proxmox-default-kernel systemctl reboot |
完成后接着执行以下命令:
|
apt install proxmox-ve postfix ksm-control-daemon open-iscsi chrony |
推荐:继续执行以下命令以删除os-prober包,os-prober软件包扫描主机的所有分区,包括客户端虚拟机创建双引导GRUB条目的分区。如果没有安装Proxmox VE作为另一个操作系统的双启动,您可以安全地删除os-prober软件包。
可选:删除Debian 9原内核
|
apt remove linux-image-amd64 linux-image-4.9.0-3-amd64 |
删除Debian 10原内核
|
apt remove linux-image-amd64 'linux-image-4.19*' |
删除Debian 11原内核
|
apt remove linux-image-amd64 'linux-image-5.10*' |
删除Debian 12原内核
|
apt remove linux-image-amd64 'linux-image-6.1*' |
运行grub2配置检查:
(2)Debian 8安装方法:
|
apt-get install proxmox-ve ssh postfix ksm-control-daemon open-iscsi systemd-sysv |
推荐:继续执行以下命令以删除os-prober包,os-prober软件包扫描主机的所有分区,包括客户端虚拟机创建双引导GRUB条目的分区。如果没有安装Proxmox VE作为另一个操作系统的双启动,您可以安全地删除os-prober软件包。
可选:删除Debian 8原内核
|
apt-get remove linux-image-amd64 linux-image-3.16.0-4-amd64 linux-base |
运行grub2配置检查:
(3)Debian 7安装方法:
首先安装Proxmox VE的内核:
|
apt-get install pve-firmware pve-kernel-2.6.32-48-pve |
(可选)然后安装Proxmox VE的内核头文件,当然这步是可选的,建议也一起安装:
|
apt-get install pve-headers-2.6.32-48-pve |
到了这步,建议检查并编辑下/boot/grub/grub.cfg是否配置正确。经过我的几次安装测试,安装完后默认不会启动Proxmox VE的内核,而是Debian默认的内核。可以编辑下/boot/grub/grub.cfg文件,这需要你对grub.cfg文件的配置有所了解,弄错了会导致系统无法正常启动,特别是好多便宜的独服都不支持vKVM,如果能支持拯救模式的还可以进入拯救模式编辑grub.cfg文件,不然也就只有重新安装系统的份了。
确保能正确引导PVE的内核后重新启动一次,然后通过以下命令查看当前内核是否为“Linux 2.6.32-48-pve”
可选:删除Debian 7原内核
|
apt-get remove linux-image-amd64 linux-image-3.2.0-5-amd64 linux-base |
运行grub2配置检查:
确保当前加载了PVE内核后,需要继续安装Proxmox VE的相关软件包,如果默认已经安装了SSH,可以不用安装SSH。
|
apt-get install proxmox-ve-2.6.32 ntp ssh lvm2 postfix ksm-control-daemon vzprocps open-iscsi bootlogd |
根据不同Debian版本的方法完成以上步骤后就可以登陆WEB管理页面(https://youripaddress:8006)进行后续的操作了。由于安装相关软件包时可能会更新到Proxmox VE的最新内核,grub.cfg文件又再次被改写,继续编辑grub.cfg文件,让其开机默认引导最新的PVE内核,再重新启动一次系统即可。
三、网络配置
1、桥接方式
首先必须安装以下软件包,不然桥接会不成功,也会导致网络不通。
|
apt-get install bridge-utils |
|
vi /etc/network/interfaces |
|
auto lo iface lo inet loopback iface eth0 inet manual auto vmbr0 iface vmbr0 inet static address 192.168.0.1 netmask 255.255.255.0 gateway 192.168.8.1 bridge_ports eth0 bridge_stp off bridge_fd 0 |
接着重启接口,让其生效:
|
/etc/init.d/networking restart |
2、单IP服务器通过NAT共享网络
单IP下,子机通过NAT共享主机网络上网的配置方法。配置好后KVM设置为桥接模式,IP、子网和网关分别设置为:192.168.0.X、255.255.255.0、192.168.0.1,然后配置好DNS即可访问网络。
输入命令编辑接口配置文件。
|
vi /etc/network/interfaces |
根据自己的网络配置情况,按以下模板编辑修改:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
auto lo iface lo inet loopback #real IP adress auto eth0 iface eth0 inet static address 88.88.88.88 netmask 255.255.255.0 gateway 88.88.88.1 #private sub network auto vmbr0 iface vmbr0 inet static address 192.168.0.1 netmask 255.255.255.0 bridge_ports none bridge_stp off bridge_fd 0 post-up echo 1 > /proc/sys/net/ipv4/ip_forward post-up iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o eth0 -j MASQUERADE post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o eth0 -j MASQUERADE |
接着重启接口,让其生效:
|
/etc/init.d/networking restart |
3、多IP服务器通过NAT共享网络
以下配置实现3个外网IP 11.11.11.11、22.22.22.22、33.33.33.33分别通过不同的内网网段 192.168.X.1 进行共享网络。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 11.11.11.11 netmask 255.255.255.0 gateway 11.11.11.1 auto eth0:1 iface eth0:1 inet static address 22.22.22.22 netmask 255.255.255.0 gateway 22.22.22.1 auto eth0:2 iface eth0:2 inet static address 33.33.33.33 netmask 255.255.255.0 gateway 33.33.33.1 auto vmbr0 #private sub network iface vmbr0 inet static address 192.168.0.1 netmask 255.255.255.0 bridge_ports none bridge_stp off bridge_fd 0 post-up echo 1 > /proc/sys/net/ipv4/ip_forward post-up iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 11.11.11.11 post-down iptables -t nat -D POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 11.11.11.11 auto vmbr1 #private sub network iface vmbr1 inet static address 192.168.1.1 netmask 255.255.255.0 bridge_ports none bridge_stp off bridge_fd 0 post-up echo 1 > /proc/sys/net/ipv4/ip_forward post-up iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 22.22.22.22 post-down iptables -t nat -D POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 22.22.22.22 auto vmbr2 #private sub network iface vmbr2 inet static address 192.168.2.1 netmask 255.255.255.0 bridge_ports none bridge_stp off bridge_fd 0 post-up echo 1 > /proc/sys/net/ipv4/ip_forward post-up iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 33.33.33.33 post-down iptables -t nat -D POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 33.33.33.33 |
4、端口转向
NAT模式下需要外部机器访问内网机器,可以设置端口转向,以下两种代码可以根据实际情况选择一种在主机中输入:
|
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10222 -j DNAT --to-destination 192.168.0.2:22 |
该代码会将外部10222端口的TCP访问转向内网子机IP为192.168.0.2的22端口。
通过以上方法虽然实现了端口转向,但重启后会发现又不能访问了,这是因为 Debian/Ubuntu 上 iptables 默认是不会保存规则的,需要按如下步骤让网卡关闭时保存iptables规则,启动时加载iptables规则:
网卡启动时加载iptables规则,目的上在网卡启动(开机)时加载已保存到文件中的规则。
|
vi /etc/network/if-pre-up.d/iptables |
添加如下内容:
|
#!/bin/bash iptables-restore < /etc/iptables.rules |
给该文件执行权限:
|
chmod +x /etc/network/if-pre-up.d/iptables |
网卡关闭时保存iptables规则,目的是让网卡关闭(关机)时将第三步时输入的规则保存到相应文件中。
|
vi /etc/network/if-post-down.d/iptables |
添加如下内容:
|
#!/bin/bash iptables-save > /etc/iptables.rules |
给该文件执行权限:
|
chmod +x /etc/network/if-post-down.d/iptables |
如果不希望网卡关闭(正常关机)时自动保存iptables规则,可以不用配置以上的保存命令,可以在配置完iptables命令后手动执行以下命令即可手动保存:
|
iptables-save > /etc/iptables.rules |
四、其他配置和优化
1、增加虚拟声卡
为了获得音频/声音,您需要将虚拟声卡添加到虚拟机配置中。只需将以下行添加到您的VM配置(/etc/pve/qemu-server/XXX.conf,XXX是VM ID):
|
args: -device AC97,addr=0x18 |
这将会添加一个AC97声卡,这在WIN7里可能需要安装相应驱动,但你可以通过添加以下代码实现增加一个HDA声卡,在WIN7中是自带驱动的,而且功能更加完善:)
|
args: -device intel-hda,id=sound5,bus=pci.0,addr=0x18 -device hda-micro,id=sound5-codec0,bus=sound5.0,cad=0 -device hda-duplex,id=sound5-codec1,bus=sound5.0,cad=1 |
在即将发布的版本中,添加音频设备可以通过GUI完成。
2、VNC客户端访问
默认情况下,Proxmox通过控制面板网页端的noVNC或SPICE提供远程访问权限,建议尽可能使用此访问权限。如果出于某些原因需要进行独立于浏览器的访问,则可以使用普通的VNC客户端,比如通过RealVNC,TightVNC,Remmina等常用VNC客户端进行远程访问。
(1)通过Monitor配置VNC访问
在Web控制面板界面中选择需要设置虚拟机,然后在“监视器(Monitor)”面板中根据自己的需要,按以下命令格式输入相应命令用于开启普通的VNC和有密码保护的VNC。
对于普通的一种,请在监视器中键入以下内容:
100表示端口,它将添加到5900的VNC基本端口,因此在这种情况下,VNC服务器侦听端口6000上的所有地址。
对于密码保护,请在监视器中输入以下内容:
|
change vnc 0.0.0.0:100,password set_password vnc foobar1 expire_password vnc never |
注意:
第一行命令中IP地址后的第一个“password”是一个参数值,就是单词“password”本身,这只是一个布尔型参数,告诉QEMU服务器需要密码,而不是您需要设置的密码。
第二行命令中的“foobar1”才是您需要设置的密码,这点需要注意。
第三行命令是设置密码有效期,值可以设置 now、never、+秒数或UNIX的到期时间,例如 now 表示立即,第二次登录即无效;never 表示密码永久有效;+60 表示密码在60秒后过期;1335196800 表示密码在此时间戳“2012年4月23日星期一12:00:00 EDT”后过期。
现在您可以通过IP地址和端口(在上面的示例中为6000)进行连接
该配置不是永久性的,只要虚拟机已停止并再次启动后,必须重复执行上述操作才能启用通过外部客户端的VNC访问。
(2)通过配置文件配置VNC访问
通过在虚拟机配置文件 /etc/pve/local/qemu-server/.conf 中添加一行参数,该行指定VNC显示编号,如下所示(示例中的“77”):
显示编号可以自由选择,但不能重复。VNC服务在端口5900 + 显示编号为该虚拟机实际的监听端口号。请注意,通过noVNC进行的连接开始使用显示号0进行连续,因此建议使用更大的数字以避免冲突。
按指定从VNC客户端连接到Proxmox主机ip地址和端口(上例中为5977)
注意:使用此方法无法设置VNC密码。
3、镜像文件压缩和转换
重要警告:始终准备好异地备份,你永远不会知道下一步会导致什么问题!
QCOW2格式镜像的压缩:
先关闭需要进行操作的虚拟机,进入主机命令行模式,再通过 qemu-img 的 convert 来操作。
选项#1:在不压缩的情况下收缩磁盘(速度较快,但对磁盘压缩效果不佳):
|
qemu-img convert -O qcow2 /path/old.img.qcow2 /path/new.img.qcow2 |
选项#2:通过压缩缩小磁盘(收缩后磁盘尺寸越小,压缩时间越长,对速度越慢的系统性能影响越大):
|
qemu-img convert -c -O qcow2 /path/old.img.qcow2 /path/new.img.qcow2 |
RAW格式镜像的压缩:
|
cp --sparse=always /path/old.raw /path/new.raw |
将RAW镜像转换成QCOW2:
|
qemu-img convert -c -f raw -O qcow2 /path/old.raw /path/new.qcow2 |
缩小分配的磁盘空间:
首先通过以下命令查看该虚拟镜像所分配的空间,“virtual size”既是所分配的空间大小。
|
qemu-img info ./file.qcow2 |
接着通过以下命令调整为新的空间大小,比如原来分配为500G,现在缩小为200G。注意:该命令可能会导致数据丢失!
|
qemu-img resize ./file.qcow2 --shrink 200G |
4、备份恢复
备份在web页面操作,备份目录一般在/var/lib/vz/dump,如果在备份时指定了存储节点,则会存放在存储节点的dump目录下
备份过程需要进行停机操作。
恢复时,虚拟机的VM ID有可能和当前已经拥有的虚拟机ID冲突,所以在恢复时,你可以执行VM ID。另外,当前Proxmox和源Proxmox的存储路径不一致,可以通过-storage来指定当前的存储ID。具体命令如下:
|
qmrestore vzdump-qemu-2002-2021_09_29-15_55_58.vma.lzo 2022 -storage local-lvm |
5、常见问题及解决方法
(1)由于快照回滚、备份、迁移、休眠等等操作时,由于各种原因导致 LXC容器 或者 虚拟机 被锁定时,可以根据情况使用以下命令进行解锁即可。
LXC容器被锁定时:
虚拟机被锁定时:
参考文章:
https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Wheezy
https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Jessie
https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Stretch
https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Buster
https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_11_Bullseye
https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_12_Bookworm
http://wiki.hetzner.de/index.php/Proxmox_VE/en
https://pve.proxmox.com/wiki/SPICE#Using_Audio