fanmen
作者fanmen·2021-06-21 14:06
存储工程师·某农商银行

浪潮K1 Power Linux容器云存储测试报告

字数 7923阅读 8208评论 4赞 11

1. 背景和需求

近年来,我行联机交易业务量和数据量随着移动支付的发展而快速增长,手机银行、网银等互联网金融业务的创新,使得业务种类更加灵活、多样,人工智能、物联网等创新技术与金融行业的融合,使得业务场景更加敏捷、丰富,同时也会产生大量场景化、碎片化、移动化的非结构数据。业务品种、业务量、业务数据爆炸式的增长,给 IT 系统基础架构带来了很大的压力,我行积极在云化、分布式存储、开源数据库及新型数据库等基础架构方面进行相关调研和尝试,为建立灵活开放、高效协同、安全稳定的 IT 架构体系做技术储备。

Ceph 是当前非常流行的开源分布式存储系统,可以在单一平台上提供对象、块和文件系统存储。目前我行已经在开发测试中使用了 Ceph 作为开发测试平台的存储,主要为虚拟化平台提供 Datastore ,几乎所有系统的开发测试应用及数据库均有使用,主要为 rbd+iscsi 的方式。容器云平台目前也已经调研过多家商用平台,最后选定业内排名第一的 OpenShift ,计划未来一到两年,基于 OpenShift 容器云平台在开发测试环境完成上线。大部分新建系统,在条件具备的情况下,都会在容器云上尝试部署。部分具备条件的现有系统也会尝试向容器云迁移,例如直销银行、全媒体等。

OpenShift 和 Ceph 的使用场景在容器云环境中具有相当的代表性,也是本次测试选择的组合,我们希望可以验证容器云平台使用 Ceph 相关接口和场景,并且对容器和物理机对接分布式块存储做性能对比。

2. 测试方案设计

测试环境的设计,我们需要构建一个 OpenShift 容器云平台,一套 Ceph 分布式存储集群, OpenShift 容器云平台使用 cephfs 和 rbd 来作为存储,进行功能验证和性能测试。

硬件最终选用浪潮商用机器 K1 Power Linux 服务器 FP5280G2 和 FP5466G2 共 5 台, 1 台 FP5280G2 部署 OpenShift 集群, 1 台 FP5280G2 用作客户端压力机, 3 台 FP5466G2 用于部署 Ceph 分布式存储集群。

测试内容中功能主要是 cephfs 和 rbd 的在线扩容、快照和克隆,性能主要为 4k 读、 4k 写、 4k 读写(写 20% )。

3. 测试环境

3.1. 软硬件环境

OCP 及 Ceph 软件版本:

OpenShift 支持的存储类型接口详见附表 1

Ceph 集群配置

3.2. 环境配置

  • RBD : rbdpool
  • CephFS : hddpool metadatapool
  • Ceph 集群 public 网络: 10.152.20.0/24
  • cluster 网络 192.168.10.0/24
  • OCP 通过 10.152.20.0/24 网段与 Ceph 集群通信

3.3. Ceph-CSI 搭建

  • 下载相关镜像

  • 下载软件制作镜像

操作步骤请参考以下文档:

https://github.com/powerlsr/ocp-ceph/blob/main/ceph-csi%E6%90%AD%E5%BB%BA.txt

4. 容器云存储功能测试

4.1. CephFS 快照

操作步骤请参考以下文档:

https://github.com/powerlsr/ocp-ceph/blob/main/%E5%88%9B%E5%BB%BAcephfs%E5%BF%AB%E7%85%A7.txt

  • 查看 ceph 上的快照
# oc get pvc cephfs-pvc-test-1
NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS    AGE
cephfs-pvc-test-1   Bound    pvc-fe16865e-73e5-41a0-b25f-f689689325a9   6Gi        RWO            csi-cephfs-sc   3d8h
# oc get pv  pvc-fe16865e-73e5-41a0-b25f-f689689325a9  --template {{.spec.csi.volumeAttributes.subvolumeName}}
csi-vol-ff6a2fd2-48f0-11eb-af6f-0a580abc021a

# ceph fs subvolume snapshot ls cephfs csi-vol-ff6a2fd2-48f0-11eb-af6f-0a580abc021a csi
[
    {
        "name": "csi-snap-81a2894f-4b85-11eb-8689-0a580abc021b"
    }
]
# ceph fs  subvolume snapshot info  cephfs csi-vol-ff6a2fd2-48f0-11eb-af6f-0a580abc021a csi-snap-81a2894f-4b85-11eb-8689-0a580abc021b csi
{
    "created_at": "2021-01-01 00:31:07.223110",
    "data_pool": "cephfsdatapool",
    "has_pending_clones": "no",
    "size": 13
}

4.2. RBD 快照

操作步骤请参考以下文档:

https://github.com/powerlsr/ocp-ceph/blob/main/%E5%88%9B%E5%BB%BArbd%E5%BF%AB%E7%85%A7.txt

  • 查看 ceph 上的 rbd 快照 snapshot_count: 1
# oc get pvc | grep test | grep rbd
rbd-pvc-test-1                 Bound         pvc-c962d9f8-d369-4220-b32c-a2192067f076   6Gi        RWO            csi-rbd-sc      32h
# oc get pv pvc-c962d9f8-d369-4220-b32c-a2192067f076  --template {{.spec.csi.volumeAttributes.imageName}}
csi-vol-ad53e44d-4a7e-11eb-8b7e-0a580abd0212
# rbd info rbdpool/csi-vol-ad53e44d-4a7e-11eb-8b7e-0a580abd0212
rbd image 'csi-vol-ad53e44d-4a7e-11eb-8b7e-0a580abd0212':
        size 6 GiB in 1536 objects
        order 22 (4 MiB objects)
        snapshot_count: 1
        id: 456c3fd86a570
        block_name_prefix: rbd_data.456c3fd86a570
        format: 2
        features: layering, operations
        op_features: clone-parent, snap-trash
        flags:
        create_timestamp: Wed Dec 30 17:09:44 2020
        access_timestamp: Fri Jan  1 01:51:58 2021
        modify_timestamp: Wed Dec 30 17:09:44 2020

4.3. CephFS 克隆

操作步骤参考以下文档:

https://github.com/powerlsr/ocp-ceph/blob/main/cephfs%E5%85%8B%E9%9A%86.txt

  • 查看 clone pvc 的数据,并写入数据
# echo clone >> 1
/tmp # cat 1
before
after
clone

4.4. RBD 克隆

操作步骤参考以下文档:

https://github.com/powerlsr/ocp-ceph/blob/main/rbd%E5%85%8B%E9%9A%86.txt

4.5. CephFS 在线扩容

操作步骤参考以下文档:

https://github.com/powerlsr/ocp-ceph/blob/main/cephfs%E5%9C%A8%E7%BA%BF%E6%89%A9%E5%AE%B9.txt

  • 确认扩容成功
# oc get pvc cephfs-pvc-test-1
NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS    AGE
cephfs-pvc-test-1   Bound    pvc-fe16865e-73e5-41a0-b25f-f689689325a9   18Gi       RWO            csi-cephfs-sc   6d21h

4.6. RBD 动态扩容

操作步骤参考以下文档:

https://github.com/powerlsr/ocp-ceph/blob/main/rbd%E5%8A%A8%E6%80%81%E6%89%A9%E5%AE%B9.txt

  • 确认扩容成功 , 由于块设备扩容还需要扩容文件系统,所以时间会比较久一些
# oc get pvc rbd-pvc-test-1
NAME             STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
rbd-pvc-test-1   Bound    pvc-c962d9f8-d369-4220-b32c-a2192067f076   18Gi       RWO            csi-rbd-sc     4d22h

5. 性能测试

5.1. Ceph 性能测试

  • 登录压力测试机
# ssh 10.152.15.42
  • 安装 ceph-common-12.2.11-0.el7.ppc64le
yum install ceph-common
  • 拷贝 ceph 集群的 ceph.conf 及 admin 的 key
scp 10.152.20.50:/etc/ceph/ceph.conf /etc/ceph/
# scp 10.152.20.50:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
  • 创建 rbd image
# rbd create rbdpool/rbdtest --size 20480
  • 映射 image
# rbd map rbdpool/rbdtest 
# rbd showmapped 
id pool image snap device 
0 rbdpool rbdtest - /dev/rbd0
  • 格式化并挂载
# mkfs -t ext4 /dev/rbd0 
# mount /dev/rbd0 /data
  • 测试项目一 :
  • 测试项目
  • 4k 随机写
  • 测试脚本
- fio -filename=/data/fiotest1 -direct=1 -iodepth 2 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=50 -runtime=60 -name=fio_randread4k -group_reporting
  • 测试结果
IOPS: 6409 - BW: 25.0MiB/s - LAT: min=696, max=1415.4k, avg=15583.58, stdev=55881.34
  • 测试项目二 :
  • 4k 随机读
  • 测试脚本
fio -filename=/data/fiotest1 -direct=1 -iodepth 2 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=50 -runtime=60 -name=fio_randwrite4k -group_reporting
  • 测试结果
- IOPS: 32.1k - BW: 125MiB/s - LAT: min=7, max=13707, avg=3108.38, stdev=1456.98
  • 测试项目三 :
  • 4k 随机写, 20% 写
  • 测试脚本
- fio -filename=/data/fiotest1 -direct=1 -iodepth 2 -rw=randrw -rwmixwrite=20 -ioengine=libaio -bs=4k -size=1G -numjobs=50 -runtime=60 -name=fio_randrw4k -group_reporting
  • 测试结果
IOPS write: 4212 - IOPS read: 16.8k - BW write: 16.5MiB/s - BW read : 65.7MiB/s - LAT write: min=717, max=575125, avg=6605.51, stdev=25104.31 - LAT read : min=7, max=596678, avg=4281.64, stdev=19703.22

5.2. 容器中的 Ceph 性能测试

  • 新建性能测试用 pvc rbd-pvc-ptest-1
# cat >> rbd-pvc-ptest-1.yaml << EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: rbd-pvc-ptest-1 spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: csi-rbd-sc EOF # oc apply -f rbd-pvc-ptest-1.yaml
  • 新建性能测试用 pod
test-pod-1.yaml << EOF apiVersion: v1 kind: Pod metadata: name: rbd-ptest-pod-1 namespace: default spec: containers: - command: image: centos tty: true name: mysql volumeMounts: - mountPath: /data name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: rbd-pvc-ptest-1 EOF # oc apply -f rbd-ptest-pod-1.yaml # oc rsh rbd-ptest-pod-1
  • 测试项目一 :
  • 测试项目
  • 4k 随机写
  • 测试脚本
- fio -filename=/data/fiotest1 -direct=1 -iodepth 2 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=50 -runtime=60 -name=fio_randread4k -group_reporting
  • 测试结果
IOPS: 6047 - BW: 23.6MiB/s - LAT: min=684, max=814875, avg=16518.81, stdev=48518.86
  • 测试项目二 :
  • 4k 随机读
  • 测试脚本
fio -filename=/data/fiotest1 -direct=1 -iodepth 2 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=50 -runtime=60 -name=fio_randwrite4k -group_reporting
  • 测试结果
IOPS: 30.4k - BW: 119MiB/s - LAT: min=5, max=323491, avg=3282.20, stdev=3044.63
  • 测试项目三 :
  • 4k 随机写, 20% 写
  • 测试脚本
fio -filename=/data/fiotest1 -direct=1 -iodepth 2 -rw=randrw -rwmixwrite=20 -ioengine=libaio -bs=4k -size=1G -numjobs=50 -runtime=60 -name=fio_randrw4k -group_reporting
  • 测试结果
IOPS write: 3174 - IOPS read: 12.7k - BW write: 12.4MiB/s - BW read : 49.6MiB/s - LAT write: min=717, max=601613, avg=8937.87, stdev=31338.40 - LAT read : min=5, max=625524, avg=5608.13, stdev=24048.41

5.3. 性能对比


本次测试基于千兆网络环境

6. 测试结论

本次测试基于 K1 Power 容器云存储平台,测试验证了分布式文件存储和块存储在容器应用场景下的在线扩容、快照、克隆等生产环境常用功能,其中容器云后端存储采用开源统一分布式存储系统 Ceph ,提供了高性能,高可用性,高扩展性,作为 OpenShift 容器云平台后端存储可以保证数据的高可用性,验证了 ceph 作为容器云平台存储的可行性。从性能测试结果来看,容器内 rbd 块设备性能与物理机 rbd 块设备性能相比,大概有 6% 的损耗。在容器环境中 4k 小文件读 IOPS 达到 3W 以上,得益于 K1 Power Linux 服务器采用 POWER9 处理器,支持 SMT4 ,整机物理线程多达 176 ,特别是在小文件处理场景下能快速的响应高并发的前端 I/O 请求。

附表一:


RWX = read-write many (shared)
* Dependent on containerized Spectrum Scale (GA in 4Q)

RWO = read-write only (dedicated)
* Planned for OCP/OCS 4,6

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

11

添加新评论4 条评论

zwz99999zwz99999系统工程师dcits
2021-06-30 10:25
比较实用的一篇文章,值得借用
chengliangliangchengliangliang系统架构师某大型保险
2021-06-29 10:55
感谢作者的专业测试报告,从中可以更多了解分布式文件存储和块存储在容器应用场景下的在线扩容、快照、克隆等生产环境常用功能,验证了 Ceph 作为容器云平台存储的可行性。后续我们也可以试试容器环境下用ceph尝试下。
skey_dengskey_deng系统运维工程师某农商业银行股份有限公司
2021-06-29 10:36
详细拜读了大神的文章,收益颇多,非常感谢。 在这里有几个问题需要了解下: 咱们的这个测试环境使用的带宽较低,测试的数据也稍微差了一些,我们之前做存储测试远大于这个测试结果,即使我当前的服务器其读写也远大于这个结果,我想知道如果带宽换成10GB的,或者使用FC、infiniband等传输方式,那么这个性能的测试结果是否会正比例增加? 还有这次的测试没有进行功能性故障测试,那么在开发测试环境使用过程中是否出现了哪些问题,需要后继者慎重考虑? 非常感谢大神的分享。
匿名用户
2021-06-24 14:43
测试过程详细,测试手册写的也很好,能够提供很好的参考,社区需要多分享类似文章。多对不同厂家的产品和方案进行测试或者实际使用分析对比。
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广