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.178linux.com/42646