个人工具

UbuntuHelp:Clonezilla Server Edition/zh

来自Ubuntu中文

跳转至: 导航, 搜索


简介

也许您已经熟悉了Norton Ghost®这个拥有专利的商业软件,以及相对而言,开源的Partition Image。然而,这些软件都有一个相同的问题,那就是在批量安装系统时仍需要花费大量的时间。也许您也已经听说过赛们铁克对于这一问题的解决方案——支持multicast(组播?)技术的Symantec Ghost Corporate Edition®,但是这里将要介绍的是另一个开源的同时支持unicast(单播?)与multicast(组播?)的系统克隆方案,Clonezilla,基于DRBL(无盘系统)、Partition Image、ntfsclone与UDP cast,使得您可以进行裸机的备份与恢复。Clonezilla有live版与服务器版两个版本,其中前者用于对于一台计算机的备份与恢复,后者则是用于大批量(40台以上)计算机的统一备份与恢复。Clonezilla通过只恢复硬盘中已被使用的部分来提升效率。在NCHC(国家实验研究院高速网络与计算中心),Clonezilla使用multicast(组播?)仅仅用10分钟就将5.6GB的系统映像克隆到了41台计算机上。

Clonezilla 特性

  • 基于GPL协议的免费软件
  • 支持的文件系统:ext2/3、reiserfs、xfs、GNU/Linux下的jfs、FAT、 NTFS。因此无论Linux于Microsoft Windows,您都可以用Clonezilla来克隆(只备份/恢复已用空间的功能仅支持上述文件系统,对于没有列出的文件系统将会进行全盘备份/恢复)。
  • 支持GNU/LINUX 下的 LVM2(Linux逻辑盘卷管理),不包括LVM1。
  • .服务器版支持multicast(组播?)。如果客户端的PXE与LAN唤醒可以使用,您甚至可以远程备份/恢复计算机
  • 分区克隆基于Partimage、ntfsclone和DD,但是Clonezilla也能够克隆全盘。
  • 通过使用我们研发的另一款免费软件drbl-winroll,Microsoft Windows的客户端可以自动调整主机名、用户组以及SID。

版本

  • Clonezilla Live: 允许您通过CD/DVD或USB 闪存来引导和运行Clonezilla(仅支持unicast模式)。
  • Clonezilla 服务器版: 在批量克隆前必须架设一个DRBL服务器(支持unicast与multicast)
本手册只针对于服务器版

如何架设Clonezilla服务器

您必须首先架设一个DRBL服务器才可以进行大批量系统克隆。我们强烈推荐您记下客户端的MAC地址并让DRBL服务器在客户端启动时提供相同的IP地址,从而有效防止您在错误的客户端上进行克隆操作。除此之外,如果您不为客户端提供静态IP地址,由于不同的操作系统(比如,GNU/Linux和Microsoft Windows)使用不同的DHCP客户端ID,会导致这样令人烦扰的结果: 同一客户端通过DRBL引导GNU/Linux时,会使用一个IP地址;当登录本地Microsoft Windows时却会使用另一个。当然,如果您确定在这个DRBL环境中没有其他的计算机,以及对于上述问题不是非常在意的话,仍然可以在dhcpd.conf中使用这样的配置。在这种情况下,您甚至可以使用[[UbuntuHelp:[impatient|impatient method]]]"来设置DRBL环境。

Linux下的无盘系统 (DRBL)

架设LINUX服务器

安装好GNU/Linux并配置所有的网卡。下面我们将使用“eth0”来连接网络,eth1/2/3用于DRBL环境。将IP地址全部设为私有地址(比如 192.168.x.x, 在接下来的示范中,我们使用eth1:192.168.101.254, eth2:192.168.102.254, eth3:192.168.103.254...); 请记住, 私有IP (例如 192.168.x.x)是用在DRBL环境中的。

nano -w /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

#Gateway - 
auto eth0
iface eth0 inet dhcp
pre-up iptables-restore < /etc/iptables.rules
post-down iptables-save > /etc/iptables.rules

#eth1
auto eth1
iface eth1 inet static
    address 192.168.101.254
    network 192.168.101.0
    netmask 255.255.255.0
    broadcast 192.168.101.255

#eth2
auto eth2
iface eth2 inet static
    address 192.168.102.254
    network 192.168.102.0
    netmask 255.255.255.0
    broadcast 192.168.102.255

#eth3
auto eth3
iface eth3 inet static
    address 192.168.103.254
    network 192.168.103.0
    netmask 255.255.255.0
    broadcast 192.168.103.255

重启网络

sudo /etc/init.d/networking restart

在架设DRBL服务器时,您的防火墙规则将被覆盖,在架设完成之后您可以重新配置您的防火墙。需要注意的是,在DRBL环境下,NFS、NIS、tftp与dhcp服务是必需的,确定您没有在防火墙规则中禁止这些服务。 您也可以做如下设置来使得Clonezilla工作的更好. 如果在您的GNU/Linux版本中支持reiserfs文件系统,相比ext2/3,它可以工作得更出色。目前的Ubuntu(8.04)默认文件系统是ext3。 Linux在服务器上安装完成之后, 确定硬盘的DMA模式已经开启,来加快硬盘的读取速度(输入 "hdparm /dev/sdx" 来检查DMA状态,如果没有,输入"hdparm -d1 -c3 -k1 /dev/sdx"启用DMA)。如果您Linux系统的硬盘在 "Primary IDE"模式下则用/dev/sda替代/dev/sdx。如果您看到这样的信息,HDIO_GET_DMA failed: Inappropriate ioctl for device那么在只有一个NIC的情况下,您需要设定2个IP地址。比如一个在eth0上,另一个在eth0:1。前者用来连接公网,后者连接DRBL环境。注意,如果您此时在客户端上没有通过MAC地址设置静态IP地址可能会导致一些问题!在这里,如果不在DHCP服务中设置MAC地址,DRBL服务器会给任何一台连接上eth0的客户端安排IP地址。因此除非您非常有经验,否则最好不要使用2个IP地址。推荐两个或以上的NIC!

nano -w /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

#Gateway - 
auto eth0
iface eth0 inet dhcp
pre-up iptables-restore < /etc/iptables.rules
post-down iptables-save > /etc/iptables.rules

#eth0:1
auto eth0:1
iface eth0:1 inet static
    address 192.168.100.254
    network 192.168.100.0
    netmask 255.255.255.0
    broadcast 192.168.100.255

客户端设置

安装 "drbl" 软件包

  • 将DRBL key添加到您的apt-key中
wget http://drbl.nchc.org.tw/GPG-KEY-DRBL
apt-key add GPG-KEY-DRBL
  • 按照如下步骤编辑/etc/apt/sources.list :
nano -w /etc/apt/sources.list

Ubuntu Hardy (8.04):

deb http://free.nchc.org.tw/ubuntu hardy main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable
Ubuntu Gutsy (7.10):
deb http://free.nchc.org.tw/ubuntu gutsy main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable

Ubuntu Feisty (7.04):

deb http://free.nchc.org.tw/ubuntu feisty main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable
Ubuntu Edgy (6.10):
deb http://free.nchc.org.tw/ubuntu edgy main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable

Ubuntu Dapper (6.06):

deb http://free.nchc.org.tw/ubuntu dapper main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable

Ubuntu Breezy (5.10):

deb http://free.nchc.org.tw/ubuntu breezy main restricted universe multiverse
deb http://free.nchc.org.tw/drbl-core drbl stable
  • 第一行您也可以使用任何Debian或Ubuntu源,但是第二行是有关DRBL的代码,请不要改动。如果您想使用测试版DRBL,将第二行换成:
deb http://free.nchc.org.tw/drbl-core drbl stable testing

非稳定版DRBL,将第二行换成:

deb http://free.nchc.org.tw/drbl-core drbl stable testing unstable
  • 输入并执行 "apt-get update"
apt-get update
  • 输入并执行 "apt-get install drbl" to install drbl program.
apt-get install drbl

服务器硬件配置

默认设置

如果您不想手动设置,并且网络连接足够快的话,您可以输入并执行"/opt/drbl/sbin/drbl4imp"来使用DRBL服务器的默认设置来完成硬件配置工作。请注意,默认设置可能并不适合您的具体情况!它使用较宽泛的DHCP服务设置因此您的DRBL客户端将不会总是使用相同的IP地址。同时,在默认设置下,除eth0外每个网卡都会提供DRBL服务给12台客户端。

/opt/drbl/sbin/drbl4imp

手动设置

输入并执行"/opt/drbl/sbin/drblsrv -i"。注意:在参数-i前必须输入空格。如果您对您的硬件环境不是非常熟悉,请去掉参数,使用默认值。

/opt/drbl/sbin/drblsrv -i

在服务器上为客户端建立文件系统

这里我们将使用总共有40台计算机的NCHC的电脑教室C来作为具体范例。为了使DRBL的工作更为高效,我们将40台计算机分在4个子网中:192.168.100.0-192.168.103.0。在DRBL服务器上有4块以太网卡。一块用来连接公网,剩下的用来连接局域网。局域网中的DRBL环境IP地址为192.168.100.254-192.168.103.254(原文为192.168.100.254, 192.168.101.254, 192.168.102.254 与 192.168.3.254,疑笔误)。DHCP、tftp与NFS等服务将使用eth0:1eth1 eth2 与eth3。

         NIC    NIC IP                    客户端
+-----------------------------+
|         DRBL 服务器          |
|                             |
|+-- [eth0] 公共IP         +- 连接公网
|     (例. 61.216.116.23)     |
|                             |
|+-- [eth0:1] 192.168.100.254 +- 连接用户组1 [ 10台客户端, IP为
|                             |            192.168.100.1 - 192.168.100.10]
|+-- [eth1] 192.168.101.254   +- 连接用户组2 [ 10台客户端, IP为
|                             |            192.168.101.1 - 192.168.101.10]
|+-- [eth2] 192.168.102.254   +- 连接用户组3 [ 10台客户端, IP为
|                             |            192.168.102.1 - 192.168.102.10]
|+-- [eth3] 192.168.103.254   +- 连接用户组4 [ 10台客户端, IP为
|                             |            192.168.103.1 - 192.168.103.10]
+-----------------------------+
注:原文为用户组1、1、2、3,疑笔误。
  • 在v1.6.3或之后的版本中,DRBL提供4种模式:
  • Full DRBL,
  • Full Clonezilla,
  • DRBL SSI (Single System Image)
  • Clonezilla Box.

(在前2中模式下,对于网络带宽以及硬盘空间的要求相对会较高)所有的系统设置都将储存在服务器上,但同时每一台客户端也可以进行独立的设置。其中,DRBL SSI为所有客户端使用同一系统镜像,所有的必要的个体设置会在客户端启动时完成,从而达到减少服务器磁盘空间占用的目的。但这样的缺陷在于客户端的用户系统设置无法保存。在DRBL SSI模式下,如果想添加一台客户端节点,只需要修改dhcpd配置文件(dhcpd.conf),并使用 "/opt/drbl/sbin/dcs -> others -> gen_3N_conf" 来创建必要的文件"/opt/drbl/sbin/drbl-3n-conf generate"。在这个模式中,理论上,服务器的每一块网卡都可以连接253台客户端。对于第四种,基于DRBL SSI的Clonezilla Box模式,适合做克隆系统。如果您想要使用DRBL SSI模式,请确定您所有的客户端有足够大的内存(512MB以上),并且所有的硬件必须相同(尤其是显卡)。下表为四种模式的对比:

Full DRBL Full Clonezilla DRBL SSI Clonezilla Box
客户端的/etc, /var 文件 基于NFS 基于NFS 基于tmpfs 基于tmpfs
重启后用户修改过的/etc 与 /var下的文件 保留 保留 不保留 不保留
每台用户端在服务器上占用的空间 ~ 50 MB ~ 50 MB 0 0
每块以太网卡可连接的客户端数量 253 253 253 253
  • 对于使用交换机与多块网络适配器:

当您使用多块适配器来扩展带宽时,我们建议您设置MAC地址从而使得每一个节点(客户端)每次启动都会分配到相同的IP地址(例如,在下面的步骤3a中,当您运行"/opt/drbl/sbin/drblpush -i"时,会看到提示"Do you want to fix the IP address of client connected to eth1 by giving MAC address ? [y/N]",选择Y)。如果不设置MAC地址,并且您只有一台(或者一台由多个交换机连接而成)的交换机,却使用两块以上适配器来扩展带宽的话,将会出错误(比如,一些客户端无法从DHCP服务器分配到IP地址)而导致客户端无法引导系统。但是如下情况除外:您的DRBL服务器使用多块在不同子网的适配器,同时有且必须有同样数目但未连接在一起的交换机,那么此时您可以不设置MAC地址。

  • 在进入步骤3a前,可以作如下设置:
  1. 如果您在DRBL服务器上有一些文件目录需要共享(例如 /work1),那么可以用文本方式打开/opt/drbl/conf/drbl.conf,若设置work1只读,添加edit the diskless_root_dir_ro_user_add="/work1";若设置可读写,则添加or diskless_root_dir_rw_user_add="/work1"。在编辑过程中请小心,drbl.conf文件非常重要!
nano -w /opt/drbl/conf/drbl.conf

编辑drbl.conf

diskless_root_dir_ro_user_add="/work1" #只读

或:

diskless_root_dir_rw_user_add="/work1" #可读写
  1. If all the clients have their local harddisk, and the partition is formated (For example, /dev/hda1, its filesystem is ext3), then if you want the client to mount /dev/hda1 as /localwork when booting. Therefore you can edit /opt/drbl/conf/client-append-fstab, and its syntax is just like /etc/fstab. In this example, you can make /opt/drbl/conf/client-append-fstab like this:如果所有的客户端都有各自的已格式化分区(例如,/dev/hda1,文件系统为ext3)的硬盘,而您想要在它们启动时将/dev/hda1 挂载为 /localwork,那么可以通过编辑/opt/drbl/conf/client-append-fstab来完成。对于本例:
nano -w /opt/drbl/conf/client-append-fstab
/dev/hda1 /localwork ext3 defaults 0 0

(PS: 您不需要自己创建目录/tftpboot/node_root/localwork,稍后drblpush会完成这项工作。)

  1. 如果您想在客户端启动时运行一些额外的服务(比如apmd和蓝牙),如下编辑service_extra_added="apmd bluetooth":
nano -w /opt/drbl/conf/client-extra-service
service_extra_added="apmd bluetooth"
  1. 如果您想通过"drblpush -i"覆写部分或全部自动生成的主机名,可以编辑"/opt/drbl/conf/client-ip-hostname"文件。
nano -w /opt/drbl/conf/client-ip-hostname
  • run <Step 3a>"/opt/drbl/sbin/drblpush -i". The software will auto-detect the system to figure out the argument. If the argument is not set up in the system, the system will request you to do that.

输入并执行步骤3a"/opt/drbl/sbin/drblpush -i",程序会自动检查所有的变量。没有被设置的系统将会提示您。

/opt/drbl/sbin/drblpush -i
  • 注意!如果此步骤之后在服务器上安装了更新的的软件包,您需要再次运行"/opt/drbl/sbin/drblpush -i" 或 "/opt/drbl/sbin/drblpush -c /etc/drbl/drblpush.conf" 使新的安装可以在客户端运行
/opt/drbl/sbin/drblpush -i
/opt/drbl/sbin/drblpush -c /etc/drbl/drblpush.conf
  • 注意!我们不推荐您启动系统自动更新。因为新程序自动安装后如果未运行"/opt/drbl/sbin/drblpush -i"命令可能会导致客户端上与服务器上的软件版本不同而产生不兼容。如果您想开启自动更新,那么请记住让系统自动完成上述步骤。

设置客户端

o 在如下4种情况下,客户端可以从网络引导启动:

  1. 客户端安装有PXE网络适配器,
  2. 客户端安装有软驱,
  3. 客户端安装有光驱,
  4. 客户端安装有本地硬盘

我们将对上述后3种情况使用etherboot 5.4.3来作为范例。如果DRBL为1.3.9或更新,那么etherboot必须使用5.4.0或更新的版本。

1 通过PXE网络适配器引导
  • 设置客户端的BIOS为从LAN或网络引导.
  • 以下使用华硕主板为例.
  1. .在4-24处,OnBoard LAN下有一个通常关闭的子项"OnBoard LAN BOOT ROM",启动它。
  2. 保存设之后重新启动。
  3. 重新启动后再进入BIOS设置,在4-35处将first boot device设置为LAN。
  • 设置完成。客户端将从LAN引导。
2 使用软驱引导
  • <步骤 4a> 获得镜像。
  • 使用DRBL服务器上支持大部分网卡的/opt/drbl-etherboot/etherboot-net.zdsk通用镜像(如果这个镜像无法引导,那么选择位于下/opt/drbl-etherboot/ 对应客户端网卡的专用镜像。例如Realtek 8139 network card网卡,镜像为/opt/drbl-etherboot/rtl8139.zdsk)。
  • <步骤 4b> 在服务器上插入一张软盘。
  • 在服务器上输入并执行 "cat /opt/drbl-etherboot/etherboot-net.zdsk > /dev/fd0" 。
cat /opt/drbl-etherboot/etherboot-net.zdsk > /dev/fd0
  • 如果在windows环境下创建镜像,请下载rawrite.exe或者"RawWrite for windows" (http://uranus.it.swin.edu.au/~jn/linux/)来写入镜像。
  • <步骤 4c> 将软盘插入已设定软盘引导的客户端,如果所有的设置正确,几分钟后客户端将会显示与服务器相同的登录界面。
3 使用光驱引导
  • 1. 通用镜像位于 /opt/drbl-etherboot/etherboot-net.iso
  1. 将镜像烧录到CD上:
cdrecord -v speed=12 fs=16m dev=0,0,0 -data etherboot-net.iso

(如果需要修改"dev=0,0,0",输入并执行"cdrecord -scanbus"来查看刻录机的dev)

cdrecord -scanbus
  1. 确定客户端设置好CDROM引导,将CD放入光驱并重启即可。
4 使用本地硬盘引导
  • 如果客户端的硬盘中安装有GNU/Linux下的bootloader grub:
  1. 复制 "/opt/drbl-etherboot/etherboot-net.zlilo" 到客户端硬盘的"/boot/"文件夹下
  2. 在客户端的 /boot/grub/menu.lst 或 /boot/grub/grub.conf(识系统而定) 后添加如下代码:
               
                  title Etherboot-PXE
                  kernel /boot/etherboot-net.zlilo
  1. 同步修改menu.lst或grub.conf的默认引导方式
  • 如果客户端安装了Microsoft Windows XP/2K:

您可以使用WINGRUB。将文件 etherboot-net.zlilo 放在 C:\下,并将 C:\boot.ini 和 C:\GRUB\MENU.LST 编辑为: (仅适用于在boot.ini中安装wingrub。Tool -> Install grub -> Boot from BOOT.INI ):

                  boot.ini:
                
                  [boot loader]
                  timeout=30
                  default=C:\GRLDR
                  [operating systems]
                  multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
                  C:\GRLDR="Etherboot"
                 [
                  MENU.LST:
                  [
                  timeout 7

                  title etherboot
                  root (hd0,0)
                  kernel /etherboot-net.zlilo

                  title Windows at (hd0,0)
                  root (hd0,0)
                  chainloader +1
                 [
  • 如果客户端安装的是Microsoft Windows 9X:
  1. 复制文件"/opt/drbl-etherboot/etherboot-net.com" 到客户端。
  2. 将其重命名为稍短的 "eb-net.com"。
  3. 在客户端编辑multi-boot(多重引导)配置文件使得可以通过"eb-net.com"引导。

如何使用 Clonezilla 服务器版

在DRBL服务器使用root权限运行/opt/drbl/sbin/dcs来选择客户端模式,您会看到clonezilla-start 与 clonezilla-stop两种菜单:

/opt/drbl/sbin/dcs

选择clonezilla-start模式,将会有如下四种选项:

  • clonezilla-save-disk: 备份全盘
  • clonezilla-restore-disk: 恢复全盘
  • clonezilla-save-parts: 备份分区
  • clonezilla-restore-parts: 恢复分区

选择需要的模式并会有提示指导您怎么做。完成之后您就可以通过PXE引导客户端来备份或恢复镜像 停止Clonezilla: 使用root权限运行 "/opt/drbl/sbin/dcs", 选择 "Clonezilla-stop". 或直接运行 "/opt/drbl/sbin/drbl-ocs stop".

/opt/drbl/sbin/drbl-ocs stop
  1. 范例:
  • 如下是如何从一台计算机M上备份镜像并复制到其它39台计算机上的范例:

o 选择clonezilla-save-disk模式: 在服务器上,

  • 运行 "/opt/drbl/sbin/dcs", 选择 "clonezilla-start". 接下来选择"clonezilla-save-disk"模式。

o 启动计算机M,在BIOS中将其设定为网络引导(PXE或etherboot)。 o 引导完成后,如果您没有在选择/opt/drbl/sbin/dcs -> clonezilla-start -> clonezilla-save-disk时输入镜像与设备名,将会有提示出现。现在输入镜像的名字并选择存储的设备,否则将使用服务器上您已输入的设置。 o 镜像复制完成后,在服务器上选择clonezilla-restore-disk模式:

  • 运行 "/opt/drbl/sbin/dcs". 选择 "clonezilla-start" 接下来选择 "clonezilla-restore-disk"模式。

程序会询问您使用哪一个镜像恢复,输入刚才镜像的文件名。 o 启动将被安装镜像的客户端,确定它们都设置为网络(PXE或etherboot)引导。 o 您刚才选择的镜像将被安装到客户端上。 o 安装完成后您可以通过 /opt/drbl/sbin/dcs -> clonezilla-stop 来关闭clonzilla。

  1. 更多范例:

http://www.clonezilla.org/related_article/

  1. PS: 您可以参考DRBl-winroll来使得被备份/恢复的Microsoft Windows系统自动更改为不同的主机名

http://drbl-winroll.sourceforge.net/

参考

http://www.clonezilla.org/

作者

  • Steven Shiau (steven _at_ nchc org tw)
  • K. L. Huang (klhaung _at_ gmail com)
  • H. T. Wang (c00wht00 _at_ nchc org tw)
  • Ceasar Sun (ceasar _at_ nchc org tw)
  • Jazz Wang (jazz _at_ nchc org tw)
  • Thomas Tsai (thomas _at_ nchc org tw)