Linux|磁盘管理-RAID

磁盘管理-RAID 概述

  • RAID:(Redundant Array of Independent Disk )独立冗余磁盘阵列
  • RAID最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。
  • RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。
  • RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能,能够确保数据安全性,易于管理,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。
常见RAID级别 RAID0
  • 至少需要两块磁盘
  • 数据条带化分布到磁盘(如果说需要存储的数据是12345678,那么可能是1357存储在disk1上面,2468存储在disk2上面)
  • 高的读写性能,100%高存储空间利用率
  • 没有数据冗余性,一块磁盘故障,数据将无法恢复
  • 应用于:对性能要求高但对数据安全性和可靠性要求不高的场景,比如音频、视频等的存储
【Linux|磁盘管理-RAID】Linux|磁盘管理-RAID
文章图片

RAID1
  • 至少需要两块磁盘
  • 数据镜像备份写到磁盘上(工作盘和镜像盘)
  • 可靠性高,磁盘利用率为50%
  • 一块磁盘故障,不会影响数据的读写
  • 读性能可以,但写性能不佳
  • 应用于:对数据安全可靠要求较高的场景,比如邮件系统、交易系统等。
Linux|磁盘管理-RAID
文章图片

RAID5
  • 至少需要3块磁盘
  • 数据条带化存储在磁盘,读写性能好,磁盘利用率为(n-1)/n
  • 以奇偶校验(分散)做数据冗余
  • 一块磁盘故障,可根据其他数据块和对应的校验数据重构损坏数据(消耗性能)
  • 是目前综合性能最佳的数据保护解决方案,兼顾了存储性能、数据安全和存储成本等各方面因素
  • 适用于大部分的应用场景
Linux|磁盘管理-RAID
文章图片

RAID6
  • 至少需要4块磁盘
  • 数据条带化存储在磁盘,读取性能好,容错能力强
  • 采用双重校验方式保证数据的安全性
  • 如果2块磁盘同时故障,可以通过两个校验数据来重建两个磁盘的数据
  • 成本要比其他等级高,并且更复杂
  • 一般用于对数据安全性要求非常高的场合
Linux|磁盘管理-RAID
文章图片

RAID10
  • RAID10是raid1+raid0的组合
  • 至少需要4块磁盘
  • 兼顾数据的冗余(raid1镜像)和读写性能(raid0数据条带化)
  • 磁盘利用率为50%,成本较高
    Linux|磁盘管理-RAID
    文章图片
RAID01
  • RAID10是raid0+raid1的组合
  • 至少需要4块磁盘
  • 兼顾数据的冗余(raid1镜像)和读写性能(raid0数据条带化)
  • 磁盘利用率为50%,成本较高
Linux|磁盘管理-RAID
文章图片

总结
类型 读性能 写性能 可靠性 磁盘利用率 成本
RAID0 最好 最好 最低 100% 较低
RAID1 正常 两份数据 50%
RAID5 近似RAID0 多了校验 介于RAID0和RAID1之间 (n-1)/n 介于RAID0和RAID1之间
RAID6 近似RAID0 多了双重校验 大于RAID5 (n-2)/n 大于RAID1
RAID10 等于RAID0 等于RAID1 50% 最高
RAID01 等于RAID0 等于RAID1 50% 最高
软硬RAID 软RAID
软RAID运行于操作系统底层,将SCSI或者IDE控制器提交上来的物理磁盘,虚拟成虚拟磁盘,再提交给管理程序来进行管理。
软RAID有以下特点:
  • 占用内存空间
  • 占用CPU资源
  • 如果程序或者操作系统故障就无法运行
  • 现在企业很少用软raid。
硬RAID
通过用硬件来实现RAID功能的就是硬RAID,独立的RAID卡,主板集成的RAID芯片都是硬RAID。
RAID卡就是用来实现RAID功能的板卡,通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列零组件构成的。
不同的RAID卡支持的RAID功能不同。支持RAlD0、RAID1、RAID5、RAID10不等。
组件RAID阵列 环境准备
  • 添加一块磁盘(或者直接添加多块磁盘,不分区,直接使用)
  • 将一个大容量磁盘(20G)分区,形成多个(10)小分区
[root@server1 ~]# fdisk /dev/sdc [root@server1 ~]# partprobe /dev/sdc [root@server1 ~]# lsblk NAMEMAJ:MIN RMSIZE RO TYPE MOUNTPOINT sda8:0020G0 disk ├─sda18:101G0 part /boot └─sda28:2019G0 part ├─centos-root 253:0017G0 lvm/ └─centos-swap 253:102G0 lvm[SWAP] sdb8:1605G0 disk └─sdb18:1702G0 part sdc8:32020G0 disk ├─sdc18:3302G0 part ├─sdc28:3402G0 part ├─sdc38:3502G0 part ├─sdc48:3601K0 part ├─sdc58:3702G0 part ├─sdc68:3802G0 part ├─sdc78:3902G0 part ├─sdc88:4002G0 part ├─sdc98:4102G0 part ├─sdc108:4202G0 part └─sdc118:4302G0 part sr011:01973M0 rom

  • 安装mdadm工具
[root@server1 ~]# yum install -y mdadm

参数 作用
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘阵列
-x 指定热备盘数量
组建RAID0
创建raid0 [root@server1 ~]# mdadm -C /dev/md0 -l 0 -n 2 /dev/sdc1 /dev/sdc2 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. [root@server1 ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Thu Sep2 23:25:16 2021 Raid Level : raid0 Array Size : 4188160 (3.99 GiB 4.29 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistentUpdate Time : Thu Sep2 23:25:16 2021 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0Chunk Size : 512KConsistency Policy : noneName : server1:0(local to host server1) UUID : 2e5a48fa:87654810:3460dfd6:1d4951d5 Events : 0NumberMajorMinorRaidDevice State 08330active sync/dev/sdc1 18341active sync/dev/sdc2格式化 [root@server1 ~]# mkfs.xfs /dev/md0 meta-data=https://www.it610.com/dev/md0isize=512agcount=8, agsize=130944 blks =sectsz=512attr=2, projid32bit=1 =crc=1finobt=0, sparse=0 data=bsize=4096blocks=1047040, imaxpct=25 =sunit=128swidth=256 blks naming=version 2bsize=4096ascii-ci=0 ftype=1 log=internal logbsize=4096blocks=2560, version=2 =sectsz=512sunit=8 blks, lazy-count=1 realtime =noneextsz=4096blocks=0, rtextents=0挂载 [root@server1 ~]# mkdir /mnt/mnt_md0 [root@server1 ~]# mount /dev/md0 /mnt/mnt_md0/测试 #复制终端,用于监测 [root@server1 ~]# yum install -y sysstat [root@server1 ~]# iostat -m -d /dev/sdc[12] 3 [root@server1 ~]# dd if=/dev/zero of=/mnt/mnt_md0/bigfile bs=1M count=1024Device:tpsMB_read/sMB_wrtn/sMB_readMB_wrtn sdc1156.000.0077.840233 sdc2155.670.0077.830233Device:tpsMB_read/sMB_wrtn/sMB_readMB_wrtn sdc1140.330.0070.170210 sdc2140.330.0070.170210Device:tpsMB_read/sMB_wrtn/sMB_readMB_wrtn sdc145.330.0022.67068 sdc245.330.0022.67068永久保存RAID0信息 [root@server1 ~]# echo"/dev/md0 /mnt/mnt_md0 xfs defaults 0 0" >> /etc/fstab

组建RAID1
创建raid1 [root@server1 ~]# mdadm -C /dev/md1 -l 1 -n 2 /dev/sdc3 /dev/sdc5 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=https://www.it610.com/article/0.90 Continue creating array? y #输入y,同意即可 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started.查看状态信息 [root@server1 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] md1 : active raid1 sdc5[1] sdc3[0] 2094080 blocks super 1.2 [2/2] [UU]md0 : active raid0 sdc2[1] sdc1[0] 4188160 blocks super 1.2 512k chunksunused devices: [root@server1 ~]# mdadm -D /dev/md1 /dev/md1: Version : 1.2 Creation Time : Thu Sep2 23:43:43 2021 Raid Level : raid1 Array Size : 2094080 (2045.00 MiB 2144.34 MB) Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistentUpdate Time : Thu Sep2 23:43:54 2021 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0Consistency Policy : resyncName : server1:1(local to host server1) UUID : bc67728d:e1c60a3c:8d445c5d:67a55444 Events : 17NumberMajorMinorRaidDevice State 08350active sync/dev/sdc3 18371active sync/dev/sdc5格式化 [root@server1 ~]# mkfs.xfs /dev/md1 meta-data=https://www.it610.com/dev/md1isize=512agcount=4, agsize=130880 blks =sectsz=512attr=2, projid32bit=1 =crc=1finobt=0, sparse=0 data=bsize=4096blocks=523520, imaxpct=25 =sunit=0swidth=0 blks naming=version 2bsize=4096ascii-ci=0 ftype=1 log=internal logbsize=4096blocks=2560, version=2 =sectsz=512sunit=0 blks, lazy-count=1 realtime =noneextsz=4096blocks=0, rtextents=0挂载 [root@server1 ~]# mkdir /mnt/mnt_md1 [root@server1 ~]# mount /dev/md1 /mnt/mnt_md1 [root@server1 ~]# df -Th 文件系统类型容量已用可用 已用% 挂载点 devtmpfsdevtmpfs899M0899M0% /dev tmpfstmpfs910M0910M0% /dev/shm tmpfstmpfs910M9.6M901M2% /run tmpfstmpfs910M0910M0% /sys/fs/cgroup /dev/mapper/centos-root xfs17G1.9G16G11% / /dev/sda1xfs1014M194M821M20% /boot tmpfstmpfs182M0182M0% /run/user/0 /dev/md0xfs4.0G33M4.0G1% /mnt/mnt_md0 /dev/md1xfs2.0G33M2.0G2% /mnt/mnt_md1测试(热插拔) #模拟数据 [root@server1 ~]# touch /mnt/mnt_md1/file{1..5} #模拟故障 [root@server1 ~]# mdadm /dev/md1 -f /dev/sdc3 mdadm: set /dev/sdc3 faulty in /dev/md1 [root@server1 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] md1 : active raid1 sdc5[1] sdc3[0](F)F表示失效 2094080 blocks super 1.2 [2/1] [_U] _表示有一块盘失效md0 : active raid0 sdc2[1] sdc1[0] 4188160 blocks super 1.2 512k chunksunused devices: [root@server1 ~]# mdadm -D /dev/md1 /dev/md1: Version : 1.2 Creation Time : Thu Sep2 23:43:43 2021 Raid Level : raid1 Array Size : 2094080 (2045.00 MiB 2144.34 MB) Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistentUpdate Time : Thu Sep2 23:57:53 2021 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 1 Spare Devices : 0Consistency Policy : resyncName : server1:1(local to host server1) UUID : bc67728d:e1c60a3c:8d445c5d:67a55444 Events : 19NumberMajorMinorRaidDevice State -000removed 18371active sync/dev/sdc50835-faulty/dev/sdc3#移除失效盘 [root@server1 ~]# mdadm /dev/md1 -r /dev/sdc3 mdadm: hot removed /dev/sdc3 from /dev/md1 [root@server1 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] md1 : active raid1 sdc5[1] 2094080 blocks super 1.2 [2/1] [_U]md0 : active raid0 sdc2[1] sdc1[0] 4188160 blocks super 1.2 512k chunksunused devices: #不影响读写数据 [root@server1 ~]# touch /mnt/mnt_md1/test1 [root@server1 ~]# ls /mnt/mnt_md1 file1file2file3file4file5test1 #加入新磁盘(热插) [root@server1 ~]# mdadm /dev/md1 -a /dev/sdc6 mdadm: added /dev/sdc6 [root@server1 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] md1 : active raid1 sdc6[2] sdc5[1] 2094080 blocks super 1.2 [2/2] [UU]md0 : active raid0 sdc2[1] sdc1[0] 4188160 blocks super 1.2 512k chunksunused devices: 永久保存RAID1信息 [root@server1 ~]# echo "/dev/md1 /mnt/mnt_md1 xfs defaults 0 0" >> /etc/fstab

组建RAID5
创建RAID5(预留一块热备盘) [root@server1 ~]# mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sdc{7,8,9,10} mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md5 started. [root@server1 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] md5 : active raid5 sdc9[4] sdc10[3](S) sdc8[1] sdc7[0] 4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]md1 : active raid1 sdc6[2] sdc5[1] 2094080 blocks super 1.2 [2/2] [UU]md0 : active raid0 sdc2[1] sdc1[0] 4188160 blocks super 1.2 512k chunksunused devices: [root@server1 ~]# mdadm -D /dev/md5 /dev/md5: Version : 1.2 Creation Time : Fri Sep3 00:11:41 2021 Raid Level : raid5 Array Size : 4188160 (3.99 GiB 4.29 GB) Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistentUpdate Time : Fri Sep3 00:11:54 2021 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 热备盘Layout : left-symmetric Chunk Size : 512KConsistency Policy : resyncName : server1:5(local to host server1) UUID : 0536fd77:e916c80b:f7e945cf:a4d4d0f2 Events : 18NumberMajorMinorRaidDevice State 08390active sync/dev/sdc7 18401active sync/dev/sdc8 48412active sync/dev/sdc93842-spare/dev/sdc10格式化 [root@server1 ~]# mkfs.ext4 /dev/md5挂载 [root@server1 ~]# mount /dev/md5 /mnt/mnt_md5 [root@server1 ~]# df -Th 文件系统类型容量已用可用 已用% 挂载点 devtmpfsdevtmpfs899M0899M0% /dev tmpfstmpfs910M0910M0% /dev/shm tmpfstmpfs910M9.6M901M2% /run tmpfstmpfs910M0910M0% /sys/fs/cgroup /dev/mapper/centos-root xfs17G1.9G16G11% / /dev/sda1xfs1014M194M821M20% /boot tmpfstmpfs182M0182M0% /run/user/0 /dev/md0xfs4.0G33M4.0G1% /mnt/mnt_md0 /dev/md1xfs2.0G33M2.0G2% /mnt/mnt_md1 /dev/md5ext43.9G16M3.7G1% /mnt/mnt_md5测试 #模拟故障 [root@server1 ~]# mdadm /dev/md5 -f /dev/sdc7 mdadm: set /dev/sdc7 faulty in /dev/md5 [root@server1 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] md5 : active raid5 sdc9[4] sdc10[3] sdc8[1] sdc7[0](F) 4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU][root@server1 ~]# mdadm -D /dev/md5 /dev/md5: Version : 1.2 Creation Time : Fri Sep3 00:11:41 2021 Raid Level : raid5 Array Size : 4188160 (3.99 GiB 4.29 GB) Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistentUpdate Time : Fri Sep3 00:19:14 2021 State : clean Active Devices : 3 Working Devices : 3 Failed Devices : 1 Spare Devices : 0Layout : left-symmetric Chunk Size : 512KConsistency Policy : resyncName : server1:5(local to host server1) UUID : 0536fd77:e916c80b:f7e945cf:a4d4d0f2 Events : 37NumberMajorMinorRaidDevice State 38420active sync/dev/sdc10 18401active sync/dev/sdc8 48412active sync/dev/sdc90839-faulty/dev/sdc7 #移除失效盘 [root@server1 ~]# mdadm /dev/md5 -r /dev/sdc7 mdadm: hot removed /dev/sdc7 from /dev/md5 [root@server1 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] md5 : active raid5 sdc9[4] sdc10[3] sdc8[1] 4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU][root@server1 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] md5 : active raid5 sdc9[4] sdc10[3] sdc8[1] 4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] #添加热备盘 [root@server1 ~]# mdadm /dev/md5 -a /dev/sdc3 mdadm: added /dev/sdc3 [root@server1 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] md5 : active raid5 sdc3[5](S) sdc9[4] sdc10[3] sdc8[1] 4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]永久保存RAID1信息 [root@server1 ~]# echo "/dev/md5 /mnt/mnt_md5 ext4 defaults 0 0" >> /etc/fstab

RAID停止与启动
停止(以RAID0为例) [root@server1 ~]# umount /mnt/mnt_md0 [root@server1 ~]# mdadm --stop /dev/md0 mdadm: stopped /dev/md0启动 [root@server1 ~]# mdadm -A /dev/md0 /dev/sdc[12] mdadm: /dev/md0 has been started with 2 drives.

RAID删除
#以RAID1为例 解挂 [root@server1 ~]# umount /dev/md1停止运行 [root@server1 ~]# mdadm --stop /dev/md1 mdadm: stopped /dev/md1删除/etc/fstab中的相关内容 [root@server1 ~]# vim /etc/fstab #/dev/md1 /mnt/mnt_md1 ext4 defaults 0 0删除元数据 [root@server1 ~]# mdadm --zero-superblock /dev/sdc[56]

    推荐阅读