今天给大家带来的是一个Linux做RAID的配置教程。
首先介绍我们今天讲的RAID为6种
RAID0 RAID1 RAID5 RAID6 RAID01 RAID10
1:首先介绍的使
RAID0俗称条带卷,它是两个或者多个硬盘组成的一个逻辑硬盘,容量是所有硬盘的和,因为是多个硬盘组成一个,故可并行写操作,并且写入速度会提高,但是!
此方式做出的RAID没有对数据的冗余,没有容错,所以说,一旦物理硬盘损坏则数据就会丢失,因此,RAID0只适用于,数据量大,但是安全性要求不高的场景中,比如,音频,视频存储中。
2:
RAID1俗称镜像卷,它最少有两个盘组成,从它的名字中我们可以得知,“镜像”即是两个盘上的数据就像镜子一样,一模一样,可以实现数据的冗余,并且会提高读速度,但是写的速度理论来说不会改变,但是由于数据要同时写入两个盘,实际上说,写的速度还会稍微下降一点,但是,容错性却是最好的,只要有一块硬盘是正常的就可以正常工作,但它对硬盘容量的利用率则是最低,只有50%,因此它的成本也是最高的。所以,RAID1 适合对数据安全性要求非常高的场景中,比如数据库存储。
3:
RAID5它最少有3块硬盘组成,它将数据分散的存储在阵列中的所有硬盘之上,并且它还有一个数据校验位,数据位与校验位通过算法能够相互验证,当丢失其中一位时,RAID控制器能通过算法,利用其他两位数据将丢失的数据计算并还原,因此,RAID5只允许最多一块盘损坏,有容错性,一般的磁盘阵列,使用的都是RAID5这种方式,
4:
RAID6它是基于RAID5改良而来的,它将数据校验位又加了一位,所以允许损坏的硬盘数量也从RAID5的一块升级为两块,由于同一个阵列的很少有两块硬盘一起损坏的情况,所以RAID6用增加一块硬盘的方式,换来的是比RAID5更可靠的安全性
5:
RAID1+0它是先将数据进行镜像操作,然后再将数据进行分组,RAID1在这里是一个冗余的备份阵列,而RAID0则负责数据的读写阵列,所以它最少要4块硬盘,两块做RAID0,两块做RAID1,RAID10 对存储容量的利用率和 RAID 1 一样低,只有 50%.
Raid1+0 方案造成了 50%的磁盘浪费,但是它提供了 200%的速度和单磁盘损坏的数
据安全性,并且当同时损坏的磁盘不在同一 Raid1 中,就能保证数据安全性、RAID 10 能
提供比 RAID 5 更好的性能。这种新结构的可扩充性不好,使用此方案比较昂贵
接下来介绍的是做RAID时使用的阵列卡接口类型
IDE SCSI SATA SAS
1.IDE 接口
IDE 的英文全称为“Integrated Drive Electronics”,即“电子集成驱动器”,它的本意是指
把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。把盘体与控制器集成在一起的做法减少
了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强,硬盘制造起来变得更容易,
因为硬盘生产厂商不需要再担心自己的硬盘是否与其它厂商生产的控制器兼容,对用户而
言,硬盘安装起来也更为方便。IDE 这一接口技术从诞生至今就一直在不断发展,性能也不
断的提高,其拥有的价格低廉、兼容性强的特点,为其造就了其它类型硬盘无法替代的地位。
IDE 代表着硬盘的一种类型,但在实际的应用中,人们也习惯用 IDE 来称呼最早出现
IDE 类型硬盘 ATA-1,这种类型的接口随着接口技术的发展已经被淘汰了,而其后发展分支
出更多类型的硬盘接口,比如 ATA、Ultra ATA、DMA、Ultra DMA 等接口都属于 IDE 硬盘。
此外,由于 IDE 口属于并行接口,因此为了和 SATA 口硬盘相区别,IDE 口硬盘也叫 PATA
口硬盘。
2.SCSI 接口
SCSI 的英文全称为“Small Computer System Interface”(小型计算机系统接口),是
同 IDE 完全不同的接口,IDE 接口是普通 PC 的标准接口,而 SCSI 并不是专门为硬盘设计
的接口,是一种广泛应用于小型机上的高速数据传输技术。SCSI 接口具有应用范围广、多
任务、带宽大、CPU 占用率低,以及支持热插拔等优点,但较高的价格使得它很难如 IDE
硬盘般普及,因此 SCSI 硬盘主要应用于中、高端和高档工作站中。SCSI 硬盘和普通 IDE
硬盘相比有很多优点:接口速度快,并且由于主要用于服务器,因此硬盘本身的性能也比较
高,硬盘转速快,缓存容量大,CPU 占用率低,扩展性远优于 IDE 硬盘,并且支持热插拔。
3.SATA 接口
使用 SATA(Serial ATA)口的硬盘又叫串口硬盘,是目前 PC 硬盘的主流。2001 年,
由 Intel、APT、Dell、IBM、希捷、迈拓这几大厂商组成的 Serial ATA 委员会正式确立了Serial ATA 1.0 规范,2002 年,虽然串行 ATA 的相关设备还未正式上市,但 Serial ATA 委
员会已抢先确立了 Serial ATA 2.0 规范。Serial ATA 采用串行连接方式,串行 ATA 总线使用
嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不
仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠
性。串行接口还具有结构简单、支持热插拔的优点。
串口硬盘是一种完全不同于并行 ATA 的硬盘接口类型,由于采用串行方式传输数据而
知名。相对于并行 ATA 来说,就具有非常多的优势。首先,Serial ATA 以连续串行的方式
传送数据,一次只会传送 1 位数据。这样能减少 SATA 接口的针脚数目,使连接电缆数目变
少,效率也会更高。实际上,Serial ATA 仅用四支针脚就能完成所有的工作,分别用于连接
电缆、连接地线、发送数据和接收数据,同时这样的架构还能降低系统能耗和减小系统复杂
性。其次,Serial ATA 的起点更高、发展潜力更大,Serial ATA 1.0 定义的数据传输率为
150MB/s,这比并行 ATA(即 ATA/133)所能达到 133MB/s 的最高数据传输率还高,而在
Serial ATA 2.0 的数据传输率达到 300MB/s,SATA Revision 3.0 可达到 750 MB/s 的最高数
据传输率。
4.SAS 接口
SAS 是新一代的 SCSI 技术,和现在流行的 Serial ATA(SATA)硬盘相同,都是采用串行
技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。SAS 是并行 SCSI 接口
之后开发出的全新接口。此接口的设计是为了改善存储系统的效能、可用性和扩充性,提供
与串行 ATA (Serial ATA,缩写为 SATA)硬盘的兼容性。
SAS 的接口技术可以向下兼容 SATA。SAS 系统的背板(Backpanel)既可以连接具有双
端口、高性能的 SAS 驱动器,也可以连接高容量、低成本的 SATA 驱动器。因为 SAS 驱动
器的端口与 SATA 驱动器的端口形状看上去类似,所以 SAS 驱动器和 SATA 驱动器可以同
时存在于一个存储系统之中。但需要注意的是,SATA 系统并不兼容 SAS,所以 SAS 驱动
器不能连接到 SATA 背板上。由于 SAS 系统的兼容性,IT 人员能够运用不同接口的硬盘来
满足各类应用在容量上或效能上的需求,因此在扩充存储系统时拥有更多的弹性,让存储设
备发挥最大的投资效益。
串行 SCSI 是点到点的结构,可以建立磁盘到控制器的直接连接。具有以下特点:
更好的性能
点到点的技术减少了地址冲突以及菊花链连结的减速;
为每个设备提供了专用的信号通路来保证最大的带宽;
全双工方式下的数据操作保证最有效的数据吞吐量;
简便的线缆连结
更细的电缆搭配更小的连接器
更好的扩展性
可以同时连结更多的磁盘设备
接下来是阵列卡的缓存
缓存(Cache)是 RAID 卡与外部总线交换数据的场所,RAID 卡先将数据传送到缓存,
再由缓存和外边数据总线交换数据。它是 RAID 卡电路板上的一块存储芯片,与硬盘盘片相
比,具有极快的存取速度,实际上就是相对低速的硬盘盘片与相对高速的外部设备(例如内
存)之间的缓冲器。缓存的大小与速度是直接关系到 RAID 卡的实际传输速度的重要因素,
大缓存能够大幅度地提高数据命中率从而提高 RAID 卡整体性能。多数 RAID 卡都配备了一
定数量的内存作为高速缓存使用。不同的 RAID 卡出厂时配备的内存容量不同,一般为几兆
到数百兆容量不等,这取决于磁盘阵列产品的应用范围。
Write Through 和 Write Back 是阵列卡缓存的两种使用方式,也称为透写和回写。Write
Through 也是 RAID 阵列卡的默认模式。当选用 write through 方式时,系统的写磁盘操作
并不利用阵列卡的 Cache,而是直接与磁盘进行数据的交互。而 write Back 方式则利用阵
列 Cache 作为系统与磁盘间的二传手,系统先将数据交给 Cache,然后再由 Cache 将数据
传给磁盘。
接下来我们开始构建RAID
首先我们给机器上4块SCSI的硬盘
然后我们需要用到一个工具
叫做mdadm,可以使用yum进行安装

然后我们为我们的4个硬盘分别创建一个分区

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xc3cb2cf3 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc3cb2cf3
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 fd Linux raid autodetect
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
4块一样操作

然后我们可以使用mdadm工具来创建RAID

-C:等同于 create,表示新建;
-v:显示创建过程中的信息;
/dev/md0:创建 RAID5 的名称;
-a:–auto,表示通知 mdadm 是否创建设备文件,并分配一个未使用的次设备号,
后面跟 yes 代表如果有什么设备文件没有存在的话就自动创建;
-n:指定使用几块硬盘创建 RAID,n4 表示使用 4 块硬盘创建 RAID;
-l:指定 RAID 的级别,l5 表示创建 RAID5;
/dev/sd[bcde]1:指定四块磁盘分区。

可以查看到我们的设备名

然后我们就可以创建并挂载文件系统了

这里为什么不是我我们的名字呢,因为我们指定的名字创建出来之后是以连接的方式创建到了/dev/md/beiji


我们这时候看到了为什么容量之有6G为什么不是8G
这是RAID5的一个特性,用于存放校验数据的部分是不会显示的。
接下来就是做阵列管理及设备恢复
首先,扫描阵列信息,

D:detail 的缩写,打印一个或多个磁盘阵列的详细信息;
v:对正在发生的事情显示更详细的信息;
s:扫描/proc/mdstat 中的阵列设备列表。
接下来我们为了以后方便RAID的启动与停止,我们来创建一个配置文件来管理RIAD
mdadm -vDs >/etc/mdadm.conf
Vim /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md/beiji level=raid5 num-devices=4 metadata=1.2 name=localhost.localdomain:beiji UUID=7625ba2a:784138f2:6355fcfa:18fa3f4f
devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1
然后我们就可以进行启动和停止的测试
[root@localhost md]# mdadm -A /dev/md/beiji
mdadm: /dev/md/beiji has been started with 4 drives.
[root@localhost md]# mdadm -S /dev/md/beiji
mdadm: stopped /dev/md/beiji
[root@localhost md]#
启动和停止都是没有问题的
接下来我们来模拟硬盘故障
[root@localhost md]# mdadm /dev/md127 -f /dev/sde1
mdadm: set /dev/sde1 faulty in /dev/md127
[root@localhost md]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md127 : active raid5 sdb1[0] sde14 sdd1[2] sdc1[1]
6282240 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UUU_]
unused devices:
[root@localhost md]#
这里我们模拟了sde1掉线了
这时候我们要移除损坏设备,
[root@localhost md]# mdadm /dev/md127 -r /dev/sde1
mdadm: hot removed /dev/sde1 from /dev/md127
[root@localhost md]#
然后添加新的磁盘阵列,
[root@localhost md]# mdadm /dev/md127 -a /dev/sde1
mdadm: added /dev/sde1
[root@localhost md]#
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde1[4] sdb1[0] sdd1[2] sdc1[1]
6285312 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UUU_]
[==>..................] recovery = 12.2% (256956/2095104) finish=0.2min
speed=128478K/sec
这里就可以看到我们的数据恢复过程了
本文详细介绍了Linux环境中如何配置RAID,包括RAID0、RAID1、RAID5、RAID6、RAID10五种级别,分析了它们的特性和适用场景。同时讲解了IDE、SCSI、SATA、SAS四种硬盘接口的区别以及阵列卡缓存的工作原理。最后通过实例演示了使用mdadm工具创建RAID5的过程,包括创建、挂载、故障恢复及管理。
579





