各种磁盘类型的性能图表中描述了本地 SSD 分区可实现的性能上限。如需优化应用和虚拟机实例以达到这些速度,请使用以下最佳做法:
对本地 SSD 使用客机环境优化功能
默认情况下,大多数由 Compute Engine 提供的 Linux 映像将自动运行一个优化脚本,该脚本会对实例进行配置以实现本地 SSD 的最高性能。该脚本会启用某些队列 sysfs
设置,这些设置可增强机器的整体性能,并屏蔽对特定虚拟 CPU (vCPU) 的中断请求 (IRQ)。此脚本仅优化 Compute Engine 本地 SSD 分区的性能。
Ubuntu、SLES 和其他较旧的映像可能未配置为包含此性能优化功能。如果您使用的是这些映像中的任何一个或 v20141218 之前的映像,则可以安装客机环境来启用这些优化功能。
为 NVMe 或 SCSI 接口选择最佳映像
本地 SSD 在采用 NVMe 或 SCSI 接口时运行得最好,具体取决于您使用的操作系统。为您的本地 SSD 分区选择一个最适合您的启动磁盘映像的接口。如果您的实例使用 SCSI 接口连接到本地 SSD,则可以在客机操作系统上启用多队列 SCSI,以通过 SCSI 接口实现最佳性能。
在具有自定义映像和本地 SSD 的实例上启用多队列 SCSI
某些公共映像支持多队列 SCSI。如果您要求导入到项目中的自定义映像具备多队列 SCSI 功能,则必须自行启用该功能。只有包含内核版本 3.19
或更高版本的导入的 Linux 映像才能使用多队列 SCSI。
如需在某个自定义映像上启用多队列 SCSI,请在启用了 VIRTIO_SCSI_MULTIQUEUE
客机操作系统功能的情况下导入该映像,并向 GRUB 配置文件中添加一个条目:
CentOS
仅适用于 CentOS7。
使用 API 导入您的自定义映像,并添加一个
type
值为VIRTIO_SCSI_MULTIQUEUE
的guestOsFeatures
项。使用您的自定义映像创建一个实例,并挂接一个或多个本地 SSD。
通过 SSH 连接到您的实例。
查看
/sys/module/scsi_mod/parameters/use_blk_mq
文件的值$ cat /sys/module/scsi_mod/parameters/use_blk_mq
如果此文件的值为
Y
,则说明在导入的映像上已启用多队列 SCSI。如果此文件的值为N
,请在 GRUB 配置文件内的GRUB_CMDLINE_LINUX
条目中添加scsi_mod.use_blk_mq=Y
,并重启系统。在文本编辑器中打开
/etc/default/grub
GRUB 配置文件。$ sudo vi /etc/default/grub
将
scsi_mod.use_blk_mq=Y
添加到GRUB_CMDLINE_LINUX
条目。GRUB_CMDLINE_LINUX=" vconsole.keymap=us console=ttyS0,38400n8 vconsole.font=latarcyrheb-sun16 scsi_mod.use_blk_mq=Y"
保存配置文件。
运行
grub2-mkconfig
命令即可重新生成 GRUB 文件并完成配置。$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
重新启动实例。
$ sudo reboot
Ubuntu
使用 Compute Engine API 导入您的自定义映像,并添加一个
type
值为VIRTIO_SCSI_MULTIQUEUE
的guestOsFeatures
项。使用您的自定义映像创建一个实例,并使用 SCSI 接口附加一个或多个本地 SSD。
通过 SSH 连接到您的实例。
查看
/sys/module/scsi_mod/parameters/use_blk_mq
文件的值。$ cat /sys/module/scsi_mod/parameters/use_blk_mq
如果此文件的值为
Y
,则说明在导入的映像上已启用多队列 SCSI。如果此文件的值为N
,请在 GRUB 配置文件内的GRUB_CMDLINE_LINUX
条目中添加scsi_mod.use_blk_mq=Y
,并重启系统。在文本编辑器中打开
sudo nano /etc/default/grub
GRUB 配置文件。$ sudo nano /etc/default/grub
将
scsi_mod.use_blk_mq=Y
添加到GRUB_CMDLINE_LINUX
条目。GRUB_CMDLINE_LINUX="scsi_mod.use_blk_mq=Y"
保存配置文件。
运行
update-grub
命令即可重新生成 GRUB 文件并完成配置。$ sudo update-grub
重新启动实例。
$ sudo reboot
停用写入缓存刷新功能
文件系统、数据库和其他应用会使用缓存刷新功能来确保在各个检查点将数据提交到持久性存储系统中。对于大多数存储设备来说,这种默认操作是有意义的。但是,本地 SSD 上的写入缓存刷新速度相当缓慢。您可以通过在这些应用中停用自动刷新命令或通过在文件系统级别停用刷新选项来提高某些应用的写入性能。
无论您为文件系统和应用设置的刷新命令是怎样的,本地 SSD 总是会在两秒钟内刷新已缓存的写入内容,因此临时硬件故障最多只会导致您丢失两秒钟的缓存写入内容。无论是否已刷新数据,永久性的硬件故障仍可能导致设备上的所有数据丢失,因此您仍应将关键数据备份到永久性磁盘或 Cloud Storage 存储分区中。
如需在 ext4
文件系统上停用写入缓存刷新功能,请在您的装载选项或 /etc/fstab
条目中添加 nobarrier
。例如:
$ sudo mount -o discard,defaults,nobarrier /dev/[LOCAL_SSD_ID] /mnt/disks/[MNT_DIR]
其中:[LOCAL_SSD_ID]
是您要装载的本地 SSD 的设备 ID,[MNT_DIR]
是要装载到的目录。