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

在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如何取消锁屏设置?

    在Linux系统中,锁屏功能主要用于保护用户隐私和数据安全,防止未授权访问,但在某些场景下(如家庭环境、个人开发机),用户可能需要取消锁屏以提升操作便利性,本文将详细介绍不同Linux桌面环境下取消锁屏的方法,涵盖图形界面操作、命令行工具及配置文件修改,并针对常见问题提供解决方案,通过图形界面取消锁屏(主流桌面……

    2025年8月28日
    49100
  • Linux如何添加用户及用户组?

    在Linux系统中,用户和用户组是管理文件权限、系统资源访问和安全性的核心机制,合理添加和管理用户及用户组,既能保障系统安全,又能实现多用户协同工作,本文将详细介绍Linux环境下添加用户和用户组的操作方法、常用参数及注意事项,用户组管理基础用户组(Group)是用户的集合,通过将用户划分到不同组,可以简化权限……

    2025年9月26日
    15700
  • Android与Linux服务器如何高效通信?

    主流通信方式及实现HTTP/HTTPS协议(RESTful API)适用场景:数据交互(如登录验证、获取用户信息),实现步骤:Android端(使用OkHttp或Retrofit库):// 使用OkHttp发送GET请求val client = OkHttpClient()val request = Reque……

    2025年7月13日
    17800
  • 如何查询Linux系统的文件编码?

    在Linux系统中,编码的正确设置和查询至关重要,尤其是在处理多语言文本、文件传输或跨平台操作时,若编码不匹配,常会出现乱码、文件无法读取等问题,本文将详细介绍如何从系统级、文件级、终端级及环境变量等多个维度查询Linux的编码,帮助用户全面掌握编码信息的获取方法,查询系统级默认编码系统级编码是指Linux操作……

    2025年9月17日
    18800
  • linux如何开启路由转发功能

    Linux中,可通过执行命令echo 1 ˃ /proc/sys/net/ipv4/ip_forward开启路由转发功能,使系统能转发

    2025年8月17日
    16200

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信