Virtual Disk Mount API在Linux挂载虚拟磁盘文件

本文介绍了如何在Linux系统中利用VMware的Virtual Disk Mount API挂载vmdk虚拟磁盘文件,包括初始化、建立连接、打开磁盘、挂载分区等步骤,并强调了在操作过程中需要注意的几个关键点,如版本号、openFlags设置等。
摘要由CSDN通过智能技术生成

在查看虚拟磁盘文件系统的时候,需要将虚拟磁盘挂载到主机上,VMware提供了相应的接口——Virtual Disk Mount API

这部分遇到了几个坑,记录一下,也算是对做相同或相似工作的人提个醒,遇到了这些问题能够绕过去。

首先安装VDDK,参照如下链接:

https://code.vmware.com/doc/preview?id=1497#/doc/vddkInstall.4.3.html

其次,VDDK安装完成后就可以开始编码了,如果在后续的编译或执行过程中遇到了问题,请参照下面这位小哥的博客:

https://blog.csdn.net/zhouxukun123/article/category/7140664

使用Virtual Disk Mount API可以将一个本地的虚拟磁盘文件挂载到本地,也可以将一个ESXi上虚拟机的虚拟磁盘文件挂载到本地。挂载的过程大致分为如下几个步骤(以本地vmdk文件的挂载为例):

1.初始化

vixError = VixDiskLib_InitEx(VERSION_MAJOR, VERSION_MINOR, &LogFunc, &WarnFunc, &PanicFunc, libdir, NULL);

VERSION_MAJOR、VERSION_MINOR分别对应你下载的VDDK的主次版本号

vixError = VixMntapi_Init(VIXMNTAPI_MAJOR_VERSION, VIXMNTAPI_MINOR_VERSION, &LogFunc, &WarnFunc, &PanicFunc, libdir, NULL);

这个函数中前两个参数的宏定义在vixMntapi.h中,分别为1和0

2.建立连接,获取VixDiskLibConnection

如果是本地vmdk文件:

vixError = VixDiskLib_Connect(NULL, &connection);

如果是远程虚拟机:

vixError = VixDiskLib_Connect(&cnxParam, &connection);

3.打开磁盘,获取VixDiskSetHandle

vixError = VixMntapi_OpenDisks(connection,diskNames, diskHandlesCount, openFlag, &diskSetHandle);

其中diskNames的类型为const char *diskNames[],是需要打开的各个vmdk文件的绝对路径的数组。diskHandlesCount在Linux下为1。成功之后可以用VixMntapi_GetDiskSetInfo查看虚拟磁盘的挂载路径

4.获取虚拟磁盘分区的句柄

vixError = VixMntapi_GetVolumeHandles(diskSetHandle, &numVolumes, &volumeHandles);

执行成功则返回分区个数numVolumes和分区句柄的数组volumeHandles

5.挂载分区

vixError = VixMntapi_MountVolume(volumeHandles[i], FALSE);

6.获取分区挂载位置

vixError = VixMntapi_GetVolumeInfo(volumeHandles[i], &newVolume.volInfo);

7.卸载分区

VixMntapi_DismountVolume(volumeHandles[i],TRUE);

8.关闭虚拟磁盘


                
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值