RAID
目的:提高冗餘 提高性能
A:array 陣列
R :redundent 冗餘
常見級別:0 1 5 6 10
根據硬件或者連接方式的不同,分爲軟件RAID和硬件RAID(專門的RAID卡)
以硬件方式實現的磁盤陣列,所對應的設備文件在/dev/下都已sd開頭。
以軟件的方式實現的RAID,是依靠linux自身將設備連接起來,是在內核中實現的,實現的模塊爲md。所對應的設備文件在/dev/下以md開頭。
mdadm 多磁盤管理工具,可以是分區,也可以是獨立的一塊磁盤。
linear (線性模式),將兩個以上的磁盤整合成爲一個實體的存數裝置。所有的數據是:“一個一個填滿之後,纔將數據繼續寫到下一個磁盤上”。由於數據是一個一個寫入到不同的磁盤當中,因此整個磁盤的讀取性能並不會增加。此外,數據具有連續性,若一個磁盤損毀,導致整個數據丟失。優勢是:磁盤的空間會完整的被利用完畢!
RAID0:條帶(strip) 將數據分成多塊,按等分放在不同的磁盤上交叉進行存儲,可以提高磁盤性能,無容錯功能。任何一塊盤壞掉,會導致整個 數據全部丟失。
RAID1:鏡像卷 將數據同時寫入兩塊磁盤中,提供冗餘功能。總容量以最小的那塊磁盤爲主。但是寫速度明顯降低,讀性能明顯提高。磁盤利用率百分之五十。
RAID4:至少三塊磁盤,有一塊盤專門用來做校驗盤,缺陷:校驗盤會成爲系統的瓶頸。
RAID5:至少三塊磁盤,輪流做校驗盤,前兩塊磁盤放數據,第三塊磁盤放奇偶校驗碼,二三放數據,第一塊磁盤放校驗數據,依次輪流。空間利用率(N-1)/ N。只允許壞一塊盤。讀取性能相當於RAID0,因爲要計算寫入到磁盤當中的平衡信息(parity information),所以寫入的性能增加不會很明顯。
PS:可以增加一塊空閒盤(spare disk),一旦有一塊盤發生故障可以立即頂上去。
RAID6 至少需要四塊盤,兩塊盤做奇偶校驗,輪流放奇偶校驗數據。
mdadm manage MD devices aka(also known as 衆所周知)linux software Raid
創建軟raid 模式化工具
格式 mdadm [mode] <raiddevice> [options] <component-devices> 組成模式
常用模式(mode):assemble(裝配) create(創建) follow or monitor(監控) grow(增長)manage(管理)
Assemble:把一個從別處移植過來的或者已經停用的raid重新啓用起來。不用指定raid中有哪些磁盤組成,可以手動或者自動掃描。
Create :創建一個Raid ,有兩個或兩個以上的磁盤或者分區。
Follow or monitor:監控模式,監控raid當中磁盤的工作狀態,只對1,4,5,6,10(有冗餘功能)有效。
Grow:增長或者收縮raid,或者重建raid。所支持功能包括改變活動處於活動狀態磁盤的大小及個數,適用於1,4,5,6具有冗餘功能的級別下。
Manage:管理模式,實現特殊的管理工作,添加一個新的冗餘盤或者移掉一個壞盤。在MISC模式(雜項模式)下同樣可以實現。
選項 Options
-A,--assemble assemble a pre-existing array
-C,--create create a new array
-F,--follow,--monitor select monitor mode
-G, --grow change the size or shape of an active array
如果在一個設備之前已經指定了一個選項,例如 -add,--fail ,--remove 將自動被識別爲manage模式。
跟模式無關的選項:
-V,--verbose 顯示更詳細的信息,選項較特殊,只能跟--detail (顯示raid設備的詳細信息), --scan(掃描) 和 --examine , --scan一起用。
-s,--scan 掃描配置文件或者/proc/mdstat(保留當前系統上處於活動或者停止狀態的raid設備)來獲取額外的信息。
Create 和grow 的選項
-n --raid-devices= 指定當前創建的raid一共有多少塊活動的設備個數
-x --spare-devices= 指定空閒設備的個數
-c --chunk= 定義塊大小,默認是64k
-l --level= 指定級別
在VMware上模擬raid0的創建過程:
先創建兩個分區
[root@server27 ~]# fdisk /dev/sda
兩個5G分區已經創建完畢,注意此時一定不要格式化分區。
[root@server27 ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda7 /dev/sda8
mdadm: array /dev/md0 started.
-a yes 當設備啓動的時候自動創建設備文件
-l 0 創建級別
-n 2 指定磁盤個數
創建完畢後查看一下:
[root@server27 ~]# cat /proc/mdstat
格式化設備:
[root@server27 ~]# mkfs -t ext3 -L RAID0 /dev/md0
創建一個掛載點,然後掛載:
[root@server27 ~]# mkdir /raid
[root@server27 ~]# mount /dev/md0 /raid
/dev/mdo 已經工作正常。
設置開機自動掛載,編輯/etc/fstab 文件,添加:
/dev/md0 /raid ext3 defaults 0 0
在VMware上模擬raid1的創建過程:
三塊分區已經創建好了 /dev/sda9, /dev/sda10, /dev/sda11
[root@server27 raid]# partprobe
分區信息與內核同步一下,一定不要忘了
[root@server27 raid]# cat /proc/partitions
準備工作已經完成,下面開始Raid1的創建,過程跟raid0 差不多
[root@server27 raid]# mdadm -C /dev/md1 -a yes -l 1 -n 2 -x 1 -c 32 /dev/sda9 /dev/sda10 /dev/sda11
[root@server27 raid]# cat /proc/mdstat
[root@server27 raid]# mdadm --detail /dev/md1
查看某個Raid設備的詳細信息
模擬raid的創建過程:
PS:創建raid5 至少需要三塊盤,如果再加一塊冗餘盤的話,至少需要四塊。
四個分區已經準備完畢: /dev/sda12, /devsda13, /dev/sda14 ,/dav/sda15
[root@server27 raid]# partprobe
[root@server27 raid]# mdadm -C /dev/md2 -a yes -l 5 -n 3 /dev/sda{12,13,14}
[root@server27 raid]# cat /proc/mdstat
添加一塊冗餘盤
[root@server27 raid]# mdadm -a /dev/md2 /dev/sda15
[root@server27 raid]# mdadm --detail /dev/md2
移除一塊冗餘盤:
[root@server27 raid]# mdadm -r /dev/md2 /dev/sda15
查看一下:
格式化設備
[root@server27 raid]# mkfs -t ext3 /dev/md2
創建一個掛載點,並掛載
模擬磁盤壞掉的情況 --fail --set-faulty
[root@server27 md2]# mdadm --set-faulty /dev/md2 /dev/sda14
依然可以正常訪問。
增加一塊新盤:
[root@server27 md2]# mdadm -a /dev/md2 /dev/sda15
正在重建,等會兒會顯示正常
將壞盤移除
[root@server27 md2]# mdadm -r /dev/md2 /dev/sda14
將Raid停止
先卸載
[root@server27 ~]# mdadm -S /dev/md2
如果想重新使用需要重新裝配
[root@server27 ~]# mdadm -A /dev/md2 /dev/sda{12,13,15}
如果想保留raid 的詳細信息需要手動去編輯。在/etc/下mdadm.conf(默認不存在)
[root@server27 ~]# mdadm --detail --scan
顯示磁盤上所有處於活動裝狀態的陣列
[root@server27 ~]# mdadm --detail --scan >> /etc/mdadm.conf
再來查看一下mdadm.conf 已經有信息了
來驗證一下,看能不能使用
停掉md2 在重新裝配一下
[root@server27 ~]# umount /md2
[root@server27 ~]# mdadm -S /dev/md2
mdadm: stopped /dev/md2
[root@server27 ~]# mdadm -A --scan
mdadm: /dev/md2 has been started with 3 drives .
PS:格式化的時候有一個選項要注意
mkfs.ext3 -j -b 4096 -E stride=16 /dev/md0
-E指定擴展選項,stride= chuck/block 寫上之後可以提高raid的性能
本文出自 “諸葛草廬” 博客,請務必保留此出處http://lyp0909.blog.51cto.com/508999/503575