【ceph】存储领域的CAS是什么?什么是CAS|Open CAS|缓存加速软件

article/2025/9/29 15:48:03

目录

什么是CAS

出现原因和应用场景:

初始Open CAS

What

SPDK Block Device

Open CAS Linux

What's Cache?

What's Cache Object?

Cache operations

Cache Configuration

Cache Mode

Cache line size

What's Core?

What's Cache line?

Cache line metadata


作者:bandaoyu @UESTC 链接:https://blog.csdn.net/bandaoyu/article/details/122742029

什么是CAS

H3C的CAS是指:超融合UIS虚拟化平台CAS,uis针对对网络 存储技术不太熟悉客户,提供一体化方案。cas是专业虚拟化解决方案。

分布式存储领域的CAS 不是CAS算法。

是指 Cache Acceleration Software 缓存加速软件,主要的开源软件是:Open CAS

CAS的用处是:通过使用更高性能的存储设备加速后端块存储IO访问。说白了就是增加一个缓存层

Open CAS:

  • Open Cache Acceleration Software 主要目标是通过使用更高性能的存储设备加速后端块存储IO访问。
  • CAS的核心是 Open CAS Framework,OCF是使用C语言写的高性能块存储元库,OCF具有平台无关性,访问系统API通过用户提供的Env实现,提供完美,高性能,低延迟的缓存工具,它仅仅是一个缓存引擎,APP自己实现适应层。
  • 为在OCF基础上构建完整的缓存解决方案,CAS提供了两种实现,一个是Open CAS Linux,另一个是 SPDK Block Device

出现原因和应用场景:

简洁说明:

HDD盘便宜,但是小块数据数据访问效率低。所以加一层缓存层提高性能==》Open-CAS缓存框架来加速Ceph OSD节点。

详细说明:

HDD的随机访问受到磁头寻道时间的限制,与SSD相比,这导致随机访问的性能大大下降。对于10,000 RPM机械硬盘,随机读写的IOPS(每秒输入/输出操作)大约为350。

基于机械硬盘的Ceph集群成本较低,适合于大规模数据的顺序访问场景,但是不适用于OLTP(在线事务处理)工作负载中的小块数据访问。

如何以最优的成本提高小块数据的随机操作的访问性能?我们提出了Open-CAS缓存框架来加速Ceph OSD节点。

产品例子:傲腾配OpenCAS 看傲腾配OpenCAS加速联通沃云业务_缓存

集群实例:《高性能CEPH存储:基于OpenCAS缓存的集群性能调研》高性能CEPH存储:基于OpenCAS缓存的集群性能调研_NewTyun的博客-CSDN博客

高性能CEPH存储:基于OpenCAS缓存的集群性能调研 - 知乎



《》https://www.supermicro.org.cn/solutions/Supermicro-SES-5-CAS-Implemetation-Guide.pdfIntel® Cache Acceleration Software Implementation Guide《》https://www.supermicro.org.cn/solutions/Supermicro-SES-5-CAS-Implemetation-Guide.pdf
 

初始Open CAS

摘抄自:初始Open CAS - 知乎

  • What
    • SPDK Block Device
    • Open CAS Linux
    • What's Cache?
      • What's Cache Object?
      • Cache operations
      • Cache Configuration
        • Cache Mode
        • Cache line size
    • What's Core?
    • What's Cache line?
      • Cache line metadata

What

  • Open Cache Acceleration Software 主要目标是通过使用更高性能的存储设备加速后端块存储IO访问。
  • CAS的核心是 Open CAS Framework,OCF是使用C语言写的高性能块存储元库,OCF具有平台无关性,访问系统API通过用户提供的Env实现,提供完美,高性能,低延迟的缓存工具,它仅仅是一个缓存引擎,APP自己实现适应层。
  • 为在OCF基础上构建完整的缓存解决方案,CAS提供了两种实现,一个是Open CAS Linux,另一个是 SPDK Block Device
下图展示了SPDK和Linux实现的缓存软件栈。

SPDK Block Device

  • [https://open-cas.github.io/getting_started_spdk.html] 查看如何配置SPDK

Open CAS Linux

  • 作为内核模块安装在Linux系统中,透明化完整的缓存解决方案给用户,APP无需做任何的更改
  • [https://open-cas.github.io/guide_installing.html] 查看CAS Linux安装信息
  • [https://open-cas.github.io/guide_configuring.html] 看CASAdmin的配置信息

What's Cache?

  • 通常来说,Cache就是APP与BackendStorage交换数据的中间组件,有选择地在一个相对较小和较快的高速存储器上存储大多数访问数据,已达到降低数据访问时间和提升系统性能。

  • 应用程序的数据被Cache使用Cacheline维护起来,每一个Cacheline都与有一个Coreline关联,在某个指定的时间内不是所有的Coreline都被关联到Cacheline中。

What's Cache Object?

  • 缓存对象是对Cache的一个抽象,提供一组接口用于与缓存状态机进行交互。
  • 可挂载一个 Cache storage,添加或者删除 core
  • 设置一个Cache的配置信息,比如 Cacheline Sizestat, etc
  • 一个Cache可以处理多个Core的数据
  • Core可以成为另一个Core的后端存储或某些缓存的缓存存储,通过这个特性我们可以创建多级缓存。

Cache operations

以下几个操作构建了基本的缓存逻辑
1. Mapping
> 用于将Coreline与Cacheline的映射关系存储在 Cache metadata
> 一旦Cacheline被映射出去,就可以用于存储Coreline的数据
> 这种关系将被 eviction操作解除
2. Insertion
> 用于将Coreline的数据写入Cacheline
> 不修改mapping metadata,但会根据IO数据修改 validdirty字段
> 只有被映射成功的Coreline才可以执行insert操作
3. Update
> 用于将CacheStorage中的Cacheline数据重写,主要是发生在写请求的IO数据已经被映射到cache中而且访问的数据被标记为 valid。如果其中一个数据被标记为无效,将执行 insert操作之后在执行 Update
4. Invalidation
> 将Cacheline标记为 invalid,常发生于discard,purge等操作中
5. Eviction
> 移除Cacheline的mapping。当没有足够的空间存放新的缓存数据时候发生,根据淘汰算法进行淘汰相应的Cacheline。当前OCF只支持LRU(Least Recently Used)。
6. Flushing
> 用于同步CacheStorage数据至BackendStorage中,它将标志位为diry的缓存数据存放到后端存储盘中,然后将dirty位设置为零。该操作是由用户主动触发,用于刷新数据。
7. Cleaning
> 该操作等同于Flushing,只不过该操作是Cache自动执行的。一般同通过 cleaning policy策略执行。

Cache Configuration

Cache Mode

选项决定了IO事件将如何被缓存引擎处理。
1. Write-Though(WT)
数据将被写入到CacheStorage于BeckendStorage中,该模式保证数据一致性。
该模式只会加速读操作,因为写会执行两次写入。
2. Write-Back(WB)
数据首先被写入CacheStorage中,然后直接告诉APP写操作完成了。
根据 cleaning policy将数据回写至BackendStorage。
具有数据丢失风险
3. Write-Around(WA)
数据首先被写入BackendStorage中,如果Cacheline已经mapped,那么也立即写入到CacheStorage中。 进一步优化了缓存,以避免在写入数据之后不经常重新读取的情况下缓存污染。
4. Write-Invalidate(WI)
数据首先被写入BackendStorage中,如果Cacheline已经mapped,将Cacheline设置为 invalid
减少了 eviction操作,也降低了写入数之后不经常读的工作负载。
5. Write-Only(WO)
数据首先被写入CacheStorage中,然后直接告诉APP写操作完成了。
读操作不会缓存数据。
具有数据丢失风险
6. Pass-Through(PT)
数据bypass缓存引擎,允许用户动态的开关缓存。

Cache line size

选项决定了缓存操作的数据块大小,目前OCF有一下几种值。
1. 4KiB
2. 8KiB
3. 16KiB
4. 32KiB
5. 64KiB

What's Core?

  • 是APP访问BackendStorage的一个抽象,提供了一组接口用于IO操作。在正常缓存操作期间,后端存储由缓存对象独占所有,应用程序不应直接访问它,除非核心从缓存中删除。

What's Cache line?

  • Cacheline是可以映射到缓存中的最小数据部分。
  • 每个映射的缓存线都与一个核心线相关联,核心线是后端存储上的相应区域。
  • 缓存存储和后端存储都被拆分为一个缓存行大小的块,所有缓存映射都与这些块对齐。

Cache line metadata

  • OCF 为每个缓存行维护一小部分元数据。主要包含 core idcore line numbervalid|dirty
  • valid的意思是指当前行已经被映射了一个core line,它的其他数据有效。否则该缓存行的其他元数据信息无效。只有它无效的时候才可以被用于映射IO请求访问的Coreline,然后让它变成有效。有以下几中情况将该行变成无效。
  1. 当cacheline被执行evicted时候
  2. 当core被移除的时候
  3. 当core被清理的时候
  4. 当cache被清理的时候
  5. 执行discard的时候
  6. WI模式下的写操作时候
  • dirty位表明是否需要将CacheStorage中的数据flush至BackendStorage中。只有在写操作并且是WB模式下才可以发生该情况。

http://chatgpt.dhexx.cn/article/wuwpQPZy.shtml

相关文章

java常见面试考点(二十五):CAS是什么

java常见面试考点 往期文章推荐:   java常见面试考点(二十):Elasticsearch 和 solr 的区别   java常见面试考点(二十一):单点登录   java常见面试考点(二十二)&…

CAS是什么?彻底搞懂CAS

CAS(Compare-And-Swap),它是一条CPU并发原语,用于判断内存中某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。 CAS基本原理 CAS并发原语体现在Java中就是sun.misc.Unsafe类中的各个方法。调用UnSa…

(一)CAS是什么?

前言 随着企业数字化转型的不断发展,应用系统越来越多,每个系统都有一套用户系统,用户在操作不同的系统时,需要多次登录,而且每个系统的账号都不一样,这对于用户来说,很不方便。这时候要做到 在…

CAS是什么

目录 没有CAS之前 使用CAS之后 CAS是什么 CAS底层原理:unsafe类 Unsafe new AtomicInteger().getAndIncrement()流程 CAS缺点 1 循环时间长开销很大 2 ABA问题 ABA代码演示 如何解决?:通过AtomicStampedReference版本号 3不能保…

CAS 是什么?

CAS又称 自旋锁、无锁,是一种乐观锁 compare and swap 的缩写 意为: 比较并交换 , 实现并发算法的常用技术 , 就是说我不用加锁 , 也能保证 ( 加锁会影响效率,可以考虑使用原子操作类 ) 原子性 , 当多个线程尝试使用 CAS 同时更新同一个变量时&#xf…

什么是CAS

文章目录 一、CAS是什么二、CAS 可以解决什么问题三、CAS实现原子操作的问题 一、CAS是什么 CAS的全称为compare and swap 或者compare and exchange,意思为比较和交换。CAS流程如下: 假设我们有一个共享变量i,初始值为0。我们现在要对i进行加1的操作…

metasploit图形化工具 Armitage

Metasploit默认使用PostgreSQL存储渗透测试所需的数据表,所以在启动Armitage之前需要首先启动PostgreSQL服务和Metasploit服务,然后再启动armitage,弹出对话框询问是否连接Metasploit的RPC信道,依次选择“connect”、“是”选项。…

ARM..

一 关于arm 1 arm的三种含义 (1) 一个公司的名称 Advanced RISC Machine (2) 一类处理器的统称 (3) 一种技术的名称 (RISC) ARM是以一家设计处理器的公司,这家公司设计的处理器统称为ARM,它们使用的指令集是RISC(精简指…

01-Introducing the Arm architecture

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈目录 1、Overview2、About the Arm architecture3、架构(architecture)到底是什么意思呢

傻瓜式渗透Armitage的使用

目录 Armitage的基本介绍 安装 1 启动Armitage 1、Armitage启动前初始化: 2、Armitage启动的三种方法: 2 使用Armitage生成被控端和主控端 1、Armitage的工作界面: (1)区域1: (2&#…

Kali Linux Armitage生成被控端和主控端

目录 说明使用 Armitage生成被控端和主控端 说明 按照《Kali Linux2 网络渗透测试实践指南 第二版 》第八章操作 仅供学习讨论使用,请勿进行非法操作 使用 Armitage生成被控端和主控端 选中“payload”, 然后选择“windows” ➡️“meterpreter”&…

[architecture]-arm exclusive机制介绍

关键词:spinlock,原子操作,独占访问,exclusive,inclusive,mutex,Semaphore,互斥,同步,同步原语 快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】: 【精选】ARMv8/…

使用Armitage进行渗透测试与键盘记录

0x00:Armitage是一款基于GUI开发的图形化渗透工具,对于渗透测试而言能够快速了解网络的拓扑以及主机状态,其功能丰富,是每一位渗透测试者的必备武器;今天我就来演示如何在Armitage下入侵纯在漏洞的XP系统,废…

在2022年的kali linux上面安装armitage

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 在2022年的kali linux上面安装armitage 前言一、armitage是什么?二、安装步骤1.官网下载2.build安装3.配置数据库 总结 前言 提示:在2022年的kali li…

ARMv8 architecture里的Memory aborts

在AArch64 Virtual Memory System Architecture中,有以下几种机制会导致PE在访问memory失败时产生exceptions。 Debug exception: An exception caused by the debug configuration.Alignment fault: An Alignment fault is generated if the address used for a m…

Armitage图形化前端

开源免费图形前端 ● 作者自称是众多不会使用metasploit的安全专家之一(命令行) ● MSF基于命令行,缺少直观的GUI图形用户接口 Armitage只是调用MSF的漏洞利用能力 ● Armitage的每一个GUI操作都可以对应MSF中的一条命令 红队团队合作模拟…

Kali Linux 使用Armitage

目录 说明安装扫描网络Quick Scan (OS detect)输入网段扫描结果 图形化ms17_010先扫描 auxiliary再攻击被渗透图形化metaspliotMeterpreter 5类任务:计算系统密码的hash值 Browser filesLog Keystrokes 写在最后 Armitage是一款用Java为Metasploit编写的图形化操作界…

【Arm架构】什么是Arm?

1 Arm architecture Arm 架构是世界上最流行的处理器架构之一。每年有数十亿台基于 Arm 的设备出货。 A-Profile (Applications) R-Profile (Real-Time) M-Profile (Microcontroller) 高性能场景 实时系统 小型,高能效设备 用于运行复杂的操作系统&#xff0…

「Arm Arch」 初识 Arm

本文源自《书香度年华》「ARM 架构专栏」,是一系列由浅入深、循序渐进的文章,文章之间有一定的前后关联性,所以按顺序阅读,建议收藏专栏。 目录 前言 一、架构概述 1.1 冯诺依曼架构 1.2 哈佛架构 1.3 Arm 架构 二、架构图谱…

Armitage的介绍和使用

目录 1.1Armitage的介绍与原理 1.1.2 Armitage的主要功能包括: 1.2 启动Armitage 1.2.1 Armitage启动的三种方法: 1.2.2 Armitage启动前初始化: 1.3 使用Armitage生成被控端和主控端 1.3.1 Armitage的工作界面: 1.3.2 使用…