别再怕数据丢了手把手教你用mdadm在Ubuntu 22.04上组RAID5附硬盘同步与性能监控指南当你的项目代码、家庭照片或设计稿分散在多块硬盘中时最怕听到的就是硬盘咔嗒一声停止转动。我曾经历过一次两块硬盘同时故障的灾难直到学会用RAID5构建低成本的数据安全方案——它不仅能容忍单块硬盘损坏还能在重建阵列时保持服务在线。本文将用真实运维经验教你如何用闲置硬盘搭建兼顾安全与性能的存储系统。1. 硬件准备与系统环境配置在开始前需要准备至少三块相同容量的硬盘建议同品牌同型号。我用的是一台淘汰的NUC迷你主机加四块4TB西数蓝盘总成本不到2000元。机械硬盘更适合RAID5因为重建过程中需要持续读写SSD的写入寿命可能成为瓶颈。安装Ubuntu 22.04时注意系统盘单独使用一块SSD不加入RAID阵列勾选安装OpenSSH服务器方便远程管理更新软件源sudo apt update sudo apt upgrade -y检查硬盘识别情况lsblk -o NAME,SIZE,MODEL,ROTA输出示例sda 3.7T WDC_WD40EZAZ-00SF3B0 1 sdb 3.7T WDC_WD40EZAZ-00SF3B0 1 nvme0n1 500G Samsung SSD 980 0ROTA1表示机械硬盘0为SSD2. 创建RAID5阵列的完整流程2.1 硬盘分区最佳实践传统教程会让每块盘创建一个分区但更安全的做法是for disk in /dev/sd{a..d}; do echo n\np\n1\n\n\nt\nfd\nw | sudo fdisk $disk done这里使用了Linux的fdLinux RAID自动检测类型分区比普通分区更易识别。重要提醒操作前务必用lsblk确认设备号错误的磁盘操作会导致数据永久丢失。2.2 阵列创建与参数优化使用mdadm创建阵列时这些参数能提升性能sudo mdadm --create /dev/md0 \ --level5 \ --raid-devices4 \ --chunk256 \ --bitmapinternal \ --assume-clean \ /dev/sd{a..d}1参数解析--chunk256适合大文件视频/镜像的256KB条带大小--bitmapinternal记录同步进度意外断电后可续传--assume-clean跳过初始同步需手动开始查看阵列状态watch -n 60 cat /proc/mdstat同步进度会显示类似resync 12.3%的进度信息16TB阵列约需20-30小时。3. 实时监控与性能调优3.1 同步期间资源监控新建raid_monitor.sh脚本#!/bin/bash while true; do clear echo $(date) echo -e \n[RAID状态] cat /proc/mdstat | grep -A1 md0 echo -e \n[IO负载] iostat -xmd 1 3 | grep -A4 Device echo -e \n[CPU温度] sensors | grep Core sleep 30 done用chmod x raid_monitor.sh赋予执行权限后通过./raid_monitor.sh实时查看重建进度和速度磁盘I/O等待时间await50ms需关注CPU使用率和温度3.2 长期使用优化建议编辑/etc/mdadm/mdadm.conf添加ARRAY /dev/md0 metadata1.2 spares1这会在阵列降级时自动邮件报警需配置mailutils。日常维护命令# 检查坏块 sudo badblocks -sv /dev/md0 # 手动触发数据校验 echo check /sys/block/md0/md/sync_action # 查看详细健康状态 sudo mdadm --detail /dev/md0 | grep -E State|Faulty4. 高级维护与故障处理4.1 硬盘更换实操当mdadm --detail显示Faulty设备时标记故障盘sudo mdadm /dev/md0 --fail /dev/sdd1移除设备sudo mdadm /dev/md0 --remove /dev/sdd1物理更换硬盘后重新分区添加新盘sudo mdadm /dev/md0 --add /dev/sdd1关键技巧重建期间保持系统通电暂停大文件传输echo idle /sys/block/md0/md/sync_action4.2 性能对比测试使用fio测试不同场景下的IOPS# 随机读写测试 fio --namerandwrite --ioenginelibaio --rwrandwrite \ --bs4k --numjobs4 --size1G --runtime60 \ --filename/mnt/raid/test --direct1 --group_reporting典型结果对比4块HDD RAID5测试类型单盘性能RAID5性能提升幅度顺序读180MB/s520MB/s289%随机4K写0.8MB/s3.2MB/s400%实际使用中发现RAID5在小文件随机写入时CPU占用可能达到70%这时可以echo 2048 /sys/block/md0/md/stripe_cache_size5. 文件系统选择与自动化运维ext4虽稳定但XFS更适合大文件场景。格式化建议sudo mkfs.xfs -f -d su256k,sw4 -l version2 /dev/md0挂载参数优化/dev/md0 /mnt/raid xfs defaults,noatime,nodiratime,logbsize256k 0 2设置每周自动巡检# 加入crontab 0 3 * * 0 root echo check /sys/block/md0/md/sync_action最后分享一个血泪教训曾经因为没配置UPS停电导致阵列崩溃。现在我的设备必接APC BR550GI后备电源同时定期执行sudo mdadm --examine --scan /etc/mdadm/mdadm.conf
别再怕数据丢了!手把手教你用mdadm在Ubuntu 22.04上组RAID5(附硬盘同步与性能监控指南)
发布时间:2026/6/2 2:06:24
别再怕数据丢了手把手教你用mdadm在Ubuntu 22.04上组RAID5附硬盘同步与性能监控指南当你的项目代码、家庭照片或设计稿分散在多块硬盘中时最怕听到的就是硬盘咔嗒一声停止转动。我曾经历过一次两块硬盘同时故障的灾难直到学会用RAID5构建低成本的数据安全方案——它不仅能容忍单块硬盘损坏还能在重建阵列时保持服务在线。本文将用真实运维经验教你如何用闲置硬盘搭建兼顾安全与性能的存储系统。1. 硬件准备与系统环境配置在开始前需要准备至少三块相同容量的硬盘建议同品牌同型号。我用的是一台淘汰的NUC迷你主机加四块4TB西数蓝盘总成本不到2000元。机械硬盘更适合RAID5因为重建过程中需要持续读写SSD的写入寿命可能成为瓶颈。安装Ubuntu 22.04时注意系统盘单独使用一块SSD不加入RAID阵列勾选安装OpenSSH服务器方便远程管理更新软件源sudo apt update sudo apt upgrade -y检查硬盘识别情况lsblk -o NAME,SIZE,MODEL,ROTA输出示例sda 3.7T WDC_WD40EZAZ-00SF3B0 1 sdb 3.7T WDC_WD40EZAZ-00SF3B0 1 nvme0n1 500G Samsung SSD 980 0ROTA1表示机械硬盘0为SSD2. 创建RAID5阵列的完整流程2.1 硬盘分区最佳实践传统教程会让每块盘创建一个分区但更安全的做法是for disk in /dev/sd{a..d}; do echo n\np\n1\n\n\nt\nfd\nw | sudo fdisk $disk done这里使用了Linux的fdLinux RAID自动检测类型分区比普通分区更易识别。重要提醒操作前务必用lsblk确认设备号错误的磁盘操作会导致数据永久丢失。2.2 阵列创建与参数优化使用mdadm创建阵列时这些参数能提升性能sudo mdadm --create /dev/md0 \ --level5 \ --raid-devices4 \ --chunk256 \ --bitmapinternal \ --assume-clean \ /dev/sd{a..d}1参数解析--chunk256适合大文件视频/镜像的256KB条带大小--bitmapinternal记录同步进度意外断电后可续传--assume-clean跳过初始同步需手动开始查看阵列状态watch -n 60 cat /proc/mdstat同步进度会显示类似resync 12.3%的进度信息16TB阵列约需20-30小时。3. 实时监控与性能调优3.1 同步期间资源监控新建raid_monitor.sh脚本#!/bin/bash while true; do clear echo $(date) echo -e \n[RAID状态] cat /proc/mdstat | grep -A1 md0 echo -e \n[IO负载] iostat -xmd 1 3 | grep -A4 Device echo -e \n[CPU温度] sensors | grep Core sleep 30 done用chmod x raid_monitor.sh赋予执行权限后通过./raid_monitor.sh实时查看重建进度和速度磁盘I/O等待时间await50ms需关注CPU使用率和温度3.2 长期使用优化建议编辑/etc/mdadm/mdadm.conf添加ARRAY /dev/md0 metadata1.2 spares1这会在阵列降级时自动邮件报警需配置mailutils。日常维护命令# 检查坏块 sudo badblocks -sv /dev/md0 # 手动触发数据校验 echo check /sys/block/md0/md/sync_action # 查看详细健康状态 sudo mdadm --detail /dev/md0 | grep -E State|Faulty4. 高级维护与故障处理4.1 硬盘更换实操当mdadm --detail显示Faulty设备时标记故障盘sudo mdadm /dev/md0 --fail /dev/sdd1移除设备sudo mdadm /dev/md0 --remove /dev/sdd1物理更换硬盘后重新分区添加新盘sudo mdadm /dev/md0 --add /dev/sdd1关键技巧重建期间保持系统通电暂停大文件传输echo idle /sys/block/md0/md/sync_action4.2 性能对比测试使用fio测试不同场景下的IOPS# 随机读写测试 fio --namerandwrite --ioenginelibaio --rwrandwrite \ --bs4k --numjobs4 --size1G --runtime60 \ --filename/mnt/raid/test --direct1 --group_reporting典型结果对比4块HDD RAID5测试类型单盘性能RAID5性能提升幅度顺序读180MB/s520MB/s289%随机4K写0.8MB/s3.2MB/s400%实际使用中发现RAID5在小文件随机写入时CPU占用可能达到70%这时可以echo 2048 /sys/block/md0/md/stripe_cache_size5. 文件系统选择与自动化运维ext4虽稳定但XFS更适合大文件场景。格式化建议sudo mkfs.xfs -f -d su256k,sw4 -l version2 /dev/md0挂载参数优化/dev/md0 /mnt/raid xfs defaults,noatime,nodiratime,logbsize256k 0 2设置每周自动巡检# 加入crontab 0 3 * * 0 root echo check /sys/block/md0/md/sync_action最后分享一个血泪教训曾经因为没配置UPS停电导致阵列崩溃。现在我的设备必接APC BR550GI后备电源同时定期执行sudo mdadm --examine --scan /etc/mdadm/mdadm.conf