RAID及mdadm命令

RAID及mdadm命令详解

    我们64位的操作系统是向前兼容32位的操作系统的,这样使得用户在32位操作系统上可以使用的软件也能在64位操作系统上使用,不过适用于32位操作系统的软件依赖的是32位的库文件/lib,适用于64位操作系统的软件依赖的是64位的库文件/lib64。

我们的内核是运行在内存中的。

我们的CPU想要通过内存从我们的硬盘上读取数据的时候,必须通过主板上的Controller(控制器->集成在我们的主板上的)或者是Adapter(适配器->独立的没有集成在主板上的)来和我们的硬盘进行通信,CPU和硬盘间的通信是依靠协议来进行的,协议是一种规定的语言规范,协议是双方都理解的且都遵循的一种信号传输法则。

我们硬盘的接口类型分为以下几种:

IDE类型->也叫做ATA类型,是一种并口盘,IDE总线的理论传输值是133Mbps,MB和Mb是不一样的,MB等于Mb/8,因为1B=8b,IDE是并口盘,信号并行的时候信号之间会产生干扰,IDE在我们的主板上有两块控制器,每一块控制器上面只能连接两块磁盘,一个主盘,一个从盘。

SATA类型->也叫做串行ATA类型,SATA总线的理论传输值可以达到300Mbps、600Mbps以及6Gbps,SATA盘的一个控制器上面只能连接一块磁盘。

USB 3.0类型->是一种串口盘,理论传输值可以达到480Mbps

SCSI(Small Computer Syetem Interface->小型计算机系统接口)->是所有型号硬盘接口中性能最好的,是一种并口盘,现在常见的类型是UltraSCSI,理论传输值为320Mbps,SCSI盘的总线分为以下两类:

->窄带类型

窄带类型的SCSI盘有8个接口,和主板相连的适配器占用一个接口,然后其余部分用来连接磁盘的接口叫做target,那么就有7个target,可以连接7块磁盘,还有16个接口类型的SCSI盘,那么这种类型的SCSI盘就有15个target,可以连接15块磁盘,在这里我们的适配器叫做initiator(数据请求的发起者),在后期我们的SCSI盘又得到了扩展,每一个target上面可以连接一个磁盘组,每一个磁盘组上面可以有多个磁盘,这样就使得我们的SCSI盘的容量得到了大大的扩展,但是这么多数量的target和磁盘我们要怎么去进行管理呢?我们的服务器方在向我们的磁盘方发送数据的时候,发送的每一个数据包的前面都会加上一个控制信息,这个控制信息可以指定我们的数据存放在哪一个target的哪一块磁盘上,这个控制信息就叫做数据包的首部,也叫做数据报文的首部(head),数据包也成为协议数据单元或者是协议报文,SCSI盘上的每一个target上的每一个磁盘都会有自己的地址,这个地址叫做LUN->Logical Unit Number:逻辑单元号,我们数据包的首部查找的信息就是LUN。

->宽带类型

SAS类型->这是一种SCSI类型的串口设备

现在RAID中组合的磁盘要么是SATA类型的盘,要么是SAS类型的盘。

·RAID

Redundant Arrays of Indepent Disks,独立冗余的磁盘阵列,RAID是一种通过特殊的方式将几种独立的磁盘组合起来的技术,这样做的好处在于:

->能够使得磁盘的空间变得很大

->能够使得IO速度变的很快

->能够将多块磁盘组合起来当成一块磁盘来使用

我们的RAID在磁盘中存储数据是条带化存储的,所谓条带化就是将要存储的数据一份一份的平均分配在RAID中的各个磁盘上,由于我们的RAID中磁盘的组织方式不同,所以我们的RAID有组成级别之分,称为RAID LEVEL:

->级别的高低并不意味着RAID性能的高低,而仅仅意味着磁盘的组织方式不同

->如果RAID中的某一块磁盘发生了损坏,那么有可能我们的所存储的整个数据都会发生损坏,因此我们在组织RAID的时候,不仅仅要考虑RAID的速度,还要考虑RAID数据的可用性,我们RAID数据的可用性可以用以下几种方式来实现:

->校验码机制:

校验码机制的RAID至少得有两个用来存储数据的磁盘,一个来存储校验码的磁盘,总共三个磁盘,不过我们这里介绍的有三个用来存储数据的磁盘,一个用来当做校验码磁盘的磁盘组织方式,称为RAID4也叫做RAID5,不过RAID5的四个磁盘可以轮流当做校验码盘来使用,这种磁盘组织方式的工作原理如下:

当我们要在RAID中存储一个文件的时候,前三块磁盘以条带的方式来存储文件数据,第四块磁盘用来存储代表前三块磁盘的校验码,如果前三块磁盘中的某一块发生故障,那么我们就可以利用第四块磁盘中存储的校验码减去前三块磁盘中完好的那两块磁盘的校验码从而得出哪一块磁盘发生了故障,从而可以替换新的磁盘上去,并且根据校验码恢复其中的数据,但是这种方式比较危险,因为不论哪一块磁盘发生故障,系统都会把该RAID中的其余三块磁盘都读一遍,这样一来会加大我们的磁盘的损坏风险,但是这种方式的RAID速度快,而且数据可用性好,但是这种方式最多允许损坏一块磁盘,因为如果损坏的磁盘数超过一块的话,我们利用校验码盘的机制也无法准确判断出具体损坏的哪一块磁盘,这样的磁盘组织方式的浪费比例是1/n,因为我们只使用其中的一块磁盘当做我们的校验码盘。

->镜像机制:也称为RAID1的方式,因为1代表镜像方式,而RAID0称为条带方式

我们也可以使用磁盘镜像(mirror)技术来保证我们RAID的数据可用性,这种方式的RAID工作原理是,当我们要存储一个文件的时候,我们将文件存以条带的方式存储至RAID中的一组磁盘组中,然后将该组磁盘组中的数据复制一份作为镜像,存储至另一组完全一样的磁盘组中,这样就可以实现我们的数据可用性了,当RAID中的一个磁盘组发生故障的时候,另一个磁盘组还可以使用,这时我们的RAID就不至于发生故障而无法使用,这种磁盘组织方式的浪费比例是二分之一,因为它的两个磁盘组中存储的是一样的数据,而且两个磁盘组是一模一样的。

我们还有几种更加先进的磁盘组织方式:

->RAID01:表示整个RAID组织结构由下至上,先以条带的方式存储数据,然后再以镜像的方式复制一个完全一样的磁盘组的方式

这种方式的RAID工作原理是,当我们有一个文件需要存储的时候,先将文件数据以条带的方式存储在一个磁盘组中,然后再利用镜像的方式复制一个一一模一样的磁盘组,如果某一个磁盘组中的某一块磁盘发生了故障,然后我们就需要利用镜像磁盘组来和我们发生故障的磁盘组进行对比,来找出发生了故障的磁盘组中的具体磁盘,然后利用镜像磁盘组中的磁盘数据来恢复我们发生了故障的磁盘中的数据,这种磁盘组织方试的不好之处在于,如果磁盘组和镜像磁盘组中的相对应的磁盘都发生了故障,那么整个RAID架构就会发生故障导致无法使用,但是两个磁盘组中的不同磁盘发生了故障有可能数据还能恢复,但是这种磁盘组织的方式有一个好处,当我们真个磁盘组都发生损坏,也没有关系,因为我们还有镜像磁盘组,可以用来恢复数据,不至于使得整个RAID都发生故障而无法使用。

->RAID10:表示整个RAID的组织架构由下至上,先以镜像的方式在同一个磁盘组中备份一个镜像磁盘,从而再以条带的方式将数据存储在这些磁盘组中的方式

这种磁盘组织的方式的工作原理是,我们先用镜像的方式给每一个磁盘组都复制一个镜像磁盘,然后再用条带的方式将文件数据平均分成n份存储在我们的RAID中,如果我们此时有一个文件将要存储,此种RAID会将文件数据以条带的方式先平均分成n份存储在各个磁盘组中,然后在每个磁盘组中再以镜像的方式备份一份数据,这样做的好处在于不管哪一个磁盘组中的哪一块磁盘发生了故障,我们都可以利用镜像的方式将数据进行修复,这种方式和RAID01方式的性能差不多,但是磁盘数据的修复速度要远远大于RAID01的方式,在RAID10方式中,同一个磁盘组不能同时发生故障,否则整个RAID就会发生故障从而导致无法使用,RAID10方式的数据可用性高于RAID01方式。

->RAID50:表示使用校验码机制和条带机制整合起来的一种磁盘组织方式

·JBOD技术

这是一种简单的将多块小磁盘连接为一块磁盘来使用的方式

·磁盘阵列技术总结

1,RAID

->RAID0:条带方式

读写性能(读写是并行的)提升,如果RAID中有n块磁盘的话,性能提升为1块磁盘时的n倍,但是没有数据冗余能力,冗余能力也成为容错能力,就是没有数据可用性,当RAID中的一块磁盘发生故障,整个RAID就会发生故障从而导致无法使用,如果一块磁盘的空间利用率为#的话,那么RAID0方式的磁盘利用率就是n#,此种方式至少需要两块磁盘,否则条带没有意义。

->RAID1:镜像方式

将一个文件存储成同样的两份,所以写性能下降,比一块磁盘时的写性能好要差很多,但是读性能提升,因为可以在两个磁盘组中读取不同的磁盘数据块来组成整个文件,同样的数据可以交替的在两份同样的数据中读取,所以读性能大大提升,有数据冗余能力,空间利用率为1/2#,至少需要两块磁盘,否则镜像没有意义。

->RAID5:校验码方式

因为数据是以条带的方式存储在存储文件数据的磁盘中的,所以读写性能都提升,校验码机制的存在导致此种方式有数据冗余能力,空间利用率为(n-1)#,因为有一块校验码盘的存在,此种方式至少需要三块磁盘的存在,否则校验码机制没有意义。

->RAID01:

读性能提升,写性能下降,有数据冗余能力,空间利用率为1/2#,此种方式至少需要四块磁盘来实现。

->RAID10:

读写性能都提升,有数据冗余能力,空间利用率为1/2#,此种方式至少需要四块磁盘来实现。

->RAID50:

读写性能都提升,因为有条带方式的存在,有数据冗余能力,空间利用率为(n-2)#,此种方式至少需要六块磁盘来实现。

RAID LEVEL是我们RAID中磁盘的组合方式。

2,JBOD

读写性能都没有提升,因为它是一种将多块小磁盘整合为一块磁盘来使用的技术,是真正的一块磁盘,而不是逻辑意义上的一块磁盘,没有数据冗余能力,其中任何一块小磁盘发生了故障,整个磁盘阵列都会发生故障而无法使用,空间利用率为100%,此种方式至少需要两块磁盘来实现,否则没有意义。

·实现RAID的方式

我们实现RAID的方式主要有两种:

->硬件RAID

->软件RAID

我们之所以可以利用软件来实现RAID功能的原因是我们的操作系统的内核上有一个支持多设备的模块,叫做MD->Multi Disks,我们在做软件RAID的时候,通过CPU的角度来看待我们的RAID的时候可能就是独立的几块磁盘,但是我们通过我们的MD模块来看待我们的RAID的时候,它才是我们的RAID磁盘阵列,我们在使用软件实现RAID的时候,组成RAID的磁盘分区必须被指定为fd类型,当我们将组成RAID的磁盘类型标识为fd类型的时候,如果当我们的RAID发生故障的时候,我们之后可以根据磁盘上的fd类型来恢复磁盘中的数据,但是我们如果使用这种方法来恢复我们RAID中的磁盘的数据的时候,会导致我们的服务区压力过大,所以我们以后在生产环境中最好使用硬件RAID,如果我们想要在我们的Linux系统中实现软件RAID的时候,必须在我们的操作系统的内核上装载一个MD模块。

我们Linux系统上提供了两个逻辑RAID设备文件(用软件模拟出来的设备,假的设备):

->/dev/md0

->/dev/md1

其后的数字是为了标识不同的RAID设备文件,并不标识RAID设备的级别,在我们的Linux系统上有一个用来管理我们的内核上Md(Multidisks)多设备模块的命令:

mdadm(mdadmin)命令->

称为Md管理器,在Linux系统中,该命令支持将任何块设备,也可以是磁盘分区做成RAID来使用,但是在同一块磁盘分区上做RAID是没有任何意义的,我们只是拿来做实验而已,因为同一块磁盘,根本无法体现性能的提升,因为它始终是一块磁盘,必须使用不同的磁盘设备才能体现出来RAID的意义,mdadm命令是一个用户空间管理工具,可以帮助我们来管理我们内核中的Md模块,从而来管理我们的软件RAID设备,但是我们软RAID设备的真正工作,依靠的是内核中的Md模块,mdadm命令是一个模式化的命令,可以支持多种模式:

->创建模式:创建RAID的时候,RAID中的每一块磁盘大小得一致

格式:-C /dev/md#,-C选项还可以跟上如下专用选项->

-l:指定RAID级别

-n #:指定RAID中的磁盘个数

-a yes|no:是否自动为其创建设备文件,作为RAID设备的访问入口

-c:指定每一次往条带上分的chunk(数据块)上分的大小为多大,默认大小为64KB,大小为2^n倍

我们的创建文件系统的命令mke2fs有一个-E选项,可以指定一个stride选项来指定我们的条带大小,条带指的是我们每个磁盘上的chunk比上block的商,具体实现格式如下:

mke2fs -E stride=#(条带大小),利用这种方式格式化RAID,可以提高RAID的性能,不用RAID每次还要计算自己得需要多大的RAID,对RAID略有作用,可以提高软RAID的性能。

温故:花括号{}表示文件名扩展,/dev/sda{5,6} = /dev/sda5和/dev/sda6

我们/proc/mdstat可以显示当前系统上所有已经被启动的RAID设备,创建RAID的时候,组成RAID的磁盘分区,在创建完成RAID之前,不能进行格式化,创建完成RAID之后,直接格式化RAID即可。

-x #:指定空闲磁盘的个数

watch命令->

这个命令的功能是周期性的执行某命令,然后全屏显示执行结果

-n #选项:默认单位为秒钟,不指定数字,就默认为每2秒更新一次

使用格式:watch -n # ‘COMMAND‘

->管理模式

--add|-a(mdadm /dev/md1 -a /dev/sda9->将一块新盘移动到磁盘阵列里面去,

不过移动进来的新盘必须和之前的任何一块磁盘的大小都得一致)

--remove|-r(mdadm /dev/md1 -r /dev/sda8->将损坏的磁盘进行移除)

用到这些模式默认就工作在管理模式下

在管理模式下,使用-f  --fail  --set-falty都可以模拟让RAID中的磁盘发生损坏

mdadm  /dev/md1  -f  /dev/sda7->将磁盘阵列/dev/md1中的/dev/sda7磁盘模拟成损坏的

->监控模式

-F

->增长模式

-G

->装配模式

-A

mdadm -A /dev/md# /dev/sda........->可以重新启动阵列

查看RAID阵列的详细信息

maadm -D /dev/md#

--detail

-D|--detail选项可以用来显示RAID设备的信息

停止阵列:

mdadm -S /dev/md#->停用一个阵列

或--stop

为了安全起见

我们可以利用三块磁盘做成一个具有热空闲盘(当其中某一块磁盘坏掉的情况下这块磁盘会自动顶上去)的RAID1

mdadm命令的主配置文件在/etc/mdadm.conf文件里面保存着

我们可以使用mdadm -D --scan命令将我们的磁盘阵列信息导入到主配置文件里面

从而我们下次再重新装配的时候就不用再指向设备了,它会自动读取我们的配置文件的

我们再次重新装配的时候直接使用

maadm -A /dev/md#这条命令就可以了

将当前RAID信息保存至配置文件,以便以后进行装配

mdadm -D --scan > /etc/mdadm.conf

然后直接重新装配就好了

如何创建一个2G的RAID5

RAID5至少得有3块磁盘设备

创建一个2G的RAID5需要3G的容量,因为有一个磁盘属于校验码盘,其余两个盘才是真正存储数据的盘

再加一块热空闲盘,就需要4G的容量

lsmod命令

列出模块

DM

时间: 2024-08-27 14:35:38

RAID及mdadm命令的相关文章

Raid及Mdadm命令_学习笔记

关于Raid及Mdadm命令的学习笔记: 课前小知识: 关于case的小脚本笔记: cat  << EOF d|D) show disk Information m|M) show Mem Information s|S) show swap Information EOF read -p "Please input Your Choice: " Choice while [ $Choice != "quit" ] do case $Choice in

2016-9-6 RAID及mdadm命令

8MB=1Mb    IDE:133MbpsSATA:并行 300Mbps,600Mbps,6GbpsUSB 3.0:480MbpsSCSI:Small Computer System Interface 10000,15000 RAID:级别:仅代表磁盘组织方式不同,没有上下之分 0:条带化:把整部分数据分成不同的部分分别存储在不同的磁盘上    性能提升: 读,写    冗余能力(容错能力): 无    空间利用率:nS    至少2块盘 1:镜像    性能表现:写性能下降,读性能提升  

linux下Raid及mdadm命令详解

1.RAID级别:仅代表磁盘组织方式不同,没有高低之分: Raid常用种类:raid0,raid1,raid5,raid10,raid01 jbod:叠加硬盘,类似于raid0 Raid:分为硬Raid和软Raid,生产环境中,基本使用硬Raid 2.以下介绍软Raid相关命令及解释: 软RIAD:在系统中以 /dev/md0和/dev/md1...形式存在设备文件 mdadm命令: 将任何块设备做成RAID 模式化的命令: 创建模式:-C 常用选项: -l: 级别 -n #: 设备个数 -a

raid以及mdadm命令之二

硬件raid:主板上含有raid卡,要启用raid的时候必须进入bios启动raid卡得功能,并在里面指定raid的级别以及硬盘,当我们启用硬件raid,此时当我们装操作系统的时候,系统必须含有raid的驱动程序,因为此时在硬件级别上,并不会认为有硬盘,而是认为有raid. 软件raid:利用软件模拟raid 条件:内核中含有md(multi disk)模块(linux通过设备文件访问设备,但是我们硬盘在linux中被模拟成sda,hda等,并不是raid设置,于是md模块将硬盘模拟成/dev/

raid及mdadm命令之一(含shell显示字体颜色等)

写一个脚本: 1)显示一个菜单给用户: d|D)    show disk usages. m|M)    show memory  usages. s|S)    show swap usages. quit|q)    quit. 2)当用户给定选项后显示相应的内容 当用户选择完成,显示相应信息后,不退出,而是让用户再一次选择,直到选择quit或q #!/bin/bash while  [ 1 -eq 1 ]  ; do echo " " read -p "d|D)  

raid及mdadm命令原理

raid 0+1 先做条带,在做镜像 0:表示条带 1:表示镜像 缺点:任何一块盘坏了 整个全局都会受到影响. 磁盘空间利用率1/2 raid 1+0 先做镜像 ,再做条带. 优点:性能和raid0+1一样.但是磁盘坏掉以后,修复更容易.但是同组不能同时坏. 磁盘空间利用率1/2 raid5 循环校验码 每一个设备轮流成为校验码设备.通过算法,任何一块设备出现问题 都能找回收据,但只允许坏一块盘 raid4:校验码,通过1+2+3=6这样第四块设备永远是校验码设备.缺点是校验码会成为整列的瓶颈.

RAID 的常用模式 及mdadm 命令的应用

一,RAID:独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法.通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能.因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错.整个 RAID 由于选择的等级(level 仅用于标识磁盘的组合方式的不同) 不同,而使得整合后的磁盘具有不同的功能, 基本常见的 level 有这几种 "RAID0(条带),

linux下的raid及mdadm的命令详解

RAID被称为廉价的冗余磁盘阵列,这是由于在早期的磁盘很小,性能差,易损坏.所以RAID主要的做法就是把多个便宜的小磁盘组合到一个磁盘组,使性能和磁盘容量都可以达到相当于昂贵的磁盘性能. 根据RAID的组合方式不同,RAID又有不同的RAID LEVEL(这个级别仅代表磁盘组合方式不同,没有上下之分), raid级别分类: *  RAID 0: 也被称为条带模式,一个文件的数据通过控制芯片发向底层芯片存储到磁盘块时,把数据的大小分成每个具有一定大小的单位存储到并行的每个磁盘对应的位置,形成一个类

RAID管理及命令mdadm详解

磁盘阵列 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有"独立磁盘构成的具有冗余能力的阵列"之意.磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能. 分类 磁盘阵列其样式有三种,一是外接式磁盘阵列柜.二是内接式磁盘阵列卡,三是利用软件来仿真.外接式磁盘阵列柜最常被使用大型服务器上,具可热交换(Hot Swap)的特性,不过这类产品的价格都很贵.内接式磁盘阵列卡,因为