依托自研力量,给共享集群存储服务一个优选

news2024/11/15 21:52:46

YashanDB共享集群有三大关键组件,崖山集群服务(YCS)、崖山集群文件系统(YFS)、DB组件。上一篇共享集群系列文章《为何共享集群的高可用能力被频频称赞,它的机制有何不同?》深入解析了关键组件的高可用机制与核心技术,本文将深入探讨崖山集群文件系统(YFS)关键技术和特性,并阐释我们选择自主研发共享集群存储服务组件的原因。

崖山集群文件系统(YFS)是YashanDB的一个用户态存储服务组件,提供了文件系统以及磁盘组管理能力,用于管理共享磁阵。用户可通过YFS实现共享磁阵上基本的文件/文件夹的创建、删除、浏览等功能。此外,YFS还提供了管理diskgroup(磁盘组)、failuregroup(故障组)等重要特性,以支持共享集群的存储高可用。

图1 YashanDB共享集群总体架构

Q.为什么选择自研YFS?

一是YashanDB共享集群作为高性能、高可用集群,对存储组件提出几大高要求

  1. 高效访问共享存储。集群内多节点访问相同的存储设备,存储本身为各节点的临界资源,需要一套机制,协调各节点,高效、正确的读写共享存储资源。

  2. 支持Bypass操作系统缓存。YashanDB 集群集成了自研的聚合内存技术,利用集群各节点内存,共同构架了一个大容量、高效率的cache。这也意味着不再需要操作系统IO缓存,也避免了系统缓存造成的延迟,引起各节点数据不一致的可能性。

  3. 提升存储IO性能,最大程度发挥集群架构的优势。

  4. 保障集群高可用性。是DB数据到存储设备的必经之路,存储组件必须保证数据不丢失、数据服务高可用。

二是市面上现有的解决方案无法满足YashanDB共享集群以及集群高可用要求

首先,在项目初期,优先考虑过现有系统是否可以支撑YashanDB集群需求,但Ext3/4等单机文件系统天生不支持共享存储,需要构造特定条件,把单机文件系统当作共享文件系统使用。

其次,GFS、NFS等方案性能无法满足YashanDB集群高可用要求。GFS、NFS等方案与YashanDB集群的场景匹配度不高,通用方案没法针对DB特定场景优化,额外的通信开销较多,仅能达到能用的程度。支撑YashanDB作为高性能核心交易系统,还是有一定差距的。

尝试了诸多方案后,我们决定自研崖山集群文件系统YFS,直接管理裸设备。

YFS管理裸设备的优势

优势1:源码可控,定向提升IO性能。根据DB的业务需求和业务特征,在文件系统层做定向的IO性能优化。

优势2:解决元数据同步问题

优势3:高可用能力下沉,简化业务层逻辑。在文件系统层支持部分DB高可用能力,如解决脑裂双写、数据损坏等问题。

优势4:提供文件系统接口,抽象存储细节。在同一抽象层里,崖山集群文件系统YFS可以跟单机的文件系统具备相同的接口,如支持open、close、read、write等接口。

YFS最终技术选型

内核态or用户态

在设计初期,我们面临两个选择:YFS应该部署在内核态还是用户态。考虑到YFS的应用场景、部署环境等因素,最终YFS是一个用户态的存储服务组件。

一是用户态服务灾备恢复速度快。内核模块异常可能引起系统crash,得益于Linux系统的进程隔离,用户态服务异常几乎不会引起系统级灾难,可以快速从异常中恢复。

二是我们希望YFS可以不依赖特定内核版本。YashanDB共享集群的部署环境较复杂,内核版本繁杂,还有一些厂商定制内核,我们希望YFS是一个便携的服务,不依赖特定的内核版本。

三是考虑到YFS的服务对象,选择用户态性价比较高。内核模块确实具备最高的系统权限,可以访问从硬件相关的底层特性,到进程资源、状态等信息,不过YFS是面向YAC这样特定业务的文件系统,服务对象简单的多,在用户态有其他方案可以实现同等效果,而且成本可控。

四是用户态进程开发、调试比内核态更便捷。YFS具备可伸缩的软件架构,用户态下更方便使用一些高级库支持,不会受制于内核的限制。

图2 内核态和用户态优劣势

架构

YFS由共享存储上的元数据和YFS服务进程构成。元数据包含文件、目录信息,YFS的一些内部状态等。YFS通过多副本技术,文件在共享存储中具备可配置的冗余。崖山集群文件系统YFS架构详见下图:

图3 YFS架构图

关键技术

下面我们介绍YFS是如何实现高性能、高可用特性。主要从物理存储结构、逻辑存储结构、逻辑对象等方面描述。

物理存储结构

YFS的磁盘空间分为3个逻辑层次,block、AU(Allocation Unit)、Extent,目前单个磁盘可以支持到PB级,能兼容市面上绝大多数存储设备。

  • block

  • 是YFS的最小管理单元

  • 是YFS元数据的最小管理单元,通常为4K

  • 缺点:1)颗粒度较小,需要大量的管理结构;2)磁盘空间碎片化,连续IO性能不好

  • AU(Allocation Unit)

  • 连续的block整合成一个AU

  • 是YFS管理磁盘的最小单位,支持多种规格配置

  • 优点:兼顾存储空间管理的灵活性、和效率

  • Extent

  • 多个连续的AU也会组成更大的连续区域Extent

  • YFS支持变长Extent,可管理PB级的单盘

  • 优点:1)可以扩大FAT的寻址能力;2)适配市面常见的存储规格

逻辑存储结构

YFS作为集群的存储组件,除了以外部磁阵实现数据高可用外,也内置一套文件级的冗余机制来实现数据的高可用。并引入故障组概念,描述YFS如何管理磁盘故障特性。

  • 故障组

  • 故障组描述磁盘故障相关性

  • 合理配置故障组是管理员的责任,不同运维场景,分配不同

  • YFS通过故障组,感知共享存储的外部环境,识别各磁盘故障率之间的相关性,安排冗余数据的存储位置

  • 磁盘组

YFS管理多个磁盘组,并根据各磁盘组的差异性,对管理的存储资源分类,形成3层结构:

  • 各磁盘组故障、资源、业务隔离

  • 磁盘之间通过故障组描述各磁盘故障相关性

  • 各故障组的磁盘共同支撑冗余机制,数据高可用

图4 YFS磁盘管理层次图

逻辑对象

YFS的设计参考了现行流行文件系统的实现,并根据YashnDB的业务特征做了很多改进。

一是YashanDB文件尺寸跨度较大,我们希望兼顾大小文件管理的便利,决定YFS采用二级索引,并用其他机制来解决二级索引可能面临的文件大小限制问题。

  • 二级索引:YFS的FAT采用简化的2级索引,控制文件元数据的大小。

  • 1级直接索引的前半部分slot,直接指向大小为1AU的Extent,紧凑的管理小文件。即对于小文件只需要自己的数据AU和4K的控制信息即可,管理效率较高。

  • 1级索引的后半部分slot指向间接索引AU,索引AU由一组4K的间接索引block构成,其中的slot才指向数据Extent。

  • 阶梯式变长Extent:YFS采用变长Extent,进一步提升对超大文件的管理能力,实现更大的文件只需要较少的间接索引slot即可管理。

  • 在文件的第2万个AU处Extent扩展为4AU,第10万个AU处扩展为16个。

通过二级索引和阶梯式变长Extent,YFS最大可支持500PB的单个文件。

二是YFS奉行“一切皆文件”的Linux哲学,所有元数据均采用文件管理,根据用户是否可见分为元文件和用户文件两类。具体文件分类如下:

  • 元文件,用户不可见。

  • 超级文件。是YFS元数据的入口文件,记录所有文件的元信息。YFS通过超级文件完成元数据自举。

  • Dir文件。用于记录YFS的目录层次。

  • YFS Redo,实现YFS的原子操作,也是YFS高可用重要组成部分。

  • 等等。

  • 用户文件,由用户通过createFile创建,保存用户数据

采用该管理方式具有两个优势,一是元数据和用户数据统一由文件管理,共用YFS文件级高可用策略;二是元数据以文件管理,无论元文件的数量还是大小,都具备无限扩展能力,使得YFS具备无限的演进可能。

特性

高可用性

YFS具备Diskgroup级(磁盘级)的资源隔离,保障YFS持续可用。

一是物理存储隔离,不存在横跨多个磁盘组的磁盘,某个故障的磁盘组不会影响其他磁盘组的数据可用性,在极端情况下,灾难性损失控制在磁盘组内;二是磁盘运行时资源隔离,可避免故障磁盘组影响其他磁盘组的业务,保证YFS业务的持续性。

YFS内置Redo,保存在元文件中,对用户不可见。

一是保证元数据操作的原子性,不因个别节点故障而使YFS集群状态不确定;二是实现集群状态一致性。YFS集群会选举协调节点,管理集群元数据变更业务,通过日志复制同步实现集群状态一致性;三是协调节点故障时,YFS集群会选举新的协调节点,利用YFS Redo文件恢复元数据状态。

YFS提供实时数据修复能力,自动切换故障副本,切换过程对DB透明,业务无感知。

在读取数据时,会乱序读取副本数据,并校验数据,如果发现数据损坏,则自动切换副本继续读取,直到读到完整数据。有助于YFS承载YashanDB部分高可用能力。

YFS通过快速恢复区技术作为单副本时的补充,对YFS元数据提供额外的保护。

快速恢复区记录YFS元数据变更的历史数据,当发现YFS元数据故障时,会尝试从快速恢复区找到最近的历史数据,恢复YFS元数据。

扩缩容能力

YFS支持集群横向扩容和对空间扩缩容。在横向扩容中,允许在线加入或移除节点,集群管理模块会自动识别到新节点;同时YFS支持在线增减盘,支持在线创建磁盘组、向已有磁盘组增加故障组、向已有故障组增加磁盘三种。

用户可以根据实际的运维场景,随着业务增长,按需扩充YFS管理的存储空间。

高性能IO

YFS具备极好的性能指标,支撑YashanDB集群取得行业领先的性能测试成绩。YFS采用多种技术和架构,突破传统文件系统的性能瓶颈。

一是YFS直接管理裸设备,在大批量读写操作时,有效发挥集群多节点的并发IO优势,实现系统总体吞吐效率最大化。

二是YFS借助元数据缓存,各节点IO过程完全独立,**除数据读写操作外,不会引入额外的通信开销,**不会因为更多的节点发起而导致整体IO性能下降。

三是YFS实现了AU级条带化。当读取数据时,YFS会将IO请求离散到不同的磁盘,系统总体IO带宽可以超过单个磁盘的带宽。

四是YFS支持可定制的AU size,根据业务的IO特征,选择匹配的AU size,在顺序IO时获得最佳性能。

图5 YFS建表删表性能参考图

支持多种常见API

YFS支持大多数常用文件语义接口,文件的增删改查、读写等,目录的基本操作等,满足YashanDB的业务需要。

图6 YFS适用的文件语义接口

YFS是用户态文件服务,我们开发了专用的管理客户端,方便管理员登陆YFS执行日常管理,兼容常见的Linux shell指令。

图7 YFS适用的文件管理命令

YFS作为YashanDB共享集群的存储组件,为了满足集群高可用性而研发,提升了集群存储的IO性能、解决集群元数据同步问题、承载集群部分高可用能力。未来YFS将持续迭代,提供更多强大易用的功能,助力用户实现更稳定、更灵活的集群存储管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2104788.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第九届“创客中国”生成式人工智能中小企业创新创业大赛复赛圆满落幕

9月3日,第九届“创客中国”生成式人工智能(AIGC)中小企业创新创业大赛复赛在南昌高新区艾溪湖畔圆满落幕,共有11组企业项目和10组创客项目凭借其卓越的项目展示、深刻的市场洞察以及前瞻的技术应用,脱颖而出,成功晋级至激动人心的决赛阶段。 本次大赛由工业和信息化信息中心主办…

多池化策略揭秘:PVAFN如何实现更精准的3D物体识别?

更多优质内容,请关注公众号:智驾机器人技术前线 1.论文信息 论文标题:PVAFN: Point-Voxel Attention Fusion Network with Multi-Pooling Enhancing for 3D Object Detection 作者:Yidi Li, Jiahao Wen, Bin Ren, Wenhao Li, Zh…

传统CV算法——基于Sift算法实现特征点检测

图像尺度空间 在一定的范围内,无论物体是大还是小,人眼都可以分辨出来,然而计算机要有相同的能力却很难,所以要让机器能够对物体在不同尺度下有一个统一的认知,就需要考虑图像在不同的尺度下都存在的特点。 尺度空间的…

【练习5】简写单词

地址:简写单词_牛客题霸_牛客网 (nowcoder.com) 分析: 1.用到in.charAt(i)方法,可以实现读取下一个由空白字符分隔的输入字符串,并返回这个字符串的第一个字符。 2.ch-32可以实现小写字母转大写字母。 public static void main(St…

微积分复习笔记 Calculus Volume 1 -1.4 Inverse Functions

1.4 Inverse Functions - Calculus Volume 1 | OpenStax

[数据集][目标检测]汽油检泄漏检测数据集VOC+YOLO格式237张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):237 标注数量(xml文件个数):237 标注数量(txt文件个数):237 标注类别…

最新影视直播CMS源码/基于苹果CMS系统/粉红色UI/附搭建教程/支付已接+会员中心

源码简介: 最新影视直播CMS源码,它是基于苹果CMS系统框架,外观是超可爱的粉红色UI设计。里面还附带了详细的教程,轻松上手。而且,支付功能已经完美接入,会员中心也一应俱全。 这套源码是基于苹果CMS v10影…

网络编程详解

什么是网络编程 网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输) 发送端和接收端 发送端:数据的发送方进程,称为发送端。发送端主机即网络通信中的源…

信创实践(2):利用Leapp工具迁移CentOS至AnolisOS,实现系统升级与自主可控

1. 引言 为了满足用户在CentOS退出后对操作系统使用的诉求,OpenAnolis龙蜥社区正式发布了Anolis OS。越来越多的CentOS客户期望能够迁移到Anolis OS上来。操作系统迁移是一个复杂工程,手工迁移技术要求高,操作复杂度强,需要耗费大…

Windows 欺骗主机 Burn-In 的自动化工具

Sinon 是一款开源的模块化工具,用于自动测试基于 Windows 的欺骗主机。 它旨在降低大规模编排欺骗主机的难度,同时通过生成功能实现多样性和随机性。 Sinon 旨在通过执行模拟实际用户活动的各种操作来自动设置欺骗主机。 目标是创建一个可以欺骗潜在入…

Python3.8绿色便携版安装版制作

Python 的绿色便携版有两种:官方 Embeddable 版本(嵌入式版);安装版制作的绿色版。Embeddable 版适用于需要将 Python 集成到其他应用程序或项目中的情况,它不包含图形界面的安装程序,只提供了 Python 解释器和必要的库…

国企民企协同共进,让长沙永远是当打之年

一提到长沙,大多都会跟“网红”二字联系在一起,随之而来的是巨大关注度与经济效应,但与此同时,争议也随之而来:这样的网红城市依赖单一的“网红”元素或流量效应,经济增长缺乏内生动力,十分不禁…

大数据-118 - Flink DataSet 基本介绍 核心特性 创建、转换、输出等

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

JVM 垃圾回收机制:GC

目录 一、死亡对象的判断算法 1.1 引用计数算法 1.2 可达性分析算法 二、垃圾回收算法 2.1 标记-清除算法 2.2 复制算法 2.3 标记-整理算法 2.4 分代算法 三、垃圾收集器 3.1 CMS收集器(老年代收集器,并发GC) 3.2 G1收集器(唯一一…

项目实战 - 贪吃蛇

目录 1. 基本功能 2. 技术要点 3. 环境 4. 效果演示 5. 控制台设置 6. Win32 API介绍 6.1 Win32 API 6.2 程序台控制(Console) 6.3 控制台屏幕上的坐标(COORD) 6.4 GetStdHandle 6.5 GetConsoleCursorInfo 6.5.1 CONSOLE_CURSOR_INFO 6.6 SetConsoleCursorInfo 6…

云原生架构概念

云原生架构概念 云原生架构(Cloud Native Architechtrue)作为一种现代软件开发的革新力量,正在逐渐改变企业构建、部署和管理应用程序的方式。它的核心优势在于支持微服务架构,使得应用程序能够分解为独立、松耦合的服务&#xf…

详解si5338 si53xx 设计使用及STM32 iic驱动设计

背景 在实际项目中经常使用si5338 si53xx,进行多路时钟的倍频以生成想要的时钟信号,但是针对si5338 si53xx设计使用缺少相关的资料,本文详解si5338 si53xx 设计使用及STM32 iic驱动设计,本文使用工程在项目中得到测试&#xff0c…

基于人体关节夹角的人体动作识别算法(代码+数据集)

为此本文提出了一个基于人体关节夹角的人体动作识别算法,主要做了以下工作: (1)提出了一个可解释性强,耗费算力较少且鲁棒性较高的基于人体关节夹角的人体动作序列的特征抽取方法。 (2)本文所使…

PyInstaller实战:打包Python应用并间接指定输出文件名

在深入探讨如何使用PyInstaller打包Python应用并指定输出文件名称的过程中,我们不仅可以了解基本的命令行操作和参数设置,还可以深入了解PyInstaller的工作机制、状态变化以及它在处理复杂Python项目时的优势。下面,我们将详细展开这一过程&a…

提升多跳问答中的语言模型知识编辑能力

人工智能咨询培训老师叶梓 转载标明出处 大模型在静态知识库的更新上存在局限,特别是在面对需要多步骤推理的多跳问题时,难以提供准确和最新的回答。为了解决这一问题,来自美国佐治亚大学、纽约大学、莱斯大学、北卡罗来纳州立大学等机构的研…