Skip to main content
开放网络的先行者与推动者—星融元
加入我们技术支持(Support)  TEL:(+86)4000989811
Proxmox VE

安装指导-基于Proxmox VE的安装部署和性能测试

1 目标

本文档将简要介绍Proxmox VE基本概念,并使用PVE进行集群部署以及功能验证。

2 概要介绍

2.1 关于Proxmox VE

Proxmox VE (Virtual Environment) 是一个开源的虚拟化平台,它基于 Debian GNU/Linux 发行版,并集成了 KVM (Kernel-based Virtual Machine) 和 LXC (Linux Containers) 两种虚拟化技术,提供了一套完整的虚拟化解决方案。以下为PVE架构图:

PVE架构

图1.1:PVE架构

由以下几个组件构成:

  1. Proxmox VE管理界面:提供了易于使用的Web界面,用于管理虚拟机、容器、存储、网络和集群等。
  2. KVM虚拟化:Proxmox VE基于Linux内核虚拟机(KVM)技术实现了完整的虚拟化,并支持Windows和Linux等操作系统的虚拟化。
  3. LXC容器:Proxmox VE支持Linux容器(LXC)技术,可以在同一物理主机上运行多个隔离的Linux容器,从而提供更高的资源利用率和更快的启动时间。
  4. 存储管理:Proxmox VE支持多种存储类型,包括本地存储、网络存储(NFS、iSCSI、FC)、对象存储(Ceph、Swift)等,可以通过Web界面方便地管理存储池、卷和镜像等。
  5. 网络管理:Proxmox VE支持多种网络模式,包括桥接、NAT、VLAN、OpenvSwitch等,可以通过Web界面方便地管理虚拟网络接口、虚拟交换机和虚拟网络等。
  6. 集群管理:Proxmox VE支持多台物理主机组成的集群,可以通过Web界面方便地管理节点、HA、负载均衡等。
  7. API:Proxmox VE提供RESTful API,可以通过API方便地进行自动化管理和集成。

2.2 功能特性与ESXi对比

功能/特性Proxmox VEESXi
许可证费用开源免费商业许可证
支持的虚拟化技术KVM, LXCVMware 虚拟化技术
界面和管理工具Web 界面管理工具客户端界面
高可用性 (HA)支持支持
备份与恢复完整备份和恢复方案,包括快照完整备份和恢复方案,包括快照
存储管理多种存储管理方式,包括本地存储、NFS、iSCSI 和 Ceph 等多种存储管理方式,包括本地存储、NFS、iSCSI 和 Fibre Channel 等
网络管理多种网络管理方式,包括 NAT、桥接和 VLAN 等多种网络管理方式,包括 NAT、桥接和 VLAN 等
安全性基于角色的用户访问控制、防火墙和 TLS 加密等基于角色的用户访问控制、防火墙和 TLS 加密等
社区支持活跃的社区支持和开发者社区有活跃的用户和支持社区
表2.1:功能对比

3 配置

3.1 最小硬件配置

  • CPU要求为Intel EMT64或AMD64,需要支持Intel VT/AMD-V虚拟化。
  • 内存不低于2GB,以确保操作系统和Proxmox VE服务正常运行。如需运行虚拟机,需相应增加更多内存。如需运行Ceph或ZFS,还需要增配内存,大概1TB存储空间增加1GB内存。
  • 高性能高冗余存储资源,最好使用SSD盘。
  • 操作系统盘:带有电池保护缓存的硬RAID卡,没有硬RAID卡时可以使用带有SSD缓存的ZFS。
  • 虚拟机存储:本地磁盘可以采用带有电池保护缓存的硬RAID卡,或不带硬RAID卡的ZFS。ZFS和Ceph都不能和硬RAID控制器同时使用。也可以共享分布式存储。
  • 多块千兆网卡。根据所用存储技术和集群配置,可以选配更多网卡。也可使用10Gbit或更高速网卡。
  • 如需使用PCI直通,必须采用支持VT-d/AMD-d的CPU。

3.2 推荐系统硬件配置

  • CPU:64位(Intel EMT64或AMD64),推荐使用多核CPU。
  • CPU和主板需要支持Intel VT/AMD-V技术,以便支持KVM全虚拟化功能。
  • 内存:8GB,如果要运行虚拟机则应配置更多硬RAID卡,带有电池保护(BBU)或闪存保护的写缓存。
  • 性能硬盘,最好是15k转速的SAS盘,配置成Raid10。
  • 最少2块以太网卡,也根据采用的共享存储技术配置更多网卡。

3.3 软件源配置

默认情况下,PVE是企业订阅源,并且每次登录有订阅通知窗口,需要去除弹窗,并且将软件源更改为国内源。

订阅提示
vi /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
将if(data.status!==’Active’)修改为 if(false)

cat >/etc/apt/sources.list <<EOF
deb https://mirrors.ustc.edu.cn/debian bookworm main contrib
deb https://mirrors.ustc.edu.cn/debian bookworm-updates main contrib
# security updates
deb https://mirrors.ustc.edu.cn/debian-security bookworm-security main contrib
deb http://download.proxmox.com/debian bookworm pve-no-subscription
EOF

echo "deb http://mirrors.ustc.edu.cn/proxmox/debian/ceph-pacific bullseye main
" > /etc/apt/sources.list.d//ceph.list

rm pve-enterprise.list

echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription">/etc/apt/sources.list.d/pve -no-subscription.list

apt-get update && apt-get upgrade -y

3.4 网络配置

3.4.1 基于网桥的默认配置

网桥相当于一个软件实现的物理交换机。所有虚拟机共享一个网桥,在多个域的网络环境中,也可以创建多个网桥以分别对应不同网络域。理论上,每个Proxmox VE最多可以支持4094个网桥。 Proxmox VE安装程序会创建一个名为vmbr0的网桥,并和检测到的服务器第一块网卡桥接。配置文件/etc/network/interfaces中的对应配置信息如下:

auto lo
iface lo inet loopback

iface ens160 inet manual

auto vmbr0
iface vmbr0 inet static
        address 10.240.4.148/24
        gateway 10.240.4.1
        bridge-ports ens160
        bridge-stp off
        bridge-fd 0

iface ens192 inet manual

3.4.2 路由配置

大部分IPC服务器供应商不支持基于网桥的默认配置方式,出于网络安全的考虑,一旦发现网络接口上有多个MAC地址出现,则会立刻禁用相关网络端口。
可以通过配置“路由”的方式让多个虚拟机共享一个网络端口,对方通信使用同一个MAC地址。

auto lo
iface lo inet loopback

auto eno1
iface eno1 inet static
address 192.51.100.5
netmask 255.255.255.0
gateway 192.51.100.1
post-up echo 1 > /proc/sys/net/ipv4/ip_forward 
post-up echo 1 > /proc/sys/net/ipv4/conf/eno1/proxy_arp

auto vmbr0
iface vmbr0 inet static
address 203.0.113.17
netmask 255.255.255.248
bridge_ports none
bridge_stp off
bridge_fd 0

3.4.3 网络地址转换(NAT)

利用地址转换技术,所有虚拟机可以使用内部私有IP地址,并通过Proxmox VE服务器的IP来访问外部网络。Iptables将改写虚拟机和外部网络通信数据包,对于虚拟机向外部网络发出的数据包,将源IP地址替换成服务器IP地址,对于外部网络返回数据包,将目的地址替换为对应虚拟机IP地址。配置如下:

auto lo
iface lo inet loopback

auto eno1
#real IP address
iface eno1 inet static
address 192.51.100.5
netmask 255.255.255.0
gateway 192.51.100.1

auto vmbr0
#private sub network
iface vmbr0 inet static
address 10.10.10.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 ’10.10.10.0/24’ -o eno1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s ’10.10.10.0/24’ -o eno1 -j MASQUERADE

3.4.4 多网口绑定

多网口绑定(也称为网卡组或链路聚合)是一种将多个网卡绑定成单个网络设备的技术。利用该技术可以实现某个或多个目标,例如提高网络链路容错能力,增加网络通信性能等。配置如下:

auto lo
iface lo inet loopback

iface eno1 inet manual

iface eno2 inet manual

auto bond0
iface bond0 inet static
slaves eno1 eno2
address 192.168.1.2
netmask 255.255.255.0
bond_miimon 100
bond_mode 802.3ad
bond_xmit_hash_policy layer2+3

auto vmbr0
iface vmbr0 inet static
address 10.10.10.2
netmask 255.255.255.0
gateway 10.10.10.1
bridge_ports eno1
bridge_stp off
bridge_fd 0

4 集群配置

4.1 创建集群

4.1.1 通过Web创建集群

在“数据中心”→“集群”下,单击创建集群。输入集群名称,然后从下拉列表中选择一个网络连接作为主集群网络(Link 0)。然后点击“加入信息”按钮,复制Information字符串,接下来,登录到要添加的节点上的Web界面。在“数据中心→集群”下,单击“加入集群”。用之前复制的“加入信息”文本填写Information字段。

4.1.2 命令行创建

# 创建集群的主机
pvecm create CLUSTERNAME
# 待加入集群的主机
pvecm add IP-ADDRESS-CLUSTER

4.2 Qemu/KVM虚拟机

Proxmo VE优先使用半虚拟化硬件,相比于虚拟化硬件(以软件模拟方式实现虚拟化硬件)性能更高。Qemu的半虚拟化硬件采用了virtio标准,并以virtio半虚拟化硬件形式实现。
虚拟机通用配置包括:

  • 节点:虚拟机所处的物理服务器名。
  • VM ID:Proxmox VE用于标识虚拟机的一个唯一编号。
  • 名称:虚拟机名称,用户描述虚拟机的字符串。
  • 资源池:虚拟机所处的逻辑组。

4.2.1 系统

创建虚拟机时可以修改虚拟机的部分系统配置如下图所示,可以更改SCSI控制器类型,如上面所述一般为了性能选择VirtIO SCSI single,对于不支持VirtIO的虚拟机系统,需要手动安装VirtIO驱动。

PVE dashboard01

图3.2:PVE dashboard01

4.2.2 硬盘

追求最极致的性能,可以选用VirtIO SCSI single,并启用IO Thread选项。在选用VirtIO SCSI single时,Qemu将为每个虚拟磁盘创建一个专用控制器,而不是让所有磁盘共享一个控制器。

虚拟硬盘的Cache模式设置会影响Proxmox VE主机系统向虚拟机操作系统返回数据块写操作完成通知的时机。设置为No cache是指在所有数据块都已写入物理存储设备写队列后,再向虚拟机发出写操作完成通知,而忽略主机页缓存机制。该方式将能较好地平衡数据安全性和写入性能。

Discard指令允许操作系统在SSD上将不再使用的数据通知到SSD底层并在其内部将数据擦除掉。

图3.3:PVE dashboard02

图3.3:PVE dashboard02

4.2.3 CPU

需要确保虚拟机的在线迁移能力,最好使用默认的kvm64虚拟CPU。如果不在乎在线迁移,或者集群内所有节点硬件型号完全一样,可以设置虚拟CPU类型为host,以获得最好的性能。

如果所有 VM 的内核总数大于服务器上的核心数(例如,在只有 8 个内核的计算机上有 4 个 VM,每个 4 个内核),则是完全安全的。在这种情况下,主机系统将在服务器内核之间平衡 Qemu 执行线程,就像运行标准的多线程应用程序一样。但是,Proxmox VE 将阻止启动虚拟 CPU 内核数多于物理可用内核的虚拟机,因为这只会由于上下文切换的成本而降低性能。

PVE dashboard03

图3.4:PVE dashboard03

4.2.4 内存

当设置内存容量和最小内存容量为相同值时,Proxmox VE将为虚拟机分配固定容量内存。即使使用固定容量内存,也可以在虚拟机启用ballooning设备,以监控虚拟机的实际内存使用量。

当设置的最小内存容量低于设置的内存容量值时,Proxmox VE将为虚拟机至少分配设置的最小容量内存,并在物理服务器内存占用率达到80%之前根据虚拟机需要动态分配内存,直到达到设置的最大内存分配量。当物理服务器内存不足时,Proxmox VE将开始回收分配给虚拟机的内存,并在必要时启动SWAP分区,如果仍然不能满足需要,最终将启动oom进程杀掉部分进程以释放内存。物理服务器和虚拟机之间的内存分配和释放通过虚拟机内的balloon驱动完成,该驱动主要用于从主机抓取或向主机释放内存页面。

PVE dashboard04

图3.5:PVE dashboard04

4.3 防火墙配置

PVE有3种防火墙:

  1. 面对数据中心的防火墙:处理流出流入数据中心的流量。
    集群防火墙规则是应用于整个Proxmox VE集群的防火墙规则。这些规则通常由集群管理员配置,用于限制集群中所有主机和虚拟机的网络访问。集群防火墙规则是在集群中所有主机的防火墙规则之前生效的。
    只有数据中心防火墙开启,才能开启集群内的防火墙,否则单独开启VM的防火墙是无效的。
  2. 面对虚拟化服务器的防火墙:处理主机的流量。
    主机防火墙规则是应用于单个Proxmox VE主机的防火墙规则。这些规则通常由主机管理员配置,用于限制主机上所有虚拟机和容器的网络访问。主机防火墙规则是在虚拟机防火墙规则之前生效的。
    这个防火墙的开关,不会影响VM的防火墙,所以要开启VM的防火墙,不必须开启这个防火墙,不同于数据中心防火墙
  3. 面对VM的防火墙:处理VM流出流出的流量。
    虚拟机防火墙规则是应用于单个Proxmox VE虚拟机或容器的防火墙规则。这些规则通常由虚拟机管理员配置,用于限制虚拟机或容器的网络访问。虚拟机防火墙规则是在主机防火墙规则之后生效的。
    总体来说,防火墙规则是按照集群规则、主机规则、虚拟机规则的顺序依次生效的。当一个数据包到达一个Proxmox VE虚拟机或容器时,首先会检查虚拟机的防火墙规则,如果没有匹配的规则,则检查主机的防火墙规则,最后检查集群的防火墙规则。如果在任意一层中找到了匹配的规则,则该数据包将被允许或拒绝。

每个虚拟网卡设备都有一个防火墙启用标识。可以控制每个网卡的防火墙启用状态。在设置启用虚拟机防火墙后,必须设置网卡上的防火墙启用标识才可以真正启用防火墙。

PVE dashboard05

图3.6:PVE dashboard05

4.3.1 GUI防火墙配置

  • 防火墙规则(Firewall Rules):防火墙规则定义了应该允许还是阻止的流量类型。规则可以基于源和目标IP、协议类型(如TCP、UDP、ICMP等)、源和目标端口等因素进行定义。规则的顺序非常重要,因为Proxmox VE防火墙会按照规则的顺序进行匹配,并在匹配到的第一个规则处停止。
  • 安全组(Security Groups):安全组是一组预定义的防火墙规则,可以应用于一个或多个虚拟机或容器。
  • IP集(IPSet):IPSet是一种可以匹配一组网络地址、网络端口或其他网络参数的机制。它可以用于创建复杂的、高效的防火墙规则。
  • 日志和审计(Logging and Auditing):Proxmox VE防火墙提供了详细的日志和审计功能,可以跟踪和记录防火墙的活动,包括被阻止的连接、被允许的连接等。
PVE dashboard06

图3.7:PVE dashboard06

4.3.2 配置文件

  • 数据中心防火墙
/etc/pve/firewall/cluster.fw
[OPTIONS]
该小节用于设置整个集群的防火墙配置项。

ebtables: <boolean> (default = 1)
集群范围内启用ebtables。

enable: <integer> (0 -N)
启用/禁用集群范围的防火墙。

log_ratelimit: [enable=]<1|0> [,burst=<integer>] [,rate=<rate>]
设置日志记录速度阀值。

burst=<integer> (0 - N) (default = 5)
将被记录的初始突发包。

enable=<boolean> (default = 1)
启用或禁用阀值

rate=<rate> (default = 1/second)
突发缓冲区重新填充频度。

policy_in: <ACCEPT | DROP | REJECT>
流入方向的防火墙策略。

policy_out: <ACCEPT | DROP | REJECT>
流出方向的防火墙策略。

[RULES]
该小节用于设置所有节点公共的防火墙策略。

[IPSET <name>]
整个集群范围内有效的IP集合定义。

[GROUP <name>]
整个集群范围内有效的组定义。

[ALIASES]
整个集群范围内有效的别名定义
  • 主机防火墙
/etc/pve/nodes/<nodename>/host.fw
[OPTIONS]
该小节用于设置当前主机的防火墙配置项。

enable: <boolean>
启用/禁用主机防火墙策略。

log_level_in: <alert | crit | debug | emerg | err | info | nolog | notice | warning>
流入方向的防火墙日志级别。

log_level_out: <alert | crit | debug | emerg | err | info | nolog | notice | warning>
流出方向的防火墙日志级别。

log_nf_conntrack: <boolean> (default = 0)
启用记录连接跟踪信息。

ndp: <boolean>
启用NDP。 

nf_conntrack_allow_invalid: <boolean> (default = 0)
在跟踪连接时允许记录不合法的包。

nf_conntrack_max: <integer> (32768 -N)
最大的跟踪连接数量。

nf_conntrack_tcp_timeout_established: <integer> (7875 -N)
反向连接建立超时时间。

nosmurfs: <boolean>
启用SMURFS过滤器。

smurf_log_level: <alert | crit | debug | emerg | err | info | nolog | notice | warning>
SMURFS过滤器日志级别。

tcp_flags_log_level: <alert | crit | debug | emerg | err | info | nolog | notice | warning>
非法TCP标志过滤器日志级别。

tcpflags: <boolean>
启用非法TCP标志组合过滤器。

[RULES]
该小节用于设置当前主机的防火墙策略。
  • VM和LXC的防火墙
/etc/pve/firewall/<VMID>.fw
[OPTIONS]
该小节用于设置当前虚拟机或容器的防火墙配置项。

dhcp: <boolean>
启用DHCP。

enable: <boolean>
启用/禁用防火墙策略。

ipfilter: <boolean>
启用默认IP地址过滤器。相当于为每个网卡接口增加一个空白的ipfilter-net<id>地址集合。
该IP地址集合隐式包含了一些默认控制,例如限制IPv6链路本地地址为网卡MAC生成的地址。对于容器,配置的IP地址将被隐式添加进去。

log_level_in: <alert | crit | debug | emerg | err | info | nolog | notice | warning>
流入方向的防火墙日志级别。

log_level_out: <alert | crit | debug | emerg | err | info | nolog | notice | warning>
流出方向的防火墙日志级别。

macfilter: <boolean>
启用/禁用MAC地址过滤器。

ndp: <boolean>
启用NDP。

policy_in: <ACCEPT | DROP | REJECT>
流入方向的防火墙策略。

policy_out: <ACCEPT | DROP | REJECT>
流出方向的防火墙策略。

radv: <boolean>
允许发出路由通知。

[RULES]
该小节用于设置当前虚拟机或容器的防火墙策略。

[IPSET <name>]
IP集合定义。

[ALIASES]
IP地址别名定义。

5 安装硬件开发部所需云环境实践

5.1 需求

需要安装15台虚拟机,并且所有虚拟机按照一定的规则能否挂载smb,并且Windows1对外访问以及对内访问没有限制,剩下的14台服务器不能访问外部网络,仅与宿主机和Windows1之间通信。

5.2 规划

宿主机服务器配置:amd 16核32线程处理器,128g内存,8T*2硬盘;宿主机网络配置为网桥模式, IP为192.168.52.200/24,网关为192.168.52.1。

虚拟机VMIDIP规格
Windows1100192.168.52.20116c16G
Windows2101192.168.52.2028C16G
Windows3102192.168.52.2038C16G
Windows4103192.168.52.2048C16G
Windows5104192.168.52.2058C16G
Windows6105192.168.52.2068C16G
Windows7106192.168.52.2078C16G
Windows8107192.168.52.2088C16G
Windows9108192.168.52.2098C16G
Windows10109192.168.52.2108C16G
Windows11110192.168.52.2118C16G
Windows12111192.168.52.2128C16G
Windows13112192.168.52.2138C16G
Windows14113192.168.52.2148C16G
Windows15114192.168.52.2158C16G
表4.1:虚拟机规划表

5.3 准备安装介质

官方网站下载最新版本的ISO镜像:Get the free Proxmox VE ISO installer(8.0.2),然后使用rufus将PVE镜像刻录到u盘后,在服务器以u盘方式引导启动。

下载Windows镜像,准备VirtIO驱动

5.4 安装PVE

  • 选择Install Proxmox VE(Graphical)。
PVE安装步骤

图4.1:PVE安装步骤01

  • 选择PVE安装的硬盘。
PVE安装步骤

图4.2:PVE安装步骤02

  • 设定时区。
PVE安装步骤

图4.3:PVE安装步骤03

  • 设置密码——既是Web登录密码也是服务器密码。
PVE安装步骤

图4.4:PVE安装步骤04

  • 配置FQDN以及IP地址,此处FQDN的第一部分为host名,如果安装集群的话,需要注意host不能冲突,否则集群无法加入,到此变安装完成, PVE的Web界面http://IP:8006/
PVE安装步骤

图4.5:PVE安装步05

5.5 安装Windows虚拟机

5.5.1 上传镜像到PVE

  • 登录Proxmox VE,在左边资源树中选择 local 存储 – 切换至 ISO Images – Upload。
VE镜像面板01

图4.6:PVE镜像面板01

  • 将Windows和VirtIO镜像上传上去。
PVE镜像面板

图4.7:PVE镜像面板02

  • 不能关闭上传页面否则上传失败。
PVE镜像面板03

图4.8:PVE镜像面板03

  • 上传完成后的结果。
PVE镜像面板04

图4.9:PVE镜像面板04

5.5.2 创建虚拟机

  • 在Proxmox VE界面的右上方 – 点击 Create VM。
图4.10:PVE VM创建01

图4.10:PVE VM创建01

  • General菜单这边配置好VMID以及Name。
图4.11:PVE VM创建02

图4.11:PVE VM创建02

图4.12:PVE VM创建03

图4.12:PVE VM创建03

  • System注意SCSI Controller选择VirtIO SCSI single。
图4.13:PVE VM创建04

图4.13:PVE VM创建04

  • Disks,选择VirtIO Block。
图4.14:PVE VM创建05

图4.14:PVE VM创建05

  • CPU这边Type选择host便于更好的性能,而KVM则是兼容性更好,规格的话按照之前规划配置。
图4.15:PVE VM创建06

图4.15:PVE VM创建06

  • Memory,由于所有虚拟机内存加起来超过宿主机内存,这边手动设置其最小内存,并且开启Ballooning,如3.6.4所述。
图4.16:PVE VM创建07

图4.16:PVE VM创建07

  • Network,Model选择VirtIO
图4.17:PVE VM创建08

图4.17:PVE VM创建08

  • 最后确认。
图4.18:PVE VM创建09

图4.18:PVE VM创建09

  • 附加驱动:切换到 Hardware – Add – CD/DVD Drive。
图4.19:PVE VM创建10

图4.19:PVE VM创建10

图4.19:PVE VM创建10

图4.19:PVE VM创建10

  • 然后开启,安装Windows系统,在磁盘这边,无法看到磁盘,则需要安装VirtIO驱动。
图4.21:驱动安装01

图4.21:驱动安装01

  • 安装驱动,浏览驱动文件位置——>选择 CD驱动器 virtio-win-0.1.221 – amd64 – w10,确定。
图4.23:驱动安装03

图4.22:驱动安装02

此时可以识别到硬盘

图4.23:驱动安装03

图4.23:驱动安装03

  • Windows系统安装完成后,很多驱动未安装,打开:资源管理器 – CD驱动器 virtio-win-0.1.221 文件夹,双击“virtio-win-guest-tools”进行安装。
图4.24:驱动安装04

图4.24:驱动安装04

图4.25:驱动安装05

图4.25:驱动安装05

至此安装完成,然后按照规划配置网络即可

  • 克隆虚拟机,以VM100为模板克隆出剩下的虚拟机,完成后,修改硬件规格配置,以及网络配置。
图4.26:虚拟机clone

图4.26:虚拟机clone

5.6 配置防火墙

  • 开启集群防火墙,允许所有内部虚拟机对外访问,并且允许外部ssh登录,访问80以及8006端口。
vi /etc/pve/firewall/cluster.fw [OPTIONS]

enable: 1

[RULES]

OUT ACCEPT -source 192.168.52.0/24 -log nolog
IN ACCEPT -i vmbr0 -p tcp -dport 80 -log nolog
IN ACCEPT -i vmbr0 -p tcp -dport 8006 -log nolog
IN SSH(ACCEPT) -i vmbr0 -log nolog
  • 配置Windows1防火墙,默认允许任何流量通过。
vi /etc/pve/firewall/100.fw
[OPTIONS]

enable: 1
policy_in: ACCEPT

[RULES]

OUT ACCEPT -log nolog
IN ACCEPT -log nolog
  • 配置Windows2-15防火墙,仅允许宿主机和windows1的流量流出流出。
vi /etc/pve/firewall/101.fw
[OPTIONS]

policy_in: REJECT
enable: 1
policy_out: ACCEPT

[RULES]

OUT ACCEPT -dest 192.168.52.201 -log nolog
OUT ACCEPT -dest 192.168.52.200 -log nolog
IN ACCEPT -source 192.168.52.201 -log nolog
IN ACCEPT -source 192.168.52.200 -log nolog

for (( i=101;i<115;i++ ));do cp $i.fw $i+1.fw;done

至此,所有虚拟机安装配置完成。

6 性能测试——使用pveperf进行测试

12345
cpu bogomips179214.72179214.72179214.72179214.72179214.72
regex/second32796603261539324982432231213263534
HD SIZE93.93 GB93.93 GB93.93 GB93.93 GB93.93 GB
BUFFERED READS188.33 MB/sec138.38 MB/sec134.17 MB/sec71.99 MB/sec
154.62 MB/sec
154.62 MB/sec
AVERAGE SEEK TIME9.15 ms19.01 ms12.30 ms27.26 ms23.27ms
FSYNCS/SECOND9.9533.4119.3029.4727.98
DNS EXT589.30 ms595.68 ms351.61 ms627.83 ms221.95 ms
DNS INT367.15 ms (PVE)594.21 ms (PVE)289.67 ms (PVE)317.43 ms (PVE)504.87 ms (PVE)
表6.1:性能测试结果
  • cpu bogomips:是一个基于时钟计数的测试,用于衡量系统CPU的性能。Proxmox VE的性能要求会随着使用场景和负载的不同而有所变化,但通常来说,CPU BOGOMIPS的值应该在100000以上。
  • regex/second: 每秒处理的正则表达式,通常该值应 >300000。
  • HD SIZE: 测试盘的大小,表中为系统盘,这个值与系统性能无关。
  • BUFFERED READS:缓存读取速度,是一个简单的硬盘读取测试指标,用于衡量硬盘的读取速度。现代硬盘的读取速度应该达到40MB/s以上。
  • AVERAGE SEEK TIME: (磁盘)平均巡道时间,是一个测试硬盘平均寻道时间的指标,用于衡量硬盘的读取速度。快速的SCSI硬盘的平均寻道时间可以达到小于8ms的值,而常见的IDE/SATA硬盘的平均寻道时间大概在15到20ms之间。
  • FSYNCS/SECOND: 一个文件系统同步操作的速度指标,用于衡量系统执行写入操作的性能。它反映了文件系统写入操作的速度,即文件系统将数据从内存缓存同步到磁盘的速度,对该值的最低要求是>200。

由于目前仅有两块机械硬盘且其中一块用作了samba,导致无法做raid,并且也无法使用WriteBack模式。

在WriteBack模式下,写操作会先被写入到主机页面缓存中——即写入脏页。当内存负载太高,需要回收内存,那么脏页可能将数据写入硬盘,或者达到了脏页的回收时间,那么也可以将脏页数据写入到硬盘,此时数据才算完整被写入。所以写入和读取都非常的高。

在没有writeback的模式下,结果如下:

root@aster:/tmp# grep -i "^cache\|dirty\|writeback:" /proc/meminfo
Cached:           392152 kB  是用于读取缓存的内存量。
Dirty:                20 kB    它表示要写入(即:已更改)的内存量。要回收此内存,系统必须将更改写出到磁盘。这意味着,根据底层IO子系统,脏页面回收可能会很慢。
Writeback:             0 kB    它是系统当前写入磁盘的内存量,这是内存负载(和脏页回收)和计时回收(最多30秒后,脏页被写回磁盘)的数据
  • DNS EXT:外部DNS 解析时间,的响应时间应该在100ms以下。
  • DNS INT: 内部DNS 解析时间,的响应时间应该在100ms以下。

根据五次pveperf脚本基准测试结果表明,目前服务器的CPU能够满足PVE性能要求,并且硬盘的读取速度也满足系统需求,但文件系统将数据从内存缓存同步到磁盘的速度不太理想,可以通过更换硬盘为更高写入速度的硬盘或者增加硬盘做硬raid来提升性能;网络方面DNS解析时间过长,可能会造成可能会导致客户端频繁发出DNS请求,并且访问网络资源的速度变慢。

7 参考资料

【1】Proxmox VE Administartion Guide
【2】Proxmox中文文档
【3】OVH Server benchmark
【4】Proxmox VE磁盘WriteBack性能调优和注意事项
【5】PVE开启硬件直通功能

A-lab-AI&HPC, A-lab-部署验证

对星融元产品感兴趣?

立即联系!

返回顶部

© 星融元数据技术(苏州)有限公司 苏ICP备17070048号-2