APP下载

基于Docker的轻量级云存储系统研究

2018-11-22刘毅文黄显宁文坤辉米春桥

计算机技术与发展 2018年11期
关键词:存储系统应用程序容器

刘毅文,黄显宁,文坤辉,米春桥

(怀化学院 计算机科学与工程学院,湖南 怀化 418000)

0 引 言

随着计算机硬件的不断升级和云计算技术的飞速发展,云存储从云计算延伸出来,迅速发展为一种新型的网络存储技术。当云计算和处理的核心是存储和管理大量数据时,需要在云计算系统中配置大量的存储设备,然后将云计算系统转换为云存储系统。因此,云存储是一个数据存储和管理为核心的云计算系统,通过集群应用程序中网络技术或分布式文件系统等功能,使得网络中许多不同类型的存储设备通过应用软件一起工作[1],系统统一向外提供数据存储和业务访问功能。简而言之,云存储是一种新兴的解决方案,可以将存储资源放到云中供人们访问。用户可以随时随地连接到云,通过任何网络设备访问数据[2]。

随着云存储的应用越来越多,云存储产品和服务在市场上不断成熟,以满足新的数据存储需求。与此同时,云存储系统是视频云的基础,也是大数据解决方案的第一步。在将存储从硬件转换为服务后,云计算还提供了复杂的管理和调度功能[3],使云存储服务智能化,并将包含大数据分析的数据生态整合在一起,以更紧密地响应用户的各种需求。对于企业来说,要扩大云存储的市场份额,企业的快速发展可以提供机会。

文中重点讨论轻量级云存储环境部署场景,将当前标准云存储系统的最小规模(通常需要2个元数据服务器和6个数据节点)缩减到2个标准服务器。使用虚拟容器技术Docker、云存储元数据节点服务器(MDS)、数据节点(DN)做Docker映像,部署在标准服务器上。当用户使用它时,MDS和DN镜像容器直接从标准映像启动,以提供云存储服务。

1 云计算的发展过程

1.1 云计算的定义

目前,不同用户对云计算有不同的定义,即网格计算、并行计算、网络磁盘、超级服务器或像AlphaGo这样的高科技。然而,从学术研究人员的角度来看,云计算是一种新的商业模式,它将IT基础设施利用率转化为销售和服务。

1.2 云计算角色的变换

云计算在不同的历史时期扮演着不同的角色。在20世纪末,云计算成为一种新的概念和新技术。当时,“云计算”一词并不存在于计算机领域,然而,学者们一直在研究的网格计算[4]和并行计算实际上是云计算的早期原型。在21世纪初,云计算更具有代表性,但只有大型IT基础设施的大公司(谷歌、IBM)才能拥有。2006年,亚马逊第一次以服务的方式出售对象存储服务,云计算从少数公司的能力发展为大众服务[5]。

1.3 云计算技术的演化过程

云计算的主要目标是应用云端的计算、存储等资源优势,突破终端的资源限制,为用户提供更加丰富的应用以及更好的用户体验。其定义一般可以概括为终端通过无线网络,以按需、易扩展的方式从云端获得所需的基础设施、平台、软件等资源或信息服务的使用与交付模式[6]。云计算技术的发展实质上是组件间的耦合越来越小,越来越孤立,资源的粒度越来越小,从专有到普通的过程。

(1)物理机时代的隔离方式—机架。

当用户需要服务时,购买物理机器。当需要更多的服务时,一个机架需要装载更多的物理机器。因此,在物理机器时代的隔离是机器级的隔离[7]。这种方式会凸现两个问题:资源粒度过粗,设备利用率不高;无法便捷地利用软件统一控制协调。

(2)操作系统的隔离方式—虚拟机。

随着虚拟化的发展,操作系统级的隔离随之出现,这通常被称为虚拟机(VM)。每一个操作系统都由许多个虚拟操作系统组成,每个操作系统都是虚拟服务器[8],同时共享硬件资源。由于单个物理机器可以创建许多虚拟机,因此资源粒度越小,利用率越高。与此同时,它带来了一个非常明显的优势,可以很容易地由软件创建、重新启动、摧毁虚拟机。当在数据中心生成大量的虚拟机,并将生成的虚拟机放在特定的管理、监视、安全和网络设施中进行辅助时,它就变成了云,即所说的IaaS[9]。

(3)应用层面的隔离方式—PaaS。

Docker的出现为PaaS平台的实现提供了一条全新的途径,也使为开发者提供更简洁的服务成为了可能。基于Docker容器,开发人员不再需要花费大量精力来处理各种开发、测试和生产环境之间的差异,而直接将应用环境迁移到PaaS平台的运行环境,不必担心各种依赖和配置问题。传统的PaaS是一个应用程序级别的隔离,在应用程序和应用程序之前是独立的,共享相同的运行时环境。与此同时,由于更加细化的资源粒度,使得同样的PaaS平台可以同时运行更多的应用程序。但PaaS平台也存在问题,由于平台与其运行环境息息相关,因此必须为每个平台定制代码,这对它的通用而言是一个极大的阻碍[10]。

(4)进程层面的隔离方式—容器。

因为应用程序和执行环境是相关的,所以应用程序和执行环境可以打包在一起,因此应用容器技术解决PaaS平台的应用程序必须依赖于其执行环境的问题。容器是一个应用程序,它的一系列操作环境依赖于封装在盒子里的一个“盒子”里,以共享相同的操作系统内核,使用操作系统内核的一些特性来实现资源隔离,容器技术是一个过程级隔离。容器技术不仅解决了环境依赖的问题,而且使隔离的粒度进一步细化、容器生成和销毁更快(第二级)。Docker作为轻量级虚拟化技术的代表,是LXC技术的扩展,被认为是虚拟化领域的一次革新。

因此,纵观整个云计算技术开发过程,最重要的主线之一是越来越深入、更细致的资源粒度,管理越来越方便。如果云计算的未来是一种公共资源,那么它所驱动的业务无疑具有一个更细粒度和更可度量的计算单元特性的通用执行环境。

2 虚拟化容器技术Docker

2.1 云计算的分层

云计算总体分为三层,即IaaS、PaaS、SaaS。

IaaS:Infrastructure-as-a-service,基础设施即服务,主要为用户提供通过互联网获得完善的计算机基础设施服务。

PaaS:Platform-as-a-servers,平台即服务,主要为用户提供可以访问的完整或部分的应用程序开发。

SaaS:Software-as-a-service,软件即服务,主要为用户提供完整的可直接使用的应用程序。

2.2 Docker容器技术的优势

Docker是一种基于lxcbased的高级容器引擎开放源码的PaaS提供商dotCloud。源代码托管在Github上,基于go语言,并遵循Apache 2.0协议开源。Docker以Linux容器(LXC)技术为基础,主要功能是通过实现对LXC的进一步封装,使得对容器的操作变得更加简便,并且让用户不再需要关心容器的管理[11-13]。

与基于Xen、KVM虚拟机相比,其优势在于以下两点:

(1)启动速度快。虚拟机无法做到秒级启动是因为受限于操作系统的启动时间。但Docker完美地避开了这一问题。Docker通过利用宿主机的系统内核,在几秒钟内创建大量容器,实现了秒级启动。由于虚拟机与Docker的启动速度是在数量级上的差距,实现更轻量级的虚拟化,方便快速部署。

(2)资源利用率高,性能开销小。虚拟化会比容器消耗更多的资源,Docker除去占用的系统资源,剩余资源的99%都将提供给用户使用,极大地提高了资源利用率。

3 轻量级云存储系统

3.1 系统架构

最小的云存储系统架构由两个标准的x86服务器和一个千兆交换机组成。市场标准的x86服务器不仅满足了云存储磁盘的需要,而且还作为一个运行主机的Docker服务运行主机,以下简称为市场位x86服务器。系统架构如图1所示。

图1 最小的云存储系统宏观架构

为了在发生单点故障后,系统仍能继续提供服务,该系统采用2台宿主机。当系统出现单点故障时,一定会出现数据丢失的情况,所以还需要对双宿主机最小系统的数据节点查找方式进行改进。单点故障发生时数据有冗余,系统保证另一台宿主机中数据的完整性,也同时为该节点继续提供完整的存储服务。

每台宿主机上,分别启动一个元数据服务器容器(meta data server,MDS)和一个数据节点(data node,DN)容器,形成由2个MDS容器和2个DN容器组成的云存储系统,2台MDS之间的心跳通过交换机完成,简化了安装部署。

3.2 网络通信

容器部署采用桥接的网络模式(所谓桥接模式,即宿主机内部存在一个虚拟二层交换机,能够将容器中的虚拟网口和宿主机的网口在局域网中被平等地对待),使容器中的虚拟网口拥有了独立的IP地址,在网络中的行为等同于一台虚拟服务器[14]。桥接网络模式拓扑如图2所示。

图2 单节点结构与网络桥接方案

在宿主机系统启动时,其默认带有的8个千兆网口,会按照策略进行绑定的动作,可按照2,2,4的方式绑定成3个bonding口。这3个bonding口会分别挂在3个虚拟的桥接口下面,作为虚拟网桥的对外出口。

在主机中,MDS和DN被部署在一个Docker镜像模式的容器中。当系统第一次启动时,MDS和DN容器会自动开始等待用户配置初始化参数(如IP地址)。未配置的MDS通常有一个默认的出厂IP。

MDS容器在启动时,会创建2个虚拟口,这2个虚拟口都挂在宿主机第1个bonding口bond0下面,即MDS将bond0作为对外出口。MDS容器中,MDS可使用bonding口作为其心跳和业务网口,故将其虚拟的eth0和eth1两个网口分别绑定为bond0和bond1口,作为其心跳口和业务口。当然亦可直接指定eth0和eth1。

宿主机中的DN容器在启动时,会创建2个虚拟口,这2个口分别挂在宿主机的第2个bonding口bond1和第3个bonding口bond2下面,即DN容器会用到6个物理口做成的2个bonding口作为对外通讯的接口。

DN容器存在2个虚拟网口,分别是在外部绑定了2个网口的eth0和4个网口的eth1,其中eth1给DN进程使用,用于DN的主要业务,即云存储的数据节点业务;eth0可供其他服务使用,如监控中的数据流与指令流的传输等,用于提供云存储的直存服务(CDS)。

3.3 系统性能

3.3.1 测试环境

·2台宿主机分别提供1个MDS容器。2个MDS容器分为主备,并且同时处于工作状态。

·系统的元数据信息保存于宿主机内部的Intel128G SSD中。

·SSD挂载方式:开启“nobarrier”标识。

·每台宿主机配备24块机械硬盘,配备千兆存储网口,通过视频模拟器同时输入400路2 Mbps视频,每个视频按512 MB文件写入。

存储节点采用Erasure code冗余备份机制,采用1+1,4+1,8+2节点间冗余容错策略,也就是说损失任意1或2个节点,客户端不会有感知,服务不会停止,数据不会丢失。按照1+1,4+1,8+2写入情况下主备宿主CPU,磁盘利用率,写入带宽。

3.3.2 测试结果

三种机制磁盘性能比较如表1所示。

表1 三种机制磁盘性能比较

在1+1机制下写入带宽和磁盘利用率均最高,基本满足了用户对磁盘写入的需求。磁盘读取速度通常高于写入速度,文中不再赘述。

1+1、4+1、8+2三种机制写入情况下MDS中mysqld服务占用CPU百分比如图3所示。

图3 mysqld占用CPU百分比

1+1、4+1、8+2三种机制写入情况下DN占用CPU百分比如图4所示。

4 结束语

文中介绍了一种基于Docker容器技术的轻量级云存储系统架构,提出在系统中出现虚拟化环境下的网络通信改进策略。系统性能测试结果表明,该系统

可以很好地满足一般用户对低成本、高效、数据可靠的云环境需求。

图4 DN占用CPU百分比

猜你喜欢

存储系统应用程序容器
分层式大数据存储系统缓存调度策略与性能优化
难以置信的事情
删除Win10中自带的应用程序
天河超算存储系统在美创佳绩
面向4K/8K的到来 存储该怎么办?
谷歌禁止加密货币应用程序
液体对容器底及容器对桌面的压力和压强
取米
基于电池管理系统的数据存储系统设计
三星电子将开设应用程序下载商店