您现在的位置是: 网站首页 >服务部署 >Linux应用服务配置 服务部署

【mdadm】Linux系统软RAID的创建方法

admin2020年3月4日 15:00 Linux 61人已围观

Linux应用服务配置简介 各类Linux软件安装配置

# Raid定义 raid(独立冗余磁盘阵列)。raid技术通过把多个硬盘设备组合成一个容量更大的,安全性更好的磁盘阵列。把数据切割成许多区段后分别放在不同的物理磁盘上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理设备上,从而起到了非常好的数据冗余备份效果。缺点就是磁盘利用率低。 # Raid级别比较 | 级别 | 硬盘数n | 可用容量百分比 | 优点 | 缺点 | | ------ | ------ | ------------ | ------------------------------------------------ | --------------------- | | raid0 | 至少2块 | 100% | 提高读写性能 | 没有容错能力 | | raid1 | 至少2块 | 50% | 镜像,硬件容错,读性能提升 | 写性能下降50%,利用率低 | | raid5 | 至少3块 | (n-1)/n | 允许1块盘出错,读写性能提升 | | | raid6 | 至少4块 | (n-2)/n | 允许2块盘出错,读写性能提升 | | | raid10 | 至少4块 | 50% | 多组raid1组合成raid0接口,允许不同组内各坏1快盘,读写性能提升 | | ## RAID10和RAID5的比较 为了方便对比,这里拿同样多驱动器的磁盘来做对比。[转载](http://blog.itpub.net/787018/viewspace-666280/) ``` RAID5选择3D+1P的RAID方案 RAID10选择2D+2D的RAID方案 ``` ### 安全性 其实在安全性方面,毋庸置疑,肯定是**RAID10的安全性高于RAID5**。我们也可以从简单的分析来得出。当盘1损坏时,对于RAID10,只有当盘1对应的镜象盘损坏,才导致RAID失效。但是对于RAID5,剩下的3块盘中,任何一块盘故障,都将导致RAID失效。 在恢复的时候,RAID10恢复的速度也快于RAID5。 ### 空间利用率 用四块盘分别做RAID10和RAID5的情况下: RAID10的利用率是50% RAID5的利用率是75% **硬盘数量越多,RAID5的空间利用率越高**。 ### 读写性能 主要分析分析如下三个过程:读,连续写,离散写。 在介绍这三个过程之前,先介绍一个特别重要的概念:**cache**。 cache已经是整个存储的核心所在,就是中低端存储,也有很大的cache存在,包括最简单的raid卡,一般都包含有几十,甚至几百兆的raid cache。 **cache的主要作用是什么呢?** 体现在读与写两个不同的方面,如果作为写,一般存储阵列只要求写到cache就算完成了写操作,所以,阵列的写是非常快速的,在写cache的数据积累到一定程度,阵列才把数据刷到磁盘,可以实现批量的写入,至于cache数据的保护,一般都依赖于镜像与电池(或者是UPS)。 cache的读一样不可忽视,因为如果读能在cache中命中的话,将减少磁盘的寻道,因为磁盘从寻道开始到找到数据,一般都在6ms以上,而这个时间,对于那些密集型io的应用可能不是太理想。但是,如果cache能命中,一般响应时间则可以在1ms以内。两者应该相差3个数量级(1000倍)。 1. 读操作方面的性能差异 RAID10可供读取有效数据的磁盘个数为4,RAID5可供读取有效数据的磁盘个数也为4个(校验信息分布在所有的盘上),所以两者的读的性能应该是基本一致的。 2. 连续写方面的性能差异 在连续写操作过程,如果有写cache存在,并且算法没有问题的话,RAID5比RAID10甚至会更好一些,虽然也许并没有太大的差别。(这里要假定存储有一定大小足够的写cache,而且计算校验的cpu不会出现瓶颈)。 因为这个时候的RAID校验是在cache中完成,如4块盘的RAID5,可以先在内存中计算好校验,同时写入3个数据+1个校验。而RAID10只能同时写入2个数据+2个镜相。 4块盘的RAID5可以在同时间写入1、2、3到cache,并且在cache计算好校验之后,这里假定是6,同时把三个数据写到磁盘。而4块盘的RAID10不管cache是否存在,写的时候,都是同时写2个数据与2个镜相。 根据前面对缓存原理的介绍,写cache是可以缓存写操作的,等到缓存写数据积累到一定时期再写到磁盘。但是,写到磁盘阵列的过程是迟早也要发生的,所以RAID5与RAID10在连续写的情况下,从缓存到磁盘的写操作速度会有较小的区别。不过,如果不是连续性的强连续写,只要不达到磁盘的写极限,差别并不是太大。 3. 离散写方面的性能差异 例如oracle 数据库每次写一个数据块的数据,如8K;由于每次写入的量不是很大,而且写入的次数非常频繁,因此联机日志看起来会像是连续写。但是因为不保证能够添满RAID5的一个条带,比如32K(保证每张盘都能写入),所以很多时候更加偏向于离散写入(写入到已存在数据的条带中)。 离散写的时候,RAID5与RAID10工作方式有什么不同?假定要把一个数字2变成数字4,那么对于RAID5,实际发生了4次io:先读出2与校验6,可能发生读命中然后在cache中计算新的校验写入新的数字4与新的校验8。 对于RAID10,同样的单个操作,最终RAID10只需要2个io,而RAID5需要4个io。 这里忽略了RAID5在那两个读操作的时候,可能会发生读命中操作的情况。也就是说,如果需要读取的数据已经在cache中,可能是不需要4个io的。这也证明了cache对RAID5 的重要性,不仅仅是计算校验需要,而且对性能的提升尤为重要。 当然,并不是说cache对RAID10就不重要了,因为写缓冲,读命中等,都是提高速度的关键所在,只不过RAID10对cache的依赖性没有RAID5那么明显而已。 4. 磁盘的IOPS对比 假定一个case,业务的iops是10000,读cache命中率是30%,读iops为60%,写iops为40%,磁盘个数为120,那么分别计算在raid5与raid10的情况下,每个磁盘的iops为多少。 ``` raid5 单块盘的iops = (10000*(1-0.3)*0.6 + 4 * (10000*0.4))/120 = (4200 + 16000)/120 = 168 这里的10000*(1-0.3)*0.6表示是读的iops,比例是0.6,除掉cache命中,实际只有4200个iops。4 * (10000*0.4) 表示写的iops,因为每一个写,在raid5中,实际发生了4个io,所以写的iops为16000个 为了考虑raid5在写操作的时候,那2个读操作也可能发生命中,所以更精确的计算为: 单块盘的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4)*(1-0.3) + 2 * (10000*0.4))/120 = (4200 + 5600 + 8000)/120 = 148 计算出来单个盘的iops为148个,基本达到磁盘极限 raid10 单块盘的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4))/120 = (4200 + 8000)/120 = 102 ``` 可以看到,因为raid10对于一个写操作,只发生2次io,所以,同样的压力,同样的磁盘,每个盘的iops只有102个,还远远低于磁盘的极限iops。 ### 小结 所以要求较高的空间利用率,对安全性要求不是特别高、大文件存储的系统采用RAID5比较好。 相反,安全性要求很高,不计成本,数据频繁写入的系统采用RAID10的方式比较好。 # Raid搭建方法 系统为CentOS7 查看当前磁盘信息 ```bash [root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.7M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 8.0G 1.5G 6.6G 19% / /dev/sda1 1014M 163M 852M 16% /boot tmpfs 98M 0 98M 0% /run/user/0 [root@localhost ~]# fdisk -l 磁盘 /dev/sda:10.7 GB, 10737418240 字节,20971520 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000acd25 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 20971519 9436160 8e Linux LVM 磁盘 /dev/mapper/centos-root:8585 MB, 8585740288 字节,16769024 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/centos-swap:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 ``` ## 添加磁盘 试验环境添加5块1G硬盘 ![BLOG_20200304_150117_78](/media/blog/images/2020/03/BLOG_20200304_150117_78.png "博客图集BLOG_20200304_150117_78.png") 此时在系统中是没有读出的,可以通过重新扫描 SCSI 总线,在不重启虚拟机的情况下添加 SCSI 设备。或者重启虚拟机。 ```bash [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host[按Tab] host0/ host1/ host2/ [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host0/scan [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host1/scan [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan [root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.7M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 8.0G 1.5G 6.6G 19% / /dev/sda1 1014M 163M 852M 16% /boot tmpfs 98M 0 98M 0% /run/user/0 [root@localhost ~]# fdisk -l 磁盘 /dev/sda:10.7 GB, 10737418240 字节,20971520 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000acd25 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 20971519 9436160 8e Linux LVM 磁盘 /dev/mapper/centos-root:8585 MB, 8585740288 字节,16769024 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/centos-swap:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sdb:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sdc:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sdd:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sde:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sdf:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 ``` 使用`fdisk -l`可以看到新添加的5块硬盘,从`sdb`到`sdf` ## 初始化磁盘设置 ```bash [root@localhost ~]# fdisk /dev/sd sda sda1 sda2 sdb sdc sdd sde sdf [root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x155d620b 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):m 命令操作 a toggle a bootable flag # 切换可启动标志 b edit bsd disklabel # 编辑bsd磁盘标签 c toggle the dos compatibility flag # 切换dos兼容性标识 d delete a partition # 删除分区 g create a new empty GPT partition table # 创建一个新的GPT分区表 G create an IRIX (SGI) partition table # 创建一个IRIX(SGI)分区表 l list known partition types # 列出已知的分区类型 m print this menu # 打印此菜单 n add a new partition # 添加一个新分区 o create a new empty DOS partition table # 创建一个新的DOS分区表 p print the partition table # 打印分区表 q quit without saving changes # 退出而不保存更改 s create a new empty Sun disklabel # 创建一个新的空Sun磁盘标签 t change a partition`s system id # 更改分区的系统ID u change display/entry units # 更改显示/输入单位 v verify the partition table # 验证分区表 w write table to disk and exit # 将分区表写入磁盘并退出 x extra functionality (experts only) # 额外功能(专家模式) 命令(输入 m 获取帮助):n # 新建分区 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p # p是主分区,e是扩展分区 分区号 (1-4,默认 1): # 保持默认 起始 扇区 (2048-2097151,默认为 2048): # 起始位置,默认 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151): # raid5要用到整块磁盘,默认为整块 将使用默认值 2097151 分区 1 已设置为 Linux 类型,大小设为 1023 MiB 命令(输入 m 获取帮助):t 已选择分区 1 Hex 代码(输入 L 列出所有代码):L # 列出所有的分区类型,及菜单m中的l 0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris 1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT- 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx 5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据 6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / . 7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具 8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt 9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问 a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC 11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor 12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor 14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f2 DOS 次要 16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS 17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动 1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep 1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT 1e 隐藏的 W95 FAT1 80 旧 Minix Hex 代码(输入 L 列出所有代码):fd # 选择代码,即Linux raid 自动 已将分区“Linux”的类型更改为“Linux raid autodetect” 命令(输入 m 获取帮助):w # 保存退出即可 The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@localhost ~]# fdisk -l sdb # 列出指定磁盘分区表 fdisk: 打不开 sdb: 没有那个文件或目录 [root@localhost ~]# fdisk -l /dev/sdb 磁盘 /dev/sdb:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x155d620b 设备 Boot Start End Blocks Id System /dev/sdb1 2048 2097151 1047552 fd Linux raid autodetect # 即可看到硬盘被分为一个主分区,类型为raid ``` 同样对`sdc`到`sdf`剩下的磁盘进行一样的操作。 ### 简版步骤 **`fdisk /dev/sd[编号]`-->`n`(新建分区)-->`p`(主分区)-->`回车`(分区号默认1)-->`回车`(起始扇区默认2028)-->`回车`(大小默认)-->`t`(更改分区系统ID)-->`fd`(Linux raid 自动)-->`w`保存退出。** ### 修改完分区表信息 修改完后,`sdb`到`sdf`信息如下。 ```bash [root@localhost ~]# fdisk -l /dev/sd[b-f] 磁盘 /dev/sdb:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x155d620b 设备 Boot Start End Blocks Id System /dev/sdb1 2048 2097151 1047552 fd Linux raid autodetect 磁盘 /dev/sdc:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x4efd7c63 设备 Boot Start End Blocks Id System /dev/sdc1 2048 2097151 1047552 fd Linux raid autodetect 磁盘 /dev/sdd:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x6320f4f2 设备 Boot Start End Blocks Id System /dev/sdd1 2048 2097151 1047552 fd Linux raid autodetect 磁盘 /dev/sde:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x9f1031c0 设备 Boot Start End Blocks Id System /dev/sde1 2048 2097151 1047552 fd Linux raid autodetect 磁盘 /dev/sdf:1073 MB, 1073741824 字节,2097152 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x88fb5cf3 设备 Boot Start End Blocks Id System /dev/sdf1 2048 2097151 1047552 fd Linux raid autodetect ``` ## 安装mdadm madam是Linux下的raid管理工具 ```bash [root@localhost ~]# yum install mdadm -y ``` ### mdadm帮助 ```bash [root@localhost ~]# mdadm --help mdadm is used for building, managing, and monitoring Linux md devices (aka RAID arrays) Usage: mdadm --create device options... Create a new array from unused devices. # 使用空闲的设备创建一个新阵列 mdadm --assemble device options... Assemble a previously created array. # 组装之前创建的阵列 mdadm --build device options... Create or assemble an array without metadata. # 创建或组装一个没有元数据的阵列 mdadm --manage device options... make changes to an existing array. # 对现有阵列进行更改,比如增加热备磁盘或者设置某个磁盘失效,然后从阵列中删除这个磁盘 mdadm --misc options... devices report on or modify various md related devices. # 报告或修改各种md相关设备,比如查询阵列或者设备的状态信息 mdadm --grow options device resize/reshape an active array # 调整/重塑一个活动阵列,改变阵列中每个设备被使用的容量或阵列中的设备的数目 mdadm --incremental device add/remove a device to/from an array as appropriate # 根据需要在阵列中添加/删除一个设备 mdadm --monitor options... Monitor one or more array for significant changes. # 监视一个或多个阵列,查看是否有重大更改。 mdadm device options... Shorthand for --manage. Any parameter that does not start with '-' is treated as a device name or, for --examine-bitmap, a file name. The first such name is often the name of an md device. Subsequent names are often names of component devices. For detailed help on the above major modes use --help after the mode e.g. mdadm --assemble --help For general help on options use mdadm --help-options [root@localhost ~]# mdadm --help-options Any parameter that does not start with '-' is treated as a device name or, for --examine-bitmap, a file name. The first such name is often the name of an md device. Subsequent names are often names of component devices. Some common options are: --help -h : General help message or, after above option, mode specific help message --help-options : This help message --version -V : Print version information for mdadm --verbose -v : Be more verbose about what is happening --quiet -q : Don`t print un-necessary messages --brief -b : Be less verbose, more brief --export -Y : With --detail, --detail-platform or --examine use key=value format for easy import into environment --force -f : Override normal checks and be more forceful --assemble -A : Assemble an array --build -B : Build an array without metadata --create -C : Create a new array --detail -D : Display details of an array --examine -E : Examine superblock on an array component --examine-bitmap -X: Display the detail of a bitmap file --examine-badblocks: Display list of known bad blocks on device --monitor -F : monitor (follow) some arrays --grow -G : resize/ reshape and array --incremental -I : add/remove a single device to/from an array as appropriate --query -Q : Display general information about how a device relates to the md driver --auto-detect : Start arrays auto-detected by the kernel ``` ## 创建阵列 ### 创建阵列帮助 ```bash [root@localhost ~]# mdadm -C --help Usage: mdadm --create device --chunk=X --level=Y --raid-devices=Z devices Options that are valid with --create (-C) are: --bitmap= -b : Create a bitmap for the array with the given filename : or an internal bitmap if 'internal' is given --chunk= -c : chunk size in kibibytes --rounding= : rounding factor for linear array (==chunk size) --level= -l : raid level: 0,1,4,5,6,10,linear,multipath and synonyms --parity= -p : raid5/6 parity algorithm: {left,right}-{,a}symmetric --layout= : same as --parity, for RAID10: [fno]NN --raid-devices= -n : number of active devices in array --spare-devices= -x : number of spare (eXtra) devices in initial array --size= -z : Size (in K) of each drive in RAID1/4/5/6/10 - optional --data-offset= : Space to leave between start of device and start : of array data. --force -f : Honour devices as listed on command line. Don`t : insert a missing drive for RAID5. --run -R : insist of running the array even if not all : devices are present or some look odd. --readonly -o : start the array readonly - not supported yet. --name= -N : Textual name for array - max 32 characters --bitmap-chunk= : bitmap chunksize in Kilobytes. --delay= -d : bitmap update delay in seconds. --write-journal= : Specify journal device for RAID-4/5/6 array --consistency-policy= : Specify the policy that determines how the array -k : maintains consistency in case of unexpected shutdown. ``` ### 创建raid5 **`mdadm -C /dev/md0 -l5 -n4 -x1 /dev/sd[b-f]1`** ```bash [root@localhost ~]# mdadm --create /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. # 简写 [root@localhost ~]# mdadm -C /dev/md0 -l5 -n4 -x1 /dev/sd[b-f]1 ``` ### 查看阵列详情 **`mdadm -D /dev/md0`** ```bash [root@localhost ~]# fdisk -l /dev/md0 磁盘 /dev/md0:3211 MB, 3211788288 字节,6273024 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):524288 字节 / 1572864 字节 # 查看阵列详情 [root@localhost ~]# mdadm --detail /dev/md0 [root@localhost ~]# mdadm -D /dev/md0 # 简写 /dev/md0: # raid设备文件名 Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 # 创建时间 Raid Level : raid5 # raid等级 Array Size : 3136512 (2.99 GiB 3.21 GB) # raid可用磁盘大小 Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) # 每个磁盘可用容量 Raid Devices : 4 # 用做raid的磁盘数量 Total Devices : 5 # 全部磁盘数量 Persistence : Superblock is persistent Update Time : Wed Mar 4 09:18:26 2020 State : clean Active Devices : 4 # 激活raid磁盘数量 Working Devices : 5 # 可工作磁盘数量 Failed Devices : 0 # 故障磁盘数量 Spare Devices : 1 # 热备磁盘数量 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b # 此设备(raid)的标识符 Events : 18 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 # 阵列磁盘 1 8 33 1 active sync /dev/sdc1 2 8 49 2 active sync /dev/sdd1 5 8 65 3 active sync /dev/sde1 4 8 81 - spare /dev/sdf1 # 热备磁盘 # 还可以通过下面的文件来查看系统软件磁盘阵列的情况 [root@localhost ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sde1[5] sdf1[4](S) sdd1[2] sdc1[1] sdb1[0] # md0使用了raid5,S为热备盘,其他表示阵列硬盘 3136512 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU] # 3136512个block(每个block单位为1k),所以总容量约为3.21GB。 # 使用raid5等级,写入磁盘的小区块(chunk)大小为512k,使用algorithm 2磁盘阵列算法。 # [m/n]代表此数组需要m个设备,且n个设备是正常运行的。因此本md0需要4个设备且这4个设备正常运行。 # 后面的[UUUU]代表的是四个所需的设备启动情况。U代表正常运作。若为_则代表不正常。 unused devices: <none> ``` ### 格式化与挂载使用raid **`mkfs -t ext3 /dev/md0`** ```bash [root@localhost ~]# mkfs 用法: mkfs [选项] [-t <类型>] [文件系统选项] <设备> [<大小>] 选项: -t, --type=<类型> 文件系统类型;若不指定,将使用 ext2 fs-options 实际文件系统构建程序的参数 <设备> 要使用设备的路径 <大小> 要使用设备上的块数 -V, --verbose 解释正在进行的操作; 多次指定 -V 将导致空运行(dry-run) -V, --version 显示版本信息并退出 将 -V 作为 --version 选项时必须是惟一选项 -h, --help 显示此帮助并退出 更多信息请参阅 mkfs(8)。 ``` 使用mkfs格式化md0 ```bash [root@localhost ~]# mkfs -t ext3 /dev/md0 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=128 blocks, Stripe width=384 blocks 196224 inodes, 784128 blocks 39206 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=805306368 24 block groups 32768 blocks per group, 32768 fragments per group 8176 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (16384 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 ``` 创建挂载点,并将md0挂载 ```bash [root@localhost ~]# mkdir /mnt/raid5 # 挂载 [root@localhost ~]# mount /dev/md0 /mnt/raid5/ # 查看分区信息 [root@localhost ~]# df -h /mnt/raid5/ 文件系统 容量 已用 可用 已用% 挂载点 /dev/md0 2.9G 4.6M 2.8G 1% /mnt/raid5 ``` ### 开机启动raid并自动挂载 设置开机启动raid ```bash # 获取设备md0的UUID [root@localhost ~]# mdadm -D /dev/md0 | grep -i uuid UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b [root@localhost ~]# vim /etc/mdadm.conf # 修改mdadm默认的配置文件,没有就新增;新建配置文件,写入下面的内容 [root@localhost ~]# cat /etc/mdadm.conf ARRAY /dev/md0 UUID=9e591745:7b4f4aa8:94168959:fc32ba2b ``` 设置自动挂载 ```bash [root@localhost ~]# vim /etc/fstab # 编辑fstab文件,添加下面的行 [root@localhost ~]# cat /etc/fstab | grep md0 /dev/md0 /mnt/raid5 ext3 defaults 0 0 ``` 测试reboot后挂载请况 ```bash # 重启后查看 [root@localhost ~]# df -h /dev/md0 文件系统 容量 已用 可用 已用% 挂载点 /dev/md0 2.9G 4.6M 2.8G 1% /mnt/raid5 ``` ## 模拟raid错误 在raid分区中随意添加一些文件 ```bash [root@localhost ~]# cd /mnt/raid5/ [root@localhost raid5]# touch a.sh [root@localhost raid5]# touch b.py [root@localhost raid5]# mkdir d [root@localhost raid5]# ll 总用量 20 -rw-r--r--. 1 root root 0 3月 4 10:29 a.sh -rw-r--r--. 1 root root 0 3月 4 10:29 b.py drwxr-xr-x. 2 root root 4096 3月 4 10:29 d drwx------. 2 root root 16384 3月 4 09:47 lost+found ``` ### 管理阵列帮助 ```bash [root@localhost ~]# mdadm --manage --help Options that are valid with management mode are: --add -a : hotadd subsequent devices to the array # 向阵列中添加参数指定的设备 --re-add : subsequent devices are re-added if there were : recent members of the array --remove -r : remove subsequent devices, which must not be active # 将参数指定的空闲设备从阵列中移出去 --fail -f : mark subsequent devices a faulty # 将参数指定的设备标记为出错状态 --set-faulty : same as --fail --replace : mark device(s) to be replaced by spares. Once : replacement completes, device will be marked faulty --with : Indicate which spare a previous '--replace' should : prefer to use --run -R : start a partially built array --stop -S : deactivate array, releasing all resources --readonly -o : mark array as readonly --readwrite -w : mark array as readwrite ``` ### 模拟标记错误硬盘 **`mdadm --manage /dev/md0 --fail /dev/sdd1`** ```bash # 当前阵列状态 [root@localhost ~]# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 5 Persistence : Superblock is persistent Update Time : Wed Mar 4 10:29:50 2020 State : clean Active Devices : 4 Working Devices : 5 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 20 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 2 8 49 2 active sync /dev/sdd1 5 8 65 3 active sync /dev/sde1 4 8 81 - spare /dev/sdf1 # 标记错误磁盘 [root@localhost ~]# mdadm --manage /dev/md0 --fail /dev/sdd1 mdadm: set /dev/sdd1 faulty in /dev/md0 # 查看状态 [root@localhost ~]# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 5 Persistence : Superblock is persistent Update Time : Wed Mar 4 10:41:38 2020 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 1 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 39 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 4 8 81 2 active sync /dev/sdf1 5 8 65 3 active sync /dev/sde1 2 8 49 - faulty /dev/sdd1 ``` 标记错误磁盘后 ```bash Active Devices : 4 -> 4 Working Devices : 5 -> 4 Failed Devices : 0 -> 1 Spare Devices : 1 -> 0 ``` 说明某一块磁盘失效后,不会影响raid5的功能,并且`spare`的磁盘会自动加入到raid中,然后失效磁盘会被标记为`faulty`。并且资料无损是。 ```bash [root@localhost ~]# ls -l /mnt/raid5/ 总用量 20 -rw-r--r--. 1 root root 0 3月 4 10:29 a.sh -rw-r--r--. 1 root root 0 3月 4 10:29 b.py drwxr-xr-x. 2 root root 4096 3月 4 10:29 d drwx------. 2 root root 16384 3月 4 09:47 lost+found ``` ### 移除错误硬盘 **`mdadm --manage /dev/md0 --remove /dev/sdd1`** 移除已损坏的磁盘,添加一块新硬盘作为热备盘 ```bash # 模拟移除故障盘 [root@localhost ~]# mdadm --manage /dev/md0 --remove /dev/sdd1 mdadm: hot removed /dev/sdd1 from /dev/md0 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Update Time : Wed Mar 4 10:50:09 2020 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 40 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 4 8 81 2 active sync /dev/sdf1 5 8 65 3 active sync /dev/sde1 # 可以看到故障盘已被移除 ``` ### 添加新硬盘 **`mdadm --manage /dev/md0 --add /dev/sdd1`** 为了方便,不在新增磁盘或者分区,直接使用移除的分区重新添加。**在实际环境中sdd1已经是另一块完好的硬盘了**。 ```bash # 更换一块硬盘并加入到阵列热备盘中 [root@localhost ~]# mdadm --manage /dev/md0 --add /dev/sdd1 mdadm: added /dev/sdd1 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 5 Persistence : Superblock is persistent Update Time : Wed Mar 4 10:54:08 2020 State : clean Active Devices : 4 Working Devices : 5 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 41 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 4 8 81 2 active sync /dev/sdf1 5 8 65 3 active sync /dev/sde1 6 8 49 - spare /dev/sdd1 ``` ## 测试阵列添加多块热备 ### 添加磁盘sdg1 ```bash [root@localhost ~]# fdisk /dev/sd sda sda1 sda2 sdb sdb1 sdc sdc1 sdd sdd1 sde sde1 sdf sdf1 sdg [root@localhost ~]# fdisk /dev/sdg 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x8a6fb4d2 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p 分区号 (1-4,默认 1): 起始 扇区 (2048-2097151,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151): 将使用默认值 2097151 分区 1 已设置为 Linux 类型,大小设为 1023 MiB 命令(输入 m 获取帮助):t 已选择分区 1 Hex 代码(输入 L 列出所有代码):fd 已将分区“Linux”的类型更改为“Linux raid autodetect” 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 ``` ### sdg1添加到阵列(2块热备) ```bash [root@localhost ~]# mdadm --manage /dev/md0 --add /dev/sdg1 mdadm: added /dev/sdg1 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 6 Persistence : Superblock is persistent Update Time : Wed Mar 4 11:28:20 2020 State : clean Active Devices : 4 Working Devices : 6 Failed Devices : 0 Spare Devices : 2 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 42 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 4 8 81 2 active sync /dev/sdf1 5 8 65 3 active sync /dev/sde1 6 8 49 - spare /dev/sdd1 7 8 97 - spare /dev/sdg1 ``` ### sdc1标记错误(降级恢复,剩1块热备) ```bash [root@localhost ~]# mdadm --manage /dev/md0 --fail /dev/sdc1 mdadm: set /dev/sdc1 faulty in /dev/md0 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 6 Persistence : Superblock is persistent Update Time : Wed Mar 4 11:29:34 2020 State : clean, degraded, recovering Active Devices : 3 Working Devices : 5 Failed Devices : 1 Spare Devices : 2 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Rebuild Status : 90% complete Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 58 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 7 8 97 1 spare rebuilding /dev/sdg1 4 8 81 2 active sync /dev/sdf1 5 8 65 3 active sync /dev/sde1 1 8 33 - faulty /dev/sdc1 6 8 49 - spare /dev/sdd1 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 6 Persistence : Superblock is persistent Update Time : Wed Mar 4 11:29:35 2020 State : clean Active Devices : 4 Working Devices : 5 Failed Devices : 1 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 61 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 7 8 97 1 active sync /dev/sdg1 4 8 81 2 active sync /dev/sdf1 5 8 65 3 active sync /dev/sde1 1 8 33 - faulty /dev/sdc1 6 8 49 - spare /dev/sdd1 ``` ### sde1标记错误(降级恢复,剩0块热备) ```bash [root@localhost ~]# mdadm --manage /dev/md0 --fail /dev/sde1 mdadm: set /dev/sde1 faulty in /dev/md0 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 6 Persistence : Superblock is persistent Update Time : Wed Mar 4 11:31:33 2020 State : clean, degraded, recovering Active Devices : 3 Working Devices : 4 Failed Devices : 2 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Rebuild Status : 57% complete Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 72 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 7 8 97 1 active sync /dev/sdg1 4 8 81 2 active sync /dev/sdf1 6 8 49 3 spare rebuilding /dev/sdd1 1 8 33 - faulty /dev/sdc1 5 8 65 - faulty /dev/sde1 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 6 Persistence : Superblock is persistent Update Time : Wed Mar 4 11:31:36 2020 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 2 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 80 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 7 8 97 1 active sync /dev/sdg1 4 8 81 2 active sync /dev/sdf1 6 8 49 3 active sync /dev/sdd1 1 8 33 - faulty /dev/sdc1 5 8 65 - faulty /dev/sde1 ``` ### sdb1标记错误(降级,无热备不恢复) ```bash [root@localhost ~]# mdadm --manage /dev/md0 --fail /dev/sdb1 mdadm: set /dev/sdb1 faulty in /dev/md0 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 6 Persistence : Superblock is persistent Update Time : Wed Mar 4 11:32:08 2020 State : clean, degraded Active Devices : 3 Working Devices : 3 Failed Devices : 3 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 82 Number Major Minor RaidDevice State - 0 0 0 removed 7 8 97 1 active sync /dev/sdg1 4 8 81 2 active sync /dev/sdf1 6 8 49 3 active sync /dev/sdd1 0 8 17 - faulty /dev/sdb1 1 8 33 - faulty /dev/sdc1 5 8 65 - faulty /dev/sde1 [root@localhost ~]# ls -l /mnt/raid5/ 总用量 20 -rw-r--r--. 1 root root 0 3月 4 10:29 a.sh -rw-r--r--. 1 root root 0 3月 4 10:29 b.py drwxr-xr-x. 2 root root 4096 3月 4 10:29 d drwx------. 2 root root 16384 3月 4 09:47 lost+found ``` ### sdb1恢复硬盘后添加(添加磁盘,恢复) ```bash [root@localhost ~]# mdadm --manage /dev/md0 --remove /dev/sdb1 mdadm: hot removed /dev/sdb1 from /dev/md0 [root@localhost ~]# mdadm --manage /dev/md0 --add /dev/sdb1 mdadm: added /dev/sdb1 [root@localhost ~]# ls -l /mnt/raid5/ 总用量 20 -rw-r--r--. 1 root root 0 3月 4 10:29 a.sh -rw-r--r--. 1 root root 0 3月 4 10:29 b.py drwxr-xr-x. 2 root root 4096 3月 4 10:29 d drwx------. 2 root root 16384 3月 4 09:47 lost+found [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 6 Persistence : Superblock is persistent Update Time : Wed Mar 4 11:34:06 2020 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 2 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 102 Number Major Minor RaidDevice State 8 8 17 0 active sync /dev/sdb1 7 8 97 1 active sync /dev/sdg1 4 8 81 2 active sync /dev/sdf1 6 8 49 3 active sync /dev/sdd1 1 8 33 - faulty /dev/sdc1 5 8 65 - faulty /dev/sde1 ``` ### sdb1、sdg1标记错误(阵列失败) ```bash [root@localhost ~]# mdadm --manage /dev/md0 --fail /dev/sdb1 mdadm: set /dev/sdb1 faulty in /dev/md0 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 6 Persistence : Superblock is persistent Update Time : Wed Mar 4 11:35:13 2020 State : clean, degraded Active Devices : 3 Working Devices : 3 Failed Devices : 3 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 104 Number Major Minor RaidDevice State - 0 0 0 removed 7 8 97 1 active sync /dev/sdg1 4 8 81 2 active sync /dev/sdf1 6 8 49 3 active sync /dev/sdd1 1 8 33 - faulty /dev/sdc1 5 8 65 - faulty /dev/sde1 8 8 17 - faulty /dev/sdb1 [root@localhost ~]# mdadm --manage /dev/md0 --fail /dev/sdg1 mdadm: set /dev/sdg1 faulty in /dev/md0 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Wed Mar 4 09:18:20 2020 Raid Level : raid5 Array Size : 3136512 (2.99 GiB 3.21 GB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 4 Total Devices : 6 Persistence : Superblock is persistent Update Time : Wed Mar 4 11:35:22 2020 State : clean, FAILED Active Devices : 2 Working Devices : 2 Failed Devices : 4 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 9e591745:7b4f4aa8:94168959:fc32ba2b Events : 106 Number Major Minor RaidDevice State - 0 0 0 removed - 0 0 1 removed 4 8 81 2 active sync /dev/sdf1 6 8 49 3 active sync /dev/sdd1 1 8 33 - faulty /dev/sdc1 5 8 65 - faulty /dev/sde1 7 8 97 - faulty /dev/sdg1 8 8 17 - faulty /dev/sdb1 ``` ### 总结 - 阵列设置好阵列盘后,再添加硬盘会自动设置为热备盘; - 当阵列盘故障时,如果有热备盘,阵列会降级并自动恢复; - 当阵列盘故障时,如果没有热备盘,阵列处于降级状态,不会自动恢复; - 如果新添加盘后,自动添加到阵列盘中进行恢复; - 如果阵列中同一时间段故障两块及以上,而没有热备盘,就会导致阵列不可用。 ## 关闭raid的方法 1. 取消挂载`umount /dev/md0`; 2. 编辑`/etc/fstab`,删除`/dev/md0`所在的行; 3. 使用`mdadm --stop /dev/md0`关闭md0; 4. 查看`cat /proc/mdstat`,如果没有raid数据表示关闭成功; 5. 修改`/etc/mdadm.conf`,删除`/dev/md0`所在的行。 **Raid不是备份,重要数据需要做好多设备备份!!!**

很赞哦! (0)

文章交流

  • emoji
0人参与,0条评论

当前用户

未登录,点击   登录

站点信息

  • 建站时间:网站已运行655天
  • 系统信息:Linux
  • 后台程序:Python: 3.6.6
  • 网站框架:Django: 2.2.12
  • 文章统计:235 篇
  • 文章评论:40 条
  • 腾讯分析网站概况-腾讯分析
  • 百度统计网站概况-百度统计
  • 公众号:微信扫描二维码,关注我们
  • QQ群:QQ加群,下载网站的学习源码
返回
顶部
标题 换行 登录
网站