VMware 虚拟机的虚拟磁盘编程知识点扫盲之二
目录
前文列表
VDDK
摘自官方文档:The Virtual Disk Development Kit (VDDK) is a collection of C/C++ libraries, code samples, utilities, and documentation to help you create and access VMware virtual disk storage. The VDDK is useful in conjunction with the vSphere API for writing backup and recovery software, or similar applications.
从上述内容可知,VDDK(虚拟磁盘开发包) 主要提供了 C/C++ Lib 库,让开发者能够连接并且访问 VMware 虚拟磁盘存储文件(VMDK File),是编写虚拟机数据备份和恢复的常用工具。简单来说 VDDK 就是一套 C 库及相关的 Sample 和 Docs。
VDDK 的具体功能:
- 读取虚拟磁盘数据。
- 写入虚拟磁盘。
- 备份虚拟机的单个指定卷或所有卷。
- 将备份代理连接到 vSphere,备份存储簇上的所有虚拟机。
- 管理虚拟磁盘的整理、扩展、转换、重命名、压缩文件系统镜像。
- 运行离线的虚拟机病毒扫描、统一补丁与数据分析。
- 对中毒和被破坏的离线虚拟机进行数据恢复或病毒清除。
其中对虚拟磁盘数据的读写操作,无疑是虚拟磁盘编程的重头戏,除了可以通过直接访问 VMDK File 来获取全量的虚拟机磁盘数据之外。并且由于虚拟机的快照数据文件同样是 VMDK File,所以 VDDK 甚至能够读写快照数据。与 CBT 功能结合更是能够实现获取指定时间点间隔的虚拟机增量数据。
获取 VDDK 的方法:可以从官方 download 下载 VDDK 软件包 VMware-vix-disklib-6.0.3-4888596.x86_64.tar.gz
。
VDDK 的组成:解压软件包后得的 vmware-vix-disklib-distrib 目录,内含了 bin64、doc、include、lib32、lib64 等子目录。
- include 目录:包含 C/C++ Lib 库所需的头文件,如:vixDiskLib.h、vm_basic_types.h
- lib 目录:包含 vixDiskLib.lib(Windows) 或者 libvixDiskLib.so(Linux) 等库文件
- doc 目录:包含 HTML 参考文档,以及 doc/samples 目录下的示例程序。
安装 VDDK
- Step1:
mv vmware-vix-disklib-distrib/ /usr/lib/vmware-vix-disklib/
- Step2:
cd /usr/lib/vmware-vix-disklib/lib64
mkdir removed
- Step3:将于系统 Lib 同名(冲突)的库文件移动到 removed 目录,防止影响到系统的正常运行,需要移动的库文件清单需要根据系统和个人环境来决定。例如:
mv libcrypto.so.* libcurl.so.* libglib-* libgobject-* libgthread-* libssl.so.* removed/
- Step4:将 VDDK Lib 库文件的路径写入系统环境路径并刷新
echo "/usr/lib/vmware-vix-disklib/lib64" > /etc/ld.so.conf.d/vmware-vix-disklib.conf
ldconfig
VixDiskLib
VDDK 实际上是基于 Virtual Disk API 来实现的,Virtual Disk API(虚拟磁盘接口) 也就是 VixDiskLib,是一组管理 VMDK File 的函数调用集合,目的是帮助开发者集成 VMware 平台产品的解决方案,提供了以下主要功能函数:
- Create: 创建 VMDK File
VixDiskLib_Create()
vixError = VixDiskLib_Create(appGlobals.connection, appGlobals.diskPath, &createParams, NULL, NULL);
- Delete: 删除 VMDK File
- Convert: 转换 VMDK File 的格式
- Expand: 扩大 VMDK File 的 Size
- Shrink: 缩小 VMDK File 的 Size
- Defragment: 整理磁盘碎片
- Rename: 重命名 VMDK File
- Create redo logs: 创建虚拟机快照数据文件
- 允许随机读写 VMDK File 上任意位置的数据
VixDiskLib_Open()
vixError = VixDiskLib_Open(appGlobals.connection, appGlobals.diskPath, appGlobals.openFlags, &srcHandle);
VixDiskLib_Close()
VixDiskLib_Close(srcHandle);
VixDiskLib_Read()
vixError = VixDiskLib_Read(srcHandle, i, j, buf);
VixDiskLib_Write()
vixError = VixDiskLib_Write(newDisk.Handle(), i, j, buf);
- 读取元数据
VixDiskLib_GetInfo()
vixError = VixDiskLib_GetInfo(srcHandle, diskInfo);
- 连接 vSphere Storage,支持包括 SAN、HotAdd 等高级传输方式
NOTE: 使用高级传输模式,如果在恢复虚拟机时已经有一个预先存在的快照了,那么你应该先删除该快照,否则 SAN 模式恢复将失败。备份程序的运行服务器能够直接通过 FC 或者 iSCSI 和虚拟机磁盘所在的 Storage 连接。
VixDiskLib 本质上是应用了 C 的文件 I/O 系统调用(Function call semantics are patternedafter C system calls for file I/O)功能,所以开发者能够在软件中导入 VixDiskLib 来编写访问 VMDK File 的程序。
VADP
VADP(vStorage APIs for DataProtection) 全称 VMware Storage APIs - Data Protection,其应用了 Virtual Disk API 和部分 vSphere API 来创建和管理 ESXi 上虚拟机的快照,并且虚拟机的支持全量和增量备份。是 VMware 官方的数据保护方案,具体的使用方法这里不做赘述。
VMware 虚拟机的虚拟磁盘编程知识点扫盲之二的更多相关文章
- VMware 虚拟机的虚拟磁盘编程知识点扫盲之一
目录 目录 前言 VMware 虚拟机文件类型 VMware 虚拟机的快照 Quiseced Snapshot Quiseced Snapshot 的创建过程 创建快照 创建快照的执行过程及原理 删除 ...
- 不重新启动VMWare虚拟机加入虚拟磁盘的方法(上)
近期因为业务须要在不重新启动系统的前提下对系统进行扩容,前提是该系统做过lvm.可是没有足够的物理卷(硬盘),所以引出了改文.本文共分为上下两部分.这是第一部分. 文件夹 加入磁盘 做LVM 加入硬盘 ...
- VMware虚拟机安装Linux系统后IP配置(二)
1.在NAT模式下自动获取IP 2.编辑网卡配置文件(通用) 3.Ctrl+L 清屏.重启网络服务后检查网络是否正常上网 修改后本机IP地址在linux中ping通本机IP 然而在本机却ping不通l ...
- 4、VMware虚拟机相关配置
4.1.VMware虚拟机开启模块snapshot失败: 1.非正常VMware关闭虚拟机(例如开关机过程中关掉VMware等操作),再次启动虚拟机可能 会出现提示:"锁定文件失败 虚拟机开 ...
- VMware虚拟机怎么从U盘启动
VMware虚拟机怎么从U盘启动 发布时间:2016-01-12 18:50发布者:系统城-xtcjh浏览数:41951 VMware Workstation虚拟机可以安装各种操作系统,很多用户就想在 ...
- VMware 虚拟化编程(15) — VMware 虚拟机的恢复方案设计
目录 目录 前文列表 将已存在的虚拟机恢复到指定时间点 恢复为新建虚拟机 灾难恢复 恢复细节 恢复增量备份数据 以 RDM 的方式创建虚拟磁盘 创建虚拟机 Sample of VirtualMachi ...
- VMware 虚拟化编程(13) — VMware 虚拟机的备份方案设计
目录 目录 前文列表 备份思路 备份算法 备份细节 连接到 vCenter 还是 ESXi 如何选择快照类型 是否开启 CBT 如何获取备份数据 如何提高备份数据的传输率 备份厚置备磁盘和精简置备磁盘 ...
- VMware 虚拟化编程(11) — VMware 虚拟机的全量备份与增量备份方案
目录 目录 前文列表 全量备份数据的获取方式 增量备份数据的获取过程 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/VixDiskLib/VADP 概念简析 VMware 虚拟化编 ...
- VMware 虚拟化编程(9) — VMware 虚拟机的快照
目录 目录 前文列表 VMware 虚拟机的快照 快照的执行过程 删除快照 快照类型 Quiseced Snapshot 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/VixDis ...
随机推荐
- 4-2如何判断字符串a是否以字符串b开头或结尾
1.相关介绍 1.1修改文件权限和查看文件权限 在windows平台实验时 os.chmod()无法将文件权限修改为可执行,暂不深究如何实现.在linux平台进行测试. (1)创建三个文件 pytho ...
- css发展过程
https://www.cnblogs.com/dashnowords/p/9460722.html
- 微信小程序(19)-- 从底部向上滑出的动画效果
从底部向上滑出的动画效果: 用到了小程序的触摸事件bindtouchmove,以及创建一个annimation对象,完成动画操作之后使用animation这个对象的export()方法导出动画数据. ...
- 使ApacheBench支持multi-url
目录 1.下载Apache httpd相关源码包以及针对ab工具的patch包 2.编译安装apr 3.编译安装apr-util 4.替换httpd源码里面的ab.c文件 5.编译安装httpd 6. ...
- Codeforces 940 区间DP单调队列优化
A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...
- GUI学习之n——自定义信号
PyQt中是依靠信号——槽的机制来运行,可是有些时候需要我们定义一下些新的信号以满足使用要求,例如按钮是没有右击的效果,那我们怎么创建一个新的信号呢? 首先要注意,新的信号是要以类属性的形式来定义 c ...
- oracle中用case when查询列表
查询sql语句如下 SELECT * FROM ( SELECT * ,ROW_NUMBER() OVER ( PARTITION BY scene_code ORDER BY (CASE statu ...
- VUE+Ionic,项目搭建&打包成APK
安装Vue&创建Vue工程 1.安装Vue CLI: npm install -g vue-cli 2.创建新的Vue项目,创建最后一步会提醒是否使用npm install 自动安装,如果选择 ...
- POJ2942 UVA1364 Knights of the Round Table 圆桌骑士
POJ2942 洛谷UVA1364(博主没有翻墙uva实在是太慢了) 以骑士为结点建立无向图,两个骑士间存在边表示两个骑士可以相邻(用邻接矩阵存图,初始化全为1,读入一对憎恨关系就删去一条边即可),则 ...
- 【LuoguP4770】[NOI2018] 你的名字
题目链接 题意简述 给定一个串 \(S\) 多组询问 , 每次给定一个串 \(T\) 和一个 区间 \([l,r]\) 求串\(T\) 有多少个本质不同的子串 满足不是 \(S[l...r]\) 的子 ...