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前,可以作如下设置:
- 如果您在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" #可读写
- 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会完成这项工作。)
- 如果您想在客户端启动时运行一些额外的服务(比如apmd和蓝牙),如下编辑service_extra_added="apmd bluetooth":
nano -w /opt/drbl/conf/client-extra-service
service_extra_added="apmd bluetooth"
- 如果您想通过"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种情况下,客户端可以从网络引导启动:
- 客户端安装有PXE网络适配器,
- 客户端安装有软驱,
- 客户端安装有光驱,
- 客户端安装有本地硬盘
我们将对上述后3种情况使用etherboot 5.4.3来作为范例。如果DRBL为1.3.9或更新,那么etherboot必须使用5.4.0或更新的版本。
1 通过PXE网络适配器引导
- 设置客户端的BIOS为从LAN或网络引导.
- 以下使用华硕主板为例.
- .在4-24处,OnBoard LAN下有一个通常关闭的子项"OnBoard LAN BOOT ROM",启动它。
- 保存设之后重新启动。
- 重新启动后再进入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
- 将镜像烧录到CD上:
cdrecord -v speed=12 fs=16m dev=0,0,0 -data etherboot-net.iso
(如果需要修改"dev=0,0,0",输入并执行"cdrecord -scanbus"来查看刻录机的dev)
cdrecord -scanbus
- 确定客户端设置好CDROM引导,将CD放入光驱并重启即可。
4 使用本地硬盘引导
- 如果客户端的硬盘中安装有GNU/Linux下的bootloader grub:
- 复制 "/opt/drbl-etherboot/etherboot-net.zlilo" 到客户端硬盘的"/boot/"文件夹下
- 在客户端的 /boot/grub/menu.lst 或 /boot/grub/grub.conf(识系统而定) 后添加如下代码:
title Etherboot-PXE kernel /boot/etherboot-net.zlilo
- 同步修改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:
- 复制文件"/opt/drbl-etherboot/etherboot-net.com" 到客户端。
- 将其重命名为稍短的 "eb-net.com"。
- 在客户端编辑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
- 范例:
- 如下是如何从一台计算机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。
- 更多范例:
http://www.clonezilla.org/related_article/
- PS: 您可以参考DRBl-winroll来使得被备份/恢复的Microsoft Windows系统自动更改为不同的主机名
http://drbl-winroll.sourceforge.net/
参考
作者
- 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)