天天看點

Linux RAID技術實作

RAID從誕生開始便是為了伺服器服務的,它的超大容量,良好的容錯能力(備援),以及極緻的性能都是優點,面對伺服器的高壓環境,它便是卓越的選擇。

簡單的說,RAID是把多塊獨立的實體硬碟按照不同的方式組合起來,形成一個邏輯大硬碟,進而提供比單個硬碟更高的存儲性能和提供資料備份技術。在我們使用者看起來,多個硬碟組合起來就像是一個硬碟,在使用者層面,我們根本在使用中感覺不到,使用者可以對它進行分區,格式化等等。總之,對磁盤陣列的操作與單個硬碟一模一樣。不同的是,磁盤陣列的存儲速度要比單個硬碟高很多,而且可以提供自動資料備份。資料備份的功能是在使用者資料一旦發生損壞後,利用備份資訊可以使損壞資料得以恢複,進而保障了使用者資料的安全性。

而RAID主要有以下幾種,它們各有優勢,讓我們來一起看一下:

RAID 0

Linux RAID技術實作
RAID 0的性能優秀,但是沒有容錯性,這便是它的弊端,我們又把它叫做條帶集,它是把大塊資料切分成小塊後 ,在每個實體硬碟中按次序存放,意思就是第一個實體硬碟放A1,第二個實體硬碟便放A2 ,A3又回放在第一個實體硬碟裡,但是隻要你的硬碟數量大于等于2塊硬碟就可以使用RAID 0。

  • 優點:

    讀寫性能是所有RAID級别中最高的。

  • 缺點:

    無法提供資料的備援,一旦使用者資料損壞,損壞的資料将無法得到恢複。RAID 0運作時隻要其中任一塊硬碟出現問題就會導緻整個硬碟的故障,不能在繼續使用。

總結:

  • 磁盤空間使用率:100%,成本最低。
  • 讀性能:N*單塊磁盤的讀性能。
  • 寫性能:N*單塊磁盤的寫性能。
  • 備援:毫無備援能力,隻要有一塊磁盤損壞,将導緻整個陣列的不可用。

RAID 1

Linux RAID技術實作

RAID 1 是通過鏡像原理來實作的,對于實體硬碟1和實體硬碟2來說,它們存放的資料是一份一模一樣的,實體硬碟2通過拷貝實體硬碟1得來的,對于實體硬碟1中資料的增删改操作,實體硬碟2都會複制一邊,是以一邊的資料丢了,另一邊也會丢。至少需要兩塊硬碟

  • RAID 1會在兩塊實體硬碟上産生互相為對方的備份資料,在資料讀取負載比較大的時候,可直接從鏡像備份中讀取資料,是以RAID 1可以提供讀取性能。
  • RAID 1是硬碟中機關成本最高的,但提供了很高的資料安全性和可用性,當一個硬碟失效時,系統可以自動切換到鏡像硬碟上讀/寫,并且不需要來進行回複損壞硬碟的資料。
  • 磁盤空間使用率:50%,成本最高。
  • 讀性能:隻能在一個磁盤上讀取,取決于磁盤中較快的那塊盤。
  • 寫性能:兩塊磁盤都要寫入,因為是并行寫入,是以要比對,取決于磁盤中較慢的那塊盤。
  • 備援:隻要系統中任何一對鏡像盤中有一塊磁盤可以使用,甚至可以在一半數量的硬碟出現問題時系統都可以正常運作。

RAID 4

**RAID 4 增加了校驗位 **

有一塊實體硬碟存放了異或校驗位,是老舊版的RAID 5,已經快被淘汰了,具體在RAID 5中細說。至少三塊硬碟。

  • 有了一定的容錯性,在一塊實體硬碟損壞之後可以通過異或運算求出被損壞的資料,進而保證硬碟的繼續運作。
  • 缺點

    不過存放校驗位的硬碟因為壓力比較大老壞。

  • 磁盤空間使用率:N-1/N。
  • 讀性能:在存放資料的硬碟中讀取,均勻讀取,壓力變小
  • 寫性能:兩塊磁盤都要寫入均勻寫入,速度更快。
  • 備援:任何一塊實體硬碟損壞之後,都可以使用,校驗位硬碟損壞不影響資料讀取寫入,其他硬碟損壞之後,可以通過校驗位進行異或運算求出損壞的資料,隻不過在運算是系統壓力比較大

RAID 5

Linux RAID技術實作

RAID 5也含有校驗位,它是RAID 4的更新版,因為在RAID 4中所有的校驗位存在在一塊實體硬碟中,它的壓力較大,容易壞,是以便有了這種做法,四塊實體硬碟都有校驗位存在,實作了RAID的負載均勻,這樣存放異或校驗位,讓每一塊硬碟扮演角色都一樣,犧牲空間換取容錯性。

做RAID 5陣列的所有磁盤容量必須一樣大,當容量不同時,會以最小的容量為準。 最好硬碟轉速一樣,否則會影響性能,而且可用空間=磁盤數N-1,RAID 5沒有獨立的奇偶校驗盤,所有校驗資訊分散放在所有磁盤上, 隻占用一個磁盤的容量。

  • 磁盤空間使用率:(N-1)/N,即隻浪費一塊磁盤用于奇偶校驗。
  • 讀性能:(N-1)*單塊磁盤的讀性能,接近RAID 0的讀性能
  • 寫性能:比單塊磁盤的寫性能要高
  • 備援:隻允許一塊磁盤損壞。

RAID 6

和RAID 5一樣的結構,隻不過擁有兩個校驗位,更加穩定,但是價格相對更高

RAID 10

Linux RAID技術實作

将RAID 0與RAID 1巧妙的結合在了一起,實作了互相融合。先将實體硬碟1和2組合成RAID 1結構,把硬碟3和4也組合成RAID 1結構,最後把兩個邏輯硬碟用RAID 0結構組合在一起,就形成了這種結構。

  • 它提供了200%的速度和單磁盤損壞的資料安全性,并且當同時損壞的磁盤不在同一RAID 1中,就能保證資料安全性。假如磁盤中的某一塊盤壞了,整個邏輯磁盤仍能正常工作的。

    當我們需要恢複RAID10中損壞的磁盤時,隻需要更換新的硬碟,按照RAID10的工作原理來進行資料恢複,恢複資料過程中系統仍能正常工作。原先的資料會同步恢複到更換的硬碟中。

  • RAID 10方案造成了50%的磁盤浪費

磁盤空間使用率:50%。

讀性能:N/2*單塊硬碟的讀性能

寫性能:N/2*單塊硬碟的寫性能

備援:隻要一對鏡像盤中有一塊磁盤可以使用就沒問題。

這種結構。RAID 10 系統不能運作的幾率為1/5

Linux RAID技術實作

既然有RAID 10就肯定會有RAID 01,它是先将實體硬碟1和2組合成RAID 0結構,把硬碟3和4也組合成RAID 0結構,最後把兩個邏輯硬碟用RAID 1結構組合在一起,就形成了這種結構。

不過因為RAID 01系統不能運作的幾率為3/5,是以不如RAID 10結構穩定。

軟RAID 5 實作

  • 1.下載下傳mdadm模式化工具

    yum install -y mdadm

  • 2.分區,大小相同

    先使用fdisk工具進行分區,需要注意的是每個分區的大小應該相同,而且需要把分區格式修改為Linux raid格式,按t鍵之後,代碼為fd。

  • 3.使用dd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446 seek=446把磁盤陣列中區域分區,備用硬碟分區,全部分區。
  • 4.建立RAID

    mdadm -C /dev/md0 -a yes -l5 -n 3 -x1 /dev/sd{b,c,d,e}1

  • 5.查詢RAID是否建立成功

    mdadm -D /dev/md0

  • 6.統一建立檔案系統

    mkfs.ext4 /dev/md0 -L raid5

  • 7.寫入配置檔案/etc/fstab

    UUID=5f22970a-91ec-43ea-af62-357864186b7c /mnt/raid5 xfs defaults 0 0

  • 8.建立挂載目錄

    mkdir /mnt/raid5

  • 9.生成RAID的配置檔案

    mdadm -Ds /dev/md0 > /etc/mdadm.conf

    這樣做是為了可以随時停用RAID

  • 10.停用RAID

    先取消挂載

    umount /mnt/raid

    輸入

    mdadm -S /dev/md0 停用

  • 11.再次激活

    mdadm -A /dev/md0

  • 其餘指令用來模拟軟RAID的使用:

    mdadm /dev/md0 -f /dev/sdb1 模拟sdb1損壞

    mdadm /dev/md0 -r /dev/sdb1 移除損壞的sdb1

    mdadm /dev/md0 -a /dev/sdb1 添加新換的sdb1

在添加新硬碟時,使用以下指令格式化分區:

  • ext4檔案系統

    resizefs /dev/md0 同步檔案系統 ,在新增加磁盤的時候可以使用

  • xfs檔案系

    xfs_growfs raid挂載點

需要注意的是:

在建立RAID時候

  • -C :建立模式

    -n :使用幾個塊裝置來建立此RAID

    -l :指明要建立的RAID類型

    -a :{yes|no} 是否自動建立目标RAID裝置的裝置檔案

    -c :指明塊大小,機關k

    -x :指明備用盤個數

  • -D:顯示RAID的詳細資訊
  • 1.先取消挂載
  • 2.停用RAID
  • 3.清除成員磁盤當中陣列的超級塊資訊

    mdadm --zero-superblock /dev/sdb

  • 4.删除或注釋/etc/fstab上的挂載資訊

    vim /etc/fstab

  • 删除RAID配置檔案

    rm /etc/mdadm.conf