本文档帮助你快速理解 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/xvda1xfs常见于 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.microAmazon Linux 2023根盘 8G gp3记住实例所在可用区步骤 1准备测试数据# SSH 连接后记录初始状态 df -h lsblk # 创建测试文件验证扩容后数据不丢失 echo 扩容前的数据如果还在说明扩容成功 /home/ec2-user/test.txt cat /home/ec2-user/test.txt步骤 2打快照备份EC2 控制台 → Elastic Block Store → Volumes选中根卷 → Actions →Create Snapshot描述填扩容前备份等待状态变为Completed步骤 3控制台扩 EBS 卷Volumes → 选中根卷 → Actions →Modify VolumeSize 从 8 改为20确认修改等状态从modifying→optimizing→ 完成步骤 4服务器内扩展分区和文件系统# 确认盘变大了但分区没变 lsblk # 预期xvda 显示 20Gxvda1 还是 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 变为 20Gtest.txt 内容完好全程无需停机实验二挂载新卷多加一块盘前提使用同一台 EC2 实例步骤 1控制台创建新卷EC2 → Elastic Block Store → Volumes →Create Volume大小5G类型gp3可用区必须和 EC2 实例一致Create Volume步骤 2挂载到实例选中新卷 → Actions →Attach Volume选择你的实例设备名自动填如/dev/xvdfAttach步骤 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替换根盘卸载当前根盘Volumes → 选中 20G 根卷 → Actions →Detach Volume挂载恢复卷选中从快照创建的 8G 新卷 → Actions →Attach VolumeInstance选你的 EC2Device填/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 分钟回滚
AWS EBS 磁盘扩容与挂载实验手册
发布时间:2026/6/30 21:49:00
本文档帮助你快速理解 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/xvda1xfs常见于 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.microAmazon Linux 2023根盘 8G gp3记住实例所在可用区步骤 1准备测试数据# SSH 连接后记录初始状态 df -h lsblk # 创建测试文件验证扩容后数据不丢失 echo 扩容前的数据如果还在说明扩容成功 /home/ec2-user/test.txt cat /home/ec2-user/test.txt步骤 2打快照备份EC2 控制台 → Elastic Block Store → Volumes选中根卷 → Actions →Create Snapshot描述填扩容前备份等待状态变为Completed步骤 3控制台扩 EBS 卷Volumes → 选中根卷 → Actions →Modify VolumeSize 从 8 改为20确认修改等状态从modifying→optimizing→ 完成步骤 4服务器内扩展分区和文件系统# 确认盘变大了但分区没变 lsblk # 预期xvda 显示 20Gxvda1 还是 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 变为 20Gtest.txt 内容完好全程无需停机实验二挂载新卷多加一块盘前提使用同一台 EC2 实例步骤 1控制台创建新卷EC2 → Elastic Block Store → Volumes →Create Volume大小5G类型gp3可用区必须和 EC2 实例一致Create Volume步骤 2挂载到实例选中新卷 → Actions →Attach Volume选择你的实例设备名自动填如/dev/xvdfAttach步骤 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替换根盘卸载当前根盘Volumes → 选中 20G 根卷 → Actions →Detach Volume挂载恢复卷选中从快照创建的 8G 新卷 → Actions →Attach VolumeInstance选你的 EC2Device填/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 分钟回滚