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脚本可以自动化部分操作但建议初学者先手动执行以确保理解。掌握这种技巧后你可以灵活应对各种磁盘空间不足的场景提升运维效率。记住操作前备份、操作中谨慎、操作后验证这是系统管理的基本原则。

相关新闻

3大AI图像修复场景:从模糊到高清的终极解决方案

3大AI图像修复场景:从模糊到高清的终极解决方案

3大AI图像修复场景:从模糊到高清的终极解决方案 【免费下载链接】Real-ESRGAN-GUI Lovely Real-ESRGAN / Real-CUGAN GUI Wrapper 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-GUI 还在为模糊的老照片、低分辨率的动漫截图、压缩失真的网络图片…

2026/10/14 19:39:31 阅读更多 →
AI时代的职业护城河:12个真实案例拆解——哪些岗位正被加速淘汰,哪些正薪资翻倍?

AI时代的职业护城河:12个真实案例拆解——哪些岗位正被加速淘汰,哪些正薪资翻倍?

更多请点击: https://intelliparadigm.com 第一章:AI时代的职业护城河:12个真实案例拆解——哪些岗位正被加速淘汰,哪些正薪资翻倍? AI不是替代所有人的工具,而是重塑职业价值的分水岭。我们追踪2023–202…

2026/10/12 23:17:57 阅读更多 →
抖音内容高效管理:Douzy桌面版批量下载工具深度指南

抖音内容高效管理:Douzy桌面版批量下载工具深度指南

抖音内容高效管理:Douzy桌面版批量下载工具深度指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support…

2026/10/15 2:32:45 阅读更多 →

最新新闻

FastAPI进阶实战:异步并发、依赖注入与生产部署全解析

FastAPI进阶实战:异步并发、依赖注入与生产部署全解析

先说一个可能有点得罪人的观点:FastAPI 之所以在圈子里被“吹”得这么厉害,大部分教程都在讲它有多少新特性、能省多少代码,但真正决定这门技术在生产环境里能不能站得住脚的,往往是另一套东西。不是路由怎么写,也不是…

2026/10/15 6:11:42 阅读更多 →
IEC61850工程建模实战:从ICD到SCD的互操作避坑指南

IEC61850工程建模实战:从ICD到SCD的互操作避坑指南

简介:这份PPT面向电力系统自动化、变电站二次设计与调试人员,以及需要理解IEC61850建模思路的工程师与学习者,系统梳理了该标准在工程应用中的建模方法。内容从标准制定背景切入,对比IEC870-5-101、IEC870-5-103、DNP3.0等传统规约…

2026/10/15 6:11:42 阅读更多 →
第二代刀片电池与兆瓦闪充:如何终结纯电补能焦虑?

第二代刀片电池与兆瓦闪充:如何终结纯电补能焦虑?

1. 补能焦虑与电池困境:为什么“闪充”成了解不开的死结这几年在新能源汽车行业里泡着,跟车友、同行聊得最多的其实不是智能驾驶有多炫,也不是座舱大屏有多爽,而是补能这件事到底什么时候能彻底解决。纯电车主都懂那种感觉&#x…

2026/10/15 6:11:42 阅读更多 →
OpenClaw exec 工具实战:前后台命令执行、host 路由与安全审批全解

OpenClaw exec 工具实战:前后台命令执行、host 路由与安全审批全解

人工智能大模型LLM 网关AI Agent即时通讯 【免费下载链接】openclaw-zero-token OpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi 项目地址: https://gitcode.com/gh_mirrors/op/openclaw-zero-token…

2026/10/15 6:11:42 阅读更多 →
ASP.NET Core面试核心知识点:中间件、依赖注入、缓存与性能优化

ASP.NET Core面试核心知识点:中间件、依赖注入、缓存与性能优化

1. 请求管道与中间件:面试官真正想考察什么1.1 中间件执行顺序为什么是面试必考题中间件在 ASP.NET Core 里本质是一个委托链。形象点说,你可以把管道想象成一条流水线,HttpContext 是一个不断被传递的工作对象,每个中间件是一个工…

2026/10/15 6:11:42 阅读更多 →
Unity AssetBundle实战:打包策略、依赖管理与热更新避坑指南

Unity AssetBundle实战:打包策略、依赖管理与热更新避坑指南

1. 为什么值得花时间啃透AssetBundle如果你做Unity开发有一段时间了,大概率经历过这样的场景:项目初期资源随便扔在Resources目录里,跑得挺欢;等到包体膨胀到两三百兆,加载越来越慢,老板开始问“能不能热更…

2026/10/15 6:10:41 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →