Linux中配置RAID及详解

博文大纲

什么是RAID
Software,hardware RAID
软件磁盘阵列的设置
仿真RAID错误的救援模式
开机自动启动RAID并自动挂载

1.什么是RAID:

1.磁盘阵列全名是“ Redundant Arrays of Inexpensive Disks, RAID ”,英翻中的意思是:容错式廉价磁盘阵列。

2.RAID 可以通过一个技术(软件或硬件),将多个较小的磁盘整合成为一个较大的磁盘设备;而这个较大的磁盘功能可不止是储存而已,他还具有数据保护的功能呢。

3.整个 RAID 由于选择的等级(level)不同,而使得整合后的磁盘具有不同的功能

  • RAID-0(等量模式,stripe):性能最佳

这种模式如果使用相同型号与容量的磁盘来组成时,效果较佳。
这种模式的 RAID 会将磁盘先切出等量的区块(名为chunk,一般可设置 4K~1M 之间),然后当一个文件要写入 RAID 时,该文件会依据 chunk 的大小切割好,之后再依序放到各个磁盘里面去。
由于每个磁盘会交错的存放数据,因此当你的数据要写入 RAID 时,数据会被等量的放置在各个磁盘上面。

  • RAID-1(映射模式,mirror):完整备份

这种模式也是需要相同的磁盘容量的,最好是一模一样的磁盘。
如果是不同容量的磁盘组成 RAID-1 时,那么总容量将以最小的那一颗磁盘为主!这种模式主要是“让同一份数据,完整的保存在两颗磁盘上头”
举例来说,如果我有一个 100MB 的文件,且我仅有两颗磁盘组成 RAID-1 时,那么这两颗磁盘将会同步写入 100MB 到他们的储存空间去。因此,整体 RAID 的容量几乎少了 50%。由于两颗硬盘内容一模一样,好像镜子映照出来一样,所以我们也称他为 mirror 模式

由于两颗磁盘内的数据一模一样,所以任何一颗硬盘损毁时,你的数据还是可以完整的保留下来的!
最大优点 备份

  • RAID 1+0,RAID 0+1(结合使用)

RAID-0 的性能佳但是数据不安全,RAID-1 的数据安全但是性能不佳,那么能不能将这两者整合起来设置 RAID 呢?
RAID 1+0 就是:
(1)先让两颗磁盘组成 RAID 1,并且这样的设置共有两组;
(2)将这两组 RAID 1 再组成一组 RAID 0。这就是 RAID 1+0
RAID 0+1 就是:
(1)先让两颗磁盘组成RAID 0,并且这样的设置共有两组;
(2) 将这两组RAID 0 再组成一组RAID 1 。这就是RAID 0+1

  • RAID5:性能与数据备份的均衡考虑

RAID-5 至少需要三颗以上的磁盘才能够组成这种类型的磁盘阵列。
这种磁盘阵列的数据写入有点类似 RAID-0 ,不过每个循环的写入过程中(striping),在每颗磁盘还加入一个同位检查数据(Parity),这个数据会记录其他磁盘的备份数据,用于当有磁盘损毁时的救援。

每个循环写入时,都会有部分的同位检查码(parity)被记录起来,并且记录的同位检查码每次都记录在不同的磁盘,因此,任何一个磁盘损毁时都能够借由其他磁盘的检查码来重建原本磁盘内的数据喔!不过需要注意的是,由于有同位检查码,因此 RAID 5 的总容量会是整体磁盘数量减一颗。
原本的 3 颗磁盘只会剩下(3-1)=2 颗磁盘的容量。
当损毁的磁盘数量大于等于两颗时,这整组 RAID 5 的数据就损毁了。因为 RAID 5 默认仅能支持一颗磁盘的损毁情况

读取性能:优
写入性能:一般
RAID5 :支持1颗损坏
RAID6 :支持2颗损坏
  • Spare Disk:预备磁盘的功能:

为了让系统可以实时的在坏掉硬盘时主动的重建,因此就需要预备磁盘(spare disk)的辅助。所谓的 spare disk 就是一颗或多颗没有包含在原本磁盘阵列等级中的磁盘,这颗磁盘平时并不会被磁盘阵列所使用,当磁盘阵列有任何磁盘损毁时,则这颗 spare disk 会被主动的拉进磁盘阵列中,并将坏掉的那颗硬盘移出磁盘阵列!然后立即重建数据系统。


当磁盘阵列的磁盘损毁时,就得要将坏掉的磁盘拔除,然后换一颗新的磁盘。

  • 磁盘阵列的优点:
  1. 数据安全与可靠性:指的并非网络信息安全,而是当硬件(指磁盘)损毁时,数据是否还能够安全的救援或使用之意;
  2. 读写性能:例如 RAID 0 可以加强读写性能,让你的系统 I/O 部分得以改善;
  3. 容量:可以让多颗磁盘组合起来,故单一文件系统可以有相当大的容量。

Software,hardware RAID:

系统资源,比如说 CPU 的运算与 I/O 总线的资源等。不过目前我们的个人计算机实在已经非常快速了,因此以前的速度限制现在已经不存在!
我们的 CentOS 提供的软件磁盘阵列为 mdadm 这套软件,这套软件会以 partition 或 disk 为磁盘的单位,也就是说,你不需要两颗以上的磁盘,只要有两个以上的分区(partition)就能够设计你的磁盘阵列了。
此外, mdadm 支持刚刚我们前面提到的RAID0/RAID1/RAID5/spare disk 等!而且提供的管理机制还可以达到类似热拔插的功能,可以线上(文件系统正常使用)进行分区的抽换

软件磁盘阵列的设置:

配置RAID
(给服务器添加一块硬盘,创建5个分区(也可以添加5块硬盘每块一个分区))

1.[[email protected] ~]# gdisk /dev/sdb   //进入硬盘

Creating new GPT entries.

Command (? for help): n   //创建分区
Partition number (1-128, default 1): 1   //默认为1
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +1G   //大小为1G
Current type is ‘Linux filesystem‘
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to ‘Linux filesystem‘
按照上面一样配置再建立4块分区
Command (? for help): p         //查看分区表信息
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 6A978C77-4505-4345-ABEC-AE3C31214C6D
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 31457213 sectors (15.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem
   2         2099200         4196351   1024.0 MiB  8300  Linux filesystem
   3         4196352         6293503   1024.0 MiB  8300  Linux filesystem
   4         6293504         8390655   1024.0 MiB  8300  Linux filesystem
   5         8390656        10487807   1024.0 MiB  8300  Linux filesystem

Command (? for help): wq   //保存退出
[[email protected] ~]#  mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd[b-e]1
命令参数:
--create    #表示要创建raid
--auto=yes /dev/md0   #新建立的软件磁盘阵列设备为md0,md序号可以为0-9
--level=5   #磁盘阵列的等级,这里表示创建是的raid5
--raid-devices     #添加作为磁盘阵列用的磁盘的块数
--spare-devices   #添加作为预备(spare)磁盘的块数
/dev/sd[b-f]1   #磁盘阵列所使用的设备,还可写成/dev/sdb1  /dev/sdc1  /dev/sdd1  /dev/sde1  
[[email protected] ~]# cat /proc/mdstat             #查看RAID的配置文件
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
      41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2** [3/3] [UUU]**

unused devices: <none>
[[email protected] ~]# mdadm -D /dev/md0             #查看RAID配置文件详细信息
/dev/md0:
        Version : 1.2
  Creation Time : Sun Jun 30 10:43:20 2019
  **   Raid Level : raid5**                                   #阵列类型为raid5

                                             …………              #省略部分内容

 Active Devices : 3                 #活跃的磁盘数目
Working Devices : 4               #所有的磁盘数目
 Failed Devices : 0                  #故障的磁盘数目
  Spare Devices : 1                 #热备份的磁盘数目
Number   Major   Minor   RaidDevice State
   0       8       17        0      active sync   /dev/sdb1
   1       8       33        1      active sync   /dev/sdc1
   4       8       49        2      active sync   /dev/sdd1

   3       8       65        -      spare   /dev/sde1       #一块磁盘用于热备份
[[email protected] ~]# mkfs.xfs /dev/md0
#格式化磁盘
[[email protected] ~]# mkdir /a
[[email protected] ~]# mount /dev/md0 /a
#挂载磁盘
[[email protected] ~]# df -hT              #查看磁盘大小

                            …………                #省略部分内容

/dev/md0            xfs        40G   33M   40G    1% /a
 [[email protected] ~]# vim /etc/fstab                  #编写文件开机自动挂载               

                                …………                #省略部分内容

/dev/md0                /a                      xfs     defaults        0 0
[[email protected] ~]# cd /a
[[email protected] a]# touch 123.txt  456.txt                #创建测试文件
[[email protected] a]# mdadm /dev/md0 -f /dev/sdb1      #模拟sdb1损坏
mdadm: set /dev/sdb1 faulty in /dev/md0
[[email protected] a]# mdadm -D /dev/md0                  #查看/dev/md0详细信息

                   …………               #省略部分内容

    Number   Major   Minor   RaidDevice State
       3       8       65        0      spare rebuilding   /dev/sde1
       1       8       33        1      active sync   /dev/sdc1
       4       8       49        2      active sync   /dev/sdd1

       0       8       17        -      faulty   /dev/sdb1
[[email protected] a]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[4] sde1[3] sdc1[1] sdb1[0](F)
      41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2 [**3/3] [UUU]**

unused devices: <none>
[[email protected] a]# ll                     #查看测试的文件
总用量 0
-rw-r--r--. 1 root root 0 6月  30 11:06 123.txt
-rw-r--r--. 1 root root 0 6月  30 11:06 456.txt
[[email protected] a]# mdadm /dev/md0 -r /dev/sdb1                        #移除已损坏的磁盘
mdadm: hot removed /dev/sdb1 from /dev/md0
[[email protected] a]# mdadm -D /dev/md0                               #查看/dev/md0详细信息

                                                                                 …………               #省略部分内容

   Number   Major   Minor   RaidDevice State
       3       8       65        0      active sync   /dev/sde1
       1       8       33        1      active sync   /dev/sdc1
       4       8       49        2      active sync   /dev/sdd1
[[email protected] a]# mdadm /dev/md0 -a /dev/sdb1                      #添加一块硬盘
mdadm: added /dev/sdb1
[[email protected] a]# mdadm -D /dev/md0                           #查看/dev/md0详细信息

服务器再添加一块磁盘,重启之后再加上:


[[email protected] a]# mdadm /dev/md0 -a /dev/sdf1
mdadm: added /dev/sdf1
[[email protected] a]# mdadm -D /dev/md0

                                                                                 …………               #省略部分内容

    Number   Major   Minor   RaidDevice State
       3       8       65        0      active sync   /dev/sde1
       1       8       33        1      active sync   /dev/sdc1
       4       8       49        2      active sync   /dev/sdd1

       5       8       17        -      spare   /dev/sdb1
       6       8       81        -      spare   /dev/sdf1
[[email protected] a]# mdadm /dev/md0 -G -n4
#-n用来指定raid中活动盘的数量。最好保证要有足够的热备盘添加。
[[email protected] a]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Jun 30 10:43:20 2019
     Raid Level : raid5
     Array Size : 41908224 (39.97 GiB 42.91 GB)                        #磁盘容量已将发生变化
  Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Sun Jun 30 11:22:00 2019
          State : clean         #构建完成

                                                …………         #省略部分内容

    Number   Major   Minor   RaidDevice State
       3       8       65        0      active sync   /dev/sde1
       1       8       33        1      active sync   /dev/sdc1
       4       8       49        2      active sync   /dev/sdd1
       6       8       81        3      active sync   /dev/sdf1

       5       8       17        -      spare   /dev/sdb1
    #此时raid中已经由四块硬盘了
[[email protected] a]# df -hT                                       #查看之后,容量并没有发生变化
                         …………         #省略部分内容
/dev/md0            xfs        40G   33M   40G    1% /a
[[email protected] a]# resize2fs /dev/md0
#(resizefx适用于ext3,ext4等文件系统不适用于xfs文件系统)
#resize2fs命令用于更新磁盘
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block 当尝试打开 /dev/md0 时
找不到有效的文件系统超级块.
[[email protected] a]# xfs_growfs /dev/md0                            #对文件系统进行扩容
meta-data=/dev/md0               isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 10475520 to 15715584
[[email protected] a]# df -hT
文件系统            类型      容量  已用  可用 已用% 挂载点

                      …………                   #省略部分内容

/dev/md0            xfs        60G   33M   60G    1% /a
#再次查看容量已经发生变化

原文地址:https://blog.51cto.com/14400213/2448436

时间: 2024-11-03 20:28:09

Linux中配置RAID及详解的相关文章

(转)linux 中特殊符号用法详解

linux 中特殊符号用法详解 原文:https://www.cnblogs.com/lidabo/p/4323979.html # 井号 (comments)#管理员  $普通用户 脚本中 #!/bin/bash   #!/bin/sh井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行. # This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就

linux基础-磁盘阵列(RAID)实例详解

磁盘阵列(RAID)实例详解 raid技术分类 软raid技术 硬raid技术 Raid和lvm的区别 为什么选择用raid RAID详解 RAID-0 RAID-1 RAID-5 Raid-10 Raid的管理 案例:创建一个raid10+冗余盘 磁盘阵列(RAID)实例详解 Raid(磁盘阵列)级别介绍 Raid有"廉价磁盘冗余阵列"的意思,就是利用多块廉价的硬盘组成磁盘组,让数据分部储存在这些硬盘里面,从而达到读取和写入加速的目的:也可以用作数据的冗余,当某块硬盘损毁后,其他硬盘

linux中pipe和dup2详解

1.什么是管道 管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道: 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程): 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在于内存中.数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出.写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据. 2.管道的创建 int pipe(i

linux中FTP服务搭建详解--1.匿名与权限

实验环境:在redhat6.5中安装配置FTP服务,并使用一台win7系统访问验证. 理论: FTP连接方式     支持两种连接模式:主动模式(Port)和被动模式(Pasv),这两种模式都是针对数据链路进行的,与控制链路无关. 主动模式工作过程: 1.客户端从自己的一个任意端口(N > 1024)和FTP服务器的21端口建立控制链路2.然后客户端发出Port指令告诉服务器连接自己的N+1端口来建立一条数据通道3.当FTP服务器接到这一指令时,会使用20端口连接用户在Port指令中指定的端口号

linux中rpm 、yum详解

一.程序包的组成: 1.底层内核:进程管理.内存管理.网络协议栈.驱动程序等 2.应用程序 :各种应用 使大家更好的通过它完成工作. 二.一个合格的程序包包含以下内容: 1.二进制程序,通常在linux /bin./sbin./usr/bin. /usr/sbin等目录下. 2.库文件.通常在linux /lib./lib64./usr/lib./usr/lib64等目录下. 3.配置文件.一般存放在linux /etc目录下. 4.说明和帮助文档,Linux man 和 info文件中. 三.

linux 中特殊符号用法详解

# 井号 (comments)#管理员  $普通用户 脚本中 #!/bin/bash   #!/bin/sh井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行. # This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行了.这常用在撰写过程中.#echo "a = $a" # a = 0如果被用在指令中,或者引号双引号括住的话

【转】linux 中dd命令使用详解

原文网址:http://xiaozhuang.blog.51cto.com/4396589/850657 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xiaozhuang.blog.51cto.com/4396589/850657 使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file 使用方式: dd [option] 如果你想要在线看 manual, 可以试试:

Linux中THIS_MODULE宏定义详解

一直都在耿耿于怀,这个THIS_MODULE到底是个什么玩意,linux内核中无处不在的东西.今天上网搜了一下,算是基本明白了.网上牛人写的已经比较详细,另外目前暂时没有时间往更深层次分析,所以直接贴过来得了... 转帖网址: http://blog.csdn.net/a954423389/archive/2010/12/27/6101369.aspx 源码位置: @ kernel/module.c @ include/linux/module.h 结构体struct module在内核中代表一

Linux中top命令参数详解

top命令用法top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况. top的使用方式 top [-d number] | top [-bnp] 参数解释: -d:number代表秒数,表示top命令显示的页面更新一次的间隔.默认是5秒. -b:以批次的方式执行top. -n:与-b配合使用,表示需要进行几次top命令的输出结果. -p:指定特定的pid进程号进行观察. 在top命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的