关于VMware 15:在部分链上无法执行所调用的函数,请打开父虚拟磁盘

问题:当使用VMware给虚拟机扩展硬盘容量时,显示无法扩展容量并提示:在部分链上无法执行所调用的函数,请打开父虚拟磁盘。

原因: 在创建虚拟机时使用的是将虚拟磁盘拆分成多个文件(如下图),这个会导致扩展容量的时候失败。因为你的虚拟磁盘文件是分多个文件存储的(创建虚拟机的时候可以选择分多文件存储或单文件存储),所以无法直接扩容,
在这里插入图片描述

解决方法: 需要先将拆分的多个磁盘文件整合成一个文件后才能扩容。

以下扩容方法在vmware workstation 15pro上给ubuntu 16.04扩容成功。PS:并不是给ubuntu的根目录扩容,而是通过添加一个磁盘的形式给ubuntu扩容。

步骤如下:

1.找到你vmware的根目录,如下图
在这里插入图片描述
选中路径,为蓝色状态,然后在地址栏输入cmd,即可在vmware的根目录下打开cmd命令行。打开后,如下图
在这里插入图片描述
2.打开虚拟机,查看你需要扩容的虚拟机的磁盘名称和位置。
(此处是已经扩容后的截图)
在这里插入图片描述
3.在cmd命令行中使用以下命令

vmware-vdiskmanager.exe -r "D:\Vmware\ubantu\Ubuntu 64 位-000001.vmdk" -t 0 "D:\Vmware\ubantu\test\Ubuntu 64 位-000001.vmdk"

上述命令是将你需要扩容的虚拟机的磁盘(多个文件)合并成一个文件,并将该文件放在我创建的test文件下。
等待出现以下提示,

VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Creating disk 'D:\Vmware\ubantu\test\Ubuntu 64 位-000001.vmdk'
  Convert: 100% done.
Virtual disk conversion successful.

注意:Convert: 这里不一定是100% done,我百分之八十四也可以扩容成功。

等待片刻100%成功后,将原虚拟机目录(D:\Vmware\ubantu\)下的Ubuntu 64 位.vmx复制到新目录(D:\Vmware\ubantu\test\)下,然后打开VMware选择打开虚拟机,选择刚才复制的Ubuntu 64 位.vmx文件,启动虚拟机。

4.启动虚拟机成功后,将其关闭,接着在vmware上重新选择扩容虚拟磁盘就可以了。注意:扩容大小不能大于当前客户机物理盘符剩余的最大空间。

5.扩容成功后,打开虚拟机在APPstore中下载GParted。
在这里插入图片描述
利用这个软件把扩容的新空间分配给盘符,做完这一步才算真正的扩容成功。

### VMware 虚拟磁盘文件格式概述 VMware 使用多种类型的文件来定义和保存虚拟机的状态。其中最重要的是 `.vmx` 和 `.vmdk` 文件。 #### .vmx 配置文件 `.vmx` 是虚拟机的主要配置文件,包含了关于该虚拟机的所有设置信息,包括硬件资源分配、网络适配器类型以及启动顺序等重要参数[^1]。 ```plaintext config.version = "8" virtualHW.version = "7" memsize = "2048" ide0:0.fileName = "ubuntu.vmdk" ethernet0.connectionType = "nat" displayName = "Ubuntu Server" ``` #### .vmdk 虚拟磁盘描述符文件 `.vmdk` 文件用于表示虚拟硬盘驱动器的数据结构。此文件不仅记录了磁盘映像的位置还指定了其大小和其他属性。通过 `disktype=rdm` 或者其他选项可以指定不同的物理设备作为后端存储介质。 ```plaintext # Extent description RW 2097152 VMFS "ubuntu-flat.vmdk" # The disk data base ddb.toolsVersion = "7683" ddb.adapterType = "lsilogic" ``` ### 操作 VMware 虚拟磁盘的方法 对于希望直接读取或修改这些 VMDK 文件的情况,有几种方法可供选择: - **DiskGenius**: 这款工具允许用户加载并浏览由 VMware 创建的虚拟磁盘镜像,在图形界面下执行诸如创建分区表、格式化卷之类的任务。 - **Libvmdk 库**: 开源项目 libvmdk 提供了一套 API 来解析和支持各种版本的 VMDK 格式。开发者可以通过编程方式调用相应函数实现对特定字段的操作,比如查询磁盘容量或是提取原始扇区数据流[^3]。 ```c #include <stdio.h> #include <libvmdk.h> int main() { vmdk_file_t *file; if (vmdk_open(&file, "example.vmdk", LIBVMDK_OPEN_READ_ONLY)) { printf("Failed to open file\n"); return -1; } // Perform operations on 'file' vmdk_close(file); } ``` ### 存储架构中的应用实例 当涉及到企业级部署时,通常会采用更复杂的 SAN 解决方案如 iSCSI 或 FCoE 来提供高可用性和性能优化的服务给多个 ESXi 主机共享访问同一组 LUNs(逻辑单元号)。这种方式能够显著提高 I/O 效率并且简化管理流程[^2]。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值