详细跟踪了一下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复制。