zoukankan      html  css  js  c++  java
  • [转]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,可以看到问题解决。

  • 相关阅读:
    Pwn-level0
    Pwn-level2
    【php】php从多个数组中取出最大的值
    【算法】php计算数字k在一段数字范围出现的次数
    【算法】php计算出丑数
    【php】php常用函数代码封装(一)数组篇
    【Golang】go语言设计模式
    什么是RPC
    【php】 php获取文件路径中的文件名和文件后缀方法
    【php】php目录路径函数系列
  • 原文地址:https://www.cnblogs.com/oxspirt/p/14063055.html
Copyright © 2011-2022 走看看