详细跟踪了一下LVM-Based VDI与File-Based VDI的复制与链接过程,我们可以发现,Fast Copy与Full Copy有很大的区别,不同的形式对虚机VBD的性能具有一定的影响。

关于VM的VDI的格式,请参考另外一篇文章:

XenServer中VM的存储格式对空间以及性能的影响

我们可以知道快照是基于链接形式管理的,而copy是完整的copy,里面没有详细区分Fast Copy和full copy的区别,VM在copy的情况下有两种形式,一是Fast copy,一种为Full copy 。

我们可以简单来看下VDI的复制过程。

在最开始Original-VM的VDI:

  1. 在Full Copy的情况下,XenServer会直接完整复制Original-VM的VDI,并生成UUID,附加到VM
  2. 在第一次Fast Copy的情况下,XenServer首先会把Original VM的VDI(UUID=1……)的重命名为Base Copy(UUID=2……),并生成新的VDI文件,作为Original VM的VDI(UUID=1……),也就是说,原始 VDI会转换成基本节点,原始VM也会链接到Base Copy,此时完成了链接的创建,而Fast-Copy虚机,会创建新的VDI(UUID=3……),并链接到Base Copy,也就是基本节点。
  3. 此时,如果对VDI(UUID=3……)进行Full Copy,也就是对虚机进行完整复制的时候,XenServer会根据Fast Copy以及其链接的Base Copy节点进行合并,然后完整转换成full Copy的新VDI(UUID=4……)
  4. 如果对VDI(UUID=3……)进行Fast copy,那么,如果Fast Copy相对于Original VM没有变化,那么Fast Copy,任然会连接到原始VM的Base Copy(UUID=2……)
  5. 如果对VDI(UUID=3……)进行Fast Copy,而且前一个Fast Copy相对于Original VM有发生数据变化,那么类似于第一次Fast Copy,此时,会对VDI(UUID=3……)重命名为Base Copy(UUID=5……),然后生成新的VDI(使用UUID=3……),也就是fast Copy VDI(UUID=3……)变成了,VDI(UUID=3……)连接到Fast Copy转换成的Base Copy VDI(UUID=5……),然后VDI(UUID=5……)又链接到原始VM生成的Base VDI(UUID=2……)
  6. 最后生成新Fast copy虚机的Fast Copy VDI(UUID=6……),然后连接到VDI(UUID=5……),再链接到VDI(UUID=2……)
所以,在XenServer中,对Fast Copy的处理方式全部采用链接的方式,而Full Copy采用完整的copy方式。
性能的影响,就很明显了,链接越长,性能越差。
Full copy的复制速度取决于存储性能,因为需要Full Copy需要完整复制所有的数据。
Fast copy的速度则基本是瞬间完成,因为Fast Copy直接是连接到现在的或者经过重命名的Base Copy VDI。
BTW:在XenServer中,Fast Copy其实是VM Clone,而Full Copy,在XenServer中称为VM Copy复制。

转载于:https://blog.51cto.com/froyo/781194

XenServer中Fast Copy与Full Copy的区别相关推荐

  1. python中的浅拷贝与深拷贝——copy()

    1.copy()方法用来拷贝列表元素 1 a = [1, 2, 3] 2 # 拷贝 3 b = a.copy() 4 print('a = ', a, '\n', 'b = ', b) 5 6 # 执 ...

  2. 【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别

    Python 中赋值语句不复制对象,而是在目标和对象之间创建绑定关系.对于自身可变或者包含可变项的集合对象,开发者有时会需要生成其副本用于改变操作,进而避免改变原对象.copy 模块提供了通用的浅层复 ...

  3. python 深copy_python中的深copy和浅copy

    bytes Python bytes/str bytes 在Python3中作为一种单独的数据类型,不能拼接,不能拼接,不能拼接 >>> '€20'.encode('utf-8') ...

  4. stl中copy()函数_std :: copy()函数以及C ++ STL中的示例

    stl中copy()函数 C ++ STL std :: copy()函数 (C++ STL std::copy() function) copy() function is a library fu ...

  5. Python中的浅复制(shallow copy)和深复制(deep copy)

    文章目录 python值管理方式 深复制与浅复制的使用及区别 近期杂事太多,博客一直没更新,9月最后一天了,总得写点吧 今天记一下以前碰到过,最近又碰到的问题:python的深复制和浅复制 神奇的py ...

  6. python中的shallow copy 和 deep copy

    Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1.copy.copy 浅拷贝 只拷贝父对象 2.copy.deepcopy 深拷贝 拷贝父对象及其子 ...

  7. BeanCopy和BeanCopier在实际开发中的使用(属性copy效率优化)

    优化场景: 项目的实体类主要分为三种:dto.dao.query等,所以属性copy避免不了,是影响代码执行效率的主要方面之一. 当时的情况是,项目A接受url请求,然后会调用项目B的一个接口去处理明 ...

  8. SAP WMSD集成之Copy WM Quantity – Copy WM qty as delivery qty into delivery and PGI

    SAP WM&SD集成之Copy WM Quantity – Copy WM qty as delivery qty into delivery and PGI 本文继续DEMO SAP WM ...

  9. SAP WMSD集成之Copy WM Quantity – Copy WM qty as delivery qty into delivery

    SAP WM&SD集成之Copy WM Quantity – Copy WM qty as delivery qty into delivery SAP WM模块与SAP其它模块是有集成的.本 ...

最新文章

  1. ISC 2020技术日丨 网络空间危机四伏,如何发现威胁的蛛丝马迹?
  2. hive日志位置(日志定位报错:Failed with exception Unable to move sourcehdfs://namenode/tmp/hive-pmp_bi/h)...
  3. vga焊接线顺序_焊接工艺问答,不做焊接也要收藏起来
  4. java学习(113):Calendar类
  5. ubuntu没有指纹登录_ubuntu安装指纹识别驱动
  6. Java ClassLoader findLibrary()方法与示例
  7. 【NOI2022】PV「什么是信息学精神?」
  8. BootStrap笔记-信息提示框的使用
  9. 这河里吗?Go 里边空指针还能调用对象方法!
  10. 算法----并行算法
  11. 【博客话题】接触Linux 11年
  12. 美女程序员如何面对男友出轨
  13. DDD~领域事件应用篇(订单处理变得更清晰)
  14. maven五:查找jar包坐标,选择jar包版本
  15. 国货之光!百度飞桨与华为麒麟重磅合作
  16. Jtable 表格按多列排序(支持中文汉字排序)
  17. python 爬poj.org的题目
  18. 微信公众号开发2自动回复
  19. Follow your heart (186)---Fab.com和guang.com
  20. swagger2 注解

热门文章

  1. 如何在VS2013配置CUDA,并编译生成DLL
  2. Bootstrap-datepicker设置开始时间结束时间范围
  3. java23中设计模式——结构模式——Composite(组合)
  4. WPF线性渐变画刷应用之——炫彩线条
  5. vue + webpack 模拟后台数据
  6. Shell编程基础---函数、数组
  7. 思杰“个人云”翻开企业人本管理新篇章
  8. CSS:CSS+DIV布局网页
  9. 线程池的一些疑问和解答
  10. 人脸识别算法初次了解