|
|
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已! |
|
恭喜您是本站第 1729362
位訪客!
登入 | 註冊
|
|
|
|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2009/1/7 6:22 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15771
|
- [分享]不景氣下的省錢妙招 在linux上玩 Soft RAID
- 這一次我安裝 Mandriva 10,核心是2.6,使用 mdadm這一套softraid 軟體,程序如下(整理於 自身建立過程與網路資料):
===== 安裝 ===== 先安裝# rpm -ivh mdadm-1.12.0-1mdk.i586.rpm
...應該已經夠用!沒有 RAID10 及 GROW MODE 也可再升級# rpm -Uvh mdadm-2.6-1.i386.rpm
========== 準備磁碟 ========== (顯示所有系統上的硬碟狀況,可以知道哪一些硬碟尚未配置及代號) 將設備/dev/sdb上的全部磁碟空間劃分給一個主分區,建立/dev/sdb1分區,並修改分區的類型標識為fd(linux raid auto)
建立RAID的使用指令 ================================== 清除已經建立的raid記錄資料 重新開始 ==================================
# mdadm -C /dev/md0 -l5 -n3 /dev/sd{a,b,c}1 --assume-clean
注意,如果沒有使用--assume-clean系統建立陣列後,會自動重建原有的內容!若要全新來過,一定要加此指令!
============ 建立RAID 0: ============
# mdadm -Cv -l 0 /dev/md0 -n 2 /dev/hdc {8,9}
-C是指建立 -v是指察看過程 -l是指建立的屬於level linear、0、1或5 /dec/md0是指在linux中建立的裝置名稱為RAID 0 -n 2是指幾個RAID裝置屬於建立好的RAID 0 /dev/hdc {8,9}是指建立在/dev/hdc8和/dev/hdc9兩個partition上
====================== 查閱目前的raid資訊 ====================== 方法一: 可利用--detail參數來觀看建立好的RAID 0(1、5)的資訊
# mdadm --detail /dev/md0(md1、5)
其中有chunk-size是指寫進一個partition的大小 ,例如RAID 0中把一個file同時寫進兩個或以上partition時,會把file分成多大寫進其中一個partition(系統記錄在/proc/mdstat)
方法二:
======== 格式化: ======== ext2 格式:# mke2fs -v -b 4096 -R stride=16 /dev/md0
(md後為數字0) (-R stride=n來增加效能,因為chunk-size=block*stride,因此對於RAID 0來說可以增加效能,對於其它RAID不一定能增加效能,例:RAID 1)
ext3格式:
========== 掛載並使用 ========== (建立/mnt/md0資料夾)
# mount /dev/md0 /mnt/md0
(掛載/dev/md0至/mnt/md0)
============ 解除RAID裝置 ============ (卸載/dev/md0) (參數-S會直接解除 /dev/md0上的RAID 0)
================ 重新啟用raid裝置 ================ 方法一:直接指定使用的磁區
# mdadm -A /dev/md0 /dev/sd{c,d,e}1
(啟動先前已經建立的陣列,並指定原來使用的磁區)
方法二:使用配置檔 /etc/mdadm.conf mdadm的缺省配置檔為/etc/mdadm.conf,它主要是為了方便陣列的日常管理而設置的,對於陣列而言不是必須的,但是為了減少日後管理中不必要的麻煩,還是應該堅持把這一步做完。 在mdadm.conf檔中要包含兩種類型的行: 一種是以DEVICE開頭的行,它指明在陣列中的設備列表; 另一種是以ARRAY開頭的行,它詳細地說明了陣列的名稱、模式、陣列中活動設備的數目以及設備的UUID號。 格式如下:
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=8f128343:715a42df: baece2a8: a5b878e0
以上的這些資訊可以通過掃描系統的陣列來獲取 建立好被製檔案後,啟動的語法如下 (s 表示使用配置檔中的設定啟動raid)
====================== 如果是做raid1+0 的啟動 ======================
# mdadm -As /dev/md0
# mdadm -As /dev/md1
# mdadm -A /dev/md2 /dev/md{0,1}
=================== 希望開機時直接啟用 .....前提是必須建立配置檔才可以,不然開機時無法順利啟動raid ===================
======= 方法一: ======= 當不是使用raid1時,或是raid1的硬碟群不很大!至於極限到哪,未測試! 寫入/etc/fstab(開機時會載入的硬體設定檔) (以vi編輯/etc/fstab設定檔)
最後一行加入
/dev/md0 /mnt/md0 ext2 default 0 0
(fstab欄位說明) 第一欄 實際的 device 名稱。 第二欄 對應到的目錄結構(mount point)。 第三欄 該分割區的檔案系統ext、ext2、msdos、iso9660、nfs、swap。 第四欄 在 mount 時的參數。 第五欄 在使用 dump 時是否記錄,不需要則輸入0。 第六欄 決定在開機時執行 fsck 的先後順序。
======= 方法二: ======= 針對raid1硬碟群過大的時,必須加入指令於
/etc/rc.d/rc.sysinit or /etc/rc.d/rc.local
的最後面,讓raid1先隨系統啟動!以免無法順利掛載!
mdadm -As /dev/md0
mount /dev/md0 掛載目錄
======= 方法三: ======= 在/etc/profile.d/ 自行增加 **.sh的指令檔 例如 vi mdadm.sh 然後賦予mdadm.sh執行的權限 chmod 755 mdadm.sh
mdadm -As /dev/md0
mount /dev/md0 /dev/md0 掛載目錄
===>以上應該已經可以建立完成一個soft raid,以下是一些補充建立、修復說明
========================================= 建立RAID 1(建立流程,並參考RAID 0之說明) =========================================
# mdadm -Cv --level=1 /dev/md0 -n 2 /dev/hdc8 /dev/hdc9 -x1 /dev/hdc10
(-x:指定備用的硬碟,當其中一個毀損時會自動備援)
# mke2fs -j /dev/md0
# mount /dev/md0 /mnt/md0
# cp -a /bin /mnt/md0
(copy /bin中的資料做測試,-R 可以讓複製過去的資料保有相同的資料權限)
======================= 測試/dev/hdc9壞掉與替換 =======================
# mdadm /dev/md0 -f /dev/hdc9
(測試/dev/hdc9壞掉時,將/dev/hdc9標記為已損壞的設備) 查閱raid目前狀況一
================= 查看當前陣列狀態二..可以看到目前正在自動恢復資料,這是抓其他地方的資料來補充,並不是原來的raid1 =================
# more /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[2] sde1[3] sdc1[1] sdb1[4](F)
75469842 blocks level 5, 128k chunk, algorithm 2 [3/2] [_UU]
[=>...................] recovery = 8.9% (3358407/37734912) finish=1.6min speed=9382K/sec
unused devices:
因為有備份設備,所以當陣列中出現設備損壞時,陣列能夠在短時間內實現重構和 資料的恢復。從當前的狀態可以看出,陣列正在重構,且運行在降級模式, sdb1[4]的後面已經標上了(F),活動設備數也降為2個。
經過幾分鐘後,再次查看當前陣列狀態。
# more /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[2] sde1[0] sdc1[1] sdb1[3](F)
75469842 blocks level 5, 128k chunk, algorithm 2 [3/3] [UUU]
unused devices:
此時陣列重構已經完成,資料恢復完畢,原有的備份設備sde1成為了活動設備。
============= 恢復/dev/hdc9 =============
# mdadm /dev/md0 --remove /dev/hdc9
移除損壞的設備
# mdadm /dev/md0 --add /dev/hdc9
將新設備添加到陣列中
# mdadm --grow /dev/md-linear --add /dev/new-device
如果使用的是 linear raid
========================================= 建立RAID 5(建立流程,並參考RAID 0之說明) =========================================
# mdadm -C -l 5 /dev/md0 -n 3 /dev/hdc{8,9,10} -x 1 /dev/hdc11
(可加入-c128的參數,代表chunk-size為128:可以增加raid的效能,由於是軟體陣列所以是使用系統主記憶體來進行 chunk,這個數值設大一點雖然對磁碟陣列效能有幫助,但卻會耗掉系統資源,建議使用預設值就好了)
|
|
|
討論串
|