You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2 Linux根分区调整:将nvme0n1p1缩至50G(XFS)

AWS EC2 XFS根卷缩容并新建/data分区的解决方法

关键说明

XFS文件系统不支持缩小操作,xfs_growfs仅用于扩容,这就是你操作失败的核心原因。要实现目标分区结构,必须通过「备份数据→重建分区→恢复数据」的流程完成。

详细操作步骤

1. 备份根分区数据

先做好数据备份,避免操作过程中丢失:

  • 停止EC2实例,保证数据一致性
  • 从EC2控制台分离当前根卷nvme0n1
  • 给该卷创建快照,再基于快照生成一个新的EBS卷,挂载到同实例的其他挂载点(比如/dev/sdf,系统内会识别为nvme1n1)
  • 启动实例,挂载临时备份卷:
    mkdir /mnt/old-root
    mount /dev/nvme1n1p1 /mnt/old-root
    
  • 打包备份根目录数据:
    tar -czf /tmp/root-backup.tar.gz -C /mnt/old-root .
    
  • 备份完成后卸载临时卷:
    umount /mnt/old-root
    

2. 重建新根卷的分区结构

  • 再次停止实例,分离原根卷和临时备份卷
  • 创建一个新的100G EBS卷(与原卷同可用区),作为新根卷
  • 将新卷挂载到一台临时EC2实例(或同一实例的其他挂载点),使用fdisk分区:
    fdisk /dev/nvme0n1
    
    按以下步骤操作:
    • 输入d删除所有现有分区(若存在)
    • 输入n创建第一个主分区:选择主分区,起始扇区默认,结束扇区输入+50G,得到nvme0n1p1
    • 输入n创建第二个主分区:起始扇区默认,结束扇区默认(自动占用剩余50G),得到nvme0n1p2
    • 输入t修改分区类型:选择p1,输入83(Linux分区类型);再选择p2,同样输入83
    • 输入w保存分区表
  • 格式化两个分区为XFS:
    mkfs.xfs /dev/nvme0n1p1
    mkfs.xfs /dev/nvme0n1p2
    

3. 恢复数据并配置自动挂载

  • 挂载新创建的nvme0n1p1:
    mkdir /mnt/new-root
    mount /dev/nvme0n1p1 /mnt/new-root
    
  • 解压备份数据到新根分区:
    tar -xzf /tmp/root-backup.tar.gz -C /mnt/new-root
    
  • 修改fstab,让/data分区开机自动挂载:
    echo "/dev/nvme0n1p2 /data xfs defaults 0 0" >> /mnt/new-root/etc/fstab
    
  • 卸载新根分区:
    umount /mnt/new-root
    

4. 替换根卷并验证结果

  • 停止临时实例,分离新创建的根卷
  • 回到原EC2实例控制台,选择「替换根卷」,将新卷设置为根卷
  • 启动原实例,登录后执行以下命令验证:
    lsblk
    df -h
    
    此时应能看到nvme0n1p1挂载/(50G),nvme0n1p2挂载/data(50G)

简化替代方案

如果不想搭建临时实例,也可以用AMI备份快速完成:

  • 停止原实例,创建AMI镜像
  • 基于该AMI启动新实例,启动时设置根卷大小为50G,同时附加一个50G的卷作为/data
  • 迁移原实例数据到新实例后,销毁原实例即可

内容的提问来源于stack exchange,提问作者JT Kon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 13:31:01