您的位置:首页 > 运维架构 > Linux

linux软RAID

2015-09-13 12:50 609 查看
一、RAID简介
独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。

二、条带化存储技术
条带化技术就是一种自动的将 I/O 的负载均衡到多个物理磁盘上的技术,条带化技术就是将一块连续的数据分成很多小部分并把他们分别存储到不同磁盘上去。这就能使多个进程同时访问数据的多个 不同部分而不会造成磁盘冲突,而且在需要对这种数据进行顺序访问的时候可以获得最大程度上的 I/O 并行能力,从而获得非常好的性能。很多操作系统、磁盘设备供应商、各种第三方软件都能做到条带化。



三、RAID级别和机制

条带机制

RAID 0 (读速度提高了,写的数据慢了)



磁盘镜像机制
RAID 1



效验码机制
RAID 4 (读写都提高了,效验码盘存储压力大成为性能瓶颈)



RAID 0+1(先做条带,然后再把各个条带组成RAID1)



RAID 1+0(先两两镜像,然后RAID0)



RAID 5 (RAID 6 两块效验盘)



JBOD (磁盘堆叠,多块盘组成一个容量大的盘,hadoop建议使用JBOD ,hadoop 机制HDFS可以实现JBOD冗余,JBOD本身没有冗余功能)



RAID实现的方式:
外接式磁盘阵列,通过扩展卡通过适配能力
内核式RAID:主板集成RAID控制器
software RAID

RAID配置命令和查看命令
centos6上的软件RAID的实现结合了内核中的md(multi devices)
命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>
支持的RAID级别:LINEAR,RAID0,RAID1,RAID4,RAID5,RAID6,RAID10;

[mode]
创建模式:
-C
-n #使用#个块设备来创建此RAID
-l #指明要创建的RAID的级别
-a {yes|on}自动创建目标RAID设备的设备文件
-c CHUNK_SIZE:指明CHUNK大小
-x #指明空闲盘的个数

装配模式(装配能扫描RAID上的元数据,常用于装系统后,重新装配使用)
-A
管理模式
-f标记指定磁盘为损坏
-a添加磁盘
-r移除磁盘

<raiddevice>:/dev/md#

<component-devices>:任意块设备,可以是磁盘,可以是分区。

显示RAID的详细信息
mdadm -D /dev/md5\

查看MD的状态
cat /proc/mdstat

实例创建RAID5:
1,分区设置分区ID fd
[root@localhost /]# fdisk -l |grep "^/dev/sd[a-g]"
/dev/sda1 * 1 26 204800 83 Linux
/dev/sda2 26 7859 62914560 8e Linux LVM
/dev/sdb1 1 654 5253223+ fd Linux raid autodetect
/dev/sdb2 655 1308 5253255 fd Linux raid autodetect
/dev/sdb3 1309 1962 5253255 fd Linux raid autodetect
/dev/sdc1 1 654 5253223+ fd Linux raid autodetect
[root@localhost /]#

2,创建RAID5
[root@localhost testmd5]# mdadm -C /dev/md5 -a yes -n 3 -l 5 -x 1 /dev/sd[b,c][1-3]
mdadm: /dev/sdb1 appears to be part of a raid array:
level=raid5 devices=3 ctime=Wed Aug 26 17:28:15 2015
mdadm: /dev/sdb2 appears to be part of a raid array:
level=raid5 devices=3 ctime=Wed Aug 26 17:28:15 2015
mdadm: /dev/sdb3 appears to be part of a raid array:
level=raid5 devices=3 ctime=Wed Aug 26 17:28:15 2015
mdadm: /dev/sdc1 appears to be part of a raid array:
level=raid5 devices=3 ctime=Wed Aug 26 17:28:15 2015
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
3,查看md的状态
[root@localhost testmd5]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdb3[4] sdc1[3](S) sdb2[1] sdb1[0]
10498048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
[============>........] recovery = 61.8% (3246400/5249024) finish=1.0min speed=30693K/sec

unused devices: <none>
4,查看RAID信息
[root@localhost testmd5]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Wed Aug 26 18:42:00 2015
Raid Level : raid5
Array Size : 10498048 (10.01 GiB 10.75 GB)
Used Dev Size : 5249024 (5.01 GiB 5.38 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent

Update Time : Wed Aug 26 18:43:27 2015
State : clean
Active Devices : 2
Working Devices : 4
Failed Devices : 0
Spare Devices : 2

Layout : left-symmetric
Chunk Size : 512K

Rebuild Status : 43% complete

Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 7c6efc4f:5f6e0b0d:f6e56836:3556ec3f
Events : 7

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2
4 8 19 2 spare rebuilding /dev/sdb3

3 8 33 - spare /dev/sdc1
5,格式化挂载。
[root@localhost testmd5]# mkfs.ext4 /dev/md5
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=256 blocks
657072 inodes, 2624512 blocks
131225 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8112 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@localhost testmd5]# mkdir -pv /testmd5
[root@localhost testmd5]# mount -t ext4 /dev/md5 /testmd5/
[root@localhost testmd5]# mount |tail -1
/dev/md5 on /testmd5 type ext4 (rw)
[root@localhost /]# cd testmd5/
[root@localhost testmd5]# ls
lost+found
[root@localhost testmd5]#
6,测试RAID冗余
[root@localhost testmd5]# /bin/cp -fr /etc /testmd5/
[root@localhost testmd5]# du -sh /testmd5/
38M /testmd5/
[root@localhost testmd5]# mdadm /dev/md5 -f /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md5
[root@localhost testmd5]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Wed Aug 26 18:42:00 2015
Raid Level : raid5
Array Size : 10498048 (10.01 GiB 10.75 GB)
Used Dev Size : 5249024 (5.01 GiB 5.38 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent

Update Time : Wed Aug 26 18:55:41 2015
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1

Layout : left-symmetric
Chunk Size : 512K

Rebuild Status : 23% complete

Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 7c6efc4f:5f6e0b0d:f6e56836:3556ec3f
Events : 23

Number Major Minor RaidDevice State
3 8 33 0 spare rebuilding /dev/sdc1
1 8 18 1 active sync /dev/sdb2
4 8 19 2 active sync /dev/sdb3

0 8 17 - faulty /dev/sdb1
[root@localhost testmd5]#
7,观察md的状态
[root@localhost ~]# watch -n 3 "cat /proc/mdstat"
8,再指定一块损坏,让其工作在降级模式。

注意:级别仅代表磁盘组织方式不同,没有上下之分。

本文出自 “学生―田涛” 博客,请务必保留此出处http://tiantao.blog.51cto.com/10627002/1694245
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: