系列文章

  1. SFS与CBR
  2. ECS,EVS以及OBS
  3. 华为ECS详解

云服务:ECS,EVS以及OBS

基本概念

ECS(弹性云服务器)、EVS(弹性云硬盘)、OBS(对象存储服务)是最基础也是最核心的三种云资源,其基本定义如下:

名称 全称 类型 用途
ECS Elastic Cloud Server 计算资源 云上的虚拟机,运行操作系统、部署应用
EVS Elastic Volume Service 块存储 相当于“云硬盘”,挂载给 ECS 作为系统盘或数据盘
OBS Object Storage Service 对象存储 存储图片、视频、文档等海量非结构化数据

其更详细的对比如下:

特性 ECS EVS OBS
功能角色 云服务器 硬盘(块存储) 文件/对象存储
挂载方式 无需挂载,直接使用 挂载到 ECS 或裸金属服务器 不挂载,通过 API/S3 协议访问
访问方式 SSH / 远程桌面 / 控制台 文件系统挂载(如 ext4) RESTful API / SDK / 控制台
典型用途 应用部署、Web 服务、数据库运行 系统盘、数据库数据盘、缓存盘 存储图片、备份、日志、媒体等
数据类型 结构化数据(程序、服务) 结构化数据(磁盘文件) 非结构化数据(对象:文件、图像等)
持久性 取决于磁盘(EVS) 高持久性(支持快照) 超高持久性(11个9),自动冗余备份
扩展性 水平伸缩可扩容 支持磁盘扩容 无限制扩展(理论上可存PB级)
计费模式 按需/包年包月 按容量计费 按使用量计费(存储+请求次数+下行流量)

我们接下来先关注几个问题:

  • 对象存储 v.s 块存储(以及其它存储类型)
  • 文件系统挂载是什么意思
  • 为什么要区分vCPU以及pCPU,如何去分析的看这两个数据
  • Elastic是如何实现的

EVS v.s OBS

EVS(Elastic Volume Service)

EVS(云硬盘),类似PC中的磁盘,直接对应磁盘的扇区,初始态没有文件系统,为没有边界的纯二进制数据流,无法单独使用,也不能被操作系统应用直接访问(其不能直接读某个区块,而只能通过文件路径访问),需要挂载到ECS之后格式化文件系统才能够通过路径访问。

其实EVS可以看作最底层的虚拟化SSD或者HDD

其一般挂载到云服务器或者裸金属服务器使用,其E(Elastic)的含义是支持最小10GiB到最大32TiB(系统盘1TiB)热扩容,此外其还支持备份,快照恢复等功能。

  • 裸金属服务器:提供完整物理服务器资源(CPU/内存/存储)的独占使用权,硬件无虚拟化层
  • 云服务器:基于虚拟化技术将物理资源划分为多个虚拟机实例,用户共享底层硬件资源

性能指标

云硬盘性能的主要指标包括:

  • IOPS:云硬盘每秒进行读写的操作次数。
  • 吞吐量:云硬盘每秒成功传送的数据量,即读取和写入的数据量。
  • IO读写时延:云硬盘连续两次进行读写操作所需要的最小时间间隔。

此外,云硬盘的性能与数据块大小密切相关:

  • 同一数据块大小,当最大IOPS或最大吞吐量中有一项指标达到最大值时,此时云硬盘性能达到最大,另一项指标无法再继续上升。
  • 不同数据块大小,云硬盘性能达到最大的指标可能不同。
    • 对于小数据块,例如4 KiB和8 KiB,性能可达到最大IOPS
    • 对于≥ 16 KiB的大数据块,性能可达到最大吞吐量

一般有4KiB,8KiB,16KiB以及32KiB四种格式的数据块,有如下表

数据块大小(KiB) 最大IOPS 最大吞吐量(MiB/s)
4 约50000 约195
8 约44800 约350
16 约22400 约350
32 约11200 约350

基本上有4×50000/1024=1954\times50000/1024=195,这时候IOPS是瓶颈,但到了16的时候IOPS则呗最大吞吐量限制,有350×1024/16=22400350\times1024/16 = 22400

此外吞吐量其实与磁盘容量也有关系,这可能是和磁头的数量有关,有这样的线性增长性: 吞吐量=min(1000,120+0.5×容量)\text{吞吐量}= \min (1000, 120 + 0.5 × \text{容量})

磁盘模式:SCSI与VBD

SCSI模式可以直接执行硬件级别的命令访问硬件,而VBD需要先将软件级别的读写指令封装为SCSI读写从而进一步访问硬盘(有点类似原生SQL和高级的ORM机制)。 所以SCSI主要用于多机共享的集群系统,其支持锁机制,支持跨主机并发访问与协调。

功能 VBD 模式 SCSI 模式
是否支持 SCSI 锁机制 针对 Reservation
适用场景 单机 ECS,只需基本读写 多实例共享磁盘且需写冲突控制
支持命令类型 仅 READ/WRITE 支持高级 SCSI 指令
是否安装驱动 无需驱动 Linux/Windows 需 SCSI 驱动(如 PVSCSI)
适合客户类型 普通 Web 服务、小规模应用 企业集群、高可用系统

运营运维:计费与安全

计费模式

云硬盘(EVS)服务根据磁盘容量计费,提供包年/包月、按需计费两种计费模式。

  • 包年/包月:预付费。
  • 按需计费:后付费。按秒计费,按小时结算,不足一小时以实际使用时长为准。
计费项

云硬盘的计费项由云硬盘费用性能费用云硬盘回收站费用云硬盘快照费用组成。具体内容如所示。

  • 开始计费:云硬盘购买成功后开始计费,与是否挂载使用无关。
  • 停止计费:
    • 包年/包月云硬盘退订成功后停止计费,按照一定比例退还预付的费用。退款金额= 订单实付金额-已消费金额-退订手续费,详细计算方法请参见退订规则
    • 按需计费云硬盘删除成功后停止计费。

注:云硬盘进入回收站后仍按照按对应的按需计费模式,直至其恢复或者销毁

权限管理

为达到权限隔离,可以使用统一身份认证服务(Identity and Access Management,简称IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能。默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作

关于IAM的详细介绍,请参见IAM产品介绍

OBS(Object Storage Service)

对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。

OBS系统和单个桶都没有总数据容量和对象/文件数量的限制,为用户提供了超大存储容量的能力,适合存放任意类型的文件,适合普通用户、网站、企业和开发者使用。OBS是一项面向Internet访问的服务,提供了基于HTTP/HTTPS协议的Web服务接口,用户可以随时随地连接到Internet,通过OBS管理控制台或各种OBS工具访问和管理存储在OBS中的数据。此外,OBS支持SDK和OBS API接口,可使用户方便管理自己存储在OBS上的数据,以及开发多种类型的上层业务应用。

OBS的基本组成是对象

桶是OBS中存储对象的容器,每个桶都有自己的存储类别、访问权限、所属区域等属性,用户在互联网上通过桶的访问域名来定位桶。其是扁平化存储,即桶内所有对象处于同一逻辑层级,没有文件目录的概念

对象是OBS中数据存储的基本单位,一个对象实际是一个文件的数据与其相关属性信息的集合体,包括Key、Metadata、Data三部分

实例分析

以华为云为例,有标准存储,低频访问存储,归档存储以及深度归档存储:

对比项目 标准存储 低频访问存储 归档存储 深度归档存储(受限公测)
场景 云应用、数据分享、内容分享、热点对象 网盘应用、企业备份、活跃归档、监控数据 档案数据、医疗影像、视频素材、带库替代 长期不访问的数据存档场景
持久性 99.999999999%(11*9) 99.999999999% 99.999999999% 99.999999999%
持久性(多AZ) 99.9999999999%(12*9) 99.9999999999% 不支持多AZ 不支持多AZ
可用性 99.99% 99% 99% 99%
可用性(多AZ) 99.995% 99.5% 不支持多AZ 不支持多AZ
数据恢复 不涉及 按实际恢复数据量收费,单位GB 分加急、标准恢复方式按实际恢复数据量收费,单位GB 分加急和标准两种恢复方式按实际恢复数据量收费,单位GB

AZ = 可用区,是区域内部的物理隔离域;在 单 AZ 设计中,所有数据和资源置于一个 AZ 内;保护基础为 AZ 内硬件冗余,但 无法抵御 AZ 整体故障

性能指标:可用性与可靠性:

**可用性:**在可靠性/运维中,常说的可用性指标就是 系统一整年正常运行的百分比,例如:

  • 99.9% 可用性(“三个 9”) ≈ 一年允许 最多停机 8 小时 45 分钟;
  • 99.99% 可用性(“四个 9”) ≈ 最多 52 分钟;
  • 99.995% 可用性(“五个 9”) ≈ 最多 26 分钟

一般多AZ就是从概率的角度来说减少同时挂掉的可能,可以通过简单计算得到,参考AWS的文档

**可靠性:**其基本上代表着对于n个对象的存储,在m年以内是没有丢失的,具体数据如下

指标 年度持久性 写 10 亿个对象的预期丢失量
11 个 9(99.999999999%) 每年丢失概率约 0.00000000001 平均每 100 年丢失 1 个 对象
12 个 9(99.9999999999%) 再少一位:0.000000000001 平均每 1 000 年 才丢 1 个 对象

这种级别准确来自概率公式:

失败率10.99999999999=1011,10.999999999999=1012\text{失败率} ≈ 1 - 0.99999999999 = 10^{-11}, \quad 1 - 0.999999999999 = 10^{-12}

应用场景与服务

  • 大数据分析
  • 静态网站托管
  • 在线视频点播
  • 基因测序
  • 智能视频监控
  • 备份存档
  • HPC
  • 企业云盘

与其他服务的关系:如图

计费与安全

OBS计费项由存储费用请求费用流量费用数据恢复费用数据处理费用组成,计费周期基本上为小时如图所示

由于OBS会面向公网,所以如果桶地址直接暴露,哪怕是请求失败,请求也到达了服务器并且服务器给出了失败的响应,也就产生了流出流量,所以就会受到DDoS攻击;而之前提到的EVS由于是挂载在ECS或者BMS上,其主要I/O来自本地硬件,所以不会产生公网上的流量费用

EVS、OBS与SFS横向对比

文件存储

文件存储将数据存储在文件夹中。这种方法也称为分层存储,模拟了纸质文档的存储方式。当需要访问数据时,计算机系统必须使用文件夹结构中的路径来查找数据。

文件存储使用 TCP/IP 作为传输,设备通常在 Linux 中使用 NFS 协议,在 Windows 中使用 SMB 协议。

块存储

块存储将文件拆分成多个独立的数据块,并将每个数据块存储为一个单独的数据单元。每个数据块都有一个地址,因此存储系统无需文件夹路径即可找到数据。这还允许将数据拆分成更小的块并以分布式方式存储。每当访问文件时,存储系统软件都会根据所需的数据块组装文件。

块存储使用 FC 或 iSCSI 进行传输,设备作为直接连接存储或通过存储区域网络 (SAN) 运行。

对象存储

在对象存储系统中,构成文件或“对象”的数据块及其元数据都保存在一起。每个对象都会添加额外的元数据,从而实现无层次结构的数据访问。所有对象都位于统一的地址空间中。为了查找对象,用户需要提供唯一的 ID。

基于对象的存储使用 TCP/IP 作为传输,设备使用 HTTP 和 REST API 进行通信。

元数据是对象存储技术的重要组成部分,元数据由用户自主决定,可以根据存储池的功能和特性,灵活地分析和检索存储池中的数据。

对象存储的主要优势在于,您可以将设备分组到大型存储池中,并将这些池分布到多个位置。这不仅允许无限扩展,还能提高数据的弹性和高可用性。

三者在物理磁盘上的存储对比:

存储模式 磁盘中如何存储数据 索引结构 / 查找方式
块存储(EVS) 操作系统分配固定大小的 block 写入相应扇区/Page 无路径语义,通过地址直接读写
文件存储(SFS) inode 和数据 block 写入扇区/Page,通过元数据定位数据 POSIX 路径逐级查找 → inode → extent/数据块
对象存储(OBS) 内容分片存储在 DSS 后端 SSD/HDD 中,索引保存在元数据层 以 Key 映射元数据索引 → 定位底层对象块

注意,OBS和SFS在最最底层的硬盘上还是以块的形式分布存储,但是其均有中间层进行查找,并且向上表现为Key(OBS)以及路径(SFS)