許多企業或個人用戶用鏡射(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 那行移除或註解起來。
[24]請參考下面範例,並根據新磁碟修改其它的檔案系統資訊:
# 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),重編並安裝核心。 這應該能解決這個問題。
All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.