PVE黑群晖场景下的磁盘性能测试

黑群晖

Posted by Jinnrry on October 24, 2023

背景:黑群晖的内网SMB拷贝速度始终上不去,使用iperf3工具测试排查网络问题后开始排查硬盘问题。

为了找到问题根本,我耗时两天,进行了各种磁盘性能测试。

省流总结:随便什么姿势,随便选一个就行,性能区别不大(我主板只有一个SATA控制器,没测直通控制器,但是按网上说的,区别也不大)

设备:

物理机: CPU:D1581 内存:128G 2133 MHz ECC 磁盘:3T HDD 7200转 垂直盘 * 2

虚拟机: 4核CPU 8G内存

系统:arpl+DSM7.2.1

首先,我采用最普遍的方式,PVE把2块磁盘全盘映射到虚拟机,然后进行测试(由于磁盘测试耗时实在是太长了,因此下面所有测试都只跑了4K随机读取性能):

RAID 文件系统 数据完整性校验 压缩 读取性能
RAID1 Ext4 不支持 不支持 3757KiB/s
RAID1 Btrfs 开启 开启 3692KiB/s
RAID1 Btrfs 开启 不开启 3752KiB/s
RAID1 Btrfs 不开启 不开启 3798KiB/s
RAID0 Ext4 不支持 不支持 3947KiB/s

这个结果可以说明好几个问题:

1、btrfs和ext4性能差异不大

2、btrfs开不开群晖的压缩(我不知道他用的哪种算法),开不开完整校验,性能差距不大

3、群晖中,Raid0和Raid1都能够优化磁盘读取性能,都接近2N的速度

接着,为了做对照,同样的宿主机下,把同样的2块磁盘通过全盘映射的方式挂到debian系统下面测试,这里我偷懒了,没配RAID,只挂了一块盘,测试

RAID 文件系统 数据完整性校验 压缩 读取性能
Ext4 不支持 不支持 2142KiB/s

这个测试数据基本说明了群晖Raid0和Raid1确实提升了磁盘读取速度。

到这里,我原帖Copy速度为啥跑不上去的根源基本上找到了。但是!我还有一个疑问,那就是我第一个测试结果,我的磁盘是怎么跑到400Mib/s的?我当时绝对跑出那个速度了,但是后续为啥复现不出来了呢?

我仔细回忆了当时的测试步骤,当时应该是刚刚装好系统,当时是PVE使用ZFS建的磁盘组,然后建了一个虚拟磁盘给虚拟机,当时想着群晖装fio不方便,就直接拿Debian测试了,想着测磁盘性能,应该和操作系统没关系。

于是又进行测试,宿主机使用ZFS文件系统,Raid1阵列

操作系统 宿主机文件系统 宿主机压缩 虚拟机文件系统 读取性能
debian ZFS lz4 ashift 12 Ext4 61.5MiB/s
debian ZFS lz4 ashift 9 Ext4 439MiB/s
DSM ZFS lz4 ashift 9 Ext4 54.7MiB/s
DSM ZFS lz4 ashift 9 Btrfs 53.1MiB/s
DSM ZFS lz4 ashift 9 Ext4 On Raid0 64.4MiB/s

这里也能看出一个问题,宿主机使用阵列后,虚拟机再组阵列就不能达到2N的速度了

到这来,400+的读取速度复现出来了。我盲猜一波,造成这种问题的原因应该是Fio写入的测试数据都是重复的值,ZFS开启压缩算法后直接给去重了,读取性能约等于解压性能。

但是,我还有一点纳闷,DSM在ZFS虚拟盘的场景下,读取性能还是不如Debian,Debian能跑到400+,群晖才50+,原因未知,有请大佬分析。