DRBL logo DRBL/Clonezilla進階使用 DRBL logo
Clonezilla : 有關Clonezilla的進階使用說明
  1. Clonezilla live與Clonezilla SE (Server Edition)原理與架構介紹
  2. Clonezilla box mode介紹
  3. Unicast, multicast, broadcast clone介紹與注意事項
  4. 利用virtualbox來做Clonezilla開發與測試環境
  5. PXE開啟Clonezilla live作法
  6. 我要怎麼自己從無到有做一個Clonezilla live ?
  7. 客製化Clonezilla live製作
  8. 有沒有可能把Clonezilla Live放到硬碟中來執行?
  9. 利用Clonezilla live作為Clonezilla SE用戶端的作業系統
  10. 使用Clonezilla live的開機參數來預先植入相關指令與動作
Clonezilla live與Clonezilla SE (Server Edition)原理與架構介紹
Clonezilla是以GNU/Linux為作業系統,然後搭配對應的印象工具程式(image tools),例如: partclone(預設), partimage(選用), ntfsclone(選用), dd等來存分割區的檔案系統。大量部署時另外搭配使用DRBL以及udpcast等程式來做批次化工作。
Clonezilla有兩個版本:
  • 免安裝的單機版還原系統Clonezilla live(使用CD/USB隨身碟開機)
  • 適合大量備份與還原的伺服器版再生龍Clonezilla SE(用戶端使用PXE網路開機)
Clonezilla SE適合來大量部署作業系統的時候使用,當然也適合單機備份還原使用。不過這樣的限制是一定要有一台DRBL伺服器,而且要被備份的電腦一定要能網路開機。由於GNU/Linux Live CD的成熟,將Clonezilla和GNU/Linux Live CD結合,達成免安裝就能備份還原單台電腦就非常實用。因此,我們結合Debian Live與Clonezilla,另外開發一個Clonezilla Live套件,專門就是用來單台電腦的還原與備份。Clonezilla Live可以放在光碟上,或者USB隨身碟等開機媒體。當然,Clonezilla live這樣的環境就不適合用來大量還原一個電腦教室,而且所能存的印象檔也可能會受限於開機媒體的儲存空間的大小。不過,如果要被備份的電腦可以連接網路,透過網路磁碟機,例如sshfs或是Samba(網路芳鄰),開機媒體的儲存空間大小的限制就可以打破,我們可以直接把印象檔的存取放在網路磁碟機上。
目前Clonezilla live有兩大分枝,作業系統部份我們採用Debian或者Ubuntu,兩者的比較表可以參考這裡:
  • 穩定版/測試版:採用Debian加上一些更新的程式所組成。這個版本使用的全部是自由軟體。
  • 替代版:採用Ubuntu所組成。這個版本的好處是核心與應用程式一般相對比較新,對於新的硬體與新版的作業系統支援可能會比較好。此外,這個替代版也包含了一些可以散播的不自由軟體。
Clonezilla SE就內建在DRBL環境中,因此,可以在以下的GNU/Linux套件上安裝:
  • Debian
  • Ubuntu
  • B2D,
  • RedHat Linux
  • Fedora Core
  • Mandrake, Mandriva
  • CentOS
  • Scientific Linux
  • SuSE, OpenSuSE
至於Clonezilla的印象檔是互通的,也就是Clonezilla live和Clonezilla SE都可以共用。
Clonezilla的印象檔事實上是放在一個目錄中,也就是印象檔名稱就是該目錄的名稱。以一個這樣的硬碟:



被Clonezilla存下來的印象檔目錄內容類似這樣:
-rw-r--r--   1 root root   64 2011-10-31 13:08 clonezilla-img
-rw-r--r--   1 root root    4 2011-10-31 13:08 disk
-rw-r--r--   1 root root  34K 2011-10-31 13:08 Info-dmi.txt
-rw-r--r--   1 root root  18K 2011-10-31 13:08 Info-lshw.txt
-rw-r--r--   1 root root 1.4K 2011-10-31 13:08 Info-lspci.txt
-rw-r--r--   1 root root  283 2011-10-31 13:08 Info-packages.txt
-rw-r--r--   1 root root   10 2011-10-31 13:08 parts
-rw-------   1 root root 227M 2011-10-31 13:07 sda1.ext4-ptcl-img.gz.aa
-rw-------   1 root root 2.3M 2011-10-31 13:08 sda5.ext4-ptcl-img.gz.aa
-rw-r--r--   1 root root   36 2011-10-31 13:06 sda-chs.sf
-rw-r--r--   1 root root 1.0M 2011-10-31 13:06 sda-hidden-data-after-mbr
-rw-r--r--   1 root root  512 2011-10-31 13:06 sda-mbr
-rw-r--r--   1 root root  434 2011-10-31 13:06 sda-pt.parted
-rw-r--r--   1 root root  310 2011-10-31 13:06 sda-pt.sf
-rw-r--r--   1 root root   53 2011-10-31 13:08 swappt-sda2.info

  • clonezilla-img是表示這個目錄是一個Clonezilla的印象檔,它的內容是文字說明而已。
  • disk是紀錄硬碟代號,例如"sda"。
  • Info-dmi.txt, Info-lshw.txt, Info-lspci.txt與Info-packages.txt分別是硬體DMI(Desktop Management Interface)的資訊(有dmidecode得到),lshw與lspci產生的硬體資訊,以及該image存的時候所使用到的相關packages名稱與版本號碼。
  • parts是紀錄分割區代號,例如"sda1 sda5"。
  • sda1.ext4-ptcl-img.gz.aa是分割區sda1的印象檔。
  • sda5.ext4-ptcl-img.gz.aa是分割區sda5的印象檔。
  • sda-chs.sf是紀錄硬碟sda的CHS值。
  • sda-hidden-data-after-mbr是硬碟中,介於MBR與第一個分割區中的資料,一般不使用,但亦有可能被某些還原程式(例如IBM thinkpad的F11還原功能鍵)拿來存所需的資料。
  • sda-mbr是存硬碟sda的MBR資料。
  • sda-pt.parted是紀錄硬碟sda的分割表,是parted的輸出格式。
  • sda-pt.sf是紀錄硬碟sda的分割表,採用sfdisk的格式。
  • swappt-sda2.info是"sda2"這個分割區的資訊,由於這是一個swap的分割區,因此我們不需要存資料,只需紀錄這個分割區的UUID與label。
Clonezilla box mode介紹
採用DRBL SSI模式的Clonezilla我們稱作Clonezilla box mode,基本上就是利用用戶端電腦的記憶體來降低伺服器的負載與網路頻寬。基本上這個模式是非常適合在大量部署環境中使用,一般只要用戶端電腦的記憶體有512 MB以上,使用起來都沒有問題。以此模式,我們曾經以一台IBM X40的筆記型電腦當伺服器,以一張網卡,還原一整個電腦教室40台的學生機,還原的速度約有600 MB/min到800 MB/min。
因此建議如果伺服器上DRBL安裝完成後,運作順暢的話,可以考慮將模式由Full Clonezilla模式改為Clonezilla box模式:
dcs -> more -> clonezilla-mode -> 1 使用再生龍盒模式
如下圖:


PS. DRBL SSI模式的細節請參考這裡
Unicast, multicast, broadcast clone介紹與注意事項
Clonezilla SE中,這3個模式使用的作法分別是:
  • unicast: 透過NFS讀取印象檔所有資料
  • multicast: 透過NFS判讀印象檔,透過udpcast來接收分割區的印象檔。
  • broadcast: 透過NFS判讀印象檔,透過udpcast來接收分割區的印象檔,而udpcast中特別使用參數"--broadcast"。
unicast和multicast/broadcast模式最大的差別是在於unicast模式中伺服器因為是透過NFS來提供檔案給每台用戶端電腦讀取,因此CPU與網路負載都會隨著用戶端機器的數目而增加。而multicast/broadcast模式用戶端只有在判讀印象檔的時候透過NFS到伺服器讀取印象檔。之後分割區的還原是透過udpcast來處理,因此,伺服器的CPU負載不太會隨用戶端機器數目增加而等量增加,而multicast/broadcast的封包是透過網路交換器來複製。因此只要網路交換器支援multicast的話,基本上Clonezila restore的時候運作就可以充份利用multicast這個功能。
至於multicast和broadcast模式之間的差別在於multicast模式下,只有加入multicast模式的用戶端才會收到封包,沒有加入的用戶端,會在硬體層級就把封包擋掉。而且網路交換器只會把封包送到有加入multicast模式的用戶端。這樣效率上當然會比較理想。然而,有些網路環境並不允許multicast模式存在,因此就可以退而求其次,使用broadcast。

PS. 有關udpcast更詳細的資訊可以參考upcast網頁:http://udpcast.linux.lu/
利用virtualbox來做Clonezilla開發與測試環境
這個作法類似"利用virtualbox來做drbl開發與測試環境"裡的作法,可以參考 這裡
當Virtualbox架設好了之後,可以直接下載Clonezilla live iso檔或者把我們的客製化產生的iso來掛載成virtualbox虛擬機器中的一個光碟機裡的碟片,就可以開始做測試了。
PXE開啟Clonezilla live作法
  1. 如果你已經有DRBL伺服器了,只要用drbl-sl指令,就可以將Clonezilla live放到用戶端的開機選單中。詳情請參考drbl-sl使用說明
  2. 如果是沒有DRBL伺服器,而是一般的PXE伺服器,請參考http://clonezilla.nchc.org.tw/clonezilla-live/livepxe.php 的說明
我要怎麼自己從無到有做一個Clonezilla live ?
  1. 下載clonezilla live 2.2.1-1 i686-pae版
  2. 用上述版本來開機(建議要有512 MB的記憶體),之後選擇好語言與鍵盤後,選擇"Start_Clonezilla" -> "device-image",然後掛載一個空間夠的分割區(必須是Linux的檔案系統,例如ext3, reiserfs等,不可用FAT或是NTFS的分割區)成為/home/partimag目錄來當工作目錄,建議選用local_dev,因為NFS之類的網路磁碟目錄和aufs/squashfs等相容性有些問題,製作的時候可能會失敗.
  3. 在選擇要備份硬碟/分割區或者還原的時候,選擇"exit",進入命令列
  4. 執行"sudo -i"或者"sudo su -"來轉換成root身份
  5. 如果網路還沒設定,可以執行"ocs-live-netcfg"來設定網路,以便待會製作Debian Live程式需要.
  6. cd /home/partimag/
  7. 如果/tmp/目錄可用空間少於500 MB,建議調整到至少500 MB,可以用類似這樣的指令來調整:
    mount -t tmpfs -o "nosuid,size=60%,mode=1777" tmpfs /tmp
    或者
    mount -t tmpfs -o "nosuid,size=524288000,mode=1777" tmpfs /tmp
  8. apt-get purge drbl clonezilla
  9. apt-get update
  10. 不要執行"apt-get dist-upgrade"或者"apt-get upgrade"來升級任何套件,要不然後續的步驟會無法繼續。
  11. apt-get -y install drbl clonezilla
  12. apt-get -y install live-build=3.0.5-1.drbl5 debootstrap genisoimage
  13. 如果你要使用debian sid來當Clonezilla的OS,使用的drbl live儲藏庫是experimental (-l e),使用的drbl 儲藏庫是unstable (-b unstable) 可以這樣執行:
    create-debian-live -l e -b unstable -d sid -m http://free.nchc.org.tw/debian -s http://free.nchc.org.tw/debian-security -i customized
    更長的例子,例如:
    create-debian-live -bt debootstrap -a 'firmware-linux-free live-boot=3.0.1-1.drbl4 live-config=3.0.23-1.drbl2 syslinux=3:6.02+dfsg-drbl2 extlinux=3:6.02+dfsg-drbl2 syslinux-common=3:6.02+dfsg-drbl2' -f 686-pae -l unstable -b unstable -d sid -m http://free.nchc.org.tw/debian -s http://free.nchc.org.tw/debian-security -g http://free.nchc.org.tw/drbl-core -k 3.11-2 -i customized
    其他執行的例子:
    如果你要特別版本的核心,只要確認Debian套件庫中有的話,例如你要3.11-1的核心,就這樣執行:
    create-debian-live -l u -b unstable -d unstable -k 3.11-1 -m http://free.nchc.org.tw/debian -s http://free.nchc.org.tw/debian-security -i customized
    或是你不要指定儲藏庫與核心的話,
    create-debian-live -l e -b unstable -i customized
    (-l u是說要使用DRBL套件庫中live-unstable (就同時包含了live-stable, live-testing, live-unstable分類的程式), -b unstable表示要使用DRBL套件庫中的unstable(也就包含stable, testing分類)。套件庫中的程式可以參考這裡http://free.nchc.org.tw/drbl-core/pool/drbl/).
    如果你要加入其他程式的話,例如firmware-bnx2,但是它是在Debian的non-free的分項中,你可以加入參數-a firmware-bnx2 -c "main non-free",也就是這樣執行:
    create-debian-live -l e -b unstable -a firmware-bnx2 -c "main non-free" -i customized
    順利的話,執行完後就會產生檔名為debian-live-for-ocs-customized.iso的Debian live。這個Debian Live我們就可以用來製作Clonezilla live.
    如果你不要選用特別版本的核心,而是讓程式自動選的話,就不需要下"-k $k_ver"參數,也就是執行:
    create-debian-live -l u -b unstable -d wheezy -i customized
    或者選用不同的儲藏庫分類
    create-debian-live -d wheezy -i customized
    更多create-debian-live的參數可以經由執行"create-debian-live --help"來查詢.
  14. 執行:
    ocs-iso -s --extra-boot-param "quiet" -j debian-live-for-ocs-customized.iso -i customized
    ocs-live-dev -c -s --extra-boot-param "quiet" -j debian-live-for-ocs-customized.iso -i customized
    就可以分別產生clonezilla-live-customized.iso與clonezilla-live-customized.zip的Clonezilla live了.
客製化Clonezilla live製作
Clonezilla內含幾個例子來自己做一個客製化的Clonezilla live,檔案有:
  1. /usr/share/drbl/samples/custom-ocs: 讓使用者可以選擇
    • 將印象檔從/dev/hda1(或者/dev/sda1)備份到/dev/hda5(或者/dev/sda5)
    • 將印象檔從/dev/hda5(或者/dev/sda5)還原到/dev/hda1(或者/dev/sda1)
  2. /usr/share/drbl/samples/custom-ocs-1: 掛載網路芳鄰的印象檔伺服器,然後選擇印象檔來還原。

這裡我們以/usr/share/drbl/samples/custom-ocs-1為例:
### BEGIN ###
#!/bin/bash
# Author: Steven Shiau 
# License: GPL
#
# In this example, it will allow your user to use clonezilla live to choose 
# (1) A samba server as clonezilla home image where images exist.
# (2) Choose an image to restore to disk.

# When this script is ready, you can run
# ocs-iso -g en_US.UTF-8 -k NONE -s -m ./custom-ocs-1
# to create the iso file for CD/DVD. or
# ocs-live-dev -g en_US.UTF-8 -k NONE -s -c -m ./custom-ocs-1
# to create the zip file for USB flash drive.

# Begin of the scripts:
# Load DRBL setting and functions
DRBL_SCRIPT_PATH="${DRBL_SCRIPT_PATH:-/usr/share/drbl}"

. $DRBL_SCRIPT_PATH/sbin/drbl-conf-functions
. /etc/drbl/drbl-ocs.conf
. $DRBL_SCRIPT_PATH/sbin/ocs-functions

# load the setting for clonezilla live.
[ -e /etc/ocs/ocs-live.conf ] && . /etc/ocs/ocs-live.conf
# Load language files. For English, use "en_US.UTF-8". For Traditional Chinese, use "zh_TW.UTF-8"
ask_and_load_lang_set en_US.UTF-8

# The above is almost necessary, it is recommended to include them in your own custom-ocs.
# From here, you can write your own scripts.

# 1. Configure network
# If you are sure there is a DHCP server, you can use "dhclient -v eth0" instead of ocs-live-netcfg.
ocs-live-netcfg

# 2. Mount the clonezilla image home. Available types:
# local_dev, ssh_server, samba_server, nfs_server
prep-ocsroot -t samba_server

# 3. Restore the image
if mountpoint $ocsroot &>/dev/null; then
  ocs-sr -g auto -e1 auto -e2 -c -r -j2 -p choose restoredisk "ask_user" "ask_user"
else
  [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
  echo "Fail to find the Clonezilla image home $ocsroot!"
  echo "Program terminated!"
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
fi

#
umount $ocsroot &>/dev/null
### END ###

有了這個客製化的程式,我們就可以產生一個自己客製化的Clonezilla live。依照上例,我們改成不是掛載samba伺服器,而是ssh伺服器:
  • cp /usr/share/drbl/samples/custom-ocs-1 custom-ocs-1
  • gedit custom-ocs-1
    將"prep-ocsroot -t samba_server"改成"prep-ocsroot -t ssh_server"
  • 下載要使用的Clonezilla live的版本,例如我們要這個修改後的custom-ocs-1結合Clonezilla live 20130409-quantal-i386,就下載clonezilla-live-20130409-quantal-i386.iso:
    wget http://free.nchc.org.tw/clonezilla-live/alternative/testing/20130409-quantal/clonezilla-live-20130409-quantal-i386.iso
  • 確認clonezilla程式的版本號碼(非clonezilla live版本)>= 3.3.32-drbl1。
  • 產生CD/DVD用的iso檔案,檔名是clonezilla-live-mine.iso:
    ocs-iso -g zh_TW.UTF-8 -k NONE -s -m ./custom-ocs-1 -j clonezilla-live-20130409-quantal-i386.iso -i mine
  • 產生USB隨身碟用的zip檔案, 檔名是clonezilla-live-mine.zip:
    ocs-live-dev -g zh_TW.UTF-8 -k NONE -s -c -m ./custom-ocs-1 -j clonezilla-live-20130409-quantal-i386.iso -i mine
有沒有可能把Clonezilla Live放到硬碟中來執行?
可.
請參考這裡
利用Clonezilla live作為Clonezilla SE用戶端的作業系統

從DRBL 1.9.6-15之後,你可以使用Clonezilla live來當作伺服器版再生龍(Clonezilla SE)的用戶端的作業系統。這樣做有幾個好處:

  • 基本上伺服器只需提供DHCP與tftp服務讓用戶端可以PXE開機即可。而且只要在伺服器上提供三個檔案給用戶端開機即可。因此要升級用戶端的作業系統與程式非常的容易。
  • 伺服器上的本身的作業系統檔案與用戶端的檔案是分開,各自獨立的。因此不會因為用戶端需要某些版的程式,造成有可能要更新整個伺服器作業系統的困擾。
  • 印象檔的儲藏庫可以是多種型態的,例如NFS, Samba,或者ssh服務。
  • 更靈活,Clonezilla live提供很多開機參數,必要的話,可以充分利用。
如何作到:
  1. 依照這個文件來安裝drbl (drbl >= 1.9.6-15)。
  2. 記得設定好所有網卡的網路設定,如這個文件中所描述
  3. 完成步驟1與2後,假設場景是: 需要一台Clonezilla伺服器,使用i686版本的Clonezilla live作為用戶端的作業系統,伺服器每張網卡提供最多40台用戶端,可以這樣執行:

    drbl4imp -p 40 -r 1 -z 3 -u 1

    上述指令的相關參數:
    • -p NO 指定伺服器每張網路卡連接用戶端的最高數目。
    • -r [0|1|2] 指定DRBL的模式 (0: 完整DRBL模式, 1: DRBL SSI 模式, 2: 不提供用戶端無碟環境)。預設是0。
    • -u [0|1|2] 指定用戶端使用Clonezilla live時候的CPU架構 (0: i486, 1: i686, 2: amd64)。 這個參數要搭配參數 -z = 3。
    • -z [0|1|2|3] 指定Clonezilla的模式 (0: 完整再生龍模式, 1: 再生龍盒模式 2: 不提供用戶端再生龍模式, 3: 使用Clonezilla live做用戶端的作業系統)。預設是0。
    更多drbl4imp的參數,可以執行: "drbl4imp --help"來取得。

    如果你還是比較喜歡用drblsrv與drblpush來設定DRBL/Clonezilla SE伺服器, 請參考這裡.

  4. 以上動作設定完畢後,剩下的使用方式就跟原本Clonezilla SE的使用方式相同,亦即你可以使用 dcs來進入clonezilla-start模式,或者使用drbl-ocs來做Clonezilla相關動作。

///注意///
  1. 如果你要使用詳細一點的模式來設定DRBL伺服器,你可以執行"drblsrv -i"與"drblpush -i",依照提示來設定。但是當drblpush問你要使用哪種再生龍模式時,記得選"3"來"使用Clonezilla live當作用戶端執行Clonezilla工作的作業系統", 然後你將會被要求選擇用戶端的CPU架構.
  2. 如果你的印象檔儲藏庫在其他機器上,你可以編輯/etc/drbl/drbl-ocs.conf的"ocs_prerun_for_pxe_ocs_live"這個參數(例如ocs_prerun_for_pxe_ocs_live="mount -t nfs 192.168.200.254:/images /home/partimag/"),所以當drblpush執行的時候,它會幫你產生"ocs_prerun"的對應參數,然後放在/tftpboot/nbi_img/pxelinux.cfg/default。這樣用戶端開機後,就會自動掛載那台儲藏庫。
  3. 如果你要用不同的Clonezilla live版本來做用戶端的作業系統,可以這樣做:
    1. 下載你要的Clonezilla live版本 (限定1.2.5-15, 20100521-lucid或者之後的版本)。本例中我們使用"clonezilla-live-20100921-lucid.iso"當作例子。
    2. 下載clonezilla-live-20100921-lucid.iso之後,在該iso檔存在目錄,執行: "drbl-ocs-live-prep -i clonezilla-live-20100921-lucid.iso"。執行完畢後,Clonezilla SE就會使用clonezilla-live 20100921-lucid當作用戶端的作業系統來執行Clonezilla相關的工作。
  4. 用戶端PXE開機的選單設定如下(群播還原):

    label Clonezilla-live
    MENU DEFAULT
    # MENU HIDE
    MENU LABEL Clonezilla: multicast restore lucid-x86-release to disk sda
    # MENU PASSWD
    KERNEL Clonezilla-live-vmlinuz
    APPEND initrd=Clonezilla-live-initrd.img boot=live noswap nolocales edd=on ocs_live_extra_param="" ocs_live_keymap="NONE" ocs_live_batch="no" ocs_lang="en_US.UTF-8" ip=frommedia nosplash noprompt netboot=nfs nfsroot=192.168.120.254:/tftpboot/node_root/clonezilla-live/ ocs_server="192.168.120.254" ocs_daemonon="ssh" ocs_prerun="mount -t nfs 192.168.120.254:/home/partimag /home/partimag/" ocs_live_run="ocs-sr --language en --batch -g auto -e1 auto -e2 -r --clone-hidden-data -p reboot --max-time-to-wait 300 --mcast-port 2232 multicast_restoredisk lucid-x86-release sda"

    TEXT HELP
    Clonezilla Live 1.2.5-15-i686 runs on RAM
    ENDTEXT

  5. 如果你要在用戶端執行clonezilla動作之前或者之後做其他動作(亦即啟動clonezilla SE時,選-o0或者-o1),可以搭配使用開機參數ocs_prerun*來取得相關檔案。要不然Clonezilla live裡面不會內建你自己客製化的檔案。例如ocs_prerun1="wget http://path-to-files/files -P /usr/share/drbl/prerun/ocs/",這樣用戶端開機後,在執行clonezilla動作之前,會下載你的程式,放在/usr/share/drbl/prerun/ocs/ 。然後再用另外一個參數ocs_prerun2="chmod 755 /usr/share/drbl/prerun/ocs/*"來改變檔案的模式。
    更多的開機參數可以在這裡找到。

使用Clonezilla live的開機參數來預先植入相關指令與動作
利用開機參數(boot parameter),我們可以預先植入相關指令與動作,例如將語言選擇為正體,中文鍵盤選擇為美式鍵盤,甚至預先掛載好印象檔的儲藏庫等。 詳細的開機參數列表在這裡
舉例而言,我們要將語言設定為正體中文,鍵盤不改變配置(預設為美式鍵盤),開機後自動取得DHCP伺服器的IP位址,然後掛載NFS伺服器上的/home/partimag為/home/partimag,那麼這些開機參數可以這樣設定:
ocs_lang="zh_TW.UTF-8"
ocs_live_keymap="NONE"
ocs_prerun1="dhclient eth0"
ocs_prerun2="mount -t nfs 192.168.120.254:/home/partimag /home/partimag"

Last modified: July 03 2024 01:41:10.