
可是,有的时候你需要快速的备份一个虚拟磁盘。在这篇技巧里,我们会介绍一些备份的新方法,你可以将它们作为主要备份方式的辅助。这些备份方法要么将庞大的虚拟机磁盘文件(virtual machine disk format - .vmdk )拷贝到另一个磁盘存储设备上,要么就是将虚拟机克隆到另一个主机或者存储设备上。这些备份在裸硬件恢复虚拟机时很有用,当然也可以用于恢复单个的文件。
SCP和vmkfstools
我们先从最简单的方法开始,给虚拟磁盘制作一份拷贝,可以使用支持Secure Copy Protocol(安全拷贝协议SCP)的工具或者ESX的命令行工具vmkfstools。两种工具之间的区别是,vmkfstools被设计成对VMFS卷进行操作,它可以在本地或者共享的VMFS卷之间拷贝虚拟磁盘文件,而SCP则可以将虚拟磁盘拷贝到任何存储设备上。而且,当使用vmkfstools进行拷贝的时候,磁盘空间是一次性分配的,所以就减少了磁盘碎片的产生。而对SCP,磁盘空间分配是在拷贝的同时进行的,就有可能产生虚拟磁盘的碎片。因此,当在VMFS之间或者向VMFS拷贝虚拟磁盘文件的时候,vmkfstools就比较合适。SCP则适用于从VMFS卷向其它存储拷贝虚拟磁盘时,或者将此拷回VMFS卷的时候。一旦你使用SCP向VMFS卷拷回了一个虚拟磁盘文件,你最好使用vmkfstools再给它做一个拷贝,从而便避免磁盘碎片的产生。不过,如果这只是个临时的拷贝,就不必费神了。
如果你要在一个虚拟机开机的情况下拷贝它的虚拟磁盘文件,那一定要先给虚拟机建立一个快照,磁盘会变成只读的,这样才能安全地进行拷贝。你可以使用VI客户端或者使用VMware-cmd命令行工具来建立快照。在复制过程结束之前,所有对磁盘的写操作都会记录在一个单独的快照差别文件里。复制结束后,可以删除那个快照,这样所有快照差别文件里的内容都会被写回到原始的磁盘文件里。
使用SCP复制的时候,可以使用ESX服务控制台里内置的命令行安全文件拷贝协议工具,但是使用一些第三方的工具会更简单,例如Veeam的FastSCP或者WinSCP。这是一种手动的复制方式,如果在给虚拟机打补丁或者升级之前,你需要一个虚拟机的特别备份,这种方式就很有用。当然,有办法可以自动化这一过程。Veeam的FastSCP自带的调度程序可以安排拷贝任务在特定时间自动运行。在这样做之前,你需要有一个目标磁盘,例如工作站/服务器上的一块本地磁盘,或者一个从服务器上映射来的网络盘。在下面的例子中,将使用FastSCP从ESX主机中拷贝一个虚拟磁盘到PC工作站上的本地磁盘。
1.如果你没有安装过FastSCP,可以进行下载并安装。
2.如果已有快照,最好在复制虚拟磁盘前先删掉它。然后,或者将虚拟机关闭或者创建一个新的快照,以保证虚拟磁盘变成只读的。
3.打开FastSCP,选择File,Add Server,然后将你的源ESX主机添加进去,或者添加一个vCenter服务器,这样它所管理的所有主机都会被自动添加。点击Finish结束Add Server向导。
4.连接到你添加的主机之后你可以浏览它的文件系统,包括所有它能访问到的VMFS卷。在里面找到你要备份的虚拟机所在的文件夹。如果你只想备份虚拟磁盘文件,你需要备份较大的-flat.vmdk文件和较小的磁盘描述文件。除了较大的文件包含-flat字样之外,这两个文件的文件名应该相同。不要拷贝任何文件名带有–delta或者-0000001字样的文件,因为这些文件是快照文件。你可以备份所有的小文件,但是恢复虚拟机的时候它们并不是必需的,因为虚拟机的实际数据是存在vmdk文件中的。如果想要理解所有虚拟机的组成文件的详细描述,请参考我的另一篇小技巧《理解VMware虚拟机组成文件》。要备份虚拟磁盘的话,按住Ctrl键并点击文件以选择文件,然后右击选择Copy,(见下图,点击可放大)。
5.在左侧的面板里选择另一个ESX主机或者在“我的电脑”里选择一个本地/网络盘,然后再右侧面板中右击并选择“粘贴”,如下图所示(点击可放大):
6.如下图(点击可放大),复制将开始进行。复制结束后,你就有了一个虚拟磁盘的备份拷贝,然后你就可以将虚拟机开机或者删除快照。
之前说过,你还可以使用vmkfstools服务控制台工具来向VMFS卷中拷贝虚拟磁盘。这是一个VMware开发的操作虚拟磁盘文件的特殊工具,它可以和VMware专有的VMFS卷一起工作。在这个工具中使用 -i 参数,可以在VMFS卷上任何你指定的目录中创建一个源虚拟磁盘文件的克隆。你也可以指定该工具将磁盘文件分割成2GB大小的多个文件,只需要带上 -d 2dbsparse 参数就行了,这样你就可以方便地将文件拷贝到其他的系统上,或者拷贝到诸如DVD-ROM或者U盘之类的移动介质上。但是你没法将这种文件格式的虚拟机启动起来,首先你需要用vmkfstools将它们导入成为thick或者thin磁盘格式。要创建虚拟磁盘的备份拷贝,只需如下几步:
1.登入ESX服务控制台。
2.如果已有快照,最好在复制虚拟磁盘前先删掉它。然后,或者将虚拟机关闭或者创建一个新的快照,以保证虚拟磁盘变成只读的。
3.在VMFS卷中切换到你要备份的虚拟机所在的文件夹。
4.你可以键入vmkfstools并不带参数,这样就可以看到可选参数和命令格式。创建虚拟磁盘克隆的命令格式为 vmkfstools -i 。目标磁盘可以是相同或者其它VMFS卷上的任何文件夹。注意:因为vmkfstools是专门用来操作虚拟磁盘的,所以它能够识别组成虚拟磁盘的两个文件,因此你只需指定那个比较小的不带-flat的文件名。克隆进程就会开始。
5.克隆进程结束之后,你会看到一个新的磁盘文件,这个文件是原虚拟磁盘的完整备份,你现在可以启动还有最后一种办法来备份虚拟磁盘文件,你可以使用VI客户端内置的Datastore Browser工具。从ESX 3.5之后,增强的Datastore Browser就包括了在VMFS卷中拷贝、重命名和删除文件的功能。如果你选择一个ESX主机,然后选择summary页,可以右击一个列出来的datastore,然后选择Browse Datastore选项。你也可以把VI客户端的Inventory视图改成Datastores,就可以看到所有Datastore的列表。你可以通过如下步骤使用Datastore Browser来创建虚拟磁盘的备份拷贝。
1.打开VI客户端并连接到ESX主机或者vCenter服务器。
2.如果已有快照,最好在复制虚拟磁盘前先删掉它。然后,或者将虚拟机关闭或者创建一个新的快照,以保证虚拟磁盘变成只读的。如果你不这样做,你在尝试复制磁盘的时候会得到一个错误信息。
3.右击源虚拟机所在的datastore并选择Browse Datastore选项。
4.你会看到一个虚拟机文件夹的列表;双击你要备份的虚拟机,然后你会看到那个文件夹中所有文件的列表。Datastore Browser有一点不同的是,它会以比较友好的格式显示虚拟磁盘文件,尽管每个虚拟磁盘存在两个文件,它只显示其中的一个。如果你右击一个虚拟磁盘,你会看到各种选项,包括你在下图可以看到的Download和Copy。Download(下载)选项允许你将虚拟磁盘下载到工作站的本地或者网络盘上。Copy(复制)选项则允许你复制虚拟磁盘,然后你可以将其粘贴到其他文件夹上,该文件夹可以在相同的VMFS卷也可以在其他VMFS卷上。(图片点击可放大)
5.如果你希望将其拷贝到另一个VMFS卷上,在选择Copy选项之后关闭Datastore Browser,然后在另一个VMFS卷上再次打开。在里面找到你想复制到的文件夹,然后右击并选择Paste选项,如下图(点击可放大)。请注意Datastore Browser有一个,不允许向源虚拟磁盘所在的同一个目录进行粘贴。
6.操作完成后,你就有了磁盘文件的一个新拷贝,你现在可以启动虚拟机或者删除快照了。
现在你创建了虚拟磁盘的备份拷贝,如果要恢复它或者需要访问其中的文件该怎样做呢?有几种方法可以做到:
-如果你需要做一个虚拟机的裸硬件(完全)恢复,你可以关闭虚拟机,将虚拟磁盘文件拷贝回VMFS卷,在虚拟机中删除现有的磁盘,添加一个新磁盘,然后选择你恢复的虚拟磁盘文件。你也可以创建一个新的虚拟机,然后指定其使用你恢复的磁盘文件,随后删除原有的虚拟机。
-如果你希望恢复单个文件,最简单的办法是将虚拟磁盘的备份拷贝回VMFS卷(如果它不是已经在那里了),然后在原虚拟机或者其他虚拟机中将其添加为额外的磁盘,之后你就可以访问新加的磁盘,找到你想要的文件,并将其恢复到原来的位置了。你也可以创建一个新的虚拟机并指定其使用已有的磁盘,将其启动并拷贝出需要恢复的文件。
在这些方法之外,还有其它的办法可以克隆一个虚拟机来达到备份的目的,比如使用vCenter的服务器克隆功能和任务调度功能,或者使用vCenter的Converter转换应用。具备多种备份方式的灵活性是虚拟环境的最大优势之一。对整个虚拟磁盘创建快速备份拷贝是很好的保险手段,特别是在做有潜在危险的操作之前,例如扩大虚拟磁盘或者操作系统分区时。
虚拟机或者删除快照了。
