能否删除EC2实例的nvme0n1?改用nvme1n1规避EBS费用
关于移除EC2 c5d.xlarge实例上的EBS卷(nvme0n1)改用本地NVMe的方案
核心结论
可以移除nvme0n1(EBS卷)并改用nvme1n1(本地NVMe存储)来规避EBS费用,但前提是nvme0n1不是实例的系统盘。如果它是系统盘,需要先把系统迁移到本地NVMe后才能移除。
第一步:确认nvme0n1的用途
先通过以下命令判断该EBS卷是否为系统盘:
lsblk -f
查看输出中nvme0n1对应的挂载点,如果是/(根目录),那它就是系统盘;如果是其他挂载点(比如/data),则为数据盘,可直接移除。
情况1:nvme0n1是数据盘(非系统盘)
1. 卸载挂载的EBS卷
先停止使用该卷上的所有进程,然后卸载:
umount /dev/nvme0n1p1 # 替换为实际的挂载分区,比如nvme0n1的分区
如果提示“target is busy”,可以用fuser -mv /mount/path找到占用进程,停止后再卸载。
2. 在AWS控制台分离EBS卷
- 登录AWS EC2控制台,找到你的c5d.xlarge实例
- 进入「存储」标签,找到对应的9GB EBS卷(nvme0n1)
- 点击「分离卷」,确认操作即可。注意:运行中的实例也可以热分离,但必须先完成卸载步骤
3. 配置使用nvme1n1(本地NVMe)
如果还没格式化本地盘,先格式化(注意会清除所有数据):
mkfs.ext4 /dev/nvme1n1
然后创建挂载点并挂载:
mkdir /local-storage mount /dev/nvme1n1 /local-storage
如果需要开机自动挂载,编辑/etc/fstab添加一行:
echo "/dev/nvme1n1 /local-storage ext4 defaults 0 0" >> /etc/fstab
情况2:nvme0n1是系统盘
这种情况不能直接移除,需要先把系统迁移到本地NVMe(nvme1n1),步骤如下:
- 停止实例(不能用终止),分离当前的系统EBS卷(作为备份)
- 启动一个临时EC2实例,将备份的EBS卷挂载到临时实例,同时确保临时实例的本地NVMe可访问
- 用
rsync将EBS卷上的系统数据完整复制到本地NVMe:rsync -aAXv /mnt/ebs-system/ /mnt/local-nvme/ - 调整本地NVMe的引导配置:修复GRUB引导项,更新
/etc/fstab中的磁盘UUID为本地NVMe的UUID - 停止临时实例,将原c5d.xlarge实例重新启动,此时系统会从本地NVMe引导
- 确认系统正常运行后,即可删除原EBS卷
重要提醒
- c5d系列的本地NVMe存储是实例自带的,不会产生额外EBS费用,但实例终止后本地盘的数据会永久丢失,务必做好定期备份
- 所有操作前请确认关键数据已备份,避免数据丢失
内容的提问来源于stack exchange,提问作者Rick Shin
相关产品推荐
相关产品推荐

