對大容量儲存設備而言,最關鍵的要素乃是速度、可靠性及價格。 然而這三者往往難以兼顧:快速可靠的設備通常很貴; 而降低成本通常也犧牲了速度或可靠性。
接下來要介紹的系統,價格是最重要的考量,接下來是速度, 最後才是可靠性。 順序如此是因為資料傳輸的速度最終取決於網路, 而儘管可靠性十分重要,卻有簡單的取代方案: 將資料完整備份於 CD-R 中。
選擇大容量儲存設備方案時,首先要定義您的需求。 如果您重視速度或可靠性甚於價格,接下來的介紹恐非您所需。
除了系統磁碟外,下面介紹的 CCD 磁碟陣列將使用到三顆 30GB、 5400 RPM 的 Western Digital IDE 磁碟,以提供約 90GB 的儲存空間。 最理想的情況是每個磁碟由獨立使用的排線連接獨立使用的 IDE 控制器, 不過為了降低成本,利用 jumper 設定磁碟,使每個 IDE 控制器可連接 一個主磁碟加一個副磁碟,如此可不必加裝額外的 IDE 控制器。
開機後,BIOS 應該設定成自重偵測磁碟。更重要的是 FreeBSD 應該 要偵測到它們:
ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33 ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33 ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33 ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33
注: 如果 FreeBSD 沒有偵測到所有磁碟,請確認 jumper 都設定正確。 許多 IDE 磁碟可以設定成 “Cable Select” (根據排線位置決定),這並非 master(主磁碟) 或 slave(副磁碟)。 請參閱磁碟的說明文件以正確設定 jumper 。
接下來,考慮如何將它們變成檔案系統的一部份。您可以參考 vinum(8)(µÚ 20 章) 及 ccd(4)。 在此我們選擇 ccd(4)。
ccd(4) 可以將多個磁碟接起來成為一個大磁碟。要使用 ccd(4),您的 kernel 需要支援 ccd(4)。將這行加入到 kernel 設定檔,並重編、重安裝 kernel:
device ccd
也可以載入 kernel 動態模組來支援 ccd(4)。
使用 ccd(4) 請先用 bsdlabel(8) 來初始磁碟:
bsdlabel -r -w ad1 auto bsdlabel -r -w ad2 auto bsdlabel -r -w ad3 auto
上述指令會建立 ad1c, ad2c 和 ad3c, 這些 bsdlabel 都使用了整個磁碟。
下一步是修改 label type,同樣用 bsdlabel(8) 來處理:
bsdlabel -e ad1 bsdlabel -e ad2 bsdlabel -e ad3
這個指令會打開一個編輯器(預設是 vi(1),可以用 EDITOR 環境變數來指定其它編輯器),並將目前磁碟的 label 資訊顯示在該編輯器裡。
一個還未變動過的磁碟 label 資訊看起來會像這樣:
8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)
在此我們要新增一個 e partition 給 ccd(4) 使用。 通常複製
c partition 那一行, 再把 fstype
那一行改成 4.2BSD
就可以了。 改完之後看起來應該會像這樣:
8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597) e: 60074784 0 4.2BSD 0 0 0 # (Cyl. 0 - 59597)
現在所有的磁碟都已經建好 bsdlabel 了,可以開始建立 ccd(4)。 用 ccdconfig(8) 來建立 ccd(4),參考下面的指令:
ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e
每個參數的作用如下:
執行 ccdconfig(8) 之後,ccd(4) 已設定完成可供建立檔案系統。 請參考 newfs(8) 或輸入:
newfs /dev/ccd0c
通常您會希望每次開機時都能自動掛上(mount) ccd(4)。 用下面的指令將您目前的設定寫入 /etc/ccd.conf :
ccdconfig -g > /etc/ccd.conf
如果 /etc/ccd.conf 存在,每次開機時 /etc/rc 都會執行 ccdconfig -C 。 如此便可自動設定 ccd(4) 以便之後掛上(mount)檔案系統。
要在每次開機時自動掛上(mount) ccd(4),請在 /etc/fstab 加入 ccd(4):
/dev/ccd0c /media ufs rw 2 2
Vinum 容量管理系統(以下簡稱 Vinum) 可視為一種虛擬磁碟。 它將區塊裝置(block device) 的介面與對應資料的方式切割開來,比起原本 slice 劃分的磁碟,Vinum 可增加了彈性、效能和穩定度 [1] vinum(8) 實作了 RAID-0、RAID-1 和 RAID-5 等模組, 它們都可以單獨使用,也可以互相搭配使用。
FreeBSD 也支援許多硬體 RAID 控制器。 這些控制器自行掌控一個小型的 RAID 系統, 因此不需要特定軟體來管理。
透過控制器上的 BIOS 幾乎能控制所有的操作。 接下來將簡單介紹如何設定 Promise IDE RAID 控制卡。首先確認控制卡已安裝,接著開機。 它應該會提示一些資訊[2]。依指示進入控制卡的設定畫面, 從這裡您可以將全部的硬體結合成一個大磁碟。完成之後,FreeBSD 將只會看到這個大磁碟。當然您也可以使用其它的 RAID 模式。
FreeBSD 允許您熱插拔磁碟陣列裡壞掉的磁碟, 當然在重開機前就得先發現。
也許您會在 /var/log/messages(或 dmesg(8) 的輸出) 看到類似下面的訊息:
ad6 on monster1 suffered a hard error. ad6: READ command timeout tag=0 serv=0 - resetting ad6: trying fallback to PIO mode ata3: resetting devices .. done ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\ status=59 error=40 ar0: WARNING - mirror lost
請用 atacontrol(8) 來得到更多資訊:
# atacontrol list ATA channel 0: Master: no device present Slave: acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0 ATA channel 1: Master: no device present Slave: no device present ATA channel 2: Master: ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present ATA channel 3: Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present # atacontrol status ar0 ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED
首先您得將損壞磁碟所在的 ata channel 卸載(detach), 如此才能安全地移除:
# atacontrol detach ata3
用好的磁碟換下損壞的。
重新載入(re-attach) ata channel:
# atacontrol attach ata3 Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present
將新的磁碟加入原本的磁碟陣列成為備援(spare) 磁碟:
# atacontrol addspare ar0 ad6
重建磁碟陣列:
# atacontrol rebuild ar0
可以用下面指定來確認重建的進度:
# dmesg | tail -10 [output removed] ad6: removed from configuration ad6: deleted from ar0 disk1 ad6: inserted into ar0 disk1 as spare # atacontrol status ar0 ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed
等重建完就完成了。
[1] |
譯註:原文這裡是用「和」,但要視實際使用方式而定。 例如用 RAID-0 就不會增加穩定度 :)。 |
[2] |
譯註:例如按 F1 可以進入控制卡 BIOS 之類的資訊。 |
本文及其他文件,可由此下載:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢 <doc@FreeBSD.org>。