使用Clonezilla克隆软件将物理服务器转换成虚拟服务器

来源:岁月联盟 编辑:zhuzhu 时间:2009-05-23
使用Clonezilla克隆软件将物理服务器转换成虚拟服务器内容简介:本文介绍如何使用开源的Clonezilla Live 克隆软件将物理服务器转换成虚拟服务器。具体而言,就是如何使用基于映像的方法将物理服务器迁移到虚拟服务器。 现在,让我们看看如何使用 Clonezilla L

    在本文中,学习如何使用开源的 Clonezilla Live 克隆软件将物理服务器转换成虚拟服务器。具体而言,就是如何使用基于映像的方法将物理服务器迁移到虚拟服务器。

    步骤 1. 克隆系统分区

    首先,从 Clonezilla Live CD 启动物理服务器。

    Clonezilla 提供了一些启动选项。例如,可以选择 To RAM 选项将 Debian Live 和 Clonezilla 加载到内存中,并将 CD-ROM 用于其他应用。选择默认设置,您将得到语言和键盘布局设置。使用默认设置。

    接下来选择是否使用基于 GUI 的备份和恢复向导或 Debian shell,用于高级访问和操作。除非您是一名有经验的用户,否则使用 Start_Clonezilla 选项。您将在 将映像恢复到虚拟机 中了解如何使用 shell.

    现在列出了两个有关克隆类型的选项:

    ●  device-device 用于设备到设备之间的直接克隆。

    ●  device-image 用于设备到映像之间的备份。

    由于您要将一个物理系统转换为一个虚拟机,因此 device-image 类型是最佳选择。

    接下来,必须选择在其中写入或从其中恢复备份映像的映像目录,如图 1 所示。ssh-server、samba-server 和 nfs-server 选项适合有网络连接但本地磁盘空闲空间或备份映像不可用的情况。在我们的例子中,我们将克隆系统分区并将其保存到相同硬盘中的另一个分区中。如果选择 local_dev,您将有机会选择 USB 设备作为 Clonezilla 映像库。

    Clonezilla 技巧

    要实现成功的迁移,在遵循本文介绍的步骤时,应当牢记这些技巧,并作为总结经验加以参考。

    1、确保映像库具有足够的空间来存储分区内的数据。

    2、可以将映像划分到多个卷文件,避免最大文件大小的限制。

    3、Clonezilla 不支持从大硬盘和分区中将映像恢复到较小的磁盘和分区。

    4、如果 Clonezilla Live 对所有 VMware 版本都不支持 SCSI 磁盘,那么在创建 VM 时应使用 IDE 类型。

    5、要在 Clonezilla Live shell 下恢复映像,您需要以根用户身份登录。

    6、要恢复被克隆的分区映像,目标虚拟磁盘必须以格式化的形式呈现给 Clonezilla.

    7、要成功地实现 Windows? 迁移,您需要精通 HAL 和并了解 sysprep 等工具。

   图 1. 映像库选项

映像库选项


    您现在需要选择将被链接到映像库 /home/partimag 中的位置,这取决于内部和外部的(USB)插入磁盘。映像实际上是位于 /home/partimag 下目录中,它包含了所有有关映像的信息和数据文件。在本例中,系统分区 /dev/sda1 将被作为映像保存到 /dev/sda5 中。因此,将选择 sda5 并将其挂载为 /home/partimag/,如图 2 所示。


    图 2. 映像分区

映像分区


    确保映像库具有足够的空闲空间来存储系统分区内的数据。

    如图 3 所示,可以为映像设备中的 Clonezilla 映像确认主目录。


    图 3. Clonezilla 模式

Clonezilla 模式


    图 2 还展示了额外的命令信息,帮助使用关于 /home/partimag 空间使用报告挂载映像设备和当前的文件系统布局。在执行这一步骤之后,选择计划在 Clonezilla Live 中使用的模式。可以选择保存或恢复整个本地磁盘或单独的分区。对于磁盘备份,选择第三项 saveparts

    选择模式之后,将要求您输入要进行备份的映像名(Sys01-2009-02-23-img)和源设备(/dev/sda1)。下面的图展示了映像创建过程的高级选项。由于 Clonezilla 支持不同的文件系统格式,并且集成了 ntfsclone、partclone、partimage 和 dd 等分区克隆工具,可以为当前的文件系统设置要使用的工具的优先顺序。如果不了解将要克隆的文件系统的话,那么保持默认设置。-q (ntfsclone > partimage > dd) 也是默认设置,非常适合我们的基于 NTFS 的备份。

    图 4 展示了可以进行设置以优化克隆的其他参数。


    图 4. 其他 Clonezilla 高级参数:克隆

其他 Clonezilla 高级参数:克隆


    对于 Windows 系统映像,-rm-win-swap-hib 选项非常有助于保存备份和恢复时间,它的做法是排除 swap 和 hibernation 文件。如果需要将保存后的映像传递到另一个位置,并且需要在恢复映像时检查映像的完整性,那么建议使用 -gm 或 -gs 选项。

    Clonezilla Live 还允许您在选择压缩方法时考虑到效率和期间的一些注意事项。一些文件系统不支持大于 2G 的文件,因此,可以通过将映像分解到多个卷文件,从而设置最大文件大小。

    最后,可以使用 -p 参数指定一个动作,表示要在克隆过程结束后执行的动作。

    完成设置后,现在来查看操作并确认您的选择。备份和恢复过程都使用 ocs-sr 工具,而带有相应参数的 ocs-sr 命令则作为记录提供,供以后使用。

    现在,坐下来等待备份完成。完成备份并启动系统之后,将映像目录从物理服务器传递到一个位置,这个位置将作为虚拟机的恢复源。

   步骤 2. 准备虚拟机

    从现在开始,我们将在 VMware Server 内创建一个虚拟机作为系统迁移的目标。确保主机环境与 VMware Server 兼容并能满足 guest 操作系统需求和限制。由于虚拟机将使用与主机相同的处理器作为基准,因此要求我们克隆的主机环境和物理服务器具有兼容的处理器类型。

    首先,使用 VMware New Virtual Machine Wizard 创建虚拟机。在此过程中,选择和物理服务器中已克隆的操作系统相匹配的操作系统版本。同时,需要创建一个虚拟磁盘,它的大小必须等于或大于原始的已克隆的系统所在的分区,因为 Clonezilla 不支持将映像从大硬盘或分区恢复到更小的硬盘或分区。然而,在 Clonezilla Live 恢复过程中,您将能够根据初始磁盘布局将映像恢复到大硬盘。


    图 5. 指定虚拟机的磁盘容量

指定虚拟机的磁盘容量


    注意:对于早期 VMware Server 版本,Clonezilla Live 内核可能不支持 SCSI 磁盘。在这种情况下,创建虚拟机时使用 IDE 类型的虚拟磁盘。

    其次,将虚拟 CD-ROM 设备修改为对虚拟机使用 Clonezilla Live ISO 映像,如图 6 所示。


    图 6. 在 VM 中使用 Clonezilla Live ISO 映像

在 VM 中使用 Clonezilla Live ISO 映像


    第三,将前面小节中的系统映像文件放到主机服务器的备用磁盘中,即 PhysicalDrive 1 的 Partition 0。由于 VMware Server 支持在主机系统上进行直通式(pass-through)SCSI 驱动访问,因此可以为虚拟机添加另一个磁盘,将 PhysicalDrive 1 的 Partition 0 直接附加到 VMware 中。在恢复阶段,这个设备将呈现给 /home/partimag。


    图 7. 将系统映像附加到分区

将系统映像附加到分区


    现在,您已经创建了一个精简的虚拟机,接下来将从 Clonezilla Live 启动虚拟机。

   步骤 3. 将映像恢复到虚拟机

    当虚拟机从 Clonezilla Live 映像启动之后,Clonezilla Live 为恢复提供了和备份过程相同的基于 GUI 的向导界面,引导您选择模式。在本例中,我们将直接输入基于 Debian 的 Clonezilla Live shell,以选择一个手动恢复。


    图 8. Clonezilla Live shell

Clonezilla Live shell


    要在 Clonezilla Live shell 下恢复映像,必须以根用户身份登录;随后可以完全地访问 Clonezilla。


    清单 1. 成为根用户

 
		user@debian:~$ sudo su -debian:~#

    现在,需要为恢复确定一个目标磁盘以及将要放置源映像的磁盘。清单 2 展示了两个本地硬盘。


    清单 2. 查看磁盘信息

				debian:~# fdisk -lDisk /dev/sda: 42.9 GB, 42949672960 bytes255 heads, 63 sectors/track, 5221 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x00000000Disk /dev/sda doesn't contain a valid partition tableDisk /dev/sdb: 160.0 GB, 160039272960 bytes255 heads, 63 sectors/track, 19457 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0xa0bea0beDevice Boot         Start       End      Blocks       Id    System/dev/sdb1            1            19457   156288321   7      HPFS/NTFS

    我们将 /dev/sda 虚拟磁盘创建为恢复的目标磁盘;它尚未格式化。/dev/sdb 是主机服务器的 PhysicalDrive 1,我们将把它作为直通式 SCSI 磁盘直接附加到虚拟机;我们将在其上放置克隆后的系统映像。

    要恢复克隆后的分区映像,必须将格式化后的目标虚拟磁盘提供给 Clonezilla。您可以使用 fdisk 工具将标签写到虚拟磁盘上。该过程如清单 3 所示。


    清单 3. 格式化目标磁盘

				# fdisk /dev/sdaDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0xee2955bc.Changes will remain in memory only, until you decide to write them.After that, of course, the previous content won't be recoverable.The number of cylinders for this disk is set to 5221.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs   (e.g., DOS FDISK, OS/2 FDISK)Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)Command (m for help):Command action   e   extended   p   primary partition (1-4)pPartition number (1-4): 1First cylinder (1-5221, default 1):Using default value 1Last cylinder or +size or +sizeM or +sizeK (1-5221, default 5221): Using default value 5221Command (m for help):Command (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.[ 866.679048] sd 0:0:0:0: [sda] 83886080 512-byte hardware sectors (42950 MB)[ 866.682658] sd 0:0:0:0: [sda] Write Protect is off[ 866.683795] sd 0:0:0:0: [sda] Cache data unavailable[ 866.683822] sd 0:0:0:0: [sda] Assuming drive cache: write through[ 866.686443]  sda: sda1[ 866.695530] sd 0:0:0:0: [sda] 83886080 512-byte hardware sectors (42950 MB)[ 866.698278] sd 0:0:0:0: [sda] Write Protect is off[ 866.699422] sd 0:0:0:0: [sda] Cache data unavailable[ 866.699495] sd 0:0:0:0: [sda] Assuming drive cache: write through[ 868.702058]  sda: sda1 Syncing disks.

    我们可以使用清单 3 所示的默认值。这一次,不需要关心分区类型,因为 Clonezilla 将在映像恢复过程中重新创建它。

    和备份过程一样,必须将一个可写设备或空间挂载为 /home/partimag,Clonezilla 随后将在 /home/partimag 下搜索克隆后的映像目录。如果要将分区 /dev/sdb1 中的映像恢复到新创建的分区 /dev/sda1 中,必须使用写权限将 /dev/sdb1 挂载到 /home/partimag。注意,/dev/sdb1 在主机服务器上是一个 NTFS 文件系统,它可能是公开的,因此要成功地挂载它,可能需要使用一个强制选项。参见清单 4。


    清单 4. 将映像设备挂载到 /home/partimag

				debian:~# mount -t ntfs-3g /dev/sdb1 /home/partimag -o forcedebian:~# ls /home/partimagSys01-2009-02-23-img

    当准备好 /home/partimag 和目标分区后,需要选择一种最佳方式来为您的环境恢复映像。和备份一样,Clonezilla 也为映像恢复提供了各种高级和灵活的选项。图 9 展示了恢复参数及其含义。


    图 9. 更多 Clonezilla 高级参数:恢复

更多 Clonezilla 高级参数:恢复


    对于 Windows 系统映像恢复,必须将启动头部(header)写入到目标磁盘中。为此,推荐使用 -j0(使用 dd 创建分区表)和 -t1(客户机从 syslinux 恢复预构建的 MBR)。hnX PCX 为 0 或 1)选项可以确保您的环境拥有一个惟一的 Windows 机器名。如果您不希望保持当前的目标分区布局,也可以尝试使用 -k1 或另一个分区参数来创建不同的分区表。

    清单 5 从 /home/partimag(/dev/sdb1)将映像 Sys01-2009-02-23-img 恢复到目标设备 /dev/sda1 中。


    清单 5. 使用命令行恢复映像

				debian:~# /opt/drbl/sbin/ocs-sr -e1 auto -c -t1 -r -j3 -cm -j0 -p reboot restoreparts             "Sys01-2009-02-23-img" "sda1"

    图 10 展示了在确认选项后您将收到的摘要和进度更新。在此之后,克隆后的系统将被放到虚拟机中。


    图 10. Clonezilla 恢复摘要和进度

Clonezilla 恢复摘要和进度


    恢复完成后,可以看到系统将从虚拟机中启动。为了获得更好的性能,需要为虚拟操作系统安装 VMware Tools。

    要确保在 Windows 上成功完成迁移,应当精通 HAL 并能够使用 sysprep 等工具来配置虚拟服务器,使它支持虚拟机环境。

    结束语

    本文向您展示了如何使用基于映像的方法和开源工具完成物理-虚拟系统的迁移。注意,本文介绍的步骤仅用作参考;由于不同的环境之间存在差异,您使用的迁移方式可能与本文介绍的方式有所不同。