一、什么是Raid

     Raid早期叫作:Redundant Arrays of Inexpensive Disks 容错式廉价磁盘阵列,现在叫作:Redundent Array of Independent Disks,容错式独立磁盘阵列。这是一种使用某种机制把多块硬盘组合在一起使用,并且带有容错功能的存储模块。可以简单的理解为,这是一种将几块小的硬盘组合成一块带有容错功能的大硬盘。Raid通常分好几个等级,例如常见的有:Raid0、Raid1、Raid4、Raid5、Raid6、Raid10、Raid01。Raid的等级并不是通常意义上的等级,这个等级代表的是几种内在存储结构模式完全不一样的磁盘组合。Raid通常用于对数据的存储存在风险且对数据的读写能力要求较高的项目中。

       Raid又分硬件Raid和软件Raid,两种Raid结构相同,实现机制类似。不同的是,硬件Raid有专门独立的一块芯片负责处理数据,功能强大,性能突出;而软件Raid对数据的读写却只能依靠CPU处理,因此性能较弱,对于应急处理时可以拿来使用,其它情况下不太赞同使用软件Raid。


二、Linux中对软件Raid的操作

      在Linux中通常使用 mdadm 工具对磁盘分区作软Raid操作,mdadm一般是调用系统的md模块工作。md作软raid时,可以把任何块设备做成raid,如系统分区。当给系统磁盘做raid0时不建议使用同一块硬盘上的两个分区,因为raid0本身就是为了让数据分散,但是这种情况还是把数据存储在了一个硬盘上,所以这种情况没有任何意义。此处因为实验原因,在虚拟机上操作,故对Raid0操作不考虑此因素。

mdadm为模式化工具,有以下几种模式

-A: 装配模式
-C: 创建模式
-F: 监控模式

-C: 创建模式 常用参数:

-n #: 用于创建RAID设备的设备个数
-x #: 热备磁盘的个数
-l 级别: 自定义raid级别,raid0,0两种写法都行
-a yes: 自动为创建的raid设备创建设备文件;
-c Chunk_Size: 指定分块大小,默认为512,单位为KB


mdadm其它独参数:

-f:模拟设备为损坏
-r:模拟拔出坏磁盘
-a:把新设备插上
-S: 把RAID停了,此操作需要卸载设备
-D(--detail): 显示阵列的详细信息


下面,我们来新建一个12G的Raid0

1、首先用系统fdisk工具对硬盘分区,分两个大小为6G格式为 Linux raid autodetect,的磁盘。

wKiom1MMnASiebKeAAHQEz4353o716.jpg

此处我的两个磁盘分别为/dev/sdb1和/dev/sdb2


2、使用kpart和partx命令刷新系统分区表记录

kpartx -af /dev/sdb
partx -a /dev/sdb

然后再使用cat命令查看分区表记录,当列表中出现你新分的分区时你就可以创建raid了

cat /proc/partitions


3、使用命令mdadm -C创建Raid0

mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}

-C  /dev/md0  设备名为/dev/md0

-a  yes  出现问题自动回答为yes

-l  0   等级为raid0

-n  2   设备数为2

/dev/sdb{1,2}  设备为/dev/sdb1和/dev/sdb2

此处有时会提示分区被占用,但仍然能创建成功,操作的时候可以不间断的查看raid情况


4、查看Raid情况

cat /proc/mdstat

wKiom1MMn-Ox5Nj7AACnh8C2ubY949.jpg

查看Raid详细情况

mdadm -D /dev/md0

wKioL1MMn-_zPu3EAAKUqJlWTD4238.jpg


5、此时Raid创建成功了,接下来就可以正常使用设备了

mke2fs -t ext4 /dev/md0
mount /dev/md0 /web

给设备格式化,挂载,然后就可以像正常分区般的使用了。


6、Raid的其它操作

由于电脑原因,创建Raid5时,Raid要对磁盘作结构同步的操作,分20M的分区这个过程都无比的漫长

于是不针对本文作Raid热备和设备上架配图,只贴代码。

-f 模拟设备损坏

#模拟设备/dev/sdb1为损坏状态,此时如果有热备磁盘
#热备磁盘会自动上位替补该磁盘
mdadm /dev/md0 -f /dev/sdb1

-r 拔出坏磁盘

mdadm /dev/md0 -r /dev/sdb1

-a 新磁盘换上

mdadm /dev/md0 -a /dev/sdb2


7、当Raid不想使用时,可以使用-S把Raid停了,此操作需卸载分区

mdadm -S /dev/md0


总结:以上为软Raid的基本操作,软Raid使用泛围不广,大概了解就行了。