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

AWS EBS 磁盘扩容与挂载实验手册

本文档帮助你快速理解 EBS 扩容和挂载新卷的区别,并通过动手实验掌握操作。


核心概念

直接扩 EBS vs 挂载新卷

直接扩 EBS挂载新卷
盘的数量还是 1 块变成 2 块
空间在哪原来的/直接变大在一个新目录下,比如/data
原有程序不用改,路径没变如果程序写/下,用不到新盘空间
操作复杂度简单(growpart + resize)要格式化、挂载、配 fstab
冷却限制改完要等 6 小时才能再改没限制,随时可以挂新盘
适用场景根分区不够用想把日志、数据库等单独放一块盘

扩容三层结构

EBS 卷(硬件层):控制台修改大小 └─ 分区(OS层):growpart 扩展分区边界 └─ 文件系统:resize2fs/xfs_growfs 让系统识别新空间

控制台只能管"硬件"这一层,分区和文件系统是操作系统内部的事,需要进服务器手动扩展。

文件系统类型判断

df -Th /
  • ext4(常见于 Ubuntu/Debian)→ 用sudo resize2fs /dev/xvda1
  • xfs(常见于 Amazon Linux/RHEL)→ 用sudo xfs_growfs /

lsblk 输出解读

xvda 20G disk ← 整块磁盘 ├─xvda1 8G part / ← 根分区,数据都在这 ├─xvda127 1M part ← BIOS Boot 分区,GRUB 引导代码,不用管 └─xvda128 10M part /boot/efi ← UEFI 启动文件,不用管

xvda127 和 xvda128 编号放在最后面,是 AWS 故意的设计,保证 xvda1 可以顺畅向后扩展。

设备名对应关系

控制台填的名字和服务器里看到的可能不同:

控制台填的服务器里实际显示的
/dev/sdf/dev/xvdf
/dev/sdg/dev/xvdg
/dev/sdp/dev/xvdp

指向同一块盘,只是命名方式不同。


实验一:直接扩容 EBS(原盘变大)

前提

  • 一台 EC2 实例(t2.micro,Amazon Linux 2023,根盘 8G gp3)
  • 记住实例所在可用区

步骤 1:准备测试数据

# SSH 连接后记录初始状态 df -h lsblk # 创建测试文件(验证扩容后数据不丢失) echo "扩容前的数据,如果还在说明扩容成功" > /home/ec2-user/test.txt cat /home/ec2-user/test.txt

步骤 2:打快照备份

  1. EC2 控制台 → Elastic Block Store → Volumes
  2. 选中根卷 → Actions →Create Snapshot
  3. 描述填"扩容前备份"
  4. 等待状态变为Completed

步骤 3:控制台扩 EBS 卷

  1. Volumes → 选中根卷 → Actions →Modify Volume
  2. Size 从 8 改为20
  3. 确认修改
  4. 等状态从modifyingoptimizing→ 完成

步骤 4:服务器内扩展分区和文件系统

# 确认盘变大了但分区没变 lsblk # 预期:xvda 显示 20G,xvda1 还是 8G # 扩展分区 sudo growpart /dev/xvda 1 # 确认文件系统类型 df -Th / # 扩展文件系统(xfs 的情况) sudo xfs_growfs / # 如果是 ext4 则用: # sudo resize2fs /dev/xvda1 # 验证结果 df -h lsblk # 确认数据还在 cat /home/ec2-user/test.txt

预期结果

  • 根分区从 8G 变为 20G
  • test.txt 内容完好
  • 全程无需停机

实验二:挂载新卷(多加一块盘)

前提

使用同一台 EC2 实例

步骤 1:控制台创建新卷

  1. EC2 → Elastic Block Store → Volumes →Create Volume
  2. 大小:5G,类型:gp3
  3. 可用区必须和 EC2 实例一致
  4. Create Volume

步骤 2:挂载到实例

  1. 选中新卷 → Actions →Attach Volume
  2. 选择你的实例
  3. 设备名自动填(如/dev/xvdf
  4. Attach

步骤 3:服务器内操作

# 确认新盘出现 lsblk # 预期看到: # xvda 20G # ├─xvda1 20G / # xvdf 5G ← 新盘,没有挂载点 # 格式化新盘(仅第一次,会清空数据) sudo mkfs.xfs /dev/xvdf # 创建挂载目录 sudo mkdir /data # 挂载 sudo mount /dev/xvdf /data # 验证 df -h # 预期看到 /dev/xvdf 5G 挂载在 /data # 写入测试数据 echo "这是新盘的数据" > /data/newdisk_test.txt cat /data/newdisk_test.txt

步骤 4:配置开机自动挂载(可选)

# 获取 UUID sudo blkid /dev/xvdf # 编辑 fstab(注意替换为实际 UUID) sudo bash -c 'echo "UUID=你的UUID /data xfs defaults,nofail 0 2" >> /etc/fstab' # 验证 fstab 配置正确(不会导致启动失败) sudo umount /data sudo mount -a df -h

⚠️ 如果不配 fstab,重启后挂载会丢失,需要重新 mount。

预期结果

  • 多了一块 5G 独立磁盘
  • 挂载在/data目录
  • 根分区/和新盘/data是独立的

实验三:快照恢复(模拟故障回滚)

前提

已完成实验一(有一个扩容前的快照)

步骤 1:模拟故障

# 写入一些"坏数据" echo "这是扩容后产生的坏数据" > /home/ec2-user/bad.txt

步骤 2:停止实例

EC2 → Instances → 选中实例 → Instance State →Stop

等状态变为 Stopped

步骤 3:从快照创建新卷

EC2 → Snapshots → 选中快照 → Actions →Create Volume from Snapshot

  • 可用区:必须和实例一致
  • 大小:默认(8G,和快照一样)
  • Create

步骤 4:替换根盘

  1. 卸载当前根盘:Volumes → 选中 20G 根卷 → Actions →Detach Volume
  2. 挂载恢复卷:选中从快照创建的 8G 新卷 → Actions →Attach Volume
    • Instance:选你的 EC2
    • Device:填/dev/xvda(必须和原来一致)

步骤 5:启动并验证

Instance State →Start

# SSH 连接后验证 df -h lsblk # 预期:根分区回到 8G cat /home/ec2-user/test.txt # 预期:扩容前写的数据还在 cat /home/ec2-user/bad.txt # 预期:No such file(因为回滚到快照时间点)

预期结果

  • 根分区恢复到 8G(快照时的状态)
  • 快照前的数据(test.txt)完好
  • 快照后的数据(bad.txt)不存在
  • 相当于"一键回档"

注意事项

事项说明
扩容前打快照养成习惯,操作失误可回滚
两次修改间隔同一 EBS 卷修改后需等至少 6 小时才能再改
只能扩不能缩EBS 卷只能增大,无法缩小
不需要停机gp2/gp3 扩容支持在线操作
快照恢复需停机替换根盘必须先 Stop 实例
可用区一致创建卷/恢复快照时 AZ 必须和实例一致
扩分区 ≠ 改分区growpart 只是把分区终点往后推,数据不动

清理资源(避免持续计费)

1. 卸载新卷:sudo umount /data 2. 控制台 Detach 额外的卷 3. Delete 不需要的卷 4. Delete 不需要的快照 5. Terminate EC2 实例(勾选了 Delete on Termination 会自动删根盘)

总结

  • 根分区空间不够→ 直接扩 EBS,一条路走到底
  • 想把某个目录独立出去→ 挂载新卷
  • 操作前永远先打快照→ 出问题 5 分钟回滚

http://www.gsyq.cn/news/1610445.html

相关文章:

  • YOLOv8一站式本地部署:图像分类、检测与分割实战指南
  • Beyond Compare 5终极激活指南:三步实现永久专业版
  • 告别臃肿控制软件:G-Helper如何用50MB重塑华硕笔记本性能管理体验
  • Sora接入国内企业私有云的完整链路:从模型蒸馏、视频缓存优化到GPU资源调度(含华为昇腾适配代码)
  • 扩散模型能耗预测:计算复杂度与能源效率的关系
  • 008、SRGAN感知损失:对抗生成网络在超分中的视觉质量革命
  • 计算机专业就业:工程实践里的常见坑
  • CADC技术:基于树突卷积的内存计算优化方案
  • 量子立方体编码:理论与实践的突破性进展
  • 扩散模型能耗预测:计算复杂度与优化策略
  • 树莓派5上从源码编译Mosquitto 1.6.8保姆级教程(含libssl-dev依赖安装避坑)
  • 量子启发神经算子压缩:边缘计算中的模型优化实践
  • 量子化学计算中的UCJ与LUCJ参数优化方法解析
  • Go 基础:结构体与切片
  • AI Agent 工具调用中间件:Go 实现截断、超时与熔断
  • Transformer 理解
  • Speck2f神经形态芯片与低功耗瞳孔追踪系统解析
  • Arm CCA与CAEC:机密计算中的高效内存共享技术
  • NCM音乐文件解锁神器:3分钟极速转换的终极指南
  • 医学图像分割中的域泛化挑战与SRCSM解决方案
  • 如何构建企业级数据集成管道:Pentaho Kettle核心功能深度解析
  • 批量制作门店短视频工具推荐,鹿小云混剪高效拓客
  • 保姆级教程:用群晖Drive+cpolar,把Obsidian笔记库变成你的私有云知识库
  • CrabCode v1.0.9 更新速览!一次集中打磨,体验更清爽!
  • 从GD32VF103到HPM6000:手把手教你选型国产RISC-V单片机(附开发环境清单)
  • 微服务架构迁移:后端团队应该避免的常见陷阱
  • SpringBoot+Vue 旅游出行指南_ms ()abo平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 从零玩转Metasploit Framework:渗透测试核心平台实战指南
  • JDspyder京东抢购脚本:3分钟快速上手指南,轻松实现茅台秒杀自动化
  • Citrix Netscaler高危漏洞CVE-2025-12101:原理、修复与加固指南