RAID 的实现方式 -- 软 RAID

软RAID:通过操作系统实现

Linux内核中有一个md(multiple devices)模块在底层管理RAID设备,它会在应用层给我们提供一个应用程序的工具mdadmmdadm是linux下用于创建和管理软件RAID的命令。

mdadm命令常见参数解释:

-C或--creat

建立一个新阵列

-r

移除设备

-A

激活磁盘阵列

-l 或--level=

设定磁盘阵列的级别

-D或--detail

打印阵列设备的详细信息

-n或--raid-devices=

指定阵列成员(分区/磁盘)的数量

-s或--scan

扫描配置文件或/proc/mdstat得到阵列缺失信息

-x或--spare-devicds=

指定阵列中备用盘的数量

-f

将设备状态定为故障

-c或--chunk=

设定阵列的块chunk块大小   ,单位为KB

-a或--add

添加设备到阵列

-G或--grow

改变阵列大小或形态

-v

--verbose 显示详细信息

-S

停止阵列

互动: raid5需要3块硬盘。  那么使用4块硬盘,可以做raid5吗?可以的

实验环境:新添加11块硬盘,每块磁盘的作用如下:

image.png

互动:磁盘达到sdz以后,名字应该如何排?   sdaa 、 sdab 。。。

image.png

实验环境:

raid种类

磁盘

热备盘

raid0

sdb、sdc

raid1

sdd、sde、

sdf

raid5

sdg、sdh、sdi

sdj

raid10

分区:sdk1,sdk2,sdk3.sdk4

注:工作中正常做raid全部是使用独立的磁盘来做的。为了节约资源,raid10以一块磁盘上多个分区来代替多个独立的磁盘做raid,但是这样做出来的raid没有备份数据的作用,因为一块磁盘坏了,这个磁盘上所做的raid也就都坏了。

创建RAID0

实验环境:

raid种类

磁盘

热备盘

raid0

sdb、sdc

mdadm 命令(用于创建 RAID): 

命令使用格式:mdadm [选项] RAID设备名称  RAID 级别  [选项]  磁盘设备名称 

常用选顷: 

   -C    用于创建 RAID。 

   -v    显示细节。 

   -l     用于指定 RAID 级别。 

   -n    #指定阵列中可用  device  数目,这个数目只能由  --grow  修改。 

1、创建raid0

[root@xuegod63 ~]# mdadm  -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc

mdadm: chunk size defaults to 512K

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

2、 查看阵列信息

[root@xuegod63 ~]#   mdadm -Ds

ARRAY /dev/md0 metadata=1.2 name=xuegod63.cn:0 UUID=cadf4f55:226ef97d:565eaba5:3a3c7da4

[root@xuegod63 ~]# mdadm -D /dev/md0

/dev/md0:

           Version : 1.2

     Creation Time : Thu May 17 15:59:16 2018

        Raid Level : raid0

        Array Size : 41910272 (39.97 GiB 42.92 GB)

      Raid Devices : 2

     Total Devices : 2

       Persistence : Superblock is persistent

       Update Time : Thu May 17 15:59:16 2018

             State : clean

    Active Devices : 2

   Working Devices : 2

    Failed Devices : 0

     Spare Devices : 0

        Chunk Size : 512K   #chunk是raid中最小的存储单位

Consistency Policy : none

              Name : xuegod63.cn:0  (local to host xuegod63.cn)

              UUID : cadf4f55:226ef97d:565eaba5:3a3c7da4

            Events : 0

    Number   Major   Minor   RaidDevice State

       0       8       16        0      active sync   /dev/sdb

       1       8       32        1      active sync   /dev/sdc

[root@xuegod63 ~]# mdadm -Ds > /etc/mdadm.conf   #生成配置文件

3、 对创建的RAID0进行文件系统创建并挂载

[root@xuegod63 ~]# mkfs.xfs /dev/md0        #格式化/dev/md0 设备

[root@xuegod63 ~]# mkdir /raid0        #创建挂载点

[root@xuegod63 ~]# mount /dev/md0 /raid0/        #挂载/dev/md0 设备

[root@xuegod63 ~]#  df -Th /raid0/        #查看磁盘信息

文件系统       类型  容量  已用  可用 已用% 挂载点

/dev/md0       xfs    40G   33M   40G    1% /raid0

[root@xuegod63 ~]# echo 324 > /raid0/a.txt

4、 开机自动挂载

[root@xuegod63 ~]#  blkid /dev/md0        #查看设备的 UUID 号

/dev/md0: UUID="3bf9c260-dc7b-4e37-a865-a8caa21ddf2c" TYPE="xfs"

[root@xuegod63 ~]# echo "UUID=5bba0862-c4a2-44ad-a78f-367f387ad001 /raid0 xfs defaults 0 0" >> /etc/fstab            #使用 UUID 号迚行开机自动挂载

创建 RAID1 

实验内容如表 13-4  所示。 

raid种类

磁盘

热备盘

raid1

sdd、sde、

sdf

           表  13-4  创建 RAID1 

实验内容 :

1)创建 RAID1 

2)添加 1 个热备盘 

3)模拟磁盘故障,自动顶替故障盘 

4)从 raid1 中移出故障盘 

1.   创建 RAID1,创建后的设备名称为/dev/md1,目标设备/dev/sd,/dev/sde,/dev/sdf 

[root@xuegod63 ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sd[d,e,f] 

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: size set to 10477568K 

Continue creating array? yes 

mdadm: Defaulting to version 1.2 metadata 

mdadm: array /dev/md1 started. 

2.   将 RADI 信息保存到配置文件: 

[root@xuegod63 ~]# mdadm -Dsv > /etc/mdadm.conf 

3.   查看  RAID  阵列信息: 

[root@xuegod63 ~]# mdadm    -D /dev/md1 

                Raid Level : raid1 

                Array Size : 20955136 (19.98 GiB 21.46 GB) 

      。。。 

        Number      Major      Minor      RaidDevice State 

              0              8              48                0            active sync      /dev/sdd 

              1              8              64                1            active sync      /dev/sde 

              2              8              80                -            spare      /dev/sdf 

4.   在 RAID 设备上创建文件系统: 

[root@xuegod63 ~]# mkfs.xfs /dev/md1 

[root@xuegod63 ~]# mkdir /raid1 

[root@xuegod63 ~]# mount /dev/md1 /raid1/ 

5.   准备测试文件: 

[root@xuegod63 ~]# cp /etc/passwd /raid1/ 

  模拟损坏 

下面模拟 RAID1 中数据盘/dev/sde 出现故障,观察/dev/sdf 备用盘能否自动顶替故障盘。 

[root@xuegod63 ~]# mdadm /dev/md1 -f    /dev/sde 

6、查看一下阵列状态信息

[root@xuegod63 ~]# mdadm  -D /dev/md1

...

    Number   Major   Minor   RaidDevice State

       0       8       96        0      active sync   /dev/sdg

       2       8      128        1      spare rebuilding   /dev/sdi #热备盘已经在同步数据

       1       8      112        -      faulty   /dev/sdh 

7、更新配置文件

[root@xuegod63 ~]# mdadm  -Dsv > /etc/mdadm.conf

8、查看数据是否丢失

[root@xuegod63 ~]# ls /raid1/    #数据正常,没有丢失

重要的数据如:数据库  ;  系统盘 (把系统安装到raid1的md1设备上,可以对md1做分区)

9、移除损坏的设备

[root@xuegod63 ~]# mdadm  -r /dev/md1 /dev/sde

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

10、查看信息

[root@xuegod63 ~]# mdadm  -D /dev/md1

    Number   Major   Minor   RaidDevice State

       0       8       96        0      active sync   /dev/sdd

       2       8      128        1      active sync   /dev/sdf   #已经没有热备盘了

11、添加一块新热备盘

[root@xuegod63 ~]# mdadm  -a /dev/md1  /dev/sde

mdadm: added /dev/sde

创建RAID5

实验环境:

raid种类

磁盘

热备盘

raid5

sdg、sdh、sdi

sdj

 实验环境

1)创建RAID5, 添加1个热备盘,指定chunk大小为32K

        -x或--spare-devicds=   指定阵列中备用盘的数量

        -c或--chunk= 设定阵列的块chunk块大小 ,单位为KB

2)停止阵列,重新激活阵列

3)使用热备盘,扩展阵列容量,从3个磁盘扩展到4个

1、创建RAID-5

[root@xuegod63 ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 -c32 /dev/sd{g,h,i,j}

2.   查看/dev/md5 信息

[root@xuegod63 ~]# mdadm -D /dev/md5

/dev/md5:

           Version : 1.2

     Creation Time : Thu May 17 18:54:20 2018

        Raid Level : raid5

        Array Size : 41910272 (39.97 GiB 42.92 GB)

     Used Dev Size : 20955136 (19.98 GiB 21.46 GB)

      Raid Devices : 3

     Total Devices : 4

       Persistence : Superblock is persistent

       Update Time : Thu May 17 18:54:31 2018

             State : clean, degraded, recovering

    Active Devices : 2

   Working Devices : 4

    Failed Devices : 0

     Spare Devices : 2

            Layout : left-symmetric

        Chunk Size : 32K

Consistency Policy : resync

    Rebuild Status : 7% complete

              Name : xuegod63.cn:5  (local to host xuegod63.cn)

              UUID : fa685cea:38778d6a:0eb2c670:07ec5797

            Events : 2

    Number   Major   Minor   RaidDevice State

       0       8       96        0      active sync   /dev/sdg

       1       8      112        1      active sync   /dev/sdh

       4       8      128        2      spare rebuilding   /dev/sdi

       3       8      144        -      spare   /dev/sdj   #热备盘

3、停止MD5阵列

[root@xuegod63 ~]# mdadm -Dsv > /etc/mdadm.conf   #停止前,一定要先保存配置文件

[root@xuegod63 ~]# mdadm  -D /dev/md5  ##停止前,请确认数据已经同步完

Consistency Policy : resync   #数据已经同步完

[root@xuegod63 ~]# mdadm  -S /dev/md5         #停止MD5阵列

mdadm: stopped /dev/md5

4、 激活MD5阵列

[root@xuegod63 ~]# mdadm  -As

mdadm: /dev/md5 has been started with 3 drives and 1 spare.

5、扩展RAID5磁盘阵列

将热备盘增加到md5中,使用md5中可以使用的磁盘数量为4块

[root@xuegod63 /]# mdadm -G /dev/md5 -n 4 -c 32    #-G或--grow  改变阵列大小或形态

[root@xuegod63 ~]# mdadm -Dsv > /etc/mdadm.conf   #保存配置文件

备注:阵列只有在正常状态下,才能扩容,降级及重构时不允许扩容。对于raid5来说,只能增加成员盘,不能减少。而对于raid1来说,可以增加成员盘,也可以减少。

[root@xuegod63 ~]# mdadm -D /dev/md5  #查看状态

。。。

     Array Size : 41910272 (39.97 GiB 42.92 GB)   #发现新增加硬盘后空间没有变大,为什么?

     Used Dev Size : 20955136 (19.98 GiB 21.46 GB)

。。。

    Reshape Status : 3% complete   #重塑状态:3%完成 ,等到100%, 数据才同步完,同步完后会变成成:Consistency Policy : resync   #一致性策略:再同步,表示已经同步完

。。。

  Number   Major   Minor   RaidDevice State

       0       8       96        0      active sync   /dev/sdg

       1       8      112        1      active sync   /dev/sdh

       4       8      128        2      active sync   /dev/sdi

       3       8      144        3      active sync   /dev/sdj

等一会,等所有数据同步完成后,查看md5空间大小:

        Array Size : 62865408 (59.95 GiB 64.37 GB)  #空间已经变大

     Used Dev Size : 20955136 (19.98 GiB 21.46 GB)

创建RAID10

实验环境:

raid种类

磁盘

热备盘

raid10

分区:sdk1,sdk2,sdk3.sdk4

[root@xuegod63 ~]# fdisk  /dev/sdk  #分4个主分区,每个分区1G大小

1.   创建 RAID10,创建后的设备名称为/dev/md10,目录磁盘为/dev/sdk1,/dev/sdk2,/dev/sdk3,/dev/sdk4。 

[root@xuegod63 ~]# mdadm -C -v /dev/md10 -l 10 -n 4 /dev/sdk[1-4]

[root@xuegod63 ~]# cat /proc/mdstat

2、删除RAID所有信息及注意事项

[root@xuegod63 ~]# umount /dev/md0 /raid0   #如果你已经挂载raid,就先卸载。

[root@xuegod63 ~]# mdadm  -Ss               #停止raid设备

[root@xuegod63 ~]# rm -rf /etc/mdadm.conf     #删除raid配置文件

[root@xuegod63 ~]#  mdadm  --zero-superblock /dev/sdb  #清除物理磁盘中的raid标识 

[root@xuegod63 ~]#  mdadm  --zero-superblock /dev/sdc  #清除物理磁盘中的raid标识 

参数:--zero-superblock :  erase the MD superblock from a device.   #擦除设备中的MD超级块

版权声明:
作者:WaterBear
链接:https://l-t.top/1453.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>