Jephe Wu (吳阿亭)
一:概述
在一個大的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啟動,啟動時指定參數vmlinuz root=/dev/hdaX.
啟動後運行/sbin/lilo即可
b. 軟盤啟動,可從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
完。