目录

1. 创建RAID准备

2. 创建RAID 0

2.1. 创建磁盘阵列

(1)创建磁盘阵列

(2)查看磁盘阵列信息

(3)挂载文件系统

(4)保存RAID信息

(5)开机自动挂载RAID

2.2. 添加新设备到磁盘阵列

2.3. 删除磁盘阵列

(1)卸载挂载的目录

(2)停止磁盘阵列的活动

(3)清除超级块

(4)清除对磁盘阵列的引用

(5)更新RAID信息

3. 创建RAID 1

3.1. 创建磁盘阵列

(1)创建磁盘阵列

  (2)查看磁盘阵列信息

(3)挂载文件系统

(4)保存RAID信息

(5)开机自动挂载RAID

3.2. 更换磁盘阵列中的硬盘

(1)移除故障硬盘

(2)添加新硬盘

 (3)更新磁盘阵列

4. 创建RAID 5

4.1. 创建磁盘阵列

(1)创建磁盘阵列

(2)查看磁盘阵列信息

(3)挂载文件系统

(4)保存RAID信息

(5)开机自动挂载RAID

4.2. 更换磁盘阵列中的硬盘

(1)移除故障硬盘

(2)添加新硬盘

 (3)更新磁盘阵列

4.3. 删除磁盘阵列

(1)卸载挂载的目录

(2)停止磁盘阵列的活动

(3)清除超级块

(4)清除对磁盘阵列的引用

(5)更新RAID信息

5. 创建RAID 10

5.1. 创建磁盘阵列

(1)创建磁盘阵列

(2)查看磁盘阵列信息

(3)挂载文件系统

(4)保存RAID信息

(5)开机自动挂载RAID

5.2. 更换磁盘阵列中的硬盘

(1)移除故障硬盘

(2)添加新硬盘

 (3)更新磁盘阵列


1. 创建RAID准备

       在Linux中,使用mdadm工具来创建和管理RAID, mdadm是Multiple Devices Admin的缩写(简称MD),它是Linux下的一款标准的软件 RAID 管理工具。

       首先,你需要确保Linux系统中已经安装了 mdadm。在大多数基于 Debian 的系统(如 Ubuntu)中,可以使用以下命令安装:

                              sudo apt-get install mdadm

       利用VMWare Workstation或者VirtualBox中创建一个虚拟机,在该虚拟机中安装Ubuntu 64位操作系统,并创建7块虚拟硬盘:sba,sbb,sbc,sbd, sbe, sbf, sbg,挂载到该虚拟机中,其中,sba为系统盘,sbb,sbc, sbd, sbe, sbf, sbg作为创建RAID使用,如图1所示。

图1. 虚拟机的配置

2. 创建RAID 0

       RAID 0 是一种简单的、无数据校验的数据条带化技术。一个RAID 0包含至少2个成员盘,RAID 0 将所在磁盘条带化后组成大容量的存储空间,数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问,如图2所示。

图2. RAID 0架构示意图

2.1. 创建磁盘阵列

(1)创建磁盘阵列

       使用两个硬盘:/dev/sdb和/dev/sdc,创建一个名为/dev/md0的RAID 0磁盘阵列。

       sudo mdadm - - create  - -verbose /dev/md0 - -level=0  - -raid-devices=2 /dev/sdb /dev/sdc

       或者

       sudo mdadm -C /dev/md0 -ayes -l0 -n2 /dev/sd[b,c]

(2)查看磁盘阵列信息

  • 查看机器上所有磁盘阵列的信息:     

       cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid0 sdc[1] sdb[0]
      20953088 blocks super 1.2 512k chunks
      
unused devices: <none>

       输出显示只有一个RAID 0磁盘阵列。

  • 查看磁盘阵列的详细信息:

        sudo mdadm --detail /dev/md0

       或者

       sudo mdadm -D /dev/md0

/dev/md0:
           Version : 1.2
     Creation Time : Sat May  4 15:35:37 2024
        Raid Level : raid0
        Array Size : 20953088 (19.98 GiB 21.46 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Sat May  4 15:35:37 2024
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

            Layout : -unknown-
        Chunk Size : 512K

Consistency Policy : none

              Name : myvm1:0  (local to host myvm1)
              UUID : 4ffd69e7:c9ba4b67:8f78005c:d379391f
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc

       输出显示 RAID 级别、阵列大小、各个部分的运行状况、阵列的UUID等信息。

  • 查看磁盘阵列的摘要:

       sudo mdadm -Q /dev/md0 

/dev/md0: 19.98GiB raid0 2 devices, 0 spares. Use mdadm --detail for more detail.
  • 查看磁盘阵列中单个设备详细信息:

       sudo mdadm -E /dev/sdb

       sudo mdadm -E /dev/sdc

       或者

       sudo mdadm --examine /dev/sdb

       sudo mdadm --examine /dev/sdc

  • 查看单个磁盘阵列中单个设备摘要:

       sudo mdadm -Q /dev/sdb

       sudo mdadm -Q /dev/sdc

(3)挂载文件系统

  • 在磁盘阵列上创建文件系统

       sudo mkfs  -t ext4 /dev/md0

       或者

       sudo mkfs.ext4 -F /dev/md0

  • 在文件系统上创建挂载点文件夹(/mnt/md0)

       sudo mkdir  -p /mnt /md0

  • 将磁盘阵列(/dev/md0)挂载到所创建文件夹(/mnt/md0)上

       sudo mount /dev/md0 /mnt/md0  

  • 检查是否有新的可用空间

       df -h –x devtmpfs –x tmpfs

(4)保存RAID信息

       必须更改 /etc/mdadm/mdadm.conf 文件以确保该列表在启动时自动重新组装。通过以下命令序列自动搜索当前阵列、连接文件并更新初始RAM文件系统:

       sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

       sudo update-initramfs -u

(5)开机自动挂载RAID

      为了在启动时自动挂载,请在可用的etc/fstab文件中添加新的文件系统挂载选项:

      echo ‘/dev/md0 /mnt/md0 ext4 defaults, nofail, discard 0 0’ | sudo tee -a /etc/fstab

      现在每次启动都可以自动添加所创建的RAID 0磁盘阵列并安装它。

2.2. 添加新设备到磁盘阵列

       在磁盘阵列/dev/md0中增加一个硬盘/dev/sdd,磁盘阵列中的设备数量由2变为3。

       sudo mdadm --grow /dev/md0 --raid-devices=3 --add /dev/sdd

      参看机器上的磁盘阵列信息:

      cat /proc/mdstat

Personalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid0 sdd[3] sdc[1] sdb[0]
      31429632 blocks super 1.2 512k chunks
      
unused devices: <none>

      输出显示RAID 0磁盘阵列中的设备数量为3个:/dev/sdb, /dev/sdc和/dev/sdd。

      调整文件系统的大小以使用额外的空间:

      sudo resize2fs /dev/md0

resize2fs 1.45.5 (07-Jan-2020)
/dev/md0 上的文件系统已被挂载于 /mnt/md0;需要进行在线调整大小
old_desc_blocks = 3, new_desc_blocks = 4
/dev/md0 上的文件系统现在为 7857408 个块(每块 4k)。

2.3. 删除磁盘阵列

(1)卸载挂载的目录

       sudo umount /mnt/md0

       其中,/mnt/md0为RAID 0磁盘阵列所挂载的目录。

(2)停止磁盘阵列的活动

      sudo mdadm --stop /dev/md0

      或者

      sudo mdadm -S /dev/md0

mdadm: stopped /dev/md0

(3)清除超级块

  • 查看磁盘阵列中是否存在超级块:

       lsblk --fs

sda                                                                   
├─sda1
│    vfat         0069-2021                               511M     0% /boot/efi
├─sda2
│                                                                     
└─sda5
     ext4         a30b6613-548e-444e-858e-642c58dfc676     33G    27% /

sdb  linux_ myvm1:0
                  cf4a5e7e-aa7b-2778-fa93-383dfc23a0ac                
sdc  linux_ myvm1:0
                  cf4a5e7e-aa7b-2778-fa93-383dfc23a0ac                
sdd  linux_ myvm1:0
                  cf4a5e7e-aa7b-2778-fa93-383dfc23a0ac    
           
sde                                                                   
sdf                                                                   
sdg                                                                   
sr0  iso966 Ubuntu 20.04.1 LTS amd64

       红色输出信息说明存在超级快。

  • 清除磁盘阵列的超级块信息:

       sudo mdadm - -zero-superblock  /dev/sbb

       sudo mdadm - -zero-superblock  /dev/sbc

       sudo mdadm - -zero-superblock  /dev/sbd

       或者

       sudo mdadm --zero-superblock /dev/sdb /dev/sdc /dev/sdd

(4)清除对磁盘阵列的引用

  • 删除或注释掉 /etc/fstab文件中对磁盘阵列的任何引用。

        首先,打开/etc/fstab文件:

        sudo nano /etc/fstab

        然后,在/etc/fstab文件中注释或删除下面对对磁盘阵列的引用语句(“#”为注释):

...

# /dev/md0 /mnt/md0 ext4 defaults, nofail,discard 0 0

        最后,保存并关闭文件。

  • 删除或注释掉/etc/mdadm/mdadm.conf文件对磁盘阵列的任何引用.

       首先,打开/etc/mdadm/mdadm.conf文件:

       sudo nano /etc/mdadm/mdadm.conf

       然后,在/etc/mdadm/mdadm.conf文件注释或删除对磁盘阵列的引用语句(“#”为注释):

...

# ARRAY /dev/md0 metadata=1.2 name=myvm1:0 UUID=cf4a5e7e:aa7b2778:fa93383d:fc23a0ac

       最后,保存并关闭文件。

(5)更新RAID信息

       sudo update-initramfs -u

update-initramfs: Generating /boot/initrd.img-5.15.0-105-generic

3. 创建RAID 1

       RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘,当数据写入到一个硬盘上时,数据的副本会同时存储在镜像硬盘上。一个RAID 1组存储的数据量只是单个硬盘的容量,另一硬盘保存的是数据的副本,相当于每一个字节的数据存储占用了两个字节的硬盘空间,所以说两个硬盘组成的RAID 1的空间利用率是50%,如图3所示。

图3. RAID 1架构示意图

3.1. 创建磁盘阵列

(1)创建磁盘阵列

      使用两个硬盘:/dev/sdf和/dev/sdg,创建一个名为/dev/md1的RAID 1磁盘阵列。

       sudo mdadm - - create  - -verbose /dev/md1 - -level=1  - -raid-devices=2 /dev/sdf /dev/sdg

       或者

       sudo mdadm -C /dev/md1 -ayes -l1 -n2 /dev/sd[f,g]

  (2)查看磁盘阵列信息

  • 查看机器上所有磁盘阵列的信息:     

       cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : active raid1 sdg[1] sdf[0]
      10476544 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

       输出显示系统只有一个RAID 1磁盘阵列。

  • 查看单个磁盘阵列的详细信息:

       sudo mdadm --detail /dev/md1

       或者

       sudo mdadm -D /dev/md1

dev/md1:
           Version : 1.2
     Creation Time : Sun May  5 14:29:51 2024
        Raid Level : raid1
        Array Size : 10476544 (9.99 GiB 10.73 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Sun May  5 14:30:43 2024
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : myvm1:1  (local to host myvm1)
              UUID : 254b4b71:1ab318a1:54677370:c7e5f4a1
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       80        0      active sync   /dev/sdf
       1       8       96        1      active sync   /dev/sdg

输出显示 RAID 级别、阵列大小、各个部分的运行状况、阵列的UUID等信息。

(3)挂载文件系统

  • 在磁盘阵列上创建文件系统

       sudo mkfs  -t ext4 /dev/md1

       或者

       sudo mkfs.ext4 -F /dev/md1

mke2fs 1.45.5 (07-Jan-2020)
创建含有 2619136 个块(每块 4k)和 655360 个inode的文件系统
文件系统UUID:c44a7b6b-caf7-44cb-af5e-43d503328a12
超级块的备份存储于下列块: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

正在分配组表: 完成                            
正在写入inode表: 完成                            
创建日志(16384 个块) 完成
写入超级块和文件系统账户统计信息: 已完成

  • 在文件系统上创建挂载点目录(/mnt/md1)

       sudo mkdir  -p /mnt /md1

  • 将磁盘阵列(/dev/md1)挂载到所创建目录(/mnt/md1)上

       sudo mount /dev/md1 /mnt/md1  

  • 检查是否有新的可用空间

       df -h –x devtmpfs –x tmpfs

文件系统        容量  已用  可用 已用% 挂载点
/dev/sda5        49G   14G   33G   29% /
......
/dev/sda1       511M  4.0K  511M    1% /boot/efi
/dev/sr0        2.6G  2.6G     0  100% /media/myvm1/Ubuntu 20.04.1 LTS amd64

/dev/md1        9.8G   24K  9.3G    1% /mnt/md1

(4)保存RAID信息

       必须更改 /etc/mdadm/mdadm.conf 文件以确保该列表在启动时自动重新组装。通过下面的命令自动搜索当前阵列、连接文件并更新初始RAM文件系统:

       sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

ARRAY /dev/md1 metadata=1.2 name=myvm1:1 UUID=254b4b71:1ab318a1:54677370:c7e5f4a1

      sudo update-initramfs -u

update-initramfs: Generating /boot/initrd.img-5.15.0-105-generic

(5)开机自动挂载RAID

       为了在启动时自动挂载,请在可用的etc/fstab文件中添加新的文件系统挂载选项:

      echo ‘/dev/md1 /mnt/md1 ext4 defaults, nofail, discard 0 0’ | sudo tee -a /etc/fstab     

/dev/md1 /mnt/md1 ext4 defaults, nofail,discard 0 0

      现在每次启动都可以自动添加所创建的RAID 1磁盘阵列并安装它。

3.2. 更换磁盘阵列中的硬盘

(1)移除故障硬盘

       如果出现故障或需要更换硬盘,有时需要从磁盘阵列中移除硬盘。对于要删除的设备,必须首先将其标记为“失败”。可以使用mdadm --detail命令检查是否有失败的设备:

       sudo mdadm --detail /dev/md1

     如果要移除没有问题的硬盘,可以使用--fail选项手动将其标记为失败。下面的命令将硬盘/dev/sdf标记为失败:

       sudo mdadm --manage /dev/md0 --fail /dev/sdf       

mdadm: set /dev/sdf faulty in /dev/md1

     如果查看mdadm --detail的输出,可以注意到硬盘/dev/sdf已被标记为故障。

       sudo mdadm --detail /dev/md1

/dev/md1:
           Version : 1.2
     Creation Time : Sun May  5 14:29:51 2024
        Raid Level : raid1
        Array Size : 10476544 (9.99 GiB 10.73 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Sun May  5 15:51:02 2024
             State : clean, degraded 
    Active Devices : 1
   Working Devices : 1
    Failed Devices : 1
     Spare Devices : 0

Consistency Policy : resync

              Name : myvm1:1  (local to host myvm1)
              UUID : 254b4b71:1ab318a1:54677370:c7e5f4a1
            Events : 21

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       96        1      active sync   /dev/sdg

       0       8       80        -      faulty   /dev/sdf

        将出现故障的硬盘从RAID 1磁盘阵列中移除:

        sudo mdadm --manage /dev/md1 --remove /dev/sdf

mdadm: hot removed /dev/sdf from /dev/md1

(2)添加新硬盘

         接下来,我们增加新的硬盘到RAID 1磁盘阵列:

         sudo mdadm --manage /dev/md1 --add /dev/sde

mdadm: added /dev/sde

          查看RAID 1磁盘阵列的信息,

          sudo mdadm --detail /dev/md1

/dev/md1:
           Version : 1.2
     Creation Time : Sun May  5 14:29:51 2024
        Raid Level : raid1
        Array Size : 10476544 (9.99 GiB 10.73 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Sun May  5 16:10:49 2024
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : myvm1:1  (local to host myvm1)
              UUID : 254b4b71:1ab318a1:54677370:c7e5f4a1
            Events : 41

    Number   Major   Minor   RaidDevice State
       2       8       64        0      active sync   /dev/sde
       1       8       96        1      active sync   /dev/sdg

 (3)更新磁盘阵列

       重新将磁盘阵列(/dev/md1)挂载到目录(/mnt/md1)加上

       sudo mount /dev/md1 /mnt/md1  

       更新initramfs:

       sudo update-initramfs -u

update-initramfs: Generating /boot/initrd.img-5.15.0-105-generic

4. 创建RAID 5

        RAID 5是一种旋转奇偶校验独立存取的阵列方式,它至少需要三块硬盘,其架构如图4所示。RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。

图4. RAID 5架构示意图

4.1. 创建磁盘阵列

(1)创建磁盘阵列

       使用三个硬盘:/dev/sdb、/dev/sdc和/dev/sdd,创建一个名为/dev/md5的RAID 5磁盘阵列。         sudo mdadm - - create  - -verbose /dev/md5 - -level=5  - -raid-devices=3 /dev/sdb              /dev/sdc /dev/sdd

       或者

       sudo mdadm -C /dev/md5 -ayes -l5 -n3 /dev/sd[b,c, d]

(2)查看磁盘阵列信息

  • 查看机器上所有磁盘阵列的信息:     

      cat /proc/mdstat 

md5 : active raid5 sdd[3] sdc[1] sdb[0]
      20953088 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      
md1 : active raid1 sdg[1] sde[2]
      10476544 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

     输出显示系统有两个磁盘阵列,一个是刚刚创建的RAID 5磁盘阵列,另一个是上一节创建的RAID 1磁盘阵列。

  • 查看RAID 5磁盘阵列信息:

       sudo mdadm --detail /dev/md5

/dev/md5:
           Version : 1.2
     Creation Time : Sun May  5 18:38:30 2024
        Raid Level : raid5
        Array Size : 20953088 (19.98 GiB 21.46 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 3
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Sun May  5 18:39:22 2024
             State : clean 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : myvm1:5  (local to host myvm1)
              UUID : 168f7d01:787aa7fc:74a95b58:3471d0a7
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd

(3)挂载文件系统

  • 在磁盘阵列上创建文件系统

       sudo mkfs  -t ext4 /dev/md5

       或者

       sudo mkfs.ext4 -F /dev/md5

mke2fs 1.45.5 (07-Jan-2020)
创建含有 5238272 个块(每块 4k)和 1310720 个inode的文件系统
文件系统UUID:a139c695-9c6a-4b2e-bf04-c28dbea7a3e1
超级块的备份存储于下列块: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000

正在分配组表: 完成                            
正在写入inode表: 完成                            
创建日志(32768 个块) 完成
写入超级块和文件系统账户统计信息: 已完成 

  • 在文件系统上创建挂载点目录(/mnt/md5)

       sudo mkdir  -p /mnt /md5

  • 将磁盘阵列(/dev/md5)挂载到所创建目录(/mnt/md5)上

       sudo mount /dev/md5 /mnt/md5  

  • 检查是否有新的可用空间

       df -h –x devtmpfs –x tmpfs

文件系统        容量  已用  可用 已用% 挂载点
/dev/sda5        49G   14G   33G   29% /
/dev/loop0      128K  128K     0  100% /snap/bare/5
/dev/loop1       56M   56M     0  100% /snap/core18/2812
/dev/loop2       56M   56M     0  100% /snap/core18/2823
/dev/loop3       64M   64M     0  100% /snap/core20/1852
/dev/loop5      219M  219M     0  100% /snap/gnome-3-34-1804/90
/dev/loop4       64M   64M     0  100% /snap/core20/2264
/dev/loop6      219M  219M     0  100% /snap/gnome-3-34-1804/93
/dev/loop7      350M  350M     0  100% /snap/gnome-3-38-2004/137
/dev/loop10      92M   92M     0  100% /snap/gtk-common-themes/1535
/dev/loop8      350M  350M     0  100% /snap/gnome-3-38-2004/143
/dev/loop9       66M   66M     0  100% /snap/gtk-common-themes/1519
/dev/loop11      55M   55M     0  100% /snap/snap-store/558
/dev/loop12      46M   46M     0  100% /snap/snap-store/638
/dev/loop13      50M   50M     0  100% /snap/snapd/18596
/dev/loop14      39M   39M     0  100% /snap/snapd/21465
/dev/sda1       511M  4.0K  511M    1% /boot/efi
/dev/sr0        2.6G  2.6G     0  100% /media/myvm1/Ubuntu 20.04.1 LTS amd64

/dev/md5         20G   24K   19G    1% /mnt/md5

(4)保存RAID信息

  • 打开/etc/mdadm/mdadm.conf 文件:

       sudo nano /etc/mdadm/mdadm.conf

  • 在/etc/mdadm/mdadm.conf文件末尾添加如下信息:    
ARRAY /dev/md5 metadata=1.2 name=myvm1:5 UUID=168f7d01:787aa7fc:74a95b58:3471d0a
  • 保存并关闭/etc/mdadm/mdadm.conf文件。
  • 更新initramfs:

            sudo update-initramfs -u

update-initramfs: Generating /boot/initrd.img-5.15.0-105-generic

(5)开机自动挂载RAID

       为了在启动时自动挂载,请在可用的etc/fstab文件中添加新的文件系统挂载选项:

      echo ‘/dev/md5 /mnt/md5 ext4 defaults, nofail, discard 0 0’ | sudo tee -a /etc/fstab     

/dev/md5 /mnt/md5 ext4 defaults, nofail,discard 0 0

      现在每次启动都可以自动添加所创建的RAID 5磁盘阵列并安装它。

4.2. 更换磁盘阵列中的硬盘

(1)移除故障硬盘

       如果出现故障或需要更换硬盘,有时需要从磁盘阵列中移除硬盘。对于要移除的硬盘,必须首先将其标记为“失败”。可以使用mdadm --detail命令检查是否有失败的设备:

       sudo mdadm --detail /dev/md5

     如果要移除没有问题的硬盘,可以使用--fail选项手动将其标记为失败。下面的命令将RIAD 5磁盘阵列md5中的硬盘/dev/sdb标记为失败:

       sudo mdadm --manage /dev/md5 --fail /dev/sdf       

mdadm: set /dev/sdb faulty in /dev/md5

     如果查看mdadm --detail的输出,可以注意到硬盘/dev/sdf已被标记为故障。

       sudo mdadm --detail /dev/md5

/dev/md5:
           Version : 1.2
     Creation Time : Sun May  5 18:38:30 2024
        Raid Level : raid5
        Array Size : 20953088 (19.98 GiB 21.46 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 3
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Mon May  6 15:13:26 2024
             State : clean, degraded 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 1
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : myvm1:5  (local to host myvm1)
              UUID : 168f7d01:787aa7fc:74a95b58:3471d0a7
            Events : 24

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty   /dev/sdb

将出现故障的硬盘从RAID 5磁盘阵列中移除:

        sudo mdadm --manage /dev/md5 --remove /dev/sdb

mdadm: hot removed /dev/sdb from /dev/md5

(2)添加新硬盘

         接下来,我们增加新的硬盘/dev/sdf到RAID 5磁盘阵列:

         sudo mdadm --manage /dev/md5 --add /dev/sdf

mdadm: added /dev/sd

          查看RAID 5磁盘阵列的信息,

          sudo mdadm --detail /dev/md5

/dev/md5:
           Version : 1.2
     Creation Time : Sun May  5 18:38:30 2024
        Raid Level : raid5
        Array Size : 20953088 (19.98 GiB 21.46 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 3
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Mon May  6 15:35:40 2024
             State : clean 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : myvm1:5  (local to host myvm1)
              UUID : 168f7d01:787aa7fc:74a95b58:3471d0a7
            Events : 44

    Number   Major   Minor   RaidDevice State
 
     4       8       80        0      active sync   /dev/sdf
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd

 (3)更新磁盘阵列

       sudo update-initramfs -u

update-initramfs: Generating /boot/initrd.img-5.15.0-105-generi

4.3. 删除磁盘阵列

(1)卸载挂载的目录

       sudo umount /mnt/md5

       其中,/mnt/md5为RAID 5磁盘阵列/dev/md5所挂载的目录。

(2)停止磁盘阵列的活动

      sudo mdadm --stop /dev/md5

      或者

      sudo mdadm -S /dev/md5

mdadm: stopped /dev/md5

(3)清除超级块

       查看磁盘阵列中是否存在超级块:

       lsblk --fs

...

sda                                                                   
├─sda1
│    vfat         0069-2021                               511M     0% /boot/efi
├─sda2
│                                                                     
└─sda5
     ext4         a30b6613-548e-444e-858e-642c58dfc676   33.4G    26% /

sdb  linux_ myvm1:5
                  168f7d01-787a-a7fc-74a9-5b583471d0a7                
sdc  linux_ myvm1:5
                  168f7d01-787a-a7fc-74a9-5b583471d0a7                
sdd  linux_ myvm1:5
                  168f7d01-787a-a7fc-74a9-5b583471d0a7                

sde  linux_ myvm1:1
│                 254b4b71-1ab3-18a1-5467-7370c7e5f4a1                
└─md1
     ext4         c44a7b6b-caf7-44cb-af5e-43d503328a12    9.2G     0% /mnt/md1

sdf  linux_ myvm1:5
                  168f7d01-787a-a7fc-74a9-5b583471d0a7                

sdg  linux_ myvm1:1
│                 254b4b71-1ab3-18a1-5467-7370c7e5f4a1                
└─md1
     ext4         c44a7b6b-caf7-44cb-af5e-43d503328a12    9.2G     0% /mnt/md1

       红色输出信息说明存在超级快。

       清除磁盘阵列的超级块信息:

       sudo mdadm - -zero-superblock  /dev/sbb

       sudo mdadm - -zero-superblock  /dev/sbc

       sudo mdadm - -zero-superblock  /dev/sbd

       sudo mdadm - -zero-superblock  /dev/sbf

       或者

       sudo mdadm --zero-superblock /dev/sdb /dev/sdc /dev/sdd /dev/sdf

(4)清除对磁盘阵列的引用

  •  删除或注释掉 /etc/fstab文件中对磁盘阵列/dev/md5的任何引用。

        首先,打开/etc/fstab文件:

        sudo nano /etc/fstab

        然后,在/etc/fstab文件中注释或删除下面对对磁盘阵列的引用语句(“#”为注释):

...

# /dev/md5 /mnt/md5 ext4 defaults, nofail,discard 0 0

        最后,保存并关闭文件。

  • 删除或注释掉/etc/mdadm/mdadm.conf文件对磁盘阵列的任何引用.

       首先,打开/etc/mdadm/mdadm.conf文件:

       sudo nano /etc/mdadm/mdadm.conf

       然后,在/etc/mdadm/mdadm.conf文件注释或删除对磁盘阵列的引用语句(“#”为注释):

...

RRAY /dev/md5 metadata=1.2 name=myvm1:5 UUID=168f7d01:787aa7fc:74a95b58:3471d0a7

       最后,保存并关闭文件。

(5)更新RAID信息

       sudo update-initramfs -u

update-initramfs: Generating /boot/initrd.img-5.15.0-105-generic

5. 创建RAID 10

       RAID 10是将镜像和条带进行组合的RAID级别,先进行RAID 1镜像然后再做RAID 0,其价架构如图5所示。RAID 10组的硬盘数量总是偶数,最少需要4块硬盘(2个RAID1组成一个RAID0),一半硬盘进行用户数据写入,另一半保存用户数据的镜像副本,镜像基于分条执行。

图5. RAID 10架构示意图

5.1. 创建磁盘阵列

(1)创建磁盘阵列

       使用4个硬盘:/dev/sdb、/dev/sdc,/dev/sdd、/dev/sdf,创建一个名为/dev/md10的RAID 10磁盘阵列,其中,/dev/sdb和/dev/sdc组成一个RAID 1,/dev/sdd和/dev/sdf组成一个RAID 1,两个RAID 1组成一个RAID 10。

       sudo mdadm - - create  - -verbose /dev/md10 - -level=10  - -raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sdf  

       或者

       sudo mdadm -C /dev/md10 -ayes -l10 -n4 /dev/sd[b, c, d, f]

(2)查看磁盘阵列信息

  • 查看机器上所有磁盘阵列的信息:     

       cat /proc/mdstat

Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md10 : active raid10 sdf[3] sdd[2] sdc[1] sdb[0]
      20953088 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]

      
md1 : active raid1 sdg[1] sde[2]
      10476544 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

       输出显示目前系统有2个磁盘阵列,一个是刚刚建立的RAID 10磁盘阵列,另一个是RAID 1磁盘阵列。

  • 查看磁盘阵列的详细信息:

        sudo mdadm --detail /dev/md10

       或者

       sudo mdadm -D /dev/md10

/dev/md10:
           Version : 1.2
     Creation Time : Tue May  7 07:27:40 2024
        Raid Level : raid10
        Array Size : 20953088 (19.98 GiB 21.46 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue May  7 07:29:27 2024
             State : clean 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : myvm1:10  (local to host myvm1)
              UUID : a38b437b:b21aee49:7f8f5b38:989df011
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd

       输出显示 RAID 级别、阵列大小、各个部分的运行状况、阵列的UUID等信息。

(3)挂载文件系统

  • 在磁盘阵列上创建文件系统

       sudo mkfs  -t ext4 /dev/md10

       或者

       sudo mkfs.ext4 -F /dev/md10

创建含有 5238272 个块(每块 4k)和 1310720 个inode的文件系统
文件系统UUID:7bb813d9-90bd-4179-94ea-61f2f2a2bda5
超级块的备份存储于下列块: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000

正在分配组表: 完成                            
正在写入inode表: 完成                            
创建日志(32768 个块) 完成
写入超级块和文件系统账户统计信息: 已完成 

  • 在文件系统上创建挂载点文件夹(/mnt/md10)

       sudo mkdir  -p /mnt /md10

  • 将磁盘阵列(/dev/md10)挂载到所创建文件夹(/mnt/md10)上

       sudo mount /dev/md10 /mnt/md10  

  • 检查是否有新的可用空间

       df -h –x devtmpfs –x tmpfs

文件系统        容量  已用  可用 已用% 挂载点
...
/dev/md1        9.8G   24K  9.3G    1% /mnt/md1
/dev/sda1       511M  4.0K  511M    1% /boot/efi
tmpfs           791M   20K  791M    1% /run/user/1000
/dev/sr0        2.6G  2.6G     0  100% /media/myvm1/Ubuntu 20.04.1 LTS amd64
/dev/md10        20G   24K   19G    1% /mnt/md10

(4)保存RAID信息

  • 打开/etc/mdadm/mdadm.conf 文件:

       sudo nano /etc/mdadm/mdadm.conf

  • 在/etc/mdadm/mdadm.conf文件末尾添加如下信息:    
ARRAY /dev/md10 metadata=1.2 name=myvm1:10 UUID=a38b437b:b21aee49:7f8f5b38:989df011
  • 保存并关闭/etc/mdadm/mdadm.conf文件。
  • 更新initramfs:

            sudo update-initramfs -u

update-initramfs: Generating /boot/initrd.img-5.15.0-105-generic

(5)开机自动挂载RAID

       为了在启动时自动挂载,请在可用的etc/fstab文件中添加新的文件系统挂载选项:

  • 打开etc/fstab文件:

        sudo nano /etc/fstab

  • 在etc/fstab文件末尾添加如下信息:    

       /dev/md10 /mnt/md10 ext4 defaults, nofail, discard 0 0

  • 保存并关闭/etc/fstab文件。

      现在每次启动都可以自动添加所创建的RAID 10磁盘阵列并安装它。

5.2. 更换磁盘阵列中的硬盘

(1)移除故障硬盘

       如果出现故障或需要更换硬盘,有时需要从磁盘阵列中移除硬盘。对于要移除的硬盘,必须首先将其标记为“失败”。可以使用mdadm --detail命令检查是否有失败的设备:

       sudo mdadm --detail /dev/md10

     如果要移除没有问题的硬盘,可以使用--fail选项手动将其标记为失败。下面的命令将RIAD 10磁盘阵列md10中的硬盘/dev/sdf标记为失败:

       sudo mdadm --manage /dev/md10 --fail /dev/sdf       

mdadm: set /dev/sdf  faulty in /dev/md10

     如果查看mdadm --detail的输出,可以注意到硬盘/dev/sdf已被标记为故障。

       sudo mdadm --detail /dev/md10

/dev/md10:
           Version : 1.2
     Creation Time : Tue May  7 07:27:40 2024
        Raid Level : raid10
        Array Size : 20953088 (19.98 GiB 21.46 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue May  7 08:20:05 2024
             State : clean, degraded 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : myvm1:10  (local to host myvm1)
              UUID : a38b437b:b21aee49:7f8f5b38:989df011
            Events : 23

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       -       0        0        3      removed

       3       8       80        -      faulty   /dev/sdf

将出现故障的硬盘/dev/sdf从RAID 10磁盘阵列中移除:

        sudo mdadm --manage /dev/md10 --remove /dev/sdf

mdadm: hot removed /dev/sdf from /dev/md10

(2)添加新硬盘

         接下来,我们增加新的硬盘/dev/sde到RAID 5磁盘阵列:

         sudo mdadm --manage /dev/md10 --add /dev/sde

mdadm: added /dev/sde

          查看RAID 10磁盘阵列的信息,

          sudo mdadm --detail /dev/md10

/dev/md10:
           Version : 1.2
     Creation Time : Tue May  7 07:27:40 2024
        Raid Level : raid10
        Array Size : 20953088 (19.98 GiB 21.46 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue May  7 08:24:24 2024
             State : clean, degraded, recovering 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 26% complete

              Name : myvm1:10  (local to host myvm1)
              UUID : a38b437b:b21aee49:7f8f5b38:989df011
            Events : 30

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
    
  4       8       64        3      active sync set-B   /dev/sde

 (3)更新磁盘阵列

       sudo update-initramfs -u

update-initramfs: Generating /boot/initrd.img-5.15.0-105-generi
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐