设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 4948|回复: 10
收起左侧

〔汇总〕VMware 虚拟机各种Guest OS 虚拟硬盘扩容的方法

[复制链接]
发表于 2014-1-29 14:11:14 | 显示全部楼层 |阅读模式
要对vmware 虚拟机的虚拟硬盘扩容,可以使用VMware自带的命令:
vmware-vdiskmanager.exe
示例:
cd "\Program Files\VMware\VMware Server"\
vmware-vdiskmanager -x 10Gb "E:\VMStorage\VMVHD001.vmdk"
-x参数后跟扩容后的大小,第2个参数引号里面是要扩容的虚拟硬盘的完整路径名
下面针对不同Guest 操作系统示例说明具体的操作方法!
这里我们忽略Host OS的类型,因为vmware-vdiskmanager.exe命令在各平台上是通用的。
案例目录:
1。Guest OS系统为Windows
2。Guest OS系统为Linux 分区使用ext2或ext3的文件系统
3。Guest OS系统为Solaris
 楼主| 发表于 2014-1-29 14:11:59 | 显示全部楼层
1。Guest OS系统为Windows
系统配置:
windows XP SP2
VMWare 5.5 中文破解版
虚拟机配置:
Windows 2003 企业版
建立了一个快照
注意:扩容是针对原始磁盘文件(扩展名为*.vmdk)进行的操作,且扩容前要删除所有在该磁盘上建立的快照(可能高版本不需要删除快照)
我们用的工具是 VMWare 安装目录下的 vmware-vdiskmanager.exe;在命令提示符下键入:
vmware-vdiskmanager.exe /?
后回车,可以看到帮助信息,最下面还有几个例子。我们用到的是 -X 参数。
首先要进入 C:\Program Files\VMware\VMware Workstation(VMWare 的安装目录)目录,把
vmware-vdiskmanager.exe文件和所有扩展名为 *.dll 的文件(因为不知道哪个是vmware-vdiskmanager.exe 需要的 DLL,所以拷贝所有的)拷贝到虚拟机文件目录中,我在这里要扩展的虚拟机文件在D:\My Document\My VirtualMachines\Windows2003Enterprise,然后点“开始”-“运行”,输入cmd 后点“确定”,打开 DOS 窗口,在DOS 窗口中切换到 D:\My Document\My VirtualMachines\Windows2003Enterprise目录,输入下面的命令
vmware-vdiskmanager.exe -x 12Gb Windows2003Enterprise.vmdk
后回车,开始扩展,同时以百分比显示扩展进度。(注意:12Gb 是扩容后的总容量)
如果你想为多个虚拟机扩容,但又觉得拷贝文件很麻烦,你可以在 C:\ProgramFiles\VMware\VMwareorkstation(VMWare 的安装目录)目录下直接运行上面的DOS命令,但这里最关键的是如何得到Windows2003Enterprise.vmdk 的位置,因为如果使用下面的命令
vmware-vdiskmanager.exe -x 12Gb D:\My Document\My Virtual Machines\Windows2003Enterprise.vmdk
会因为 D:\My 后的空格,而无法正确执行,所以下面说说如何得到正常的路径
大家都知道 DOS 的命名采用的是 8.3 命名规则,即文件名占 8 个字符,扩展名占 3 个字符,文件夹同样也不超过8个字符,这样我们想访问超过 8 个字符长度的文件夹时,只取文件夹名称的前 6 位字符,再加上“~数字”,就可以了,例如想进入D:\MyDocument 文件夹,可以在 DOS 窗口中键入
cd mydocu~1
后回车就可以了,如果一个文件夹内有多个长度超过 8个字符的文件夹,而它们的前 6 个字符都是相同的,该怎么办呢,别急,~后的数字就有用了,例如我的 D:\My Document\MyVirtual Machines 文件夹下有Windows2003Enterprise 和 WindowsXP两个文件夹(分别对应两个虚拟机系统),如果这时想进行Windows2003Enterprise 文件夹,则需要键入
cd Window~1
后回车,但还没有完,用 dir 命令查看进到的文件夹里的文件是不是 Windows2003Enterprise 中的文件,如果不是还需要返回上级目录,再键入
cd Window~2
再回车,这回应该是了吧,所以通过这种方法,我们获得虚拟文件的目录是不带空格的,如下
D:\MYDOCU~1\MYVIRT~1\WINDOW~2\Windows2003Enterprise.vmdk
这时,在 DOS 窗口中键入
vmware-vdiskmanager.exe -x 12Gb D:\MYDOCU~1\MYVIRT~1\WINDOW~2\Windows2003Enterprise.vmdk
后,回车,扩容程序就可以正确执行了。
完成上而把操作以后,进入虚拟系统,看我们的硬盘并没有变大呀,这里还需要一些改变分区大小的工具,比如用 Partition Magic。
沙发 2014-1-29 14:11:59 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-29 14:12:56 | 显示全部楼层
2。Guest OS系统为Linux 分区使用ext2或ext3的文件系统
一、系统环境
操作系统:红旗 DC Server 5.0
原VMware虚拟机磁盘空间是8G,使用其自带命令vmware-vdiskmanager.exe进行扩容:
cd "\Program Files\VMware\VMware Server"\
vmware-vdiskmanager -x 10Gb "D:\VMware\RedFlag\myLinux.vmdk"
-x参数后跟扩容后的大小,上面命令把原磁盘空间扩容到10Gb。
进入系统后,看到的情况如下:
[root@mail ~]# df -B 4k
Filesystem             4K-块        已用     可用 已用% 挂载点
/dev/sda1              2000255   1837860     60785  97% /
none                     64271         0     64271   0% /dev/shm
[root@mail ~]# df
Filesystem             1K-块        已用     可用 已用% 挂载点
/dev/sda1              8001020   7351788    242792  97% /
none                    257084         0    257084   0% /dev/shm
[root@mail ~]# df -h
Filesystem            容量  已用 可用 已用% 挂载点
/dev/sda1             7.7G  7.1G  227M  97% /
none                  252M     0  252M   0% /dev/shm
[root@mail ~]# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
  Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        1012     8128858+  83  Linux
/dev/sda2            1013        1044      257040   82  Linux swap
二、操作步骤
我们要进行操作的是/dev/sda1这个根分区,该分区目前大小是8G左右,经VMware扩容后,该分区所在硬盘剩余空间约有2G。但需要注意的是,剩余空间并不是在/dev/sda1分区的后面(右面),而是在硬盘的最后。所以,我们在进行扩容工作的时候,必须先把swap删掉,把剩余空间连接到/dev/sda1的后面,才能进行扩容的操作。(若用过PQmagic的朋友,应该明白这一点)
另外,虽然resize2fs支持在线扩容,但为了安全起见,我还是建议用umount的离线方式进行会更好。
1、进入拯救模式
因我要操作的是系统根分区,而又需要在umount状态下,故只能由拯救模式进行了。
使用系统安装光盘启动后,进入拯救模式:
boot: linux rescue
并选择不要挂载本地磁盘分区。
2、删除swap分区
# fdisk /dev/sda
                                                
.guestviewthumb {margin:10px auto; text-align:center;}.guestviewthumb a {font-size:12px;}.guestviewthumb_cur {cursor:url(static/image/common/scf.cur), default; max-width:120px;}.ie6 .guestviewthumb_cur { width:120px !important;}
                                
                                                                                                        
                                
1221105714_0.png (17.37 KB)
                                                                        19/9/2008 21:33
        
3、准备扩容
检查分区,及去掉索引,恢复到ext2状态:
                                                
                                
                                                                                                        
                                
1221106016_0.png (12.2 KB)
                                                                        19/9/2008 21:33
        
4、修改分区表
在扩容的时候,需要先删除原来的sda1分区,然后在原扇区的基础上重建分区,并增加其大小。(放心,虽然期间有删除分区表的操作,但磁盘数据并不会丢失的)
# fdisk /dev/sda
                                                
                                
                                                                                                        
                                
1221106318_0.png (15.85 KB)
                                                                        19/9/2008 21:33
        
重建swap分区:
                                                
                                
                                                                                                        
                                
1221106472_0.png (13.4 KB)
                                                                        19/9/2008 21:33
        
改为swap分区格式:
                                                
                                
                                                                                                        
                                
1221106583_0.png (11.55 KB)
                                                                        19/9/2008 21:33
        
激活启动选项,并保存分区表:
                                                
                                
                                                                                                        
                                
1221106700_0.png (12.7 KB)
                                                                        19/9/2008 21:33
        
5、扩容分区
使用resize2fs进行扩容:
                                                
                                
                                                                                                
                                
                                                                                                        
                                
1221106891_0.png (11.66 KB)
                                                                        19/9/2008 21:33
        
给ext2增加索引,升级为ext3格式:
                                                
                                
                                                                                                
                                
                                                                                                        
                                
1221107032_0.png (11.06 KB)
                                                                        19/9/2008 21:33
        
6、格式化swap分区
                                                
                                
                                                                                                        
                                
1221107130_0.png (5.58 KB)
                                                                        19/9/2008 21:33
        
最后,重启并确认系统是否正常。
7、结果
[root@mail ~]# df -B 4k
Filesystem             4K-块        已用     可用 已用% 挂载点
/dev/sda1              2518272   1839511    576428  77% /
none                     64271         0     64271   0% /dev/shm
[root@mail ~]# df
Filesystem             1K-块        已用     可用 已用% 挂载点
/dev/sda1             10073088   7358044   2305712  77% /
none                    257084         0    257084   0% /dev/shm
[root@mail ~]# df -h
Filesystem            容量  已用 可用 已用% 挂载点
/dev/sda1             9.7G  7.1G  2.2G  77% /
none                  252M     0  252M   0% /dev/shm
[root@mail ~]# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1274    10233373+  83  Linux
/dev/sda2            1275        1305      249007+  82  Linux swap

板凳 2014-1-29 14:12:56 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-29 14:13:46 | 显示全部楼层
3。Guest OS系统为Solaris
参考:
(转)使用 ZFS 在 VMware Fusion 中扩展 Solaris 虚拟磁盘                                                                                                                                                                                                                                                                                                                                                                                By Jim Laurent,
在本文中,您会找到我折腾了数小时都未能尝试向 Solaris 虚拟机磁盘映像添加磁盘空间的记录。原来是需要某些“新思维”。如果您需要正确的解决方案,就直接转到文章结束部分。
我正在 MacBook Pro 上的 VMware Fusion 中运行我的 Solaris 映像。现在的问题的是如何扩展虚拟磁盘大小。
    * 下载用于 MacOS X 的 VMware 虚拟磁盘管理器。这是随 Fusion 一起提供的命令行工具的一个GUI。如果您确实喜欢使用命令行,则可以在以下位置找到它:/Library/Application\ Support/VMware\Fusion/vmware-vdiskmanager。自己来权衡。我相信您的能力!
    * 复制您的虚拟机。仅对副本进行操作!在 Finder 中选中它,然后选择“编辑”>“复制”(Apple-D)。在制作副本时,虚拟机不能正在运行,甚至不能在使用中和处于挂起状态。Fusion 会对此提示操作不当。
    * 启动 Fusion
    * “文件打开...”新的虚拟机副本
    * Fusion 会注意到文件名已更改并提示您是否已复制该文件。
    * 挂起虚拟机
    * 在扩展此磁盘前您必须先丢弃任何快照。虚拟机 > 丢弃快照。
    * 启动 Vdiskmanager GUI
    * 单击“扩展”,然后在虚拟机中查找 vmdk 文件。选择所需的大小。
    * 单击“运行”(该 GUI 将在窗口底部回显它所使用的命令行,以检查欺骗行为)
    * 该 GUI 不会显示此活动的进度。
    * 完成时如果具有此状态则将打开“结果”选项卡。
现在,真正有趣的就要开始了。但是,Format 显示我的磁盘为其初始大小 10 GB,而非新大小 18 GB。此时 fdisk 将派上用场。
fdisk /dev/rdsk/c8t0d0p0 显示我的磁盘有一个占整个磁盘 56%的分区。这证明该操作发挥了作用。现在我们尝试删除该分区,然后在操作系统运行时重新创建一个空间较大的分区(屏息)。遗憾的是,此尝试失败了,如果您不乐意从我的失败中汲取教训,请跳到下一部分。
    * fdisk /dev/rdsk/c8t0d0p0
    * 选择 3 删除该分区,选择分区 1 并确认
    * 选择 1 创建一个分区。指定占磁盘的 100%。
    * 选择 5 退出,但愿能成功!
    * 运行 Format,崩溃了(哦,惨了!庆幸的是这只是个副本!)
    * 系统重新引导并且 Grub 没有菜单。引导内核的所有尝试均告失败。哎。再试一次。
好了,可以看出 Solaris 在运行时不希望我移除和重新创建其 fdisk分区。如何创建单独的分区并装载它呢?摒弃此核心此虚拟机并创建原件的另一个副本。重复这些步骤来增加磁盘大小,然后...此尝试也告失败,如果您不乐意从我的失败中汲取教训,请跳到下一部分。
    * 需要重新引导,以使 fdisk 识别新的较大大小
    * fdisk /dev/rdsk/c8t0d0p0
    * 选择 1 创建新分区,输入大小,不要使其处于活动状态
现在,我又卡壳了。我找不到获取格式的方法来识别磁盘以便构建盘片。newfs 拒绝写入没有分区表的新文件系统。
在 SunSolve 中,我发现了 6307998 这个错误,已附有以下注释。
    我已经验证,基本上 Solaris 的限制在于
    它不允许同一个磁盘上有多个 Solaris 物理分区。
    功能的这种缺乏超过了安装程序,总的来说这是
    Solaris 中所缺少的东西。Solaris 不支持同一个磁盘上有 2 个 Solaris 分区,
    原因是磁盘驱动程序假定每个磁盘仅有一个
    Solaris 分区。例如,如果我们引用 /dev/dsk/c0d0s0,则我们
    如何确定需要在 c0d0 上访问的 Solaris 分区。
救助的 ZFS
当您有 ZFS 时有谁会需要那种讨厌的旧格式和 mkfs 材料呢!
    * 需要重新引导,这样 fdisk 才能识别新的较大磁盘
    * fdisk /dev/rdsk/c8t0d0p0
    * 选择 1 创建新分区,输入大小,不要使其处于活动状态
    * zpool 创建 mypool /dev/dsk/c8t0d0p1
    * zfs 创建 mypool/jim
我已经成功增加了虚拟存储!
备选方法:为映像中添加第二个磁盘
为了通过 Fusion 添加第二个硬盘。
    * solaris 必须停止运行。
    * 虚拟机必须关闭。
    * 单击 + 号,添加磁盘并输入大小。
    * devfsadm(差点键入了重新引导 -- -r,但这是“旧思维”,以便 format 可以看到新设备)。
format
搜索磁盘...完成
可用的磁盘选择:
       0. c1t0d0
          /pci@0,0/pci1000,30@10/sd@0,0
       1. c1t1d0
          /pci@0,0/pci1000,30@10/sd@1,0
# zpool create mypool /dev/dsk/c1t1d0
# zfs create mypool/jim
# zpool status
  pool: mypool
state: ONLINE
scrub: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        mypool      ONLINE       0     0     0
          c1t1d0    ONLINE       0     0     0
# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
mypool                 4.97G    116K   4.97G     0%  ONLINE     -
地板 2014-1-29 14:13:46 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-29 14:14:25 | 显示全部楼层
参考:
Solaris ZFS 双硬盘RAIDZ 换盘实验                                                                                                                                                                                                                                                                                                                                                                                我用虚拟机做了也一一次实验,来验证2块硬盘做RAIDZ ,坏一块盘时的可用性以及可修复性。
环境介绍:
                                                
                                
                                                                                                
                                
                                                                                                        
                                
VBX001.jpg (62.84 KB)
                                                                        28/8/2008 01:02
        
如图: 原来系统Labdb001.spruce.cn的硬盘配置为:
IDE 0 Master Solaris-1-VHDD01.vid 18.2GB    (c0d0)
IDE 1 Master Solaris-1-VHDD02.vid 18.2GB     (c0d1)
IDE 1 Slave   Solaris-1-VHDD03.vid 18.2GB     (c1d1)

现在的系统是Solaris 10 X86 05/08
C0d0 是系统盘,UFS.
C0d1 和 c1d1 创建了一个名为 ora的RAIDZ 存储池(zpool ora)
Zpool ora 上我建了两个ZFS文件系统 oracle 和 oracle data
Oracle 被设定mount到 /u01
Oradate 被设定mount到 /u01/oracle
现在系统中有一个用户 Q.Ho ,其主目录被设定为 /u01/Q.Ho
上面现在有1个600多M的文件,Oracle 10.1.0.3 DB的cpio.gz
现在我把c1d1的磁盘控制器改为STAT 接口为#7.
因为Solaris 不可识别SATA控制器,所以这样做之后这块盘在系统中将不可识别。
然后我再增加1块盘:
Solaris-1-VHDD7SATA.vid 18.2GB
从名字上大家可以看出这块盘是原来计划挂在STAT #7上用的。
现在VirtualBox默认把它挂到IDE 1 Slave
下面我示范换盘的具体步骤
首先我启动我的虚拟机。
以root登入后打开一个终端,然后查看当前zfs存储池(zpool)的信息
# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
ora                    36.2G   1.18G   35.1G     3%  DEGRADED   -
# zpool status
  pool: ora
state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-D3
scrub: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        ora         DEGRADED     0     0     0
          raidz1    DEGRADED     0     0     0
            c0d1    ONLINE       0     0     0
            c1d1    UNAVAIL      0     0     0  cannot open
errors: No known data errors
现在系统检测到raidz 卷ora两块盘中的一块已经损坏,我们来看看盘上的数据是任然可用:
# pwd
/
# cd /u01
# ls
Q.Ho    ora10g
# cd q.ho
q.ho: does not exist
# cd !.Ho
!.Ho: does not exist
# cd Q.Ho
# ls
solarisx86_DB_10_1_0_3_Disk1.cpio.gz
通过复制文件solarisx86_DB_10_1_0_3_Disk1.cpio.gz到其他目录,证明RAIDZ卷的数据任然可以正确读取。
接下来真是换盘:
首先查看系统中现有的磁盘
#format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
       0. c0d0 <DEFAULT cyl 2372 alt 2 hd 255 sec 63>
          /pci@0,0/pci-ide@1,1/ide@0/cmdk@0,0
       1. c0d1 <VBOX HAR-22b3a4a7-0486b14-0001-18.20GB>
          /pci@0,0/pci-ide@1,1/ide@0/cmdk@1,0
       2. c1d1 <DEFAULT cyl 2373 alt 2 hd 255 sec 63>
          /pci@0,0/pci-ide@1,1/ide@1/cmdk@1,0
Specify disk (enter its number):
大家可以看到系统已经看到新换的磁盘c1d1,现在它还是裸盘。
此时c1d1未经过存储池的格式化处理,所以对池任然不可用。
这时使用online命令启用磁盘c1d1是无效的。
# zpool online ora c1d1
Bringing device c1d1 online
# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
ora                    36.2G   1.18G   35.1G     3%  DEGRADED   -
# zpool status
  pool: ora
state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-D3
scrub: resilver completed with 0 errors on Sat Aug 23 17:31:37 2008
config:
        NAME        STATE     READ WRITE CKSUM
        ora         DEGRADED     0     0     0
          raidz1    DEGRADED     0     0     0
            c0d1    ONLINE       0     0     0
            c1d1    UNAVAIL      0     0     0  cannot open
errors: No known data errors
正确的方法是使用zpool replace 命令来替换存储池中的设备:
我在同一物理位置替换新的磁盘到存储池 ora
# zpool replace ora c1d1
# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
ora                    36.2G   1.18G   35.1G     3%  DEGRADED   -
# zpool status
  pool: ora
state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scrub: resilver in progress, 59.01% done, 0h0m to go
config:
        NAME            STATE     READ WRITE CKSUM
        ora             DEGRADED     0     0     0
          raidz1        DEGRADED     0     0     0
            c0d1        ONLINE       0     0     0
            replacing   DEGRADED     0     0     0
              c1d1s0/o  UNAVAIL      0     0     0  cannot open
              c1d1      ONLINE       0     0     0
errors: No known data errors
大家可以看到池正在同步RAIDZ 卷中两块硬盘上的数据
一分钟后再次查看存储池的状态
# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
ora                    36.2G   1.18G   35.1G     3%  ONLINE     -
# zpool status
  pool: ora
state: ONLINE
scrub: resilver completed with 0 errors on Sat Aug 23 17:40:51 2008
config:
        NAME        STATE     READ WRITE CKSUM
        ora         ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            c0d1    ONLINE       0     0     0
            c1d1    ONLINE       0     0     0
errors: No known data errors
新的硬盘已经被成功替换,RAIDZ 存储池ora已经被修复。
通过这个实验,证明2块盘的RAIDZ 坏一块盘的情况下是可以很方便的进行换盘恢复的。
扩展开来,我们还可以通过换盘的方式更换更大容量的硬盘为存储池扩容。
5# 2014-1-29 14:14:25 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2008-1-12 16:34:40 | 显示全部楼层
学习了,谢谢分享!
6# 2008-1-12 16:34:40 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2008-7-12 02:43:45 | 显示全部楼层
谢谢分享,留个记号
7# 2008-7-12 02:43:45 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2008-7-12 22:55:03 | 显示全部楼层
学习。。。保留资料,等待有用时。
8# 2008-7-12 22:55:03 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2008-7-12 23:37:15 | 显示全部楼层
写的真够详尽的,谢谢
9# 2008-7-12 23:37:15 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-23 17:41 , Processed in 0.060844 second(s), 10 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表