AWS 升级或变更机型无法启动问题-基于Nitro(C5,R5,M5)
用户需求
- 性能优化
- 成本优化
1.查询ena及nvme模块是否安装
- modinfo ena
- modinfo nvme
- 如果ena及nvme未安装,需要安装
2.更新系统模块依赖项
- modprobe ena
- modprobe nvme
升级机型后如果开机的initramfs缺少nvme及ena模块
内核无法顺利载入将会导致系统无法识别系统及数据盘
因此需要在系统内执行modprobe将ena及nvme驱动载入后,再重新打包initramfs
3.更新 initramfs 以确保在启动时加载新模块
- dracut -f -v
4.检查系统是否载入模块
- lsinitrd /boot/initramfs-$(uname -r).img | grep "nvme\|ena"
- lsmod | grep "nvme\|ena"
5.禁用网络接口命名
- RHEL 6 将net.ifnames=0 附加到 /boot/grup/menu.lst 文件的内核行中。
- vi /boot/grub/menu.lst
- RHEL 7 将net.ifnames=0 附加到 /etc/default/grub 文件的 GRUB_CMDLINE_LINUX 中
- GRUB_CMDLINE_LINUX="selinux=0 console=tty0 crashkernel=auto console=ttyS0,115200 nvme_core.io_timeout=4294967295 net.ifnames=0"
- 也可以使用 sed 命令追加
- sudo sed -i '/^GRUB_CMDLINE_LINUX/s/"$/\ net.ifnames=0"/' /etc/default/grub
6.为 grub2 重新生成配置文件
- grub2-mkconfig -o /boot/grub2/grub.cfg
7.官方检测Nitro脚本
主要修改fstab uuid挂载数据盘,如果不用修改可忽略执行
- wget https://raw.githubusercontent.com/awslabs/aws-support-tools/master/EC2/NitroInstanceChecks/nitro_check_script.sh
- sh nitro_check_script.sh
8.停止实例
- 控制台停止实例
9.启用实例ENA
不确定是否启用ENA时,建议执行
- aws ec2 modify-instance-attribute --instance-id instance_id --ena-support
10.修改机型
- 停机状态下修改机型
11.启动EC2实例
- 启动实例检查状态
参考文档:
https://aws.amazon.com/cn/premiumsupport/knowledge-center/boot-error-linux-nitro-instance/
https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/enhanced-networking-ena.html