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

扩展根分区

当前情况分析

根据之前提供的 vgdisplay 输出:

  • 卷组 cl 的总大小为 ~1.82TB。
  • 已分配了几乎所有的空间(仅剩 1 个 PE,即 4MB)。

因此,在缩小 /home 分区并释放空间之前,无法直接扩展根分区。

解决方案

我们需要先执行以下步骤:

  1. 备份 /home 数据 并确保数据安全。
  2. 缩小 /home 逻辑卷 并释放空间回到卷组中。
  3. 使用释放的空间扩展根分区

以下是更新后的脚本,它将完成这些步骤,并确保有足够的空间进行扩展。

#!/bin/bash# 设置变量
HOME_BACKUP_DIR="/backup/home_backup"
BACKUP_FILE="${HOME_BACKUP_DIR}/home_backup.tar.gz"
ROOT_TARGET_SIZE="+450G" # 增加到目标大小 (当前大小基础上增加)
HOME_NEW_SIZE="1T"       # 新的 home 分区大小
VG_NAME="cl"             # 卷组名称
LV_HOME_NAME="home"      # home 逻辑卷名称
LV_ROOT_NAME="root"      # root 逻辑卷名称
LV_HOME_PATH="/dev/mapper/${VG_NAME}-${LV_HOME_NAME}"
LV_ROOT_PATH="/dev/mapper/${VG_NAME}-${LV_ROOT_NAME}"echo "开始执行自动化脚本..."# 创建备份目录
mkdir -p $HOME_BACKUP_DIR || { echo "创建备份目录失败"; exit 1; }# 备份 /home 数据
echo "正在备份 /home 数据..."
tar czf $BACKUP_FILE -C / home || { echo "备份 /home 数据失败"; exit 1; }
echo "/home 数据备份完成"# 检查 /home 是否挂载
if mountpoint -q /home; thenecho "/home 已挂载,正在卸载..."umount /home || { echo "卸载 /home 失败"; exit 1; }
elseecho "/home 当前未挂载,跳过卸载步骤。"
fi# 检查文件系统一致性
echo "检查 XFS 文件系统的一致性..."
xfs_repair -n $LV_HOME_PATH || { echo "检查 XFS 文件系统失败"; exit 1; }
echo "XFS 文件系统检查完成"# 缩小 XFS 文件系统至新大小
echo "缩小 XFS 文件系统至 ${HOME_NEW_SIZE}..."
# 注意:XFS 不支持直接缩小,所以需要删除并重新创建逻辑卷
lvremove $LV_HOME_PATH -y || { echo "删除旧的 cl-home 逻辑卷失败"; exit 1; }
echo "旧的 cl-home 逻辑卷已删除"# 创建新的 cl-home 逻辑卷
echo "创建新的 cl-home 逻辑卷..."
lvcreate -L ${HOME_NEW_SIZE} -n ${LV_HOME_NAME} ${VG_NAME} || { echo "创建新的 cl-home 逻辑卷失败"; exit 1; }
echo "新的 cl-home 逻辑卷已创建"# 格式化新的 cl-home 逻辑卷为 XFS 文件系统
echo "格式化新的 cl-home 逻辑卷为 XFS 文件系统..."
mkfs.xfs $LV_HOME_PATH || { echo "格式化新的 cl-home 逻辑卷失败"; exit 1; }
echo "新的 cl-home 逻辑卷已格式化"# 挂载新的 cl-home 逻辑卷
echo "挂载新的 cl-home 逻辑卷..."
mount $LV_HOME_PATH /home || { echo "挂载新的 cl-home 逻辑卷失败"; exit 1; }
echo "新的 cl-home 逻辑卷已挂载"# 恢复 /home 数据
echo "正在恢复 /home 数据..."
tar xzf $BACKUP_FILE -C / || { echo "恢复 /home 数据失败"; exit 1; }
echo "/home 数据恢复完成"# 扩展根分区
echo "扩展根分区 (/)..."
lvextend -L ${ROOT_TARGET_SIZE} $LV_ROOT_PATH || { echo "扩展根分区失败"; exit 1; }
xfs_growfs / || { echo "扩展根分区文件系统失败"; exit 1; }
echo "根分区 (/) 已扩展"# 清理
rm -rf $HOME_BACKUP_DIR || { echo "清理备份文件失败"; exit 1; }echo "✅ 自动化脚本执行完成!"

关键点说明

  1. 备份和恢复数据:首先备份 /home 数据到一个临时目录,然后在调整完逻辑卷后恢复数据。
  2. 处理 XFS 文件系统:由于 XFS 不支持直接缩小,我们通过删除旧的逻辑卷并创建一个新的较小的逻辑卷来实现。
  3. 确保有足够的空间:通过缩小 /home 来释放空间,使得可以扩展根分区。

使用方法

  1. 将上述脚本保存为 resize_lvm_v2.sh
  2. 给予脚本执行权限:
    chmod +x resize_lvm_v2.sh
    
  3. 以 root 用户身份运行脚本:
    sudo ./resize_lvm_v2.sh
    

请确保在运行此脚本之前已经做好了充分的数据备份工作,以防意外发生。如果还有其他问题或需要进一步的帮助,请告诉我!

http://www.xdnf.cn/news/3320.html

相关文章:

  • 软件产品测试报告:如何全面评估及保障软件质量?
  • kubernetes》》k8s》》Service 、Ingress 区别
  • C 语 言 - - - 动 态 内 存 分 配
  • SIwave基本操作之S参数仿真
  • 5. 进程地址空间
  • react中封装一个预览.doc和.docx文件的组件
  • Vue3 + TypeScript 实现 PC 端鼠标横向拖动滚动
  • 【蓝桥杯】第十六届蓝桥杯C/C++大学B组个人反思总结
  • 高性能架构设计-数据库(读写分离)
  • OpenHarmony - 小型系统内核(LiteOS-A)(十七)标准库
  • 加速LLM大模型推理,KV缓存技术详解与PyTorch实现
  • java: 警告: 源发行版 21 需要目标发行版 21
  • PostgreSQL的COALESCE 函数用法
  • 慧星云支持 Qwen3:开启智算新生态,共筑高效 AI 未来
  • WebGL图形编程实战【5】:层次构建 × Shader初始化深度剖析
  • 基于ssm的校园旧书交易交换平台(源码+文档)
  • Microsoft Entra ID 详解:现代身份与访问管理的核心
  • 三分钟了解自动拆箱封箱操作
  • Pillow 移除或更改了 FreeTypeFont.getsize() 方法
  • mac下载homebrew 安装和使用git
  • SimFlow: 基于OpenFOAM的CFD求解器
  • 积木报表的 API 数据集 (附Demo图文)
  • JavaAPI — 日期与集合
  • Spring MVC @RequestParam 注解怎么用?如何处理可选参数和默认值?
  • 温补晶振(TCXO)稳定性优化:从实验室到量产的关键技术
  • 【爬虫】deepseek谈爬虫工具
  • Java 多线程进阶:什么是线程安全?
  • 如何在 Linux 环境下使用 Certbot 自动生成 SSL 证书并部署到 Nginx 服务中
  • 【论文阅读】APMSA: Adversarial Perturbation Against Model Stealing Attacks
  • 7.软考高项(信息系统项目管理师)-资源管理