问题点

一直使用的是Amazon自有的Amazon Linux,中国区的C5出来后,将原有的机器升级到C5的时候,发现额外挂载的磁盘没有挂载成功。

调查了一下,C5系列属于Nitro-based instance, EBS卷默认使用的是NVMe driver,设备名由原来C4的/dev/xvda1和/dev/xvdf变为了/dev/nvme[0-26]n1的格式。官网说明Device Naming on Linux Instances

以前C4的机器中,/etc/fstab中设定的另外一块EBS的挂载点是/dev/xvdf, 所以导致了换用C5的时候,没能自动挂载。

1
2
# C4时的设置
/dev/xvdf /mnt/data ext4 auto,nofail,defaults 1 2

解决办法

lsblk查看EBS的挂载路径,然后修改/etc/fstab。解决了问题。

1
/dev/nvme1n1 /mnt/data ext4 auto,nofail,defaults 1 2

AWS推荐的mount方法

关于/etc/fstab的挂载点,AWS官方文档Automatically Mount an Attached Volume After Reboot推荐使用UUID来进行挂载,而不要直接使用像/dev/xvdf之类的设备名。类似

1
UUID=aebf131c-6957-451e-8d34-ec978d9581ae /data xfs defaults,nofail 0 2

其中的磁盘UUIDaebf131c-6957-451e-8d34-ec978d9581ae可以通过命令blkid来查看。此时,无论Instance改为了哪种类型的Instance,启动时都可以正常挂载使用。
使用UUID的挂载方法,也适用于于从Instance制作AMI,再从AMI启动新的Instance的情况,从AMI中启动的Instance的相同分区的EBS的UUID都是相同的,所以能够自动挂载。

相关知识

开启ENA

使用C5类型时,要求Instance或AMI是支持Elastic Network Adapter(ENA)的才行。
将现有的Instance升级为ENA Support的方法参见官网说明Enabling Enhanced Networking with the Elastic Network Adapter (ENA) on Linux Instances

大概步骤:

  • 系统中安装ENA支持
  • 修改Instance为ena-support : aws ec2 modify-instance-attribute --instance-id instance_id --ena-support
  • 查看Instance是否ena-support: aws ec2 describe-instances --instance-ids instance_id --query "Reservations[].Instances[].EnaSupport"
  • 支持ena的Instance制作的AMI,会继承该Instance的ena属性。

如果没有开启ENA,则无法使用C5类型。

  • 当不支持ENA的Instance被修改为C5时,启动时会报如下的错误:
    Start-instance-error-when-C5.png

  • 当从不支持ENA的AMI来launch Instance时,直接就没法选择C5系列的类型。
    AMI-ena-required-when-launching-C5.png

Reference

留言