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

Linux服务器存储扩容踩坑记:用fdisk和lsblk给四块16T硬盘组RAID5的全流程复盘

Linux服务器存储扩容踩坑记:用fdisk和lsblk给四块16T硬盘组RAID5的全流程复盘

去年双十一大促前,我们的文件存储服务器突然告警——剩余容量不足10%。作为团队里负责基础设施的"救火队员",我不得不紧急采购四块16T企业级硬盘来扩容。本以为按文档操作两小时就能搞定,结果从设备识别到RAID同步,踩遍了所有能想到的坑。这篇复盘将用第一视角带你走完整个流程,重点分享那些官方手册里不会写的实战细节。

1. 前期准备:认识你的存储设备

1.1 硬件选择与连接

这次选用的希捷Exos X16系列企业盘支持7×24小时运行,CMR传统磁记录技术比SMR更适合RAID环境。上架时有个细节值得注意:多盘位服务器最好间隔插盘。我们最初把四块盘连续插在背板1-4槽位,结果同步时温度集体飙到55℃以上,后来调整到1/3/5/7槽位,温度直降8℃。

查看设备拓扑结构的实用命令:

lsblk -o NAME,MODEL,SIZE,ROTA,MOUNTPOINT

输出示例:

NAME MODEL SIZE ROTA MOUNTPOINT sda ST16000NM001G 14.6T 1 sdb ST16000NM001G 14.6T 1 nvme0n1 Samsung_SSD_1T 931G 0 /

1.2 关键工具安装

不同发行版的软件包管理略有差异:

  • Debian/Ubuntu系:
    sudo apt update && sudo apt install mdadm smartmontools -y
  • RHEL/CentOS系:
    sudo dnf install mdadm smartmontools -y

smartmontools不是必选项,但强烈建议安装——它提供的smartctl工具能实时监控硬盘健康状态。

2. 设备识别阶段的隐藏陷阱

2.1 动态设备名的应对策略

第一次执行fdisk -l时,四块盘整齐地显示为sda-sdd。但在配置中途服务器意外重启后,设备名竟变成了sda/sdb/sdh/sdi!这种动态分配机制是Linux设备管理的特点,也是导致数据灾难的高危因素。

可靠解决方案

  1. 通过WWID永久标识设备:
    ls -l /dev/disk/by-id/
  2. 或者使用更稳定的路径:
    /dev/disk/by-path/pci-0000:3b:00.0-sas-0x5003048000cdf729-lun-0

2.2 必须使用分区的三个理由

原始文档强调要用分区而非整盘,但没解释原因。实际踩坑后发现:

  1. 整盘做RAID会导致部分硬件RAID卡识别异常
  2. 分区后可以保留引导记录区域
  3. 方便未来扩展(比如预留空间做热备盘)

创建分区的正确姿势:

sudo fdisk /dev/sda

交互步骤:

  1. 输入g创建GPT分区表(超过2T必须用GPT)
  2. 输入n创建新分区
  3. 一路回车使用默认值
  4. 输入t设置分区类型为fd00(Linux RAID)
  5. 输入w保存

3. RAID5构建过程中的典型报错

3.1 设备忙错误处理

执行创建命令时:

sudo mdadm --create /dev/md0 --level=5 --raid-devices=4 /dev/sd[a-d]1

可能遇到:

mdadm: cannot open /dev/sdb1: Device or resource busy

这是因为系统自动挂载了这些分区。解决步骤:

  1. 检查占用进程:
    sudo lsof /dev/sdb1
  2. 卸载分区:
    sudo umount /dev/sdb1
  3. 如果仍提示忙,可能是内核raid模块占用了:
    sudo mdadm --stop /dev/md127

3.2 不同容量硬盘的兼容方案

虽然四块盘标称都是16T,但实际可能有细微差异:

/dev/sda1: 15628053168 sectors /dev/sdb1: 15628053152 sectors

这时创建RAID会报size mismatch错误。黄金法则:以最小容量盘为准,创建阵列时显式指定:

sudo mdadm --create ... --size=15628053152

4. 后期优化与监控

4.1 加速RAID同步的技巧

初始同步16T×4的RAID5预计需要36小时。通过调整策略可缩短至20小时:

echo 50000 > /proc/sys/dev/raid/speed_limit_min echo 500000 > /proc/sys/dev/raid/speed_limit_max

同时可以实时查看进度:

watch -n 60 cat /proc/mdstat

4.2 智能挂载配置

/etc/fstab的常见坑点:

  1. 错误使用设备路径(应用UUID替代)
  2. 忘记添加nofail选项(避免因单盘故障导致系统无法启动)
  3. 遗漏文件系统检查顺序(最后两个数字)

正确示例:

UUID=8da7a3f7-01 /data ext4 defaults,nofail,noatime 0 2

4.3 长期健康监测

设置每周自动巡检:

sudo smartctl -t long /dev/sda sudo mdadm --monitor --scan --daemonize

配置邮件报警:

echo 'MAILADDR your@email.com' >> /etc/mdadm.conf

这次扩容最深刻的教训是:永远要在操作前确认三遍设备标识符。有次凌晨三点误操作差点清空备份盘,幸亏及时ctrl+c终止了mkfs命令。现在我的工作流程里强制增加了拍照存档环节——用手机拍下lsblk输出和物理盘位对照图,这个笨办法已经救了团队三次。

http://www.jsqmd.com/news/944971/

相关文章:

  • 单北斗变形监测应用与原理分析及其在GNSS监测中的优势
  • 想用Gaussian Splatting做实时SLAM?四篇顶会论文的实战性能与硬件开销对比
  • 2026 / 06 / 03 力扣算法题反思片段记录
  • 深圳 ai 培训哪家性价比高:官方排名深度必读指南 - 13425704091
  • 别让Siri听不懂方言:用3D-Speaker实战方言与多语种识别(附完整代码)
  • 手把手教你用C++ memcpy和std::string在ROS里收发自定义数据(附完整CMakeLists.txt)
  • Visual C++运行库合集:告别DLL缺失烦恼的终极解决方案
  • 致敬几代人的“童年造梦者”,《中国动画100年》六一首映口碑攀升
  • 从Docker运行PyTorch看起:为什么你的Ubuntu 20.04必须装NVIDIA Container Toolkit?
  • 工业遗产“智慧觉醒”:七部门新政下的AI叙事与道可云实践
  • 避开数学建模优化大坑:用差分进化算法搞定多残骸定位的完整流程与调参心得
  • 告别模糊:KVM GPU直通后Windows虚拟机分辨率上不去?试试这3个排查思路
  • 2026 年广州搬家公司推荐:权威榜单与专业指南 - 13425704091
  • 为什么92%的AI工单项目在第3个月失败?资深SRE总监亲授“冷启动死亡谷”穿越方案
  • “众妙AI”:美国东海岸高校跨学科团队探索AI赋能的未来大学课堂
  • 基于Google Coral TPU的离线语音控制机械臂:从边缘AI到实时交互
  • 企业AI落地指南:收藏!小白程序员必看的大模型实战攻略
  • 为什么你的RecSys调用AI工具后A/B测试失败?——数据漂移、模型偏见、服务链路断裂的3重隐性风险预警
  • 2026 年广州搬家公司哪家好:最新精选深度测评 - 19120507004
  • RPG Maker Decrypter:3分钟解锁游戏资源的终极指南
  • 量子模拟中退相干效应及其对临界点的影响研究
  • 深度学习模型量化基础
  • 别光看PSNR!从MIMO-UNet到DeepRFT,聊聊傅里叶残差模块替换背后的‘玄学’调参
  • 证件照怎么改尺寸大小?2026免费修改证件照尺寸与文件大小完整教程 - 科技大爆炸
  • HTTP请求方式盘点
  • 半无限规划问题的非光滑束方法解析【附代码】
  • 别再只懂CountDownLatch了!CyclicBarrier在Spring Boot多阶段任务中的实战应用
  • 别再只用路由器做实验了!用EVE-NG的VPCS模拟真实PC,手把手教你配置IP和抓包
  • 2026 年广州搬家公司有哪些:TOP5 品牌独家解析 - 17322238651
  • 如何5分钟实现专业级直播背景替换:OBS背景移除插件的完整指南