Proxmox Virtual Environment PVE 从入门到套娃(对比ESXi)
家用 Proxmox VE 从入门到套娃(对比ESXi)
Proxmox Virtual Environment,俗称pve,是一个开源的服务器虚拟化环境Linux发行版,具有qemu kvm虚拟机和lxc容器功能。 pve 基于 Debian 稳定版。如果你熟悉 deb Linux,使用起来会很舒服。
与 ESXi 相比
建筑学
尽管 ESXi 在很多地方看起来很像 Linux,但实际上它既不是 Linux,也不是“类 Unix”。它的内核是VMware专有的VMKernel,专为虚拟化而定制。
pve的本质是一个带有web管理面板的Debian stable,加上一些pve集群相关的服务,pve官方也支持从标准debian现有安装部署pve,只需添加pve的软件源即可。
“Proxmox”的图片搜索结果
pve架构
这意味着pve是高度可定制的,因为这是一个debian系统,稍微有点素材,你甚至可以在pve上安装桌面,就像你可以在kali上玩游戏一样。
贮存
本地存储方面,除了PCI pass-through,ESXi只支持vmfs文件存储和RDM(Raw Disk Mapping)。但是,经过测试,性能非常低迷。它可以运行 700MB/s 的 RAID6 阵列。 RDM到虚拟机后,只能跑到250MB/s左右。
pve支持非常丰富,可以不使用文件系统直接使用LVM或者LVM Thinpool中的分区,作为虚拟机的块设备作为磁盘,或者在本地文件系统(如ZFS)上使用qcow2格式虚拟化) 虚拟机使用的磁盘文件。推荐使用LVM Thinpool,后面会提到。
既然支持直接使用块设备作为虚拟机的磁盘,自然是直接将本地硬盘的设备文件挂载到虚拟机上,实现ESXi和RAID6的RDM(Raw Disk Mapping)功能阵列,评估速度为 700MB/s。当虚拟机的缓存选项关闭时,也能跑到500MB/s左右。
处理器性能对比
ESXi 和 kvm 都是硬件虚拟化。所有处理器和物理机的性能都比较小。经过我的简单测试,ESXi在E5 2650 v2上可以发挥物理机95%左右的性能,而kvm在90%左右,算是低了。一些。这里测试的项目是编译linux内核,其他项目可能会有不同的结果。
Proxmox VE 进阶技巧
精简配置和 LVM 精简池自动空间回收
Thin Provisioning,或者Thin Provision,比如你为一个虚拟机创建了一个128G的虚拟磁盘,但是虚拟机实际上只使用了其中的10G,只会占用主机的10G存储空间,而不是厚置备128G。
常见的vmdk和qcow2格式的虚拟磁盘文件都支持精简配置,但都是“只增不减”。比如刚才的虚拟机在磁盘上创建了一些5G的文件,一共使用了15G的空间。磁盘文件也会增加到15G大小,这是正常的,但是如果虚拟机之后删除了10G文件,实际只使用了5G空间,并且虚拟磁盘文件不会随之自动缩小,它仍然会保持15G大小。 ,造成一定程度的浪费。
LVM代表Logical Volume Manager,是Linux内核提供的逻辑卷管理功能。它在硬盘分区上创建了一个逻辑层,以方便硬盘分区系统的系统管理(来自维基百科)。 LVM Thinpool是lvm中支持thin provisioning的存储池,可以在其中创建thin provisioned的逻辑卷(分区),只为逻辑卷中实际存储数据的部分分配存储块。
与虚拟磁盘文件不同,LVM Thinpool 还支持丢弃,也称为修剪。了解SSD的人可能听说过。它的作用是:文件系统删除一些文件后,通知下级存储设备,使文件在设备上。相应的块不再被占用。对于LVM Thinpool,在逻辑卷上删除文件系统上的文件并执行trim后,thinpool还会释放逻辑卷中不再使用的存储块,减少了逻辑卷实际占用的空间,增加了整体Thinpool 的可用空间。
man lvmthin 对此的描述
对于pve,会使用lvm中的逻辑卷作为虚拟机的磁盘,所以使用lvm的thinpool,开启虚拟磁盘的Discard功能,在Linux客户端的分区中添加discard挂载选项或定期手动执行 fstrim。对于Windows客户端,可以开启SSD模拟,诱导Windows使用磁盘discard/trim功能(我没有测试过)。
嵌套虚拟化(虚拟机做二)
在ESXi中虚拟机的CPU选项中,可以勾选“将CPU的虚拟化特性暴露给guest”,即允许guest继续使用Host的硬件虚拟化功能来创建虚拟机,虚拟机中的虚拟机,和俄罗斯套娃一样。在kvm中,可以在加载kvm_intel或kvm_amd时传入nested=Y选项来启用嵌套虚拟化支持,并且guest CPU模型中最好选择[host],否则可能无法识别。
更改WebUI的主题界面
Pve 的 WebUI 界面是基于一种叫做 extjs 的东西,所以可以应用 extjs 的其他主题,参考:https://lunar.computer/posts/themes-proxmox/
我对其主题-triton做了一些小改动,最终效果如下:
如果有人感兴趣,我会打包修改后的文件。
总结
对于家庭homelab环境,比如简单的单机部署,pve非常方便。不过,对于大型企业级场景,ESXi和ovirt可能是更好的选择,毕竟背后都有一线大型企业背书。
Proxmox Virtual Environment PVE 从入门到套娃(对比ESXi):等您坐沙发呢!