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

mac2026-10-05  0

文章目录

准备环境RAID 0创建RAID 0查看方法格式化、挂载 RAID 1创建RAID 1删除阵列 RAID 5创建RAID 5模拟磁盘损坏磁盘替换 RAID 10先创建两个RAID 1再创建RAID 0 补充阵列扩容装配模式

准备环境

五块硬盘作为测试

[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).
最新回复(0)