前言
本文是HCIE云计算学习的存储部分学习笔记,主要介绍了分布式存储的原理,并详细介绍了华为分布式存储产品FusionStorage。
Server SAN(分布式存储)
- 概念
由多个独立服务器自带的存储组成⼀个存储资源池(逻辑),同时融合了计算和存储资源。
- 特征
- 专有设备变通用设备(既能做计算,又能做存储)
- 计算与存储线性扩展
- 简单管理、低TCO
Server SAN实现效果
华为Server SAN产品 FusionStorage
分布式块存储软件
- 将通用X86服务器的本地HDD、 SSD等介质通过分布式技术组织成大规模存储资源池。
- 对非虚拟化环境的上层应用和虚拟机提供工业界标准的SCSI和iSCSI接口。
- 开放的API。
数据有效性机制
FusionStorage副本机制
分布式存储采用的数据有效性机制。
传统SAN架构
- 孤立的存储资源:存储通过专用网络、专用线缆连接到有限数量的服务器。
- 存储设备通过添加硬盘框增加容量,控制器性能成为瓶颈。
传统SAN架构
- 机头瓶颈:双控~16控,且⽆法线性扩展
- Cache瓶颈:通常为GB
- 网络瓶颈: 10G FCoE、8G FC、16G FC、32G FC
- 传统存储资源缺乏共享:传统存储设备和资源往往由不同厂家提供,之间无法进行资源共享,数据中心看到的是⼀个个孤立的存储资源。
- 传统存储一般采用集中式元数据管理方式,元数据中会记录所有LUN中不同偏移量的数据在硬盘中的分布,例如LUN1+LBA1地址起始的4KB长度的数据分布在第32块硬盘的LBA2上。每次IO操作都需要去查询元数据服务,随着系统规模逐渐变大,元数据的容量也会越来越大,系统所能提供的并发操作能⼒将受限于元数据服务所在服务器的能力,元数据服务将会成为系统的性能瓶颈。
分布式Server SAN架构
没有集中的控制器
- 共享式存储资源池
- 计算、存储融合部署
- 容量和性能线性增长
Server SAN架构
- 分布式控制器,可线性扩展至4096节点。
- 分布式Cache,扩展至TB级,甚至PB级。
- P2P无阻塞高速IB网络,56G InfiniBand RDMA。
- 数据中心级资源共享:⼀个数据中心内可以构建⼀个很大的存储资源池,满足数据中心内各类应用对存储容量,性能和可靠性的需求;实现资源共享和统⼀管理。
- 云数据中心的新存储投资选择。
- FusionStorage采用的DHT算法具有以下特点:
- 均衡性:数据能够尽可能分布到所有的节点中,这样可以使得所有节点负载均衡。
- 单调性:当有新节点加入系统中,系统会重新做数据分配,数据迁移仅涉及新增节点,现有节点上的数据不需要做很大调整。
- FusionStorage通过创新的架构把分散的、低速的SATA/SAS机械硬盘组织成⼀个高效的类SAN存储池设备,提供比SAN设备更高的IO,把性能发挥到了极致;性能提升1-3倍。
- FusionStorage采用无状态的分布式软件机头,机头部署在各个服务器上,无集中式机头的性能瓶颈。单个服务器上软件机头只占用较少的CPU资源,提供比集中式机头更高的IOPS和吞吐量。
- 例如:假设系统中有20台服务器需要访问FusionStorage提供的存储资源,每台服务器提供给存储平⾯的带宽为210Gb,我们在每台服务器中部署1个VBS模块(相当于在每台服务器中部署1个存储机头), 20台服务器意味着可部署20个存储机头,所能获取到的总吞吐量最高可达202*10Gb=400Gb,随着集群规模的不断扩大,可以线性增加的存储机头,突破了传统的双控或者多控存储系统集中式机头的性能瓶颈。
华为FusionStorage两大主要应用场景
FusionStorage逻辑架构
FusionStorage Manager:FusionStorage管理的入口,包括服务器的接入,存储池的创建,磁盘的管理。可以作为一个虚拟机安装在虚拟化环境里,可以支持主备部署。
物理服务器中需要安装以下几个组件:
FusionStorage Agent:FusionStorage的代理,FSM和服务器之间的通信,包括指令的下发、服务器状态的检查,都通过代理来做的。并且还包含了三个额外的子进程:
- MDC元数据控制进程,用于管理FusionStorage下所有的元数据,并负责把元数据安全的保存在磁盘上。
- VBS虚拟块存储管理组件,用于接收操作系统下发的IO请求,并且把IO请求转发给对应的节点。
- OSD对象存储设备服务
服务器有三种角色:管理、计算和存储。
如果有OSD,一定是存储节点。
如果有VBS,一定是计算节点。
如果有MDC,一定是管理节点。
FusionStorage组件介绍
- FSM(FusionStorage Manager): FusionStorage管理模块,提供告警、监控、日志、配置等操作维护功能。一般情况下FSM主备节点部署
- FSA(FusionStorage Agent):代理进程,部署在各节点上,实现各节点与FSM通信。 FSA包含MDC、 VBS和OSD三种不同的进程。根据系统不同配置要求,分别在不同的节点上启⽤不同的进程组合来完成特定的功能
- MDC(MetaData Controller): 元数据控制,实现对分布式集群的状态控制,以及控制数据分布式规则、数据重建规则等。 MDC默认部署在3个节点的ZK(Zookeeper)盘上,形成MDC集群。
- VBS(Virtual Block System):虚拟块存储管理组件,负责卷元数据的管理,提供分布式集群接⼊点服务,使计算资源能够通过VBS访问分布式存储资源。每个节点上默认部署⼀个VBS进程,形成VBS集群。节点上也可以通过部署多个VBS来提升IO性能。
- OSD(Object Storage Device):对象存储设备服务,执行具体的I/O操作。在每个服务器上部署多个OSD进程,⼀块磁盘默认对应部署⼀个OSD进程。在SSD卡作主存时,为了充分发挥SSD卡的性能,可以在1张SSD卡上部署多个OSD进程进⾏管理,例如2.4TB的SSD卡可以部署6个OSD进程,每个OSD进程负责管理400GB。
FusionStorage部署方式
- 融合部署(一台服务器既作为计算资源,又作为存储资源)
指的是将VBS和OSD部署在同一台服务器中。
虚拟化应用推荐采用融合部署的方式部署。
- 分离部署(计算节点就是计算节点,存储节点就是存储节点,没有交集)
指的是将VBS和OSD分别部署在不同的服务器中。
高性能数据库应用则推荐采用分离部署的方式。
硬件要求
FusionStorage 硬件要求
CPU
FusionStorage Block对服务器CPU的要求如下:
- 服务器架构
- X86架构CPU
- ARM架构CPU(ARM64 Hi1612)
说明: ARM服务器只适用于存储节点。
- 部署方式
- 融合部署:
CPU要求≥8个超线程(Hyper Thread)
- 分离部署:
- 计算节点: CPU要求≥4个超线程(Hyper Thread)
- 存储节点: CPU要求≥6个超线程(Hyper Thread)
内存
内存占用的计算公式如下:
- 每个服务器占用内存容量 = 操作系统占用内存容量 + 运行FusionStorage Block所占用内存容量
- FusionStorage Block所占用的内存容量 = MDC进程占用内存容量 + VBS进程占用内存容量 + OSD进程占用内存容量 + 缓存占用内存容量
MDC进程占用内存容量: 5GB,所有存储节点均需要为MDC进程预留5GB内存
空间
VBS进程占用内存容量: 当使用普通网卡时,VBS进程占用8GB内存;当使用IB用卡时,VBS进程占用10.5GB内存。
OSD进程占用内存容量:
当使用SSD卡或者NVMe SSD设备做主存时,占用内存为M × 主存SSD设备个数 ×[SSD设备容量GB/实际切分容量(默认切分容量是600GB)]
其中,“M” 根据切分容量的不同,取值如下:
- 切分容量≤ 2T: M=3.5GB
- 切分容量>2T时,容量每增加2T, M的取值增加1GB。 例如: 2T< 切分容量≤4T时, M=4.5GB; 4T< 切分容量≤ 6T时, M=5.5GB。
如果SSD设备容量GB/实际切分容量的值不为整数,且小数部分的值大于0.1,系统默认剩余容量为1个切分单位,切分个数为整数部分的值加1。如果小数部分的值小于或者等于0.1,系统默认剩余容量不计入,切分个数为整数部分的值。例如:SSD设备容量GB/实际切分容量值为3.2时,切分个数位4。 SSD设备容量GB/实际切分容量值为3.1时,切分个数为3。
当使用磁盘做主存时,占用内存为N × 该服务器磁盘个数
其中,“N” 根据网络和磁盘的不同,取值如下:
- 使用IB网络时,根据单个磁盘容量的不同,取值如下:
- 容量≤ 2T: N=2.4GB
- 容量>2T时,容量每增加2T, N的取值增加1GB。 例如: 2T< 容量≤ 4T时,N=3.4GB; 4T< 容量≤ 6T时, N=4.4GB。
- 使用10GE网络时,根据单个磁盘容量的不同,取值如下:
- 容量≤ 2T: N=2GB
- 容量>2T时,容量每增加2T, N的取值增加1GB。 例如: 2T< 容量≤ 4T时,N=3GB; 4T< 容量≤ 6T时, N=4GB。
缓存占用内存容量:当缓存采用NVDIMM或者不使用缓存时,内存占用容量为0;当
缓存采用SSD卡或者SSD盘时,内存占用为(该服务器SSD缓存总大小GB× 8)/1024
其中, SSD缓存总大小的单位为GB。
例如,10GE组网场景下,系统规划创建2个存储池,服务器操作系统占用内存为8G, 使用2T的SATA盘做为数据盘(有4块数据盘),使用1块2.4T的SSD卡做缓存,则内存应设置为:
操作系统占用8GB + MDC进程占用5GB + VBS进程占用8GB + OSD进程占用2GB×4 + 缓存占用(2.4× 1024GB× 8)/1024 = 48.2 GB
网络
计算节点:
- 物理服务器网卡支持单网口(eBackup节点, CVM节点等需要使用单网口)和配置activebackup(Bond模式为1)模式的网口聚合。
- 10GE组网时,硬件至少为210Gb组网,其中至少26Gb用于存储平面。
- 网卡和网络类型:GE(TCP/IP协议)、10GE(TCP/IP协议)、40GbIB(RDMA协议)、56Gb IB(RDMA协议)、10GE/25GE RoCE(RDMA协议)。
- 建议网络时延小于1ms, 丢包率小于3%。
存储节点:
- 物理服务器网卡要求配置网口聚合(Bond),模式为active-backup(Bond模式为1)。
- 10GE组网时,硬件至少为210Gb组网,其中至少26Gb用于存储平面。
- 40Gb/56Gb IB组网时,带宽共享皆可满足要求。
- 网卡和网络类型: 10GE(TCP/IP协议)、 40Gb IB(RDMA协议)、56GbIB(RDMA协议)、10GE/25GE RoCE(RDMA协议)。
- 使用机柜级安全时,机柜间至少为410Gb带宽,每服务器至少为210Gb带宽,其中存储平面至少2*6Gb及以上带宽。
- 建议网络时延小于1ms, 丢包率小于3%。
系统盘
系统盘配置RAID1
FusionStorage Manager配置要求
组网配置
FusionStorage网络平面
- 管理平面
FMS与FSA通信的平面
- 存储平面
OSD、MDC以及VBS之间所通信使用的平面
- 业务平面
VBS对外提供业务的时候,所使用的平面
以太网组网
FusionStorage Infiniband组网介绍
- 数据库和数据仓库场景下,数据库和数据仓库单独部署在作为计算节点的物理服务器上,运行企业关键数据库、数据仓库、关键ERP/CRM等应用,推荐使用40G/56G Infiniband组网。
- 每服务器配置双端口IB网卡,两个IB网口配置为主备bond,分别连接到两块IB交换机(板) 。
- 每框(柜)的两块IB交换机(板)之间不配置主备,也不配置堆叠,各自独立 。
- 汇聚框(柜)与扩展框(柜)之间的IB 交换机(板)通过IB线缆连接,不用配置trunk 。
- IB连线规则:
扩展框(柜)的存储带宽要大于等于计算框(柜)的输出带宽,尽量发挥存储框的带宽。
配置规格及约束
FusionStorage难点!
FusionStorage ZK盘配置原则
ZK盘:存放元数据的盘,可以使用普通的机械磁盘,也可以使用SSD磁盘,也可以使用SSD卡的分区。
ZK盘的配置原则如下:
- 32台服务器内,默认选择3个独立的ZK盘(HDD)
- 32~128台服务器内,默认选择5个独立ZK盘(HDD)
- >128台服务器,默认选择5个独立ZK盘(SSD)
- SSD卡主存时3个ZK分区
FusionStorage MDC配置原则
- MDC部署在3个以上节点上(默认3节点),形成MDC集群
- MDC进程需要占用独立的存储空间,该空间称为ZK
- 将系统分区分给ZK使用(全SSD卡),该分区称为ZK分区,即和OS盘合布, ZK分区大小为60G, ZK分区部署时,不能和管理节点OS盘合布。此部署方式需要整个系统规模为5或以上服务器
- 将单个磁盘分给ZK使用,该磁盘称为ZK盘,即在部署MDC的服务器中,划⼀块硬盘来独立部署,此时会占用⼀个数据盘槽位。但是使用独立ZK盘的性能和可靠性要优于ZK分区
FusionStorage配置约束
主存:一台服务器上加入分布式存储资源池的磁盘。
单服务器内总主存数量: 3~36盘/卡。单台服务器上每资源池主存数3-12(2副本)/36(3副本)。单资源池两副本情况下最大96块盘(SAS / SATA/ NLSAS/SSD盘/SSD卡)。三副本情况下最大为2048块盘或者SSD卡 。
每台服务器内每资源池Cache介质数量: 0~4,并且小于硬盘/主存介质数量, 集群内初始各服务器间Cache介质数量可不⼀样;但同⼀资源池内初始各服务器间Cache介质数量必须⼀样。
服务器内硬盘/主存类型可不⼀样,每⼀种硬盘/主存类型都可划分到不同资源池,比如SATA划个池、 SSD盘划个池、 SSD卡划个池;但资源池内各服务器间硬盘/主存类型必须⼀样。
资源池内初始各服务器间硬盘/主存数量可不一样,可以相差1-2个,但相差2个时,最多相差小于等于30%比例(如6个盘,⼀个是4个盘,相差比例为33%,超过了30%,则不能组成资源池,如果是8个和6个则可以)。
服务器内硬盘/主存大小可以不⼀样,大小不一(类型形同)的硬盘/主存,可以划入同⼀个资源池,但只能大的当小的用。
每个节点上的存储网络配置要保持⼀致。
FusionStorage支持的主存类型: SATA/NLSAS盘、SAS盘、SSD盘以及SSD卡
从IO性能看, SSD卡>SSD盘> SAS盘>SATA/NLSAS盘
从每GB成本看, SSD卡>SSD盘>SAS盘> SATA/NLSAS盘
Cache类型的选择: No Cache、 SSD盘和SSD卡(华为推荐)、 NVDIMM(特殊的插在内存上的缓存)
No Cache指的是没有Cache加速,原则上仅在SSD盘或者SSD卡做主存情况下采用
SSD盘/SSD卡在SAS盘或者SATA/NLSAS盘做主存情况下使用
NVDIMM跟服务器硬件紧耦合,当前仅在华为E9000系列服务器和RH2288H服务器中支持,原则上也仅在SSD盘或者SSD卡做主存情况下采用,不推荐使用
从Cache时延看, NVDIMM 单部件容量看, SSD卡>SSD盘>NVDIMM, Cache容量越大,加速性能会越好
⼀般情况下默认采用SSD卡做Cache
存储网络类型的选择:万兆或者千兆以太网络(10GE/GE) 和IB网络
FusionStorage有效容量及性能估算
- 单盘或卡的有效容量(TB) = (z/(1.024^4)-p*r/1024)*q/k
Z=盘或SSD卡标称容量(TB) , z为GB时,需转换为TB(GB/1000)
r= FusionStorage OSD开销(GB)
P=主存对应的OSD进程数, HDD和SSD盘, 1个硬盘上运行的OSD进程数为1; SSD卡,不同的卡进程数不同
k=副本数
q=磁盘空间利用率
- FusionStorage有效容量=单盘或卡的有效容量*总盘或卡数
- 项目所需的总盘数=roundup(有效容量总需求/单盘或卡的有效容量,0)
- FusionStorage总IOPS=单主存性能值*主存数量
例如,⼀共配置20台服务器,每台配置了12个4T SATA盘,这些盘都用于FusionStorage的数据盘, 3副本,磁盘利用率取0.95。则单盘有效容量=(4/(1024^4) -120.7/1024))0.95/3=1.15T, 总有效容量=20121.15=276TB; 反过来,如果需要配置200TB的有效容量,则需求的4TB盘数量:硬盘数量=roundup(200/1.15,0) =174个,如果每个服务器配置12个4TB盘,则服务器数量=roundup(174/12,0) =15台。
- 如某主存单IOPS=510, 主存数量36,则FusionStorage总提供IOPS=510*36=18360。