提问

#楼主# 2019-9-4

跳转到指定楼层
本帖最后由 社群技术交流 于 2019-9-4 18:25 编辑

作者:光环云 田亮

注意:执行操作前请先对实例进行快照!

背景

今年的早些时候AWS公布了最新的第五代实例C5/R5已经在国内上线,大家可能已经从公众号或新闻中得知了这个好消息,既然C5/R5来了,我估计同为第五代实例的M5/T3应该也会在不久的将来和大家见面。这对大量使用EC2服务的用户来说是个好消息。

那C5想较与之前的C4有哪些变化呢?大家最直观的的感受恐怕就是便宜了,没错,从官网公布的价格来看同样的CPU内存数量配置C5比C4下降了大概三分之一。很多用户兴奋的从C4改为C5,但是部分用户修改完发现系统无法启动,只得再改回C4。我支持的一个客户就遇到了这个问题,修改完之后系统无法正常工作,那原因是什么?又改如何解决呢?接下来我就和大家一起一步步分析解决这个问题。

C5的变化

让我们先来看看除了价格变化之外,C5还有哪些变化?我总结主要有以下2点。

CPU换代,换成了最新支持AVX-512指令集的至强白金8000系列CPU。

全面采用采用Nitro虚拟化系统,计算虚拟化由XEN转为KVM(当然和大家平时使用的KVM还是有些不同的,据AWS讲做了大量的定制和优化),IO处理全面offload给硬件,因此带来了更强的性能更低的价格。第五代实例的变化非常多,单讨论这个问题就够写一篇文章了,但今天我们的主题是如何从C4改为C5,这里我先挖个坑,以后等M5上线了,我们再详细讨论Nitro,这里我们先回归正题,聊聊NitroIO虚拟化。

Nitro相较于之前最显著的变化在于存储IO、网络IO全面offload给了硬件芯片, 并且暴露给虚机的接口也有所变化,操作系统看到的存储接口变为了nvme,网络接口为ENA。以上的这些变化给C5带来了更快更稳定的磁盘、网络性能(EBS性能最高80000IOPS/14Gbps,网卡带宽最高25Gbps),但存储、网络接口的变化也带来了一些挑战,很多系统默认没有安装或加载驱动,导致EC2无法正常工作。问题很可能就出在这。

操作系统的情况

这个客户采用的是自己制作上传的CentOS7.3 AMI,最小化安装。

CentOS是国内很多企业用户习惯使用的Linux发行版,我个人也很喜欢使用CentOS,现阶段大家使用的版本以CentOS 7为主(在我写这篇文章的时候RHEL8 稳定版已经Release了,CentOS 8稳定版在Build阶段尚未release)。AWS官方尚未提供CentOS AMI镜像,AMI社区中的CentOS来源不明,很多用户自己上传AMI来解决CentOS的需求,这个用户就采用的这种方式(在这里给大家透露个消息:据悉Marketplace落地国内后官方的CentOS会第一批上架,大家期待一下吧)。
实际操作

我让客户将此AMI共享给了我的账号,启动一台c4实例SSH登陆执行命令:
  1. modinfo ena
  2. modinfo nvme
复制代码
发现驱动都在,但ENA的版本比较低,执行yum update
(如果ena驱动不在的话执行yum update 升级一下系统就会有了)

升级完reboot 重启。关机修改实例类型开机

发现系统已经进登陆界面但网络不通,查看日志输出发现以下内容:
image1.png


[   10.660225] cloud-init[2495]:Cloud-init v. 18.2 running 'init' at Sun, 19 May 2019 16:45:32 +0000. Up 10.63seconds.

[   10.726440] cloud-init[2495]:ci-info: +++++++++++++++++++++++++++Net device info++++++++++++++++++++++++++++

[   10.732149] cloud-init[2495]:ci-info: +--------+-------+-----------+-----------+-------+-------------------+

[   10.737739] cloud-init[2495]: ci-info:| Device |   Up  | Address  |    Mask  | Scope |     Hw-Address    |

[   10.743883] cloud-init[2495]:ci-info: +--------+-------+-----------+-----------+-------+-------------------+

[   10.749145] cloud-init[2495]:ci-info: | ens5:  | False |     .    |     .     |  .   | 06:34:e7:ba:xx:xx |

[   10.754515] cloud-init[2495]:ci-info: |  lo:   | True | 127.0.0.1 | 255.0.0.0 |  .   |         .         |

[   10.761298] cloud-init[2495]:ci-info: |  lo:   | True |     .     |    .     |   d   |         .        |

[   10.766778] cloud-init[2495]:ci-info: +--------+-------+-----------+-----------+-------+-------------------+



网卡名为 ens5状态为down,看来由于网卡变成了ena类型,使用了一致性命名规则,以PCI-E接口序号命令网卡名。原来系统网卡配置文件为eth0,现在网卡名变成了ens5当然起不来啦。

修改grub 增加net.ifnames=0 关闭一网卡致性命名规则。

命令如下:

  1. sed -i '/^GRUB\_CMDLINE\_LINUX/s/"$/\ net\.ifnames\=0"/' /etc/default/grub
  2. grub2-mkconfig -o /boot/grub2/grub.cfg
复制代码
执行完关机,修改实例类型为C5,开机。系统就可以直接登录啦。

转播转播
回复

使用道具

联系楼主
*
*
客户公司所在区域:
*
产品:
*
简述客户的业务场景和需求
*
*
*

成为第一个回答人

B Color Link Quote Code Smilies
光环云社区 |京ICP备18044167号-13|

京公网安备 11010102003758号