前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RAID 磁盘阵列的应用

RAID 磁盘阵列的应用

作者头像
星哥玩云
发布2022-07-04 14:14:47
1.1K0
发布2022-07-04 14:14:47
举报
文章被收录于专栏:开源部署

RAID,一般翻译为磁盘阵列,全称是 Redundant Arrays of Inexpensive Disk,最初的构想是源于加州大学伯克利分校的一个研究小组的项目,他们希望通过大量廉价的硬盘来组建价格便宜,可用性高的磁盘阵列。但是RAID发展到今天,已经背离了当初价格便宜的初衷。但是RAID也带来了另外的好处,如何合理选择RAID的级别,可以构建出具有更高可用性,更好地容错的磁盘。

RAID主要分为软件RAID和硬件RAID,软件RAID主要是通过操作系统来实现,这样会增加CPU的负担,所以在实际场景中极少使用。硬件RAID使用独立的硬件设备和控制芯片,整体性能优于软件RAID。RAID有不同的规范,但是总体上可以分为两种:标准RAID和混合RAID。虽然现在的RAID有很多不同的规范,但是很多规范只是一种过渡性的实验产品,在实际的生产环境中几乎不使用。

1、标准RAID

1.1  RAID 0

RAID 0也称为条带(strping),它将两个以上的硬盘串联起来,成为一个大容量的磁盘。在存储数据时,数据分散存储在这些磁盘中。因为数据读写都可以并行的进行,所以在所有的级别中,RIID的速度是最快的。但是RAID既没有冗余功能,也不提供容错能力。如果有一个物理磁盘损坏,所有的数据都会丢失。所以,RAID只是在一些对数据安全性要求不高,但是速度要求较高的场景下使用,比如视频,图像等工作站。

1.2  RAID 1

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

RAID
RAID

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

1.3  RAID 5

RAID 5引入了数据校验的功能,并且校验的数据是分散的存储在各块硬盘上。RAID 5 实际上是速度与可靠性的一种折衷方案,在实际场景中应用较多。与RAID相比,存储成本比较便宜。RAID 5至少需要3块磁盘来实现。

RAID
RAID

1.4  RAID 6

与RAID 5相比,RAID增加了第二个独立的信息校验块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。RAID 6至少需要4块以上的磁盘。

RAID
RAID

2、          混合RAID

2.1 JBOD

严格来讲JBOD(Just a Bunch Of Disks)并不属于RAID的等级,JBOD并没有严格的规范,主要是用于实现将各个独立的硬盘空间在逻辑上组合成一个大的硬盘。如果硬盘损毁,则存在上面的数据将无法救回。若第一块硬盘损坏,将丢失所有的数据,危险程度与RAID 0相比有过之无不及。但是JBOD也有它的应用场景,例如Hadoop就鼓励使用JBOD,因为Hadoop由自己的一套容灾方案。

RAID
RAID

2.2 RAID 01

RAID 01是RAID 0与RAID 1的一种组合。主要实现方案是先将数据分成两组,然后再对数据进行镜像映射。即先实现RAID 0,再实现RAID 1。

RAID
RAID

2.3 RAID 10

RAID 10与RAID 01恰好相反,是先进行数据镜像,然后才对数据进行分组。

RAID
RAID

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
RAID

通过Linux 实现软RAID:

在Linux实现RAID主要是通过mdadm来实现。

mdadm属于模式化的命令,主要模式有:

创建模式

管理模式

监控模式

增长模式

装配模式

mdadm的基本格式为:

#mdadm [mode]  [options]

装配模式RAID的选项有:

-l:指定RAID的级别;

-n:指定设备数,即磁盘的个数;

-a:自动为其创建设备文件;

-c,--chunk 指定分割数据块的大小

1.      实现RAID 0:

准备工作:

两个1G大小的磁盘分区。

[root@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 为其创建文件系统: [root@local ~]# mke2fs -j /dev/md0 挂载文件系统: [root@local mnt]# mount /dev/md0 /mnt/raid 查看挂载文件系统的信息: [root@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大小的磁盘分区。 [root@local ~]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb{5,6} 查看状态信息 [root@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> 创建文件系统 [root@local ~]# mke2fs -j /dev/md1 查看指定RAID设备的详细信息 [root@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 模拟一块硬盘损坏(管理模式) [root@local ~]# mdadm /dev/md1 --fail /dev/sdb5 mdadm: set /dev/sdb5 faulty in /dev/md1 移除损坏的硬盘:(-r = --remove) [root@local ~]# mdadm /dev/md1 -r /dev/sdb5 mdadm: hot removed /dev/sdb5 更换新盘(和坏掉的盘的分区应保持一致) [root@local ~]# mdadm /dev/md1 -a /dev/sdb7 mdadm: added /dev/sdb7 停止磁盘阵列 [root@local ~]# mdadm -S /dev/md1 mdadm: stopped /dev/md1 重新装配磁盘阵列 [root@local ~]# mdadm -A --run /dev/md1 /dev/sdb5 /dev/sdb6 mdadm: /dev/md1 has been started with 1 drive (out of 2). 扫描磁盘阵列的信息,以后可以实现自动装配: [root@local ~]# mdadm -D --scan > /etc/mdadm.conf

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档