← 返回主页
案例 01
生产服务器 LVM 在线扩容(不停机)

背景描述

某数据库服务器的 /data 分区(500GB)使用率已达 97%,MySQL 数据文件即将写满。需在不停机的前提下扩容至 1TB。

解决方案

VMware 层面添加一块 500GB 虚拟磁盘 → 识别新磁盘(/dev/sdc)→ 创建 PV → 加入 VG → 扩展 LV → resize2fs 在线扩展到 1TB。全程业务无感知。

技术要点

  • LVM 在线扩容四大步骤:PV 创建 → VG 扩展 → LV 扩展 → 文件系统扩容
  • XFS 文件系统使用 xfs_growfs 而非 resize2fs
  • 扩容前验证:pvs/vgs/lvs 查看当前容量,df -h 确认挂载点
  • 风险控制:vgdisplay 确认剩余空间后再执行
# 1. 扫描新磁盘 echo "- - -" > /sys/class/scsi_host/host0/scan lsblk # 确认 /dev/sdc 出现 # 2. 创建 PV + 扩展 VG pvcreate /dev/sdc vgextend vg_data /dev/sdc vgdisplay vg_data | grep Free # 确认 Free PE # 3. 扩展 LV(增加 500GB) lvextend -L +500G /dev/vg_data/lv_data # 4. 在线扩展文件系统 # ext4 文件系统 resize2fs /dev/vg_data/lv_data # XFS 文件系统 xfs_growfs /data # 验证 df -h /data lvs vg_data/lv_data
案例 02
磁盘空间不足应急处理与根分区清理

背景描述

凌晨 2 点告警:某服务器根分区 / 使用率 100%,SSH 登录极慢,systemd-journald 停止写日志。紧急排查后发现 /var/log 目录占用了 45GB 空间。

解决方案

优先清理系统日志释放空间恢复服务;然后定位大文件目录做针对性清理;最后配置 logrotate 和 journald 限制防止复发。

技术要点

  • du -sh /* 逐层定位大目录,快速找到空间占用元凶
  • journalctl --vacuum-size=500M 限制 systemd 日志大小
  • logrotate 配置日志轮转:按天 + 保留 7 天 + 压缩
  • ncdu 交互式磁盘分析工具,比 du 更直观
# 紧急空间清理步骤 df -h # 确认哪个分区满 du -sh /* 2>/dev/null | sort -rh | head # 定位根目录下大目录 du -sh /var/* 2>/dev/null | sort -rh | head # 清理 journald 日志(立即释放空间) journalctl --disk-usage # 查看当前占用 journalctl --vacuum-size=500M # 保留最近 500MB journalctl --vacuum-time=7d # 仅保留 7 天 # 配置 journald 永久限制 /etc/systemd/journald.conf SystemMaxUse=500M SystemMaxFileSize=100M MaxRetentionSec=7day # logrotate 配置示例 /etc/logrotate.d/nginx /data/logs/nginx/*.log { daily rotate 7 missingok compress delaycompress notifempty create 640 nginx nginx sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid) endscript } # 手动触发 logrotate logrotate -f /etc/logrotate.conf
案例 03
RAID 阵列故障替换与数据迁移

背景描述

某台物理服务器 RAID5 阵列(4 块 2TB HDD)其中一块磁盘报 SMART 错误,阵列处于 Degraded 状态。另一块磁盘也有坏道预警。需紧急替换故障磁盘并计划整体迁移到 SSD。

解决方案

先在线更换故障磁盘,等待 RAID 重建完成。然后制定数据迁移计划:新增 SSD RAID10 阵列 → rsync 全量同步 → 修改挂载 → 验证 → 移除旧 HDD 阵列。

技术要点

  • MegaRAID 管理工具查看 RAID 状态:storcli /c0 show all
  • 故障盘定位:通过 Enclosure:Slot 找到物理盘,在线拔出替换
  • RAID 重建期间性能下降,选择夜间低峰执行
  • 数据迁移使用 rsync -avzP 增量同步,最终切换前停服 5 分钟做最终同步
# MegaRAID storcli 查看 RAID 状态 storcli /c0 show storcli /c0 /eall /sall show # 查看所有物理磁盘状态 storcli /c0 /vall show # 查看所有虚拟磁盘 # 关注:State=Dgrd(降级), PdState=Offline # 定位故障盘并设置离线 → 物理更换 storcli /c0 /e252 /s3 set offline storcli /c0 /e252 /s3 show # 确认 Offline # 物理拔出坏盘,插入新盘 → 设为 JBOD/Unconfigured Good storcli /c0 /e252 /s3 insert dg=0 array=0 row=3 storcli /c0 /vall show rebuild # 监控重建进度 # 数据迁移:rsync 增量同步 rsync -avzP --delete /data_old/ /data_new/ # 最终切换步骤 systemctl stop app-service rsync -avzP --delete /data_old/ /data_new/ # 最终同步 umount /data_old mount /dev/md1 /data_new # 修改 /etc/fstab systemctl start app-service