linux模块实现机制,Linux中RAID机制的实现

RAID的全称是Redundant Array of Independent Disks,即独立磁盘冗余阵列(以前叫:Redundant Array of Inexpensive Disks,即廉价磁盘冗余阵列)。RAID的基本思想是将多个便宜的硬盘组合起来,成为一个硬盘阵列组,使性能能和那些价格昂贵,容量大的高性能硬盘媲美。

而RAID是怎么识别多个硬盘呢?RAID是把多个硬盘组合成成一个逻辑磁区,故操作系统会把它当作一个硬盘来使用。RAID常用于那些大型的服务器上,通过硬盘阵列,在一定程度上实现数据存放的安全性和快速的数据读写。

RAID的有七个级别,但有时候我们也可以把两个级别合在一起用,下面是我们常用的RAID的级别及各自的特点:

RAID 0:它是把多块硬盘当作一块硬盘,然后进行分区来使用。它的原理是把要写入的一块数据分成多个chunk存在多个磁盘上,多个chunk同时写入多个磁盘,这就增加了写入的速度;而当读数据的时候可以从这多个磁盘中读取存放的相应数据的多个chunk,这就提高了读出的速度;虽然,它大大提高了磁盘的性能,但是无冗余能力,因为数据是分chunk存放在多个磁盘中的,只要有一块磁盘坏掉,数据就不能用了。

RAID 1:通常组合2,4,6...块磁盘来使用,其中一半的磁盘用于存放数据,而另一半的磁盘用于做镜像,也就是备份存放数据的那一半磁盘。它的原理是:写入的时候一块数据分成多个chunk,此时并不是多个chunk同时写入多个磁盘,而是一个chunk一个chunk的写入,每个chunk不仅要写入存放数据的一块磁盘,而且还要写入用于做镜像的一块磁盘,这样写入的速度就会不变,但读出数据时,则是从数据磁盘和镜像磁盘一起读,读出的速度快。这个级别,增加了磁盘的读取性能,而且提供了冗余功能,保证了数据一定程度的安全性。

RAID 4:至少组合3块磁盘,其中有一块盘来用作校验盘。当存放数据的时候,校验盘用于存放数据的校验码,而数据本身分成多个chunk存放在多个磁盘上,读写性能都很高。由于有一个校验盘,如果有一块磁盘坏掉,可以利用校验盘和其它磁盘对数据进行恢复,这就增强了数据的安全性。而由于只有一块校验盘,每次操作都要计算校验码,会给校验盘带来很大的压力,校验盘容易坏掉。

RAID 5:与RAID 4不同的是,但是数据的校验码会轮流存放在多个磁盘中,减小了校验盘的压力。

RAID 6:至少需要组合4块磁盘,和RAID 5不同的是,校验码要存放两次,这样就可以允许坏掉两块磁盘。

RAID 10:是RAID O和RAID 1的组合,至少需要4块磁盘,其中一半的磁盘用于存放数据,而另一半的磁盘用于做镜像,也就是备份存放数据的那一半磁盘。把磁盘平均分成多个组,每组中有2块磁盘,为RAID1阵列。然后,这多个组再组成RAID0阵列。它的原理是:写入的时候一块数据也是分成多个chunk,多个chunk不仅同时写入多个磁盘组中,而且写入组之后再写入一份数据到组中的镜像盘,这样写入的速度快,也有了冗余;读出数据时,则是从多个磁盘组中一起读取数据的多个chunk,读出的速度更快,要高于写入的速度。这个级别,不仅增加了磁盘的性能,而且提供了冗余功能,保证了数据一定程度的安全性,这个应用比较广泛。

RAID通常有软RAID和硬RAID之分:

硬RAID的机制是:服务器上自带的有RAID芯片,或是服务器上有一个插槽,可以插主机适配器。这种机制广泛用于商业环境。RAID设备在系统中一般被识别为:/dev/sd*

软RAID的机制是:在Linux中存在一个kernel模块,可以实现RAID。随着技术的发展,Linux现在这中应用机制已经比较成熟了。RAID设备在系统中一般被识别为:/dev/md*,并且软RAID还有一个局限是,它是以“磁盘分区”为单位创建RAID的。

下面我们以在Linux中实现软RAID为例,介绍一下RAID的配置:

首先,我们先了解一下mdadm命令,它是一个管理程序,用于和kernel模块通信,实现对RAID的管理。

mdadm有五种模式,分别是:

Assemble:装配模式,将已经停用的RAID设备重新装配使用

Create:创建模式,主要建立新的RAID设备

Follow or Monitor:监控模式,主要用于监控RAID设备的工作

Grow:增长模式,可以用于给RAID设备增加新硬盘

Manage:管理模式,用于删除,增加RAID设备。当使用--add,--fail,--remove等选项时,默认工作在管理模式

mdadm  命令

-A 指定装配模式

-C 指定创建模式

-F 指定监控模式

-G 指定增长模式

--add 用于添加磁盘设备

--fail 用于停掉一块磁盘设备

--remove 用于移除磁盘设备

-v 可以显示详细信息

-s 可以扫描或测试RAID

-n 指定有几个分区来常见RAID

-x 用于指定备用的空闲盘的个数

-c 指定chunk的大小,默认为64K

-l 创建RAID的级别

-a 如果创建的设备不存在则自动创建

-D 查看指定模块的详细信息

一:要创建一个新的RAID设备,要做以下几步:

fdisk /dev/sda

创建磁盘分区,并且修改分区的id为“fd”,保存退出

partprobe /dev/sda

使kernel识别我们新分的区

mdadm -C /dev/md1 -a yes -l 5 -n 3 /dev/sda6 /dev/sda7 /dev/sda8

创建一个RAID 5设备md1,此设备有3个设备组成sda6,sda7,sda8

lsmod | grep "dm_mod"

查看dm_mod这个模块是否已经被kernel加载,如果没有搜索到,说明没有被kernel加载,则需要加载这个模块,使用命令:modprobe dm_mod

mke2fs -j /dev/md1

把这个RAID设备格式化为ext3的文件系统

mkdir /myraid

vi /etc/fstab

/dev/md1 /myraid ext3 defaults 0 0

在这个文件中添加如上行,可以保证这个raid设备在开机时被挂载,当下不生效

mount /dev/md1 /myraid

现在挂载这个RAID设备,这样我们现在就可以使用了

二,查看信息

mdamd --detail /dev/md1

mdamd -D /dev/md1

查看这个模块的详细信息

三,添加移除,移除RAID设备

mdadm /dev/md1 --add  /dev/sda9  (这个分区id必须为“fd”)

增加这个空闲设备,如果其中有一块磁盘设备坏掉的话,它可以自动添加进去,并会自动进行数据同步

mdadm /dev/md1 --remove /dev/sda9

移除这个设备

mdadm /dev/md1 --fail  /dev/sda9

使这个设备标识为失败,这样/dev/sda9就不能用了

四,停用RAID设备

umount /myraid

卸载RAID设备(如果想永久不使用此RAID,修改/etc/fstab,把上面对应的行删掉)

mdadm -S /dev/md1

停用这个RAID设备

五,重新组装设备

第一种方法:

mdadm -A /dev/md1 /dev/sda6 /dev/sda7 /dev/sda8

可以重新组装起这个设备,必须指定创建RAID的那几个分区,否则会失败

第二种方法:

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

如果事先将RAID的信息保存在/etc/mdadm.conf这个文件中,默认mdadm会从/etc/mdadm.conf这个文件中读配置信息

mdamd -A /dev/md1

直接就可以组装这个RAID设备

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值