一 概述 本文目的在於快速克隆另一架正在運行的Linux服務器的全部內容,之後更改相應的配置 文件,即可快速設置另一台完全相同配置的服務器 二 環境 本文使用最新的Redhat Linux 7.1 CDROM 第一張安裝盤啟動,被克隆的另一架服務器是 任何Linux系統,本文中也為Redhat 7.1。 三 步驟 1. 在被克隆的已經在運行的linux服務器 A (192.168.0.1) 上首先允許服務器 B (先 暫定IP地址為 192.168.0.2) 的IP可以rsh 進來 a. 在服務器上運行/usr/bin/ntsysv 選中rexec ,rlogin ,rsh三項服務。 b. 運行#/sbin/service xinetd restart 啟動該三項服務。 c. 運行#echo "rexec" >> /etc/securetty;echo "rlogin" >> /etc/securetty;echo "rsh" >> /etc/securetty 允許rsh進來(僅僅redhat 7.1需要) d. 在服務器上運行# echo "192.168.0.2" >> /root/.rhosts 允許該IP可以rsh進來 勿需密碼 2. 設置服務器A 上的/etc/hosts,加上一條記錄,可以取任意主機名,如: # echo "192.168.0.2 test" >> /etc/hosts 這樣,避免了正反向DNS解析時地址不匹配,否則當你從B rsh 到A時,B會提示你“主機 地址不匹配”的問題 3. 用Redhat Linux 7.1的第一張CDROM啟動機器B,我們打入“text”這樣可以快速進 入文本安裝界面,既然我們不是真的安裝,不需要圖形界面,我們只是借用該第一張 CDROM啟動而用rsh/tar來復制機器A ,一直保持按回車,直到出現automatic partitioning部分,讓你選擇 “Continue" 還是"Manual Partition"的屏幕時按 Alt+F2 轉到字符界面 4. 設置網卡的IP,確保能ping通192.168.0.1 請使用Linux默認支持的網卡,象3com,Intel等,這樣你只需打入 #ifconifg eth0 192.168.0.2 up 後即可ping通192.168.0.1 現在測試rsh, 對於Redhat 7.1,你必須做下面的: #cd /etc #echo "login 513/tcp" > services #echo "shell 514/tcp" >> services 然後你能#rsh 192.168.0.1勿需密碼 注: 如果你用VA Linux 6.2.3,不需要做上面的,還沒試過其它版本,相信Redhat Linux 6.2也不需要 5. 設置/dev/hda設備,使得可以手動做fdisk/mke2fs 對於Redhat Linux 7.1轉到字符界面來你仍然不能做fdisk /dev/hda. 會提示“打不開設備” ,現在你已經可以rsh到192.168.0.1,做下面的: #(rsh 192.168.0.1 cd /dev \; tar cf - hda* sda* ) tar xvfp - 現在你可以做#fdisk /dev/hda 了,然後用mke2fs格式化所有分區成ext2文件系統 如果硬盤中已經有分區,要快速全部刪除,則可做#dd if=/dev/zero of=/dev/hda , 馬上接ctrl+C中斷 然後分區表已經被清除 注: 如果你用VA Linux 6.2.3,不需要做上面的rsh部分,還沒試過其它版本,相信 Redhat Linux 6.2也不需要 6. 復制前准備工作 假定你的分區為/boot 25M (/dev/hda1),SWAP 1G (/dev/hda2), / 4G (/dev/hda3) 在為每個分區mke2fs和對交換分區做mkswap後做下面的mount工作 #cd / #mkdir hda3 #mount /dev/hda3 hda3 #cd hda3 #mkdir boot;mount /dev/hda1 boot 注:如果你沒法在根目錄下創建目錄,重啟動一次再做,重啟動不需再拷貝A上的 /dev/hda* /dev/sda*,因為你已經做過fdisk/mke2fs了。 7. 復制另一架機器A 打入下面的命令 #cd /hda3 #(rsh 192.168.0.1 cd / \;tar cf \- \-\-exclude proc .) tar xvf \- 注:用\來確保-不被bash shell解釋成別的字符。 如果你除了proc外還有一目錄不需要復制,如data目錄,則命令為 #(rsh 192.168.0.1 cd / \;tar cf \- \-\-exclude proc \-\-exclude data .) tar xvf - 8. 結束工作 #cd /hda3 #mkdir proc #chroot . (chroot成根目錄方便做/sbin/lilo) 更改相應文件如/etc/hosts,/etc/fstab,/etc/sysconfig/network, /etc/sysconfig/network-scripts/ifcfg-eth* 更改/etc/lilo.conf 最後運行/sbin/lilo後重新啟動 9. FAQ a. 如果克隆後你的CDROM不能mount,檢查是否是復制後/dev/cdrom的符號鏈接鏈接到錯 誤的設備,用dmesg檢查機器B上CDROM的設備名稱重新鏈接 b. 如果你源服務器用的是IDE硬盤,而克隆後的服務器用的是SCSI硬盤,則你需要設置 /etc/modules.conf中的alias scsi_hostadapter aic7xxx (如果你的SCSI芯片類型 是這個) 然後運行mkinitrd創建映像文件,更新/etc/lilo.conf加上initrd=行 否則你不能正常從SCSI盤引導