許多企業或個人用戶用鏡射(mirroring) 來不中斷系統進行備份。 鏡射簡單來說就是在 B 磁碟上重覆一份 A 磁碟的資料, 或者 C+D 磁碟重覆 A+B 磁碟的資料。不論設定如何, 最重要的是所有磁碟或分割區(partition) 上的資料都會被複製, 之後可在不中斷服務的情況下復原、備份資料,使儲存的資料更安全。
開始之前,請先確定系統上有兩個容量相同的磁碟, 後面的範例假設這兩顆磁碟是 direct access(da(4)) SCSI 磁碟。
首先我們假設 FreeBSD 安裝在第一個磁碟上,且只有兩個分割區(partition)。 其中一個是交換分割區(swap partition,大小為 RAM 的兩倍),而剩下的全用於根目錄(即 /, root file system)。當然要在不同掛載點(mount point) 切出更多分割區 (partition) 也可以,不過難度會大幅提升,因為必須手動操作 bsdlabel(8) 和 fdisk(8) 工具。
重開機並等到系統完全初始化完畢,用 root 登入。
建立 /dev/mirror/gm 裝置並以 /dev/da1 連結:
# gmirror label -vnb round-robin gm0 /dev/da1
這時系統應該會回應:
Metadata value stored on /dev/da1. Done.
初始化 GEOM,這動作會自動載入 /boot/kernel/geom_mirror.ko kernel module:
# gmirror load
注: 這動作應該會在 /dev/mirror 下建立 gm0 裝置結點(device node)。
在這個新建的 gm0 裝置上安置一般的 fdisk label 和開機磁區:
# fdisk -vBI /dev/mirror/gm0
接著安置 bsdlabel 資訊:
# bsdlabel -wB /dev/mirror/gm0s1
注: 如果存在多個 slice 和分割區(partition), 記得修改上兩指令的參數,且另一個磁碟上的 slice 和分割區(partition) 大小必須相同。
用 newfs(8) 工具在 gm0s1a 裝置結點建立預設的檔案系統:
# newfs -U /dev/mirror/gm0s1a
系統會印出許多資訊和一大堆數字,這是正常的。 確認是否有認何錯誤,接著就可以將這個裝置掛載到 /mnt 掛載點(mount mount):
# mount /dev/mirror/gm0s1a /mnt
接著將原本開機磁碟的資料搬移到新的檔案系統 (/mnt)。範例是用 dump(8) 和 restore(8) ,不過用 dd(1) 也可以。
# dump -L -0 -f- / |(cd /mnt && restore -r -v -f-)
執行上述指令時,只要將恰當的檔案系統掛在正確的位置,應該就能成功。
接著編輯 /mnt/etc/fstab 檔將 swap file 那行移除或註解起來。 [1]請參考下面範例,並根據新磁碟修改其它的檔案系統資訊:
# Device Mountpoint FStype Options Dump Pass# #/dev/da0s2b none swap sw 0 0 /dev/mirror/gm0s1a / ufs rw 1 1
在目前的根目錄及新的根目錄建立 boot.conf 檔案, 這個檔案可以『幫助』系統 BIOS 開機:
# echo "1:da(1,a)/boot/loader" > /boot.config
# echo "1:da(1,a)/boot/loader" > /mnt/boot.config
注: 在兩個根目錄上都新增檔案是為了安全起見, 如果因為某些原因新的根目錄無法開機,至少還可用原本的根目錄。
接著在 /boot/loader.conf 新增兩行:
# echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf
這會指示 loader(8) 在開機時載入 geom_mirror.ko kernel module。
重開機:
# shutdown -r now
如果一切順利,系統應該會從 gm0s1a 裝置開機, 接下來出現 login 提示畫面。如果出錯了, 請參閱下面 Troubleshooting 那一節。 現在可以將 da0 磁碟加入 gm0 裝置:
# gmirror configure -a gm0 # gmirror insert gm0 /dev/da0
其中 -a
旗標告訴 gmirror(8)
使用「自動同步(automatic synchronization)」,例如自動同步寫入磁碟的動作。 manual
說明了如何重建、取代磁碟等,不過 manual 裡的範例是用 data
而不是 gm0。
如果開機提示類似這樣:
ffs_mountroot: can't find rootvp Root mount failed: 6 mountroot>
請用機器面板上的 Power 按鈕或 reset 按鈕來重開機,並在開機選單選 (6), 這樣子,系統就會進入 loader(8) 交談模式。這時候,請照下面指令來手動載入所需的 kernel module ,也就是 geom_mirror.ko:
OK? load geom_mirror.ko OK? boot
如果這樣成功了的話,表示因為某些原因無法自動載入 kernel module。 請將:
options GEOM_MIRROR
加入到核心設定檔(kernel configuration file),重編並安裝核心。 這應該能解決這個問題。
[1] |
請注意,將 fstab 的 swap file 那行註解起來,通常表示:您得用別的方法來重建 swap。詳情請參考 µÚ 11.14 節。 |
本文及其他文件,可由此下載:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢 <doc@FreeBSD.org>。