使用SSD增强Ceph性能并对比测试
几年前,用Proxmox Virtual Environment(一个VMWare Vsphere的开源替代,以后简称PVE)搭建了一个测试云平台,使用了PVE自带的分布式存储Ceph。加上PVE自带的KVM虚拟机和LXC容器,再配置了虚拟交换机Open vSwitch,勉强算是一个所谓的超融合构架。
当时没有考虑存储性能的问题,只是用一个万兆交换机把几个节点的几十块磁盘链接起来,后来在使用中感觉读取速度还行,写入确实太慢了。翻了些关于ceph的优化的文章,最好的办法是使用固态硬盘作为日志和缓存。
这次给每台主机增加了一块400G的固态硬盘,对比测试发现ceph的读写性能明显提升。测试不是很专业的评测,但对一般中小型企业,足够参考了。
测试
下面是比较测试结果,操作系统分别为windows 2003SP1 / win7SP1 / RedHat Enterprise Linux Enterprise Server release 5.11 (Carthage)

HD tune测试读性能的结果
测试项目 | 最小(MB/s) | 最大(MB/s) | 平均(MB/s) |
|---|---|---|---|
ceph | 8.7 | 128.2 | 87 |
Adaptec Raid1 | 44.7 | 85.3 | 79 |
可见物理存储性能稳定,而虚拟存储会根据软件调用爆发。下面CrystalDiskMark的测试结果显示ceph的写性能也强于物理存储。




HD tune测试性能的结果(连续读写)
测试项目(Sequent) | Read(KB/s) | Write(KB/s) |
|---|---|---|
ceph | 2313964 | 23923 |
zfs raidz1 | 874807 | 25362 |
MegaRAID Raid5 | 1534464 | 3818681 |
HD tune测试性能的结果(4K随机读写)
测试项目(4KB random) | Read(IOPS) | Write(IOPS) |
|---|---|---|
ceph | 9221/115191 | 94/97 |
zfs raidz1 | 3521/32701 | 80/84 |
MegaRAID Raid5 | 9751/93914 | 4760/16415 |
读性能上ceph是最高的,写性能上还是硬件阵列卡强得多,这也是分布式存储的必然缺陷,毕竟纯软件写入三块磁盘才算完成。
这台虚拟机部分磁盘使用本地存储,部分磁盘使用ceph,如下图

在两个不同的路径分别创建文件,其中/test.img在ceph上,/u01/test.img在本地磁盘阵列(MegaRAID Raid5)上。
写测试使用命令:
其中bs分别设置为1024、4096和1M
dd if=/dev/zero of=/test.img bs=1024 count=1000通过参数“oflag=dsync”测试不使用缓存的情况:
dd if=/dev/zero of=/test.img bs=1G count=1 oflag=dsync读测试使用写测试生成的文件:
dd if=/dev/zero of=/test.img bs=1G count=1同样通过参数“oflag=dsync”测试不使用缓存的情况:
dd if=/dev/zero of=/test.img bs=1G count=1 oflag=direct注意每次读测试先清除系统内存的数据缓存:
echo 3 | tee /proc/sys/vm/drop_caches测试结果如下:
写性能比较测试
测试项 | 有缓存1024 | 有缓存2048 | 有缓存4096 | 有缓存1M | 无缓存1G | 无缓存1M | 无缓存1024 | |
|---|---|---|---|---|---|---|---|---|
Raid5 | 452 MB/s | 668 MB/s | 927 MB/s | 1.2 GB/s | 207 MB/s | 478 MB/s | 1.8 MB/s | |
Ceph | 405 MB/s | 665 MB/s | 906 MB/s | 1.2 GB/s | 9.8 MB/s | 7.7 MB/s | 39.9 kB/s |
读性能比较测试
测试项 | 有缓存1G | 有缓存1M | 无缓存1G |
|---|---|---|---|
Raid5 | 1.5 GB/s | 2.2 GB/s | 1.1 GB/s |
Ceph | 1.9 GB/s | 4.2 GB/s | 7.4 MB/s |
有缓存的情况下,硬件阵列卡写性能略胜,ceph读性能大胜(应该是分布式读取的好处)。
无缓存的情况下,ceph无论读写性能简直惨不忍睹。
通过上面的测试,大家都能感受到缓存对存储性能的巨大提升,我们也能更好的理解为什么存储硬件商们纷纷宣传自己的SSD缓存了。
最后总结:
# pveversion -v
proxmox-ve: 5.4-2 (running kernel: 4.15.18-19-pve)
pve-manager: 5.4-13 (running version: 5.4-13/aee6f0ec)
pve-kernel-4.15: 5.4-7
....
ceph: 12.2.12-pve1
...
qemu-server: 5.0-54
...
zfsutils-linux: 0.7.13-pve1~bpo2WIN7中有个winsat可以测试硬件性能,我也用它测试了磁盘,只是生成的xml文件太多行,眼睛都看花了,有兴趣的朋友可以自己试试,下面是测试D盘的例子:
winsat disk -flush -drive d -xml d:\raidN8.txt