服务器硬件及RAID配置实战

磁盘阵列

1. RAID磁盘阵列介绍

(1)   Redundant  Array  of  Independent Disks的缩写,中文简称为独立冗余磁盘阵列

(2) 把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘) ,从而提供比单个硬盘更高的存储性能和提供数据备份技术

(3) 组成磁盘阵列的不同方式称为RAID级别(RAID Levels)

(4) 常用的RAID级别

RAIDO, RAID1, RAID5, RAID6 , RAID1+0

2. RAID 0磁盘阵列介绍(条带化存储)

(1) 连续以位或字节为单位分割数据,并行读/于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余。

(2) 只是单纯地提高性能,而且其中的一个磁盘失效将影响到所有数据

(3) 数据安全性差。

3. RAID 1磁盘阵列介绍(镜像存储)

(1) 通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据

(2) 当原始数据繁忙时,可以直接从镜像拷贝中读取数据,因此,RAID 1 可以提高读取性能

(3) RAID 1 是磁盘阵列中单位成本最高的,但是提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。

4. RAID 5磁盘阵列介绍

(1) N N>=3) 块盘组成阵列,一份数据产生N-1 个条带,同时还有1分校验数据,共N份数据在N块盘上循环存储

(2) N块盘同时读写,读性能很高,但是由于有校验机制的问题,写性能相对不高

(3) (N -1 )/ N  磁盘利用率

(4) 可靠性高,允许坏 1 块盘,不影响所有数据

 

5. RAID 6磁盘阵列介绍

 

(1) N (N>=4) 块盘组成阵列

(2) (N -2) /N  磁盘利用率

(3) RAID 5 相比 , RAID 6 增加了 第二块独立的奇偶校验信息块

(4) 两个独立的奇偶系统使用不同的算法,即使两块磁盘同时失效也不会影响数据的使用

(5) 相对于RAID 5 有更大的写损失,因此写性能相对较差

 

 

6. RAID 1+0磁盘阵列介绍(先做镜像,再做条带)

 

(1) RAID 1+0 先做镜像,再做条带

(2) N(偶数,N>=4) 块盘两两镜像后,再组合成一个RAID 0

(3) N/2 磁盘利用率

(4) N/2 块盘同时写入,N块盘同时读取

(5) 性能高,可靠性高

 

7. RAID 0+1磁盘阵列介绍(先做条带,再做镜像)

(1) 读写性能与RAID 10

(2) 安全性低于RAID 10

 

8. 各级RAID

RID 级别

硬盘数量

硬盘利用率

是否有校验

安全性

写性能

RAID 0

N

N

单个硬盘的N

RAID1

N(偶数)

N/2

允许一个设备故障

需要写两对存储设备

RAID5

N>=3

(N-1)/N

允许有一个设备故障

需要写计算校验数据

RAID6

N>=4

(N-2)/N

允许有两个设备故障

需要写双重计算校验数据

RAID10

N>=4

N/2

允许两个基组中各坏一个

N/2 块盘同时写入

阵列卡

1. 阵列卡介绍

(1) 阵列卡是用来实现RAID功能的板卡

(2) 通常是由I/O处理器,硬盘控制器,硬盘连接器和缓存等一系列组建构成

(3) 不同的RAID 卡支持的RAID 功能不同

(4) RAID 卡接口类型:IDE接口,SCSI 口,SATA接口,SAS接口

2. 阵列卡的缓存

(1) 缓存(Cache) 是RAID 卡与外部总线交换数据的场所,RAID 卡先是将数据传送到缓存,再由缓存和外边数据总线交换数据

(2) 缓存的大小与速度是直接关系到RAID 卡的实际传输速度的重要因素

(3) 不同的RAID 卡出厂时配备的内存容量不同,一般为几兆到数百兆容量等

创建RAID磁盘阵列步骤

1.检查是否已安装mdadm软件包

rpm -q mdadm

yum install -y mdadm

2.使用fdisk工具将新磁盘设备/dev/sdb/dev/sdc/dev/sd/dev/sde划分出主分区sdb1sdc1sdlsde1,并且把分区类型的ID标记号改为”fd"

fdisk / dev / sdb

fdisk /dev / sdc

3.创建RAID 设备

#创建RAID5

mdadm  -C  -v /dev/md0  [-a  yes]  -15  -n3  /dev/sd [bcd]1  -x1  1/dev/sde1

-c:表示新建;

-v:显示创建过程中的详细信息。

/ dev / md0:创建 PAID5的名称。

-a  yes : --auto,表示如果有什么设备文件没有存在的话就自动创建,可省略。

-l:指定RAID的级别,15表示创建RAID5

-n:指定使用几块硬盘创建RAIDn3表示使用3块硬盘创建RAID

/dev/sd [bcd]1:指定使用这3块磁盘分区去创建RAID

-x:指定使用几块硬盘做RAID的热备用盘,x1表示保留1块空闲的硬盘作备用/ dev / sde1:指定用作于备用的磁盘

 

 

#创建RAID10(先做镜象,再做条带)

mdadm  -Cv  /dev/md0  -11  -n2  /dev/sd [bc]1

mdadm  -Cv  /dev/md1  -11  -n2  /dev/sd [de]1

mdadm  -Cv  /dev/md10  -10  -n2  /dev/md0/dev/md1

 

 

#检查磁盘是否已做RAID

Mdadm  -E  /dev / sd[b-e]1

 

4.创建并挂载文件系统

mkfs  -t  xfs  / dev / md0

Mkdir  /myraid

mount  /dev/ md0 / myraid/

df -Th

cp  /etc/ fstab  /etc/fstab. Bak

vim  /etc/fstab

/dev/md0 /myraid xfs defaults 0 0

5.实现故障恢复

mdadm  /dev/md0  -f  /dev / sdb1 #模拟/dev / sdb1 故障

mdadm  -D  /dev/ md0 #查看发现sde1己顶替sdb1

6.创建/etc/mdadm.conf配置文件,方便管理软RAID的配置,比如启动、停止

echo  'DEVICE  /dev/sdc1 /dev/sdb1 /dev/sdd1 /dev/sde1' > /etc/mdadm.confmdadm --detail --scan >> letc/mdadm. Conf

 

 

mdadm /dev/ md0 -f / dev / sdb1

mdadm /dev/ md0 -r /dev / sdb1

mdadm /dev/md0 -a /dev / sde1

 

 

echo 'DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1' > /etc/mdadm.confmdadm --detail --scan >> letc/ mdadm. Conf

umount /dev/md0

mdadm -s / dev/md0

mdadm -As /dev/md0

#s:指查找/etc/mdadm. conf文件中的配置信息

实际操作

 1.查看mdadm是否安装

 

[root@localhost ~]# rpm -qa | grep mdadm

 

 

 

 2.磁盘分区并修改标记

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   60G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0    4G  0 part [SWAP]
└─sda3   8:3    0 55.5G  0 part /
sdb      8:16   0   20G  0 disk 
sdc      8:32   0   20G  0 disk 
sdd      8:48   0   20G  0 disk 
sde      8:64   0   20G  0 disk 
sr0     11:0    1  4.2G  0 rom  

[root@localhost ~]# echo 'n            
> p
>
> 
> 
> t
> fd
> w' | fdisk /dev/sdb                #非交互式磁盘分区,并修改分区系统类型为raid
##磁盘/dev/sdbc /dev/sdd /dev/sde重复操作一下
[root@localhost ~]# for i in {b,c,d,e}; do fdisk -l /dev/sd$i | grep /dev/sd$i ; done    
#查看分区结果
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区/dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区/dev/sdc1            2048    41943039    20970496   fd  Linux raid autodetect
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区/dev/sdd1            2048    41943039    20970496   fd  Linux raid autodetect
磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区/dev/sde1            2048    41943039    20970496   fd  Linux raid autodetect

 3.创建RAID 设备

[root@localhost ~]# mdadm -C -v /dev/md0 -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1 
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 start

[root@localhost ~]# cat /proc/mdstat        #查看磁盘阵列的创建过程
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/2] [UU_]   #uu表示 两块磁盘状态完好  _  表示磁盘不在线  (当前只创建好两个)
      [==========>..........]  recovery = 53.7% (11271168/20954112) finish=0.7min speed=206000K/sec   #创建进度
      
unused devices: <none>

[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Jun 22 09:09:38 2021
        Raid Level : raid5      #磁盘阵列是raid 5
        Array Size : 41908224 (39.97 GiB 42.91 GB)     #阵列容量大小
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Jun 22 09:11:23 2021
             State : clean 
    Active Devices : 3       #正活跃的磁盘
   Working Devices : 4       #此阵列工作的磁盘数
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 71f5d2f1:6c7c50ac:785f4ba3:58b2aa00
            Events : 18

    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            #热备份的磁盘

4.格式化磁盘并挂载使用

复制代码
[root@localhost ~]# mkfs.xfs /dev/md0      #格式化为xfs 文件系统
meta-data=/dev/md0               isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=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 log           bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/md0 /data    #挂载使用
[root@localhost ~]# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda3      xfs        56G  5.0G   51G    9% /
devtmpfs       devtmpfs  978M     0  978M    0% /dev
tmpfs          tmpfs     993M     0  993M    0% /dev/shm
tmpfs          tmpfs     993M  9.1M  984M    1% /run
tmpfs          tmpfs     993M     0  993M    0% /sys/fs/cgroup
/dev/sda1      xfs       497M  151M  346M   31% /boot
tmpfs          tmpfs     199M   12K  199M    1% /run/user/42
tmpfs          tmpfs     199M     0  199M    0% /run/user/0
/dev/md0       xfs        40G   33M   40G    1% /data

 

5. 手动挂掉一个磁盘测试测试

手动故障磁盘阵列md0 中的磁盘 /dev/sdb1  

[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb1             #将/dev/sdb1 磁盘 手动故障
mdadm: set /dev/sdb1 faulty in /dev/md0
[root@localhost ~]# 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/2] [_UU]
      [====>................]  recovery = 20.1% (4212992/20954112) finish=1.3min speed=210649K/sec
      
unused devices: <none>

[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Jun 22 09:09:38 2021
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Jun 22 09:38:56 2021
             State : clean, degraded, recovering 
    Active Devices : 2     #活跃的只剩下两块(因为一块正在创建中
   Working Devices : 3     #一共只剩下三块盘
    Failed Devices : 1
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 44% complete

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 71f5d2f1:6c7c50ac:785f4ba3:58b2aa00
            Events : 27

    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     #磁盘失效
 

 

6. 创建配置文件

[root@localhost ~]# echo   'DEVICE /dev/sdcl /dev/sdb1 /dev/sddl /dev/sdel'  >  /etc/mdadm.conf 
[root@localhost ~]# mdadm --detail --scan >> /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf 
DEVICE /dev/sdcl /dev/sdb1 /dev/sddl /dev/sdel
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=71f5d2f1:6c7c50ac:785f4ba3:58b2aa00

 

2.7 mdadm命令其它常用选项

 

mdadm -D  /dev/md0                     #查看阵列md0 的信息

mdadm -E  /dev/sd[bcde]                #查看磁盘/dev/sdd-sde 是否已做raid

mdadm /dev/md0 -f   /sdb1              #可以手动下线设备,模拟故障

mdadm /dev/mdo -r   /dev/sdb1       #移除设备

mdadm /dev/mdo -a   /dev/sde1      #添加设备

mdadm  -s /dev/md0                        #扫描配置文件

mdadm -S  /dev/md0                        #停止RAID

mdadm  -A  /dev/md0                       #启动RAID
 

 

[root@localhost ~]# mdadm /dev/md0 -r /dev/sdb1     #将sdb1 从阵列 md0 中移除
mdadm: hot removed /dev/sdb1 from /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Jun 22 09:09:38 2021
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Tue Jun 22 10:38:07 2021
             State : clean 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 71f5d2f1:6c7c50ac:785f4ba3:58b2aa00
            Events : 41

    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

[root@localhost ~]# mdadm  /dev/md0 -a /dev/sdb1      #将sdb1 添加到 md0中
mdadm: added /dev/sdb1

[root@localhost ~]# mdadm -D /dev/md0 | grep sdb1
       5       8       17        -      spare   /dev/sdb1

[root@localhost ~]# umount /dev/md0       #先卸载md0
[root@localhost ~]# mdadm -S /dev/md0     #停止阵列 md0
mdadm: stopped /dev/md0
[root@localhost ~]# mdadm -As /dev/md0     #启动md0 并扫描 配置文件
mdadm: /dev/md0 has been started with 3 drives and 1 spare.

[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Jun 22 09:09:38 2021
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent

Update Time : Tue Jun 22 10:51:34 2021
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1

Layout : left-symmetric
Chunk Size : 512K

Consistency Policy : resync

Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 71f5d2f1:6c7c50ac:785f4ba3:58b2aa00
Events : 42

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

 

 
 
posted @ 2021-07-02 17:40  青山不改水长流  阅读(330)  评论(0)    收藏  举报