产品
产品中心
< 返回主菜单
产品

交换机

交换机所有产品
< 返回产品
交换机
查看交换机首页 >

无线

无线所有产品
< 返回产品
无线
查看无线首页 >

云桌面

云桌面产品方案中心
< 返回产品
云桌面
查看云桌面首页 >

安全

安全所有产品
< 返回产品
安全
查看安全首页 >
产品中心首页 >
行业
行业中心
< 返回主菜单
行业
行业中心首页 >

VDI分布式存储数据布局技术白皮书

【分布式存储】本文介绍VDI分布式存储产品中采用的缓存加速的日志数据布局技术,该技术相比当前市面上主流的开源分布式存储产品,比如Ceph,能够带来2倍以上的有效容量和2倍以上的性能提升。

  • 发布时间:2020-04-10

  • 点击量:

  • 点赞:

分享至

我想评论

 

  1. 概述

本文介绍VDI分布式存储产品中采用的缓存加速的日志数据布局技术,该技术相比当前市面上主流的开源分布式存储产品,比如Ceph,能够带来2倍以上的有效容量和2倍以上的性能提升。

  1. VDI场景数据读写特性

VDI活动,一天大概包含如下几个阶段:

 

 

  • Boot Storm:起机风暴,需要提供分钟级的起机支持,不能影响正在运行的虚拟机,1000台桌面会产生超过100K的IOPS。起机风暴的IO情况,又分成如下两种:
  • 完整克隆:51%的48KB和64KB顺序读,17%顺序和随机各半的32KB读,最后是17%的4KB的随机读IO。完整的克隆压力同时体现在高带宽,按照xstream io的测试,4000个桌面10分钟起机完成,IOPS 250K,峰值BW在9GB/s。
  • 链接克隆:与完整克隆相比,其bw小了,IOPS更高了,主要是因为在链接克隆下的起机,小IO(512B/4KB)更多。和完整克隆同样的测试环境,IOPS 310K,峰值BW 4.4GB/s,但IO基本上都为512和4K随机读写IO。
  • Login Storm:登录风暴,读写各半。
  • Virus Scanning:病毒扫描,主要是读。
  • Patching & Recomposing:补丁,重写,主要是写。
  • Steady State。常规的工作阶段,90%的IOPS是4KB、8KB的随机写IO。
  • 补丁阶段随机读写各半。

其中,启机/登陆风暴的技术见《VDI启机风暴技术白皮书》,病毒扫描相关技术见《Cache加速技术白皮书》。这里描述用户Steady State阶段的数据读写问题。

由上面的统计数据可知,Steady State阶段主要是4KB、8KB的随机写IO。随机写IO在纠删码配置下有RAID写惩罚(参考下一节描述),性能往往满足不了业务需求。故VDI场景,传统上存储一般配置为副本,用更低的得盘率来获得性能上一定的提升。

  1. 浅谈RAID写惩罚与IOPS计算
    1. RAID写惩罚

存储方案规划的过程中,最基本的考虑因素有两个,性能和容量。计算后端物理磁盘的IOPS不能简单的把物理磁盘的最大IOPS相加。原因是对于不同的RAID级别,为了保证当物理磁盘损坏的情况下可以恢复数据,数据写入的过程中都需要进行一些特别的计算。

比如对于RAID-5,条带上的任意磁盘上的数据改变,都会重新计算校验位。下图,一个7+1的RAID-5的条带中,7个磁盘存储数据,最后一个磁盘存储校验位。

 

对于一个数据的写入,我们假设在第5个磁盘上写入数据1111,如下图所示。

 

那么整个RAID-5需要完成写入的过程分为如下几步:

  1. 读取原数据0110,然后与新的数据1111做XOR操作:0110 XOR 1111 = 1001
  2. 读取原有的校验位数据0010
  3. 用步骤1计算出的数值与原校验位再做一次XOR操作:0010 XOR 1001 = 1011
  4. 将新数据1111写入到数据磁盘,将新的校验值1011写入校验盘

由上述几个步骤可见,对于任何一次写入,在存储端,需要分别进行2次读取和2次写入,所以说RAID-5的写惩罚值是4。

不同RAID级别的写惩罚,如下表所示:

 

RAID类型

写惩罚

RAID-0

1

RAID-1

2

RAID-5

4

RAID-6

6

RAID-10

2

 

    1. IOPS计算

根据上文的描述,在实际存储方案设计的过程中,计算实际可用IOPS的过程中必须纳入RAID的写惩罚机上。计算公式如下:

  1. 物理磁盘总IOPS = 物理磁盘的IOPS * 磁盘数目
  2. 可用的IOPS = (物理磁盘总IOPS * 写百分比 / RAID写惩罚)+(物理磁盘总IOPS * 读百分比)

假设组成RAID-5的物理磁盘总IOPS为1000,使用该存储的应用程序读写比例是10% / 90%,那么对于前端主机而言,实际可用的IOPS为:

(1000 * 90% / 4)+(1000 * 10%)= 325

故,在VDI场景Steady State阶段,RAID或者纠删码配置下,实际业务可用的IOPS非常低,往往满足不了业务需求。

  1. 缓存加速的日志数据布局技术
    1. 数据写入概述

VDI分布式存储采用缓存加速的日志数据布局技术,加速虚拟桌面用户的数据读写性能。具体步骤如下:

  1. 桌面操作系统,数据写入存储
  2. 首先数据在本地节点的内存保留一份,同时根据系统可靠性配置,用户数据写入1个或者2个镜像节点的SSD上,SSD采用FIFO的形式顺序保存这些Journal
  3. 数据镜像完成之后,返回操作系统数据写入成功
  4. 本地节点数据聚合条带,计算纠删码之后,顺序写入后端磁盘
  5. 同时,根据智能缓存算法,热点数据保存到SSD Cache上,供操作系统后续读取访问
  6. 数据落盘之后,镜像节点的FIFO Journal通过尾部指针地址偏移,释放Journal空间
    1. 日志数据布局技术

VDI分布式存储的日志数据布局采用ROW方式,不论是追加写还是改写现有数据,都重新分配一个连续的地址空间写入。这样,无论用户的业务模型如何,所有的写数据对于后端磁盘来说都是顺序的,避免了传统RAID写流程所需的写惩罚。并且所有的数据都可以均匀的分布到不同的后端磁盘上,可以有效利用后端磁盘的总带宽和总IOPS。

如下图所示,LUN1写入A、B、C、D四个数据,LUN2写入A、B两个数据,存储系统将LUN1、LUN2的数据合并成一个条带,并计算出2个校验值之后,将数据写入后端磁盘。

 

 

当修改数据发生时,如下图所示。LUN1将数据B修订成b,LUN2写入C、D、E,LUN3写入数据A、B。系统会将这些数据聚合成条带,计算校验值之后,写入后端磁盘,然后标记数据(1 B)为垃圾数据。

 

 

 

但是,当系统经过长时间的修改和写入后,会产生大量的垃圾数据,从而导致无法找到条带用于新的数据写入。日志数据布局技术,通过全局垃圾回收来重新整理空间,从而做到在任何容量利用率的情况下,都可以找到新条带用来数据写入。

如果条带上的数据都为垃圾数据,则直接回收该条带。

 

 

如果条带上仅有部分脏数据,则将这些条带上的有效数据拷贝到新的条带之后,回收这些条带。

 

 

    1. 技术优势

该技术有如下优点:

  • SSD上Journal和Cache的数据写入都是顺序的,极大减少了SSD的擦写次数,可以将SSD寿命提高1个数量级。
  • 将随机写IO聚合成顺序写IO,避免了RAID算法的写惩罚,极大提升磁盘IOPS。以4KB的随机IO,128KB条带深度大小为例,每个磁盘可以提供32(128 / 4)倍IOPS。
  • 智能缓存预期算法,VDI数据读取操作尽量SSD命中,加速VDI数据读取性能,同时减少对后端磁盘的IOPS压力。以Cache命中率80%为例,后端磁盘仅需要提供20%的读IO即可满足业务需求。
  1. 方案对比

考虑如下需求:每个VDI节点50个VDI桌面,每个桌面100 IOPS,共需要存储提供5000 IOPS,其中写IO占90%。假设每个磁盘的吞吐为200MB/s,且能够提供200 IOPS。同时,我们假设读缓存命中率为80%,假设SSD缓存性能足够满足该场景需求,同时假设VDI有效工作时间为每天8小时。比较传统3副本、缓存加速日志数据布局技术8D2P EC和3副本下的有效容量和每磁盘能满足的业务IOPS需求。

    1. 传统3副本

在该场景下,读操作首先判断Cache是否命中,否则从后端磁盘读。写操作首先3副本写到对应的SSD上,后台异步将这些IO刷到对应的磁盘。

VDI节点需要后端磁盘提供的读IOPS为:总IOPS需求 * 读IO比例 * 缓存不命中率。

5000 IOPS * 10% * 20% = 100 IOPS

3副本的写惩罚为3,在VDI节点一整天开机的情况下,需要的写IOPS为:总IOPS * 写IO比例 * 写惩罚 * 每周工作时间 / 每周开机时间。

5000 IOPS * 90% * 3 * (8 * 5) / (24 * 7) =  3214 IOPS

该场景下,共需要(3214 + 100)/ 200 ,约16个磁盘。平均每个磁盘能够满足该场景312(5000 / 16)业务IOPS需求。

    1. 缓存加速日志数据布局8D2P

VDI节点需要后端提供的读IOPS和3副本类型的相同,为100 IOPS。

8D2P配置下,写惩罚系数为1.25,假设平均每个IO 8KB。同时,VDI产品中配置的条带深度为128KB。则需要的写IOPS为:总IOPS * 写IO比例 * 写惩罚 * 平均每个IO大小 / 条带深度。

5000IOPS * 90% * 1.25 * 8KB / 128KB = 351 IOPS

该场景下,共需要(100 + 351)/ 200 ,约3个磁盘。平均每个磁盘满足该场景1667 (5000 / 3)业务IOPS需求。

    1. 缓存加速日志数据布局3副本

读IOPS同样为100。

写IOPS需求为:5000 IOPS * 90% * 3 * 8KB / 128KB = 844 IOPS

该场景下,共需要(100 + 844)/ 200 ,约5个磁盘。平均每个磁盘满足1000业务IOPS需求。

    1. 方案总结

下表比较该场景下,3副本和8D2P有效容量、每个硬盘提供的有效容量和性能。

 

传统3副本

缓存加速日志数据布局3副本

缓存加速日志数据布局8D2P EC配置

有效容量

33%

33%

80%

每磁盘满足的业务IOPS

312

1000

1667

缓存加速日志数据布局下,纠删码和副本有相似的数据可靠性,建议以纠删码配置为主。

    1. 方案价值

存储方案规划中,最基本的考虑因素有两个:性能和容量。在VDI场景中,缓存加速日志数据布局,相比传统存储具备如下优势:

  1. 支持在生产系统上使用纠删码,使用纠删码相比Ceph等以副本为主要数据可靠性保证的方案来说,同时具备2倍以上的有效容量和2倍以上的性能提升。
  2. 即使同样也采用副本,缓存加速日志数据布局方案,也会获得2倍以上的性能提升。

 

相关推荐:

相关标签:

点赞

更多技术博文

任何需要,请联系我们

返回顶部

请选择服务项目
关闭咨询页
售前咨询 售前咨询
售前咨询
售后服务 售后服务
售后服务
意见反馈 意见反馈
意见反馈
更多联系方式