开始新对话

此帖子已超过 5 年

Solved!

Go to Solution

5037

2013年7月10日 21:00

EMC VNX COW快照技术第二次写会覆盖原数据块吗?

各位大侠:

  大家都知道EMC VNX有两种快照,其中snaview  snapshot 使用COFW技术,COFW技术的快照检测到第一次写时,将原数据转移到预留LUN中并改变指针索引,在同一数据块位置再第二次改写时,将直接覆盖此数据块位置,这就是COFW技术First的含义,那么VNX Snapshot的ROW技术呢?我查了EMC相关资料,只提到ROW技术,而不是ROFW技术,也就是说没有First含义,那么我请问兄弟们,ROW技术在第一次写时将数据直接重定向到源LUN的新位置,并建立指针索引,那么后续第二次写,第三次写呢?是像COFW技术一样直接覆盖写,还是像ROW第一次重定向写一样,也重定向到源LUN或池的其他新位置呢?

        查了一些资料,没有弄明白ROW技术的原理,所以再来到这里,请知道的大侠们指教,谢谢了!

1.4K 消息

2013年7月10日 23:00

Hi liaohl,

     第二次改写会被覆盖,不会保存到新的位置。

     你可以这样想,snapshot只是为了维护一份数据在某一时刻的状态,所以首次改写必然需要通过COFW或ROW保留该时间点的数据。为了保留数据,COFW的做法是复制到reserved LUN,ROW是把新数据写在新的位置,老数据留在原地,让snapshot指向它。之后对同一位置的写(二次写)直接覆盖掉新位置的数据就可以了,因为snapshot已经指向了老数据的位置,而且数据已经保留在那里了。

另外:你可以参考:

VNX Snapshot简介

【Q&A】SnapView Snapshot常见问题解答

VNX Snapshot技术白皮书:https://support.emc.com/docu42148_White_Paper:_VNX_Snapshots.pdf?language=en_US

2.8K 消息

2013年7月10日 23:00

超哥答的很专业,我也add一点value。首先新VNX Snapshots功能不是用于取代VNX SnapView功能,二者在相同矩阵和池是可以共存。新VNX Snapshots功能使用ROW技术,原VNX Snapview使用COFW技术,因此新Snapshots功能相对原SnapView功能在每个矩阵最大快照、每个源最大快照和很多功能都有很大提高。

   

COFW技术和ROW技术对比

SnapView使用COFW技术,原数据写入流程如下图所示。

1、主机写入数据请求;

2、原数据移到RLP LUN;

3、新数据写入LUN。

4.bmp

当主机对LUN提出写数据请求时,首先原数据必须被移到保留的LUN池(RLP)用于保持生产数据的时间点图像,这个步骤称为“写消耗”或者COFW。当原始数据被移动RLP后,系统才允许新数据写入到LUN。当主机提出写入快照请求,数据将被直接写入到RLP,并改变生产LUN的RLP中的数据的指针。

      

新Snapshots功能使用ROW技术,原数据写入流程如下图:

1、主机提出写入请求;

2、新数据直接写入新地址,随后直接到新地址读数据。

5.bmp

主机提出新数据写入请求,数据被写入存储池,然后生产LUN指到新位置。这样的流程省去了“写消耗”的消耗。当主机提出写入快照请求,快照指到新数据,随后数据从新数据位置读取。

      

综上所述,ROW技术对比COFW技术优势明显,显著提升了数据写入效率。

4K 消息

2013年7月10日 23:00

ROW后续第二、第三次写肯定会覆盖第一次的内容,否则它就能在技术上实现类似RecoverPoint的"任意时间点恢复"功能了,那RecoverPoint就没人买了。这就是snapshot和continuous protection的区别。

2.8K 消息

2013年7月10日 23:00

再附上一张snapview和snapshots的参数对比图供你参考:

snapshot.jpg

1.1K 消息

2013年7月10日 23:00

ROW永远都是写到或者覆盖新的位置,原来的位置是为以前的snapshot保留的,不会被覆盖,这是和COFW的根本区别。这样就允许你创建snap的snap。也可以方便合并以前的snap。

1.1K 消息

2013年7月11日 00:00

1.1K 消息

2013年7月11日 00:00

你提到的“第二次第三次”是指创建snap后仅仅持续更新数据的话,就是“是像COFW技术一样直接覆盖写”,如果是指继续创建新的snap,就是“像ROW第一次重定向写一样,也重定向到源LUN或池的其他新位置

找不到事件!

Top