UOS操作系统Ceph集群性能测试工具对比研究
2022-05-30康克松张庆海信寄遥赵正旭
康克松,张庆海,信寄遥,赵正旭
(1.石家庄铁道大学 信息科学与技术学院,河北 石家庄 050043;2.青岛理工大学 机械与汽车工程学院,山东 青岛 266071)
0 引 言
国内的电脑操作系统起步晚、生态不完善,同主流操作系统存在一定差距。但是,随着国家对加快发展自主可控战略高新技术和重要领域核心关键技术决策的提出,中国涌现出了像深度系统、中标麒麟、红旗、UOS操作系统等一大批优秀的国产操作系统[1]。其中,UOS操作系统是一款通过统一多方平台、整合各种资源,由多家操作系统核心企业共同打造的操作系统,相比其他操作系统具备界面美观、操作灵活、性能稳定、生态良好等优点[1-2]。
该文对UOS国产操作系统现状进行了调研分析,在该系统上使用Docker容器部署Ceph分布式存储系统以及通过使用不同工具对其IO进行测试,得出各测试工具的优缺点,进而对国产操作系统进行推广,以期为国产操作系统在民用办公、科研应用领域提供有价值的参考。
1 UOS操作系统
统信操作系统UOS(Unity Operating System,简称统信UOS/UOS操作系统)是一款流畅方便、安全可靠、软件生态相对完善的中文国产操作系统。统信UOS以Linux内核为基础开发,具备统一的版本、统一的支撑平台、标准规范,自带统一的开发接口、应用商店和仓库、文档。在架构方面可支持X86、MIPS以及ARM三种架构,可支持配备龙芯、飞腾、海光、兆芯等国产芯片的电脑主机。
目前国产操作系统大都以开源的Linux系统为内核进行开发、汉化,虽然并没有脱离原有的内核,但由于Linux拥有良好的生态,使得国产操作系统取得了一定的发展[3]。目前国内民用程度较高的几款操作系统分别为银河麒麟、中标麒麟、深度操作系统、UOS操作系统。其对比见表1。
表1 国产操作系统对比
通过表1对比可以得出,国产操作系统中UOS操作系统对于民用领域更加友好,拥有统一自带的软件商店、更符合国人使用习惯的操作界面,以及良好的软件生态,这些优点完全可以满足日常办公和科研需要等场景的需求。
2 分布式存储-Ceph
2.1 集中式和分布式系统
根据管理信息系统的硬件、软件、数据等信息资源在空间的分布情况,系统的结构可分为集中式和分布式两大类型。在讨论分布式系统之前,首先需要了解与之对应的集中式系统。集中式系统是指由高性能、可扩充的计算机担任中央处理节点,该节点连接许多终端,终端没有对数据分析和处理的能力,仅负责对数据进行录入和输出,其完全依附于中央处理节点,所有的运算、指令和存储都集中于中央处理节点[4-6]。
由于所有运算均由中央处理节点完成,终端必须通过网络进行读取,网络的速度瓶颈会限制信息处理速度。另外采用单机部署导致扩展性差,当终端数量过多、数据量越来越大时,中央处理节点的性能将是系统负载能力的最大瓶颈,而且当中央处理节点发生单点故障时会导致整个系统瘫痪[7]。
如今互联网的信息呈指数增长,集中式系统的缺点被无限放大,此时分布式系统应运而生。分布式系统将集中式系统中央处理节点的任务分散给系统中相应节点,实现不同功能的节点之间相互协调,共享系统外设与软件。去中心化的特性使分布式系统具备高可靠性、高容错性、可扩展性、高性能和开放性的特点。
分布式存储正是基于分布式系统搭建的去中心化存储系统,该系统可以利用多台存储服务器分担存储负荷,并将分散的存储资源抽象为一个虚拟存储池,从而提高整体利用率。它不仅提高了系统的可靠性、可用性和存取效率,而且易于扩展,将增加硬件设备时的不稳定因素降到最低,分布式存储具有高性能、支持分级存储、多副本一致性、容灾与备份、弹性扩展和存储系统标准化的特点。
2.2 Ceph分布式存储系统
Ceph摒弃了传统的集中式存储元数据方案,是一种具有高扩展、高可用、高性能,能够同时提供对象存储、块存储和文件系统存储三种存储服务的开源分布式存储系统。同其他存储相比,Ceph的优势不只是可以实现分布式的存储,同时还能够充分利用存储节点上的计算力,在存储数据时利用负载均衡策略,计算得出每个数据片应该存储的位置,尽量将数据分布均衡。同时Ceph采用了CRUSH算法、Poxos一致性算法、HASH算法等优化方法,使得它不会出现集中式存储中的单点故障,且随着系统横向规模的扩大,Ceph性能也并不会受到影响[8]。相比其他分布式存储,Ceph具备以下优点:
(1)统一存储:Ceph的底层是一个分布式文件系统,但其上层开发了支持对象和块的接口。所以Ceph可以成为目前最主流的统一开源存储软件。
(2)高扩展性:Ceph使用去中心化分布式存储系统,接口统一,扩展灵活,且性能随节点增加而线性增长。
(3)高可用性:Ceph副本数可灵活控制,支持故障域分隔和数据的强一致性,不会出现单点故障,可根据节点状态实现自动管理。
(4)高性能:得益于CRUSH算法,使得Ceph数据分布均衡,并行度高,并且可以实现各类负载的副本放置规则,能够支持上千个存储节点,支持TB到PB级的规模。
Ceph的这些特性,也得益于其优异结构,图1为经典的Ceph模块架构。
图1 Ceph基础架构
Ceph的核心组件由Monitor、OSD、MDS、Object、PG组成,其中Monitor为守护节点,每隔一定时间同各存储节点发送心跳信号,用于检测整个系统运行情况,并做出回应;OSD(Object Storage Device)为存储节点,负责数据的复制、恢复、回填、再均衡,当存储主副本的OSD节点发生宕机,会向Monitor节点提供监控信息;MDS(Ceph Metadata Server)为元服务器节点,配合Ceph的文件系统服务使用,用于保存文件系统的元数据;Object是数据存储的基本单元,一般默认大小为4 M;PG(Placement Groups)是组成存储池的基本单元,记录PG与OSD间的映射关系。
3 CephFS集群的快速搭建及性能测试
3.1 Docker部署Ceph的优势
容器完全使用沙箱机制,其本质为一个特殊的进程,容器内包含运行该程序所需的环境,不同容器之间没有任何接口[9]。容器技术在操作系统层面上对运行环境进行再封装,每个容器包含运行该应用的所有环境,创建的每个实例仅仅包含需要的应用程序和必要的依赖库。其中Docker 是基于容器的平台,允许高度可移植的工作负载,是一种可以将应用程序与基础架构分开,从而快速交互的基于Go语言的开源容器引擎[10-11]。Docker可以通过将应用程序打包为一个镜像从而简化部署多种应用实例,可以在开发人员的本机、中心机房的服务器以及云服务或混合环境中运行[12-13]。
容器和Ceph的结合已经在一些生产环境中做了尝试,容器的优点在于对应用程序及其运行环境的封装,传统的方式是集成为ISO,但该方式需要一定的维护量,而使用容器部署则会简易很多。与Linux传统的 yum 或 apt-get 管理工具不同,由于轻量级和快速部署的特性,Docker可以使用Docker stop或者Docker run来发布新的deamons版本,这样使得软件的升级和回卷变得容易,甚至可以在一台物理机器上运行多个相互隔离的集群。这些都为实验、开发过程提供了极大的便利。介于UOS操作系统多数版本无法支持Ceph-deploy快速安装Ceph集群,而手动安装(传统部署方式)又费时费力的问题,该文提出了在UOS操作系统上使用Docker镜像快速部署小规模Ceph集群的方法。使用Docker部署Ceph集群,在升级时根本不需要解决依赖包的问题,进而方便科研工作者的实验测试以及有助于UOS国产操作系统的推广。
3.2 Ceph分布式存储系统集群部署
一个Ceph存储集群至少需要一个Ceph Monitor和两个OSD守护进程。搭建运行Ceph文件系统时还需要部署一台MDS节点。为了保证对整个集群的持续检测,一般Monitor数量为:MonNumber=2*n+1。这是为了保证多个Monitor节点并行运行时,集群出现多个子集群同时服务的情况(防止子集群在选举时,集群出现脑裂的情况)。在实验环境中,为了保证整个系统的负载均衡和高可用性,多个OSD的守护进程不可以部署在一台服务器的同一块磁盘上,也不能将Monitor或者MDS与OSD守护进程部署在一台服务器的同一块磁盘上。
实验环境搭建需四台服务器,在安装UOS Eagle 20操作系统的宿主机上,使用内装UOS社区版本-Deepin GUN/Linux15系统的Docker部署Ceph分布式存储系统。其中三台每个节点各安装16块硬盘,分别为2块SSD和14块HHD,其中node1、node2和node3节点部署部署Monitor和OSD,每个节点中硬盘分配为规则为SSD作为日志盘,HHD作为存储盘,node4分配一个SSD作为MDS节点。则Ceph集群中最终包含3个Monitor节点、42块OSD磁盘以及1个MDS节点。集群具体配置如表2。
表2 Ceph集群配置信息
第一个节点在安装Monitor过程中,需要docker run 时添加--net=host,用于暴露Docker主机网络,部署其余两个Monitor节点时,可以直接将/etc/ceph/ 和/var/lib/ceph/bootstrap-*目录下的文件复制到其他主机即可。部署OSD时,先对磁盘进行格式化并挂载,随后使用OSD_directory作为ceph/daemon的参数来启动OS。CephClient用户端在挂载Ceph集群之前,必须创建MDS管理节点,之后将Ceph的文件系统作为一个目录挂在到客户端CephClient的/cephfs目录下,此时完成Ceph集群部署。
3.3 性能测试
Ceph集群部署完成之后,调整配置文件对其进行调优,将参数调整为最合适目前场景的状态,再通过ceph自带和第三方IO测试工具,对其进行性能测试[14-15]。
本次实验,使用ceph自带的rados bench工具和rados los-gen对Rados性能进行测试,使用rbd bench-write工具对块设备写性能进行测试,使用fio+rbd ioengine和fio+libaio工具对RBD性能进行测试。测试工具的用途及语法如表3所示。
实验中,所有的操作均在该环境的客户端节点上进行,所有测试均为单线程测试。使用rbd bench-write工具进行测试时,默认IO单位为4 M,总写入字节数为1 680 M;使用rados bench工具进行测试时,一次写入的数据量大小为4 MB,测试所持续时间为20 s;使用rados load-gen工具进行测试时,测试对象的最小大小和最大大小均为1 G,压测IO的最小大小和最大大小均为4 194 304,一次提交IO的吞吐量和历史累计吞吐量上线均为1 G。使用fio工具进行测试时,块大小为4 M,总测试数据量大小为1 G。具体操作和结果如表4所示。
表3 测试工具
表4 实验结果
由实验结果可以得知,rados load-gen、rodos bench、rdb bench-write和 fio rbd/libaio 的结果都相差不大,使用时可根据实际情况选择,与rados bench相比,rados load-gen的特点是可以产生混合类型的测试负载,而rados bench只能产生一种类型的负载。fio+rbd与fio+libaio总体性能相差不大,二者顺序读性能同为120 M/s,fio+rbd在顺序写与随机写速率上均比fio+libiaio快1 M/s,而fio+libaio的随机读效率更高,相比之下,fio+rbd性能更好。
4 结束语
Ceph分布式存储系统组成较为复杂,在部署Ceph集群时,部分国产操作系统无法支持Ceph-Deploy相关的快速安装工具,而手动部署效率太低。该文根据容器启动速度快、持续集成和部署以及资源利用高效的特点,在UOS国产操作系统上将复杂的Ceph系统使用Docker进行快速部署[16]。经验证,在UOS操作系统上使用Docker部署Ceph分布式存储系统切实可行。通过Docker的镜像机制,在首次创建时为每个核心组件创建镜像,简化了Ceph集群的搭建步骤,当集群数量变大时,可以利用容器生态圈内的容器便编排框架,将容器按照规则运行,进而极大地减少工作量[17]。
由于环境、测试方法和数据有限,不同环境下,每种测试工具可能与本次实验所的结论不符,该文主要通过在同一场景下使用不同工具对Ceph进行测试,得出每种测试工具在该场景下的优缺点,为开发人员选择测试工具提供了有价值的参考。