You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在AWS为EC2实例挂载新EBS卷且不丢失原有数据?

嘿,我来帮你搞定EC2磁盘空间不足的问题,全程不会丢失原有数据,放心跟着步骤操作就行:

挂载新EBS卷并保留数据的详细步骤

首先先确认你已经把创建好的EBS卷成功附加到目标EC2实例了(如果还没做,去AWS控制台的EC2页面找到对应实例,点「存储」标签,选「附加卷」挑你创建的EBS卷就行,附加后会分配一个设备名,比如/dev/xvdb或者/dev/nvme1n1,具体取决于实例类型)。

接下来登录你的EC2实例,按以下步骤操作:

1. 识别新附加的EBS卷

先执行命令查看所有磁盘设备,找到你的新卷:

lsblk

你会看到类似这样的输出(其中xvda是你的根卷,没有挂载点的那个就是新卷,比如下面的xvdb):

NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
xvdb    202:16   0  50G  0 disk

2. 格式化新EBS卷(首次使用必做)

重要提醒:如果是全新的空EBS卷,必须格式化;如果是从快照恢复的已有数据的卷,直接跳过这一步!
这里以常用的ext4文件系统为例,执行格式化命令:

sudo mkfs -t ext4 /dev/xvdb

记得把/dev/xvdb换成你实际的新卷设备名。

3. 创建挂载点目录

选一个你想挂载新卷的目录,比如新建一个专门存数据的/data目录:

sudo mkdir /data

如果你想把现有大目录(比如/home)移到新卷,也可以直接用这个现有目录作为挂载点,后续再迁移数据。

4. 临时挂载新卷测试

先临时挂载,验证是否能正常识别:

sudo mount /dev/xvdb /data

然后用df -h检查,就能看到新卷已经成功挂载了:

df -h

5. 设置开机自动挂载(避免重启后失效)

编辑fstab配置文件,让系统开机自动挂载新卷:

sudo nano /etc/fstab

在文件末尾添加一行内容:

/dev/xvdb   /data   ext4    defaults,nofail 0   2
  • nofail参数很重要:确保即使挂载失败,实例也能正常启动
  • 替换/dev/xvdb/data为你的实际设备名和挂载点
  • 如果用的是xfs文件系统,把ext4改成xfs

保存退出后,执行以下命令测试配置是否正确(没报错就说明没问题):

sudo mount -a

可选方案:直接扩容根卷(替代挂载新卷)

如果你不想额外挂载一个卷,而是直接给现有根卷扩容,也是可行的:

  1. 去AWS控制台找到根卷,选择「修改卷」,调整到你需要的大小(比如20G)
  2. 回到实例,执行lsblk确认卷大小已经更新(根卷的SIZE会显示新数值,但分区大小还是原来的)
  3. 扩展分区和文件系统:
    • 针对ext4文件系统:
      sudo growpart /dev/xvda 1
      sudo resize2fs /dev/xvda1
      
    • 针对xfs文件系统:
      sudo xfs_growfs /
      
  4. df -h确认根卷空间已经扩容成功

额外注意事项

  • 操作前建议给根卷创建一个快照,以防万一(虽然步骤都是安全的,但快照是万全之策)
  • 如果要把现有数据(比如/home的内容)移到新卷,先备份,再用rsync命令迁移:
    sudo rsync -avx /home/ /data/
    
    之后修改fstab把新卷挂载到/home,重启后验证即可。

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

火山引擎 最新活动