前言 : Enterprise Linux 實戰講座 Linux Backup Solution - Make CD-ROM Recovery (mkcdrec) 每次被客戶問到 Linux 可否像 AIX Solaris 將整個作業系統備份到磁帶上, 當系統毀損時, 可利用此磁帶開機, 並還原整個系統, 總是啞口無言! 說到這裏, 可能有人會想到 Ghost 這套軟體, 利用 Ghost 來備份 Linux 有許多限制, 例如不支援 reiserfs 檔案系統 (SUSE 預設採用的檔案系統 ); 還有需額外負擔購買 Ghost 軟體的費用 其實筆者認為企業級 ( 註 :RHEL/SLES 都有 Enterprise 這個字 ) 的作業系統本身就應該提供將系統完整備份到磁帶或光碟上, 並可利用此儲存媒體開機還原整個系統的功能 期盼 RHEL 5/SLES10 可以把此功能涵蓋至作業系統中, 不過卻再一次失望 但總不能跟客戶說再等等 RHEL 6/SLES11 吧! 所以只好自力救濟, 既然 Linux 原生於 Open Source, 那就從 Open Source 中找解決方案吧! 所以才有這篇文章 - 介紹如何利用 Open Source 的 mkcdrec 將整個作業系統備份至光碟上, 並藉由所產生的開機光碟還原整個 Linux 1/10 <2007-10-29 > Alex YM Lin
1 mkcdrec 簡介 先來看看 mkcdrec 網站 (http://www.mkcdrec.org) 對此軟體的介紹 : Make CD-ROM Recovery mkcdrec makes a bootable (El Torito) disaster recovery image (CDrec.iso), including backups of the linux system to the same CD-ROM (or CD-RW) if space permits, or to a multi-volume CD-ROM set. Otherwise, the backups can be stored on another local disk, NFS disk or (remote) tape. MkCDrec supports ext2, ext3, minix, xfs, jfs, reiserfs file systems, LVM and software RAID (multiple devices). Each file system is backed up as a compressed tar archive (including the tar log). The compress program used is the user's choice (compress, gzip, bzip2, lzop,...) mkcdrec supports IDE (inclusive ATA), S-ATA and SCSI disks, hardware RAID based disks (e.g. Compaq SMART2 Disk Array), LVM and software RAID. With an El-Torito CD-ROM you can boot from an IDE or SCSI based CD-ROM drive on IA32/64, powermac, Sparc and x86_64 GNU/Linux based computer systems. 由上述說明可知 mkcdrec 廣泛地支援各種 Linux 檔案系統及相關硬體, 不論是 ext3 或 reiserfs 檔案系統 有無 LVM 及 Softeware RAID 都可利用 mkcdrec 將整個系統備份至光碟片 DVD 硬碟 或 NFS Disk 上 2/10 <2007-10-29 > Alex YM Lin
2 mkcdrec 安裝及相關設定 Linux Backup Solution - Make CD-ROM Recovery (mkcdrec) 2.1 測試環境 筆者在 SLES 9 RHEL 4 RHEL 5 CentOS 5 上測試安裝 mkcdrec 後, 建議如果作業系統是 RHEL 4 /SLES 9/CentOS 4, 最好是安裝 mkcdrec_v0.9.6; 若是 RHEL 5/SLES 10/CentOS 5 的話, 就可安裝最新版本 mkcdrec_v0.9.7 2.2 安裝步驟 下面便介紹如何在 RHEL 5 上安裝 mkcdrec mkcdrec 有提供原始碼及 rpm 兩種格式可以安裝, 兩種方法都很簡單, 但是卻有不少人一開始安裝時便遇到挫折, 例如在 RHEL 4 上無法成功安裝最新版的 mkcdrec_v0.9.7 ; 利用原始碼方式安裝後, 卻無法成功產生系統的 ISO 備份檔 就筆者的測試結果,RHEL 4 上無法成功安裝最新版的 mkcdrec_v0.9.7 應該是 glibc 的版本不夠新, 所以我建議在 RHEL 4 上還是安裝 mkcdrec_v0.9.6 至於在 RHEL 5 上無法安裝最新版的 mkcdrec_v0.9. 7, 通常原因都是缺少某些套件 ; 只要按照下列步驟, 應可在 RHEL 5 上順利安裝及執行 mkcdrec 2.2.1 安裝 mkcdrec 所需套件 很可惜,mkCDrec 手冊中並沒有清楚列出所需套件, 不過根據利用 rpm 安裝 mkcdrec 過程中出現的訊息, 仍可判斷所需套件 ( 圖 1) 圖 1: 安裝 mkcdrec 出現相依套件訊息 以 RHEL 5 為例, 必須安裝下列套件 : 3/10 <2007-10-29 > Alex YM Lin
圖 2: 安裝 mkcdrec 所需套件其中 mt-st mkisofs cdrecord 可從 RHEL 5 的光碟片找到, 但比較麻煩的是 ash, 因為 RHEL 4 光碟中內含 ash 套件, 但 RHEL 5 卻不提供 ash 套件, 所以必須至 rpmfind 網站額外下載 ash 套件 i386 版本 http://www.rpmfind.net//linux/rpm/fedora/3/i386/ash-0.3.8-20.i386.html x86_64 版本 http://www.rpmfind.net//linux/rpm/fedora/3/x86_64/ash-0.3.8-20.x86_64.html 2.2.2 下載並安裝 mkcdrec 請先至 http://sourceforge.net/project/showfiles.php?group_id=25327 下載 mkcdrec, 建議讀者安裝 rpm 格式, 利用 rpm -ivh 指令進行安裝, 預設會安裝於 /var/opt/mkcdrec 目錄 ( 圖 3) 圖 3: 利用 rpm -ivh 指令安裝 mkcdrec 套件若是要安裝 tar.gz 格式, 可利用下列指令將 mkcdrec 同樣安裝於 /var/opt/mkcdrec 目錄下 #mkdir -p /var/opt/mkcdrec #tar xzvf mkcdrec_v0.9.7.tar.gz -C /var/opt/mkcdrec 2.2.3 測試 mkcdrec 這個步驟是所有步驟中最重要的, 安裝 mkcdrec 後, 可利用 mkcdrec 所提供的測試指令來檢查是否巳安裝所需套件及有那些參數需要調整 測試指令執行方式如下 : #cd /var/opt/mkcdrec/ #make test 4/10 <2007-10-29 > Alex YM Lin
便會出現如圖 4 的畫面, 注意是不是有那項 Test 失敗, 例如圖 4 中的 Test 20 項目, 建議修改 Config.sh, 將 INITRDSIZE 由 8192 調為 16394 圖 4:make test 的檢查結果 2.2.4 修改 Config.sh 如果執行 make test 時, 出現建議修改 Config.sh( 位於 /var/opt/mkcdrec 目錄 ) 的訊息, 則一定要根據建議值修改, 例如 Test 20 中建議將 INITRDSIZE 由 8192 改為 16384( 第 1013 行 ) # vi Config.sh 1013 INITRDSIZE=8192 # 1k blocks 除了 INITRDSIZEP 外, 筆者還建議修改下列設定 :... 39 ISOFS_DIR=/tmp/backup ISOFS_DIR=/sysbak/backup... 45 CDREC_ISO_DIR=/tmp CDREC_ISO_DIR =/sysbak 5/10 <2007-10-29 > Alex YM Lin
ISOFS_DIR(39 行 ) 的是存放建立備份 ISO 檔所需檔案的目錄, CDREC_ISO_DIR(45 行 ) 則是系統備份 ISO 檔所在目錄 實務上可額外建立檔案系統來存放 ISO 檔, 例如筆者是指定將系統備份 ISO 檔罝於 /sysbak 目錄 mkcdrec 預設會將整個系統備份成 CDR 格式, 若是讀者欲建立 DVD 格式的 ISO 檔, 則需修改下列設定 : 225 CDRECORD=cdrecord CDRECORD=dvdrecord MAXCDSIZE=670000 244 MAXCDSIZE=4700000 2.2.5 系統備份修改 Config.sh 後, 只要切換到 /var/opt/mkcdrec 目錄下, 然後執行 make 便會出現 mkcdrec 選單, 選擇第 2) 項,mkCDrec 會偵測現行的檔案系統架構, 按下 Enter 鍵後便會開始將整個系統備份成 ISO 檔 圖 5:mkCDrec 備份畫面 備份完成後, CDREC_ISO_DIR 所設定的目錄應該會產生 CDrec.iso, 若是超過一張 CDR 的大小, 則會看到多個 ISO 檔 ( 圖 6) 6/10 <2007-10-29 > Alex YM Lin
圖 6:mkCDrec 備份完成畫面 2.2.6 還原利用所產生出來的 CDR/DVD 開機, 便會出現圖 7 的畫面, 選擇第 2 項, 等 mkcdrec 程式載入完成後, 鍵入 cd /etc/recovery./start-restore.sh, 然後按下 Enter 便開始還原作業系統( 圖 8) 7/10 <2007-10-29 > Alex YM Lin
圖 7:mkCDrec 開機畫面 圖 8:start-restore.sh 畫面 8/10 <2007-10-29 > Alex YM Lin
3 mkcdrec 搭配 crontab Linux Backup Solution - Make CD-ROM Recovery (mkcdrec) 擔任過系統管理者的讀者看完以上的內容, 一定會想問 mkcdrec 可不可以搭配 crontab 自動在特定的時間進行系統備份, 總不能每次都手動啟動選單進行備份, 答案是 當然可以 而且步驟很簡單, 只要讀者修改 Config.sh 後, 執行 make install, 便會建立 /usr/sbin/mkcdrec 執行檔, 讀者可鍵入 mkcdrec h ( 圖 9), 可看到 mkcdrec 指令所提供的功能選項 ; 若要進行系統備份只需直接執行 mkcdrec CD-ROM 圖 9: mkcdrec h 畫面 若是你想每天淩晨 3 :00 進行系統備份, 只需執行 crontab e, 然後填入下列內容, 存檔離開 crontab 即可 #crontab -e 0 3 * * * /usr/sbin/mkcdrec CD-ROM 9/10 <2007-10-29 > Alex YM Lin
後記 其實 Open Source 中還有很多可以備份整個系統的軟體, 例如 G4L(ghost for linux),partition image for linux 及國網中心力推的 Clonezila 企鵝龍, 讀者可以根據企業的環境選擇適合的軟體 作者簡介林彥明 (Alex Lin): 現任職於 IBM, 負責 Linux 叢集系統建置, 效能調校及技術支援等工作, 近來參與 NCHC IBM Cluster 1350( 計算效能排行 Top500 第 35 位, 全亞洲僅次日本的超級電腦 ) 建置及維護 具有 RHCA(Red Hat 架構師 ) RHCDS(Red Hat Certified Datacenter Specialist) RHCX(Red Hat 認證主考官 ) RHCE NCLP(Novell Linux 認證專家 ) LPIC IBM AIX 等國際認證, 10/10 <2007-10-29 > Alex YM Lin