Clonezilla:构建、克隆、重复

作者:Jeramiah Bowling

克隆实践在许多 IT 部门中是一种经过时间考验的标准操作程序。它可以协助迁移和构建测试/实验室环境,并增强系统恢复流程。由于克隆的巨大实用性,也存在一个健康的商业克隆工具市场,每种工具都有其独特的功能。不幸的是,大多数商业工具对 Linux 的支持有限。Clonezilla 诞生了,它是由台湾国家高性能计算中心 (NCHC) 软件实验室在 GPL 下开发的开源克隆工具套件,与 Linux 发行版完美配合。Clonezilla 拥有高性能克隆、简化的部署以及对多种系统类型(Windows、Linux 和 VMware)的支持,所有这些都使其成为商业竞争对手的有力竞争者。

在本文中,我描述了两种常见的克隆场景,在这些场景中,Clonezilla 可以有效地替代商业克隆套件。在第一种场景中,我在 Linux 服务器上安装 Clonezilla 服务器版 (SE) 和无盘远程启动 Linux (DRBL),以用作企业中的中央映像解决方案。在第二种场景中,我重点介绍 Clonezilla 的灾难恢复 (DR) 功能,使用 Live 版本为关键系统创建自定义恢复解决方案。

对于第一种场景,我选择在 CentOS 5.5 服务器上部署 DRBL 和 Clonezilla,尽管这两个程序都可以在多种发行版上运行。在选择服务器硬件之前,您需要做出两个决定。第一个是您希望 DRBL 使用多少个网络。建议在非生产网络段上运行 DRBL 服务。因此,DRBL 最适合在具有多个 NIC 的服务器上运行,特别是其中一个 NIC 连接到您的生产网络,而第二个 NIC 连接到专用的克隆网络。Clonezilla 是可扩展的,因此您可以在服务器中拥有多个 NIC,专用于不同的映像段。这是测试实验室和教室环境的常见网络设计。您可以使用带有别名的单个 NIC 用于您的映像网络,但是您将在一个网卡上运行两个 IP,这是不推荐的。为了简化部署,让我们在服务器中使用两个 NIC,一个插入生产网络,第二个插入映像网络。

在确定网络配置后,您需要决定将克隆映像存储在哪里。如果您想将您的 DRBL/Clonezilla 服务器用于存储,您可能需要计划更大的硬盘驱动器或存储阵列,以容纳您的映像库的大小。您也可能拥有现有的高容量高速存储网络,如 SAN,当一次克隆多个映像时,它在网络上表现更好。在这种情况下,您可以将远程挂载点与您的网络存储一起使用,以存放映像。我在这里保持简单,使用了服务器中直接连接的硬盘驱动器,因为它有足够的空间容纳一切。

硬件就位后,使用来自发行版镜像之一的安装映像安装 CentOS。选择您需要的任何安装选项,但建议您禁用任何防火墙和 SELinux。CentOS 安装完成后,从项目的 SourceForge 站点下载并安装 DRBL rpm 包。当 rpm 完成安装后,打开终端控制台并运行以下命令以完成 DRBL 安装并创建 PXE 映像客户端文件

/opt/drbl/sbin/drblsrv -i

输入上述命令后,您将看到一系列提示。为了我们的目的,您可以接受所有默认值,但请务必阅读它们以了解 DRBL 安装期间发生的情况。因为我使用了 i386 版本的 CentOS 发行版,所以我必须升级到 i686 版本,DRBL 才能开始安装。当此过程完成后,输入以下命令来配置 DRBL 服务器

/opt/drbl/sbin/drblpush -i

这将以交互模式启动 DRBL 配置脚本。与 drblsrv 脚本一样,您可以接受大多数默认选项。当提示配置网络时,将 eth0 分配为公共互联网 (WAN) 连接。之后,脚本找到的任何其他活动 NIC 都将被放置在它们自己的 DRBL 段上。然后,系统会提示您输入您要使用的 IP 地址的初始编号。这是您的 DRBL 客户端将从 DHCP 收到的 IP 地址的最后一个八位字节中的起始编号。在下一个提示中,输入您要与此服务器一起使用的 DRBL 客户端的数量。此数字将递增服务器上使用的 IP 地址。例如,如果您输入 100 作为第一个数字,12 作为第二个数字,您可以使用最多 12 台客户端机器,分配的 IP 地址为 192.168.162.100–192.168.162.111 与您的映像服务器。当所有提示都得到回答后,您将看到 DRBL 网络环境的可视化表示(图 1)。按 Enter 继续。当提示 DRBL 和 Clonezilla 模式时,选择默认的 Full DRBL 和 Full Clonezilla 模式。然后,它会询问您存储映像的目录。此目录可以是本地或远程存储。根据我们之前的决定,将默认值保留为名为 /home/partimag 的本地文件夹。在这些提示之后,您可以接受其余的默认值。当您回答完所有提示后,脚本将为配置中分配的每个 IP 地址创建 DRBL 客户端实例(基于您的发行版)。DRBL 配置现已完成。

Clonezilla: Build, Clone, Repeat

图 1. drblpush 脚本显示网络设计

接下来,从控制台运行以下命令以启动 Clonezilla 设置脚本

/opt/drbl/sbin/dcs

从第一个屏幕中选择“所有客户端”。将模式设置为“Clonezilla-start”,然后设置为“初学者模式”。在结果屏幕上,选择“在客户端中选择-在客户端中保存/恢复”。这使您可以灵活地在客户端选择任一操作。您可以接受其余的默认值,直到脚本退出。您可能希望进一步试验这些选项,因为它们可以帮助简化克隆过程。要更改 DRBL 或 Clonezilla 服务器的配置,只需再次重新运行 drblsrv、drblpush 或 dcs 脚本。如果您进行了涉及 PXE 设置的更改,最好始终清除任何现有的 PXE 映像配置文件(drblpush 脚本中的提示),以确保您的新设置覆盖任何以前的设置。

服务器就位后,让我们继续创建和克隆基本桌面映像。在构建基本映像时,必须考虑许多事项。首先,仅分区/使用最少量的存储空间,以适应您计划克隆的最小驱动器。Clonezilla 支持将克隆映像恢复到更大的驱动器,但不会恢复到比映像中找到的驱动器更小的驱动器。如果您的目标磁盘大于正在恢复的映像,您可以使用免费的分区工具(如 GParted 或 PartedMagic)来扩展恢复的操作系统,以使用本地磁盘上的一些或所有可用空间。GParted 很不错,因为它可以添加到 PXE 服务器或从 Live CD 运行(图 2)。

Clonezilla: Build, Clone, Repeat

图 2. 运行中的 GParted

第二个注意事项是在基本映像和目标机器之间尽可能使用类似的硬件。从基本机器到目标机器的硬件差异可能会在克隆时导致许多问题。某些项目(如内存和硬盘驱动器)并不重要,但更换系统组件(如主板和处理器)可能会导致一系列问题。对于大多数人来说,这不是问题,因为许多管理员已经在高度标准化的环境中工作。

第三也是最后一点,在原始机器或“裸机”上构建您的操作系统。如果经验教会了我什么,那就是从一张白纸开始。在基本映像上安装桌面操作系统后,仅安装部署绝对必要的程序,并在克隆前避免安装任何防病毒软件、备份代理或桌面管理客户端。任何需要唯一标识符的内容都应从基本映像中删除。安装所有必需的软件后,请确保机器干净地关闭。对于我的基本映像,我构建了一个带有 OpenOffice.org 的 vanilla 安装的 openSUSE,用于在我的目标机器上重新部署。

在基本机器上准备好操作系统并关闭电源后,您需要使其与 DRBL 服务器通信。您可以使用预启动执行环境 (PXE,发音为“pixie”) 来完成此操作。PXE 为一个在本地内存中运行的轻量级操作系统提供了一个 shell,并提供对已安装操作系统之外的本地数据的直接访问 - 这是大多数克隆程序的先决条件。如果目标硬件上尚未启用 PXE,则可以在大多数主板的 BIOS 中启用 PXE。启用后,将基本机器连接到 DRBL 网络段,并通过在启动顺序中设置它或使用启动菜单(通常通过在启动加载程序屏幕之前按下功能键来访问)将其从源启动。

从 PXE 启动后,客户端应从 DRBL 服务器(也运行 DHCP)获取地址,并向您显示 GRUB 加载程序屏幕(图 3)。保留默认选择“Clonezilla:稍后选择保存或恢复”,以通过 TFTP 将 Clonezilla 加载到内存中。加载 Clonezilla 后,选择以下选项以在服务器上捕获您的基本映像:device-image、初学者模式和 savedisk。为映像提供名称,然后选择本地磁盘作为源。当提示时,确认您要运行脚本并捕获映像。Clonezilla 将启动适当的克隆程序(partclone、partimage、ntfsclone、dd)并开始将磁盘捕获到映像(图 4)。映像捕获完成后,关闭基本机器的电源。

Clonezilla: Build, Clone, Repeat

图 3. DRBL 服务器通过 PXE 推送的 GRUB 屏幕。

Clonezilla: Build, Clone, Repeat

图 4. 将磁盘捕获到映像

将您的映像存储在服务器上后,您可以同时克隆最多 12 个终端系统。通过 PXE 将克隆映像恢复到新机器的过程与捕获它的过程相同,不同之处在于您需要选择 restore-disk 选项,并且如果您在服务器上存储了多个映像,则需要指定要恢复哪个映像。根据您的映像中包含的操作系统,恢复后可能需要进一步的步骤。至少,您需要更改每个新克隆机器的主机名。如果您正在恢复 Microsoft 操作系统,则需要更改安全标识符 (SID),以免在您的域中引起问题。您可以通过在克隆前使用 sysprep 实用程序来避免 Windows XP 客户端及更高版本出现此问题。

只要一切顺利,您现在就拥有了一个可工作的 DRBL 和 Clonezilla SE 服务器,您可以根据需要经常使用它来大规模克隆网络上的设备。

对于第二种场景,让我们使用 Clonezilla Live 版本为关键系统创建恢复 CD/DVD。这对于近线备份和/或异地存储非常方便,但如果您缺乏使用 DRBL 和 PXE 的网络基础设施,它也可以兼作大规模克隆系统的方法。如果您是 OEM 构建商,您可以像大型 PC 制造商多年来所做的那样,以这种方式使用 Clonezilla 创建恢复 CD,以便随系统一起提供。恢复光盘还可以补充变更管理流程 - 例如,如果您有一台需要高可用性的服务器,并且需要进行重大软件升级。通过在升级前捕获服务器的当前状态,您就拥有了一个可行的回滚计划,以防升级出现问题。

恢复光盘创建过程包括两个部分:获取机器的备份映像,然后创建 CD 本身。与使用 Clonezilla Live 版本捕获映像相同的注意事项适用于早期场景,但有两个主要区别。首先,要恢复的系统磁盘或分区必须适合单个 CD 或 DVD,以及创建光盘所需的所有文件。使用双层 DVD 意味着您最多可以使用大约 8.54GB。这并不是一个巨大的问题,因为如前所述,您可以使用 GParted 或其他工具在克隆后扩展恢复的分区。其次,与可能多次恢复的基本系统不同,您需要尽可能多地配置此主机,以最大限度地减少恢复时间。如果您因灾难性事件而遭受服务器完全丢失,并且被迫使用恢复光盘,您不希望花费额外的时间来编辑配置。这对于不经常更改的静态服务器或具有高度独特且因此耗时的配置的服务器非常有效。您可能需要为动态服务器(如数据库服务器)转移此方法,但您仍然可以使用恢复光盘来减少恢复时间。在这种情况下,构建服务器,安装和配置数据库引擎(例如,MySQL),无需任何数据库并捕获它。然后,如果您需要返回到恢复映像,则完全恢复所需的唯一额外步骤是将数据库恢复到新恢复的操作系统上。对于我的测试场景,我使用了在 CentOS 5.5 上运行的 DNS 服务器作为我的关键系统。

要开始使用,请从 SourceForge 下载 Clonezilla Live .iso 文件并将其刻录到 CD。将 Clonezilla Live CD 放入您的系统并从中启动(图 5)。在启动菜单中,接受 Clonezilla Live 的默认选项。当提示时,接受先前为捕获映像选择的相同 Clonezilla 选项(启动 Clonezilla、device-image 等),当提示 /home/partimag 的挂载点时,选择要克隆的本地磁盘以外的其他位置。我使用了 USB 硬盘驱动器,所以我选择了 local_dev 选项。将选项“选择存储映像文件的顶级目录”保留为默认值,以将其存储在您选择的存储设备的根目录中。使用先前为捕获映像选择的相同选项完成选择。当克隆过程完成后,按 Enter 并选择“(3) 重新开始”返回控制台。

Clonezilla: Build, Clone, Repeat

图 5. Clonezilla Live 启动屏幕

捕获映像后,您现在可以构建恢复光盘。选择与上面相同的选项以启动 Clonezilla(device-image、local-dev、将 USB 挂载为 /home/partimag),然后选择“初学者模式”和“recovery-iso-zip Create_recovery_Clonezilla_Live”(图 6)。选择刚刚捕获的映像作为要恢复的映像,并确认要恢复的目标设备与关键系统的挂载标签(即 sda、hda1)匹配。将语言和键盘映射选项保留为默认值。选择 .iso 作为恢复文件类型。如果提示目标 .iso 文件太大而无法放入 CD,请回答“是”以仍然创建文件。Clonezilla 将开始在 USB 驱动器的根目录中构建 .iso 文件,并将捕获的映像包含在 .iso 映像中(图 7)。在该过程结束时,使用提示关闭计算机电源。根据大小,将 USB 硬盘驱动器上的生成的 .iso 刻录到 CD 或 DVD。

Clonezilla: Build, Clone, Repeat

图 6. 在 Clonezilla Live 中选择恢复模式选项

Clonezilla: Build, Clone, Repeat

图 7. 创建 .iso 文件

要测试恢复光盘,请从中启动并从启动加载程序屏幕中选择默认选项,该选项将默认为“Clonezilla Live”,并带有您的 img 文件名(图 8)。然后,恢复光盘将绕过通常的 Clonezilla 选择屏幕,立即启动适当的克隆程序,并要求确认是否使用光盘上的映像覆盖您的驱动器(图 9)。如果一切顺利,您现在就拥有了系统的良好副本,可以在紧急情况下使用。

Clonezilla: Build, Clone, Repeat

图 8. 恢复光盘启动屏幕(带有映像名称)

Clonezilla: Build, Clone, Repeat

图 9. 恢复恢复映像

在本文中,我介绍了 Clonezilla 最流行的两种用途,但这绝不是唯一的用途。一个新兴趋势是使用 Clonezilla 捕获物理系统的映像,以便在虚拟服务器上重新部署 - 这一过程称为物理到虚拟转换 (P2V)。其他人已将 Clonezilla Live 与流行的 System Rescue CD 结合使用,并构建了一个强大的救援 CD,称为 Clonezilla-SysRescCD。该套件及其组件有多种用途,但就其所有实用性而言,Clonezilla 确实缺少商业克隆套件中发现的一些更强大的功能。这些缺少的功能包括克隆正在运行的系统、获取差异(增量)映像以及恢复到不同的硬件或“裸机”恢复的能力。尽管如此,这些功能的价格也很高,并且并不总是易于实施。最终,Clonezilla 是一种通用的工具,它适用于所有类型的系统 - 而不仅仅是那些以 *nix 结尾的系统。

资源

CentOS: www.centos.org

DRBL: drbl.sourceforge.net

Clonezilla SE 和 Live: clonezilla.org

GParted: gparted.sourceforge.net

GParted Live: gparted.sourceforge.net/livecd.php

PartedMagic: partedmagic.com

Clonezilla-SysRescCD: clonezilla-sysresccd.hellug.gr

使用 Clonezilla 迁移到虚拟 Linux 环境: www.ibm.com/developerworks/linux/library/l-clonezilla

Jeramiah Bowling 担任系统管理员和网络工程师已超过十年。他在马里兰州亨特谷的一家地区性会计和审计事务所工作,并持有许多行业认证,包括 CISSP。欢迎您在 jb50c@yahoo.com 发表评论。

加载 Disqus 评论