Lustre架构介绍的阅读笔记-客户端

2024-04-18 00:28

本文主要是介绍Lustre架构介绍的阅读笔记-客户端,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文是在阅读Introduction to Lustre* Architecture的Lustre File System – Clients时的笔记。

Lustre客户端部署在客户的计算节点上,工作时不占用本地的硬盘。

  • 不使用本地硬盘作为缓存或者后备空间。
  • 对存储系统的访问均通过网络。

Lustre客户端作为Linux内核的模块,工作在内核态,有如下特点:

  • 通过提供硬盘的挂载点来提供访问服务。
  • 客户应用的访问方法兼容POSIX规范,保证客户端无需修改、适配即可访问。

使用Lustre客户端时,有如下注意事项:

  • 对开发、测试、运维团队的技能有一定的要求,需要对内核有相应的了解。
  • 开发、调试、定位问题,相对比较困难。
  • 故障后的恢复手段比较单一,可能很多问题都需要重启系统,此时将中断业务。

Lustre客户端包括如下组件:

  • MGC即Management Client,负责与MGS通信。MGC部署在MGS节点和客户端节点。
  • MDC即Metadata Client,负责与MDS通信。MDC部署在客户端节点。
  • OSC即Object Storage Client,负责与OST通信。OSC部署在MDS和客户端节点。

LNet router即Lustre Network Routers,负责桥接不同网络协议,纯软件解决方案。

说起存储系统的客户端,可以联想到很多,比如:

  • 客户端的体量
    • 胖客户端
    • 瘦客户端
    • 无客户端
  • 客户端与客户应用间通信的方式
    • POSIX
    • NFS
    • CIFS
    • S3
    • SDK
  • 客户端与存储系统间通信的方式
    • NFS
    • CIFS
    • S3
    • 私有
  • 集成方式
    • 作为SDK,内置在客户应用内部。
    • 独立进程,与客户应用共节点部署。
      • 1个进程对应多个客户应用。
      • 1个进程对应1个客户应用。
    • 独立进程,单独节点部署。
  • 占用的资源
    • CPU
    • 内存
    • 硬盘
    • 网络
  • 缓存策略
    • 缓存的内容
      • 元数据
      • 数据
    • 缓存的可用范围
      • 进程内可用
      • 节点内可用
      • 节点间可用
    • 资源消耗
    • 性能
    • 一致性
    • 老化算法
      • LRU
    • 老化时机
      • 访问时老化
      • 定时,即启用定时任务,定期检查缓存占用的空间
      • 定量,实时监控占用空间,超出阈值即老化
    • 缓存的位置
      • 内存
      • 硬盘
  • 外部依赖
    • 网络
  • 集成的成本
    • 学习成本
    • 改造现有应用的成本
    • 版本管理
    • 升级成本
  • 运维
    • 故障
      • 业务恢复手段
      • 业务中断时长
      • 业务中断次数
    • 日常维护
    • 版本升级
      • 版本管理
      • 停机时长
      • 业务中断时长

依据上述分析,对Lustre客户端总结如下:

  • Lustre客户端可以认为是胖客户端。
  • Lustre客户端与客户的应用同机部署,需要消耗计算节点的资源,占用资源的规格,与性能的关系,需要后续分析,掌握评估方法。
  • 在客户计算节点上,安装并加载Lustre的内核模块,挂载硬盘访问点,客户的应用通过POSIX的文件API,即可访问Lustre存储集群。
  • Lustre客户端和Lustre存储集群之间使用私有的协议交互数据。
  • 客户的应用通过Lustre客户端访问Lustre存储集群时,所有的操作均直接通过网络操作完成,不占用本地存储的空间。
  • Lustre客户端是否使用缓存、以及缓存的使用方式,需要再深入代码来研究、确认。
  • 考虑到对客户应用而言,通过Lustre客户端访问Lustre存储集群,和访问本地挂载的盘或者分区类似,因此不涉及学习成本及应用的改造成本。
  • 由于Lustre客户端工作在内核态,因此在日常运维、问题定位、版本管理等方面,存在一定的工作量。
  • 当遇到Lustre客户端相关的故障时,可能需要中断业务、重新挂载、重启节点等才能规避,因此需要评估业务中断时长对客户的影响。

这篇关于Lustre架构介绍的阅读笔记-客户端的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

SpringBoot实现websocket服务端及客户端的详细过程

《SpringBoot实现websocket服务端及客户端的详细过程》文章介绍了WebSocket通信过程、服务端和客户端的实现,以及可能遇到的问题及解决方案,感兴趣的朋友一起看看吧... 目录一、WebSocket通信过程二、服务端实现1.pom文件添加依赖2.启用Springboot对WebSocket