Linux入门之磁盘管理(7)RAID的实现

RAID(Redundant Arrays of Inexpensive Independent Disks)被称为廉价冗余阵列,为了提高磁盘的性能或者保存数据完整,将多个磁盘合成一个“阵列”来提供更好的性能、冗余等。

RAID一般使用硬件raid,并配合指定 raid的接口或者raid卡来组成硬件raid,但是开销一般比较大,于是在linux中也提供了软件raid的实现。

raid的好处:

提高IO能力: 磁盘的并行读写

提高耐用性: 磁盘冗余来实现

RAID技术分类:

多个磁盘组成条带化

RAID1:镜像,mirror    保证数据的可用性

校验码 等

raid各个级别:

RAID level(级别):仅代表磁盘组织方式不同,没有上下之分

RAID-0:条带化

性能提升:读、写

冗余能力 (容错能力):无

空间利用率:nS

至少需要2块磁盘

RAID-1:镜像

性能提升:写性能下降,读性能提示

冗余能力:有

空间利用率:1/2

至少需要2块

RAID-4:多块数据盘异或运算值,存于专用校验盘

RAID-5:

性能表现:读、写提升

冗余能力:有

空间利用率:(n-1)/n

至少需要3块盘

RAID-10:

性能表现:读、写提升

冗余能力:有

空间利用率:1/2

至少需要4块盘

RAID-01:

性能表现:读、写提升

冗余能力:有

空间利用率:1/2

至少需要4块盘

RAID-50:

性能表现:读、写提升

冗余能力:有

空间利用率:(n-2)/n

至少需要6块盘

jdod :将多个小盘组合成一个大盘

性能表现:无提升

冗余能力:无

空间利用率:100%

至少需要2块

软硬RAID的使用区别:

硬件RAID:BIOS主板下调整、RAID卡

软件RAID:内核模块支持 (md:multi disks)

使用命令实现软件raid:

mdadm 管理命令,将任何设备做成RAID,并有多种模式选项命令

模式化的命令:

创建模式:

-C   --create

专用选项:

-l # :指定raid级别  --level

-n # : 设备个数     -num

-a {yes|no}:是否自动为其创建设备文件 --auto

-x # :指定空闲盘个数

-c CHUNK_SIZE:指定chunk大小

管理模式:

-a,--add   :添加raid成员

-r,--remove :移除raid成员

-f,--fail  : 模拟损坏raid成员

监控模式:

-F

增长模式:

-G

装配模式:

-A

   查看RAID阵列的详细信息

mdadm  -D  /dev/md#

--detail

   停止阵列:

mdadm  -S  /dev/md#

特例:格式化md0设备指定分配条带和block:

mke2fs -j -E stride=16 -b 4096 /dev/md0

RAID5案例:

1、创建一个3G的raid5级别设备(那么至少需要3个1G的设备):

#在/dev/sdb下创建6个分区,其类型指定为fd编号,表示为Linux raid

[[email protected] ~]# fdisk -l /dev/sdb 2> /dev/null | grep ‘^/dev‘
/dev/sdb1          1     132     1060258+   fd  Linux raid autodetect
/dev/sdb2         133     264     1060290   fd  Linux raid autodetect
/dev/sdb3         265     396     1060290   fd  Linux raid autodetect
/dev/sdb4         397     2610    17783955   5  Extended
/dev/sdb5         397     528     1060258+  fd  Linux raid autodetect
/dev/sdb6         529     660     1060258+  fd  Linux raid autodetect

2、使用mdadm命令

#使用mdadm创建为level 5级别raid

[[email protected] ~]# mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb{1,2,3,5}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

#查看md0设备信息及成员

[[email protected] ~]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdb3[4] sdb5[3](S) sdb2[1] sdb1[0]
      2117632 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      
unused devices: <none>

#查看md0的raid级别

[[email protected] ~]# mdadm -D /dev/md0 | grep -i ‘level.*‘
     Raid Level : raid5

#查看成员信息及其状态:

[[email protected] ~]# mdadm -D /dev/md0 | grep ‘.*/dev/sdb[0-9]$‘
   0     8     17      0      active sync   /dev/sdb1
   1     8     18      1      active sync   /dev/sdb2
   4     8     19      2      active sync   /dev/sdb3
   3     8     21      -      spare         /dev/sdb5

#要使用md0设备必须先格式化

[[email protected] ~]# mke2fs -t ext4 /dev/md0

#挂载md0设备

[[email protected] ~]# mkdir /mnt/md0
[[email protected] ~]# mount /dev/md0 /mnt/md0

#查看md0是否已经被识别为一个单个磁盘设备

[[email protected] ~]# fdisk -l 2> /dev/null | grep ‘md0‘
Disk /dev/md0: 2168 MB, 2168455168 bytes

#查看挂载点

[[email protected] ~]# df | grep ‘/md0‘
/dev/md0         2018796    3120   1909796   1% /mnt/md0

#拷贝配置文件到此挂载点

[[email protected] ~]# cp /etc/issue /etc/inittab /mnt/md0

#ls列出文件,发现出现了lost+found表示已经被识别了单个硬盘的单个分区

[[email protected] ~]# ls /mnt/md0
inittab  issue  lost+found

3、损坏模拟

#下面进行模拟损坏一块磁盘

#先查看此时md0成员信息,/dev/sdb5表示为备用,其它都是完好的

[[email protected] ~]# mdadm --detail /dev/md0 | grep ‘.*/dev/sdb[0-9]$‘
  0     8       17        0      active sync   /dev/sdb1
  1     8       18        1      active sync   /dev/sdb2
  4     8       19        2      active sync   /dev/sdb3
  3     8       21        -      spare   /dev/sdb5

#使用-f或者--fail 选项模拟时/dev/sdb3分区损坏

[[email protected] ~]# mdadm /dev/md0  --fail /dev/sdb3
mdadm: set /dev/sdb3 faulty in /dev/md0

#再次查看分区信息,此时备用的sdb5已经自动顶了上去

[[email protected] ~]# mdadm --detail /dev/md0 | grep ‘.*/dev/sdb[0-9]$‘
 0      8      17      0       active sync     /dev/sdb1
 1      8      18      1      active sync   /dev/sdb2
 3      8       21      2      spare rebuilding /dev/sdb5
 4      8      19      -      faulty   /dev/sdb3

#这时我们查看文件看看有没有损坏

[[email protected] ~]# cat /mnt/md0/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m

#下面修改此文件内容

[[email protected] ~]# sed -i ‘$a \new line \n hello world‘ /mnt/md0/issue

#查看修改后的文件内容

[[email protected] ~]# cat /mnt/md0/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m
 
new line 
 hello world

4、移除成员

#这时我们移掉一块分区

[[email protected] ~]# mdadm /dev/md0 -r /dev/sdb3
mdadm: hot removed /dev/sdb3 from /dev/md0

说明:这里的热移除表示正在使用时进行移除

#再次查看成员

[[email protected] ~]# mdadm -D /dev/md0 | grep ‘.*/dev/sdb[0-9]$‘
   0     8      17        0      active sync   /dev/sdb1
   1     8      18        1      active sync   /dev/sdb2
   3     8      21        2      active sync   /dev/sdb5

5、添加成员接管

#添加一个分区加入md0,这里要指定-n 表示为第4块硬盘

[[email protected] ~]# mdadm -G /dev/md0 -n 4 -a /dev/sdb6
mdadm: added /dev/sdb6
mdadm: Need to backup 3072K of critical section..

#再次查看md0磁盘阵列成员

[[email protected] ~]# mdadm -D /dev/md0 | grep ‘.*/dev/sdb[0-9]$‘
  0     8       17        0      active sync   /dev/sdb1
  1     8       18        1      active sync   /dev/sdb2
  3     8       21        2      active sync   /dev/sdb5
  4     8       22        3      active sync   /dev/sdb6

#再次查看数据,文件读取正常

[[email protected] ~]# cat /mnt/md0/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m
 
new line 
 hello world

#再次加入

[[email protected] ~]# mdadm -G  /dev/md0 -n 5  -a /dev/sdb3
mdadm: added /dev/sdb3
mdadm: Need to backup 6144K of critical section..

#使用watch工具进行动态数据查看

[[email protected] ~]# watch -n 3 ‘cat /proc/mdstat‘

解析:这里表示数据同步中,使用watch可以不断进行读秒查看

#数据仍然存在

[[email protected] ~]# cat /mnt/md0/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m
 
new line 
 hello world

6、保存md0阵列配置

#保存阵列数据配置

[[email protected] ~]# mdadm -D --scan /dev/md0 > /etc/mdadm.conf

7、停止md0阵列

#卸载md0设备

[[email protected] ~]# umount /mnt/md0

#停止磁盘阵列

[[email protected] ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0

#内存中已经没有md0阵列了

[[email protected] ~]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
unused devices: <none>

#md0真的被停止了

[[email protected] ~]# fdisk -l 2> /dev/null | grep ‘md0‘

8、重启启动磁盘阵列

#重新启用md0阵列

[[email protected] ~]# mdadm -A -s /dev/md0
mdadm: /dev/md0 has been started with 5 drives.

#md0中5个设备都列了出来

[[email protected] ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdb1[0] sdb3[5] sdb6[4] sdb5[3] sdb2[1]
      4235264 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
      
unused devices: <none>

#挂载md0设备

[[email protected] ~]# mount /dev/md0 /mnt/md0

#文件数据依然存在

[[email protected] ~]# cat /mnt/md0/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m
 
new line 
 hello world

注意:如果相要重新启用md0并读取原有设备成员,那么就需要madm -D -s的配置信息保存至/etc/mdadm.conf文件中,否则无法重新启用的。

9、测底清除设备成员的raid信息

#先卸载设备

[[email protected] ~]# umount /dev/md0

#停止阵列设备

[[email protected] ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0

#清除radi的超级块信息

[[email protected] ~]# mdadm --zero-superblock /dev/sdb{1,2,3,5,6}

#删除配置文件

[[email protected] ~]# rm -f /etc/mdadm.conf
时间: 2024-10-01 06:40:28

Linux入门之磁盘管理(7)RAID的实现的相关文章

Linux入门之磁盘管理(2)文件系统

Linux入门之磁盘管理(2)文件系统 linux分区构成完成之后,一般需要进行对其创建指定的文件系统,也就是我们常说的格式化,然后对其进行分区挂载,提供指定分区的访问点.不同的分区格式会在文件系统内部提供不同的对该分区的数据存储的格式分配,以及其内部模块会支持不同的分区的接口及方法调用,例如对一个文件的打开.读取.写入.关闭等功能,每个文件系统都会有各种不同的特点. 常见的系统文件系统: linux: ext2.ext3.ext4:xfs(SGI):btrfs(Oracle):reiserfs

Linux入门之磁盘管理(1)分区管理

Linux入门之磁盘管理(1)分区管理 无论是windows还是linux,目前支持的分区结构只有两种,一种是基于blos检查启动的mbr结构,另一种是基于uefi(统一扩展固件接口)的opt分区结构.当然,目前广泛的还是使用的mbr结构. linux中有很多不同的文件系统,当使用安装光盘安装的readhat类的linux系统默认一般支持的主要格式为ext类(ext2.ext3.ext4),当然这些是redhat或者centos5.6所使用的默认设备,且安装centos7时默认使用的分区格式为x

Linux入门之磁盘管理(9)LVM逻辑卷案例

Linux入门之磁盘管理(9)LVM逻辑卷案例 案例介绍阶段(1): 创建一个由两个物理卷组成的大小未20G的卷组myvg,要求其PE大小为16M:而在此卷组中创建一个大小未5G的逻辑卷lvtest,此逻辑卷要能在开机后自动挂载至/mnt/lvtest目录,且支持ACL功能. 1.准备工作 #这里我们分别从两个磁盘选择10G来准备组合为PV [[email protected] ~]# fdisk -l | grep -o '/.*B' /dev/sda: 21.5 GB /dev/sdb: 2

Linux入门之磁盘管理(8)LVM逻辑卷的使用

在Linux中虽然有raid来保证数据的稳定以及磁盘性能的提高,但是其扩展性并不是很好,在很多生产环境中,都是数据正在使用中,在这时如果中断一段时间就会有很大的损失,因此Linux提供了LVM虚拟逻辑卷的概念,同样多个磁盘设备或分区设备组合在一起,但是,如果空间需要缩减或者扩展,可以很方便的进行动态改变,甚至进行数据快照. 逻辑卷管理器(LVM): 1.允许对卷进行方便操作的抽象层,包括重新定义文件系统的大小 2.允许在多个目录设备间重新组织文件系统 (1)将设备指定为物理卷 (2)用一个或多个

Linux入门之磁盘管理(6)磁盘配额

在linux中使用向磁盘中存入数据时,如果有多个用户对同个磁盘进行操作,其中一个用户放了很大数据的文件导致硬盘容量用光,那么其他用户将无法再存入数据,这时就需要对每个用户进行存入数据大小的限制,linux中提供了一种磁盘配额的功能来实现. 初始化: 添加分区挂载选项:usrquota.grpquota 初始化数据库:quotacheck 命令 使用命令 开启或取消配额:quotaon.quotaoff 直接编译配额:edquota  [username] 案例说明: 创建配额数据库 #/home

Linux入门之磁盘管理(3)文件系统挂载

当磁盘建立了分区,创建了文件系统,只是说明该设备可以用来存储,但是要想访问设备,就需要通过建立一个或多个挂载点,来提供给用户进行访问,在linux中,提供了强大的命令来用于实现文件系统的挂载及管理. 挂载命令的使用 mount 命令 用法: mount  [option]    DEVICE  mountdir DEVICE(要挂载的设备): 设备名:如/dev/sdb1 /dev/hda2 卷标名:-L  "LABLE"  如  -L mydata UUID :-U  UUID 伪文

Linux入门之磁盘管理(4)/etc/fstab与交换分区

在linux通过挂载命令可以使用各种选项进行不同文件系统的设备文件进行挂载,当然不仅限于块设备,但是无论怎么挂载,一般默认新建的文件系统进行挂载开机是不会自动挂载的,每次开启自动挂载的分区时通过/etc/fstab文件进行读取的. /etc/fstab文件 简介: 此文件内容每一行都被定义一个条目的对应挂载信息,如果把每行条目按空格切割成多断那么可以分为下面几列: 要挂载的设备或者伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序 挂载设备:一般为:设备名.LABEL="设备卷标名&

Linux入门之磁盘管理(5)dd命令使用

在Linux中,经常需要一些数据读写等测试,还有文件以及其它数据的备份迁移,一般使用cp命令可以解决一部分,但是其无法进行控制数据的流向及动作,这时就可以使用dd命令,来进行灵活的数据流操作. dd 命令用法: dd  if=/PATH/FROM/SRC  of=/PATH/TO/DEST #解析:if表示inputfile,表示从if所指的文件读取数据流,然后输出到of所指的文件 详细解析: bs=# :block size,复制单元大小,默认不指定为byte,可以指定M count=#:  

linux下磁盘管理机制--RAID

RAID(Redundant Array Of Independent Disks):独立磁盘冗余阵列.RAID的最初出现的目的是为了解决中小型企业因经费原因使用不起SCSCI硬盘,而不得不使用像IDE较廉价的磁盘情况下,将多块IDE磁盘通过某种机制组合起来,使得IDE磁盘在一定程度上提高读写性能的一种机制.当然,现在也可以将SCSCI类的磁盘也可以做成RAID来提高磁盘的读写性能. 一.RAID的级别 RAID机制通过级别来RAID级别来定义磁盘的组合方式.常见的级别有:RAID0,RAID1