vmware-vdiskmanager使用

       VMware虚拟磁盘管理工具是VMware Workstation软件包里的一个软件,它让你用命令行或通过脚本来创建管理修改虚拟磁盘文件。它的一个重要的特性是能够增大虚拟磁盘大小,使虚拟磁盘的最大尺寸比刚创建时(定义的)更大。它是这样一种方法,如果你需要更多的磁盘空间在已经定义的虚拟机中,而你又不想添加另外一块硬盘或者用Ghost软件来传递虚拟磁盘上的数据到另外一块更大的虚拟磁盘上去时,你可以用改变虚拟磁盘最大尺寸方法来做。不过你可不能用这种方法对你的物理硬盘实施。
另外一个功能是让你能够改变虚拟磁盘的类型。当你创建虚拟机时,你定义了虚拟磁盘空间的分配方式。你可以在以下选择一种分配方式:
- 所有的虚拟磁盘空间预分配。它相当于虚拟磁盘管理工具所说的预分配磁盘类型。
- 虚拟磁盘在开始时最小随着数据的增加而变大。它相当于虚拟磁盘管理工具所说的可增长磁盘类型。
使用虚拟磁盘管理工具,你能够更改虚拟磁盘的类型为预分配或可增长的、单个文件储存或每个文件大小为2GB的多文件方式。举个例子,你可以分配所有的虚拟磁盘空间,然后发现你需要收回一些主机上的硬盘空间。你能转换预分配的虚拟磁盘为可增长的虚拟磁盘,然后删除原来的那个虚拟磁盘文件。(这样)虚拟磁盘的大小将随着你的数据的增长而增长。
这些功能和使用脚本自动管理虚拟磁盘方法在VMware Workstation5.0版本中提供。
你能够用虚拟磁盘管理工具完成以下任务:
- 使用脚本自动管理虚拟磁盘。
- 创建虚拟磁盘而不和任何一个虚拟机关联,举个例子,创建它作为样板。
- 在预分配和可增长的虚拟磁盘类型间进行转换。当你更改为可增长的虚拟磁盘类型,你就能够收回一些磁盘空间。你也能通过收缩虚拟磁盘来收回更多的空间。
- 增大虚拟磁盘的尺寸,使它比你创建时定义的尺寸更大。
- 磁盘碎片整理虚拟磁盘。
- 准备和收缩虚拟磁盘而不需要开启虚拟机进行(仅适用于Windows宿主机)。
你可以用虚拟磁盘管理程序管理由VMware GSX Server, VMware Workstation and VMware VirtualCenter(由GSX Server提供被VirtualCenter管理的虚拟磁盘)创建的虚拟磁盘。
注意:你不能用虚拟磁盘工具创建物理磁盘。物理磁盘不能被虚拟磁盘管理工具或Workstation软件收缩。
更多关于使用虚拟磁盘工具的信息,请阅读以下章节:
- 使用虚拟磁盘管理软件
- 使用虚拟磁盘管理实例

使用虚拟磁盘管理软件
打开宿主机中的命令行或终端(Linux中的命令行),以运行虚拟磁盘管理软件。在Windows宿主机中,更改目录为你安装Workstation软件所在的目录。默认的安装目录为C:\Program Files\VMware\VMware Workstation。


命令语法:
vmware-vdiskmanager [选项]
这里的选项你必须包含以下的一些选择项或参数
选项和参数
描述
<diskname>
虚拟磁盘文件的名字。虚拟磁盘文件必须是.vmdk为扩展名。你能够指定一个你想要储存的虚拟磁盘文件的路径。如果你在你的宿主机中映射了网络共享,你也可以提供确切的虚拟磁盘文件的路径信息来创建虚拟磁盘在这个网络共享中

-c
创建虚拟磁盘。你必须用-a, -s 和 -t 并指定选项参数,然后你需要指定所要创建的虚拟磁盘文件的文件名。

-r <sourcediskname> 此选项可以将多个vmdk文件整合到一个里面,然后你就可以扩容了,用下面的-x选项,看后面的详细使用实例
转换已经指定类型的虚拟磁盘的类型,结果会输出创建一个新的虚拟磁盘。你必须用-t选项来指定你想要转换成的磁盘类型,并且指定目标虚拟磁盘的文件名。
一旦转换完成,你可以先测试虚拟磁盘以确保它能够像你所希望的那样工作,然后再删除原来的那个虚拟磁盘文件。
为了让虚拟机重新认识转换后的虚拟磁盘,你应该使用虚拟机设置编辑器先从虚拟机中移除先前存在的虚拟磁盘,然后添加转换好的虚拟磁盘给虚拟机。

-x <n>[GB|MB] <diskname>
增大虚拟磁盘到指定的容量。你必须指定新的更大尺寸的虚拟磁盘用GB或MB单位标示。你不能改变物理磁盘的大小。(废话)
注意:在你运行虚拟磁盘管理软件前,你应该先备份虚拟磁盘文件。(因为不会创建新的文件,所以备份以防增大磁盘操作失败)

-d <diskname>
对指定的虚拟磁盘碎片整理。你只能磁盘碎片整理可增长的虚拟磁盘。你不能磁盘碎片整理预分配的虚拟磁盘。

-p <mountpoint>
为收缩磁盘做准备处理。如果虚拟磁盘被分成多个分区,每个分区必须被单独准备。分区(比如C:或D:)必须用VMware DiskMount工具映射。更多的应用VMware DiskMount映射和解除虚拟磁盘的映射的内容,请看VMware DiskMount用户手册,可以在VMware站点中[url=http://www.vmware.com/pdf/VMwareDiskMount.pdf]http://www.vmware.com/pdf/VMwareDiskMount.pdf[/url] 下载到。VMware DiskMount免费软件也可以在[url=http://www.vmware.com/download/ws/]http://www.vmware.com/download/ws/[/url] 页面下载到。
在你对分区准备处理后,解除对此分区的映射。继续映射虚拟磁盘的其他每个分区,为收缩磁盘作准备处理直到完成虚拟磁盘上的所有分区的准备工作。
你在同一时刻只能用VMware DiskMount映射虚拟磁盘的一个分区。你仅仅能在Windows宿主机上进行虚拟磁盘的收缩分区准备工作。

-k <diskname>
收缩指定的虚拟磁盘。你只能够收缩可增长磁盘。你只能在Windows宿主机中(用这种方法)收缩虚拟磁盘。
你不能够收缩有虚拟机快照的虚拟磁盘。你可以保持现有虚拟磁盘的状态,而用快照管理器删除所有快照。你也可以放弃自快照以来对虚拟磁盘所做的更改,恢复到快照时状态。

-a [ ide | buslogic | lsilogic ]
指定磁盘适配器的类型。你在创建新的虚拟磁盘时必须指定其类型。选择以下类型之一:
ide —— IDE接口适配器
buslogic —— BusLogic SCSI接口适配器
lsilogic —— LSI Logic SCSI接口适配器

-s <n> [GB|MB]
指定虚拟磁盘的大小。确定大小用GB或MB做单位。你必须在创建磁盘时指定其大小。
尽管你必须指定虚拟磁盘的大小,但当你增长它的大小时,你不能用-s这个选项。
可以指定的磁盘大小规定:IDE和SCSI适配器都为最小100MB,最大950GB。

-t [0|1|2|3]
你在创建一个新的虚拟磁盘或者重新配置一个虚拟磁盘时必须指定虚拟磁盘的类型。指定以下类型之一:
0 —— 创建一个包含在单一虚拟文件中的可增长虚拟磁盘
1 —— 创建一个被分割为每个文件2GB大小的可增长虚拟磁盘
2 —— 创建一个包含在单一虚拟文件中的预分配虚拟磁盘
3 —— 创建一个被分割为每个文件2GB大小的预分配虚拟磁盘

-q
禁止虚拟磁盘管理程序写日志
如果你允许记录日志,日志将会被虚拟磁盘管理程序产生并储存。在虚拟磁盘管理程序运行后,日志的名字和存放位置将会出现在命令行或终端中。

-n <source-disk>
重命名指定的虚拟磁盘。需要指定命名后的虚拟磁盘名字。

使用VMware虚拟磁盘管理工具实例
以下例子描述怎样使用虚拟磁盘管理工具。你需要在命令行中运行虚拟磁盘管理工具。

创建虚拟磁盘
命令:vmware-vdiskmanager -c -t 0 -s 40GB -a ide myDisk.vmdk
这个命令将创建一个40GB大小IDE接口的名字为myDisk的虚拟硬盘。虚拟磁盘包含在一个单一文件中。这个虚拟磁盘没有被预分配磁盘空间。
实际命令输入:
D:\Big Program Files\VMware\VMware Workstation>vmware-vdiskmanager -c -s 40Gb –a ide -t 0 E:\myDisk.vmdk
执行结果显示:
Using log file C:\DOCUME~1\AnEgg\LOCALS~1\Temp\vmware-AnEgg\vdiskmanager.log
Creating a monolithic growable disk 'E:\myDisk.vmdk'
Virtual disk creation successful.

转换一个虚拟磁盘
转换一个预分配虚拟磁盘为可增长虚拟磁盘,用以下这个命令:
vmware-vdiskmanager -r sourceDisk.vmdk -t 0 targetDisk.vmdk
这个命令将转换磁盘从它的原始的预分配模式转变为包含在单一文件中的可增长虚拟磁盘。这个虚拟磁盘空间将不会被预先分配,虚拟磁盘工具将收回虚拟磁盘中的一些磁盘空间,而仅仅让里面的数据占用虚拟磁盘空间。
实际命令输入:
D:\Big Program Files\VMware\VMware Workstation>vmware-vdiskmanager -r "D:\WinXP
SP2 V2.5\Windows XP Professional.vmdk" -t 0 "L:\Windows XP Professional.vmdk"
执行结果显示:
Using log file C:\DOCUME~1\AnEgg\LOCALS~1\Temp\vmware-AnEgg\vdiskmanager.log
Creating a monolithic growable disk 'L:\Windows XP Professional.vmdk'
Convert: 100% done.
Virtual disk conversion successful.

增大存在的虚拟磁盘的大小
命令:vmware-vdiskmanager -x 40GB myDisk.vmdk
这条命令将把虚拟磁盘myDisk.vmdk大小增大到40GB
实际命令输入:
D:\Big Program Files\VMware\VMware Workstation>vmware-vdiskmanager -x 40GB "D:\WinXP SP2 V2.5\Windows XP Professional S.vmdk"
执行结果显示:
Using log file C:\DOCUME~1\AnEgg\LOCALS~1\Temp\vmware-AnEgg\vdiskmanager.log
Grow: 100% done.
The old geometry C/H/S of the disk is: 8322/16/63
The new geometry C/H/S of the disk is: 16383/16/63
Disk expansion completed successfully.
WARNING: If the virtual disk is partitioned, you must use a third-party
utility in the virtual machine to expand the size of the
partitions. For more information, see:
[url=http://www.vmware.com/support/kb/enduser/std_adp.php?p_faqid=1647]http://www.vmware.com/support/kb/enduser/std_adp.php?p_faqid=1647[/url]
创建好后,可以在磁盘管理中,看到未指派的空间。如果你想扩大磁盘分区的大小,可以用其他第三方软件来做。


举例用第三方磁盘管理软件PartitionMagic来调整分区大小
原始磁盘


进入调整向导


经过设置后的调整方案


应用方案后的结果


主磁盘C空间从4GB变为了10GB。

重命名虚拟磁盘
重命名虚拟磁盘,首先把虚拟磁盘从虚拟机中移除。(选择虚拟机 )设置 〉虚拟磁盘,然点移除按钮)
然后重命名命令:vmware-vdiskmanager -n myDisk.vmdk myNewDisk.vmdk
重命名磁盘定位在不同的目录下的命令:
vmware-vdiskmanager -n myDisk.vmdk ..\<new-path>\myNewDisk.vmdk
注意:这是一个在windows宿主机中的路径方式。
定位在不同目录下,但保持相同名字的虚拟磁盘命令:
vmware-vdiskmanager -n myDisk.vmdk ..\<new-path>\myDisk.vmdk
在你重命名或重定位虚拟磁盘后,把虚拟磁盘添加回虚拟机中使用。选择 虚拟机〉设置,点添加,然后根据向导添加这个已经存在的虚拟磁盘。
实际命令输入:
D:\Big Program Files\VMware\VMware Workstation>vmware-vdiskmanager -n "D:\WinXP SP2 V2.5\Windows XP Professional S.vmdk" "D:\WinXP SP2 V2.5\Windows XP Professio nal WS.vmdk"
执行结果显示:
Using log file C:\DOCUME~1\AnEgg\LOCALS~1\Temp\vmware-AnEgg\vdiskmanager.log
Renaming completed successfully.
重命名几乎是瞬间完成的,虽然如此,不过我用MD5验证前后的.vmdk文件,证实文件确实经过了内部修改,得到了不同的MD5码。

磁盘碎片整理虚拟磁盘
命令:vmware-vdiskmanager -d myDisk.vmdk
记住,你不能磁盘碎片整理预分配的虚拟磁盘。你也不能用这条命令磁盘碎片整理物理硬盘。(废话)
实际命令输入:
D:\Big Program Files\VMware\VMware Workstation>vmware-vdiskmanager -d "D:\WinXP SP2 V2.5\Windows XP Professional S.vmdk"
执行结果显示:
Using log file C:\DOCUME~1\AnEgg\LOCALS~1\Temp\vmware-AnEgg\vdiskmanager.log
Defragment: 100% done.
Defragmentation completed successfully.

为收缩虚拟磁盘做准备(详见我的另一篇http://hi.baidu.com/herosonny/blog/item/ac1e81f5a46e852dbc3109b4.html
命令:vmware-vdiskmanager –p S:
一旦准备完成,解除分区映射。重复这个过程在虚拟磁盘的每个分区上。(这样可以得到最好的收缩效果)在你为收缩磁盘准备好了所有分区后,你就可以收缩虚拟磁盘了
实际命令输入:
D:\Big Program Files\VMware\VMware Workstation>vmware-vdiskmanager -p S:
执行结果显示:
Using log file C:\DOCUME~1\AnEgg\LOCALS~1\Temp\vmware-AnEgg\vdiskmanager.log
100% wiping done.
我所映射的虚拟磁盘S


收缩虚拟磁盘
(这种方法)收缩虚拟磁盘必须在Windows宿主机下进行。在你收缩虚拟磁盘以前,确保你已经为虚拟磁盘的所有分区进行了收缩准备。
命令:vmware-vdiskmanager -k myDisk.vmdk
记住,你不能收缩预分配的磁盘。你也不能收缩物理磁盘。如果虚拟磁盘有快照,你也不能收缩。在你收缩以前删除所有的快照。
实际命令输入:
D:\Big Program Files\VMware\VMware Workstation>vmware-vdiskmanager -k "D:\WinXP SP2 V2.5\Windows XP Professional S.vmdk"
执行结果显示:
Using log file C:\DOCUME~1\AnEgg\LOCALS~1\Temp\vmware-AnEgg\vdiskmanager.log
Shrink: 100% done.
Shrink completed successfully.
收缩磁盘时会产生一个临时文件,其实它就是收缩后的虚拟磁盘文件,会代替原来的那个虚拟磁盘文件。


(以上操作我都尝试过,并在虚拟机中验证可行,虚拟机和虚拟磁盘运行并没有受到任何的影响。)

附上命令行中的虚拟磁盘管理工具的帮助





Vmware 虚拟硬盘 合并多个分割文件

有时,当我们创建虚拟机vmware里面的应用程序,我们可能会选择创建分割的虚拟磁盘中的多个文件2 GB的文件,这是为了提高复制过程,主要用于存储虚拟机文件系统不支持创建更大的文件。

如果我们需要将它转换回是一个单一的文件,有一个工具,可以用来操纵虚拟磁盘的vmware- vdiskmanager.exe ,这个工具可以用来转换这些文件是单个文件,通过使用下面的命令。

vmware-vdiskmanager.exe -r "D:\PeopleSoft HCM9.2+PT8.52 VM\Windows Server 2008 R2 x64-cl1.vmdk" -t 0 "D:\Merged.vmdk"

运行代码过程截图:

 

后续操作需要重新设置虚拟机,将原来的硬盘文件替换掉即可。



Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐