軟體RAID還是硬體RAID好呢?這要端看所使用的地方以及其用途,我個人覺得想省錢的中小企業就蠻適合採用軟體Raid機智,軟體Raid的優點是在於免花錢購買Raid卡也因此就沒有Raid卡掛點的擔優,而硬體Raid卡若掛點恐怕重要資料要救援就麻煩。軟體Raid也有缺點它會損耗CPU的運算資源,因此其效能會比較差些所以比較適合想省錢又不需要高效能的環境。我個人比較偏愛軟體Raid,雖然它犧牲掉一些CPU資源但對系統管理者來說往後的維護也較能自行掌握。FreeBSD 是一套設計相當優良的OS它所納入的軟體Raid相當穩定同時也非常便利使用,下面紀錄了如何在FreeBSD中使用 gmirror 建立軟體Raid 1格式的FreeBSD開機系統。
1. 建立第一顆HD為 Raid-1 mirror 型態
※ 安裝完 FreeBSD 後先別重開機按 Alt + F4 便可進入 commend mode 下。
# csh # 接著給個 C SHELL
# sysctl kern.geom.debugflags=17 # 設 17 才能將 Metadata 寫入 ad0
kern.geom.debugflags: 0 -> 17
# gmirror label -v -b round-robin gm0 /dev/ad0 # 建立 gm0 同時寫入 Metadata
# echo geom_mirror_load="YES" > /boot/loader.conf # 建立開機立即載入 /boot/kernel/geom_mirror.ko
# cp /etc/fstab /etc/fstab.orig # 備份原本 fstab
# vi /etc/fstab # 將所有 ad 改為 gm 同時添加 mirror 修改後如下
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1d /home ufs rw 2 2
# reboot # 重開機
# mount # 查看掛載的 HD
/dev/mirror/gm0s1a on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
/dev/mirror/gm0s1d on /home (ufs, local, soft-updates)
2. 插入第二顆 HD ad1 到 gm0 中
# gmirror forget gm0 # 忽略 gm0 中沒有連線的實體裝置
# gmirror insert gm0 /dev/ad1 # 將新的硬碟(eg. ad0) 加入 gm0
# gmirror status # 剛 insert 新硬碟時會顯示 DEGRADED 因為還在同步,同步完成後顯示 COMPLETE
Name Status Components
mirror/gm0 DEGRADED ad0
ad1 (4%)
# gmirror list # ad1 的 Flags: 會 SYNCHRONIZING 一段時間要看硬碟大小決定
Geom name: gm0
State: DEGRADED
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 2949628385
Providers:
1. Name: mirror/gm0
Mediasize: 20546759168 (19G)
Sectorsize: 512
Mode: r4w3e8
Consumers:
1. Name: ad0
Mediasize: 20546759680 (19G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: NONE
GenID: 0
SyncID: 1
ID: 2966051479
2. Name: ad1
Mediasize: 20547841536 (19G)
Sectorsize: 512
Mode: r1w1e1
State: SYNCHRONIZING
Priority: 0
Flags: DIRTY, SYNCHRONIZING
GenID: 0
SyncID: 1
Synchronized: 67%
ID: 2490835271
3. 永久移除 gmirror 中的某顆 HD
# gmirror remove gm0 ad0 # 移除實體裝置(eg. ad0)
# gmirror status # 查看狀態
Name Status Components
mirror/gm0 COMPLETE ad1
# gmirror list # gm0 中只剩下 ad1,系統依然持續運作
Geom name: gm0
State: COMPLETE
Components: 1
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 2949628385
Providers:
1. Name: mirror/gm0
Mediasize: 20546759168 (19G)
Sectorsize: 512
Mode: r3w3e8
Consumers:
1. Name: ad1
Mediasize: 20547841536 (19G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: DIRTY
GenID: 0
SyncID: 1
ID: 2490835271
4. 永久清除某個 gmirror 的設定
# gmirror stop -v gm0 # 停止 gmirror 運作
# gmirror clear -v ad0 ad1 # 清除實體硬碟上 gmirror 的 Metadata (Metadata 存在硬碟的最後一個 sector , 清除該 gmirror 的設定,而原本在 gmirror 上的資料並不會被消除,還是會存在於ad0跟ad1上面。)
Reference:
http://www.freebsd.org/doc/handbook/geom-mirror.html
http://onlamp.com/pub/a/bsd/2005/11/10/FreeBSD_Basics.html
2010/03/29
[ FBSD ] FreeBSD Soft Raid1 by Gmirror
訂閱:
張貼意見 (Atom)


3 意見:
請問一下,這樣的作法,是連已經安裝好的Freebsd系統都納入mirror保護中?
是的將OS用RAID1備份
已經在8.1上測試成功,感謝!
不過在SYNC回來的過程有點久(320G) 0rz
張貼意見