[转]virtualbox 虚拟机迁移 和磁盘扩容

原文: https://www.cnblogs.com/coodream2009/p/8578216.html

https://www.cnblogs.com/jaysonteng/p/13443258.html

扩容: https://www.cnblogs.com/jeasonit/p/11684651.html

 1. 迁移

 2. 扩容

 3. fdisk -l查看磁盘信息时报错:GPT PMBR size mismatch will be corrected by w(rite)错误

  # 执行命令: sudo parted -l

  # 然后输入: Fix

问题: 1. 是否可以写成脚本? 以后类似操作就更方便了?

————————————————————————————————————————

VirtualBox是常用的虚拟机管理软件,和VMware一样,用的很多。在使用过程中,有的时候需要对虚拟机进行迁移。比如我们原来的服务器,使用的win10操作系统,上面利用VirtualBox安装了多个虚机作为服务器,tomcat服务器,virtuoso数据库服务器,mysql服务器等,由于win10物理机出现了问题,需要将虚机迁出,所以尝试着将虚机迁移到另一台win2008的系统中。

VirtualBox保存虚机数据的是vdi文件,简单来说就是拷贝vdi文件,然后在新的物理机上,安装VirtualBox打开这个vdi文件。具体步骤如下。

1 获取vdi文件

每个虚机都对应一个或多个vdi文件,在VirtualBox中的全局设置,可以查看虚机vdi文件的存放目录,每个虚机的数据都保存在以虚机名称为文件夹里面。在这个虚机根目录可以看到vdi文件,这个vdi文件可以看作虚机的基础数据。如果虚拟保存了快照(备份),还有一个snapshot目录,里面保存的是虚机快照。快照的vdi可以看作是虚机的状态信息,基础数据和状态信息加在一起是虚机的所有数据,一般我们可以关闭虚机,然后再删除快照,这样就剩下根目录的vdi,也就是虚机的vdi数据,这个vdi就是我们要的vdi。

2 克隆vdi数据

如果直接拷贝vdi数据,在新的VirtualBox中不能打开,因为每个vdi文件都包含了一个uuid的数据,如果直接拷贝,uuid在新的VirtualBox中是不能用的,所以会打开失败,我们需要给在原来vdi的基础上,生成新的vdi数据,包含新的uuid,可以在VirtualBox中打开。这个包含新uuid的vdi数据可以通过VirtualBox命令生成。

此处用了克隆的方法,也可以直接拷贝过去,然后再通过VirtualBox命令处理。克隆的方法,进入cmd命令行,然后进入VirtualBox的安装目录,比如VitualBox的安装目录是C:Program FilesOracleVirtualBox,原有vdi文件在d盘,生成新的vdi放到e盘。命令为C:Program FilesOracleVirtualBox>vboxmanage.exe clonehd "d:xxx.vdi" "e:xxx.vdi" (注:双引号可以不用)。回车之后出现0%...,需要点时间才能生成vdi文件,10多G的数据可能要10来分钟时间。执行完成后会出现0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%类似的信息。这样克隆vdi数据文件的工作完成了。

3 利用vdi数据创建虚机

在新的VirtualBox中创建新的虚机,给虚机起个名字,选择操作系统。点击下一步,使用已有vdi文件创建虚机,选择刚生成的vdi文件创建。

这样虚机的迁移任务就完成了。

——————————————————————————————————————磁盘扩容-------

VirtualBox虚拟机在使用的过程中,有时会遇到磁盘大小不够用,如果设置了”动态分配存储“可以通过下面的方法对磁盘的空间进行手动扩展

1.启动CMD命令行,进入VirtualBox的安装目录。如

cd E:Program FilesOracleVirtualBox

2.查看需要修改的虚拟硬盘:

复制代码

E:Program FilesOracleVirtualBox>VBoxManage.exe list hdds
UUID:          e8e2c341-b3b1-49db-ad2d-ab4e6b08bc5a
Parent UUID:    base
State:          locked write
Type:          normal (base)
Location:      F:VMCentOS-64.vdi
Storage format: VDI
Capacity:      8000 MBytes

UUID:          707d45b6-380d-4e51-96bd-8c9508bfd313
Parent UUID:    base
State:          created
Type:          normal (base)
Location:      F:VMCentOS-64-ext.vdi
Storage format: VDI
Capacity:      21273 MBytes

UUID:          aca81637-fbc0-4826-be66-847ecc96d83b
Parent UUID:    base
State:          created
Type:          normal (base)
Location:      C:UsersEdward.WuVirtualBox VMsWinXPWinXP.vdi
Storage format: VDI
Capacity:      10240 MBytes

复制代码

----

我们看到共有三个虚拟磁盘,我们要修改图中第一个,它的空间大小为8G,UUID:e8e2c341-b3b1-49db-ad2d-ab4e6b08bc5a 

2. 调整磁盘空间为15G:

复制代码

E:Program FilesOracleVirtualBox>VBoxManage.exe modifyhd e8e2c341-b3b1-49db-ad2d-ab4e6b08bc5a --resize 150000%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

——————————————————————————————

问题产生原因:

在对虚拟机扩容时候,由于linux系统没有对其磁盘信息进行更新,导致了磁盘实际容量和linux系统容量不一致

报错的地方:

1、使用sudo fdisk -l查看磁盘信息时报错:GPT PMBR size mismatch will be corrected by w(rite)错误
2、使用sudo fdisk /dev/sda 进行虚拟机磁盘分区扩容时报错:明明有多余的空间,却显示value out of range

解决办法:

# 执行命令:
sudo parted -l

# 然后输入:
Fix

再次执行sudo fdisk -l,可以看到问题解决。

原文地址:https://www.cnblogs.com/oxspirt/p/14063055.html