Clonezilla Live in DRBL

某一次我將DRBL Server從舊型的主機板移到新型的主機板上,過程中遇到了不少奇怪的問題。可能是由於新主機板用到比較新的晶片且速度較快。這是我移機一開始所碰到的兩個問題:

  • 我掛載硬碟到備份還原使用的/home/partimag/上。Client在備份還原時,有時/home/partimag會是掛載之前的資料,導致找不到對應的images。後來我透過mount指令,發現/home在/home/partimag後才mount。所以我透過修改client的/etc/fstab,並將mount /home給註解,又稱了好幾天。
  • 回原時常出現unable to find target partition “sda1”,還原就因此中斷。這都發生在RHEL系列的作業系統要還原到其它種類作業系統時。在那之後檢查/dev/sda1的確是不存在的,但卻出現/dev/dm-0與/dev/dm-1。

和DRBL作者Steven討論我發現的情況後,猜測可能是Ubuntu Kernel反應不及與平行開機的問題,於是他建議我更新Ubuntu Kernel且透過Clonezilla Live的方式去做備份還原。

要使用Clonezilla Live 模式,一樣執行/opt/drbl/sbin/drblpush -i去做config。照之前的選擇直到選擇DRBL的模式,讓我們選擇3: Clonezilla Live模式:

接著選擇要使用的版本。由於我們的版子都使用比較新的晶片,因此我選擇用Ubuntu-based的Clonezilla Live image:

在之後的DRBL設定步驟中,它會自行去下載最新的Clonezilla Live image下來安裝。

在上述配置後,一般的User應該都可以正常使用了。但是我卻又碰到兩個問題(多災多難):

  • 網路不通,無法透過NFS掛載Server上的image資料夾。後來透過dmesg | grep eth指令檢查網卡相關資訊,並發現它的script會在多張網卡情況下發生問題。在發生這問題後,Steven也很有意思,沒多久就改了新版給我,確實也可以解決這個問題。更新它給我的iso,是透過這個指令:
    /opt/drbl/sbin/drbl-ocs-live-prep -i clonezilla-live-1.2.11-47-i686-pae.iso

  • 雖然現在多張網卡雖然都被找到,但依然無法掛載NFS。我的網路卡eth0是公司網路,eth1是DRBL網路,從螢幕上發現它只啟動了eth0就去掛載eth1網段的nfs,當然會有問題!後來我透過修改它xpe的設定,多加入了live-netdev,並指定為eth1。主要原因是/scripts/live-premount/select_eth_device會去確認這個參數。
    APPEND initrd=Clonezilla-live-initrd.img boot=live hostname=oneiric config quiet noswap nolocales edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch="no" ocs_lang="" video=uvesafb:mode_option=800x600-16 nosplash noprompt netboot=nfs nfsroot=10.68.0.254:/tftpboot/node_root/clonezilla-live/ ocs_server="10.68.0.254"

一直這樣執行好幾個月都非常的順利。直到最近又因為手賤去更新Clonezilla Live才又無法正常執行,出現錯誤是sudo locales tzdata upstart-tty keyboard-configuration initramfs-tools unil-linux login openssh-server umountfs.。只要在pxe append內加入ip=frommedia就解決了。

用了Clonezilla Live後,果然順了很多。這次變更也讓我知道: 在穩定的時候,不要亂改設定與硬體阿!

友藏內心獨白: 哼哼! 我算DRBL忠實User吧?

為了支援新板子,在更新20180812-bionic clonezilla live後,發生This Live System image failed to boot的問題。這個問題是由於較新的linux kernel會根據網卡的種類去顯示裝置名稱,原本的eth*會變成eno*,導致指定live-netdev會有問題。經過實驗,只要加入以下參數,就可以讓名稱維持eth開頭:

net.ifnames=0

在順利讀取clonezilla live後,會卡在keyboard configuration的畫面,可以加以下參數讓它直接使用預設keybaord layout:

keyboard-layouts=NONE

除此之外,由於我有兩張網卡,但我發現drbl使用非預期的網卡ip去mount nfs。針對這個問題,可以修改/opt/drbl/conf/drbl-ocs.conf:

ocs_prerun_for_pxe_ocs_live="mount -t nfs 10.68.0.254:/home/drbl_partimag/ /home/partimag"

它預設會使用第一張網卡的IP。

APPEND initrd=Clonezilla-live-initrd.img boot=live hostname=bionic config quiet noswap nolocales edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch="no" ocs_lang="" video=uvesafb:mode_option=800x600-16 nosplash noprompt netboot=nfs nfsroot=10.68.0.254:/tftpboot/node_root/clonezilla-live/ ocs_server="10.68.0.254" live-netdev=eth1 ip=frommedia net.ifnames=0 keyboard-layouts=NONE

APPEND initrd=Clonezilla-live-initrd.img boot=live union=aufs noswap noprompt nolocales vga=788 netboot=nfs nfsroot=10.68.0.254:/tftpboot/node_root/clonezilla-live/ ocs_server="10.68.0.254" net.ifnames=0 live-netdev=eth1 keyboard-layouts=NONE