PLCSim Advance7配置避坑指南:从IP设置到实例加载的完整流程

核心内容摘要

YOLO-v5环境搭建避坑指南:一键解决依赖问题
免费体验!Nano-Banana平铺图生成器快速入门指南

部署失败别慌!Qwen3-Embedding-0.6B常见报错解决方案

在当今大数据时代数据存储和管理已成为企业IT架构中的关键环节。

分布式存储系统因其高可用性、高扩展性、低成本等优势逐渐成为企业数据存储的首选。

Ceph作为一款开源的分布式存储系统受到了越来越多企业和单位的关注和采用。

然而在享受Ceph带来的便利的同时如何应对因误操作等原因导致的数据丢失成为企业IT运维人员必须面对的问题。

本文将详细介绍Ceph分布式文件系统的原理和特点并解析其数据恢复的原理和方法。

分布式文件系统Distributed File SystemDFS是一种能够在多台计算机之间共享文件存储资源的系统。

它将文件存储在多个节点上这些节点通常是位于不同地理位置的服务器或计算机集群。

分布式文件系统的核心目标是提高文件存储的可靠性、可扩展性和性能同时为用户提供透明的文件访问体验仿佛文件是存储在单一的本地文件系统中一样。

主要特点包括数据冗余与容错通过将文件复制到多个节点上分布式文件系统可以在某些节点发生故障时仍然保证数据的可用性。

这种冗余机制增强了系统的容错能力。

可扩展性分布式文件系统可以轻松地增加或减少存储节点以适应数据量的变化。

系统可以横向扩展以处理更大的数据集和更多的用户请求。

高性能通过并行存取和分布式计算分布式文件系统能够加快文件的读取和写入速度特别是在处理大规模数据时表现尤为显著。

透明性用户和应用程序在使用分布式文件系统时感知不到数据实际存储在何处系统提供的统一接口使得文件操作如同在本地文件系统中操作一样简单。

一致性为了保证数据的一致性分布式文件系统通常会实现某种形式的分布式锁或事务机制确保在多个用户同时访问或修改数据时不会产生冲突或数据损坏。

典型应用场景大规模数据存储如大数据处理框架中的Hadoop分布式文件系统HDFS。

云存储如Amazon S

Google Cloud Storage等。

企业级存储解决方案如Ceph、GlusterFS等用于构建高可用、高扩展的存储基础设施。

常见的分布式文件系统HDFSHadoop Distributed File System为Hadoop生态系统设计的分布式文件系统擅长存储和处理海量数据。

Ceph一个开源的分布式存储系统支持对象存储、块存储和文件系统接口具有高可靠性和灵活性。

GlusterFS一个开源的分布式文件系统擅长处理大量的小文件并提供弹性和易扩展的存储解决方案。

vSAN一种以VMware vSphere内核为基础进行开发、可扩展的分布式存储架构。

分布式文件系统的应用涵盖了从大数据处理、云存储到企业存储解决方案的广泛领域适合需要高可靠性、高可用性和高性能存储的场景。

众所周知Ceph是近年来最为炙手可热的开源分布式存储系统跟其他分布式存储系统不一样的是Ceph在称之为RADOS的核心对象存储架构之上提供了块存储、文件存储以及对象存储的接口因此Ceph可以称之为统一存储Unified Storage。

Ceph主要由Monitors、Managers、OSDs三种类型的组件组成。

其中Monitors负责维护集群状态信息Managers负责管理集群资源OSDs负责存储数据。

Ceph的底层是RADOS(分布式对象存储系统)RADOS由两部分组成OSD和MON。

MON负责监控整个集群维护集群的健康状态维护展示集群状态的各种图表如OSDMap、MonitorMap、PGMap和CRUSHMap。

OSD负责存储数据、复制数据、平衡数据、恢复数据与其它OSD间进行心跳检查等。

通常情况下一块硬盘对应一个OSD。

Ceph分布式数据的存储过程无论使用哪种存储方式对象、块、文件存储的数据都会被切分成对象Objects)。

存储池不同用户因为不同的目的把对象存储在不同的存储池里这些对象分布于OSD上。

对象保存在不同的存储池Pool中是对象存储的逻辑组对应不同的用户。

存储池管理着归置组数量、副本数量、和存储池规则集。

归置组归置组PGPlacementGroup是对象池的片段Ceph根据对象的Oid和一些其他信息做计算操作映射到归置组无数的对象被划分到不同的归置组。

PG是一个逻辑概念它在数据寻址时类似于数据库中的索引。

每个对象都会固定映射进一个PG中所以当我们要寻找一个对象时只需要先找到对象所属的PG然后遍历这个PG就可以了无需遍历所有对象。

而且在数据迁移时也是以PG作为基本单位进行迁移。

OSD最后PG会根据管理员设置的副本数量进行复制然后通过crush算法存储到不同的OSD节点上最终把PG中的所有对象存储到OSD节点上。

BlueStore在新版本中Ceph默认以Bluestore存储引擎作为RADOS中OSD的ObjectStore存储底层实现BlueStore整体架构。

存储空间BlueStore将整个存储空间分为3个部分WALDBSLOW。

慢速(Slow)空间主要用于存储对象数据由BlueStore管理。

高速(DB)空间存储blufs和rocksdb产生的数据由BlueFS直接管理如果不存在或者DB设备空间不足则选择Slow类型设备空间。

超高速(WAL)空间主要存储RocksDB的WAL即.log文件由BlueFS直接管理如果不存在或者WAL设备空间不足则逐级降级选择DB、SLOW分区。

RocksdbBlueStore使用Rocksdb作为自己元数据存储的底层实现将各种元数据以kv型记录的方式存在数据库中。

写入机制任何元数据的写入都会先写到WAL然后再写入MemoryTable(Memtable)。

当一个Memtable写满了之后就会变成immutable的MemtableRocksDB在后台会通过一个flush线程将这个Memtableflush到磁盘生成一个SortedStringTable(SST)文件。

BlueFSBlueFS与通用文件系统不同是Bluestore专为Rocksdb所设计的精简文件系统。

BlueFS的文件和目录的元数据以日志事务的形式保存在日志文件中在上电过程中replay日志文件中的事务就可以加载所有的元数据到内存中。

不过和一般分布式系统一样的是Ceph分布式同样使用多副本机制来保证数据的高可靠性一份数据Ceph在后台会自动存储多份副本从而使得在硬盘损毁、服务器故障、机柜停电等故障情况下不会出现数据丢失甚至数据仍能保持在线。

不过在故障发生后Ceph需要及时做故障恢复将丢失的数据副本补全以维系持续的数据高可靠性。

因此多副本机制是分布式存储系统的核心机制之一它带来了数据高可靠性也提高了数据可用性。

然而事情是没有十全十美的多副本机制同时带来了分布式系统的最大问题之一数据一致性保持数据一致性是故障恢复流程的难点之一。

除此之外Ceph分布式数据恢复或者说分布式存储数据恢复还有其他几个难点

感知故障并自动触发数据恢复。

做到这点能减轻运维压力也使发现和处理故障更为及时

尽量降低数据恢复过程中对集群资源的消耗。

比如最为明显的如何减少网络带宽的占用。

Ceph恢复数据的时候是拷贝整个4M对象还是只恢复有差异的数据这两种方式直接影响网络间传输的数据量

数据恢复是否影响用户的线上业务Ceph分布式是如何控制和降低这个影响的首先给大家梳理下Ceph分布式故障后常规处理的主要流程分为三大步骤

感知集群状态Ceph集群分为MON集群和OSD集群两大部分。

其中MON集群由奇数个Monitor节点组成这些Monitor节点通过Paxos算法组成一个决策者集群共同作出关键集群事件的决策和广播。

“OSD节点离开”和“OSD节点加入”就是其中两个关键的集群事件。

MON集群管理着整个Ceph集群的成员状态将OSD节点的状态信息存放在OSDMap中OSD节点定期向MON和对等OSDPeer OSD发送心跳包声明自己处于在线状态。

MON接收来自OSD的心跳消息确认OSD在线同时MON也接收来自OSD对于Peer OSD的故障检测。

MON根据心跳间隔等信息判定OSD是否在线同时更新OSDMap并向各个节点通告最新集群状态。

比如某台服务器宕机其上OSD节点和MON集群的心跳超时或是这些OSD的对等OSD发送的失败通告超过阈值后这些OSD将被MON集群判定为离线。

判定OSD节点离线后Ceph将最新的OSDMap通过消息机制随机分发给一个OSD客户端对等OSD处理IO请求的时候发现自身的OSDMap版本过低会向MON请求最新的OSDMap。

每个OSD中PG的另外两个副本可能在集群任意OSD中借此经过一段时间的传播最终整个集群的OSD都会接收到OSDMap的更新。

确定受故障影响的数据Ceph中对象数据的维护由PGPlacement Group负责PG作为Ceph中最小的数据管理单元直接管理对象数据每个OSD都会管理一定数量的PG。

客户端对于对象数据的IO请求会根据对象ID的Hash值均衡分布在各个PG中。

PG中维护了一份PGLog用来记录该PG的数据变化这些记录会被持久化记录到后端存储中。

PGLog中记录了每次操作的数据和PG的版本每次数据变更操作都会使PG的版本自增PGLog中默认保存3000条记录PG会定期触发Trim操作清理多余的PGLog。

通常情况下在同一个PG的不同副本中的PGLog应该是一致的故障发生后不同副本的PGLog可能会处于不一致的状态。

OSD在收到OSDMap更新消息后会扫描该OSD下所有的PG清理已经不存在的PG已经被删除等情况对PG进行初始化如果该OSD上的PG是Primary PG的话PG将进行Peering操作。

在Peering的过程中PG会根据PGLog检查多个副本的一致性并尝试计算PG的不同副本的数据缺失最后得到一份完整的对象缺失列表用作后续进行Recovery操作时的依据。

对于无法根据PGLog计算丢失数据的PG需要通过Backfill操作拷贝整个PG的数据来恢复。

需要注意的是在这Peering过程完成前PG的数据都是不可靠的因此在Peering过程中PG会暂停所有客户端的IO请求。

恢复受影响的数据Peering完成后PG进入Active状态并根据PG的副本状态将自己标记为Degraded/Undersized状态在Degraded状态下PGLog存储的日志数量默认会扩展到10000条记录提供更多的数据记录便于副本节点上线后的数据恢复。

进入Active状态后PG可用并开始接受数据IO的请求并根据Peering的信息决定是否进行Recovery和Backfill操作。

Primary PG将根据对象的缺失列表进行具体对象的数据拷贝对于Replica PG.失的数据Primary 会通过Push操作推送缺失数据对于Primary PG缺失的数据会通过Pull操作从副本获取缺失数据。

在恢复操作过程中PG会传输完整4M大小的对象。

对于无法依靠PGLog进行Recovery的PG将进行Backfill操作进行数据的全量拷贝。

待各个副本的数据完全同步后PG被标记为Clean状态副本数据保持一致数据恢复完成。

通过Ceph处理故障的流程我们可以看到Ceph如何应对集群故障常见的问题。

首先是减少对资源的消耗在断电重启这类故障中Ceph可以只恢复有变化的数据从而减少数据恢复量另一方面MON不会主动向所有OSD推送集群状态而是采用OSD主动获取最新OSDMap的方式防止大规模集群发生故障场景下产生突发流量。

另外由于Ceph的IO流程必须要通过Primary PG进行一旦Primary PG所在的OSD宕机IO将无法正常进行。

为了保证恢复过程中不会中断正常的业务IOMON会分配PG Temp临时处理IO请求在数据恢复完成后再移除PG Temp。

同时在整.恢复过程中Ceph也允许用户通过配置文件调整恢复线程数同时进行的恢复操作数恢复数据网络传输优先级等相关参数来限制恢复的速度从而降低对正常业务的影响。

可以看出Ceph分布式在数据恢复方面设计和细节做的都相当不错。

但是目前Ceph数据恢复的颗粒度仍然比较大需要更多的IO消耗并且被动的OSDMap更新可能会导致PG不会及时恢复故障数据在一段时间内数据可靠性会降低。

同时我们在Ceph分布式日常处理故障时需要注意以下细节

PGLog是Ceph进行数据恢复的重要依据但是记录的日志数量有限所以在发生故障后尽快让故障节点重新上线尽量避免产生Backfill操作能极大的缩短恢复时间。

PG在Peering阶段会阻塞客户端IO所以要保证PG能快速进行Peering。

如果在故障过程中PGLog丢失导致无法完成PeeringPG会进入Incomplete状态这种情况下需要让故障节点上线帮助完成数据修复。

虽然Ceph分布式的Recovery操作能够避免很多不必要的对象数据恢复但是使用的还是完全对象拷贝。

如果需要进一步的优化可以考虑在PGLog中记录操作对象的具体数据位置、或是利用类似rsync的机制只恢复对象副本间的差异数据。

本文通过简单梳理Ceph分布式对于集群故障的处理帮助我们在日常应用中更好的维护Ceph分布式集群保证业务数据持续可用。

当数据发生丢失时海境超备研发团队深入研究各种服务器和系统设计思路认真对比故障类别攻克疑难恢复案例

总结成功恢复经验拥有成功修复服务器数据库虚拟化平台分布式存储等数据中心相关的上万个疑难案例并掌握了勒索病毒恢复核心技术所有恢复的数据不丢记录结构完整直接使用不报错。

半是蜜糖1-40集免费播放剧情-半是蜜糖1-40集免费播放剧情应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123