面向多虚拟机的分布式存储系统

简介:

1引言

    随着桌面虚拟化技术的普及,许多企业开始部署桌面虚拟化系统。虚拟化技术经过长期的发展,其虚拟机性能已经可以满足很多应用需求,特别是对于处理器与内存的虚拟化处理,已经达到与物理主机相近的性能。但是,相对于输入/输出(input/output,I/O)设备的虚拟化处理仍然差强人意。

    现有的虚拟桌面系统大都采用单存储服务系统,以获得统一的存储视图以及较为低廉的价格。由于单一存储服务的吞吐率有限,这样的虚拟桌面往往只能在一个存储视图下支持数十台虚拟机,并不能满足中大型企业桌面虚拟化部署的要求。

    采用分布式存储结构可以有效地提高存储系统的吞吐能力。本文在分布式结构的基础上,采用直接块索引的方式,提供高性能快照,并且实施去冗余技术,可以在减少系统冗余数据的同时为用户提供存储状态和版本控制等功能。

2面向虚拟桌面的存储系统

    2.1虚拟桌面的体系结构

    虚拟桌面的一般结构如图l所示。每个用户在终端中使用客户端程序访问对应的虚拟桌面,虚拟桌面传输一般采用虚拟网络计算机(virtual networkcomputer,VNC)或者远程桌面协议(remote desktopprotocol,RDP)。这些虚拟桌面分别由一台在应用集群中的虚拟机进行支持。所有的用户数据和系统数据都存放在共享存储区中,这个可以被虚拟机访问的共享存储区一般称为数据中心。管理节点协调各个部分的功能,为外界提供统一的服务。


    2.2虚拟桌面的存储需求

    设计满足虚拟桌面的存储子系统需要基于以下三个基本特点。

    (1)高性能快照

    由于虚拟化所导致的封装性,快照成为虚拟机磁盘镜像的一个特色。使用快照,虚拟机磁盘镜像可以从错误的状态恢复到任意时刻正确的状态。

    (2)虚拟机启动性能优化

    虚拟桌面系统中的应用集群都需要从数据中心获得数据。虚拟桌面系统用在企业中为员工提供统一的工作界面。大部分用户都会在工作开始后的时间段内启动他们的虚拟机。企业环境下,数百台虚拟机同时启动会消耗掉大部分单存储服务的吞吐能力。许多虚拟机桌面采用存储区域网络(storagearea network,SAN)解决这个问题,例如虚拟机文件系统(virtual machine file system,VMFS)。

    (3)更少的数据冗余

    当前的多虚拟机系统都采用了版本控制方法,这在一定程度上减少了冗余,不过很多情况下,比如系统中存在着多种多样的应用程序时,版本控制并不能减少冗余数据。此外,使用版本控制的系统也会产生很多相同数据。所以,减少冗余数据对于减少存储系统成本是非常重要的。

3 VMStore总体设计

    本章主要介绍虚拟机存储系统(virtual machinestorage,VMStore)针对虚拟桌面环境而设计的分布式存储架构。通过连接多个存储服务节点,VMStore把单一的存储服务重新部署成为分布式架构,同时为虚拟机提供透明接口来进行访问操作。

    3.1 VMStore体系结构

    图2所展示的是VMStore的整体结构。和大多数分布式系统相似,VMStore中的存储节点都是消费型物理主机,依靠运行输入输出服务程序提供网络访问支持。每个存储节点上的输入输出设备不仅仅是应用程序和存储资源交换数据的媒介,同时还提供附加的辅助服务。通过实现冗余数据删除的机制,可以在重复数据产生时或者重复数据被传回存储服务器之后减少不必要的存储开销。

    在一些重量级的虚拟桌面产品中,例如Citrix公司的Virtual Desktops,虚拟化技术的基础设施都依靠Xen或XenServer来完成。由于Xen的开源性和性能优势,在本文的原型系统中也使用Xen来作为基础框架。在Xen自身的工具中,块工具(blktap)扮演了一个连接用户和虚拟机存储的角色。对开发者而言,块工具则提供了部分接口,从而实现一种能够索引虚拟磁盘中所有块的镜像格式。

    3.3数据管理

    VMStore为每次读写请求分配一个索引地址。每块数据的全局地址都如图4那样,被分割成高33位和低31位两个部分。其中,高33位作为一致性哈希索引中的键值,低31位作为该数据块在存储节点上的索引地址。把所有高33位相同的数据块存储在一个以该33位地址命名的文件中,然后利用低31位作为这些块在存储文件中的索引地址。

    3.4数据去冗余

    数据去冗余是VMStore系统中不可或缺的一部分。目前这项技术大部分应用在重复数据删除工作中,在虚拟服务器上,去冗余技术也能体现出它的优势。IBM公司曾经对虚拟机镜像文件的冗余状况进行了分析,结果表明数据冗余在虚拟环境下是无法避免的。VMStore以用户级后台程序的方式运行在存储节点上,通过Xen的块设备驱动来处理数据块的相关请求。在VMStore中采用了一种去冗余块结构。图5展示了两个文件以这种结构保存在存储系统中的布局。利用稀疏索引和指纹索引的方式对数据进行抽样,可以对冗余数据进行预测。

 

4系统实现

    4.1缓存机制

    I/O缓存由一个超高速缓存网络数据包模型和一个顺序写模型组成。由于数据块的轻量型,当大量I/O请求产生时网络拥挤的发生率会上升。为了缓解这种状况,I/O请求会在网络传送前合并。因此采用512 KB作为缓冲长度来缓存数据,以达到内存超载和网络效率之间的平衡。由于元数据存储在存储节点的硬盘上,并且与硬盘存取延迟和网络延迟等同的索引延迟会降低I/O请求的性能,因此在存储虚拟机上缓存了一部分索引结构来减少网络存取元数据的比率,通过缓存索引、缓存元数据来加速数据索引过程。

    4.2节点管理

    为了避免存储网络低效的询问,每个节点地址都存储在所有的存储虚拟机中。当一个节点想连接存储服务器,任何一个存储虚拟机都是这个节点的入口,用以找到它的正确位置。节点会从存储虚拟机上下载所有的存储地址,通过一致性哈希算法计算它的邻居节点,并利用加入信号通知它的两个邻居节点。该节点的前驱会传送哈希值比新节点大的节点的数据,然后删除哈希值大于这个新节点的后继节点的数据。在完成连接后,所有的存储VM将会更新节点信息。

5测试与评估

    5.1测试环境

    本文对VMStore进行了性能分析和评测。在所有的测试中,采用戴尔的PowerEdge 2950服务器作为应用节点,每个节点有两个1.6 GHz Xeon处理器,4 GB的内存和英特尔的E1000 GbE网络接口。存储数据节点是戴尔PowerEdgeT710服务器,每个节点有两个2.4 GHz Xeon处理器,24 GB内存,1 TB 7200转SAS硬盘和一个Broadcom公司5709双埠1GbE网络接口。现有系统是基于Xen 3.2.0版本开发的。

    5.2测试结果

    为了获取启动过程的最优速率,需要计算所有存储节点吞吐率的总和。图6(a)表示的是多虚拟机启动时的总读取速率。只有1台虚拟机启动时,总速率是0.073 MB/s。5台虚拟机启动时总速率达到了0.360 MB/s。图6(b)对应的是多虚拟机启动时的总写入速率。IOZone测试的结果如图7所示,4 KB大小时,虚拟磁盘的读取性能比其他单位长度下的性能要好。因为加入了写缓存,所以整体上写性能比读性能要高。图8表示的是重复12次快照,并在每次快照之后读取2 MB数据的延时。测试结果说明在VMStore中的快照性能,不像传统的“链式”快照,会导致延时线性增加。
6研究现状

    存储是虚拟化环境中一个重要的问题。接下来将介绍几种有代表性的虚拟存储设计:

    VMWare虚拟机文件系统VMFS是一个高性能的集群文件系统。该系统为虚拟化应用设计了很多优化法,利用共享存储可以使多个VMWare ESX实例同时读写相同存储位置。VMFS通过共享存储器(如光纤通道和iSCSI SAN)上存储的虚拟机文件,实现基于虚拟机的分布式基础架构服务,可高效地存储和访问整个虚拟机状态,并实现接近本机SCSI的虚拟磁盘性能。

    机器银行是一个客户端/服务器的结构。服务器端是BitVault,即为所有用户提供虚拟机镜像(virtual machine image,VMI)存储的可靠后台服务系统。在客户端按需下载镜像,并把镜像文件缓存在本地文件系统中减少重复数据的传输。

    Ventana是斯坦福大学提出的虚拟化感知的文件系统。它融合了虚拟磁盘和传统分布式文件系统的优点,在设计上包括分枝、视图和访问控制三个概念。

7结论

    VMStore由于采用分布式存储体系结构,提高了存储服务系统的吞吐能力。同时,分布式结构所具有的灵活性和扩展性也使得VMStore具有良好的可管理性和适应性。特别是在不同用户规模的情况下可以有效提高整体系统的利用率。实验结果表明,随着虚拟机数量的增加,VMStore的吞吐能力线性增加,很好地解决了系统中大部分虚拟机同时启动时存储吞吐率不足的问题。 
 








本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/wws5201985/785432,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
存储 运维 安全
盘古分布式存储系统的稳定性实践
本文介绍了阿里云飞天盘古分布式存储系统的稳定性实践。盘古作为阿里云的核心组件,支撑了阿里巴巴集团的众多业务,确保数据高可靠性、系统高可用性和安全生产运维是其关键目标。文章详细探讨了数据不丢不错、系统高可用性的实现方法,以及通过故障演练、自动化发布和健康检查等手段保障生产安全。总结指出,稳定性是一项系统工程,需要持续迭代演进,盘古经过十年以上的线上锤炼,积累了丰富的实践经验。
166 7
|
3月前
|
存储 分布式计算 Hadoop
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
106 7
|
4月前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
227 4
|
5月前
|
存储 运维 负载均衡
构建高可用性GraphRAG系统:分布式部署与容错机制
【10月更文挑战第28天】作为一名数据科学家和系统架构师,我在构建和维护大规模分布式系统方面有着丰富的经验。最近,我负责了一个基于GraphRAG(Graph Retrieval-Augmented Generation)模型的项目,该模型用于构建一个高可用性的问答系统。在这个过程中,我深刻体会到分布式部署和容错机制的重要性。本文将详细介绍如何在生产环境中构建一个高可用性的GraphRAG系统,包括分布式部署方案、负载均衡、故障检测与恢复机制等方面的内容。
326 4
构建高可用性GraphRAG系统:分布式部署与容错机制
|
5月前
|
机器学习/深度学习 人工智能 分布式计算
【AI系统】分布式通信与 NVLink
进入大模型时代后,AI的核心转向大模型发展,训练这类模型需克服大量GPU资源及长时间的需求。面对单个GPU内存限制,跨多个GPU的分布式训练成为必要,这涉及到分布式通信和NVLink技术的应用。分布式通信允许多个节点协作完成任务,而NVLink则是一种高速、低延迟的通信技术,用于连接GPU或GPU与其它设备,以实现高性能计算。随着大模型的参数、数据规模扩大及算力需求增长,分布式并行策略,如数据并行和模型并行,变得至关重要。这些策略通过将模型或数据分割在多个GPU上处理,提高了训练效率。此外,NVLink和NVSwitch技术的持续演进,为GPU间的高效通信提供了更强的支持,推动了大模型训练的快
121 0
|
6月前
|
消息中间件 中间件 数据库
NServiceBus:打造企业级服务总线的利器——深度解析这一面向消息中间件如何革新分布式应用开发与提升系统可靠性
【10月更文挑战第9天】NServiceBus 是一个面向消息的中间件,专为构建分布式应用程序设计,特别适用于企业级服务总线(ESB)。它通过消息队列实现服务间的解耦,提高系统的可扩展性和容错性。在 .NET 生态中,NServiceBus 提供了强大的功能,支持多种传输方式如 RabbitMQ 和 Azure Service Bus。通过异步消息传递模式,各组件可以独立运作,即使某部分出现故障也不会影响整体系统。 示例代码展示了如何使用 NServiceBus 发送和接收消息,简化了系统的设计和维护。
123 3
|
6月前
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现
消息队列系统中的确认机制在分布式系统中如何实现
|
6月前
|
消息中间件 存储 监控
【10月更文挑战第2天】消息队列系统中的确认机制在分布式系统中如何实现
【10月更文挑战第2天】消息队列系统中的确认机制在分布式系统中如何实现
|
6月前
|
存储 开发框架 .NET
C#语言如何搭建分布式文件存储系统
C#语言如何搭建分布式文件存储系统
138 2
|
7月前
|
存储 块存储
ceph分布式存储系统常见术语篇
关于Ceph分布式存储系统的常见术语解释和概述。
304 1
ceph分布式存储系统常见术语篇