您好,登錄后才能下訂單哦!
博文大綱
什么是RAID
Software,hardware RAID
軟件磁盤陣列的設置
仿真RAID錯誤的救援模式
開機自動啟動RAID并自動掛載
1.什么是RAID:
1.磁盤陣列全名是“ Redundant Arrays of Inexpensive Disks, RAID ”,英翻中的意思是:容錯式廉價磁盤陣列。
2.RAID 可以通過一個技術(軟件或硬件),將多個較小的磁盤整合成為一個較大的磁盤設備;而這個較大的磁盤功能可不止是儲存而已,他還具有數據保護的功能呢。
3.整個 RAID 由于選擇的等級(level)不同,而使得整合后的磁盤具有不同的功能
這種模式如果使用相同型號與容量的磁盤來組成時,效果較佳。
這種模式的 RAID 會將磁盤先切出等量的區塊(名為chunk,一般可設置 4K~1M 之間),然后當一個文件要寫入 RAID 時,該文件會依據 chunk 的大小切割好,之后再依序放到各個磁盤里面去。
由于每個磁盤會交錯的存放數據,因此當你的數據要寫入 RAID 時,數據會被等量的放置在各個磁盤上面。
這種模式也是需要相同的磁盤容量的,最好是一模一樣的磁盤。
如果是不同容量的磁盤組成 RAID-1 時,那么總容量將以最小的那一顆磁盤為主!這種模式主要是“讓同一份數據,完整的保存在兩顆磁盤上頭”
舉例來說,如果我有一個 100MB 的文件,且我僅有兩顆磁盤組成 RAID-1 時,那么這兩顆磁盤將會同步寫入 100MB 到他們的儲存空間去。因此,整體 RAID 的容量幾乎少了 50%。由于兩顆硬盤內容一模一樣,好像鏡子映照出來一樣,所以我們也稱他為 mirror 模式
由于兩顆磁盤內的數據一模一樣,所以任何一顆硬盤損毀時,你的數據還是可以完整的保留下來的!
最大優點 備份
RAID-0 的性能佳但是數據不安全,RAID-1 的數據安全但是性能不佳,那么能不能將這兩者整合起來設置 RAID 呢?
RAID 1+0 就是:
(1)先讓兩顆磁盤組成 RAID 1,并且這樣的設置共有兩組;
(2)將這兩組 RAID 1 再組成一組 RAID 0。這就是 RAID 1+0
RAID 0+1 就是:
(1)先讓兩顆磁盤組成RAID 0,并且這樣的設置共有兩組;
(2) 將這兩組RAID 0 再組成一組RAID 1 。這就是RAID 0+1
RAID-5 至少需要三顆以上的磁盤才能夠組成這種類型的磁盤陣列。
這種磁盤陣列的數據寫入有點類似 RAID-0 ,不過每個循環的寫入過程中(striping),在每顆磁盤還加入一個同位檢查數據(Parity),這個數據會記錄其他磁盤的備份數據,用于當有磁盤損毀時的救援。
每個循環寫入時,都會有部分的同位檢查碼(parity)被記錄起來,并且記錄的同位檢查碼每次都記錄在不同的磁盤,因此,任何一個磁盤損毀時都能夠借由其他磁盤的檢查碼來重建原本磁盤內的數據喔!不過需要注意的是,由于有同位檢查碼,因此 RAID 5 的總容量會是整體磁盤數量減一顆。
原本的 3 顆磁盤只會剩下(3-1)=2 顆磁盤的容量。
當損毀的磁盤數量大于等于兩顆時,這整組 RAID 5 的數據就損毀了。因為 RAID 5 默認僅能支持一顆磁盤的損毀情況
讀取性能:優
寫入性能:一般
RAID5 :支持1顆損壞
RAID6 :支持2顆損壞
為了讓系統可以實時的在壞掉硬盤時主動的重建,因此就需要預備磁盤(spare disk)的輔助。所謂的 spare disk 就是一顆或多顆沒有包含在原本磁盤陣列等級中的磁盤,這顆磁盤平時并不會被磁盤陣列所使用,當磁盤陣列有任何磁盤損毀時,則這顆 spare disk 會被主動的拉進磁盤陣列中,并將壞掉的那顆硬盤移出磁盤陣列!然后立即重建數據系統。
當磁盤陣列的磁盤損毀時,就得要將壞掉的磁盤拔除,然后換一顆新的磁盤。
Software,hardware RAID:
系統資源,比如說 CPU 的運算與 I/O 總線的資源等。不過目前我們的個人計算機實在已經非常快速了,因此以前的速度限制現在已經不存在!
我們的 CentOS 提供的軟件磁盤陣列為 mdadm 這套軟件,這套軟件會以 partition 或 disk 為磁盤的單位,也就是說,你不需要兩顆以上的磁盤,只要有兩個以上的分區(partition)就能夠設計你的磁盤陣列了。
此外, mdadm 支持剛剛我們前面提到的RAID0/RAID1/RAID5/spare disk 等!而且提供的管理機制還可以達到類似熱拔插的功能,可以線上(文件系統正常使用)進行分區的抽換
軟件磁盤陣列的設置:
配置RAID
(給服務器添加一塊硬盤,創建5個分區(也可以添加5塊硬盤每塊一個分區))
1.[root@localhost ~]# gdisk /dev/sdb //進入硬盤
Creating new GPT entries.
Command (? for help): n //創建分區
Partition number (1-128, default 1): 1 //默認為1
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +1G //大小為1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
按照上面一樣配置再建立4塊分區
Command (? for help): p //查看分區表信息
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 6A978C77-4505-4345-ABEC-AE3C31214C6D
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 31457213 sectors (15.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 2099199 1024.0 MiB 8300 Linux filesystem
2 2099200 4196351 1024.0 MiB 8300 Linux filesystem
3 4196352 6293503 1024.0 MiB 8300 Linux filesystem
4 6293504 8390655 1024.0 MiB 8300 Linux filesystem
5 8390656 10487807 1024.0 MiB 8300 Linux filesystem
Command (? for help): wq //保存退出
[root@localhost ~]# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd[b-e]1
命令參數:
--create #表示要創建raid
--auto=yes /dev/md0 #新建立的軟件磁盤陣列設備為md0,md序號可以為0-9
--level=5 #磁盤陣列的等級,這里表示創建是的raid5
--raid-devices #添加作為磁盤陣列用的磁盤的塊數
--spare-devices #添加作為預備(spare)磁盤的塊數
/dev/sd[b-f]1 #磁盤陣列所使用的設備,還可寫成/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
[root@localhost ~]# cat /proc/mdstat #查看RAID的配置文件
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2** [3/3] [UUU]**
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md0 #查看RAID配置文件詳細信息
/dev/md0:
Version : 1.2
Creation Time : Sun Jun 30 10:43:20 2019
** Raid Level : raid5** #陣列類型為raid5
………… #省略部分內容
Active Devices : 3 #活躍的磁盤數目
Working Devices : 4 #所有的磁盤數目
Failed Devices : 0 #故障的磁盤數目
Spare Devices : 1 #熱備份的磁盤數目
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
3 8 65 - spare /dev/sde1 #一塊磁盤用于熱備份
[root@localhost ~]# mkfs.xfs /dev/md0
#格式化磁盤
[root@localhost ~]# mkdir /a
[root@localhost ~]# mount /dev/md0 /a
#掛載磁盤
[root@localhost ~]# df -hT #查看磁盤大小
………… #省略部分內容
/dev/md0 xfs 40G 33M 40G 1% /a
[root@localhost ~]# vim /etc/fstab #編寫文件開機自動掛載
………… #省略部分內容
/dev/md0 /a xfs defaults 0 0
[root@localhost ~]# cd /a
[root@localhost a]# touch 123.txt 456.txt #創建測試文件
[root@localhost a]# mdadm /dev/md0 -f /dev/sdb1 #模擬sdb1損壞
mdadm: set /dev/sdb1 faulty in /dev/md0
[root@localhost a]# mdadm -D /dev/md0 #查看/dev/md0詳細信息
………… #省略部分內容
Number Major Minor RaidDevice State
3 8 65 0 spare rebuilding /dev/sde1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
0 8 17 - faulty /dev/sdb1
[root@localhost a]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[4] sde1[3] sdc1[1] sdb1[0](F)
41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2 [**3/3] [UUU]**
unused devices: <none>
[root@localhost a]# ll #查看測試的文件
總用量 0
-rw-r--r--. 1 root root 0 6月 30 11:06 123.txt
-rw-r--r--. 1 root root 0 6月 30 11:06 456.txt
[root@localhost a]# mdadm /dev/md0 -r /dev/sdb1 #移除已損壞的磁盤
mdadm: hot removed /dev/sdb1 from /dev/md0
[root@localhost a]# mdadm -D /dev/md0 #查看/dev/md0詳細信息
………… #省略部分內容
Number Major Minor RaidDevice State
3 8 65 0 active sync /dev/sde1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
[root@localhost a]# mdadm /dev/md0 -a /dev/sdb1 #添加一塊硬盤
mdadm: added /dev/sdb1
[root@localhost a]# mdadm -D /dev/md0 #查看/dev/md0詳細信息
服務器再添加一塊磁盤,重啟之后再加上:
[root@localhost a]# mdadm /dev/md0 -a /dev/sdf1
mdadm: added /dev/sdf1
[root@localhost a]# mdadm -D /dev/md0
………… #省略部分內容
Number Major Minor RaidDevice State
3 8 65 0 active sync /dev/sde1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
5 8 17 - spare /dev/sdb1
6 8 81 - spare /dev/sdf1
[root@localhost a]# mdadm /dev/md0 -G -n4
#-n用來指定raid中活動盤的數量。最好保證要有足夠的熱備盤添加。
[root@localhost a]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Jun 30 10:43:20 2019
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB) #磁盤容量已將發生變化
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Sun Jun 30 11:22:00 2019
State : clean #構建完成
………… #省略部分內容
Number Major Minor RaidDevice State
3 8 65 0 active sync /dev/sde1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
6 8 81 3 active sync /dev/sdf1
5 8 17 - spare /dev/sdb1
#此時raid中已經由四塊硬盤了
[root@localhost a]# df -hT #查看之后,容量并沒有發生變化
………… #省略部分內容
/dev/md0 xfs 40G 33M 40G 1% /a
[root@localhost a]# resize2fs /dev/md0
#(resizefx適用于ext3,ext4等文件系統不適用于xfs文件系統)
#resize2fs命令用于更新磁盤
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block 當嘗試打開 /dev/md0 時
找不到有效的文件系統超級塊.
[root@localhost a]# xfs_growfs /dev/md0 #對文件系統進行擴容
meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 10475520 to 15715584
[root@localhost a]# df -hT
文件系統 類型 容量 已用 可用 已用% 掛載點
………… #省略部分內容
/dev/md0 xfs 60G 33M 60G 1% /a
#再次查看容量已經發生變化
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。