优化性能和功能
将最佳调整大小、网络和管理做法纳入 Azure Linux VM 部署计划后,需考虑性能和功能。 本单元介绍如何优化 Azure Linux VM 部署的网络和存储资源。
优化网络性能
若要优化 Azure Linux VM 的网络性能,可以使用基于内核的网络优化并实现加速网络(如果可用)。
基于内核的网络优化
2017 年 9 月之后发布的 Linux 内核包括网络优化选项,使 Azure Linux VM 能够实现更高的网络吞吐量。 通过使用最新的 Linux 内核,可以显著提高吞吐量性能。
新的和现有的 Azure VM 也可从安装最新 Linux Integration Services (LIS) 中受益。 从版本 4.2 开始,吞吐量优化是 LIS 的一部分,后续版本包含进一步的改进。
加速网络
可以实现加速网络以最小化延迟、最大化吞吐量并降低 CPU 利用率。 加速网络使用主机硬件的单根 I/O 虚拟化 (SR-IOV) 功能来提高网络性能。
在不使用加速网络的情况下,传入和传出 VM 的所有网络流量必须遍历主机和虚拟交换机。 在使用加速网络的情况下,抵达 VM 的网络接口的网络流量会绕过主机直接转发到 VM。
加速网络仅适用于启用了它的 VM。 为获得最佳效果,请在连接到同一虚拟网络的 Azure VM 上启用此功能。 跨虚拟网络通信或在混合场景中通信时,此功能对总体延迟的影响极小。
Azure 支持将加速网络用于大多数具有 2 个或 2 个以上 vCPU 的常规用途和计算优化实例大小。 使用超线程的 VM 实例支持在具有四个或更多个 vCPU 的实例上使用加速网络。
优化存储性能
每个 Azure Linux VM 至少具有以下两个虚拟磁盘:
标记为
/dev/sda
的 OS 磁盘的最大容量为 2 TiB(适用于主启动记录 (MBR) 格式的磁盘)或 4 TiB(适用于 GUID 分区表 (GPT) 格式的磁盘)。 用于预配 Azure VM 的映像决定默认大小。避免在 OS 磁盘上存储数据和安装应用程序,因为它针对快速启动进行了优化处理,而不是运行非 OS 工作负荷。
标记为
/dev/sdb
并装载到/mnt
的临时磁盘提供临时存储。 磁盘的大小和性能取决于 VM 大小,其主要用途是存储交换文件。临时磁盘用于短期存储可丢弃或可轻松重新创建的数据。 不要使用临时磁盘来存储在重设大小、重新部署或重启等操作中必须保留的文件。
若要实现交换文件的最佳配置,请对支持它的映像使用 cloud-init。 对不支持 cloud-init 的映像使用 Azure VM Linux 代理。
虚拟数据磁盘
若要存储数据和安装应用程序,可以创建虚拟磁盘,将它们附加到 Azure VM,然后将它们装载在 OS 中。 可以根据存储和每秒输入/输出 (IOPS) 要求按需添加更多磁盘。 请谨记下列注意事项:
- 可附加到 Azure VM 的磁盘数上限取决于 VM 大小。
- Azure VM 支持的 IOPS 数上限不仅取决于其磁盘的聚合吞吐量,还取决于 VM 的最大 IOPS 吞吐量(由 VM 大小决定)。 有效吞吐量是这两个值中较低的那一个。
若要为 Azure VM 提供存储,可以使用 Azure 管理的块级存储卷。 Azure 托管磁盘支持以下五种磁盘类型,这些类型是为了应对特定的客户场景:
- Ultra Disks,适用于 SAP HANA、顶层数据库(如 SQL 和 Oracle)等 IO 密集型工作负荷以及其他事务密集型工作负荷。
- 高级固态硬盘 (SSD) v2,适用于始终需要低延迟、高 IOPS 和高吞吐量的生产和性能敏感型工作负荷。
- 高级 SSD,适用于生产和性能敏感型工作负荷。
- 标准 SSD,适用于 Web 服务器、不常使用的企业应用程序以及开发或测试场景。
- 标准硬盘驱动器 (HDD),适用于备份和不经常访问的非关键数据。
高级 SSD 的写入屏障
若要在缓存设置为 ReadOnly
或 None
的高级 SSD 磁盘上实现最高 IOPS,请在 Linux 中装载文件系统时禁用写入屏障。 不需要屏障,因为写入高级存储支持的磁盘对于这些缓存设置是持久的。 如果缓存设置为 Read/Write
,请始终启用屏障以确保写入持续性。
- 如果使用 reiserFS 文件系统,请使用装载选项
barrier=none
禁用屏障。 - 如果使用 ext3/ext4,请使用装载选项
barrier=0
禁用屏障。 - 如果使用 XFS,请使用装载选项
nobarrier
禁用屏障。
高级 SSD 的 I/O 调度算法
Linux 内核提供两组磁盘 I/O 计划程序来对请求进行重新排序:一组用于较早的 blk
子系统,另一组用于较新的 blk-mq
子系统。 对于 Azure 高级存储磁盘,请使用将计划决策传递给基础虚拟化平台的计划程序。
- 对于使用
blk
子系统的 Linux 内核,请选择noop
计划程序。 - 对于使用
blk-mq
子系统的 Linux 内核,请选择none
计划程序。
多磁盘配置
如果工作负载需要的 IOPS 超过单个磁盘所能提供的 IOPS,请使用软件独立磁盘冗余阵列 (RAID) 配置,该配置组合多个磁盘。 Azure 在存储结构层提供磁盘复原能力,因此你可通过实现 RAID-0 条带来专注于性能。
可以安装逻辑卷管理器 (LVM) 并使用它将多个虚拟磁盘组合到一个单条带逻辑存储卷中,作为替代方法。 在这种配置中,读取和写入分布到该卷组中包含的多个磁盘上,类似于 RAID-0。 出于性能的考虑,你可能希望将逻辑卷条带化,以便读取和写入操作使用所有附加的数据磁盘。