一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - linux學習日記十三 軟件磁盤陣列RAID

linux學習日記十三 軟件磁盤陣列RAID

2019-12-06 18:31Linux教程網 Linux

這系列文章主要是一刀寫的linux相關學習資料,這篇文章主要介紹了linux下的軟件磁盤陣列RAID相關知識,需要的朋友可以參考下

磁盤陣列的英文全稱是Redundant Arrays of Inexpensive Disks(RAID),即容錯廉價磁盤陣列??梢酝ㄟ^一些技術將多個較小的磁盤整合成為一個較大的磁盤設備;而這個設備可不止存儲功能而已,它還具有數據保護功能。

RAID的等級:

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

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

缺點:一個磁盤掛點,整個文件系統崩盤,無法恢復了。并且所有磁盤容量必須一樣,不然性能會下降。

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

這種模式也要相同型號,相同容量的磁盤,最好完全一樣,一個模子刻出來的。

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

× RAID 0+1, RAID 1+0

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

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

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

缺點:磁盤有一半的容量用來做備份了,悲劇呀?。?!

RAID-5:性能與數據備份的均衡考慮

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

RAID-5的容量要減掉一個磁盤容量,也就是陣列的磁盤總數N-1,因為需要一個磁盤容量來保存同位檢查數據Parity

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

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

====Spare Disk:預備磁盤的功能====

為了讓系統可以實時在壞掉磁盤時主動重建,需要預備磁盤spare disk的輔助,平時不包含在磁盤陣列中,當磁盤陣列有任何磁盤損壞時,spare disk馬上被主動拉入磁盤陣列中,并將壞掉的磁盤移除磁盤陣列,然后立即重建數據系統,如果你的磁盤陣列還支持熱插拔就更爽了,因為這個時候只需要把壞的那顆磁盤拔下來,換上一個新的,再將新的磁盤設置成spare disk,完成了,不用關機重啟可以完成一切。這對服務器的穩定性有很好的幫助。

磁盤陣列的優點:

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

× 讀寫性能,RAID-0可以加強讀寫性能,讓你的系哦I/O系統部分得以改善

× 容量:可以讓多個磁盤組合起來,因此單一文件系統可以有相當大的容量。

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

注意:硬盤磁盤陣列在linux看起來就是一個大的磁盤,所有設備文件名為/dev/sd[a-p],因為使用到SCSI的模塊的原因。而軟件磁盤陣列因為是系統仿真,因此使用的設備文件名時系統的設備文件,文件名為/dev/md0, /dev/md1,兩者注意區別。

====軟件磁盤陣列的設置====

# 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的參數

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

–raid-devices=N:使用N個磁盤作為磁盤陣列的設備

–spare-devices=N:使用N個磁盤作為備用spare設備

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

–detail:后面所接的那個磁盤陣列設備的詳細信息

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

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

我希望這個RAID-5環境時這樣子的:

× 利用4個分區組成RAID-5

× 每個分區大約為1G大小,需要確定每個分區一樣大較佳

× 另外加一個分區設置為sparedisk

× 這個sparedisk的大小與其他RAID所需分區一樣大

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

先用fdisk構建5個1G的分區:

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

每次分1000M空間大小,注意,我不知道神馬原因,first 扇區要手動輸入,用p選項查看后,用最后一個分區的扇區號+2049才是第一個空閑扇區號,這個可能時fedora的一個bug,分區居然不是連續的,不管了,自己去試試。囧

最后的分區用p查看后,是這樣子的:

設備 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個分區,每個大概1G,大小都相同。

# partprobe

接下來就簡單啦啦,,通過mdadm來創建磁盤陣列吧。哦也

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

查看下(等下,先去喝杯咖啡先,因為如果你直接立馬運行,可能出現下面的正在building數據的信息):

 

復制代碼

代碼如下:


# mdadm --detail /dev/md0 
/dev/md0: <==RAID設備文件名 
Version : 1.2 
Creation Time : Sun Oct 28 10:03:43 2012 <==RAID被創建的時間 
Raid Level : raid5 <==此RAID的等級 
Array Size : 3068928 (2.93 GiB 3.14 GB) <==此RAID可用磁盤容量 
Used Dev Size : 1022976 (999.17 MiB 1047.53 MB) <==每個設備可用容量 
Raid Devices : 4 <==用作RAID的設備數量 
Total Devices : 5 <==全部的設備數量 
Persistence : Superblock is persistent 

Update Time : Sun Oct 28 10:04:01 2012 
State : clean, degraded, recovering 
Active Devices : 3 <==啟動的(active)設備數量 
Working Devices : 5 <==可工作的設備數量 
Failed Devices : 0 <==出現錯誤的設備數量 
Spare Devices : 2 <==預備spare磁盤的數量 

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后的信息應該是:

 

復制代碼

代碼如下:


# 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

文件系統          1K-塊    已用     可用 已用% 掛載點
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
看到了吧,最后一個,是不是很有成就感,=_=

====仿真RAID錯誤的救援模式====

# mdadm –manage /dev/md[0-9] [--add 設備] [--remove 設備] [--fail 設備]

–add:將后面的設備加入到這個md中

–remove:將后面的設備從這個md中刪除

–fail:將后面的設備設置成出錯的狀態

手動模擬磁盤錯誤:

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

# df -h /mnt/raid/; du -smh /mnt/raid/*
文件系統        容量  已用  可用 已用% 掛載點
/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 –manage /dev/md0 –fail /dev/sda10
mdadm: set /dev/sda10 faulty in /dev/md0

然后馬上查看狀態,這個動作要快點,因為raid會自動重建數據系統:

 

復制代碼

代碼如下:


# 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

 

喝完咖啡后,看一下(其實也就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

 


看到了吧,不用我來給你解釋了吧。

接下來,我將出錯的磁盤刪除并加入新的磁盤:

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

# fdisk /dev/sda

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

# partprobe

# partprobe
[root@localhost ~]# mdadm –manage /dev/md0 –add /dev/sda14 –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

 

看到了吧,結果不用我解釋了吧。。哈哈

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

====開機自動掛載RAID====

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

# mdadm –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

測試下可行否(這個很重要,因為如果fstab修改不對可能導致開不了機器)

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

====關閉RAID====

1,先卸載

# umount /dev/md0

2,刪除配置文件內容:

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

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

3,關閉/dev/md0:

# mdadm –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的基本都講完了。不過上面我用的時一塊磁盤,實際用途中記得用多塊磁盤?。?!

=======================================END=========================================

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91真人毛片一级在线播放 | 美女的隐私无遮挡的网页 | 美女操批 | 国产精品美女久久久久 | 日本色淫| 国产性片在线观看 | 女教师巨大乳孔中文字幕免费 | 美女主播免费观看 | 亚洲一区二区三区深夜天堂 | 四虎影视网址 | 国产精品福利在线观看入口 | 欧美va在线播放免费观看 | 日韩无砖2021特黄 | 亚洲AV无码国产精品午夜久久 | 国内精品九一在线播放 | 好湿好紧好大野战 | 美女班主任让我爽了一夜视频 | 国产91精选学生在线观看 | 日本高清色视频www 日本高清免费观看 | 色婷婷久久综合中文久久一本` | 国色天香社区在线视频免费观看 | 欧美成狂野欧美在线观看 | 国产99久久精品 | 日韩精品高清自在线 | 日本在线亚州精品视频在线 | 变态女王麻麻小说在线阅读 | 午夜精品久久久内射近拍高清 | 欧美男同猛男 videos 同性 | 亚洲乱码一区二区三区国产精品 | 色欧美亚洲 | 久草热8精品视频在线观看 久草草在线视视频 | 国产欧美日韩综合二区三区 | 精品国产一区二区在线观看 | 日韩一区二区三 | 美女用屁股把人吞进肚子 | 2022最新a精品视频在线观看 | 国产免费福利片 | 我被男人下药添得好爽 | 秋霞在线观看成人高清视频51 | 玩高中女同桌肉色短丝袜脚文 | sss在线观看免费视频 |