三种基本类型的缓存:绕写式(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. JavaScript:子ウィンドウから親ウィンドウを再読み込みさせる方法

    ことの起こり Webの画面では.新規入力をしようとすると.別ウィンドウ=子ウィンドウが開いて入力し.登録ボタンを押すと.子ウィンドウが閉じる仕組みがある. 子ウィンドウが閉じるだけなら問題ないが.一覧 ...

  2. nyoj 236 心急的C小加

    心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的 ...

  3. 射频识别技术漫谈(5)——防冲突【worldsing 笔记】

    正常情况下读写器某一时刻只能对磁场中的一张射频卡进行读写操作.但是当多张卡片同时进入读写器的射频场时,读写器怎么办呢?读写器需要选出唯一的一张卡片进行读写操作,这就是防冲突. 防冲突机制是非接触式智能 ...

  4. FormsAuthentication.GetRedirectUrl 方法

    https://msdn.microsoft.com/zh-cn/library/8a22t5t3(v=vs.80) FormsAuthentication.GetRedirectUrl 方法 .NE ...

  5. Microsoft .NET Pet Shop 4

    Microsoft .NET Pet Shop 4:将 ASP.NET 1.1 应用程序迁移到 2.0 299(共 313)对本文的评价是有帮助 - 评价此主题 发布日期 : 2006-5-9 | 更 ...

  6. NSTimer、 NSTask、 NSThread 和 NSRunloop 之间的区别

    NSTimer是一个计时器对象,方法调用在对未来的选择对象. NSThread是一个线程类. 也就是创建一个线程. NSTask类是一个过程,一种方式运行程序从您的其他程序. NSOperation是 ...

  7. .Net Core-TagHelpers-Environment

    当我们新建一个.net core项目时,发现页面中有个奇怪的TagHelper元素,如下:     <environment names="Development"> ...

  8. JNI-数据类型

    转载:http://blog.csdn.net/conowen/article/details/7523145 在Java中有两类数据类型:primitive types,如,int, float, ...

  9. jquery判断输入文字个数的统计代码

    1.js代码部分 <script type="text/javascript">             $(function() { function albumNa ...

  10. 连载:面向对象葵花宝典:思想、技巧与实践(32) - LSP原则

    LSP是唯一一个以人名命名的设计原则,并且作者还是一个"女博士"  ======================================================== ...