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脚本可以自动化部分操作但建议初学者先手动执行以确保理解。掌握这种技巧后你可以灵活应对各种磁盘空间不足的场景提升运维效率。记住操作前备份、操作中谨慎、操作后验证这是系统管理的基本原则。
企业数字化 ERP 产品动态
相关推荐
解读容器的 2020:寻找云原生的下一站 解读容器的 2020:寻找云原生的下一站
大家好,我是你们的老朋友,一个在技术圈摸爬滚打多年的博主。今天我们来聊聊一个既熟悉又充满悬疑感的话题:2020年的容器技术。2020年,对于容器和云原生来说,像是一个分… · 2026/11/15 9:59:49
战略管理全球EMBA:民营企业家择校选择指南 一、开篇导语民营企业家、企业创始人择校进修,核心诉求是补齐战略认知、升级管理体系、链接优质圈层、适配企业发展需求。当下EMBA项目品类繁杂,海内外院校定位差异极大,盲目择校极易出现课程不符、资源错配、圈层不匹配等问题。本文从全球办… · 2026/9/13 2:30:28
AI时代的职业护城河:12个真实案例拆解——哪些岗位正被加速淘汰,哪些正薪资翻倍? 更多请点击:
https://intelliparadigm.com
第一章:AI时代的职业护城河:12个真实案例拆解——哪些岗位正被加速淘汰,哪些正薪资翻倍? AI不是替代所有人的工具,而是重塑职业价值的分水岭。我们追踪2023–202… · 2026/11/5 19:12:51
望江县电工证在哪考内部消息告诉你怎么转证最稳妥 望江县电工证在哪考内部消息告诉你怎么转证最稳妥 之前考的证在外省能不能转过来?这个问题其实不少人都问过,特别是像你这样在鹤壁从事水利工程的,经常在工地流动,可能在河南、安徽、湖北多地都干过活,手里攥着的电工证要是不合规,那真有可能成为你的职… · 2026/11/15 9:59:23
太康电工证在哪里办 2026河南最新政策你知道吗 太康电工证在哪里办 2026河南最新政策你知道吗 别急着找工作,先搞明白太康电工证到底在哪里办。眼下不少想进工地、进工厂的工人,都卡在了这个证上,尤其2026年河南最新的政策出台后,很多人对证书的办理流程、审核标准、全国通用性都摸不着头脑,… · 2026/11/15 9:59:23
考电工证有优势吗现在证怎么转异地 现在考电工证有优势吗 证书含金量到底值不值得考 证书过期了不知道怎么复审延期,你是不是也遇到过这种情况?别急,今天咱们就聊聊 现在考电工证有优势吗 ,以及 电工证的含金量 到底值不值得你花时间去考。… · 2026/11/15 9:59:23
广州电工证审证报名良心建议:实操考试心里没底怕挂科?看完这篇再报名 广州电工证审证报名良心建议:实操考试心里没底怕挂科?看完这篇再报名 实操考试心里没底怕挂科?你不是一个人。广州电工证审证报名流程看似简单,但很多初次报考的朋友,尤其是南阳等地的初学者,往往因为不了解细节而走弯路,甚至挂科。今天我就从一个过来… · 2026/11/15 9:59:23
金沙洲电工证怎么报名,实操考试心里没底怕挂科?这样备考稳过 金沙洲电工证怎么报名,实操考试心里没底怕挂科?这样备考稳过 实操考试心里没底怕挂科?这几乎是所有准备考取 金沙洲电工证 的人的共同心声。尤其是对于在施工现场从事电气作业的人员,实操考试不仅关系到证书的取得,更直接关系到自身的职业发展与安全责… · 2026/11/15 9:58:22
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05