恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Centos非LVM根分区容量不足后扩容,对调硬盘挂载/

  • 首页
  • 资讯中心
  • /
  • Centos非LVM根分区容量不足后扩容,对调硬盘挂载/

相关资讯

解读容器的 2020:寻找云原生的下一站 2026/8/2 18:28:47
战略管理全球EMBA:民营企业家择校选择指南 2026/8/2 18:28:48
C++ 继承与组合的选择指南:从设计原则到实践 2026/8/2 18:28:48

最新资讯

纯前端Canvas实时绘制动态心电图:高性能波形渲染方案
DeepSeek回答导出全攻略:从复制粘贴到API自动化归档
微服务架构落地指南:从设计模式到熔断、Saga与服务治理
基于PCA9422与MKV44F64VLH16的MCU+PMIC智能电源管理设计
国产化数据库深度运维:从基线体检到故障排查实战指南
微信个人号API二次开发:从技术路线到消息推送实战

今日推荐

Codex 总用英文回答?从 AGENTS.md 到 config.toml 的中文输出调优指南
OpenClaw 自定义插件开发完整指南(2026最新版):从 TypeScript 到 npm 发布
基于Spark的电影推荐系统全链路实战:从爬虫到Web展示

本周热门

MR25H40CDF + PIC18F65K40:工业记录仪高可靠存储实战
基于STM32的数控恒压恒流电源设计:从硬件到PID调参全解析
LT9211 MIPI重定时器原理与双路扇出实战指南

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

Centos非LVM根分区容量不足后扩容,对调硬盘挂载/

发布时间:2026/10/10 3:21:19
Centos非LVM根分区容量不足后扩容,对调硬盘挂载/ Centos非LVM根分区容量不足后扩容对调硬盘挂载/引言为什么需要扩容非LVM根分区在服务器运维中CentOS系统根分区/容量不足是常见问题。非LVMLogical Volume Manager分区由于没有逻辑卷的灵活性扩容方式受限。本教程将介绍一种高级技巧通过“对调硬盘挂载”来扩容即暂时挂载新硬盘到临时目录复制根分区数据然后修改挂载点最终实现根分区扩容。这种方法适用于无法在线扩容的物理分区场景。## 基础概念分区与挂载### 1. 分区类型-非LVM分区直接使用物理分区如/dev/sda1不支持动态调整大小。-挂载点目录与分区的关联点如/挂载根分区。### 2. 问题场景假设根分区/dev/sda1只有20GB但应用数据增长到25GB无法在线扩容。我们将使用一块新硬盘如/dev/sdb1临时挂载复制数据后对调挂载点。## 步骤一准备新硬盘与临时挂载### 1. 检查当前分区情况首先确认根分区设备bashdf -h /# 输出示例# Filesystem Size Used Avail Use% Mounted on# /dev/sda1 20G 25G -5G 125% /### 2. 添加新硬盘并分区假设新硬盘为/dev/sdb创建分区bashfdisk /dev/sdb # 创建新分区如/dev/sdb1大小50GBmkfs.ext4 /dev/sdb1 # 格式化### 3. 临时挂载新硬盘创建临时目录并挂载bashmkdir /mnt/tempmount /dev/sdb1 /mnt/temp## 步骤二复制根分区数据关键操作### 1. 使用rsync复制数据复制根分区所有文件到新硬盘保留权限bashrsync -aAXv / /mnt/temp/ --exclude/proc --exclude/sys --exclude/dev --exclude/mnt/temp参数说明--a归档模式保留权限、时间戳等--A保留ACL--X保留扩展属性--v显示进度### 2. 验证复制完整性检查文件数量或使用校验工具bashdiff -r /bin /mnt/temp/bin # 快速检查关键目录## 步骤三对调挂载点核心部分### 1. 进入救援模式重启系统进入单用户模式或使用Live CD确保根分区未挂载bash# 在GRUB菜单按e添加 single 到内核参数行### 2. 重新挂载与设置在救援模式下执行bash# 卸载原根分区假设当前挂载点是/mnt/sysimageumount /mnt/sysimage# 挂载新硬盘到临时路径mount /dev/sdb1 /mnt/temp# 挂载原硬盘到另一个目录mount /dev/sda1 /mnt/old# 复制GRUB配置如果需要cp -a /mnt/temp/boot /mnt/old/boot # 保留原引导文件### 3. 修改fstab文件编辑新硬盘上的fstabbashvim /mnt/temp/etc/fstab# 将根分区从/dev/sda1改为/dev/sdb1# 示例# /dev/sdb1 / ext4 defaults 0 0### 4. 更新GRUB配置可选如果使用UEFI或需要更新引导bashgrub2-mkconfig -o /boot/grub2/grub.cfg # 在救援环境执行### 5. 重启验证重启系统后检查根分区bashdf -h /# 输出应为/dev/sdb1容量50GB## 高级用法自动化脚本示例### 代码示例1自动复制与挂载脚本python#!/usr/bin/env python3CentOS根分区扩容脚本 - 非LVM对调法功能自动复制根分区数据到新硬盘并修改fstab注意需在救援模式运行谨慎使用import osimport subprocessimport sysdef create_mount_point(path): 创建挂载点目录 if not os.path.exists(path): os.makedirs(path) print(f创建目录: {path}) else: print(f目录已存在: {path})def copy_root_data(src, dst): 使用rsync复制根分区数据 # 排除不需要复制的目录 exclude_dirs [/proc, /sys, /dev, /tmp, /mnt] exclude_args .join([f--exclude{d} for d in exclude_dirs]) cmd frsync -aAXv {src}/ {dst}/ {exclude_args} result subprocess.run(cmd, shellTrue, capture_outputTrue, textTrue) if result.returncode 0: print(数据复制成功) else: print(f复制失败: {result.stderr}) sys.exit(1)def modify_fstab(new_root_dev, fstab_path): 修改fstab文件中的根分区设备 with open(fstab_path, r) as f: lines f.readlines() new_lines [] for line in lines: # 替换根分区设备 if line.strip().startswith(/dev/sda1) and / in line: new_line line.replace(/dev/sda1, new_root_dev) new_lines.append(new_line) print(f替换: {line.strip()} - {new_line.strip()}) else: new_lines.append(line) with open(fstab_path, w) as f: f.writelines(new_lines) print(fstab已更新)if __name__ __main__: # 配置新硬盘设备与临时挂载路径 NEW_DEVICE /dev/sdb1 TEMP_MOUNT /mnt/temp # 1. 挂载新硬盘 create_mount_point(TEMP_MOUNT) subprocess.run(fmount {NEW_DEVICE} {TEMP_MOUNT}, shellTrue, checkTrue) # 2. 复制根分区数据 copy_root_data(/, TEMP_MOUNT) # 3. 修改fstab fstab_path os.path.join(TEMP_MOUNT, etc/fstab) modify_fstab(NEW_DEVICE, fstab_path) print(扩容准备完成请重启进入救援模式完成对调。)### 代码示例2验证脚本 - 检查复制一致性python#!/usr/bin/env python3验证根分区复制一致性脚本比较关键文件的MD5值import hashlibimport osimport sysdef calculate_md5(file_path): 计算文件MD5哈希值 hash_md5 hashlib.md5() try: with open(file_path, rb) as f: for chunk in iter(lambda: f.read(4096), b): hash_md5.update(chunk) return hash_md5.hexdigest() except (PermissionError, FileNotFoundError) as e: print(f跳过文件 {file_path}: {e}) return Nonedef compare_directories(src, dst, file_list): 比较两个目录中的文件MD5 errors 0 for rel_path in file_list: src_path os.path.join(src, rel_path.lstrip(/)) dst_path os.path.join(dst, rel_path.lstrip(/)) if os.path.isfile(src_path) and os.path.isfile(dst_path): src_md5 calculate_md5(src_path) dst_md5 calculate_md5(dst_path) if src_md5 ! dst_md5: print(f不匹配: {rel_path}) print(f 源文件: {src_md5}) print(f 目标: {dst_md5}) errors 1 else: print(f文件缺失: {rel_path}) errors 1 if errors 0: print(所有文件一致) else: print(f发现 {errors} 个不一致文件) sys.exit(1)if __name__ __main__: # 检查关键系统文件 critical_files [ /etc/passwd, /etc/shadow, /etc/fstab, /etc/hostname, /boot/grub2/grub.cfg, /bin/bash, /sbin/init ] # 假设源是当前根目标是/mnt/temp compare_directories(/, /mnt/temp, critical_files)## 注意事项与故障排除1.数据安全操作前务必备份重要数据尤其是数据库文件。2.权限问题rsync复制时需确保用户有足够权限建议root。3.SELinux上下文复制后可能需要恢复SELinux标签bash restorecon -Rv /mnt/temp4.引导问题如果系统无法启动使用Live CD重新安装GRUBbash grub2-install /dev/sda## 总结本文详细介绍了在CentOS系统中对非LVM根分区进行扩容的“对调硬盘挂载”方法。通过临时挂载新硬盘、复制根分区数据、修改挂载点配置最终实现根分区扩容。这种方法虽然需要手动操作但适用于任何非LVM分区场景且无需重新安装系统。关键步骤包括1. 准备新硬盘并格式化2. 使用rsync完整复制根分区数据3. 在救援模式下修改fstab和GRUB配置4. 验证数据一致性提供的Python脚本可以自动化部分操作但建议初学者先手动执行以确保理解。掌握这种技巧后你可以灵活应对各种磁盘空间不足的场景提升运维效率。记住操作前备份、操作中谨慎、操作后验证这是系统管理的基本原则。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号