说明
我使用的是Ubuntu 8.10服务器,IP地址是192.168.0.100,作为SystemImager服务器,和一个Ubuntu 8.10系统(可以是一个服务器或桌面系统,取决于你想要备份什么),IP地址是192.168.0.101(这里指的是“客户端”)。此IP地址可静态指定的或通过DHCP指派,当我创建镜像时,我将使用ip切换技术,这意味着,如果客户端有一个静态IP地址,在你恢复镜像时,恢复后的系统将具有完全相同的IP地址,如果客户端通过DHCP获得IP,恢复系统将从DHCP得到其它IP,则使恢复后的IP可以是不同的。
在整个教程中,我假设你已经以root用户登录到这两个系统,输入:
sudo su
我将使用最新的稳定版SystemImager(写本文的时候是4.0.2),它还不可以从Ubuntu 8.10的升级库中获得(在8.10升级库中的版本是3.2.3,使用这个版本时,当我尝试恢复系统时,我无法从启动介质启动)。
请记住,SystemImager使用rsync,这意味着,任何人在系统恢复期间都可以访问你在服务器上的镜像,除非你在rsyncd配置中限制使用某些IP地址。因此,当你在Internet上做系统备份和恢复时,你应该小心一点(或通过隧道SSH使用rsync,但这是不属于本教程的范畴了),但对本地网络这应该能够很好工作。
在镜像服务器上安装SystemImager
服务端:
在镜像服务器上,您可以如下安装SystemImager:
apt-get install syslinux libappconfig-perl mkisofs binutilswget http://heanet.dl.sourceforge.net/sourceforge/systemimager/systemimager-boot-i386-standard_4.0.2_all.debwget http://heanet.dl.sourceforge.net/sourceforge/systemimager/systemimager-common_4.0.2_all.debwget http://heanet.dl.sourceforge.net/sourceforge/systemimager/systemimager-initrd-template-i386_4.0.2_all.debwget http://heanet.dl.sourceforge.net/sourceforge/systemimager/systemimager-server_4.0.2_all.debwget http://heanet.dl.sourceforge.net/sourceforge/systemconfig/systemconfigurator_2.2.11-1_all.debdpkg -i systemimager-* systemconfigurator_2.2.11-1_all.deb
在黄金客户端上安装SystemImager
客户端:
在黄金客户端上,您可以如下安装SystemImager:
apt-get install libappconfig-perlwget http://heanet.dl.sourceforge.net/sourceforge/systemimager/systemimager-client_4.0.2_all.debwget http://heanet.dl.sourceforge.net/sourceforge/systemimager/systemimager-common_4.0.2_all.debwget http://heanet.dl.sourceforge.net/sourceforge/systemimager/systemimager-initrd-template-i386_4.0.2_all.debwget http://heanet.dl.sourceforge.net/sourceforge/systemconfig/systemconfigurator_2.2.11-1_all.debdpkg -i systemimager-* systemconfigurator_2.2.11-1_all.deb
在您创建了一个镜像前,您应该检查的/etc/fstab使用预设值取代所有relatime事件。如果你不这样做,恢复进程将有可能失败,因为启动镜像内核不知道relatime选项。
vi /etc/fstab
我原来的fstab看起来像这样:
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
# /dev/sda1
UUID=70d7109c-82d3-4bfa-8faa-554b1aae8935 / ext3 relatime,errors=remount-ro 0 1
# /dev/sda5
UUID=6d6205a6-c5dc-4790-a3c0-9823879c3484 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
正如你在第6行看到有一个relatime。因此,我修改如下:
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
# /dev/sda1
UUID=70d7109c-82d3-4bfa-8faa-554b1aae8935 / ext3 defaults,errors=remount-ro 0 1
# /dev/sda5
UUID=6d6205a6-c5dc-4790-a3c0-9823879c3484 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
在镜像创建完毕后,您可以将其更回原样,但无论什么时候在镜像服务器更新镜像时,你必须再次替换relatime。
在镜像服务器上创建一个黄金客户端的镜像
客户端:
为了将黄金客户端的镜像推送到镜像服务器,你应该关闭黄金客户端的所有防火墙,或至少允许连接到tcp 873端口(rsync使用)。现在,在黄金客户端,运行下面的命令:
si_prepareclient –server 192.168.0.100
服务端:
在镜像服务器上,运行:
si_getimage -golden-client 192.168.0.101 -image my_golden_client -ip-assignment replicant
这里my_golden_client的名字是要创建的镜像的名字。-ip-assignment可以是以下三个值:
dhcp:将动态给客户端分配IP地址的DHCP服务器。
static:在自动安装过程中分配给客户端的IP地址,将永久分配给该客户端。
replicant:我使用它作为备份和快速恢复机制的一台机器。
正如我在前面提到的,我在这里使用的replicant -它是理想的备份。
在镜像创建结束时,您会看到下列问题:
你想运行“si_clusterconfig”实用程序吗?(Y /[N]):输入n。
创建启动光盘
SystemImager允许你在没有安装镜像系统的系统上安装镜像。但是,我们必须告诉它镜像来自哪里,通过引导光盘可以做到这一点。要创建boot.iso镜像(然后,你可以刻录一张CD),运行下面的命令:
服务端:
si_mkautoinstallcd -append “IMAGESERVER=192.168.0.100 IMAGENAME=my_golden_client” –out-file /home/administrator/image.iso
请为镜像服务器和镜像名称填写正确的值,并在—out-file选项中指定输出目录。
您将被要求为““味道””,请输入黄金镜像的名称:
Here is a list of available flavors:
my_golden_client
standard
Which flavor would you like to use? [standard]: 输入my_golden_client
在新系统上还原镜像/安装镜像
服务端:
在镜像服务器端,执行下列命令:
/etc/init.d/systemimager-server-rsyncd start
确定可以从外部访问TCP 873端口(防火墙!)。
客户端:
现在,插入启动光盘,并启动它。您的新系统将自动安装镜像my_golden_client!
服务端:
在成功恢复镜像后,您可以停掉rsyncd:
/etc/init.d/systemimager-server-rsyncd stop
更新镜像
如果你的黄金客户端已经发生了一些重要变化,现在想要更新你以前创建的镜像my_golden_client。
客户端:
在客户端运行:
si_prepareclient –server 192.168.0.100
请确认你的防火墙允许连接到tcp端口873。
服务端:
在镜像服务器上运行:
si_getimage -golden-client 192.168.0.101 -image my_golden_client -ip-assignment replicant
删除镜像
服务端:
如果你想删除镜像服务器上的镜像,只需要输入:
si_rmimage my_golden_client
my_golden_client应改为想要删除的镜像的名字。