本帖最后由 wolfgangsk07 于 2019-4-12 17:04 编辑
一步一步实现Proxmox (pve)环境的家庭服务器(WIN,DSM,软路由)
导语:ESXI由于其操作的简便,得到了极大的普及。但是其性能及兼容性远不及KVM,但KVM的操作实在是太复杂了,一般的老司机都驾驭不了。所以如今的局面是,esxi在新手中应用广泛,但大型商业用途基本都是KVM架构。PVE的出现给我们带来了人性化web界面的KVM虚拟机,用于家庭服务器,特别是CPU较弱的家庭服务器简直是提升巨大。我本人用过一段时间的J3455,其在esxi下网络性能低下,即使直通网卡,内网ping都在1-10ms波动,虚拟网卡更是如此,就连宿主系统的网卡都一样。虚拟硬盘性能也弱的很,新版的esxi6.7u1解决了以前sata性能弱爆的bug,但是依旧是弱的不行。原因不明,懒得深究。换了PVE后性能得到了质的飞跃。所以本文尝试了一下5.3版本的PVE,记录如下。
一、proxmox的安装 首先去proxmox的官网下载最新的5.3-2的镜像,这一版增加了对PCI直通的web支持,并且强化了web上的储存管理。总的来说,安装过程是无脑化下一步的,但是有一些坑需要注意。
1. 对AMT的兼容性修改以及启动直通功能 由于本人现在使用的DQ77MK(KB)是支持AMT的,所以估计大多数用这块板的人都会不插显示器直接启动安装。但是这里会碰到一个问题,PVE启动一半时AMT显示黑屏,无法继续操作。这个原因个人推测是由于PVE加载了显卡驱动,没有检测到监视器,所以PVE关闭了显示输出导致AMT无法获取显示。
解决办法: 关闭显卡驱动。在下图准备安装时,确保光标选中了第一项,按键盘上的E,进入自定义启动项模式。 在出现的grub菜单中,对linux那一行进行编辑,末尾加上i915.modeset=0,修改后的如图所示。然后按ctrl+x或者F10启动当前编辑后的菜单。注意,这里修改的grub启动参数只是临时的。 然后就是默认无脑下一步,直到安装结束提示重启。重启后引导硬盘上的PVE系统,这里再次出现引导菜单,如下图,依旧选择第一项,按E,编辑grub菜单,加入i915.modeset=0,ctrl+x启动,如下下图。
然后进入PVE,界面会停留在shell模式,安装完毕。
2. 将启动参数固定到grub并添加直通开关。 关闭显卡驱动,启用直通都是在grub参数这里设置。之前每次启动都需要临时编辑grub,这里演示如何把启动参数固定。用putty或者winscp编辑/etc/default/grub文件,需要加上的参数有两个:i915.modeset=0以及intel_iommu=on,后者是开启vt-d的参数,如下图。 保存后进入ssh,在shell中输入update-grub,将grub菜单更新,重启生效。到此安装完毕。
二、磁盘空间的调整。 本文的示例是32G的硬盘。对于特别是从esxi过来的人,对PVE下的空间模式一头雾水,你找不到虚拟机的硬盘文件在哪里,因为PVE的主要逻辑卷使用了更高级的LVM-THIN模式,反正我是不会。默认分区如下图,local他对应的逻辑卷是pve/root用于存储ISO等,默认不用于虚拟机磁盘(可以修改存储内容,见后文),他是传统的目录结构,你的虚拟机数据都存储于/var/lib/vz,便于管理和理解。Local-lvm对应的逻辑卷是pve/data,默认用于存储虚拟机的磁盘,是LVM-Thin结构,是没有目录结构的,但便于大规模的服务器集合。 这里我将LVM-Thin对应的data这个逻辑卷删除,并将空余空间分配给local 1.先移除local-lvm对应的逻辑卷pve/data 移除指令 # lvremove pve/data 执行上面这个指令会再次跟你确认。 2.对local对应的逻辑卷pve/root进行在线扩容 # lvextend -l +100%FREE -r pve/root
实际执行后用df -h查看现有空间,截图如下:
3.Web中依次展开数据中心-存储,把local-lvm删除即可。
4.还是在数据中心-存储,编辑local,内容下拉菜单中把所有的内容都选上,以便这个空间可以储存磁盘映像。
存储的修改就到此为止。 三、安装系统 1. 安装win 如果不追求极致性能,那没什么难度,常规建立虚拟机,上传ISO,启动安装,磁盘和网卡都选择传统模式,如sata模式以及常见的虚拟网卡如E1000和Vmxnet3等。需要注意的是,没有安装驱动的windows不支持半虚拟化(virtio)的硬盘及网卡,这两个性能极好,但virtio的磁盘需要在安装阶段就给系统打上驱动,记录一下简单步骤。 a.将虚拟机的硬盘设置成virtio,添加2个CD-ROM,一个用于系统盘引导,一个用于装virtio驱动,virtio的驱动在网上可以下载https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html,是ISO镜像。 b.系统安装时看不见virtio硬盘,点加载驱动,选择CD中的viostor目录下对应系统的驱动即可看见磁盘顺利安装。系统安装结束后可以在windows里安装剩余的驱动。 c.除了硬盘和网卡驱动外,还可以考虑安装Balloon驱动,这个我稍微介绍一下。都知道有直通设备的虚拟机是需要完全预分配内存的,这在很大程度上造成了内存的浪费。Balloon驱动就是为了解决这个问题。安装Balloon驱动后在虚拟机的配置界面内存中启用,如图。 Balloon进程在虚拟系统中会动态占用大量的闲置内存,所以在win中经常可见到这个进程占用了好几个G的内存。这部分被占用的内存会被PVE主机回收,用于其他虚拟机或宿主系统。这样就解决了预分配内存和内存浪费的矛盾。有点象个大小不断变化的气球,所以叫Balloon。
2.DSM 6.2.2基于loader1.03b 在PVE下安装DSM于esxi没有太多区别,但也有几个坑。首先常规新建一个虚拟机。 a.上传img格式的loader。 PVE不支持上传磁盘镜像,只支持上传iso镜像。所以这一步要命令行完成。把IMG文件通过winscp上传至某个地方,比如/mnt/data/。在shell下执行命令:qm importdisk 100/mnt/data/synoboot.img,这里100是你的虚拟机编号。执行完毕后系统就会将转换好格式的磁盘镜像放到虚拟机的目录下,如/var/lib/vz/images/100/vm-100-disk-0.raw。然后在web配置界面将新出现的磁盘添加为sata并引导。 b.网卡的选择。 如果用直通网卡,请确保网卡可以用于DSM。如果用虚拟网卡,要知道PVE默认的E1000(不是E1000e)不支持新的DSM,virtio也不支持,vmxnet3当然也不支持。
但是其实PVE是有E1000e的,需要用参数调用,这里放上操作步骤:https://xpenology.com/forum/topic/7387-tutorial-dsm-6x-on-proxmox/page/7/?tab=comments#comment-108450&tdsourcetag=s_pctim_aiomsg 当然,我自己用的是网卡直通的方式。如果你是的大神,也可以给loader集成virtio驱动,反正我是不会。SR-IOV由于需要专门驱动,不确定DSM是否支持,这个还在折腾计划中。 剩下的DSM的安装就不多说了,新装或者移植都没问题。
四、CPU的优化 PVE下的CPU分配和esxi不太一样,默认给每个虚拟机都预留了保留份额。这会导致你开了几个虚拟机后,每个虚拟机都无权完全使用cpu。建议将CPU高级设置里的CPU单位设置为最低值8,以确保CPU份额最大的可灵活分配,如下图:
到此结束,本教程只对关键的不同点进行讲解。凡是常规思路的东西,我默认你拥有杰出的摸索能力。比如你想PCI直通,请自己去web界面寻找。如果连PCI直通都不知道是什么,那建议从ESXI开始使用。
补充内容 (2019-4-26 12:54):
主贴不能编辑了,修正一下,文中添加loader的命令漏掉了一个参数,由"qm importdisk 100/mnt/data/synoboot.img"修改为"qm importdisk 100/mnt/data/synoboot.img local" |