Linux|磁盘管理-RAID
磁盘管理-RAID 概述
- RAID:(Redundant Array of Independent Disk )独立冗余磁盘阵列
- RAID最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。
- RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。
- RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能,能够确保数据安全性,易于管理,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。
- 至少需要两块磁盘
- 数据条带化分布到磁盘(如果说需要存储的数据是12345678,那么可能是1357存储在disk1上面,2468存储在disk2上面)
- 高的读写性能,100%高存储空间利用率
- 没有数据冗余性,一块磁盘故障,数据将无法恢复
- 应用于:对性能要求高但对数据安全性和可靠性要求不高的场景,比如音频、视频等的存储
文章图片
RAID1
- 至少需要两块磁盘
- 数据镜像备份写到磁盘上(工作盘和镜像盘)
- 可靠性高,磁盘利用率为50%
- 一块磁盘故障,不会影响数据的读写
- 读性能可以,但写性能不佳
- 应用于:对数据安全可靠要求较高的场景,比如邮件系统、交易系统等。
文章图片
RAID5
- 至少需要3块磁盘
- 数据条带化存储在磁盘,读写性能好,磁盘利用率为(n-1)/n
- 以奇偶校验(分散)做数据冗余
- 一块磁盘故障,可根据其他数据块和对应的校验数据重构损坏数据(消耗性能)
- 是目前综合性能最佳的数据保护解决方案,兼顾了存储性能、数据安全和存储成本等各方面因素
- 适用于大部分的应用场景
文章图片
RAID6
- 至少需要4块磁盘
- 数据条带化存储在磁盘,读取性能好,容错能力强
- 采用双重校验方式保证数据的安全性
- 如果2块磁盘同时故障,可以通过两个校验数据来重建两个磁盘的数据
- 成本要比其他等级高,并且更复杂
- 一般用于对数据安全性要求非常高的场合
文章图片
RAID10
- RAID10是raid1+raid0的组合
- 至少需要4块磁盘
- 兼顾数据的冗余(raid1镜像)和读写性能(raid0数据条带化)
- 磁盘利用率为50%,成本较高
文章图片
- RAID10是raid0+raid1的组合
- 至少需要4块磁盘
- 兼顾数据的冗余(raid1镜像)和读写性能(raid0数据条带化)
- 磁盘利用率为50%,成本较高
文章图片
总结
类型 | 读性能 | 写性能 | 可靠性 | 磁盘利用率 | 成本 |
---|---|---|---|---|---|
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运行于操作系统底层,将SCSI或者IDE控制器提交上来的物理磁盘,虚拟成虚拟磁盘,再提交给管理程序来进行管理。
软RAID有以下特点:
- 占用内存空间
- 占用CPU资源
- 如果程序或者操作系统故障就无法运行
- 现在企业很少用软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
[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]
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 2020-04-07vue中Axios的封装和API接口的管理
- Linux下面如何查看tomcat已经使用多少线程
- Beego打包部署到Linux
- 全过程工程咨询——时间管理(12)
- 《卓有成效的管理者》第二十二堂课(创造英雄)
- 游乐园系统,助力游乐园管理
- #山言良语#用管理思维百天减肥18斤
- 最有效的时间管理工具(赢效率手册和总结笔记)
- 干货来袭(自我管理(来几款撩人的APP))