设为首页 收藏本站
查看: 282|回复: 0

[经验分享] RAID 磁盘阵列的应用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-3-4 08:16:01 | 显示全部楼层 |阅读模式
      RAID,一般翻译为磁盘阵列,全称是 Redundant Arrays of Inexpensive Disk,最初的构想是源于加州大学伯克利分校的一个研究小组的项目,他们希望通过大量廉价的硬盘来组建价格便宜,可用性高的磁盘阵列。但是RAID发展到今天,已经背离了当初价格便宜的初衷。但是RAID也带来了另外的好处,如何合理选择RAID的级别,可以构建出具有更高可用性,更好地容错的磁盘。         RAID主要分为软件RAID和硬件RAID,软件RAID主要是通过操作系统来实现,这样会增加CPU的负担,所以在实际场景中极少使用。硬件RAID使用独立的硬件设备和控制芯片,整体性能优于软件RAID。RAID有不同的规范,但是总体上可以分为两种:标准RAID和混合RAID。虽然现在的RAID有很多不同的规范,但是很多规范只是一种过渡性的实验产品,在实际的生产环境中几乎不使用。
1、          标准RAID1.1   RAID 0
RAID 0也称为条带(strping),它将两个以上的硬盘串联起来,成为一个大容量的磁盘。在存储数据时,数据分散存储在这些磁盘中。因为数据读写都可以并行的进行,所以在所有的级别中,RIID的速度是最快的。但是RAID既没有冗余功能,也不提供容错能力。如果有一个物理磁盘损坏,所有的数据都会丢失。所以,RAID只是在一些对数据安全性要求不高,但是速度要求较高的场景下使用,比如视频,图像等工作站。
325px-RAID_0.svg.jpg

1.2   RAID 1
RAID  1称为镜像技术,需要两块以上的硬盘互作镜像。也就是说,主盘上的数据和镜像盘上的数据完全一样。因此,在多线程的操作系统会大大提高数据的读取速度。RAID 1 的可靠性非常高,只要有一块硬盘正常就可以保证数据的完整性。但是RAID的缺点是浪费了大量的存储空间。
325px-RAID_1.svg.jpg

RAID2-RAID4属于实验性的产品实际生产环境很少使用。

1.3   RAID 5
RAID 5引入了数据校验的功能,并且校验的数据是分散的存储在各块硬盘上。RAID 5 实际上是速度与可靠性的一种折衷方案,在实际场景中应用较多。与RAID相比,存储成本比较便宜。RAID 5至少需要3块磁盘来实现。
675px-RAID_5.svg.jpg
1.4   RAID 6
与RAID 5相比,RAID增加了第二个独立的信息校验块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。RAID 6至少需要4块以上的磁盘。
850px-RAID_6.svg.jpg
2、          混合RAID2.1 JBOD
严格来讲JBOD(Just a Bunch Of Disks)并不属于RAID的等级,JBOD并没有严格的规范,主要是用于实现将各个独立的硬盘空间在逻辑上组合成一个大的硬盘。如果硬盘损毁,则存在上面的数据将无法救回。若第一块硬盘损坏,将丢失所有的数据,危险程度与RAID 0相比有过之无不及。但是JBOD也有它的应用场景,例如hadoop就鼓励使用JBOD,因为Hadoop由自己的一套容灾方案。
500px-JBOD.svg.jpg
2.2 RAID 01
RAID 01是RAID 0与RAID 1的一种组合。主要实现方案是先将数据分成两组,然后再对数据进行镜像映射。即先实现RAID 0,再实现RAID 1。
640px-RAID_01.svg.jpg
2.3 RAID 10
RAID 10与RAID 01恰好相反,是先进行数据镜像,然后才对数据进行分组。
640px-RAID_10.svg.jpg
2.4 RAID 50
RAID 5与RAID 0的结合,先作RAID 5,在作RAID 0,也就是对多组RAID 5构成条带化的访问。RAID 50以RAID 5为基础,而RAID 5至少需要3块硬盘,要以多组RAID 5构成RAID 50,因此RAID至少需要6块硬盘。RAID 50在底层任意一组或多组RAID 5中出现一块硬盘损坏时,仍然可以维持运作,不过任意一组同时出现两块硬盘损坏时,整组RAID 50就会失效。
RAID_50.jpg
通过Linux 实现软RAID:在Linux实现RAID主要是通过mdadm来实现。
mdadm属于模式化的命令,主要模式有:
         创建模式
         管理模式
         监控模式
         增长模式
         装配模式
mdadm的基本格式为:
#mdadm [mode] <raiddevice> [options]<component-devices>

装配模式RAID的选项有:
-l:指定RAID的级别;
-n:指定设备数,即磁盘的个数;
-a:自动为其创建设备文件;
-c,--chunk 指定分割数据块的大小
1.       实现RAID 0
准备工作:
两个1G大小的磁盘分区。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[iyunv@local ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
mdadm: /dev/sdb1 appears to contain an ext2fs file system
    size=104388K  mtime=Thu Jan  1 08:00:00 1970
    Continue creating array? (y/n) y
为其创建文件系统:
[iyunv@local ~]# mke2fs -j /dev/md0
挂载文件系统:
[iyunv@local mnt]# mount /dev/md0 /mnt/raid
查看挂载文件系统的信息:
[iyunv@local mnt]# df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
                       18G  3.3G   14G  20% /
/dev/sda1              99M   13M   82M  13% /boot
tmpfs                 252M     0  252M   0% /dev/shm
/dev/sr0              3.3G  3.3G     0 100% /mnt/cdrom
.host:/                56G   44G   12G  79% /mnt/hgfs
/dev/md0              1.9G   35M  1.8G   2% /mnt/raid
这里显示文件并没有2G是正常显现,因为RAID本身也有一些元数据需要保存。



2.       实现RAID 1
准备工作:
         两块1G大小的磁盘分区。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[iyunv@local ~]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb{5,6}
查看状态信息
[iyunv@local ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdb6[1] sdb5[0]
      987840 blocks [2/2] [UU]
      
md0 : active raid0 sdb2[1] sdb1[0]
      1975744 blocks 64k chunks
      
unused devices: <none>
创建文件系统
[iyunv@local ~]# mke2fs -j /dev/md1
查看指定RAID设备的详细信息
[iyunv@local ~]# mdadm -D /dev/md1
/dev/md1:
        Version : 0.90
  Creation Time : Tue Mar  3 17:26:24 2015
     Raid Level : raid1
     Array Size : 987840 (964.85 MiB 1011.55 MB)
  Used Dev Size : 987840 (964.85 MiB 1011.55 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Tue Mar  3 17:30:22 2015
          State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
  Spare Devices : 0

           UUID : f6a3844f:282828af:45d573d8:5f0aa269
         Events : 0.4

    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6

模拟一块硬盘损坏(管理模式)
[iyunv@local ~]# mdadm /dev/md1 --fail /dev/sdb5
mdadm: set /dev/sdb5 faulty in /dev/md1
移除损坏的硬盘:(-r = --remove)
[iyunv@local ~]# mdadm /dev/md1 -r /dev/sdb5
mdadm: hot removed /dev/sdb5
更换新盘(和坏掉的盘的分区应保持一致)
[iyunv@local ~]# mdadm /dev/md1 -a /dev/sdb7
mdadm: added /dev/sdb7
停止磁盘阵列
[iyunv@local ~]# mdadm -S /dev/md1
mdadm: stopped /dev/md1
重新装配磁盘阵列
[iyunv@local ~]# mdadm -A --run /dev/md1 /dev/sdb5 /dev/sdb6
mdadm: /dev/md1 has been started with 1 drive (out of 2).
扫描磁盘阵列的信息,以后可以实现自动装配:
[iyunv@local ~]# mdadm -D --scan > /etc/mdadm.conf






3.       实现RAID 5
准备工作:
         3块512M大小的磁盘
1
[iyunv@local ~]# mdadm -C /dev/md5 -l5 -n3 /dev/sdb{8,9,10}



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-42957-1-1.html 上篇帖子: centos安装中文man包 下篇帖子: CentOS6.6搭建Samba共享服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表