一:概述
在一个大的linux应用环境中,经常为了避免再次安装,需要简单地复制另一台已经在运行工作的linux服务器而后稍微做些改动即可。相比起windows来说,linux是更可复制的,因为linux内核在启动时是动态检测硬件的,这种操作系统与硬件的无关性使得linux是更可复制的。
二: 两种‘复制'类型。
一是完全的整个操作系统复制,避免重装另一台操作系统和各种应用的编译配置等等。二是单个应用程序复制,这一般是指两台系统在同一系列的内核和发行版本下运行时复制另一台上已经正在运行的应用程序如apache的编译,/usr/local/apache整个目录,及需要用到的库。本文主要讲讲第一种复制。
三:环境
一台已经在工作的linux服务器,简称A,我们准备一个与A相等或更大的空硬盘,再选择一台不论什么与A在本地或远程网络上运行的linux服务器B。我们把这个空硬盘安装到B上准备复制A到这个空硬盘上,然后就可以拿这个被复制后的硬盘启动一台与A差不多的linux服务器了。
四:复制后要更改的东西
1。要更改MBR生成正确的新的LILO。
2。IP地址和主机名( /etc/sysconfig/network /etc/sysconfig/network-scripts/ifcfg-ethX,
/etc/HOSTNAME, /etc/resolv.conf ,/etc/hosts,/etc/hosts.allow,/etc/hosts.deny,/etc/fstab)
3. 路由表及网关信息( netstat -nr ,ifconfig,/sbin/route )
五: 通过FTP方法的远程复制过程
1. 移走服务器A上的/etc/ftpusers文件中的root行,允许远程用户可以root进行FTP登录。
2。如果有设置/etc/hosts.allow,则允许服务器B可以FTP进来,且设置/etc/inetd.conf开启FTP服务
3。将空硬盘分区且mount到服务器B上,你可按服务器A的分区方法对该硬盘做同样分区,也可以少分一些区,但你需要保证/boot分区在1024柱面上,以免lilo找不到内核无法启动。我们假定原服务器A有分区/boot /var/tmp /usr / /home SWAP.则相应地对该空硬盘做同样分区,如果还剩下空间,则分成一个区准备放置从A FTP下来的文件,如果没有空间,则要想办法放到服务器B的硬盘上了。
4。 B# ftp A
root
rootpassword
bin
lcd /tmp
cd /
hash (因为文件较大,把hash标志打开可看到是否东西在传送)
get boot.tar ( 将把A上的/boot目录整个tar作为一个文件boot.tar 服务器A的/tmp下)
get var.tar
get tmp.tar
get usr.tar
get home.tar
get bin.tar
get sbin.tar
get etc.tar
get dev.tar
get lib.tar
注意:不要tar /proc,这是运行中的内核在内存中的映像。
5。把空硬盘分区后分别mount所有分区到
/mnt/newhd/boot,/mnt/newhd/var,/mnt/newhd/tmp,/mnt/newhd/usr,
/mnt/newhd/home,/mnt/newhd/bin,/mnt/newhd/sbin,/mnt/newhd/etc,
/mnt/newhd/dev,/mnt/newhd/lib
6. cd /mnt/newhd;tar xvf /tmp/*.tar
7. mkdir /mnt/newhd/proc (非常重要)
8. 更改前面提到的所有相关文件,仔细检查,如硬盘接口类型不同,还需要更改/etc/fstab,如新服务器上的网卡和SCSI类型不同,改/etc/conf.modules or /etc/modules.conf
9. 运行sync;sync;sync;reboot
六:如何更新LILO
a. cdrom 启动后安装LILO
现在挂接这个被复制的硬盘作为启动盘,但以CDROM启动,启动时指定参数vmlinu zroot=/dev/hdaX. 启动后运行/sbin/lilo即可
b. 软盘启动,可从 [url=http://www.pccode.net].net/rb/home.html"[url=http://www.pccode.net].net/rb/home.html"www.toms.net/rb/home.html 下载带根文件系统的单linux软盘启动后mount /dev/hda所有分区到/mnt/hda下,然后chroot /mnt/hda; /sbin/lilo
c. 以服务器B上的原硬盘启动,mount这个被复制的硬盘的各个分区到/mnt/hd/boot,/mnt/hd/etc......
....然后改/mnt/hd/etc/lilo.conf中的目录都在前面加上/mnt/hd,且改boot=/dev/hda作为/dev/hdb...
最后/sbin/lilo -C /mnt/hd/etc/lilo.conf,再改回原先的/mnt/hd/etc/lilo.conf
d.在服务器B启动后放一张软盘到软驱#dd if=/boot/vmlinuz of=/dev/fd0,然后rdev /dev/fd0 /dev/hdaX
(X为那个空硬盘/boot分区的分区号)。
七:其它常见问题解答
a. 开始启动被复制的硬盘后检查文件系统时出错,或者/etc/fstab中某些分区不能mount和找到系统要求给出root密码或ctrl+d重启,怎么办?
可回到前面把这个硬盘再次mount到服务器B改东西。
或者启动时指定linux single init=/bin/bash,它将drop给你一个shell.
然后mount /dev/hda1 -o remount -o rw ; mount -a; e2fsck -f /dev/hdaX,此时根文件系统/dev/hda1
被重新mount成可读写的。再改/etc/fstab,/etc/lilo.conf..等等
八:其它复制方法。
a. 本地复制,就直接安装另一硬盘到系统上,直接拷贝所有目录(除/proc)到新硬盘,再安装LILO。
b. 可以试一下在机器启动后,一个命令cat /dev/hda > /dev/hdc ;再安装LILO