前段时间OVH出了个活动,上架了几款性价比非常高的独立服务器,我也买了两台,然后根据自己之前写的文章内的步骤来安装Proxmox VE发现有很多问题,我其实写过很多篇这类文章了(以Kimsufi为主),遂决定重新写一篇文章来记录下目前遇到的问题与解决办法。
第一个问题是以前Kimsufi的救援系统是Debian9,现在OVH的救援系统是Debian10,这导致qemu-system-x86_64有很多选项都变了,以前记录的命令不好使了。
第二个问题是我现在这台服务器有4块硬盘,KVM最多只能给Guest提供4个IDE驱动器,超过的话会报错:
machine type does not support if=ide,bus=2,unit=0
根据这篇文章内的说明,可以把IDE改成用Virtio就没有这个限制了。
我改成用Virtio后,把PVE的ISO都启动了,又突然发现PVE文档:ZFS_on_Linux里面有这样一句话:
If you are experimenting with an installation of Proxmox VE inside a VM (Nested Virtualization), don’t use virtio for disks of that VM, as they are not supported by ZFS. Use IDE or SCSI instead (also works with the virtio SCSI controller type).
我就是准备用ZFS的,所以现在我只能改用Virtio SCSI了。。。
第三个问题是关于系统引导方面的,根据PVE文档:Host_Bootloader说明,目前PVE有2种不同的引导加载程序,分别是GRUB、systemd-boot,大多数情况都是使用GRUB,但有一个例外:如果把ZFS作为根文件系统,并且主板BOOT设置使用UEFI,那么将使用systemd-boot。我手上这台服务器的主板BOOT设置就是使用的UEFI,我通过IPMI确认了:
如果服务器没有IPMI,也可以在服务器系统内安装efibootmgr来确认,如果回显有记录说明是UEFI,没有就是BIOS(Legacy)。不过我猜测现在新开通的OVH服务器应该都是UEFI了。
当Proxmox VE使用systemd-boot作为引导加载程序的时候,如果我们要配置内核参数,配置的方法与GRUB引导加载程序是不同的。systemd-boot使用/etc/kernel/cmdline,且需要使用proxmox-boot-tool工具来更新配置。
还有一些细节问题这里就不详细说明了,下面我会把不同环境的可用安装方法都写出来。
首先登录OVH管理面板,启动OVH救援系统:
需要点一下重启才会引导到救援系统,救援系统的登录信息会发送到你指定的邮箱:
登录到救援系统安装qemu-kvm:
apt -y update apt -y install qemu qemu-kvm
如果主板BOOT设置使用UEFI,则还需要安装OVMF:
apt -y install ovmf
下载PVE的ISO:
wget https://enterprise.proxmox.com/iso/proxmox-ve_8.2-2.iso
使用lsblk命令查看当前硬盘、分区、RAID信息:
停止RAID:
mdadm --stop /dev/md2 mdadm --stop /dev/md3
清空分区表信息:
wipefs -a /dev/sda1 wipefs -a /dev/sda2 wipefs -a /dev/sda3 wipefs -a /dev/sda4 wipefs -a /dev/sda5 wipefs -a /dev/sda wipefs -a /dev/sdb1 wipefs -a /dev/sdb2 wipefs -a /dev/sdb3 wipefs -a /dev/sdb4 wipefs -a /dev/sdb wipefs -a /dev/sdc1 wipefs -a /dev/sdc2 wipefs -a /dev/sdc3 wipefs -a /dev/sdc4 wipefs -a /dev/sdc wipefs -a /dev/sdd1 wipefs -a /dev/sdd2 wipefs -a /dev/sdd3 wipefs -a /dev/sdd4 wipefs -a /dev/sdd
准备工作做好后,接下来根据自身情况来启动虚拟机。主要是以下3点:
1、服务器主板使用的引导方式:BIOS(Legacy)、UEFI。
2、如果服务器硬盘大于等于4块,则必须使用Virtio驱动,或者Virtio-SCSI驱动。
3、如果服务器使用ZFS文件系统,则必须使用Virtio-SCSI驱动。
下面是几个示例:
1、BIOS(Legacy)引导方式,不使用ZFS文件系统,使用如下命令启动虚拟机:
qemu-system-x86_64 \ -enable-kvm \ -nodefaults \ -cdrom /root/proxmox-ve_8.2-2.iso \ -drive file=/dev/sda,format=raw,media=disk,index=0,if=virtio \ -drive file=/dev/sdb,format=raw,media=disk,index=1,if=virtio \ -drive file=/dev/sdc,format=raw,media=disk,index=2,if=virtio \ -drive file=/dev/sdd,format=raw,media=disk,index=3,if=virtio \ -cpu host \ -smp 4 \ -m 8G \ -net nic \ -net user \ -vga std \ -vnc :1,password=on -monitor stdio \ -k en-us
2、BIOS(Legacy)引导方式,使用ZFS文件系统,使用如下命令启动虚拟机:
qemu-system-x86_64 \ -enable-kvm \ -nodefaults \ -cdrom /root/proxmox-ve_8.2-2.iso \ -device virtio-scsi-pci,id=scsi0 \ -device scsi-hd,drive=hd0 \ -drive file=/dev/sda,format=raw,media=disk,if=none,id=hd0 \ -device scsi-hd,drive=hd1 \ -drive file=/dev/sdb,format=raw,media=disk,if=none,id=hd1 \ -device scsi-hd,drive=hd2 \ -drive file=/dev/sdc,format=raw,media=disk,if=none,id=hd2 \ -device scsi-hd,drive=hd3 \ -drive file=/dev/sdd,format=raw,media=disk,if=none,id=hd3 \ -cpu host \ -smp 4 \ -m 8G \ -net nic \ -net user \ -vga std \ -vnc :1,password=on -monitor stdio \ -k en-us
3、UEFI引导方式,无论是否使用ZFS文件系统,均可以使用如下命令启动虚拟机:
qemu-system-x86_64 \ -bios OVMF.fd \ -enable-kvm \ -nodefaults \ -cdrom /root/proxmox-ve_8.2-2.iso \ -device virtio-scsi-pci,id=scsi0 \ -device scsi-hd,drive=hd0 \ -drive file=/dev/sda,format=raw,media=disk,if=none,id=hd0 \ -device scsi-hd,drive=hd1 \ -drive file=/dev/sdb,format=raw,media=disk,if=none,id=hd1 \ -device scsi-hd,drive=hd2 \ -drive file=/dev/sdc,format=raw,media=disk,if=none,id=hd2 \ -device scsi-hd,drive=hd3 \ -drive file=/dev/sdd,format=raw,media=disk,if=none,id=hd3 \ -cpu host \ -smp 4 \ -m 8G \ -net nic \ -net user \ -vga std \ -vnc :1,password=on -monitor stdio \ -k en-us
虚拟机启动之后,需执行如下命令修改VNC连接密码:
change vnc password
之后使用任意VNC客户端连接服务器公网IP:5901端口访问,如果正常将可以看到PVE的安装界面:
选择ZFS RAID级别这块,我本来是打算用RAIDZ-2的,但最后还是选择RAID10了:
对于4块盘而言,虽然可用容量都是减半,但是RAID10的性能要稍微好一点,要用RAIDZ-2的话,那估计就是单盘的性能了。当然RAIDZ-2的安全性比RAID10要高一些,但权衡下来我还是用了RAID10。如果你使用RAIDZ类型的话,这里有一个RAIDZ类型的可用容量计算方式可供参考:
N个磁盘的RAIDZ类型vdev的可用空间为N-P,其中P是RAIDZ级别。RAIDZ级别指在不丢失数据的情况下,有多少个任意磁盘可以出现故障。例如3块硬盘的RAIDZ也就是RAIDZ-1,最多允许1块硬盘故障。可用容量为2块盘的容量。
网络这块的配置,把你在OVH管理面板看到的IPv4、IPv4网关地址记下来:
照着填上去就行了,注意CIDR,OVH一般都是24,有关IPv6的配置这里暂且先放一边,PVE的这个界面也不支持配置IPv6,我会单独写一篇文章来介绍如何配置OVH的IPv6:
后面的操作就很简单了,没什么好说的了这里就省略掉了,等待安装完成后,系统会自动重启,还是在这个VNC里面登录到PVE主机,我们需要修改一些配置。
编辑网络配置文件:
nano /etc/network/interfaces
根据服务器的情况需要更改接口名,我这台服务器接口名是ens3,需要改成eth0:
auto lo iface lo inet loopback iface eth0 inet manual auto vmbr0 iface vmbr0 inet static address xx.xx.xx.210/24 gateway xx.xx.xx.254 bridge-ports eth0 bridge-stp off bridge-fd 0
然后根据使用的引导加载程序来修改内核参数,我使用的是systemd-boot,需要修改如下配置文件:
nano /etc/kernel/cmdline
注意这个配置文件只能有1行,所有的参数都要在1行内,在原有的基础上增加net.ifnames=0:
root=ZFS=rpool/ROOT/pve-1 boot=zfs net.ifnames=0
更新配置:
proxmox-boot-tool refresh
如果你使用的是GRUB,则需要修改如下配置文件:
nano /etc/default/grub
在GRUB_CMDLINE_LINUX_DEFAULT原有的基础上增加net.ifnames=0:
GRUB_CMDLINE_LINUX_DEFAULT="quiet net.ifnames=0"
更新配置:
update-grub
将虚拟机关机:
systemctl poweroff
回到OVH管理面板,将系统改为从硬盘启动:
在OVH管理面板点一下重启,等待片刻。
如果一切正常的话,就可以使用https://publicip:8006访问到PVE的管理界面了。
参考资料:
https://wiki.gentoo.org/wiki/QEMU/Options#Hard_drive
https://wiki.netbsd.org/tutorials/how_to_setup_virtio_scsi_with_qemu/
https://blog.onodera.asia/2021/12/qemunetbsdamd64-current-virtio-scsi.html
哥有个问题不太明白,我也抢了这个机器,你的帖子写的在救援系统里安装pve,这个是为什么?我是直接用的ovh模板安装的pve8这样有什么不同吗,另外,现在的pve8的web端登录上去经常出现【错误 连接错误 – server offline?】的问题,求指教一下
救援系统安装更灵活,例如在安装pve的时候你可以选择使用btrfs文件系统。除了pve以外还可以安装其他ovh模板没有的系统。
pve webui连接错误可能是因为你用的梯子是vless+reality,换成ss或者别的协议应该就好了。