RAID的介绍与配置

RAID(Redundant Array ofInexpensiveDisks)

独立磁盘冗余阵列。RAID阵列是把多个较小的磁盘组合到一起,成为一个磁盘组,使性能和容量达到或超过一个独立的磁盘。

RAID的几种级别

raid0: 至少需要两块磁盘,也叫条带,没有容错能力,读写性能都提升,100%

raid1: 至少需要两块磁盘,也叫镜像,硬件容错能力,读性能提升,写性能下降,50%

raid5: 至少需要三块磁盘,允许一块盘出错,兼具一定的效率与冗余能力,读写性能提升,(n-1)/n

raid10: 至少需要四块磁盘,允许不同组内各坏一块盘,读写性能提升,50%

raid01:至少需要四块磁盘,允许只坏一个组内的磁盘,性能同raid10,故我们常用raid10而不是raid01

RAID的介绍与配置_第1张图片

*:RAID的创建命令:mdadm,此命令的配置文件为/etc/mdadm.conf

配置RAID5

1.首先我们在vmware中新增sdb sdc sdd sde硬盘,改动前先在系统里把所有磁盘umount,分区设置清空,硬盘添加完成重启系统

分别fdisk进入sdb,sdc,sdd,sde创建分区sdb1,sdc1,sdd1,sde1,分区空间不宜过小,以防分区建立后没有可用空间,因为是尝试,所以也不要过大,要不然等待时间会很长,这里我们选择给每一个分区设置了2G空间。

fdisk /dev/sdb
命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB

其他磁盘一一进行分区设置

2.接下来我们开始建立raid5,先检查系统中是否有mdadm工具:yum install -y mdadm

然后,我们使用命令mdadm

mdadm   -C   -v   /dev/md5   -l5   -n3     /dev/sd[bce]1    -x1    /dev/sdd1
   
      创建  详细过程 创建名称 raid级别  raid设备数量  raid设备  空闲设备数量(热备盘) 设备名称

      --creat              --level --raid-devices

cat /proc/mdstat或mdadm -D /dev/md5查看raid信息

[root@lnx1 /]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Wed Jul  6 13:47:12 2022
        Raid Level : raid5
        Array Size : 4184064 (3.99 GiB 4.28 GB)
     Used Dev Size : 2092032 (2043.00 MiB 2142.24 MB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Jul  6 14:07:08 2022
             State : clean 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : lnx1:5  (local to host lnx1)
              UUID : 263830f8:ed29e78b:51de691c:4a459c50
            Events : 41

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       3       8       65        2      active sync   /dev/sde1

       4       8       49        -      spare   /dev/sdd1

可以看到sdb1,sdc1,sde1处于active,sdd1为spare备用 

3.RAID的配置文件名为“mdadm.conf”,默认是不存在的,所以需要我们创建,该配置文件存在的主要作用是系统启动的时候能够自动加载软RAID,同时也方便日后管理。“mdadm.conf”文件内容包括:由DEVICE选项指定用于软RAID的所有设备,和ARRAY选项所指定阵列的设备名、RAID级别、阵列中活动设备的数目以及设备的UUID号。生成RAID配置文件操做如下:

mdadm --detail --scan > /etc/mdadm.conf

但是当前生成“mdadm.conf”文件的内容并不符合所规定的格式,所以也是不生效的,这时需要手工修改该文件内容为如下格式:

# vi /etc/mdadm.conf

DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

ARRAY /dev/md/5 metadata=1.2 spares=1 name=lnx1:5 
UUID=263830f8:ed29e78b:51de691c:4a459c50

4.接着,我们格式化文件系统并将raid5进行挂载

mkfs.xfs /dev/md5
mount /dev/md5 /data

5. 别忘了在/etc/fstab里添加设置:/dev/md5

#vi /etc/fstab

#
# /etc/fstab
# Created by anaconda on Wed Jun 22 18:46:01 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root                   /          xfs     defaults        0 0
UUID=e3402bb4-3071-4dbb-88dd-43955afd90d1 /boot      xfs     defaults        0 0
/dev/mapper/centos-swap                   swap       swap    defaults        0 0


/dev/md5                                  /data      xfs     defaults        0 0
:wq!


mount   -a

6.查看信息

[root@lnx1 /]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  470M     0  470M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  8.4M  478M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        19G  8.1G   11G   44% /
/dev/md5                xfs       4.0G   33M  4.0G    1% /data
/dev/sda1               xfs       497M  165M  333M   34% /boot
tmpfs                   tmpfs      98M   12K   98M    1% /run/user/42
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
[root@lnx1 /]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda               8:0    0   20G  0 disk  
├─sda1            8:1    0  500M  0 part  /boot
└─sda2            8:2    0 19.5G  0 part  
  ├─centos-root 253:0    0 18.7G  0 lvm   /
  └─centos-swap 253:1    0  800M  0 lvm   [SWAP]
sdb               8:16   0   20G  0 disk  
└─sdb1            8:17   0    5G  0 part  
  └─md5           9:5    0    4G  0 raid5 /data
sdc               8:32   0   20G  0 disk  
└─sdc1            8:33   0    2G  0 part  
  └─md5           9:5    0    4G  0 raid5 /data
sdd               8:48   0   20G  0 disk  
└─sdd1            8:49   0    2G  0 part  
  └─md5           9:5    0    4G  0 raid5 /data
sde               8:64   0   20G  0 disk  
└─sde1            8:65   0    2G  0 part  
  └─md5           9:5    0    4G  0 raid5 /data
sr0              11:0    1  9.5G  0 rom   

RAID10的创建

RAID0和RAID1的建立可以参考RAID5的建立方法,这里我们直接跳过,介绍RAID 1 0和RAID 0 1的创建方法。

1.回到我们创建RAID5时的磁盘情况,sdb1,sdc1,sdd1,sde1,存在mdadm工具

2.使用mdadm命令创建

mdadm -Cv /dev/md10 -l10 -n4 /dev/sd[bcde]1
创建RAID10,包含sdb1,sdc1,sdd1,sde1

3 .使用lsblk命令进行查看

[root@lnx1 /]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE   MOUNTPOINT
sda               8:0    0   20G  0 disk   
├─sda1            8:1    0  500M  0 part   /boot
└─sda2            8:2    0 19.5G  0 part   
  ├─centos-root 253:0    0 18.7G  0 lvm    /
  └─centos-swap 253:1    0  800M  0 lvm    [SWAP]
sdb               8:16   0   20G  0 disk   
└─sdb1            8:17   0   20G  0 part   
  └─md10          9:10   0    4G  0 raid10 
sdc               8:32   0   20G  0 disk   
└─sdc1            8:33   0    2G  0 part   
  └─md10          9:10   0    4G  0 raid10 
sdd               8:48   0   20G  0 disk   
└─sdd1            8:49   0    2G  0 part   
  └─md10          9:10   0    4G  0 raid10 
sde               8:64   0   20G  0 disk   
└─sde1            8:65   0    2G  0 part   
  └─md10          9:10   0    4G  0 raid10 
sr0              11:0    1  9.5G  0 rom    

 4.生成RAID配置文件

mdadm --detail --scan > /etc/mdadm.conf

5.对配置文件进行配置:vi /etc/mdadm.conf

DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md10 metadata=1.2 name=lnx1:10 UUID=378ac869:9f2d65e8:befa87bf:a361cbc6

6.格式化并进行挂载

mkfs.xfs /dev/md10
mount /dev/md10 /data

7. 查看挂载信息

[root@lnx1 /]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  470M     0  470M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  8.5M  478M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        19G  8.1G   11G   44% /
/dev/sda1               xfs       497M  165M  333M   34% /boot
tmpfs                   tmpfs      98M   12K   98M    1% /run/user/42
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/md10               xfs       4.0G   33M  4.0G    1% /data

创建RAID01

我们再来试一试创建RAID01,经过相同的步骤,我们发现,RAID01无法直接通过mdadm创建

[root@lnx1 ~]# mdadm -Cv /dev/md01 -l01 ln4 /dev/sd[bcde]1
mdadm: invalid raid level: 01

我们需要先将sdb1,sdc1,sdd1,sde1分别两两组成RAID0,再将两个RAID0组成一个RAID1,然后生成配置文件并添加设备信息,配置fstab,格式化后进行挂载。

最终得到结果:

[root@lnx1 /]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  470M     0  470M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  8.5M  478M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        19G  8.1G   11G   44% /
/dev/sda1               xfs       497M  165M  333M   34% /boot
tmpfs                   tmpfs      98M   12K   98M    1% /run/user/42
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/md3                xfs       4.0G   33M  4.0G    1% /data
[root@lnx1 /]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda               8:0    0   20G  0 disk  
├─sda1            8:1    0  500M  0 part  /boot
└─sda2            8:2    0 19.5G  0 part  
  ├─centos-root 253:0    0 18.7G  0 lvm   /
  └─centos-swap 253:1    0  800M  0 lvm   [SWAP]
sdb               8:16   0   20G  0 disk  
└─sdb1            8:17   0   20G  0 part  
  └─md0           9:0    0   22G  0 raid0 
    └─md3         9:3    0    4G  0 raid1 /data
sdc               8:32   0   20G  0 disk  
└─sdc1            8:33   0    2G  0 part  
  └─md0           9:0    0   22G  0 raid0 
    └─md3         9:3    0    4G  0 raid1 /data
sdd               8:48   0   20G  0 disk  
└─sdd1            8:49   0    2G  0 part  
  └─md1           9:1    0    4G  0 raid0 
    └─md3         9:3    0    4G  0 raid1 /data
sde               8:64   0   20G  0 disk  
└─sde1            8:65   0    2G  0 part  
  └─md1           9:1    0    4G  0 raid0 
    └─md3         9:3    0    4G  0 raid1 /data
sr0              11:0    1  9.5G  0 rom   

在RAID中,使用命令mdadm下的manage进行管理

mdadm  -S /dev/md*                 来停止相关阵列

mdadm  /dev/md*   -f /dev/sd*      来模拟硬盘故障
    --manage      --fail
mdadm  /dev/md*   -r /dev/sd*      来对相应磁盘进行删除
    --manage      --remove
mdadm  /dev/md*   -a /dev/sd*      来向目标阵列添加磁盘
    --manage      --add
mdadm --grow /dev/md0 --size=max   来向磁盘阵列扩容

如果目标阵列的设备已满,则添加的磁盘会成为spare备用,或使用以上命令替换阵列中的一块磁盘设备。阵列只有在正常状态下,才能扩容,降级及重构时不允许扩容。对于 raid5 来说,只能增加成员盘,不能减少。而对于 raid1 来说,可以增加成员盘,也可以减少。

*对RAID5的md5实现LVM

mdadm -Cv /dev/md5 -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1
#创建RAID5阵列,磁盘设备sdb1,sdc1,sdd1,sde1作为spare

mdadm -D /dev/md5
#查看RAID5进行验证
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


pvcreate /dev/md5
#创建物理卷

pvs
#查看创建的物理卷
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/md5   RALV   lvm2 a--    3.96g 988.00m
  /dev/sda2  centos lvm2 a--  <19.51g      0 
  [unknown]  centos lvm2 a-m  <20.00g <20.00g


vgcreate RALV /dev/md5
#创建卷组RALV

vgs
#查看卷组信息
VG     #PV #LV #SN Attr   VSize  VFree  
  RALV     1   1   0 wz--n-  3.96g 988.00m
  centos   2   2   0 wz-pn- 39.50g <20.00g


lvcreate -L3G -n1 RALV 
#创建逻辑卷 1

lvs
#查看逻辑卷
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  1    RALV   -wi-a-----   3.00g                                                    
  root centos -wi-ao---- <18.73g                                                    
  swap centos -wi-ao---- 800.00m 

 查看挂载是否成功

文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  470M     0  470M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  8.5M  478M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        19G  8.1G   11G   44% /
/dev/sda1               xfs       497M  165M  333M   34% /boot
tmpfs                   tmpfs      98M   12K   98M    1% /run/user/42
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/RALV-1      ext4      2.9G  9.0M  2.8G    1% /LVM

 我们向/LVM中写入数据试一试,发现一切正常

[root@lnx1 LVM]# vi test
[root@lnx1 LVM]# ll
总用量 20
drwx------. 2 root root 16384 7月   6 17:13 lost+found
-rw-r--r--. 1 root root   365 7月   6 17:17 test

我们模拟一下当阵列中一块磁盘出现故障时会发生什么,使用mdadm的fail选项

mdadm  /dev/md5  -f /dev/sdb1

 我们发现,sdb1故障时,spare 设备显示为0 ,我们设置的热备组磁盘sde1补上了位置,起到了保护数据的作用

    Update Time : Wed Jul  6 17:21:41 2022
             State : clean 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : lnx1:5  (local to host lnx1)
              UUID : 9f1f81fc:f52d4e17:5ea5f494:42aa9071
            Events : 37

    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

       0       8       17        -      faulty   /dev/sdb1

而sdb1损坏后,我们要把他移除出去:

mdadm  /dev/md5 -r /dev/sdb1

前面我们提到过,RAID5只允许损坏一块磁盘,让我们试试在没有热备组设备的情况下,损坏一块磁盘设备会造成什么后果:

mdadm /dev/md5 -f /dev/sdc1   
mdadm /dev/md5 -f /dev/sdd1
#再拟sbc1,sdd1磁盘的损坏

 此时的RAID5阵列情况:

Update Time : Wed Jul  6 17:31:03 2022
             State : clean, FAILED 
    Active Devices : 1
   Working Devices : 1
    Failed Devices : 3
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

我们尝试进入/LVM进行io操作

[root@lnx1 LVM]# ls
lost+found  test
[root@lnx1 LVM]# cat test
jvbfdvbjdvbjfvbfdbvdfnbjfnbjfnbjgbjnbjnjdnjbdfbsnvjdfbjkdfnvlknvkdsnvjdfnvkldvjk bjfnvlfd jfdnb kfnvkfnb dljgn slkn ldlf/n dln l/dfnb ldlsnbldfnvkarnkanrfjbnfajnb dlf'nbjrnjr ngoenr oreorgjksbvkjdsf gljkrnkdngjdnl;samflkerabjarnkangvlkndfjvn jfaonfgkjfb kdf j.asn fkjdb vker vkda ndf vk vker avnera vknea vkn vkjera kjerav jrkbfenfiebvjerblknfljabvkjaebjeravnjarnv
[root@lnx1 LVM]# touch kkk
touch: 无法创建"kkk": 只读文件系统

这时会发现,文件系统受损成了只读文件系统

总结

RAID和LVM的组合使用与单独创建raid5和lvm的步骤是有区别的
当一块硬盘损坏后要及时添加新的进来
 

你可能感兴趣的:(linux基础,大数据)