实例虚拟化从Xen到Nitro


亚马逊云的EC2大多数都是虚拟机,那么必然会用到各种各样的虚拟化技术,在早些的时间里用的是Xen,后来使用了亚马逊自研的Nitro技术,据说是基于KVM做了一些修改。

那么,从Xen升级到Nitro,需要开启一些设置,比如增强联网,EBS优化还有安装NVME驱动,做完这些操作之后,才能把一个Xen实例的机型升级为Nitro机型。

增强联网

大多数虚拟机都有一个通病,因为所有东西都是虚拟化出来的,所以高负载的时候速度会比较慢,并且会消耗大量的主机CPU。在Vmware和virtualbox上默认就是这中,每次网络测速都跑不满带宽,虚拟机和硬件之间始终隔着一层操作系统。

后来,亚马逊云推出了增强联网,其实也就是SR-loV技术。这个可以把物理硬件直通到虚拟机中而不再需要宿主机的转发,这种端到端的通信,就不会消耗大量的主机CPU。

EBS优化

EBS优化给实例分配了单独的带宽来连接EBS,众所周知EBS是通过网络与实例挂载的,而每个实例类型都有不同的网络带宽。那么在没有优化的情况下,EBS就会和应用负载共享带宽,如果恰好当时的磁盘吞吐量比较高,那么应用的网络是一定会受到波动的。在开启EBS优化之后,就可以分给EBS单独的带宽,这样无论磁盘负载,都不会对实例的网络进出造成影响。

在大多数常用的机型中,EBS优化是免费的,而且Nitro实例默认支持这个功能,少部分实例支持这个功能但是需要额外收取费用。

NVME驱动

想要获得NVME EBS全部的性能,也需要单独安装驱动程序。

对于windows来说:

Invoke-WebRequest https://s3.amazonaws.com/ec2-windows-drivers-downloads/NVMe/Latest/AWSNVMe.zip -outfile $env:USERPROFILE\nvme_driver.zip
Expand-Archive $env:userprofile\nvme_driver.zip -DestinationPath $env:userprofile\nvme_driver

.\install.ps1 -EnableSCSIPersistentReservations $true

对于Linux,

sudo apt-get update -y
sudo apt-get install --only-upgrade -y linux-aws
sudo reboot

这个linux-aws的除了会安装NVME驱动之外,也会安装增强联网的ENA 驱动。

参考

  1. 增强联网:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/enhanced-networking-ena.html

  2. EBS 优化:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ebs-optimized.html

  3. NVME 驱动for windows:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/WindowsGuide/aws-nvme-drivers.html

  4. NVME驱动for linux:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html#install-nvme-driver


文章作者: AWS Learner
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 AWS Learner !
评论
  目录