XIV(4)--Flash caching

2023-05-16

1,Flash Cache简介

Flash cache 本身是Facebook的一个开源项目,(准确的说是一个Linux的模块),可以动态加载。Flashcache通过在文件系统(VFS)和设备驱动之间新增了一次缓存层,来实现对热门的缓存。Flashcache是另一种缓存,一般用SSD作为介质的缓存(一般的缓存用的是内存),通过将传统硬盘上的热门数据缓存到SSD上,然后利用SSD优秀的读性能,来加速系统。这个方法较之内存缓存,没有内存快,但是空间可以比内存大很多。如下图:

Flashcache_orczhou

  现在很多硬件厂商也会在存储设备中增加这个功能来,例如IBM XIV的Flash cache和 EMC的VFCache

2, XIV Flash Cache

从11.1.0开始,XIV Gen3开始支持可选的Flash caching feature,极大的提高小数据块,随机读的性能,适用于Data patterns一直改变的环境。

XIV flash caching is implemented as an extension of the primary cache layer.   每个模块400GB Cache,那一个系统就是6TB(400GB*15),从11.4开始,每个Module能支持800GB。Flash cache 只用于读操作,当不再需要Cache中的数据时,直接drop掉就行了。


p_w_picpath

XIV flash caching overview

  Flash caching算法是嵌入在XIV Firmware中的,能自动适应相应的IO类型,对用户透明,不需要管理员手动的做performance turning。    


XIV系统中有2种类型的Cache:main 和 extended  
--The main cache handles host write I/Os and then destages them directly to the disk drive. //Main cache主要处理主机写IO然后直接Flush到Disk    
--The extended cache handles the caching of random read miss operations less than 64 KB. //Extended cache主要处理小于64KB的随机读操作    

Sequential read prefetches (larger than 64 KB) are handled in main dynamic random access memory (DRAM) cache. //大于64KB的顺序读操作是由main cache处理的


3,Flash Cache learning

A flash cache map is built as read misses occur in the DRAM cache. The process, known as flash cache learning


关于XIV中Main cache和Extended Cache(Flash Cache)是如何扮演各自角色的,请看下图:

p_w_picpath  

XIV flash cache learning

 

The cache node immediately checks the extended cache for the requested I/O. If the requested I/O exists in the extended flash cache, it is served to the host through the main cache. The I/O operation is now complete and is recorded as a flash cache read hit.


If the operation results in a true read miss (not in the DRAM cache and not in extended flash cache), the request is forwarded in an unmodified state to the disk drive (SAS layer). The I/O is retrieved from the disk drive and served to the host through the main cache. From a host perspective, the I/O operation is now complete and is recorded as a read miss. The related pages are copied into reserved buffers in the main cache.

 

Important: Any read larger than 64 KB bypasses the extended flash cache.

当Buffer中的data达到512KB时,会顺序地写到Flash cache中。这种方式延长了Flash cache中的寿命。


Note: XIV在系统重启和Firmware升级中能保存Flash Cache中的数据    

XIV Storage System software Version 11.2 introduced improved flash caching algorithms,providing a performance boost of up to 4.5 times over systems without flash cache for random database-type workloads. This boost is accomplished by storing and computing all flash cache-related data integrity checking tasks in DRAM rather than on the flash cache.


4,Approaches for Using SSDs in a Storage System

wKioL1R8FJPhn4ICAAMoM9IEUAI854.jpg

Approach of the tier. With policies that moved the data … or As a caching layer. This is the approach of XIV.


5,SSD failure

  • No redistribution in case of failure/phase-out

  • SSD Failure:

  -Reinitialize the metadata of the SSD (so it is not used)
  -The degraded module continue to server reads from its DRAM cache and large sequential reads from its disks
  -Small read misses are redirected to the secondary

  • SSD Phase-out and not failed

- Its data is invalidated (on writes)
=> if phased-in not all data is lost


During a rebuild, following a SAS disk failure in a module, the data on SSD in that module is

not invalidated. Rather, it is gradually updated to contain the new data blocks (the same way

the DRAM does).

------------------------------------------------------------------------------

后记:关于EMC VFCache和IBM Flash Cache,感兴趣的可以看看比特网的下图对比。

O7NP3455G9I4_s.jpg

1690S56R7T73_s.jpg

参考文章:http://storage.chinabyte.com/223/12261223.shtml

转载于:https://blog.51cto.com/taotao1240/1584950

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XIV(4)--Flash caching 的相关文章

  • Mathematica 中的数据缓存

    有一个非常耗时的操作在我的包中生成数据集 我想保存此数据集 并仅在我手动删除缓存文件时才让包重建它 这是我的方法作为包的一部分 myDataset Module fname data fname cached data mx If File
  • 将图像缩略图上传到服务器,而不上传整个图像

    据我所知 我在这里问的是不可能的 但我想无论如何我都会问 以防我遗漏了什么 假设您想让用户上传 JPG 图像 并且这些图像被缩放为较小的图标 并且原始图像始终被丢弃并且不再需要 有没有什么方法可以在大多数现代浏览器中普遍使用 让用户选择硬盘
  • 自定义上下文菜单未显示,因为显示对象位于“顶部”

    作为这里另一个问题的后续 我已经在 Flash 应用程序中构建了一个自定义上下文菜单项 但遇到了有时不显示的问题 我发现问题是另一个精灵位于带有自定义上下文菜单的项目的 顶部 然而 即使将 mouseEnabled 和 mouseChild
  • Laravel cache::remember 将对象作为数组返回

    Laravel Cache remember正在返回一个LengthAwarePaginator作为数组的对象 function getNotifications userID values Cache remember cache key
  • 如何使用 ASP.NET MVC 4.0 DonutOutputCache VaryByCustom 使缓存失效

    我正在为我的 ASP NET 应用程序使用 DevTrends MvcDonutCaching 包 它工作得很好 我目前遇到的一个问题是使我为子操作设置的 VaryByCustom 缓存无效 这是我用于 VaryByCustom 设置的一些
  • Rails:控制文件存储缓存大小

    Rails 中基于文件的缓存的文档说 请注意 缓存将不断增长 直到磁盘已满 除非您 定期清除旧条目 不幸的是 它没有提供任何有关如何定期清除旧条目的信息 是否设置合适的值 expires in完成这项工作还是清除缓存背后还有其他某种黑魔法
  • 如何使用 gzip 压缩 .net 对象实例

    我想在将数据库查询结果添加到缓存之前对其进行压缩 我希望能够压缩任何引用类型 我有一个用于压缩字符串的工作版本 这个想法基于 scott hanselman 的博客文章http shrinkster com 173t http shrink
  • Javascript 通过ExternalInterface 来刷新

    我想知道是否有人可以查看我的代码 我正在尝试使用以下代码将虚拟变量从 javascript 传递到 actionscript 3 HTML
  • 写入 Django 缓存非常慢

    我曾经将数据库查询缓存在全局变量中以加快我的应用程序的速度 由于这是强烈不建议的 并且它确实产生了问题 所以我想使用任何类型的 Django 缓存 我尝试了 LocMemCache 和 DatabaseCache 但两者都需要 关于15秒设
  • 在浏览器中创建 bash shell 的可行性如何?

    主要是 我是 Unix 机器上的 C C 程序员 但是我会因为基于浏览器的 shell 访问 Linux 机器而放弃 所以 问题是 这有多难 什么方法最适合在网页中构建真正的 shell 级访问 闪光 JavaScript 我知道这确实是所
  • JedisPoolConfig 不可分配给 GenericObjectPoolConfig

    我有一个基于 Spring 的 Java Web 应用程序托管在 Heroku 上 我正在尝试使用 Redis 实现来利用 Spring 缓存抽象 当服务器启动时 我收到一条错误消息 Type redis clients jedis Jed
  • python 3 suds 缓存不工作

    我正在尝试编写一个通过 Python 访问 Sharepoint 的脚本 已安装以下库 suds jurko ntlm 以下代码成功 但需要接近 20 秒 usr bin env python3 from suds client impor
  • 创建对象的弱引用

    Actionscript 3 中是否可以创建对对象的弱引用 以便可以对其进行垃圾收集 我正在创建一些类以使调试更容易 因此如果仅在此处引用这些对象 我不希望这些对象挂在内存中 当然我不想用回调填充代码以删除对象 格兰特 斯金纳 Grant
  • 如何仅在打开开发者工具时关闭 Firefox 中的缓存?

    我知道我可以关闭 Firefox 中的缓存即将about config https stackoverflow com q 289751 1420197和设置network http use cache and browser cache
  • ActionScript 2 移动对象

    我对 ActionScript 知之甚少 我有一个电影剪辑 我希望当我按下按钮 按钮或影片剪辑 时它沿 x 轴移动我不知道要使用什么代码 因为它需要是 Action Script 2 是否有教程或其他东西可以完成此任务 我找到了一个教程 当
  • 何时使用包含引用类型的值类型数组而不是引用类型数组?

    假设我有以下内容 public class MyElement Serializable StructLayout LayoutKind Sequential struct ArrayElement internal MyElement E
  • 咖啡因与番石榴缓存

    根据这些微观基准 https github com ben manes caffeine wiki Benchmarks事实证明Caffeine https static javadoc io com github ben manes ca
  • Microsoft.Extensions.Caching.Redis 选择与 db0 不同的数据库

    一个关于了解使用哪个redis数据库以及如何配置它的问题 我有一个默认值ASP NET Core Web 应用程序和默认配置的本地redis服务器 含15个数据库 通过包管理控制台我已经安装了 Install Package Microso
  • 如何确保为客户端加载最新版本的 javascript 代码?

    我们的客户拥有数千名用户 他们都使用 Internet Explorer 和大量的 javascript 文件 这些文件可以增强他们对我们产品的用户体验 我遇到的问题是 每当我们更新这些脚本之一时无法知道客户端是否看到的是最新版本 我们要做
  • 在不是结构方法的函数上实现缓存的惯用方法是什么?

    我有一个像这样的昂贵的功能 pub fn get expensive value n u64 u64 let ret 0 for 0 n expensive stuff ret 并且它经常被用相同的参数调用 它是纯粹的 这意味着它将返回相同

随机推荐