虚拟机下扩展磁盘空间

把现有硬盘的容量增加,本来是4G的硬盘扩充到8G,32G。。。。,其命令为:
vmware-vdiskmanager.exe -x size mydisk.vmdk
//示例如下:
主系统Windows XP SP3,假设vmware虚拟机Ubuntu8.04安装在E分区,运行cmd
D:/>cd "Program Files"
D:/Program Files>cd VMware
D:/Program Files/VMware>cd "VMware Workstation"
D:/Program Files/VMware/VMware Workstation>vmware-vdiskmanager -x 10Gb "E:/Ubuntu 8.04/Ubuntu 8.04.vmdk"

  Grow: 100% done.
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:
         http://www.vmware.com/support/kb/enduser/std_adp.php?p_faqid=1647
需要强调的一点是,调整硬盘大小之后的效果,相当于增加了原来物理硬盘的柱面数目,因此,文件系统并不会自动增长。需要重新调整文件系统的大小。这一步不同的系统有不同的方法。比如
1. 如果guest  OS为win系列,可以通过partion magic来实现
2. 如果guest  OS为Linux系列,可以通过resize2fs来扩大ext2/3格式的文件系统。
一般来说主要有两个工具,resize2fs和parted。不过使用resize2fs /dev/sda1 10GB的时候,会显示请求的size过大,因为之前扩大的硬盘容量并没有添加任何的文件系统,可以说是没有格式化吧。使用parted提示需要将sda1 卸载了才能操作。后来选择了用fdisk的笨办法来扩容,详解见下。
3. 如果guset OS为其他Unix系统,可以通过向文件树中新增加分区,来扩充原文件系统。

启动虚拟机系统,用root登录(后续所有步骤都应以root用户身份登录操作),在命令行用fdisk -l查看。由于这里是直接修改了原始空间大小,因此可以看到/dev/sda空间改变为10.7 GB。

fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b2cce

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         922     7405933+  83  Linux
/dev/sda2             923        1044      979965   82  Linux swap / Solaris

fdisk /dev/sda  //然后依次选择m,p,n,e,3,p,n,l,p,w

以下是我执行的过程

[root@localhost ~]# fdisk /dev/hda4

The number of cylinders for this disk is set to 3916.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/hda4: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000bc363

Device Boot Start End Blocks Id System
/dev/hda1 * 1 25 200781 83 Linux
/dev/hda2 26 1958 15526822+ 8e Linux LVM
/dev/hda3 1959 2610 5237190 8e Linux LVM

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Selected partition 4
First cylinder (2611-3916, default 2611):
Using default value 2611
Last cylinder or +size or +sizeM or +sizeK (2611-3916, default 3916):
Using default value 3916

Command (m for help): t
Partition number (1-4): 4
Hex code (type L to list codes): 8e
Changed system type of partition 4 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/hda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000bc363

Device Boot Start End Blocks Id System
/dev/hda1 * 1 25 200781 83 Linux
/dev/hda2 26 1958 15526822+ 8e Linux LVM
/dev/hda3 1959 2610 5237190 8e Linux LVM
/dev/hda4 2611 3916 10490445 8e Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

(注:建议重启一下CentOS系统)

# mkfs.ext3 /dev/sda5
#
mkdir -p /data
cp /etc/fstab /etc/fstab.bak
修改文件/etc/fstab,挂载/dev/sda5到/data下
/dev/sda5            /data            ext3       defaults              1 1
reboot //重启
# df -h

 

 

系统磁盘空间大小更改成功

 

注意: 用vmware-vdiskmanager才完成扩容的第一步,接下来的事情请看我的博客。 http://blog.csdn.net/junglyfine/archive/2009/12/09/4974269.aspx 使用方法: vmware-vdiskmanager 命令语法: vmware-vdiskmanager [选项] VMware Virtual Disk Manager - build 44356. Usage: vmware-vdiskmanager [选项] 虚拟磁盘文件的名字。 #虚拟磁盘文件必须是.vmdk为扩展名。你能够指定一个你想要储存的虚拟磁盘文件的路径。如果你在你的宿主机中映射了网络共享,你也可以提供确切的虚拟磁盘文件的路径信息来创建虚拟磁盘在这个网络共享中。 -c 创建虚拟磁盘。 #你必须用-a, -s 和 -t 并指定选项参数,然后你需要指定所要创建的虚拟磁盘文件的文件名。 -r 转换已经指定类型的虚拟磁盘的类型。 #结果会输出创建一个新的虚拟磁盘。你必须用-t选项来指定你想要转换成的磁盘类型,并且指定目标虚拟磁盘的文件名。 #一旦转换完成,你可以先测试虚拟磁盘以确保它能够像你所希望的那样工作,然后再删除原来的那个虚拟磁盘文件。 #为了让虚拟机重新认识转换后的虚拟磁盘,你应该使用虚拟机设置编辑器先从虚拟机中移除先前存在的虚拟磁盘,然后添加转换好的虚拟磁盘给虚机。 -x [GB|MB] 增大虚拟磁盘到指定的容量。你必须指定新的更大尺寸的虚拟磁盘GB或MB单位标示。你不能改变物理磁盘的大小。 #在你运行虚拟磁盘管理软件前,你应该先备份虚拟磁盘文件。因为vmware-vdiskmanager会向你的虚拟机配置文件里面写入新配置 -d 对指定的虚拟磁盘碎片整理。 #你只能磁盘碎片整理可增长的虚拟磁盘。你不能磁盘碎片整理预分配的虚拟磁盘。 -p 为收缩磁盘做准备处理。 #如果虚拟磁盘被分成多个分区,每个分区必须被单独准备。分区(比如/email或/storage)必须用VMware DiskMount工具映射。 #在你对分区准备处理后,解除对此分区的映射。继续映射虚拟磁盘的其他每个分区,为收缩磁盘作准备处理直到完成虚拟磁盘上的所有分区的准备工作。 #你在同一时刻只能用VMware DiskMount映射虚拟磁盘的一个分区。你仅仅能在宿主机上进行虚拟磁盘的收缩分区准备工作。 -k 收缩指定的虚拟磁盘。你只能够收缩可增长磁盘。你只能在宿主机中用这种方法收缩虚拟磁盘。 #你不能够收缩有虚拟机快照的虚拟磁盘。你可以保持现有虚拟磁盘的状态,而用快照管理器删除所有快照。你也可以放弃自快照以来对虚拟磁盘所做的更改,恢复到快照时状态。 -a [ ide | buslogic | lsilogic ] 指定磁盘适配器的类型。你在创建新的虚拟磁盘时必须指定其类型。 #选择以下类型之一: #ide —— IDE接口适配器 #buslogic —— BusLogic SCSI接口适配器 #lsilogic —— LSI Logic SCSI接口适配器GB或MB做单位。你必须在创建磁盘时指定其大小。 #尽管你必须指定虚拟磁盘的大小,但当你增长它的大小时,你不能用-s可以指定的磁盘大小规定:IDE和SCSI适配器都为最小100MB,最大950GB。 -t [0|1|2|3] 你在创建一个新的虚拟磁盘或者重新配置一个虚拟磁盘时必须指定虚拟磁盘的类型。 #指定以下类型之一: #0 —— 创建一个包含在单一虚拟文件中的可增长虚拟磁盘 #1 —— 创建一个被分割为每个文件2GB大小的可增长虚拟磁盘 #2 —— 创建一个包含在单一虚拟文件中的预分配虚拟磁盘 #3 —— 创建一个被分割为每个文件2GB大小的预分配虚拟磁盘 -q 禁止虚拟磁盘管理程序写日志 #如果你允许记录日志,日志将会被虚拟磁盘管理程序产生并储存。在虚拟磁盘管理程序运行后,日志的名字和存放位置将会出现在命令行或终端中。 -n 重命名指定的虚拟磁盘。需要指定命名后的虚拟磁盘名字。 为了帮助大家理解,下面举几个例子: vmware-vdiskmanager -c -s 850Mb -a ide -t 0 myIdeDisk.vmdk 创建一个名称为myIdeDisk的大小为850Mb的IDE接口的在一个虚拟机文件中的可增长的磁盘 vmware-vdiskmanager -d myDisk.vmdk 对myDisk进行碎片整理 vmware-vdiskmanager -r sourceDisk.vmdk -t 0 destinationDisk.vmdk 将sourceDisk转换成在一个虚拟机文件中的可增长的磁盘,并命名为destinationDisk vmware-vdiskmanager -x 36Gb myDisk.vmdk 将磁盘myDisk增大至36G vmware-vdiskmanager -n sourceName.vmdk destinationName.vmdk 将磁盘sourceName改名为destinationName 如果在添加共享磁盘后发现只有一台机器能启动,另外一台因为不能打开共享磁盘文件而不能启动的时候,需要对配置文件进行修改: 分别打开两台虚拟机目录中的vmx文件,在最后一行添加: disk.locking="FALSE" scsi0:1.SharedBus="Virtual" scsi1:1.SharedBus="Virtual" 系统启动的时候会锁定磁盘,所以当启动linux1后共享磁盘被锁定了,linux2就起不来了,因此需要加入disk.locking = "false"。 一般来说,如果是scsi1:0,则n为1,也就是scsi1.sharedBus = "virtual" ,表示所有的bus都共享,vmare推荐这种做法。 如果说是不是所有的bus都共享的话,可以将上述scsi1.sharedBus = "virtual"改成scsi1:1.shared = "true" 。 注意: 以上只完成了第一步,想扩容成功请看我的另一个文章 http://blog.csdn.net/junglyfine/archive/2009/12/09/4974269.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值