對大容量儲存設備而言,最關鍵的要素乃是速度、可靠性及價格。 然而這三者往往難以兼顧:快速可靠的設備通常很貴; 而降低成本通常也犧牲了速度或可靠性。
接下來要介紹的系統,價格是最重要的考量,接下來是速度, 最後才是可靠性。 順序如此是因為資料傳輸的速度最終取決於網路, 而儘管可靠性十分重要,卻有簡單的取代方案: 將資料完整備份於 CD-R 中。
選擇大容量儲存設備方案時,首先要定義您的需求。 如果您重視速度或可靠性甚於價格,接下來的介紹恐非您所需。
除了系統磁碟外,下面介紹的 CCD 磁碟陣列將使用到三顆 30GB、 5400 RPM 的 Western Digital IDE 磁碟,以提供約 90GB 的儲存空間。 最理想的情況是每個磁碟由獨立使用的排線連接獨立使用的 IDE 控制器, 不過為了降低成本,利用 jumper 設定磁碟,使每個 IDE 控制器可連接 一個主磁碟加一個副磁碟,如此可不必加裝額外的 IDE 控制器。
開機後,BIOS 應該設定成自重偵測磁碟。更重要的是 FreeBSD 應該 要偵測到它們:
如果 FreeBSD 沒有偵測到所有磁碟,請確認 jumper 都設定正確。 許多 IDE 磁碟可以設定成 “Cable Select” (根據排線位置決定),這並非 master(主磁碟) 或 slave(副磁碟)。 請參閱磁碟的說明文件以正確設定 jumper 。
接下來,考慮如何將它們變成檔案系統的一部份。您可以參考 vinum(8)(章 20, The Vinum Volume Manager) 及 ccd(4)。 在此我們選擇 ccd(4)。
ccd(4) 可以將多個磁碟接起來成為一個大磁碟。要使用 ccd(4),您的 kernel 需要支援 ccd(4)。將這行加入到 kernel 設定檔,並重編、重安裝 kernel:
也可以載入 kernel 動態模組來支援 ccd(4)。
使用 ccd(4) 請先用 bsdlabel(8) 來初始磁碟:
上述指令會建立 ad1c
,
ad2c
和 ad3c
,
這些 bsdlabel 都使用了整個磁碟。
下一步是修改 label type,同樣用 bsdlabel(8) 來處理:
這個指令會打開一個編輯器(預設是 vi(1),可以用
EDITOR
環境變數來指定其它編輯器),並將目前磁碟的 label
資訊顯示在該編輯器裡。
一個還未變動過的磁碟 label 資訊看起來會像這樣:
在此我們要新增一個 e
partition 給
ccd(4) 使用。 通常複製 c
partition 那一行,
再把 fstype
那一行改成
4.2BSD
就可以了。
改完之後看起來應該會像這樣:
現在所有的磁碟都已經建好 bsdlabel 了,可以開始建立 ccd(4)。 用 ccdconfig(8) 來建立 ccd(4),參考下面的指令:
每個參數的作用如下:
第一個參數是要設定的裝置名稱,在這個例子裡是
| |
「interleave」的大小。所謂 interleave 是指一排磁碟區塊 (disk block)的大小,通常以 512 bytes 為單位,所以 interleave 設為 32 即為 16,384 bytes。 | |
ccdconfig(8) 設定模式的參數。如果您打算啟用磁碟鏡設 (drive mirroring),您可以在此指定參數。這個例子沒有使用鏡設, 所以設成 0。 | |
ccdconfig(8) 最後的參數是要加入到陣列的所有磁碟。 請使用完整的路徑。 |
執行 ccdconfig(8) 之後,ccd(4) 已設定完成可供建立檔案系統。 請參考 newfs(8) 或輸入:
Vinum 容量管理系統(以下簡稱 Vinum) 可視為一種虛擬磁碟。 它將區塊裝置(block device) 的介面與對應資料的方式切割開來,比起原本 slice 劃分的磁碟,Vinum 可增加了彈性、效能和穩定度 [21] vinum(8) 實作了 RAID-0、RAID-1 和 RAID-5 等模組, 它們都可以單獨使用,也可以互相搭配使用。
請見 章 20, The Vinum Volume Manager 以參考更多關於 vinum(8) 的資訊。
FreeBSD 也支援許多硬體 RAID 控制器。 這些控制器自行掌控一個小型的 RAID 系統, 因此不需要特定軟體來管理。
透過控制器上的 BIOS 幾乎能控制所有的操作。 接下來將簡單介紹如何設定 Promise IDE RAID 控制卡。首先確認控制卡已安裝,接著開機。 它應該會提示一些資訊[22]。依指示進入控制卡的設定畫面, 從這裡您可以將全部的硬體結合成一個大磁碟。完成之後,FreeBSD 將只會看到這個大磁碟。當然您也可以使用其它的 RAID 模式。
FreeBSD 允許您熱插拔磁碟陣列裡壞掉的磁碟, 當然在重開機前就得先發現。
也許您會在 /var/log/messages
(或 dmesg(8)
的輸出) 看到類似下面的訊息:
請用 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等重建完就完成了。
本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀
FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢
<doc@FreeBSD.org>。