安装指导-基于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架构图:
图1.1:PVE架构
由以下几个组件构成:
- Proxmox VE管理界面:提供了易于使用的Web界面,用于管理虚拟机、容器、存储、网络和集群等。
- KVM虚拟化:Proxmox VE基于Linux内核虚拟机(KVM)技术实现了完整的虚拟化,并支持Windows和Linux等操作系统的虚拟化。
- LXC容器:Proxmox VE支持Linux容器(LXC)技术,可以在同一物理主机上运行多个隔离的Linux容器,从而提供更高的资源利用率和更快的启动时间。
- 存储管理:Proxmox VE支持多种存储类型,包括本地存储、网络存储(NFS、iSCSI、FC)、对象存储(Ceph、Swift)等,可以通过Web界面方便地管理存储池、卷和镜像等。
- 网络管理:Proxmox VE支持多种网络模式,包括桥接、NAT、VLAN、OpenvSwitch等,可以通过Web界面方便地管理虚拟网络接口、虚拟交换机和虚拟网络等。
- 集群管理:Proxmox VE支持多台物理主机组成的集群,可以通过Web界面方便地管理节点、HA、负载均衡等。
- API:Proxmox VE提供RESTful API,可以通过API方便地进行自动化管理和集成。
2.2 功能特性与ESXi对比
功能/特性 | Proxmox VE | ESXi |
---|---|---|
许可证费用 | 开源免费 | 商业许可证 |
支持的虚拟化技术 | KVM, LXC | VMware 虚拟化技术 |
界面和管理工具 | Web 界面管理工具 | 客户端界面 |
高可用性 (HA) | 支持 | 支持 |
备份与恢复 | 完整备份和恢复方案,包括快照 | 完整备份和恢复方案,包括快照 |
存储管理 | 多种存储管理方式,包括本地存储、NFS、iSCSI 和 Ceph 等 | 多种存储管理方式,包括本地存储、NFS、iSCSI 和 Fibre Channel 等 |
网络管理 | 多种网络管理方式,包括 NAT、桥接和 VLAN 等 | 多种网络管理方式,包括 NAT、桥接和 VLAN 等 |
安全性 | 基于角色的用户访问控制、防火墙和 TLS 加密等 | 基于角色的用户访问控制、防火墙和 TLS 加密等 |
社区支持 | 活跃的社区支持和开发者社区 | 有活跃的用户和支持社区 |
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驱动。
图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
4.2.3 CPU
需要确保虚拟机的在线迁移能力,最好使用默认的kvm64虚拟CPU。如果不在乎在线迁移,或者集群内所有节点硬件型号完全一样,可以设置虚拟CPU类型为host,以获得最好的性能。
如果所有 VM 的内核总数大于服务器上的核心数(例如,在只有 8 个内核的计算机上有 4 个 VM,每个 4 个内核),则是完全安全的。在这种情况下,主机系统将在服务器内核之间平衡 Qemu 执行线程,就像运行标准的多线程应用程序一样。但是,Proxmox VE 将阻止启动虚拟 CPU 内核数多于物理可用内核的虚拟机,因为这只会由于上下文切换的成本而降低性能。
图3.4:PVE dashboard03
4.2.4 内存
当设置内存容量和最小内存容量为相同值时,Proxmox VE将为虚拟机分配固定容量内存。即使使用固定容量内存,也可以在虚拟机启用ballooning设备,以监控虚拟机的实际内存使用量。
当设置的最小内存容量低于设置的内存容量值时,Proxmox VE将为虚拟机至少分配设置的最小容量内存,并在物理服务器内存占用率达到80%之前根据虚拟机需要动态分配内存,直到达到设置的最大内存分配量。当物理服务器内存不足时,Proxmox VE将开始回收分配给虚拟机的内存,并在必要时启动SWAP分区,如果仍然不能满足需要,最终将启动oom进程杀掉部分进程以释放内存。物理服务器和虚拟机之间的内存分配和释放通过虚拟机内的balloon驱动完成,该驱动主要用于从主机抓取或向主机释放内存页面。
图3.5:PVE dashboard04
4.3 防火墙配置
PVE有3种防火墙:
- 面对数据中心的防火墙:处理流出流入数据中心的流量。
集群防火墙规则是应用于整个Proxmox VE集群的防火墙规则。这些规则通常由集群管理员配置,用于限制集群中所有主机和虚拟机的网络访问。集群防火墙规则是在集群中所有主机的防火墙规则之前生效的。
只有数据中心防火墙开启,才能开启集群内的防火墙,否则单独开启VM的防火墙是无效的。 - 面对虚拟化服务器的防火墙:处理主机的流量。
主机防火墙规则是应用于单个Proxmox VE主机的防火墙规则。这些规则通常由主机管理员配置,用于限制主机上所有虚拟机和容器的网络访问。主机防火墙规则是在虚拟机防火墙规则之前生效的。
这个防火墙的开关,不会影响VM的防火墙,所以要开启VM的防火墙,不必须开启这个防火墙,不同于数据中心防火墙 - 面对VM的防火墙:处理VM流出流出的流量。
虚拟机防火墙规则是应用于单个Proxmox VE虚拟机或容器的防火墙规则。这些规则通常由虚拟机管理员配置,用于限制虚拟机或容器的网络访问。虚拟机防火墙规则是在主机防火墙规则之后生效的。
总体来说,防火墙规则是按照集群规则、主机规则、虚拟机规则的顺序依次生效的。当一个数据包到达一个Proxmox VE虚拟机或容器时,首先会检查虚拟机的防火墙规则,如果没有匹配的规则,则检查主机的防火墙规则,最后检查集群的防火墙规则。如果在任意一层中找到了匹配的规则,则该数据包将被允许或拒绝。
每个虚拟网卡设备都有一个防火墙启用标识。可以控制每个网卡的防火墙启用状态。在设置启用虚拟机防火墙后,必须设置网卡上的防火墙启用标识才可以真正启用防火墙。
图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防火墙提供了详细的日志和审计功能,可以跟踪和记录防火墙的活动,包括被阻止的连接、被允许的连接等。
图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。
虚拟机 | VMID | IP | 规格 |
---|---|---|---|
Windows1 | 100 | 192.168.52.201 | 16c16G |
Windows2 | 101 | 192.168.52.202 | 8C16G |
Windows3 | 102 | 192.168.52.203 | 8C16G |
Windows4 | 103 | 192.168.52.204 | 8C16G |
Windows5 | 104 | 192.168.52.205 | 8C16G |
Windows6 | 105 | 192.168.52.206 | 8C16G |
Windows7 | 106 | 192.168.52.207 | 8C16G |
Windows8 | 107 | 192.168.52.208 | 8C16G |
Windows9 | 108 | 192.168.52.209 | 8C16G |
Windows10 | 109 | 192.168.52.210 | 8C16G |
Windows11 | 110 | 192.168.52.211 | 8C16G |
Windows12 | 111 | 192.168.52.212 | 8C16G |
Windows13 | 112 | 192.168.52.213 | 8C16G |
Windows14 | 113 | 192.168.52.214 | 8C16G |
Windows15 | 114 | 192.168.52.215 | 8C16G |
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)。
图4.1:PVE安装步骤01
- 选择PVE安装的硬盘。
图4.2:PVE安装步骤02
- 设定时区。
图4.3:PVE安装步骤03
- 设置密码——既是Web登录密码也是服务器密码。
图4.4:PVE安装步骤04
- 配置FQDN以及IP地址,此处FQDN的第一部分为host名,如果安装集群的话,需要注意host不能冲突,否则集群无法加入,到此变安装完成, PVE的Web界面http://IP:8006/。
图4.5:PVE安装步05
5.5 安装Windows虚拟机
5.5.1 上传镜像到PVE
- 登录Proxmox VE,在左边资源树中选择 local 存储 – 切换至 ISO Images – Upload。
图4.6:PVE镜像面板01
- 将Windows和VirtIO镜像上传上去。
图4.7:PVE镜像面板02
- 不能关闭上传页面否则上传失败。
图4.8:PVE镜像面板03
- 上传完成后的结果。
图4.9:PVE镜像面板04
5.5.2 创建虚拟机
- 在Proxmox VE界面的右上方 – 点击 Create VM。
图4.10:PVE VM创建01
- General菜单这边配置好VMID以及Name。
图4.11:PVE VM创建02
图4.12:PVE VM创建03
- System注意SCSI Controller选择VirtIO SCSI single。
图4.13:PVE VM创建04
- Disks,选择VirtIO Block。
图4.14:PVE VM创建05
- CPU这边Type选择host便于更好的性能,而KVM则是兼容性更好,规格的话按照之前规划配置。
图4.15:PVE VM创建06
- Memory,由于所有虚拟机内存加起来超过宿主机内存,这边手动设置其最小内存,并且开启Ballooning,如3.6.4所述。
图4.16:PVE VM创建07
- Network,Model选择VirtIO
图4.17:PVE VM创建08
- 最后确认。
图4.18:PVE VM创建09
- 附加驱动:切换到 Hardware – Add – CD/DVD Drive。
图4.19:PVE VM创建10
图4.19:PVE VM创建10
- 然后开启,安装Windows系统,在磁盘这边,无法看到磁盘,则需要安装VirtIO驱动。
图4.21:驱动安装01
- 安装驱动,浏览驱动文件位置——>选择 CD驱动器 virtio-win-0.1.221 – amd64 – w10,确定。
图4.22:驱动安装02
此时可以识别到硬盘
图4.23:驱动安装03
- Windows系统安装完成后,很多驱动未安装,打开:资源管理器 – CD驱动器 virtio-win-0.1.221 文件夹,双击“virtio-win-guest-tools”进行安装。
图4.24:驱动安装04
图4.25:驱动安装05
至此安装完成,然后按照规划配置网络即可
- 克隆虚拟机,以VM100为模板克隆出剩下的虚拟机,完成后,修改硬件规格配置,以及网络配置。
图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进行测试
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
cpu bogomips | 179214.72 | 179214.72 | 179214.72 | 179214.72 | 179214.72 |
regex/second | 3279660 | 3261539 | 3249824 | 3223121 | 3263534 |
HD SIZE | 93.93 GB | 93.93 GB | 93.93 GB | 93.93 GB | 93.93 GB |
BUFFERED READS | 188.33 MB/sec | 138.38 MB/sec | 134.17 MB/sec | 71.99 MB/sec 154.62 MB/sec | 154.62 MB/sec |
AVERAGE SEEK TIME | 9.15 ms | 19.01 ms | 12.30 ms | 27.26 ms | 23.27ms |
FSYNCS/SECOND | 9.95 | 33.41 | 19.30 | 29.47 | 27.98 |
DNS EXT | 589.30 ms | 595.68 ms | 351.61 ms | 627.83 ms | 221.95 ms |
DNS INT | 367.15 ms (PVE) | 594.21 ms (PVE) | 289.67 ms (PVE) | 317.43 ms (PVE) | 504.87 ms (PVE) |
- 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开启硬件直通功能