分布式存储CephFS最佳实践

2024-05-11 06:28

本文主要是介绍分布式存储CephFS最佳实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章来源于知乎文章:

分布式存储CephFS最佳实践

背景

近日,一朋友说他们企业内部想落地CephFS,让我帮忙写一份能落地的CephFS最佳实践。然后就顺便把文章整理到了这里。因能力水平以及认知有限,如有错漏烦请指正。

简介

CephFS是Ceph项目的一个组成部分,它是一个高性能、可扩展的分布式文件系统,提供POSIX语义。它建立在Ceph的RADOS对象存储之上,通过Ceph的MDS(元数据服务器)来管理文件系统的元数据。CephFS支持海量数据规模,具有数据自动复制和故障域感知的特性,确保数据的高可用性和持久性。此外,CephFS还支持快照功能,可以用于数据备份和一致性视图的创建。它的设计目标是为了满足现代云计算环境中对存储系统的需求。

选型

软件选型

  • Ceph版本

当前业内线上使用的主流版本应该是L,N,O。初步来看,N的应用目前应该是最广泛的,所以本文也主要以N版本展开。

如下图是Ceph社区当前版本演进情况:

Ceph版本演进

  • Ceph Client端选型

CephFS支持两种模式的挂载,kenel挂载以及fuse挂载,如下列出了两者的一些对比:

特性/挂载方式内核方式 (Kernel Mount)用户态方式 (FUSE Mount)
性能较低(大概为内核版本1/3)
内核依赖性较低
升级复杂性较高较低
运维复杂度较低
爆炸半径较小
  • 操作系统版本

不同发行版选取的内核主线一般不同,不过大体大同小异,这里以debian发行版本为例。Debian8是3.16内核,debian9是4.9内核,debian10是4.19内核,debian11则是5.10,debian12则是6.1。

一般来说,更高的内核版本会有更多更优秀的feature,比如4.20版本引入了fuse的max_page机制,该机制对Cephfs的吞吐可以得到极大的提升。

但是更高的版本可能稳定性还不够,所以线上一般是建议使用上一个稳定版本。

硬件选型

Ceph的一个优点就是其很灵活,没有那么吃资源,可以适用于更类硬件。

如下展示了Ceph的最低硬件配置建议。客户可以根据对性能或者存储容量的需求,升级相关硬件配置。

....................................

这篇关于分布式存储CephFS最佳实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978753

相关文章

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

MySQL中存储过程(procedure)的使用及说明

《MySQL中存储过程(procedure)的使用及说明》存储过程是预先定义的SQL语句集合,可在数据库中重复调用,它们提供事务性、高效性和安全性,MySQL和Java中均可创建和调用存储过程,示例展... 目录概念示例1示例2总结概念存储过程:在数据库中预先定义好一组SQL语句,可以被程序反复调用。

MySQL存储过程实践(in、out、inout)

《MySQL存储过程实践(in、out、inout)》文章介绍了数据库中的存储过程,包括其定义、优缺点、性能调校与撰写,以及创建和调用方法,还详细说明了存储过程的参数类型,包括IN、OUT和INOUT... 目录简述存储过程存储过程的优缺点优点缺点存储过程的创建和调用mysql 存储过程中的关键语法案例存储

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J