当前位置: 首页 > news >正文

Linux RAID 存储技术

环境准备

  • vm虚拟机添加6块SATA硬盘,sdb sdc sdd sde sdf sdg

管理 RAID0

创建 RAID
​#安装mdadm这个工具,它是用来管理 RAID 磁盘阵列的(就像专门用来组装和管理多个硬盘组合的工具)。-y表示自动确认安装,不用手动输入 yes。[root@server ~ 09:20:56]# yum install -y mdadm​#用两块硬盘创建一个 RAID0 阵列:-C /dev/md0:创建一个名为/dev/md0的 RAID 设备--level 0:指定 RAID 级别为 0(把数据拆分到多块硬盘,追求速度)-n 2:使用 2 块硬盘/dev/sd{b,c}:具体用到的硬盘是sdb和sdc(相当于把这两块硬盘合并成一个 "超级硬盘")[root@server ~ 09:28:25]# mdadm -C /dev/md0 --level 0 -n 2 /dev/sd{b,c}​[root@server ~ 09:33:46]# lsblkNAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTsda               8:0    0  200G  0 disk  ├─sda1            8:1    0    1G  0 part  /boot└─sda2            8:2    0   52G  0 part  ├─centos-root 253:0    0   50G  0 lvm   /└─centos-swap 253:1    0    2G  0 lvm   [SWAP]sdb               8:16   0   20G  0 disk  └─md0             9:0    0   40G  0 raid0 sdc               8:32   0   20G  0 disk  └─md0             9:0    0   40G  0 raid0 sdd               8:48   0   20G  0 disk  sde               8:64   0   20G  0 disk  ...... ​#查看刚才创建的md0这个 RAID 阵列的详细信息(比如状态、使用的硬盘、容量等)。[root@server ~ 09:34:01]# mdadm --detail /dev/md0​#专门查看md0这个 RAID 设备的信息(确认它存在且容量正确)[root@server ~ 09:34:53]# lsblk /dev/md0NAME MAJ:MIN RM SIZE RO TYPE  MOUNTPOINTmd0    9:0    0  40G  0 raid0 ​​
格式化和挂载
[root@centos7 ~]# mkfs.xfs /dev/md0#-p级联创建[root@server ~ 09:37:52]# mkdir -p /data/raid0​#/dev/md0 是你创建的 RAID0 阵列(由两块硬盘组合成的 "虚拟硬盘"),它是实际存储数据的地方。#/data/raid0 是一个普通的文件夹(叫 "挂载点"),相当于这个 RAID0 阵列的 "入口"。[root@server ~ 09:38:19]# mount /dev/md0 /data/raid0​[root@server ~ 09:38:52]# df -h /data/raid0文件系统        容量  已用  可用 已用% 挂载点/dev/md0         40G   33M   40G    1% /data/raid0#查看挂载情况[root@server ~ 09:38:59]# lsblk NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTsda               8:0    0  200G  0 disk  ├─sda1            8:1    0    1G  0 part  /boot└─sda2            8:2    0   52G  0 part  ├─centos-root 253:0    0   50G  0 lvm   /└─centos-swap 253:1    0    2G  0 lvm   [SWAP]sdb               8:16   0   20G  0 disk  └─md0             9:0    0   40G  0 raid0 /data/raid0sdc               8:32   0   20G  0 disk  └─md0             9:0    0   40G  0 raid0 /data/raid0#测试查看[root@server ~ 09:39:20]# cp /etc/ho* /data/raid0[root@server ~ 09:40:13]# ls /data/raid0/host.conf  hostname  hosts  hosts.allow  hosts.deny​
删除 RAID
#取消挂载[root@server ~ 09:40:18]# umount /dev/md0#停止md0这个 RAID 阵列(相当于把 "超级硬盘" 拆开)[root@server ~ 09:40:56]# mdadm --stop /dev/md0mdadm: stopped /dev/md0​#清除sdb和sdc上的 RAID 信息(相当于擦掉硬盘上 "属于 RAID" 的标记,让它们变回普通硬盘)[root@server ~ 09:41:10]# mdadm --zero-superblock /dev/sd{b,c}[root@server ~ 09:41:21]# lsblk NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsda               8:0    0  200G  0 disk ├─sda1            8:1    0    1G  0 part /boot└─sda2            8:2    0   52G  0 part ├─centos-root 253:0    0   50G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]sdb               8:16   0   20G  0 disk sdc               8:32   0   20G  0 disk ​

管理 RAID1

创建 RAID
# 创建一个包含2个块设备的raid1设备/dev/md1[root@server ~ 10:03:29]# mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sd{b,c}......sdb               8:16   0   20G  0 disk  └─md1             9:1    0   20G  0 raid1 sdc               8:32   0   20G  0 disk  └─md1             9:1    0   20G  0 raid1 ......#查看详细信息[root@server ~ 10:03:58]# mdadm --detail /dev/md1/dev/md1:Version : 1.2Creation Time : Mon Aug  4 10:03:55 2025Raid Level : raid1......Number   Major   Minor   RaidDevice State0       8       16        0      active sync   /dev/sdb1       8       32        1      active sync   /dev/sdc​​
格式化和挂载
[root@server ~ 10:11:13]# mkfs.xfs /dev/md1 -f​[root@server ~ 10:11:40]# mkdir /data/raid1[root@server ~ 10:11:52]# mount /dev/md1 /data/raid1[root@server ~ 10:12:20]# df -h /data/raid1文件系统        容量  已用  可用 已用% 挂载点/dev/md1         20G   33M   20G    1% /data/raid1​[root@server ~ 10:12:33]# cp /etc/ho* /data/raid1[root@server ~ 10:12:49]# ls /data/raid1/host.conf  hostname  hosts  hosts.allow  hosts.deny​

增加热备盘
#给 RAID1 设备/dev/md1加一个 "备胎" 硬盘/dev/sdd[root@server ~ 10:13:06]# mdadm /dev/md1 --add /dev/sddmdadm: added /dev/sdd[root@server ~ 10:14:12]# mdadm --detail /dev/md1 |tail -5Number   Major   Minor   RaidDevice State0       8       16        0      active sync   /dev/sdb1       8       32        1      active sync   /dev/sdc​2       8       48        -      spare   /dev/sdd# /dev/sdd的状态为spare(备用)​
模拟故障测试热备盘
#手动让/dev/sdc这个硬盘 "故障" --fail[root@server ~ 10:14:20]# mdadm /dev/md1 --fail /dev/sdcmdadm: set /dev/sdc faulty in /dev/md1​[root@server ~ 10:15:06]# mdadm --detail /dev/md1 |tail -5Number   Major   Minor   RaidDevice State0       8       16        0      active sync   /dev/sdb2       8       48        1      spare rebuilding   /dev/sdd​1       8       32        -      faulty   /dev/sdc#正常访问[root@server ~ 10:15:11]# ls /data/raid1/host.conf  hostname  hosts  hosts.allow  hosts.deny​[root@server ~ 10:15:27]# cat /data/raid1/hostname server.lyk.cloud
删除故障磁盘
#把已经故障的/dev/sdc从 RAID1 里移除 --remove[root@server ~ 10:15:32]# mdadm /dev/md1 --remove /dev/sdcmdadm: hot removed /dev/sdc from /dev/md1[root@server ~ 10:16:10]# mdadm --detail /dev/md1 |tail -5Events : 34​Number   Major   Minor   RaidDevice State0       8       16        0      active sync   /dev/sdb2       8       48        1      spare rebuilding   /dev/sdd
删除 RAID
#先取消/dev/md1和/data/raid1的关联
[root@server ~ 10:16:19]# umount /dev/md1#停止/dev/md1这个 RAID1 设备的运行(相当于关闭 RAID 功能)
[root@server ~ 10:17:28]# mdadm --stop /dev/md1
mdadm: stopped /dev/md1#清空/dev/sdb、/dev/sdc、/dev/sdd这三个硬盘里关于 RAID 的配置信息(相当于 "格式化"RAID 标识,以后这些硬盘可以重新用了)
[root@server ~ 10:17:44]# mdadm --zero-superblock /dev/sd{b..d}

管理 RAID5

创建 RAID
# 创建一个包含4个块设备的raid5设备/dev/md2
[root@server ~ 10:28:59]# mdadm --create /dev/md5 --level 5 --raid-devices 4 /dev/sd{b..e}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
查看 RAID
[root@server ~ 10:35:35]# mdadm --detail /dev/md5
.......Rebuild Status : 5% complete#查看同步进度,没同步完设置故障就相当坏两个Number   Major   Minor   RaidDevice State0       8       16        0      active sync   /dev/sdb1       8       32        1      active sync   /dev/sdc2       8       48        2      active sync   /dev/sdd4       8       64        3      spare rebuilding   /dev/sde
格式化和挂载
[root@server ~ 10:46:18]# mkfs.xfs /dev/md5 -f
[root@server ~ 10:46:21]# mkdir /data/raid5
[root@server ~ 10:46:43]# mount /dev/md5 /data/raid5
[root@server ~ 10:46:51]# df -h /data/raid5/
文件系统        容量  已用  可用 已用% 挂载点
/dev/md5         60G   33M   60G    1% /data/raid5
#验证查看
[root@server ~ 10:47:01]#  cp /etc/ho* /data/raid5
[root@server ~ 10:47:26]# ls /data/raid5/
host.conf  hostname  hosts  hosts.allow  hosts.deny
增加热备盘
[root@server ~ 10:47:33]# mdadm /dev/md5 --add /dev/sdf
mdadm: added /dev/sdf
[root@server ~ 10:48:44]# mdadm -D /dev/md5 |tail -7Number   Major   Minor   RaidDevice State0       8       16        0      active sync   /dev/sdb1       8       32        1      active sync   /dev/sdc2       8       48        2      active sync   /dev/sdd4       8       64        3      active sync   /dev/sde5       8       80        -      spare   /dev/sdf
模拟故障
[root@server ~ 10:50:55]# mdadm /dev/md5 --fail /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md5[root@server ~ 10:51:04]# mdadm -D /dev/md5 |tail -7Number   Major   Minor   RaidDevice State5       8       80        0      spare rebuilding   /dev/sdf1       8       32        1      active sync   /dev/sdc2       8       48        2      active sync   /dev/sdd4       8       64        3      active sync   /dev/sde0       8       16        -      faulty   /dev/sdb
#验证查看依然正常      
[root@server ~ 10:51:12]# ls /data/raid5/
host.conf  hostname  hosts  hosts.allow  hosts.deny
[root@server ~ 10:52:08]# cat /data/raid5/hostname 
server.lyk.cloud
删除故障磁盘
[root@server ~ 10:52:12]# mdadm /dev/md5 --remove /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md5[root@server ~ 10:52:47]# mdadm --detail /dev/md5 |tail -7Events : 42Number   Major   Minor   RaidDevice State5       8       80        0      active sync   /dev/sdf1       8       32        1      active sync   /dev/sdc2       8       48        2      active sync   /dev/sdd4       8       64        3      active sync   /dev/sde
扩容 RAID(RAID5可以)
  • 对于raid5,只能扩容,不能减容。

    注意:阵列只有在正常状态下,才能扩容,降级及重构时不允许扩容。

[root@server ~ 10:52:52]# mdadm /dev/md5 --add /dev/sdb /dev/sdg
mdadm: added /dev/sdb
mdadm: added /dev/sdg
[root@server ~ 10:53:40]#  mdadm --detail /dev/md5 |tail -8Number   Major   Minor   RaidDevice State5       8       80        0      active sync   /dev/sdf1       8       32        1      active sync   /dev/sdc2       8       48        2      active sync   /dev/sdd4       8       64        3      active sync   /dev/sde6       8       16        -      spare   /dev/sdb7       8       96        -      spare   /dev/sdg# 设置成员数量为5,-G是grow(扩展)
[root@server ~ 10:53:47]# mdadm -G /dev/md5 --raid-devices 5# 等待重组完成
[root@server ~ 10:55:02]# mdadm --detail /dev/md5
......Reshape Status : 8% completeDelta Devices : 1, (4->5)
......
# 确认 raid 容量:增加了20G
[root@server ~ 10:55:10]# lsblk /dev/md5
NAME MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
md5    9:5    0  80G  0 raid5 /data/raid5# 扩展文件系统
[root@server ~ 10:56:59]# xfs_growfs /data/raid5
meta-data=/dev/md5               isize=512    agcount=16, agsize=982144 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=15714304, imaxpct=25=                       sunit=128    swidth=384 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=7680, version=2=                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 15714304 to 20954112
[root@server ~ 10:57:21]# df -h /data/raid5/
文件系统        容量  已用  可用 已用% 挂载点
/dev/md5         80G   34M   80G    1% /data/raid5
删除 RAID
[root@server ~ 10:57:29]# umount /dev/md5
[root@server ~ 10:58:04]# mdadm --stop /dev/md5
mdadm: stopped /dev/md5
[root@server ~ 10:59:29]# mdadm --zero-superblock /dev/sd{b..g}
http://www.lryc.cn/news/610352.html

相关文章:

  • GaussDB 数据库架构师(十二) 资源规划
  • 用户与组管理命令
  • 小实验:按键点灯(中断法)
  • 【笔记】ROS1|5 ARP攻击Turtlebot3汉堡Burger并解析移动报文【旧文转载】
  • traefik网关鉴权中间件转发multipart/form-data请求的multipart: NextPart: EOF问题
  • LLM大模型时代:生活服务领域的“生存革命“与新生态重构
  • 深度学习-卷积神经网络CNN-卷积层
  • 探索机器学习在医疗领域的应用与挑战
  • Flask 项目 Windows 服务器部署全流程
  • C++信息学奥赛一本通-第一部分-基础一-第一章
  • RTX5060显卡安装cuda版本PyTorch踩坑记录
  • 深度解析:CPU 与 GPU 上的张量运算,为何“快”与“慢”并非绝对?
  • chatgpt plus简单得,不需要求人,不需要野卡,不需要合租,不需要昂贵的价格
  • 从 0 到 1 开发图书管理系统:飞算 JavaAI 让技术落地更简单
  • Oracle MCP Server简单配置以及备份调用
  • Oracle EBS ERP接口开发 — 修复bug基本流程
  • Calcite自定义扩展SQL案例详细流程篇
  • Centos Docker 安装手册(可用)
  • el-table高度自适应vue页面指令
  • Mac中M系列芯片采用rbenv管理ruby版本
  • 板子指示灯状态设计
  • 2SA2016-TD-E ON安森美 功率晶体管 0.18Ω超低压降+30MHz高频 工业电源专用
  • C语言的指针
  • python采集拍立淘按图搜索API接口,json数据参考
  • 2.4.3-2.4.8控制成本-控制资源-监督沟通-监督干系人-监督风险-控制采购
  • 每日任务day0804:小小勇者成长记之药剂师的小咪
  • 断点续传Demo实现
  • 【目标检测基础】——yolo学习
  • 设备电机状态监测中的故障诊断与定位策略
  • HCIP笔记1