RAID類型及軟RAID的組建

RAID(獨立冗餘磁盤陣列)由加利福尼亞大學伯克利分校(University of California-Berkeley)在1987年提出這個概念,首先提出的是廉價冗餘磁盤陣列(Redundant Arrays of Inexpensive Disks),後來發現,大量便宜磁盤組合並不能適用於現實的生產環境,後來改爲獨立冗餘磁盤陣列(Redundant Arrays of Independent Disks)。

    RAID的類型

     RAID 0   :  只需要2塊硬盤以上即可組建,條帶化讀寫,可以提高整個磁盤的性能和吞吐量,但沒有冗餘或錯誤修復能力,任何一塊磁盤塊都會導至陣列無法使用,數據丟失,磁盤利用量爲NS,即n*磁盤容量

    RAID  1  : 磁盤鏡像,寫入一塊磁盤時,另一塊磁盤上生成鏡像文件,寫性能降低,讀性能提升,有冗餘能力,磁盤的利用率50%,需要2的倍數來組建陣列

   RAID   3,4 : 帶有奇偶校驗碼的存儲數據方式, 訪問數據時一次處理一個帶區,可以提升讀寫數據性能,有冗餘能力,但校驗碼是存在一塊磁盤上,校驗盤的寫性能會成爲瓶頸,3與4的區別在於存儲數據時,3是橫向條帶化讀寫的,4是豎向存儲的,磁盤利用率爲(n-1)/n。如圖

    RAID  5  :  與RAID4相似,都是有奇偶檢驗的獨立磁盤結構,但是校驗碼不是存在一個磁盤上,而是輪流寫入每個磁盤,讀寫性能提升,有冗餘,空間利用率爲(n-1)/n。

    RAID 01 與RAID 10 :  RAID 01 是RAID0與RAID1的結合體,先做RAID0條帶化提升性能,然後再做鏡像,保證冗餘,RAID10是先做鏡像保證冗餘然後再做條帶化提升性能,但當磁盤出現故障時修復能力RAID10比RAID01好,至少需要4塊磁盤才能做陣列,磁盤的利用率爲50%。如圖

陣列的實現方式有硬陣列和軟陣列,LINUX中軟陣列的實現方法:

   linux中是通過內核中的md模塊來模擬一個RAID的,在創建RAID時需要把磁盤的模式設置爲fd模式,mdadm命令能把任何的塊設備模擬成RAID,過程如下

1. 將用fdisk命令將磁盤/dev/xvdb /dev/xvdc 模式設置爲fd模式,

   fdisk /dev/xvdb ,創建磁盤 n ,按P 創建主分區,按1 創建第一個主分區,回車,按m,顯示所有幫助信息

Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

按t ,

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L 顯示所有linux系統支持的文件系統ID,輸入fd

  fd爲linux raid auto

然後按p

顯示磁盤列表爲

  Device Boot      Start         End      Blocks   Id  System
/dev/xvdb1               1        2610    20964793+  fd  Linux raid autodetect

創建磁盤模式爲RAID結束

同樣把xvdbc創建爲RAID模式,cat /proc/partitions 可以顯示所有的分區

2 .mdadm命令

    mdadm

        創建模式     -C /dev/md#

                                     專用選項:

                                       -l :RAID級別  0 、1、3、5、10、  等

                                      -n #: 設備個數,多少個硬盤設備來做RAID

                                       -a {yes|no}  : 是否自動爲其創建設備文件

                                        -c : chunk 大小  ,2^n

                                        -x  #  :指定空閒盤個數,當RAID正常是,這些盤是沒有起作用的,但當RAID當中有一個磁盤有故障時,這個空閒盤會自動頂替有故障的磁盤,並同步數據。

輸入命令  mdadm -C /dev/md0 -l 0 -n 2 -a yes /dev/xvdb1 /dev/xvdc1

[root@jiankong ~]#  mdadm -C /dev/md0 -l 0 -n 2 -a yes /dev/xvdb1 /dev/xvdc1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

然後格式化 /dev/md0  mkfs.ext4 /dev/md0

就可以掛載了,

mount /dev/md0 /data

然後用df命令查看磁盤

df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   19G  1.6G   16G   9% /
tmpfs                         497M     0  497M   0% /dev/shm
/dev/xvda1                    485M   33M  427M   8% /boot
/dev/md0                       40G  176M   38G   1% /data

軟陣列RAID0就已經創建並使用了。

             管理模式

                          -a  :   --add   添加一塊磁盤到陣列中去

                          -r  :  --remove  移除一塊磁盤到陣列中去

                          -f  :   --fail     設置一塊磁盤狀態爲fail 不可用

               裝配模式

                            -D :—detail 顯示陣列的詳細信息  mdadm –D /dev/md0

                                 -s :  --scan 把陣列詳細信息保存到配置文件  mdadm –D –s /dev/md0 > /etc/mdadm.conf

                           -S  :  --stop 停止陣列  mdadm –S /dev/md0  

                           -A :   加載啓動陣列,如果沒有保存陣列的配置文件,則需要把陣列以及陣列包含的磁盤信息都要加上,否則無法加載

                                  mdadm -A  /dev/md1  /dev/xvdb1  /dev/xvdc1

cat /proc/mdstat  可以查看 md陣列的狀態,如果有同步的話可以看到同步過程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章