RAID
RAID:Redundant Arrays of Inexpensive(Independent)Disks
1988年由加利福尼亞大學伯克利分校(University of California-Berkeley)“A Case for Redundant Arrays of Inexpensive Disks”。
多個磁盤合成一個“陣列”來提供更好的性能、冗余,或者兩者都提
RAID是硬件,安裝操作系統時,有的硬件廠商的硬件可能操作系統不包含驅動,需要單獨安裝。
內核調用的是md模塊
提高IO能力:
磁盤并行讀寫
提高耐用性;
磁盤冗余來實現
級別:多塊磁盤組織在一起的工作方式有所不同
注意:數據不重要但是,設備損壞有可能引發業務終止。
RAID實現的方式:
外接式磁盤陣列:通過擴展卡提供適配能力
內接式RAID:主板集成RAID控制器
安裝OS前在BIOS里配置
注意:硬件RAID應該在安裝操作系統之前做好規劃配置。一般都在BIOS界面配置。
Software RAID:
RAID級別
RAID-0:條帶卷,strip
RAID-1: 鏡像卷,mirror
RAID-2 ##2-4不常用
..
RAID-5
RAID-6
RAID-10
RAID-01
RAID-0: ###多塊硬盤邏輯上累加為一塊硬盤
讀、寫性能提升;
可用空間:N*min(S1,S2,…)
無容錯能力
最少磁盤數:2, 2
RAID把文件切割成多塊(chunk),把塊分散到不同磁盤上去。只能是非關鍵性的數據。
RAID-1 :##鏡像
讀性能提升、寫性能略有下降;
可用空間:1*min(S1,S2,…)
有冗余能力
最少磁盤數:2, 2N
RAID-4:
多塊數據盤異或運算值,存于專用校驗盤
三塊以上的硬盤組成RAID,一塊存校驗碼,另外兩塊存數據。
將數據分成連組chunk,兩組chunk做異或運算。得到的校驗碼。任何一組數據丟失,都能通過校驗碼找回。
允許壞一塊硬盤,降級模式運行。
缺點,校驗盤讀寫壓力大。
RAID-5:
讀、寫性能提升
可用空間:(N-1)*min(S1,S2,…)
有容錯能力:允許最多1塊磁盤損壞
最少磁盤數:3, 3+
基于左對稱,輪流做校驗盤。
浪費空間小
RAID-6:
讀、寫性能提升
可用空間:(N-2)*min(S1,S2,…)
有容錯能力:允許最多2塊磁盤損壞
最少磁盤數:4, 4+
用兩塊盤做校驗盤
浪費空間小
RAID混合類型級別
RAID-10:
讀、寫性能提升
可用空間:N*min(S1,S2,…)/2
有容錯能力:每組鏡像最多只能壞一塊
最少磁盤數:4, 4+
RAID-01、RAID-50
RAID7:可以理解為一個獨立存儲計算機,自身帶有操作系統和管理工具,可以獨立運行,理論上性能 最高的RAID模式
JBOD:Just a Bunch Of Disks
功能:將多塊磁盤的空間合并一個大的連續空間使用
可用空間:sum(S1,S2,…)
常用級別:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
軟RAID
內核有一個模塊md通過讀取配置文件支持RADI(軟RAID)在系統中表象為一個硬件設備在/dev/md#
內核的庫文件[root@yangyouwei ~]# ls /lib/modules/2.6.32-642.el6.x86_64/kernel/drivers/md/
mdadm:為軟RAID提供管理界面,支持任何塊設備配置為RAID
為空余磁盤添加冗余,如果使用分區的話,需要將分區類型改為linux raid類型fd
結合內核中的md(multi devices)
mdadm:模式化的工具
命令的語法格式:mdadm[mode] <raiddevice> [options] <component-devices>
支持的RAID級別:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
模式:
創建:-C
裝配: -A
監控: -F
管理:-f, -r, -a
增長:-G
<raiddevice>: /dev/md#
<component-devices>: 任意塊設備
-C: 創建模式
-n #: 使用#個塊設備來創建此RAID;
-l #:指明要創建的RAID的級別;
-a {yes|no}:自動創建目標RAID設備的設備文件;
-c CHUNK_SIZE: 指明塊大小;
-x #: 指明空閑盤的個數;
例如:創建一個10G可用空間的RAID5
-D:顯示raid的詳細信息;
mdadm-D /dev/md#
管理模式:
-f: 標記指定磁盤為損壞
-a: 添加磁盤
-r: 移除磁盤
觀察md的狀態:
cat /proc/mdstat
停止md設備:
mdadm-S /dev/md#
軟RAID配置實例
使用mdadm創建并定義RAID設備
#mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
用文件系統對每個RAID設備進行格式化
#mke2fs -j /dev/md0
測試RAID設備
mdadm允許檢查RAID設備的狀況
#mdadm –detail|D /dev/md0
增加新的成員
#mdadm –G /dev/md0 –n 4 -a /dev/sdf1
軟RAID測試和修復
模擬磁盤故障
#mdadm /dev/md0 -f /dev/sda1
移除磁盤
#mdadm /dev/md0 –r /dev/sda1
從軟件RAID磁盤修復磁盤故障
?替換出故障的磁盤然后開機
?在備用驅動器上重建分區
?#mdadm /dev/md0 -a /dev/sda1
mdadm、/proc/mdstat及系統日志信息
軟RAID管理
生成配置文件:mdadm –Ds /dev/md0 > /etc/mdadm.conf
停服務:mdadm –S /dev/md0
激活:mdadm –A –s /dev/md0 激活
刪除raid信息:mdadm –zero-superblock /dev/sdb1
實際操作
1、RAID可在物理設備上直接使用,分區上做RAID就必須指定文件系統類型為linux RAID auto fd類型。
[root@yangyouwei ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 97.7G 0 part /
├─sda3 8:3 0 19.5G 0 part /testdir
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 200M 0 part [SWAP]
sdb 8:16 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sde 8:64 0 20G 0 disk
sdf 8:80 0 20G 0 disk
sr0 11:0 1 3.7G 0 rom
2、創建RAID設備
[root@yangyouwei ~]# mdadm -C /dev/md0 -a yes -l 5 -n 4 -x 1 /dev/sd{b,c,d,e,f} ###-a 自動創建設備文件 -l RAID5 -n 幾個設備 -x 備用設備 這里共用了5個設備。
mdadm: array /dev/md0 started.
[root@yangyouwei ~]# cat /proc/mdstat ###查看RAID。創建后同步設備
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde[5] sdf[4](S) sdd[2] sdc[1] sdb[0]
62865408 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UUU_]
[==>………………] recovery = 12.4% (2601088/20955136) finish=1.5min speed=200083K/sec
unused devices: <none>
[root@yangyouwei ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde[5] sdf[4](S) sdd[2] sdc[1] sdb[0]
62865408 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
查看RAID設備詳細情況
root@yangyouwei ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Jul 25 06:00:00 2016
Raid Level : raid5
Array Size : 62865408 (59.95 GiB 64.37 GB)
Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Mon Jul 25 06:08:33 2016
State : clean
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : yangyouwei.centos6:0 (local to host yangyouwei.centos6)
UUID : 245f2c18:4025fee1:a482c73e:fa3488d0
Events : 18
Number Major Minor RaidDevice State ###四個在線設備,要給備用設備
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
5 8 64 3 active sync /dev/sde
4 8 80 – spare /dev/sdf
查看RAID設備大小
[root@yangyouwei ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 97.7G 0 part /
├─sda3 8:3 0 19.5G 0 part /testdir
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 200M 0 part [SWAP]
sdb 8:16 0 20G 0 disk
└─md0 9:0 0 60G 0 raid5
sdd 8:48 0 20G 0 disk
└─md0 9:0 0 60G 0 raid5
sdc 8:32 0 20G 0 disk
└─md0 9:0 0 60G 0 raid5
sde 8:64 0 20G 0 disk
└─md0 9:0 0 60G 0 raid5
sdf 8:80 0 20G 0 disk
└─md0 9:0 0 60G 0 raid5
fdisk -l /dev/md0
Disk /dev/md0: 64.4 GB, 64374177792 bytes
2 heads, 4 sectors/track, 15716352 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1572864 bytes
Disk identifier: 0x00000000
注意:創建設備后RAID的設備成員的uuid都是一樣的。
/dev/sdb: UUID="245f2c18-4025-fee1-a482-c73efa3488d0" UUID_SUB="9e4e5600-1aed-33da-a8d1-e7976c26736b" LABEL="yangyouwei.centos6:0" TYPE="linux_raid_member"
/dev/sdd: UUID="245f2c18-4025-fee1-a482-c73efa3488d0" UUID_SUB="7e48d80e-f024-8795-d77a-2f9ea62ecbac" LABEL="yangyouwei.centos6:0" TYPE="linux_raid_member"
/dev/sdc: UUID="245f2c18-4025-fee1-a482-c73efa3488d0" UUID_SUB="e2730f30-b1c3-e516-832a-0abd5fe4f326" LABEL="yangyouwei.centos6:0" TYPE="linux_raid_member"
/dev/sde: UUID="245f2c18-4025-fee1-a482-c73efa3488d0" UUID_SUB="3dcd74bf-c723-0e0a-3f75-90703f17af89" LABEL="yangyouwei.centos6:0" TYPE="linux_raid_member"
3、在RAID設備上創建文件系統。
[root@yangyouwei ~]# mkfs.ext4 /dev/md0
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=384 blocks
3932160 inodes, 15716352 blocks
785817 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
480 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
就像在硬盤上創建文件系統一樣。設備指向,/dev/md#
4、寫入fstab文件
注意寫入fstab文件時,使用uuid時,需要使用在RAID創建的文件系統的uuid(blkid查看)。不能使用RAID設備的uuid
5、將當前RAID配置寫入配置文件(必須寫入否則下次進入系統后配置文件丟失不能使用RAID)就算停止RAID在啟動也會丟失配置。需要重新配置。
[root@yangyouwei ~]# mdadm -Ds /dev/md0 > /etc/mdadm.conf
6、測試
模擬損壞
[root@yangyouwei ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
刪除成員
[root@yangyouwei ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@yangyouwei ~]# mdadm /dev/md0 -r /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0
增加成員
停止RAID服務
[root@yangyouwei ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
啟動RAID服務
如不使用RAID需要清除RAID成員列表
刪除raid信息:mdadm –zero-superblock /dev/sdb1
原創文章,作者:yyw,如若轉載,請注明出處:http://www.www58058.com/42646