三种基本类型的缓存:绕写式(write-around),直写式(write-through)和回写式(write-back)。

绕写式(write-around)缓存意味着所有数据首先被写入到硬盘区,当它成为合格的后,再基于读操作将它复制(注意不是移动)到闪存区。这意味着数据总是驻留在硬盘层,通常由RAID或镜像功能进行数据保护。其结果是,缓存区的闪存并不需要像上述分层模型中所要求的高可靠性。此外,由于所有数据首先被写入硬盘,闪存的使用寿命应该会延长。只有真正值得闪存“缓存”的数据才会被写到闪存。

需要注意的是,虽然闪存区的故障并不意味着数据丢失,却意味着性能损失,因为所有的后续I / O都必须从硬盘区发起。已经习惯了闪存性能的用户可能会认为性能的下降和宕机一样糟糕。

绕写式缓存技术也意味着所有数据在升级到闪存区之前都需要确保合格。所以在这个模型中,写操作将会一直缓慢,并直到有足够的I / O访问该数据以证明它确实值得复制到闪存中,这时闪存的高性能才会反映出来。最后,数据复制过程需要数据所在的存储控制器进行处理,以及I / O带宽,这可能会造成一些不可预测的系统问题,因为数据被复制到了闪存。

直写式高速缓存(write-through)试图解决一些绕写式缓存面对的挑战。在该模型中,所有写操作都被送到闪存和硬盘层。这样做的结果是,数据冗余地存在于两个层次。该技术确保最活跃的数据预先放置到闪存之上,所以就没有必要再审核数据升级资格并进行复制。写操作性能仍然依赖于硬盘区,因为写确认必须出自该层。此外,闪存耐用性会减小,因为现在所有数据都会存到闪存,而不只是那些获得升级资格的。

回写式高速缓存(write-back)通过在数据写入闪存区后即回复写确认,从而提高了写操作性能。这些数据将会在后来存储I / O不太繁忙的时候再写入到硬盘层。回写式缓存的风险是在数据被写入硬盘之前闪存发生故障。此外,在像VMware那样的集群环境中,在进行虚拟机迁移时,需要格外小心确保闪存区在迁移之前必须清空。

和分层机制一样,回写式缓存对闪存区高可用性的要求也愈加严格,因为有时候闪存里容纳的是数据的唯一副本。

zz fromhttp://www.searchstorage.com.cn/showcontent_88537.htm

zz存储系统中缓存的三种类型的更多相关文章

  1. C++ Primer学习笔记(三) C++中函数是一种类型!!!

    C++中函数是一种类型!C++中函数是一种类型!C++中函数是一种类型! 函数名就是变量!函数名就是变量!函数名就是变量! (---20160618最新消息,函数名不是变量名...囧) (---201 ...

  2. 云计算服务的三种类型(SaaS、PaaS、IaaS)

    云计算可以帮助企业降低IT方面的成本和复杂性,并获得他们蓬勃发展所需的灵活性与敏捷性.但是,规划出通往云的明确路径并非易事.毕竟用户需要看透与云相关的市场大肆宣传,然后理解并分析不同种类的云计算模式的 ...

  3. hibernate(二)一级缓存和三种状态解析

    序言 前一篇文章知道了什么是hibernate,并且创建了第一个hibernate工程,今天就来先谈谈hibernate的一级缓存和它的三种状态,先要对着两个有一个深刻的了解,才能对后面我要讲解的一对 ...

  4. 链路层三种类型的MAC地址

    若需要转载,请注明出处. 我们知道,链路层都是以MAC地址来进行通信双方的地址标识的,如下图:在应用中根据接收方的多寡来进行划分,可分为以下三种: 单播(Unicast) 多播(Multicast) ...

  5. Hibernate学习(二)———— 一级缓存和三种状态解析

    一.一级缓存和快照 什么是一级缓存呢? 很简单,每次hibernate跟数据库打交道时,都是通过session来对要操作的对象取得关联,然后在进行操作,那么具体的过程是什么样的呢? 1.首先sessi ...

  6. c++中new的三种用法详细解析

    转载至: http://www.jb51.net/article/41524.htm 以下的是对c++中new的三种使用方法进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助. 一. ...

  7. 缓慢变化维 (Slowly Changing Dimension) 常见的三种类型及原型设计(转)

    开篇介绍 在从 OLTP 业务数据库向 DW 数据仓库抽取数据的过程中,特别是第一次导入之后的每一次增量抽取往往会遇到这样的问题:业务数据库中的一些数据发生了更改,到底要不要将这些变化也反映到数据仓库 ...

  8. ASP.NET 设计模式分为三种类型

    设计模式分为三种类型,共23类.  一.创建型模式:单例模式.抽象工厂模式.建造者模式.工厂模式.原型模式.      二.结构型模式:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代 ...

  9. hibernate - 一级缓存和三种状态解析

    转载自:http://www.cnblogs.com/whgk/p/6103038.html 一.一级缓存和快照 什么是一级缓存呢? 很简单,每次hibernate跟数据库打交道时,都是通过sessi ...

随机推荐

  1. JDBC注册驱动的三种方式

    JDBC注册驱动的三种方式 1.通过导入的JDBC的驱动包拿到的com.mysql.jdbc.Driver对象,利用java.sql.DriverManager对象的DriverManager.reg ...

  2. Keil: warning: A1581W: Added 2 bytes of padding at address

    KEIL MDK编译警告:   warning: A1581W: Added 2 bytes of padding at address xxx 原因: 在Keil 里写汇编代码时如果代码尺寸不对齐, ...

  3. opencv 通过摄像头捕捉头部

    code: #include <opencv\cv.h> #include <opencv\highgui.h> #include <opencv\cxcore.h> ...

  4. JPA主键策略

    JPA 自带的主键策略有 4 种,在枚举 javax.persistence.GenerationType 中,分别是:TABLE.SEQUENCE.IDENTITY.AUTO. TABLE:通过表产 ...

  5. 传统XmlDocument操作

    需要引用的命名空间: using System.Xml; 常用的类:XmlDocument.XmlElement.XmlNode.XmlNodeList 一.使用XmlDocument创建xml // ...

  6. Unity3D4.x之AssetBundle学习笔记

    关于AssetBundle AssetBundle可用来将多个资源打包为一个文件,实现动态下载和更新.需要注意的是Unity3D5.x以后对打包方式进行了升级,不用再在依赖关系上伤透脑筋,但是和4.x ...

  7. fastjson把对象转化成json避免$ref

    转自http://blog.csdn.net/wxwzy738/article/details/30244993 DisableCircularReferenceDetect来禁止循环引用检测: JS ...

  8. ECshop数据库的访问统计和管理员日志的清空

    ECshop是个不错的系统,但是它有一定漏洞,若是访问量巨大的话,大量的访问统计代码会存入数据库的ecs_stats表中,甚至几天就可以达到几百兆,严重的网站直接就崩溃了.数据备份的时候也有很多不便, ...

  9. Positioning(定位)

    Positioning(定位)    定位属性允许你为一个元素定位.它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么.    元素可以使用的顶部,底部,左侧和右侧属性定位 ...

  10. 修改Oracle Client的字符集

    修改Oracle Client的字符集 找到注册表 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1下的 NLS_LANG,修改键值为SIMP ...