分区调整如何不丢失数据?

在Linux系统中调整磁盘大小是一项需要谨慎操作的任务,涉及分区、文件系统及逻辑卷管理,以下是详细操作指南,请务必提前备份重要数据,并在非生产环境测试后再执行。


调整前的关键准备

  1. 备份数据
    使用 rsyncdd 命令备份整个磁盘,

    rsync -av /mnt/data/ /backup/  # 备份目录
    dd if=/dev/sda1 of=/backup/sda1.img bs=4M  # 备份整个分区
  2. 检查磁盘状态
    • 确认磁盘挂载点:df -h
    • 查看分区表:sudo fdisk -l
    • 检查文件系统类型:lsblk -f
  3. 卸载分区(必须步骤)
    sudo umount /dev/sda1  # 替换为你的分区

调整分区大小(非LVM场景)

方法1:使用 parted(推荐)

sudo parted /dev/sda  # 进入交互模式
(parted) resizepart 1  # 选择分区号(例如分区1)
End? [旧值] 20GB      # 输入新结束位置(如扩容至20GB)
(parted) quit

方法2:使用 fdisk

sudo fdisk /dev/sda```
> **注意**:  
> - 分区只能向磁盘末尾方向扩展,不能缩小(除非先缩小文件系统)。  
> - 操作后需用 `partprobe` 更新内核分区表。
---
### **三、调整文件系统大小**
#### **EXT2/3/4 文件系统**(使用 `resize2fs`)
```bash
sudo resize2fs /dev/sda1  # 自动扩展到分区最大容量
sudo resize2fs /dev/sda1 15G  # 精确缩小至15GB(需先缩小分区)

XFS 文件系统(仅支持扩容)

sudo xfs_growfs /mnt/data  # 直接对挂载点操作(无需卸载)

Btrfs 文件系统

sudo btrfs filesystem resize +5G /mnt/data  # 增加5GB
sudo btrfs filesystem resize 10G /mnt/data   # 设置为10GB

LVM逻辑卷调整(推荐方案)

LVM(Logical Volume Manager)支持动态调整,更安全灵活。

扩展物理卷(PV)

sudo pvresize /dev/sdb1  # 调整已存在的PV

扩展逻辑卷(LV)

sudo lvextend -L +10G /dev/vg01/lv_data  # 增加10GB
sudo lvresize --size 30G /dev/vg01/lv_data  # 直接设为30GB

扩展文件系统

# EXT4
sudo resize2fs /dev/vg01/lv_data
# XFS
sudo xfs_growfs /mnt/data

缩小逻辑卷(谨慎操作)

sudo umount /mnt/data
sudo e2fsck -f /dev/vg01/lv_data  # 强制检查EXT4文件系统
sudo resize2fs /dev/vg01/lv_data 15G  # 先缩小文件系统
sudo lvreduce -L 15G /dev/vg01/lv_data  # 再缩小LV
sudo mount /dev/vg01/lv_data /mnt/data

关键注意事项

  1. 操作顺序
    扩容:调整分区 → 调整物理卷(LVM)→ 调整逻辑卷 → 调整文件系统
    缩容:备份 → 卸载 → 缩小文件系统 → 缩小逻辑卷/分区
  2. 风险规避
    • 缩容前必须用 e2fsck -f 检查EXT文件系统。
    • XFS 不支持缩小,需备份后重建分区。
    • 使用 dmesg | grep error 检查操作后错误日志。
  3. 工具依赖
    • 安装必要工具:sudo apt-get install e2fsprogs xfsprogs parted(Debian/Ubuntu)
    • 使用 fsck 修复文件系统损坏。

常见问题解决

  • 分区调整后系统未识别
    执行 partprobe -s 或重启系统。
  • “设备忙”错误
    确保分区已卸载,终止占用进程:lsof /mnt/data
  • LVM空间不足
    添加新物理卷:sudo vgextend vg01 /dev/sdc1

调整磁盘大小是高风险操作,严格遵循备份→检查→分步执行流程,对于生产环境,建议在专业运维人员指导下进行,LVM提供了更灵活的存储管理方案,推荐优先使用。

引用说明

  • Linux man pages: man fdisk, man parted, man lvm
  • The Linux Documentation Project (tldp.org)
  • Ubuntu Server Guide: Disk Management
  • Red Hat Enterprise Linux Storage Administration Guide

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5679.html

(0)
酷番叔酷番叔
上一篇 2025年6月27日 04:11
下一篇 2025年6月27日 04:38

相关推荐

  • Linux系统如何生成SSH密钥对?详细步骤方法与操作指南解析

    在Linux系统中,密钥是保障信息安全的核心工具,广泛应用于SSH远程登录、数据加密传输、数字签名等场景,相较于传统密码认证,密钥认证基于非对称加密算法,具有安全性高(私钥本地存储,公钥传输验证)、防暴力破解能力强(无需传输密码)及支持自动化操作(如免密登录)等优势,本文将详细介绍Linux系统中常见密钥的生成……

    2025年9月30日
    7300
  • Linux下如何查看网关IP地址?

    在Linux系统中,网关IP(Gateway IP)是设备访问其他网络(如互联网)的关键跳转点,正确查看网关IP是网络故障排查、网络配置的基础操作,本文将详细介绍多种查看网关IP的方法,涵盖传统命令、现代工具及配置文件读取方式,并对比其适用场景与优缺点,使用ip route命令(现代Linux推荐方法)ip r……

    2025年8月22日
    6800
  • Linux中如何正确退出正在执行的ping命令?

    在Linux系统中,ping命令是常用的网络诊断工具,通过发送ICMP回显请求测试与目标主机的连通性,默认会持续发送请求直至手动终止,实际使用中,用户常需根据场景提前退出ping命令,本文将详细介绍多种退出方法及其适用场景,帮助用户灵活应对不同需求,常规终端直接退出:Ctrl+C与Ctrl+Z组合Ctrl+C……

    2025年8月27日
    8500
  • Linux如何创建头文件?

    在Linux环境下开发程序时,头文件(Header File,以.h为扩展名)是模块化编程的核心组件,它用于声明函数、宏、数据结构、全局变量等,为源文件(.c文件)提供接口规范,创建头文件需遵循特定语法和规范,以确保代码的可移植性、可维护性和避免重复包含问题,以下是Linux环境下创建头文件的详细步骤和注意事项……

    2025年9月19日
    7300
  • 调试工具怎么用更高效?

    在Linux系统中,共享对象文件(Shared Object, .so)是动态链接库的核心组件,广泛应用于程序模块化开发,调试.so文件对解决运行时崩溃、符号冲突、内存泄漏等问题至关重要,以下是专业且高效的调试方法,结合工具使用和实战技巧:GDB(GNU Debugger)附加进程调试 gdb -p <P……

    2025年7月26日
    10700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信