- 积分
- 8
- 鸿鹄币
- 个
- 好评度
- 点
- 精华
- 最后登录
- 1970-1-1
- 阅读权限
- 10
- 听众
- 收听
网络小学徒

|
本人在系统上装了Trilead VMX 4.1.10,用的是trial License。早上用Trilead的增量备份功能对ESXi5.0上的虚拟机VM_A进行了备份,在备份前设置了备份策略,每隔一个小时滚动备份一次。
虚拟机VM_AT有三个快照
图一是备份前虚拟机VM_A在datastore里文件夹VM_CBT中的文件列表。
在第一次备份时,Trilead对VM_A进行一次完全备份,备份的文件存放在本地端
图二是在备份完成后,副本VM_A在本地端的文件列表
由图一和图二可以看出,Trilead在备份时将快照1,2,3,与原始虚拟磁盘合并了,在本地端以VM_A-000003.vmdk.delta文件形式存在,请问它是怎么合并的,或者我的理解不对,请指示。
在第一次完全备份后,后面的每次备份都是增量备份,Trilead在后续的增量备份时是使用vmware提供的Changed Block Tracking功能,我看过API文档,通过QueryChangedDiskArea()函数可以得到从上次完全备份时刻到现在增量备份时刻之间发生变化的数据块的位置(加入这是第一次增量备份)。通过我自己写的代码调用QueryChangedDiskArea()函数也能得到变化块的位置(变化数据块的偏移量,长度),但据我观察这些位置信息(比如偏移量)是针对整个磁盘空间来说的(比如我在创建虚拟机时给他分配15G的空间大小,那这些偏移量可能是9G(大于0,小于15G))。Virtual Disk Programming guide上说了可以通过VDDK 的VixDiskLib_Read()函数来获取这些数据。
但是我现在遇到一个问题,由于虚拟机VM_A有三个快照,而这些快照文件的内容就是相关变化的数据。那么我如何通过VixDiskLib_Read()来读取增量的数据???????
1、是通过VixDiskLib_Read()函数,结合上边获取到的有变化的数据块块的位置 ,来读取磁盘VM_A.vmdk文件对应偏移处的数据,来当做增量数据????,(对于这种方式,我认为不对,考虑到VM_A的变化的数据都存放在快照中,因此读取出来的数据不是变化的数据)
2、还是是通过VixDiskLib_Read()函数,结合上边获取到的有变化的数据块块的位置 ,来读取磁盘VM_A-000003.vmdk文件对应偏移处的数据,来当做增量数据????,(这种方法的话,VixDiskLib_Read()函数会报错,该偏移地址超出VM_A-000003.vmdk文件的范围,所以也不对)
请高手指导,我现在是个学生,在研究ESXi5.0的二次开发,有这方面经验的高手请留个言,可以交流学习学习
|
|