专栏首页王炎的专栏老司机带你探知存储伸缩之道

老司机带你探知存储伸缩之道

一、概要

腾讯分布式文件存储(TFS)的数据量在短短数年时间里从0增加至EB级别,使用了几十万块磁盘,增长速度非常迅猛。另外,TFS 承载的几乎都是互联网在线存储业务,需要在保证业务正常访问的情况下经常性快速扩容。在这种情况下,存储系统的伸缩性显得尤为重要,扩容过程的高效、稳定就成为必须要解决的问题。

下面介绍TFS平台实现EB级存储伸缩的几个关键技术。

二、存储 Set 模型

在系统快速扩容的过程中,必须要解决的问题是:系统以何种方式进行扩容,扩容的时候如何保证扩容操作和流程简单、快速、可靠。TFS 的数据层使用了存储Set来解决这些问题。

存储 Set 是 TFS 系统内部快速扩容的一个标准单位。TFS 整体的系统架构采用了文件索引和文件数据内容分离存储的设计方式,整个数据集群划分为多个存储 Set ,各个存储 Set 独立运营,之间没有任何依赖。每次需要扩容的时候,只要增加存储 Set 到 TFS 存储系统中即可。

1、存储 Set 定义

存储Set内部自成存储集群。每个 Set 内部有控制节点( ChxMaster )和若干存储节点( Chxd )组成。其中 ChxMaster 节点负责整个子系统内部的集群控制、路由、数据调度等控制层逻辑;而 Chxd 则部署到各个存储服务器上,负责本地数据的存取, Set 内部的数据复制与重建,底层磁盘管理等数据层的逻辑。

存储 Set 有以下特点:

◆ 每个存储 Se t对外提供了独立的数据读写功能,数据上传之后,ChxMaster 会返回一个存储 Set 内部的 Key 供客户端后续访问。

◆ 存储 Set 内部的各个存储节点采用了同构设计,一个存储 Set 内部只有一种类型的存储服务器硬件,这样可以大大简化存储 Set 内部的负载均衡和空间管理。各个存储 Set 之间采用同样数量的硬件。比如典型3备份的存储 Set 都使用了30台存储服务器。

2、存储 Set 的使用优点

当集群规模变大之后,不可避免地会遇到人工操作失误、评估困难、资源调整、软硬件更新换代等问题。而 TFS 把数据集群拆分成各个标准化的存储Set之后,可以带来以下好处:

(1)标准化部署

因为每次需要扩容的时候,只需要再多部署指定数量的存储Set。这种例行的扩容操作就很容易标准化下来。对于系统规格的评估也变得相对简单,可以简化为每个Set可以提供多少存储容量,以及对应的性能规格。这样人工操作失误导致事故的概率就大大降低,也很容易从系统层面自动进行校验,提前发现风险。

(2)故障隔离

数据的复制、流动限制在存储Set内部,所以单个节点故障造成的影响只会限制在单个存储Set内部,不会影响到整个TFS系统。这样就可以起到很好的故障隔离效果,解决大规模集群下,错误扩散的问题。

(3)单独的读写控制

因为各个存储Set各自相对独立,我们很容易在接入层对各个存储Set的写负载进行单独控制。在进行新的软件版本测试和灰度上线的时候,就可以逐步放量,比较容易控制节奏。

(4)高效数据迁移

TFS 系统已经运行好多年,几乎每年都会有机房裁撤和机器退役导致的数据迁移需求。存储 Set 模型固定之后就可以使用两个存储 Set 之间数据对拷的方式,而不用修改文件索引层,大大降低数据迁移的成本。

三、弹性小表

TFS 的文件索引部分使用的是基于一致性哈希设计的分布式 Key-Value 系统( TSSD )。TSSD 通过将哈希空间等分为 N 份,每份作为一个虚拟节点,在 TFS 系统中使用称为小表的逻辑结构来承载。在进行数据迁移和扩容的时候,小表是最小的调度单元。

TFS 的索引系统无法像数据层那样分为各个 Set ,只能使用中心服务式的设计,在弹性方面要能够从3台服务器扩展到上千台。在云服务的场景下,除了常规的扩容之外,还需要解决多租户、以及成本优化等问题。

1、资源隔离

作为云存储的平台,TSSD 需要支持多租户特性。在多个租户共享一个存储集群的时候,各个租户之间在容量和访问性能上难免会有冲突。

TSSD 给底层的小表分配各自独立的物理存储空间,同时每个小表的 IO 性能也从存储引擎层面做了限制。通过将不同的小表分配给不同的租户的方式,解决了云平台多租户数据物理隔离的问题,并且为每个租户提供了基础性能保证。

2、按需分配

在进行容量配额管理的时候,从一开始就为每个小表指定好一段连续的物理存储空间是最简单的实现方式。但是在实际运营的过程中,往往会遇到容量预估不准确等问题。另外在进行扩容的时候,为了保证迁移粒度不至于过大,需要进行小表分裂。但是当分裂刚完成的时候,空间利用率又会有突然下降。这样每个小表都需要各自独立的预留空间,存储空间利用率很低。

为解决这个问题,我们对每个小表的存储空间采用按需分配的策略。只有当数据真实写入的时候,才从整个 SSD 线型空间上分配一个 Block 给这个小表。这样在进行小表分裂的时候,各个小表未使用的空间不必预先占用,从整体上提高了 TSSD 系统的存储利用率,并且又不会丧失在物理上资源隔离的优点。

四、TDisk 系统

TFS 系统使用了非常多的大容量廉价机械磁盘,同时这些磁盘是整个 TFS 系统中故障率最高的硬件部件。另外,在系统不断变迁的同时,不可避免会引入不同规格、不同供应商提供的各种硬件。如何高效使用这些硬件,并提供统一的错误处理,是整个存储系统保证稳定可靠必须要解决的问题。

TFS 系统使用了 TDisk 作为底层磁盘的一个管理系统,将底层不稳定、异构的硬件介质屏蔽为相对统一、稳定的资源,在扩容的时候良好地支持各种存储类型的硬件。

1、盘符管理

Linux OS 的盘符漂移一直以来都是分布式存储系统需要解决的一个问题。但是传统存储系统中,修改内核固定盘符的做法过于笨重,每当需要适配新内核版本的时候,盘符管理的部分也需要随着更新一次。并且添加新的硬件类型支持也不容易。

TDisk 使用的是纯用户态处理的方式,使用 udev 机制,将现有系统的盘符重新映射,为上层软件提供必需的硬件槽位信息。这种做法没有 OS 内核版本的限制,对于硬件的兼容性也较好。在插拔硬盘的时候,即使不重启存储服务器,逻辑盘符也不会发生变动,也很大程度上降低了运维的压力,以及坏盘对系统带来的冲击。

2、IO 栈定制

Linux 默认的 IO 栈为了通用性考虑,比较复杂。目前开源的分布式存储系统普遍基于文件系统进行设计,整个链路过长,出问题的话定位起来也很困难。如果存储进程因为 IO 未响应卡住,必须重启服务器才可以解决,影响范围较大。

TDisk 采用了定制的 IO 栈,绕过了 PageCache 等部分,并且提供了 IO 超时处理,防 IO 挂死等强化设计,使得整个底层 IO 路径更加简单可靠。

3、磁盘扫描

机械磁盘上的数据在长久存储之后,会因为磁盘坏道等原因造成部分数据丢失或损坏。但是如果没有业务访问来触发这个错误的话,很可能无法及时修复,造成数据可靠性降低,有数据丢失的风险。这个问题在数据规模越来越大,数据越来越“冷”的情况下显得尤为严重。

TDisk 提供了磁盘定期扫描的功能来解决数据静默错误的问题。每个月会将磁盘上的数据完整扫描一遍,发现磁盘坏扇区,并针对这些区域进行自动修复。提升了 TFS 数据的可靠性,并避免整盘替换带来的系统冲击。

另外,磁盘扫描的时候,会对业务 IO 的性能表现造成影响,所以 TDisk 会实时监控业务访问的压力。当磁盘比较空闲的时候全速扫描,业务有压力的时候降低扫描的压力,如果业务压力过大则暂停。

五、总结

TFS 存储系统通过 Set 模型、弹性小表、TDisk 等关键的技术和设计,切实地解决了大规模存储系统在快速扩容时遇到的一系列问题,有效地支撑了 TFS 存储系统的高速发展,为所有使用 TFS 存储系统的业务保驾护航。

原文链接:

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 老司机带你探知存储伸缩之道

    一、概要 腾讯分布式文件存储(TFS)的数据量在短短数年时间里从0增加至EB级别,使用了几十万块磁盘,增长速度非常迅猛。另外,TFS承载的几乎都是互联网在线存储...

    TEG云端专业号
  • 程序员该如何管理后宫:皇后造更多小人(抽象工厂模式)

    木东居士
  • JAVA单服务应用拆分成多个服务的实践(3)--前端的nginx转发

    上篇文章JAVA单服务应用拆分成多个服务的实践(2)--服务的dubbo化已经将部分模块微服务化了,但我们怎么测试? 我们的目标是支持ALL In One,又...

    星痕
  • nginx反向代理http和https共同使用 双存在

    不能自适应协议,也不支持协议变量,各种百度啊,两个钟头,测试了各种,都不适用宝塔,

    墨渊
  • easyUI自定义iconeasyUI自定义icon

    首先我们需要下载好自己需要的标签并且放在一个文件中,然后把这个文件夹复制到easyui所在目录下的themes目录下 如图

    yukong
  • nginx反向代理-多端口映射

    lilugirl
  • iOS开发中压缩图片的质量以及缩小图片尺寸

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

    用户1451823
  • 英伟达GTC十周年游乐场!黄老板演示马良神笔草图变实景,发布99美元迷你AI插件

    今天,英伟达2019GPU 技术大会(GTC19)在美国加利福尼亚州圣何塞举行。在这一严重拖堂、长达2小时40分钟的Keynote演讲中,英伟达创始人兼首席执行...

    大数据文摘
  • ONF开源白皮书:SDN解决方案案例——校园SDN

    1 Aspen:实时媒体接口规范(ONF) Aspen源于通信技术标准化社区的一个想法,它希望借助SDN更加高效地为用户提供服务。部署了统一标准通信基础设施的企...

    SDNLAB
  • 英伟达GTC十周年游乐场!黄老板演示马良神笔草图变实景,发布99美元迷你AI插件

    今天,英伟达2019GPU 技术大会(GTC19)在美国加利福尼亚州圣何塞举行。在这一严重拖堂、长达2小时40分钟的Keynote演讲中,英伟达创始人兼首席执行...

    大数据文摘

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动