建站服务

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

如今,驱动数据中心的两大概念 — 经济和环保 — 使服务器虚拟化成为 IT 世界的一个热门话题。许多硬件和软件供应商都提供了解决方案。虚拟解决方案可以带来这些优势:您可以在服务器之间轻松地迁移虚拟机,虚拟机可以配置为克隆映像以供复制使用(例如,在软件开发和测试期间使用)。

实现虚拟化服务器整合的具体过程取决于您的起点:

●  如果您是从零开始设计系统,那么也将从头实现虚拟化。

●  如果您的系统已经拥有物理状态,那么将从物理环境迁移到虚拟环境中。

我将这第二个过程称为物理-虚拟迁移,即 PV2,并且这正是本文要论述的主题。在实施 P2V 迁移的过程中,有一些(手动和自动)方法通常可以提供帮助。我将介绍这些方法,并向您展示如何使用 Clonezilla Live,这是一种基于映像的解决方案,它能将物理服务器转换为虚拟机。

使用 Clonezilla Live,首先从物理服务器创建一个系统映像,然后使用启动 CD 将映像恢复到虚拟机的硬盘中。Clonezilla Live 使用起来非常便捷,并且可以为软件开发人员、系统管理员以及希望在维护初始副本的同时分析系统副本(并避免可能的硬件组配不当问题)的工程师提供帮助。

注意:虚拟和物理系统的硬件和软件跨越的范围很广,因此本文介绍的步骤仅作为一个参考。您可能需要调整这些步骤,以使它们匹配您的迁移。

Clonezilla Live 简介

Clonezilla 是一个开源的与 Norton Ghost 类似的复制和克隆解决方案,可以使用它克隆特定的分区或整个磁盘。它有两个版本:Clonezilla SE(服务器版本)和 Clonezilla Live.Clonezilla SE 最适合跨越网络同步备份和恢复多个服务器。Clonezilla Live 是针对单独机器克隆的更加轻量级的构建。

Clonezilla Live 是 Debian Live 和 Clonezilla 的结合;它提供以下特性和优点:

●  它只克隆硬盘中被使用的块。

●  提供了多个文件系统甚至 LVM 支持,包括面向 GNU/Linux 的 ext2、ext3、xfs、jfs 和 LVM2;面向 MS Windows 的 FAT、NTFS;以及面向 Mac OS 的 HFS+.

●  要设置 Clonezilla SE,不需要在 Linux 上使用无磁盘的远程启动服务器(DRBL)。

●  支持 CD/DVD、USB 闪存/硬盘和 PXE 启动。

●  可以针对启动和恢复过程进行定制。

Clonezilla Live 使用 Partition Image、ntfsclone、partclone 和 dd 等现有工具来克隆分区或磁盘。对于未列出的文件系统,Clonezilla 使用 dd 复制所有正在使用和未使用的块。

虚拟化和系统迁移工具

在将物理服务器迁移到虚拟机时,可能会和在物理服务器之间迁移一样,受到一些限制。例如,您不能够将一个 64 位系统映像迁移到一个 32 位平台。在将 Windows 映像恢复到虚拟机时,很可能还会遇到 Hardware Abstract Layer (HAL) 问题。

许多免费或商业工具可以帮助实现物理和虚拟世界之间的系统迁移(PlateSpin PowerConvert、VMware Convert、Microsoft? Virtual Server Migration Tookit 和克隆软件);这些迁移工具还可以解决由于物理服务器和虚拟机之间的硬件不匹配引起的问题。它们的作用之一就是在系统启动阶段将必需的驱动程序传递给操作系统内核并初始化这些驱动程序。当然,大部分 P2V 工具的作用远不止仅执行单机迁移。

VMware Server 是一个免费的专用平台,在 Linux 和 Windows 主机上提供了对多种客户操作系统类型的支持(包括 Windows、Linux、Solaris 等等)。作为一种全面的虚拟化解决方案,运行在 hypervisor 上的虚拟机监视器(VMM)为虚拟机提供了所有可用的硬件资源类型,包括虚拟 BIOS、虚拟内存、虚拟 SCSI 控制器、虚拟网卡,等等。由于客户操作系统与底层硬件完全分离,因此不需要修改就可以运行。

现在,让我们看看如何使用 Clonezilla Live 将 Windows 系统映像克隆到 VMware Server 托管的虚拟机上,从而实现 P2V 迁移。

步骤 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 -l

Disk /dev/sda: 42.9 GB, 42949672960 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0x00000000

Disk /dev/sda doesn’t contain a valid partition table

Disk /dev/sdb: 160.0 GB, 160039272960 bytes

255 heads, 63 sectors/track, 19457 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0xa0bea0be

Device 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/sda

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building 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)

p

Partition number (1-4): 1

First cylinder (1-5221, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-5221, default 5221):

Using default value 5221

Command (m for help):

Command (m for help): w

The 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 force

debian:~# ls /home/partimag

Sys01-2009-02-23-img

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

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

更多 Clonezilla 高级参数:恢复

对于 Windows 系统映像恢复,必须将启动头部(header)写入到目标磁盘中。为此,推荐使用 -j0(使用 dd 创建分区表)和 -t1(客户机从 syslinux 恢复预构建的 MBR)。hnX PC(X 为 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 等工具来配置虚拟服务器,使它支持虚拟机环境。

结束语

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

建站服务