RAID简介
RAID:(Redundant Array of Independent Disk)独立磁盘的冗余阵列
详细介绍可参考刘遄老师的RAID讲解文章
环境:
CentOS7MINI
VMware16.0
准备:
磁盘5块(系统盘1块+4块做阵列)
mdadm命令用于管理Linux系统中的软件RAID硬盘阵列。
格式:
mdadm [格式] <RAID设备名称> [选项] [成员名称]
参数 作用
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘阵列
由于CentOS7最小化没有
安装mdadm
[root@localhost ~]yum install -y mdadm
创建RAID10
①创建需要使用mdadm中的参数了。其中-C参数代表创建一个RAID阵列卡;-v参数显示创建的过程,并设置阵列名为/dev/md0;-a yes参数代表自动创建设备文件;-n 4参数代表使用4块硬盘来部署这个RAID磁盘阵列;而-l 10参数表示RAID 10;最后再加上4块硬盘设备的名称就搞定了。
[root@localhost ~]mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512k
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
②然后格式化好新的阵列卡
[root@localhost ~]mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477312 blocks
523865 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2157969408
320 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, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
③创建挂载点然后把硬盘设备进行挂载操作。挂载成功后可看到可用空间为40GB。
[root@localhost ~]# mkdir /RAID10
[root@localhost ~]# mount /dev/md0 /RAID10/
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 18G 913M 17G 6% /
devtmpfs devtmpfs 908M 0 908M 0% /dev
tmpfs tmpfs 914M 0 914M 0% /dev/shm
tmpfs tmpfs 914M 8.5M 906M 1% /run
tmpfs tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sr0 iso9660 3.9G 3.9G 0 100% /media/cdrom
/dev/sda1 xfs 497M 96M 401M 20% /boot
/dev/md0 ext4 40G 49M 38G 1% /RAID10
④查看md0阵列的详细信息,并将阵列盘永久挂载使其生效
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Nov 15 19:50:03 2020
Raid Level : raid10
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Nov 16 01:39:15 2020
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 96c7dce8:0f15d2aa:984c6629:5dd4531a
Events : 17
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
[root@localhost ~]# echo "/dev/md0 /RAID10 ext4 defaults 0 0" >> /etc/fstab
[root@localhost ~]# cat /etc/fstab #查看挂载文件
#
# /etc/fstab
# Created by anaconda on Fri Oct 30 21:03:35 2020
#
# 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 1 1
UUID=2999ce12-9dc5-4581-b11c-b0ff63188473 /boot xfs defaults 1 2
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sr0 /media/cdrom iso9660 defaults 0 0
/dev/md0 /RAID10 ect4 defaults 0 0
损坏损坏磁盘阵列及修复
首先在生产环境中,总是避免不了磁盘损坏的情况,比如长时间老化啊,接触不良等等导致硬盘,出现故障,我们就需要用到阵列,既然用到阵列,阵列内某个磁盘损坏了,我们该如何去修复它,这也是作为运维人员的一个技能点,所以,我会模拟一块硬盘损坏,来学习在生产环境中的出现某个硬盘损坏如何去修复,并让生产环境继续工作。
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb #-f:模拟磁盘损坏
mdadm: set /dev/sdb faulty in /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Nov 15 19:50:03 2020
Raid Level : raid10
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Nov 16 03:33:03 2020
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 96c7dce8:0f15d2aa:984c6629:5dd4531a
Events : 19
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
0 8 16 - faulty /dev/sdb #这里提示有/dev/sdb这块硬盘出现故障了
在RAID 10级别的磁盘阵列中,当RAID 1磁盘阵列中存在一个故障盘时并不影响RAID 10磁盘阵列的使用。当购买了新的硬盘设备后再使用mdadm命令来予以替换即可,在此期间我们可以在/RAID目录中正常地创建或删除文件。由于我们是在虚拟机中模拟硬盘,所以先重启系统,然后再把新的硬盘添加到RAID磁盘阵列中。
[root@localhost ~]#poweroff #重启后替换掉损坏的磁盘
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Nov 15 19:50:03 2020
Raid Level : raid10
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Mon Nov 16 03:48:59 2020
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 96c7dce8:0f15d2aa:984c6629:5dd4531a
Events : 29
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
[root@localhost ~]# 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-swap 253:0 0 2G 0 lvm [SWAP]
└─centos-root 253:1 0 17.5G 0 lvm /
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10 /RAID10
sdd 8:48 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10 /RAID10
sde 8:64 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10 /RAID10
sr0 11:0 1 3.9G 0 rom /media/cdrom
目前sdb是重新加进去的硬盘,所以我们需要重新添加到新的RAID10内,在此操作前,注意的是,您开机的时候硬盘是直接把RAID10挂载好的,所以需要卸载挂载点后,添加再去重新挂载上去
[root@localhost ~]# umount /RAID10/
[root@localhost ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Nov 15 19:50:03 2020
Raid Level : raid10
Array Size : 41909248 (39.97 GiB 42.92 GB)
Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Nov 16 03:53:14 2020
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : near=2
Chunk Size : 512K
Rebuild Status : 22% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 96c7dce8:0f15d2aa:984c6629:5dd4531a
Events : 38
Number Major Minor RaidDevice State
4 8 16 0 spare rebuilding /dev/sdb #再次您会问为什么是这个状态;解释:这是加入阵列加载状态
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
[root@localhost ~]# mount /dev/md0 /RAID10/
[root@localhost ~]# 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-swap 253:0 0 2G 0 lvm [SWAP]
└─centos-root 253:1 0 17.5G 0 lvm /
sdb 8:16 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10 /RAID10
sdc 8:32 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10 /RAID10
sdd 8:48 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10 /RAID10
sde 8:64 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10 /RAID10
sr0 11:0 1 3.9G 0 rom /media/cdrom
总结
对于我来说,磁盘阵列在Linux上做确实很好用,很方便,但是我不是很推荐直接用系统的方式做阵列,建议在生产环境,最好是做硬RAID,就是服务器的RAID,为什么会提出这个建议呢;因为如果说您在生产环境中,奔溃的不是您的硬盘,而是系统呢?这个阵列还有用吗?虽然说可以更换内核,但是对于我的建议还是希望能够给到大家最好的帮助!
最后感谢的是刘遄老师给予的教材资料,我也是跟着刘遄老师学的教材学的知识,希望像学习的同学跟我一起学习探讨,再次声明,我不是为了谁打广告,我是为了自己的未来而记录自己的学习的经验!谢谢~