zoukankan      html  css  js  c++  java
  • virtualbox的分支备份功能

    由于之前把系统搞坏了郁闷的又重装了下,后来长了个记性,进行备份下

    http://blog.sina.com.cn/s/blog_591a2c940100fyti.html 

     【名词解释】

    Snapshots:系统快照,保存虚拟系统在某一时刻的全部运行状态,以后可以将虚拟系统恢复到创建此快照时的状态。在VirtualBox中文版中,snapshots被翻译成“备份”。

     

    使用虚拟机最方便的一点是可以随时备份系统状态(创建快照),然后就可以放心地折腾了,即使把虚拟系统搞坏了也可以随时恢复到备份时的状态,甚至是正在运行中的状态,比“一键还原”还方便。

     

    不过VirtualBox以往的版本与VMware等其他虚拟机软件相比有一个不足之处,就是它只能恢复到最近一个备份的状态,如果要恢复到更久以前的备份,得先删除最近的备份才行。而前几天刚刚发布的VirtualBox 3.1版,增加了分支快照(branched snapshots)功能,可以将虚拟系统直接恢复到任意时间的备份,并且保留最近的备份,当修改了过去备份的状态后,可以在原有的备份时间线上创建一个分支,并且可以随时在不同分支上继续运行系统。

     

    对于没有用过这个功能的人,可能用具体的例子来说明会更容易理解一些。

    下面是我刚在虚拟机中装好的一个系统,我创建了一个备份,命名为“新装系统”。 


    当我在这个系统中进行了一些操作之后,当前状态相对于“新装系统”的状态已经改变了,我可以基于这个状态再创建一个备份,命名为“备份1”。


     

    我可以根据需要继续在不同的时间点创建备份,如“备份2”、“备份3”、“备份4”。到目前为止,操作和VirtualBox以前的版本是一样的,在以前的版本中,我只可以恢复到最近一个备份——“备份4”,不能直接恢复到更早的备份。


     

    而在3.1以后的版本中,可以直接恢复到“备份1”,或者任何一个备份,而不会对其他已经创建的备份产生影响。


     

    这个时候,虚拟系统的当前状态就是基于“备份1”的了,在备份时间线上产生了一个分支。


     

    在这个分支上,可以再创建新的备份,如“备份a”、“备份b”、“备份c”。


     

    现在,虚拟系统的当前状态是基于“备份c”的,不过可以随时切换到另一个分支,比如恢复到“备份4”的状态。


     

    根据同样的操作,可以恢复到任意时刻的备份继续运行,并创建新的分支。


     

    分支快照功能的好处是,我们可以在一个虚拟系统中保存不同的状态,比如一个用于工作,一个用于娱乐,一个用于测试软件等等。可以随时在这些不同的状态中切换,而不用创建多个虚拟系统了。

     

    当然,虽然备份状态可以有很多,但是当前状态只能有一个,也就是说,这些不同的状态是不能同时运行的。如果需要同时运行多个不同的环境,就得创建多个虚拟系统了,可以参考我之前的文章《在VirtualBox里复制VDI文件》。

     《在VirtualBox里复制VDI文件

     在VirtualBox的快速修复界面里,可以随时生成当前状态的备份。当生成了备份之后,会在Snapshots目录下创建一个新的VDI文件,之后对当前状态所做的一切操作都将针对最新的VDI文件,而VDI目录下的初始VDI文件就不会再改变了。


     

    我一般在装好Guest OS并做完打补丁、安装常用软件等操作后就创建一个备份,如果Guest OS发生了问题可以随时恢复到干净的系统。但是有时需要在不同的软件环境下做不同的事情,开始时我希望能用一个VDI文件生成两个不同的备份并分别配置成不同的环境,但是发现VirtualBox的备份是线性的,也就是说只能针对当前状态做一个备份,而恢复备份时也只能恢复到上一个备份的状态,不能同时存在两个不同的当前状态。

     

    没有办法,只能把初始的VDI文件复制出来一份用于另外的环境。但是很快发现,复制出来的VDI文件无法在虚拟介质管理器中注册,因为每个VDI文件都有一个唯一的uuid,而VirtualBox不允许注册重复的uuid。

     

    看了帮助文件后,发现VBoxManage有一个clonevdi方法可以克隆VDI文件,并赋予它一个新的uuid。具体用法是在命令行里执行:

    VBoxManage clonevdi 原始VDI文件名 新的VDI文件名

    直接写VDI文件名即可,不用指明VDI文件所在路径,新的文件会在全局设定中指定的VDI目录下创建。如果VDI文件名里带有空格,应该在两端加上双引号。VBoxManage命令位于VirtualBox安装目录下,缺省路径是C:\Program Files\Sun\xVM VirtualBox。

     

    用这个方法创建了新的VDI文件后,就可以正常注册并在另一个虚拟机中使用了。

     


    2008-12-25更新:

    本月17日VirtualBox发布了2.10版,在这个版本里,VBoxManage clonevdi命令改为了VBoxManage clonehd,它的用法如下:

    VBoxManage clonehd          <uuid>|<filename> <outputfile>
                                [-format VDI|VMDK|VHD|RAW|<other>]
                                [-remember]

    可以看到,使用-format参数,除了VDI格式的虚拟磁盘文件以外,它还支持VMDK(VMWare)、VHD(Virtual PC)等格式。为了向下兼容,它仍然支持使用VBoxManage clonevdi命令来复制VDI格式的文件。

     


    2009-08-09更新:

    在VirtualBox的最新版本中,已经可以将同一个vdi文件用于多个虚拟系统了。使用方法是:先按正常方式创建一个虚拟系统,创建或选择一个vdi文件,然后做一个备份;接下来创建第二个虚拟系统,再次选择这个vdi文件,同样也创建一个备份。这样,两个虚拟系统就可以各自在不同的环境下运行了,初始的vdi文件是不变的,各自的更改记录在备份文件中。

     


    2009-12-05更新:

    在刚刚发布的VirtualBox 3.1版中,增加了分支快照(branched snapshots)功能,可以恢复任意时刻的备份了,请参考《VirtualBox分支快照功能的使用》。

  • 相关阅读:
    搭建基于nginx-rtmp-module的流媒体服务器
    mysql length和char_length
    mediainfo使用
    linux下ftp服务器搭建
    排序算法
    设计模式之注册树模式
    dock
    linux下安装使用tar
    linux下安装rar
    linux 内存操作相关命令
  • 原文地址:https://www.cnblogs.com/xuxm2007/p/1784364.html
Copyright © 2011-2022 走看看