RAID磁盘阵列

RAID磁盘阵列

一、概念

首先我们来了解一下RAID这个概念

​ 1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每年可提升30%-50%但硬盘仅提升7%,渐渐的已经成为计算机整体性能的瓶颈,并且为了避免硬盘的突然损坏导致数据丢失还加入了冗余备份机制。

​ RAID的早先设计理念为”redundant array of Inexpensive disks“即不贵的硬盘组,而现在的定义是”Redundant Array ofIndependent Disks“即独立的硬盘组,作用是防止硬盘物理损坏以及增加存储设备的吞吐量。RAID常见的组合有01510

RAID0:需要至少两块(含)硬盘,可以有效的提高硬盘的性能和吞吐量,但没有数据的冗余和错误修复能力。

1835828-20191021154605887-754265149

​ 将多块硬盘通过硬件或软件的方式串联在一起,成为一个大的卷集,将数据依次写入到各个硬盘中,这样性能会极大提升,但若任意一块硬盘故障则整个系统的数据都会受到破坏。

RAID1:需要至少两块(含)硬盘,可以有效的提高数据资料的安全性和可修复性,但成本却提高了。

1835828-20191021154620781-167669196

​ 实现原来是在数据写入硬盘时也会在另外一块闲置的硬盘上生成镜像文件,在不影响性能的情况下最大限度保证数据资料的可靠性,只要在一对镜像盘中还有一块硬盘可以使用,那么数据也不会丢失,具有很好的硬盘冗余能力,虽然对数据来讲绝对的安全,但成本却明显增加,磁盘利用率仅为50%。

RAID5:需要至少三块(含)硬盘,兼顾存储性能、数据安全和储存成本。

1835828-20191021154641824-1302261905

​ 如上图所示”parity”块中保存的是其他硬盘数据的奇偶校验信息(并非其他硬盘的数据),以数据的奇偶校验信息来保证数据的安全,RAID5不以单独的硬盘来存放数据的奇偶校验信息,而是保存在各个磁盘上。

​ 这样当任何一个硬盘损坏都可以根据其他硬盘上的奇偶校验信息来尝试重建损坏的数据,性能也很高,兼顾了存储性能、数据安全和存储成本,可以看作是RAID0与RAID1的折中方案。

RAID 6:至少需要4块硬盘,使用数据条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,并通过分布式奇偶校验和双重奇偶校验实现数据的冗余备份。数据和奇偶校验信息被组织成数据块,其中奇偶校验信息被分布式存储在不同的驱动器上,并通过双重奇偶校验提供更高的数据冗余性。当写入数据时,奇偶校验信息也会被更新。如果其中两个驱动器发生故障,系统可以通过重新计算奇偶校验信息来恢复丢失的数据。这种方式可以同时提供性能增强和更高级别的数据冗余。

640

RAID10:需要至少四块(含)硬盘,兼具速度和安全性,但成本很高。

1835828-20191021154701249-175346744

​ 继承了RAID0的快速与RAID1的安全,RAID1在这里提供了冗余备份的阵列,而RAID0则负责数据的读写阵列。

因这种结构的成本高,一般用于存放要求速度与差错控制的数据。

二、实际操作

2.1 添加磁盘

名称结构:

1835828-20191021174042815-1586077860

给虚拟机添加5个硬盘,注意要添加五个。因为sda已经被虚拟机本身占用。

微信图片_20240228162644

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0               2:0    1    4K  0 disk 
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   59G  0 part 
  ├─centos-root 253:0    0   55G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk 
sdc               8:32   0   10G  0 disk 
sdd               8:48   0   10G  0 disk 
sde               8:64   0   10G  0 disk 
sdf               8:80   0   10G  0 disk 
sr0              11:0    1 1024M  0 rom

2.2 对所有磁盘分区

(我试过直接对磁盘做raid也可以,但是网上说raid是针对分区来进行的),以sdb为例:

fdisk /dev/sdb-->n-->回车-->回车-->回车-->回车-->t-->fd-->w

[root@localhost ~]# fdisk /dev/sdb 
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xfa7b363c 创建新的 DOS 磁盘标签。

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

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

完成之后文件系统类型是linux,需要改成raid

Snipaste_2024-03-01_16-56-37

此时先别退出,使用t命令修改分区类型:

Snipaste_2024-03-01_17-00-54

Snipaste_2024-03-01_17-03-59

Snipaste_2024-03-01_17-07-22

依次对所有磁盘都做该操作。

Snipaste_2024-03-01_17-25-56

2.3 安装raid管理工具

yum install -y mdadm

2.3 raid0

2.3.1 创建raid0

在/dev/md0目录下将sdb1与sdc1两块磁盘创建为RAID级别为0,磁盘数为2的RAID0阵列:

mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdc1

[root@guojie ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdc1
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

2.3.2 查看

查看raid 0:cat /proc/mdstat

[root@guojie ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdc1[1] sdb1[0]
      20951040 blocks super 1.2 512k chunks

unused devices: <none>

查看raid0详细信息:mdadm -D /dev/md0

[root@guojie ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Wed Mar 13 12:41:44 2024
        Raid Level : raid0
        Array Size : 20951040 (19.98 GiB 21.45 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Wed Mar 13 12:41:44 2024
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : none

              Name : guojie:0  (local to host guojie)
              UUID : 167fee8a:49713ce2:0d0c2c77:712ed679
            Events : 0

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

2.3.3 格式化分区

[root@guojie ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1310720 inodes, 5237760 blocks
261888 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成


[root@guojie ~]# blkid /dev/md0
/dev/md0: UUID="dfaab706-1249-406d-b733-582e0f50d3e0" TYPE="ext4"

2.3.4 挂载

[root@guojie ~]# mkdir /data
[root@guojie ~]# mount /dev/md0 /data/
[root@guojie ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  9.1M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        35G  1.5G   34G    5% /
/dev/sda1               xfs      1014M  150M  865M   15% /boot
tmpfs                   tmpfs     379M     0  379M    0% /run/user/0
/dev/md0                ext4       20G   45M   19G    1% /data

2.3.5停止raid阵列

#卸载磁盘、有可能会提示目标忙
[root@guojie data]# umount /dev/md0
umount: /data:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)
#安装lsof查看哪个进程再占用
[root@guojie data]# yum -y install lsof
# 查看占用线程
[root@guojie data]# lsof /data
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash     8193 root  cwd    DIR    9,0       41 1024 /data
lsof    23600 root  cwd    DIR    9,0       41 1024 /data
lsof    23601 root  cwd    DIR    9,0       41 1024 /data
# 这里是因为我自己处于该目录下,退出即可,如果你是其它进程,需要退出它
#停止,停止之后/dev/md0将释放
[root@guojie ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0


#重新组合(并启动)RAID 阵列,这个命令只能使用在之前组合过的raid磁盘上。
[root@guojie ~]# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1
mdadm: /dev/md0 has been started with 2 drives.
#重新组合后之前的数据都还在。

2.4 raid1

2.4.1 创建raid1

mdadm -C -v /dev/md1 -l 1 -n 2 /dev/sdb1 /dev/sdc1 -x 1 /dev/sdd1


[root@guojie ~]# mdadm -C -v /dev/md1 -l 1 -n 2 /dev/sdb1 /dev/sdc1 -x 1 /dev/sdd1
mdadm: /dev/sdb1 appears to be part of a raid array:
       level=raid0 devices=2 ctime=Wed Mar 13 12:41:44 2024
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: /dev/sdc1 appears to be part of a raid array:
       level=raid0 devices=2 ctime=Wed Mar 13 12:41:44 2024
mdadm: size set to 10475520K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

# 从输出中我们可以看出,/dev/sdb1 和 /dev/sdc1 似乎已经是另一个 RAID 数组的一部分。在尝试将它们加入新的 RAID 数组之前,你需要先确认这两个设备是否确实要从原来的 RAID 数组中移除,或者你是否误将它们识别为可用于新数组的设备。如果你确定要继续,并希望覆盖或删除它们之前所属的 RAID 数组,你可以回答 y 来继续创建新的数组。但是,请注意这样做可能会导致数据丢失,所以在进行任何操作之前,确保你已经备份了重要数据。

2.4.2 查看raid状态

[root@guojie ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdd1[2](S) sdc1[1] sdb1[0]
      10475520 blocks super 1.2 [2/2] [UU]

unused devices: <none>
[root@guojie ~]# mdadm -D /dev/md1
/dev/md1:
           Version : 1.2
     Creation Time : Wed Mar 13 12:48:37 2024
        Raid Level : raid1
        Array Size : 10475520 (9.99 GiB 10.73 GB)
     Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Wed Mar 13 12:49:30 2024
             State : clean
    Active Devices : 2 //正在使用的磁盘
   Working Devices : 3 //工作的磁盘
    Failed Devices : 0 //异常磁盘
     Spare Devices : 1 //备用磁盘

Consistency Policy : resync

              Name : guojie:1  (local to host guojie)
              UUID : 6136632b:6a379cb4:8c7d476c:65129c96
            Events : 17

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

       2       8       49        -      spare   /dev/sdd1

2.4.3 格式化并挂载

[root@guojie ~]# mkfs.xfs -f /dev/md1
Discarding blocks...Done.
meta-data=/dev/md1               isize=512    agcount=4, agsize=654720 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2618880, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@guojie ~]# blkid /dev/md1
/dev/md1: UUID="f95bc62c-daac-471e-8c93-c22ec8d7525c" TYPE="xfs"

[root@guojie ~]# mount /dev/md1 /data/

[root@guojie ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  9.1M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        35G  1.5G   34G    5% /
/dev/sda1               xfs      1014M  150M  865M   15% /boot
tmpfs                   tmpfs     379M     0  379M    0% /run/user/0
/dev/md1                xfs        10G   33M   10G    1% /data

2.4.4 模拟磁盘损坏

# 模拟磁盘/dev/sdb损坏
[root@guojie ~]# mdadm /dev/md1 -f /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md1

# 查看
[root@guojie ~]# mdadm -D /dev/md1
/dev/md1:
           Version : 1.2
     Creation Time : Wed Mar 13 12:48:37 2024
        Raid Level : raid1
        Array Size : 10475520 (9.99 GiB 10.73 GB)
     Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Wed Mar 13 13:04:02 2024
             State : clean, degraded, recovering
    Active Devices : 1 //正在使用的磁盘数量
   Working Devices : 2 //可用磁盘数量
    Failed Devices : 1 //异常磁盘数量
     Spare Devices : 1 //备用磁盘数量

Consistency Policy : resync

    Rebuild Status : 63% complete

              Name : guojie:1  (local to host guojie)
              UUID : 6136632b:6a379cb4:8c7d476c:65129c96
            Events : 29

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

       0       8       17        -      faulty   /dev/sdb1

有一块磁盘异常之后备用磁盘会自动替换异常的磁盘,等待几分钟再查看RAID1阵列的详细信息。重建进度如下:

Snipaste_2024-03-01_13-53-57

重建完成之后

Snipaste_2024-03-01_13-59-06

2.4.5 移除异常的磁盘

[root@guojie ~]# mdadm -r /dev/md1 /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md1

Snipaste_2024-03-01_14-02-34

2.4.6 添加新磁盘到raid1阵列中

[root@guojie ~]# mdadm -a /dev/md1 /dev/sdb1
mdadm: added /dev/sdb1

Snipaste_2024-03-13_13-14-22

注意:

  • 新增加的硬盘需要与原硬盘大小一致。
  • 如果原有阵列缺少工作磁盘(如raid1只有一块在工作,raid5只有2块在工作),这时新增加的磁盘直接变为工作磁盘,如果原有阵列工作正常,则新增加的磁盘为热备磁盘。

2.5 raid5

2.5.1 创建raid5

mdadm -C -v /dev/md5 -l 5 -n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1 -x 1 /dev/sde1

[root@guojie ~]# mdadm -C -v /dev/md5 -l 5 -n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1 -x 1 /dev/sde1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: super1.x cannot open /dev/sdb1: Device or resource busy
mdadm: ddf: Cannot use /dev/sdb1: Device or resource busy
mdadm: Cannot use /dev/sdb1: It is busy
mdadm: cannot open /dev/sdb1: Device or resource busy

#这里提示设备或资源繁忙,需要先把之前的raid解除
[root@guojie ~]# umount /dev/md1
[root@guojie ~]# mdadm -S /dev/md1
mdadm: stopped /dev/md1

#再来一次,ok
[root@guojie ~]# mdadm -C -v /dev/md5 -l 5 -n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1 -x 1 /dev/sde1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: /dev/sdb1 appears to be part of a raid array:
       level=raid1 devices=2 ctime=Wed Mar 13 12:48:37 2024
mdadm: /dev/sdc1 appears to be part of a raid array:
       level=raid1 devices=2 ctime=Wed Mar 13 12:48:37 2024
mdadm: /dev/sdd1 appears to be part of a raid array:
       level=raid1 devices=2 ctime=Wed Mar 13 12:48:37 2024
mdadm: size set to 10475520K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

2.5.2 查看raid状态

[root@guojie ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
      20951040 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

[root@guojie ~]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Wed Mar 13 13:25:22 2024
        Raid Level : raid5
        Array Size : 20951040 (19.98 GiB 21.45 GB)
     Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Mar 13 13:26:14 2024
             State : clean
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : guojie:5  (local to host guojie)
              UUID : abdb8c92:d5e1b83f:440fb946:ffd24053
            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

2.5.3 模拟磁盘损坏

#模拟/dev/sdb1损坏
[root@guojie ~]# mdadm -f /dev/md5 /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md5

#等待一会儿之后
[root@guojie ~]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Wed Mar 13 13:25:22 2024
        Raid Level : raid5
        Array Size : 20951040 (19.98 GiB 21.45 GB)
     Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Mar 13 13:30:25 2024
             State : clean //替换干净
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0 //备用磁盘为0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : guojie:5  (local to host guojie)
              UUID : abdb8c92:d5e1b83f:440fb946:ffd24053
            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

2.5.4 格式化并挂载

# 格式化
[root@guojie ~]# mkfs.xfs -f /dev/md5
meta-data=/dev/md5               isize=512    agcount=16, agsize=327296 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5236736, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

#查看挂载
[root@guojie ~]# mount /dev/md5 /data/
[root@guojie ~]# blkid /dev/md5
/dev/md5: UUID="105e1de8-4aa4-4334-9d3b-1e543cd5babe" TYPE="xfs"
[root@guojie ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  9.1M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        35G  1.5G   34G    5% /
/dev/sda1               xfs      1014M  150M  865M   15% /boot
tmpfs                   tmpfs     379M     0  379M    0% /run/user/0
/dev/md5                xfs        20G   33M   20G    1% /data

2.5.5停止阵列

[root@guojie ~]# umount /dev/md5
[root@guojie ~]# mdadm -S /dev/md5
mdadm: stopped /dev/md5

2.6 raid6

2.6.1 创建raid6

再添加一块磁盘(现在6块):

Snipaste_2024-03-13_13-47-48

一样对它分区:fdisk /dev/sdg-->n-->回车-->回车-->回车-->回车-->t-->fd-->w

Snipaste_2024-03-13_13-50-33

创建raid6:

mdadm -C -v /dev/md6 -l 6 -n 4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 -x 2 /dev/sdf1 /dev/sdg1

[root@guojie ~]# mdadm -C -v /dev/md6 -l 6 -n 4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 -x 2 /dev/sdf1 /dev/sdg1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: /dev/sdb1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Wed Mar 13 13:25:22 2024
mdadm: /dev/sdc1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Wed Mar 13 13:25:22 2024
mdadm: /dev/sdd1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Wed Mar 13 13:25:22 2024
mdadm: /dev/sde1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Wed Mar 13 13:25:22 2024
mdadm: size set to 10475520K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md6 started.

2.6.2查看RAID 6阵列信息

[root@guojie ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md6 : active raid6 sdg1[5](S) sdf1[4](S) sde1[3] sdd1[2] sdc1[1] sdb1[0]
      20951040 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]

unused devices: <none>


[root@guojie ~]# mdadm -D /dev/md6
/dev/md6:
           Version : 1.2
     Creation Time : Wed Mar 13 13:53:17 2024
        Raid Level : raid6
        Array Size : 20951040 (19.98 GiB 21.45 GB)
     Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
      Raid Devices : 4
     Total Devices : 6
       Persistence : Superblock is persistent

       Update Time : Wed Mar 13 13:54:10 2024
             State : clean
    Active Devices : 4
   Working Devices : 6
    Failed Devices : 0
     Spare Devices : 2

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : guojie:6  (local to host guojie)
              UUID : 7ae4a7ec:db47bd9e:a28c3190:29453456
            Events : 17

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

       4       8       81        -      spare   /dev/sdf1
       5       8       97        -      spare   /dev/sdg1


[root@guojie ~]# lsblk /dev/md6
NAME MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
md6    9:6    0  20G  0 raid6

2.6.3 模拟磁盘损坏(同时损坏两块)

# 损坏/dev/sdb1
[root@guojie ~]# mdadm -f /dev/md6 /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md6

#损坏/dev/sdc1
[root@guojie ~]# mdadm -f /dev/md6 /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md6


#等待一会儿之后
[root@guojie ~]# mdadm -D /dev/md6
/dev/md6:
           Version : 1.2
     Creation Time : Wed Mar 13 13:53:17 2024
        Raid Level : raid6
        Array Size : 20951040 (19.98 GiB 21.45 GB)
     Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
      Raid Devices : 4
     Total Devices : 6
       Persistence : Superblock is persistent

       Update Time : Wed Mar 13 13:58:29 2024
             State : clean
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 2
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : guojie:6  (local to host guojie)
              UUID : 7ae4a7ec:db47bd9e:a28c3190:29453456
            Events : 41

    Number   Major   Minor   RaidDevice State
       5       8       97        0      active sync   /dev/sdg1
       4       8       81        1      active sync   /dev/sdf1
       2       8       49        2      active sync   /dev/sdd1
       3       8       65        3      active sync   /dev/sde1

       0       8       17        -      faulty   /dev/sdb1
       1       8       33        -      faulty   /dev/sdc1

2.6.4 磁盘格式化挂载

[root@guojie ~]# mkfs.xfs -f /dev/md6
meta-data=/dev/md6               isize=512    agcount=16, agsize=327296 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5236736, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@guojie ~]# mount /dev/md6 /data/
[root@guojie ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  9.1M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        35G  1.5G   34G    5% /
/dev/sda1               xfs      1014M  150M  865M   15% /boot
tmpfs                   tmpfs     379M     0  379M    0% /run/user/0
/dev/md6                xfs        20G   33M   20G    1% /data

2.6.5 停止阵列

[root@guojie ~]# umount /dev/md6
[root@guojie ~]# mdadm -S /dev/md6
mdadm: stopped /dev/md6

2.7 raid10

raid其实是raid1和raid0组成的。

2.7.1 创建两个raid1阵列

# 创建第一个raid1整列/dev/md1
[root@guojie ~]# mdadm -C -v /dev/md1 -l 1 -n 2 /dev/sdb1 /dev/sdc1
mdadm: /dev/sdb1 appears to be part of a raid array:
       level=raid6 devices=4 ctime=Wed Mar 13 13:53:17 2024
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: /dev/sdc1 appears to be part of a raid array:
       level=raid6 devices=4 ctime=Wed Mar 13 13:53:17 2024
mdadm: size set to 10475520K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.


# 创建第二个阵列raid1整列/dev/md0
[root@guojie ~]# mdadm -C -v /dev/md0 -l 1 -n 2 /dev/sdd1 /dev/sde1
mdadm: /dev/sdd1 appears to be part of a raid array:
       level=raid6 devices=4 ctime=Wed Mar 13 13:53:17 2024
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: /dev/sde1 appears to be part of a raid array:
       level=raid6 devices=4 ctime=Wed Mar 13 13:53:17 2024
mdadm: size set to 10475520K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

2.7.2 查看两个raid1阵列

[root@guojie ~]# mdadm -D /dev/md1
/dev/md1:
           Version : 1.2
     Creation Time : Wed Mar 13 14:05:20 2024
        Raid Level : raid1
        Array Size : 10475520 (9.99 GiB 10.73 GB)
     Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Wed Mar 13 14:06:12 2024
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : guojie:1  (local to host guojie)
              UUID : 5d45f5b0:5308c46e:599b067d:af1fa9ec
            Events : 17

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


[root@guojie ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Wed Mar 13 14:07:22 2024
        Raid Level : raid1
        Array Size : 10475520 (9.99 GiB 10.73 GB)
     Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Wed Mar 13 14:08:14 2024
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : guojie:0  (local to host guojie)
              UUID : 386e4b21:2ed93a98:dc81a439:04a8e980
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       49        0      active sync   /dev/sdd1
       1       8       65        1      active sync   /dev/sde1

2.7.3 创建raid 1+0阵列

[root@guojie ~]# mdadm -C -v /dev/md10 -l 0 -n 2 /dev/md1 /dev/md0
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.

2.7.4查看RAID 1+0阵列信息

[root@guojie ~]# mdadm -D /dev/md10
/dev/md10:
           Version : 1.2
     Creation Time : Wed Mar 13 14:09:59 2024
        Raid Level : raid0
        Array Size : 20932608 (19.96 GiB 21.43 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Wed Mar 13 14:09:59 2024
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : none

              Name : guojie:10  (local to host guojie)
              UUID : e4b394a3:9ab0d585:ca42603b:ac727058
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       9        1        0      active sync   /dev/md1
       1       9        0        1      active sync   /dev/md0

2.7.5 磁盘挂载

[root@guojie ~]# mkfs.xfs -f /dev/md10
Discarding blocks...Done.
meta-data=/dev/md10              isize=512    agcount=16, agsize=327040 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5232640, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none 


[root@guojie ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  9.1M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        35G  1.5G   34G    5% /
/dev/sda1               xfs      1014M  150M  865M   15% /boot
tmpfs                   tmpfs     379M     0  379M    0% /run/user/0
/dev/md10               xfs        20G   33M   20G    1% /data

2.7.6 停止阵列

[root@guojie ~]# umount /dev/md10
[root@guojie ~]# mdadm -S /dev/md10
mdadm: stopped /dev/md10
[root@guojie ~]# mdadm -S /dev/md1
mdadm: stopped /dev/md1
[root@guojie ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0

三、总结选择

RAID级别 最小磁盘数 容错能力 磁盘空间开销 读取速度 写入速度 硬件成本 适用场景
RAID 0 2 0% 视频编辑和处理、大型数据库应用、实时流媒体
RAID 1 2 单个磁盘 50% 关键数据库存储、数据库服务器、文件服务器
RAID 5 3 单个磁盘 1 / N 文件服务器、数据库服务器、小型企业环境
RAID 6 4 两个磁盘 2 / N 大容量储存系统、长时间运行的应用程序、虚拟化环境
RAID 10 4 多个磁盘 50% 数据库服务器、虚拟化环境、关键业务应用
posted @ 2024-11-22 14:43  国杰响当当  阅读(174)  评论(0)    收藏  举报