Intel OpenCAS缓存加速方案

发布时间 - 2025-07-12 00:00:00    点击率:

open cas 架构概览:数据从hdd盘读取后被复制到open cas的缓存中,后续的读取操作从内存中进行,从而提高读写效率。在write-through模式下,所有数据同步刷新到open cas的ssd和后端的hdd中。在write-back模式下,数据同步写入到open cas的ssd中,然后异步刷新到hdd中。当open cas缓存满时,采用其淘汰算法,用新写入的数据替换旧数据,以确保open cas始终能够缓存数据。

系统组件依赖于sed、make、gcc、kernel-devel、kernel-headers、python3、lsblk和argparse(Python模块)。安装Linux Open Cas的步骤如下:

  1. Open Cas由内核模块和CLI工具组成。

  2. 为了获得最佳性能,强烈推荐在SSD设备上采用noop的IO调度策略。

  3. 具体安装步骤:

    • 下载Open Cas Linux源码:

      git clone https://github.com/Open-CAS/open-cas-linux
    • 获取子模块:

      cd open-cas-linux
      git submodule update --init
    • 配置和安装:

      ./configure
      make
      make install
    • 检查和验证:

      cas_disk.ko  // Open Cas磁盘内核模块
      cas_cache.ko // Open Cas缓存内核模块
      casadm       // Open Cas管理员工具
      casadm -V    // 安装验证

Open Cas配置文件位于utils/opencas.conf中,包括缓存和核心设备的配置。

  • 缓存配置说明:

    1. cache id: 执行设备的启动实例ID,整型取值范围在1~16384
    2. path: 指向SSD的磁盘路径
    3. desired mode: 预期模式,有五种模式:write-through/write-back/write-only/pass-through
    4. extra fields: 用户自定义IO配置
       4.1 ioclass_file:允许用户加载自定义IO策略
       4.2 cleaning_policy:允许用户选择缓存清理策略,包括acp/alru/nop
       4.3 promotion_policy:允许用户选择缓存推进策略,包括always/nhit
  • 核心设备配置说明,配置样例:

    ## Caches configuration section
    [caches]
    ## Cache ID Cache device Cache mode Extra fields (optional)
    1 /dev/disk/by-id/nvme-INTEL_SSD WT ioclass_file=/etc/opencas/ioclass-config.csv
    

    Core devices configuration

    [cores]

    Cache ID Core ID Core device

    1 1 /dev/disk/by-id/wwn-0x50014ee0aed22393 1 2 /dev/disk/by-id/wwn-0x50014ee0042769ef 1 3 /dev/disk/by-id/wwn-0x50014ee00429bf94 1 4 /dev/disk/by-id/wwn-0x50014ee0aed45a6d 1 5 /dev/disk/by-id/wwn-0x50014ee6b11be556 1 6 /dev/disk/by-id/wwn-0x50014ee0aed229a4 1 7 /dev/disk/by-id/wwn-0x50014ee004276c68

Cas管理工具:

  • 在write-only模式下,缓存系统首先将数据写入缓存,然后通知应用端写操作完成。后续周期性地同步写入核心设备。当有新的读请求时,如果之前写入的数据仍在缓存设备中,读请求将绕过缓存软件,直接从缓存设备中读取数据。该模式仅提高写性能,但存在数据丢失的风险。

  • 手动配置pass-through模式:

    casadm -S -i 1 -d /dev/sdc -c pt
  • 手动配置write-back模式:

    casadm -S -i 1 -d /dev/sdc -c wb
    casadm -A -i 1 -d /dev/sdb  // 匹配/dev/sdb到缓存
  • 在write-through模式下,缓存软件将数据写入闪存设备,然后顺序地写入核心设备。这种模式100%保证核心设备中的数据与缓存中的数据一致,同时可以共享给其他服务读取,加速读取操作。

  • 手动配置write-through模式:

    casadm -S -i 1 -d /dev/sdc  // 创建ID为1的缓存
    casadm -A -i 1 -d /dev/sdb  // 匹配/dev/sdb到缓存
  • 手动配置Write-around模式:

    casadm -S -i 1 -d /dev/sdc -c wa
  • 手动配置只写模式:

    casadm -S -i 1 -d /dev/sdc -c wo


# linux  # python  # git  # 工具  # 数据丢失  # red 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速生成凡客建站的专业级图册?  如何利用DOS批处理实现定时关机操作详解  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  用yum安装MySQLdb模块的步骤方法  在线制作视频的网站有哪些,电脑如何制作视频短片?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  html如何与html链接_实现多个HTML页面互相链接【互相】  JavaScript实现Fly Bird小游戏  Angular 表单中正确绑定输入值以确保提交与验证正常工作  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  Laravel如何创建自定义Facades?(详细步骤)  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Laravel用户密码怎么加密_Laravel Hash门面使用教程  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  JS实现鼠标移上去显示图片或微信二维码  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  Laravel如何使用Blade模板引擎?(完整语法和示例)  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  java获取注册ip实例  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  高端智能建站公司优选:品牌定制与SEO优化一站式服务  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  如何快速生成橙子建站落地页链接?  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel如何使用withoutEvents方法临时禁用模型事件  长沙企业网站制作哪家好,长沙水业集团官方网站?  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  Python并发异常传播_错误处理解析【教程】  如何在阿里云虚拟服务器快速搭建网站?  EditPlus中的正则表达式实战(5)  如何快速搭建高效香港服务器网站?  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  如何撰写建站申请书?关键要点有哪些?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  网站建设保证美观性,需要考虑的几点问题!  高端网站建设与定制开发一站式解决方案 中企动力  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  如何快速上传自定义模板至建站之星?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】