RAID阵列的组成原理:
1.RAID:Redundant Arrays of Independent Disks 独立冗余磁盘阵列
1)提高IO能力,提高耐用性
2)级别:即多块磁盘组织在一起的工作方式不同
3)RAID实现的方式:
外接式磁盘阵列:通过扩展适配器提供适配能力
内接式RAID(软RAID):主板集成RAID控制器
4)RAID的级别:
RAID-0:条带卷
RAID-1:镜像卷
...
RAID-5:校验码存盘
RAID10:从底层开始先镜像,后条带(企业专用)
RAID01:从底层开始先条带,后镜像
JBOD:简单的将多个盘连接成一个大盘的技术
2.RAID-0:
读、写性能提升;
可用空间:N*min(S1,S2,...)
无容错能力
最少磁盘数:2, 2+
RAID-1:
读性能提升、写性能略有下降;
可用空间:1*min(S1,S2,...)
有冗余能力
最少磁盘数:2, 2+
RAID-4:
1101, 0110, 1011
RAID-5:
读、写性能提升
可用空间:(N-1)*min(S1,S2,...)
有容错能力:1块磁盘
最少磁盘数:3, 3+
RAID-6:
读、写性能提升
可用空间:(N-2)*min(S1,S2,...)
有容错能力:2块磁盘
最少磁盘数:4, 4+
混合类型
RAID-10:
读、写性能提升
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块;
最少磁盘数:4, 4+
JBOD:Just a Bunch Of Disks
功能:将多块磁盘的空间合并一个大的连续空间使用;
可用空间:sum(S1,S2,...)
软RAID的实现原理及相关命令的介绍
1.内核中有个模块md:multidisks,借此实现了软RAID
2.这个模块有其特有的管理工具:mdadm。
这是个模式化的工具,首先它的语法格式为:
mdadm [mode] [raiddevice] [options] <component-devices>
支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;
模式:
创建:-C
装配: -A
监控: -F
管理:-f, -r, -a
<raiddevice>: /dev/md#
<component-devices>: 任意块设备
-C: 创建模式
-n #: 使用#个块设备来创建此RAID;
-l #:指明要创建的RAID的级别;
-a {yes|no}:自动创建目标RAID设备的设备文件;
-c CHUNK_SIZE: 指明块大小;
-x #: 指明空闲盘的个数;
-D:显示raid的详细信息;
mdadm -D /dev/md#
管理模式:
-f: 标记指定磁盘为损坏;
-a: 添加磁盘
-r: 移除磁盘
观察md的状态:
cat /proc/mdstat
停止md设备:
mdadm -S /dev/md#
watch命令:
-n #: 刷新间隔,单位是秒;
watch -n# ‘COMMAND‘
软RAID实践操作:
1.首先我们要准备4个分区,其中三个用于RAID5的组成部分,剩余一个用于做空闲的RAID磁盘,防止RAID5中一块硬盘发生错误时,能够及时的顶替上。
[[email protected] ~]# fdisk /dev/sda
Command (m for help): n
First cylinder (8513-15665, default 8513): 5
Value out of range.
First cylinder (8513-15665, default 8513):
Using default value 8513
Last cylinder, +cylinders or +size{K,M,G} (8513-15665, default 15665): +5G
Command (m for help): t
Partition number (1-7): 5
Hex code (type L to list codes): fd
Changed system type of partition 5 to fd (Linux raid autodetect)
Command (m for help): p
Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008ea5a
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 7859 62914560 8e Linux LVM
/dev/sda3 7859 8512 5252256 fd Linux raid autodetect
/dev/sda4 8513 15665 57456472+ 5 Extended
/dev/sda5 8513 9166 5253223+ fd Linux raid autodetect
/dev/sda6 9167 9820 5253223+ fd Linux raid autodetect
/dev/sda7 9821 10474 5253223+ fd Linux raid autodetect
通过以上命令准备好我们将要使用的分区
[[email protected] ~]# partx -a /dev/sda
2.接着我们就要创建RAID5了
[[email protected] ~]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sda{3,5,6,7}
查看系统中的md设备
[[email protected] ~]# cat /proc/mdstat
在这个过程中会做recovery的过程,起作用是
要对raid的磁盘做按位对齐处理,使得raid有冗余能力,能够做按位异或处理
这样我们的硬件设备就处理好了,接着就要进行格式化处理
[[email protected] ~]# mke2fs -t ext4 /dev/md0
进行挂载
[[email protected] ~]# mkdir /mydata
[[email protected] ~]# mount /dev/md0 /mydata
查看创建的相关信息
[[email protected] ~]# df -lh
[[email protected] ~]# blkid /dev/md0
这样一个完整的,有工作能力的RAID5就完成了
2.如果我们人为地破坏其中一个分区,那么会有什么情况发生呢?
[[email protected] ~]# mdadm /dev/md0 -f /dev/sda7
此时RAID会自动进行同步恢复的,查看命令为:
[[email protected] ~]# cat /proc/mdstat
如果想要动态的查询,则可使用watch命令
[[email protected] ~]# watch -n 1 `cat /proc/mdstat`
此时再查看此RAID,会发现此时坏了的硬盘已经被空闲盘替换上了
[[email protected] ~]# mdadm -D /dev/md0
注意,此时的RAID5仍然可以容纳一块硬盘发生损坏,此时为降级使用RAID设备
[[email protected] ~]# mdadm /dev/md0 -r /dev/sda6
3.在已经设定好的RAID上在家硬盘,那么只能作为空闲盘来使用,要使其成为RAID5中的一部分,需要使用grow自命令,但在此处就不再赘述了,毕竟不是很重要!