溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linux如何使用軟件磁盤陣列RAID

發(fā)布時(shí)間:2021-10-15 09:52:43 來(lái)源:億速云 閱讀:186 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要為大家展示了“l(fā)inux如何使用軟件磁盤陣列RAID”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“l(fā)inux如何使用軟件磁盤陣列RAID”這篇文章吧。

磁盤陣列的英文全稱是Redundant Arrays of Inexpensive Disks(RAID),即容錯(cuò)廉價(jià)磁盤陣列。可以通過一些技術(shù)將多個(gè)較小的磁盤整合成為一個(gè)較大的磁盤設(shè)備;而這個(gè)設(shè)備可不止存儲(chǔ)功能而已,它還具有數(shù)據(jù)保護(hù)功能。

RAID的等級(jí):

× RAID-0(等量模式,stripe):性能較佳

這種模式使用相同型號(hào)和容量的磁盤來(lái)組成,可以有多個(gè),RAID會(huì)將每個(gè)磁盤劃分成等量的區(qū)塊(一般為4K,2K等等),然后當(dāng)一個(gè)文件被寫入時(shí),該文件會(huì)依據(jù)塊大小切割好,之后依序放到各個(gè)磁盤里面去,由于每個(gè)磁盤交錯(cuò)存放數(shù)據(jù),因此當(dāng)你的數(shù)據(jù)要寫入RAID時(shí),數(shù)據(jù)會(huì)被等量的放置到各個(gè)磁盤上去。越多磁盤組成RAID-0,那么的話性能肯定就越好了。

缺點(diǎn):一個(gè)磁盤掛點(diǎn),整個(gè)文件系統(tǒng)崩盤,無(wú)法恢復(fù)了。并且所有磁盤容量必須一樣,不然性能會(huì)下降。

× RAID-1(映像模式,mirror):完整備份

這種模式也要相同型號(hào),相同容量的磁盤,最好完全一樣,一個(gè)模子刻出來(lái)的。

數(shù)據(jù)傳送到I/O總線被復(fù)制多份到各個(gè)磁盤,因此寫的性能會(huì)變得很差,不過如果你用硬件RAID(磁盤陣列卡),磁盤陣列卡會(huì)主動(dòng)幫你復(fù)制,不需要I/O總線。但是磁盤陣列卡很貴滴呀呀,我買不起,所以很悲劇。RAID-1最大的用途在于備份,不過它的讀取性能很好。

× RAID 0+1, RAID 1+0

RAID-0的性能較佳但是數(shù)據(jù)不安全,RAID-1數(shù)據(jù)安全但是性能不佳,那能不能組合下撒。

RAID 0+1:先讓N塊磁盤組成RAID-0, 同時(shí)再讓另外的N塊磁盤也組成RAID-0, 這樣子我得到了兩組RAID-0,然后將這兩組RAID-0再組成一組RAID-1。

RAID 1+0:先讓2N塊磁盤組成N個(gè)組,每個(gè)組兩個(gè)磁盤,每個(gè)組里面的兩個(gè)磁盤組成RAID-1, 然后將這N組RAID-1組成RAID-0。

缺點(diǎn):磁盤有一半的容量用來(lái)做備份了,悲劇呀?。?!

RAID-5:性能與數(shù)據(jù)備份的均衡考慮

RAID-5至少需要三塊以上的磁盤才能組成這種類型的磁盤陣列。這種磁盤陣列的數(shù)據(jù)寫入有點(diǎn)類似RAID-0,不過每次循環(huán)寫入過程中,在每塊磁盤還加入一個(gè)同位檢查數(shù)據(jù)(Parity),這個(gè)數(shù)據(jù)會(huì)記錄其他磁盤的備份數(shù)據(jù),用于當(dāng)有磁盤損毀時(shí)的救援。

RAID-5的容量要減掉一個(gè)磁盤容量,也就是陣列的磁盤總數(shù)N-1,因?yàn)樾枰粋€(gè)磁盤容量來(lái)保存同位檢查數(shù)據(jù)Parity

RAID-5的讀取性能很不錯(cuò),跟RAID-0有得一拼,但是寫入性能就很尷尬了,在軟件磁盤陣列的時(shí)候,CPU還得花時(shí)間去計(jì)算同位檢查數(shù)據(jù)。同時(shí)它只能保證一個(gè)磁盤損壞數(shù)據(jù)的安全,如果兩個(gè)磁盤損壞就掛了。

RAID-6:跟RAID-5類似,不過這次會(huì)使用兩塊磁盤容量作為Parity的存儲(chǔ),它可以支持兩塊磁盤同時(shí)損壞,這個(gè)概率應(yīng)該比走在馬路上被一輛驢車撞到的概率還低吧,^_^

====Spare Disk:預(yù)備磁盤的功能====

為了讓系統(tǒng)可以實(shí)時(shí)在壞掉磁盤時(shí)主動(dòng)重建,需要預(yù)備磁盤spare disk的輔助,平時(shí)不包含在磁盤陣列中,當(dāng)磁盤陣列有任何磁盤損壞時(shí),spare disk馬上被主動(dòng)拉入磁盤陣列中,并將壞掉的磁盤移除磁盤陣列,然后立即重建數(shù)據(jù)系統(tǒng),如果你的磁盤陣列還支持熱插拔就更爽了,因?yàn)檫@個(gè)時(shí)候只需要把壞的那顆磁盤拔下來(lái),換上一個(gè)新的,再將新的磁盤設(shè)置成spare disk,完成了,不用關(guān)機(jī)重啟可以完成一切。這對(duì)服務(wù)器的穩(wěn)定性有很好的幫助。

磁盤陣列的優(yōu)點(diǎn):

× 數(shù)據(jù)安全與可靠性,這里指的是硬盤壞了數(shù)據(jù)可以挽回。

× 讀寫性能,RAID-0可以加強(qiáng)讀寫性能,讓你的系哦I/O系統(tǒng)部分得以改善

× 容量:可以讓多個(gè)磁盤組合起來(lái),因此單一文件系統(tǒng)可以有相當(dāng)大的容量。

centos提供的軟件磁盤陣列為mdadm這套軟件,以分區(qū)或磁盤為單位,也就是說(shuō)你不需要多個(gè)磁盤就可以設(shè)計(jì)你的磁盤陣列了。此外,mdadm支持剛剛提到的RAID-0,RAID-1,RAID-5等級(jí),還支持spare disk的功能。而且提供的管理機(jī)制還可以達(dá)到類似可以熱插拔的功能,可以在線(文件系統(tǒng)正常使用)進(jìn)行分區(qū)的抽換,使用上非常的方便。。

注意:硬盤磁盤陣列在linux看起來(lái)就是一個(gè)大的磁盤,所有設(shè)備文件名為/dev/sd[a-p],因?yàn)槭褂玫絊CSI的模塊的原因。而軟件磁盤陣列因?yàn)槭窍到y(tǒng)仿真,因此使用的設(shè)備文件名時(shí)系統(tǒng)的設(shè)備文件,文件名為/dev/md0, /dev/md1,兩者注意區(qū)別。

====軟件磁盤陣列的設(shè)置====

# mdadm –detail /dev/md0

# mdadm –create –auto=yes /dev/md[0-9] –raid-device=4 –level=[015] –spare-device=2 /dev/sd5 /dev/sd6

–create:為新建RAID的參數(shù)

–auto=yes:決定新建后面接的軟件磁盤陣列設(shè)備,即/dev/md0, /dev/md1等

–raid-devices=N:使用N個(gè)磁盤作為磁盤陣列的設(shè)備

–spare-devices=N:使用N個(gè)磁盤作為備用spare設(shè)備

–level=[015]:設(shè)置磁盤陣列的等級(jí)。支持很多,不過建議只要用0,1,5即可

–detail:后面所接的那個(gè)磁盤陣列設(shè)備的詳細(xì)信息

注意最后面接的設(shè)備文件名,可以時(shí)整塊磁盤,比如/dev/sdb,也可以是一個(gè)分區(qū),比如/dev/sdb1,不過這些設(shè)備文件名的數(shù)量總數(shù)必須等于–raid-devices和–spare-devices的個(gè)數(shù)總和才行。

下面我來(lái)試試建立一個(gè)RAID-5的軟件磁盤陣列,貌似這個(gè)比較常用,很適合。

我希望這個(gè)RAID-5環(huán)境時(shí)這樣子的:

× 利用4個(gè)分區(qū)組成RAID-5

× 每個(gè)分區(qū)大約為1G大小,需要確定每個(gè)分區(qū)一樣大較佳

× 另外加一個(gè)分區(qū)設(shè)置為sparedisk

× 這個(gè)sparedisk的大小與其他RAID所需分區(qū)一樣大

× 將此RAID-5設(shè)備掛載到/mnt/raid目錄下面

先用fdisk構(gòu)建5個(gè)1G的分區(qū):

# fdisk /dev/sda
前面省略。。。
Command (m for help):n

每次分1000M空間大小,注意,我不知道神馬原因,first 扇區(qū)要手動(dòng)輸入,用p選項(xiàng)查看后,用最后一個(gè)分區(qū)的扇區(qū)號(hào)+2049才是第一個(gè)空閑扇區(qū)號(hào),這個(gè)可能時(shí)fedora的一個(gè)bug,分區(qū)居然不是連續(xù)的,不管了,自己去試試。囧

最后的分區(qū)用p查看后,是這樣子的:

設(shè)備 Boot      Start         End      Blocks   Id  System
/dev/sda1            2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2   *      206848   169859071    84826112    7  HPFS/NTFS/exFAT
/dev/sda3       169859072   462827821   146484375    7  HPFS/NTFS/exFAT
/dev/sda4       462829568   976773119   256971776    5  Extended
/dev/sda5       462833664   463243263      204800   83  Linux
/dev/sda6       463245312   631181311    83968000   83  Linux
/dev/sda7       631183360   799119359    83968000   83  Linux
/dev/sda8       799121408   803315711     2097152   82  Linux swap / Solaris
/dev/sda9       803317760   805365759     1024000   83  Linux
/dev/sda10      805367808   807415807     1024000   83  Linux
/dev/sda11      807417856   809465855     1024000   83  Linux
/dev/sda12      809467904   811515903     1024000   83  Linux
/dev/sda13      811517952   813565951     1024000   83  Linux
后面的從9到13就是剛剛我分的5個(gè)分區(qū),每個(gè)大概1G,大小都相同。

# partprobe

接下來(lái)就簡(jiǎn)單啦啦,,通過mdadm來(lái)創(chuàng)建磁盤陣列吧。哦也

# mdadm –create –auto=yes /dev/md0 –level=5 –raid-devices=4 –spare-devices=1 /dev/sda{9,10,11,12,13}

查看下(等下,先去喝杯咖啡先,因?yàn)槿绻阒苯恿ⅠR運(yùn)行,可能出現(xiàn)下面的正在building數(shù)據(jù)的信息):


代碼如下:


# mdadm --detail /dev/md0
/dev/md0:   <==RAID設(shè)備文件名
       Version : 1.2
 Creation Time : Sun Oct 28 10:03:43 2012   <==RAID被創(chuàng)建的時(shí)間
    Raid Level : raid5    <==此RAID的等級(jí)
    Array Size : 3068928 (2.93 GiB 3.14 GB)    <==此RAID可用磁盤容量
 Used Dev Size : 1022976 (999.17 MiB 1047.53 MB)    <==每個(gè)設(shè)備可用容量
  Raid Devices : 4     <==用作RAID的設(shè)備數(shù)量
 Total Devices : 5     <==全部的設(shè)備數(shù)量
   Persistence : Superblock is persistent
 
   Update Time : Sun Oct 28 10:04:01 2012
         State : clean, degraded, recovering  
Active Devices : 3          <==啟動(dòng)的(active)設(shè)備數(shù)量
Working Devices : 5       <==可工作的設(shè)備數(shù)量
Failed Devices : 0          <==出現(xiàn)錯(cuò)誤的設(shè)備數(shù)量
 Spare Devices : 2         <==預(yù)備spare磁盤的數(shù)量
 
        Layout : left-symmetric
    Chunk Size : 512K
 
Rebuild Status : 17% complete
 
          Name : localhost.localdomain:0  (local to host localhost.localdomain)
          UUID : 657db303:887c7b6f:b8d8fc91:dc7b3374
        Events : 3
 
   Number   Major   Minor   RaidDevice State
      0       8        9        0      active sync   /dev/sda9
      1       8       10        1      active sync   /dev/sda10
      2       8       11        2      active sync   /dev/sda11
      5       8       12        3      spare rebuilding   /dev/sda12
 
      4       8       13        -      spare   /dev/sda13

真正的完成build后的信息應(yīng)該是:

代碼如下:


# mdadm --detail /dev/md0
/dev/md0:
       Version : 1.2
 Creation Time : Sun Oct 28 10:03:43 2012
    Raid Level : raid5
    Array Size : 3068928 (2.93 GiB 3.14 GB)
 Used Dev Size : 1022976 (999.17 MiB 1047.53 MB)
  Raid Devices : 4
 Total Devices : 5
   Persistence : Superblock is persistent
 
   Update Time : Sun Oct 28 10:06:00 2012
         State : clean  
Active Devices : 4
Working Devices : 5
Failed Devices : 0
 Spare Devices : 1
 
        Layout : left-symmetric
    Chunk Size : 512K
 
          Name : localhost.localdomain:0  (local to host localhost.localdomain)
          UUID : 657db303:887c7b6f:b8d8fc91:dc7b3374
        Events : 20
 
   Number   Major   Minor   RaidDevice State
      0       8        9        0      active sync   /dev/sda9
      1       8       10        1      active sync   /dev/sda10
      2       8       11        2      active sync   /dev/sda11
      5       8       12        3      active sync   /dev/sda12
 
      4       8       13        -      spare   /dev/sda13

還可以通過查看/proc/mdstat查看磁盤陣列情況:

# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sda12[5] sda13[4](S) sda11[2] sda10[1] sda9[0]
3068928 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>

格式化與掛載使用RAID:

# mkfs -t ext4 /dev/md0

# mkdir /mnt/raid

# mount /dev/md

# mount /dev/md0 /mnt/raid

# df

文件系統(tǒng)          1K-塊    已用     可用 已用% 掛載點(diǎn)
rootfs         82649712 4681980 73769332    6% /
devtmpfs        1964632       4  1964628    1% /dev
tmpfs           1975352     600  1974752    1% /dev/shm
tmpfs           1975352    1160  1974192    1% /run
/dev/sda6      82649712 4681980 73769332    6% /
tmpfs           1975352       0  1975352    0% /sys/fs/cgroup
tmpfs           1975352       0  1975352    0% /media
/dev/sda7      82649712 8355056 70096256   11% /home
/dev/sda5        198337   90718    97379   49% /boot
/dev/md0        3020688   70048  2797196    3% /mnt/raid
看到了吧,最后一個(gè),是不是很有成就感,=_=

====仿真RAID錯(cuò)誤的救援模式====

# mdadm &ndash;manage /dev/md[0-9] [--add 設(shè)備] [--remove 設(shè)備] [--fail 設(shè)備]

&ndash;add:將后面的設(shè)備加入到這個(gè)md中

&ndash;remove:將后面的設(shè)備從這個(gè)md中刪除

&ndash;fail:將后面的設(shè)備設(shè)置成出錯(cuò)的狀態(tài)

手動(dòng)模擬磁盤錯(cuò)誤:

# cp -a /etc /var/log /mnt/raid/

# df -h /mnt/raid/; du -smh /mnt/raid/*
文件系統(tǒng)        容量  已用  可用 已用% 掛載點(diǎn)
/dev/md0        2.9G  126M  2.7G    5% /mnt/raid
45M    /mnt/raid/etc
4.4M    /mnt/raid/log
16K    /mnt/raid/lost+found

# mdadm &ndash;manage /dev/md0 &ndash;fail /dev/sda10
mdadm: set /dev/sda10 faulty in /dev/md0

然后馬上查看狀態(tài),這個(gè)動(dòng)作要快點(diǎn),因?yàn)閞aid會(huì)自動(dòng)重建數(shù)據(jù)系統(tǒng):

代碼如下:


# mdadm --detail /dev/md0
/dev/md0:
       Version : 1.2
 Creation Time : Sun Oct 28 10:03:43 2012
    Raid Level : raid5
    Array Size : 3068928 (2.93 GiB 3.14 GB)
 Used Dev Size : 1022976 (999.17 MiB 1047.53 MB)
  Raid Devices : 4
 Total Devices : 5
   Persistence : Superblock is persistent
 
   Update Time : Sun Oct 28 10:24:42 2012
         State : clean, degraded, recovering  
Active Devices : 3
Working Devices : 4
Failed Devices : 1
 Spare Devices : 1
 
        Layout : left-symmetric
    Chunk Size : 512K
 
Rebuild Status : 6% complete
 
          Name : localhost.localdomain:0  (local to host localhost.localdomain)
          UUID : 657db303:887c7b6f:b8d8fc91:dc7b3374
        Events : 23
 
   Number   Major   Minor   RaidDevice State
      0       8        9        0      active sync   /dev/sda9
      4       8       13        1      spare rebuilding   /dev/sda13
      2       8       11        2      active sync   /dev/sda11
      5       8       12        3      active sync   /dev/sda12
 
      1       8       10        -      faulty spare   /dev/sda10

喝完咖啡后,看一下(其實(shí)也就1分鐘左右)

代碼如下:


# mdadm --detail /dev/md0
/dev/md0:
       Version : 1.2
 Creation Time : Sun Oct 28 10:03:43 2012
    Raid Level : raid5
    Array Size : 3068928 (2.93 GiB 3.14 GB)
 Used Dev Size : 1022976 (999.17 MiB 1047.53 MB)
  Raid Devices : 4
 Total Devices : 5
   Persistence : Superblock is persistent
 
   Update Time : Sun Oct 28 10:26:53 2012
         State : clean  
Active Devices : 4
Working Devices : 4
Failed Devices : 1
 Spare Devices : 0
 
        Layout : left-symmetric
    Chunk Size : 512K
 
          Name : localhost.localdomain:0  (local to host localhost.localdomain)
          UUID : 657db303:887c7b6f:b8d8fc91:dc7b3374
        Events : 43
 
   Number   Major   Minor   RaidDevice State
      0       8        9        0      active sync   /dev/sda9
      4       8       13        1      active sync   /dev/sda13
      2       8       11        2      active sync   /dev/sda11
      5       8       12        3      active sync   /dev/sda12
 
      1       8       10        -      faulty spare   /dev/sda10


看到了吧,不用我來(lái)給你解釋了吧。

接下來(lái),我將出錯(cuò)的磁盤刪除并加入新的磁盤:

首先,先新建一個(gè)新的分區(qū),這個(gè)分區(qū)大小要與其他的分區(qū)一樣大才好。然后再用mdadm刪除錯(cuò)誤的并加入新的

# fdisk /dev/sda

&hellip;.下面建新分區(qū)步驟省略,如果不知道怎么建,參考我的企鵝日記(一)

# partprobe

# partprobe
[root@localhost ~]# mdadm &ndash;manage /dev/md0 &ndash;add /dev/sda14 &ndash;remove /dev/sda10
mdadm: added /dev/sda14
mdadm: hot removed /dev/sda10 from /dev/md0

代碼如下:


# mdadm --detail /dev/md0
/dev/md0:
       Version : 1.2
 Creation Time : Sun Oct 28 10:03:43 2012
    Raid Level : raid5
    Array Size : 3068928 (2.93 GiB 3.14 GB)
 Used Dev Size : 1022976 (999.17 MiB 1047.53 MB)
  Raid Devices : 4
 Total Devices : 5
   Persistence : Superblock is persistent
 
   Update Time : Sun Oct 28 10:33:04 2012
         State : clean  
Active Devices : 4
Working Devices : 5
Failed Devices : 0
 Spare Devices : 1
 
        Layout : left-symmetric
    Chunk Size : 512K
 
          Name : localhost.localdomain:0  (local to host localhost.localdomain)
          UUID : 657db303:887c7b6f:b8d8fc91:dc7b3374
        Events : 45
 
   Number   Major   Minor   RaidDevice State
      0       8        9        0      active sync   /dev/sda9
      4       8       13        1      active sync   /dev/sda13
      2       8       11        2      active sync   /dev/sda11
      5       8       12        3      active sync   /dev/sda12
 
      6       8       14        -      spare   /dev/sda14

看到了吧,結(jié)果不用我解釋了吧。。哈哈

而這一切的一切都是online的狀態(tài)下完成的,是不是很NB呢  =_=

====開機(jī)自動(dòng)掛載RAID====

只需要知道/dev/md0的UUID就行

# mdadm &ndash;detail /dev/md0 | grep -i uuid
UUID : 657db303:887c7b6f:b8d8fc91:dc7b3374

# vi /etc/mdadm.conf
ARRAY /dev/md0 UUID=657db303:887c7b6f:b8d8fc91:dc7b3374
# vi /etc/fstab,在最后一行加入

/dev/md0 /mnt/raid ext4 defaults 1 2

測(cè)試下可行否(這個(gè)很重要,因?yàn)槿绻鹒stab修改不對(duì)可能導(dǎo)致開不了機(jī)器)

# umount /dev/md0; mount -a
[root@localhost ~]# df /mnt/raid/
文件系統(tǒng)         1K-塊   已用    可用 已用% 掛載點(diǎn)
/dev/md0       3020688 120464 2746780    5% /mnt/raid
OK,沒有問題,那么你就可以重啟了,看是不是自動(dòng)掛載了呢。

====關(guān)閉RAID====

1,先卸載

# umount /dev/md0

2,刪除配置文件內(nèi)容:

# vi /etc/fstab,刪除(注釋)下面這行

/dev/md0 /mnt/raid ext4 defaults 1 2

3,關(guān)閉/dev/md0:

# mdadm &ndash;stop /dev/md0

4,# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
unused devices: <none>

5,vi /etc/mdadm.conf,刪除(注釋)下面的行

ARRAY /dev/md0 UUID=657db303:887c7b6f:b8d8fc91:dc7b3374

好的,所有的RAID的基本都講完了。不過上面我用的時(shí)一塊磁盤,實(shí)際用途中記得用多塊磁盤?。。?/p>

以上是“l(fā)inux如何使用軟件磁盤陣列RAID”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI