对于磁盘和网络输入/输出操作,机密虚拟机会使用内存中名为 Software Input Output Translation Lookaside Buffer (SWIOTLB) 的特定区域,其默认大小为 64 MB。SWIOTLB 是客机中全部可用 RAM 的一部分。
如需检查机密虚拟机实例是否遇到 swiotlb buffer is full 错误,请连接到该实例并运行以下命令来查询 dmesg 日志:
dmesg | grep 'swiotlb buffer is full'
如需解决此问题,请增加 SWIOTLB 大小。在增加其大小之前,请确保客机已为 SWIOTLB 和操作系统留出足够的 RAM。
增加 SWIOTLB 大小
如需增加 SWIOTLB 的大小,请将以下行附加到
/etc/default/grub中:GRUB_CMDLINE_LINUX_DEFAULT=".... swiotlb=SIZE_IN_BYTES"以下示例展示了如何将 SWIOTLB 的大小增加到 512 MB:
GRUB_CMDLINE_LINUX_DEFAULT=".... swiotlb=262144"根据 Ubuntu 版本,您需要更新
grub文件中的字符串。例如,如果您使用的是 Ubuntu 18.04,则需要更新GRUB_CMDLINE_LINUX字符串,而不是GRUB_CMDLINE_LINUX_DEFAULT字符串。运行以下命令以重新生成
grub.cfg:Ubuntu
sudo update-grub其他发行版
grubcfg="/etc/grub2-efi.cfg" cp $grubcfg $grubcfg.bak grub2-mkconfig -o $grubcfg重新启动虚拟机。
如需了解详情,请参阅如何增加 SWIOTLB 限制。