Linux的RAID阵列配置详解(mdadm)

准备环境

五块硬盘作为测试

[root@localhost ~]# fdisk -l | grep /dev/sd
Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    83886079    40893440   8e  Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sde: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdf: 21.5 GB, 21474836480 bytes, 41943040 sectors

先使用fdisk将五块硬盘全部进行分区,这里就简单一点,全部分别分成一个分区。

[root@localhost ~]# fdisk -l | grep /dev/sd
Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    83886079    40893440   8e  Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect
Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sdc1            2048    41943039    20970496   fd  Linux raid autodetect
Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sdd1            2048    41943039    20970496   fd  Linux raid autodetect
Disk /dev/sde: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sde1            2048    41943039    20970496   fd  Linux raid autodetect
Disk /dev/sdf: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sdf1            2048    41943039    20970496   fd  Linux raid autodetect

下载mdadm工具

[root@localhost ~]# yum -y install mdadm &> /dev/null

RAID 0

创建RAID 0

[root@localhost ~]# mdadm -C -v /dev/md0 -l0 -n2 /dev/sd[b-c]1  //raid 0设备名称为/dev/md0 -l指定raid等级,-n指定磁盘个数
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

查看方法

[root@localhost ~]# cat /proc/mdstat				//查看概要
Personalities : [raid0] 
md0 : active raid0 sdc1[1] sdb1[0]					//刚刚做的raid 0
      41906176 blocks super 1.2 512k chunks
      
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md0		//可查看详细信息
/dev/md0:
……省略部分内容……

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

格式化、挂载

[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 /raid0			//创建挂载点
[root@localhost ~]# mount /dev/md0 /raid0	//挂载
[root@localhost ~]# df -Th | grep /raid0	//查看
/dev/md0                xfs        40G   33M   40G   1% /raid0

RAID 1

创建RAID 1

[root@localhost ~]# mdadm -C -v /dev/md1 -l1 -n2 /dev/sd[d-e]1 -x1 /dev/sdf1   //-x1指定备份硬盘
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 20953088K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

查看

[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] 
md1 : active raid1 sdf1[2](S) sde1[1] sdd1[0] 		//刚刚做的raid 1
      20953088 blocks super 1.2 [2/2] [UU]
      
md0 : active raid0 sdc1[1] sdb1[0]					//前面做的raid 0
      41906176 blocks super 1.2 512k chunks
      
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md1 
/dev/md1:
……省略部分内容……

    Number   Major   Minor   RaidDevice State
       0       8       49        0      active sync   /dev/sdd1    //sdd1和sde1是激活状态
       1       8       65        1      active sync   /dev/sde1

       2       8       81        -      spare   /dev/sdf1     //sdf1是空闲状态

格式化、挂载

[root@localhost ~]# mkfs.xfs /dev/md1
meta-data=/dev/md1               isize=512    agcount=4, agsize=1309568 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5238272, 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=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /raid1
[root@localhost ~]# mount /dev/md1 /raid1
[root@localhost ~]# df -Th | grep /raid
/dev/md0                xfs        40G   33M   40G   1% /raid0
/dev/md1                xfs        20G   33M   20G   1% /raid1

删除阵列

接下来创建RAID 5,但是没有多余的磁盘了,我们先把前面创建的RAID 0和RAID 1删掉

[root@localhost events.d]# umount /dev/md0      //卸载
[root@localhost events.d]# mdadm -S /dev/md0	//停止md0设备
mdadm: stopped /dev/md0
[root@localhost events.d]# mdadm --zero-superblock /dev/sdb1  
[root@localhost events.d]# mdadm --zero-superblock /dev/sdc1
[root@localhost events.d]# umount /dev/md1
[root@localhost events.d]# mdadm -S /dev/md1	//停止md1设备
mdadm: stopped /dev/md1
[root@localhost events.d]# mdadm --zero-superblock /dev/sde1
[root@localhost events.d]# mdadm --zero-superblock /dev/sdf1
[root@localhost events.d]# 

接下来我们继续用这五块磁盘做RAID 5和RAID 10。

RAID 5

创建RAID 5

[root@localhost events.d]# mdadm -C -v /dev/md5 -n3 -l5 /dev/sd[b-d]1 -x1 /dev/sde1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: /dev/sdd1 appears to be part of a raid array:
       level=raid1 devices=2 ctime=Sat Nov  2 03:26:38 2019
mdadm: size set to 20953088K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

查看

[root@localhost events.d]# cat /proc/mdstat		//查看概要
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] 
md5 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
      41906176 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [===>.................]  recovery = 16.6% (3487744/20953088) finish=0.7min speed=387527K/sec
      
unused devices: <none>
[root@localhost events.d]# mdadm -D /dev/md5	//查看详细信息
/dev/md5:
……省略部分内容……

    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

模拟磁盘损坏

[root@localhost events.d]# mdadm -f /dev/md5 /dev/sdc1  //模拟sdc1损坏
mdadm: set /dev/sdc1 faulty in /dev/md5
[root@localhost events.d]# mdadm -D /dev/md5	//查看raid 5情况
/dev/md5:
……省略部分内容……

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      spare rebuilding   /dev/sde1	//正在同步数据
       4       8       49        2      active sync   /dev/sdd1

       1       8       33        -      faulty   /dev/sdc1			//损坏

磁盘替换

将损坏的磁盘移出并添加新磁盘

[root@localhost events.d]# mdadm /dev/md5 -r /dev/sdc1   //-r参数移出磁盘
mdadm: hot removed /dev/sdc1 from /dev/md5
[root@localhost events.d]# mdadm /dev/md5 -a /dev/sdf1	//-a参数添加磁盘
mdadm: added /dev/sdf1
[root@localhost events.d]# mdadm -D /dev/md5			//查看
/dev/md5:
……省略部分内容……

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

       5       8       81        -      spare   /dev/sdf1			//sdf1已成为备份

RAID 10

磁盘又不够了,我们再练习一下删除阵列

[root@localhost events.d]# mdadm -S /dev/md5
mdadm: stopped /dev/md5
[root@localhost events.d]# mdadm --zero-superblock /dev/sdb1
[root@localhost events.d]# mdadm --zero-superblock /dev/sdc1
[root@localhost events.d]# mdadm --zero-superblock /dev/sdd1
[root@localhost events.d]# mdadm --zero-superblock /dev/sde1
[root@localhost events.d]# mdadm --zero-superblock /dev/sdf1

RAID 10其实是在两个RAID 1的基础上做RAID 0,这样既保证了数据的可靠性,也有RAID 0数据读写的优势。

先创建两个RAID 1

[root@localhost events.d]# mdadm -C -v /dev/md0 -l1 -n2 /dev/sd[bc]1
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 20953088K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost events.d]# mdadm -C -v /dev/md1 -l1 -n2 /dev/sd[de]1
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 20953088K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

再创建RAID 0

[root@localhost events.d]# mdadm -C -v /dev/md10 -l10 -n2 /dev/md0 /dev/md1	//使用/dev/md0和/dev/md1来创建RAID 0
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20935680K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.

查看

[root@localhost events.d]# cat /proc/mdstat		//概要信息
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md10 : active raid10 md1[1] md0[0]
      20935680 blocks super 1.2 2 near-copies [2/2] [UU]
      
md1 : active raid1 sde1[1] sdd1[0]
      20953088 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 sdc1[1] sdb1[0]
      20953088 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
[root@localhost events.d]# mdadm -D /dev/md10		//详细信息
/dev/md10:
……省略部分内容……

    Number   Major   Minor   RaidDevice State
       0       9        0        0      active sync set-A   /dev/md0
       1       9        1        1      active sync set-B   /dev/md1

补充

阵列扩容

这是一个使用了3个工作盘、有1个备用盘的RAID 5

[root@localhost events.d]# mdadm -D /dev/md5
/dev/md5:
……省略部分内容……

    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

扩容

[root@localhost events.d]# mdadm -G /dev/md5 -n4   //-G指定增长模式,-n指定工作盘数量

再查看

[root@localhost events.d]# mdadm -D /dev/md5
/dev/md5:
……省略部分信息……

    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        3      active sync   /dev/sde1	//原来的备用盘也已经active了

装配模式

当需要重新装配已停止的RAID时

[root@localhost events.d]# mdadm -A /dev/md5 /dev/sd[bcde]1  //需按md5原来要求装配硬盘
mdadm: /dev/md5 has been started with 4 drives.

如果不满足原RAID要求

[root@localhost events.d]# mdadm -A /dev/md5 /dev/sd[bcd]1  //要求4个硬盘,只给了3个
mdadm: /dev/md5 assembled from 3 drives - need all 4 to start it (use --run to insist).
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值