DRBL 企鵝龍

Diskless Remote Boot in Linux

DRBL的使用
Clonezilla

[版權說明] [作者列表] [本文]

2016/Apr/06



一、版權說明
本文版權屬於全體作者所有,且以 GNU FDL 授權合約發佈。在遵守 GNU FDL 授權合約的情況下,您可以複製、散佈,以及修改本文件。 唯請保持作者列表的完整,若您修改過此份文件,也請在作者列表中加入您的大名。

同時請注意本文件沒有任何擔保,若因本文件而產生任何直接或間接的損失,本文作者群均不負任何法律及道義上的責任。
二、作者列表
蕭志榥 (steven _at_ nchc org tw)
黃國連 (klhaung _at_ gmail com)
王順泰 (c00wht00 _at_ nchc org tw)
孫振凱 (ceasar _at_ nchc org tw)
王耀聰 (jazzwang _at_ nchc org tw)
蔡育欽 (thomas _at_ nchc org tw)
三、Clonezilla
DRBL的客戶端其實不需要硬碟, 然而在一個多元化的教學環境下, Windows 還是有可能必須要在各個客戶端上被安裝, 用 Ghost 製作 Disk Image 再複製到每台用戶端是現行最常使用的方法; 然而能用來做大量複製的 Symantec Ghost Corporate Edition 其實蠻貴的,而且靈活度不高。 若是使用 Norton Ghost 又必須一台台的做, 頗為曠時費日;

除了 Ghost 外, 自由軟體上亦有個著名的計畫: Partition Image 這個計畫的目的也是要提供這樣的服務, 不過由於目前該計劃是用點對點的方式 傳送資料(Symantec Ghost Corporate Edition則是用Multicast的技術, Partition Image則會在下個穩定版中加上Multicast的支援), 故它目前最多只能撐到15台機器同時做還原的動作。另外一個問題是,一定要有linux的作業系統來讓partimage來執行,這個作業系統可能是在光碟上,要在一片軟碟上有linux以及partimage有點困難,一般來說都要兩片。麻煩的是,如果你有40台學生電腦的話,要準備的光碟與軟碟數目非常多。

透過DRBL並結合Partition Image,DRBL提供一個能夠支援40台以上機器同時還原的系統,我們稱之為CloneZilla(程式中的簡稱是OCS-OpenSource Clone System)。使用上根本不需要準備光碟片或是軟碟片。以國家高速網路與計算中心C教室為例,共有37台機器同時進行還原的動作,DRBL主機上有四張網路卡,各負責一個DRBL Subnet(也就是說,每張網卡負責9~10機器還原的動作),還原一個5.6 GBytes的M$ Windows XP image到37台客戶端電腦,只需要約50分鐘的時間。若採用multicast clonezilla的方式,更是只要8分鐘左右。

使用Clonezilla系統,您需要先完成DRBL的架設,架設DRBL的說明在這裡,安裝完成後,就可以使用Clonezilla了。

在架設DRBL的時候,建議您選擇鎖定網路卡MAC address的作法,這樣才不會錯誤的將image回復到您未知的電腦中。此外,如果不鎖定網路卡MAC address,也會造成不同的作業系統,即使使用同一張網路卡,他所送出去的DHCP client ID是不同的,所以如果你用戶端此次開機成DRBL下的Linux,下一次開成本機的M$ windows,這樣租用的IP address是不同的。有時候這是一種困擾,當然,如果您確認您的DRBL環境中,只有您要的電腦才能連接到,而且你也不在乎這個不同作業系統租用到不同IP address的困擾,那你可以採用懶人安裝法來安裝DRBL。

以下我們介紹CloneZilla的指令的操作與幾個模式,操作分成「使用者介面」與「命令列」
  • 使用者介面(選項較少):
    • 執行dcs可以來切換用戶端電腦的模式, 這些模式包含:
      • clonezilla-save-disk: CloneZilla儲存範本機器硬碟模式
      • clonezilla-restore-disk: CloneZilla回復硬碟印象檔模式
      • clonezilla-save-parts: CloneZilla儲存範本機器分割區模式
      • clonezilla-restore-parts: CloneZilla回復硬碟分割區印象檔模式
      • 此圖形介面如下所示:

        Clonezilla start screenshot

        Clonezilla menu screenshot
  • 命令列模式(選項較多,更多的選項可以由drbl-ocs --help來查詢):
使用方法:
啟動Clonezilla:
drbl-ocs [OPTION] {start|startdisk} {save|restore|multicast_restore}
復原時的選項:
-g, --grub-install GRUB_PARTITION install grub in hda with root grub directory in GRUB_PARTITION when restoration finishs, GRUB_PARTITION can be one of /dev/hda1, /dev/hda2...
-r, --resize-partition resize the partition when restoration finishes, this will try to fix the problem when small partition image is restored to larger partition. Now support partition with filesystem reiserfs, fat, ext2 and ext3. Warning!!! Use this carefully... Backup your data first.

儲存時的選項:
-z0, --no-compress don't compress when saving: very fast but very big image file (NOT compatible with multicast restoring!!!)
-z1, --gzip-compress compress using gzip when saving: fast and small image file (default)

一般選項:
-c, --confirm wait for confirmation before saving/restoring
-d, --debug enter command mode to debug before saving/restoring
-f, --force-sfdisk force to run sfdisk in any case
-n, --no-nfs-restart do not to restart nfs when start or stop drbl-ocs
-p, --postaction [poweroff|reboot|command] when save/restoration finishs, poweroff, reboot (default) or enter command prompt
-w, --wait-time TIME wait for TIME secs before saving/restoring
-v, --verbose prints verbose information

停止clonezilla:
drbl-ocs stop

  • 實例說明
    • 一般電腦教室常見的需求是在一台電腦上已經安裝好一套作業系統以及所有的程式(此電腦我們稱之為M電腦),這台電腦上的系統要複製到其他30~40台客戶端電腦(學生的電腦)。作法是這樣:
      1.將DRBL server設成存母片的模式,執行dcs來切換成clonezilla-start -> clonezilla-save-disk
      2.開啟M電腦的電源,設成PXE開機或是etherboot開機,讓M電腦由網路遠端開機
      3.M電腦進入網路遠端開機完後,會問您回存母片檔(source image)的名稱,請在M電腦上輸入(例如nomorems),然後選擇要回存的硬碟
      4.M電腦整個硬碟的內容開始存到DRBL server上,完成後,母片(source image)就製作完了.
      5.再來將DRBL server設成撒母片的模式,執行dcs來切換成clonezilla-start -> clonezilla-restore-disk模式,然後程式會問你要選那個source image來複製到其他電腦,以本例而言,請選nomorems
      6.將所有客戶端電腦設成PXE開機或是etherboot開機,讓這些電腦由網路遠端開機,然後開啟所有客戶端電腦
      7.這些客戶端電腦經由遠端網路開機後,會開始將nomorems那個source image複製到自己的硬碟中
      8.如果這些客戶端的電腦是用PXE開機,那一切都沒問題,做完複製的動作之後電腦重新開機會由local硬碟開機。
      9.最後,將DRBL server切換成您要的模式,既然客戶端的電腦已經"再生"有作業系統了,一般來說就是在DRBL server將client開機的模式切換成local(dcs local)

    註: 使用Clonezill還原M$ Windows後,如何讓它啟動後用的hostname是不一樣的?請參考這裡