当前位置:  技术问答>linux和unix

创建硬盘快照,高手帮忙!

    来源: 互联网  发布时间:2016-07-01

    本文导语:  我现在有一个硬盘,想做个针对这个硬盘的快照,然后读写! 我想知道如何通过程序实现, 通过程序创建快照,不想使用lvm通过lvreate命令创建! 通过编成方式实现! 有没有针对创建快照的代码, 高手帮忙啊! ...

我现在有一个硬盘,想做个针对这个硬盘的快照,然后读写!
我想知道如何通过程序实现,


通过程序创建快照,不想使用lvm通过lvreate命令创建!

通过编成方式实现!

有没有针对创建快照的代码,

高手帮忙啊!

|

|
逐个字节进行快照

  在Xen里创建快照的一种方法是在保存虚拟机当前状态后使用Linux dd。这包括以下步骤:

  1.使用xm save命令禁用当前的虚拟机状态并将其写入磁盘文件。这只把机器状态写入一个文件,不是用于Xen磁盘文件或分区的当前状态。使用名称linux01这样做,用xm save linux01 linux01.sav。注意这个命令将停止虚拟机。

  2.现在使用dd将磁盘镜像文件的当前状态转存到一个备份文件。下面的例子将为LVM逻辑卷:

  dd if=/dev/xenvols/linux01_root   of=/data/xen_linux01_root.img

  3.使用xm restore命令重新启动虚拟机。

  这种解决方案的主要缺点在于耗时。dd命令逐个字节地对虚拟机磁盘文件进行复制,因此需要消费大量时间。所以这种方案不是非常实用。


LVM方法

  在Linux里,Logical Volume Manager(LVM)也能用于创建快照,它比先前的磁盘文件方法节省了许多时间。这种方法意味着你的虚拟机使用LVM逻辑卷作为存储后端,与使用虚拟磁盘文件形成对比。由于这个逻辑卷,你接下来需要创建快照。这个快照是一种备份,只包含当时进行快照时所改变的元数据和块。当你通过元数据使用dd制作快照副本时,你通常在原始卷上制作原始块的快照,不需要重新激活原始卷。通过这种方式,能大幅度减少创建快照的时间。步骤如下:

  1.使用xm save命令保存虚拟机当前状态,并写入磁盘文件:

  xm save linux01 linux01.sav

  2.假定你已经有一个LVM逻辑卷用来作为你虚拟机的存储后端,使用下面的命令对这个卷进行快照。比较好的准则是使用在原始逻辑卷里所分配磁盘空间的10%作为快照卷的大小:

  lvcreate -s -L 1G -n linux01-snap /dev/xenvols/linux01

  3.由于现在你已经在LVM快照里保存了虚拟机的状态,你能重新启动虚拟机,显著减少虚拟机的停机时间:

  xm restore linux01-sav

  4.使用dd创建虚拟机快照并写入一个镜像文件。由于要使用快照复制所有虚拟机分配的磁盘块,这将花费很长时间:

  dd if=/dev/xenvols/linux01-snap of=/data/xen01.img

  5.不要忘记在最后一步移除快照。这很重要,因为快照最终将被完全覆盖而导致快照不能用。这样的问题是将阻止你从原始卷重新启动,因此不要忘记这最后一步:

  lvremove /dev/xenvols/linux01-snap

  目前,没有任何一种Linux版本提供了在开源Xen堆栈里创建虚拟机快照的方法,在本文中,我们学习了使用标准Linux工具,如LVM和dd命令来创建快照。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Bitsets 成员 Constructors:创建新bitsets
  • 菜鸟在c盘装了win2000,想在剩下的空间装Red Hat Enterprise Linux 3,在创建linux分区的时候,不知道都创建什么分区??我知道要创建一个
  • C++ Double Ended Queues(双向队列) 成员 Constructors:创建一个新双向队列
  • 一进程源源不断地创建文件,另一进程把这些创建的文件抓取并挪走
  • C++ I/O 成员 open():创建一个输入流
  • 创建用户组创建用户出错
  • Xcode介绍及创建工程和工程依赖操作步骤
  • 进程创建进程组后,然后创建该组中的进程,然后终止。这里的终止....? iis7站长之家
  • HTML5 sprite 样式创建工具Stitches介绍
  • php循环创建目录示例分享(php创建多级目录)
  • java Servlet实现Session创建存取以及url重写代码示例
  • navicat 8 创建数据库与创建用户分配权限图文方法
  • sql server 2008:您对无法重新创建的表进行了更改或者启用了“阻止保存重新创建表的更改”
  • mkdir()是创建文件夹的函数,有没有循环创建多个目录级的函数呢?
  • 各位高手知道在JAVA中如何用一个名称创建一个对象实例,并调用其方法,注意:在编写代码时并不知要创建的对象的类名,也并不知方法名
  • FTP上创建的文件夹的创建日期始终和本机的对不上(无论如何改变日期和时间)(紧急!!!)
  • 急!linux下mysql的创建用户组和创建用户命令不能生效啊????
  • 怎么创建包,我创建包后,怎么找不到呢?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 100求解:如何在UNIX环境下创建一个新的端口号?另:能告之如何在WINDOWS2000环境下创建一个新的端口号就更好了!
  • linux普通用户创建文件或目录


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3