开发者社区> 云物互联> 正文

VMware 虚拟机的虚拟磁盘编程知识点扫盲之二

简介: 目录 目录 前文列表 VDDK 安装 VDDK VixDiskLib VADP 前文列表 VMware 虚拟机的虚拟磁盘编程知识点扫盲之一 VDDK 摘自官方文档:The Virtual Disk Development Kit (VDDK)...
+关注继续查看

目录

前文列表

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虚拟机(带你快速了解)
79 0
windows使用vmware安装三台虚拟机,配置好网络环境
- VMWare虚拟机软件是一个“虚拟[PC](https://baike.baidu.com/item/PC/107)”软件,它使你可以在一台机器上同时运行多个系统。 - 可以通过Vmware来安装我们的linux虚拟机,然后通过linux虚拟机来进行集群的安装。Vmware的安装步骤省略。只要点击安装之后,一路下一步即
706 0
VMware配置网络,虚拟机无法联网,ping百度不通,居然这样解决了!
VMware配置网络,虚拟机无法联网,ping百度不通,居然这样解决了!
58 0
Vmware网络配置——虚拟机是如何连网的
Vmware网络配置——虚拟机是如何连网的
75 0
VMware日常操作之克隆虚拟机的两种模式
VMware日常操作之克隆虚拟机的两种模式
69 0
VMware虚拟机配置Linux Ubuntu操作系统
本文介绍基于VMware Workstation Pro虚拟机软件,配置Linux Ubuntu操作系统环境的方法~
103 0
Win10运行VMware虚拟机时蓝屏问题
Win10运行VMware虚拟机时蓝屏问题的解决办法
110 0
如何安装VMware虚拟机
安装vmware虚拟机
67 0
超详细的 Vagrant 上手指南,搭建Linux虚拟机别再用VMware Workstation了!
超详细的 Vagrant 上手指南,搭建Linux虚拟机别再用VMware Workstation了!
73 0
VMware创建Linux虚拟机之(五)Spark完全分布式部署教程
VMware创建Linux虚拟机之(五)Spark完全分布式部署教程
65 0
+关注
云物互联
OpenStack Developer, Opensource Lover :- )
文章
问答
文章排行榜
最热
最新
相关电子书
更多
基于英特尔 SSD 的虚拟机缓存解决SSD
立即下载
Virtualizing Spark on Vmware vSphere
立即下载
Matrix 集群操作系统
立即下载